; LLVM IR from aws/s2n-tls :: tests/unit (s2n_extensions_server_key_share_select_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_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_debug_info = type { ptr, ptr }
%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_ecc_preferences = type { i8, ptr }
%struct.s2n_kem_group = type { ptr, i16, ptr, ptr, i8 }
%struct.s2n_kem = type { ptr, i32, i16, i16, i16, i16, i16, ptr, ptr, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [102 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@kem_preferences_all = external constant %struct.s2n_kem_preferences, align 8
@.str.8 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [111 x i8], align 1
@__const.main.test_security_policy = external hidden unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.34 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [127 x i8], align 1
@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@.str.48 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [78 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %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 %struct.s2n_result, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca 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 ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %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 i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca %struct.s2n_security_policy, align 8
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %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 ptr, align 8
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %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 i32, align 4
  %86 = alloca i32, align 4
  %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 ptr, align 8
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca %struct.s2n_result, align 4
  %96 = alloca i32, align 4
  %97 = alloca ptr, align 8
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca i32, align 4
  %105 = alloca ptr, align 8
  %106 = alloca i32, align 4
  %107 = alloca i16, align 2
  %108 = alloca ptr, align 8
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %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 ptr, align 8
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca %struct.s2n_result, align 4
  %122 = alloca i32, align 4
  %123 = alloca ptr, align 8
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca ptr, align 8
  %128 = alloca ptr, align 8
  %129 = alloca ptr, align 8
  %130 = alloca ptr, align 8
  %131 = alloca i32, align 4
  %132 = alloca i16, align 2
  %133 = alloca ptr, align 8
  %134 = alloca i32, align 4
  %135 = alloca i32, align 4
  %136 = alloca i32, align 4
  %137 = alloca i32, align 4
  %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 ptr, align 8
  %144 = alloca i32, align 4
  %145 = alloca i32, align 4
  %146 = alloca %struct.s2n_result, align 4
  %147 = alloca i32, align 4
  %148 = alloca ptr, align 8
  %149 = alloca i32, align 4
  %150 = alloca i32, align 4
  %151 = alloca ptr, align 8
  %152 = alloca i32, align 4
  %153 = alloca i32, align 4
  %154 = alloca i32, align 4
  %155 = alloca ptr, align 8
  %156 = alloca ptr, 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
  %170 = alloca ptr, align 8
  %171 = alloca i32, align 4
  %172 = alloca i32, align 4
  %173 = alloca %struct.s2n_result, align 4
  %174 = alloca i32, align 4
  %175 = alloca ptr, align 8
  %176 = alloca i32, align 4
  %177 = alloca i32, align 4
  %178 = alloca ptr, align 8
  %179 = alloca i32, align 4
  %180 = alloca i32, align 4
  %181 = alloca i32, align 4
  %182 = alloca ptr, align 8
  %183 = alloca ptr, align 8
  %184 = alloca ptr, align 8
  %185 = alloca ptr, align 8
  %186 = alloca i32, align 4
  %187 = alloca i16, align 2
  %188 = alloca ptr, align 8
  %189 = alloca i32, align 4
  %190 = alloca ptr, align 8
  %191 = alloca i32, align 4
  %192 = alloca i32, align 4
  %193 = alloca i32, align 4
  %194 = alloca i32, align 4
  %195 = alloca i32, align 4
  %196 = alloca i32, align 4
  %197 = alloca i32, align 4
  %198 = alloca i32, align 4
  %199 = alloca i32, align 4
  %200 = alloca ptr, align 8
  %201 = alloca i32, align 4
  %202 = alloca i32, align 4
  %203 = alloca %struct.s2n_result, align 4
  %204 = alloca i32, align 4
  %205 = alloca ptr, align 8
  %206 = alloca i32, align 4
  %207 = alloca i32, align 4
  %208 = alloca ptr, align 8
  %209 = alloca i32, align 4
  %210 = alloca i32, align 4
  %211 = alloca i32, align 4
  %212 = alloca ptr, align 8
  %213 = alloca ptr, align 8
  %214 = alloca i32, align 4
  %215 = alloca i32, align 4
  %216 = alloca i32, align 4
  %217 = alloca i32, align 4
  %218 = alloca i32, align 4
  %219 = alloca ptr, align 8
  %220 = alloca i32, align 4
  %221 = alloca i32, align 4
  %222 = alloca i32, align 4
  %223 = alloca i32, align 4
  %224 = alloca i32, align 4
  %225 = alloca i32, align 4
  %226 = alloca i32, align 4
  %227 = alloca i32, align 4
  %228 = alloca i32, align 4
  %229 = alloca i32, align 4
  %230 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  br label %231

231:                                              ; preds = %0
  br label %232

232:                                              ; preds = %231
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %233 = load ptr, ptr @stdout, align 8, !tbaa !9
  %234 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %233, ptr noundef @.str, ptr noundef @.str.1) #12
  %235 = load ptr, ptr @stdout, align 8, !tbaa !9
  %236 = call i32 @fflush(ptr noundef %235)
  br label %237

237:                                              ; preds = %232
  %238 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %239 = icmp eq i32 %238, -1
  br i1 %239, label %240, label %291

240:                                              ; preds = %237
  br label %241

241:                                              ; preds = %240
  br label %242

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

249:                                              ; preds = %242
  %250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %251 = call i32 @fileno(ptr noundef %250) #12
  %252 = call i32 @isatty(i32 noundef %251) #12
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %271

254:                                              ; preds = %249
  %255 = load i32, ptr %2, align 4, !tbaa !5
  %256 = call ptr @__errno_location() #13
  store i32 %255, ptr %256, align 4, !tbaa !5
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %260, ptr noundef @.str.4)
  %262 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %263 = load i32, ptr %262, align 4, !tbaa !5
  %264 = call ptr @s2n_strerror_debug(i32 noundef %263, ptr noundef @.str.4)
  %265 = call ptr @__errno_location() #13
  %266 = load i32, ptr %265, align 4, !tbaa !5
  %267 = call ptr @strerror(i32 noundef %266) #12
  %268 = call ptr @__errno_location() #13
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %270 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %257, ptr noundef @.str.2, i32 noundef %258, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 26, ptr noundef %261, ptr noundef %264, ptr noundef %267, i32 noundef %269) #12
  br label %288

271:                                              ; preds = %249, %242
  %272 = load i32, ptr %2, align 4, !tbaa !5
  %273 = call ptr @__errno_location() #13
  store i32 %272, ptr %273, align 4, !tbaa !5
  %274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %275 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %277, ptr noundef @.str.4)
  %279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %280 = load i32, ptr %279, align 4, !tbaa !5
  %281 = call ptr @s2n_strerror_debug(i32 noundef %280, ptr noundef @.str.4)
  %282 = call ptr @__errno_location() #13
  %283 = load i32, ptr %282, align 4, !tbaa !5
  %284 = call ptr @strerror(i32 noundef %283) #12
  %285 = call ptr @__errno_location() #13
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %274, ptr noundef @.str.5, i32 noundef %275, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 26, ptr noundef %278, ptr noundef %281, ptr noundef %284, i32 noundef %286) #12
  br label %288

288:                                              ; preds = %271, %254
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #12
  br label %289

289:                                              ; preds = %288
  call void @exit(i32 noundef 1) #14
  unreachable

290:                                              ; No predecessors!
  br label %291

291:                                              ; preds = %290, %237
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292
  %294 = load i32, ptr @test_count, align 4, !tbaa !5
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr @test_count, align 4, !tbaa !5
  %296 = call i32 @s2n_enable_atexit()
  %297 = icmp eq i32 %296, -1
  br i1 %297, label %298, label %349

298:                                              ; preds = %293
  br label %299

299:                                              ; preds = %298
  br label %300

300:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #12
  %301 = call ptr @__errno_location() #13
  %302 = load i32, ptr %301, align 4, !tbaa !5
  store i32 %302, ptr %3, align 4, !tbaa !5
  %303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %304 = call i32 @s2n_print_stacktrace(ptr noundef %303)
  %305 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %306 = trunc i8 %305 to i1
  br i1 %306, label %307, label %329

307:                                              ; preds = %300
  %308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %309 = call i32 @fileno(ptr noundef %308) #12
  %310 = call i32 @isatty(i32 noundef %309) #12
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %329

312:                                              ; preds = %307
  %313 = load i32, ptr %3, align 4, !tbaa !5
  %314 = call ptr @__errno_location() #13
  store i32 %313, ptr %314, align 4, !tbaa !5
  %315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %316 = load i32, ptr @test_count, align 4, !tbaa !5
  %317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %318 = load i32, ptr %317, align 4, !tbaa !5
  %319 = call ptr @s2n_strerror(i32 noundef %318, ptr noundef @.str.4)
  %320 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = call ptr @s2n_strerror_debug(i32 noundef %321, ptr noundef @.str.4)
  %323 = call ptr @__errno_location() #13
  %324 = load i32, ptr %323, align 4, !tbaa !5
  %325 = call ptr @strerror(i32 noundef %324) #12
  %326 = call ptr @__errno_location() #13
  %327 = load i32, ptr %326, align 4, !tbaa !5
  %328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %315, ptr noundef @.str.2, i32 noundef %316, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 26, ptr noundef %319, ptr noundef %322, ptr noundef %325, i32 noundef %327) #12
  br label %346

329:                                              ; preds = %307, %300
  %330 = load i32, ptr %3, align 4, !tbaa !5
  %331 = call ptr @__errno_location() #13
  store i32 %330, ptr %331, align 4, !tbaa !5
  %332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %333 = load i32, ptr @test_count, align 4, !tbaa !5
  %334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %335 = load i32, ptr %334, align 4, !tbaa !5
  %336 = call ptr @s2n_strerror(i32 noundef %335, ptr noundef @.str.4)
  %337 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = call ptr @s2n_strerror_debug(i32 noundef %338, ptr noundef @.str.4)
  %340 = call ptr @__errno_location() #13
  %341 = load i32, ptr %340, align 4, !tbaa !5
  %342 = call ptr @strerror(i32 noundef %341) #12
  %343 = call ptr @__errno_location() #13
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %332, ptr noundef @.str.5, i32 noundef %333, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 26, ptr noundef %336, ptr noundef %339, ptr noundef %342, i32 noundef %344) #12
  br label %346

346:                                              ; preds = %329, %312
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #12
  br label %347

347:                                              ; preds = %346
  call void @exit(i32 noundef 1) #14
  unreachable

348:                                              ; No predecessors!
  br label %349

349:                                              ; preds = %348, %293
  br label %350

350:                                              ; preds = %349
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  %353 = call i32 @s2n_init()
  %354 = icmp eq i32 %353, -1
  br i1 %354, label %355, label %406

355:                                              ; preds = %352
  br label %356

356:                                              ; preds = %355
  br label %357

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

364:                                              ; preds = %357
  %365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %366 = call i32 @fileno(ptr noundef %365) #12
  %367 = call i32 @isatty(i32 noundef %366) #12
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %386

369:                                              ; preds = %364
  %370 = load i32, ptr %4, align 4, !tbaa !5
  %371 = call ptr @__errno_location() #13
  store i32 %370, ptr %371, align 4, !tbaa !5
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = load i32, ptr @test_count, align 4, !tbaa !5
  %374 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = call ptr @s2n_strerror(i32 noundef %375, ptr noundef @.str.4)
  %377 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = call ptr @s2n_strerror_debug(i32 noundef %378, ptr noundef @.str.4)
  %380 = call ptr @__errno_location() #13
  %381 = load i32, ptr %380, align 4, !tbaa !5
  %382 = call ptr @strerror(i32 noundef %381) #12
  %383 = call ptr @__errno_location() #13
  %384 = load i32, ptr %383, align 4, !tbaa !5
  %385 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %372, ptr noundef @.str.2, i32 noundef %373, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 26, ptr noundef %376, ptr noundef %379, ptr noundef %382, i32 noundef %384) #12
  br label %403

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

403:                                              ; preds = %386, %369
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #12
  br label %404

404:                                              ; preds = %403
  call void @exit(i32 noundef 1) #14
  unreachable

405:                                              ; No predecessors!
  br label %406

406:                                              ; preds = %405, %352
  br label %407

407:                                              ; preds = %406
  br label %408

408:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #12
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %409

409:                                              ; preds = %408
  %410 = load i32, ptr @test_count, align 4, !tbaa !5
  %411 = add nsw i32 %410, 1
  store i32 %411, ptr @test_count, align 4, !tbaa !5
  %412 = call i32 @s2n_kem_preferences_groups_available(ptr noundef @kem_preferences_all, ptr noundef %5)
  %413 = getelementptr inbounds %struct.s2n_result, ptr %6, i32 0, i32 0
  store i32 %412, ptr %413, align 4
  %414 = getelementptr inbounds %struct.s2n_result, ptr %6, i32 0, i32 0
  %415 = load i32, ptr %414, align 4
  %416 = call zeroext i1 @s2n_result_is_ok(i32 %415)
  br i1 %416, label %470, label %417

417:                                              ; preds = %409
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #12
  %420 = call ptr @__errno_location() #13
  %421 = load i32, ptr %420, align 4, !tbaa !5
  store i32 %421, ptr %7, align 4, !tbaa !5
  %422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %423 = call i32 @s2n_print_stacktrace(ptr noundef %422)
  %424 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %425 = trunc i8 %424 to i1
  br i1 %425, label %426, label %448

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

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

448:                                              ; preds = %426, %419
  %449 = load i32, ptr %7, align 4, !tbaa !5
  %450 = call ptr @__errno_location() #13
  store i32 %449, ptr %450, align 4, !tbaa !5
  %451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %452 = load i32, ptr @test_count, align 4, !tbaa !5
  %453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = call ptr @s2n_strerror(i32 noundef %454, ptr noundef @.str.4)
  %456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = call ptr @s2n_strerror_debug(i32 noundef %457, ptr noundef @.str.4)
  %459 = call ptr @__errno_location() #13
  %460 = load i32, ptr %459, align 4, !tbaa !5
  %461 = call ptr @strerror(i32 noundef %460) #12
  %462 = call ptr @__errno_location() #13
  %463 = load i32, ptr %462, align 4, !tbaa !5
  %464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %451, ptr noundef @.str.5, i32 noundef %452, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 30, ptr noundef %455, ptr noundef %458, ptr noundef %461, i32 noundef %463) #12
  br label %465

465:                                              ; preds = %448, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #12
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  call void @exit(i32 noundef 1) #14
  unreachable

468:                                              ; No predecessors!
  br label %469

469:                                              ; preds = %468
  br label %470

470:                                              ; preds = %469, %409
  br label %471

471:                                              ; preds = %470
  br label %472

472:                                              ; preds = %471
  %473 = load i32, ptr %5, align 4, !tbaa !5
  %474 = icmp ult i32 %473, 2
  br i1 %474, label %475, label %630

475:                                              ; preds = %472
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476
  %478 = call i32 @s2n_cleanup()
  %479 = icmp eq i32 %478, -1
  br i1 %479, label %480, label %533

480:                                              ; preds = %477
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #12
  %483 = call ptr @__errno_location() #13
  %484 = load i32, ptr %483, align 4, !tbaa !5
  store i32 %484, ptr %8, align 4, !tbaa !5
  %485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %486 = call i32 @s2n_print_stacktrace(ptr noundef %485)
  %487 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %488 = trunc i8 %487 to i1
  br i1 %488, label %489, label %511

489:                                              ; preds = %482
  %490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %491 = call i32 @fileno(ptr noundef %490) #12
  %492 = call i32 @isatty(i32 noundef %491) #12
  %493 = icmp ne i32 %492, 0
  br i1 %493, label %494, label %511

494:                                              ; preds = %489
  %495 = load i32, ptr %8, align 4, !tbaa !5
  %496 = call ptr @__errno_location() #13
  store i32 %495, ptr %496, align 4, !tbaa !5
  %497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %498 = load i32, ptr @test_count, align 4, !tbaa !5
  %499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %500 = load i32, ptr %499, align 4, !tbaa !5
  %501 = call ptr @s2n_strerror(i32 noundef %500, ptr noundef @.str.4)
  %502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = call ptr @s2n_strerror_debug(i32 noundef %503, ptr noundef @.str.4)
  %505 = call ptr @__errno_location() #13
  %506 = load i32, ptr %505, align 4, !tbaa !5
  %507 = call ptr @strerror(i32 noundef %506) #12
  %508 = call ptr @__errno_location() #13
  %509 = load i32, ptr %508, align 4, !tbaa !5
  %510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %497, ptr noundef @.str.2, i32 noundef %498, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 32, ptr noundef %501, ptr noundef %504, ptr noundef %507, i32 noundef %509) #12
  br label %528

511:                                              ; preds = %489, %482
  %512 = load i32, ptr %8, align 4, !tbaa !5
  %513 = call ptr @__errno_location() #13
  store i32 %512, ptr %513, align 4, !tbaa !5
  %514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %515 = load i32, ptr @test_count, align 4, !tbaa !5
  %516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %517 = load i32, ptr %516, align 4, !tbaa !5
  %518 = call ptr @s2n_strerror(i32 noundef %517, ptr noundef @.str.4)
  %519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = call ptr @s2n_strerror_debug(i32 noundef %520, ptr noundef @.str.4)
  %522 = call ptr @__errno_location() #13
  %523 = load i32, ptr %522, align 4, !tbaa !5
  %524 = call ptr @strerror(i32 noundef %523) #12
  %525 = call ptr @__errno_location() #13
  %526 = load i32, ptr %525, align 4, !tbaa !5
  %527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %514, ptr noundef @.str.5, i32 noundef %515, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 32, ptr noundef %518, ptr noundef %521, ptr noundef %524, i32 noundef %526) #12
  br label %528

528:                                              ; preds = %511, %494
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #12
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529
  call void @exit(i32 noundef 1) #14
  unreachable

531:                                              ; No predecessors!
  br label %532

532:                                              ; preds = %531
  br label %533

533:                                              ; preds = %532, %477
  br label %534

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %536
  %538 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %539 = icmp eq i32 %538, -1
  br i1 %539, label %540, label %593

540:                                              ; preds = %537
  br label %541

541:                                              ; preds = %540
  br label %542

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

549:                                              ; preds = %542
  %550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %551 = call i32 @fileno(ptr noundef %550) #12
  %552 = call i32 @isatty(i32 noundef %551) #12
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %571

554:                                              ; preds = %549
  %555 = load i32, ptr %9, align 4, !tbaa !5
  %556 = call ptr @__errno_location() #13
  store i32 %555, ptr %556, align 4, !tbaa !5
  %557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %558 = load i32, ptr @test_count, align 4, !tbaa !5
  %559 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %560 = load i32, ptr %559, align 4, !tbaa !5
  %561 = call ptr @s2n_strerror(i32 noundef %560, ptr noundef @.str.4)
  %562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = call ptr @s2n_strerror_debug(i32 noundef %563, ptr noundef @.str.4)
  %565 = call ptr @__errno_location() #13
  %566 = load i32, ptr %565, align 4, !tbaa !5
  %567 = call ptr @strerror(i32 noundef %566) #12
  %568 = call ptr @__errno_location() #13
  %569 = load i32, ptr %568, align 4, !tbaa !5
  %570 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %557, ptr noundef @.str.2, i32 noundef %558, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 32, ptr noundef %561, ptr noundef %564, ptr noundef %567, i32 noundef %569) #12
  br label %588

571:                                              ; preds = %549, %542
  %572 = load i32, ptr %9, align 4, !tbaa !5
  %573 = call ptr @__errno_location() #13
  store i32 %572, ptr %573, align 4, !tbaa !5
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = load i32, ptr @test_count, align 4, !tbaa !5
  %576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror(i32 noundef %577, ptr noundef @.str.4)
  %579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = call ptr @s2n_strerror_debug(i32 noundef %580, ptr noundef @.str.4)
  %582 = call ptr @__errno_location() #13
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = call ptr @strerror(i32 noundef %583) #12
  %585 = call ptr @__errno_location() #13
  %586 = load i32, ptr %585, align 4, !tbaa !5
  %587 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %574, ptr noundef @.str.5, i32 noundef %575, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 32, ptr noundef %578, ptr noundef %581, ptr noundef %584, i32 noundef %586) #12
  br label %588

588:                                              ; preds = %571, %554
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  br label %589

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589
  call void @exit(i32 noundef 1) #14
  unreachable

591:                                              ; No predecessors!
  br label %592

592:                                              ; preds = %591
  br label %593

593:                                              ; preds = %592, %537
  br label %594

594:                                              ; preds = %593
  br label %595

595:                                              ; preds = %594
  %596 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %597 = trunc i8 %596 to i1
  br i1 %597, label %598, label %614

598:                                              ; preds = %595
  %599 = load ptr, ptr @stdout, align 8, !tbaa !9
  %600 = call i32 @fileno(ptr noundef %599) #12
  %601 = call i32 @isatty(i32 noundef %600) #12
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %614

603:                                              ; preds = %598
  %604 = load i32, ptr @test_count, align 4, !tbaa !5
  %605 = icmp ne i32 %604, 0
  br i1 %605, label %606, label %610

606:                                              ; preds = %603
  %607 = load ptr, ptr @stdout, align 8, !tbaa !9
  %608 = load i32, ptr @test_count, align 4, !tbaa !5
  %609 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %607, ptr noundef @.str.11, i32 noundef %608) #12
  br label %613

610:                                              ; preds = %603
  %611 = load ptr, ptr @stdout, align 8, !tbaa !9
  %612 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %611, ptr noundef @.str.12) #12
  br label %613

613:                                              ; preds = %610, %606
  br label %625

614:                                              ; preds = %598, %595
  %615 = load i32, ptr @test_count, align 4, !tbaa !5
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %617, label %621

617:                                              ; preds = %614
  %618 = load ptr, ptr @stdout, align 8, !tbaa !9
  %619 = load i32, ptr @test_count, align 4, !tbaa !5
  %620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %618, ptr noundef @.str.13, i32 noundef %619) #12
  br label %624

621:                                              ; preds = %614
  %622 = load ptr, ptr @stdout, align 8, !tbaa !9
  %623 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %622, ptr noundef @.str.14) #12
  br label %624

624:                                              ; preds = %621, %617
  br label %625

625:                                              ; preds = %624, %613
  store i32 0, ptr %1, align 4
  store i32 1, ptr %10, align 4
  br label %11718

626:                                              ; No predecessors!
  br label %627

627:                                              ; preds = %626
  br label %628

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %628
  br label %630

630:                                              ; preds = %629, %472
  br label %631

631:                                              ; preds = %630
  %632 = load i32, ptr @test_count, align 4, !tbaa !5
  %633 = add nsw i32 %632, 1
  store i32 %633, ptr @test_count, align 4, !tbaa !5
  %634 = call i32 (...) @s2n_enable_tls13_in_test()
  %635 = icmp eq i32 %634, -1
  br i1 %635, label %636, label %689

636:                                              ; preds = %631
  br label %637

637:                                              ; preds = %636
  br label %638

638:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #12
  %639 = call ptr @__errno_location() #13
  %640 = load i32, ptr %639, align 4, !tbaa !5
  store i32 %640, ptr %11, align 4, !tbaa !5
  %641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %642 = call i32 @s2n_print_stacktrace(ptr noundef %641)
  %643 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %644 = trunc i8 %643 to i1
  br i1 %644, label %645, label %667

645:                                              ; preds = %638
  %646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %647 = call i32 @fileno(ptr noundef %646) #12
  %648 = call i32 @isatty(i32 noundef %647) #12
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %650, label %667

650:                                              ; preds = %645
  %651 = load i32, ptr %11, align 4, !tbaa !5
  %652 = call ptr @__errno_location() #13
  store i32 %651, ptr %652, 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 @.str.4)
  %658 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %659 = load i32, ptr %658, align 4, !tbaa !5
  %660 = call ptr @s2n_strerror_debug(i32 noundef %659, ptr noundef @.str.4)
  %661 = call ptr @__errno_location() #13
  %662 = load i32, ptr %661, align 4, !tbaa !5
  %663 = call ptr @strerror(i32 noundef %662) #12
  %664 = call ptr @__errno_location() #13
  %665 = load i32, ptr %664, align 4, !tbaa !5
  %666 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %653, ptr noundef @.str.2, i32 noundef %654, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 35, ptr noundef %657, ptr noundef %660, ptr noundef %663, i32 noundef %665) #12
  br label %684

667:                                              ; preds = %645, %638
  %668 = load i32, ptr %11, align 4, !tbaa !5
  %669 = call ptr @__errno_location() #13
  store i32 %668, ptr %669, align 4, !tbaa !5
  %670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %671 = load i32, ptr @test_count, align 4, !tbaa !5
  %672 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %673 = load i32, ptr %672, align 4, !tbaa !5
  %674 = call ptr @s2n_strerror(i32 noundef %673, ptr noundef @.str.4)
  %675 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %676 = load i32, ptr %675, align 4, !tbaa !5
  %677 = call ptr @s2n_strerror_debug(i32 noundef %676, ptr noundef @.str.4)
  %678 = call ptr @__errno_location() #13
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = call ptr @strerror(i32 noundef %679) #12
  %681 = call ptr @__errno_location() #13
  %682 = load i32, ptr %681, align 4, !tbaa !5
  %683 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %670, ptr noundef @.str.5, i32 noundef %671, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 35, ptr noundef %674, ptr noundef %677, ptr noundef %680, i32 noundef %682) #12
  br label %684

684:                                              ; preds = %667, %650
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #12
  br label %685

685:                                              ; preds = %684
  br label %686

686:                                              ; preds = %685
  call void @exit(i32 noundef 1) #14
  unreachable

687:                                              ; No predecessors!
  br label %688

688:                                              ; preds = %687
  br label %689

689:                                              ; preds = %688, %631
  br label %690

690:                                              ; preds = %689
  br label %691

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

692:                                              ; preds = %691
  %693 = load i32, ptr @test_count, align 4, !tbaa !5
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr @test_count, align 4, !tbaa !5
  %695 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %695, ptr %12, align 8, !tbaa !9
  %696 = icmp eq ptr %695, null
  br i1 %696, label %697, label %750

697:                                              ; preds = %692
  br label %698

698:                                              ; preds = %697
  br label %699

699:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #12
  %700 = call ptr @__errno_location() #13
  %701 = load i32, ptr %700, align 4, !tbaa !5
  store i32 %701, ptr %13, align 4, !tbaa !5
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = call i32 @s2n_print_stacktrace(ptr noundef %702)
  %704 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %705 = trunc i8 %704 to i1
  br i1 %705, label %706, label %728

706:                                              ; preds = %699
  %707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %708 = call i32 @fileno(ptr noundef %707) #12
  %709 = call i32 @isatty(i32 noundef %708) #12
  %710 = icmp ne i32 %709, 0
  br i1 %710, label %711, label %728

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

728:                                              ; preds = %706, %699
  %729 = load i32, ptr %13, align 4, !tbaa !5
  %730 = call ptr @__errno_location() #13
  store i32 %729, ptr %730, align 4, !tbaa !5
  %731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %732 = load i32, ptr @test_count, align 4, !tbaa !5
  %733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %734 = load i32, ptr %733, align 4, !tbaa !5
  %735 = call ptr @s2n_strerror(i32 noundef %734, ptr noundef @.str.4)
  %736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %737 = load i32, ptr %736, align 4, !tbaa !5
  %738 = call ptr @s2n_strerror_debug(i32 noundef %737, ptr noundef @.str.4)
  %739 = call ptr @__errno_location() #13
  %740 = load i32, ptr %739, align 4, !tbaa !5
  %741 = call ptr @strerror(i32 noundef %740) #12
  %742 = call ptr @__errno_location() #13
  %743 = load i32, ptr %742, align 4, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %731, ptr noundef @.str.5, i32 noundef %732, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 40, ptr noundef %735, ptr noundef %738, ptr noundef %741, i32 noundef %743) #12
  br label %745

745:                                              ; preds = %728, %711
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  br label %746

746:                                              ; preds = %745
  br label %747

747:                                              ; preds = %746
  call void @exit(i32 noundef 1) #14
  unreachable

748:                                              ; No predecessors!
  br label %749

749:                                              ; preds = %748
  br label %750

750:                                              ; preds = %749, %692
  br label %751

751:                                              ; preds = %750
  br label %752

752:                                              ; preds = %751
  br label %753

753:                                              ; preds = %752
  %754 = load i32, ptr @test_count, align 4, !tbaa !5
  %755 = add nsw i32 %754, 1
  store i32 %755, ptr @test_count, align 4, !tbaa !5
  %756 = load ptr, ptr %12, align 8, !tbaa !9
  %757 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %756, i8 noundef zeroext 34)
  %758 = icmp eq i32 %757, -1
  br i1 %758, label %759, label %812

759:                                              ; preds = %753
  br label %760

760:                                              ; preds = %759
  br label %761

761:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #12
  %762 = call ptr @__errno_location() #13
  %763 = load i32, ptr %762, align 4, !tbaa !5
  store i32 %763, ptr %14, align 4, !tbaa !5
  %764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %765 = call i32 @s2n_print_stacktrace(ptr noundef %764)
  %766 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %767 = trunc i8 %766 to i1
  br i1 %767, label %768, label %790

768:                                              ; preds = %761
  %769 = load ptr, ptr @stderr, align 8, !tbaa !9
  %770 = call i32 @fileno(ptr noundef %769) #12
  %771 = call i32 @isatty(i32 noundef %770) #12
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %790

773:                                              ; preds = %768
  %774 = load i32, ptr %14, align 4, !tbaa !5
  %775 = call ptr @__errno_location() #13
  store i32 %774, ptr %775, align 4, !tbaa !5
  %776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %777 = load i32, ptr @test_count, align 4, !tbaa !5
  %778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = call ptr @s2n_strerror(i32 noundef %779, ptr noundef @.str.4)
  %781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = call ptr @s2n_strerror_debug(i32 noundef %782, ptr noundef @.str.4)
  %784 = call ptr @__errno_location() #13
  %785 = load i32, ptr %784, align 4, !tbaa !5
  %786 = call ptr @strerror(i32 noundef %785) #12
  %787 = call ptr @__errno_location() #13
  %788 = load i32, ptr %787, align 4, !tbaa !5
  %789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %776, ptr noundef @.str.2, i32 noundef %777, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 41, ptr noundef %780, ptr noundef %783, ptr noundef %786, i32 noundef %788) #12
  br label %807

790:                                              ; preds = %768, %761
  %791 = load i32, ptr %14, align 4, !tbaa !5
  %792 = call ptr @__errno_location() #13
  store i32 %791, ptr %792, align 4, !tbaa !5
  %793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %794 = load i32, ptr @test_count, align 4, !tbaa !5
  %795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %796 = load i32, ptr %795, align 4, !tbaa !5
  %797 = call ptr @s2n_strerror(i32 noundef %796, ptr noundef @.str.4)
  %798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %799 = load i32, ptr %798, align 4, !tbaa !5
  %800 = call ptr @s2n_strerror_debug(i32 noundef %799, ptr noundef @.str.4)
  %801 = call ptr @__errno_location() #13
  %802 = load i32, ptr %801, align 4, !tbaa !5
  %803 = call ptr @strerror(i32 noundef %802) #12
  %804 = call ptr @__errno_location() #13
  %805 = load i32, ptr %804, align 4, !tbaa !5
  %806 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %793, ptr noundef @.str.5, i32 noundef %794, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 41, ptr noundef %797, ptr noundef %800, ptr noundef %803, i32 noundef %805) #12
  br label %807

807:                                              ; preds = %790, %773
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #12
  br label %808

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %808
  call void @exit(i32 noundef 1) #14
  unreachable

810:                                              ; No predecessors!
  br label %811

811:                                              ; preds = %810
  br label %812

812:                                              ; preds = %811, %753
  br label %813

813:                                              ; preds = %812
  br label %814

814:                                              ; preds = %813
  br label %815

815:                                              ; preds = %814
  %816 = load i32, ptr @test_count, align 4, !tbaa !5
  %817 = add nsw i32 %816, 1
  store i32 %817, ptr @test_count, align 4, !tbaa !5
  %818 = load ptr, ptr %12, align 8, !tbaa !9
  %819 = getelementptr inbounds %struct.s2n_connection, ptr %818, i32 0, i32 31
  %820 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %819, i32 0, i32 1
  %821 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %820, i32 0, i32 0
  %822 = load ptr, ptr %821, align 8, !tbaa !15
  %823 = icmp eq ptr %822, null
  br i1 %823, label %877, label %824

824:                                              ; preds = %815
  br label %825

825:                                              ; preds = %824
  br label %826

826:                                              ; preds = %825
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #12
  %827 = call ptr @__errno_location() #13
  %828 = load i32, ptr %827, align 4, !tbaa !5
  store i32 %828, ptr %15, align 4, !tbaa !5
  %829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %830 = call i32 @s2n_print_stacktrace(ptr noundef %829)
  %831 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %832 = trunc i8 %831 to i1
  br i1 %832, label %833, label %855

833:                                              ; preds = %826
  %834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %835 = call i32 @fileno(ptr noundef %834) #12
  %836 = call i32 @isatty(i32 noundef %835) #12
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %838, label %855

838:                                              ; preds = %833
  %839 = load i32, ptr %15, align 4, !tbaa !5
  %840 = call ptr @__errno_location() #13
  store i32 %839, ptr %840, align 4, !tbaa !5
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = load i32, ptr @test_count, align 4, !tbaa !5
  %843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror(i32 noundef %844, ptr noundef @.str.4)
  %846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %847 = load i32, ptr %846, align 4, !tbaa !5
  %848 = call ptr @s2n_strerror_debug(i32 noundef %847, ptr noundef @.str.4)
  %849 = call ptr @__errno_location() #13
  %850 = load i32, ptr %849, align 4, !tbaa !5
  %851 = call ptr @strerror(i32 noundef %850) #12
  %852 = call ptr @__errno_location() #13
  %853 = load i32, ptr %852, align 4, !tbaa !5
  %854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef @.str.2, i32 noundef %842, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 43, ptr noundef %845, ptr noundef %848, ptr noundef %851, i32 noundef %853) #12
  br label %872

855:                                              ; preds = %833, %826
  %856 = load i32, ptr %15, align 4, !tbaa !5
  %857 = call ptr @__errno_location() #13
  store i32 %856, ptr %857, align 4, !tbaa !5
  %858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %859 = load i32, ptr @test_count, align 4, !tbaa !5
  %860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %861 = load i32, ptr %860, align 4, !tbaa !5
  %862 = call ptr @s2n_strerror(i32 noundef %861, ptr noundef @.str.4)
  %863 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %864 = load i32, ptr %863, align 4, !tbaa !5
  %865 = call ptr @s2n_strerror_debug(i32 noundef %864, ptr noundef @.str.4)
  %866 = call ptr @__errno_location() #13
  %867 = load i32, ptr %866, align 4, !tbaa !5
  %868 = call ptr @strerror(i32 noundef %867) #12
  %869 = call ptr @__errno_location() #13
  %870 = load i32, ptr %869, align 4, !tbaa !5
  %871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %858, ptr noundef @.str.5, i32 noundef %859, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 43, ptr noundef %862, ptr noundef %865, ptr noundef %868, i32 noundef %870) #12
  br label %872

872:                                              ; preds = %855, %838
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #12
  br label %873

873:                                              ; preds = %872
  br label %874

874:                                              ; preds = %873
  call void @exit(i32 noundef 1) #14
  unreachable

875:                                              ; No predecessors!
  br label %876

876:                                              ; preds = %875
  br label %877

877:                                              ; preds = %876, %815
  br label %878

878:                                              ; preds = %877
  br label %879

879:                                              ; preds = %878
  br label %880

880:                                              ; preds = %879
  %881 = load i32, ptr @test_count, align 4, !tbaa !5
  %882 = add nsw i32 %881, 1
  store i32 %882, ptr @test_count, align 4, !tbaa !5
  %883 = load ptr, ptr %12, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.s2n_connection, ptr %883, i32 0, i32 31
  %885 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %884, i32 0, i32 4
  %886 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %885, i32 0, i32 0
  %887 = load ptr, ptr %886, align 8, !tbaa !42
  %888 = icmp eq ptr %887, null
  br i1 %888, label %942, label %889

889:                                              ; preds = %880
  br label %890

890:                                              ; preds = %889
  br label %891

891:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #12
  %892 = call ptr @__errno_location() #13
  %893 = load i32, ptr %892, align 4, !tbaa !5
  store i32 %893, ptr %16, align 4, !tbaa !5
  %894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %895 = call i32 @s2n_print_stacktrace(ptr noundef %894)
  %896 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %897 = trunc i8 %896 to i1
  br i1 %897, label %898, label %920

898:                                              ; preds = %891
  %899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %900 = call i32 @fileno(ptr noundef %899) #12
  %901 = call i32 @isatty(i32 noundef %900) #12
  %902 = icmp ne i32 %901, 0
  br i1 %902, label %903, label %920

903:                                              ; preds = %898
  %904 = load i32, ptr %16, align 4, !tbaa !5
  %905 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %914 = call ptr @__errno_location() #13
  %915 = load i32, ptr %914, align 4, !tbaa !5
  %916 = call ptr @strerror(i32 noundef %915) #12
  %917 = call ptr @__errno_location() #13
  %918 = load i32, ptr %917, align 4, !tbaa !5
  %919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %906, ptr noundef @.str.2, i32 noundef %907, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 44, ptr noundef %910, ptr noundef %913, ptr noundef %916, i32 noundef %918) #12
  br label %937

920:                                              ; preds = %898, %891
  %921 = load i32, ptr %16, align 4, !tbaa !5
  %922 = call ptr @__errno_location() #13
  store i32 %921, ptr %922, align 4, !tbaa !5
  %923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %924 = load i32, ptr @test_count, align 4, !tbaa !5
  %925 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %926 = load i32, ptr %925, align 4, !tbaa !5
  %927 = call ptr @s2n_strerror(i32 noundef %926, ptr noundef @.str.4)
  %928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %929 = load i32, ptr %928, align 4, !tbaa !5
  %930 = call ptr @s2n_strerror_debug(i32 noundef %929, ptr noundef @.str.4)
  %931 = call ptr @__errno_location() #13
  %932 = load i32, ptr %931, align 4, !tbaa !5
  %933 = call ptr @strerror(i32 noundef %932) #12
  %934 = call ptr @__errno_location() #13
  %935 = load i32, ptr %934, align 4, !tbaa !5
  %936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %923, ptr noundef @.str.5, i32 noundef %924, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 44, ptr noundef %927, ptr noundef %930, ptr noundef %933, i32 noundef %935) #12
  br label %937

937:                                              ; preds = %920, %903
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #12
  br label %938

938:                                              ; preds = %937
  br label %939

939:                                              ; preds = %938
  call void @exit(i32 noundef 1) #14
  unreachable

940:                                              ; No predecessors!
  br label %941

941:                                              ; preds = %940
  br label %942

942:                                              ; preds = %941, %880
  br label %943

943:                                              ; preds = %942
  br label %944

944:                                              ; preds = %943
  br label %945

945:                                              ; preds = %944
  br label %946

946:                                              ; preds = %945
  br label %947

947:                                              ; preds = %946
  %948 = load i32, ptr @test_count, align 4, !tbaa !5
  %949 = add nsw i32 %948, 1
  store i32 %949, ptr @test_count, align 4, !tbaa !5
  %950 = load ptr, ptr %12, align 8, !tbaa !9
  %951 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %950)
  %952 = icmp eq i32 %951, -1
  br i1 %952, label %1006, label %953

953:                                              ; preds = %947
  br label %954

954:                                              ; preds = %953
  br label %955

955:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #12
  %956 = call ptr @__errno_location() #13
  %957 = load i32, ptr %956, align 4, !tbaa !5
  store i32 %957, ptr %17, align 4, !tbaa !5
  %958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %959 = call i32 @s2n_print_stacktrace(ptr noundef %958)
  %960 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %961 = trunc i8 %960 to i1
  br i1 %961, label %962, label %984

962:                                              ; preds = %955
  %963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %964 = call i32 @fileno(ptr noundef %963) #12
  %965 = call i32 @isatty(i32 noundef %964) #12
  %966 = icmp ne i32 %965, 0
  br i1 %966, label %967, label %984

967:                                              ; preds = %962
  %968 = load i32, ptr %17, align 4, !tbaa !5
  %969 = call ptr @__errno_location() #13
  store i32 %968, ptr %969, align 4, !tbaa !5
  %970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %971 = load i32, ptr @test_count, align 4, !tbaa !5
  %972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call ptr @s2n_strerror(i32 noundef %973, ptr noundef @.str.4)
  %975 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %976 = load i32, ptr %975, align 4, !tbaa !5
  %977 = call ptr @s2n_strerror_debug(i32 noundef %976, ptr noundef @.str.4)
  %978 = call ptr @__errno_location() #13
  %979 = load i32, ptr %978, align 4, !tbaa !5
  %980 = call ptr @strerror(i32 noundef %979) #12
  %981 = call ptr @__errno_location() #13
  %982 = load i32, ptr %981, align 4, !tbaa !5
  %983 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %970, ptr noundef @.str.2, i32 noundef %971, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 47, ptr noundef %974, ptr noundef %977, ptr noundef %980, i32 noundef %982) #12
  br label %1001

984:                                              ; preds = %962, %955
  %985 = load i32, ptr %17, align 4, !tbaa !5
  %986 = call ptr @__errno_location() #13
  store i32 %985, ptr %986, align 4, !tbaa !5
  %987 = load ptr, ptr @stderr, align 8, !tbaa !9
  %988 = load i32, ptr @test_count, align 4, !tbaa !5
  %989 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = call ptr @s2n_strerror(i32 noundef %990, ptr noundef @.str.4)
  %992 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %993 = load i32, ptr %992, align 4, !tbaa !5
  %994 = call ptr @s2n_strerror_debug(i32 noundef %993, ptr noundef @.str.4)
  %995 = call ptr @__errno_location() #13
  %996 = load i32, ptr %995, align 4, !tbaa !5
  %997 = call ptr @strerror(i32 noundef %996) #12
  %998 = call ptr @__errno_location() #13
  %999 = load i32, ptr %998, align 4, !tbaa !5
  %1000 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %987, ptr noundef @.str.5, i32 noundef %988, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 47, ptr noundef %991, ptr noundef %994, ptr noundef %997, i32 noundef %999) #12
  br label %1001

1001:                                             ; preds = %984, %967
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #12
  br label %1002

1002:                                             ; preds = %1001
  br label %1003

1003:                                             ; preds = %1002
  call void @exit(i32 noundef 1) #14
  unreachable

1004:                                             ; No predecessors!
  br label %1005

1005:                                             ; preds = %1004
  br label %1006

1006:                                             ; preds = %1005, %947
  br label %1007

1007:                                             ; preds = %1006
  br label %1008

1008:                                             ; preds = %1007
  br label %1009

1009:                                             ; preds = %1008
  %1010 = load i32, ptr @test_count, align 4, !tbaa !5
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr @test_count, align 4, !tbaa !5
  %1012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  %1014 = icmp eq i32 %1013, 335544356
  br i1 %1014, label %1068, label %1015

1015:                                             ; preds = %1009
  br label %1016

1016:                                             ; preds = %1015
  br label %1017

1017:                                             ; preds = %1016
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #12
  %1018 = call ptr @__errno_location() #13
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  store i32 %1019, ptr %18, align 4, !tbaa !5
  %1020 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1021 = call i32 @s2n_print_stacktrace(ptr noundef %1020)
  %1022 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1023 = trunc i8 %1022 to i1
  br i1 %1023, label %1024, label %1046

1024:                                             ; preds = %1017
  %1025 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1026 = call i32 @fileno(ptr noundef %1025) #12
  %1027 = call i32 @isatty(i32 noundef %1026) #12
  %1028 = icmp ne i32 %1027, 0
  br i1 %1028, label %1029, label %1046

1029:                                             ; preds = %1024
  %1030 = load i32, ptr %18, align 4, !tbaa !5
  %1031 = call ptr @__errno_location() #13
  store i32 %1030, ptr %1031, align 4, !tbaa !5
  %1032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1033 = load i32, ptr @test_count, align 4, !tbaa !5
  %1034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1035 = load i32, ptr %1034, align 4, !tbaa !5
  %1036 = call ptr @s2n_strerror(i32 noundef %1035, ptr noundef @.str.4)
  %1037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1038 = load i32, ptr %1037, align 4, !tbaa !5
  %1039 = call ptr @s2n_strerror_debug(i32 noundef %1038, ptr noundef @.str.4)
  %1040 = call ptr @__errno_location() #13
  %1041 = load i32, ptr %1040, align 4, !tbaa !5
  %1042 = call ptr @strerror(i32 noundef %1041) #12
  %1043 = call ptr @__errno_location() #13
  %1044 = load i32, ptr %1043, align 4, !tbaa !5
  %1045 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1032, ptr noundef @.str.2, i32 noundef %1033, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 47, ptr noundef %1036, ptr noundef %1039, ptr noundef %1042, i32 noundef %1044) #12
  br label %1063

1046:                                             ; preds = %1024, %1017
  %1047 = load i32, ptr %18, align 4, !tbaa !5
  %1048 = call ptr @__errno_location() #13
  store i32 %1047, ptr %1048, align 4, !tbaa !5
  %1049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1050 = load i32, ptr @test_count, align 4, !tbaa !5
  %1051 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1052 = load i32, ptr %1051, align 4, !tbaa !5
  %1053 = call ptr @s2n_strerror(i32 noundef %1052, ptr noundef @.str.4)
  %1054 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1055 = load i32, ptr %1054, align 4, !tbaa !5
  %1056 = call ptr @s2n_strerror_debug(i32 noundef %1055, ptr noundef @.str.4)
  %1057 = call ptr @__errno_location() #13
  %1058 = load i32, ptr %1057, align 4, !tbaa !5
  %1059 = call ptr @strerror(i32 noundef %1058) #12
  %1060 = call ptr @__errno_location() #13
  %1061 = load i32, ptr %1060, align 4, !tbaa !5
  %1062 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1049, ptr noundef @.str.5, i32 noundef %1050, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 47, ptr noundef %1053, ptr noundef %1056, ptr noundef %1059, i32 noundef %1061) #12
  br label %1063

1063:                                             ; preds = %1046, %1029
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #12
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064
  call void @exit(i32 noundef 1) #14
  unreachable

1066:                                             ; No predecessors!
  br label %1067

1067:                                             ; preds = %1066
  br label %1068

1068:                                             ; preds = %1067, %1009
  br label %1069

1069:                                             ; preds = %1068
  br label %1070

1070:                                             ; preds = %1069
  br label %1071

1071:                                             ; preds = %1070
  %1072 = load i32, ptr @test_count, align 4, !tbaa !5
  %1073 = add nsw i32 %1072, 1
  store i32 %1073, ptr @test_count, align 4, !tbaa !5
  %1074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1075 = load i32, ptr %1074, align 4, !tbaa !5
  %1076 = call ptr @s2n_strerror_debug(i32 noundef %1075, ptr noundef @.str.4)
  %1077 = icmp eq ptr %1076, null
  br i1 %1077, label %1078, label %1131

1078:                                             ; preds = %1071
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

1080:                                             ; preds = %1079
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #12
  %1081 = call ptr @__errno_location() #13
  %1082 = load i32, ptr %1081, align 4, !tbaa !5
  store i32 %1082, ptr %19, align 4, !tbaa !5
  %1083 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1084 = call i32 @s2n_print_stacktrace(ptr noundef %1083)
  %1085 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1086 = trunc i8 %1085 to i1
  br i1 %1086, label %1087, label %1109

1087:                                             ; preds = %1080
  %1088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1089 = call i32 @fileno(ptr noundef %1088) #12
  %1090 = call i32 @isatty(i32 noundef %1089) #12
  %1091 = icmp ne i32 %1090, 0
  br i1 %1091, label %1092, label %1109

1092:                                             ; preds = %1087
  %1093 = load i32, ptr %19, align 4, !tbaa !5
  %1094 = call ptr @__errno_location() #13
  store i32 %1093, ptr %1094, align 4, !tbaa !5
  %1095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1096 = load i32, ptr @test_count, align 4, !tbaa !5
  %1097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call ptr @s2n_strerror(i32 noundef %1098, ptr noundef @.str.4)
  %1100 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = call ptr @s2n_strerror_debug(i32 noundef %1101, ptr noundef @.str.4)
  %1103 = call ptr @__errno_location() #13
  %1104 = load i32, ptr %1103, align 4, !tbaa !5
  %1105 = call ptr @strerror(i32 noundef %1104) #12
  %1106 = call ptr @__errno_location() #13
  %1107 = load i32, ptr %1106, align 4, !tbaa !5
  %1108 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1095, ptr noundef @.str.2, i32 noundef %1096, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 47, ptr noundef %1099, ptr noundef %1102, ptr noundef %1105, i32 noundef %1107) #12
  br label %1126

1109:                                             ; preds = %1087, %1080
  %1110 = load i32, ptr %19, align 4, !tbaa !5
  %1111 = call ptr @__errno_location() #13
  store i32 %1110, ptr %1111, align 4, !tbaa !5
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = load i32, ptr @test_count, align 4, !tbaa !5
  %1114 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1115 = load i32, ptr %1114, align 4, !tbaa !5
  %1116 = call ptr @s2n_strerror(i32 noundef %1115, ptr noundef @.str.4)
  %1117 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = call ptr @s2n_strerror_debug(i32 noundef %1118, ptr noundef @.str.4)
  %1120 = call ptr @__errno_location() #13
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call ptr @strerror(i32 noundef %1121) #12
  %1123 = call ptr @__errno_location() #13
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  %1125 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1112, ptr noundef @.str.5, i32 noundef %1113, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 47, ptr noundef %1116, ptr noundef %1119, ptr noundef %1122, i32 noundef %1124) #12
  br label %1126

1126:                                             ; preds = %1109, %1092
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #12
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127
  call void @exit(i32 noundef 1) #14
  unreachable

1129:                                             ; No predecessors!
  br label %1130

1130:                                             ; preds = %1129
  br label %1131

1131:                                             ; preds = %1130, %1071
  br label %1132

1132:                                             ; preds = %1131
  br label %1133

1133:                                             ; preds = %1132
  br label %1134

1134:                                             ; preds = %1133
  br label %1135

1135:                                             ; preds = %1134
  br label %1136

1136:                                             ; preds = %1135
  %1137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1137, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1138 = call ptr @__errno_location() #13
  store i32 0, ptr %1138, align 4, !tbaa !5
  br label %1139

1139:                                             ; preds = %1136
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140
  br label %1142

1142:                                             ; preds = %1141
  br label %1143

1143:                                             ; preds = %1142
  %1144 = load i32, ptr @test_count, align 4, !tbaa !5
  %1145 = add nsw i32 %1144, 1
  store i32 %1145, ptr @test_count, align 4, !tbaa !5
  %1146 = load ptr, ptr %12, align 8, !tbaa !9
  %1147 = getelementptr inbounds %struct.s2n_connection, ptr %1146, i32 0, i32 31
  %1148 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1147, i32 0, i32 1
  %1149 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1148, i32 0, i32 0
  %1150 = load ptr, ptr %1149, align 8, !tbaa !15
  %1151 = icmp eq ptr %1150, null
  br i1 %1151, label %1205, label %1152

1152:                                             ; preds = %1143
  br label %1153

1153:                                             ; preds = %1152
  br label %1154

1154:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #12
  %1155 = call ptr @__errno_location() #13
  %1156 = load i32, ptr %1155, align 4, !tbaa !5
  store i32 %1156, ptr %20, align 4, !tbaa !5
  %1157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1158 = call i32 @s2n_print_stacktrace(ptr noundef %1157)
  %1159 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1161, label %1183

1161:                                             ; preds = %1154
  %1162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1163 = call i32 @fileno(ptr noundef %1162) #12
  %1164 = call i32 @isatty(i32 noundef %1163) #12
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1183

1166:                                             ; preds = %1161
  %1167 = load i32, ptr %20, align 4, !tbaa !5
  %1168 = call ptr @__errno_location() #13
  store i32 %1167, ptr %1168, align 4, !tbaa !5
  %1169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1170 = load i32, ptr @test_count, align 4, !tbaa !5
  %1171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1172 = load i32, ptr %1171, align 4, !tbaa !5
  %1173 = call ptr @s2n_strerror(i32 noundef %1172, ptr noundef @.str.4)
  %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_debug(i32 noundef %1175, ptr noundef @.str.4)
  %1177 = call ptr @__errno_location() #13
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call ptr @strerror(i32 noundef %1178) #12
  %1180 = call ptr @__errno_location() #13
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1169, ptr noundef @.str.2, i32 noundef %1170, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 49, ptr noundef %1173, ptr noundef %1176, ptr noundef %1179, i32 noundef %1181) #12
  br label %1200

1183:                                             ; preds = %1161, %1154
  %1184 = load i32, ptr %20, align 4, !tbaa !5
  %1185 = call ptr @__errno_location() #13
  store i32 %1184, ptr %1185, align 4, !tbaa !5
  %1186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1187 = load i32, ptr @test_count, align 4, !tbaa !5
  %1188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1189 = load i32, ptr %1188, align 4, !tbaa !5
  %1190 = call ptr @s2n_strerror(i32 noundef %1189, ptr noundef @.str.4)
  %1191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  %1193 = call ptr @s2n_strerror_debug(i32 noundef %1192, ptr noundef @.str.4)
  %1194 = call ptr @__errno_location() #13
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call ptr @strerror(i32 noundef %1195) #12
  %1197 = call ptr @__errno_location() #13
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  %1199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1186, ptr noundef @.str.5, i32 noundef %1187, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 49, ptr noundef %1190, ptr noundef %1193, ptr noundef %1196, i32 noundef %1198) #12
  br label %1200

1200:                                             ; preds = %1183, %1166
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201
  call void @exit(i32 noundef 1) #14
  unreachable

1203:                                             ; No predecessors!
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204, %1143
  br label %1206

1206:                                             ; preds = %1205
  br label %1207

1207:                                             ; preds = %1206
  br label %1208

1208:                                             ; preds = %1207
  %1209 = load i32, ptr @test_count, align 4, !tbaa !5
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr @test_count, align 4, !tbaa !5
  %1211 = load ptr, ptr %12, align 8, !tbaa !9
  %1212 = getelementptr inbounds %struct.s2n_connection, ptr %1211, i32 0, i32 31
  %1213 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1212, i32 0, i32 4
  %1214 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1213, i32 0, i32 0
  %1215 = load ptr, ptr %1214, align 8, !tbaa !42
  %1216 = icmp eq ptr %1215, null
  br i1 %1216, label %1270, label %1217

1217:                                             ; preds = %1208
  br label %1218

1218:                                             ; preds = %1217
  br label %1219

1219:                                             ; preds = %1218
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #12
  %1220 = call ptr @__errno_location() #13
  %1221 = load i32, ptr %1220, align 4, !tbaa !5
  store i32 %1221, ptr %21, align 4, !tbaa !5
  %1222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1223 = call i32 @s2n_print_stacktrace(ptr noundef %1222)
  %1224 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1225 = trunc i8 %1224 to i1
  br i1 %1225, label %1226, label %1248

1226:                                             ; preds = %1219
  %1227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1228 = call i32 @fileno(ptr noundef %1227) #12
  %1229 = call i32 @isatty(i32 noundef %1228) #12
  %1230 = icmp ne i32 %1229, 0
  br i1 %1230, label %1231, label %1248

1231:                                             ; preds = %1226
  %1232 = load i32, ptr %21, align 4, !tbaa !5
  %1233 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %1242 = call ptr @__errno_location() #13
  %1243 = load i32, ptr %1242, align 4, !tbaa !5
  %1244 = call ptr @strerror(i32 noundef %1243) #12
  %1245 = call ptr @__errno_location() #13
  %1246 = load i32, ptr %1245, align 4, !tbaa !5
  %1247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1234, ptr noundef @.str.2, i32 noundef %1235, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 50, ptr noundef %1238, ptr noundef %1241, ptr noundef %1244, i32 noundef %1246) #12
  br label %1265

1248:                                             ; preds = %1226, %1219
  %1249 = load i32, ptr %21, align 4, !tbaa !5
  %1250 = call ptr @__errno_location() #13
  store i32 %1249, ptr %1250, align 4, !tbaa !5
  %1251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1252 = load i32, ptr @test_count, align 4, !tbaa !5
  %1253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1254 = load i32, ptr %1253, align 4, !tbaa !5
  %1255 = call ptr @s2n_strerror(i32 noundef %1254, ptr noundef @.str.4)
  %1256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  %1258 = call ptr @s2n_strerror_debug(i32 noundef %1257, ptr noundef @.str.4)
  %1259 = call ptr @__errno_location() #13
  %1260 = load i32, ptr %1259, align 4, !tbaa !5
  %1261 = call ptr @strerror(i32 noundef %1260) #12
  %1262 = call ptr @__errno_location() #13
  %1263 = load i32, ptr %1262, align 4, !tbaa !5
  %1264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1251, ptr noundef @.str.5, i32 noundef %1252, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 50, ptr noundef %1255, ptr noundef %1258, ptr noundef %1261, i32 noundef %1263) #12
  br label %1265

1265:                                             ; preds = %1248, %1231
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #12
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266
  call void @exit(i32 noundef 1) #14
  unreachable

1268:                                             ; No predecessors!
  br label %1269

1269:                                             ; preds = %1268
  br label %1270

1270:                                             ; preds = %1269, %1208
  br label %1271

1271:                                             ; preds = %1270
  br label %1272

1272:                                             ; preds = %1271
  br label %1273

1273:                                             ; preds = %1272
  %1274 = load i32, ptr @test_count, align 4, !tbaa !5
  %1275 = add nsw i32 %1274, 1
  store i32 %1275, ptr @test_count, align 4, !tbaa !5
  %1276 = load ptr, ptr %12, align 8, !tbaa !9
  %1277 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %1276)
  br i1 %1277, label %1278, label %1331

1278:                                             ; preds = %1273
  br label %1279

1279:                                             ; preds = %1278
  br label %1280

1280:                                             ; preds = %1279
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #12
  %1281 = call ptr @__errno_location() #13
  %1282 = load i32, ptr %1281, align 4, !tbaa !5
  store i32 %1282, ptr %22, align 4, !tbaa !5
  %1283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1284 = call i32 @s2n_print_stacktrace(ptr noundef %1283)
  %1285 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1309

1287:                                             ; preds = %1280
  %1288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1289 = call i32 @fileno(ptr noundef %1288) #12
  %1290 = call i32 @isatty(i32 noundef %1289) #12
  %1291 = icmp ne i32 %1290, 0
  br i1 %1291, label %1292, label %1309

1292:                                             ; preds = %1287
  %1293 = load i32, ptr %22, align 4, !tbaa !5
  %1294 = call ptr @__errno_location() #13
  store i32 %1293, ptr %1294, align 4, !tbaa !5
  %1295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1296 = load i32, ptr @test_count, align 4, !tbaa !5
  %1297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1298 = load i32, ptr %1297, align 4, !tbaa !5
  %1299 = call ptr @s2n_strerror(i32 noundef %1298, ptr noundef @.str.4)
  %1300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @s2n_strerror_debug(i32 noundef %1301, ptr noundef @.str.4)
  %1303 = call ptr @__errno_location() #13
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call ptr @strerror(i32 noundef %1304) #12
  %1306 = call ptr @__errno_location() #13
  %1307 = load i32, ptr %1306, align 4, !tbaa !5
  %1308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1295, ptr noundef @.str.2, i32 noundef %1296, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 51, ptr noundef %1299, ptr noundef %1302, ptr noundef %1305, i32 noundef %1307) #12
  br label %1326

1309:                                             ; preds = %1287, %1280
  %1310 = load i32, ptr %22, align 4, !tbaa !5
  %1311 = call ptr @__errno_location() #13
  store i32 %1310, ptr %1311, align 4, !tbaa !5
  %1312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1313 = load i32, ptr @test_count, align 4, !tbaa !5
  %1314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call ptr @s2n_strerror(i32 noundef %1315, ptr noundef @.str.4)
  %1317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1318 = load i32, ptr %1317, align 4, !tbaa !5
  %1319 = call ptr @s2n_strerror_debug(i32 noundef %1318, ptr noundef @.str.4)
  %1320 = call ptr @__errno_location() #13
  %1321 = load i32, ptr %1320, align 4, !tbaa !5
  %1322 = call ptr @strerror(i32 noundef %1321) #12
  %1323 = call ptr @__errno_location() #13
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1312, ptr noundef @.str.5, i32 noundef %1313, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 51, ptr noundef %1316, ptr noundef %1319, ptr noundef %1322, i32 noundef %1324) #12
  br label %1326

1326:                                             ; preds = %1309, %1292
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #12
  br label %1327

1327:                                             ; preds = %1326
  br label %1328

1328:                                             ; preds = %1327
  call void @exit(i32 noundef 1) #14
  unreachable

1329:                                             ; No predecessors!
  br label %1330

1330:                                             ; preds = %1329
  br label %1331

1331:                                             ; preds = %1330, %1273
  br label %1332

1332:                                             ; preds = %1331
  br label %1333

1333:                                             ; preds = %1332
  br label %1334

1334:                                             ; preds = %1333
  %1335 = load i32, ptr @test_count, align 4, !tbaa !5
  %1336 = add nsw i32 %1335, 1
  store i32 %1336, ptr @test_count, align 4, !tbaa !5
  %1337 = load ptr, ptr %12, align 8, !tbaa !9
  %1338 = call i32 @s2n_connection_free(ptr noundef %1337)
  %1339 = icmp eq i32 %1338, -1
  br i1 %1339, label %1340, label %1393

1340:                                             ; preds = %1334
  br label %1341

1341:                                             ; preds = %1340
  br label %1342

1342:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #12
  %1343 = call ptr @__errno_location() #13
  %1344 = load i32, ptr %1343, align 4, !tbaa !5
  store i32 %1344, ptr %23, align 4, !tbaa !5
  %1345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1346 = call i32 @s2n_print_stacktrace(ptr noundef %1345)
  %1347 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1348 = trunc i8 %1347 to i1
  br i1 %1348, label %1349, label %1371

1349:                                             ; preds = %1342
  %1350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1351 = call i32 @fileno(ptr noundef %1350) #12
  %1352 = call i32 @isatty(i32 noundef %1351) #12
  %1353 = icmp ne i32 %1352, 0
  br i1 %1353, label %1354, label %1371

1354:                                             ; preds = %1349
  %1355 = load i32, ptr %23, align 4, !tbaa !5
  %1356 = call ptr @__errno_location() #13
  store i32 %1355, ptr %1356, align 4, !tbaa !5
  %1357 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1358 = load i32, ptr @test_count, align 4, !tbaa !5
  %1359 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1360 = load i32, ptr %1359, align 4, !tbaa !5
  %1361 = call ptr @s2n_strerror(i32 noundef %1360, ptr noundef @.str.4)
  %1362 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1363 = load i32, ptr %1362, align 4, !tbaa !5
  %1364 = call ptr @s2n_strerror_debug(i32 noundef %1363, ptr noundef @.str.4)
  %1365 = call ptr @__errno_location() #13
  %1366 = load i32, ptr %1365, align 4, !tbaa !5
  %1367 = call ptr @strerror(i32 noundef %1366) #12
  %1368 = call ptr @__errno_location() #13
  %1369 = load i32, ptr %1368, align 4, !tbaa !5
  %1370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1357, ptr noundef @.str.2, i32 noundef %1358, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 53, ptr noundef %1361, ptr noundef %1364, ptr noundef %1367, i32 noundef %1369) #12
  br label %1388

1371:                                             ; preds = %1349, %1342
  %1372 = load i32, ptr %23, align 4, !tbaa !5
  %1373 = call ptr @__errno_location() #13
  store i32 %1372, ptr %1373, align 4, !tbaa !5
  %1374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1375 = load i32, ptr @test_count, align 4, !tbaa !5
  %1376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1377 = load i32, ptr %1376, align 4, !tbaa !5
  %1378 = call ptr @s2n_strerror(i32 noundef %1377, ptr noundef @.str.4)
  %1379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1380 = load i32, ptr %1379, align 4, !tbaa !5
  %1381 = call ptr @s2n_strerror_debug(i32 noundef %1380, ptr noundef @.str.4)
  %1382 = call ptr @__errno_location() #13
  %1383 = load i32, ptr %1382, align 4, !tbaa !5
  %1384 = call ptr @strerror(i32 noundef %1383) #12
  %1385 = call ptr @__errno_location() #13
  %1386 = load i32, ptr %1385, align 4, !tbaa !5
  %1387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1374, ptr noundef @.str.5, i32 noundef %1375, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 53, ptr noundef %1378, ptr noundef %1381, ptr noundef %1384, i32 noundef %1386) #12
  br label %1388

1388:                                             ; preds = %1371, %1354
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #12
  br label %1389

1389:                                             ; preds = %1388
  br label %1390

1390:                                             ; preds = %1389
  call void @exit(i32 noundef 1) #14
  unreachable

1391:                                             ; No predecessors!
  br label %1392

1392:                                             ; preds = %1391
  br label %1393

1393:                                             ; preds = %1392, %1334
  br label %1394

1394:                                             ; preds = %1393
  br label %1395

1395:                                             ; preds = %1394
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #12
  store ptr null, ptr %24, align 8, !tbaa !9
  br label %1396

1396:                                             ; preds = %1395
  %1397 = load i32, ptr @test_count, align 4, !tbaa !5
  %1398 = add nsw i32 %1397, 1
  store i32 %1398, ptr @test_count, align 4, !tbaa !5
  %1399 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %1399, ptr %24, align 8, !tbaa !9
  %1400 = icmp eq ptr %1399, null
  br i1 %1400, label %1401, label %1454

1401:                                             ; preds = %1396
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

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

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

1415:                                             ; preds = %1410
  %1416 = load i32, ptr %25, align 4, !tbaa !5
  %1417 = call ptr @__errno_location() #13
  store i32 %1416, ptr %1417, align 4, !tbaa !5
  %1418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1419 = load i32, ptr @test_count, align 4, !tbaa !5
  %1420 = 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 @.str.4)
  %1423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1424 = load i32, ptr %1423, align 4, !tbaa !5
  %1425 = call ptr @s2n_strerror_debug(i32 noundef %1424, ptr noundef @.str.4)
  %1426 = call ptr @__errno_location() #13
  %1427 = load i32, ptr %1426, align 4, !tbaa !5
  %1428 = call ptr @strerror(i32 noundef %1427) #12
  %1429 = call ptr @__errno_location() #13
  %1430 = load i32, ptr %1429, align 4, !tbaa !5
  %1431 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1418, ptr noundef @.str.2, i32 noundef %1419, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 60, ptr noundef %1422, ptr noundef %1425, ptr noundef %1428, i32 noundef %1430) #12
  br label %1449

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

1449:                                             ; preds = %1432, %1415
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #12
  br label %1450

1450:                                             ; preds = %1449
  br label %1451

1451:                                             ; preds = %1450
  call void @exit(i32 noundef 1) #14
  unreachable

1452:                                             ; No predecessors!
  br label %1453

1453:                                             ; preds = %1452
  br label %1454

1454:                                             ; preds = %1453, %1396
  br label %1455

1455:                                             ; preds = %1454
  br label %1456

1456:                                             ; preds = %1455
  br label %1457

1457:                                             ; preds = %1456
  %1458 = load i32, ptr @test_count, align 4, !tbaa !5
  %1459 = add nsw i32 %1458, 1
  store i32 %1459, ptr @test_count, align 4, !tbaa !5
  %1460 = load ptr, ptr %24, align 8, !tbaa !9
  %1461 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %1460, i8 noundef zeroext 34)
  %1462 = icmp eq i32 %1461, -1
  br i1 %1462, label %1463, label %1516

1463:                                             ; preds = %1457
  br label %1464

1464:                                             ; preds = %1463
  br label %1465

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

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

1477:                                             ; preds = %1472
  %1478 = load i32, ptr %26, align 4, !tbaa !5
  %1479 = call ptr @__errno_location() #13
  store i32 %1478, ptr %1479, align 4, !tbaa !5
  %1480 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1481 = load i32, ptr @test_count, align 4, !tbaa !5
  %1482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1483 = load i32, ptr %1482, align 4, !tbaa !5
  %1484 = call ptr @s2n_strerror(i32 noundef %1483, ptr noundef @.str.4)
  %1485 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1486 = load i32, ptr %1485, align 4, !tbaa !5
  %1487 = call ptr @s2n_strerror_debug(i32 noundef %1486, ptr noundef @.str.4)
  %1488 = call ptr @__errno_location() #13
  %1489 = load i32, ptr %1488, align 4, !tbaa !5
  %1490 = call ptr @strerror(i32 noundef %1489) #12
  %1491 = call ptr @__errno_location() #13
  %1492 = load i32, ptr %1491, align 4, !tbaa !5
  %1493 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1480, ptr noundef @.str.2, i32 noundef %1481, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 61, ptr noundef %1484, ptr noundef %1487, ptr noundef %1490, i32 noundef %1492) #12
  br label %1511

1494:                                             ; preds = %1472, %1465
  %1495 = load i32, ptr %26, align 4, !tbaa !5
  %1496 = call ptr @__errno_location() #13
  store i32 %1495, ptr %1496, align 4, !tbaa !5
  %1497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1498 = load i32, ptr @test_count, align 4, !tbaa !5
  %1499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1500 = load i32, ptr %1499, align 4, !tbaa !5
  %1501 = call ptr @s2n_strerror(i32 noundef %1500, ptr noundef @.str.4)
  %1502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1503 = load i32, ptr %1502, align 4, !tbaa !5
  %1504 = call ptr @s2n_strerror_debug(i32 noundef %1503, ptr noundef @.str.4)
  %1505 = call ptr @__errno_location() #13
  %1506 = load i32, ptr %1505, align 4, !tbaa !5
  %1507 = call ptr @strerror(i32 noundef %1506) #12
  %1508 = call ptr @__errno_location() #13
  %1509 = load i32, ptr %1508, align 4, !tbaa !5
  %1510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1497, ptr noundef @.str.5, i32 noundef %1498, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 61, ptr noundef %1501, ptr noundef %1504, ptr noundef %1507, i32 noundef %1509) #12
  br label %1511

1511:                                             ; preds = %1494, %1477
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #12
  br label %1512

1512:                                             ; preds = %1511
  br label %1513

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

1514:                                             ; No predecessors!
  br label %1515

1515:                                             ; preds = %1514
  br label %1516

1516:                                             ; preds = %1515, %1457
  br label %1517

1517:                                             ; preds = %1516
  br label %1518

1518:                                             ; preds = %1517
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #12
  store ptr null, ptr %27, align 8, !tbaa !9
  br label %1519

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

1525:                                             ; preds = %1519
  br label %1526

1526:                                             ; preds = %1525
  br label %1527

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

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

1539:                                             ; preds = %1534
  %1540 = load i32, ptr %28, align 4, !tbaa !5
  %1541 = call ptr @__errno_location() #13
  store i32 %1540, ptr %1541, align 4, !tbaa !5
  %1542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1543 = load i32, ptr @test_count, align 4, !tbaa !5
  %1544 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1545 = load i32, ptr %1544, align 4, !tbaa !5
  %1546 = call ptr @s2n_strerror(i32 noundef %1545, ptr noundef @.str.4)
  %1547 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1548 = load i32, ptr %1547, align 4, !tbaa !5
  %1549 = call ptr @s2n_strerror_debug(i32 noundef %1548, ptr noundef @.str.4)
  %1550 = call ptr @__errno_location() #13
  %1551 = load i32, ptr %1550, align 4, !tbaa !5
  %1552 = call ptr @strerror(i32 noundef %1551) #12
  %1553 = call ptr @__errno_location() #13
  %1554 = load i32, ptr %1553, align 4, !tbaa !5
  %1555 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1542, ptr noundef @.str.2, i32 noundef %1543, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 64, ptr noundef %1546, ptr noundef %1549, ptr noundef %1552, i32 noundef %1554) #12
  br label %1573

1556:                                             ; preds = %1534, %1527
  %1557 = load i32, ptr %28, align 4, !tbaa !5
  %1558 = call ptr @__errno_location() #13
  store i32 %1557, ptr %1558, align 4, !tbaa !5
  %1559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1560 = load i32, ptr @test_count, align 4, !tbaa !5
  %1561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1562 = load i32, ptr %1561, align 4, !tbaa !5
  %1563 = call ptr @s2n_strerror(i32 noundef %1562, ptr noundef @.str.4)
  %1564 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1565 = load i32, ptr %1564, align 4, !tbaa !5
  %1566 = call ptr @s2n_strerror_debug(i32 noundef %1565, ptr noundef @.str.4)
  %1567 = call ptr @__errno_location() #13
  %1568 = load i32, ptr %1567, align 4, !tbaa !5
  %1569 = call ptr @strerror(i32 noundef %1568) #12
  %1570 = call ptr @__errno_location() #13
  %1571 = load i32, ptr %1570, align 4, !tbaa !5
  %1572 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1559, ptr noundef @.str.5, i32 noundef %1560, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 64, ptr noundef %1563, ptr noundef %1566, ptr noundef %1569, i32 noundef %1571) #12
  br label %1573

1573:                                             ; preds = %1556, %1539
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  br label %1574

1574:                                             ; preds = %1573
  br label %1575

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

1576:                                             ; No predecessors!
  br label %1577

1577:                                             ; preds = %1576
  br label %1578

1578:                                             ; preds = %1577, %1519
  br label %1579

1579:                                             ; preds = %1578
  br label %1580

1580:                                             ; preds = %1579
  br label %1581

1581:                                             ; preds = %1580
  %1582 = load i32, ptr @test_count, align 4, !tbaa !5
  %1583 = add nsw i32 %1582, 1
  store i32 %1583, ptr @test_count, align 4, !tbaa !5
  %1584 = load ptr, ptr %27, align 8, !tbaa !9
  %1585 = icmp eq ptr %1584, null
  br i1 %1585, label %1586, label %1639

1586:                                             ; preds = %1581
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

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

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

1600:                                             ; preds = %1595
  %1601 = load i32, ptr %29, align 4, !tbaa !5
  %1602 = call ptr @__errno_location() #13
  store i32 %1601, ptr %1602, align 4, !tbaa !5
  %1603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1604 = load i32, ptr @test_count, align 4, !tbaa !5
  %1605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1606 = load i32, ptr %1605, align 4, !tbaa !5
  %1607 = call ptr @s2n_strerror(i32 noundef %1606, ptr noundef @.str.4)
  %1608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1609 = load i32, ptr %1608, align 4, !tbaa !5
  %1610 = call ptr @s2n_strerror_debug(i32 noundef %1609, ptr noundef @.str.4)
  %1611 = call ptr @__errno_location() #13
  %1612 = load i32, ptr %1611, align 4, !tbaa !5
  %1613 = call ptr @strerror(i32 noundef %1612) #12
  %1614 = call ptr @__errno_location() #13
  %1615 = load i32, ptr %1614, align 4, !tbaa !5
  %1616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1603, ptr noundef @.str.2, i32 noundef %1604, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 65, ptr noundef %1607, ptr noundef %1610, ptr noundef %1613, i32 noundef %1615) #12
  br label %1634

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

1634:                                             ; preds = %1617, %1600
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #12
  br label %1635

1635:                                             ; preds = %1634
  br label %1636

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

1637:                                             ; No predecessors!
  br label %1638

1638:                                             ; preds = %1637
  br label %1639

1639:                                             ; preds = %1638, %1581
  br label %1640

1640:                                             ; preds = %1639
  br label %1641

1641:                                             ; preds = %1640
  br label %1642

1642:                                             ; preds = %1641
  %1643 = load i32, ptr @test_count, align 4, !tbaa !5
  %1644 = add nsw i32 %1643, 1
  store i32 %1644, ptr @test_count, align 4, !tbaa !5
  %1645 = load ptr, ptr %24, align 8, !tbaa !9
  %1646 = getelementptr inbounds %struct.s2n_connection, ptr %1645, i32 0, i32 31
  %1647 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1646, i32 0, i32 4
  %1648 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1647, i32 0, i32 0
  %1649 = load ptr, ptr %1648, align 8, !tbaa !42
  %1650 = icmp eq ptr %1649, null
  br i1 %1650, label %1704, label %1651

1651:                                             ; preds = %1642
  br label %1652

1652:                                             ; preds = %1651
  br label %1653

1653:                                             ; preds = %1652
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  %1654 = call ptr @__errno_location() #13
  %1655 = load i32, ptr %1654, align 4, !tbaa !5
  store i32 %1655, ptr %30, align 4, !tbaa !5
  %1656 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1657 = call i32 @s2n_print_stacktrace(ptr noundef %1656)
  %1658 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1659 = trunc i8 %1658 to i1
  br i1 %1659, label %1660, label %1682

1660:                                             ; preds = %1653
  %1661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1662 = call i32 @fileno(ptr noundef %1661) #12
  %1663 = call i32 @isatty(i32 noundef %1662) #12
  %1664 = icmp ne i32 %1663, 0
  br i1 %1664, label %1665, label %1682

1665:                                             ; preds = %1660
  %1666 = load i32, ptr %30, align 4, !tbaa !5
  %1667 = call ptr @__errno_location() #13
  store i32 %1666, ptr %1667, align 4, !tbaa !5
  %1668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1669 = load i32, ptr @test_count, align 4, !tbaa !5
  %1670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1671 = load i32, ptr %1670, align 4, !tbaa !5
  %1672 = call ptr @s2n_strerror(i32 noundef %1671, ptr noundef @.str.4)
  %1673 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1674 = load i32, ptr %1673, align 4, !tbaa !5
  %1675 = call ptr @s2n_strerror_debug(i32 noundef %1674, ptr noundef @.str.4)
  %1676 = call ptr @__errno_location() #13
  %1677 = load i32, ptr %1676, align 4, !tbaa !5
  %1678 = call ptr @strerror(i32 noundef %1677) #12
  %1679 = call ptr @__errno_location() #13
  %1680 = load i32, ptr %1679, align 4, !tbaa !5
  %1681 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1668, ptr noundef @.str.2, i32 noundef %1669, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 67, ptr noundef %1672, ptr noundef %1675, ptr noundef %1678, i32 noundef %1680) #12
  br label %1699

1682:                                             ; preds = %1660, %1653
  %1683 = load i32, ptr %30, align 4, !tbaa !5
  %1684 = call ptr @__errno_location() #13
  store i32 %1683, ptr %1684, align 4, !tbaa !5
  %1685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1686 = load i32, ptr @test_count, align 4, !tbaa !5
  %1687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1688 = load i32, ptr %1687, align 4, !tbaa !5
  %1689 = call ptr @s2n_strerror(i32 noundef %1688, ptr noundef @.str.4)
  %1690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1691 = load i32, ptr %1690, align 4, !tbaa !5
  %1692 = call ptr @s2n_strerror_debug(i32 noundef %1691, ptr noundef @.str.4)
  %1693 = call ptr @__errno_location() #13
  %1694 = load i32, ptr %1693, align 4, !tbaa !5
  %1695 = call ptr @strerror(i32 noundef %1694) #12
  %1696 = call ptr @__errno_location() #13
  %1697 = load i32, ptr %1696, align 4, !tbaa !5
  %1698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1685, ptr noundef @.str.5, i32 noundef %1686, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 67, ptr noundef %1689, ptr noundef %1692, ptr noundef %1695, i32 noundef %1697) #12
  br label %1699

1699:                                             ; preds = %1682, %1665
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  br label %1700

1700:                                             ; preds = %1699
  br label %1701

1701:                                             ; preds = %1700
  call void @exit(i32 noundef 1) #14
  unreachable

1702:                                             ; No predecessors!
  br label %1703

1703:                                             ; preds = %1702
  br label %1704

1704:                                             ; preds = %1703, %1642
  br label %1705

1705:                                             ; preds = %1704
  br label %1706

1706:                                             ; preds = %1705
  %1707 = load ptr, ptr %27, align 8, !tbaa !9
  %1708 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %1707, i32 0, i32 1
  %1709 = load ptr, ptr %1708, align 8, !tbaa !43
  %1710 = getelementptr inbounds ptr, ptr %1709, i64 1
  %1711 = load ptr, ptr %1710, align 8, !tbaa !9
  %1712 = load ptr, ptr %24, align 8, !tbaa !9
  %1713 = getelementptr inbounds %struct.s2n_connection, ptr %1712, i32 0, i32 31
  %1714 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1713, i32 0, i32 1
  %1715 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1714, i32 0, i32 0
  store ptr %1711, ptr %1715, align 8, !tbaa !15
  br label %1716

1716:                                             ; preds = %1706
  %1717 = load i32, ptr @test_count, align 4, !tbaa !5
  %1718 = add nsw i32 %1717, 1
  store i32 %1718, ptr @test_count, align 4, !tbaa !5
  %1719 = load ptr, ptr %24, align 8, !tbaa !9
  %1720 = getelementptr inbounds %struct.s2n_connection, ptr %1719, i32 0, i32 31
  %1721 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1720, i32 0, i32 2
  %1722 = getelementptr inbounds [4 x ptr], ptr %1721, i64 0, i64 0
  %1723 = load ptr, ptr %1722, align 8, !tbaa !9
  %1724 = icmp eq ptr %1723, null
  br i1 %1724, label %1778, label %1725

1725:                                             ; preds = %1716
  br label %1726

1726:                                             ; preds = %1725
  br label %1727

1727:                                             ; preds = %1726
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #12
  %1728 = call ptr @__errno_location() #13
  %1729 = load i32, ptr %1728, align 4, !tbaa !5
  store i32 %1729, ptr %31, align 4, !tbaa !5
  %1730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1731 = call i32 @s2n_print_stacktrace(ptr noundef %1730)
  %1732 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1733 = trunc i8 %1732 to i1
  br i1 %1733, label %1734, label %1756

1734:                                             ; preds = %1727
  %1735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1736 = call i32 @fileno(ptr noundef %1735) #12
  %1737 = call i32 @isatty(i32 noundef %1736) #12
  %1738 = icmp ne i32 %1737, 0
  br i1 %1738, label %1739, label %1756

1739:                                             ; preds = %1734
  %1740 = load i32, ptr %31, align 4, !tbaa !5
  %1741 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %1750 = call ptr @__errno_location() #13
  %1751 = load i32, ptr %1750, align 4, !tbaa !5
  %1752 = call ptr @strerror(i32 noundef %1751) #12
  %1753 = call ptr @__errno_location() #13
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1742, ptr noundef @.str.2, i32 noundef %1743, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 69, ptr noundef %1746, ptr noundef %1749, ptr noundef %1752, i32 noundef %1754) #12
  br label %1773

1756:                                             ; preds = %1734, %1727
  %1757 = load i32, ptr %31, align 4, !tbaa !5
  %1758 = call ptr @__errno_location() #13
  store i32 %1757, ptr %1758, align 4, !tbaa !5
  %1759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1760 = load i32, ptr @test_count, align 4, !tbaa !5
  %1761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1762 = load i32, ptr %1761, align 4, !tbaa !5
  %1763 = call ptr @s2n_strerror(i32 noundef %1762, ptr noundef @.str.4)
  %1764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1765 = load i32, ptr %1764, align 4, !tbaa !5
  %1766 = call ptr @s2n_strerror_debug(i32 noundef %1765, ptr noundef @.str.4)
  %1767 = call ptr @__errno_location() #13
  %1768 = load i32, ptr %1767, align 4, !tbaa !5
  %1769 = call ptr @strerror(i32 noundef %1768) #12
  %1770 = call ptr @__errno_location() #13
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1759, ptr noundef @.str.5, i32 noundef %1760, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 69, ptr noundef %1763, ptr noundef %1766, ptr noundef %1769, i32 noundef %1771) #12
  br label %1773

1773:                                             ; preds = %1756, %1739
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #12
  br label %1774

1774:                                             ; preds = %1773
  br label %1775

1775:                                             ; preds = %1774
  call void @exit(i32 noundef 1) #14
  unreachable

1776:                                             ; No predecessors!
  br label %1777

1777:                                             ; preds = %1776
  br label %1778

1778:                                             ; preds = %1777, %1716
  br label %1779

1779:                                             ; preds = %1778
  br label %1780

1780:                                             ; preds = %1779
  %1781 = load ptr, ptr %27, align 8, !tbaa !9
  %1782 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %1781, i32 0, i32 1
  %1783 = load ptr, ptr %1782, align 8, !tbaa !43
  %1784 = getelementptr inbounds ptr, ptr %1783, i64 1
  %1785 = load ptr, ptr %1784, align 8, !tbaa !9
  %1786 = load ptr, ptr %24, align 8, !tbaa !9
  %1787 = getelementptr inbounds %struct.s2n_connection, ptr %1786, i32 0, i32 31
  %1788 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1787, i32 0, i32 2
  %1789 = getelementptr inbounds [4 x ptr], ptr %1788, i64 0, i64 1
  store ptr %1785, ptr %1789, align 8, !tbaa !9
  br label %1790

1790:                                             ; preds = %1780
  %1791 = load i32, ptr @test_count, align 4, !tbaa !5
  %1792 = add nsw i32 %1791, 1
  store i32 %1792, ptr @test_count, align 4, !tbaa !5
  %1793 = load ptr, ptr %24, align 8, !tbaa !9
  %1794 = getelementptr inbounds %struct.s2n_connection, ptr %1793, i32 0, i32 31
  %1795 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1794, i32 0, i32 3
  %1796 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1795, i32 0, i32 1
  %1797 = load ptr, ptr %1796, align 8, !tbaa !45
  %1798 = icmp eq ptr %1797, null
  br i1 %1798, label %1852, label %1799

1799:                                             ; preds = %1790
  br label %1800

1800:                                             ; preds = %1799
  br label %1801

1801:                                             ; preds = %1800
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #12
  %1802 = call ptr @__errno_location() #13
  %1803 = load i32, ptr %1802, align 4, !tbaa !5
  store i32 %1803, ptr %32, align 4, !tbaa !5
  %1804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1805 = call i32 @s2n_print_stacktrace(ptr noundef %1804)
  %1806 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1807 = trunc i8 %1806 to i1
  br i1 %1807, label %1808, label %1830

1808:                                             ; preds = %1801
  %1809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1810 = call i32 @fileno(ptr noundef %1809) #12
  %1811 = call i32 @isatty(i32 noundef %1810) #12
  %1812 = icmp ne i32 %1811, 0
  br i1 %1812, label %1813, label %1830

1813:                                             ; preds = %1808
  %1814 = load i32, ptr %32, align 4, !tbaa !5
  %1815 = call ptr @__errno_location() #13
  store i32 %1814, ptr %1815, align 4, !tbaa !5
  %1816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1817 = load i32, ptr @test_count, align 4, !tbaa !5
  %1818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1819 = load i32, ptr %1818, align 4, !tbaa !5
  %1820 = call ptr @s2n_strerror(i32 noundef %1819, ptr noundef @.str.4)
  %1821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1822 = load i32, ptr %1821, align 4, !tbaa !5
  %1823 = call ptr @s2n_strerror_debug(i32 noundef %1822, ptr noundef @.str.4)
  %1824 = call ptr @__errno_location() #13
  %1825 = load i32, ptr %1824, align 4, !tbaa !5
  %1826 = call ptr @strerror(i32 noundef %1825) #12
  %1827 = call ptr @__errno_location() #13
  %1828 = load i32, ptr %1827, align 4, !tbaa !5
  %1829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1816, ptr noundef @.str.2, i32 noundef %1817, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 71, ptr noundef %1820, ptr noundef %1823, ptr noundef %1826, i32 noundef %1828) #12
  br label %1847

1830:                                             ; preds = %1808, %1801
  %1831 = load i32, ptr %32, align 4, !tbaa !5
  %1832 = call ptr @__errno_location() #13
  store i32 %1831, ptr %1832, 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 @.str.4)
  %1838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1839 = load i32, ptr %1838, align 4, !tbaa !5
  %1840 = call ptr @s2n_strerror_debug(i32 noundef %1839, ptr noundef @.str.4)
  %1841 = call ptr @__errno_location() #13
  %1842 = load i32, ptr %1841, align 4, !tbaa !5
  %1843 = call ptr @strerror(i32 noundef %1842) #12
  %1844 = call ptr @__errno_location() #13
  %1845 = load i32, ptr %1844, align 4, !tbaa !5
  %1846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1833, ptr noundef @.str.5, i32 noundef %1834, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 71, ptr noundef %1837, ptr noundef %1840, ptr noundef %1843, i32 noundef %1845) #12
  br label %1847

1847:                                             ; preds = %1830, %1813
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  br label %1848

1848:                                             ; preds = %1847
  br label %1849

1849:                                             ; preds = %1848
  call void @exit(i32 noundef 1) #14
  unreachable

1850:                                             ; No predecessors!
  br label %1851

1851:                                             ; preds = %1850
  br label %1852

1852:                                             ; preds = %1851, %1790
  br label %1853

1853:                                             ; preds = %1852
  br label %1854

1854:                                             ; preds = %1853
  br label %1855

1855:                                             ; preds = %1854
  %1856 = load i32, ptr @test_count, align 4, !tbaa !5
  %1857 = add nsw i32 %1856, 1
  store i32 %1857, ptr @test_count, align 4, !tbaa !5
  %1858 = load ptr, ptr %24, align 8, !tbaa !9
  %1859 = getelementptr inbounds %struct.s2n_connection, ptr %1858, i32 0, i32 31
  %1860 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1859, i32 0, i32 3
  %1861 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1860, i32 0, i32 0
  %1862 = load ptr, ptr %1861, align 8, !tbaa !46
  %1863 = icmp eq ptr %1862, null
  br i1 %1863, label %1917, label %1864

1864:                                             ; preds = %1855
  br label %1865

1865:                                             ; preds = %1864
  br label %1866

1866:                                             ; preds = %1865
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #12
  %1867 = call ptr @__errno_location() #13
  %1868 = load i32, ptr %1867, align 4, !tbaa !5
  store i32 %1868, ptr %33, align 4, !tbaa !5
  %1869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1870 = call i32 @s2n_print_stacktrace(ptr noundef %1869)
  %1871 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1872 = trunc i8 %1871 to i1
  br i1 %1872, label %1873, label %1895

1873:                                             ; preds = %1866
  %1874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1875 = call i32 @fileno(ptr noundef %1874) #12
  %1876 = call i32 @isatty(i32 noundef %1875) #12
  %1877 = icmp ne i32 %1876, 0
  br i1 %1877, label %1878, label %1895

1878:                                             ; preds = %1873
  %1879 = load i32, ptr %33, align 4, !tbaa !5
  %1880 = call ptr @__errno_location() #13
  store i32 %1879, ptr %1880, align 4, !tbaa !5
  %1881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1882 = load i32, ptr @test_count, align 4, !tbaa !5
  %1883 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1884 = load i32, ptr %1883, align 4, !tbaa !5
  %1885 = call ptr @s2n_strerror(i32 noundef %1884, ptr noundef @.str.4)
  %1886 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1887 = load i32, ptr %1886, align 4, !tbaa !5
  %1888 = call ptr @s2n_strerror_debug(i32 noundef %1887, ptr noundef @.str.4)
  %1889 = call ptr @__errno_location() #13
  %1890 = load i32, ptr %1889, align 4, !tbaa !5
  %1891 = call ptr @strerror(i32 noundef %1890) #12
  %1892 = call ptr @__errno_location() #13
  %1893 = load i32, ptr %1892, align 4, !tbaa !5
  %1894 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1881, ptr noundef @.str.2, i32 noundef %1882, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 72, ptr noundef %1885, ptr noundef %1888, ptr noundef %1891, i32 noundef %1893) #12
  br label %1912

1895:                                             ; preds = %1873, %1866
  %1896 = load i32, ptr %33, align 4, !tbaa !5
  %1897 = call ptr @__errno_location() #13
  store i32 %1896, ptr %1897, align 4, !tbaa !5
  %1898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1899 = load i32, ptr @test_count, align 4, !tbaa !5
  %1900 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1901 = load i32, ptr %1900, align 4, !tbaa !5
  %1902 = call ptr @s2n_strerror(i32 noundef %1901, ptr noundef @.str.4)
  %1903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1904 = load i32, ptr %1903, align 4, !tbaa !5
  %1905 = call ptr @s2n_strerror_debug(i32 noundef %1904, ptr noundef @.str.4)
  %1906 = call ptr @__errno_location() #13
  %1907 = load i32, ptr %1906, align 4, !tbaa !5
  %1908 = call ptr @strerror(i32 noundef %1907) #12
  %1909 = call ptr @__errno_location() #13
  %1910 = load i32, ptr %1909, align 4, !tbaa !5
  %1911 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1898, ptr noundef @.str.5, i32 noundef %1899, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 72, ptr noundef %1902, ptr noundef %1905, ptr noundef %1908, i32 noundef %1910) #12
  br label %1912

1912:                                             ; preds = %1895, %1878
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #12
  br label %1913

1913:                                             ; preds = %1912
  br label %1914

1914:                                             ; preds = %1913
  call void @exit(i32 noundef 1) #14
  unreachable

1915:                                             ; No predecessors!
  br label %1916

1916:                                             ; preds = %1915
  br label %1917

1917:                                             ; preds = %1916, %1855
  br label %1918

1918:                                             ; preds = %1917
  br label %1919

1919:                                             ; preds = %1918
  br label %1920

1920:                                             ; preds = %1919
  %1921 = load i32, ptr @test_count, align 4, !tbaa !5
  %1922 = add nsw i32 %1921, 1
  store i32 %1922, ptr @test_count, align 4, !tbaa !5
  %1923 = load ptr, ptr %24, align 8, !tbaa !9
  %1924 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %1923)
  %1925 = icmp eq i32 %1924, -1
  br i1 %1925, label %1926, label %1979

1926:                                             ; preds = %1920
  br label %1927

1927:                                             ; preds = %1926
  br label %1928

1928:                                             ; preds = %1927
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #12
  %1929 = call ptr @__errno_location() #13
  %1930 = load i32, ptr %1929, align 4, !tbaa !5
  store i32 %1930, ptr %34, align 4, !tbaa !5
  %1931 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1932 = call i32 @s2n_print_stacktrace(ptr noundef %1931)
  %1933 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1934 = trunc i8 %1933 to i1
  br i1 %1934, label %1935, label %1957

1935:                                             ; preds = %1928
  %1936 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1937 = call i32 @fileno(ptr noundef %1936) #12
  %1938 = call i32 @isatty(i32 noundef %1937) #12
  %1939 = icmp ne i32 %1938, 0
  br i1 %1939, label %1940, label %1957

1940:                                             ; preds = %1935
  %1941 = load i32, ptr %34, align 4, !tbaa !5
  %1942 = call ptr @__errno_location() #13
  store i32 %1941, ptr %1942, align 4, !tbaa !5
  %1943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1944 = load i32, ptr @test_count, align 4, !tbaa !5
  %1945 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1946 = load i32, ptr %1945, align 4, !tbaa !5
  %1947 = call ptr @s2n_strerror(i32 noundef %1946, ptr noundef @.str.4)
  %1948 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1949 = load i32, ptr %1948, align 4, !tbaa !5
  %1950 = call ptr @s2n_strerror_debug(i32 noundef %1949, ptr noundef @.str.4)
  %1951 = call ptr @__errno_location() #13
  %1952 = load i32, ptr %1951, align 4, !tbaa !5
  %1953 = call ptr @strerror(i32 noundef %1952) #12
  %1954 = call ptr @__errno_location() #13
  %1955 = load i32, ptr %1954, align 4, !tbaa !5
  %1956 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1943, ptr noundef @.str.2, i32 noundef %1944, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 74, ptr noundef %1947, ptr noundef %1950, ptr noundef %1953, i32 noundef %1955) #12
  br label %1974

1957:                                             ; preds = %1935, %1928
  %1958 = load i32, ptr %34, align 4, !tbaa !5
  %1959 = call ptr @__errno_location() #13
  store i32 %1958, ptr %1959, align 4, !tbaa !5
  %1960 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1961 = load i32, ptr @test_count, align 4, !tbaa !5
  %1962 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1963 = load i32, ptr %1962, align 4, !tbaa !5
  %1964 = call ptr @s2n_strerror(i32 noundef %1963, ptr noundef @.str.4)
  %1965 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1966 = load i32, ptr %1965, align 4, !tbaa !5
  %1967 = call ptr @s2n_strerror_debug(i32 noundef %1966, ptr noundef @.str.4)
  %1968 = call ptr @__errno_location() #13
  %1969 = load i32, ptr %1968, align 4, !tbaa !5
  %1970 = call ptr @strerror(i32 noundef %1969) #12
  %1971 = call ptr @__errno_location() #13
  %1972 = load i32, ptr %1971, align 4, !tbaa !5
  %1973 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1960, ptr noundef @.str.5, i32 noundef %1961, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 74, ptr noundef %1964, ptr noundef %1967, ptr noundef %1970, i32 noundef %1972) #12
  br label %1974

1974:                                             ; preds = %1957, %1940
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %1975

1975:                                             ; preds = %1974
  br label %1976

1976:                                             ; preds = %1975
  call void @exit(i32 noundef 1) #14
  unreachable

1977:                                             ; No predecessors!
  br label %1978

1978:                                             ; preds = %1977
  br label %1979

1979:                                             ; preds = %1978, %1920
  br label %1980

1980:                                             ; preds = %1979
  br label %1981

1981:                                             ; preds = %1980
  br label %1982

1982:                                             ; preds = %1981
  %1983 = load i32, ptr @test_count, align 4, !tbaa !5
  %1984 = add nsw i32 %1983, 1
  store i32 %1984, ptr @test_count, align 4, !tbaa !5
  %1985 = load ptr, ptr %24, align 8, !tbaa !9
  %1986 = getelementptr inbounds %struct.s2n_connection, ptr %1985, i32 0, i32 31
  %1987 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1986, i32 0, i32 1
  %1988 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1987, i32 0, i32 0
  %1989 = load ptr, ptr %1988, align 8, !tbaa !15
  %1990 = load ptr, ptr %27, align 8, !tbaa !9
  %1991 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %1990, i32 0, i32 1
  %1992 = load ptr, ptr %1991, align 8, !tbaa !43
  %1993 = getelementptr inbounds ptr, ptr %1992, i64 1
  %1994 = load ptr, ptr %1993, align 8, !tbaa !9
  %1995 = icmp eq ptr %1989, %1994
  br i1 %1995, label %2049, label %1996

1996:                                             ; preds = %1982
  br label %1997

1997:                                             ; preds = %1996
  br label %1998

1998:                                             ; preds = %1997
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  %1999 = call ptr @__errno_location() #13
  %2000 = load i32, ptr %1999, align 4, !tbaa !5
  store i32 %2000, ptr %35, align 4, !tbaa !5
  %2001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2002 = call i32 @s2n_print_stacktrace(ptr noundef %2001)
  %2003 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2004 = trunc i8 %2003 to i1
  br i1 %2004, label %2005, label %2027

2005:                                             ; preds = %1998
  %2006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2007 = call i32 @fileno(ptr noundef %2006) #12
  %2008 = call i32 @isatty(i32 noundef %2007) #12
  %2009 = icmp ne i32 %2008, 0
  br i1 %2009, label %2010, label %2027

2010:                                             ; preds = %2005
  %2011 = load i32, ptr %35, align 4, !tbaa !5
  %2012 = call ptr @__errno_location() #13
  store i32 %2011, ptr %2012, align 4, !tbaa !5
  %2013 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2014 = load i32, ptr @test_count, align 4, !tbaa !5
  %2015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2016 = load i32, ptr %2015, align 4, !tbaa !5
  %2017 = call ptr @s2n_strerror(i32 noundef %2016, ptr noundef @.str.4)
  %2018 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2019 = load i32, ptr %2018, align 4, !tbaa !5
  %2020 = call ptr @s2n_strerror_debug(i32 noundef %2019, ptr noundef @.str.4)
  %2021 = call ptr @__errno_location() #13
  %2022 = load i32, ptr %2021, align 4, !tbaa !5
  %2023 = call ptr @strerror(i32 noundef %2022) #12
  %2024 = call ptr @__errno_location() #13
  %2025 = load i32, ptr %2024, align 4, !tbaa !5
  %2026 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2013, ptr noundef @.str.2, i32 noundef %2014, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 76, ptr noundef %2017, ptr noundef %2020, ptr noundef %2023, i32 noundef %2025) #12
  br label %2044

2027:                                             ; preds = %2005, %1998
  %2028 = load i32, ptr %35, align 4, !tbaa !5
  %2029 = call ptr @__errno_location() #13
  store i32 %2028, ptr %2029, 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 @.str.4)
  %2035 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2036 = load i32, ptr %2035, align 4, !tbaa !5
  %2037 = call ptr @s2n_strerror_debug(i32 noundef %2036, ptr noundef @.str.4)
  %2038 = call ptr @__errno_location() #13
  %2039 = load i32, ptr %2038, align 4, !tbaa !5
  %2040 = call ptr @strerror(i32 noundef %2039) #12
  %2041 = call ptr @__errno_location() #13
  %2042 = load i32, ptr %2041, align 4, !tbaa !5
  %2043 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2030, ptr noundef @.str.5, i32 noundef %2031, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 76, ptr noundef %2034, ptr noundef %2037, ptr noundef %2040, i32 noundef %2042) #12
  br label %2044

2044:                                             ; preds = %2027, %2010
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  br label %2045

2045:                                             ; preds = %2044
  br label %2046

2046:                                             ; preds = %2045
  call void @exit(i32 noundef 1) #14
  unreachable

2047:                                             ; No predecessors!
  br label %2048

2048:                                             ; preds = %2047
  br label %2049

2049:                                             ; preds = %2048, %1982
  br label %2050

2050:                                             ; preds = %2049
  br label %2051

2051:                                             ; preds = %2050
  br label %2052

2052:                                             ; preds = %2051
  %2053 = load i32, ptr @test_count, align 4, !tbaa !5
  %2054 = add nsw i32 %2053, 1
  store i32 %2054, ptr @test_count, align 4, !tbaa !5
  %2055 = load ptr, ptr %24, align 8, !tbaa !9
  %2056 = getelementptr inbounds %struct.s2n_connection, ptr %2055, i32 0, i32 31
  %2057 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2056, i32 0, i32 4
  %2058 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2057, i32 0, i32 0
  %2059 = load ptr, ptr %2058, align 8, !tbaa !42
  %2060 = icmp eq ptr %2059, null
  br i1 %2060, label %2114, label %2061

2061:                                             ; preds = %2052
  br label %2062

2062:                                             ; preds = %2061
  br label %2063

2063:                                             ; preds = %2062
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #12
  %2064 = call ptr @__errno_location() #13
  %2065 = load i32, ptr %2064, align 4, !tbaa !5
  store i32 %2065, ptr %36, align 4, !tbaa !5
  %2066 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2067 = call i32 @s2n_print_stacktrace(ptr noundef %2066)
  %2068 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2069 = trunc i8 %2068 to i1
  br i1 %2069, label %2070, label %2092

2070:                                             ; preds = %2063
  %2071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2072 = call i32 @fileno(ptr noundef %2071) #12
  %2073 = call i32 @isatty(i32 noundef %2072) #12
  %2074 = icmp ne i32 %2073, 0
  br i1 %2074, label %2075, label %2092

2075:                                             ; preds = %2070
  %2076 = load i32, ptr %36, align 4, !tbaa !5
  %2077 = call ptr @__errno_location() #13
  store i32 %2076, ptr %2077, align 4, !tbaa !5
  %2078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2079 = load i32, ptr @test_count, align 4, !tbaa !5
  %2080 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2081 = load i32, ptr %2080, align 4, !tbaa !5
  %2082 = call ptr @s2n_strerror(i32 noundef %2081, ptr noundef @.str.4)
  %2083 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2084 = load i32, ptr %2083, align 4, !tbaa !5
  %2085 = call ptr @s2n_strerror_debug(i32 noundef %2084, ptr noundef @.str.4)
  %2086 = call ptr @__errno_location() #13
  %2087 = load i32, ptr %2086, align 4, !tbaa !5
  %2088 = call ptr @strerror(i32 noundef %2087) #12
  %2089 = call ptr @__errno_location() #13
  %2090 = load i32, ptr %2089, align 4, !tbaa !5
  %2091 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2078, ptr noundef @.str.2, i32 noundef %2079, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 77, ptr noundef %2082, ptr noundef %2085, ptr noundef %2088, i32 noundef %2090) #12
  br label %2109

2092:                                             ; preds = %2070, %2063
  %2093 = load i32, ptr %36, align 4, !tbaa !5
  %2094 = call ptr @__errno_location() #13
  store i32 %2093, ptr %2094, align 4, !tbaa !5
  %2095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2096 = load i32, ptr @test_count, align 4, !tbaa !5
  %2097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2098 = load i32, ptr %2097, align 4, !tbaa !5
  %2099 = call ptr @s2n_strerror(i32 noundef %2098, ptr noundef @.str.4)
  %2100 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2101 = load i32, ptr %2100, align 4, !tbaa !5
  %2102 = call ptr @s2n_strerror_debug(i32 noundef %2101, ptr noundef @.str.4)
  %2103 = call ptr @__errno_location() #13
  %2104 = load i32, ptr %2103, align 4, !tbaa !5
  %2105 = call ptr @strerror(i32 noundef %2104) #12
  %2106 = call ptr @__errno_location() #13
  %2107 = load i32, ptr %2106, align 4, !tbaa !5
  %2108 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2095, ptr noundef @.str.5, i32 noundef %2096, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 77, ptr noundef %2099, ptr noundef %2102, ptr noundef %2105, i32 noundef %2107) #12
  br label %2109

2109:                                             ; preds = %2092, %2075
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #12
  br label %2110

2110:                                             ; preds = %2109
  br label %2111

2111:                                             ; preds = %2110
  call void @exit(i32 noundef 1) #14
  unreachable

2112:                                             ; No predecessors!
  br label %2113

2113:                                             ; preds = %2112
  br label %2114

2114:                                             ; preds = %2113, %2052
  br label %2115

2115:                                             ; preds = %2114
  br label %2116

2116:                                             ; preds = %2115
  br label %2117

2117:                                             ; preds = %2116
  %2118 = load i32, ptr @test_count, align 4, !tbaa !5
  %2119 = add nsw i32 %2118, 1
  store i32 %2119, ptr @test_count, align 4, !tbaa !5
  %2120 = load ptr, ptr %24, align 8, !tbaa !9
  %2121 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %2120)
  br i1 %2121, label %2175, label %2122

2122:                                             ; preds = %2117
  br label %2123

2123:                                             ; preds = %2122
  br label %2124

2124:                                             ; preds = %2123
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #12
  %2125 = call ptr @__errno_location() #13
  %2126 = load i32, ptr %2125, align 4, !tbaa !5
  store i32 %2126, ptr %37, align 4, !tbaa !5
  %2127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2128 = call i32 @s2n_print_stacktrace(ptr noundef %2127)
  %2129 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2130 = trunc i8 %2129 to i1
  br i1 %2130, label %2131, label %2153

2131:                                             ; preds = %2124
  %2132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2133 = call i32 @fileno(ptr noundef %2132) #12
  %2134 = call i32 @isatty(i32 noundef %2133) #12
  %2135 = icmp ne i32 %2134, 0
  br i1 %2135, label %2136, label %2153

2136:                                             ; preds = %2131
  %2137 = load i32, ptr %37, align 4, !tbaa !5
  %2138 = call ptr @__errno_location() #13
  store i32 %2137, ptr %2138, align 4, !tbaa !5
  %2139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2140 = load i32, ptr @test_count, align 4, !tbaa !5
  %2141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2142 = load i32, ptr %2141, align 4, !tbaa !5
  %2143 = call ptr @s2n_strerror(i32 noundef %2142, ptr noundef @.str.4)
  %2144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2145 = load i32, ptr %2144, align 4, !tbaa !5
  %2146 = call ptr @s2n_strerror_debug(i32 noundef %2145, ptr noundef @.str.4)
  %2147 = call ptr @__errno_location() #13
  %2148 = load i32, ptr %2147, align 4, !tbaa !5
  %2149 = call ptr @strerror(i32 noundef %2148) #12
  %2150 = call ptr @__errno_location() #13
  %2151 = load i32, ptr %2150, align 4, !tbaa !5
  %2152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2139, ptr noundef @.str.2, i32 noundef %2140, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 78, ptr noundef %2143, ptr noundef %2146, ptr noundef %2149, i32 noundef %2151) #12
  br label %2170

2153:                                             ; preds = %2131, %2124
  %2154 = load i32, ptr %37, align 4, !tbaa !5
  %2155 = call ptr @__errno_location() #13
  store i32 %2154, ptr %2155, align 4, !tbaa !5
  %2156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2157 = load i32, ptr @test_count, align 4, !tbaa !5
  %2158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2159 = load i32, ptr %2158, align 4, !tbaa !5
  %2160 = call ptr @s2n_strerror(i32 noundef %2159, ptr noundef @.str.4)
  %2161 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2162 = load i32, ptr %2161, align 4, !tbaa !5
  %2163 = call ptr @s2n_strerror_debug(i32 noundef %2162, ptr noundef @.str.4)
  %2164 = call ptr @__errno_location() #13
  %2165 = load i32, ptr %2164, align 4, !tbaa !5
  %2166 = call ptr @strerror(i32 noundef %2165) #12
  %2167 = call ptr @__errno_location() #13
  %2168 = load i32, ptr %2167, align 4, !tbaa !5
  %2169 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2156, ptr noundef @.str.5, i32 noundef %2157, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 78, ptr noundef %2160, ptr noundef %2163, ptr noundef %2166, i32 noundef %2168) #12
  br label %2170

2170:                                             ; preds = %2153, %2136
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  br label %2171

2171:                                             ; preds = %2170
  br label %2172

2172:                                             ; preds = %2171
  call void @exit(i32 noundef 1) #14
  unreachable

2173:                                             ; No predecessors!
  br label %2174

2174:                                             ; preds = %2173
  br label %2175

2175:                                             ; preds = %2174, %2117
  br label %2176

2176:                                             ; preds = %2175
  br label %2177

2177:                                             ; preds = %2176
  br label %2178

2178:                                             ; preds = %2177
  %2179 = load i32, ptr @test_count, align 4, !tbaa !5
  %2180 = add nsw i32 %2179, 1
  store i32 %2180, ptr @test_count, align 4, !tbaa !5
  %2181 = load ptr, ptr %24, align 8, !tbaa !9
  %2182 = call i32 @s2n_connection_free(ptr noundef %2181)
  %2183 = icmp eq i32 %2182, -1
  br i1 %2183, label %2184, label %2237

2184:                                             ; preds = %2178
  br label %2185

2185:                                             ; preds = %2184
  br label %2186

2186:                                             ; preds = %2185
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #12
  %2187 = call ptr @__errno_location() #13
  %2188 = load i32, ptr %2187, align 4, !tbaa !5
  store i32 %2188, ptr %38, align 4, !tbaa !5
  %2189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2190 = call i32 @s2n_print_stacktrace(ptr noundef %2189)
  %2191 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2192 = trunc i8 %2191 to i1
  br i1 %2192, label %2193, label %2215

2193:                                             ; preds = %2186
  %2194 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2195 = call i32 @fileno(ptr noundef %2194) #12
  %2196 = call i32 @isatty(i32 noundef %2195) #12
  %2197 = icmp ne i32 %2196, 0
  br i1 %2197, label %2198, label %2215

2198:                                             ; preds = %2193
  %2199 = load i32, ptr %38, align 4, !tbaa !5
  %2200 = call ptr @__errno_location() #13
  store i32 %2199, ptr %2200, align 4, !tbaa !5
  %2201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2202 = load i32, ptr @test_count, align 4, !tbaa !5
  %2203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2204 = load i32, ptr %2203, align 4, !tbaa !5
  %2205 = call ptr @s2n_strerror(i32 noundef %2204, ptr noundef @.str.4)
  %2206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2207 = load i32, ptr %2206, align 4, !tbaa !5
  %2208 = call ptr @s2n_strerror_debug(i32 noundef %2207, ptr noundef @.str.4)
  %2209 = call ptr @__errno_location() #13
  %2210 = load i32, ptr %2209, align 4, !tbaa !5
  %2211 = call ptr @strerror(i32 noundef %2210) #12
  %2212 = call ptr @__errno_location() #13
  %2213 = load i32, ptr %2212, align 4, !tbaa !5
  %2214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2201, ptr noundef @.str.2, i32 noundef %2202, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 80, ptr noundef %2205, ptr noundef %2208, ptr noundef %2211, i32 noundef %2213) #12
  br label %2232

2215:                                             ; preds = %2193, %2186
  %2216 = load i32, ptr %38, align 4, !tbaa !5
  %2217 = call ptr @__errno_location() #13
  store i32 %2216, ptr %2217, align 4, !tbaa !5
  %2218 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2219 = load i32, ptr @test_count, align 4, !tbaa !5
  %2220 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2221 = load i32, ptr %2220, align 4, !tbaa !5
  %2222 = call ptr @s2n_strerror(i32 noundef %2221, ptr noundef @.str.4)
  %2223 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2224 = load i32, ptr %2223, align 4, !tbaa !5
  %2225 = call ptr @s2n_strerror_debug(i32 noundef %2224, ptr noundef @.str.4)
  %2226 = call ptr @__errno_location() #13
  %2227 = load i32, ptr %2226, align 4, !tbaa !5
  %2228 = call ptr @strerror(i32 noundef %2227) #12
  %2229 = call ptr @__errno_location() #13
  %2230 = load i32, ptr %2229, align 4, !tbaa !5
  %2231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2218, ptr noundef @.str.5, i32 noundef %2219, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 80, ptr noundef %2222, ptr noundef %2225, ptr noundef %2228, i32 noundef %2230) #12
  br label %2232

2232:                                             ; preds = %2215, %2198
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  br label %2233

2233:                                             ; preds = %2232
  br label %2234

2234:                                             ; preds = %2233
  call void @exit(i32 noundef 1) #14
  unreachable

2235:                                             ; No predecessors!
  br label %2236

2236:                                             ; preds = %2235
  br label %2237

2237:                                             ; preds = %2236, %2178
  br label %2238

2238:                                             ; preds = %2237
  br label %2239

2239:                                             ; preds = %2238
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  store ptr null, ptr %39, align 8, !tbaa !9
  br label %2240

2240:                                             ; preds = %2239
  %2241 = load i32, ptr @test_count, align 4, !tbaa !5
  %2242 = add nsw i32 %2241, 1
  store i32 %2242, ptr @test_count, align 4, !tbaa !5
  %2243 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %2243, ptr %39, align 8, !tbaa !9
  %2244 = icmp eq ptr %2243, null
  br i1 %2244, label %2245, label %2298

2245:                                             ; preds = %2240
  br label %2246

2246:                                             ; preds = %2245
  br label %2247

2247:                                             ; preds = %2246
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #12
  %2248 = call ptr @__errno_location() #13
  %2249 = load i32, ptr %2248, align 4, !tbaa !5
  store i32 %2249, ptr %40, align 4, !tbaa !5
  %2250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2251 = call i32 @s2n_print_stacktrace(ptr noundef %2250)
  %2252 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2253 = trunc i8 %2252 to i1
  br i1 %2253, label %2254, label %2276

2254:                                             ; preds = %2247
  %2255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2256 = call i32 @fileno(ptr noundef %2255) #12
  %2257 = call i32 @isatty(i32 noundef %2256) #12
  %2258 = icmp ne i32 %2257, 0
  br i1 %2258, label %2259, label %2276

2259:                                             ; preds = %2254
  %2260 = load i32, ptr %40, align 4, !tbaa !5
  %2261 = call ptr @__errno_location() #13
  store i32 %2260, ptr %2261, align 4, !tbaa !5
  %2262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2263 = load i32, ptr @test_count, align 4, !tbaa !5
  %2264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2265 = load i32, ptr %2264, align 4, !tbaa !5
  %2266 = call ptr @s2n_strerror(i32 noundef %2265, ptr noundef @.str.4)
  %2267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2268 = load i32, ptr %2267, align 4, !tbaa !5
  %2269 = call ptr @s2n_strerror_debug(i32 noundef %2268, ptr noundef @.str.4)
  %2270 = call ptr @__errno_location() #13
  %2271 = load i32, ptr %2270, align 4, !tbaa !5
  %2272 = call ptr @strerror(i32 noundef %2271) #12
  %2273 = call ptr @__errno_location() #13
  %2274 = load i32, ptr %2273, align 4, !tbaa !5
  %2275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2262, ptr noundef @.str.2, i32 noundef %2263, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 87, ptr noundef %2266, ptr noundef %2269, ptr noundef %2272, i32 noundef %2274) #12
  br label %2293

2276:                                             ; preds = %2254, %2247
  %2277 = load i32, ptr %40, align 4, !tbaa !5
  %2278 = call ptr @__errno_location() #13
  store i32 %2277, ptr %2278, align 4, !tbaa !5
  %2279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2280 = load i32, ptr @test_count, align 4, !tbaa !5
  %2281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2282 = load i32, ptr %2281, align 4, !tbaa !5
  %2283 = call ptr @s2n_strerror(i32 noundef %2282, ptr noundef @.str.4)
  %2284 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2285 = load i32, ptr %2284, align 4, !tbaa !5
  %2286 = call ptr @s2n_strerror_debug(i32 noundef %2285, ptr noundef @.str.4)
  %2287 = call ptr @__errno_location() #13
  %2288 = load i32, ptr %2287, align 4, !tbaa !5
  %2289 = call ptr @strerror(i32 noundef %2288) #12
  %2290 = call ptr @__errno_location() #13
  %2291 = load i32, ptr %2290, align 4, !tbaa !5
  %2292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2279, ptr noundef @.str.5, i32 noundef %2280, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 87, ptr noundef %2283, ptr noundef %2286, ptr noundef %2289, i32 noundef %2291) #12
  br label %2293

2293:                                             ; preds = %2276, %2259
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  br label %2294

2294:                                             ; preds = %2293
  br label %2295

2295:                                             ; preds = %2294
  call void @exit(i32 noundef 1) #14
  unreachable

2296:                                             ; No predecessors!
  br label %2297

2297:                                             ; preds = %2296
  br label %2298

2298:                                             ; preds = %2297, %2240
  br label %2299

2299:                                             ; preds = %2298
  br label %2300

2300:                                             ; preds = %2299
  br label %2301

2301:                                             ; preds = %2300
  %2302 = load i32, ptr @test_count, align 4, !tbaa !5
  %2303 = add nsw i32 %2302, 1
  store i32 %2303, ptr @test_count, align 4, !tbaa !5
  %2304 = load ptr, ptr %39, align 8, !tbaa !9
  %2305 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %2304, i8 noundef zeroext 34)
  %2306 = icmp eq i32 %2305, -1
  br i1 %2306, label %2307, label %2360

2307:                                             ; preds = %2301
  br label %2308

2308:                                             ; preds = %2307
  br label %2309

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

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

2321:                                             ; preds = %2316
  %2322 = load i32, ptr %41, align 4, !tbaa !5
  %2323 = call ptr @__errno_location() #13
  store i32 %2322, ptr %2323, align 4, !tbaa !5
  %2324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2325 = load i32, ptr @test_count, align 4, !tbaa !5
  %2326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2327 = load i32, ptr %2326, align 4, !tbaa !5
  %2328 = call ptr @s2n_strerror(i32 noundef %2327, ptr noundef @.str.4)
  %2329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2330 = load i32, ptr %2329, align 4, !tbaa !5
  %2331 = call ptr @s2n_strerror_debug(i32 noundef %2330, ptr noundef @.str.4)
  %2332 = call ptr @__errno_location() #13
  %2333 = load i32, ptr %2332, align 4, !tbaa !5
  %2334 = call ptr @strerror(i32 noundef %2333) #12
  %2335 = call ptr @__errno_location() #13
  %2336 = load i32, ptr %2335, align 4, !tbaa !5
  %2337 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2324, ptr noundef @.str.2, i32 noundef %2325, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 88, ptr noundef %2328, ptr noundef %2331, ptr noundef %2334, i32 noundef %2336) #12
  br label %2355

2338:                                             ; preds = %2316, %2309
  %2339 = load i32, ptr %41, align 4, !tbaa !5
  %2340 = call ptr @__errno_location() #13
  store i32 %2339, ptr %2340, align 4, !tbaa !5
  %2341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2342 = load i32, ptr @test_count, align 4, !tbaa !5
  %2343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2344 = load i32, ptr %2343, align 4, !tbaa !5
  %2345 = call ptr @s2n_strerror(i32 noundef %2344, ptr noundef @.str.4)
  %2346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2347 = load i32, ptr %2346, align 4, !tbaa !5
  %2348 = call ptr @s2n_strerror_debug(i32 noundef %2347, ptr noundef @.str.4)
  %2349 = call ptr @__errno_location() #13
  %2350 = load i32, ptr %2349, align 4, !tbaa !5
  %2351 = call ptr @strerror(i32 noundef %2350) #12
  %2352 = call ptr @__errno_location() #13
  %2353 = load i32, ptr %2352, align 4, !tbaa !5
  %2354 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2341, ptr noundef @.str.5, i32 noundef %2342, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 88, ptr noundef %2345, ptr noundef %2348, ptr noundef %2351, i32 noundef %2353) #12
  br label %2355

2355:                                             ; preds = %2338, %2321
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  br label %2356

2356:                                             ; preds = %2355
  br label %2357

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

2358:                                             ; No predecessors!
  br label %2359

2359:                                             ; preds = %2358
  br label %2360

2360:                                             ; preds = %2359, %2301
  br label %2361

2361:                                             ; preds = %2360
  br label %2362

2362:                                             ; preds = %2361
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #12
  store ptr null, ptr %42, align 8, !tbaa !9
  br label %2363

2363:                                             ; preds = %2362
  %2364 = load i32, ptr @test_count, align 4, !tbaa !5
  %2365 = add nsw i32 %2364, 1
  store i32 %2365, ptr @test_count, align 4, !tbaa !5
  %2366 = load ptr, ptr %39, align 8, !tbaa !9
  %2367 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %2366, ptr noundef %42)
  %2368 = icmp eq i32 %2367, -1
  br i1 %2368, label %2369, label %2422

2369:                                             ; preds = %2363
  br label %2370

2370:                                             ; preds = %2369
  br label %2371

2371:                                             ; preds = %2370
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #12
  %2372 = call ptr @__errno_location() #13
  %2373 = load i32, ptr %2372, align 4, !tbaa !5
  store i32 %2373, ptr %43, align 4, !tbaa !5
  %2374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2375 = call i32 @s2n_print_stacktrace(ptr noundef %2374)
  %2376 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2377 = trunc i8 %2376 to i1
  br i1 %2377, label %2378, label %2400

2378:                                             ; preds = %2371
  %2379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2380 = call i32 @fileno(ptr noundef %2379) #12
  %2381 = call i32 @isatty(i32 noundef %2380) #12
  %2382 = icmp ne i32 %2381, 0
  br i1 %2382, label %2383, label %2400

2383:                                             ; preds = %2378
  %2384 = load i32, ptr %43, align 4, !tbaa !5
  %2385 = call ptr @__errno_location() #13
  store i32 %2384, ptr %2385, align 4, !tbaa !5
  %2386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2387 = load i32, ptr @test_count, align 4, !tbaa !5
  %2388 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2389 = load i32, ptr %2388, align 4, !tbaa !5
  %2390 = call ptr @s2n_strerror(i32 noundef %2389, ptr noundef @.str.4)
  %2391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2392 = load i32, ptr %2391, align 4, !tbaa !5
  %2393 = call ptr @s2n_strerror_debug(i32 noundef %2392, ptr noundef @.str.4)
  %2394 = call ptr @__errno_location() #13
  %2395 = load i32, ptr %2394, align 4, !tbaa !5
  %2396 = call ptr @strerror(i32 noundef %2395) #12
  %2397 = call ptr @__errno_location() #13
  %2398 = load i32, ptr %2397, align 4, !tbaa !5
  %2399 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2386, ptr noundef @.str.2, i32 noundef %2387, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 91, ptr noundef %2390, ptr noundef %2393, ptr noundef %2396, i32 noundef %2398) #12
  br label %2417

2400:                                             ; preds = %2378, %2371
  %2401 = load i32, ptr %43, align 4, !tbaa !5
  %2402 = call ptr @__errno_location() #13
  store i32 %2401, ptr %2402, align 4, !tbaa !5
  %2403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2404 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2406, ptr noundef @.str.4)
  %2408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2409 = load i32, ptr %2408, align 4, !tbaa !5
  %2410 = call ptr @s2n_strerror_debug(i32 noundef %2409, ptr noundef @.str.4)
  %2411 = call ptr @__errno_location() #13
  %2412 = load i32, ptr %2411, align 4, !tbaa !5
  %2413 = call ptr @strerror(i32 noundef %2412) #12
  %2414 = call ptr @__errno_location() #13
  %2415 = load i32, ptr %2414, align 4, !tbaa !5
  %2416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2403, ptr noundef @.str.5, i32 noundef %2404, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 91, ptr noundef %2407, ptr noundef %2410, ptr noundef %2413, i32 noundef %2415) #12
  br label %2417

2417:                                             ; preds = %2400, %2383
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  br label %2418

2418:                                             ; preds = %2417
  br label %2419

2419:                                             ; preds = %2418
  call void @exit(i32 noundef 1) #14
  unreachable

2420:                                             ; No predecessors!
  br label %2421

2421:                                             ; preds = %2420
  br label %2422

2422:                                             ; preds = %2421, %2363
  br label %2423

2423:                                             ; preds = %2422
  br label %2424

2424:                                             ; preds = %2423
  br label %2425

2425:                                             ; preds = %2424
  %2426 = load i32, ptr @test_count, align 4, !tbaa !5
  %2427 = add nsw i32 %2426, 1
  store i32 %2427, ptr @test_count, align 4, !tbaa !5
  %2428 = load ptr, ptr %42, align 8, !tbaa !9
  %2429 = icmp eq ptr %2428, null
  br i1 %2429, label %2430, label %2483

2430:                                             ; preds = %2425
  br label %2431

2431:                                             ; preds = %2430
  br label %2432

2432:                                             ; preds = %2431
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #12
  %2433 = call ptr @__errno_location() #13
  %2434 = load i32, ptr %2433, align 4, !tbaa !5
  store i32 %2434, ptr %44, align 4, !tbaa !5
  %2435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2436 = call i32 @s2n_print_stacktrace(ptr noundef %2435)
  %2437 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2438 = trunc i8 %2437 to i1
  br i1 %2438, label %2439, label %2461

2439:                                             ; preds = %2432
  %2440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2441 = call i32 @fileno(ptr noundef %2440) #12
  %2442 = call i32 @isatty(i32 noundef %2441) #12
  %2443 = icmp ne i32 %2442, 0
  br i1 %2443, label %2444, label %2461

2444:                                             ; preds = %2439
  %2445 = load i32, ptr %44, align 4, !tbaa !5
  %2446 = call ptr @__errno_location() #13
  store i32 %2445, ptr %2446, align 4, !tbaa !5
  %2447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2448 = load i32, ptr @test_count, align 4, !tbaa !5
  %2449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2450 = load i32, ptr %2449, align 4, !tbaa !5
  %2451 = call ptr @s2n_strerror(i32 noundef %2450, ptr noundef @.str.4)
  %2452 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2453 = load i32, ptr %2452, align 4, !tbaa !5
  %2454 = call ptr @s2n_strerror_debug(i32 noundef %2453, ptr noundef @.str.4)
  %2455 = call ptr @__errno_location() #13
  %2456 = load i32, ptr %2455, align 4, !tbaa !5
  %2457 = call ptr @strerror(i32 noundef %2456) #12
  %2458 = call ptr @__errno_location() #13
  %2459 = load i32, ptr %2458, align 4, !tbaa !5
  %2460 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2447, ptr noundef @.str.2, i32 noundef %2448, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 92, ptr noundef %2451, ptr noundef %2454, ptr noundef %2457, i32 noundef %2459) #12
  br label %2478

2461:                                             ; preds = %2439, %2432
  %2462 = load i32, ptr %44, align 4, !tbaa !5
  %2463 = call ptr @__errno_location() #13
  store i32 %2462, ptr %2463, align 4, !tbaa !5
  %2464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2465 = load i32, ptr @test_count, align 4, !tbaa !5
  %2466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2467 = load i32, ptr %2466, align 4, !tbaa !5
  %2468 = call ptr @s2n_strerror(i32 noundef %2467, ptr noundef @.str.4)
  %2469 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2470 = load i32, ptr %2469, align 4, !tbaa !5
  %2471 = call ptr @s2n_strerror_debug(i32 noundef %2470, ptr noundef @.str.4)
  %2472 = call ptr @__errno_location() #13
  %2473 = load i32, ptr %2472, align 4, !tbaa !5
  %2474 = call ptr @strerror(i32 noundef %2473) #12
  %2475 = call ptr @__errno_location() #13
  %2476 = load i32, ptr %2475, align 4, !tbaa !5
  %2477 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2464, ptr noundef @.str.5, i32 noundef %2465, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 92, ptr noundef %2468, ptr noundef %2471, ptr noundef %2474, i32 noundef %2476) #12
  br label %2478

2478:                                             ; preds = %2461, %2444
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %2479

2479:                                             ; preds = %2478
  br label %2480

2480:                                             ; preds = %2479
  call void @exit(i32 noundef 1) #14
  unreachable

2481:                                             ; No predecessors!
  br label %2482

2482:                                             ; preds = %2481
  br label %2483

2483:                                             ; preds = %2482, %2425
  br label %2484

2484:                                             ; preds = %2483
  br label %2485

2485:                                             ; preds = %2484
  br label %2486

2486:                                             ; preds = %2485
  %2487 = load i32, ptr @test_count, align 4, !tbaa !5
  %2488 = add nsw i32 %2487, 1
  store i32 %2488, ptr @test_count, align 4, !tbaa !5
  %2489 = load ptr, ptr %39, align 8, !tbaa !9
  %2490 = getelementptr inbounds %struct.s2n_connection, ptr %2489, i32 0, i32 31
  %2491 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2490, i32 0, i32 4
  %2492 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2491, i32 0, i32 0
  %2493 = load ptr, ptr %2492, align 8, !tbaa !42
  %2494 = icmp eq ptr %2493, null
  br i1 %2494, label %2548, label %2495

2495:                                             ; preds = %2486
  br label %2496

2496:                                             ; preds = %2495
  br label %2497

2497:                                             ; preds = %2496
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #12
  %2498 = call ptr @__errno_location() #13
  %2499 = load i32, ptr %2498, align 4, !tbaa !5
  store i32 %2499, ptr %45, align 4, !tbaa !5
  %2500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2501 = call i32 @s2n_print_stacktrace(ptr noundef %2500)
  %2502 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2503 = trunc i8 %2502 to i1
  br i1 %2503, label %2504, label %2526

2504:                                             ; preds = %2497
  %2505 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2506 = call i32 @fileno(ptr noundef %2505) #12
  %2507 = call i32 @isatty(i32 noundef %2506) #12
  %2508 = icmp ne i32 %2507, 0
  br i1 %2508, label %2509, label %2526

2509:                                             ; preds = %2504
  %2510 = load i32, ptr %45, align 4, !tbaa !5
  %2511 = call ptr @__errno_location() #13
  store i32 %2510, ptr %2511, align 4, !tbaa !5
  %2512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2513 = load i32, ptr @test_count, align 4, !tbaa !5
  %2514 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2515 = load i32, ptr %2514, align 4, !tbaa !5
  %2516 = call ptr @s2n_strerror(i32 noundef %2515, ptr noundef @.str.4)
  %2517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2518 = load i32, ptr %2517, align 4, !tbaa !5
  %2519 = call ptr @s2n_strerror_debug(i32 noundef %2518, ptr noundef @.str.4)
  %2520 = call ptr @__errno_location() #13
  %2521 = load i32, ptr %2520, align 4, !tbaa !5
  %2522 = call ptr @strerror(i32 noundef %2521) #12
  %2523 = call ptr @__errno_location() #13
  %2524 = load i32, ptr %2523, align 4, !tbaa !5
  %2525 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2512, ptr noundef @.str.2, i32 noundef %2513, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 95, ptr noundef %2516, ptr noundef %2519, ptr noundef %2522, i32 noundef %2524) #12
  br label %2543

2526:                                             ; preds = %2504, %2497
  %2527 = load i32, ptr %45, align 4, !tbaa !5
  %2528 = call ptr @__errno_location() #13
  store i32 %2527, ptr %2528, align 4, !tbaa !5
  %2529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2530 = load i32, ptr @test_count, align 4, !tbaa !5
  %2531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2532 = load i32, ptr %2531, align 4, !tbaa !5
  %2533 = call ptr @s2n_strerror(i32 noundef %2532, ptr noundef @.str.4)
  %2534 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2535 = load i32, ptr %2534, align 4, !tbaa !5
  %2536 = call ptr @s2n_strerror_debug(i32 noundef %2535, ptr noundef @.str.4)
  %2537 = call ptr @__errno_location() #13
  %2538 = load i32, ptr %2537, align 4, !tbaa !5
  %2539 = call ptr @strerror(i32 noundef %2538) #12
  %2540 = call ptr @__errno_location() #13
  %2541 = load i32, ptr %2540, align 4, !tbaa !5
  %2542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2529, ptr noundef @.str.5, i32 noundef %2530, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 95, ptr noundef %2533, ptr noundef %2536, ptr noundef %2539, i32 noundef %2541) #12
  br label %2543

2543:                                             ; preds = %2526, %2509
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #12
  br label %2544

2544:                                             ; preds = %2543
  br label %2545

2545:                                             ; preds = %2544
  call void @exit(i32 noundef 1) #14
  unreachable

2546:                                             ; No predecessors!
  br label %2547

2547:                                             ; preds = %2546
  br label %2548

2548:                                             ; preds = %2547, %2486
  br label %2549

2549:                                             ; preds = %2548
  br label %2550

2550:                                             ; preds = %2549
  %2551 = load ptr, ptr %42, align 8, !tbaa !9
  %2552 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2551, i32 0, i32 1
  %2553 = load ptr, ptr %2552, align 8, !tbaa !43
  %2554 = getelementptr inbounds ptr, ptr %2553, i64 0
  %2555 = load ptr, ptr %2554, align 8, !tbaa !9
  %2556 = load ptr, ptr %39, align 8, !tbaa !9
  %2557 = getelementptr inbounds %struct.s2n_connection, ptr %2556, i32 0, i32 31
  %2558 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2557, i32 0, i32 1
  %2559 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2558, i32 0, i32 0
  store ptr %2555, ptr %2559, align 8, !tbaa !15
  %2560 = load ptr, ptr %42, align 8, !tbaa !9
  %2561 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2560, i32 0, i32 1
  %2562 = load ptr, ptr %2561, align 8, !tbaa !43
  %2563 = getelementptr inbounds ptr, ptr %2562, i64 0
  %2564 = load ptr, ptr %2563, align 8, !tbaa !9
  %2565 = load ptr, ptr %39, align 8, !tbaa !9
  %2566 = getelementptr inbounds %struct.s2n_connection, ptr %2565, i32 0, i32 31
  %2567 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2566, i32 0, i32 2
  %2568 = getelementptr inbounds [4 x ptr], ptr %2567, i64 0, i64 0
  store ptr %2564, ptr %2568, align 8, !tbaa !9
  %2569 = load ptr, ptr %42, align 8, !tbaa !9
  %2570 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2569, i32 0, i32 1
  %2571 = load ptr, ptr %2570, align 8, !tbaa !43
  %2572 = getelementptr inbounds ptr, ptr %2571, i64 1
  %2573 = load ptr, ptr %2572, align 8, !tbaa !9
  %2574 = load ptr, ptr %39, align 8, !tbaa !9
  %2575 = getelementptr inbounds %struct.s2n_connection, ptr %2574, i32 0, i32 31
  %2576 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2575, i32 0, i32 2
  %2577 = getelementptr inbounds [4 x ptr], ptr %2576, i64 0, i64 1
  store ptr %2573, ptr %2577, align 8, !tbaa !9
  br label %2578

2578:                                             ; preds = %2550
  %2579 = load i32, ptr @test_count, align 4, !tbaa !5
  %2580 = add nsw i32 %2579, 1
  store i32 %2580, ptr @test_count, align 4, !tbaa !5
  %2581 = load ptr, ptr %39, align 8, !tbaa !9
  %2582 = getelementptr inbounds %struct.s2n_connection, ptr %2581, i32 0, i32 31
  %2583 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2582, i32 0, i32 3
  %2584 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2583, i32 0, i32 1
  %2585 = load ptr, ptr %2584, align 8, !tbaa !45
  %2586 = icmp eq ptr %2585, null
  br i1 %2586, label %2640, label %2587

2587:                                             ; preds = %2578
  br label %2588

2588:                                             ; preds = %2587
  br label %2589

2589:                                             ; preds = %2588
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #12
  %2590 = call ptr @__errno_location() #13
  %2591 = load i32, ptr %2590, align 4, !tbaa !5
  store i32 %2591, ptr %46, align 4, !tbaa !5
  %2592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2593 = call i32 @s2n_print_stacktrace(ptr noundef %2592)
  %2594 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2595 = trunc i8 %2594 to i1
  br i1 %2595, label %2596, label %2618

2596:                                             ; preds = %2589
  %2597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2598 = call i32 @fileno(ptr noundef %2597) #12
  %2599 = call i32 @isatty(i32 noundef %2598) #12
  %2600 = icmp ne i32 %2599, 0
  br i1 %2600, label %2601, label %2618

2601:                                             ; preds = %2596
  %2602 = load i32, ptr %46, align 4, !tbaa !5
  %2603 = call ptr @__errno_location() #13
  store i32 %2602, ptr %2603, align 4, !tbaa !5
  %2604 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2605 = load i32, ptr @test_count, align 4, !tbaa !5
  %2606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2607 = load i32, ptr %2606, align 4, !tbaa !5
  %2608 = call ptr @s2n_strerror(i32 noundef %2607, ptr noundef @.str.4)
  %2609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2610 = load i32, ptr %2609, align 4, !tbaa !5
  %2611 = call ptr @s2n_strerror_debug(i32 noundef %2610, ptr noundef @.str.4)
  %2612 = call ptr @__errno_location() #13
  %2613 = load i32, ptr %2612, align 4, !tbaa !5
  %2614 = call ptr @strerror(i32 noundef %2613) #12
  %2615 = call ptr @__errno_location() #13
  %2616 = load i32, ptr %2615, align 4, !tbaa !5
  %2617 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2604, ptr noundef @.str.2, i32 noundef %2605, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 100, ptr noundef %2608, ptr noundef %2611, ptr noundef %2614, i32 noundef %2616) #12
  br label %2635

2618:                                             ; preds = %2596, %2589
  %2619 = load i32, ptr %46, align 4, !tbaa !5
  %2620 = call ptr @__errno_location() #13
  store i32 %2619, ptr %2620, align 4, !tbaa !5
  %2621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2622 = load i32, ptr @test_count, align 4, !tbaa !5
  %2623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2624 = load i32, ptr %2623, align 4, !tbaa !5
  %2625 = call ptr @s2n_strerror(i32 noundef %2624, ptr noundef @.str.4)
  %2626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2627 = load i32, ptr %2626, align 4, !tbaa !5
  %2628 = call ptr @s2n_strerror_debug(i32 noundef %2627, ptr noundef @.str.4)
  %2629 = call ptr @__errno_location() #13
  %2630 = load i32, ptr %2629, align 4, !tbaa !5
  %2631 = call ptr @strerror(i32 noundef %2630) #12
  %2632 = call ptr @__errno_location() #13
  %2633 = load i32, ptr %2632, align 4, !tbaa !5
  %2634 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2621, ptr noundef @.str.5, i32 noundef %2622, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 100, ptr noundef %2625, ptr noundef %2628, ptr noundef %2631, i32 noundef %2633) #12
  br label %2635

2635:                                             ; preds = %2618, %2601
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  br label %2636

2636:                                             ; preds = %2635
  br label %2637

2637:                                             ; preds = %2636
  call void @exit(i32 noundef 1) #14
  unreachable

2638:                                             ; No predecessors!
  br label %2639

2639:                                             ; preds = %2638
  br label %2640

2640:                                             ; preds = %2639, %2578
  br label %2641

2641:                                             ; preds = %2640
  br label %2642

2642:                                             ; preds = %2641
  br label %2643

2643:                                             ; preds = %2642
  %2644 = load i32, ptr @test_count, align 4, !tbaa !5
  %2645 = add nsw i32 %2644, 1
  store i32 %2645, ptr @test_count, align 4, !tbaa !5
  %2646 = load ptr, ptr %39, align 8, !tbaa !9
  %2647 = getelementptr inbounds %struct.s2n_connection, ptr %2646, i32 0, i32 31
  %2648 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2647, i32 0, i32 3
  %2649 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2648, i32 0, i32 0
  %2650 = load ptr, ptr %2649, align 8, !tbaa !46
  %2651 = icmp eq ptr %2650, null
  br i1 %2651, label %2705, label %2652

2652:                                             ; preds = %2643
  br label %2653

2653:                                             ; preds = %2652
  br label %2654

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

2661:                                             ; preds = %2654
  %2662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2663 = call i32 @fileno(ptr noundef %2662) #12
  %2664 = call i32 @isatty(i32 noundef %2663) #12
  %2665 = icmp ne i32 %2664, 0
  br i1 %2665, label %2666, label %2683

2666:                                             ; preds = %2661
  %2667 = load i32, ptr %47, align 4, !tbaa !5
  %2668 = call ptr @__errno_location() #13
  store i32 %2667, ptr %2668, align 4, !tbaa !5
  %2669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2670 = load i32, ptr @test_count, align 4, !tbaa !5
  %2671 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2672 = load i32, ptr %2671, align 4, !tbaa !5
  %2673 = call ptr @s2n_strerror(i32 noundef %2672, ptr noundef @.str.4)
  %2674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2675 = load i32, ptr %2674, align 4, !tbaa !5
  %2676 = call ptr @s2n_strerror_debug(i32 noundef %2675, ptr noundef @.str.4)
  %2677 = call ptr @__errno_location() #13
  %2678 = load i32, ptr %2677, align 4, !tbaa !5
  %2679 = call ptr @strerror(i32 noundef %2678) #12
  %2680 = call ptr @__errno_location() #13
  %2681 = load i32, ptr %2680, align 4, !tbaa !5
  %2682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2669, ptr noundef @.str.2, i32 noundef %2670, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 101, ptr noundef %2673, ptr noundef %2676, ptr noundef %2679, i32 noundef %2681) #12
  br label %2700

2683:                                             ; preds = %2661, %2654
  %2684 = load i32, ptr %47, align 4, !tbaa !5
  %2685 = call ptr @__errno_location() #13
  store i32 %2684, ptr %2685, align 4, !tbaa !5
  %2686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2687 = load i32, ptr @test_count, align 4, !tbaa !5
  %2688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2689 = load i32, ptr %2688, align 4, !tbaa !5
  %2690 = call ptr @s2n_strerror(i32 noundef %2689, ptr noundef @.str.4)
  %2691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2692 = load i32, ptr %2691, align 4, !tbaa !5
  %2693 = call ptr @s2n_strerror_debug(i32 noundef %2692, ptr noundef @.str.4)
  %2694 = call ptr @__errno_location() #13
  %2695 = load i32, ptr %2694, align 4, !tbaa !5
  %2696 = call ptr @strerror(i32 noundef %2695) #12
  %2697 = call ptr @__errno_location() #13
  %2698 = load i32, ptr %2697, align 4, !tbaa !5
  %2699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2686, ptr noundef @.str.5, i32 noundef %2687, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 101, ptr noundef %2690, ptr noundef %2693, ptr noundef %2696, i32 noundef %2698) #12
  br label %2700

2700:                                             ; preds = %2683, %2666
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  br label %2701

2701:                                             ; preds = %2700
  br label %2702

2702:                                             ; preds = %2701
  call void @exit(i32 noundef 1) #14
  unreachable

2703:                                             ; No predecessors!
  br label %2704

2704:                                             ; preds = %2703
  br label %2705

2705:                                             ; preds = %2704, %2643
  br label %2706

2706:                                             ; preds = %2705
  br label %2707

2707:                                             ; preds = %2706
  %2708 = load ptr, ptr %42, align 8, !tbaa !9
  %2709 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2708, i32 0, i32 1
  %2710 = load ptr, ptr %2709, align 8, !tbaa !43
  %2711 = getelementptr inbounds ptr, ptr %2710, i64 1
  %2712 = load ptr, ptr %2711, align 8, !tbaa !9
  %2713 = load ptr, ptr %39, align 8, !tbaa !9
  %2714 = getelementptr inbounds %struct.s2n_connection, ptr %2713, i32 0, i32 31
  %2715 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2714, i32 0, i32 3
  %2716 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2715, i32 0, i32 0
  store ptr %2712, ptr %2716, align 8, !tbaa !46
  br label %2717

2717:                                             ; preds = %2707
  %2718 = load i32, ptr @test_count, align 4, !tbaa !5
  %2719 = add nsw i32 %2718, 1
  store i32 %2719, ptr @test_count, align 4, !tbaa !5
  %2720 = load ptr, ptr %39, align 8, !tbaa !9
  %2721 = getelementptr inbounds %struct.s2n_connection, ptr %2720, i32 0, i32 31
  %2722 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2721, i32 0, i32 3
  %2723 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef %2722)
  %2724 = icmp eq i32 %2723, -1
  br i1 %2724, label %2725, label %2778

2725:                                             ; preds = %2717
  br label %2726

2726:                                             ; preds = %2725
  br label %2727

2727:                                             ; preds = %2726
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  %2728 = call ptr @__errno_location() #13
  %2729 = load i32, ptr %2728, align 4, !tbaa !5
  store i32 %2729, ptr %48, align 4, !tbaa !5
  %2730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2731 = call i32 @s2n_print_stacktrace(ptr noundef %2730)
  %2732 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2733 = trunc i8 %2732 to i1
  br i1 %2733, label %2734, label %2756

2734:                                             ; preds = %2727
  %2735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2736 = call i32 @fileno(ptr noundef %2735) #12
  %2737 = call i32 @isatty(i32 noundef %2736) #12
  %2738 = icmp ne i32 %2737, 0
  br i1 %2738, label %2739, label %2756

2739:                                             ; preds = %2734
  %2740 = load i32, ptr %48, align 4, !tbaa !5
  %2741 = call ptr @__errno_location() #13
  store i32 %2740, ptr %2741, align 4, !tbaa !5
  %2742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2743 = load i32, ptr @test_count, align 4, !tbaa !5
  %2744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2745 = load i32, ptr %2744, align 4, !tbaa !5
  %2746 = call ptr @s2n_strerror(i32 noundef %2745, ptr noundef @.str.4)
  %2747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2748 = load i32, ptr %2747, align 4, !tbaa !5
  %2749 = call ptr @s2n_strerror_debug(i32 noundef %2748, ptr noundef @.str.4)
  %2750 = call ptr @__errno_location() #13
  %2751 = load i32, ptr %2750, align 4, !tbaa !5
  %2752 = call ptr @strerror(i32 noundef %2751) #12
  %2753 = call ptr @__errno_location() #13
  %2754 = load i32, ptr %2753, align 4, !tbaa !5
  %2755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2742, ptr noundef @.str.2, i32 noundef %2743, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 103, ptr noundef %2746, ptr noundef %2749, ptr noundef %2752, i32 noundef %2754) #12
  br label %2773

2756:                                             ; preds = %2734, %2727
  %2757 = load i32, ptr %48, align 4, !tbaa !5
  %2758 = call ptr @__errno_location() #13
  store i32 %2757, ptr %2758, align 4, !tbaa !5
  %2759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2760 = load i32, ptr @test_count, align 4, !tbaa !5
  %2761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2762 = load i32, ptr %2761, align 4, !tbaa !5
  %2763 = call ptr @s2n_strerror(i32 noundef %2762, ptr noundef @.str.4)
  %2764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2765 = load i32, ptr %2764, align 4, !tbaa !5
  %2766 = call ptr @s2n_strerror_debug(i32 noundef %2765, ptr noundef @.str.4)
  %2767 = call ptr @__errno_location() #13
  %2768 = load i32, ptr %2767, align 4, !tbaa !5
  %2769 = call ptr @strerror(i32 noundef %2768) #12
  %2770 = call ptr @__errno_location() #13
  %2771 = load i32, ptr %2770, align 4, !tbaa !5
  %2772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2759, ptr noundef @.str.5, i32 noundef %2760, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 103, ptr noundef %2763, ptr noundef %2766, ptr noundef %2769, i32 noundef %2771) #12
  br label %2773

2773:                                             ; preds = %2756, %2739
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %2774

2774:                                             ; preds = %2773
  br label %2775

2775:                                             ; preds = %2774
  call void @exit(i32 noundef 1) #14
  unreachable

2776:                                             ; No predecessors!
  br label %2777

2777:                                             ; preds = %2776
  br label %2778

2778:                                             ; preds = %2777, %2717
  br label %2779

2779:                                             ; preds = %2778
  br label %2780

2780:                                             ; preds = %2779
  br label %2781

2781:                                             ; preds = %2780
  %2782 = load i32, ptr @test_count, align 4, !tbaa !5
  %2783 = add nsw i32 %2782, 1
  store i32 %2783, ptr @test_count, align 4, !tbaa !5
  %2784 = load ptr, ptr %39, align 8, !tbaa !9
  %2785 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %2784)
  %2786 = icmp eq i32 %2785, -1
  br i1 %2786, label %2787, label %2840

2787:                                             ; preds = %2781
  br label %2788

2788:                                             ; preds = %2787
  br label %2789

2789:                                             ; preds = %2788
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #12
  %2790 = call ptr @__errno_location() #13
  %2791 = load i32, ptr %2790, align 4, !tbaa !5
  store i32 %2791, ptr %49, align 4, !tbaa !5
  %2792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2793 = call i32 @s2n_print_stacktrace(ptr noundef %2792)
  %2794 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2795 = trunc i8 %2794 to i1
  br i1 %2795, label %2796, label %2818

2796:                                             ; preds = %2789
  %2797 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2798 = call i32 @fileno(ptr noundef %2797) #12
  %2799 = call i32 @isatty(i32 noundef %2798) #12
  %2800 = icmp ne i32 %2799, 0
  br i1 %2800, label %2801, label %2818

2801:                                             ; preds = %2796
  %2802 = load i32, ptr %49, align 4, !tbaa !5
  %2803 = call ptr @__errno_location() #13
  store i32 %2802, ptr %2803, align 4, !tbaa !5
  %2804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2805 = load i32, ptr @test_count, align 4, !tbaa !5
  %2806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2807 = load i32, ptr %2806, align 4, !tbaa !5
  %2808 = call ptr @s2n_strerror(i32 noundef %2807, ptr noundef @.str.4)
  %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_debug(i32 noundef %2810, ptr noundef @.str.4)
  %2812 = call ptr @__errno_location() #13
  %2813 = load i32, ptr %2812, align 4, !tbaa !5
  %2814 = call ptr @strerror(i32 noundef %2813) #12
  %2815 = call ptr @__errno_location() #13
  %2816 = load i32, ptr %2815, align 4, !tbaa !5
  %2817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2804, ptr noundef @.str.2, i32 noundef %2805, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 105, ptr noundef %2808, ptr noundef %2811, ptr noundef %2814, i32 noundef %2816) #12
  br label %2835

2818:                                             ; preds = %2796, %2789
  %2819 = load i32, ptr %49, align 4, !tbaa !5
  %2820 = call ptr @__errno_location() #13
  store i32 %2819, ptr %2820, align 4, !tbaa !5
  %2821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2822 = load i32, ptr @test_count, align 4, !tbaa !5
  %2823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2824 = load i32, ptr %2823, align 4, !tbaa !5
  %2825 = call ptr @s2n_strerror(i32 noundef %2824, ptr noundef @.str.4)
  %2826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2827 = load i32, ptr %2826, align 4, !tbaa !5
  %2828 = call ptr @s2n_strerror_debug(i32 noundef %2827, ptr noundef @.str.4)
  %2829 = call ptr @__errno_location() #13
  %2830 = load i32, ptr %2829, align 4, !tbaa !5
  %2831 = call ptr @strerror(i32 noundef %2830) #12
  %2832 = call ptr @__errno_location() #13
  %2833 = load i32, ptr %2832, align 4, !tbaa !5
  %2834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2821, ptr noundef @.str.5, i32 noundef %2822, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 105, ptr noundef %2825, ptr noundef %2828, ptr noundef %2831, i32 noundef %2833) #12
  br label %2835

2835:                                             ; preds = %2818, %2801
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  br label %2836

2836:                                             ; preds = %2835
  br label %2837

2837:                                             ; preds = %2836
  call void @exit(i32 noundef 1) #14
  unreachable

2838:                                             ; No predecessors!
  br label %2839

2839:                                             ; preds = %2838
  br label %2840

2840:                                             ; preds = %2839, %2781
  br label %2841

2841:                                             ; preds = %2840
  br label %2842

2842:                                             ; preds = %2841
  br label %2843

2843:                                             ; preds = %2842
  %2844 = load i32, ptr @test_count, align 4, !tbaa !5
  %2845 = add nsw i32 %2844, 1
  store i32 %2845, ptr @test_count, align 4, !tbaa !5
  %2846 = load ptr, ptr %39, align 8, !tbaa !9
  %2847 = getelementptr inbounds %struct.s2n_connection, ptr %2846, i32 0, i32 31
  %2848 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2847, i32 0, i32 1
  %2849 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2848, i32 0, i32 0
  %2850 = load ptr, ptr %2849, align 8, !tbaa !15
  %2851 = load ptr, ptr %42, align 8, !tbaa !9
  %2852 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2851, i32 0, i32 1
  %2853 = load ptr, ptr %2852, align 8, !tbaa !43
  %2854 = getelementptr inbounds ptr, ptr %2853, i64 1
  %2855 = load ptr, ptr %2854, align 8, !tbaa !9
  %2856 = icmp eq ptr %2850, %2855
  br i1 %2856, label %2910, label %2857

2857:                                             ; preds = %2843
  br label %2858

2858:                                             ; preds = %2857
  br label %2859

2859:                                             ; preds = %2858
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #12
  %2860 = call ptr @__errno_location() #13
  %2861 = load i32, ptr %2860, align 4, !tbaa !5
  store i32 %2861, ptr %50, align 4, !tbaa !5
  %2862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2863 = call i32 @s2n_print_stacktrace(ptr noundef %2862)
  %2864 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2865 = trunc i8 %2864 to i1
  br i1 %2865, label %2866, label %2888

2866:                                             ; preds = %2859
  %2867 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2868 = call i32 @fileno(ptr noundef %2867) #12
  %2869 = call i32 @isatty(i32 noundef %2868) #12
  %2870 = icmp ne i32 %2869, 0
  br i1 %2870, label %2871, label %2888

2871:                                             ; preds = %2866
  %2872 = load i32, ptr %50, align 4, !tbaa !5
  %2873 = call ptr @__errno_location() #13
  store i32 %2872, ptr %2873, align 4, !tbaa !5
  %2874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2875 = load i32, ptr @test_count, align 4, !tbaa !5
  %2876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2877 = load i32, ptr %2876, align 4, !tbaa !5
  %2878 = call ptr @s2n_strerror(i32 noundef %2877, ptr noundef @.str.4)
  %2879 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2880 = load i32, ptr %2879, align 4, !tbaa !5
  %2881 = call ptr @s2n_strerror_debug(i32 noundef %2880, ptr noundef @.str.4)
  %2882 = call ptr @__errno_location() #13
  %2883 = load i32, ptr %2882, align 4, !tbaa !5
  %2884 = call ptr @strerror(i32 noundef %2883) #12
  %2885 = call ptr @__errno_location() #13
  %2886 = load i32, ptr %2885, align 4, !tbaa !5
  %2887 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2874, ptr noundef @.str.2, i32 noundef %2875, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 108, ptr noundef %2878, ptr noundef %2881, ptr noundef %2884, i32 noundef %2886) #12
  br label %2905

2888:                                             ; preds = %2866, %2859
  %2889 = load i32, ptr %50, align 4, !tbaa !5
  %2890 = call ptr @__errno_location() #13
  store i32 %2889, ptr %2890, align 4, !tbaa !5
  %2891 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2892 = load i32, ptr @test_count, align 4, !tbaa !5
  %2893 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2894 = load i32, ptr %2893, align 4, !tbaa !5
  %2895 = call ptr @s2n_strerror(i32 noundef %2894, ptr noundef @.str.4)
  %2896 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2897 = load i32, ptr %2896, align 4, !tbaa !5
  %2898 = call ptr @s2n_strerror_debug(i32 noundef %2897, ptr noundef @.str.4)
  %2899 = call ptr @__errno_location() #13
  %2900 = load i32, ptr %2899, align 4, !tbaa !5
  %2901 = call ptr @strerror(i32 noundef %2900) #12
  %2902 = call ptr @__errno_location() #13
  %2903 = load i32, ptr %2902, align 4, !tbaa !5
  %2904 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2891, ptr noundef @.str.5, i32 noundef %2892, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 108, ptr noundef %2895, ptr noundef %2898, ptr noundef %2901, i32 noundef %2903) #12
  br label %2905

2905:                                             ; preds = %2888, %2871
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  br label %2906

2906:                                             ; preds = %2905
  br label %2907

2907:                                             ; preds = %2906
  call void @exit(i32 noundef 1) #14
  unreachable

2908:                                             ; No predecessors!
  br label %2909

2909:                                             ; preds = %2908
  br label %2910

2910:                                             ; preds = %2909, %2843
  br label %2911

2911:                                             ; preds = %2910
  br label %2912

2912:                                             ; preds = %2911
  br label %2913

2913:                                             ; preds = %2912
  %2914 = load i32, ptr @test_count, align 4, !tbaa !5
  %2915 = add nsw i32 %2914, 1
  store i32 %2915, ptr @test_count, align 4, !tbaa !5
  %2916 = load ptr, ptr %39, align 8, !tbaa !9
  %2917 = getelementptr inbounds %struct.s2n_connection, ptr %2916, i32 0, i32 31
  %2918 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2917, i32 0, i32 4
  %2919 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2918, i32 0, i32 0
  %2920 = load ptr, ptr %2919, align 8, !tbaa !42
  %2921 = icmp eq ptr %2920, null
  br i1 %2921, label %2975, label %2922

2922:                                             ; preds = %2913
  br label %2923

2923:                                             ; preds = %2922
  br label %2924

2924:                                             ; preds = %2923
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #12
  %2925 = call ptr @__errno_location() #13
  %2926 = load i32, ptr %2925, align 4, !tbaa !5
  store i32 %2926, ptr %51, align 4, !tbaa !5
  %2927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2928 = call i32 @s2n_print_stacktrace(ptr noundef %2927)
  %2929 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2930 = trunc i8 %2929 to i1
  br i1 %2930, label %2931, label %2953

2931:                                             ; preds = %2924
  %2932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2933 = call i32 @fileno(ptr noundef %2932) #12
  %2934 = call i32 @isatty(i32 noundef %2933) #12
  %2935 = icmp ne i32 %2934, 0
  br i1 %2935, label %2936, label %2953

2936:                                             ; preds = %2931
  %2937 = load i32, ptr %51, align 4, !tbaa !5
  %2938 = call ptr @__errno_location() #13
  store i32 %2937, ptr %2938, align 4, !tbaa !5
  %2939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2940 = load i32, ptr @test_count, align 4, !tbaa !5
  %2941 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2942 = load i32, ptr %2941, align 4, !tbaa !5
  %2943 = call ptr @s2n_strerror(i32 noundef %2942, ptr noundef @.str.4)
  %2944 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2945 = load i32, ptr %2944, align 4, !tbaa !5
  %2946 = call ptr @s2n_strerror_debug(i32 noundef %2945, ptr noundef @.str.4)
  %2947 = call ptr @__errno_location() #13
  %2948 = load i32, ptr %2947, align 4, !tbaa !5
  %2949 = call ptr @strerror(i32 noundef %2948) #12
  %2950 = call ptr @__errno_location() #13
  %2951 = load i32, ptr %2950, align 4, !tbaa !5
  %2952 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2939, ptr noundef @.str.2, i32 noundef %2940, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 109, ptr noundef %2943, ptr noundef %2946, ptr noundef %2949, i32 noundef %2951) #12
  br label %2970

2953:                                             ; preds = %2931, %2924
  %2954 = load i32, ptr %51, align 4, !tbaa !5
  %2955 = call ptr @__errno_location() #13
  store i32 %2954, ptr %2955, align 4, !tbaa !5
  %2956 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2957 = load i32, ptr @test_count, align 4, !tbaa !5
  %2958 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2959 = load i32, ptr %2958, align 4, !tbaa !5
  %2960 = call ptr @s2n_strerror(i32 noundef %2959, ptr noundef @.str.4)
  %2961 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2962 = load i32, ptr %2961, align 4, !tbaa !5
  %2963 = call ptr @s2n_strerror_debug(i32 noundef %2962, ptr noundef @.str.4)
  %2964 = call ptr @__errno_location() #13
  %2965 = load i32, ptr %2964, align 4, !tbaa !5
  %2966 = call ptr @strerror(i32 noundef %2965) #12
  %2967 = call ptr @__errno_location() #13
  %2968 = load i32, ptr %2967, align 4, !tbaa !5
  %2969 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2956, ptr noundef @.str.5, i32 noundef %2957, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 109, ptr noundef %2960, ptr noundef %2963, ptr noundef %2966, i32 noundef %2968) #12
  br label %2970

2970:                                             ; preds = %2953, %2936
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %2971

2971:                                             ; preds = %2970
  br label %2972

2972:                                             ; preds = %2971
  call void @exit(i32 noundef 1) #14
  unreachable

2973:                                             ; No predecessors!
  br label %2974

2974:                                             ; preds = %2973
  br label %2975

2975:                                             ; preds = %2974, %2913
  br label %2976

2976:                                             ; preds = %2975
  br label %2977

2977:                                             ; preds = %2976
  br label %2978

2978:                                             ; preds = %2977
  %2979 = load i32, ptr @test_count, align 4, !tbaa !5
  %2980 = add nsw i32 %2979, 1
  store i32 %2980, ptr @test_count, align 4, !tbaa !5
  %2981 = load ptr, ptr %39, align 8, !tbaa !9
  %2982 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %2981)
  br i1 %2982, label %2983, label %3036

2983:                                             ; preds = %2978
  br label %2984

2984:                                             ; preds = %2983
  br label %2985

2985:                                             ; preds = %2984
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #12
  %2986 = call ptr @__errno_location() #13
  %2987 = load i32, ptr %2986, align 4, !tbaa !5
  store i32 %2987, ptr %52, align 4, !tbaa !5
  %2988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2989 = call i32 @s2n_print_stacktrace(ptr noundef %2988)
  %2990 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2991 = trunc i8 %2990 to i1
  br i1 %2991, label %2992, label %3014

2992:                                             ; preds = %2985
  %2993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2994 = call i32 @fileno(ptr noundef %2993) #12
  %2995 = call i32 @isatty(i32 noundef %2994) #12
  %2996 = icmp ne i32 %2995, 0
  br i1 %2996, label %2997, label %3014

2997:                                             ; preds = %2992
  %2998 = load i32, ptr %52, align 4, !tbaa !5
  %2999 = call ptr @__errno_location() #13
  store i32 %2998, ptr %2999, align 4, !tbaa !5
  %3000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3001 = load i32, ptr @test_count, align 4, !tbaa !5
  %3002 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3003 = load i32, ptr %3002, align 4, !tbaa !5
  %3004 = call ptr @s2n_strerror(i32 noundef %3003, ptr noundef @.str.4)
  %3005 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3006 = load i32, ptr %3005, align 4, !tbaa !5
  %3007 = call ptr @s2n_strerror_debug(i32 noundef %3006, ptr noundef @.str.4)
  %3008 = call ptr @__errno_location() #13
  %3009 = load i32, ptr %3008, align 4, !tbaa !5
  %3010 = call ptr @strerror(i32 noundef %3009) #12
  %3011 = call ptr @__errno_location() #13
  %3012 = load i32, ptr %3011, align 4, !tbaa !5
  %3013 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3000, ptr noundef @.str.2, i32 noundef %3001, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 110, ptr noundef %3004, ptr noundef %3007, ptr noundef %3010, i32 noundef %3012) #12
  br label %3031

3014:                                             ; preds = %2992, %2985
  %3015 = load i32, ptr %52, align 4, !tbaa !5
  %3016 = call ptr @__errno_location() #13
  store i32 %3015, ptr %3016, align 4, !tbaa !5
  %3017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3018 = load i32, ptr @test_count, align 4, !tbaa !5
  %3019 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3020 = load i32, ptr %3019, align 4, !tbaa !5
  %3021 = call ptr @s2n_strerror(i32 noundef %3020, ptr noundef @.str.4)
  %3022 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3023 = load i32, ptr %3022, align 4, !tbaa !5
  %3024 = call ptr @s2n_strerror_debug(i32 noundef %3023, ptr noundef @.str.4)
  %3025 = call ptr @__errno_location() #13
  %3026 = load i32, ptr %3025, align 4, !tbaa !5
  %3027 = call ptr @strerror(i32 noundef %3026) #12
  %3028 = call ptr @__errno_location() #13
  %3029 = load i32, ptr %3028, align 4, !tbaa !5
  %3030 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3017, ptr noundef @.str.5, i32 noundef %3018, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 110, ptr noundef %3021, ptr noundef %3024, ptr noundef %3027, i32 noundef %3029) #12
  br label %3031

3031:                                             ; preds = %3014, %2997
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  br label %3032

3032:                                             ; preds = %3031
  br label %3033

3033:                                             ; preds = %3032
  call void @exit(i32 noundef 1) #14
  unreachable

3034:                                             ; No predecessors!
  br label %3035

3035:                                             ; preds = %3034
  br label %3036

3036:                                             ; preds = %3035, %2978
  br label %3037

3037:                                             ; preds = %3036
  br label %3038

3038:                                             ; preds = %3037
  br label %3039

3039:                                             ; preds = %3038
  %3040 = load i32, ptr @test_count, align 4, !tbaa !5
  %3041 = add nsw i32 %3040, 1
  store i32 %3041, ptr @test_count, align 4, !tbaa !5
  %3042 = load ptr, ptr %39, align 8, !tbaa !9
  %3043 = call i32 @s2n_connection_free(ptr noundef %3042)
  %3044 = icmp eq i32 %3043, -1
  br i1 %3044, label %3045, label %3098

3045:                                             ; preds = %3039
  br label %3046

3046:                                             ; preds = %3045
  br label %3047

3047:                                             ; preds = %3046
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #12
  %3048 = call ptr @__errno_location() #13
  %3049 = load i32, ptr %3048, align 4, !tbaa !5
  store i32 %3049, ptr %53, align 4, !tbaa !5
  %3050 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3051 = call i32 @s2n_print_stacktrace(ptr noundef %3050)
  %3052 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3053 = trunc i8 %3052 to i1
  br i1 %3053, label %3054, label %3076

3054:                                             ; preds = %3047
  %3055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3056 = call i32 @fileno(ptr noundef %3055) #12
  %3057 = call i32 @isatty(i32 noundef %3056) #12
  %3058 = icmp ne i32 %3057, 0
  br i1 %3058, label %3059, label %3076

3059:                                             ; preds = %3054
  %3060 = load i32, ptr %53, align 4, !tbaa !5
  %3061 = call ptr @__errno_location() #13
  store i32 %3060, ptr %3061, align 4, !tbaa !5
  %3062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3063 = load i32, ptr @test_count, align 4, !tbaa !5
  %3064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3065 = load i32, ptr %3064, align 4, !tbaa !5
  %3066 = call ptr @s2n_strerror(i32 noundef %3065, ptr noundef @.str.4)
  %3067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3068 = load i32, ptr %3067, align 4, !tbaa !5
  %3069 = call ptr @s2n_strerror_debug(i32 noundef %3068, ptr noundef @.str.4)
  %3070 = call ptr @__errno_location() #13
  %3071 = load i32, ptr %3070, align 4, !tbaa !5
  %3072 = call ptr @strerror(i32 noundef %3071) #12
  %3073 = call ptr @__errno_location() #13
  %3074 = load i32, ptr %3073, align 4, !tbaa !5
  %3075 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3062, ptr noundef @.str.2, i32 noundef %3063, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 112, ptr noundef %3066, ptr noundef %3069, ptr noundef %3072, i32 noundef %3074) #12
  br label %3093

3076:                                             ; preds = %3054, %3047
  %3077 = load i32, ptr %53, align 4, !tbaa !5
  %3078 = call ptr @__errno_location() #13
  store i32 %3077, ptr %3078, align 4, !tbaa !5
  %3079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3080 = load i32, ptr @test_count, align 4, !tbaa !5
  %3081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3082 = load i32, ptr %3081, align 4, !tbaa !5
  %3083 = call ptr @s2n_strerror(i32 noundef %3082, ptr noundef @.str.4)
  %3084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3085 = load i32, ptr %3084, align 4, !tbaa !5
  %3086 = call ptr @s2n_strerror_debug(i32 noundef %3085, ptr noundef @.str.4)
  %3087 = call ptr @__errno_location() #13
  %3088 = load i32, ptr %3087, align 4, !tbaa !5
  %3089 = call ptr @strerror(i32 noundef %3088) #12
  %3090 = call ptr @__errno_location() #13
  %3091 = load i32, ptr %3090, align 4, !tbaa !5
  %3092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3079, ptr noundef @.str.5, i32 noundef %3080, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 112, ptr noundef %3083, ptr noundef %3086, ptr noundef %3089, i32 noundef %3091) #12
  br label %3093

3093:                                             ; preds = %3076, %3059
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #12
  br label %3094

3094:                                             ; preds = %3093
  br label %3095

3095:                                             ; preds = %3094
  call void @exit(i32 noundef 1) #14
  unreachable

3096:                                             ; No predecessors!
  br label %3097

3097:                                             ; preds = %3096
  br label %3098

3098:                                             ; preds = %3097, %3039
  br label %3099

3099:                                             ; preds = %3098
  br label %3100

3100:                                             ; preds = %3099
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr %54) #12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 @__const.main.test_security_policy, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #12
  store ptr null, ptr %55, align 8, !tbaa !9
  br label %3101

3101:                                             ; preds = %3100
  %3102 = load i32, ptr @test_count, align 4, !tbaa !5
  %3103 = add nsw i32 %3102, 1
  store i32 %3103, ptr @test_count, align 4, !tbaa !5
  %3104 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %3104, ptr %55, align 8, !tbaa !9
  %3105 = icmp eq ptr %3104, null
  br i1 %3105, label %3106, label %3159

3106:                                             ; preds = %3101
  br label %3107

3107:                                             ; preds = %3106
  br label %3108

3108:                                             ; preds = %3107
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #12
  %3109 = call ptr @__errno_location() #13
  %3110 = load i32, ptr %3109, align 4, !tbaa !5
  store i32 %3110, ptr %56, align 4, !tbaa !5
  %3111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3112 = call i32 @s2n_print_stacktrace(ptr noundef %3111)
  %3113 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3114 = trunc i8 %3113 to i1
  br i1 %3114, label %3115, label %3137

3115:                                             ; preds = %3108
  %3116 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3117 = call i32 @fileno(ptr noundef %3116) #12
  %3118 = call i32 @isatty(i32 noundef %3117) #12
  %3119 = icmp ne i32 %3118, 0
  br i1 %3119, label %3120, label %3137

3120:                                             ; preds = %3115
  %3121 = load i32, ptr %56, align 4, !tbaa !5
  %3122 = call ptr @__errno_location() #13
  store i32 %3121, ptr %3122, align 4, !tbaa !5
  %3123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3124 = load i32, ptr @test_count, align 4, !tbaa !5
  %3125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3126 = load i32, ptr %3125, align 4, !tbaa !5
  %3127 = call ptr @s2n_strerror(i32 noundef %3126, ptr noundef @.str.4)
  %3128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3129 = load i32, ptr %3128, align 4, !tbaa !5
  %3130 = call ptr @s2n_strerror_debug(i32 noundef %3129, ptr noundef @.str.4)
  %3131 = call ptr @__errno_location() #13
  %3132 = load i32, ptr %3131, align 4, !tbaa !5
  %3133 = call ptr @strerror(i32 noundef %3132) #12
  %3134 = call ptr @__errno_location() #13
  %3135 = load i32, ptr %3134, align 4, !tbaa !5
  %3136 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3123, ptr noundef @.str.2, i32 noundef %3124, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 128, ptr noundef %3127, ptr noundef %3130, ptr noundef %3133, i32 noundef %3135) #12
  br label %3154

3137:                                             ; preds = %3115, %3108
  %3138 = load i32, ptr %56, align 4, !tbaa !5
  %3139 = call ptr @__errno_location() #13
  store i32 %3138, ptr %3139, align 4, !tbaa !5
  %3140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3141 = load i32, ptr @test_count, align 4, !tbaa !5
  %3142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3143 = load i32, ptr %3142, align 4, !tbaa !5
  %3144 = call ptr @s2n_strerror(i32 noundef %3143, ptr noundef @.str.4)
  %3145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3146 = load i32, ptr %3145, align 4, !tbaa !5
  %3147 = call ptr @s2n_strerror_debug(i32 noundef %3146, ptr noundef @.str.4)
  %3148 = call ptr @__errno_location() #13
  %3149 = load i32, ptr %3148, align 4, !tbaa !5
  %3150 = call ptr @strerror(i32 noundef %3149) #12
  %3151 = call ptr @__errno_location() #13
  %3152 = load i32, ptr %3151, align 4, !tbaa !5
  %3153 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3140, ptr noundef @.str.5, i32 noundef %3141, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 128, ptr noundef %3144, ptr noundef %3147, ptr noundef %3150, i32 noundef %3152) #12
  br label %3154

3154:                                             ; preds = %3137, %3120
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #12
  br label %3155

3155:                                             ; preds = %3154
  br label %3156

3156:                                             ; preds = %3155
  call void @exit(i32 noundef 1) #14
  unreachable

3157:                                             ; No predecessors!
  br label %3158

3158:                                             ; preds = %3157
  br label %3159

3159:                                             ; preds = %3158, %3101
  br label %3160

3160:                                             ; preds = %3159
  br label %3161

3161:                                             ; preds = %3160
  %3162 = load ptr, ptr %55, align 8, !tbaa !9
  %3163 = getelementptr inbounds %struct.s2n_connection, ptr %3162, i32 0, i32 2
  store ptr %54, ptr %3163, align 8, !tbaa !47
  br label %3164

3164:                                             ; preds = %3161
  %3165 = load i32, ptr @test_count, align 4, !tbaa !5
  %3166 = add nsw i32 %3165, 1
  store i32 %3166, ptr @test_count, align 4, !tbaa !5
  %3167 = load ptr, ptr %55, align 8, !tbaa !9
  %3168 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %3167, i8 noundef zeroext 34)
  %3169 = icmp eq i32 %3168, -1
  br i1 %3169, label %3170, label %3223

3170:                                             ; preds = %3164
  br label %3171

3171:                                             ; preds = %3170
  br label %3172

3172:                                             ; preds = %3171
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #12
  %3173 = call ptr @__errno_location() #13
  %3174 = load i32, ptr %3173, align 4, !tbaa !5
  store i32 %3174, ptr %57, align 4, !tbaa !5
  %3175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3176 = call i32 @s2n_print_stacktrace(ptr noundef %3175)
  %3177 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3178 = trunc i8 %3177 to i1
  br i1 %3178, label %3179, label %3201

3179:                                             ; preds = %3172
  %3180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3181 = call i32 @fileno(ptr noundef %3180) #12
  %3182 = call i32 @isatty(i32 noundef %3181) #12
  %3183 = icmp ne i32 %3182, 0
  br i1 %3183, label %3184, label %3201

3184:                                             ; preds = %3179
  %3185 = load i32, ptr %57, align 4, !tbaa !5
  %3186 = call ptr @__errno_location() #13
  store i32 %3185, ptr %3186, 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 @.str.4)
  %3192 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3193 = load i32, ptr %3192, align 4, !tbaa !5
  %3194 = call ptr @s2n_strerror_debug(i32 noundef %3193, ptr noundef @.str.4)
  %3195 = call ptr @__errno_location() #13
  %3196 = load i32, ptr %3195, align 4, !tbaa !5
  %3197 = call ptr @strerror(i32 noundef %3196) #12
  %3198 = call ptr @__errno_location() #13
  %3199 = load i32, ptr %3198, align 4, !tbaa !5
  %3200 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3187, ptr noundef @.str.2, i32 noundef %3188, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 130, ptr noundef %3191, ptr noundef %3194, ptr noundef %3197, i32 noundef %3199) #12
  br label %3218

3201:                                             ; preds = %3179, %3172
  %3202 = load i32, ptr %57, align 4, !tbaa !5
  %3203 = call ptr @__errno_location() #13
  store i32 %3202, ptr %3203, align 4, !tbaa !5
  %3204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3205 = load i32, ptr @test_count, align 4, !tbaa !5
  %3206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3207 = load i32, ptr %3206, align 4, !tbaa !5
  %3208 = call ptr @s2n_strerror(i32 noundef %3207, ptr noundef @.str.4)
  %3209 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3210 = load i32, ptr %3209, align 4, !tbaa !5
  %3211 = call ptr @s2n_strerror_debug(i32 noundef %3210, ptr noundef @.str.4)
  %3212 = call ptr @__errno_location() #13
  %3213 = load i32, ptr %3212, align 4, !tbaa !5
  %3214 = call ptr @strerror(i32 noundef %3213) #12
  %3215 = call ptr @__errno_location() #13
  %3216 = load i32, ptr %3215, align 4, !tbaa !5
  %3217 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3204, ptr noundef @.str.5, i32 noundef %3205, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 130, ptr noundef %3208, ptr noundef %3211, ptr noundef %3214, i32 noundef %3216) #12
  br label %3218

3218:                                             ; preds = %3201, %3184
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #12
  br label %3219

3219:                                             ; preds = %3218
  br label %3220

3220:                                             ; preds = %3219
  call void @exit(i32 noundef 1) #14
  unreachable

3221:                                             ; No predecessors!
  br label %3222

3222:                                             ; preds = %3221
  br label %3223

3223:                                             ; preds = %3222, %3164
  br label %3224

3224:                                             ; preds = %3223
  br label %3225

3225:                                             ; preds = %3224
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #12
  store ptr null, ptr %58, align 8, !tbaa !9
  br label %3226

3226:                                             ; preds = %3225
  %3227 = load i32, ptr @test_count, align 4, !tbaa !5
  %3228 = add nsw i32 %3227, 1
  store i32 %3228, ptr @test_count, align 4, !tbaa !5
  %3229 = load ptr, ptr %55, align 8, !tbaa !9
  %3230 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %3229, ptr noundef %58)
  %3231 = icmp eq i32 %3230, -1
  br i1 %3231, label %3232, label %3285

3232:                                             ; preds = %3226
  br label %3233

3233:                                             ; preds = %3232
  br label %3234

3234:                                             ; preds = %3233
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #12
  %3235 = call ptr @__errno_location() #13
  %3236 = load i32, ptr %3235, align 4, !tbaa !5
  store i32 %3236, ptr %59, align 4, !tbaa !5
  %3237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3238 = call i32 @s2n_print_stacktrace(ptr noundef %3237)
  %3239 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3240 = trunc i8 %3239 to i1
  br i1 %3240, label %3241, label %3263

3241:                                             ; preds = %3234
  %3242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3243 = call i32 @fileno(ptr noundef %3242) #12
  %3244 = call i32 @isatty(i32 noundef %3243) #12
  %3245 = icmp ne i32 %3244, 0
  br i1 %3245, label %3246, label %3263

3246:                                             ; preds = %3241
  %3247 = load i32, ptr %59, align 4, !tbaa !5
  %3248 = call ptr @__errno_location() #13
  store i32 %3247, ptr %3248, align 4, !tbaa !5
  %3249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3250 = load i32, ptr @test_count, align 4, !tbaa !5
  %3251 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3252 = load i32, ptr %3251, align 4, !tbaa !5
  %3253 = call ptr @s2n_strerror(i32 noundef %3252, ptr noundef @.str.4)
  %3254 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3255 = load i32, ptr %3254, align 4, !tbaa !5
  %3256 = call ptr @s2n_strerror_debug(i32 noundef %3255, ptr noundef @.str.4)
  %3257 = call ptr @__errno_location() #13
  %3258 = load i32, ptr %3257, align 4, !tbaa !5
  %3259 = call ptr @strerror(i32 noundef %3258) #12
  %3260 = call ptr @__errno_location() #13
  %3261 = load i32, ptr %3260, align 4, !tbaa !5
  %3262 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3249, ptr noundef @.str.2, i32 noundef %3250, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 133, ptr noundef %3253, ptr noundef %3256, ptr noundef %3259, i32 noundef %3261) #12
  br label %3280

3263:                                             ; preds = %3241, %3234
  %3264 = load i32, ptr %59, align 4, !tbaa !5
  %3265 = call ptr @__errno_location() #13
  store i32 %3264, ptr %3265, align 4, !tbaa !5
  %3266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3267 = load i32, ptr @test_count, align 4, !tbaa !5
  %3268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3269 = load i32, ptr %3268, align 4, !tbaa !5
  %3270 = call ptr @s2n_strerror(i32 noundef %3269, ptr noundef @.str.4)
  %3271 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3272 = load i32, ptr %3271, align 4, !tbaa !5
  %3273 = call ptr @s2n_strerror_debug(i32 noundef %3272, ptr noundef @.str.4)
  %3274 = call ptr @__errno_location() #13
  %3275 = load i32, ptr %3274, align 4, !tbaa !5
  %3276 = call ptr @strerror(i32 noundef %3275) #12
  %3277 = call ptr @__errno_location() #13
  %3278 = load i32, ptr %3277, align 4, !tbaa !5
  %3279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3266, ptr noundef @.str.5, i32 noundef %3267, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 133, ptr noundef %3270, ptr noundef %3273, ptr noundef %3276, i32 noundef %3278) #12
  br label %3280

3280:                                             ; preds = %3263, %3246
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #12
  br label %3281

3281:                                             ; preds = %3280
  br label %3282

3282:                                             ; preds = %3281
  call void @exit(i32 noundef 1) #14
  unreachable

3283:                                             ; No predecessors!
  br label %3284

3284:                                             ; preds = %3283
  br label %3285

3285:                                             ; preds = %3284, %3226
  br label %3286

3286:                                             ; preds = %3285
  br label %3287

3287:                                             ; preds = %3286
  br label %3288

3288:                                             ; preds = %3287
  %3289 = load i32, ptr @test_count, align 4, !tbaa !5
  %3290 = add nsw i32 %3289, 1
  store i32 %3290, ptr @test_count, align 4, !tbaa !5
  %3291 = load ptr, ptr %58, align 8, !tbaa !9
  %3292 = icmp eq ptr %3291, null
  br i1 %3292, label %3293, label %3346

3293:                                             ; preds = %3288
  br label %3294

3294:                                             ; preds = %3293
  br label %3295

3295:                                             ; preds = %3294
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  %3296 = call ptr @__errno_location() #13
  %3297 = load i32, ptr %3296, align 4, !tbaa !5
  store i32 %3297, ptr %60, align 4, !tbaa !5
  %3298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3299 = call i32 @s2n_print_stacktrace(ptr noundef %3298)
  %3300 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3301 = trunc i8 %3300 to i1
  br i1 %3301, label %3302, label %3324

3302:                                             ; preds = %3295
  %3303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3304 = call i32 @fileno(ptr noundef %3303) #12
  %3305 = call i32 @isatty(i32 noundef %3304) #12
  %3306 = icmp ne i32 %3305, 0
  br i1 %3306, label %3307, label %3324

3307:                                             ; preds = %3302
  %3308 = load i32, ptr %60, align 4, !tbaa !5
  %3309 = call ptr @__errno_location() #13
  store i32 %3308, ptr %3309, align 4, !tbaa !5
  %3310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3311 = load i32, ptr @test_count, align 4, !tbaa !5
  %3312 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3313 = load i32, ptr %3312, align 4, !tbaa !5
  %3314 = call ptr @s2n_strerror(i32 noundef %3313, ptr noundef @.str.4)
  %3315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3316 = load i32, ptr %3315, align 4, !tbaa !5
  %3317 = call ptr @s2n_strerror_debug(i32 noundef %3316, ptr noundef @.str.4)
  %3318 = call ptr @__errno_location() #13
  %3319 = load i32, ptr %3318, align 4, !tbaa !5
  %3320 = call ptr @strerror(i32 noundef %3319) #12
  %3321 = call ptr @__errno_location() #13
  %3322 = load i32, ptr %3321, align 4, !tbaa !5
  %3323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3310, ptr noundef @.str.2, i32 noundef %3311, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 134, ptr noundef %3314, ptr noundef %3317, ptr noundef %3320, i32 noundef %3322) #12
  br label %3341

3324:                                             ; preds = %3302, %3295
  %3325 = load i32, ptr %60, align 4, !tbaa !5
  %3326 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %3335 = call ptr @__errno_location() #13
  %3336 = load i32, ptr %3335, align 4, !tbaa !5
  %3337 = call ptr @strerror(i32 noundef %3336) #12
  %3338 = call ptr @__errno_location() #13
  %3339 = load i32, ptr %3338, align 4, !tbaa !5
  %3340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3327, ptr noundef @.str.5, i32 noundef %3328, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 134, ptr noundef %3331, ptr noundef %3334, ptr noundef %3337, i32 noundef %3339) #12
  br label %3341

3341:                                             ; preds = %3324, %3307
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  br label %3342

3342:                                             ; preds = %3341
  br label %3343

3343:                                             ; preds = %3342
  call void @exit(i32 noundef 1) #14
  unreachable

3344:                                             ; No predecessors!
  br label %3345

3345:                                             ; preds = %3344
  br label %3346

3346:                                             ; preds = %3345, %3288
  br label %3347

3347:                                             ; preds = %3346
  br label %3348

3348:                                             ; preds = %3347
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #12
  store ptr null, ptr %61, align 8, !tbaa !9
  br label %3349

3349:                                             ; preds = %3348
  %3350 = load i32, ptr @test_count, align 4, !tbaa !5
  %3351 = add nsw i32 %3350, 1
  store i32 %3351, ptr @test_count, align 4, !tbaa !5
  %3352 = load ptr, ptr %55, align 8, !tbaa !9
  %3353 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %3352, ptr noundef %61)
  %3354 = icmp eq i32 %3353, -1
  br i1 %3354, label %3355, label %3408

3355:                                             ; preds = %3349
  br label %3356

3356:                                             ; preds = %3355
  br label %3357

3357:                                             ; preds = %3356
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #12
  %3358 = call ptr @__errno_location() #13
  %3359 = load i32, ptr %3358, align 4, !tbaa !5
  store i32 %3359, ptr %62, align 4, !tbaa !5
  %3360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3361 = call i32 @s2n_print_stacktrace(ptr noundef %3360)
  %3362 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3363 = trunc i8 %3362 to i1
  br i1 %3363, label %3364, label %3386

3364:                                             ; preds = %3357
  %3365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3366 = call i32 @fileno(ptr noundef %3365) #12
  %3367 = call i32 @isatty(i32 noundef %3366) #12
  %3368 = icmp ne i32 %3367, 0
  br i1 %3368, label %3369, label %3386

3369:                                             ; preds = %3364
  %3370 = load i32, ptr %62, align 4, !tbaa !5
  %3371 = call ptr @__errno_location() #13
  store i32 %3370, ptr %3371, align 4, !tbaa !5
  %3372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3373 = load i32, ptr @test_count, align 4, !tbaa !5
  %3374 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3375 = load i32, ptr %3374, align 4, !tbaa !5
  %3376 = call ptr @s2n_strerror(i32 noundef %3375, ptr noundef @.str.4)
  %3377 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3378 = load i32, ptr %3377, align 4, !tbaa !5
  %3379 = call ptr @s2n_strerror_debug(i32 noundef %3378, ptr noundef @.str.4)
  %3380 = call ptr @__errno_location() #13
  %3381 = load i32, ptr %3380, align 4, !tbaa !5
  %3382 = call ptr @strerror(i32 noundef %3381) #12
  %3383 = call ptr @__errno_location() #13
  %3384 = load i32, ptr %3383, align 4, !tbaa !5
  %3385 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3372, ptr noundef @.str.2, i32 noundef %3373, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 137, ptr noundef %3376, ptr noundef %3379, ptr noundef %3382, i32 noundef %3384) #12
  br label %3403

3386:                                             ; preds = %3364, %3357
  %3387 = load i32, ptr %62, align 4, !tbaa !5
  %3388 = call ptr @__errno_location() #13
  store i32 %3387, ptr %3388, 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 @.str.4)
  %3394 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3395 = load i32, ptr %3394, align 4, !tbaa !5
  %3396 = call ptr @s2n_strerror_debug(i32 noundef %3395, ptr noundef @.str.4)
  %3397 = call ptr @__errno_location() #13
  %3398 = load i32, ptr %3397, align 4, !tbaa !5
  %3399 = call ptr @strerror(i32 noundef %3398) #12
  %3400 = call ptr @__errno_location() #13
  %3401 = load i32, ptr %3400, align 4, !tbaa !5
  %3402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3389, ptr noundef @.str.5, i32 noundef %3390, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 137, ptr noundef %3393, ptr noundef %3396, ptr noundef %3399, i32 noundef %3401) #12
  br label %3403

3403:                                             ; preds = %3386, %3369
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #12
  br label %3404

3404:                                             ; preds = %3403
  br label %3405

3405:                                             ; preds = %3404
  call void @exit(i32 noundef 1) #14
  unreachable

3406:                                             ; No predecessors!
  br label %3407

3407:                                             ; preds = %3406
  br label %3408

3408:                                             ; preds = %3407, %3349
  br label %3409

3409:                                             ; preds = %3408
  br label %3410

3410:                                             ; preds = %3409
  br label %3411

3411:                                             ; preds = %3410
  %3412 = load i32, ptr @test_count, align 4, !tbaa !5
  %3413 = add nsw i32 %3412, 1
  store i32 %3413, ptr @test_count, align 4, !tbaa !5
  %3414 = load ptr, ptr %61, align 8, !tbaa !9
  %3415 = icmp eq ptr %3414, null
  br i1 %3415, label %3416, label %3469

3416:                                             ; preds = %3411
  br label %3417

3417:                                             ; preds = %3416
  br label %3418

3418:                                             ; preds = %3417
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #12
  %3419 = call ptr @__errno_location() #13
  %3420 = load i32, ptr %3419, align 4, !tbaa !5
  store i32 %3420, ptr %63, align 4, !tbaa !5
  %3421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3422 = call i32 @s2n_print_stacktrace(ptr noundef %3421)
  %3423 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3424 = trunc i8 %3423 to i1
  br i1 %3424, label %3425, label %3447

3425:                                             ; preds = %3418
  %3426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3427 = call i32 @fileno(ptr noundef %3426) #12
  %3428 = call i32 @isatty(i32 noundef %3427) #12
  %3429 = icmp ne i32 %3428, 0
  br i1 %3429, label %3430, label %3447

3430:                                             ; preds = %3425
  %3431 = load i32, ptr %63, align 4, !tbaa !5
  %3432 = call ptr @__errno_location() #13
  store i32 %3431, ptr %3432, align 4, !tbaa !5
  %3433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3434 = load i32, ptr @test_count, align 4, !tbaa !5
  %3435 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3436 = load i32, ptr %3435, align 4, !tbaa !5
  %3437 = call ptr @s2n_strerror(i32 noundef %3436, ptr noundef @.str.4)
  %3438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3439 = load i32, ptr %3438, align 4, !tbaa !5
  %3440 = call ptr @s2n_strerror_debug(i32 noundef %3439, ptr noundef @.str.4)
  %3441 = call ptr @__errno_location() #13
  %3442 = load i32, ptr %3441, align 4, !tbaa !5
  %3443 = call ptr @strerror(i32 noundef %3442) #12
  %3444 = call ptr @__errno_location() #13
  %3445 = load i32, ptr %3444, align 4, !tbaa !5
  %3446 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3433, ptr noundef @.str.2, i32 noundef %3434, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 138, ptr noundef %3437, ptr noundef %3440, ptr noundef %3443, i32 noundef %3445) #12
  br label %3464

3447:                                             ; preds = %3425, %3418
  %3448 = load i32, ptr %63, align 4, !tbaa !5
  %3449 = call ptr @__errno_location() #13
  store i32 %3448, ptr %3449, align 4, !tbaa !5
  %3450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3451 = load i32, ptr @test_count, align 4, !tbaa !5
  %3452 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3453 = load i32, ptr %3452, align 4, !tbaa !5
  %3454 = call ptr @s2n_strerror(i32 noundef %3453, ptr noundef @.str.4)
  %3455 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3456 = load i32, ptr %3455, align 4, !tbaa !5
  %3457 = call ptr @s2n_strerror_debug(i32 noundef %3456, ptr noundef @.str.4)
  %3458 = call ptr @__errno_location() #13
  %3459 = load i32, ptr %3458, align 4, !tbaa !5
  %3460 = call ptr @strerror(i32 noundef %3459) #12
  %3461 = call ptr @__errno_location() #13
  %3462 = load i32, ptr %3461, align 4, !tbaa !5
  %3463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3450, ptr noundef @.str.5, i32 noundef %3451, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 138, ptr noundef %3454, ptr noundef %3457, ptr noundef %3460, i32 noundef %3462) #12
  br label %3464

3464:                                             ; preds = %3447, %3430
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #12
  br label %3465

3465:                                             ; preds = %3464
  br label %3466

3466:                                             ; preds = %3465
  call void @exit(i32 noundef 1) #14
  unreachable

3467:                                             ; No predecessors!
  br label %3468

3468:                                             ; preds = %3467
  br label %3469

3469:                                             ; preds = %3468, %3411
  br label %3470

3470:                                             ; preds = %3469
  br label %3471

3471:                                             ; preds = %3470
  %3472 = load ptr, ptr %58, align 8, !tbaa !9
  %3473 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %3472, i32 0, i32 1
  %3474 = load ptr, ptr %3473, align 8, !tbaa !43
  %3475 = getelementptr inbounds ptr, ptr %3474, i64 0
  %3476 = load ptr, ptr %3475, align 8, !tbaa !9
  %3477 = load ptr, ptr %55, align 8, !tbaa !9
  %3478 = getelementptr inbounds %struct.s2n_connection, ptr %3477, i32 0, i32 31
  %3479 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3478, i32 0, i32 1
  %3480 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %3479, i32 0, i32 0
  store ptr %3476, ptr %3480, align 8, !tbaa !15
  %3481 = load ptr, ptr %61, align 8, !tbaa !9
  %3482 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %3481, i32 0, i32 3
  %3483 = load ptr, ptr %3482, align 8, !tbaa !48
  %3484 = getelementptr inbounds ptr, ptr %3483, i64 0
  %3485 = load ptr, ptr %3484, align 8, !tbaa !9
  %3486 = load ptr, ptr %55, align 8, !tbaa !9
  %3487 = getelementptr inbounds %struct.s2n_connection, ptr %3486, i32 0, i32 31
  %3488 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3487, i32 0, i32 4
  %3489 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %3488, i32 0, i32 0
  store ptr %3485, ptr %3489, align 8, !tbaa !42
  br label %3490

3490:                                             ; preds = %3471
  br label %3491

3491:                                             ; preds = %3490
  br label %3492

3492:                                             ; preds = %3491
  %3493 = load i32, ptr @test_count, align 4, !tbaa !5
  %3494 = add nsw i32 %3493, 1
  store i32 %3494, ptr @test_count, align 4, !tbaa !5
  %3495 = load ptr, ptr %55, align 8, !tbaa !9
  %3496 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %3495)
  %3497 = icmp eq i32 %3496, -1
  br i1 %3497, label %3551, label %3498

3498:                                             ; preds = %3492
  br label %3499

3499:                                             ; preds = %3498
  br label %3500

3500:                                             ; preds = %3499
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #12
  %3501 = call ptr @__errno_location() #13
  %3502 = load i32, ptr %3501, align 4, !tbaa !5
  store i32 %3502, ptr %64, align 4, !tbaa !5
  %3503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3504 = call i32 @s2n_print_stacktrace(ptr noundef %3503)
  %3505 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3506 = trunc i8 %3505 to i1
  br i1 %3506, label %3507, label %3529

3507:                                             ; preds = %3500
  %3508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3509 = call i32 @fileno(ptr noundef %3508) #12
  %3510 = call i32 @isatty(i32 noundef %3509) #12
  %3511 = icmp ne i32 %3510, 0
  br i1 %3511, label %3512, label %3529

3512:                                             ; preds = %3507
  %3513 = load i32, ptr %64, align 4, !tbaa !5
  %3514 = call ptr @__errno_location() #13
  store i32 %3513, ptr %3514, align 4, !tbaa !5
  %3515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3516 = load i32, ptr @test_count, align 4, !tbaa !5
  %3517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3518 = load i32, ptr %3517, align 4, !tbaa !5
  %3519 = call ptr @s2n_strerror(i32 noundef %3518, ptr noundef @.str.4)
  %3520 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3521 = load i32, ptr %3520, align 4, !tbaa !5
  %3522 = call ptr @s2n_strerror_debug(i32 noundef %3521, ptr noundef @.str.4)
  %3523 = call ptr @__errno_location() #13
  %3524 = load i32, ptr %3523, align 4, !tbaa !5
  %3525 = call ptr @strerror(i32 noundef %3524) #12
  %3526 = call ptr @__errno_location() #13
  %3527 = load i32, ptr %3526, align 4, !tbaa !5
  %3528 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3515, ptr noundef @.str.2, i32 noundef %3516, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 144, ptr noundef %3519, ptr noundef %3522, ptr noundef %3525, i32 noundef %3527) #12
  br label %3546

3529:                                             ; preds = %3507, %3500
  %3530 = load i32, ptr %64, align 4, !tbaa !5
  %3531 = call ptr @__errno_location() #13
  store i32 %3530, ptr %3531, align 4, !tbaa !5
  %3532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3533 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %3535, ptr noundef @.str.4)
  %3537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3538 = load i32, ptr %3537, align 4, !tbaa !5
  %3539 = call ptr @s2n_strerror_debug(i32 noundef %3538, ptr noundef @.str.4)
  %3540 = call ptr @__errno_location() #13
  %3541 = load i32, ptr %3540, align 4, !tbaa !5
  %3542 = call ptr @strerror(i32 noundef %3541) #12
  %3543 = call ptr @__errno_location() #13
  %3544 = load i32, ptr %3543, align 4, !tbaa !5
  %3545 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3532, ptr noundef @.str.5, i32 noundef %3533, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 144, ptr noundef %3536, ptr noundef %3539, ptr noundef %3542, i32 noundef %3544) #12
  br label %3546

3546:                                             ; preds = %3529, %3512
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #12
  br label %3547

3547:                                             ; preds = %3546
  br label %3548

3548:                                             ; preds = %3547
  call void @exit(i32 noundef 1) #14
  unreachable

3549:                                             ; No predecessors!
  br label %3550

3550:                                             ; preds = %3549
  br label %3551

3551:                                             ; preds = %3550, %3492
  br label %3552

3552:                                             ; preds = %3551
  br label %3553

3553:                                             ; preds = %3552
  br label %3554

3554:                                             ; preds = %3553
  %3555 = load i32, ptr @test_count, align 4, !tbaa !5
  %3556 = add nsw i32 %3555, 1
  store i32 %3556, ptr @test_count, align 4, !tbaa !5
  %3557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3558 = load i32, ptr %3557, align 4, !tbaa !5
  %3559 = icmp eq i32 %3558, 335544356
  br i1 %3559, label %3613, label %3560

3560:                                             ; preds = %3554
  br label %3561

3561:                                             ; preds = %3560
  br label %3562

3562:                                             ; preds = %3561
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #12
  %3563 = call ptr @__errno_location() #13
  %3564 = load i32, ptr %3563, align 4, !tbaa !5
  store i32 %3564, ptr %65, align 4, !tbaa !5
  %3565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3566 = call i32 @s2n_print_stacktrace(ptr noundef %3565)
  %3567 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3568 = trunc i8 %3567 to i1
  br i1 %3568, label %3569, label %3591

3569:                                             ; preds = %3562
  %3570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3571 = call i32 @fileno(ptr noundef %3570) #12
  %3572 = call i32 @isatty(i32 noundef %3571) #12
  %3573 = icmp ne i32 %3572, 0
  br i1 %3573, label %3574, label %3591

3574:                                             ; preds = %3569
  %3575 = load i32, ptr %65, align 4, !tbaa !5
  %3576 = call ptr @__errno_location() #13
  store i32 %3575, ptr %3576, align 4, !tbaa !5
  %3577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3578 = load i32, ptr @test_count, align 4, !tbaa !5
  %3579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3580 = load i32, ptr %3579, align 4, !tbaa !5
  %3581 = call ptr @s2n_strerror(i32 noundef %3580, ptr noundef @.str.4)
  %3582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3583 = load i32, ptr %3582, align 4, !tbaa !5
  %3584 = call ptr @s2n_strerror_debug(i32 noundef %3583, ptr noundef @.str.4)
  %3585 = call ptr @__errno_location() #13
  %3586 = load i32, ptr %3585, align 4, !tbaa !5
  %3587 = call ptr @strerror(i32 noundef %3586) #12
  %3588 = call ptr @__errno_location() #13
  %3589 = load i32, ptr %3588, align 4, !tbaa !5
  %3590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3577, ptr noundef @.str.2, i32 noundef %3578, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 144, ptr noundef %3581, ptr noundef %3584, ptr noundef %3587, i32 noundef %3589) #12
  br label %3608

3591:                                             ; preds = %3569, %3562
  %3592 = load i32, ptr %65, align 4, !tbaa !5
  %3593 = call ptr @__errno_location() #13
  store i32 %3592, ptr %3593, align 4, !tbaa !5
  %3594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3595 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %3597, ptr noundef @.str.4)
  %3599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3600 = load i32, ptr %3599, align 4, !tbaa !5
  %3601 = call ptr @s2n_strerror_debug(i32 noundef %3600, ptr noundef @.str.4)
  %3602 = call ptr @__errno_location() #13
  %3603 = load i32, ptr %3602, align 4, !tbaa !5
  %3604 = call ptr @strerror(i32 noundef %3603) #12
  %3605 = call ptr @__errno_location() #13
  %3606 = load i32, ptr %3605, align 4, !tbaa !5
  %3607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3594, ptr noundef @.str.5, i32 noundef %3595, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 144, ptr noundef %3598, ptr noundef %3601, ptr noundef %3604, i32 noundef %3606) #12
  br label %3608

3608:                                             ; preds = %3591, %3574
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #12
  br label %3609

3609:                                             ; preds = %3608
  br label %3610

3610:                                             ; preds = %3609
  call void @exit(i32 noundef 1) #14
  unreachable

3611:                                             ; No predecessors!
  br label %3612

3612:                                             ; preds = %3611
  br label %3613

3613:                                             ; preds = %3612, %3554
  br label %3614

3614:                                             ; preds = %3613
  br label %3615

3615:                                             ; preds = %3614
  br label %3616

3616:                                             ; preds = %3615
  %3617 = load i32, ptr @test_count, align 4, !tbaa !5
  %3618 = add nsw i32 %3617, 1
  store i32 %3618, ptr @test_count, align 4, !tbaa !5
  %3619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3620 = load i32, ptr %3619, align 4, !tbaa !5
  %3621 = call ptr @s2n_strerror_debug(i32 noundef %3620, ptr noundef @.str.4)
  %3622 = icmp eq ptr %3621, null
  br i1 %3622, label %3623, label %3676

3623:                                             ; preds = %3616
  br label %3624

3624:                                             ; preds = %3623
  br label %3625

3625:                                             ; preds = %3624
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #12
  %3626 = call ptr @__errno_location() #13
  %3627 = load i32, ptr %3626, align 4, !tbaa !5
  store i32 %3627, ptr %66, align 4, !tbaa !5
  %3628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3629 = call i32 @s2n_print_stacktrace(ptr noundef %3628)
  %3630 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3631 = trunc i8 %3630 to i1
  br i1 %3631, label %3632, label %3654

3632:                                             ; preds = %3625
  %3633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3634 = call i32 @fileno(ptr noundef %3633) #12
  %3635 = call i32 @isatty(i32 noundef %3634) #12
  %3636 = icmp ne i32 %3635, 0
  br i1 %3636, label %3637, label %3654

3637:                                             ; preds = %3632
  %3638 = load i32, ptr %66, align 4, !tbaa !5
  %3639 = call ptr @__errno_location() #13
  store i32 %3638, ptr %3639, align 4, !tbaa !5
  %3640 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3641 = load i32, ptr @test_count, align 4, !tbaa !5
  %3642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3643 = load i32, ptr %3642, align 4, !tbaa !5
  %3644 = call ptr @s2n_strerror(i32 noundef %3643, ptr noundef @.str.4)
  %3645 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3646 = load i32, ptr %3645, align 4, !tbaa !5
  %3647 = call ptr @s2n_strerror_debug(i32 noundef %3646, ptr noundef @.str.4)
  %3648 = call ptr @__errno_location() #13
  %3649 = load i32, ptr %3648, align 4, !tbaa !5
  %3650 = call ptr @strerror(i32 noundef %3649) #12
  %3651 = call ptr @__errno_location() #13
  %3652 = load i32, ptr %3651, align 4, !tbaa !5
  %3653 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3640, ptr noundef @.str.2, i32 noundef %3641, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 144, ptr noundef %3644, ptr noundef %3647, ptr noundef %3650, i32 noundef %3652) #12
  br label %3671

3654:                                             ; preds = %3632, %3625
  %3655 = load i32, ptr %66, align 4, !tbaa !5
  %3656 = call ptr @__errno_location() #13
  store i32 %3655, ptr %3656, align 4, !tbaa !5
  %3657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3658 = load i32, ptr @test_count, align 4, !tbaa !5
  %3659 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3660 = load i32, ptr %3659, align 4, !tbaa !5
  %3661 = call ptr @s2n_strerror(i32 noundef %3660, ptr noundef @.str.4)
  %3662 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3663 = load i32, ptr %3662, align 4, !tbaa !5
  %3664 = call ptr @s2n_strerror_debug(i32 noundef %3663, ptr noundef @.str.4)
  %3665 = call ptr @__errno_location() #13
  %3666 = load i32, ptr %3665, align 4, !tbaa !5
  %3667 = call ptr @strerror(i32 noundef %3666) #12
  %3668 = call ptr @__errno_location() #13
  %3669 = load i32, ptr %3668, align 4, !tbaa !5
  %3670 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3657, ptr noundef @.str.5, i32 noundef %3658, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 144, ptr noundef %3661, ptr noundef %3664, ptr noundef %3667, i32 noundef %3669) #12
  br label %3671

3671:                                             ; preds = %3654, %3637
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #12
  br label %3672

3672:                                             ; preds = %3671
  br label %3673

3673:                                             ; preds = %3672
  call void @exit(i32 noundef 1) #14
  unreachable

3674:                                             ; No predecessors!
  br label %3675

3675:                                             ; preds = %3674
  br label %3676

3676:                                             ; preds = %3675, %3616
  br label %3677

3677:                                             ; preds = %3676
  br label %3678

3678:                                             ; preds = %3677
  br label %3679

3679:                                             ; preds = %3678
  br label %3680

3680:                                             ; preds = %3679
  br label %3681

3681:                                             ; preds = %3680
  %3682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %3682, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %3683 = call ptr @__errno_location() #13
  store i32 0, ptr %3683, align 4, !tbaa !5
  br label %3684

3684:                                             ; preds = %3681
  br label %3685

3685:                                             ; preds = %3684
  br label %3686

3686:                                             ; preds = %3685
  br label %3687

3687:                                             ; preds = %3686
  br label %3688

3688:                                             ; preds = %3687
  %3689 = load i32, ptr @test_count, align 4, !tbaa !5
  %3690 = add nsw i32 %3689, 1
  store i32 %3690, ptr @test_count, align 4, !tbaa !5
  %3691 = load ptr, ptr %55, align 8, !tbaa !9
  %3692 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %3691)
  br i1 %3692, label %3693, label %3746

3693:                                             ; preds = %3688
  br label %3694

3694:                                             ; preds = %3693
  br label %3695

3695:                                             ; preds = %3694
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  %3696 = call ptr @__errno_location() #13
  %3697 = load i32, ptr %3696, align 4, !tbaa !5
  store i32 %3697, ptr %67, align 4, !tbaa !5
  %3698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3699 = call i32 @s2n_print_stacktrace(ptr noundef %3698)
  %3700 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3701 = trunc i8 %3700 to i1
  br i1 %3701, label %3702, label %3724

3702:                                             ; preds = %3695
  %3703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3704 = call i32 @fileno(ptr noundef %3703) #12
  %3705 = call i32 @isatty(i32 noundef %3704) #12
  %3706 = icmp ne i32 %3705, 0
  br i1 %3706, label %3707, label %3724

3707:                                             ; preds = %3702
  %3708 = load i32, ptr %67, align 4, !tbaa !5
  %3709 = call ptr @__errno_location() #13
  store i32 %3708, ptr %3709, align 4, !tbaa !5
  %3710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3711 = load i32, ptr @test_count, align 4, !tbaa !5
  %3712 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3713 = load i32, ptr %3712, align 4, !tbaa !5
  %3714 = call ptr @s2n_strerror(i32 noundef %3713, ptr noundef @.str.4)
  %3715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3716 = load i32, ptr %3715, align 4, !tbaa !5
  %3717 = call ptr @s2n_strerror_debug(i32 noundef %3716, ptr noundef @.str.4)
  %3718 = call ptr @__errno_location() #13
  %3719 = load i32, ptr %3718, align 4, !tbaa !5
  %3720 = call ptr @strerror(i32 noundef %3719) #12
  %3721 = call ptr @__errno_location() #13
  %3722 = load i32, ptr %3721, align 4, !tbaa !5
  %3723 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3710, ptr noundef @.str.2, i32 noundef %3711, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 146, ptr noundef %3714, ptr noundef %3717, ptr noundef %3720, i32 noundef %3722) #12
  br label %3741

3724:                                             ; preds = %3702, %3695
  %3725 = load i32, ptr %67, align 4, !tbaa !5
  %3726 = call ptr @__errno_location() #13
  store i32 %3725, ptr %3726, align 4, !tbaa !5
  %3727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3728 = load i32, ptr @test_count, align 4, !tbaa !5
  %3729 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3730 = load i32, ptr %3729, align 4, !tbaa !5
  %3731 = call ptr @s2n_strerror(i32 noundef %3730, ptr noundef @.str.4)
  %3732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3733 = load i32, ptr %3732, align 4, !tbaa !5
  %3734 = call ptr @s2n_strerror_debug(i32 noundef %3733, ptr noundef @.str.4)
  %3735 = call ptr @__errno_location() #13
  %3736 = load i32, ptr %3735, align 4, !tbaa !5
  %3737 = call ptr @strerror(i32 noundef %3736) #12
  %3738 = call ptr @__errno_location() #13
  %3739 = load i32, ptr %3738, align 4, !tbaa !5
  %3740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3727, ptr noundef @.str.5, i32 noundef %3728, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 146, ptr noundef %3731, ptr noundef %3734, ptr noundef %3737, i32 noundef %3739) #12
  br label %3741

3741:                                             ; preds = %3724, %3707
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  br label %3742

3742:                                             ; preds = %3741
  br label %3743

3743:                                             ; preds = %3742
  call void @exit(i32 noundef 1) #14
  unreachable

3744:                                             ; No predecessors!
  br label %3745

3745:                                             ; preds = %3744
  br label %3746

3746:                                             ; preds = %3745, %3688
  br label %3747

3747:                                             ; preds = %3746
  br label %3748

3748:                                             ; preds = %3747
  br label %3749

3749:                                             ; preds = %3748
  %3750 = load i32, ptr @test_count, align 4, !tbaa !5
  %3751 = add nsw i32 %3750, 1
  store i32 %3751, ptr @test_count, align 4, !tbaa !5
  %3752 = load ptr, ptr %55, align 8, !tbaa !9
  %3753 = call i32 @s2n_connection_free(ptr noundef %3752)
  %3754 = icmp eq i32 %3753, -1
  br i1 %3754, label %3755, label %3808

3755:                                             ; preds = %3749
  br label %3756

3756:                                             ; preds = %3755
  br label %3757

3757:                                             ; preds = %3756
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  %3758 = call ptr @__errno_location() #13
  %3759 = load i32, ptr %3758, align 4, !tbaa !5
  store i32 %3759, ptr %68, align 4, !tbaa !5
  %3760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3761 = call i32 @s2n_print_stacktrace(ptr noundef %3760)
  %3762 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3763 = trunc i8 %3762 to i1
  br i1 %3763, label %3764, label %3786

3764:                                             ; preds = %3757
  %3765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3766 = call i32 @fileno(ptr noundef %3765) #12
  %3767 = call i32 @isatty(i32 noundef %3766) #12
  %3768 = icmp ne i32 %3767, 0
  br i1 %3768, label %3769, label %3786

3769:                                             ; preds = %3764
  %3770 = load i32, ptr %68, align 4, !tbaa !5
  %3771 = call ptr @__errno_location() #13
  store i32 %3770, ptr %3771, align 4, !tbaa !5
  %3772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3773 = load i32, ptr @test_count, align 4, !tbaa !5
  %3774 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3775 = load i32, ptr %3774, align 4, !tbaa !5
  %3776 = call ptr @s2n_strerror(i32 noundef %3775, ptr noundef @.str.4)
  %3777 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3778 = load i32, ptr %3777, align 4, !tbaa !5
  %3779 = call ptr @s2n_strerror_debug(i32 noundef %3778, ptr noundef @.str.4)
  %3780 = call ptr @__errno_location() #13
  %3781 = load i32, ptr %3780, align 4, !tbaa !5
  %3782 = call ptr @strerror(i32 noundef %3781) #12
  %3783 = call ptr @__errno_location() #13
  %3784 = load i32, ptr %3783, align 4, !tbaa !5
  %3785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3772, ptr noundef @.str.2, i32 noundef %3773, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 148, ptr noundef %3776, ptr noundef %3779, ptr noundef %3782, i32 noundef %3784) #12
  br label %3803

3786:                                             ; preds = %3764, %3757
  %3787 = load i32, ptr %68, align 4, !tbaa !5
  %3788 = call ptr @__errno_location() #13
  store i32 %3787, ptr %3788, align 4, !tbaa !5
  %3789 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3790 = load i32, ptr @test_count, align 4, !tbaa !5
  %3791 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3792 = load i32, ptr %3791, align 4, !tbaa !5
  %3793 = call ptr @s2n_strerror(i32 noundef %3792, ptr noundef @.str.4)
  %3794 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3795 = load i32, ptr %3794, align 4, !tbaa !5
  %3796 = call ptr @s2n_strerror_debug(i32 noundef %3795, ptr noundef @.str.4)
  %3797 = call ptr @__errno_location() #13
  %3798 = load i32, ptr %3797, align 4, !tbaa !5
  %3799 = call ptr @strerror(i32 noundef %3798) #12
  %3800 = call ptr @__errno_location() #13
  %3801 = load i32, ptr %3800, align 4, !tbaa !5
  %3802 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3789, ptr noundef @.str.5, i32 noundef %3790, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 148, ptr noundef %3793, ptr noundef %3796, ptr noundef %3799, i32 noundef %3801) #12
  br label %3803

3803:                                             ; preds = %3786, %3769
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  br label %3804

3804:                                             ; preds = %3803
  br label %3805

3805:                                             ; preds = %3804
  call void @exit(i32 noundef 1) #14
  unreachable

3806:                                             ; No predecessors!
  br label %3807

3807:                                             ; preds = %3806
  br label %3808

3808:                                             ; preds = %3807, %3749
  br label %3809

3809:                                             ; preds = %3808
  br label %3810

3810:                                             ; preds = %3809
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #12
  store ptr null, ptr %69, align 8, !tbaa !9
  br label %3811

3811:                                             ; preds = %3810
  %3812 = load i32, ptr @test_count, align 4, !tbaa !5
  %3813 = add nsw i32 %3812, 1
  store i32 %3813, ptr @test_count, align 4, !tbaa !5
  %3814 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %3814, ptr %69, align 8, !tbaa !9
  %3815 = icmp eq ptr %3814, null
  br i1 %3815, label %3816, label %3869

3816:                                             ; preds = %3811
  br label %3817

3817:                                             ; preds = %3816
  br label %3818

3818:                                             ; preds = %3817
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #12
  %3819 = call ptr @__errno_location() #13
  %3820 = load i32, ptr %3819, align 4, !tbaa !5
  store i32 %3820, ptr %70, align 4, !tbaa !5
  %3821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3822 = call i32 @s2n_print_stacktrace(ptr noundef %3821)
  %3823 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3824 = trunc i8 %3823 to i1
  br i1 %3824, label %3825, label %3847

3825:                                             ; preds = %3818
  %3826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3827 = call i32 @fileno(ptr noundef %3826) #12
  %3828 = call i32 @isatty(i32 noundef %3827) #12
  %3829 = icmp ne i32 %3828, 0
  br i1 %3829, label %3830, label %3847

3830:                                             ; preds = %3825
  %3831 = load i32, ptr %70, align 4, !tbaa !5
  %3832 = call ptr @__errno_location() #13
  store i32 %3831, ptr %3832, align 4, !tbaa !5
  %3833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3834 = load i32, ptr @test_count, align 4, !tbaa !5
  %3835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3836 = load i32, ptr %3835, align 4, !tbaa !5
  %3837 = call ptr @s2n_strerror(i32 noundef %3836, ptr noundef @.str.4)
  %3838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3839 = load i32, ptr %3838, align 4, !tbaa !5
  %3840 = call ptr @s2n_strerror_debug(i32 noundef %3839, ptr noundef @.str.4)
  %3841 = call ptr @__errno_location() #13
  %3842 = load i32, ptr %3841, align 4, !tbaa !5
  %3843 = call ptr @strerror(i32 noundef %3842) #12
  %3844 = call ptr @__errno_location() #13
  %3845 = load i32, ptr %3844, align 4, !tbaa !5
  %3846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3833, ptr noundef @.str.2, i32 noundef %3834, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 155, ptr noundef %3837, ptr noundef %3840, ptr noundef %3843, i32 noundef %3845) #12
  br label %3864

3847:                                             ; preds = %3825, %3818
  %3848 = load i32, ptr %70, align 4, !tbaa !5
  %3849 = call ptr @__errno_location() #13
  store i32 %3848, ptr %3849, align 4, !tbaa !5
  %3850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3851 = load i32, ptr @test_count, align 4, !tbaa !5
  %3852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3853 = load i32, ptr %3852, align 4, !tbaa !5
  %3854 = call ptr @s2n_strerror(i32 noundef %3853, ptr noundef @.str.4)
  %3855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3856 = load i32, ptr %3855, align 4, !tbaa !5
  %3857 = call ptr @s2n_strerror_debug(i32 noundef %3856, ptr noundef @.str.4)
  %3858 = call ptr @__errno_location() #13
  %3859 = load i32, ptr %3858, align 4, !tbaa !5
  %3860 = call ptr @strerror(i32 noundef %3859) #12
  %3861 = call ptr @__errno_location() #13
  %3862 = load i32, ptr %3861, align 4, !tbaa !5
  %3863 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3850, ptr noundef @.str.5, i32 noundef %3851, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 155, ptr noundef %3854, ptr noundef %3857, ptr noundef %3860, i32 noundef %3862) #12
  br label %3864

3864:                                             ; preds = %3847, %3830
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #12
  br label %3865

3865:                                             ; preds = %3864
  br label %3866

3866:                                             ; preds = %3865
  call void @exit(i32 noundef 1) #14
  unreachable

3867:                                             ; No predecessors!
  br label %3868

3868:                                             ; preds = %3867
  br label %3869

3869:                                             ; preds = %3868, %3811
  br label %3870

3870:                                             ; preds = %3869
  br label %3871

3871:                                             ; preds = %3870
  %3872 = load ptr, ptr %69, align 8, !tbaa !9
  %3873 = getelementptr inbounds %struct.s2n_connection, ptr %3872, i32 0, i32 2
  store ptr %54, ptr %3873, align 8, !tbaa !47
  br label %3874

3874:                                             ; preds = %3871
  %3875 = load i32, ptr @test_count, align 4, !tbaa !5
  %3876 = add nsw i32 %3875, 1
  store i32 %3876, ptr @test_count, align 4, !tbaa !5
  %3877 = load ptr, ptr %69, align 8, !tbaa !9
  %3878 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %3877, i8 noundef zeroext 34)
  %3879 = icmp eq i32 %3878, -1
  br i1 %3879, label %3880, label %3933

3880:                                             ; preds = %3874
  br label %3881

3881:                                             ; preds = %3880
  br label %3882

3882:                                             ; preds = %3881
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #12
  %3883 = call ptr @__errno_location() #13
  %3884 = load i32, ptr %3883, align 4, !tbaa !5
  store i32 %3884, ptr %71, align 4, !tbaa !5
  %3885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3886 = call i32 @s2n_print_stacktrace(ptr noundef %3885)
  %3887 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3888 = trunc i8 %3887 to i1
  br i1 %3888, label %3889, label %3911

3889:                                             ; preds = %3882
  %3890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3891 = call i32 @fileno(ptr noundef %3890) #12
  %3892 = call i32 @isatty(i32 noundef %3891) #12
  %3893 = icmp ne i32 %3892, 0
  br i1 %3893, label %3894, label %3911

3894:                                             ; preds = %3889
  %3895 = load i32, ptr %71, align 4, !tbaa !5
  %3896 = call ptr @__errno_location() #13
  store i32 %3895, ptr %3896, align 4, !tbaa !5
  %3897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3898 = load i32, ptr @test_count, align 4, !tbaa !5
  %3899 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3900 = load i32, ptr %3899, align 4, !tbaa !5
  %3901 = call ptr @s2n_strerror(i32 noundef %3900, ptr noundef @.str.4)
  %3902 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3903 = load i32, ptr %3902, align 4, !tbaa !5
  %3904 = call ptr @s2n_strerror_debug(i32 noundef %3903, ptr noundef @.str.4)
  %3905 = call ptr @__errno_location() #13
  %3906 = load i32, ptr %3905, align 4, !tbaa !5
  %3907 = call ptr @strerror(i32 noundef %3906) #12
  %3908 = call ptr @__errno_location() #13
  %3909 = load i32, ptr %3908, align 4, !tbaa !5
  %3910 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3897, ptr noundef @.str.2, i32 noundef %3898, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 157, ptr noundef %3901, ptr noundef %3904, ptr noundef %3907, i32 noundef %3909) #12
  br label %3928

3911:                                             ; preds = %3889, %3882
  %3912 = load i32, ptr %71, align 4, !tbaa !5
  %3913 = call ptr @__errno_location() #13
  store i32 %3912, ptr %3913, align 4, !tbaa !5
  %3914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3915 = load i32, ptr @test_count, align 4, !tbaa !5
  %3916 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3917 = load i32, ptr %3916, align 4, !tbaa !5
  %3918 = call ptr @s2n_strerror(i32 noundef %3917, ptr noundef @.str.4)
  %3919 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3920 = load i32, ptr %3919, align 4, !tbaa !5
  %3921 = call ptr @s2n_strerror_debug(i32 noundef %3920, ptr noundef @.str.4)
  %3922 = call ptr @__errno_location() #13
  %3923 = load i32, ptr %3922, align 4, !tbaa !5
  %3924 = call ptr @strerror(i32 noundef %3923) #12
  %3925 = call ptr @__errno_location() #13
  %3926 = load i32, ptr %3925, align 4, !tbaa !5
  %3927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3914, ptr noundef @.str.5, i32 noundef %3915, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 157, ptr noundef %3918, ptr noundef %3921, ptr noundef %3924, i32 noundef %3926) #12
  br label %3928

3928:                                             ; preds = %3911, %3894
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #12
  br label %3929

3929:                                             ; preds = %3928
  br label %3930

3930:                                             ; preds = %3929
  call void @exit(i32 noundef 1) #14
  unreachable

3931:                                             ; No predecessors!
  br label %3932

3932:                                             ; preds = %3931
  br label %3933

3933:                                             ; preds = %3932, %3874
  br label %3934

3934:                                             ; preds = %3933
  br label %3935

3935:                                             ; preds = %3934
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #12
  store ptr null, ptr %72, align 8, !tbaa !9
  br label %3936

3936:                                             ; preds = %3935
  %3937 = load i32, ptr @test_count, align 4, !tbaa !5
  %3938 = add nsw i32 %3937, 1
  store i32 %3938, ptr @test_count, align 4, !tbaa !5
  %3939 = load ptr, ptr %69, align 8, !tbaa !9
  %3940 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %3939, ptr noundef %72)
  %3941 = icmp eq i32 %3940, -1
  br i1 %3941, label %3942, label %3995

3942:                                             ; preds = %3936
  br label %3943

3943:                                             ; preds = %3942
  br label %3944

3944:                                             ; preds = %3943
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  %3945 = call ptr @__errno_location() #13
  %3946 = load i32, ptr %3945, align 4, !tbaa !5
  store i32 %3946, ptr %73, align 4, !tbaa !5
  %3947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3948 = call i32 @s2n_print_stacktrace(ptr noundef %3947)
  %3949 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3950 = trunc i8 %3949 to i1
  br i1 %3950, label %3951, label %3973

3951:                                             ; preds = %3944
  %3952 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3953 = call i32 @fileno(ptr noundef %3952) #12
  %3954 = call i32 @isatty(i32 noundef %3953) #12
  %3955 = icmp ne i32 %3954, 0
  br i1 %3955, label %3956, label %3973

3956:                                             ; preds = %3951
  %3957 = load i32, ptr %73, align 4, !tbaa !5
  %3958 = call ptr @__errno_location() #13
  store i32 %3957, ptr %3958, align 4, !tbaa !5
  %3959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3960 = load i32, ptr @test_count, align 4, !tbaa !5
  %3961 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3962 = load i32, ptr %3961, align 4, !tbaa !5
  %3963 = call ptr @s2n_strerror(i32 noundef %3962, ptr noundef @.str.4)
  %3964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3965 = load i32, ptr %3964, align 4, !tbaa !5
  %3966 = call ptr @s2n_strerror_debug(i32 noundef %3965, ptr noundef @.str.4)
  %3967 = call ptr @__errno_location() #13
  %3968 = load i32, ptr %3967, align 4, !tbaa !5
  %3969 = call ptr @strerror(i32 noundef %3968) #12
  %3970 = call ptr @__errno_location() #13
  %3971 = load i32, ptr %3970, align 4, !tbaa !5
  %3972 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3959, ptr noundef @.str.2, i32 noundef %3960, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 160, ptr noundef %3963, ptr noundef %3966, ptr noundef %3969, i32 noundef %3971) #12
  br label %3990

3973:                                             ; preds = %3951, %3944
  %3974 = load i32, ptr %73, align 4, !tbaa !5
  %3975 = call ptr @__errno_location() #13
  store i32 %3974, ptr %3975, align 4, !tbaa !5
  %3976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3977 = load i32, ptr @test_count, align 4, !tbaa !5
  %3978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3979 = load i32, ptr %3978, align 4, !tbaa !5
  %3980 = call ptr @s2n_strerror(i32 noundef %3979, ptr noundef @.str.4)
  %3981 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3982 = load i32, ptr %3981, align 4, !tbaa !5
  %3983 = call ptr @s2n_strerror_debug(i32 noundef %3982, ptr noundef @.str.4)
  %3984 = call ptr @__errno_location() #13
  %3985 = load i32, ptr %3984, align 4, !tbaa !5
  %3986 = call ptr @strerror(i32 noundef %3985) #12
  %3987 = call ptr @__errno_location() #13
  %3988 = load i32, ptr %3987, align 4, !tbaa !5
  %3989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3976, ptr noundef @.str.5, i32 noundef %3977, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 160, ptr noundef %3980, ptr noundef %3983, ptr noundef %3986, i32 noundef %3988) #12
  br label %3990

3990:                                             ; preds = %3973, %3956
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  br label %3991

3991:                                             ; preds = %3990
  br label %3992

3992:                                             ; preds = %3991
  call void @exit(i32 noundef 1) #14
  unreachable

3993:                                             ; No predecessors!
  br label %3994

3994:                                             ; preds = %3993
  br label %3995

3995:                                             ; preds = %3994, %3936
  br label %3996

3996:                                             ; preds = %3995
  br label %3997

3997:                                             ; preds = %3996
  br label %3998

3998:                                             ; preds = %3997
  %3999 = load i32, ptr @test_count, align 4, !tbaa !5
  %4000 = add nsw i32 %3999, 1
  store i32 %4000, ptr @test_count, align 4, !tbaa !5
  %4001 = load ptr, ptr %72, align 8, !tbaa !9
  %4002 = icmp eq ptr %4001, null
  br i1 %4002, label %4003, label %4056

4003:                                             ; preds = %3998
  br label %4004

4004:                                             ; preds = %4003
  br label %4005

4005:                                             ; preds = %4004
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #12
  %4006 = call ptr @__errno_location() #13
  %4007 = load i32, ptr %4006, align 4, !tbaa !5
  store i32 %4007, ptr %74, align 4, !tbaa !5
  %4008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4009 = call i32 @s2n_print_stacktrace(ptr noundef %4008)
  %4010 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4011 = trunc i8 %4010 to i1
  br i1 %4011, label %4012, label %4034

4012:                                             ; preds = %4005
  %4013 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4014 = call i32 @fileno(ptr noundef %4013) #12
  %4015 = call i32 @isatty(i32 noundef %4014) #12
  %4016 = icmp ne i32 %4015, 0
  br i1 %4016, label %4017, label %4034

4017:                                             ; preds = %4012
  %4018 = load i32, ptr %74, align 4, !tbaa !5
  %4019 = call ptr @__errno_location() #13
  store i32 %4018, ptr %4019, align 4, !tbaa !5
  %4020 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4021 = load i32, ptr @test_count, align 4, !tbaa !5
  %4022 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4023 = load i32, ptr %4022, align 4, !tbaa !5
  %4024 = call ptr @s2n_strerror(i32 noundef %4023, ptr noundef @.str.4)
  %4025 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4026 = load i32, ptr %4025, align 4, !tbaa !5
  %4027 = call ptr @s2n_strerror_debug(i32 noundef %4026, ptr noundef @.str.4)
  %4028 = call ptr @__errno_location() #13
  %4029 = load i32, ptr %4028, align 4, !tbaa !5
  %4030 = call ptr @strerror(i32 noundef %4029) #12
  %4031 = call ptr @__errno_location() #13
  %4032 = load i32, ptr %4031, align 4, !tbaa !5
  %4033 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4020, ptr noundef @.str.2, i32 noundef %4021, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 161, ptr noundef %4024, ptr noundef %4027, ptr noundef %4030, i32 noundef %4032) #12
  br label %4051

4034:                                             ; preds = %4012, %4005
  %4035 = load i32, ptr %74, align 4, !tbaa !5
  %4036 = call ptr @__errno_location() #13
  store i32 %4035, ptr %4036, align 4, !tbaa !5
  %4037 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4038 = load i32, ptr @test_count, align 4, !tbaa !5
  %4039 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4040 = load i32, ptr %4039, align 4, !tbaa !5
  %4041 = call ptr @s2n_strerror(i32 noundef %4040, ptr noundef @.str.4)
  %4042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4043 = load i32, ptr %4042, align 4, !tbaa !5
  %4044 = call ptr @s2n_strerror_debug(i32 noundef %4043, ptr noundef @.str.4)
  %4045 = call ptr @__errno_location() #13
  %4046 = load i32, ptr %4045, align 4, !tbaa !5
  %4047 = call ptr @strerror(i32 noundef %4046) #12
  %4048 = call ptr @__errno_location() #13
  %4049 = load i32, ptr %4048, align 4, !tbaa !5
  %4050 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4037, ptr noundef @.str.5, i32 noundef %4038, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 161, ptr noundef %4041, ptr noundef %4044, ptr noundef %4047, i32 noundef %4049) #12
  br label %4051

4051:                                             ; preds = %4034, %4017
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  br label %4052

4052:                                             ; preds = %4051
  br label %4053

4053:                                             ; preds = %4052
  call void @exit(i32 noundef 1) #14
  unreachable

4054:                                             ; No predecessors!
  br label %4055

4055:                                             ; preds = %4054
  br label %4056

4056:                                             ; preds = %4055, %3998
  br label %4057

4057:                                             ; preds = %4056
  br label %4058

4058:                                             ; preds = %4057
  br label %4059

4059:                                             ; preds = %4058
  %4060 = load i32, ptr @test_count, align 4, !tbaa !5
  %4061 = add nsw i32 %4060, 1
  store i32 %4061, ptr @test_count, align 4, !tbaa !5
  %4062 = load ptr, ptr %69, align 8, !tbaa !9
  %4063 = getelementptr inbounds %struct.s2n_connection, ptr %4062, i32 0, i32 31
  %4064 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4063, i32 0, i32 1
  %4065 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4064, i32 0, i32 0
  %4066 = load ptr, ptr %4065, align 8, !tbaa !15
  %4067 = icmp eq ptr %4066, null
  br i1 %4067, label %4121, label %4068

4068:                                             ; preds = %4059
  br label %4069

4069:                                             ; preds = %4068
  br label %4070

4070:                                             ; preds = %4069
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #12
  %4071 = call ptr @__errno_location() #13
  %4072 = load i32, ptr %4071, align 4, !tbaa !5
  store i32 %4072, ptr %75, align 4, !tbaa !5
  %4073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4074 = call i32 @s2n_print_stacktrace(ptr noundef %4073)
  %4075 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4076 = trunc i8 %4075 to i1
  br i1 %4076, label %4077, label %4099

4077:                                             ; preds = %4070
  %4078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4079 = call i32 @fileno(ptr noundef %4078) #12
  %4080 = call i32 @isatty(i32 noundef %4079) #12
  %4081 = icmp ne i32 %4080, 0
  br i1 %4081, label %4082, label %4099

4082:                                             ; preds = %4077
  %4083 = load i32, ptr %75, align 4, !tbaa !5
  %4084 = call ptr @__errno_location() #13
  store i32 %4083, ptr %4084, align 4, !tbaa !5
  %4085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4086 = load i32, ptr @test_count, align 4, !tbaa !5
  %4087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4088 = load i32, ptr %4087, align 4, !tbaa !5
  %4089 = call ptr @s2n_strerror(i32 noundef %4088, ptr noundef @.str.4)
  %4090 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4091 = load i32, ptr %4090, align 4, !tbaa !5
  %4092 = call ptr @s2n_strerror_debug(i32 noundef %4091, ptr noundef @.str.4)
  %4093 = call ptr @__errno_location() #13
  %4094 = load i32, ptr %4093, align 4, !tbaa !5
  %4095 = call ptr @strerror(i32 noundef %4094) #12
  %4096 = call ptr @__errno_location() #13
  %4097 = load i32, ptr %4096, align 4, !tbaa !5
  %4098 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4085, ptr noundef @.str.2, i32 noundef %4086, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 164, ptr noundef %4089, ptr noundef %4092, ptr noundef %4095, i32 noundef %4097) #12
  br label %4116

4099:                                             ; preds = %4077, %4070
  %4100 = load i32, ptr %75, align 4, !tbaa !5
  %4101 = call ptr @__errno_location() #13
  store i32 %4100, ptr %4101, align 4, !tbaa !5
  %4102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4103 = load i32, ptr @test_count, align 4, !tbaa !5
  %4104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4105 = load i32, ptr %4104, align 4, !tbaa !5
  %4106 = call ptr @s2n_strerror(i32 noundef %4105, ptr noundef @.str.4)
  %4107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4108 = load i32, ptr %4107, align 4, !tbaa !5
  %4109 = call ptr @s2n_strerror_debug(i32 noundef %4108, ptr noundef @.str.4)
  %4110 = call ptr @__errno_location() #13
  %4111 = load i32, ptr %4110, align 4, !tbaa !5
  %4112 = call ptr @strerror(i32 noundef %4111) #12
  %4113 = call ptr @__errno_location() #13
  %4114 = load i32, ptr %4113, align 4, !tbaa !5
  %4115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4102, ptr noundef @.str.5, i32 noundef %4103, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 164, ptr noundef %4106, ptr noundef %4109, ptr noundef %4112, i32 noundef %4114) #12
  br label %4116

4116:                                             ; preds = %4099, %4082
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #12
  br label %4117

4117:                                             ; preds = %4116
  br label %4118

4118:                                             ; preds = %4117
  call void @exit(i32 noundef 1) #14
  unreachable

4119:                                             ; No predecessors!
  br label %4120

4120:                                             ; preds = %4119
  br label %4121

4121:                                             ; preds = %4120, %4059
  br label %4122

4122:                                             ; preds = %4121
  br label %4123

4123:                                             ; preds = %4122
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #12
  %4124 = load ptr, ptr %69, align 8, !tbaa !9
  %4125 = getelementptr inbounds %struct.s2n_connection, ptr %4124, i32 0, i32 31
  %4126 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4125, i32 0, i32 4
  store ptr %4126, ptr %76, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %4127 = load ptr, ptr %72, align 8, !tbaa !9
  %4128 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %4127, i32 0, i32 3
  %4129 = load ptr, ptr %4128, align 8, !tbaa !48
  %4130 = getelementptr inbounds ptr, ptr %4129, i64 1
  %4131 = load ptr, ptr %4130, align 8, !tbaa !9
  store ptr %4131, ptr %77, align 8, !tbaa !9
  %4132 = load ptr, ptr %77, align 8, !tbaa !9
  %4133 = load ptr, ptr %76, align 8, !tbaa !9
  %4134 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4133, i32 0, i32 0
  store ptr %4132, ptr %4134, align 8, !tbaa !50
  %4135 = load ptr, ptr %77, align 8, !tbaa !9
  %4136 = getelementptr inbounds %struct.s2n_kem_group, ptr %4135, i32 0, i32 3
  %4137 = load ptr, ptr %4136, align 8, !tbaa !51
  %4138 = load ptr, ptr %76, align 8, !tbaa !9
  %4139 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4138, i32 0, i32 1
  %4140 = getelementptr inbounds %struct.s2n_kem_params, ptr %4139, i32 0, i32 0
  store ptr %4137, ptr %4140, align 8, !tbaa !53
  %4141 = load ptr, ptr %77, align 8, !tbaa !9
  %4142 = getelementptr inbounds %struct.s2n_kem_group, ptr %4141, i32 0, i32 2
  %4143 = load ptr, ptr %4142, align 8, !tbaa !54
  %4144 = load ptr, ptr %76, align 8, !tbaa !9
  %4145 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4144, i32 0, i32 2
  %4146 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4145, i32 0, i32 0
  store ptr %4143, ptr %4146, align 8, !tbaa !55
  br label %4147

4147:                                             ; preds = %4123
  %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 %69, 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 6
  %4153 = getelementptr inbounds [8 x ptr], ptr %4152, i64 0, i64 0
  %4154 = load ptr, ptr %4153, align 8, !tbaa !9
  %4155 = icmp eq ptr %4154, null
  br i1 %4155, label %4209, label %4156

4156:                                             ; preds = %4147
  br label %4157

4157:                                             ; preds = %4156
  br label %4158

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

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

4170:                                             ; preds = %4165
  %4171 = load i32, ptr %78, align 4, !tbaa !5
  %4172 = call ptr @__errno_location() #13
  store i32 %4171, ptr %4172, align 4, !tbaa !5
  %4173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4174 = load i32, ptr @test_count, align 4, !tbaa !5
  %4175 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4176 = load i32, ptr %4175, align 4, !tbaa !5
  %4177 = call ptr @s2n_strerror(i32 noundef %4176, ptr noundef @.str.4)
  %4178 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4179 = load i32, ptr %4178, align 4, !tbaa !5
  %4180 = call ptr @s2n_strerror_debug(i32 noundef %4179, ptr noundef @.str.4)
  %4181 = call ptr @__errno_location() #13
  %4182 = load i32, ptr %4181, align 4, !tbaa !5
  %4183 = call ptr @strerror(i32 noundef %4182) #12
  %4184 = call ptr @__errno_location() #13
  %4185 = load i32, ptr %4184, align 4, !tbaa !5
  %4186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4173, ptr noundef @.str.2, i32 noundef %4174, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 172, ptr noundef %4177, ptr noundef %4180, ptr noundef %4183, i32 noundef %4185) #12
  br label %4204

4187:                                             ; preds = %4165, %4158
  %4188 = load i32, ptr %78, align 4, !tbaa !5
  %4189 = call ptr @__errno_location() #13
  store i32 %4188, ptr %4189, align 4, !tbaa !5
  %4190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4191 = load i32, ptr @test_count, align 4, !tbaa !5
  %4192 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4193 = load i32, ptr %4192, align 4, !tbaa !5
  %4194 = call ptr @s2n_strerror(i32 noundef %4193, ptr noundef @.str.4)
  %4195 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4196 = load i32, ptr %4195, align 4, !tbaa !5
  %4197 = call ptr @s2n_strerror_debug(i32 noundef %4196, ptr noundef @.str.4)
  %4198 = call ptr @__errno_location() #13
  %4199 = load i32, ptr %4198, align 4, !tbaa !5
  %4200 = call ptr @strerror(i32 noundef %4199) #12
  %4201 = call ptr @__errno_location() #13
  %4202 = load i32, ptr %4201, align 4, !tbaa !5
  %4203 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4190, ptr noundef @.str.5, i32 noundef %4191, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 172, ptr noundef %4194, ptr noundef %4197, ptr noundef %4200, i32 noundef %4202) #12
  br label %4204

4204:                                             ; preds = %4187, %4170
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #12
  br label %4205

4205:                                             ; preds = %4204
  br label %4206

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

4207:                                             ; No predecessors!
  br label %4208

4208:                                             ; preds = %4207
  br label %4209

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

4210:                                             ; preds = %4209
  br label %4211

4211:                                             ; preds = %4210
  %4212 = load ptr, ptr %77, align 8, !tbaa !9
  %4213 = load ptr, ptr %69, align 8, !tbaa !9
  %4214 = getelementptr inbounds %struct.s2n_connection, ptr %4213, i32 0, i32 31
  %4215 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4214, i32 0, i32 6
  %4216 = getelementptr inbounds [8 x ptr], ptr %4215, i64 0, i64 1
  store ptr %4212, ptr %4216, align 8, !tbaa !9
  br label %4217

4217:                                             ; preds = %4211
  %4218 = load i32, ptr @test_count, align 4, !tbaa !5
  %4219 = add nsw i32 %4218, 1
  store i32 %4219, ptr @test_count, align 4, !tbaa !5
  %4220 = load ptr, ptr %69, align 8, !tbaa !9
  %4221 = getelementptr inbounds %struct.s2n_connection, ptr %4220, i32 0, i32 31
  %4222 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4221, i32 0, i32 5
  %4223 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4222, i32 0, i32 0
  %4224 = load ptr, ptr %4223, align 8, !tbaa !56
  %4225 = icmp eq ptr %4224, null
  br i1 %4225, label %4279, label %4226

4226:                                             ; preds = %4217
  br label %4227

4227:                                             ; preds = %4226
  br label %4228

4228:                                             ; preds = %4227
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  %4229 = call ptr @__errno_location() #13
  %4230 = load i32, ptr %4229, align 4, !tbaa !5
  store i32 %4230, ptr %79, align 4, !tbaa !5
  %4231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4232 = call i32 @s2n_print_stacktrace(ptr noundef %4231)
  %4233 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4234 = trunc i8 %4233 to i1
  br i1 %4234, label %4235, label %4257

4235:                                             ; preds = %4228
  %4236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4237 = call i32 @fileno(ptr noundef %4236) #12
  %4238 = call i32 @isatty(i32 noundef %4237) #12
  %4239 = icmp ne i32 %4238, 0
  br i1 %4239, label %4240, label %4257

4240:                                             ; preds = %4235
  %4241 = load i32, ptr %79, align 4, !tbaa !5
  %4242 = call ptr @__errno_location() #13
  store i32 %4241, ptr %4242, align 4, !tbaa !5
  %4243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4244 = load i32, ptr @test_count, align 4, !tbaa !5
  %4245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4246 = load i32, ptr %4245, align 4, !tbaa !5
  %4247 = call ptr @s2n_strerror(i32 noundef %4246, ptr noundef @.str.4)
  %4248 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4249 = load i32, ptr %4248, align 4, !tbaa !5
  %4250 = call ptr @s2n_strerror_debug(i32 noundef %4249, ptr noundef @.str.4)
  %4251 = call ptr @__errno_location() #13
  %4252 = load i32, ptr %4251, align 4, !tbaa !5
  %4253 = call ptr @strerror(i32 noundef %4252) #12
  %4254 = call ptr @__errno_location() #13
  %4255 = load i32, ptr %4254, align 4, !tbaa !5
  %4256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4243, ptr noundef @.str.2, i32 noundef %4244, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 176, ptr noundef %4247, ptr noundef %4250, ptr noundef %4253, i32 noundef %4255) #12
  br label %4274

4257:                                             ; preds = %4235, %4228
  %4258 = load i32, ptr %79, align 4, !tbaa !5
  %4259 = call ptr @__errno_location() #13
  store i32 %4258, ptr %4259, align 4, !tbaa !5
  %4260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4261 = load i32, ptr @test_count, align 4, !tbaa !5
  %4262 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4263 = load i32, ptr %4262, align 4, !tbaa !5
  %4264 = call ptr @s2n_strerror(i32 noundef %4263, ptr noundef @.str.4)
  %4265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4266 = load i32, ptr %4265, align 4, !tbaa !5
  %4267 = call ptr @s2n_strerror_debug(i32 noundef %4266, ptr noundef @.str.4)
  %4268 = call ptr @__errno_location() #13
  %4269 = load i32, ptr %4268, align 4, !tbaa !5
  %4270 = call ptr @strerror(i32 noundef %4269) #12
  %4271 = call ptr @__errno_location() #13
  %4272 = load i32, ptr %4271, align 4, !tbaa !5
  %4273 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4260, ptr noundef @.str.5, i32 noundef %4261, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 176, ptr noundef %4264, ptr noundef %4267, ptr noundef %4270, i32 noundef %4272) #12
  br label %4274

4274:                                             ; preds = %4257, %4240
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  br label %4275

4275:                                             ; preds = %4274
  br label %4276

4276:                                             ; preds = %4275
  call void @exit(i32 noundef 1) #14
  unreachable

4277:                                             ; No predecessors!
  br label %4278

4278:                                             ; preds = %4277
  br label %4279

4279:                                             ; preds = %4278, %4217
  br label %4280

4280:                                             ; preds = %4279
  br label %4281

4281:                                             ; preds = %4280
  br label %4282

4282:                                             ; preds = %4281
  %4283 = load i32, ptr @test_count, align 4, !tbaa !5
  %4284 = add nsw i32 %4283, 1
  store i32 %4284, ptr @test_count, align 4, !tbaa !5
  %4285 = load ptr, ptr %69, align 8, !tbaa !9
  %4286 = getelementptr inbounds %struct.s2n_connection, ptr %4285, i32 0, i32 31
  %4287 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4286, i32 0, i32 5
  %4288 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4287, i32 0, i32 1
  %4289 = getelementptr inbounds %struct.s2n_kem_params, ptr %4288, i32 0, i32 0
  %4290 = load ptr, ptr %4289, align 8, !tbaa !57
  %4291 = icmp eq ptr %4290, null
  br i1 %4291, label %4345, label %4292

4292:                                             ; preds = %4282
  br label %4293

4293:                                             ; preds = %4292
  br label %4294

4294:                                             ; preds = %4293
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #12
  %4295 = call ptr @__errno_location() #13
  %4296 = load i32, ptr %4295, align 4, !tbaa !5
  store i32 %4296, ptr %80, align 4, !tbaa !5
  %4297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4298 = call i32 @s2n_print_stacktrace(ptr noundef %4297)
  %4299 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4300 = trunc i8 %4299 to i1
  br i1 %4300, label %4301, label %4323

4301:                                             ; preds = %4294
  %4302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4303 = call i32 @fileno(ptr noundef %4302) #12
  %4304 = call i32 @isatty(i32 noundef %4303) #12
  %4305 = icmp ne i32 %4304, 0
  br i1 %4305, label %4306, label %4323

4306:                                             ; preds = %4301
  %4307 = load i32, ptr %80, align 4, !tbaa !5
  %4308 = call ptr @__errno_location() #13
  store i32 %4307, ptr %4308, align 4, !tbaa !5
  %4309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4310 = load i32, ptr @test_count, align 4, !tbaa !5
  %4311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4312 = load i32, ptr %4311, align 4, !tbaa !5
  %4313 = call ptr @s2n_strerror(i32 noundef %4312, ptr noundef @.str.4)
  %4314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4315 = load i32, ptr %4314, align 4, !tbaa !5
  %4316 = call ptr @s2n_strerror_debug(i32 noundef %4315, ptr noundef @.str.4)
  %4317 = call ptr @__errno_location() #13
  %4318 = load i32, ptr %4317, align 4, !tbaa !5
  %4319 = call ptr @strerror(i32 noundef %4318) #12
  %4320 = call ptr @__errno_location() #13
  %4321 = load i32, ptr %4320, align 4, !tbaa !5
  %4322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4309, ptr noundef @.str.2, i32 noundef %4310, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 177, ptr noundef %4313, ptr noundef %4316, ptr noundef %4319, i32 noundef %4321) #12
  br label %4340

4323:                                             ; preds = %4301, %4294
  %4324 = load i32, ptr %80, align 4, !tbaa !5
  %4325 = call ptr @__errno_location() #13
  store i32 %4324, ptr %4325, align 4, !tbaa !5
  %4326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4327 = load i32, ptr @test_count, align 4, !tbaa !5
  %4328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4329 = load i32, ptr %4328, align 4, !tbaa !5
  %4330 = call ptr @s2n_strerror(i32 noundef %4329, ptr noundef @.str.4)
  %4331 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4332 = load i32, ptr %4331, align 4, !tbaa !5
  %4333 = call ptr @s2n_strerror_debug(i32 noundef %4332, ptr noundef @.str.4)
  %4334 = call ptr @__errno_location() #13
  %4335 = load i32, ptr %4334, align 4, !tbaa !5
  %4336 = call ptr @strerror(i32 noundef %4335) #12
  %4337 = call ptr @__errno_location() #13
  %4338 = load i32, ptr %4337, align 4, !tbaa !5
  %4339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4326, ptr noundef @.str.5, i32 noundef %4327, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 177, ptr noundef %4330, ptr noundef %4333, ptr noundef %4336, i32 noundef %4338) #12
  br label %4340

4340:                                             ; preds = %4323, %4306
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  br label %4341

4341:                                             ; preds = %4340
  br label %4342

4342:                                             ; preds = %4341
  call void @exit(i32 noundef 1) #14
  unreachable

4343:                                             ; No predecessors!
  br label %4344

4344:                                             ; preds = %4343
  br label %4345

4345:                                             ; preds = %4344, %4282
  br label %4346

4346:                                             ; preds = %4345
  br label %4347

4347:                                             ; preds = %4346
  br label %4348

4348:                                             ; preds = %4347
  %4349 = load i32, ptr @test_count, align 4, !tbaa !5
  %4350 = add nsw i32 %4349, 1
  store i32 %4350, ptr @test_count, align 4, !tbaa !5
  %4351 = load ptr, ptr %69, align 8, !tbaa !9
  %4352 = getelementptr inbounds %struct.s2n_connection, ptr %4351, i32 0, i32 31
  %4353 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4352, i32 0, i32 5
  %4354 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4353, i32 0, i32 1
  %4355 = getelementptr inbounds %struct.s2n_kem_params, ptr %4354, i32 0, i32 1
  %4356 = getelementptr inbounds %struct.s2n_blob, ptr %4355, i32 0, i32 0
  %4357 = load ptr, ptr %4356, align 8, !tbaa !58
  %4358 = icmp eq ptr %4357, null
  br i1 %4358, label %4412, label %4359

4359:                                             ; preds = %4348
  br label %4360

4360:                                             ; preds = %4359
  br label %4361

4361:                                             ; preds = %4360
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #12
  %4362 = call ptr @__errno_location() #13
  %4363 = load i32, ptr %4362, align 4, !tbaa !5
  store i32 %4363, ptr %81, align 4, !tbaa !5
  %4364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4365 = call i32 @s2n_print_stacktrace(ptr noundef %4364)
  %4366 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4367 = trunc i8 %4366 to i1
  br i1 %4367, label %4368, label %4390

4368:                                             ; preds = %4361
  %4369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4370 = call i32 @fileno(ptr noundef %4369) #12
  %4371 = call i32 @isatty(i32 noundef %4370) #12
  %4372 = icmp ne i32 %4371, 0
  br i1 %4372, label %4373, label %4390

4373:                                             ; preds = %4368
  %4374 = load i32, ptr %81, align 4, !tbaa !5
  %4375 = call ptr @__errno_location() #13
  store i32 %4374, ptr %4375, align 4, !tbaa !5
  %4376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4377 = load i32, ptr @test_count, align 4, !tbaa !5
  %4378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4379 = load i32, ptr %4378, align 4, !tbaa !5
  %4380 = call ptr @s2n_strerror(i32 noundef %4379, ptr noundef @.str.4)
  %4381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4382 = load i32, ptr %4381, align 4, !tbaa !5
  %4383 = call ptr @s2n_strerror_debug(i32 noundef %4382, ptr noundef @.str.4)
  %4384 = call ptr @__errno_location() #13
  %4385 = load i32, ptr %4384, align 4, !tbaa !5
  %4386 = call ptr @strerror(i32 noundef %4385) #12
  %4387 = call ptr @__errno_location() #13
  %4388 = load i32, ptr %4387, align 4, !tbaa !5
  %4389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4376, ptr noundef @.str.2, i32 noundef %4377, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 178, ptr noundef %4380, ptr noundef %4383, ptr noundef %4386, i32 noundef %4388) #12
  br label %4407

4390:                                             ; preds = %4368, %4361
  %4391 = load i32, ptr %81, align 4, !tbaa !5
  %4392 = call ptr @__errno_location() #13
  store i32 %4391, ptr %4392, align 4, !tbaa !5
  %4393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4394 = load i32, ptr @test_count, align 4, !tbaa !5
  %4395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4396 = load i32, ptr %4395, align 4, !tbaa !5
  %4397 = call ptr @s2n_strerror(i32 noundef %4396, ptr noundef @.str.4)
  %4398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4399 = load i32, ptr %4398, align 4, !tbaa !5
  %4400 = call ptr @s2n_strerror_debug(i32 noundef %4399, ptr noundef @.str.4)
  %4401 = call ptr @__errno_location() #13
  %4402 = load i32, ptr %4401, align 4, !tbaa !5
  %4403 = call ptr @strerror(i32 noundef %4402) #12
  %4404 = call ptr @__errno_location() #13
  %4405 = load i32, ptr %4404, align 4, !tbaa !5
  %4406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4393, ptr noundef @.str.5, i32 noundef %4394, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 178, ptr noundef %4397, ptr noundef %4400, ptr noundef %4403, i32 noundef %4405) #12
  br label %4407

4407:                                             ; preds = %4390, %4373
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  br label %4408

4408:                                             ; preds = %4407
  br label %4409

4409:                                             ; preds = %4408
  call void @exit(i32 noundef 1) #14
  unreachable

4410:                                             ; No predecessors!
  br label %4411

4411:                                             ; preds = %4410
  br label %4412

4412:                                             ; preds = %4411, %4348
  br label %4413

4413:                                             ; preds = %4412
  br label %4414

4414:                                             ; preds = %4413
  br label %4415

4415:                                             ; preds = %4414
  %4416 = load i32, ptr @test_count, align 4, !tbaa !5
  %4417 = add nsw i32 %4416, 1
  store i32 %4417, ptr @test_count, align 4, !tbaa !5
  %4418 = load ptr, ptr %69, align 8, !tbaa !9
  %4419 = getelementptr inbounds %struct.s2n_connection, ptr %4418, i32 0, i32 31
  %4420 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4419, i32 0, i32 5
  %4421 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4420, i32 0, i32 2
  %4422 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4421, i32 0, i32 0
  %4423 = load ptr, ptr %4422, align 8, !tbaa !59
  %4424 = icmp eq ptr %4423, null
  br i1 %4424, label %4478, label %4425

4425:                                             ; preds = %4415
  br label %4426

4426:                                             ; preds = %4425
  br label %4427

4427:                                             ; preds = %4426
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #12
  %4428 = call ptr @__errno_location() #13
  %4429 = load i32, ptr %4428, align 4, !tbaa !5
  store i32 %4429, ptr %82, align 4, !tbaa !5
  %4430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4431 = call i32 @s2n_print_stacktrace(ptr noundef %4430)
  %4432 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4433 = trunc i8 %4432 to i1
  br i1 %4433, label %4434, label %4456

4434:                                             ; preds = %4427
  %4435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4436 = call i32 @fileno(ptr noundef %4435) #12
  %4437 = call i32 @isatty(i32 noundef %4436) #12
  %4438 = icmp ne i32 %4437, 0
  br i1 %4438, label %4439, label %4456

4439:                                             ; preds = %4434
  %4440 = load i32, ptr %82, align 4, !tbaa !5
  %4441 = call ptr @__errno_location() #13
  store i32 %4440, ptr %4441, align 4, !tbaa !5
  %4442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4443 = load i32, ptr @test_count, align 4, !tbaa !5
  %4444 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4445 = load i32, ptr %4444, align 4, !tbaa !5
  %4446 = call ptr @s2n_strerror(i32 noundef %4445, ptr noundef @.str.4)
  %4447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4448 = load i32, ptr %4447, align 4, !tbaa !5
  %4449 = call ptr @s2n_strerror_debug(i32 noundef %4448, ptr noundef @.str.4)
  %4450 = call ptr @__errno_location() #13
  %4451 = load i32, ptr %4450, align 4, !tbaa !5
  %4452 = call ptr @strerror(i32 noundef %4451) #12
  %4453 = call ptr @__errno_location() #13
  %4454 = load i32, ptr %4453, align 4, !tbaa !5
  %4455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4442, ptr noundef @.str.2, i32 noundef %4443, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 179, ptr noundef %4446, ptr noundef %4449, ptr noundef %4452, i32 noundef %4454) #12
  br label %4473

4456:                                             ; preds = %4434, %4427
  %4457 = load i32, ptr %82, align 4, !tbaa !5
  %4458 = call ptr @__errno_location() #13
  store i32 %4457, ptr %4458, align 4, !tbaa !5
  %4459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4460 = load i32, ptr @test_count, align 4, !tbaa !5
  %4461 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4462 = load i32, ptr %4461, align 4, !tbaa !5
  %4463 = call ptr @s2n_strerror(i32 noundef %4462, ptr noundef @.str.4)
  %4464 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4465 = load i32, ptr %4464, align 4, !tbaa !5
  %4466 = call ptr @s2n_strerror_debug(i32 noundef %4465, ptr noundef @.str.4)
  %4467 = call ptr @__errno_location() #13
  %4468 = load i32, ptr %4467, align 4, !tbaa !5
  %4469 = call ptr @strerror(i32 noundef %4468) #12
  %4470 = call ptr @__errno_location() #13
  %4471 = load i32, ptr %4470, align 4, !tbaa !5
  %4472 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4459, ptr noundef @.str.5, i32 noundef %4460, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 179, ptr noundef %4463, ptr noundef %4466, ptr noundef %4469, i32 noundef %4471) #12
  br label %4473

4473:                                             ; preds = %4456, %4439
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  br label %4474

4474:                                             ; preds = %4473
  br label %4475

4475:                                             ; preds = %4474
  call void @exit(i32 noundef 1) #14
  unreachable

4476:                                             ; No predecessors!
  br label %4477

4477:                                             ; preds = %4476
  br label %4478

4478:                                             ; preds = %4477, %4415
  br label %4479

4479:                                             ; preds = %4478
  br label %4480

4480:                                             ; preds = %4479
  br label %4481

4481:                                             ; preds = %4480
  %4482 = load i32, ptr @test_count, align 4, !tbaa !5
  %4483 = add nsw i32 %4482, 1
  store i32 %4483, ptr @test_count, align 4, !tbaa !5
  %4484 = load ptr, ptr %69, align 8, !tbaa !9
  %4485 = getelementptr inbounds %struct.s2n_connection, ptr %4484, i32 0, i32 31
  %4486 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4485, i32 0, i32 5
  %4487 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4486, i32 0, i32 2
  %4488 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4487, i32 0, i32 1
  %4489 = load ptr, ptr %4488, align 8, !tbaa !60
  %4490 = icmp eq ptr %4489, null
  br i1 %4490, label %4544, label %4491

4491:                                             ; preds = %4481
  br label %4492

4492:                                             ; preds = %4491
  br label %4493

4493:                                             ; preds = %4492
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #12
  %4494 = call ptr @__errno_location() #13
  %4495 = load i32, ptr %4494, align 4, !tbaa !5
  store i32 %4495, ptr %83, align 4, !tbaa !5
  %4496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4497 = call i32 @s2n_print_stacktrace(ptr noundef %4496)
  %4498 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4499 = trunc i8 %4498 to i1
  br i1 %4499, label %4500, label %4522

4500:                                             ; preds = %4493
  %4501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4502 = call i32 @fileno(ptr noundef %4501) #12
  %4503 = call i32 @isatty(i32 noundef %4502) #12
  %4504 = icmp ne i32 %4503, 0
  br i1 %4504, label %4505, label %4522

4505:                                             ; preds = %4500
  %4506 = load i32, ptr %83, align 4, !tbaa !5
  %4507 = call ptr @__errno_location() #13
  store i32 %4506, ptr %4507, align 4, !tbaa !5
  %4508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4509 = load i32, ptr @test_count, align 4, !tbaa !5
  %4510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4511 = load i32, ptr %4510, align 4, !tbaa !5
  %4512 = call ptr @s2n_strerror(i32 noundef %4511, ptr noundef @.str.4)
  %4513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4514 = load i32, ptr %4513, align 4, !tbaa !5
  %4515 = call ptr @s2n_strerror_debug(i32 noundef %4514, ptr noundef @.str.4)
  %4516 = call ptr @__errno_location() #13
  %4517 = load i32, ptr %4516, align 4, !tbaa !5
  %4518 = call ptr @strerror(i32 noundef %4517) #12
  %4519 = call ptr @__errno_location() #13
  %4520 = load i32, ptr %4519, align 4, !tbaa !5
  %4521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4508, ptr noundef @.str.2, i32 noundef %4509, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 180, ptr noundef %4512, ptr noundef %4515, ptr noundef %4518, i32 noundef %4520) #12
  br label %4539

4522:                                             ; preds = %4500, %4493
  %4523 = load i32, ptr %83, align 4, !tbaa !5
  %4524 = call ptr @__errno_location() #13
  store i32 %4523, ptr %4524, align 4, !tbaa !5
  %4525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4526 = load i32, ptr @test_count, align 4, !tbaa !5
  %4527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4528 = load i32, ptr %4527, align 4, !tbaa !5
  %4529 = call ptr @s2n_strerror(i32 noundef %4528, ptr noundef @.str.4)
  %4530 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4531 = load i32, ptr %4530, align 4, !tbaa !5
  %4532 = call ptr @s2n_strerror_debug(i32 noundef %4531, ptr noundef @.str.4)
  %4533 = call ptr @__errno_location() #13
  %4534 = load i32, ptr %4533, align 4, !tbaa !5
  %4535 = call ptr @strerror(i32 noundef %4534) #12
  %4536 = call ptr @__errno_location() #13
  %4537 = load i32, ptr %4536, align 4, !tbaa !5
  %4538 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4525, ptr noundef @.str.5, i32 noundef %4526, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 180, ptr noundef %4529, ptr noundef %4532, ptr noundef %4535, i32 noundef %4537) #12
  br label %4539

4539:                                             ; preds = %4522, %4505
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #12
  br label %4540

4540:                                             ; preds = %4539
  br label %4541

4541:                                             ; preds = %4540
  call void @exit(i32 noundef 1) #14
  unreachable

4542:                                             ; No predecessors!
  br label %4543

4543:                                             ; preds = %4542
  br label %4544

4544:                                             ; preds = %4543, %4481
  br label %4545

4545:                                             ; preds = %4544
  br label %4546

4546:                                             ; preds = %4545
  br label %4547

4547:                                             ; preds = %4546
  %4548 = load i32, ptr @test_count, align 4, !tbaa !5
  %4549 = add nsw i32 %4548, 1
  store i32 %4549, ptr @test_count, align 4, !tbaa !5
  %4550 = load ptr, ptr %69, align 8, !tbaa !9
  %4551 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %4550)
  %4552 = icmp eq i32 %4551, -1
  br i1 %4552, label %4553, label %4606

4553:                                             ; preds = %4547
  br label %4554

4554:                                             ; preds = %4553
  br label %4555

4555:                                             ; preds = %4554
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #12
  %4556 = call ptr @__errno_location() #13
  %4557 = load i32, ptr %4556, align 4, !tbaa !5
  store i32 %4557, ptr %84, align 4, !tbaa !5
  %4558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4559 = call i32 @s2n_print_stacktrace(ptr noundef %4558)
  %4560 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4561 = trunc i8 %4560 to i1
  br i1 %4561, label %4562, label %4584

4562:                                             ; preds = %4555
  %4563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4564 = call i32 @fileno(ptr noundef %4563) #12
  %4565 = call i32 @isatty(i32 noundef %4564) #12
  %4566 = icmp ne i32 %4565, 0
  br i1 %4566, label %4567, label %4584

4567:                                             ; preds = %4562
  %4568 = load i32, ptr %84, align 4, !tbaa !5
  %4569 = call ptr @__errno_location() #13
  store i32 %4568, ptr %4569, align 4, !tbaa !5
  %4570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4571 = load i32, ptr @test_count, align 4, !tbaa !5
  %4572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4573 = load i32, ptr %4572, align 4, !tbaa !5
  %4574 = call ptr @s2n_strerror(i32 noundef %4573, ptr noundef @.str.4)
  %4575 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4576 = load i32, ptr %4575, align 4, !tbaa !5
  %4577 = call ptr @s2n_strerror_debug(i32 noundef %4576, ptr noundef @.str.4)
  %4578 = call ptr @__errno_location() #13
  %4579 = load i32, ptr %4578, align 4, !tbaa !5
  %4580 = call ptr @strerror(i32 noundef %4579) #12
  %4581 = call ptr @__errno_location() #13
  %4582 = load i32, ptr %4581, align 4, !tbaa !5
  %4583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4570, ptr noundef @.str.2, i32 noundef %4571, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 182, ptr noundef %4574, ptr noundef %4577, ptr noundef %4580, i32 noundef %4582) #12
  br label %4601

4584:                                             ; preds = %4562, %4555
  %4585 = load i32, ptr %84, align 4, !tbaa !5
  %4586 = call ptr @__errno_location() #13
  store i32 %4585, ptr %4586, align 4, !tbaa !5
  %4587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4588 = load i32, ptr @test_count, align 4, !tbaa !5
  %4589 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4590 = load i32, ptr %4589, align 4, !tbaa !5
  %4591 = call ptr @s2n_strerror(i32 noundef %4590, ptr noundef @.str.4)
  %4592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4593 = load i32, ptr %4592, align 4, !tbaa !5
  %4594 = call ptr @s2n_strerror_debug(i32 noundef %4593, ptr noundef @.str.4)
  %4595 = call ptr @__errno_location() #13
  %4596 = load i32, ptr %4595, align 4, !tbaa !5
  %4597 = call ptr @strerror(i32 noundef %4596) #12
  %4598 = call ptr @__errno_location() #13
  %4599 = load i32, ptr %4598, align 4, !tbaa !5
  %4600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4587, ptr noundef @.str.5, i32 noundef %4588, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 182, ptr noundef %4591, ptr noundef %4594, ptr noundef %4597, i32 noundef %4599) #12
  br label %4601

4601:                                             ; preds = %4584, %4567
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #12
  br label %4602

4602:                                             ; preds = %4601
  br label %4603

4603:                                             ; preds = %4602
  call void @exit(i32 noundef 1) #14
  unreachable

4604:                                             ; No predecessors!
  br label %4605

4605:                                             ; preds = %4604
  br label %4606

4606:                                             ; preds = %4605, %4547
  br label %4607

4607:                                             ; preds = %4606
  br label %4608

4608:                                             ; preds = %4607
  br label %4609

4609:                                             ; preds = %4608
  %4610 = load i32, ptr @test_count, align 4, !tbaa !5
  %4611 = add nsw i32 %4610, 1
  store i32 %4611, ptr @test_count, align 4, !tbaa !5
  %4612 = load ptr, ptr %76, align 8, !tbaa !9
  %4613 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4612, i32 0, i32 0
  %4614 = load ptr, ptr %4613, align 8, !tbaa !50
  %4615 = load ptr, ptr %77, align 8, !tbaa !9
  %4616 = icmp eq ptr %4614, %4615
  br i1 %4616, label %4670, label %4617

4617:                                             ; preds = %4609
  br label %4618

4618:                                             ; preds = %4617
  br label %4619

4619:                                             ; preds = %4618
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #12
  %4620 = call ptr @__errno_location() #13
  %4621 = load i32, ptr %4620, align 4, !tbaa !5
  store i32 %4621, ptr %85, align 4, !tbaa !5
  %4622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4623 = call i32 @s2n_print_stacktrace(ptr noundef %4622)
  %4624 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4625 = trunc i8 %4624 to i1
  br i1 %4625, label %4626, label %4648

4626:                                             ; preds = %4619
  %4627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4628 = call i32 @fileno(ptr noundef %4627) #12
  %4629 = call i32 @isatty(i32 noundef %4628) #12
  %4630 = icmp ne i32 %4629, 0
  br i1 %4630, label %4631, label %4648

4631:                                             ; preds = %4626
  %4632 = load i32, ptr %85, align 4, !tbaa !5
  %4633 = call ptr @__errno_location() #13
  store i32 %4632, ptr %4633, align 4, !tbaa !5
  %4634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4635 = load i32, ptr @test_count, align 4, !tbaa !5
  %4636 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4637 = load i32, ptr %4636, align 4, !tbaa !5
  %4638 = call ptr @s2n_strerror(i32 noundef %4637, ptr noundef @.str.4)
  %4639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4640 = load i32, ptr %4639, align 4, !tbaa !5
  %4641 = call ptr @s2n_strerror_debug(i32 noundef %4640, ptr noundef @.str.4)
  %4642 = call ptr @__errno_location() #13
  %4643 = load i32, ptr %4642, align 4, !tbaa !5
  %4644 = call ptr @strerror(i32 noundef %4643) #12
  %4645 = call ptr @__errno_location() #13
  %4646 = load i32, ptr %4645, align 4, !tbaa !5
  %4647 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4634, ptr noundef @.str.2, i32 noundef %4635, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 185, ptr noundef %4638, ptr noundef %4641, ptr noundef %4644, i32 noundef %4646) #12
  br label %4665

4648:                                             ; preds = %4626, %4619
  %4649 = load i32, ptr %85, align 4, !tbaa !5
  %4650 = call ptr @__errno_location() #13
  store i32 %4649, ptr %4650, align 4, !tbaa !5
  %4651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4652 = load i32, ptr @test_count, align 4, !tbaa !5
  %4653 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4654 = load i32, ptr %4653, align 4, !tbaa !5
  %4655 = call ptr @s2n_strerror(i32 noundef %4654, ptr noundef @.str.4)
  %4656 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4657 = load i32, ptr %4656, align 4, !tbaa !5
  %4658 = call ptr @s2n_strerror_debug(i32 noundef %4657, ptr noundef @.str.4)
  %4659 = call ptr @__errno_location() #13
  %4660 = load i32, ptr %4659, align 4, !tbaa !5
  %4661 = call ptr @strerror(i32 noundef %4660) #12
  %4662 = call ptr @__errno_location() #13
  %4663 = load i32, ptr %4662, align 4, !tbaa !5
  %4664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4651, ptr noundef @.str.5, i32 noundef %4652, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 185, ptr noundef %4655, ptr noundef %4658, ptr noundef %4661, i32 noundef %4663) #12
  br label %4665

4665:                                             ; preds = %4648, %4631
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #12
  br label %4666

4666:                                             ; preds = %4665
  br label %4667

4667:                                             ; preds = %4666
  call void @exit(i32 noundef 1) #14
  unreachable

4668:                                             ; No predecessors!
  br label %4669

4669:                                             ; preds = %4668
  br label %4670

4670:                                             ; preds = %4669, %4609
  br label %4671

4671:                                             ; preds = %4670
  br label %4672

4672:                                             ; preds = %4671
  br label %4673

4673:                                             ; preds = %4672
  %4674 = load i32, ptr @test_count, align 4, !tbaa !5
  %4675 = add nsw i32 %4674, 1
  store i32 %4675, ptr @test_count, align 4, !tbaa !5
  %4676 = load ptr, ptr %76, align 8, !tbaa !9
  %4677 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4676, i32 0, i32 1
  %4678 = getelementptr inbounds %struct.s2n_kem_params, ptr %4677, i32 0, i32 0
  %4679 = load ptr, ptr %4678, align 8, !tbaa !53
  %4680 = load ptr, ptr %77, align 8, !tbaa !9
  %4681 = getelementptr inbounds %struct.s2n_kem_group, ptr %4680, i32 0, i32 3
  %4682 = load ptr, ptr %4681, align 8, !tbaa !51
  %4683 = icmp eq ptr %4679, %4682
  br i1 %4683, label %4737, label %4684

4684:                                             ; preds = %4673
  br label %4685

4685:                                             ; preds = %4684
  br label %4686

4686:                                             ; preds = %4685
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #12
  %4687 = call ptr @__errno_location() #13
  %4688 = load i32, ptr %4687, align 4, !tbaa !5
  store i32 %4688, ptr %86, align 4, !tbaa !5
  %4689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4690 = call i32 @s2n_print_stacktrace(ptr noundef %4689)
  %4691 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4692 = trunc i8 %4691 to i1
  br i1 %4692, label %4693, label %4715

4693:                                             ; preds = %4686
  %4694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4695 = call i32 @fileno(ptr noundef %4694) #12
  %4696 = call i32 @isatty(i32 noundef %4695) #12
  %4697 = icmp ne i32 %4696, 0
  br i1 %4697, label %4698, label %4715

4698:                                             ; preds = %4693
  %4699 = load i32, ptr %86, align 4, !tbaa !5
  %4700 = call ptr @__errno_location() #13
  store i32 %4699, ptr %4700, align 4, !tbaa !5
  %4701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4702 = load i32, ptr @test_count, align 4, !tbaa !5
  %4703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4704 = load i32, ptr %4703, align 4, !tbaa !5
  %4705 = call ptr @s2n_strerror(i32 noundef %4704, ptr noundef @.str.4)
  %4706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4707 = load i32, ptr %4706, align 4, !tbaa !5
  %4708 = call ptr @s2n_strerror_debug(i32 noundef %4707, ptr noundef @.str.4)
  %4709 = call ptr @__errno_location() #13
  %4710 = load i32, ptr %4709, align 4, !tbaa !5
  %4711 = call ptr @strerror(i32 noundef %4710) #12
  %4712 = call ptr @__errno_location() #13
  %4713 = load i32, ptr %4712, align 4, !tbaa !5
  %4714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4701, ptr noundef @.str.2, i32 noundef %4702, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 186, ptr noundef %4705, ptr noundef %4708, ptr noundef %4711, i32 noundef %4713) #12
  br label %4732

4715:                                             ; preds = %4693, %4686
  %4716 = load i32, ptr %86, align 4, !tbaa !5
  %4717 = call ptr @__errno_location() #13
  store i32 %4716, ptr %4717, align 4, !tbaa !5
  %4718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4719 = load i32, ptr @test_count, align 4, !tbaa !5
  %4720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4721 = load i32, ptr %4720, align 4, !tbaa !5
  %4722 = call ptr @s2n_strerror(i32 noundef %4721, ptr noundef @.str.4)
  %4723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4724 = load i32, ptr %4723, align 4, !tbaa !5
  %4725 = call ptr @s2n_strerror_debug(i32 noundef %4724, ptr noundef @.str.4)
  %4726 = call ptr @__errno_location() #13
  %4727 = load i32, ptr %4726, align 4, !tbaa !5
  %4728 = call ptr @strerror(i32 noundef %4727) #12
  %4729 = call ptr @__errno_location() #13
  %4730 = load i32, ptr %4729, align 4, !tbaa !5
  %4731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4718, ptr noundef @.str.5, i32 noundef %4719, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 186, ptr noundef %4722, ptr noundef %4725, ptr noundef %4728, i32 noundef %4730) #12
  br label %4732

4732:                                             ; preds = %4715, %4698
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #12
  br label %4733

4733:                                             ; preds = %4732
  br label %4734

4734:                                             ; preds = %4733
  call void @exit(i32 noundef 1) #14
  unreachable

4735:                                             ; No predecessors!
  br label %4736

4736:                                             ; preds = %4735
  br label %4737

4737:                                             ; preds = %4736, %4673
  br label %4738

4738:                                             ; preds = %4737
  br label %4739

4739:                                             ; preds = %4738
  br label %4740

4740:                                             ; preds = %4739
  %4741 = load i32, ptr @test_count, align 4, !tbaa !5
  %4742 = add nsw i32 %4741, 1
  store i32 %4742, ptr @test_count, align 4, !tbaa !5
  %4743 = load ptr, ptr %76, align 8, !tbaa !9
  %4744 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4743, i32 0, i32 2
  %4745 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4744, i32 0, i32 0
  %4746 = load ptr, ptr %4745, align 8, !tbaa !55
  %4747 = load ptr, ptr %77, align 8, !tbaa !9
  %4748 = getelementptr inbounds %struct.s2n_kem_group, ptr %4747, i32 0, i32 2
  %4749 = load ptr, ptr %4748, align 8, !tbaa !54
  %4750 = icmp eq ptr %4746, %4749
  br i1 %4750, label %4804, label %4751

4751:                                             ; preds = %4740
  br label %4752

4752:                                             ; preds = %4751
  br label %4753

4753:                                             ; preds = %4752
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  %4754 = call ptr @__errno_location() #13
  %4755 = load i32, ptr %4754, align 4, !tbaa !5
  store i32 %4755, ptr %87, align 4, !tbaa !5
  %4756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4757 = call i32 @s2n_print_stacktrace(ptr noundef %4756)
  %4758 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4759 = trunc i8 %4758 to i1
  br i1 %4759, label %4760, label %4782

4760:                                             ; preds = %4753
  %4761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4762 = call i32 @fileno(ptr noundef %4761) #12
  %4763 = call i32 @isatty(i32 noundef %4762) #12
  %4764 = icmp ne i32 %4763, 0
  br i1 %4764, label %4765, label %4782

4765:                                             ; preds = %4760
  %4766 = load i32, ptr %87, align 4, !tbaa !5
  %4767 = call ptr @__errno_location() #13
  store i32 %4766, ptr %4767, align 4, !tbaa !5
  %4768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4769 = load i32, ptr @test_count, align 4, !tbaa !5
  %4770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4771 = load i32, ptr %4770, align 4, !tbaa !5
  %4772 = call ptr @s2n_strerror(i32 noundef %4771, ptr noundef @.str.4)
  %4773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4774 = load i32, ptr %4773, align 4, !tbaa !5
  %4775 = call ptr @s2n_strerror_debug(i32 noundef %4774, ptr noundef @.str.4)
  %4776 = call ptr @__errno_location() #13
  %4777 = load i32, ptr %4776, align 4, !tbaa !5
  %4778 = call ptr @strerror(i32 noundef %4777) #12
  %4779 = call ptr @__errno_location() #13
  %4780 = load i32, ptr %4779, align 4, !tbaa !5
  %4781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4768, ptr noundef @.str.2, i32 noundef %4769, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 187, ptr noundef %4772, ptr noundef %4775, ptr noundef %4778, i32 noundef %4780) #12
  br label %4799

4782:                                             ; preds = %4760, %4753
  %4783 = load i32, ptr %87, align 4, !tbaa !5
  %4784 = call ptr @__errno_location() #13
  store i32 %4783, ptr %4784, align 4, !tbaa !5
  %4785 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4786 = load i32, ptr @test_count, align 4, !tbaa !5
  %4787 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4788 = load i32, ptr %4787, align 4, !tbaa !5
  %4789 = call ptr @s2n_strerror(i32 noundef %4788, ptr noundef @.str.4)
  %4790 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4791 = load i32, ptr %4790, align 4, !tbaa !5
  %4792 = call ptr @s2n_strerror_debug(i32 noundef %4791, ptr noundef @.str.4)
  %4793 = call ptr @__errno_location() #13
  %4794 = load i32, ptr %4793, align 4, !tbaa !5
  %4795 = call ptr @strerror(i32 noundef %4794) #12
  %4796 = call ptr @__errno_location() #13
  %4797 = load i32, ptr %4796, align 4, !tbaa !5
  %4798 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4785, ptr noundef @.str.5, i32 noundef %4786, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 187, ptr noundef %4789, ptr noundef %4792, ptr noundef %4795, i32 noundef %4797) #12
  br label %4799

4799:                                             ; preds = %4782, %4765
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  br label %4800

4800:                                             ; preds = %4799
  br label %4801

4801:                                             ; preds = %4800
  call void @exit(i32 noundef 1) #14
  unreachable

4802:                                             ; No predecessors!
  br label %4803

4803:                                             ; preds = %4802
  br label %4804

4804:                                             ; preds = %4803, %4740
  br label %4805

4805:                                             ; preds = %4804
  br label %4806

4806:                                             ; preds = %4805
  br label %4807

4807:                                             ; preds = %4806
  %4808 = load i32, ptr @test_count, align 4, !tbaa !5
  %4809 = add nsw i32 %4808, 1
  store i32 %4809, ptr @test_count, align 4, !tbaa !5
  %4810 = load ptr, ptr %69, align 8, !tbaa !9
  %4811 = getelementptr inbounds %struct.s2n_connection, ptr %4810, i32 0, i32 31
  %4812 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4811, i32 0, i32 5
  %4813 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4812, i32 0, i32 0
  %4814 = load ptr, ptr %4813, align 8, !tbaa !56
  %4815 = icmp eq ptr %4814, null
  br i1 %4815, label %4869, label %4816

4816:                                             ; preds = %4807
  br label %4817

4817:                                             ; preds = %4816
  br label %4818

4818:                                             ; preds = %4817
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #12
  %4819 = call ptr @__errno_location() #13
  %4820 = load i32, ptr %4819, align 4, !tbaa !5
  store i32 %4820, ptr %88, align 4, !tbaa !5
  %4821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4822 = call i32 @s2n_print_stacktrace(ptr noundef %4821)
  %4823 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4824 = trunc i8 %4823 to i1
  br i1 %4824, label %4825, label %4847

4825:                                             ; preds = %4818
  %4826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4827 = call i32 @fileno(ptr noundef %4826) #12
  %4828 = call i32 @isatty(i32 noundef %4827) #12
  %4829 = icmp ne i32 %4828, 0
  br i1 %4829, label %4830, label %4847

4830:                                             ; preds = %4825
  %4831 = load i32, ptr %88, align 4, !tbaa !5
  %4832 = call ptr @__errno_location() #13
  store i32 %4831, ptr %4832, align 4, !tbaa !5
  %4833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4834 = load i32, ptr @test_count, align 4, !tbaa !5
  %4835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4836 = load i32, ptr %4835, align 4, !tbaa !5
  %4837 = call ptr @s2n_strerror(i32 noundef %4836, ptr noundef @.str.4)
  %4838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4839 = load i32, ptr %4838, align 4, !tbaa !5
  %4840 = call ptr @s2n_strerror_debug(i32 noundef %4839, ptr noundef @.str.4)
  %4841 = call ptr @__errno_location() #13
  %4842 = load i32, ptr %4841, align 4, !tbaa !5
  %4843 = call ptr @strerror(i32 noundef %4842) #12
  %4844 = call ptr @__errno_location() #13
  %4845 = load i32, ptr %4844, align 4, !tbaa !5
  %4846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4833, ptr noundef @.str.2, i32 noundef %4834, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 188, ptr noundef %4837, ptr noundef %4840, ptr noundef %4843, i32 noundef %4845) #12
  br label %4864

4847:                                             ; preds = %4825, %4818
  %4848 = load i32, ptr %88, align 4, !tbaa !5
  %4849 = call ptr @__errno_location() #13
  store i32 %4848, ptr %4849, align 4, !tbaa !5
  %4850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4851 = load i32, ptr @test_count, align 4, !tbaa !5
  %4852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4853 = load i32, ptr %4852, align 4, !tbaa !5
  %4854 = call ptr @s2n_strerror(i32 noundef %4853, ptr noundef @.str.4)
  %4855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4856 = load i32, ptr %4855, align 4, !tbaa !5
  %4857 = call ptr @s2n_strerror_debug(i32 noundef %4856, ptr noundef @.str.4)
  %4858 = call ptr @__errno_location() #13
  %4859 = load i32, ptr %4858, align 4, !tbaa !5
  %4860 = call ptr @strerror(i32 noundef %4859) #12
  %4861 = call ptr @__errno_location() #13
  %4862 = load i32, ptr %4861, align 4, !tbaa !5
  %4863 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4850, ptr noundef @.str.5, i32 noundef %4851, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 188, ptr noundef %4854, ptr noundef %4857, ptr noundef %4860, i32 noundef %4862) #12
  br label %4864

4864:                                             ; preds = %4847, %4830
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #12
  br label %4865

4865:                                             ; preds = %4864
  br label %4866

4866:                                             ; preds = %4865
  call void @exit(i32 noundef 1) #14
  unreachable

4867:                                             ; No predecessors!
  br label %4868

4868:                                             ; preds = %4867
  br label %4869

4869:                                             ; preds = %4868, %4807
  br label %4870

4870:                                             ; preds = %4869
  br label %4871

4871:                                             ; preds = %4870
  br label %4872

4872:                                             ; preds = %4871
  %4873 = load i32, ptr @test_count, align 4, !tbaa !5
  %4874 = add nsw i32 %4873, 1
  store i32 %4874, ptr @test_count, align 4, !tbaa !5
  %4875 = load ptr, ptr %69, align 8, !tbaa !9
  %4876 = getelementptr inbounds %struct.s2n_connection, ptr %4875, i32 0, i32 31
  %4877 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4876, i32 0, i32 1
  %4878 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4877, i32 0, i32 0
  %4879 = load ptr, ptr %4878, align 8, !tbaa !15
  %4880 = icmp eq ptr %4879, null
  br i1 %4880, label %4934, label %4881

4881:                                             ; preds = %4872
  br label %4882

4882:                                             ; preds = %4881
  br label %4883

4883:                                             ; preds = %4882
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #12
  %4884 = call ptr @__errno_location() #13
  %4885 = load i32, ptr %4884, align 4, !tbaa !5
  store i32 %4885, ptr %89, align 4, !tbaa !5
  %4886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4887 = call i32 @s2n_print_stacktrace(ptr noundef %4886)
  %4888 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4889 = trunc i8 %4888 to i1
  br i1 %4889, label %4890, label %4912

4890:                                             ; preds = %4883
  %4891 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4892 = call i32 @fileno(ptr noundef %4891) #12
  %4893 = call i32 @isatty(i32 noundef %4892) #12
  %4894 = icmp ne i32 %4893, 0
  br i1 %4894, label %4895, label %4912

4895:                                             ; preds = %4890
  %4896 = load i32, ptr %89, align 4, !tbaa !5
  %4897 = call ptr @__errno_location() #13
  store i32 %4896, ptr %4897, align 4, !tbaa !5
  %4898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4899 = load i32, ptr @test_count, align 4, !tbaa !5
  %4900 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4901 = load i32, ptr %4900, align 4, !tbaa !5
  %4902 = call ptr @s2n_strerror(i32 noundef %4901, ptr noundef @.str.4)
  %4903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4904 = load i32, ptr %4903, align 4, !tbaa !5
  %4905 = call ptr @s2n_strerror_debug(i32 noundef %4904, ptr noundef @.str.4)
  %4906 = call ptr @__errno_location() #13
  %4907 = load i32, ptr %4906, align 4, !tbaa !5
  %4908 = call ptr @strerror(i32 noundef %4907) #12
  %4909 = call ptr @__errno_location() #13
  %4910 = load i32, ptr %4909, align 4, !tbaa !5
  %4911 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4898, ptr noundef @.str.2, i32 noundef %4899, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 189, ptr noundef %4902, ptr noundef %4905, ptr noundef %4908, i32 noundef %4910) #12
  br label %4929

4912:                                             ; preds = %4890, %4883
  %4913 = load i32, ptr %89, align 4, !tbaa !5
  %4914 = call ptr @__errno_location() #13
  store i32 %4913, ptr %4914, align 4, !tbaa !5
  %4915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4916 = load i32, ptr @test_count, align 4, !tbaa !5
  %4917 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4918 = load i32, ptr %4917, align 4, !tbaa !5
  %4919 = call ptr @s2n_strerror(i32 noundef %4918, ptr noundef @.str.4)
  %4920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4921 = load i32, ptr %4920, align 4, !tbaa !5
  %4922 = call ptr @s2n_strerror_debug(i32 noundef %4921, ptr noundef @.str.4)
  %4923 = call ptr @__errno_location() #13
  %4924 = load i32, ptr %4923, align 4, !tbaa !5
  %4925 = call ptr @strerror(i32 noundef %4924) #12
  %4926 = call ptr @__errno_location() #13
  %4927 = load i32, ptr %4926, align 4, !tbaa !5
  %4928 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4915, ptr noundef @.str.5, i32 noundef %4916, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 189, ptr noundef %4919, ptr noundef %4922, ptr noundef %4925, i32 noundef %4927) #12
  br label %4929

4929:                                             ; preds = %4912, %4895
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #12
  br label %4930

4930:                                             ; preds = %4929
  br label %4931

4931:                                             ; preds = %4930
  call void @exit(i32 noundef 1) #14
  unreachable

4932:                                             ; No predecessors!
  br label %4933

4933:                                             ; preds = %4932
  br label %4934

4934:                                             ; preds = %4933, %4872
  br label %4935

4935:                                             ; preds = %4934
  br label %4936

4936:                                             ; preds = %4935
  br label %4937

4937:                                             ; preds = %4936
  %4938 = load i32, ptr @test_count, align 4, !tbaa !5
  %4939 = add nsw i32 %4938, 1
  store i32 %4939, ptr @test_count, align 4, !tbaa !5
  %4940 = load ptr, ptr %69, align 8, !tbaa !9
  %4941 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %4940)
  br i1 %4941, label %4995, label %4942

4942:                                             ; preds = %4937
  br label %4943

4943:                                             ; preds = %4942
  br label %4944

4944:                                             ; preds = %4943
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #12
  %4945 = call ptr @__errno_location() #13
  %4946 = load i32, ptr %4945, align 4, !tbaa !5
  store i32 %4946, ptr %90, align 4, !tbaa !5
  %4947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4948 = call i32 @s2n_print_stacktrace(ptr noundef %4947)
  %4949 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4950 = trunc i8 %4949 to i1
  br i1 %4950, label %4951, label %4973

4951:                                             ; preds = %4944
  %4952 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4953 = call i32 @fileno(ptr noundef %4952) #12
  %4954 = call i32 @isatty(i32 noundef %4953) #12
  %4955 = icmp ne i32 %4954, 0
  br i1 %4955, label %4956, label %4973

4956:                                             ; preds = %4951
  %4957 = load i32, ptr %90, align 4, !tbaa !5
  %4958 = call ptr @__errno_location() #13
  store i32 %4957, ptr %4958, align 4, !tbaa !5
  %4959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4960 = load i32, ptr @test_count, align 4, !tbaa !5
  %4961 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4962 = load i32, ptr %4961, align 4, !tbaa !5
  %4963 = call ptr @s2n_strerror(i32 noundef %4962, ptr noundef @.str.4)
  %4964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4965 = load i32, ptr %4964, align 4, !tbaa !5
  %4966 = call ptr @s2n_strerror_debug(i32 noundef %4965, ptr noundef @.str.4)
  %4967 = call ptr @__errno_location() #13
  %4968 = load i32, ptr %4967, align 4, !tbaa !5
  %4969 = call ptr @strerror(i32 noundef %4968) #12
  %4970 = call ptr @__errno_location() #13
  %4971 = load i32, ptr %4970, align 4, !tbaa !5
  %4972 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4959, ptr noundef @.str.2, i32 noundef %4960, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 190, ptr noundef %4963, ptr noundef %4966, ptr noundef %4969, i32 noundef %4971) #12
  br label %4990

4973:                                             ; preds = %4951, %4944
  %4974 = load i32, ptr %90, align 4, !tbaa !5
  %4975 = call ptr @__errno_location() #13
  store i32 %4974, ptr %4975, align 4, !tbaa !5
  %4976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4977 = load i32, ptr @test_count, align 4, !tbaa !5
  %4978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4979 = load i32, ptr %4978, align 4, !tbaa !5
  %4980 = call ptr @s2n_strerror(i32 noundef %4979, ptr noundef @.str.4)
  %4981 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4982 = load i32, ptr %4981, align 4, !tbaa !5
  %4983 = call ptr @s2n_strerror_debug(i32 noundef %4982, ptr noundef @.str.4)
  %4984 = call ptr @__errno_location() #13
  %4985 = load i32, ptr %4984, align 4, !tbaa !5
  %4986 = call ptr @strerror(i32 noundef %4985) #12
  %4987 = call ptr @__errno_location() #13
  %4988 = load i32, ptr %4987, align 4, !tbaa !5
  %4989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4976, ptr noundef @.str.5, i32 noundef %4977, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 190, ptr noundef %4980, ptr noundef %4983, ptr noundef %4986, i32 noundef %4988) #12
  br label %4990

4990:                                             ; preds = %4973, %4956
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #12
  br label %4991

4991:                                             ; preds = %4990
  br label %4992

4992:                                             ; preds = %4991
  call void @exit(i32 noundef 1) #14
  unreachable

4993:                                             ; No predecessors!
  br label %4994

4994:                                             ; preds = %4993
  br label %4995

4995:                                             ; preds = %4994, %4937
  br label %4996

4996:                                             ; preds = %4995
  br label %4997

4997:                                             ; preds = %4996
  br label %4998

4998:                                             ; preds = %4997
  %4999 = load i32, ptr @test_count, align 4, !tbaa !5
  %5000 = add nsw i32 %4999, 1
  store i32 %5000, ptr @test_count, align 4, !tbaa !5
  %5001 = load ptr, ptr %69, align 8, !tbaa !9
  %5002 = call i32 @s2n_connection_free(ptr noundef %5001)
  %5003 = icmp eq i32 %5002, -1
  br i1 %5003, label %5004, label %5057

5004:                                             ; preds = %4998
  br label %5005

5005:                                             ; preds = %5004
  br label %5006

5006:                                             ; preds = %5005
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #12
  %5007 = call ptr @__errno_location() #13
  %5008 = load i32, ptr %5007, align 4, !tbaa !5
  store i32 %5008, ptr %91, align 4, !tbaa !5
  %5009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5010 = call i32 @s2n_print_stacktrace(ptr noundef %5009)
  %5011 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5012 = trunc i8 %5011 to i1
  br i1 %5012, label %5013, label %5035

5013:                                             ; preds = %5006
  %5014 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5015 = call i32 @fileno(ptr noundef %5014) #12
  %5016 = call i32 @isatty(i32 noundef %5015) #12
  %5017 = icmp ne i32 %5016, 0
  br i1 %5017, label %5018, label %5035

5018:                                             ; preds = %5013
  %5019 = load i32, ptr %91, align 4, !tbaa !5
  %5020 = call ptr @__errno_location() #13
  store i32 %5019, ptr %5020, align 4, !tbaa !5
  %5021 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5022 = load i32, ptr @test_count, align 4, !tbaa !5
  %5023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5024 = load i32, ptr %5023, align 4, !tbaa !5
  %5025 = call ptr @s2n_strerror(i32 noundef %5024, ptr noundef @.str.4)
  %5026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5027 = load i32, ptr %5026, align 4, !tbaa !5
  %5028 = call ptr @s2n_strerror_debug(i32 noundef %5027, ptr noundef @.str.4)
  %5029 = call ptr @__errno_location() #13
  %5030 = load i32, ptr %5029, align 4, !tbaa !5
  %5031 = call ptr @strerror(i32 noundef %5030) #12
  %5032 = call ptr @__errno_location() #13
  %5033 = load i32, ptr %5032, align 4, !tbaa !5
  %5034 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5021, ptr noundef @.str.2, i32 noundef %5022, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 192, ptr noundef %5025, ptr noundef %5028, ptr noundef %5031, i32 noundef %5033) #12
  br label %5052

5035:                                             ; preds = %5013, %5006
  %5036 = load i32, ptr %91, align 4, !tbaa !5
  %5037 = call ptr @__errno_location() #13
  store i32 %5036, ptr %5037, align 4, !tbaa !5
  %5038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5039 = load i32, ptr @test_count, align 4, !tbaa !5
  %5040 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5041 = load i32, ptr %5040, align 4, !tbaa !5
  %5042 = call ptr @s2n_strerror(i32 noundef %5041, ptr noundef @.str.4)
  %5043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5044 = load i32, ptr %5043, align 4, !tbaa !5
  %5045 = call ptr @s2n_strerror_debug(i32 noundef %5044, ptr noundef @.str.4)
  %5046 = call ptr @__errno_location() #13
  %5047 = load i32, ptr %5046, align 4, !tbaa !5
  %5048 = call ptr @strerror(i32 noundef %5047) #12
  %5049 = call ptr @__errno_location() #13
  %5050 = load i32, ptr %5049, align 4, !tbaa !5
  %5051 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5038, ptr noundef @.str.5, i32 noundef %5039, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 192, ptr noundef %5042, ptr noundef %5045, ptr noundef %5048, i32 noundef %5050) #12
  br label %5052

5052:                                             ; preds = %5035, %5018
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  br label %5053

5053:                                             ; preds = %5052
  br label %5054

5054:                                             ; preds = %5053
  call void @exit(i32 noundef 1) #14
  unreachable

5055:                                             ; No predecessors!
  br label %5056

5056:                                             ; preds = %5055
  br label %5057

5057:                                             ; preds = %5056, %4998
  br label %5058

5058:                                             ; preds = %5057
  br label %5059

5059:                                             ; preds = %5058
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #12
  store ptr null, ptr %92, align 8, !tbaa !9
  br label %5060

5060:                                             ; preds = %5059
  %5061 = load i32, ptr @test_count, align 4, !tbaa !5
  %5062 = add nsw i32 %5061, 1
  store i32 %5062, ptr @test_count, align 4, !tbaa !5
  %5063 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %5063, ptr %92, align 8, !tbaa !9
  %5064 = icmp eq ptr %5063, null
  br i1 %5064, label %5065, label %5118

5065:                                             ; preds = %5060
  br label %5066

5066:                                             ; preds = %5065
  br label %5067

5067:                                             ; preds = %5066
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #12
  %5068 = call ptr @__errno_location() #13
  %5069 = load i32, ptr %5068, align 4, !tbaa !5
  store i32 %5069, ptr %93, align 4, !tbaa !5
  %5070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5071 = call i32 @s2n_print_stacktrace(ptr noundef %5070)
  %5072 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5073 = trunc i8 %5072 to i1
  br i1 %5073, label %5074, label %5096

5074:                                             ; preds = %5067
  %5075 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5076 = call i32 @fileno(ptr noundef %5075) #12
  %5077 = call i32 @isatty(i32 noundef %5076) #12
  %5078 = icmp ne i32 %5077, 0
  br i1 %5078, label %5079, label %5096

5079:                                             ; preds = %5074
  %5080 = load i32, ptr %93, align 4, !tbaa !5
  %5081 = call ptr @__errno_location() #13
  store i32 %5080, ptr %5081, align 4, !tbaa !5
  %5082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5083 = load i32, ptr @test_count, align 4, !tbaa !5
  %5084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5085 = load i32, ptr %5084, align 4, !tbaa !5
  %5086 = call ptr @s2n_strerror(i32 noundef %5085, ptr noundef @.str.4)
  %5087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5088 = load i32, ptr %5087, align 4, !tbaa !5
  %5089 = call ptr @s2n_strerror_debug(i32 noundef %5088, ptr noundef @.str.4)
  %5090 = call ptr @__errno_location() #13
  %5091 = load i32, ptr %5090, align 4, !tbaa !5
  %5092 = call ptr @strerror(i32 noundef %5091) #12
  %5093 = call ptr @__errno_location() #13
  %5094 = load i32, ptr %5093, align 4, !tbaa !5
  %5095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5082, ptr noundef @.str.2, i32 noundef %5083, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 199, ptr noundef %5086, ptr noundef %5089, ptr noundef %5092, i32 noundef %5094) #12
  br label %5113

5096:                                             ; preds = %5074, %5067
  %5097 = load i32, ptr %93, align 4, !tbaa !5
  %5098 = call ptr @__errno_location() #13
  store i32 %5097, ptr %5098, align 4, !tbaa !5
  %5099 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5100 = load i32, ptr @test_count, align 4, !tbaa !5
  %5101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5102 = load i32, ptr %5101, align 4, !tbaa !5
  %5103 = call ptr @s2n_strerror(i32 noundef %5102, ptr noundef @.str.4)
  %5104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5105 = load i32, ptr %5104, align 4, !tbaa !5
  %5106 = call ptr @s2n_strerror_debug(i32 noundef %5105, ptr noundef @.str.4)
  %5107 = call ptr @__errno_location() #13
  %5108 = load i32, ptr %5107, align 4, !tbaa !5
  %5109 = call ptr @strerror(i32 noundef %5108) #12
  %5110 = call ptr @__errno_location() #13
  %5111 = load i32, ptr %5110, align 4, !tbaa !5
  %5112 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5099, ptr noundef @.str.5, i32 noundef %5100, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 199, ptr noundef %5103, ptr noundef %5106, ptr noundef %5109, i32 noundef %5111) #12
  br label %5113

5113:                                             ; preds = %5096, %5079
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #12
  br label %5114

5114:                                             ; preds = %5113
  br label %5115

5115:                                             ; preds = %5114
  call void @exit(i32 noundef 1) #14
  unreachable

5116:                                             ; No predecessors!
  br label %5117

5117:                                             ; preds = %5116
  br label %5118

5118:                                             ; preds = %5117, %5060
  br label %5119

5119:                                             ; preds = %5118
  br label %5120

5120:                                             ; preds = %5119
  %5121 = load ptr, ptr %92, align 8, !tbaa !9
  %5122 = getelementptr inbounds %struct.s2n_connection, ptr %5121, i32 0, i32 2
  store ptr %54, ptr %5122, align 8, !tbaa !47
  br label %5123

5123:                                             ; preds = %5120
  %5124 = load i32, ptr @test_count, align 4, !tbaa !5
  %5125 = add nsw i32 %5124, 1
  store i32 %5125, ptr @test_count, align 4, !tbaa !5
  %5126 = load ptr, ptr %92, align 8, !tbaa !9
  %5127 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %5126, i8 noundef zeroext 34)
  %5128 = icmp eq i32 %5127, -1
  br i1 %5128, label %5129, label %5182

5129:                                             ; preds = %5123
  br label %5130

5130:                                             ; preds = %5129
  br label %5131

5131:                                             ; preds = %5130
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #12
  %5132 = call ptr @__errno_location() #13
  %5133 = load i32, ptr %5132, align 4, !tbaa !5
  store i32 %5133, ptr %94, align 4, !tbaa !5
  %5134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5135 = call i32 @s2n_print_stacktrace(ptr noundef %5134)
  %5136 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5137 = trunc i8 %5136 to i1
  br i1 %5137, label %5138, label %5160

5138:                                             ; preds = %5131
  %5139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5140 = call i32 @fileno(ptr noundef %5139) #12
  %5141 = call i32 @isatty(i32 noundef %5140) #12
  %5142 = icmp ne i32 %5141, 0
  br i1 %5142, label %5143, label %5160

5143:                                             ; preds = %5138
  %5144 = load i32, ptr %94, align 4, !tbaa !5
  %5145 = call ptr @__errno_location() #13
  store i32 %5144, ptr %5145, align 4, !tbaa !5
  %5146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5147 = load i32, ptr @test_count, align 4, !tbaa !5
  %5148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5149 = load i32, ptr %5148, align 4, !tbaa !5
  %5150 = call ptr @s2n_strerror(i32 noundef %5149, ptr noundef @.str.4)
  %5151 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5152 = load i32, ptr %5151, align 4, !tbaa !5
  %5153 = call ptr @s2n_strerror_debug(i32 noundef %5152, ptr noundef @.str.4)
  %5154 = call ptr @__errno_location() #13
  %5155 = load i32, ptr %5154, align 4, !tbaa !5
  %5156 = call ptr @strerror(i32 noundef %5155) #12
  %5157 = call ptr @__errno_location() #13
  %5158 = load i32, ptr %5157, align 4, !tbaa !5
  %5159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5146, ptr noundef @.str.2, i32 noundef %5147, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 201, ptr noundef %5150, ptr noundef %5153, ptr noundef %5156, i32 noundef %5158) #12
  br label %5177

5160:                                             ; preds = %5138, %5131
  %5161 = load i32, ptr %94, align 4, !tbaa !5
  %5162 = call ptr @__errno_location() #13
  store i32 %5161, ptr %5162, align 4, !tbaa !5
  %5163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5164 = load i32, ptr @test_count, align 4, !tbaa !5
  %5165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5166 = load i32, ptr %5165, align 4, !tbaa !5
  %5167 = call ptr @s2n_strerror(i32 noundef %5166, ptr noundef @.str.4)
  %5168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5169 = load i32, ptr %5168, align 4, !tbaa !5
  %5170 = call ptr @s2n_strerror_debug(i32 noundef %5169, ptr noundef @.str.4)
  %5171 = call ptr @__errno_location() #13
  %5172 = load i32, ptr %5171, align 4, !tbaa !5
  %5173 = call ptr @strerror(i32 noundef %5172) #12
  %5174 = call ptr @__errno_location() #13
  %5175 = load i32, ptr %5174, align 4, !tbaa !5
  %5176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5163, ptr noundef @.str.5, i32 noundef %5164, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 201, ptr noundef %5167, ptr noundef %5170, ptr noundef %5173, i32 noundef %5175) #12
  br label %5177

5177:                                             ; preds = %5160, %5143
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #12
  br label %5178

5178:                                             ; preds = %5177
  br label %5179

5179:                                             ; preds = %5178
  call void @exit(i32 noundef 1) #14
  unreachable

5180:                                             ; No predecessors!
  br label %5181

5181:                                             ; preds = %5180
  br label %5182

5182:                                             ; preds = %5181, %5123
  br label %5183

5183:                                             ; preds = %5182
  br label %5184

5184:                                             ; preds = %5183
  br label %5185

5185:                                             ; preds = %5184
  %5186 = load i32, ptr @test_count, align 4, !tbaa !5
  %5187 = add nsw i32 %5186, 1
  store i32 %5187, ptr @test_count, align 4, !tbaa !5
  %5188 = load ptr, ptr %92, align 8, !tbaa !9
  %5189 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef %5188)
  %5190 = getelementptr inbounds %struct.s2n_result, ptr %95, i32 0, i32 0
  store i32 %5189, ptr %5190, align 4
  %5191 = getelementptr inbounds %struct.s2n_result, ptr %95, i32 0, i32 0
  %5192 = load i32, ptr %5191, align 4
  %5193 = call zeroext i1 @s2n_result_is_ok(i32 %5192)
  br i1 %5193, label %5247, label %5194

5194:                                             ; preds = %5185
  br label %5195

5195:                                             ; preds = %5194
  br label %5196

5196:                                             ; preds = %5195
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #12
  %5197 = call ptr @__errno_location() #13
  %5198 = load i32, ptr %5197, align 4, !tbaa !5
  store i32 %5198, ptr %96, align 4, !tbaa !5
  %5199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5200 = call i32 @s2n_print_stacktrace(ptr noundef %5199)
  %5201 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5202 = trunc i8 %5201 to i1
  br i1 %5202, label %5203, label %5225

5203:                                             ; preds = %5196
  %5204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5205 = call i32 @fileno(ptr noundef %5204) #12
  %5206 = call i32 @isatty(i32 noundef %5205) #12
  %5207 = icmp ne i32 %5206, 0
  br i1 %5207, label %5208, label %5225

5208:                                             ; preds = %5203
  %5209 = load i32, ptr %96, align 4, !tbaa !5
  %5210 = call ptr @__errno_location() #13
  store i32 %5209, ptr %5210, align 4, !tbaa !5
  %5211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5212 = load i32, ptr @test_count, align 4, !tbaa !5
  %5213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5214 = load i32, ptr %5213, align 4, !tbaa !5
  %5215 = call ptr @s2n_strerror(i32 noundef %5214, ptr noundef @.str.4)
  %5216 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5217 = load i32, ptr %5216, align 4, !tbaa !5
  %5218 = call ptr @s2n_strerror_debug(i32 noundef %5217, ptr noundef @.str.4)
  %5219 = call ptr @__errno_location() #13
  %5220 = load i32, ptr %5219, align 4, !tbaa !5
  %5221 = call ptr @strerror(i32 noundef %5220) #12
  %5222 = call ptr @__errno_location() #13
  %5223 = load i32, ptr %5222, align 4, !tbaa !5
  %5224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5211, ptr noundef @.str.2, i32 noundef %5212, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 202, ptr noundef %5215, ptr noundef %5218, ptr noundef %5221, i32 noundef %5223) #12
  br label %5242

5225:                                             ; preds = %5203, %5196
  %5226 = load i32, ptr %96, align 4, !tbaa !5
  %5227 = call ptr @__errno_location() #13
  store i32 %5226, ptr %5227, align 4, !tbaa !5
  %5228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5229 = load i32, ptr @test_count, align 4, !tbaa !5
  %5230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5231 = load i32, ptr %5230, align 4, !tbaa !5
  %5232 = call ptr @s2n_strerror(i32 noundef %5231, ptr noundef @.str.4)
  %5233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5234 = load i32, ptr %5233, align 4, !tbaa !5
  %5235 = call ptr @s2n_strerror_debug(i32 noundef %5234, ptr noundef @.str.4)
  %5236 = call ptr @__errno_location() #13
  %5237 = load i32, ptr %5236, align 4, !tbaa !5
  %5238 = call ptr @strerror(i32 noundef %5237) #12
  %5239 = call ptr @__errno_location() #13
  %5240 = load i32, ptr %5239, align 4, !tbaa !5
  %5241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5228, ptr noundef @.str.5, i32 noundef %5229, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 202, ptr noundef %5232, ptr noundef %5235, ptr noundef %5238, i32 noundef %5240) #12
  br label %5242

5242:                                             ; preds = %5225, %5208
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #12
  br label %5243

5243:                                             ; preds = %5242
  br label %5244

5244:                                             ; preds = %5243
  call void @exit(i32 noundef 1) #14
  unreachable

5245:                                             ; No predecessors!
  br label %5246

5246:                                             ; preds = %5245
  br label %5247

5247:                                             ; preds = %5246, %5185
  br label %5248

5248:                                             ; preds = %5247
  br label %5249

5249:                                             ; preds = %5248
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #12
  store ptr null, ptr %97, align 8, !tbaa !9
  br label %5250

5250:                                             ; preds = %5249
  %5251 = load i32, ptr @test_count, align 4, !tbaa !5
  %5252 = add nsw i32 %5251, 1
  store i32 %5252, ptr @test_count, align 4, !tbaa !5
  %5253 = load ptr, ptr %92, align 8, !tbaa !9
  %5254 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %5253, ptr noundef %97)
  %5255 = icmp eq i32 %5254, -1
  br i1 %5255, label %5256, label %5309

5256:                                             ; preds = %5250
  br label %5257

5257:                                             ; preds = %5256
  br label %5258

5258:                                             ; preds = %5257
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #12
  %5259 = call ptr @__errno_location() #13
  %5260 = load i32, ptr %5259, align 4, !tbaa !5
  store i32 %5260, ptr %98, align 4, !tbaa !5
  %5261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5262 = call i32 @s2n_print_stacktrace(ptr noundef %5261)
  %5263 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5264 = trunc i8 %5263 to i1
  br i1 %5264, label %5265, label %5287

5265:                                             ; preds = %5258
  %5266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5267 = call i32 @fileno(ptr noundef %5266) #12
  %5268 = call i32 @isatty(i32 noundef %5267) #12
  %5269 = icmp ne i32 %5268, 0
  br i1 %5269, label %5270, label %5287

5270:                                             ; preds = %5265
  %5271 = load i32, ptr %98, align 4, !tbaa !5
  %5272 = call ptr @__errno_location() #13
  store i32 %5271, ptr %5272, align 4, !tbaa !5
  %5273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5274 = load i32, ptr @test_count, align 4, !tbaa !5
  %5275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5276 = load i32, ptr %5275, align 4, !tbaa !5
  %5277 = call ptr @s2n_strerror(i32 noundef %5276, ptr noundef @.str.4)
  %5278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5279 = load i32, ptr %5278, align 4, !tbaa !5
  %5280 = call ptr @s2n_strerror_debug(i32 noundef %5279, ptr noundef @.str.4)
  %5281 = call ptr @__errno_location() #13
  %5282 = load i32, ptr %5281, align 4, !tbaa !5
  %5283 = call ptr @strerror(i32 noundef %5282) #12
  %5284 = call ptr @__errno_location() #13
  %5285 = load i32, ptr %5284, align 4, !tbaa !5
  %5286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5273, ptr noundef @.str.2, i32 noundef %5274, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 205, ptr noundef %5277, ptr noundef %5280, ptr noundef %5283, i32 noundef %5285) #12
  br label %5304

5287:                                             ; preds = %5265, %5258
  %5288 = load i32, ptr %98, align 4, !tbaa !5
  %5289 = call ptr @__errno_location() #13
  store i32 %5288, ptr %5289, align 4, !tbaa !5
  %5290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5291 = load i32, ptr @test_count, align 4, !tbaa !5
  %5292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5293 = load i32, ptr %5292, align 4, !tbaa !5
  %5294 = call ptr @s2n_strerror(i32 noundef %5293, ptr noundef @.str.4)
  %5295 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5296 = load i32, ptr %5295, align 4, !tbaa !5
  %5297 = call ptr @s2n_strerror_debug(i32 noundef %5296, ptr noundef @.str.4)
  %5298 = call ptr @__errno_location() #13
  %5299 = load i32, ptr %5298, align 4, !tbaa !5
  %5300 = call ptr @strerror(i32 noundef %5299) #12
  %5301 = call ptr @__errno_location() #13
  %5302 = load i32, ptr %5301, align 4, !tbaa !5
  %5303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5290, ptr noundef @.str.5, i32 noundef %5291, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 205, ptr noundef %5294, ptr noundef %5297, ptr noundef %5300, i32 noundef %5302) #12
  br label %5304

5304:                                             ; preds = %5287, %5270
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #12
  br label %5305

5305:                                             ; preds = %5304
  br label %5306

5306:                                             ; preds = %5305
  call void @exit(i32 noundef 1) #14
  unreachable

5307:                                             ; No predecessors!
  br label %5308

5308:                                             ; preds = %5307
  br label %5309

5309:                                             ; preds = %5308, %5250
  br label %5310

5310:                                             ; preds = %5309
  br label %5311

5311:                                             ; preds = %5310
  br label %5312

5312:                                             ; preds = %5311
  %5313 = load i32, ptr @test_count, align 4, !tbaa !5
  %5314 = add nsw i32 %5313, 1
  store i32 %5314, ptr @test_count, align 4, !tbaa !5
  %5315 = load ptr, ptr %97, align 8, !tbaa !9
  %5316 = icmp eq ptr %5315, null
  br i1 %5316, label %5317, label %5370

5317:                                             ; preds = %5312
  br label %5318

5318:                                             ; preds = %5317
  br label %5319

5319:                                             ; preds = %5318
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #12
  %5320 = call ptr @__errno_location() #13
  %5321 = load i32, ptr %5320, align 4, !tbaa !5
  store i32 %5321, ptr %99, align 4, !tbaa !5
  %5322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5323 = call i32 @s2n_print_stacktrace(ptr noundef %5322)
  %5324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5325 = trunc i8 %5324 to i1
  br i1 %5325, label %5326, label %5348

5326:                                             ; preds = %5319
  %5327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5328 = call i32 @fileno(ptr noundef %5327) #12
  %5329 = call i32 @isatty(i32 noundef %5328) #12
  %5330 = icmp ne i32 %5329, 0
  br i1 %5330, label %5331, label %5348

5331:                                             ; preds = %5326
  %5332 = load i32, ptr %99, align 4, !tbaa !5
  %5333 = call ptr @__errno_location() #13
  store i32 %5332, ptr %5333, align 4, !tbaa !5
  %5334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5335 = load i32, ptr @test_count, align 4, !tbaa !5
  %5336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5337 = load i32, ptr %5336, align 4, !tbaa !5
  %5338 = call ptr @s2n_strerror(i32 noundef %5337, ptr noundef @.str.4)
  %5339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5340 = load i32, ptr %5339, align 4, !tbaa !5
  %5341 = call ptr @s2n_strerror_debug(i32 noundef %5340, ptr noundef @.str.4)
  %5342 = call ptr @__errno_location() #13
  %5343 = load i32, ptr %5342, align 4, !tbaa !5
  %5344 = call ptr @strerror(i32 noundef %5343) #12
  %5345 = call ptr @__errno_location() #13
  %5346 = load i32, ptr %5345, align 4, !tbaa !5
  %5347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5334, ptr noundef @.str.2, i32 noundef %5335, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 206, ptr noundef %5338, ptr noundef %5341, ptr noundef %5344, i32 noundef %5346) #12
  br label %5365

5348:                                             ; preds = %5326, %5319
  %5349 = load i32, ptr %99, align 4, !tbaa !5
  %5350 = call ptr @__errno_location() #13
  store i32 %5349, ptr %5350, align 4, !tbaa !5
  %5351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5352 = load i32, ptr @test_count, align 4, !tbaa !5
  %5353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5354 = load i32, ptr %5353, align 4, !tbaa !5
  %5355 = call ptr @s2n_strerror(i32 noundef %5354, ptr noundef @.str.4)
  %5356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5357 = load i32, ptr %5356, align 4, !tbaa !5
  %5358 = call ptr @s2n_strerror_debug(i32 noundef %5357, ptr noundef @.str.4)
  %5359 = call ptr @__errno_location() #13
  %5360 = load i32, ptr %5359, align 4, !tbaa !5
  %5361 = call ptr @strerror(i32 noundef %5360) #12
  %5362 = call ptr @__errno_location() #13
  %5363 = load i32, ptr %5362, align 4, !tbaa !5
  %5364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5351, ptr noundef @.str.5, i32 noundef %5352, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 206, ptr noundef %5355, ptr noundef %5358, ptr noundef %5361, i32 noundef %5363) #12
  br label %5365

5365:                                             ; preds = %5348, %5331
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #12
  br label %5366

5366:                                             ; preds = %5365
  br label %5367

5367:                                             ; preds = %5366
  call void @exit(i32 noundef 1) #14
  unreachable

5368:                                             ; No predecessors!
  br label %5369

5369:                                             ; preds = %5368
  br label %5370

5370:                                             ; preds = %5369, %5312
  br label %5371

5371:                                             ; preds = %5370
  br label %5372

5372:                                             ; preds = %5371
  br label %5373

5373:                                             ; preds = %5372
  %5374 = load i32, ptr @test_count, align 4, !tbaa !5
  %5375 = add nsw i32 %5374, 1
  store i32 %5375, ptr @test_count, align 4, !tbaa !5
  %5376 = load ptr, ptr %92, align 8, !tbaa !9
  %5377 = getelementptr inbounds %struct.s2n_connection, ptr %5376, i32 0, i32 31
  %5378 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5377, i32 0, i32 1
  %5379 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5378, i32 0, i32 0
  %5380 = load ptr, ptr %5379, align 8, !tbaa !15
  %5381 = icmp eq ptr %5380, null
  br i1 %5381, label %5435, label %5382

5382:                                             ; preds = %5373
  br label %5383

5383:                                             ; preds = %5382
  br label %5384

5384:                                             ; preds = %5383
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #12
  %5385 = call ptr @__errno_location() #13
  %5386 = load i32, ptr %5385, align 4, !tbaa !5
  store i32 %5386, ptr %100, align 4, !tbaa !5
  %5387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5388 = call i32 @s2n_print_stacktrace(ptr noundef %5387)
  %5389 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5390 = trunc i8 %5389 to i1
  br i1 %5390, label %5391, label %5413

5391:                                             ; preds = %5384
  %5392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5393 = call i32 @fileno(ptr noundef %5392) #12
  %5394 = call i32 @isatty(i32 noundef %5393) #12
  %5395 = icmp ne i32 %5394, 0
  br i1 %5395, label %5396, label %5413

5396:                                             ; preds = %5391
  %5397 = load i32, ptr %100, align 4, !tbaa !5
  %5398 = call ptr @__errno_location() #13
  store i32 %5397, ptr %5398, align 4, !tbaa !5
  %5399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5400 = load i32, ptr @test_count, align 4, !tbaa !5
  %5401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5402 = load i32, ptr %5401, align 4, !tbaa !5
  %5403 = call ptr @s2n_strerror(i32 noundef %5402, ptr noundef @.str.4)
  %5404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5405 = load i32, ptr %5404, align 4, !tbaa !5
  %5406 = call ptr @s2n_strerror_debug(i32 noundef %5405, ptr noundef @.str.4)
  %5407 = call ptr @__errno_location() #13
  %5408 = load i32, ptr %5407, align 4, !tbaa !5
  %5409 = call ptr @strerror(i32 noundef %5408) #12
  %5410 = call ptr @__errno_location() #13
  %5411 = load i32, ptr %5410, align 4, !tbaa !5
  %5412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5399, ptr noundef @.str.2, i32 noundef %5400, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 209, ptr noundef %5403, ptr noundef %5406, ptr noundef %5409, i32 noundef %5411) #12
  br label %5430

5413:                                             ; preds = %5391, %5384
  %5414 = load i32, ptr %100, align 4, !tbaa !5
  %5415 = call ptr @__errno_location() #13
  store i32 %5414, ptr %5415, align 4, !tbaa !5
  %5416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5417 = load i32, ptr @test_count, align 4, !tbaa !5
  %5418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5419 = load i32, ptr %5418, align 4, !tbaa !5
  %5420 = call ptr @s2n_strerror(i32 noundef %5419, ptr noundef @.str.4)
  %5421 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5422 = load i32, ptr %5421, align 4, !tbaa !5
  %5423 = call ptr @s2n_strerror_debug(i32 noundef %5422, ptr noundef @.str.4)
  %5424 = call ptr @__errno_location() #13
  %5425 = load i32, ptr %5424, align 4, !tbaa !5
  %5426 = call ptr @strerror(i32 noundef %5425) #12
  %5427 = call ptr @__errno_location() #13
  %5428 = load i32, ptr %5427, align 4, !tbaa !5
  %5429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5416, ptr noundef @.str.5, i32 noundef %5417, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 209, ptr noundef %5420, ptr noundef %5423, ptr noundef %5426, i32 noundef %5428) #12
  br label %5430

5430:                                             ; preds = %5413, %5396
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #12
  br label %5431

5431:                                             ; preds = %5430
  br label %5432

5432:                                             ; preds = %5431
  call void @exit(i32 noundef 1) #14
  unreachable

5433:                                             ; No predecessors!
  br label %5434

5434:                                             ; preds = %5433
  br label %5435

5435:                                             ; preds = %5434, %5373
  br label %5436

5436:                                             ; preds = %5435
  br label %5437

5437:                                             ; preds = %5436
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #12
  %5438 = load ptr, ptr %92, align 8, !tbaa !9
  %5439 = getelementptr inbounds %struct.s2n_connection, ptr %5438, i32 0, i32 31
  %5440 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5439, i32 0, i32 4
  store ptr %5440, ptr %101, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #12
  %5441 = load ptr, ptr %97, align 8, !tbaa !9
  %5442 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %5441, i32 0, i32 3
  %5443 = load ptr, ptr %5442, align 8, !tbaa !48
  %5444 = getelementptr inbounds ptr, ptr %5443, i64 0
  %5445 = load ptr, ptr %5444, align 8, !tbaa !9
  store ptr %5445, ptr %102, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #12
  %5446 = load ptr, ptr %97, align 8, !tbaa !9
  %5447 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %5446, i32 0, i32 3
  %5448 = load ptr, ptr %5447, align 8, !tbaa !48
  %5449 = getelementptr inbounds ptr, ptr %5448, i64 1
  %5450 = load ptr, ptr %5449, align 8, !tbaa !9
  store ptr %5450, ptr %103, align 8, !tbaa !9
  %5451 = load ptr, ptr %102, align 8, !tbaa !9
  %5452 = load ptr, ptr %101, align 8, !tbaa !9
  %5453 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5452, i32 0, i32 0
  store ptr %5451, ptr %5453, align 8, !tbaa !50
  %5454 = load ptr, ptr %102, align 8, !tbaa !9
  %5455 = getelementptr inbounds %struct.s2n_kem_group, ptr %5454, i32 0, i32 3
  %5456 = load ptr, ptr %5455, align 8, !tbaa !51
  %5457 = load ptr, ptr %101, align 8, !tbaa !9
  %5458 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5457, i32 0, i32 1
  %5459 = getelementptr inbounds %struct.s2n_kem_params, ptr %5458, i32 0, i32 0
  store ptr %5456, ptr %5459, align 8, !tbaa !53
  %5460 = load ptr, ptr %102, align 8, !tbaa !9
  %5461 = getelementptr inbounds %struct.s2n_kem_group, ptr %5460, i32 0, i32 2
  %5462 = load ptr, ptr %5461, align 8, !tbaa !54
  %5463 = load ptr, ptr %101, align 8, !tbaa !9
  %5464 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5463, i32 0, i32 2
  %5465 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5464, i32 0, i32 0
  store ptr %5462, ptr %5465, align 8, !tbaa !55
  br label %5466

5466:                                             ; preds = %5437
  %5467 = load i32, ptr @test_count, align 4, !tbaa !5
  %5468 = add nsw i32 %5467, 1
  store i32 %5468, ptr @test_count, align 4, !tbaa !5
  %5469 = load ptr, ptr %92, align 8, !tbaa !9
  %5470 = getelementptr inbounds %struct.s2n_connection, ptr %5469, i32 0, i32 31
  %5471 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5470, i32 0, i32 5
  %5472 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5471, i32 0, i32 0
  %5473 = load ptr, ptr %5472, align 8, !tbaa !56
  %5474 = icmp eq ptr %5473, null
  br i1 %5474, label %5528, label %5475

5475:                                             ; preds = %5466
  br label %5476

5476:                                             ; preds = %5475
  br label %5477

5477:                                             ; preds = %5476
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #12
  %5478 = call ptr @__errno_location() #13
  %5479 = load i32, ptr %5478, align 4, !tbaa !5
  store i32 %5479, ptr %104, align 4, !tbaa !5
  %5480 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5481 = call i32 @s2n_print_stacktrace(ptr noundef %5480)
  %5482 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5483 = trunc i8 %5482 to i1
  br i1 %5483, label %5484, label %5506

5484:                                             ; preds = %5477
  %5485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5486 = call i32 @fileno(ptr noundef %5485) #12
  %5487 = call i32 @isatty(i32 noundef %5486) #12
  %5488 = icmp ne i32 %5487, 0
  br i1 %5488, label %5489, label %5506

5489:                                             ; preds = %5484
  %5490 = load i32, ptr %104, align 4, !tbaa !5
  %5491 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %5500 = call ptr @__errno_location() #13
  %5501 = load i32, ptr %5500, align 4, !tbaa !5
  %5502 = call ptr @strerror(i32 noundef %5501) #12
  %5503 = call ptr @__errno_location() #13
  %5504 = load i32, ptr %5503, align 4, !tbaa !5
  %5505 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5492, ptr noundef @.str.2, i32 noundef %5493, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 218, ptr noundef %5496, ptr noundef %5499, ptr noundef %5502, i32 noundef %5504) #12
  br label %5523

5506:                                             ; preds = %5484, %5477
  %5507 = load i32, ptr %104, align 4, !tbaa !5
  %5508 = call ptr @__errno_location() #13
  store i32 %5507, ptr %5508, align 4, !tbaa !5
  %5509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5510 = load i32, ptr @test_count, align 4, !tbaa !5
  %5511 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5512 = load i32, ptr %5511, align 4, !tbaa !5
  %5513 = call ptr @s2n_strerror(i32 noundef %5512, ptr noundef @.str.4)
  %5514 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5515 = load i32, ptr %5514, align 4, !tbaa !5
  %5516 = call ptr @s2n_strerror_debug(i32 noundef %5515, ptr noundef @.str.4)
  %5517 = call ptr @__errno_location() #13
  %5518 = load i32, ptr %5517, align 4, !tbaa !5
  %5519 = call ptr @strerror(i32 noundef %5518) #12
  %5520 = call ptr @__errno_location() #13
  %5521 = load i32, ptr %5520, align 4, !tbaa !5
  %5522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5509, ptr noundef @.str.5, i32 noundef %5510, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 218, ptr noundef %5513, ptr noundef %5516, ptr noundef %5519, i32 noundef %5521) #12
  br label %5523

5523:                                             ; preds = %5506, %5489
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #12
  br label %5524

5524:                                             ; preds = %5523
  br label %5525

5525:                                             ; preds = %5524
  call void @exit(i32 noundef 1) #14
  unreachable

5526:                                             ; No predecessors!
  br label %5527

5527:                                             ; preds = %5526
  br label %5528

5528:                                             ; preds = %5527, %5466
  br label %5529

5529:                                             ; preds = %5528
  br label %5530

5530:                                             ; preds = %5529
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #12
  %5531 = load ptr, ptr %92, align 8, !tbaa !9
  %5532 = getelementptr inbounds %struct.s2n_connection, ptr %5531, i32 0, i32 31
  %5533 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5532, i32 0, i32 5
  store ptr %5533, ptr %105, align 8, !tbaa !9
  %5534 = load ptr, ptr %103, align 8, !tbaa !9
  %5535 = load ptr, ptr %105, align 8, !tbaa !9
  %5536 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5535, i32 0, i32 0
  store ptr %5534, ptr %5536, align 8, !tbaa !50
  %5537 = load ptr, ptr %103, align 8, !tbaa !9
  %5538 = getelementptr inbounds %struct.s2n_kem_group, ptr %5537, i32 0, i32 3
  %5539 = load ptr, ptr %5538, align 8, !tbaa !51
  %5540 = load ptr, ptr %105, align 8, !tbaa !9
  %5541 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5540, i32 0, i32 1
  %5542 = getelementptr inbounds %struct.s2n_kem_params, ptr %5541, i32 0, i32 0
  store ptr %5539, ptr %5542, align 8, !tbaa !53
  %5543 = load ptr, ptr %103, align 8, !tbaa !9
  %5544 = getelementptr inbounds %struct.s2n_kem_group, ptr %5543, i32 0, i32 2
  %5545 = load ptr, ptr %5544, align 8, !tbaa !54
  %5546 = load ptr, ptr %105, align 8, !tbaa !9
  %5547 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5546, i32 0, i32 2
  %5548 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5547, i32 0, i32 0
  store ptr %5545, ptr %5548, align 8, !tbaa !55
  br label %5549

5549:                                             ; preds = %5530
  %5550 = load i32, ptr @test_count, align 4, !tbaa !5
  %5551 = add nsw i32 %5550, 1
  store i32 %5551, ptr @test_count, align 4, !tbaa !5
  %5552 = load ptr, ptr %105, align 8, !tbaa !9
  %5553 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5552, i32 0, i32 1
  %5554 = getelementptr inbounds %struct.s2n_kem_params, ptr %5553, i32 0, i32 1
  %5555 = load ptr, ptr %103, align 8, !tbaa !9
  %5556 = getelementptr inbounds %struct.s2n_kem_group, ptr %5555, i32 0, i32 3
  %5557 = load ptr, ptr %5556, align 8, !tbaa !51
  %5558 = getelementptr inbounds %struct.s2n_kem, ptr %5557, i32 0, i32 3
  %5559 = load i16, ptr %5558, align 2, !tbaa !61
  %5560 = zext i16 %5559 to i32
  %5561 = call i32 @s2n_alloc(ptr noundef %5554, i32 noundef %5560)
  %5562 = icmp eq i32 %5561, -1
  br i1 %5562, label %5563, label %5616

5563:                                             ; preds = %5549
  br label %5564

5564:                                             ; preds = %5563
  br label %5565

5565:                                             ; preds = %5564
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #12
  %5566 = call ptr @__errno_location() #13
  %5567 = load i32, ptr %5566, align 4, !tbaa !5
  store i32 %5567, ptr %106, align 4, !tbaa !5
  %5568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5569 = call i32 @s2n_print_stacktrace(ptr noundef %5568)
  %5570 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5571 = trunc i8 %5570 to i1
  br i1 %5571, label %5572, label %5594

5572:                                             ; preds = %5565
  %5573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5574 = call i32 @fileno(ptr noundef %5573) #12
  %5575 = call i32 @isatty(i32 noundef %5574) #12
  %5576 = icmp ne i32 %5575, 0
  br i1 %5576, label %5577, label %5594

5577:                                             ; preds = %5572
  %5578 = load i32, ptr %106, align 4, !tbaa !5
  %5579 = call ptr @__errno_location() #13
  store i32 %5578, ptr %5579, align 4, !tbaa !5
  %5580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5581 = load i32, ptr @test_count, align 4, !tbaa !5
  %5582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5583 = load i32, ptr %5582, align 4, !tbaa !5
  %5584 = call ptr @s2n_strerror(i32 noundef %5583, ptr noundef @.str.4)
  %5585 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5586 = load i32, ptr %5585, align 4, !tbaa !5
  %5587 = call ptr @s2n_strerror_debug(i32 noundef %5586, ptr noundef @.str.4)
  %5588 = call ptr @__errno_location() #13
  %5589 = load i32, ptr %5588, align 4, !tbaa !5
  %5590 = call ptr @strerror(i32 noundef %5589) #12
  %5591 = call ptr @__errno_location() #13
  %5592 = load i32, ptr %5591, align 4, !tbaa !5
  %5593 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5580, ptr noundef @.str.2, i32 noundef %5581, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 223, ptr noundef %5584, ptr noundef %5587, ptr noundef %5590, i32 noundef %5592) #12
  br label %5611

5594:                                             ; preds = %5572, %5565
  %5595 = load i32, ptr %106, align 4, !tbaa !5
  %5596 = call ptr @__errno_location() #13
  store i32 %5595, ptr %5596, align 4, !tbaa !5
  %5597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5598 = load i32, ptr @test_count, align 4, !tbaa !5
  %5599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5600 = load i32, ptr %5599, align 4, !tbaa !5
  %5601 = call ptr @s2n_strerror(i32 noundef %5600, ptr noundef @.str.4)
  %5602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5603 = load i32, ptr %5602, align 4, !tbaa !5
  %5604 = call ptr @s2n_strerror_debug(i32 noundef %5603, ptr noundef @.str.4)
  %5605 = call ptr @__errno_location() #13
  %5606 = load i32, ptr %5605, align 4, !tbaa !5
  %5607 = call ptr @strerror(i32 noundef %5606) #12
  %5608 = call ptr @__errno_location() #13
  %5609 = load i32, ptr %5608, align 4, !tbaa !5
  %5610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5597, ptr noundef @.str.5, i32 noundef %5598, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 223, ptr noundef %5601, ptr noundef %5604, ptr noundef %5607, i32 noundef %5609) #12
  br label %5611

5611:                                             ; preds = %5594, %5577
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #12
  br label %5612

5612:                                             ; preds = %5611
  br label %5613

5613:                                             ; preds = %5612
  call void @exit(i32 noundef 1) #14
  unreachable

5614:                                             ; No predecessors!
  br label %5615

5615:                                             ; preds = %5614
  br label %5616

5616:                                             ; preds = %5615, %5549
  br label %5617

5617:                                             ; preds = %5616
  br label %5618

5618:                                             ; preds = %5617
  br label %5619

5619:                                             ; preds = %5618
  call void @llvm.lifetime.start.p0(i64 2, ptr %107) #12
  %5620 = load ptr, ptr %103, align 8, !tbaa !9
  %5621 = getelementptr inbounds %struct.s2n_kem_group, ptr %5620, i32 0, i32 3
  %5622 = load ptr, ptr %5621, align 8, !tbaa !51
  %5623 = getelementptr inbounds %struct.s2n_kem, ptr %5622, i32 0, i32 3
  %5624 = load i16, ptr %5623, align 2, !tbaa !61
  store i16 %5624, ptr %107, align 2, !tbaa !63
  %5625 = load i16, ptr %107, align 2, !tbaa !63
  %5626 = icmp ne i16 %5625, 0
  %5627 = xor i1 %5626, true
  %5628 = xor i1 %5627, true
  %5629 = zext i1 %5628 to i32
  %5630 = sext i32 %5629 to i64
  %5631 = call i64 @llvm.expect.i64(i64 %5630, i64 1)
  %5632 = icmp ne i64 %5631, 0
  br i1 %5632, label %5633, label %5684

5633:                                             ; preds = %5619
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #12
  %5634 = load ptr, ptr %105, align 8, !tbaa !9
  %5635 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5634, i32 0, i32 1
  %5636 = getelementptr inbounds %struct.s2n_kem_params, ptr %5635, i32 0, i32 1
  %5637 = getelementptr inbounds %struct.s2n_blob, ptr %5636, i32 0, i32 0
  %5638 = load ptr, ptr %5637, align 8, !tbaa !64
  store ptr %5638, ptr %108, align 8, !tbaa !9
  br label %5639

5639:                                             ; preds = %5633
  %5640 = load ptr, ptr %108, align 8, !tbaa !9
  %5641 = icmp ne ptr %5640, null
  br i1 %5641, label %5675, label %5642

5642:                                             ; preds = %5639
  br label %5643

5643:                                             ; preds = %5642
  br label %5644

5644:                                             ; preds = %5643
  %5645 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %5646 = getelementptr inbounds %struct.s2n_debug_info, ptr %5645, i32 0, i32 0
  store ptr @.str.47, ptr %5646, align 8, !tbaa !65
  %5647 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %5648 = getelementptr inbounds %struct.s2n_debug_info, ptr %5647, i32 0, i32 0
  %5649 = load ptr, ptr %5648, align 8, !tbaa !65
  %5650 = getelementptr inbounds i8, ptr %5649, i64 21
  %5651 = call ptr @strrchr(ptr noundef %5650, i32 noundef 47) #15
  %5652 = icmp ne ptr %5651, null
  br i1 %5652, label %5653, label %5660

5653:                                             ; preds = %5644
  %5654 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %5655 = getelementptr inbounds %struct.s2n_debug_info, ptr %5654, i32 0, i32 0
  %5656 = load ptr, ptr %5655, align 8, !tbaa !65
  %5657 = getelementptr inbounds i8, ptr %5656, i64 21
  %5658 = call ptr @strrchr(ptr noundef %5657, i32 noundef 47) #15
  %5659 = getelementptr inbounds i8, ptr %5658, i64 1
  br label %5665

5660:                                             ; preds = %5644
  %5661 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %5662 = getelementptr inbounds %struct.s2n_debug_info, ptr %5661, i32 0, i32 0
  %5663 = load ptr, ptr %5662, align 8, !tbaa !65
  %5664 = getelementptr inbounds i8, ptr %5663, i64 21
  br label %5665

5665:                                             ; preds = %5660, %5653
  %5666 = phi ptr [ %5659, %5653 ], [ %5664, %5660 ]
  %5667 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %5668 = getelementptr inbounds %struct.s2n_debug_info, ptr %5667, i32 0, i32 1
  store ptr %5666, ptr %5668, align 8, !tbaa !67
  %5669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %5669, align 4, !tbaa !5
  %5670 = call i32 @s2n_calculate_stacktrace()
  br label %5671

5671:                                             ; preds = %5665
  br label %5672

5672:                                             ; preds = %5671
  store i32 -1, ptr %1, align 4
  store i32 1, ptr %10, align 4
  br label %5681

5673:                                             ; No predecessors!
  br label %5674

5674:                                             ; preds = %5673
  br label %5675

5675:                                             ; preds = %5674, %5639
  br label %5676

5676:                                             ; preds = %5675
  br label %5677

5677:                                             ; preds = %5676
  %5678 = load ptr, ptr %108, align 8, !tbaa !9
  %5679 = load i16, ptr %107, align 2, !tbaa !63
  %5680 = zext i16 %5679 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %5678, i8 1, i64 %5680, i1 false)
  store i32 0, ptr %10, align 4
  br label %5681

5681:                                             ; preds = %5677, %5672
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #12
  %5682 = load i32, ptr %10, align 4
  switch i32 %5682, label %5685 [
    i32 0, label %5683
  ]

5683:                                             ; preds = %5681
  br label %5684

5684:                                             ; preds = %5683, %5619
  store i32 0, ptr %10, align 4
  br label %5685

5685:                                             ; preds = %5684, %5681
  call void @llvm.lifetime.end.p0(i64 2, ptr %107) #12
  %5686 = load i32, ptr %10, align 4
  switch i32 %5686, label %6267 [
    i32 0, label %5687
  ]

5687:                                             ; preds = %5685
  br label %5688

5688:                                             ; preds = %5687
  br label %5689

5689:                                             ; preds = %5688
  br label %5690

5690:                                             ; preds = %5689
  %5691 = load i32, ptr @test_count, align 4, !tbaa !5
  %5692 = add nsw i32 %5691, 1
  store i32 %5692, ptr @test_count, align 4, !tbaa !5
  %5693 = load ptr, ptr %105, align 8, !tbaa !9
  %5694 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5693, i32 0, i32 2
  %5695 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef %5694)
  %5696 = icmp eq i32 %5695, -1
  br i1 %5696, label %5697, label %5750

5697:                                             ; preds = %5690
  br label %5698

5698:                                             ; preds = %5697
  br label %5699

5699:                                             ; preds = %5698
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #12
  %5700 = call ptr @__errno_location() #13
  %5701 = load i32, ptr %5700, align 4, !tbaa !5
  store i32 %5701, ptr %109, align 4, !tbaa !5
  %5702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5703 = call i32 @s2n_print_stacktrace(ptr noundef %5702)
  %5704 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5705 = trunc i8 %5704 to i1
  br i1 %5705, label %5706, label %5728

5706:                                             ; preds = %5699
  %5707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5708 = call i32 @fileno(ptr noundef %5707) #12
  %5709 = call i32 @isatty(i32 noundef %5708) #12
  %5710 = icmp ne i32 %5709, 0
  br i1 %5710, label %5711, label %5728

5711:                                             ; preds = %5706
  %5712 = load i32, ptr %109, align 4, !tbaa !5
  %5713 = call ptr @__errno_location() #13
  store i32 %5712, ptr %5713, align 4, !tbaa !5
  %5714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5715 = load i32, ptr @test_count, align 4, !tbaa !5
  %5716 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5717 = load i32, ptr %5716, align 4, !tbaa !5
  %5718 = call ptr @s2n_strerror(i32 noundef %5717, ptr noundef @.str.4)
  %5719 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5720 = load i32, ptr %5719, align 4, !tbaa !5
  %5721 = call ptr @s2n_strerror_debug(i32 noundef %5720, ptr noundef @.str.4)
  %5722 = call ptr @__errno_location() #13
  %5723 = load i32, ptr %5722, align 4, !tbaa !5
  %5724 = call ptr @strerror(i32 noundef %5723) #12
  %5725 = call ptr @__errno_location() #13
  %5726 = load i32, ptr %5725, align 4, !tbaa !5
  %5727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5714, ptr noundef @.str.2, i32 noundef %5715, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 226, ptr noundef %5718, ptr noundef %5721, ptr noundef %5724, i32 noundef %5726) #12
  br label %5745

5728:                                             ; preds = %5706, %5699
  %5729 = load i32, ptr %109, align 4, !tbaa !5
  %5730 = call ptr @__errno_location() #13
  store i32 %5729, ptr %5730, align 4, !tbaa !5
  %5731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5732 = load i32, ptr @test_count, align 4, !tbaa !5
  %5733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5734 = load i32, ptr %5733, align 4, !tbaa !5
  %5735 = call ptr @s2n_strerror(i32 noundef %5734, ptr noundef @.str.4)
  %5736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5737 = load i32, ptr %5736, align 4, !tbaa !5
  %5738 = call ptr @s2n_strerror_debug(i32 noundef %5737, ptr noundef @.str.4)
  %5739 = call ptr @__errno_location() #13
  %5740 = load i32, ptr %5739, align 4, !tbaa !5
  %5741 = call ptr @strerror(i32 noundef %5740) #12
  %5742 = call ptr @__errno_location() #13
  %5743 = load i32, ptr %5742, align 4, !tbaa !5
  %5744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5731, ptr noundef @.str.5, i32 noundef %5732, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 226, ptr noundef %5735, ptr noundef %5738, ptr noundef %5741, i32 noundef %5743) #12
  br label %5745

5745:                                             ; preds = %5728, %5711
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #12
  br label %5746

5746:                                             ; preds = %5745
  br label %5747

5747:                                             ; preds = %5746
  call void @exit(i32 noundef 1) #14
  unreachable

5748:                                             ; No predecessors!
  br label %5749

5749:                                             ; preds = %5748
  br label %5750

5750:                                             ; preds = %5749, %5690
  br label %5751

5751:                                             ; preds = %5750
  br label %5752

5752:                                             ; preds = %5751
  br label %5753

5753:                                             ; preds = %5752
  %5754 = load i32, ptr @test_count, align 4, !tbaa !5
  %5755 = add nsw i32 %5754, 1
  store i32 %5755, ptr @test_count, align 4, !tbaa !5
  %5756 = load ptr, ptr %92, align 8, !tbaa !9
  %5757 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %5756)
  %5758 = icmp eq i32 %5757, -1
  br i1 %5758, label %5759, label %5812

5759:                                             ; preds = %5753
  br label %5760

5760:                                             ; preds = %5759
  br label %5761

5761:                                             ; preds = %5760
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #12
  %5762 = call ptr @__errno_location() #13
  %5763 = load i32, ptr %5762, align 4, !tbaa !5
  store i32 %5763, ptr %110, align 4, !tbaa !5
  %5764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5765 = call i32 @s2n_print_stacktrace(ptr noundef %5764)
  %5766 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5767 = trunc i8 %5766 to i1
  br i1 %5767, label %5768, label %5790

5768:                                             ; preds = %5761
  %5769 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5770 = call i32 @fileno(ptr noundef %5769) #12
  %5771 = call i32 @isatty(i32 noundef %5770) #12
  %5772 = icmp ne i32 %5771, 0
  br i1 %5772, label %5773, label %5790

5773:                                             ; preds = %5768
  %5774 = load i32, ptr %110, align 4, !tbaa !5
  %5775 = call ptr @__errno_location() #13
  store i32 %5774, ptr %5775, align 4, !tbaa !5
  %5776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5777 = load i32, ptr @test_count, align 4, !tbaa !5
  %5778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5779 = load i32, ptr %5778, align 4, !tbaa !5
  %5780 = call ptr @s2n_strerror(i32 noundef %5779, ptr noundef @.str.4)
  %5781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5782 = load i32, ptr %5781, align 4, !tbaa !5
  %5783 = call ptr @s2n_strerror_debug(i32 noundef %5782, ptr noundef @.str.4)
  %5784 = call ptr @__errno_location() #13
  %5785 = load i32, ptr %5784, align 4, !tbaa !5
  %5786 = call ptr @strerror(i32 noundef %5785) #12
  %5787 = call ptr @__errno_location() #13
  %5788 = load i32, ptr %5787, align 4, !tbaa !5
  %5789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5776, ptr noundef @.str.2, i32 noundef %5777, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 228, ptr noundef %5780, ptr noundef %5783, ptr noundef %5786, i32 noundef %5788) #12
  br label %5807

5790:                                             ; preds = %5768, %5761
  %5791 = load i32, ptr %110, align 4, !tbaa !5
  %5792 = call ptr @__errno_location() #13
  store i32 %5791, ptr %5792, align 4, !tbaa !5
  %5793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5794 = load i32, ptr @test_count, align 4, !tbaa !5
  %5795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5796 = load i32, ptr %5795, align 4, !tbaa !5
  %5797 = call ptr @s2n_strerror(i32 noundef %5796, ptr noundef @.str.4)
  %5798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5799 = load i32, ptr %5798, align 4, !tbaa !5
  %5800 = call ptr @s2n_strerror_debug(i32 noundef %5799, ptr noundef @.str.4)
  %5801 = call ptr @__errno_location() #13
  %5802 = load i32, ptr %5801, align 4, !tbaa !5
  %5803 = call ptr @strerror(i32 noundef %5802) #12
  %5804 = call ptr @__errno_location() #13
  %5805 = load i32, ptr %5804, align 4, !tbaa !5
  %5806 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5793, ptr noundef @.str.5, i32 noundef %5794, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 228, ptr noundef %5797, ptr noundef %5800, ptr noundef %5803, i32 noundef %5805) #12
  br label %5807

5807:                                             ; preds = %5790, %5773
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #12
  br label %5808

5808:                                             ; preds = %5807
  br label %5809

5809:                                             ; preds = %5808
  call void @exit(i32 noundef 1) #14
  unreachable

5810:                                             ; No predecessors!
  br label %5811

5811:                                             ; preds = %5810
  br label %5812

5812:                                             ; preds = %5811, %5753
  br label %5813

5813:                                             ; preds = %5812
  br label %5814

5814:                                             ; preds = %5813
  br label %5815

5815:                                             ; preds = %5814
  %5816 = load i32, ptr @test_count, align 4, !tbaa !5
  %5817 = add nsw i32 %5816, 1
  store i32 %5817, ptr @test_count, align 4, !tbaa !5
  %5818 = load ptr, ptr %101, align 8, !tbaa !9
  %5819 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5818, i32 0, i32 0
  %5820 = load ptr, ptr %5819, align 8, !tbaa !50
  %5821 = load ptr, ptr %103, align 8, !tbaa !9
  %5822 = icmp eq ptr %5820, %5821
  br i1 %5822, label %5876, label %5823

5823:                                             ; preds = %5815
  br label %5824

5824:                                             ; preds = %5823
  br label %5825

5825:                                             ; preds = %5824
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #12
  %5826 = call ptr @__errno_location() #13
  %5827 = load i32, ptr %5826, align 4, !tbaa !5
  store i32 %5827, ptr %111, align 4, !tbaa !5
  %5828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5829 = call i32 @s2n_print_stacktrace(ptr noundef %5828)
  %5830 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5831 = trunc i8 %5830 to i1
  br i1 %5831, label %5832, label %5854

5832:                                             ; preds = %5825
  %5833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5834 = call i32 @fileno(ptr noundef %5833) #12
  %5835 = call i32 @isatty(i32 noundef %5834) #12
  %5836 = icmp ne i32 %5835, 0
  br i1 %5836, label %5837, label %5854

5837:                                             ; preds = %5832
  %5838 = load i32, ptr %111, align 4, !tbaa !5
  %5839 = call ptr @__errno_location() #13
  store i32 %5838, ptr %5839, align 4, !tbaa !5
  %5840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5841 = load i32, ptr @test_count, align 4, !tbaa !5
  %5842 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5843 = load i32, ptr %5842, align 4, !tbaa !5
  %5844 = call ptr @s2n_strerror(i32 noundef %5843, ptr noundef @.str.4)
  %5845 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5846 = load i32, ptr %5845, align 4, !tbaa !5
  %5847 = call ptr @s2n_strerror_debug(i32 noundef %5846, ptr noundef @.str.4)
  %5848 = call ptr @__errno_location() #13
  %5849 = load i32, ptr %5848, align 4, !tbaa !5
  %5850 = call ptr @strerror(i32 noundef %5849) #12
  %5851 = call ptr @__errno_location() #13
  %5852 = load i32, ptr %5851, align 4, !tbaa !5
  %5853 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5840, ptr noundef @.str.2, i32 noundef %5841, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 231, ptr noundef %5844, ptr noundef %5847, ptr noundef %5850, i32 noundef %5852) #12
  br label %5871

5854:                                             ; preds = %5832, %5825
  %5855 = load i32, ptr %111, align 4, !tbaa !5
  %5856 = call ptr @__errno_location() #13
  store i32 %5855, ptr %5856, align 4, !tbaa !5
  %5857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5858 = load i32, ptr @test_count, align 4, !tbaa !5
  %5859 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5860 = load i32, ptr %5859, align 4, !tbaa !5
  %5861 = call ptr @s2n_strerror(i32 noundef %5860, ptr noundef @.str.4)
  %5862 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5863 = load i32, ptr %5862, align 4, !tbaa !5
  %5864 = call ptr @s2n_strerror_debug(i32 noundef %5863, ptr noundef @.str.4)
  %5865 = call ptr @__errno_location() #13
  %5866 = load i32, ptr %5865, align 4, !tbaa !5
  %5867 = call ptr @strerror(i32 noundef %5866) #12
  %5868 = call ptr @__errno_location() #13
  %5869 = load i32, ptr %5868, align 4, !tbaa !5
  %5870 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5857, ptr noundef @.str.5, i32 noundef %5858, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 231, ptr noundef %5861, ptr noundef %5864, ptr noundef %5867, i32 noundef %5869) #12
  br label %5871

5871:                                             ; preds = %5854, %5837
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #12
  br label %5872

5872:                                             ; preds = %5871
  br label %5873

5873:                                             ; preds = %5872
  call void @exit(i32 noundef 1) #14
  unreachable

5874:                                             ; No predecessors!
  br label %5875

5875:                                             ; preds = %5874
  br label %5876

5876:                                             ; preds = %5875, %5815
  br label %5877

5877:                                             ; preds = %5876
  br label %5878

5878:                                             ; preds = %5877
  br label %5879

5879:                                             ; preds = %5878
  %5880 = load i32, ptr @test_count, align 4, !tbaa !5
  %5881 = add nsw i32 %5880, 1
  store i32 %5881, ptr @test_count, align 4, !tbaa !5
  %5882 = load ptr, ptr %101, align 8, !tbaa !9
  %5883 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5882, i32 0, i32 1
  %5884 = getelementptr inbounds %struct.s2n_kem_params, ptr %5883, i32 0, i32 0
  %5885 = load ptr, ptr %5884, align 8, !tbaa !53
  %5886 = load ptr, ptr %103, align 8, !tbaa !9
  %5887 = getelementptr inbounds %struct.s2n_kem_group, ptr %5886, i32 0, i32 3
  %5888 = load ptr, ptr %5887, align 8, !tbaa !51
  %5889 = icmp eq ptr %5885, %5888
  br i1 %5889, label %5943, label %5890

5890:                                             ; preds = %5879
  br label %5891

5891:                                             ; preds = %5890
  br label %5892

5892:                                             ; preds = %5891
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #12
  %5893 = call ptr @__errno_location() #13
  %5894 = load i32, ptr %5893, align 4, !tbaa !5
  store i32 %5894, ptr %112, align 4, !tbaa !5
  %5895 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5896 = call i32 @s2n_print_stacktrace(ptr noundef %5895)
  %5897 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5898 = trunc i8 %5897 to i1
  br i1 %5898, label %5899, label %5921

5899:                                             ; preds = %5892
  %5900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5901 = call i32 @fileno(ptr noundef %5900) #12
  %5902 = call i32 @isatty(i32 noundef %5901) #12
  %5903 = icmp ne i32 %5902, 0
  br i1 %5903, label %5904, label %5921

5904:                                             ; preds = %5899
  %5905 = load i32, ptr %112, align 4, !tbaa !5
  %5906 = call ptr @__errno_location() #13
  store i32 %5905, ptr %5906, align 4, !tbaa !5
  %5907 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5908 = load i32, ptr @test_count, align 4, !tbaa !5
  %5909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5910 = load i32, ptr %5909, align 4, !tbaa !5
  %5911 = call ptr @s2n_strerror(i32 noundef %5910, ptr noundef @.str.4)
  %5912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5913 = load i32, ptr %5912, align 4, !tbaa !5
  %5914 = call ptr @s2n_strerror_debug(i32 noundef %5913, ptr noundef @.str.4)
  %5915 = call ptr @__errno_location() #13
  %5916 = load i32, ptr %5915, align 4, !tbaa !5
  %5917 = call ptr @strerror(i32 noundef %5916) #12
  %5918 = call ptr @__errno_location() #13
  %5919 = load i32, ptr %5918, align 4, !tbaa !5
  %5920 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5907, ptr noundef @.str.2, i32 noundef %5908, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 232, ptr noundef %5911, ptr noundef %5914, ptr noundef %5917, i32 noundef %5919) #12
  br label %5938

5921:                                             ; preds = %5899, %5892
  %5922 = load i32, ptr %112, align 4, !tbaa !5
  %5923 = call ptr @__errno_location() #13
  store i32 %5922, ptr %5923, align 4, !tbaa !5
  %5924 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5925 = load i32, ptr @test_count, align 4, !tbaa !5
  %5926 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5927 = load i32, ptr %5926, align 4, !tbaa !5
  %5928 = call ptr @s2n_strerror(i32 noundef %5927, ptr noundef @.str.4)
  %5929 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5930 = load i32, ptr %5929, align 4, !tbaa !5
  %5931 = call ptr @s2n_strerror_debug(i32 noundef %5930, ptr noundef @.str.4)
  %5932 = call ptr @__errno_location() #13
  %5933 = load i32, ptr %5932, align 4, !tbaa !5
  %5934 = call ptr @strerror(i32 noundef %5933) #12
  %5935 = call ptr @__errno_location() #13
  %5936 = load i32, ptr %5935, align 4, !tbaa !5
  %5937 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5924, ptr noundef @.str.5, i32 noundef %5925, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 232, ptr noundef %5928, ptr noundef %5931, ptr noundef %5934, i32 noundef %5936) #12
  br label %5938

5938:                                             ; preds = %5921, %5904
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #12
  br label %5939

5939:                                             ; preds = %5938
  br label %5940

5940:                                             ; preds = %5939
  call void @exit(i32 noundef 1) #14
  unreachable

5941:                                             ; No predecessors!
  br label %5942

5942:                                             ; preds = %5941
  br label %5943

5943:                                             ; preds = %5942, %5879
  br label %5944

5944:                                             ; preds = %5943
  br label %5945

5945:                                             ; preds = %5944
  br label %5946

5946:                                             ; preds = %5945
  %5947 = load i32, ptr @test_count, align 4, !tbaa !5
  %5948 = add nsw i32 %5947, 1
  store i32 %5948, ptr @test_count, align 4, !tbaa !5
  %5949 = load ptr, ptr %101, align 8, !tbaa !9
  %5950 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5949, i32 0, i32 2
  %5951 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5950, i32 0, i32 0
  %5952 = load ptr, ptr %5951, align 8, !tbaa !55
  %5953 = load ptr, ptr %103, align 8, !tbaa !9
  %5954 = getelementptr inbounds %struct.s2n_kem_group, ptr %5953, i32 0, i32 2
  %5955 = load ptr, ptr %5954, align 8, !tbaa !54
  %5956 = icmp eq ptr %5952, %5955
  br i1 %5956, label %6010, label %5957

5957:                                             ; preds = %5946
  br label %5958

5958:                                             ; preds = %5957
  br label %5959

5959:                                             ; preds = %5958
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #12
  %5960 = call ptr @__errno_location() #13
  %5961 = load i32, ptr %5960, align 4, !tbaa !5
  store i32 %5961, ptr %113, align 4, !tbaa !5
  %5962 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5963 = call i32 @s2n_print_stacktrace(ptr noundef %5962)
  %5964 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5965 = trunc i8 %5964 to i1
  br i1 %5965, label %5966, label %5988

5966:                                             ; preds = %5959
  %5967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5968 = call i32 @fileno(ptr noundef %5967) #12
  %5969 = call i32 @isatty(i32 noundef %5968) #12
  %5970 = icmp ne i32 %5969, 0
  br i1 %5970, label %5971, label %5988

5971:                                             ; preds = %5966
  %5972 = load i32, ptr %113, align 4, !tbaa !5
  %5973 = call ptr @__errno_location() #13
  store i32 %5972, ptr %5973, align 4, !tbaa !5
  %5974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5975 = load i32, ptr @test_count, align 4, !tbaa !5
  %5976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5977 = load i32, ptr %5976, align 4, !tbaa !5
  %5978 = call ptr @s2n_strerror(i32 noundef %5977, ptr noundef @.str.4)
  %5979 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5980 = load i32, ptr %5979, align 4, !tbaa !5
  %5981 = call ptr @s2n_strerror_debug(i32 noundef %5980, ptr noundef @.str.4)
  %5982 = call ptr @__errno_location() #13
  %5983 = load i32, ptr %5982, align 4, !tbaa !5
  %5984 = call ptr @strerror(i32 noundef %5983) #12
  %5985 = call ptr @__errno_location() #13
  %5986 = load i32, ptr %5985, align 4, !tbaa !5
  %5987 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5974, ptr noundef @.str.2, i32 noundef %5975, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 233, ptr noundef %5978, ptr noundef %5981, ptr noundef %5984, i32 noundef %5986) #12
  br label %6005

5988:                                             ; preds = %5966, %5959
  %5989 = load i32, ptr %113, align 4, !tbaa !5
  %5990 = call ptr @__errno_location() #13
  store i32 %5989, ptr %5990, align 4, !tbaa !5
  %5991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5992 = load i32, ptr @test_count, align 4, !tbaa !5
  %5993 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5994 = load i32, ptr %5993, align 4, !tbaa !5
  %5995 = call ptr @s2n_strerror(i32 noundef %5994, ptr noundef @.str.4)
  %5996 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5997 = load i32, ptr %5996, align 4, !tbaa !5
  %5998 = call ptr @s2n_strerror_debug(i32 noundef %5997, ptr noundef @.str.4)
  %5999 = call ptr @__errno_location() #13
  %6000 = load i32, ptr %5999, align 4, !tbaa !5
  %6001 = call ptr @strerror(i32 noundef %6000) #12
  %6002 = call ptr @__errno_location() #13
  %6003 = load i32, ptr %6002, align 4, !tbaa !5
  %6004 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5991, ptr noundef @.str.5, i32 noundef %5992, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 233, ptr noundef %5995, ptr noundef %5998, ptr noundef %6001, i32 noundef %6003) #12
  br label %6005

6005:                                             ; preds = %5988, %5971
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #12
  br label %6006

6006:                                             ; preds = %6005
  br label %6007

6007:                                             ; preds = %6006
  call void @exit(i32 noundef 1) #14
  unreachable

6008:                                             ; No predecessors!
  br label %6009

6009:                                             ; preds = %6008
  br label %6010

6010:                                             ; preds = %6009, %5946
  br label %6011

6011:                                             ; preds = %6010
  br label %6012

6012:                                             ; preds = %6011
  br label %6013

6013:                                             ; preds = %6012
  %6014 = load i32, ptr @test_count, align 4, !tbaa !5
  %6015 = add nsw i32 %6014, 1
  store i32 %6015, ptr @test_count, align 4, !tbaa !5
  %6016 = load ptr, ptr %92, align 8, !tbaa !9
  %6017 = getelementptr inbounds %struct.s2n_connection, ptr %6016, i32 0, i32 31
  %6018 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6017, i32 0, i32 5
  %6019 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6018, i32 0, i32 0
  %6020 = load ptr, ptr %6019, align 8, !tbaa !56
  %6021 = load ptr, ptr %103, align 8, !tbaa !9
  %6022 = icmp eq ptr %6020, %6021
  br i1 %6022, label %6076, label %6023

6023:                                             ; preds = %6013
  br label %6024

6024:                                             ; preds = %6023
  br label %6025

6025:                                             ; preds = %6024
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #12
  %6026 = call ptr @__errno_location() #13
  %6027 = load i32, ptr %6026, align 4, !tbaa !5
  store i32 %6027, ptr %114, align 4, !tbaa !5
  %6028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6029 = call i32 @s2n_print_stacktrace(ptr noundef %6028)
  %6030 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6031 = trunc i8 %6030 to i1
  br i1 %6031, label %6032, label %6054

6032:                                             ; preds = %6025
  %6033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6034 = call i32 @fileno(ptr noundef %6033) #12
  %6035 = call i32 @isatty(i32 noundef %6034) #12
  %6036 = icmp ne i32 %6035, 0
  br i1 %6036, label %6037, label %6054

6037:                                             ; preds = %6032
  %6038 = load i32, ptr %114, align 4, !tbaa !5
  %6039 = call ptr @__errno_location() #13
  store i32 %6038, ptr %6039, align 4, !tbaa !5
  %6040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6041 = load i32, ptr @test_count, align 4, !tbaa !5
  %6042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6043 = load i32, ptr %6042, align 4, !tbaa !5
  %6044 = call ptr @s2n_strerror(i32 noundef %6043, ptr noundef @.str.4)
  %6045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6046 = load i32, ptr %6045, align 4, !tbaa !5
  %6047 = call ptr @s2n_strerror_debug(i32 noundef %6046, ptr noundef @.str.4)
  %6048 = call ptr @__errno_location() #13
  %6049 = load i32, ptr %6048, align 4, !tbaa !5
  %6050 = call ptr @strerror(i32 noundef %6049) #12
  %6051 = call ptr @__errno_location() #13
  %6052 = load i32, ptr %6051, align 4, !tbaa !5
  %6053 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6040, ptr noundef @.str.2, i32 noundef %6041, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 234, ptr noundef %6044, ptr noundef %6047, ptr noundef %6050, i32 noundef %6052) #12
  br label %6071

6054:                                             ; preds = %6032, %6025
  %6055 = load i32, ptr %114, align 4, !tbaa !5
  %6056 = call ptr @__errno_location() #13
  store i32 %6055, ptr %6056, align 4, !tbaa !5
  %6057 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6058 = load i32, ptr @test_count, align 4, !tbaa !5
  %6059 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6060 = load i32, ptr %6059, align 4, !tbaa !5
  %6061 = call ptr @s2n_strerror(i32 noundef %6060, ptr noundef @.str.4)
  %6062 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6063 = load i32, ptr %6062, align 4, !tbaa !5
  %6064 = call ptr @s2n_strerror_debug(i32 noundef %6063, ptr noundef @.str.4)
  %6065 = call ptr @__errno_location() #13
  %6066 = load i32, ptr %6065, align 4, !tbaa !5
  %6067 = call ptr @strerror(i32 noundef %6066) #12
  %6068 = call ptr @__errno_location() #13
  %6069 = load i32, ptr %6068, align 4, !tbaa !5
  %6070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6057, ptr noundef @.str.5, i32 noundef %6058, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 234, ptr noundef %6061, ptr noundef %6064, ptr noundef %6067, i32 noundef %6069) #12
  br label %6071

6071:                                             ; preds = %6054, %6037
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #12
  br label %6072

6072:                                             ; preds = %6071
  br label %6073

6073:                                             ; preds = %6072
  call void @exit(i32 noundef 1) #14
  unreachable

6074:                                             ; No predecessors!
  br label %6075

6075:                                             ; preds = %6074
  br label %6076

6076:                                             ; preds = %6075, %6013
  br label %6077

6077:                                             ; preds = %6076
  br label %6078

6078:                                             ; preds = %6077
  br label %6079

6079:                                             ; preds = %6078
  %6080 = load i32, ptr @test_count, align 4, !tbaa !5
  %6081 = add nsw i32 %6080, 1
  store i32 %6081, ptr @test_count, align 4, !tbaa !5
  %6082 = load ptr, ptr %92, align 8, !tbaa !9
  %6083 = getelementptr inbounds %struct.s2n_connection, ptr %6082, i32 0, i32 31
  %6084 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6083, i32 0, i32 1
  %6085 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6084, i32 0, i32 0
  %6086 = load ptr, ptr %6085, align 8, !tbaa !15
  %6087 = icmp eq ptr %6086, null
  br i1 %6087, label %6141, label %6088

6088:                                             ; preds = %6079
  br label %6089

6089:                                             ; preds = %6088
  br label %6090

6090:                                             ; preds = %6089
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #12
  %6091 = call ptr @__errno_location() #13
  %6092 = load i32, ptr %6091, align 4, !tbaa !5
  store i32 %6092, ptr %115, align 4, !tbaa !5
  %6093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6094 = call i32 @s2n_print_stacktrace(ptr noundef %6093)
  %6095 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6096 = trunc i8 %6095 to i1
  br i1 %6096, label %6097, label %6119

6097:                                             ; preds = %6090
  %6098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6099 = call i32 @fileno(ptr noundef %6098) #12
  %6100 = call i32 @isatty(i32 noundef %6099) #12
  %6101 = icmp ne i32 %6100, 0
  br i1 %6101, label %6102, label %6119

6102:                                             ; preds = %6097
  %6103 = load i32, ptr %115, align 4, !tbaa !5
  %6104 = call ptr @__errno_location() #13
  store i32 %6103, ptr %6104, align 4, !tbaa !5
  %6105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6106 = load i32, ptr @test_count, align 4, !tbaa !5
  %6107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6108 = load i32, ptr %6107, align 4, !tbaa !5
  %6109 = call ptr @s2n_strerror(i32 noundef %6108, ptr noundef @.str.4)
  %6110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6111 = load i32, ptr %6110, align 4, !tbaa !5
  %6112 = call ptr @s2n_strerror_debug(i32 noundef %6111, ptr noundef @.str.4)
  %6113 = call ptr @__errno_location() #13
  %6114 = load i32, ptr %6113, align 4, !tbaa !5
  %6115 = call ptr @strerror(i32 noundef %6114) #12
  %6116 = call ptr @__errno_location() #13
  %6117 = load i32, ptr %6116, align 4, !tbaa !5
  %6118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6105, ptr noundef @.str.2, i32 noundef %6106, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 235, ptr noundef %6109, ptr noundef %6112, ptr noundef %6115, i32 noundef %6117) #12
  br label %6136

6119:                                             ; preds = %6097, %6090
  %6120 = load i32, ptr %115, align 4, !tbaa !5
  %6121 = call ptr @__errno_location() #13
  store i32 %6120, ptr %6121, align 4, !tbaa !5
  %6122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6123 = load i32, ptr @test_count, align 4, !tbaa !5
  %6124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6125 = load i32, ptr %6124, align 4, !tbaa !5
  %6126 = call ptr @s2n_strerror(i32 noundef %6125, ptr noundef @.str.4)
  %6127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6128 = load i32, ptr %6127, align 4, !tbaa !5
  %6129 = call ptr @s2n_strerror_debug(i32 noundef %6128, ptr noundef @.str.4)
  %6130 = call ptr @__errno_location() #13
  %6131 = load i32, ptr %6130, align 4, !tbaa !5
  %6132 = call ptr @strerror(i32 noundef %6131) #12
  %6133 = call ptr @__errno_location() #13
  %6134 = load i32, ptr %6133, align 4, !tbaa !5
  %6135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6122, ptr noundef @.str.5, i32 noundef %6123, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 235, ptr noundef %6126, ptr noundef %6129, ptr noundef %6132, i32 noundef %6134) #12
  br label %6136

6136:                                             ; preds = %6119, %6102
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #12
  br label %6137

6137:                                             ; preds = %6136
  br label %6138

6138:                                             ; preds = %6137
  call void @exit(i32 noundef 1) #14
  unreachable

6139:                                             ; No predecessors!
  br label %6140

6140:                                             ; preds = %6139
  br label %6141

6141:                                             ; preds = %6140, %6079
  br label %6142

6142:                                             ; preds = %6141
  br label %6143

6143:                                             ; preds = %6142
  br label %6144

6144:                                             ; preds = %6143
  %6145 = load i32, ptr @test_count, align 4, !tbaa !5
  %6146 = add nsw i32 %6145, 1
  store i32 %6146, ptr @test_count, align 4, !tbaa !5
  %6147 = load ptr, ptr %92, align 8, !tbaa !9
  %6148 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %6147)
  br i1 %6148, label %6149, label %6202

6149:                                             ; preds = %6144
  br label %6150

6150:                                             ; preds = %6149
  br label %6151

6151:                                             ; preds = %6150
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #12
  %6152 = call ptr @__errno_location() #13
  %6153 = load i32, ptr %6152, align 4, !tbaa !5
  store i32 %6153, ptr %116, align 4, !tbaa !5
  %6154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6155 = call i32 @s2n_print_stacktrace(ptr noundef %6154)
  %6156 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6157 = trunc i8 %6156 to i1
  br i1 %6157, label %6158, label %6180

6158:                                             ; preds = %6151
  %6159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6160 = call i32 @fileno(ptr noundef %6159) #12
  %6161 = call i32 @isatty(i32 noundef %6160) #12
  %6162 = icmp ne i32 %6161, 0
  br i1 %6162, label %6163, label %6180

6163:                                             ; preds = %6158
  %6164 = load i32, ptr %116, align 4, !tbaa !5
  %6165 = call ptr @__errno_location() #13
  store i32 %6164, ptr %6165, align 4, !tbaa !5
  %6166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6167 = load i32, ptr @test_count, align 4, !tbaa !5
  %6168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6169 = load i32, ptr %6168, align 4, !tbaa !5
  %6170 = call ptr @s2n_strerror(i32 noundef %6169, ptr noundef @.str.4)
  %6171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6172 = load i32, ptr %6171, align 4, !tbaa !5
  %6173 = call ptr @s2n_strerror_debug(i32 noundef %6172, ptr noundef @.str.4)
  %6174 = call ptr @__errno_location() #13
  %6175 = load i32, ptr %6174, align 4, !tbaa !5
  %6176 = call ptr @strerror(i32 noundef %6175) #12
  %6177 = call ptr @__errno_location() #13
  %6178 = load i32, ptr %6177, align 4, !tbaa !5
  %6179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6166, ptr noundef @.str.2, i32 noundef %6167, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 236, ptr noundef %6170, ptr noundef %6173, ptr noundef %6176, i32 noundef %6178) #12
  br label %6197

6180:                                             ; preds = %6158, %6151
  %6181 = load i32, ptr %116, align 4, !tbaa !5
  %6182 = call ptr @__errno_location() #13
  store i32 %6181, ptr %6182, align 4, !tbaa !5
  %6183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6184 = load i32, ptr @test_count, align 4, !tbaa !5
  %6185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6186 = load i32, ptr %6185, align 4, !tbaa !5
  %6187 = call ptr @s2n_strerror(i32 noundef %6186, ptr noundef @.str.4)
  %6188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6189 = load i32, ptr %6188, align 4, !tbaa !5
  %6190 = call ptr @s2n_strerror_debug(i32 noundef %6189, ptr noundef @.str.4)
  %6191 = call ptr @__errno_location() #13
  %6192 = load i32, ptr %6191, align 4, !tbaa !5
  %6193 = call ptr @strerror(i32 noundef %6192) #12
  %6194 = call ptr @__errno_location() #13
  %6195 = load i32, ptr %6194, align 4, !tbaa !5
  %6196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6183, ptr noundef @.str.5, i32 noundef %6184, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 236, ptr noundef %6187, ptr noundef %6190, ptr noundef %6193, i32 noundef %6195) #12
  br label %6197

6197:                                             ; preds = %6180, %6163
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #12
  br label %6198

6198:                                             ; preds = %6197
  br label %6199

6199:                                             ; preds = %6198
  call void @exit(i32 noundef 1) #14
  unreachable

6200:                                             ; No predecessors!
  br label %6201

6201:                                             ; preds = %6200
  br label %6202

6202:                                             ; preds = %6201, %6144
  br label %6203

6203:                                             ; preds = %6202
  br label %6204

6204:                                             ; preds = %6203
  br label %6205

6205:                                             ; preds = %6204
  %6206 = load i32, ptr @test_count, align 4, !tbaa !5
  %6207 = add nsw i32 %6206, 1
  store i32 %6207, ptr @test_count, align 4, !tbaa !5
  %6208 = load ptr, ptr %92, align 8, !tbaa !9
  %6209 = call i32 @s2n_connection_free(ptr noundef %6208)
  %6210 = icmp eq i32 %6209, -1
  br i1 %6210, label %6211, label %6264

6211:                                             ; preds = %6205
  br label %6212

6212:                                             ; preds = %6211
  br label %6213

6213:                                             ; preds = %6212
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #12
  %6214 = call ptr @__errno_location() #13
  %6215 = load i32, ptr %6214, align 4, !tbaa !5
  store i32 %6215, ptr %117, align 4, !tbaa !5
  %6216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6217 = call i32 @s2n_print_stacktrace(ptr noundef %6216)
  %6218 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6219 = trunc i8 %6218 to i1
  br i1 %6219, label %6220, label %6242

6220:                                             ; preds = %6213
  %6221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6222 = call i32 @fileno(ptr noundef %6221) #12
  %6223 = call i32 @isatty(i32 noundef %6222) #12
  %6224 = icmp ne i32 %6223, 0
  br i1 %6224, label %6225, label %6242

6225:                                             ; preds = %6220
  %6226 = load i32, ptr %117, align 4, !tbaa !5
  %6227 = call ptr @__errno_location() #13
  store i32 %6226, ptr %6227, align 4, !tbaa !5
  %6228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6229 = load i32, ptr @test_count, align 4, !tbaa !5
  %6230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6231 = load i32, ptr %6230, align 4, !tbaa !5
  %6232 = call ptr @s2n_strerror(i32 noundef %6231, ptr noundef @.str.4)
  %6233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6234 = load i32, ptr %6233, align 4, !tbaa !5
  %6235 = call ptr @s2n_strerror_debug(i32 noundef %6234, ptr noundef @.str.4)
  %6236 = call ptr @__errno_location() #13
  %6237 = load i32, ptr %6236, align 4, !tbaa !5
  %6238 = call ptr @strerror(i32 noundef %6237) #12
  %6239 = call ptr @__errno_location() #13
  %6240 = load i32, ptr %6239, align 4, !tbaa !5
  %6241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6228, ptr noundef @.str.2, i32 noundef %6229, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 238, ptr noundef %6232, ptr noundef %6235, ptr noundef %6238, i32 noundef %6240) #12
  br label %6259

6242:                                             ; preds = %6220, %6213
  %6243 = load i32, ptr %117, align 4, !tbaa !5
  %6244 = call ptr @__errno_location() #13
  store i32 %6243, ptr %6244, align 4, !tbaa !5
  %6245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6246 = load i32, ptr @test_count, align 4, !tbaa !5
  %6247 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6248 = load i32, ptr %6247, align 4, !tbaa !5
  %6249 = call ptr @s2n_strerror(i32 noundef %6248, ptr noundef @.str.4)
  %6250 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6251 = load i32, ptr %6250, align 4, !tbaa !5
  %6252 = call ptr @s2n_strerror_debug(i32 noundef %6251, ptr noundef @.str.4)
  %6253 = call ptr @__errno_location() #13
  %6254 = load i32, ptr %6253, align 4, !tbaa !5
  %6255 = call ptr @strerror(i32 noundef %6254) #12
  %6256 = call ptr @__errno_location() #13
  %6257 = load i32, ptr %6256, align 4, !tbaa !5
  %6258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6245, ptr noundef @.str.5, i32 noundef %6246, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 238, ptr noundef %6249, ptr noundef %6252, ptr noundef %6255, i32 noundef %6257) #12
  br label %6259

6259:                                             ; preds = %6242, %6225
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #12
  br label %6260

6260:                                             ; preds = %6259
  br label %6261

6261:                                             ; preds = %6260
  call void @exit(i32 noundef 1) #14
  unreachable

6262:                                             ; No predecessors!
  br label %6263

6263:                                             ; preds = %6262
  br label %6264

6264:                                             ; preds = %6263, %6205
  br label %6265

6265:                                             ; preds = %6264
  br label %6266

6266:                                             ; preds = %6265
  store i32 0, ptr %10, align 4
  br label %6267

6267:                                             ; preds = %6266, %5685
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #12
  %6268 = load i32, ptr %10, align 4
  switch i32 %6268, label %11561 [
    i32 0, label %6269
  ]

6269:                                             ; preds = %6267
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #12
  store ptr null, ptr %118, align 8, !tbaa !9
  br label %6270

6270:                                             ; preds = %6269
  %6271 = load i32, ptr @test_count, align 4, !tbaa !5
  %6272 = add nsw i32 %6271, 1
  store i32 %6272, ptr @test_count, align 4, !tbaa !5
  %6273 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %6273, ptr %118, align 8, !tbaa !9
  %6274 = icmp eq ptr %6273, null
  br i1 %6274, label %6275, label %6328

6275:                                             ; preds = %6270
  br label %6276

6276:                                             ; preds = %6275
  br label %6277

6277:                                             ; preds = %6276
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #12
  %6278 = call ptr @__errno_location() #13
  %6279 = load i32, ptr %6278, align 4, !tbaa !5
  store i32 %6279, ptr %119, align 4, !tbaa !5
  %6280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6281 = call i32 @s2n_print_stacktrace(ptr noundef %6280)
  %6282 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6283 = trunc i8 %6282 to i1
  br i1 %6283, label %6284, label %6306

6284:                                             ; preds = %6277
  %6285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6286 = call i32 @fileno(ptr noundef %6285) #12
  %6287 = call i32 @isatty(i32 noundef %6286) #12
  %6288 = icmp ne i32 %6287, 0
  br i1 %6288, label %6289, label %6306

6289:                                             ; preds = %6284
  %6290 = load i32, ptr %119, align 4, !tbaa !5
  %6291 = call ptr @__errno_location() #13
  store i32 %6290, ptr %6291, align 4, !tbaa !5
  %6292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6293 = load i32, ptr @test_count, align 4, !tbaa !5
  %6294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6295 = load i32, ptr %6294, align 4, !tbaa !5
  %6296 = call ptr @s2n_strerror(i32 noundef %6295, ptr noundef @.str.4)
  %6297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6298 = load i32, ptr %6297, align 4, !tbaa !5
  %6299 = call ptr @s2n_strerror_debug(i32 noundef %6298, ptr noundef @.str.4)
  %6300 = call ptr @__errno_location() #13
  %6301 = load i32, ptr %6300, align 4, !tbaa !5
  %6302 = call ptr @strerror(i32 noundef %6301) #12
  %6303 = call ptr @__errno_location() #13
  %6304 = load i32, ptr %6303, align 4, !tbaa !5
  %6305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6292, ptr noundef @.str.2, i32 noundef %6293, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 245, ptr noundef %6296, ptr noundef %6299, ptr noundef %6302, i32 noundef %6304) #12
  br label %6323

6306:                                             ; preds = %6284, %6277
  %6307 = load i32, ptr %119, align 4, !tbaa !5
  %6308 = call ptr @__errno_location() #13
  store i32 %6307, ptr %6308, align 4, !tbaa !5
  %6309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6310 = load i32, ptr @test_count, align 4, !tbaa !5
  %6311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6312 = load i32, ptr %6311, align 4, !tbaa !5
  %6313 = call ptr @s2n_strerror(i32 noundef %6312, ptr noundef @.str.4)
  %6314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6315 = load i32, ptr %6314, align 4, !tbaa !5
  %6316 = call ptr @s2n_strerror_debug(i32 noundef %6315, ptr noundef @.str.4)
  %6317 = call ptr @__errno_location() #13
  %6318 = load i32, ptr %6317, align 4, !tbaa !5
  %6319 = call ptr @strerror(i32 noundef %6318) #12
  %6320 = call ptr @__errno_location() #13
  %6321 = load i32, ptr %6320, align 4, !tbaa !5
  %6322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6309, ptr noundef @.str.5, i32 noundef %6310, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 245, ptr noundef %6313, ptr noundef %6316, ptr noundef %6319, i32 noundef %6321) #12
  br label %6323

6323:                                             ; preds = %6306, %6289
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #12
  br label %6324

6324:                                             ; preds = %6323
  br label %6325

6325:                                             ; preds = %6324
  call void @exit(i32 noundef 1) #14
  unreachable

6326:                                             ; No predecessors!
  br label %6327

6327:                                             ; preds = %6326
  br label %6328

6328:                                             ; preds = %6327, %6270
  br label %6329

6329:                                             ; preds = %6328
  br label %6330

6330:                                             ; preds = %6329
  %6331 = load ptr, ptr %118, align 8, !tbaa !9
  %6332 = getelementptr inbounds %struct.s2n_connection, ptr %6331, i32 0, i32 2
  store ptr %54, ptr %6332, align 8, !tbaa !47
  br label %6333

6333:                                             ; preds = %6330
  %6334 = load i32, ptr @test_count, align 4, !tbaa !5
  %6335 = add nsw i32 %6334, 1
  store i32 %6335, ptr @test_count, align 4, !tbaa !5
  %6336 = load ptr, ptr %118, align 8, !tbaa !9
  %6337 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %6336, i8 noundef zeroext 34)
  %6338 = icmp eq i32 %6337, -1
  br i1 %6338, label %6339, label %6392

6339:                                             ; preds = %6333
  br label %6340

6340:                                             ; preds = %6339
  br label %6341

6341:                                             ; preds = %6340
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #12
  %6342 = call ptr @__errno_location() #13
  %6343 = load i32, ptr %6342, align 4, !tbaa !5
  store i32 %6343, ptr %120, align 4, !tbaa !5
  %6344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6345 = call i32 @s2n_print_stacktrace(ptr noundef %6344)
  %6346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6347 = trunc i8 %6346 to i1
  br i1 %6347, label %6348, label %6370

6348:                                             ; preds = %6341
  %6349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6350 = call i32 @fileno(ptr noundef %6349) #12
  %6351 = call i32 @isatty(i32 noundef %6350) #12
  %6352 = icmp ne i32 %6351, 0
  br i1 %6352, label %6353, label %6370

6353:                                             ; preds = %6348
  %6354 = load i32, ptr %120, align 4, !tbaa !5
  %6355 = call ptr @__errno_location() #13
  store i32 %6354, ptr %6355, align 4, !tbaa !5
  %6356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6357 = load i32, ptr @test_count, align 4, !tbaa !5
  %6358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6359 = load i32, ptr %6358, align 4, !tbaa !5
  %6360 = call ptr @s2n_strerror(i32 noundef %6359, ptr noundef @.str.4)
  %6361 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6362 = load i32, ptr %6361, align 4, !tbaa !5
  %6363 = call ptr @s2n_strerror_debug(i32 noundef %6362, ptr noundef @.str.4)
  %6364 = call ptr @__errno_location() #13
  %6365 = load i32, ptr %6364, align 4, !tbaa !5
  %6366 = call ptr @strerror(i32 noundef %6365) #12
  %6367 = call ptr @__errno_location() #13
  %6368 = load i32, ptr %6367, align 4, !tbaa !5
  %6369 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6356, ptr noundef @.str.2, i32 noundef %6357, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 247, ptr noundef %6360, ptr noundef %6363, ptr noundef %6366, i32 noundef %6368) #12
  br label %6387

6370:                                             ; preds = %6348, %6341
  %6371 = load i32, ptr %120, align 4, !tbaa !5
  %6372 = call ptr @__errno_location() #13
  store i32 %6371, ptr %6372, align 4, !tbaa !5
  %6373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6374 = load i32, ptr @test_count, align 4, !tbaa !5
  %6375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6376 = load i32, ptr %6375, align 4, !tbaa !5
  %6377 = call ptr @s2n_strerror(i32 noundef %6376, ptr noundef @.str.4)
  %6378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6379 = load i32, ptr %6378, align 4, !tbaa !5
  %6380 = call ptr @s2n_strerror_debug(i32 noundef %6379, ptr noundef @.str.4)
  %6381 = call ptr @__errno_location() #13
  %6382 = load i32, ptr %6381, align 4, !tbaa !5
  %6383 = call ptr @strerror(i32 noundef %6382) #12
  %6384 = call ptr @__errno_location() #13
  %6385 = load i32, ptr %6384, align 4, !tbaa !5
  %6386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6373, ptr noundef @.str.5, i32 noundef %6374, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 247, ptr noundef %6377, ptr noundef %6380, ptr noundef %6383, i32 noundef %6385) #12
  br label %6387

6387:                                             ; preds = %6370, %6353
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #12
  br label %6388

6388:                                             ; preds = %6387
  br label %6389

6389:                                             ; preds = %6388
  call void @exit(i32 noundef 1) #14
  unreachable

6390:                                             ; No predecessors!
  br label %6391

6391:                                             ; preds = %6390
  br label %6392

6392:                                             ; preds = %6391, %6333
  br label %6393

6393:                                             ; preds = %6392
  br label %6394

6394:                                             ; preds = %6393
  br label %6395

6395:                                             ; preds = %6394
  %6396 = load i32, ptr @test_count, align 4, !tbaa !5
  %6397 = add nsw i32 %6396, 1
  store i32 %6397, ptr @test_count, align 4, !tbaa !5
  %6398 = load ptr, ptr %118, align 8, !tbaa !9
  %6399 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef %6398)
  %6400 = getelementptr inbounds %struct.s2n_result, ptr %121, i32 0, i32 0
  store i32 %6399, ptr %6400, align 4
  %6401 = getelementptr inbounds %struct.s2n_result, ptr %121, i32 0, i32 0
  %6402 = load i32, ptr %6401, align 4
  %6403 = call zeroext i1 @s2n_result_is_ok(i32 %6402)
  br i1 %6403, label %6457, label %6404

6404:                                             ; preds = %6395
  br label %6405

6405:                                             ; preds = %6404
  br label %6406

6406:                                             ; preds = %6405
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #12
  %6407 = call ptr @__errno_location() #13
  %6408 = load i32, ptr %6407, align 4, !tbaa !5
  store i32 %6408, ptr %122, align 4, !tbaa !5
  %6409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6410 = call i32 @s2n_print_stacktrace(ptr noundef %6409)
  %6411 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6412 = trunc i8 %6411 to i1
  br i1 %6412, label %6413, label %6435

6413:                                             ; preds = %6406
  %6414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6415 = call i32 @fileno(ptr noundef %6414) #12
  %6416 = call i32 @isatty(i32 noundef %6415) #12
  %6417 = icmp ne i32 %6416, 0
  br i1 %6417, label %6418, label %6435

6418:                                             ; preds = %6413
  %6419 = load i32, ptr %122, align 4, !tbaa !5
  %6420 = call ptr @__errno_location() #13
  store i32 %6419, ptr %6420, align 4, !tbaa !5
  %6421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6422 = load i32, ptr @test_count, align 4, !tbaa !5
  %6423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6424 = load i32, ptr %6423, align 4, !tbaa !5
  %6425 = call ptr @s2n_strerror(i32 noundef %6424, ptr noundef @.str.4)
  %6426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6427 = load i32, ptr %6426, align 4, !tbaa !5
  %6428 = call ptr @s2n_strerror_debug(i32 noundef %6427, ptr noundef @.str.4)
  %6429 = call ptr @__errno_location() #13
  %6430 = load i32, ptr %6429, align 4, !tbaa !5
  %6431 = call ptr @strerror(i32 noundef %6430) #12
  %6432 = call ptr @__errno_location() #13
  %6433 = load i32, ptr %6432, align 4, !tbaa !5
  %6434 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6421, ptr noundef @.str.2, i32 noundef %6422, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 248, ptr noundef %6425, ptr noundef %6428, ptr noundef %6431, i32 noundef %6433) #12
  br label %6452

6435:                                             ; preds = %6413, %6406
  %6436 = load i32, ptr %122, align 4, !tbaa !5
  %6437 = call ptr @__errno_location() #13
  store i32 %6436, ptr %6437, align 4, !tbaa !5
  %6438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6439 = load i32, ptr @test_count, align 4, !tbaa !5
  %6440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6441 = load i32, ptr %6440, align 4, !tbaa !5
  %6442 = call ptr @s2n_strerror(i32 noundef %6441, ptr noundef @.str.4)
  %6443 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6444 = load i32, ptr %6443, align 4, !tbaa !5
  %6445 = call ptr @s2n_strerror_debug(i32 noundef %6444, ptr noundef @.str.4)
  %6446 = call ptr @__errno_location() #13
  %6447 = load i32, ptr %6446, align 4, !tbaa !5
  %6448 = call ptr @strerror(i32 noundef %6447) #12
  %6449 = call ptr @__errno_location() #13
  %6450 = load i32, ptr %6449, align 4, !tbaa !5
  %6451 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6438, ptr noundef @.str.5, i32 noundef %6439, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 248, ptr noundef %6442, ptr noundef %6445, ptr noundef %6448, i32 noundef %6450) #12
  br label %6452

6452:                                             ; preds = %6435, %6418
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #12
  br label %6453

6453:                                             ; preds = %6452
  br label %6454

6454:                                             ; preds = %6453
  call void @exit(i32 noundef 1) #14
  unreachable

6455:                                             ; No predecessors!
  br label %6456

6456:                                             ; preds = %6455
  br label %6457

6457:                                             ; preds = %6456, %6395
  br label %6458

6458:                                             ; preds = %6457
  br label %6459

6459:                                             ; preds = %6458
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #12
  store ptr null, ptr %123, align 8, !tbaa !9
  br label %6460

6460:                                             ; preds = %6459
  %6461 = load i32, ptr @test_count, align 4, !tbaa !5
  %6462 = add nsw i32 %6461, 1
  store i32 %6462, ptr @test_count, align 4, !tbaa !5
  %6463 = load ptr, ptr %118, align 8, !tbaa !9
  %6464 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %6463, ptr noundef %123)
  %6465 = icmp eq i32 %6464, -1
  br i1 %6465, label %6466, label %6519

6466:                                             ; preds = %6460
  br label %6467

6467:                                             ; preds = %6466
  br label %6468

6468:                                             ; preds = %6467
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #12
  %6469 = call ptr @__errno_location() #13
  %6470 = load i32, ptr %6469, align 4, !tbaa !5
  store i32 %6470, ptr %124, align 4, !tbaa !5
  %6471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6472 = call i32 @s2n_print_stacktrace(ptr noundef %6471)
  %6473 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6474 = trunc i8 %6473 to i1
  br i1 %6474, label %6475, label %6497

6475:                                             ; preds = %6468
  %6476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6477 = call i32 @fileno(ptr noundef %6476) #12
  %6478 = call i32 @isatty(i32 noundef %6477) #12
  %6479 = icmp ne i32 %6478, 0
  br i1 %6479, label %6480, label %6497

6480:                                             ; preds = %6475
  %6481 = load i32, ptr %124, align 4, !tbaa !5
  %6482 = call ptr @__errno_location() #13
  store i32 %6481, ptr %6482, align 4, !tbaa !5
  %6483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6484 = load i32, ptr @test_count, align 4, !tbaa !5
  %6485 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6486 = load i32, ptr %6485, align 4, !tbaa !5
  %6487 = call ptr @s2n_strerror(i32 noundef %6486, ptr noundef @.str.4)
  %6488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6489 = load i32, ptr %6488, align 4, !tbaa !5
  %6490 = call ptr @s2n_strerror_debug(i32 noundef %6489, ptr noundef @.str.4)
  %6491 = call ptr @__errno_location() #13
  %6492 = load i32, ptr %6491, align 4, !tbaa !5
  %6493 = call ptr @strerror(i32 noundef %6492) #12
  %6494 = call ptr @__errno_location() #13
  %6495 = load i32, ptr %6494, align 4, !tbaa !5
  %6496 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6483, ptr noundef @.str.2, i32 noundef %6484, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 251, ptr noundef %6487, ptr noundef %6490, ptr noundef %6493, i32 noundef %6495) #12
  br label %6514

6497:                                             ; preds = %6475, %6468
  %6498 = load i32, ptr %124, align 4, !tbaa !5
  %6499 = call ptr @__errno_location() #13
  store i32 %6498, ptr %6499, align 4, !tbaa !5
  %6500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6501 = load i32, ptr @test_count, align 4, !tbaa !5
  %6502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6503 = load i32, ptr %6502, align 4, !tbaa !5
  %6504 = call ptr @s2n_strerror(i32 noundef %6503, ptr noundef @.str.4)
  %6505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6506 = load i32, ptr %6505, align 4, !tbaa !5
  %6507 = call ptr @s2n_strerror_debug(i32 noundef %6506, ptr noundef @.str.4)
  %6508 = call ptr @__errno_location() #13
  %6509 = load i32, ptr %6508, align 4, !tbaa !5
  %6510 = call ptr @strerror(i32 noundef %6509) #12
  %6511 = call ptr @__errno_location() #13
  %6512 = load i32, ptr %6511, align 4, !tbaa !5
  %6513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6500, ptr noundef @.str.5, i32 noundef %6501, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 251, ptr noundef %6504, ptr noundef %6507, ptr noundef %6510, i32 noundef %6512) #12
  br label %6514

6514:                                             ; preds = %6497, %6480
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #12
  br label %6515

6515:                                             ; preds = %6514
  br label %6516

6516:                                             ; preds = %6515
  call void @exit(i32 noundef 1) #14
  unreachable

6517:                                             ; No predecessors!
  br label %6518

6518:                                             ; preds = %6517
  br label %6519

6519:                                             ; preds = %6518, %6460
  br label %6520

6520:                                             ; preds = %6519
  br label %6521

6521:                                             ; preds = %6520
  br label %6522

6522:                                             ; preds = %6521
  %6523 = load i32, ptr @test_count, align 4, !tbaa !5
  %6524 = add nsw i32 %6523, 1
  store i32 %6524, ptr @test_count, align 4, !tbaa !5
  %6525 = load ptr, ptr %123, align 8, !tbaa !9
  %6526 = icmp eq ptr %6525, null
  br i1 %6526, label %6527, label %6580

6527:                                             ; preds = %6522
  br label %6528

6528:                                             ; preds = %6527
  br label %6529

6529:                                             ; preds = %6528
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #12
  %6530 = call ptr @__errno_location() #13
  %6531 = load i32, ptr %6530, align 4, !tbaa !5
  store i32 %6531, ptr %125, align 4, !tbaa !5
  %6532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6533 = call i32 @s2n_print_stacktrace(ptr noundef %6532)
  %6534 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6535 = trunc i8 %6534 to i1
  br i1 %6535, label %6536, label %6558

6536:                                             ; preds = %6529
  %6537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6538 = call i32 @fileno(ptr noundef %6537) #12
  %6539 = call i32 @isatty(i32 noundef %6538) #12
  %6540 = icmp ne i32 %6539, 0
  br i1 %6540, label %6541, label %6558

6541:                                             ; preds = %6536
  %6542 = load i32, ptr %125, align 4, !tbaa !5
  %6543 = call ptr @__errno_location() #13
  store i32 %6542, ptr %6543, align 4, !tbaa !5
  %6544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6545 = load i32, ptr @test_count, align 4, !tbaa !5
  %6546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6547 = load i32, ptr %6546, align 4, !tbaa !5
  %6548 = call ptr @s2n_strerror(i32 noundef %6547, ptr noundef @.str.4)
  %6549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6550 = load i32, ptr %6549, align 4, !tbaa !5
  %6551 = call ptr @s2n_strerror_debug(i32 noundef %6550, ptr noundef @.str.4)
  %6552 = call ptr @__errno_location() #13
  %6553 = load i32, ptr %6552, align 4, !tbaa !5
  %6554 = call ptr @strerror(i32 noundef %6553) #12
  %6555 = call ptr @__errno_location() #13
  %6556 = load i32, ptr %6555, align 4, !tbaa !5
  %6557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6544, ptr noundef @.str.2, i32 noundef %6545, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 252, ptr noundef %6548, ptr noundef %6551, ptr noundef %6554, i32 noundef %6556) #12
  br label %6575

6558:                                             ; preds = %6536, %6529
  %6559 = load i32, ptr %125, align 4, !tbaa !5
  %6560 = call ptr @__errno_location() #13
  store i32 %6559, ptr %6560, align 4, !tbaa !5
  %6561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6562 = load i32, ptr @test_count, align 4, !tbaa !5
  %6563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6564 = load i32, ptr %6563, align 4, !tbaa !5
  %6565 = call ptr @s2n_strerror(i32 noundef %6564, ptr noundef @.str.4)
  %6566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6567 = load i32, ptr %6566, align 4, !tbaa !5
  %6568 = call ptr @s2n_strerror_debug(i32 noundef %6567, ptr noundef @.str.4)
  %6569 = call ptr @__errno_location() #13
  %6570 = load i32, ptr %6569, align 4, !tbaa !5
  %6571 = call ptr @strerror(i32 noundef %6570) #12
  %6572 = call ptr @__errno_location() #13
  %6573 = load i32, ptr %6572, align 4, !tbaa !5
  %6574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6561, ptr noundef @.str.5, i32 noundef %6562, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 252, ptr noundef %6565, ptr noundef %6568, ptr noundef %6571, i32 noundef %6573) #12
  br label %6575

6575:                                             ; preds = %6558, %6541
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #12
  br label %6576

6576:                                             ; preds = %6575
  br label %6577

6577:                                             ; preds = %6576
  call void @exit(i32 noundef 1) #14
  unreachable

6578:                                             ; No predecessors!
  br label %6579

6579:                                             ; preds = %6578
  br label %6580

6580:                                             ; preds = %6579, %6522
  br label %6581

6581:                                             ; preds = %6580
  br label %6582

6582:                                             ; preds = %6581
  br label %6583

6583:                                             ; preds = %6582
  %6584 = load i32, ptr @test_count, align 4, !tbaa !5
  %6585 = add nsw i32 %6584, 1
  store i32 %6585, ptr @test_count, align 4, !tbaa !5
  %6586 = load ptr, ptr %118, align 8, !tbaa !9
  %6587 = getelementptr inbounds %struct.s2n_connection, ptr %6586, i32 0, i32 31
  %6588 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6587, i32 0, i32 1
  %6589 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6588, i32 0, i32 0
  %6590 = load ptr, ptr %6589, align 8, !tbaa !15
  %6591 = icmp eq ptr %6590, null
  br i1 %6591, label %6645, label %6592

6592:                                             ; preds = %6583
  br label %6593

6593:                                             ; preds = %6592
  br label %6594

6594:                                             ; preds = %6593
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #12
  %6595 = call ptr @__errno_location() #13
  %6596 = load i32, ptr %6595, align 4, !tbaa !5
  store i32 %6596, ptr %126, align 4, !tbaa !5
  %6597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6598 = call i32 @s2n_print_stacktrace(ptr noundef %6597)
  %6599 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6600 = trunc i8 %6599 to i1
  br i1 %6600, label %6601, label %6623

6601:                                             ; preds = %6594
  %6602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6603 = call i32 @fileno(ptr noundef %6602) #12
  %6604 = call i32 @isatty(i32 noundef %6603) #12
  %6605 = icmp ne i32 %6604, 0
  br i1 %6605, label %6606, label %6623

6606:                                             ; preds = %6601
  %6607 = load i32, ptr %126, align 4, !tbaa !5
  %6608 = call ptr @__errno_location() #13
  store i32 %6607, ptr %6608, align 4, !tbaa !5
  %6609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6610 = load i32, ptr @test_count, align 4, !tbaa !5
  %6611 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6612 = load i32, ptr %6611, align 4, !tbaa !5
  %6613 = call ptr @s2n_strerror(i32 noundef %6612, ptr noundef @.str.4)
  %6614 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6615 = load i32, ptr %6614, align 4, !tbaa !5
  %6616 = call ptr @s2n_strerror_debug(i32 noundef %6615, ptr noundef @.str.4)
  %6617 = call ptr @__errno_location() #13
  %6618 = load i32, ptr %6617, align 4, !tbaa !5
  %6619 = call ptr @strerror(i32 noundef %6618) #12
  %6620 = call ptr @__errno_location() #13
  %6621 = load i32, ptr %6620, align 4, !tbaa !5
  %6622 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6609, ptr noundef @.str.2, i32 noundef %6610, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 255, ptr noundef %6613, ptr noundef %6616, ptr noundef %6619, i32 noundef %6621) #12
  br label %6640

6623:                                             ; preds = %6601, %6594
  %6624 = load i32, ptr %126, align 4, !tbaa !5
  %6625 = call ptr @__errno_location() #13
  store i32 %6624, ptr %6625, align 4, !tbaa !5
  %6626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6627 = load i32, ptr @test_count, align 4, !tbaa !5
  %6628 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6629 = load i32, ptr %6628, align 4, !tbaa !5
  %6630 = call ptr @s2n_strerror(i32 noundef %6629, ptr noundef @.str.4)
  %6631 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6632 = load i32, ptr %6631, align 4, !tbaa !5
  %6633 = call ptr @s2n_strerror_debug(i32 noundef %6632, ptr noundef @.str.4)
  %6634 = call ptr @__errno_location() #13
  %6635 = load i32, ptr %6634, align 4, !tbaa !5
  %6636 = call ptr @strerror(i32 noundef %6635) #12
  %6637 = call ptr @__errno_location() #13
  %6638 = load i32, ptr %6637, align 4, !tbaa !5
  %6639 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6626, ptr noundef @.str.5, i32 noundef %6627, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 255, ptr noundef %6630, ptr noundef %6633, ptr noundef %6636, i32 noundef %6638) #12
  br label %6640

6640:                                             ; preds = %6623, %6606
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #12
  br label %6641

6641:                                             ; preds = %6640
  br label %6642

6642:                                             ; preds = %6641
  call void @exit(i32 noundef 1) #14
  unreachable

6643:                                             ; No predecessors!
  br label %6644

6644:                                             ; preds = %6643
  br label %6645

6645:                                             ; preds = %6644, %6583
  br label %6646

6646:                                             ; preds = %6645
  br label %6647

6647:                                             ; preds = %6646
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #12
  %6648 = load ptr, ptr %118, align 8, !tbaa !9
  %6649 = getelementptr inbounds %struct.s2n_connection, ptr %6648, i32 0, i32 31
  %6650 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6649, i32 0, i32 4
  store ptr %6650, ptr %127, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #12
  %6651 = load ptr, ptr %123, align 8, !tbaa !9
  %6652 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %6651, i32 0, i32 3
  %6653 = load ptr, ptr %6652, align 8, !tbaa !48
  %6654 = getelementptr inbounds ptr, ptr %6653, i64 0
  %6655 = load ptr, ptr %6654, align 8, !tbaa !9
  store ptr %6655, ptr %128, align 8, !tbaa !9
  %6656 = load ptr, ptr %128, align 8, !tbaa !9
  %6657 = load ptr, ptr %127, align 8, !tbaa !9
  %6658 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6657, i32 0, i32 0
  store ptr %6656, ptr %6658, align 8, !tbaa !50
  %6659 = load ptr, ptr %128, align 8, !tbaa !9
  %6660 = getelementptr inbounds %struct.s2n_kem_group, ptr %6659, i32 0, i32 3
  %6661 = load ptr, ptr %6660, align 8, !tbaa !51
  %6662 = load ptr, ptr %127, align 8, !tbaa !9
  %6663 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6662, i32 0, i32 1
  %6664 = getelementptr inbounds %struct.s2n_kem_params, ptr %6663, i32 0, i32 0
  store ptr %6661, ptr %6664, align 8, !tbaa !53
  %6665 = load ptr, ptr %128, align 8, !tbaa !9
  %6666 = getelementptr inbounds %struct.s2n_kem_group, ptr %6665, i32 0, i32 2
  %6667 = load ptr, ptr %6666, align 8, !tbaa !54
  %6668 = load ptr, ptr %127, align 8, !tbaa !9
  %6669 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6668, i32 0, i32 2
  %6670 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6669, i32 0, i32 0
  store ptr %6667, ptr %6670, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #12
  %6671 = load ptr, ptr %118, align 8, !tbaa !9
  %6672 = getelementptr inbounds %struct.s2n_connection, ptr %6671, i32 0, i32 31
  %6673 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6672, i32 0, i32 5
  store ptr %6673, ptr %129, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #12
  %6674 = load ptr, ptr %123, align 8, !tbaa !9
  %6675 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %6674, i32 0, i32 3
  %6676 = load ptr, ptr %6675, align 8, !tbaa !48
  %6677 = getelementptr inbounds ptr, ptr %6676, i64 0
  %6678 = load ptr, ptr %6677, align 8, !tbaa !9
  store ptr %6678, ptr %130, align 8, !tbaa !9
  %6679 = load ptr, ptr %130, align 8, !tbaa !9
  %6680 = load ptr, ptr %129, align 8, !tbaa !9
  %6681 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6680, i32 0, i32 0
  store ptr %6679, ptr %6681, align 8, !tbaa !50
  %6682 = load ptr, ptr %130, align 8, !tbaa !9
  %6683 = getelementptr inbounds %struct.s2n_kem_group, ptr %6682, i32 0, i32 3
  %6684 = load ptr, ptr %6683, align 8, !tbaa !51
  %6685 = load ptr, ptr %129, align 8, !tbaa !9
  %6686 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6685, i32 0, i32 1
  %6687 = getelementptr inbounds %struct.s2n_kem_params, ptr %6686, i32 0, i32 0
  store ptr %6684, ptr %6687, align 8, !tbaa !53
  %6688 = load ptr, ptr %130, align 8, !tbaa !9
  %6689 = getelementptr inbounds %struct.s2n_kem_group, ptr %6688, i32 0, i32 2
  %6690 = load ptr, ptr %6689, align 8, !tbaa !54
  %6691 = load ptr, ptr %129, align 8, !tbaa !9
  %6692 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6691, i32 0, i32 2
  %6693 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6692, i32 0, i32 0
  store ptr %6690, ptr %6693, align 8, !tbaa !55
  br label %6694

6694:                                             ; preds = %6647
  %6695 = load i32, ptr @test_count, align 4, !tbaa !5
  %6696 = add nsw i32 %6695, 1
  store i32 %6696, ptr @test_count, align 4, !tbaa !5
  %6697 = load ptr, ptr %129, align 8, !tbaa !9
  %6698 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6697, i32 0, i32 1
  %6699 = getelementptr inbounds %struct.s2n_kem_params, ptr %6698, i32 0, i32 1
  %6700 = load ptr, ptr %130, align 8, !tbaa !9
  %6701 = getelementptr inbounds %struct.s2n_kem_group, ptr %6700, i32 0, i32 3
  %6702 = load ptr, ptr %6701, align 8, !tbaa !51
  %6703 = getelementptr inbounds %struct.s2n_kem, ptr %6702, i32 0, i32 3
  %6704 = load i16, ptr %6703, align 2, !tbaa !61
  %6705 = zext i16 %6704 to i32
  %6706 = call i32 @s2n_alloc(ptr noundef %6699, i32 noundef %6705)
  %6707 = icmp eq i32 %6706, -1
  br i1 %6707, label %6708, label %6761

6708:                                             ; preds = %6694
  br label %6709

6709:                                             ; preds = %6708
  br label %6710

6710:                                             ; preds = %6709
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #12
  %6711 = call ptr @__errno_location() #13
  %6712 = load i32, ptr %6711, align 4, !tbaa !5
  store i32 %6712, ptr %131, align 4, !tbaa !5
  %6713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6714 = call i32 @s2n_print_stacktrace(ptr noundef %6713)
  %6715 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6716 = trunc i8 %6715 to i1
  br i1 %6716, label %6717, label %6739

6717:                                             ; preds = %6710
  %6718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6719 = call i32 @fileno(ptr noundef %6718) #12
  %6720 = call i32 @isatty(i32 noundef %6719) #12
  %6721 = icmp ne i32 %6720, 0
  br i1 %6721, label %6722, label %6739

6722:                                             ; preds = %6717
  %6723 = load i32, ptr %131, align 4, !tbaa !5
  %6724 = call ptr @__errno_location() #13
  store i32 %6723, ptr %6724, align 4, !tbaa !5
  %6725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6726 = load i32, ptr @test_count, align 4, !tbaa !5
  %6727 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6728 = load i32, ptr %6727, align 4, !tbaa !5
  %6729 = call ptr @s2n_strerror(i32 noundef %6728, ptr noundef @.str.4)
  %6730 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6731 = load i32, ptr %6730, align 4, !tbaa !5
  %6732 = call ptr @s2n_strerror_debug(i32 noundef %6731, ptr noundef @.str.4)
  %6733 = call ptr @__errno_location() #13
  %6734 = load i32, ptr %6733, align 4, !tbaa !5
  %6735 = call ptr @strerror(i32 noundef %6734) #12
  %6736 = call ptr @__errno_location() #13
  %6737 = load i32, ptr %6736, align 4, !tbaa !5
  %6738 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6725, ptr noundef @.str.2, i32 noundef %6726, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 268, ptr noundef %6729, ptr noundef %6732, ptr noundef %6735, i32 noundef %6737) #12
  br label %6756

6739:                                             ; preds = %6717, %6710
  %6740 = load i32, ptr %131, align 4, !tbaa !5
  %6741 = call ptr @__errno_location() #13
  store i32 %6740, ptr %6741, align 4, !tbaa !5
  %6742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6743 = load i32, ptr @test_count, align 4, !tbaa !5
  %6744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6745 = load i32, ptr %6744, align 4, !tbaa !5
  %6746 = call ptr @s2n_strerror(i32 noundef %6745, ptr noundef @.str.4)
  %6747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6748 = load i32, ptr %6747, align 4, !tbaa !5
  %6749 = call ptr @s2n_strerror_debug(i32 noundef %6748, ptr noundef @.str.4)
  %6750 = call ptr @__errno_location() #13
  %6751 = load i32, ptr %6750, align 4, !tbaa !5
  %6752 = call ptr @strerror(i32 noundef %6751) #12
  %6753 = call ptr @__errno_location() #13
  %6754 = load i32, ptr %6753, align 4, !tbaa !5
  %6755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6742, ptr noundef @.str.5, i32 noundef %6743, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 268, ptr noundef %6746, ptr noundef %6749, ptr noundef %6752, i32 noundef %6754) #12
  br label %6756

6756:                                             ; preds = %6739, %6722
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #12
  br label %6757

6757:                                             ; preds = %6756
  br label %6758

6758:                                             ; preds = %6757
  call void @exit(i32 noundef 1) #14
  unreachable

6759:                                             ; No predecessors!
  br label %6760

6760:                                             ; preds = %6759
  br label %6761

6761:                                             ; preds = %6760, %6694
  br label %6762

6762:                                             ; preds = %6761
  br label %6763

6763:                                             ; preds = %6762
  br label %6764

6764:                                             ; preds = %6763
  call void @llvm.lifetime.start.p0(i64 2, ptr %132) #12
  %6765 = load ptr, ptr %130, align 8, !tbaa !9
  %6766 = getelementptr inbounds %struct.s2n_kem_group, ptr %6765, i32 0, i32 3
  %6767 = load ptr, ptr %6766, align 8, !tbaa !51
  %6768 = getelementptr inbounds %struct.s2n_kem, ptr %6767, i32 0, i32 3
  %6769 = load i16, ptr %6768, align 2, !tbaa !61
  store i16 %6769, ptr %132, align 2, !tbaa !63
  %6770 = load i16, ptr %132, align 2, !tbaa !63
  %6771 = icmp ne i16 %6770, 0
  %6772 = xor i1 %6771, true
  %6773 = xor i1 %6772, true
  %6774 = zext i1 %6773 to i32
  %6775 = sext i32 %6774 to i64
  %6776 = call i64 @llvm.expect.i64(i64 %6775, i64 1)
  %6777 = icmp ne i64 %6776, 0
  br i1 %6777, label %6778, label %6829

6778:                                             ; preds = %6764
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #12
  %6779 = load ptr, ptr %129, align 8, !tbaa !9
  %6780 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6779, i32 0, i32 1
  %6781 = getelementptr inbounds %struct.s2n_kem_params, ptr %6780, i32 0, i32 1
  %6782 = getelementptr inbounds %struct.s2n_blob, ptr %6781, i32 0, i32 0
  %6783 = load ptr, ptr %6782, align 8, !tbaa !64
  store ptr %6783, ptr %133, align 8, !tbaa !9
  br label %6784

6784:                                             ; preds = %6778
  %6785 = load ptr, ptr %133, align 8, !tbaa !9
  %6786 = icmp ne ptr %6785, null
  br i1 %6786, label %6820, label %6787

6787:                                             ; preds = %6784
  br label %6788

6788:                                             ; preds = %6787
  br label %6789

6789:                                             ; preds = %6788
  %6790 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %6791 = getelementptr inbounds %struct.s2n_debug_info, ptr %6790, i32 0, i32 0
  store ptr @.str.51, ptr %6791, align 8, !tbaa !65
  %6792 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %6793 = getelementptr inbounds %struct.s2n_debug_info, ptr %6792, i32 0, i32 0
  %6794 = load ptr, ptr %6793, align 8, !tbaa !65
  %6795 = getelementptr inbounds i8, ptr %6794, i64 21
  %6796 = call ptr @strrchr(ptr noundef %6795, i32 noundef 47) #15
  %6797 = icmp ne ptr %6796, null
  br i1 %6797, label %6798, label %6805

6798:                                             ; preds = %6789
  %6799 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %6800 = getelementptr inbounds %struct.s2n_debug_info, ptr %6799, i32 0, i32 0
  %6801 = load ptr, ptr %6800, align 8, !tbaa !65
  %6802 = getelementptr inbounds i8, ptr %6801, i64 21
  %6803 = call ptr @strrchr(ptr noundef %6802, i32 noundef 47) #15
  %6804 = getelementptr inbounds i8, ptr %6803, i64 1
  br label %6810

6805:                                             ; preds = %6789
  %6806 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %6807 = getelementptr inbounds %struct.s2n_debug_info, ptr %6806, i32 0, i32 0
  %6808 = load ptr, ptr %6807, align 8, !tbaa !65
  %6809 = getelementptr inbounds i8, ptr %6808, i64 21
  br label %6810

6810:                                             ; preds = %6805, %6798
  %6811 = phi ptr [ %6804, %6798 ], [ %6809, %6805 ]
  %6812 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %6813 = getelementptr inbounds %struct.s2n_debug_info, ptr %6812, i32 0, i32 1
  store ptr %6811, ptr %6813, align 8, !tbaa !67
  %6814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %6814, align 4, !tbaa !5
  %6815 = call i32 @s2n_calculate_stacktrace()
  br label %6816

6816:                                             ; preds = %6810
  br label %6817

6817:                                             ; preds = %6816
  store i32 -1, ptr %1, align 4
  store i32 1, ptr %10, align 4
  br label %6826

6818:                                             ; No predecessors!
  br label %6819

6819:                                             ; preds = %6818
  br label %6820

6820:                                             ; preds = %6819, %6784
  br label %6821

6821:                                             ; preds = %6820
  br label %6822

6822:                                             ; preds = %6821
  %6823 = load ptr, ptr %133, align 8, !tbaa !9
  %6824 = load i16, ptr %132, align 2, !tbaa !63
  %6825 = zext i16 %6824 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %6823, i8 1, i64 %6825, i1 false)
  store i32 0, ptr %10, align 4
  br label %6826

6826:                                             ; preds = %6822, %6817
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #12
  %6827 = load i32, ptr %10, align 4
  switch i32 %6827, label %6830 [
    i32 0, label %6828
  ]

6828:                                             ; preds = %6826
  br label %6829

6829:                                             ; preds = %6828, %6764
  store i32 0, ptr %10, align 4
  br label %6830

6830:                                             ; preds = %6829, %6826
  call void @llvm.lifetime.end.p0(i64 2, ptr %132) #12
  %6831 = load i32, ptr %10, align 4
  switch i32 %6831, label %7412 [
    i32 0, label %6832
  ]

6832:                                             ; preds = %6830
  br label %6833

6833:                                             ; preds = %6832
  br label %6834

6834:                                             ; preds = %6833
  br label %6835

6835:                                             ; preds = %6834
  %6836 = load i32, ptr @test_count, align 4, !tbaa !5
  %6837 = add nsw i32 %6836, 1
  store i32 %6837, ptr @test_count, align 4, !tbaa !5
  %6838 = load ptr, ptr %129, align 8, !tbaa !9
  %6839 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6838, i32 0, i32 2
  %6840 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef %6839)
  %6841 = icmp eq i32 %6840, -1
  br i1 %6841, label %6842, label %6895

6842:                                             ; preds = %6835
  br label %6843

6843:                                             ; preds = %6842
  br label %6844

6844:                                             ; preds = %6843
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #12
  %6845 = call ptr @__errno_location() #13
  %6846 = load i32, ptr %6845, align 4, !tbaa !5
  store i32 %6846, ptr %134, align 4, !tbaa !5
  %6847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6848 = call i32 @s2n_print_stacktrace(ptr noundef %6847)
  %6849 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6850 = trunc i8 %6849 to i1
  br i1 %6850, label %6851, label %6873

6851:                                             ; preds = %6844
  %6852 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6853 = call i32 @fileno(ptr noundef %6852) #12
  %6854 = call i32 @isatty(i32 noundef %6853) #12
  %6855 = icmp ne i32 %6854, 0
  br i1 %6855, label %6856, label %6873

6856:                                             ; preds = %6851
  %6857 = load i32, ptr %134, align 4, !tbaa !5
  %6858 = call ptr @__errno_location() #13
  store i32 %6857, ptr %6858, align 4, !tbaa !5
  %6859 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6860 = load i32, ptr @test_count, align 4, !tbaa !5
  %6861 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6862 = load i32, ptr %6861, align 4, !tbaa !5
  %6863 = call ptr @s2n_strerror(i32 noundef %6862, ptr noundef @.str.4)
  %6864 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6865 = load i32, ptr %6864, align 4, !tbaa !5
  %6866 = call ptr @s2n_strerror_debug(i32 noundef %6865, ptr noundef @.str.4)
  %6867 = call ptr @__errno_location() #13
  %6868 = load i32, ptr %6867, align 4, !tbaa !5
  %6869 = call ptr @strerror(i32 noundef %6868) #12
  %6870 = call ptr @__errno_location() #13
  %6871 = load i32, ptr %6870, align 4, !tbaa !5
  %6872 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6859, ptr noundef @.str.2, i32 noundef %6860, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 271, ptr noundef %6863, ptr noundef %6866, ptr noundef %6869, i32 noundef %6871) #12
  br label %6890

6873:                                             ; preds = %6851, %6844
  %6874 = load i32, ptr %134, align 4, !tbaa !5
  %6875 = call ptr @__errno_location() #13
  store i32 %6874, ptr %6875, align 4, !tbaa !5
  %6876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6877 = load i32, ptr @test_count, align 4, !tbaa !5
  %6878 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6879 = load i32, ptr %6878, align 4, !tbaa !5
  %6880 = call ptr @s2n_strerror(i32 noundef %6879, ptr noundef @.str.4)
  %6881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6882 = load i32, ptr %6881, align 4, !tbaa !5
  %6883 = call ptr @s2n_strerror_debug(i32 noundef %6882, ptr noundef @.str.4)
  %6884 = call ptr @__errno_location() #13
  %6885 = load i32, ptr %6884, align 4, !tbaa !5
  %6886 = call ptr @strerror(i32 noundef %6885) #12
  %6887 = call ptr @__errno_location() #13
  %6888 = load i32, ptr %6887, align 4, !tbaa !5
  %6889 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6876, ptr noundef @.str.5, i32 noundef %6877, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 271, ptr noundef %6880, ptr noundef %6883, ptr noundef %6886, i32 noundef %6888) #12
  br label %6890

6890:                                             ; preds = %6873, %6856
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #12
  br label %6891

6891:                                             ; preds = %6890
  br label %6892

6892:                                             ; preds = %6891
  call void @exit(i32 noundef 1) #14
  unreachable

6893:                                             ; No predecessors!
  br label %6894

6894:                                             ; preds = %6893
  br label %6895

6895:                                             ; preds = %6894, %6835
  br label %6896

6896:                                             ; preds = %6895
  br label %6897

6897:                                             ; preds = %6896
  br label %6898

6898:                                             ; preds = %6897
  %6899 = load i32, ptr @test_count, align 4, !tbaa !5
  %6900 = add nsw i32 %6899, 1
  store i32 %6900, ptr @test_count, align 4, !tbaa !5
  %6901 = load ptr, ptr %118, align 8, !tbaa !9
  %6902 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %6901)
  %6903 = icmp eq i32 %6902, -1
  br i1 %6903, label %6904, label %6957

6904:                                             ; preds = %6898
  br label %6905

6905:                                             ; preds = %6904
  br label %6906

6906:                                             ; preds = %6905
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #12
  %6907 = call ptr @__errno_location() #13
  %6908 = load i32, ptr %6907, align 4, !tbaa !5
  store i32 %6908, ptr %135, align 4, !tbaa !5
  %6909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6910 = call i32 @s2n_print_stacktrace(ptr noundef %6909)
  %6911 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6912 = trunc i8 %6911 to i1
  br i1 %6912, label %6913, label %6935

6913:                                             ; preds = %6906
  %6914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6915 = call i32 @fileno(ptr noundef %6914) #12
  %6916 = call i32 @isatty(i32 noundef %6915) #12
  %6917 = icmp ne i32 %6916, 0
  br i1 %6917, label %6918, label %6935

6918:                                             ; preds = %6913
  %6919 = load i32, ptr %135, align 4, !tbaa !5
  %6920 = call ptr @__errno_location() #13
  store i32 %6919, ptr %6920, align 4, !tbaa !5
  %6921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6922 = load i32, ptr @test_count, align 4, !tbaa !5
  %6923 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6924 = load i32, ptr %6923, align 4, !tbaa !5
  %6925 = call ptr @s2n_strerror(i32 noundef %6924, ptr noundef @.str.4)
  %6926 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6927 = load i32, ptr %6926, align 4, !tbaa !5
  %6928 = call ptr @s2n_strerror_debug(i32 noundef %6927, ptr noundef @.str.4)
  %6929 = call ptr @__errno_location() #13
  %6930 = load i32, ptr %6929, align 4, !tbaa !5
  %6931 = call ptr @strerror(i32 noundef %6930) #12
  %6932 = call ptr @__errno_location() #13
  %6933 = load i32, ptr %6932, align 4, !tbaa !5
  %6934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6921, ptr noundef @.str.2, i32 noundef %6922, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 273, ptr noundef %6925, ptr noundef %6928, ptr noundef %6931, i32 noundef %6933) #12
  br label %6952

6935:                                             ; preds = %6913, %6906
  %6936 = load i32, ptr %135, align 4, !tbaa !5
  %6937 = call ptr @__errno_location() #13
  store i32 %6936, ptr %6937, align 4, !tbaa !5
  %6938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6939 = load i32, ptr @test_count, align 4, !tbaa !5
  %6940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6941 = load i32, ptr %6940, align 4, !tbaa !5
  %6942 = call ptr @s2n_strerror(i32 noundef %6941, ptr noundef @.str.4)
  %6943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6944 = load i32, ptr %6943, align 4, !tbaa !5
  %6945 = call ptr @s2n_strerror_debug(i32 noundef %6944, ptr noundef @.str.4)
  %6946 = call ptr @__errno_location() #13
  %6947 = load i32, ptr %6946, align 4, !tbaa !5
  %6948 = call ptr @strerror(i32 noundef %6947) #12
  %6949 = call ptr @__errno_location() #13
  %6950 = load i32, ptr %6949, align 4, !tbaa !5
  %6951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6938, ptr noundef @.str.5, i32 noundef %6939, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 273, ptr noundef %6942, ptr noundef %6945, ptr noundef %6948, i32 noundef %6950) #12
  br label %6952

6952:                                             ; preds = %6935, %6918
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #12
  br label %6953

6953:                                             ; preds = %6952
  br label %6954

6954:                                             ; preds = %6953
  call void @exit(i32 noundef 1) #14
  unreachable

6955:                                             ; No predecessors!
  br label %6956

6956:                                             ; preds = %6955
  br label %6957

6957:                                             ; preds = %6956, %6898
  br label %6958

6958:                                             ; preds = %6957
  br label %6959

6959:                                             ; preds = %6958
  br label %6960

6960:                                             ; preds = %6959
  %6961 = load i32, ptr @test_count, align 4, !tbaa !5
  %6962 = add nsw i32 %6961, 1
  store i32 %6962, ptr @test_count, align 4, !tbaa !5
  %6963 = load ptr, ptr %127, align 8, !tbaa !9
  %6964 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6963, i32 0, i32 0
  %6965 = load ptr, ptr %6964, align 8, !tbaa !50
  %6966 = load ptr, ptr %128, align 8, !tbaa !9
  %6967 = icmp eq ptr %6965, %6966
  br i1 %6967, label %7021, label %6968

6968:                                             ; preds = %6960
  br label %6969

6969:                                             ; preds = %6968
  br label %6970

6970:                                             ; preds = %6969
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #12
  %6971 = call ptr @__errno_location() #13
  %6972 = load i32, ptr %6971, align 4, !tbaa !5
  store i32 %6972, ptr %136, align 4, !tbaa !5
  %6973 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6974 = call i32 @s2n_print_stacktrace(ptr noundef %6973)
  %6975 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6976 = trunc i8 %6975 to i1
  br i1 %6976, label %6977, label %6999

6977:                                             ; preds = %6970
  %6978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6979 = call i32 @fileno(ptr noundef %6978) #12
  %6980 = call i32 @isatty(i32 noundef %6979) #12
  %6981 = icmp ne i32 %6980, 0
  br i1 %6981, label %6982, label %6999

6982:                                             ; preds = %6977
  %6983 = load i32, ptr %136, align 4, !tbaa !5
  %6984 = call ptr @__errno_location() #13
  store i32 %6983, ptr %6984, align 4, !tbaa !5
  %6985 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6986 = load i32, ptr @test_count, align 4, !tbaa !5
  %6987 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6988 = load i32, ptr %6987, align 4, !tbaa !5
  %6989 = call ptr @s2n_strerror(i32 noundef %6988, ptr noundef @.str.4)
  %6990 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6991 = load i32, ptr %6990, align 4, !tbaa !5
  %6992 = call ptr @s2n_strerror_debug(i32 noundef %6991, ptr noundef @.str.4)
  %6993 = call ptr @__errno_location() #13
  %6994 = load i32, ptr %6993, align 4, !tbaa !5
  %6995 = call ptr @strerror(i32 noundef %6994) #12
  %6996 = call ptr @__errno_location() #13
  %6997 = load i32, ptr %6996, align 4, !tbaa !5
  %6998 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6985, ptr noundef @.str.2, i32 noundef %6986, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 276, ptr noundef %6989, ptr noundef %6992, ptr noundef %6995, i32 noundef %6997) #12
  br label %7016

6999:                                             ; preds = %6977, %6970
  %7000 = load i32, ptr %136, align 4, !tbaa !5
  %7001 = call ptr @__errno_location() #13
  store i32 %7000, ptr %7001, align 4, !tbaa !5
  %7002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7003 = load i32, ptr @test_count, align 4, !tbaa !5
  %7004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7005 = load i32, ptr %7004, align 4, !tbaa !5
  %7006 = call ptr @s2n_strerror(i32 noundef %7005, ptr noundef @.str.4)
  %7007 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7008 = load i32, ptr %7007, align 4, !tbaa !5
  %7009 = call ptr @s2n_strerror_debug(i32 noundef %7008, ptr noundef @.str.4)
  %7010 = call ptr @__errno_location() #13
  %7011 = load i32, ptr %7010, align 4, !tbaa !5
  %7012 = call ptr @strerror(i32 noundef %7011) #12
  %7013 = call ptr @__errno_location() #13
  %7014 = load i32, ptr %7013, align 4, !tbaa !5
  %7015 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7002, ptr noundef @.str.5, i32 noundef %7003, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 276, ptr noundef %7006, ptr noundef %7009, ptr noundef %7012, i32 noundef %7014) #12
  br label %7016

7016:                                             ; preds = %6999, %6982
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #12
  br label %7017

7017:                                             ; preds = %7016
  br label %7018

7018:                                             ; preds = %7017
  call void @exit(i32 noundef 1) #14
  unreachable

7019:                                             ; No predecessors!
  br label %7020

7020:                                             ; preds = %7019
  br label %7021

7021:                                             ; preds = %7020, %6960
  br label %7022

7022:                                             ; preds = %7021
  br label %7023

7023:                                             ; preds = %7022
  br label %7024

7024:                                             ; preds = %7023
  %7025 = load i32, ptr @test_count, align 4, !tbaa !5
  %7026 = add nsw i32 %7025, 1
  store i32 %7026, ptr @test_count, align 4, !tbaa !5
  %7027 = load ptr, ptr %127, align 8, !tbaa !9
  %7028 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7027, i32 0, i32 1
  %7029 = getelementptr inbounds %struct.s2n_kem_params, ptr %7028, i32 0, i32 0
  %7030 = load ptr, ptr %7029, align 8, !tbaa !53
  %7031 = load ptr, ptr %128, align 8, !tbaa !9
  %7032 = getelementptr inbounds %struct.s2n_kem_group, ptr %7031, i32 0, i32 3
  %7033 = load ptr, ptr %7032, align 8, !tbaa !51
  %7034 = icmp eq ptr %7030, %7033
  br i1 %7034, label %7088, label %7035

7035:                                             ; preds = %7024
  br label %7036

7036:                                             ; preds = %7035
  br label %7037

7037:                                             ; preds = %7036
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #12
  %7038 = call ptr @__errno_location() #13
  %7039 = load i32, ptr %7038, align 4, !tbaa !5
  store i32 %7039, ptr %137, align 4, !tbaa !5
  %7040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7041 = call i32 @s2n_print_stacktrace(ptr noundef %7040)
  %7042 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7043 = trunc i8 %7042 to i1
  br i1 %7043, label %7044, label %7066

7044:                                             ; preds = %7037
  %7045 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7046 = call i32 @fileno(ptr noundef %7045) #12
  %7047 = call i32 @isatty(i32 noundef %7046) #12
  %7048 = icmp ne i32 %7047, 0
  br i1 %7048, label %7049, label %7066

7049:                                             ; preds = %7044
  %7050 = load i32, ptr %137, align 4, !tbaa !5
  %7051 = call ptr @__errno_location() #13
  store i32 %7050, ptr %7051, align 4, !tbaa !5
  %7052 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7053 = load i32, ptr @test_count, align 4, !tbaa !5
  %7054 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7055 = load i32, ptr %7054, align 4, !tbaa !5
  %7056 = call ptr @s2n_strerror(i32 noundef %7055, ptr noundef @.str.4)
  %7057 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7058 = load i32, ptr %7057, align 4, !tbaa !5
  %7059 = call ptr @s2n_strerror_debug(i32 noundef %7058, ptr noundef @.str.4)
  %7060 = call ptr @__errno_location() #13
  %7061 = load i32, ptr %7060, align 4, !tbaa !5
  %7062 = call ptr @strerror(i32 noundef %7061) #12
  %7063 = call ptr @__errno_location() #13
  %7064 = load i32, ptr %7063, align 4, !tbaa !5
  %7065 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7052, ptr noundef @.str.2, i32 noundef %7053, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 277, ptr noundef %7056, ptr noundef %7059, ptr noundef %7062, i32 noundef %7064) #12
  br label %7083

7066:                                             ; preds = %7044, %7037
  %7067 = load i32, ptr %137, align 4, !tbaa !5
  %7068 = call ptr @__errno_location() #13
  store i32 %7067, ptr %7068, align 4, !tbaa !5
  %7069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7070 = load i32, ptr @test_count, align 4, !tbaa !5
  %7071 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7072 = load i32, ptr %7071, align 4, !tbaa !5
  %7073 = call ptr @s2n_strerror(i32 noundef %7072, ptr noundef @.str.4)
  %7074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7075 = load i32, ptr %7074, align 4, !tbaa !5
  %7076 = call ptr @s2n_strerror_debug(i32 noundef %7075, ptr noundef @.str.4)
  %7077 = call ptr @__errno_location() #13
  %7078 = load i32, ptr %7077, align 4, !tbaa !5
  %7079 = call ptr @strerror(i32 noundef %7078) #12
  %7080 = call ptr @__errno_location() #13
  %7081 = load i32, ptr %7080, align 4, !tbaa !5
  %7082 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7069, ptr noundef @.str.5, i32 noundef %7070, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 277, ptr noundef %7073, ptr noundef %7076, ptr noundef %7079, i32 noundef %7081) #12
  br label %7083

7083:                                             ; preds = %7066, %7049
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #12
  br label %7084

7084:                                             ; preds = %7083
  br label %7085

7085:                                             ; preds = %7084
  call void @exit(i32 noundef 1) #14
  unreachable

7086:                                             ; No predecessors!
  br label %7087

7087:                                             ; preds = %7086
  br label %7088

7088:                                             ; preds = %7087, %7024
  br label %7089

7089:                                             ; preds = %7088
  br label %7090

7090:                                             ; preds = %7089
  br label %7091

7091:                                             ; preds = %7090
  %7092 = load i32, ptr @test_count, align 4, !tbaa !5
  %7093 = add nsw i32 %7092, 1
  store i32 %7093, ptr @test_count, align 4, !tbaa !5
  %7094 = load ptr, ptr %127, align 8, !tbaa !9
  %7095 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7094, i32 0, i32 2
  %7096 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7095, i32 0, i32 0
  %7097 = load ptr, ptr %7096, align 8, !tbaa !55
  %7098 = load ptr, ptr %128, align 8, !tbaa !9
  %7099 = getelementptr inbounds %struct.s2n_kem_group, ptr %7098, i32 0, i32 2
  %7100 = load ptr, ptr %7099, align 8, !tbaa !54
  %7101 = icmp eq ptr %7097, %7100
  br i1 %7101, label %7155, label %7102

7102:                                             ; preds = %7091
  br label %7103

7103:                                             ; preds = %7102
  br label %7104

7104:                                             ; preds = %7103
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #12
  %7105 = call ptr @__errno_location() #13
  %7106 = load i32, ptr %7105, align 4, !tbaa !5
  store i32 %7106, ptr %138, align 4, !tbaa !5
  %7107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7108 = call i32 @s2n_print_stacktrace(ptr noundef %7107)
  %7109 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7110 = trunc i8 %7109 to i1
  br i1 %7110, label %7111, label %7133

7111:                                             ; preds = %7104
  %7112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7113 = call i32 @fileno(ptr noundef %7112) #12
  %7114 = call i32 @isatty(i32 noundef %7113) #12
  %7115 = icmp ne i32 %7114, 0
  br i1 %7115, label %7116, label %7133

7116:                                             ; preds = %7111
  %7117 = load i32, ptr %138, align 4, !tbaa !5
  %7118 = call ptr @__errno_location() #13
  store i32 %7117, ptr %7118, align 4, !tbaa !5
  %7119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7120 = load i32, ptr @test_count, align 4, !tbaa !5
  %7121 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7122 = load i32, ptr %7121, align 4, !tbaa !5
  %7123 = call ptr @s2n_strerror(i32 noundef %7122, ptr noundef @.str.4)
  %7124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7125 = load i32, ptr %7124, align 4, !tbaa !5
  %7126 = call ptr @s2n_strerror_debug(i32 noundef %7125, ptr noundef @.str.4)
  %7127 = call ptr @__errno_location() #13
  %7128 = load i32, ptr %7127, align 4, !tbaa !5
  %7129 = call ptr @strerror(i32 noundef %7128) #12
  %7130 = call ptr @__errno_location() #13
  %7131 = load i32, ptr %7130, align 4, !tbaa !5
  %7132 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7119, ptr noundef @.str.2, i32 noundef %7120, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 278, ptr noundef %7123, ptr noundef %7126, ptr noundef %7129, i32 noundef %7131) #12
  br label %7150

7133:                                             ; preds = %7111, %7104
  %7134 = load i32, ptr %138, align 4, !tbaa !5
  %7135 = call ptr @__errno_location() #13
  store i32 %7134, ptr %7135, align 4, !tbaa !5
  %7136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7137 = load i32, ptr @test_count, align 4, !tbaa !5
  %7138 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7139 = load i32, ptr %7138, align 4, !tbaa !5
  %7140 = call ptr @s2n_strerror(i32 noundef %7139, ptr noundef @.str.4)
  %7141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7142 = load i32, ptr %7141, align 4, !tbaa !5
  %7143 = call ptr @s2n_strerror_debug(i32 noundef %7142, ptr noundef @.str.4)
  %7144 = call ptr @__errno_location() #13
  %7145 = load i32, ptr %7144, align 4, !tbaa !5
  %7146 = call ptr @strerror(i32 noundef %7145) #12
  %7147 = call ptr @__errno_location() #13
  %7148 = load i32, ptr %7147, align 4, !tbaa !5
  %7149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7136, ptr noundef @.str.5, i32 noundef %7137, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 278, ptr noundef %7140, ptr noundef %7143, ptr noundef %7146, i32 noundef %7148) #12
  br label %7150

7150:                                             ; preds = %7133, %7116
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #12
  br label %7151

7151:                                             ; preds = %7150
  br label %7152

7152:                                             ; preds = %7151
  call void @exit(i32 noundef 1) #14
  unreachable

7153:                                             ; No predecessors!
  br label %7154

7154:                                             ; preds = %7153
  br label %7155

7155:                                             ; preds = %7154, %7091
  br label %7156

7156:                                             ; preds = %7155
  br label %7157

7157:                                             ; preds = %7156
  br label %7158

7158:                                             ; preds = %7157
  %7159 = load i32, ptr @test_count, align 4, !tbaa !5
  %7160 = add nsw i32 %7159, 1
  store i32 %7160, ptr @test_count, align 4, !tbaa !5
  %7161 = load ptr, ptr %118, align 8, !tbaa !9
  %7162 = getelementptr inbounds %struct.s2n_connection, ptr %7161, i32 0, i32 31
  %7163 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7162, i32 0, i32 5
  %7164 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7163, i32 0, i32 0
  %7165 = load ptr, ptr %7164, align 8, !tbaa !56
  %7166 = load ptr, ptr %128, align 8, !tbaa !9
  %7167 = icmp eq ptr %7165, %7166
  br i1 %7167, label %7221, label %7168

7168:                                             ; preds = %7158
  br label %7169

7169:                                             ; preds = %7168
  br label %7170

7170:                                             ; preds = %7169
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #12
  %7171 = call ptr @__errno_location() #13
  %7172 = load i32, ptr %7171, align 4, !tbaa !5
  store i32 %7172, ptr %139, align 4, !tbaa !5
  %7173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7174 = call i32 @s2n_print_stacktrace(ptr noundef %7173)
  %7175 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7176 = trunc i8 %7175 to i1
  br i1 %7176, label %7177, label %7199

7177:                                             ; preds = %7170
  %7178 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7179 = call i32 @fileno(ptr noundef %7178) #12
  %7180 = call i32 @isatty(i32 noundef %7179) #12
  %7181 = icmp ne i32 %7180, 0
  br i1 %7181, label %7182, label %7199

7182:                                             ; preds = %7177
  %7183 = load i32, ptr %139, align 4, !tbaa !5
  %7184 = call ptr @__errno_location() #13
  store i32 %7183, ptr %7184, align 4, !tbaa !5
  %7185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7186 = load i32, ptr @test_count, align 4, !tbaa !5
  %7187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7188 = load i32, ptr %7187, align 4, !tbaa !5
  %7189 = call ptr @s2n_strerror(i32 noundef %7188, ptr noundef @.str.4)
  %7190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7191 = load i32, ptr %7190, align 4, !tbaa !5
  %7192 = call ptr @s2n_strerror_debug(i32 noundef %7191, ptr noundef @.str.4)
  %7193 = call ptr @__errno_location() #13
  %7194 = load i32, ptr %7193, align 4, !tbaa !5
  %7195 = call ptr @strerror(i32 noundef %7194) #12
  %7196 = call ptr @__errno_location() #13
  %7197 = load i32, ptr %7196, align 4, !tbaa !5
  %7198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7185, ptr noundef @.str.2, i32 noundef %7186, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 279, ptr noundef %7189, ptr noundef %7192, ptr noundef %7195, i32 noundef %7197) #12
  br label %7216

7199:                                             ; preds = %7177, %7170
  %7200 = load i32, ptr %139, align 4, !tbaa !5
  %7201 = call ptr @__errno_location() #13
  store i32 %7200, ptr %7201, align 4, !tbaa !5
  %7202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7203 = load i32, ptr @test_count, align 4, !tbaa !5
  %7204 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7205 = load i32, ptr %7204, align 4, !tbaa !5
  %7206 = call ptr @s2n_strerror(i32 noundef %7205, ptr noundef @.str.4)
  %7207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7208 = load i32, ptr %7207, align 4, !tbaa !5
  %7209 = call ptr @s2n_strerror_debug(i32 noundef %7208, ptr noundef @.str.4)
  %7210 = call ptr @__errno_location() #13
  %7211 = load i32, ptr %7210, align 4, !tbaa !5
  %7212 = call ptr @strerror(i32 noundef %7211) #12
  %7213 = call ptr @__errno_location() #13
  %7214 = load i32, ptr %7213, align 4, !tbaa !5
  %7215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7202, ptr noundef @.str.5, i32 noundef %7203, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 279, ptr noundef %7206, ptr noundef %7209, ptr noundef %7212, i32 noundef %7214) #12
  br label %7216

7216:                                             ; preds = %7199, %7182
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #12
  br label %7217

7217:                                             ; preds = %7216
  br label %7218

7218:                                             ; preds = %7217
  call void @exit(i32 noundef 1) #14
  unreachable

7219:                                             ; No predecessors!
  br label %7220

7220:                                             ; preds = %7219
  br label %7221

7221:                                             ; preds = %7220, %7158
  br label %7222

7222:                                             ; preds = %7221
  br label %7223

7223:                                             ; preds = %7222
  br label %7224

7224:                                             ; preds = %7223
  %7225 = load i32, ptr @test_count, align 4, !tbaa !5
  %7226 = add nsw i32 %7225, 1
  store i32 %7226, ptr @test_count, align 4, !tbaa !5
  %7227 = load ptr, ptr %118, align 8, !tbaa !9
  %7228 = getelementptr inbounds %struct.s2n_connection, ptr %7227, i32 0, i32 31
  %7229 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7228, i32 0, i32 1
  %7230 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7229, i32 0, i32 0
  %7231 = load ptr, ptr %7230, align 8, !tbaa !15
  %7232 = icmp eq ptr %7231, null
  br i1 %7232, label %7286, label %7233

7233:                                             ; preds = %7224
  br label %7234

7234:                                             ; preds = %7233
  br label %7235

7235:                                             ; preds = %7234
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #12
  %7236 = call ptr @__errno_location() #13
  %7237 = load i32, ptr %7236, align 4, !tbaa !5
  store i32 %7237, ptr %140, align 4, !tbaa !5
  %7238 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7239 = call i32 @s2n_print_stacktrace(ptr noundef %7238)
  %7240 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7241 = trunc i8 %7240 to i1
  br i1 %7241, label %7242, label %7264

7242:                                             ; preds = %7235
  %7243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7244 = call i32 @fileno(ptr noundef %7243) #12
  %7245 = call i32 @isatty(i32 noundef %7244) #12
  %7246 = icmp ne i32 %7245, 0
  br i1 %7246, label %7247, label %7264

7247:                                             ; preds = %7242
  %7248 = load i32, ptr %140, align 4, !tbaa !5
  %7249 = call ptr @__errno_location() #13
  store i32 %7248, ptr %7249, align 4, !tbaa !5
  %7250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7251 = load i32, ptr @test_count, align 4, !tbaa !5
  %7252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7253 = load i32, ptr %7252, align 4, !tbaa !5
  %7254 = call ptr @s2n_strerror(i32 noundef %7253, ptr noundef @.str.4)
  %7255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7256 = load i32, ptr %7255, align 4, !tbaa !5
  %7257 = call ptr @s2n_strerror_debug(i32 noundef %7256, ptr noundef @.str.4)
  %7258 = call ptr @__errno_location() #13
  %7259 = load i32, ptr %7258, align 4, !tbaa !5
  %7260 = call ptr @strerror(i32 noundef %7259) #12
  %7261 = call ptr @__errno_location() #13
  %7262 = load i32, ptr %7261, align 4, !tbaa !5
  %7263 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7250, ptr noundef @.str.2, i32 noundef %7251, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 280, ptr noundef %7254, ptr noundef %7257, ptr noundef %7260, i32 noundef %7262) #12
  br label %7281

7264:                                             ; preds = %7242, %7235
  %7265 = load i32, ptr %140, align 4, !tbaa !5
  %7266 = call ptr @__errno_location() #13
  store i32 %7265, ptr %7266, align 4, !tbaa !5
  %7267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7268 = load i32, ptr @test_count, align 4, !tbaa !5
  %7269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7270 = load i32, ptr %7269, align 4, !tbaa !5
  %7271 = call ptr @s2n_strerror(i32 noundef %7270, ptr noundef @.str.4)
  %7272 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7273 = load i32, ptr %7272, align 4, !tbaa !5
  %7274 = call ptr @s2n_strerror_debug(i32 noundef %7273, ptr noundef @.str.4)
  %7275 = call ptr @__errno_location() #13
  %7276 = load i32, ptr %7275, align 4, !tbaa !5
  %7277 = call ptr @strerror(i32 noundef %7276) #12
  %7278 = call ptr @__errno_location() #13
  %7279 = load i32, ptr %7278, align 4, !tbaa !5
  %7280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7267, ptr noundef @.str.5, i32 noundef %7268, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 280, ptr noundef %7271, ptr noundef %7274, ptr noundef %7277, i32 noundef %7279) #12
  br label %7281

7281:                                             ; preds = %7264, %7247
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #12
  br label %7282

7282:                                             ; preds = %7281
  br label %7283

7283:                                             ; preds = %7282
  call void @exit(i32 noundef 1) #14
  unreachable

7284:                                             ; No predecessors!
  br label %7285

7285:                                             ; preds = %7284
  br label %7286

7286:                                             ; preds = %7285, %7224
  br label %7287

7287:                                             ; preds = %7286
  br label %7288

7288:                                             ; preds = %7287
  br label %7289

7289:                                             ; preds = %7288
  %7290 = load i32, ptr @test_count, align 4, !tbaa !5
  %7291 = add nsw i32 %7290, 1
  store i32 %7291, ptr @test_count, align 4, !tbaa !5
  %7292 = load ptr, ptr %118, align 8, !tbaa !9
  %7293 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %7292)
  br i1 %7293, label %7294, label %7347

7294:                                             ; preds = %7289
  br label %7295

7295:                                             ; preds = %7294
  br label %7296

7296:                                             ; preds = %7295
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #12
  %7297 = call ptr @__errno_location() #13
  %7298 = load i32, ptr %7297, align 4, !tbaa !5
  store i32 %7298, ptr %141, align 4, !tbaa !5
  %7299 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7300 = call i32 @s2n_print_stacktrace(ptr noundef %7299)
  %7301 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7302 = trunc i8 %7301 to i1
  br i1 %7302, label %7303, label %7325

7303:                                             ; preds = %7296
  %7304 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7305 = call i32 @fileno(ptr noundef %7304) #12
  %7306 = call i32 @isatty(i32 noundef %7305) #12
  %7307 = icmp ne i32 %7306, 0
  br i1 %7307, label %7308, label %7325

7308:                                             ; preds = %7303
  %7309 = load i32, ptr %141, align 4, !tbaa !5
  %7310 = call ptr @__errno_location() #13
  store i32 %7309, ptr %7310, align 4, !tbaa !5
  %7311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7312 = load i32, ptr @test_count, align 4, !tbaa !5
  %7313 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7314 = load i32, ptr %7313, align 4, !tbaa !5
  %7315 = call ptr @s2n_strerror(i32 noundef %7314, ptr noundef @.str.4)
  %7316 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7317 = load i32, ptr %7316, align 4, !tbaa !5
  %7318 = call ptr @s2n_strerror_debug(i32 noundef %7317, ptr noundef @.str.4)
  %7319 = call ptr @__errno_location() #13
  %7320 = load i32, ptr %7319, align 4, !tbaa !5
  %7321 = call ptr @strerror(i32 noundef %7320) #12
  %7322 = call ptr @__errno_location() #13
  %7323 = load i32, ptr %7322, align 4, !tbaa !5
  %7324 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7311, ptr noundef @.str.2, i32 noundef %7312, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 281, ptr noundef %7315, ptr noundef %7318, ptr noundef %7321, i32 noundef %7323) #12
  br label %7342

7325:                                             ; preds = %7303, %7296
  %7326 = load i32, ptr %141, align 4, !tbaa !5
  %7327 = call ptr @__errno_location() #13
  store i32 %7326, ptr %7327, align 4, !tbaa !5
  %7328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7329 = load i32, ptr @test_count, align 4, !tbaa !5
  %7330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7331 = load i32, ptr %7330, align 4, !tbaa !5
  %7332 = call ptr @s2n_strerror(i32 noundef %7331, ptr noundef @.str.4)
  %7333 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7334 = load i32, ptr %7333, align 4, !tbaa !5
  %7335 = call ptr @s2n_strerror_debug(i32 noundef %7334, ptr noundef @.str.4)
  %7336 = call ptr @__errno_location() #13
  %7337 = load i32, ptr %7336, align 4, !tbaa !5
  %7338 = call ptr @strerror(i32 noundef %7337) #12
  %7339 = call ptr @__errno_location() #13
  %7340 = load i32, ptr %7339, align 4, !tbaa !5
  %7341 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7328, ptr noundef @.str.5, i32 noundef %7329, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 281, ptr noundef %7332, ptr noundef %7335, ptr noundef %7338, i32 noundef %7340) #12
  br label %7342

7342:                                             ; preds = %7325, %7308
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #12
  br label %7343

7343:                                             ; preds = %7342
  br label %7344

7344:                                             ; preds = %7343
  call void @exit(i32 noundef 1) #14
  unreachable

7345:                                             ; No predecessors!
  br label %7346

7346:                                             ; preds = %7345
  br label %7347

7347:                                             ; preds = %7346, %7289
  br label %7348

7348:                                             ; preds = %7347
  br label %7349

7349:                                             ; preds = %7348
  br label %7350

7350:                                             ; preds = %7349
  %7351 = load i32, ptr @test_count, align 4, !tbaa !5
  %7352 = add nsw i32 %7351, 1
  store i32 %7352, ptr @test_count, align 4, !tbaa !5
  %7353 = load ptr, ptr %118, align 8, !tbaa !9
  %7354 = call i32 @s2n_connection_free(ptr noundef %7353)
  %7355 = icmp eq i32 %7354, -1
  br i1 %7355, label %7356, label %7409

7356:                                             ; preds = %7350
  br label %7357

7357:                                             ; preds = %7356
  br label %7358

7358:                                             ; preds = %7357
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #12
  %7359 = call ptr @__errno_location() #13
  %7360 = load i32, ptr %7359, align 4, !tbaa !5
  store i32 %7360, ptr %142, align 4, !tbaa !5
  %7361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7362 = call i32 @s2n_print_stacktrace(ptr noundef %7361)
  %7363 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7364 = trunc i8 %7363 to i1
  br i1 %7364, label %7365, label %7387

7365:                                             ; preds = %7358
  %7366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7367 = call i32 @fileno(ptr noundef %7366) #12
  %7368 = call i32 @isatty(i32 noundef %7367) #12
  %7369 = icmp ne i32 %7368, 0
  br i1 %7369, label %7370, label %7387

7370:                                             ; preds = %7365
  %7371 = load i32, ptr %142, align 4, !tbaa !5
  %7372 = call ptr @__errno_location() #13
  store i32 %7371, ptr %7372, align 4, !tbaa !5
  %7373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7374 = load i32, ptr @test_count, align 4, !tbaa !5
  %7375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7376 = load i32, ptr %7375, align 4, !tbaa !5
  %7377 = call ptr @s2n_strerror(i32 noundef %7376, ptr noundef @.str.4)
  %7378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7379 = load i32, ptr %7378, align 4, !tbaa !5
  %7380 = call ptr @s2n_strerror_debug(i32 noundef %7379, ptr noundef @.str.4)
  %7381 = call ptr @__errno_location() #13
  %7382 = load i32, ptr %7381, align 4, !tbaa !5
  %7383 = call ptr @strerror(i32 noundef %7382) #12
  %7384 = call ptr @__errno_location() #13
  %7385 = load i32, ptr %7384, align 4, !tbaa !5
  %7386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7373, ptr noundef @.str.2, i32 noundef %7374, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 283, ptr noundef %7377, ptr noundef %7380, ptr noundef %7383, i32 noundef %7385) #12
  br label %7404

7387:                                             ; preds = %7365, %7358
  %7388 = load i32, ptr %142, align 4, !tbaa !5
  %7389 = call ptr @__errno_location() #13
  store i32 %7388, ptr %7389, align 4, !tbaa !5
  %7390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7391 = load i32, ptr @test_count, align 4, !tbaa !5
  %7392 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7393 = load i32, ptr %7392, align 4, !tbaa !5
  %7394 = call ptr @s2n_strerror(i32 noundef %7393, ptr noundef @.str.4)
  %7395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7396 = load i32, ptr %7395, align 4, !tbaa !5
  %7397 = call ptr @s2n_strerror_debug(i32 noundef %7396, ptr noundef @.str.4)
  %7398 = call ptr @__errno_location() #13
  %7399 = load i32, ptr %7398, align 4, !tbaa !5
  %7400 = call ptr @strerror(i32 noundef %7399) #12
  %7401 = call ptr @__errno_location() #13
  %7402 = load i32, ptr %7401, align 4, !tbaa !5
  %7403 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7390, ptr noundef @.str.5, i32 noundef %7391, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 283, ptr noundef %7394, ptr noundef %7397, ptr noundef %7400, i32 noundef %7402) #12
  br label %7404

7404:                                             ; preds = %7387, %7370
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #12
  br label %7405

7405:                                             ; preds = %7404
  br label %7406

7406:                                             ; preds = %7405
  call void @exit(i32 noundef 1) #14
  unreachable

7407:                                             ; No predecessors!
  br label %7408

7408:                                             ; preds = %7407
  br label %7409

7409:                                             ; preds = %7408, %7350
  br label %7410

7410:                                             ; preds = %7409
  br label %7411

7411:                                             ; preds = %7410
  store i32 0, ptr %10, align 4
  br label %7412

7412:                                             ; preds = %7411, %6830
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #12
  %7413 = load i32, ptr %10, align 4
  switch i32 %7413, label %11561 [
    i32 0, label %7414
  ]

7414:                                             ; preds = %7412
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #12
  store ptr null, ptr %143, align 8, !tbaa !9
  br label %7415

7415:                                             ; preds = %7414
  %7416 = load i32, ptr @test_count, align 4, !tbaa !5
  %7417 = add nsw i32 %7416, 1
  store i32 %7417, ptr @test_count, align 4, !tbaa !5
  %7418 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %7418, ptr %143, align 8, !tbaa !9
  %7419 = icmp eq ptr %7418, null
  br i1 %7419, label %7420, label %7473

7420:                                             ; preds = %7415
  br label %7421

7421:                                             ; preds = %7420
  br label %7422

7422:                                             ; preds = %7421
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #12
  %7423 = call ptr @__errno_location() #13
  %7424 = load i32, ptr %7423, align 4, !tbaa !5
  store i32 %7424, ptr %144, align 4, !tbaa !5
  %7425 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7426 = call i32 @s2n_print_stacktrace(ptr noundef %7425)
  %7427 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7428 = trunc i8 %7427 to i1
  br i1 %7428, label %7429, label %7451

7429:                                             ; preds = %7422
  %7430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7431 = call i32 @fileno(ptr noundef %7430) #12
  %7432 = call i32 @isatty(i32 noundef %7431) #12
  %7433 = icmp ne i32 %7432, 0
  br i1 %7433, label %7434, label %7451

7434:                                             ; preds = %7429
  %7435 = load i32, ptr %144, align 4, !tbaa !5
  %7436 = call ptr @__errno_location() #13
  store i32 %7435, ptr %7436, align 4, !tbaa !5
  %7437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7438 = load i32, ptr @test_count, align 4, !tbaa !5
  %7439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7440 = load i32, ptr %7439, align 4, !tbaa !5
  %7441 = call ptr @s2n_strerror(i32 noundef %7440, ptr noundef @.str.4)
  %7442 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7443 = load i32, ptr %7442, align 4, !tbaa !5
  %7444 = call ptr @s2n_strerror_debug(i32 noundef %7443, ptr noundef @.str.4)
  %7445 = call ptr @__errno_location() #13
  %7446 = load i32, ptr %7445, align 4, !tbaa !5
  %7447 = call ptr @strerror(i32 noundef %7446) #12
  %7448 = call ptr @__errno_location() #13
  %7449 = load i32, ptr %7448, align 4, !tbaa !5
  %7450 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7437, ptr noundef @.str.2, i32 noundef %7438, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 290, ptr noundef %7441, ptr noundef %7444, ptr noundef %7447, i32 noundef %7449) #12
  br label %7468

7451:                                             ; preds = %7429, %7422
  %7452 = load i32, ptr %144, align 4, !tbaa !5
  %7453 = call ptr @__errno_location() #13
  store i32 %7452, ptr %7453, align 4, !tbaa !5
  %7454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7455 = load i32, ptr @test_count, align 4, !tbaa !5
  %7456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7457 = load i32, ptr %7456, align 4, !tbaa !5
  %7458 = call ptr @s2n_strerror(i32 noundef %7457, ptr noundef @.str.4)
  %7459 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7460 = load i32, ptr %7459, align 4, !tbaa !5
  %7461 = call ptr @s2n_strerror_debug(i32 noundef %7460, ptr noundef @.str.4)
  %7462 = call ptr @__errno_location() #13
  %7463 = load i32, ptr %7462, align 4, !tbaa !5
  %7464 = call ptr @strerror(i32 noundef %7463) #12
  %7465 = call ptr @__errno_location() #13
  %7466 = load i32, ptr %7465, align 4, !tbaa !5
  %7467 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7454, ptr noundef @.str.5, i32 noundef %7455, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 290, ptr noundef %7458, ptr noundef %7461, ptr noundef %7464, i32 noundef %7466) #12
  br label %7468

7468:                                             ; preds = %7451, %7434
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #12
  br label %7469

7469:                                             ; preds = %7468
  br label %7470

7470:                                             ; preds = %7469
  call void @exit(i32 noundef 1) #14
  unreachable

7471:                                             ; No predecessors!
  br label %7472

7472:                                             ; preds = %7471
  br label %7473

7473:                                             ; preds = %7472, %7415
  br label %7474

7474:                                             ; preds = %7473
  br label %7475

7475:                                             ; preds = %7474
  %7476 = load ptr, ptr %143, align 8, !tbaa !9
  %7477 = getelementptr inbounds %struct.s2n_connection, ptr %7476, i32 0, i32 2
  store ptr %54, ptr %7477, align 8, !tbaa !47
  br label %7478

7478:                                             ; preds = %7475
  %7479 = load i32, ptr @test_count, align 4, !tbaa !5
  %7480 = add nsw i32 %7479, 1
  store i32 %7480, ptr @test_count, align 4, !tbaa !5
  %7481 = load ptr, ptr %143, align 8, !tbaa !9
  %7482 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %7481, i8 noundef zeroext 34)
  %7483 = icmp eq i32 %7482, -1
  br i1 %7483, label %7484, label %7537

7484:                                             ; preds = %7478
  br label %7485

7485:                                             ; preds = %7484
  br label %7486

7486:                                             ; preds = %7485
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #12
  %7487 = call ptr @__errno_location() #13
  %7488 = load i32, ptr %7487, align 4, !tbaa !5
  store i32 %7488, ptr %145, align 4, !tbaa !5
  %7489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7490 = call i32 @s2n_print_stacktrace(ptr noundef %7489)
  %7491 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7492 = trunc i8 %7491 to i1
  br i1 %7492, label %7493, label %7515

7493:                                             ; preds = %7486
  %7494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7495 = call i32 @fileno(ptr noundef %7494) #12
  %7496 = call i32 @isatty(i32 noundef %7495) #12
  %7497 = icmp ne i32 %7496, 0
  br i1 %7497, label %7498, label %7515

7498:                                             ; preds = %7493
  %7499 = load i32, ptr %145, align 4, !tbaa !5
  %7500 = call ptr @__errno_location() #13
  store i32 %7499, ptr %7500, align 4, !tbaa !5
  %7501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7502 = load i32, ptr @test_count, align 4, !tbaa !5
  %7503 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7504 = load i32, ptr %7503, align 4, !tbaa !5
  %7505 = call ptr @s2n_strerror(i32 noundef %7504, ptr noundef @.str.4)
  %7506 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7507 = load i32, ptr %7506, align 4, !tbaa !5
  %7508 = call ptr @s2n_strerror_debug(i32 noundef %7507, ptr noundef @.str.4)
  %7509 = call ptr @__errno_location() #13
  %7510 = load i32, ptr %7509, align 4, !tbaa !5
  %7511 = call ptr @strerror(i32 noundef %7510) #12
  %7512 = call ptr @__errno_location() #13
  %7513 = load i32, ptr %7512, align 4, !tbaa !5
  %7514 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7501, ptr noundef @.str.2, i32 noundef %7502, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 292, ptr noundef %7505, ptr noundef %7508, ptr noundef %7511, i32 noundef %7513) #12
  br label %7532

7515:                                             ; preds = %7493, %7486
  %7516 = load i32, ptr %145, align 4, !tbaa !5
  %7517 = call ptr @__errno_location() #13
  store i32 %7516, ptr %7517, align 4, !tbaa !5
  %7518 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7519 = load i32, ptr @test_count, align 4, !tbaa !5
  %7520 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7521 = load i32, ptr %7520, align 4, !tbaa !5
  %7522 = call ptr @s2n_strerror(i32 noundef %7521, ptr noundef @.str.4)
  %7523 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7524 = load i32, ptr %7523, align 4, !tbaa !5
  %7525 = call ptr @s2n_strerror_debug(i32 noundef %7524, ptr noundef @.str.4)
  %7526 = call ptr @__errno_location() #13
  %7527 = load i32, ptr %7526, align 4, !tbaa !5
  %7528 = call ptr @strerror(i32 noundef %7527) #12
  %7529 = call ptr @__errno_location() #13
  %7530 = load i32, ptr %7529, align 4, !tbaa !5
  %7531 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7518, ptr noundef @.str.5, i32 noundef %7519, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 292, ptr noundef %7522, ptr noundef %7525, ptr noundef %7528, i32 noundef %7530) #12
  br label %7532

7532:                                             ; preds = %7515, %7498
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #12
  br label %7533

7533:                                             ; preds = %7532
  br label %7534

7534:                                             ; preds = %7533
  call void @exit(i32 noundef 1) #14
  unreachable

7535:                                             ; No predecessors!
  br label %7536

7536:                                             ; preds = %7535
  br label %7537

7537:                                             ; preds = %7536, %7478
  br label %7538

7538:                                             ; preds = %7537
  br label %7539

7539:                                             ; preds = %7538
  br label %7540

7540:                                             ; preds = %7539
  %7541 = load i32, ptr @test_count, align 4, !tbaa !5
  %7542 = add nsw i32 %7541, 1
  store i32 %7542, ptr @test_count, align 4, !tbaa !5
  %7543 = load ptr, ptr %143, align 8, !tbaa !9
  %7544 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef %7543)
  %7545 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  store i32 %7544, ptr %7545, align 4
  %7546 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  %7547 = load i32, ptr %7546, align 4
  %7548 = call zeroext i1 @s2n_result_is_ok(i32 %7547)
  br i1 %7548, label %7602, label %7549

7549:                                             ; preds = %7540
  br label %7550

7550:                                             ; preds = %7549
  br label %7551

7551:                                             ; preds = %7550
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #12
  %7552 = call ptr @__errno_location() #13
  %7553 = load i32, ptr %7552, align 4, !tbaa !5
  store i32 %7553, ptr %147, align 4, !tbaa !5
  %7554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7555 = call i32 @s2n_print_stacktrace(ptr noundef %7554)
  %7556 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7557 = trunc i8 %7556 to i1
  br i1 %7557, label %7558, label %7580

7558:                                             ; preds = %7551
  %7559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7560 = call i32 @fileno(ptr noundef %7559) #12
  %7561 = call i32 @isatty(i32 noundef %7560) #12
  %7562 = icmp ne i32 %7561, 0
  br i1 %7562, label %7563, label %7580

7563:                                             ; preds = %7558
  %7564 = load i32, ptr %147, align 4, !tbaa !5
  %7565 = call ptr @__errno_location() #13
  store i32 %7564, ptr %7565, align 4, !tbaa !5
  %7566 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7567 = load i32, ptr @test_count, align 4, !tbaa !5
  %7568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7569 = load i32, ptr %7568, align 4, !tbaa !5
  %7570 = call ptr @s2n_strerror(i32 noundef %7569, ptr noundef @.str.4)
  %7571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7572 = load i32, ptr %7571, align 4, !tbaa !5
  %7573 = call ptr @s2n_strerror_debug(i32 noundef %7572, ptr noundef @.str.4)
  %7574 = call ptr @__errno_location() #13
  %7575 = load i32, ptr %7574, align 4, !tbaa !5
  %7576 = call ptr @strerror(i32 noundef %7575) #12
  %7577 = call ptr @__errno_location() #13
  %7578 = load i32, ptr %7577, align 4, !tbaa !5
  %7579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7566, ptr noundef @.str.2, i32 noundef %7567, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 293, ptr noundef %7570, ptr noundef %7573, ptr noundef %7576, i32 noundef %7578) #12
  br label %7597

7580:                                             ; preds = %7558, %7551
  %7581 = load i32, ptr %147, align 4, !tbaa !5
  %7582 = call ptr @__errno_location() #13
  store i32 %7581, ptr %7582, align 4, !tbaa !5
  %7583 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7584 = load i32, ptr @test_count, align 4, !tbaa !5
  %7585 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7586 = load i32, ptr %7585, align 4, !tbaa !5
  %7587 = call ptr @s2n_strerror(i32 noundef %7586, ptr noundef @.str.4)
  %7588 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7589 = load i32, ptr %7588, align 4, !tbaa !5
  %7590 = call ptr @s2n_strerror_debug(i32 noundef %7589, ptr noundef @.str.4)
  %7591 = call ptr @__errno_location() #13
  %7592 = load i32, ptr %7591, align 4, !tbaa !5
  %7593 = call ptr @strerror(i32 noundef %7592) #12
  %7594 = call ptr @__errno_location() #13
  %7595 = load i32, ptr %7594, align 4, !tbaa !5
  %7596 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7583, ptr noundef @.str.5, i32 noundef %7584, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 293, ptr noundef %7587, ptr noundef %7590, ptr noundef %7593, i32 noundef %7595) #12
  br label %7597

7597:                                             ; preds = %7580, %7563
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #12
  br label %7598

7598:                                             ; preds = %7597
  br label %7599

7599:                                             ; preds = %7598
  call void @exit(i32 noundef 1) #14
  unreachable

7600:                                             ; No predecessors!
  br label %7601

7601:                                             ; preds = %7600
  br label %7602

7602:                                             ; preds = %7601, %7540
  br label %7603

7603:                                             ; preds = %7602
  br label %7604

7604:                                             ; preds = %7603
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #12
  store ptr null, ptr %148, align 8, !tbaa !9
  br label %7605

7605:                                             ; preds = %7604
  %7606 = load i32, ptr @test_count, align 4, !tbaa !5
  %7607 = add nsw i32 %7606, 1
  store i32 %7607, ptr @test_count, align 4, !tbaa !5
  %7608 = load ptr, ptr %143, align 8, !tbaa !9
  %7609 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %7608, ptr noundef %148)
  %7610 = icmp eq i32 %7609, -1
  br i1 %7610, label %7611, label %7664

7611:                                             ; preds = %7605
  br label %7612

7612:                                             ; preds = %7611
  br label %7613

7613:                                             ; preds = %7612
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #12
  %7614 = call ptr @__errno_location() #13
  %7615 = load i32, ptr %7614, align 4, !tbaa !5
  store i32 %7615, ptr %149, align 4, !tbaa !5
  %7616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7617 = call i32 @s2n_print_stacktrace(ptr noundef %7616)
  %7618 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7619 = trunc i8 %7618 to i1
  br i1 %7619, label %7620, label %7642

7620:                                             ; preds = %7613
  %7621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7622 = call i32 @fileno(ptr noundef %7621) #12
  %7623 = call i32 @isatty(i32 noundef %7622) #12
  %7624 = icmp ne i32 %7623, 0
  br i1 %7624, label %7625, label %7642

7625:                                             ; preds = %7620
  %7626 = load i32, ptr %149, align 4, !tbaa !5
  %7627 = call ptr @__errno_location() #13
  store i32 %7626, ptr %7627, align 4, !tbaa !5
  %7628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7629 = load i32, ptr @test_count, align 4, !tbaa !5
  %7630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7631 = load i32, ptr %7630, align 4, !tbaa !5
  %7632 = call ptr @s2n_strerror(i32 noundef %7631, ptr noundef @.str.4)
  %7633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7634 = load i32, ptr %7633, align 4, !tbaa !5
  %7635 = call ptr @s2n_strerror_debug(i32 noundef %7634, ptr noundef @.str.4)
  %7636 = call ptr @__errno_location() #13
  %7637 = load i32, ptr %7636, align 4, !tbaa !5
  %7638 = call ptr @strerror(i32 noundef %7637) #12
  %7639 = call ptr @__errno_location() #13
  %7640 = load i32, ptr %7639, align 4, !tbaa !5
  %7641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7628, ptr noundef @.str.2, i32 noundef %7629, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 296, ptr noundef %7632, ptr noundef %7635, ptr noundef %7638, i32 noundef %7640) #12
  br label %7659

7642:                                             ; preds = %7620, %7613
  %7643 = load i32, ptr %149, align 4, !tbaa !5
  %7644 = call ptr @__errno_location() #13
  store i32 %7643, ptr %7644, align 4, !tbaa !5
  %7645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7646 = load i32, ptr @test_count, align 4, !tbaa !5
  %7647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7648 = load i32, ptr %7647, align 4, !tbaa !5
  %7649 = call ptr @s2n_strerror(i32 noundef %7648, ptr noundef @.str.4)
  %7650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7651 = load i32, ptr %7650, align 4, !tbaa !5
  %7652 = call ptr @s2n_strerror_debug(i32 noundef %7651, ptr noundef @.str.4)
  %7653 = call ptr @__errno_location() #13
  %7654 = load i32, ptr %7653, align 4, !tbaa !5
  %7655 = call ptr @strerror(i32 noundef %7654) #12
  %7656 = call ptr @__errno_location() #13
  %7657 = load i32, ptr %7656, align 4, !tbaa !5
  %7658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7645, ptr noundef @.str.5, i32 noundef %7646, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 296, ptr noundef %7649, ptr noundef %7652, ptr noundef %7655, i32 noundef %7657) #12
  br label %7659

7659:                                             ; preds = %7642, %7625
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #12
  br label %7660

7660:                                             ; preds = %7659
  br label %7661

7661:                                             ; preds = %7660
  call void @exit(i32 noundef 1) #14
  unreachable

7662:                                             ; No predecessors!
  br label %7663

7663:                                             ; preds = %7662
  br label %7664

7664:                                             ; preds = %7663, %7605
  br label %7665

7665:                                             ; preds = %7664
  br label %7666

7666:                                             ; preds = %7665
  br label %7667

7667:                                             ; preds = %7666
  %7668 = load i32, ptr @test_count, align 4, !tbaa !5
  %7669 = add nsw i32 %7668, 1
  store i32 %7669, ptr @test_count, align 4, !tbaa !5
  %7670 = load ptr, ptr %148, align 8, !tbaa !9
  %7671 = icmp eq ptr %7670, null
  br i1 %7671, label %7672, label %7725

7672:                                             ; preds = %7667
  br label %7673

7673:                                             ; preds = %7672
  br label %7674

7674:                                             ; preds = %7673
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #12
  %7675 = call ptr @__errno_location() #13
  %7676 = load i32, ptr %7675, align 4, !tbaa !5
  store i32 %7676, ptr %150, align 4, !tbaa !5
  %7677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7678 = call i32 @s2n_print_stacktrace(ptr noundef %7677)
  %7679 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7680 = trunc i8 %7679 to i1
  br i1 %7680, label %7681, label %7703

7681:                                             ; preds = %7674
  %7682 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7683 = call i32 @fileno(ptr noundef %7682) #12
  %7684 = call i32 @isatty(i32 noundef %7683) #12
  %7685 = icmp ne i32 %7684, 0
  br i1 %7685, label %7686, label %7703

7686:                                             ; preds = %7681
  %7687 = load i32, ptr %150, align 4, !tbaa !5
  %7688 = call ptr @__errno_location() #13
  store i32 %7687, ptr %7688, align 4, !tbaa !5
  %7689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7690 = load i32, ptr @test_count, align 4, !tbaa !5
  %7691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7692 = load i32, ptr %7691, align 4, !tbaa !5
  %7693 = call ptr @s2n_strerror(i32 noundef %7692, ptr noundef @.str.4)
  %7694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7695 = load i32, ptr %7694, align 4, !tbaa !5
  %7696 = call ptr @s2n_strerror_debug(i32 noundef %7695, ptr noundef @.str.4)
  %7697 = call ptr @__errno_location() #13
  %7698 = load i32, ptr %7697, align 4, !tbaa !5
  %7699 = call ptr @strerror(i32 noundef %7698) #12
  %7700 = call ptr @__errno_location() #13
  %7701 = load i32, ptr %7700, align 4, !tbaa !5
  %7702 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7689, ptr noundef @.str.2, i32 noundef %7690, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 297, ptr noundef %7693, ptr noundef %7696, ptr noundef %7699, i32 noundef %7701) #12
  br label %7720

7703:                                             ; preds = %7681, %7674
  %7704 = load i32, ptr %150, align 4, !tbaa !5
  %7705 = call ptr @__errno_location() #13
  store i32 %7704, ptr %7705, align 4, !tbaa !5
  %7706 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7707 = load i32, ptr @test_count, align 4, !tbaa !5
  %7708 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7709 = load i32, ptr %7708, align 4, !tbaa !5
  %7710 = call ptr @s2n_strerror(i32 noundef %7709, ptr noundef @.str.4)
  %7711 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7712 = load i32, ptr %7711, align 4, !tbaa !5
  %7713 = call ptr @s2n_strerror_debug(i32 noundef %7712, ptr noundef @.str.4)
  %7714 = call ptr @__errno_location() #13
  %7715 = load i32, ptr %7714, align 4, !tbaa !5
  %7716 = call ptr @strerror(i32 noundef %7715) #12
  %7717 = call ptr @__errno_location() #13
  %7718 = load i32, ptr %7717, align 4, !tbaa !5
  %7719 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7706, ptr noundef @.str.5, i32 noundef %7707, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 297, ptr noundef %7710, ptr noundef %7713, ptr noundef %7716, i32 noundef %7718) #12
  br label %7720

7720:                                             ; preds = %7703, %7686
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #12
  br label %7721

7721:                                             ; preds = %7720
  br label %7722

7722:                                             ; preds = %7721
  call void @exit(i32 noundef 1) #14
  unreachable

7723:                                             ; No predecessors!
  br label %7724

7724:                                             ; preds = %7723
  br label %7725

7725:                                             ; preds = %7724, %7667
  br label %7726

7726:                                             ; preds = %7725
  br label %7727

7727:                                             ; preds = %7726
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #12
  store ptr null, ptr %151, align 8, !tbaa !9
  br label %7728

7728:                                             ; preds = %7727
  %7729 = load i32, ptr @test_count, align 4, !tbaa !5
  %7730 = add nsw i32 %7729, 1
  store i32 %7730, ptr @test_count, align 4, !tbaa !5
  %7731 = load ptr, ptr %143, align 8, !tbaa !9
  %7732 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %7731, ptr noundef %151)
  %7733 = icmp eq i32 %7732, -1
  br i1 %7733, label %7734, label %7787

7734:                                             ; preds = %7728
  br label %7735

7735:                                             ; preds = %7734
  br label %7736

7736:                                             ; preds = %7735
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #12
  %7737 = call ptr @__errno_location() #13
  %7738 = load i32, ptr %7737, align 4, !tbaa !5
  store i32 %7738, ptr %152, align 4, !tbaa !5
  %7739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7740 = call i32 @s2n_print_stacktrace(ptr noundef %7739)
  %7741 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7742 = trunc i8 %7741 to i1
  br i1 %7742, label %7743, label %7765

7743:                                             ; preds = %7736
  %7744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7745 = call i32 @fileno(ptr noundef %7744) #12
  %7746 = call i32 @isatty(i32 noundef %7745) #12
  %7747 = icmp ne i32 %7746, 0
  br i1 %7747, label %7748, label %7765

7748:                                             ; preds = %7743
  %7749 = load i32, ptr %152, align 4, !tbaa !5
  %7750 = call ptr @__errno_location() #13
  store i32 %7749, ptr %7750, align 4, !tbaa !5
  %7751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7752 = load i32, ptr @test_count, align 4, !tbaa !5
  %7753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7754 = load i32, ptr %7753, align 4, !tbaa !5
  %7755 = call ptr @s2n_strerror(i32 noundef %7754, ptr noundef @.str.4)
  %7756 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7757 = load i32, ptr %7756, align 4, !tbaa !5
  %7758 = call ptr @s2n_strerror_debug(i32 noundef %7757, ptr noundef @.str.4)
  %7759 = call ptr @__errno_location() #13
  %7760 = load i32, ptr %7759, align 4, !tbaa !5
  %7761 = call ptr @strerror(i32 noundef %7760) #12
  %7762 = call ptr @__errno_location() #13
  %7763 = load i32, ptr %7762, align 4, !tbaa !5
  %7764 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7751, ptr noundef @.str.2, i32 noundef %7752, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 300, ptr noundef %7755, ptr noundef %7758, ptr noundef %7761, i32 noundef %7763) #12
  br label %7782

7765:                                             ; preds = %7743, %7736
  %7766 = load i32, ptr %152, align 4, !tbaa !5
  %7767 = call ptr @__errno_location() #13
  store i32 %7766, ptr %7767, align 4, !tbaa !5
  %7768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7769 = load i32, ptr @test_count, align 4, !tbaa !5
  %7770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7771 = load i32, ptr %7770, align 4, !tbaa !5
  %7772 = call ptr @s2n_strerror(i32 noundef %7771, ptr noundef @.str.4)
  %7773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7774 = load i32, ptr %7773, align 4, !tbaa !5
  %7775 = call ptr @s2n_strerror_debug(i32 noundef %7774, ptr noundef @.str.4)
  %7776 = call ptr @__errno_location() #13
  %7777 = load i32, ptr %7776, align 4, !tbaa !5
  %7778 = call ptr @strerror(i32 noundef %7777) #12
  %7779 = call ptr @__errno_location() #13
  %7780 = load i32, ptr %7779, align 4, !tbaa !5
  %7781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7768, ptr noundef @.str.5, i32 noundef %7769, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 300, ptr noundef %7772, ptr noundef %7775, ptr noundef %7778, i32 noundef %7780) #12
  br label %7782

7782:                                             ; preds = %7765, %7748
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #12
  br label %7783

7783:                                             ; preds = %7782
  br label %7784

7784:                                             ; preds = %7783
  call void @exit(i32 noundef 1) #14
  unreachable

7785:                                             ; No predecessors!
  br label %7786

7786:                                             ; preds = %7785
  br label %7787

7787:                                             ; preds = %7786, %7728
  br label %7788

7788:                                             ; preds = %7787
  br label %7789

7789:                                             ; preds = %7788
  br label %7790

7790:                                             ; preds = %7789
  %7791 = load i32, ptr @test_count, align 4, !tbaa !5
  %7792 = add nsw i32 %7791, 1
  store i32 %7792, ptr @test_count, align 4, !tbaa !5
  %7793 = load ptr, ptr %151, align 8, !tbaa !9
  %7794 = icmp eq ptr %7793, null
  br i1 %7794, label %7795, label %7848

7795:                                             ; preds = %7790
  br label %7796

7796:                                             ; preds = %7795
  br label %7797

7797:                                             ; preds = %7796
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #12
  %7798 = call ptr @__errno_location() #13
  %7799 = load i32, ptr %7798, align 4, !tbaa !5
  store i32 %7799, ptr %153, align 4, !tbaa !5
  %7800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7801 = call i32 @s2n_print_stacktrace(ptr noundef %7800)
  %7802 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7803 = trunc i8 %7802 to i1
  br i1 %7803, label %7804, label %7826

7804:                                             ; preds = %7797
  %7805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7806 = call i32 @fileno(ptr noundef %7805) #12
  %7807 = call i32 @isatty(i32 noundef %7806) #12
  %7808 = icmp ne i32 %7807, 0
  br i1 %7808, label %7809, label %7826

7809:                                             ; preds = %7804
  %7810 = load i32, ptr %153, align 4, !tbaa !5
  %7811 = call ptr @__errno_location() #13
  store i32 %7810, ptr %7811, align 4, !tbaa !5
  %7812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7813 = load i32, ptr @test_count, align 4, !tbaa !5
  %7814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7815 = load i32, ptr %7814, align 4, !tbaa !5
  %7816 = call ptr @s2n_strerror(i32 noundef %7815, ptr noundef @.str.4)
  %7817 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7818 = load i32, ptr %7817, align 4, !tbaa !5
  %7819 = call ptr @s2n_strerror_debug(i32 noundef %7818, ptr noundef @.str.4)
  %7820 = call ptr @__errno_location() #13
  %7821 = load i32, ptr %7820, align 4, !tbaa !5
  %7822 = call ptr @strerror(i32 noundef %7821) #12
  %7823 = call ptr @__errno_location() #13
  %7824 = load i32, ptr %7823, align 4, !tbaa !5
  %7825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7812, ptr noundef @.str.2, i32 noundef %7813, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 301, ptr noundef %7816, ptr noundef %7819, ptr noundef %7822, i32 noundef %7824) #12
  br label %7843

7826:                                             ; preds = %7804, %7797
  %7827 = load i32, ptr %153, align 4, !tbaa !5
  %7828 = call ptr @__errno_location() #13
  store i32 %7827, ptr %7828, align 4, !tbaa !5
  %7829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7830 = load i32, ptr @test_count, align 4, !tbaa !5
  %7831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7832 = load i32, ptr %7831, align 4, !tbaa !5
  %7833 = call ptr @s2n_strerror(i32 noundef %7832, ptr noundef @.str.4)
  %7834 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7835 = load i32, ptr %7834, align 4, !tbaa !5
  %7836 = call ptr @s2n_strerror_debug(i32 noundef %7835, ptr noundef @.str.4)
  %7837 = call ptr @__errno_location() #13
  %7838 = load i32, ptr %7837, align 4, !tbaa !5
  %7839 = call ptr @strerror(i32 noundef %7838) #12
  %7840 = call ptr @__errno_location() #13
  %7841 = load i32, ptr %7840, align 4, !tbaa !5
  %7842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7829, ptr noundef @.str.5, i32 noundef %7830, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 301, ptr noundef %7833, ptr noundef %7836, ptr noundef %7839, i32 noundef %7841) #12
  br label %7843

7843:                                             ; preds = %7826, %7809
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #12
  br label %7844

7844:                                             ; preds = %7843
  br label %7845

7845:                                             ; preds = %7844
  call void @exit(i32 noundef 1) #14
  unreachable

7846:                                             ; No predecessors!
  br label %7847

7847:                                             ; preds = %7846
  br label %7848

7848:                                             ; preds = %7847, %7790
  br label %7849

7849:                                             ; preds = %7848
  br label %7850

7850:                                             ; preds = %7849
  br label %7851

7851:                                             ; preds = %7850
  %7852 = load i32, ptr @test_count, align 4, !tbaa !5
  %7853 = add nsw i32 %7852, 1
  store i32 %7853, ptr @test_count, align 4, !tbaa !5
  %7854 = load ptr, ptr %143, align 8, !tbaa !9
  %7855 = getelementptr inbounds %struct.s2n_connection, ptr %7854, i32 0, i32 31
  %7856 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7855, i32 0, i32 1
  %7857 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7856, i32 0, i32 0
  %7858 = load ptr, ptr %7857, align 8, !tbaa !15
  %7859 = icmp eq ptr %7858, null
  br i1 %7859, label %7913, label %7860

7860:                                             ; preds = %7851
  br label %7861

7861:                                             ; preds = %7860
  br label %7862

7862:                                             ; preds = %7861
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #12
  %7863 = call ptr @__errno_location() #13
  %7864 = load i32, ptr %7863, align 4, !tbaa !5
  store i32 %7864, ptr %154, align 4, !tbaa !5
  %7865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7866 = call i32 @s2n_print_stacktrace(ptr noundef %7865)
  %7867 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7868 = trunc i8 %7867 to i1
  br i1 %7868, label %7869, label %7891

7869:                                             ; preds = %7862
  %7870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7871 = call i32 @fileno(ptr noundef %7870) #12
  %7872 = call i32 @isatty(i32 noundef %7871) #12
  %7873 = icmp ne i32 %7872, 0
  br i1 %7873, label %7874, label %7891

7874:                                             ; preds = %7869
  %7875 = load i32, ptr %154, align 4, !tbaa !5
  %7876 = call ptr @__errno_location() #13
  store i32 %7875, ptr %7876, align 4, !tbaa !5
  %7877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7878 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %7880, ptr noundef @.str.4)
  %7882 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7883 = load i32, ptr %7882, align 4, !tbaa !5
  %7884 = call ptr @s2n_strerror_debug(i32 noundef %7883, ptr noundef @.str.4)
  %7885 = call ptr @__errno_location() #13
  %7886 = load i32, ptr %7885, align 4, !tbaa !5
  %7887 = call ptr @strerror(i32 noundef %7886) #12
  %7888 = call ptr @__errno_location() #13
  %7889 = load i32, ptr %7888, align 4, !tbaa !5
  %7890 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7877, ptr noundef @.str.2, i32 noundef %7878, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 304, ptr noundef %7881, ptr noundef %7884, ptr noundef %7887, i32 noundef %7889) #12
  br label %7908

7891:                                             ; preds = %7869, %7862
  %7892 = load i32, ptr %154, align 4, !tbaa !5
  %7893 = call ptr @__errno_location() #13
  store i32 %7892, ptr %7893, align 4, !tbaa !5
  %7894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7895 = load i32, ptr @test_count, align 4, !tbaa !5
  %7896 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7897 = load i32, ptr %7896, align 4, !tbaa !5
  %7898 = call ptr @s2n_strerror(i32 noundef %7897, ptr noundef @.str.4)
  %7899 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7900 = load i32, ptr %7899, align 4, !tbaa !5
  %7901 = call ptr @s2n_strerror_debug(i32 noundef %7900, ptr noundef @.str.4)
  %7902 = call ptr @__errno_location() #13
  %7903 = load i32, ptr %7902, align 4, !tbaa !5
  %7904 = call ptr @strerror(i32 noundef %7903) #12
  %7905 = call ptr @__errno_location() #13
  %7906 = load i32, ptr %7905, align 4, !tbaa !5
  %7907 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7894, ptr noundef @.str.5, i32 noundef %7895, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 304, ptr noundef %7898, ptr noundef %7901, ptr noundef %7904, i32 noundef %7906) #12
  br label %7908

7908:                                             ; preds = %7891, %7874
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #12
  br label %7909

7909:                                             ; preds = %7908
  br label %7910

7910:                                             ; preds = %7909
  call void @exit(i32 noundef 1) #14
  unreachable

7911:                                             ; No predecessors!
  br label %7912

7912:                                             ; preds = %7911
  br label %7913

7913:                                             ; preds = %7912, %7851
  br label %7914

7914:                                             ; preds = %7913
  br label %7915

7915:                                             ; preds = %7914
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #12
  %7916 = load ptr, ptr %143, align 8, !tbaa !9
  %7917 = getelementptr inbounds %struct.s2n_connection, ptr %7916, i32 0, i32 31
  %7918 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7917, i32 0, i32 4
  store ptr %7918, ptr %155, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #12
  %7919 = load ptr, ptr %151, align 8, !tbaa !9
  %7920 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %7919, i32 0, i32 3
  %7921 = load ptr, ptr %7920, align 8, !tbaa !48
  %7922 = getelementptr inbounds ptr, ptr %7921, i64 0
  %7923 = load ptr, ptr %7922, align 8, !tbaa !9
  store ptr %7923, ptr %156, align 8, !tbaa !9
  %7924 = load ptr, ptr %156, align 8, !tbaa !9
  %7925 = load ptr, ptr %155, align 8, !tbaa !9
  %7926 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7925, i32 0, i32 0
  store ptr %7924, ptr %7926, align 8, !tbaa !50
  %7927 = load ptr, ptr %156, align 8, !tbaa !9
  %7928 = getelementptr inbounds %struct.s2n_kem_group, ptr %7927, i32 0, i32 3
  %7929 = load ptr, ptr %7928, align 8, !tbaa !51
  %7930 = load ptr, ptr %155, align 8, !tbaa !9
  %7931 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7930, i32 0, i32 1
  %7932 = getelementptr inbounds %struct.s2n_kem_params, ptr %7931, i32 0, i32 0
  store ptr %7929, ptr %7932, align 8, !tbaa !53
  %7933 = load ptr, ptr %156, align 8, !tbaa !9
  %7934 = getelementptr inbounds %struct.s2n_kem_group, ptr %7933, i32 0, i32 2
  %7935 = load ptr, ptr %7934, align 8, !tbaa !54
  %7936 = load ptr, ptr %155, align 8, !tbaa !9
  %7937 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7936, i32 0, i32 2
  %7938 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7937, i32 0, i32 0
  store ptr %7935, ptr %7938, align 8, !tbaa !55
  br label %7939

7939:                                             ; preds = %7915
  %7940 = load i32, ptr @test_count, align 4, !tbaa !5
  %7941 = add nsw i32 %7940, 1
  store i32 %7941, ptr @test_count, align 4, !tbaa !5
  %7942 = load ptr, ptr %143, align 8, !tbaa !9
  %7943 = getelementptr inbounds %struct.s2n_connection, ptr %7942, i32 0, i32 31
  %7944 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7943, i32 0, i32 5
  %7945 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7944, i32 0, i32 0
  %7946 = load ptr, ptr %7945, align 8, !tbaa !56
  %7947 = icmp eq ptr %7946, null
  br i1 %7947, label %8001, label %7948

7948:                                             ; preds = %7939
  br label %7949

7949:                                             ; preds = %7948
  br label %7950

7950:                                             ; preds = %7949
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #12
  %7951 = call ptr @__errno_location() #13
  %7952 = load i32, ptr %7951, align 4, !tbaa !5
  store i32 %7952, ptr %157, align 4, !tbaa !5
  %7953 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7954 = call i32 @s2n_print_stacktrace(ptr noundef %7953)
  %7955 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7956 = trunc i8 %7955 to i1
  br i1 %7956, label %7957, label %7979

7957:                                             ; preds = %7950
  %7958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7959 = call i32 @fileno(ptr noundef %7958) #12
  %7960 = call i32 @isatty(i32 noundef %7959) #12
  %7961 = icmp ne i32 %7960, 0
  br i1 %7961, label %7962, label %7979

7962:                                             ; preds = %7957
  %7963 = load i32, ptr %157, align 4, !tbaa !5
  %7964 = call ptr @__errno_location() #13
  store i32 %7963, ptr %7964, align 4, !tbaa !5
  %7965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7966 = load i32, ptr @test_count, align 4, !tbaa !5
  %7967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7968 = load i32, ptr %7967, align 4, !tbaa !5
  %7969 = call ptr @s2n_strerror(i32 noundef %7968, ptr noundef @.str.4)
  %7970 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7971 = load i32, ptr %7970, align 4, !tbaa !5
  %7972 = call ptr @s2n_strerror_debug(i32 noundef %7971, ptr noundef @.str.4)
  %7973 = call ptr @__errno_location() #13
  %7974 = load i32, ptr %7973, align 4, !tbaa !5
  %7975 = call ptr @strerror(i32 noundef %7974) #12
  %7976 = call ptr @__errno_location() #13
  %7977 = load i32, ptr %7976, align 4, !tbaa !5
  %7978 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7965, ptr noundef @.str.2, i32 noundef %7966, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 312, ptr noundef %7969, ptr noundef %7972, ptr noundef %7975, i32 noundef %7977) #12
  br label %7996

7979:                                             ; preds = %7957, %7950
  %7980 = load i32, ptr %157, align 4, !tbaa !5
  %7981 = call ptr @__errno_location() #13
  store i32 %7980, ptr %7981, align 4, !tbaa !5
  %7982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7983 = load i32, ptr @test_count, align 4, !tbaa !5
  %7984 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7985 = load i32, ptr %7984, align 4, !tbaa !5
  %7986 = call ptr @s2n_strerror(i32 noundef %7985, ptr noundef @.str.4)
  %7987 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7988 = load i32, ptr %7987, align 4, !tbaa !5
  %7989 = call ptr @s2n_strerror_debug(i32 noundef %7988, ptr noundef @.str.4)
  %7990 = call ptr @__errno_location() #13
  %7991 = load i32, ptr %7990, align 4, !tbaa !5
  %7992 = call ptr @strerror(i32 noundef %7991) #12
  %7993 = call ptr @__errno_location() #13
  %7994 = load i32, ptr %7993, align 4, !tbaa !5
  %7995 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7982, ptr noundef @.str.5, i32 noundef %7983, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 312, ptr noundef %7986, ptr noundef %7989, ptr noundef %7992, i32 noundef %7994) #12
  br label %7996

7996:                                             ; preds = %7979, %7962
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #12
  br label %7997

7997:                                             ; preds = %7996
  br label %7998

7998:                                             ; preds = %7997
  call void @exit(i32 noundef 1) #14
  unreachable

7999:                                             ; No predecessors!
  br label %8000

8000:                                             ; preds = %7999
  br label %8001

8001:                                             ; preds = %8000, %7939
  br label %8002

8002:                                             ; preds = %8001
  br label %8003

8003:                                             ; preds = %8002
  br label %8004

8004:                                             ; preds = %8003
  %8005 = load i32, ptr @test_count, align 4, !tbaa !5
  %8006 = add nsw i32 %8005, 1
  store i32 %8006, ptr @test_count, align 4, !tbaa !5
  %8007 = load ptr, ptr %143, align 8, !tbaa !9
  %8008 = getelementptr inbounds %struct.s2n_connection, ptr %8007, i32 0, i32 31
  %8009 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8008, i32 0, i32 5
  %8010 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8009, i32 0, i32 1
  %8011 = getelementptr inbounds %struct.s2n_kem_params, ptr %8010, i32 0, i32 0
  %8012 = load ptr, ptr %8011, align 8, !tbaa !57
  %8013 = icmp eq ptr %8012, null
  br i1 %8013, label %8067, label %8014

8014:                                             ; preds = %8004
  br label %8015

8015:                                             ; preds = %8014
  br label %8016

8016:                                             ; preds = %8015
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #12
  %8017 = call ptr @__errno_location() #13
  %8018 = load i32, ptr %8017, align 4, !tbaa !5
  store i32 %8018, ptr %158, align 4, !tbaa !5
  %8019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8020 = call i32 @s2n_print_stacktrace(ptr noundef %8019)
  %8021 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8022 = trunc i8 %8021 to i1
  br i1 %8022, label %8023, label %8045

8023:                                             ; preds = %8016
  %8024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8025 = call i32 @fileno(ptr noundef %8024) #12
  %8026 = call i32 @isatty(i32 noundef %8025) #12
  %8027 = icmp ne i32 %8026, 0
  br i1 %8027, label %8028, label %8045

8028:                                             ; preds = %8023
  %8029 = load i32, ptr %158, align 4, !tbaa !5
  %8030 = call ptr @__errno_location() #13
  store i32 %8029, ptr %8030, align 4, !tbaa !5
  %8031 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8032 = load i32, ptr @test_count, align 4, !tbaa !5
  %8033 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8034 = load i32, ptr %8033, align 4, !tbaa !5
  %8035 = call ptr @s2n_strerror(i32 noundef %8034, ptr noundef @.str.4)
  %8036 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8037 = load i32, ptr %8036, align 4, !tbaa !5
  %8038 = call ptr @s2n_strerror_debug(i32 noundef %8037, ptr noundef @.str.4)
  %8039 = call ptr @__errno_location() #13
  %8040 = load i32, ptr %8039, align 4, !tbaa !5
  %8041 = call ptr @strerror(i32 noundef %8040) #12
  %8042 = call ptr @__errno_location() #13
  %8043 = load i32, ptr %8042, align 4, !tbaa !5
  %8044 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8031, ptr noundef @.str.2, i32 noundef %8032, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 313, ptr noundef %8035, ptr noundef %8038, ptr noundef %8041, i32 noundef %8043) #12
  br label %8062

8045:                                             ; preds = %8023, %8016
  %8046 = load i32, ptr %158, align 4, !tbaa !5
  %8047 = call ptr @__errno_location() #13
  store i32 %8046, ptr %8047, align 4, !tbaa !5
  %8048 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8049 = load i32, ptr @test_count, align 4, !tbaa !5
  %8050 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8051 = load i32, ptr %8050, align 4, !tbaa !5
  %8052 = call ptr @s2n_strerror(i32 noundef %8051, ptr noundef @.str.4)
  %8053 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8054 = load i32, ptr %8053, align 4, !tbaa !5
  %8055 = call ptr @s2n_strerror_debug(i32 noundef %8054, ptr noundef @.str.4)
  %8056 = call ptr @__errno_location() #13
  %8057 = load i32, ptr %8056, align 4, !tbaa !5
  %8058 = call ptr @strerror(i32 noundef %8057) #12
  %8059 = call ptr @__errno_location() #13
  %8060 = load i32, ptr %8059, align 4, !tbaa !5
  %8061 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8048, ptr noundef @.str.5, i32 noundef %8049, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 313, ptr noundef %8052, ptr noundef %8055, ptr noundef %8058, i32 noundef %8060) #12
  br label %8062

8062:                                             ; preds = %8045, %8028
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #12
  br label %8063

8063:                                             ; preds = %8062
  br label %8064

8064:                                             ; preds = %8063
  call void @exit(i32 noundef 1) #14
  unreachable

8065:                                             ; No predecessors!
  br label %8066

8066:                                             ; preds = %8065
  br label %8067

8067:                                             ; preds = %8066, %8004
  br label %8068

8068:                                             ; preds = %8067
  br label %8069

8069:                                             ; preds = %8068
  br label %8070

8070:                                             ; preds = %8069
  %8071 = load i32, ptr @test_count, align 4, !tbaa !5
  %8072 = add nsw i32 %8071, 1
  store i32 %8072, ptr @test_count, align 4, !tbaa !5
  %8073 = load ptr, ptr %143, align 8, !tbaa !9
  %8074 = getelementptr inbounds %struct.s2n_connection, ptr %8073, i32 0, i32 31
  %8075 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8074, i32 0, i32 5
  %8076 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8075, i32 0, i32 1
  %8077 = getelementptr inbounds %struct.s2n_kem_params, ptr %8076, i32 0, i32 1
  %8078 = getelementptr inbounds %struct.s2n_blob, ptr %8077, i32 0, i32 0
  %8079 = load ptr, ptr %8078, align 8, !tbaa !58
  %8080 = icmp eq ptr %8079, null
  br i1 %8080, label %8134, label %8081

8081:                                             ; preds = %8070
  br label %8082

8082:                                             ; preds = %8081
  br label %8083

8083:                                             ; preds = %8082
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #12
  %8084 = call ptr @__errno_location() #13
  %8085 = load i32, ptr %8084, align 4, !tbaa !5
  store i32 %8085, ptr %159, align 4, !tbaa !5
  %8086 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8087 = call i32 @s2n_print_stacktrace(ptr noundef %8086)
  %8088 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8089 = trunc i8 %8088 to i1
  br i1 %8089, label %8090, label %8112

8090:                                             ; preds = %8083
  %8091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8092 = call i32 @fileno(ptr noundef %8091) #12
  %8093 = call i32 @isatty(i32 noundef %8092) #12
  %8094 = icmp ne i32 %8093, 0
  br i1 %8094, label %8095, label %8112

8095:                                             ; preds = %8090
  %8096 = load i32, ptr %159, align 4, !tbaa !5
  %8097 = call ptr @__errno_location() #13
  store i32 %8096, ptr %8097, align 4, !tbaa !5
  %8098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8099 = load i32, ptr @test_count, align 4, !tbaa !5
  %8100 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8101 = load i32, ptr %8100, align 4, !tbaa !5
  %8102 = call ptr @s2n_strerror(i32 noundef %8101, ptr noundef @.str.4)
  %8103 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8104 = load i32, ptr %8103, align 4, !tbaa !5
  %8105 = call ptr @s2n_strerror_debug(i32 noundef %8104, ptr noundef @.str.4)
  %8106 = call ptr @__errno_location() #13
  %8107 = load i32, ptr %8106, align 4, !tbaa !5
  %8108 = call ptr @strerror(i32 noundef %8107) #12
  %8109 = call ptr @__errno_location() #13
  %8110 = load i32, ptr %8109, align 4, !tbaa !5
  %8111 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8098, ptr noundef @.str.2, i32 noundef %8099, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 314, ptr noundef %8102, ptr noundef %8105, ptr noundef %8108, i32 noundef %8110) #12
  br label %8129

8112:                                             ; preds = %8090, %8083
  %8113 = load i32, ptr %159, align 4, !tbaa !5
  %8114 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %8123 = call ptr @__errno_location() #13
  %8124 = load i32, ptr %8123, align 4, !tbaa !5
  %8125 = call ptr @strerror(i32 noundef %8124) #12
  %8126 = call ptr @__errno_location() #13
  %8127 = load i32, ptr %8126, align 4, !tbaa !5
  %8128 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8115, ptr noundef @.str.5, i32 noundef %8116, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 314, ptr noundef %8119, ptr noundef %8122, ptr noundef %8125, i32 noundef %8127) #12
  br label %8129

8129:                                             ; preds = %8112, %8095
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #12
  br label %8130

8130:                                             ; preds = %8129
  br label %8131

8131:                                             ; preds = %8130
  call void @exit(i32 noundef 1) #14
  unreachable

8132:                                             ; No predecessors!
  br label %8133

8133:                                             ; preds = %8132
  br label %8134

8134:                                             ; preds = %8133, %8070
  br label %8135

8135:                                             ; preds = %8134
  br label %8136

8136:                                             ; preds = %8135
  br label %8137

8137:                                             ; preds = %8136
  %8138 = load i32, ptr @test_count, align 4, !tbaa !5
  %8139 = add nsw i32 %8138, 1
  store i32 %8139, ptr @test_count, align 4, !tbaa !5
  %8140 = load ptr, ptr %143, align 8, !tbaa !9
  %8141 = getelementptr inbounds %struct.s2n_connection, ptr %8140, i32 0, i32 31
  %8142 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8141, i32 0, i32 5
  %8143 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8142, i32 0, i32 2
  %8144 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %8143, i32 0, i32 0
  %8145 = load ptr, ptr %8144, align 8, !tbaa !59
  %8146 = icmp eq ptr %8145, null
  br i1 %8146, label %8200, label %8147

8147:                                             ; preds = %8137
  br label %8148

8148:                                             ; preds = %8147
  br label %8149

8149:                                             ; preds = %8148
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #12
  %8150 = call ptr @__errno_location() #13
  %8151 = load i32, ptr %8150, align 4, !tbaa !5
  store i32 %8151, ptr %160, align 4, !tbaa !5
  %8152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8153 = call i32 @s2n_print_stacktrace(ptr noundef %8152)
  %8154 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8155 = trunc i8 %8154 to i1
  br i1 %8155, label %8156, label %8178

8156:                                             ; preds = %8149
  %8157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8158 = call i32 @fileno(ptr noundef %8157) #12
  %8159 = call i32 @isatty(i32 noundef %8158) #12
  %8160 = icmp ne i32 %8159, 0
  br i1 %8160, label %8161, label %8178

8161:                                             ; preds = %8156
  %8162 = load i32, ptr %160, align 4, !tbaa !5
  %8163 = call ptr @__errno_location() #13
  store i32 %8162, ptr %8163, align 4, !tbaa !5
  %8164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8165 = load i32, ptr @test_count, align 4, !tbaa !5
  %8166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8167 = load i32, ptr %8166, align 4, !tbaa !5
  %8168 = call ptr @s2n_strerror(i32 noundef %8167, ptr noundef @.str.4)
  %8169 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8170 = load i32, ptr %8169, align 4, !tbaa !5
  %8171 = call ptr @s2n_strerror_debug(i32 noundef %8170, ptr noundef @.str.4)
  %8172 = call ptr @__errno_location() #13
  %8173 = load i32, ptr %8172, align 4, !tbaa !5
  %8174 = call ptr @strerror(i32 noundef %8173) #12
  %8175 = call ptr @__errno_location() #13
  %8176 = load i32, ptr %8175, align 4, !tbaa !5
  %8177 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8164, ptr noundef @.str.2, i32 noundef %8165, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 315, ptr noundef %8168, ptr noundef %8171, ptr noundef %8174, i32 noundef %8176) #12
  br label %8195

8178:                                             ; preds = %8156, %8149
  %8179 = load i32, ptr %160, align 4, !tbaa !5
  %8180 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %8189 = call ptr @__errno_location() #13
  %8190 = load i32, ptr %8189, align 4, !tbaa !5
  %8191 = call ptr @strerror(i32 noundef %8190) #12
  %8192 = call ptr @__errno_location() #13
  %8193 = load i32, ptr %8192, align 4, !tbaa !5
  %8194 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8181, ptr noundef @.str.5, i32 noundef %8182, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 315, ptr noundef %8185, ptr noundef %8188, ptr noundef %8191, i32 noundef %8193) #12
  br label %8195

8195:                                             ; preds = %8178, %8161
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #12
  br label %8196

8196:                                             ; preds = %8195
  br label %8197

8197:                                             ; preds = %8196
  call void @exit(i32 noundef 1) #14
  unreachable

8198:                                             ; No predecessors!
  br label %8199

8199:                                             ; preds = %8198
  br label %8200

8200:                                             ; preds = %8199, %8137
  br label %8201

8201:                                             ; preds = %8200
  br label %8202

8202:                                             ; preds = %8201
  br label %8203

8203:                                             ; preds = %8202
  %8204 = load i32, ptr @test_count, align 4, !tbaa !5
  %8205 = add nsw i32 %8204, 1
  store i32 %8205, ptr @test_count, align 4, !tbaa !5
  %8206 = load ptr, ptr %143, align 8, !tbaa !9
  %8207 = getelementptr inbounds %struct.s2n_connection, ptr %8206, i32 0, i32 31
  %8208 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8207, i32 0, i32 5
  %8209 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8208, i32 0, i32 2
  %8210 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %8209, i32 0, i32 1
  %8211 = load ptr, ptr %8210, align 8, !tbaa !60
  %8212 = icmp eq ptr %8211, null
  br i1 %8212, label %8266, label %8213

8213:                                             ; preds = %8203
  br label %8214

8214:                                             ; preds = %8213
  br label %8215

8215:                                             ; preds = %8214
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #12
  %8216 = call ptr @__errno_location() #13
  %8217 = load i32, ptr %8216, align 4, !tbaa !5
  store i32 %8217, ptr %161, align 4, !tbaa !5
  %8218 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8219 = call i32 @s2n_print_stacktrace(ptr noundef %8218)
  %8220 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8221 = trunc i8 %8220 to i1
  br i1 %8221, label %8222, label %8244

8222:                                             ; preds = %8215
  %8223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8224 = call i32 @fileno(ptr noundef %8223) #12
  %8225 = call i32 @isatty(i32 noundef %8224) #12
  %8226 = icmp ne i32 %8225, 0
  br i1 %8226, label %8227, label %8244

8227:                                             ; preds = %8222
  %8228 = load i32, ptr %161, align 4, !tbaa !5
  %8229 = call ptr @__errno_location() #13
  store i32 %8228, ptr %8229, align 4, !tbaa !5
  %8230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8231 = load i32, ptr @test_count, align 4, !tbaa !5
  %8232 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8233 = load i32, ptr %8232, align 4, !tbaa !5
  %8234 = call ptr @s2n_strerror(i32 noundef %8233, ptr noundef @.str.4)
  %8235 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8236 = load i32, ptr %8235, align 4, !tbaa !5
  %8237 = call ptr @s2n_strerror_debug(i32 noundef %8236, ptr noundef @.str.4)
  %8238 = call ptr @__errno_location() #13
  %8239 = load i32, ptr %8238, align 4, !tbaa !5
  %8240 = call ptr @strerror(i32 noundef %8239) #12
  %8241 = call ptr @__errno_location() #13
  %8242 = load i32, ptr %8241, align 4, !tbaa !5
  %8243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8230, ptr noundef @.str.2, i32 noundef %8231, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 316, ptr noundef %8234, ptr noundef %8237, ptr noundef %8240, i32 noundef %8242) #12
  br label %8261

8244:                                             ; preds = %8222, %8215
  %8245 = load i32, ptr %161, align 4, !tbaa !5
  %8246 = call ptr @__errno_location() #13
  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.4)
  %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.4)
  %8255 = call ptr @__errno_location() #13
  %8256 = load i32, ptr %8255, align 4, !tbaa !5
  %8257 = call ptr @strerror(i32 noundef %8256) #12
  %8258 = call ptr @__errno_location() #13
  %8259 = load i32, ptr %8258, align 4, !tbaa !5
  %8260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8247, ptr noundef @.str.5, i32 noundef %8248, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 316, ptr noundef %8251, ptr noundef %8254, ptr noundef %8257, i32 noundef %8259) #12
  br label %8261

8261:                                             ; preds = %8244, %8227
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #12
  br label %8262

8262:                                             ; preds = %8261
  br label %8263

8263:                                             ; preds = %8262
  call void @exit(i32 noundef 1) #14
  unreachable

8264:                                             ; No predecessors!
  br label %8265

8265:                                             ; preds = %8264
  br label %8266

8266:                                             ; preds = %8265, %8203
  br label %8267

8267:                                             ; preds = %8266
  br label %8268

8268:                                             ; preds = %8267
  br label %8269

8269:                                             ; preds = %8268
  %8270 = load i32, ptr @test_count, align 4, !tbaa !5
  %8271 = add nsw i32 %8270, 1
  store i32 %8271, ptr @test_count, align 4, !tbaa !5
  %8272 = load ptr, ptr %143, align 8, !tbaa !9
  %8273 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %8272)
  %8274 = icmp eq i32 %8273, -1
  br i1 %8274, label %8275, label %8328

8275:                                             ; preds = %8269
  br label %8276

8276:                                             ; preds = %8275
  br label %8277

8277:                                             ; preds = %8276
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #12
  %8278 = call ptr @__errno_location() #13
  %8279 = load i32, ptr %8278, align 4, !tbaa !5
  store i32 %8279, ptr %162, align 4, !tbaa !5
  %8280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8281 = call i32 @s2n_print_stacktrace(ptr noundef %8280)
  %8282 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8283 = trunc i8 %8282 to i1
  br i1 %8283, label %8284, label %8306

8284:                                             ; preds = %8277
  %8285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8286 = call i32 @fileno(ptr noundef %8285) #12
  %8287 = call i32 @isatty(i32 noundef %8286) #12
  %8288 = icmp ne i32 %8287, 0
  br i1 %8288, label %8289, label %8306

8289:                                             ; preds = %8284
  %8290 = load i32, ptr %162, align 4, !tbaa !5
  %8291 = call ptr @__errno_location() #13
  store i32 %8290, ptr %8291, align 4, !tbaa !5
  %8292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8293 = load i32, ptr @test_count, align 4, !tbaa !5
  %8294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8295 = load i32, ptr %8294, align 4, !tbaa !5
  %8296 = call ptr @s2n_strerror(i32 noundef %8295, ptr noundef @.str.4)
  %8297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8298 = load i32, ptr %8297, align 4, !tbaa !5
  %8299 = call ptr @s2n_strerror_debug(i32 noundef %8298, ptr noundef @.str.4)
  %8300 = call ptr @__errno_location() #13
  %8301 = load i32, ptr %8300, align 4, !tbaa !5
  %8302 = call ptr @strerror(i32 noundef %8301) #12
  %8303 = call ptr @__errno_location() #13
  %8304 = load i32, ptr %8303, align 4, !tbaa !5
  %8305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8292, ptr noundef @.str.2, i32 noundef %8293, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 318, ptr noundef %8296, ptr noundef %8299, ptr noundef %8302, i32 noundef %8304) #12
  br label %8323

8306:                                             ; preds = %8284, %8277
  %8307 = load i32, ptr %162, align 4, !tbaa !5
  %8308 = call ptr @__errno_location() #13
  store i32 %8307, ptr %8308, align 4, !tbaa !5
  %8309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8310 = load i32, ptr @test_count, align 4, !tbaa !5
  %8311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8312 = load i32, ptr %8311, align 4, !tbaa !5
  %8313 = call ptr @s2n_strerror(i32 noundef %8312, ptr noundef @.str.4)
  %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_debug(i32 noundef %8315, ptr noundef @.str.4)
  %8317 = call ptr @__errno_location() #13
  %8318 = load i32, ptr %8317, align 4, !tbaa !5
  %8319 = call ptr @strerror(i32 noundef %8318) #12
  %8320 = call ptr @__errno_location() #13
  %8321 = load i32, ptr %8320, align 4, !tbaa !5
  %8322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8309, ptr noundef @.str.5, i32 noundef %8310, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 318, ptr noundef %8313, ptr noundef %8316, ptr noundef %8319, i32 noundef %8321) #12
  br label %8323

8323:                                             ; preds = %8306, %8289
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #12
  br label %8324

8324:                                             ; preds = %8323
  br label %8325

8325:                                             ; preds = %8324
  call void @exit(i32 noundef 1) #14
  unreachable

8326:                                             ; No predecessors!
  br label %8327

8327:                                             ; preds = %8326
  br label %8328

8328:                                             ; preds = %8327, %8269
  br label %8329

8329:                                             ; preds = %8328
  br label %8330

8330:                                             ; preds = %8329
  br label %8331

8331:                                             ; preds = %8330
  %8332 = load i32, ptr @test_count, align 4, !tbaa !5
  %8333 = add nsw i32 %8332, 1
  store i32 %8333, ptr @test_count, align 4, !tbaa !5
  %8334 = load ptr, ptr %155, align 8, !tbaa !9
  %8335 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8334, i32 0, i32 0
  %8336 = load ptr, ptr %8335, align 8, !tbaa !50
  %8337 = load ptr, ptr %156, align 8, !tbaa !9
  %8338 = icmp eq ptr %8336, %8337
  br i1 %8338, label %8392, label %8339

8339:                                             ; preds = %8331
  br label %8340

8340:                                             ; preds = %8339
  br label %8341

8341:                                             ; preds = %8340
  call void @llvm.lifetime.start.p0(i64 4, ptr %163) #12
  %8342 = call ptr @__errno_location() #13
  %8343 = load i32, ptr %8342, align 4, !tbaa !5
  store i32 %8343, ptr %163, align 4, !tbaa !5
  %8344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8345 = call i32 @s2n_print_stacktrace(ptr noundef %8344)
  %8346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8347 = trunc i8 %8346 to i1
  br i1 %8347, label %8348, label %8370

8348:                                             ; preds = %8341
  %8349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8350 = call i32 @fileno(ptr noundef %8349) #12
  %8351 = call i32 @isatty(i32 noundef %8350) #12
  %8352 = icmp ne i32 %8351, 0
  br i1 %8352, label %8353, label %8370

8353:                                             ; preds = %8348
  %8354 = load i32, ptr %163, align 4, !tbaa !5
  %8355 = call ptr @__errno_location() #13
  store i32 %8354, ptr %8355, align 4, !tbaa !5
  %8356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8357 = load i32, ptr @test_count, align 4, !tbaa !5
  %8358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8359 = load i32, ptr %8358, align 4, !tbaa !5
  %8360 = call ptr @s2n_strerror(i32 noundef %8359, ptr noundef @.str.4)
  %8361 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8362 = load i32, ptr %8361, align 4, !tbaa !5
  %8363 = call ptr @s2n_strerror_debug(i32 noundef %8362, ptr noundef @.str.4)
  %8364 = call ptr @__errno_location() #13
  %8365 = load i32, ptr %8364, align 4, !tbaa !5
  %8366 = call ptr @strerror(i32 noundef %8365) #12
  %8367 = call ptr @__errno_location() #13
  %8368 = load i32, ptr %8367, align 4, !tbaa !5
  %8369 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8356, ptr noundef @.str.2, i32 noundef %8357, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 321, ptr noundef %8360, ptr noundef %8363, ptr noundef %8366, i32 noundef %8368) #12
  br label %8387

8370:                                             ; preds = %8348, %8341
  %8371 = load i32, ptr %163, align 4, !tbaa !5
  %8372 = call ptr @__errno_location() #13
  store i32 %8371, ptr %8372, align 4, !tbaa !5
  %8373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8374 = load i32, ptr @test_count, align 4, !tbaa !5
  %8375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8376 = load i32, ptr %8375, align 4, !tbaa !5
  %8377 = call ptr @s2n_strerror(i32 noundef %8376, ptr noundef @.str.4)
  %8378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8379 = load i32, ptr %8378, align 4, !tbaa !5
  %8380 = call ptr @s2n_strerror_debug(i32 noundef %8379, ptr noundef @.str.4)
  %8381 = call ptr @__errno_location() #13
  %8382 = load i32, ptr %8381, align 4, !tbaa !5
  %8383 = call ptr @strerror(i32 noundef %8382) #12
  %8384 = call ptr @__errno_location() #13
  %8385 = load i32, ptr %8384, align 4, !tbaa !5
  %8386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8373, ptr noundef @.str.5, i32 noundef %8374, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 321, ptr noundef %8377, ptr noundef %8380, ptr noundef %8383, i32 noundef %8385) #12
  br label %8387

8387:                                             ; preds = %8370, %8353
  call void @llvm.lifetime.end.p0(i64 4, ptr %163) #12
  br label %8388

8388:                                             ; preds = %8387
  br label %8389

8389:                                             ; preds = %8388
  call void @exit(i32 noundef 1) #14
  unreachable

8390:                                             ; No predecessors!
  br label %8391

8391:                                             ; preds = %8390
  br label %8392

8392:                                             ; preds = %8391, %8331
  br label %8393

8393:                                             ; preds = %8392
  br label %8394

8394:                                             ; preds = %8393
  br label %8395

8395:                                             ; preds = %8394
  %8396 = load i32, ptr @test_count, align 4, !tbaa !5
  %8397 = add nsw i32 %8396, 1
  store i32 %8397, ptr @test_count, align 4, !tbaa !5
  %8398 = load ptr, ptr %155, align 8, !tbaa !9
  %8399 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8398, i32 0, i32 1
  %8400 = getelementptr inbounds %struct.s2n_kem_params, ptr %8399, i32 0, i32 0
  %8401 = load ptr, ptr %8400, align 8, !tbaa !53
  %8402 = load ptr, ptr %156, align 8, !tbaa !9
  %8403 = getelementptr inbounds %struct.s2n_kem_group, ptr %8402, i32 0, i32 3
  %8404 = load ptr, ptr %8403, align 8, !tbaa !51
  %8405 = icmp eq ptr %8401, %8404
  br i1 %8405, label %8459, label %8406

8406:                                             ; preds = %8395
  br label %8407

8407:                                             ; preds = %8406
  br label %8408

8408:                                             ; preds = %8407
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #12
  %8409 = call ptr @__errno_location() #13
  %8410 = load i32, ptr %8409, align 4, !tbaa !5
  store i32 %8410, ptr %164, align 4, !tbaa !5
  %8411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8412 = call i32 @s2n_print_stacktrace(ptr noundef %8411)
  %8413 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8414 = trunc i8 %8413 to i1
  br i1 %8414, label %8415, label %8437

8415:                                             ; preds = %8408
  %8416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8417 = call i32 @fileno(ptr noundef %8416) #12
  %8418 = call i32 @isatty(i32 noundef %8417) #12
  %8419 = icmp ne i32 %8418, 0
  br i1 %8419, label %8420, label %8437

8420:                                             ; preds = %8415
  %8421 = load i32, ptr %164, align 4, !tbaa !5
  %8422 = call ptr @__errno_location() #13
  store i32 %8421, ptr %8422, align 4, !tbaa !5
  %8423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8424 = load i32, ptr @test_count, align 4, !tbaa !5
  %8425 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8426 = load i32, ptr %8425, align 4, !tbaa !5
  %8427 = call ptr @s2n_strerror(i32 noundef %8426, ptr noundef @.str.4)
  %8428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8429 = load i32, ptr %8428, align 4, !tbaa !5
  %8430 = call ptr @s2n_strerror_debug(i32 noundef %8429, ptr noundef @.str.4)
  %8431 = call ptr @__errno_location() #13
  %8432 = load i32, ptr %8431, align 4, !tbaa !5
  %8433 = call ptr @strerror(i32 noundef %8432) #12
  %8434 = call ptr @__errno_location() #13
  %8435 = load i32, ptr %8434, align 4, !tbaa !5
  %8436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8423, ptr noundef @.str.2, i32 noundef %8424, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 322, ptr noundef %8427, ptr noundef %8430, ptr noundef %8433, i32 noundef %8435) #12
  br label %8454

8437:                                             ; preds = %8415, %8408
  %8438 = load i32, ptr %164, align 4, !tbaa !5
  %8439 = call ptr @__errno_location() #13
  store i32 %8438, ptr %8439, align 4, !tbaa !5
  %8440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8441 = load i32, ptr @test_count, align 4, !tbaa !5
  %8442 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8443 = load i32, ptr %8442, align 4, !tbaa !5
  %8444 = call ptr @s2n_strerror(i32 noundef %8443, ptr noundef @.str.4)
  %8445 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8446 = load i32, ptr %8445, align 4, !tbaa !5
  %8447 = call ptr @s2n_strerror_debug(i32 noundef %8446, ptr noundef @.str.4)
  %8448 = call ptr @__errno_location() #13
  %8449 = load i32, ptr %8448, align 4, !tbaa !5
  %8450 = call ptr @strerror(i32 noundef %8449) #12
  %8451 = call ptr @__errno_location() #13
  %8452 = load i32, ptr %8451, align 4, !tbaa !5
  %8453 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8440, ptr noundef @.str.5, i32 noundef %8441, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 322, ptr noundef %8444, ptr noundef %8447, ptr noundef %8450, i32 noundef %8452) #12
  br label %8454

8454:                                             ; preds = %8437, %8420
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #12
  br label %8455

8455:                                             ; preds = %8454
  br label %8456

8456:                                             ; preds = %8455
  call void @exit(i32 noundef 1) #14
  unreachable

8457:                                             ; No predecessors!
  br label %8458

8458:                                             ; preds = %8457
  br label %8459

8459:                                             ; preds = %8458, %8395
  br label %8460

8460:                                             ; preds = %8459
  br label %8461

8461:                                             ; preds = %8460
  br label %8462

8462:                                             ; preds = %8461
  %8463 = load i32, ptr @test_count, align 4, !tbaa !5
  %8464 = add nsw i32 %8463, 1
  store i32 %8464, ptr @test_count, align 4, !tbaa !5
  %8465 = load ptr, ptr %155, align 8, !tbaa !9
  %8466 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8465, i32 0, i32 2
  %8467 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %8466, i32 0, i32 0
  %8468 = load ptr, ptr %8467, align 8, !tbaa !55
  %8469 = load ptr, ptr %156, align 8, !tbaa !9
  %8470 = getelementptr inbounds %struct.s2n_kem_group, ptr %8469, i32 0, i32 2
  %8471 = load ptr, ptr %8470, align 8, !tbaa !54
  %8472 = icmp eq ptr %8468, %8471
  br i1 %8472, label %8526, label %8473

8473:                                             ; preds = %8462
  br label %8474

8474:                                             ; preds = %8473
  br label %8475

8475:                                             ; preds = %8474
  call void @llvm.lifetime.start.p0(i64 4, ptr %165) #12
  %8476 = call ptr @__errno_location() #13
  %8477 = load i32, ptr %8476, align 4, !tbaa !5
  store i32 %8477, ptr %165, align 4, !tbaa !5
  %8478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8479 = call i32 @s2n_print_stacktrace(ptr noundef %8478)
  %8480 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8481 = trunc i8 %8480 to i1
  br i1 %8481, label %8482, label %8504

8482:                                             ; preds = %8475
  %8483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8484 = call i32 @fileno(ptr noundef %8483) #12
  %8485 = call i32 @isatty(i32 noundef %8484) #12
  %8486 = icmp ne i32 %8485, 0
  br i1 %8486, label %8487, label %8504

8487:                                             ; preds = %8482
  %8488 = load i32, ptr %165, align 4, !tbaa !5
  %8489 = call ptr @__errno_location() #13
  store i32 %8488, ptr %8489, align 4, !tbaa !5
  %8490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8491 = load i32, ptr @test_count, align 4, !tbaa !5
  %8492 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8493 = load i32, ptr %8492, align 4, !tbaa !5
  %8494 = call ptr @s2n_strerror(i32 noundef %8493, ptr noundef @.str.4)
  %8495 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8496 = load i32, ptr %8495, align 4, !tbaa !5
  %8497 = call ptr @s2n_strerror_debug(i32 noundef %8496, ptr noundef @.str.4)
  %8498 = call ptr @__errno_location() #13
  %8499 = load i32, ptr %8498, align 4, !tbaa !5
  %8500 = call ptr @strerror(i32 noundef %8499) #12
  %8501 = call ptr @__errno_location() #13
  %8502 = load i32, ptr %8501, align 4, !tbaa !5
  %8503 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8490, ptr noundef @.str.2, i32 noundef %8491, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 323, ptr noundef %8494, ptr noundef %8497, ptr noundef %8500, i32 noundef %8502) #12
  br label %8521

8504:                                             ; preds = %8482, %8475
  %8505 = load i32, ptr %165, align 4, !tbaa !5
  %8506 = call ptr @__errno_location() #13
  store i32 %8505, ptr %8506, align 4, !tbaa !5
  %8507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8508 = load i32, ptr @test_count, align 4, !tbaa !5
  %8509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8510 = load i32, ptr %8509, align 4, !tbaa !5
  %8511 = call ptr @s2n_strerror(i32 noundef %8510, ptr noundef @.str.4)
  %8512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8513 = load i32, ptr %8512, align 4, !tbaa !5
  %8514 = call ptr @s2n_strerror_debug(i32 noundef %8513, ptr noundef @.str.4)
  %8515 = call ptr @__errno_location() #13
  %8516 = load i32, ptr %8515, align 4, !tbaa !5
  %8517 = call ptr @strerror(i32 noundef %8516) #12
  %8518 = call ptr @__errno_location() #13
  %8519 = load i32, ptr %8518, align 4, !tbaa !5
  %8520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8507, ptr noundef @.str.5, i32 noundef %8508, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 323, ptr noundef %8511, ptr noundef %8514, ptr noundef %8517, i32 noundef %8519) #12
  br label %8521

8521:                                             ; preds = %8504, %8487
  call void @llvm.lifetime.end.p0(i64 4, ptr %165) #12
  br label %8522

8522:                                             ; preds = %8521
  br label %8523

8523:                                             ; preds = %8522
  call void @exit(i32 noundef 1) #14
  unreachable

8524:                                             ; No predecessors!
  br label %8525

8525:                                             ; preds = %8524
  br label %8526

8526:                                             ; preds = %8525, %8462
  br label %8527

8527:                                             ; preds = %8526
  br label %8528

8528:                                             ; preds = %8527
  br label %8529

8529:                                             ; preds = %8528
  %8530 = load i32, ptr @test_count, align 4, !tbaa !5
  %8531 = add nsw i32 %8530, 1
  store i32 %8531, ptr @test_count, align 4, !tbaa !5
  %8532 = load ptr, ptr %143, align 8, !tbaa !9
  %8533 = getelementptr inbounds %struct.s2n_connection, ptr %8532, i32 0, i32 31
  %8534 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8533, i32 0, i32 5
  %8535 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8534, i32 0, i32 0
  %8536 = load ptr, ptr %8535, align 8, !tbaa !56
  %8537 = icmp eq ptr %8536, null
  br i1 %8537, label %8591, label %8538

8538:                                             ; preds = %8529
  br label %8539

8539:                                             ; preds = %8538
  br label %8540

8540:                                             ; preds = %8539
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #12
  %8541 = call ptr @__errno_location() #13
  %8542 = load i32, ptr %8541, align 4, !tbaa !5
  store i32 %8542, ptr %166, align 4, !tbaa !5
  %8543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8544 = call i32 @s2n_print_stacktrace(ptr noundef %8543)
  %8545 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8546 = trunc i8 %8545 to i1
  br i1 %8546, label %8547, label %8569

8547:                                             ; preds = %8540
  %8548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8549 = call i32 @fileno(ptr noundef %8548) #12
  %8550 = call i32 @isatty(i32 noundef %8549) #12
  %8551 = icmp ne i32 %8550, 0
  br i1 %8551, label %8552, label %8569

8552:                                             ; preds = %8547
  %8553 = load i32, ptr %166, align 4, !tbaa !5
  %8554 = call ptr @__errno_location() #13
  store i32 %8553, ptr %8554, align 4, !tbaa !5
  %8555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8556 = load i32, ptr @test_count, align 4, !tbaa !5
  %8557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8558 = load i32, ptr %8557, align 4, !tbaa !5
  %8559 = call ptr @s2n_strerror(i32 noundef %8558, ptr noundef @.str.4)
  %8560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8561 = load i32, ptr %8560, align 4, !tbaa !5
  %8562 = call ptr @s2n_strerror_debug(i32 noundef %8561, ptr noundef @.str.4)
  %8563 = call ptr @__errno_location() #13
  %8564 = load i32, ptr %8563, align 4, !tbaa !5
  %8565 = call ptr @strerror(i32 noundef %8564) #12
  %8566 = call ptr @__errno_location() #13
  %8567 = load i32, ptr %8566, align 4, !tbaa !5
  %8568 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8555, ptr noundef @.str.2, i32 noundef %8556, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 324, ptr noundef %8559, ptr noundef %8562, ptr noundef %8565, i32 noundef %8567) #12
  br label %8586

8569:                                             ; preds = %8547, %8540
  %8570 = load i32, ptr %166, align 4, !tbaa !5
  %8571 = call ptr @__errno_location() #13
  store i32 %8570, ptr %8571, align 4, !tbaa !5
  %8572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8573 = load i32, ptr @test_count, align 4, !tbaa !5
  %8574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8575 = load i32, ptr %8574, align 4, !tbaa !5
  %8576 = call ptr @s2n_strerror(i32 noundef %8575, ptr noundef @.str.4)
  %8577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8578 = load i32, ptr %8577, align 4, !tbaa !5
  %8579 = call ptr @s2n_strerror_debug(i32 noundef %8578, ptr noundef @.str.4)
  %8580 = call ptr @__errno_location() #13
  %8581 = load i32, ptr %8580, align 4, !tbaa !5
  %8582 = call ptr @strerror(i32 noundef %8581) #12
  %8583 = call ptr @__errno_location() #13
  %8584 = load i32, ptr %8583, align 4, !tbaa !5
  %8585 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8572, ptr noundef @.str.5, i32 noundef %8573, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 324, ptr noundef %8576, ptr noundef %8579, ptr noundef %8582, i32 noundef %8584) #12
  br label %8586

8586:                                             ; preds = %8569, %8552
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #12
  br label %8587

8587:                                             ; preds = %8586
  br label %8588

8588:                                             ; preds = %8587
  call void @exit(i32 noundef 1) #14
  unreachable

8589:                                             ; No predecessors!
  br label %8590

8590:                                             ; preds = %8589
  br label %8591

8591:                                             ; preds = %8590, %8529
  br label %8592

8592:                                             ; preds = %8591
  br label %8593

8593:                                             ; preds = %8592
  br label %8594

8594:                                             ; preds = %8593
  %8595 = load i32, ptr @test_count, align 4, !tbaa !5
  %8596 = add nsw i32 %8595, 1
  store i32 %8596, ptr @test_count, align 4, !tbaa !5
  %8597 = load ptr, ptr %143, align 8, !tbaa !9
  %8598 = getelementptr inbounds %struct.s2n_connection, ptr %8597, i32 0, i32 31
  %8599 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8598, i32 0, i32 1
  %8600 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %8599, i32 0, i32 0
  %8601 = load ptr, ptr %8600, align 8, !tbaa !15
  %8602 = icmp eq ptr %8601, null
  br i1 %8602, label %8656, label %8603

8603:                                             ; preds = %8594
  br label %8604

8604:                                             ; preds = %8603
  br label %8605

8605:                                             ; preds = %8604
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #12
  %8606 = call ptr @__errno_location() #13
  %8607 = load i32, ptr %8606, align 4, !tbaa !5
  store i32 %8607, ptr %167, align 4, !tbaa !5
  %8608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8609 = call i32 @s2n_print_stacktrace(ptr noundef %8608)
  %8610 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8611 = trunc i8 %8610 to i1
  br i1 %8611, label %8612, label %8634

8612:                                             ; preds = %8605
  %8613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8614 = call i32 @fileno(ptr noundef %8613) #12
  %8615 = call i32 @isatty(i32 noundef %8614) #12
  %8616 = icmp ne i32 %8615, 0
  br i1 %8616, label %8617, label %8634

8617:                                             ; preds = %8612
  %8618 = load i32, ptr %167, align 4, !tbaa !5
  %8619 = call ptr @__errno_location() #13
  store i32 %8618, ptr %8619, align 4, !tbaa !5
  %8620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8621 = load i32, ptr @test_count, align 4, !tbaa !5
  %8622 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8623 = load i32, ptr %8622, align 4, !tbaa !5
  %8624 = call ptr @s2n_strerror(i32 noundef %8623, ptr noundef @.str.4)
  %8625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8626 = load i32, ptr %8625, align 4, !tbaa !5
  %8627 = call ptr @s2n_strerror_debug(i32 noundef %8626, ptr noundef @.str.4)
  %8628 = call ptr @__errno_location() #13
  %8629 = load i32, ptr %8628, align 4, !tbaa !5
  %8630 = call ptr @strerror(i32 noundef %8629) #12
  %8631 = call ptr @__errno_location() #13
  %8632 = load i32, ptr %8631, align 4, !tbaa !5
  %8633 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8620, ptr noundef @.str.2, i32 noundef %8621, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 325, ptr noundef %8624, ptr noundef %8627, ptr noundef %8630, i32 noundef %8632) #12
  br label %8651

8634:                                             ; preds = %8612, %8605
  %8635 = load i32, ptr %167, align 4, !tbaa !5
  %8636 = call ptr @__errno_location() #13
  store i32 %8635, ptr %8636, align 4, !tbaa !5
  %8637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8638 = load i32, ptr @test_count, align 4, !tbaa !5
  %8639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8640 = load i32, ptr %8639, align 4, !tbaa !5
  %8641 = call ptr @s2n_strerror(i32 noundef %8640, ptr noundef @.str.4)
  %8642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8643 = load i32, ptr %8642, align 4, !tbaa !5
  %8644 = call ptr @s2n_strerror_debug(i32 noundef %8643, ptr noundef @.str.4)
  %8645 = call ptr @__errno_location() #13
  %8646 = load i32, ptr %8645, align 4, !tbaa !5
  %8647 = call ptr @strerror(i32 noundef %8646) #12
  %8648 = call ptr @__errno_location() #13
  %8649 = load i32, ptr %8648, align 4, !tbaa !5
  %8650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8637, ptr noundef @.str.5, i32 noundef %8638, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 325, ptr noundef %8641, ptr noundef %8644, ptr noundef %8647, i32 noundef %8649) #12
  br label %8651

8651:                                             ; preds = %8634, %8617
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #12
  br label %8652

8652:                                             ; preds = %8651
  br label %8653

8653:                                             ; preds = %8652
  call void @exit(i32 noundef 1) #14
  unreachable

8654:                                             ; No predecessors!
  br label %8655

8655:                                             ; preds = %8654
  br label %8656

8656:                                             ; preds = %8655, %8594
  br label %8657

8657:                                             ; preds = %8656
  br label %8658

8658:                                             ; preds = %8657
  br label %8659

8659:                                             ; preds = %8658
  %8660 = load i32, ptr @test_count, align 4, !tbaa !5
  %8661 = add nsw i32 %8660, 1
  store i32 %8661, ptr @test_count, align 4, !tbaa !5
  %8662 = load ptr, ptr %143, align 8, !tbaa !9
  %8663 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %8662)
  br i1 %8663, label %8717, label %8664

8664:                                             ; preds = %8659
  br label %8665

8665:                                             ; preds = %8664
  br label %8666

8666:                                             ; preds = %8665
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #12
  %8667 = call ptr @__errno_location() #13
  %8668 = load i32, ptr %8667, align 4, !tbaa !5
  store i32 %8668, ptr %168, align 4, !tbaa !5
  %8669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8670 = call i32 @s2n_print_stacktrace(ptr noundef %8669)
  %8671 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8672 = trunc i8 %8671 to i1
  br i1 %8672, label %8673, label %8695

8673:                                             ; preds = %8666
  %8674 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8675 = call i32 @fileno(ptr noundef %8674) #12
  %8676 = call i32 @isatty(i32 noundef %8675) #12
  %8677 = icmp ne i32 %8676, 0
  br i1 %8677, label %8678, label %8695

8678:                                             ; preds = %8673
  %8679 = load i32, ptr %168, align 4, !tbaa !5
  %8680 = call ptr @__errno_location() #13
  store i32 %8679, ptr %8680, align 4, !tbaa !5
  %8681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8682 = load i32, ptr @test_count, align 4, !tbaa !5
  %8683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8684 = load i32, ptr %8683, align 4, !tbaa !5
  %8685 = call ptr @s2n_strerror(i32 noundef %8684, ptr noundef @.str.4)
  %8686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8687 = load i32, ptr %8686, align 4, !tbaa !5
  %8688 = call ptr @s2n_strerror_debug(i32 noundef %8687, ptr noundef @.str.4)
  %8689 = call ptr @__errno_location() #13
  %8690 = load i32, ptr %8689, align 4, !tbaa !5
  %8691 = call ptr @strerror(i32 noundef %8690) #12
  %8692 = call ptr @__errno_location() #13
  %8693 = load i32, ptr %8692, align 4, !tbaa !5
  %8694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8681, ptr noundef @.str.2, i32 noundef %8682, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 326, ptr noundef %8685, ptr noundef %8688, ptr noundef %8691, i32 noundef %8693) #12
  br label %8712

8695:                                             ; preds = %8673, %8666
  %8696 = load i32, ptr %168, align 4, !tbaa !5
  %8697 = call ptr @__errno_location() #13
  store i32 %8696, ptr %8697, align 4, !tbaa !5
  %8698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8699 = load i32, ptr @test_count, align 4, !tbaa !5
  %8700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8701 = load i32, ptr %8700, align 4, !tbaa !5
  %8702 = call ptr @s2n_strerror(i32 noundef %8701, ptr noundef @.str.4)
  %8703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8704 = load i32, ptr %8703, align 4, !tbaa !5
  %8705 = call ptr @s2n_strerror_debug(i32 noundef %8704, ptr noundef @.str.4)
  %8706 = call ptr @__errno_location() #13
  %8707 = load i32, ptr %8706, align 4, !tbaa !5
  %8708 = call ptr @strerror(i32 noundef %8707) #12
  %8709 = call ptr @__errno_location() #13
  %8710 = load i32, ptr %8709, align 4, !tbaa !5
  %8711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8698, ptr noundef @.str.5, i32 noundef %8699, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 326, ptr noundef %8702, ptr noundef %8705, ptr noundef %8708, i32 noundef %8710) #12
  br label %8712

8712:                                             ; preds = %8695, %8678
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #12
  br label %8713

8713:                                             ; preds = %8712
  br label %8714

8714:                                             ; preds = %8713
  call void @exit(i32 noundef 1) #14
  unreachable

8715:                                             ; No predecessors!
  br label %8716

8716:                                             ; preds = %8715
  br label %8717

8717:                                             ; preds = %8716, %8659
  br label %8718

8718:                                             ; preds = %8717
  br label %8719

8719:                                             ; preds = %8718
  br label %8720

8720:                                             ; preds = %8719
  %8721 = load i32, ptr @test_count, align 4, !tbaa !5
  %8722 = add nsw i32 %8721, 1
  store i32 %8722, ptr @test_count, align 4, !tbaa !5
  %8723 = load ptr, ptr %143, align 8, !tbaa !9
  %8724 = call i32 @s2n_connection_free(ptr noundef %8723)
  %8725 = icmp eq i32 %8724, -1
  br i1 %8725, label %8726, label %8779

8726:                                             ; preds = %8720
  br label %8727

8727:                                             ; preds = %8726
  br label %8728

8728:                                             ; preds = %8727
  call void @llvm.lifetime.start.p0(i64 4, ptr %169) #12
  %8729 = call ptr @__errno_location() #13
  %8730 = load i32, ptr %8729, align 4, !tbaa !5
  store i32 %8730, ptr %169, align 4, !tbaa !5
  %8731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8732 = call i32 @s2n_print_stacktrace(ptr noundef %8731)
  %8733 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8734 = trunc i8 %8733 to i1
  br i1 %8734, label %8735, label %8757

8735:                                             ; preds = %8728
  %8736 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8737 = call i32 @fileno(ptr noundef %8736) #12
  %8738 = call i32 @isatty(i32 noundef %8737) #12
  %8739 = icmp ne i32 %8738, 0
  br i1 %8739, label %8740, label %8757

8740:                                             ; preds = %8735
  %8741 = load i32, ptr %169, align 4, !tbaa !5
  %8742 = call ptr @__errno_location() #13
  store i32 %8741, ptr %8742, align 4, !tbaa !5
  %8743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8744 = load i32, ptr @test_count, align 4, !tbaa !5
  %8745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8746 = load i32, ptr %8745, align 4, !tbaa !5
  %8747 = call ptr @s2n_strerror(i32 noundef %8746, ptr noundef @.str.4)
  %8748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8749 = load i32, ptr %8748, align 4, !tbaa !5
  %8750 = call ptr @s2n_strerror_debug(i32 noundef %8749, ptr noundef @.str.4)
  %8751 = call ptr @__errno_location() #13
  %8752 = load i32, ptr %8751, align 4, !tbaa !5
  %8753 = call ptr @strerror(i32 noundef %8752) #12
  %8754 = call ptr @__errno_location() #13
  %8755 = load i32, ptr %8754, align 4, !tbaa !5
  %8756 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8743, ptr noundef @.str.2, i32 noundef %8744, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 328, ptr noundef %8747, ptr noundef %8750, ptr noundef %8753, i32 noundef %8755) #12
  br label %8774

8757:                                             ; preds = %8735, %8728
  %8758 = load i32, ptr %169, align 4, !tbaa !5
  %8759 = call ptr @__errno_location() #13
  store i32 %8758, ptr %8759, align 4, !tbaa !5
  %8760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8761 = load i32, ptr @test_count, align 4, !tbaa !5
  %8762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8763 = load i32, ptr %8762, align 4, !tbaa !5
  %8764 = call ptr @s2n_strerror(i32 noundef %8763, ptr noundef @.str.4)
  %8765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8766 = load i32, ptr %8765, align 4, !tbaa !5
  %8767 = call ptr @s2n_strerror_debug(i32 noundef %8766, ptr noundef @.str.4)
  %8768 = call ptr @__errno_location() #13
  %8769 = load i32, ptr %8768, align 4, !tbaa !5
  %8770 = call ptr @strerror(i32 noundef %8769) #12
  %8771 = call ptr @__errno_location() #13
  %8772 = load i32, ptr %8771, align 4, !tbaa !5
  %8773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8760, ptr noundef @.str.5, i32 noundef %8761, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 328, ptr noundef %8764, ptr noundef %8767, ptr noundef %8770, i32 noundef %8772) #12
  br label %8774

8774:                                             ; preds = %8757, %8740
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #12
  br label %8775

8775:                                             ; preds = %8774
  br label %8776

8776:                                             ; preds = %8775
  call void @exit(i32 noundef 1) #14
  unreachable

8777:                                             ; No predecessors!
  br label %8778

8778:                                             ; preds = %8777
  br label %8779

8779:                                             ; preds = %8778, %8720
  br label %8780

8780:                                             ; preds = %8779
  br label %8781

8781:                                             ; preds = %8780
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #12
  store ptr null, ptr %170, align 8, !tbaa !9
  br label %8782

8782:                                             ; preds = %8781
  %8783 = load i32, ptr @test_count, align 4, !tbaa !5
  %8784 = add nsw i32 %8783, 1
  store i32 %8784, ptr @test_count, align 4, !tbaa !5
  %8785 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %8785, ptr %170, align 8, !tbaa !9
  %8786 = icmp eq ptr %8785, null
  br i1 %8786, label %8787, label %8840

8787:                                             ; preds = %8782
  br label %8788

8788:                                             ; preds = %8787
  br label %8789

8789:                                             ; preds = %8788
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #12
  %8790 = call ptr @__errno_location() #13
  %8791 = load i32, ptr %8790, align 4, !tbaa !5
  store i32 %8791, ptr %171, align 4, !tbaa !5
  %8792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8793 = call i32 @s2n_print_stacktrace(ptr noundef %8792)
  %8794 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8795 = trunc i8 %8794 to i1
  br i1 %8795, label %8796, label %8818

8796:                                             ; preds = %8789
  %8797 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8798 = call i32 @fileno(ptr noundef %8797) #12
  %8799 = call i32 @isatty(i32 noundef %8798) #12
  %8800 = icmp ne i32 %8799, 0
  br i1 %8800, label %8801, label %8818

8801:                                             ; preds = %8796
  %8802 = load i32, ptr %171, align 4, !tbaa !5
  %8803 = call ptr @__errno_location() #13
  store i32 %8802, ptr %8803, align 4, !tbaa !5
  %8804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8805 = load i32, ptr @test_count, align 4, !tbaa !5
  %8806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8807 = load i32, ptr %8806, align 4, !tbaa !5
  %8808 = call ptr @s2n_strerror(i32 noundef %8807, ptr noundef @.str.4)
  %8809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8810 = load i32, ptr %8809, align 4, !tbaa !5
  %8811 = call ptr @s2n_strerror_debug(i32 noundef %8810, ptr noundef @.str.4)
  %8812 = call ptr @__errno_location() #13
  %8813 = load i32, ptr %8812, align 4, !tbaa !5
  %8814 = call ptr @strerror(i32 noundef %8813) #12
  %8815 = call ptr @__errno_location() #13
  %8816 = load i32, ptr %8815, align 4, !tbaa !5
  %8817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8804, ptr noundef @.str.2, i32 noundef %8805, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 335, ptr noundef %8808, ptr noundef %8811, ptr noundef %8814, i32 noundef %8816) #12
  br label %8835

8818:                                             ; preds = %8796, %8789
  %8819 = load i32, ptr %171, align 4, !tbaa !5
  %8820 = call ptr @__errno_location() #13
  store i32 %8819, ptr %8820, align 4, !tbaa !5
  %8821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8822 = load i32, ptr @test_count, align 4, !tbaa !5
  %8823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8824 = load i32, ptr %8823, align 4, !tbaa !5
  %8825 = call ptr @s2n_strerror(i32 noundef %8824, ptr noundef @.str.4)
  %8826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8827 = load i32, ptr %8826, align 4, !tbaa !5
  %8828 = call ptr @s2n_strerror_debug(i32 noundef %8827, ptr noundef @.str.4)
  %8829 = call ptr @__errno_location() #13
  %8830 = load i32, ptr %8829, align 4, !tbaa !5
  %8831 = call ptr @strerror(i32 noundef %8830) #12
  %8832 = call ptr @__errno_location() #13
  %8833 = load i32, ptr %8832, align 4, !tbaa !5
  %8834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8821, ptr noundef @.str.5, i32 noundef %8822, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 335, ptr noundef %8825, ptr noundef %8828, ptr noundef %8831, i32 noundef %8833) #12
  br label %8835

8835:                                             ; preds = %8818, %8801
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #12
  br label %8836

8836:                                             ; preds = %8835
  br label %8837

8837:                                             ; preds = %8836
  call void @exit(i32 noundef 1) #14
  unreachable

8838:                                             ; No predecessors!
  br label %8839

8839:                                             ; preds = %8838
  br label %8840

8840:                                             ; preds = %8839, %8782
  br label %8841

8841:                                             ; preds = %8840
  br label %8842

8842:                                             ; preds = %8841
  %8843 = load ptr, ptr %170, align 8, !tbaa !9
  %8844 = getelementptr inbounds %struct.s2n_connection, ptr %8843, i32 0, i32 2
  store ptr %54, ptr %8844, align 8, !tbaa !47
  br label %8845

8845:                                             ; preds = %8842
  %8846 = load i32, ptr @test_count, align 4, !tbaa !5
  %8847 = add nsw i32 %8846, 1
  store i32 %8847, ptr @test_count, align 4, !tbaa !5
  %8848 = load ptr, ptr %170, align 8, !tbaa !9
  %8849 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %8848, i8 noundef zeroext 34)
  %8850 = icmp eq i32 %8849, -1
  br i1 %8850, label %8851, label %8904

8851:                                             ; preds = %8845
  br label %8852

8852:                                             ; preds = %8851
  br label %8853

8853:                                             ; preds = %8852
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #12
  %8854 = call ptr @__errno_location() #13
  %8855 = load i32, ptr %8854, align 4, !tbaa !5
  store i32 %8855, ptr %172, align 4, !tbaa !5
  %8856 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8857 = call i32 @s2n_print_stacktrace(ptr noundef %8856)
  %8858 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8859 = trunc i8 %8858 to i1
  br i1 %8859, label %8860, label %8882

8860:                                             ; preds = %8853
  %8861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8862 = call i32 @fileno(ptr noundef %8861) #12
  %8863 = call i32 @isatty(i32 noundef %8862) #12
  %8864 = icmp ne i32 %8863, 0
  br i1 %8864, label %8865, label %8882

8865:                                             ; preds = %8860
  %8866 = load i32, ptr %172, align 4, !tbaa !5
  %8867 = call ptr @__errno_location() #13
  store i32 %8866, ptr %8867, align 4, !tbaa !5
  %8868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8869 = load i32, ptr @test_count, align 4, !tbaa !5
  %8870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8871 = load i32, ptr %8870, align 4, !tbaa !5
  %8872 = call ptr @s2n_strerror(i32 noundef %8871, ptr noundef @.str.4)
  %8873 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8874 = load i32, ptr %8873, align 4, !tbaa !5
  %8875 = call ptr @s2n_strerror_debug(i32 noundef %8874, ptr noundef @.str.4)
  %8876 = call ptr @__errno_location() #13
  %8877 = load i32, ptr %8876, align 4, !tbaa !5
  %8878 = call ptr @strerror(i32 noundef %8877) #12
  %8879 = call ptr @__errno_location() #13
  %8880 = load i32, ptr %8879, align 4, !tbaa !5
  %8881 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8868, ptr noundef @.str.2, i32 noundef %8869, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 337, ptr noundef %8872, ptr noundef %8875, ptr noundef %8878, i32 noundef %8880) #12
  br label %8899

8882:                                             ; preds = %8860, %8853
  %8883 = load i32, ptr %172, align 4, !tbaa !5
  %8884 = call ptr @__errno_location() #13
  store i32 %8883, ptr %8884, align 4, !tbaa !5
  %8885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8886 = load i32, ptr @test_count, align 4, !tbaa !5
  %8887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8888 = load i32, ptr %8887, align 4, !tbaa !5
  %8889 = call ptr @s2n_strerror(i32 noundef %8888, ptr noundef @.str.4)
  %8890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8891 = load i32, ptr %8890, align 4, !tbaa !5
  %8892 = call ptr @s2n_strerror_debug(i32 noundef %8891, ptr noundef @.str.4)
  %8893 = call ptr @__errno_location() #13
  %8894 = load i32, ptr %8893, align 4, !tbaa !5
  %8895 = call ptr @strerror(i32 noundef %8894) #12
  %8896 = call ptr @__errno_location() #13
  %8897 = load i32, ptr %8896, align 4, !tbaa !5
  %8898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8885, ptr noundef @.str.5, i32 noundef %8886, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 337, ptr noundef %8889, ptr noundef %8892, ptr noundef %8895, i32 noundef %8897) #12
  br label %8899

8899:                                             ; preds = %8882, %8865
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #12
  br label %8900

8900:                                             ; preds = %8899
  br label %8901

8901:                                             ; preds = %8900
  call void @exit(i32 noundef 1) #14
  unreachable

8902:                                             ; No predecessors!
  br label %8903

8903:                                             ; preds = %8902
  br label %8904

8904:                                             ; preds = %8903, %8845
  br label %8905

8905:                                             ; preds = %8904
  br label %8906

8906:                                             ; preds = %8905
  br label %8907

8907:                                             ; preds = %8906
  %8908 = load i32, ptr @test_count, align 4, !tbaa !5
  %8909 = add nsw i32 %8908, 1
  store i32 %8909, ptr @test_count, align 4, !tbaa !5
  %8910 = load ptr, ptr %170, align 8, !tbaa !9
  %8911 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef %8910)
  %8912 = getelementptr inbounds %struct.s2n_result, ptr %173, i32 0, i32 0
  store i32 %8911, ptr %8912, align 4
  %8913 = getelementptr inbounds %struct.s2n_result, ptr %173, i32 0, i32 0
  %8914 = load i32, ptr %8913, align 4
  %8915 = call zeroext i1 @s2n_result_is_ok(i32 %8914)
  br i1 %8915, label %8969, label %8916

8916:                                             ; preds = %8907
  br label %8917

8917:                                             ; preds = %8916
  br label %8918

8918:                                             ; preds = %8917
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #12
  %8919 = call ptr @__errno_location() #13
  %8920 = load i32, ptr %8919, align 4, !tbaa !5
  store i32 %8920, ptr %174, align 4, !tbaa !5
  %8921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8922 = call i32 @s2n_print_stacktrace(ptr noundef %8921)
  %8923 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8924 = trunc i8 %8923 to i1
  br i1 %8924, label %8925, label %8947

8925:                                             ; preds = %8918
  %8926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8927 = call i32 @fileno(ptr noundef %8926) #12
  %8928 = call i32 @isatty(i32 noundef %8927) #12
  %8929 = icmp ne i32 %8928, 0
  br i1 %8929, label %8930, label %8947

8930:                                             ; preds = %8925
  %8931 = load i32, ptr %174, align 4, !tbaa !5
  %8932 = call ptr @__errno_location() #13
  store i32 %8931, ptr %8932, align 4, !tbaa !5
  %8933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8934 = load i32, ptr @test_count, align 4, !tbaa !5
  %8935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8936 = load i32, ptr %8935, align 4, !tbaa !5
  %8937 = call ptr @s2n_strerror(i32 noundef %8936, ptr noundef @.str.4)
  %8938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8939 = load i32, ptr %8938, align 4, !tbaa !5
  %8940 = call ptr @s2n_strerror_debug(i32 noundef %8939, ptr noundef @.str.4)
  %8941 = call ptr @__errno_location() #13
  %8942 = load i32, ptr %8941, align 4, !tbaa !5
  %8943 = call ptr @strerror(i32 noundef %8942) #12
  %8944 = call ptr @__errno_location() #13
  %8945 = load i32, ptr %8944, align 4, !tbaa !5
  %8946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8933, ptr noundef @.str.2, i32 noundef %8934, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 338, ptr noundef %8937, ptr noundef %8940, ptr noundef %8943, i32 noundef %8945) #12
  br label %8964

8947:                                             ; preds = %8925, %8918
  %8948 = load i32, ptr %174, align 4, !tbaa !5
  %8949 = call ptr @__errno_location() #13
  store i32 %8948, ptr %8949, align 4, !tbaa !5
  %8950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8951 = load i32, ptr @test_count, align 4, !tbaa !5
  %8952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8953 = load i32, ptr %8952, align 4, !tbaa !5
  %8954 = call ptr @s2n_strerror(i32 noundef %8953, ptr noundef @.str.4)
  %8955 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8956 = load i32, ptr %8955, align 4, !tbaa !5
  %8957 = call ptr @s2n_strerror_debug(i32 noundef %8956, ptr noundef @.str.4)
  %8958 = call ptr @__errno_location() #13
  %8959 = load i32, ptr %8958, align 4, !tbaa !5
  %8960 = call ptr @strerror(i32 noundef %8959) #12
  %8961 = call ptr @__errno_location() #13
  %8962 = load i32, ptr %8961, align 4, !tbaa !5
  %8963 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8950, ptr noundef @.str.5, i32 noundef %8951, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 338, ptr noundef %8954, ptr noundef %8957, ptr noundef %8960, i32 noundef %8962) #12
  br label %8964

8964:                                             ; preds = %8947, %8930
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #12
  br label %8965

8965:                                             ; preds = %8964
  br label %8966

8966:                                             ; preds = %8965
  call void @exit(i32 noundef 1) #14
  unreachable

8967:                                             ; No predecessors!
  br label %8968

8968:                                             ; preds = %8967
  br label %8969

8969:                                             ; preds = %8968, %8907
  br label %8970

8970:                                             ; preds = %8969
  br label %8971

8971:                                             ; preds = %8970
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #12
  store ptr null, ptr %175, align 8, !tbaa !9
  br label %8972

8972:                                             ; preds = %8971
  %8973 = load i32, ptr @test_count, align 4, !tbaa !5
  %8974 = add nsw i32 %8973, 1
  store i32 %8974, ptr @test_count, align 4, !tbaa !5
  %8975 = load ptr, ptr %170, align 8, !tbaa !9
  %8976 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %8975, ptr noundef %175)
  %8977 = icmp eq i32 %8976, -1
  br i1 %8977, label %8978, label %9031

8978:                                             ; preds = %8972
  br label %8979

8979:                                             ; preds = %8978
  br label %8980

8980:                                             ; preds = %8979
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #12
  %8981 = call ptr @__errno_location() #13
  %8982 = load i32, ptr %8981, align 4, !tbaa !5
  store i32 %8982, ptr %176, align 4, !tbaa !5
  %8983 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8984 = call i32 @s2n_print_stacktrace(ptr noundef %8983)
  %8985 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8986 = trunc i8 %8985 to i1
  br i1 %8986, label %8987, label %9009

8987:                                             ; preds = %8980
  %8988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8989 = call i32 @fileno(ptr noundef %8988) #12
  %8990 = call i32 @isatty(i32 noundef %8989) #12
  %8991 = icmp ne i32 %8990, 0
  br i1 %8991, label %8992, label %9009

8992:                                             ; preds = %8987
  %8993 = load i32, ptr %176, align 4, !tbaa !5
  %8994 = call ptr @__errno_location() #13
  store i32 %8993, ptr %8994, align 4, !tbaa !5
  %8995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8996 = load i32, ptr @test_count, align 4, !tbaa !5
  %8997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8998 = load i32, ptr %8997, align 4, !tbaa !5
  %8999 = call ptr @s2n_strerror(i32 noundef %8998, ptr noundef @.str.4)
  %9000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9001 = load i32, ptr %9000, align 4, !tbaa !5
  %9002 = call ptr @s2n_strerror_debug(i32 noundef %9001, ptr noundef @.str.4)
  %9003 = call ptr @__errno_location() #13
  %9004 = load i32, ptr %9003, align 4, !tbaa !5
  %9005 = call ptr @strerror(i32 noundef %9004) #12
  %9006 = call ptr @__errno_location() #13
  %9007 = load i32, ptr %9006, align 4, !tbaa !5
  %9008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8995, ptr noundef @.str.2, i32 noundef %8996, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 341, ptr noundef %8999, ptr noundef %9002, ptr noundef %9005, i32 noundef %9007) #12
  br label %9026

9009:                                             ; preds = %8987, %8980
  %9010 = load i32, ptr %176, align 4, !tbaa !5
  %9011 = call ptr @__errno_location() #13
  store i32 %9010, ptr %9011, align 4, !tbaa !5
  %9012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9013 = load i32, ptr @test_count, align 4, !tbaa !5
  %9014 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9015 = load i32, ptr %9014, align 4, !tbaa !5
  %9016 = call ptr @s2n_strerror(i32 noundef %9015, ptr noundef @.str.4)
  %9017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9018 = load i32, ptr %9017, align 4, !tbaa !5
  %9019 = call ptr @s2n_strerror_debug(i32 noundef %9018, ptr noundef @.str.4)
  %9020 = call ptr @__errno_location() #13
  %9021 = load i32, ptr %9020, align 4, !tbaa !5
  %9022 = call ptr @strerror(i32 noundef %9021) #12
  %9023 = call ptr @__errno_location() #13
  %9024 = load i32, ptr %9023, align 4, !tbaa !5
  %9025 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9012, ptr noundef @.str.5, i32 noundef %9013, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 341, ptr noundef %9016, ptr noundef %9019, ptr noundef %9022, i32 noundef %9024) #12
  br label %9026

9026:                                             ; preds = %9009, %8992
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #12
  br label %9027

9027:                                             ; preds = %9026
  br label %9028

9028:                                             ; preds = %9027
  call void @exit(i32 noundef 1) #14
  unreachable

9029:                                             ; No predecessors!
  br label %9030

9030:                                             ; preds = %9029
  br label %9031

9031:                                             ; preds = %9030, %8972
  br label %9032

9032:                                             ; preds = %9031
  br label %9033

9033:                                             ; preds = %9032
  br label %9034

9034:                                             ; preds = %9033
  %9035 = load i32, ptr @test_count, align 4, !tbaa !5
  %9036 = add nsw i32 %9035, 1
  store i32 %9036, ptr @test_count, align 4, !tbaa !5
  %9037 = load ptr, ptr %175, align 8, !tbaa !9
  %9038 = icmp eq ptr %9037, null
  br i1 %9038, label %9039, label %9092

9039:                                             ; preds = %9034
  br label %9040

9040:                                             ; preds = %9039
  br label %9041

9041:                                             ; preds = %9040
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #12
  %9042 = call ptr @__errno_location() #13
  %9043 = load i32, ptr %9042, align 4, !tbaa !5
  store i32 %9043, ptr %177, align 4, !tbaa !5
  %9044 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9045 = call i32 @s2n_print_stacktrace(ptr noundef %9044)
  %9046 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9047 = trunc i8 %9046 to i1
  br i1 %9047, label %9048, label %9070

9048:                                             ; preds = %9041
  %9049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9050 = call i32 @fileno(ptr noundef %9049) #12
  %9051 = call i32 @isatty(i32 noundef %9050) #12
  %9052 = icmp ne i32 %9051, 0
  br i1 %9052, label %9053, label %9070

9053:                                             ; preds = %9048
  %9054 = load i32, ptr %177, align 4, !tbaa !5
  %9055 = call ptr @__errno_location() #13
  store i32 %9054, ptr %9055, align 4, !tbaa !5
  %9056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9057 = load i32, ptr @test_count, align 4, !tbaa !5
  %9058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9059 = load i32, ptr %9058, align 4, !tbaa !5
  %9060 = call ptr @s2n_strerror(i32 noundef %9059, ptr noundef @.str.4)
  %9061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9062 = load i32, ptr %9061, align 4, !tbaa !5
  %9063 = call ptr @s2n_strerror_debug(i32 noundef %9062, ptr noundef @.str.4)
  %9064 = call ptr @__errno_location() #13
  %9065 = load i32, ptr %9064, align 4, !tbaa !5
  %9066 = call ptr @strerror(i32 noundef %9065) #12
  %9067 = call ptr @__errno_location() #13
  %9068 = load i32, ptr %9067, align 4, !tbaa !5
  %9069 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9056, ptr noundef @.str.2, i32 noundef %9057, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 342, ptr noundef %9060, ptr noundef %9063, ptr noundef %9066, i32 noundef %9068) #12
  br label %9087

9070:                                             ; preds = %9048, %9041
  %9071 = load i32, ptr %177, align 4, !tbaa !5
  %9072 = call ptr @__errno_location() #13
  store i32 %9071, ptr %9072, align 4, !tbaa !5
  %9073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9074 = load i32, ptr @test_count, align 4, !tbaa !5
  %9075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9076 = load i32, ptr %9075, align 4, !tbaa !5
  %9077 = call ptr @s2n_strerror(i32 noundef %9076, ptr noundef @.str.4)
  %9078 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9079 = load i32, ptr %9078, align 4, !tbaa !5
  %9080 = call ptr @s2n_strerror_debug(i32 noundef %9079, ptr noundef @.str.4)
  %9081 = call ptr @__errno_location() #13
  %9082 = load i32, ptr %9081, align 4, !tbaa !5
  %9083 = call ptr @strerror(i32 noundef %9082) #12
  %9084 = call ptr @__errno_location() #13
  %9085 = load i32, ptr %9084, align 4, !tbaa !5
  %9086 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9073, ptr noundef @.str.5, i32 noundef %9074, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 342, ptr noundef %9077, ptr noundef %9080, ptr noundef %9083, i32 noundef %9085) #12
  br label %9087

9087:                                             ; preds = %9070, %9053
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #12
  br label %9088

9088:                                             ; preds = %9087
  br label %9089

9089:                                             ; preds = %9088
  call void @exit(i32 noundef 1) #14
  unreachable

9090:                                             ; No predecessors!
  br label %9091

9091:                                             ; preds = %9090
  br label %9092

9092:                                             ; preds = %9091, %9034
  br label %9093

9093:                                             ; preds = %9092
  br label %9094

9094:                                             ; preds = %9093
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #12
  store ptr null, ptr %178, align 8, !tbaa !9
  br label %9095

9095:                                             ; preds = %9094
  %9096 = load i32, ptr @test_count, align 4, !tbaa !5
  %9097 = add nsw i32 %9096, 1
  store i32 %9097, ptr @test_count, align 4, !tbaa !5
  %9098 = load ptr, ptr %170, align 8, !tbaa !9
  %9099 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %9098, ptr noundef %178)
  %9100 = icmp eq i32 %9099, -1
  br i1 %9100, label %9101, label %9154

9101:                                             ; preds = %9095
  br label %9102

9102:                                             ; preds = %9101
  br label %9103

9103:                                             ; preds = %9102
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #12
  %9104 = call ptr @__errno_location() #13
  %9105 = load i32, ptr %9104, align 4, !tbaa !5
  store i32 %9105, ptr %179, align 4, !tbaa !5
  %9106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9107 = call i32 @s2n_print_stacktrace(ptr noundef %9106)
  %9108 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9109 = trunc i8 %9108 to i1
  br i1 %9109, label %9110, label %9132

9110:                                             ; preds = %9103
  %9111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9112 = call i32 @fileno(ptr noundef %9111) #12
  %9113 = call i32 @isatty(i32 noundef %9112) #12
  %9114 = icmp ne i32 %9113, 0
  br i1 %9114, label %9115, label %9132

9115:                                             ; preds = %9110
  %9116 = load i32, ptr %179, align 4, !tbaa !5
  %9117 = call ptr @__errno_location() #13
  store i32 %9116, ptr %9117, align 4, !tbaa !5
  %9118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9119 = load i32, ptr @test_count, align 4, !tbaa !5
  %9120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9121 = load i32, ptr %9120, align 4, !tbaa !5
  %9122 = call ptr @s2n_strerror(i32 noundef %9121, ptr noundef @.str.4)
  %9123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9124 = load i32, ptr %9123, align 4, !tbaa !5
  %9125 = call ptr @s2n_strerror_debug(i32 noundef %9124, ptr noundef @.str.4)
  %9126 = call ptr @__errno_location() #13
  %9127 = load i32, ptr %9126, align 4, !tbaa !5
  %9128 = call ptr @strerror(i32 noundef %9127) #12
  %9129 = call ptr @__errno_location() #13
  %9130 = load i32, ptr %9129, align 4, !tbaa !5
  %9131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9118, ptr noundef @.str.2, i32 noundef %9119, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 345, ptr noundef %9122, ptr noundef %9125, ptr noundef %9128, i32 noundef %9130) #12
  br label %9149

9132:                                             ; preds = %9110, %9103
  %9133 = load i32, ptr %179, align 4, !tbaa !5
  %9134 = call ptr @__errno_location() #13
  store i32 %9133, ptr %9134, align 4, !tbaa !5
  %9135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9136 = load i32, ptr @test_count, align 4, !tbaa !5
  %9137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9138 = load i32, ptr %9137, align 4, !tbaa !5
  %9139 = call ptr @s2n_strerror(i32 noundef %9138, ptr noundef @.str.4)
  %9140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9141 = load i32, ptr %9140, align 4, !tbaa !5
  %9142 = call ptr @s2n_strerror_debug(i32 noundef %9141, ptr noundef @.str.4)
  %9143 = call ptr @__errno_location() #13
  %9144 = load i32, ptr %9143, align 4, !tbaa !5
  %9145 = call ptr @strerror(i32 noundef %9144) #12
  %9146 = call ptr @__errno_location() #13
  %9147 = load i32, ptr %9146, align 4, !tbaa !5
  %9148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9135, ptr noundef @.str.5, i32 noundef %9136, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 345, ptr noundef %9139, ptr noundef %9142, ptr noundef %9145, i32 noundef %9147) #12
  br label %9149

9149:                                             ; preds = %9132, %9115
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #12
  br label %9150

9150:                                             ; preds = %9149
  br label %9151

9151:                                             ; preds = %9150
  call void @exit(i32 noundef 1) #14
  unreachable

9152:                                             ; No predecessors!
  br label %9153

9153:                                             ; preds = %9152
  br label %9154

9154:                                             ; preds = %9153, %9095
  br label %9155

9155:                                             ; preds = %9154
  br label %9156

9156:                                             ; preds = %9155
  br label %9157

9157:                                             ; preds = %9156
  %9158 = load i32, ptr @test_count, align 4, !tbaa !5
  %9159 = add nsw i32 %9158, 1
  store i32 %9159, ptr @test_count, align 4, !tbaa !5
  %9160 = load ptr, ptr %178, align 8, !tbaa !9
  %9161 = icmp eq ptr %9160, null
  br i1 %9161, label %9162, label %9215

9162:                                             ; preds = %9157
  br label %9163

9163:                                             ; preds = %9162
  br label %9164

9164:                                             ; preds = %9163
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #12
  %9165 = call ptr @__errno_location() #13
  %9166 = load i32, ptr %9165, align 4, !tbaa !5
  store i32 %9166, ptr %180, align 4, !tbaa !5
  %9167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9168 = call i32 @s2n_print_stacktrace(ptr noundef %9167)
  %9169 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9170 = trunc i8 %9169 to i1
  br i1 %9170, label %9171, label %9193

9171:                                             ; preds = %9164
  %9172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9173 = call i32 @fileno(ptr noundef %9172) #12
  %9174 = call i32 @isatty(i32 noundef %9173) #12
  %9175 = icmp ne i32 %9174, 0
  br i1 %9175, label %9176, label %9193

9176:                                             ; preds = %9171
  %9177 = load i32, ptr %180, align 4, !tbaa !5
  %9178 = call ptr @__errno_location() #13
  store i32 %9177, ptr %9178, align 4, !tbaa !5
  %9179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9180 = load i32, ptr @test_count, align 4, !tbaa !5
  %9181 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9182 = load i32, ptr %9181, align 4, !tbaa !5
  %9183 = call ptr @s2n_strerror(i32 noundef %9182, ptr noundef @.str.4)
  %9184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9185 = load i32, ptr %9184, align 4, !tbaa !5
  %9186 = call ptr @s2n_strerror_debug(i32 noundef %9185, ptr noundef @.str.4)
  %9187 = call ptr @__errno_location() #13
  %9188 = load i32, ptr %9187, align 4, !tbaa !5
  %9189 = call ptr @strerror(i32 noundef %9188) #12
  %9190 = call ptr @__errno_location() #13
  %9191 = load i32, ptr %9190, align 4, !tbaa !5
  %9192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9179, ptr noundef @.str.2, i32 noundef %9180, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 346, ptr noundef %9183, ptr noundef %9186, ptr noundef %9189, i32 noundef %9191) #12
  br label %9210

9193:                                             ; preds = %9171, %9164
  %9194 = load i32, ptr %180, align 4, !tbaa !5
  %9195 = call ptr @__errno_location() #13
  store i32 %9194, ptr %9195, align 4, !tbaa !5
  %9196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9197 = load i32, ptr @test_count, align 4, !tbaa !5
  %9198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9199 = load i32, ptr %9198, align 4, !tbaa !5
  %9200 = call ptr @s2n_strerror(i32 noundef %9199, ptr noundef @.str.4)
  %9201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9202 = load i32, ptr %9201, align 4, !tbaa !5
  %9203 = call ptr @s2n_strerror_debug(i32 noundef %9202, ptr noundef @.str.4)
  %9204 = call ptr @__errno_location() #13
  %9205 = load i32, ptr %9204, align 4, !tbaa !5
  %9206 = call ptr @strerror(i32 noundef %9205) #12
  %9207 = call ptr @__errno_location() #13
  %9208 = load i32, ptr %9207, align 4, !tbaa !5
  %9209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9196, ptr noundef @.str.5, i32 noundef %9197, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 346, ptr noundef %9200, ptr noundef %9203, ptr noundef %9206, i32 noundef %9208) #12
  br label %9210

9210:                                             ; preds = %9193, %9176
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #12
  br label %9211

9211:                                             ; preds = %9210
  br label %9212

9212:                                             ; preds = %9211
  call void @exit(i32 noundef 1) #14
  unreachable

9213:                                             ; No predecessors!
  br label %9214

9214:                                             ; preds = %9213
  br label %9215

9215:                                             ; preds = %9214, %9157
  br label %9216

9216:                                             ; preds = %9215
  br label %9217

9217:                                             ; preds = %9216
  br label %9218

9218:                                             ; preds = %9217
  %9219 = load i32, ptr @test_count, align 4, !tbaa !5
  %9220 = add nsw i32 %9219, 1
  store i32 %9220, ptr @test_count, align 4, !tbaa !5
  %9221 = load ptr, ptr %170, align 8, !tbaa !9
  %9222 = getelementptr inbounds %struct.s2n_connection, ptr %9221, i32 0, i32 31
  %9223 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %9222, i32 0, i32 1
  %9224 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %9223, i32 0, i32 0
  %9225 = load ptr, ptr %9224, align 8, !tbaa !15
  %9226 = icmp eq ptr %9225, null
  br i1 %9226, label %9280, label %9227

9227:                                             ; preds = %9218
  br label %9228

9228:                                             ; preds = %9227
  br label %9229

9229:                                             ; preds = %9228
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #12
  %9230 = call ptr @__errno_location() #13
  %9231 = load i32, ptr %9230, align 4, !tbaa !5
  store i32 %9231, ptr %181, align 4, !tbaa !5
  %9232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9233 = call i32 @s2n_print_stacktrace(ptr noundef %9232)
  %9234 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9235 = trunc i8 %9234 to i1
  br i1 %9235, label %9236, label %9258

9236:                                             ; preds = %9229
  %9237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9238 = call i32 @fileno(ptr noundef %9237) #12
  %9239 = call i32 @isatty(i32 noundef %9238) #12
  %9240 = icmp ne i32 %9239, 0
  br i1 %9240, label %9241, label %9258

9241:                                             ; preds = %9236
  %9242 = load i32, ptr %181, align 4, !tbaa !5
  %9243 = call ptr @__errno_location() #13
  store i32 %9242, ptr %9243, align 4, !tbaa !5
  %9244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9245 = load i32, ptr @test_count, align 4, !tbaa !5
  %9246 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9247 = load i32, ptr %9246, align 4, !tbaa !5
  %9248 = call ptr @s2n_strerror(i32 noundef %9247, ptr noundef @.str.4)
  %9249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9250 = load i32, ptr %9249, align 4, !tbaa !5
  %9251 = call ptr @s2n_strerror_debug(i32 noundef %9250, ptr noundef @.str.4)
  %9252 = call ptr @__errno_location() #13
  %9253 = load i32, ptr %9252, align 4, !tbaa !5
  %9254 = call ptr @strerror(i32 noundef %9253) #12
  %9255 = call ptr @__errno_location() #13
  %9256 = load i32, ptr %9255, align 4, !tbaa !5
  %9257 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9244, ptr noundef @.str.2, i32 noundef %9245, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 349, ptr noundef %9248, ptr noundef %9251, ptr noundef %9254, i32 noundef %9256) #12
  br label %9275

9258:                                             ; preds = %9236, %9229
  %9259 = load i32, ptr %181, align 4, !tbaa !5
  %9260 = call ptr @__errno_location() #13
  store i32 %9259, ptr %9260, align 4, !tbaa !5
  %9261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9262 = load i32, ptr @test_count, align 4, !tbaa !5
  %9263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9264 = load i32, ptr %9263, align 4, !tbaa !5
  %9265 = call ptr @s2n_strerror(i32 noundef %9264, ptr noundef @.str.4)
  %9266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9267 = load i32, ptr %9266, align 4, !tbaa !5
  %9268 = call ptr @s2n_strerror_debug(i32 noundef %9267, ptr noundef @.str.4)
  %9269 = call ptr @__errno_location() #13
  %9270 = load i32, ptr %9269, align 4, !tbaa !5
  %9271 = call ptr @strerror(i32 noundef %9270) #12
  %9272 = call ptr @__errno_location() #13
  %9273 = load i32, ptr %9272, align 4, !tbaa !5
  %9274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9261, ptr noundef @.str.5, i32 noundef %9262, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 349, ptr noundef %9265, ptr noundef %9268, ptr noundef %9271, i32 noundef %9273) #12
  br label %9275

9275:                                             ; preds = %9258, %9241
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #12
  br label %9276

9276:                                             ; preds = %9275
  br label %9277

9277:                                             ; preds = %9276
  call void @exit(i32 noundef 1) #14
  unreachable

9278:                                             ; No predecessors!
  br label %9279

9279:                                             ; preds = %9278
  br label %9280

9280:                                             ; preds = %9279, %9218
  br label %9281

9281:                                             ; preds = %9280
  br label %9282

9282:                                             ; preds = %9281
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #12
  %9283 = load ptr, ptr %170, align 8, !tbaa !9
  %9284 = getelementptr inbounds %struct.s2n_connection, ptr %9283, i32 0, i32 31
  %9285 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %9284, i32 0, i32 4
  store ptr %9285, ptr %182, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #12
  %9286 = load ptr, ptr %178, align 8, !tbaa !9
  %9287 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %9286, i32 0, i32 3
  %9288 = load ptr, ptr %9287, align 8, !tbaa !48
  %9289 = getelementptr inbounds ptr, ptr %9288, i64 0
  %9290 = load ptr, ptr %9289, align 8, !tbaa !9
  store ptr %9290, ptr %183, align 8, !tbaa !9
  %9291 = load ptr, ptr %183, align 8, !tbaa !9
  %9292 = load ptr, ptr %182, align 8, !tbaa !9
  %9293 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9292, i32 0, i32 0
  store ptr %9291, ptr %9293, align 8, !tbaa !50
  %9294 = load ptr, ptr %183, align 8, !tbaa !9
  %9295 = getelementptr inbounds %struct.s2n_kem_group, ptr %9294, i32 0, i32 3
  %9296 = load ptr, ptr %9295, align 8, !tbaa !51
  %9297 = load ptr, ptr %182, align 8, !tbaa !9
  %9298 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9297, i32 0, i32 1
  %9299 = getelementptr inbounds %struct.s2n_kem_params, ptr %9298, i32 0, i32 0
  store ptr %9296, ptr %9299, align 8, !tbaa !53
  %9300 = load ptr, ptr %183, align 8, !tbaa !9
  %9301 = getelementptr inbounds %struct.s2n_kem_group, ptr %9300, i32 0, i32 2
  %9302 = load ptr, ptr %9301, align 8, !tbaa !54
  %9303 = load ptr, ptr %182, align 8, !tbaa !9
  %9304 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9303, i32 0, i32 2
  %9305 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %9304, i32 0, i32 0
  store ptr %9302, ptr %9305, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #12
  %9306 = load ptr, ptr %170, align 8, !tbaa !9
  %9307 = getelementptr inbounds %struct.s2n_connection, ptr %9306, i32 0, i32 31
  %9308 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %9307, i32 0, i32 5
  store ptr %9308, ptr %184, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #12
  %9309 = load ptr, ptr %178, align 8, !tbaa !9
  %9310 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %9309, i32 0, i32 3
  %9311 = load ptr, ptr %9310, align 8, !tbaa !48
  %9312 = getelementptr inbounds ptr, ptr %9311, i64 0
  %9313 = load ptr, ptr %9312, align 8, !tbaa !9
  store ptr %9313, ptr %185, align 8, !tbaa !9
  %9314 = load ptr, ptr %185, align 8, !tbaa !9
  %9315 = load ptr, ptr %184, align 8, !tbaa !9
  %9316 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9315, i32 0, i32 0
  store ptr %9314, ptr %9316, align 8, !tbaa !50
  %9317 = load ptr, ptr %185, align 8, !tbaa !9
  %9318 = getelementptr inbounds %struct.s2n_kem_group, ptr %9317, i32 0, i32 3
  %9319 = load ptr, ptr %9318, align 8, !tbaa !51
  %9320 = load ptr, ptr %184, align 8, !tbaa !9
  %9321 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9320, i32 0, i32 1
  %9322 = getelementptr inbounds %struct.s2n_kem_params, ptr %9321, i32 0, i32 0
  store ptr %9319, ptr %9322, align 8, !tbaa !53
  %9323 = load ptr, ptr %185, align 8, !tbaa !9
  %9324 = getelementptr inbounds %struct.s2n_kem_group, ptr %9323, i32 0, i32 2
  %9325 = load ptr, ptr %9324, align 8, !tbaa !54
  %9326 = load ptr, ptr %184, align 8, !tbaa !9
  %9327 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9326, i32 0, i32 2
  %9328 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %9327, i32 0, i32 0
  store ptr %9325, ptr %9328, align 8, !tbaa !55
  br label %9329

9329:                                             ; preds = %9282
  %9330 = load i32, ptr @test_count, align 4, !tbaa !5
  %9331 = add nsw i32 %9330, 1
  store i32 %9331, ptr @test_count, align 4, !tbaa !5
  %9332 = load ptr, ptr %184, align 8, !tbaa !9
  %9333 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9332, i32 0, i32 1
  %9334 = getelementptr inbounds %struct.s2n_kem_params, ptr %9333, i32 0, i32 1
  %9335 = load ptr, ptr %185, align 8, !tbaa !9
  %9336 = getelementptr inbounds %struct.s2n_kem_group, ptr %9335, i32 0, i32 3
  %9337 = load ptr, ptr %9336, align 8, !tbaa !51
  %9338 = getelementptr inbounds %struct.s2n_kem, ptr %9337, i32 0, i32 3
  %9339 = load i16, ptr %9338, align 2, !tbaa !61
  %9340 = zext i16 %9339 to i32
  %9341 = call i32 @s2n_alloc(ptr noundef %9334, i32 noundef %9340)
  %9342 = icmp eq i32 %9341, -1
  br i1 %9342, label %9343, label %9396

9343:                                             ; preds = %9329
  br label %9344

9344:                                             ; preds = %9343
  br label %9345

9345:                                             ; preds = %9344
  call void @llvm.lifetime.start.p0(i64 4, ptr %186) #12
  %9346 = call ptr @__errno_location() #13
  %9347 = load i32, ptr %9346, align 4, !tbaa !5
  store i32 %9347, ptr %186, align 4, !tbaa !5
  %9348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9349 = call i32 @s2n_print_stacktrace(ptr noundef %9348)
  %9350 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9351 = trunc i8 %9350 to i1
  br i1 %9351, label %9352, label %9374

9352:                                             ; preds = %9345
  %9353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9354 = call i32 @fileno(ptr noundef %9353) #12
  %9355 = call i32 @isatty(i32 noundef %9354) #12
  %9356 = icmp ne i32 %9355, 0
  br i1 %9356, label %9357, label %9374

9357:                                             ; preds = %9352
  %9358 = load i32, ptr %186, align 4, !tbaa !5
  %9359 = call ptr @__errno_location() #13
  store i32 %9358, ptr %9359, align 4, !tbaa !5
  %9360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9361 = load i32, ptr @test_count, align 4, !tbaa !5
  %9362 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9363 = load i32, ptr %9362, align 4, !tbaa !5
  %9364 = call ptr @s2n_strerror(i32 noundef %9363, ptr noundef @.str.4)
  %9365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9366 = load i32, ptr %9365, align 4, !tbaa !5
  %9367 = call ptr @s2n_strerror_debug(i32 noundef %9366, ptr noundef @.str.4)
  %9368 = call ptr @__errno_location() #13
  %9369 = load i32, ptr %9368, align 4, !tbaa !5
  %9370 = call ptr @strerror(i32 noundef %9369) #12
  %9371 = call ptr @__errno_location() #13
  %9372 = load i32, ptr %9371, align 4, !tbaa !5
  %9373 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9360, ptr noundef @.str.2, i32 noundef %9361, ptr noundef @.str.56, ptr noundef @.str.1, i32 noundef 362, ptr noundef %9364, ptr noundef %9367, ptr noundef %9370, i32 noundef %9372) #12
  br label %9391

9374:                                             ; preds = %9352, %9345
  %9375 = load i32, ptr %186, align 4, !tbaa !5
  %9376 = call ptr @__errno_location() #13
  store i32 %9375, ptr %9376, align 4, !tbaa !5
  %9377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9378 = load i32, ptr @test_count, align 4, !tbaa !5
  %9379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9380 = load i32, ptr %9379, align 4, !tbaa !5
  %9381 = call ptr @s2n_strerror(i32 noundef %9380, ptr noundef @.str.4)
  %9382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9383 = load i32, ptr %9382, align 4, !tbaa !5
  %9384 = call ptr @s2n_strerror_debug(i32 noundef %9383, ptr noundef @.str.4)
  %9385 = call ptr @__errno_location() #13
  %9386 = load i32, ptr %9385, align 4, !tbaa !5
  %9387 = call ptr @strerror(i32 noundef %9386) #12
  %9388 = call ptr @__errno_location() #13
  %9389 = load i32, ptr %9388, align 4, !tbaa !5
  %9390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9377, ptr noundef @.str.5, i32 noundef %9378, ptr noundef @.str.56, ptr noundef @.str.1, i32 noundef 362, ptr noundef %9381, ptr noundef %9384, ptr noundef %9387, i32 noundef %9389) #12
  br label %9391

9391:                                             ; preds = %9374, %9357
  call void @llvm.lifetime.end.p0(i64 4, ptr %186) #12
  br label %9392

9392:                                             ; preds = %9391
  br label %9393

9393:                                             ; preds = %9392
  call void @exit(i32 noundef 1) #14
  unreachable

9394:                                             ; No predecessors!
  br label %9395

9395:                                             ; preds = %9394
  br label %9396

9396:                                             ; preds = %9395, %9329
  br label %9397

9397:                                             ; preds = %9396
  br label %9398

9398:                                             ; preds = %9397
  br label %9399

9399:                                             ; preds = %9398
  call void @llvm.lifetime.start.p0(i64 2, ptr %187) #12
  %9400 = load ptr, ptr %185, align 8, !tbaa !9
  %9401 = getelementptr inbounds %struct.s2n_kem_group, ptr %9400, i32 0, i32 3
  %9402 = load ptr, ptr %9401, align 8, !tbaa !51
  %9403 = getelementptr inbounds %struct.s2n_kem, ptr %9402, i32 0, i32 3
  %9404 = load i16, ptr %9403, align 2, !tbaa !61
  store i16 %9404, ptr %187, align 2, !tbaa !63
  %9405 = load i16, ptr %187, align 2, !tbaa !63
  %9406 = icmp ne i16 %9405, 0
  %9407 = xor i1 %9406, true
  %9408 = xor i1 %9407, true
  %9409 = zext i1 %9408 to i32
  %9410 = sext i32 %9409 to i64
  %9411 = call i64 @llvm.expect.i64(i64 %9410, i64 1)
  %9412 = icmp ne i64 %9411, 0
  br i1 %9412, label %9413, label %9464

9413:                                             ; preds = %9399
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #12
  %9414 = load ptr, ptr %184, align 8, !tbaa !9
  %9415 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9414, i32 0, i32 1
  %9416 = getelementptr inbounds %struct.s2n_kem_params, ptr %9415, i32 0, i32 1
  %9417 = getelementptr inbounds %struct.s2n_blob, ptr %9416, i32 0, i32 0
  %9418 = load ptr, ptr %9417, align 8, !tbaa !64
  store ptr %9418, ptr %188, align 8, !tbaa !9
  br label %9419

9419:                                             ; preds = %9413
  %9420 = load ptr, ptr %188, align 8, !tbaa !9
  %9421 = icmp ne ptr %9420, null
  br i1 %9421, label %9455, label %9422

9422:                                             ; preds = %9419
  br label %9423

9423:                                             ; preds = %9422
  br label %9424

9424:                                             ; preds = %9423
  %9425 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %9426 = getelementptr inbounds %struct.s2n_debug_info, ptr %9425, i32 0, i32 0
  store ptr @.str.57, ptr %9426, align 8, !tbaa !65
  %9427 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %9428 = getelementptr inbounds %struct.s2n_debug_info, ptr %9427, i32 0, i32 0
  %9429 = load ptr, ptr %9428, align 8, !tbaa !65
  %9430 = getelementptr inbounds i8, ptr %9429, i64 21
  %9431 = call ptr @strrchr(ptr noundef %9430, i32 noundef 47) #15
  %9432 = icmp ne ptr %9431, null
  br i1 %9432, label %9433, label %9440

9433:                                             ; preds = %9424
  %9434 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %9435 = getelementptr inbounds %struct.s2n_debug_info, ptr %9434, i32 0, i32 0
  %9436 = load ptr, ptr %9435, align 8, !tbaa !65
  %9437 = getelementptr inbounds i8, ptr %9436, i64 21
  %9438 = call ptr @strrchr(ptr noundef %9437, i32 noundef 47) #15
  %9439 = getelementptr inbounds i8, ptr %9438, i64 1
  br label %9445

9440:                                             ; preds = %9424
  %9441 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %9442 = getelementptr inbounds %struct.s2n_debug_info, ptr %9441, i32 0, i32 0
  %9443 = load ptr, ptr %9442, align 8, !tbaa !65
  %9444 = getelementptr inbounds i8, ptr %9443, i64 21
  br label %9445

9445:                                             ; preds = %9440, %9433
  %9446 = phi ptr [ %9439, %9433 ], [ %9444, %9440 ]
  %9447 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %9448 = getelementptr inbounds %struct.s2n_debug_info, ptr %9447, i32 0, i32 1
  store ptr %9446, ptr %9448, align 8, !tbaa !67
  %9449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %9449, align 4, !tbaa !5
  %9450 = call i32 @s2n_calculate_stacktrace()
  br label %9451

9451:                                             ; preds = %9445
  br label %9452

9452:                                             ; preds = %9451
  store i32 -1, ptr %1, align 4
  store i32 1, ptr %10, align 4
  br label %9461

9453:                                             ; No predecessors!
  br label %9454

9454:                                             ; preds = %9453
  br label %9455

9455:                                             ; preds = %9454, %9419
  br label %9456

9456:                                             ; preds = %9455
  br label %9457

9457:                                             ; preds = %9456
  %9458 = load ptr, ptr %188, align 8, !tbaa !9
  %9459 = load i16, ptr %187, align 2, !tbaa !63
  %9460 = zext i16 %9459 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %9458, i8 1, i64 %9460, i1 false)
  store i32 0, ptr %10, align 4
  br label %9461

9461:                                             ; preds = %9457, %9452
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #12
  %9462 = load i32, ptr %10, align 4
  switch i32 %9462, label %9465 [
    i32 0, label %9463
  ]

9463:                                             ; preds = %9461
  br label %9464

9464:                                             ; preds = %9463, %9399
  store i32 0, ptr %10, align 4
  br label %9465

9465:                                             ; preds = %9464, %9461
  call void @llvm.lifetime.end.p0(i64 2, ptr %187) #12
  %9466 = load i32, ptr %10, align 4
  switch i32 %9466, label %10119 [
    i32 0, label %9467
  ]

9467:                                             ; preds = %9465
  br label %9468

9468:                                             ; preds = %9467
  br label %9469

9469:                                             ; preds = %9468
  br label %9470

9470:                                             ; preds = %9469
  %9471 = load i32, ptr @test_count, align 4, !tbaa !5
  %9472 = add nsw i32 %9471, 1
  store i32 %9472, ptr @test_count, align 4, !tbaa !5
  %9473 = load ptr, ptr %184, align 8, !tbaa !9
  %9474 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9473, i32 0, i32 2
  %9475 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef %9474)
  %9476 = icmp eq i32 %9475, -1
  br i1 %9476, label %9477, label %9530

9477:                                             ; preds = %9470
  br label %9478

9478:                                             ; preds = %9477
  br label %9479

9479:                                             ; preds = %9478
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #12
  %9480 = call ptr @__errno_location() #13
  %9481 = load i32, ptr %9480, align 4, !tbaa !5
  store i32 %9481, ptr %189, align 4, !tbaa !5
  %9482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9483 = call i32 @s2n_print_stacktrace(ptr noundef %9482)
  %9484 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9485 = trunc i8 %9484 to i1
  br i1 %9485, label %9486, label %9508

9486:                                             ; preds = %9479
  %9487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9488 = call i32 @fileno(ptr noundef %9487) #12
  %9489 = call i32 @isatty(i32 noundef %9488) #12
  %9490 = icmp ne i32 %9489, 0
  br i1 %9490, label %9491, label %9508

9491:                                             ; preds = %9486
  %9492 = load i32, ptr %189, align 4, !tbaa !5
  %9493 = call ptr @__errno_location() #13
  store i32 %9492, ptr %9493, align 4, !tbaa !5
  %9494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9495 = load i32, ptr @test_count, align 4, !tbaa !5
  %9496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9497 = load i32, ptr %9496, align 4, !tbaa !5
  %9498 = call ptr @s2n_strerror(i32 noundef %9497, ptr noundef @.str.4)
  %9499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9500 = load i32, ptr %9499, align 4, !tbaa !5
  %9501 = call ptr @s2n_strerror_debug(i32 noundef %9500, ptr noundef @.str.4)
  %9502 = call ptr @__errno_location() #13
  %9503 = load i32, ptr %9502, align 4, !tbaa !5
  %9504 = call ptr @strerror(i32 noundef %9503) #12
  %9505 = call ptr @__errno_location() #13
  %9506 = load i32, ptr %9505, align 4, !tbaa !5
  %9507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9494, ptr noundef @.str.2, i32 noundef %9495, ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 365, ptr noundef %9498, ptr noundef %9501, ptr noundef %9504, i32 noundef %9506) #12
  br label %9525

9508:                                             ; preds = %9486, %9479
  %9509 = load i32, ptr %189, align 4, !tbaa !5
  %9510 = call ptr @__errno_location() #13
  store i32 %9509, ptr %9510, align 4, !tbaa !5
  %9511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9512 = load i32, ptr @test_count, align 4, !tbaa !5
  %9513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9514 = load i32, ptr %9513, align 4, !tbaa !5
  %9515 = call ptr @s2n_strerror(i32 noundef %9514, ptr noundef @.str.4)
  %9516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9517 = load i32, ptr %9516, align 4, !tbaa !5
  %9518 = call ptr @s2n_strerror_debug(i32 noundef %9517, ptr noundef @.str.4)
  %9519 = call ptr @__errno_location() #13
  %9520 = load i32, ptr %9519, align 4, !tbaa !5
  %9521 = call ptr @strerror(i32 noundef %9520) #12
  %9522 = call ptr @__errno_location() #13
  %9523 = load i32, ptr %9522, align 4, !tbaa !5
  %9524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9511, ptr noundef @.str.5, i32 noundef %9512, ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 365, ptr noundef %9515, ptr noundef %9518, ptr noundef %9521, i32 noundef %9523) #12
  br label %9525

9525:                                             ; preds = %9508, %9491
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #12
  br label %9526

9526:                                             ; preds = %9525
  br label %9527

9527:                                             ; preds = %9526
  call void @exit(i32 noundef 1) #14
  unreachable

9528:                                             ; No predecessors!
  br label %9529

9529:                                             ; preds = %9528
  br label %9530

9530:                                             ; preds = %9529, %9470
  br label %9531

9531:                                             ; preds = %9530
  br label %9532

9532:                                             ; preds = %9531
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #12
  %9533 = load ptr, ptr %170, align 8, !tbaa !9
  %9534 = getelementptr inbounds %struct.s2n_connection, ptr %9533, i32 0, i32 31
  %9535 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %9534, i32 0, i32 3
  store ptr %9535, ptr %190, align 8, !tbaa !9
  %9536 = load ptr, ptr %175, align 8, !tbaa !9
  %9537 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %9536, i32 0, i32 1
  %9538 = load ptr, ptr %9537, align 8, !tbaa !43
  %9539 = getelementptr inbounds ptr, ptr %9538, i64 0
  %9540 = load ptr, ptr %9539, align 8, !tbaa !9
  %9541 = load ptr, ptr %190, align 8, !tbaa !9
  %9542 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %9541, i32 0, i32 0
  store ptr %9540, ptr %9542, align 8, !tbaa !68
  br label %9543

9543:                                             ; preds = %9532
  %9544 = load i32, ptr @test_count, align 4, !tbaa !5
  %9545 = add nsw i32 %9544, 1
  store i32 %9545, ptr @test_count, align 4, !tbaa !5
  %9546 = load ptr, ptr %190, align 8, !tbaa !9
  %9547 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef %9546)
  %9548 = icmp eq i32 %9547, -1
  br i1 %9548, label %9549, label %9602

9549:                                             ; preds = %9543
  br label %9550

9550:                                             ; preds = %9549
  br label %9551

9551:                                             ; preds = %9550
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #12
  %9552 = call ptr @__errno_location() #13
  %9553 = load i32, ptr %9552, align 4, !tbaa !5
  store i32 %9553, ptr %191, align 4, !tbaa !5
  %9554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9555 = call i32 @s2n_print_stacktrace(ptr noundef %9554)
  %9556 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9557 = trunc i8 %9556 to i1
  br i1 %9557, label %9558, label %9580

9558:                                             ; preds = %9551
  %9559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9560 = call i32 @fileno(ptr noundef %9559) #12
  %9561 = call i32 @isatty(i32 noundef %9560) #12
  %9562 = icmp ne i32 %9561, 0
  br i1 %9562, label %9563, label %9580

9563:                                             ; preds = %9558
  %9564 = load i32, ptr %191, align 4, !tbaa !5
  %9565 = call ptr @__errno_location() #13
  store i32 %9564, ptr %9565, align 4, !tbaa !5
  %9566 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9567 = load i32, ptr @test_count, align 4, !tbaa !5
  %9568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9569 = load i32, ptr %9568, align 4, !tbaa !5
  %9570 = call ptr @s2n_strerror(i32 noundef %9569, ptr noundef @.str.4)
  %9571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9572 = load i32, ptr %9571, align 4, !tbaa !5
  %9573 = call ptr @s2n_strerror_debug(i32 noundef %9572, ptr noundef @.str.4)
  %9574 = call ptr @__errno_location() #13
  %9575 = load i32, ptr %9574, align 4, !tbaa !5
  %9576 = call ptr @strerror(i32 noundef %9575) #12
  %9577 = call ptr @__errno_location() #13
  %9578 = load i32, ptr %9577, align 4, !tbaa !5
  %9579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9566, ptr noundef @.str.2, i32 noundef %9567, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 370, ptr noundef %9570, ptr noundef %9573, ptr noundef %9576, i32 noundef %9578) #12
  br label %9597

9580:                                             ; preds = %9558, %9551
  %9581 = load i32, ptr %191, align 4, !tbaa !5
  %9582 = call ptr @__errno_location() #13
  store i32 %9581, ptr %9582, align 4, !tbaa !5
  %9583 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9584 = load i32, ptr @test_count, align 4, !tbaa !5
  %9585 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9586 = load i32, ptr %9585, align 4, !tbaa !5
  %9587 = call ptr @s2n_strerror(i32 noundef %9586, ptr noundef @.str.4)
  %9588 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9589 = load i32, ptr %9588, align 4, !tbaa !5
  %9590 = call ptr @s2n_strerror_debug(i32 noundef %9589, ptr noundef @.str.4)
  %9591 = call ptr @__errno_location() #13
  %9592 = load i32, ptr %9591, align 4, !tbaa !5
  %9593 = call ptr @strerror(i32 noundef %9592) #12
  %9594 = call ptr @__errno_location() #13
  %9595 = load i32, ptr %9594, align 4, !tbaa !5
  %9596 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9583, ptr noundef @.str.5, i32 noundef %9584, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 370, ptr noundef %9587, ptr noundef %9590, ptr noundef %9593, i32 noundef %9595) #12
  br label %9597

9597:                                             ; preds = %9580, %9563
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #12
  br label %9598

9598:                                             ; preds = %9597
  br label %9599

9599:                                             ; preds = %9598
  call void @exit(i32 noundef 1) #14
  unreachable

9600:                                             ; No predecessors!
  br label %9601

9601:                                             ; preds = %9600
  br label %9602

9602:                                             ; preds = %9601, %9543
  br label %9603

9603:                                             ; preds = %9602
  br label %9604

9604:                                             ; preds = %9603
  br label %9605

9605:                                             ; preds = %9604
  %9606 = load i32, ptr @test_count, align 4, !tbaa !5
  %9607 = add nsw i32 %9606, 1
  store i32 %9607, ptr @test_count, align 4, !tbaa !5
  %9608 = load ptr, ptr %170, align 8, !tbaa !9
  %9609 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %9608)
  %9610 = icmp eq i32 %9609, -1
  br i1 %9610, label %9611, label %9664

9611:                                             ; preds = %9605
  br label %9612

9612:                                             ; preds = %9611
  br label %9613

9613:                                             ; preds = %9612
  call void @llvm.lifetime.start.p0(i64 4, ptr %192) #12
  %9614 = call ptr @__errno_location() #13
  %9615 = load i32, ptr %9614, align 4, !tbaa !5
  store i32 %9615, ptr %192, align 4, !tbaa !5
  %9616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9617 = call i32 @s2n_print_stacktrace(ptr noundef %9616)
  %9618 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9619 = trunc i8 %9618 to i1
  br i1 %9619, label %9620, label %9642

9620:                                             ; preds = %9613
  %9621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9622 = call i32 @fileno(ptr noundef %9621) #12
  %9623 = call i32 @isatty(i32 noundef %9622) #12
  %9624 = icmp ne i32 %9623, 0
  br i1 %9624, label %9625, label %9642

9625:                                             ; preds = %9620
  %9626 = load i32, ptr %192, align 4, !tbaa !5
  %9627 = call ptr @__errno_location() #13
  store i32 %9626, ptr %9627, align 4, !tbaa !5
  %9628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9629 = load i32, ptr @test_count, align 4, !tbaa !5
  %9630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9631 = load i32, ptr %9630, align 4, !tbaa !5
  %9632 = call ptr @s2n_strerror(i32 noundef %9631, ptr noundef @.str.4)
  %9633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9634 = load i32, ptr %9633, align 4, !tbaa !5
  %9635 = call ptr @s2n_strerror_debug(i32 noundef %9634, ptr noundef @.str.4)
  %9636 = call ptr @__errno_location() #13
  %9637 = load i32, ptr %9636, align 4, !tbaa !5
  %9638 = call ptr @strerror(i32 noundef %9637) #12
  %9639 = call ptr @__errno_location() #13
  %9640 = load i32, ptr %9639, align 4, !tbaa !5
  %9641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9628, ptr noundef @.str.2, i32 noundef %9629, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 372, ptr noundef %9632, ptr noundef %9635, ptr noundef %9638, i32 noundef %9640) #12
  br label %9659

9642:                                             ; preds = %9620, %9613
  %9643 = load i32, ptr %192, align 4, !tbaa !5
  %9644 = call ptr @__errno_location() #13
  store i32 %9643, ptr %9644, align 4, !tbaa !5
  %9645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9646 = load i32, ptr @test_count, align 4, !tbaa !5
  %9647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9648 = load i32, ptr %9647, align 4, !tbaa !5
  %9649 = call ptr @s2n_strerror(i32 noundef %9648, ptr noundef @.str.4)
  %9650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9651 = load i32, ptr %9650, align 4, !tbaa !5
  %9652 = call ptr @s2n_strerror_debug(i32 noundef %9651, ptr noundef @.str.4)
  %9653 = call ptr @__errno_location() #13
  %9654 = load i32, ptr %9653, align 4, !tbaa !5
  %9655 = call ptr @strerror(i32 noundef %9654) #12
  %9656 = call ptr @__errno_location() #13
  %9657 = load i32, ptr %9656, align 4, !tbaa !5
  %9658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9645, ptr noundef @.str.5, i32 noundef %9646, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 372, ptr noundef %9649, ptr noundef %9652, ptr noundef %9655, i32 noundef %9657) #12
  br label %9659

9659:                                             ; preds = %9642, %9625
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #12
  br label %9660

9660:                                             ; preds = %9659
  br label %9661

9661:                                             ; preds = %9660
  call void @exit(i32 noundef 1) #14
  unreachable

9662:                                             ; No predecessors!
  br label %9663

9663:                                             ; preds = %9662
  br label %9664

9664:                                             ; preds = %9663, %9605
  br label %9665

9665:                                             ; preds = %9664
  br label %9666

9666:                                             ; preds = %9665
  br label %9667

9667:                                             ; preds = %9666
  %9668 = load i32, ptr @test_count, align 4, !tbaa !5
  %9669 = add nsw i32 %9668, 1
  store i32 %9669, ptr @test_count, align 4, !tbaa !5
  %9670 = load ptr, ptr %182, align 8, !tbaa !9
  %9671 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9670, i32 0, i32 0
  %9672 = load ptr, ptr %9671, align 8, !tbaa !50
  %9673 = load ptr, ptr %183, align 8, !tbaa !9
  %9674 = icmp eq ptr %9672, %9673
  br i1 %9674, label %9728, label %9675

9675:                                             ; preds = %9667
  br label %9676

9676:                                             ; preds = %9675
  br label %9677

9677:                                             ; preds = %9676
  call void @llvm.lifetime.start.p0(i64 4, ptr %193) #12
  %9678 = call ptr @__errno_location() #13
  %9679 = load i32, ptr %9678, align 4, !tbaa !5
  store i32 %9679, ptr %193, align 4, !tbaa !5
  %9680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9681 = call i32 @s2n_print_stacktrace(ptr noundef %9680)
  %9682 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9683 = trunc i8 %9682 to i1
  br i1 %9683, label %9684, label %9706

9684:                                             ; preds = %9677
  %9685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9686 = call i32 @fileno(ptr noundef %9685) #12
  %9687 = call i32 @isatty(i32 noundef %9686) #12
  %9688 = icmp ne i32 %9687, 0
  br i1 %9688, label %9689, label %9706

9689:                                             ; preds = %9684
  %9690 = load i32, ptr %193, align 4, !tbaa !5
  %9691 = call ptr @__errno_location() #13
  store i32 %9690, ptr %9691, align 4, !tbaa !5
  %9692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9693 = load i32, ptr @test_count, align 4, !tbaa !5
  %9694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9695 = load i32, ptr %9694, align 4, !tbaa !5
  %9696 = call ptr @s2n_strerror(i32 noundef %9695, ptr noundef @.str.4)
  %9697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9698 = load i32, ptr %9697, align 4, !tbaa !5
  %9699 = call ptr @s2n_strerror_debug(i32 noundef %9698, ptr noundef @.str.4)
  %9700 = call ptr @__errno_location() #13
  %9701 = load i32, ptr %9700, align 4, !tbaa !5
  %9702 = call ptr @strerror(i32 noundef %9701) #12
  %9703 = call ptr @__errno_location() #13
  %9704 = load i32, ptr %9703, align 4, !tbaa !5
  %9705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9692, ptr noundef @.str.2, i32 noundef %9693, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 375, ptr noundef %9696, ptr noundef %9699, ptr noundef %9702, i32 noundef %9704) #12
  br label %9723

9706:                                             ; preds = %9684, %9677
  %9707 = load i32, ptr %193, align 4, !tbaa !5
  %9708 = call ptr @__errno_location() #13
  store i32 %9707, ptr %9708, align 4, !tbaa !5
  %9709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9710 = load i32, ptr @test_count, align 4, !tbaa !5
  %9711 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9712 = load i32, ptr %9711, align 4, !tbaa !5
  %9713 = call ptr @s2n_strerror(i32 noundef %9712, ptr noundef @.str.4)
  %9714 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9715 = load i32, ptr %9714, align 4, !tbaa !5
  %9716 = call ptr @s2n_strerror_debug(i32 noundef %9715, ptr noundef @.str.4)
  %9717 = call ptr @__errno_location() #13
  %9718 = load i32, ptr %9717, align 4, !tbaa !5
  %9719 = call ptr @strerror(i32 noundef %9718) #12
  %9720 = call ptr @__errno_location() #13
  %9721 = load i32, ptr %9720, align 4, !tbaa !5
  %9722 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9709, ptr noundef @.str.5, i32 noundef %9710, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 375, ptr noundef %9713, ptr noundef %9716, ptr noundef %9719, i32 noundef %9721) #12
  br label %9723

9723:                                             ; preds = %9706, %9689
  call void @llvm.lifetime.end.p0(i64 4, ptr %193) #12
  br label %9724

9724:                                             ; preds = %9723
  br label %9725

9725:                                             ; preds = %9724
  call void @exit(i32 noundef 1) #14
  unreachable

9726:                                             ; No predecessors!
  br label %9727

9727:                                             ; preds = %9726
  br label %9728

9728:                                             ; preds = %9727, %9667
  br label %9729

9729:                                             ; preds = %9728
  br label %9730

9730:                                             ; preds = %9729
  br label %9731

9731:                                             ; preds = %9730
  %9732 = load i32, ptr @test_count, align 4, !tbaa !5
  %9733 = add nsw i32 %9732, 1
  store i32 %9733, ptr @test_count, align 4, !tbaa !5
  %9734 = load ptr, ptr %182, align 8, !tbaa !9
  %9735 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9734, i32 0, i32 1
  %9736 = getelementptr inbounds %struct.s2n_kem_params, ptr %9735, i32 0, i32 0
  %9737 = load ptr, ptr %9736, align 8, !tbaa !53
  %9738 = load ptr, ptr %183, align 8, !tbaa !9
  %9739 = getelementptr inbounds %struct.s2n_kem_group, ptr %9738, i32 0, i32 3
  %9740 = load ptr, ptr %9739, align 8, !tbaa !51
  %9741 = icmp eq ptr %9737, %9740
  br i1 %9741, label %9795, label %9742

9742:                                             ; preds = %9731
  br label %9743

9743:                                             ; preds = %9742
  br label %9744

9744:                                             ; preds = %9743
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #12
  %9745 = call ptr @__errno_location() #13
  %9746 = load i32, ptr %9745, align 4, !tbaa !5
  store i32 %9746, ptr %194, align 4, !tbaa !5
  %9747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9748 = call i32 @s2n_print_stacktrace(ptr noundef %9747)
  %9749 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9750 = trunc i8 %9749 to i1
  br i1 %9750, label %9751, label %9773

9751:                                             ; preds = %9744
  %9752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9753 = call i32 @fileno(ptr noundef %9752) #12
  %9754 = call i32 @isatty(i32 noundef %9753) #12
  %9755 = icmp ne i32 %9754, 0
  br i1 %9755, label %9756, label %9773

9756:                                             ; preds = %9751
  %9757 = load i32, ptr %194, align 4, !tbaa !5
  %9758 = call ptr @__errno_location() #13
  store i32 %9757, ptr %9758, align 4, !tbaa !5
  %9759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9760 = load i32, ptr @test_count, align 4, !tbaa !5
  %9761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9762 = load i32, ptr %9761, align 4, !tbaa !5
  %9763 = call ptr @s2n_strerror(i32 noundef %9762, ptr noundef @.str.4)
  %9764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9765 = load i32, ptr %9764, align 4, !tbaa !5
  %9766 = call ptr @s2n_strerror_debug(i32 noundef %9765, ptr noundef @.str.4)
  %9767 = call ptr @__errno_location() #13
  %9768 = load i32, ptr %9767, align 4, !tbaa !5
  %9769 = call ptr @strerror(i32 noundef %9768) #12
  %9770 = call ptr @__errno_location() #13
  %9771 = load i32, ptr %9770, align 4, !tbaa !5
  %9772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9759, ptr noundef @.str.2, i32 noundef %9760, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 376, ptr noundef %9763, ptr noundef %9766, ptr noundef %9769, i32 noundef %9771) #12
  br label %9790

9773:                                             ; preds = %9751, %9744
  %9774 = load i32, ptr %194, align 4, !tbaa !5
  %9775 = call ptr @__errno_location() #13
  store i32 %9774, ptr %9775, align 4, !tbaa !5
  %9776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9777 = load i32, ptr @test_count, align 4, !tbaa !5
  %9778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9779 = load i32, ptr %9778, align 4, !tbaa !5
  %9780 = call ptr @s2n_strerror(i32 noundef %9779, ptr noundef @.str.4)
  %9781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9782 = load i32, ptr %9781, align 4, !tbaa !5
  %9783 = call ptr @s2n_strerror_debug(i32 noundef %9782, ptr noundef @.str.4)
  %9784 = call ptr @__errno_location() #13
  %9785 = load i32, ptr %9784, align 4, !tbaa !5
  %9786 = call ptr @strerror(i32 noundef %9785) #12
  %9787 = call ptr @__errno_location() #13
  %9788 = load i32, ptr %9787, align 4, !tbaa !5
  %9789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9776, ptr noundef @.str.5, i32 noundef %9777, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 376, ptr noundef %9780, ptr noundef %9783, ptr noundef %9786, i32 noundef %9788) #12
  br label %9790

9790:                                             ; preds = %9773, %9756
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #12
  br label %9791

9791:                                             ; preds = %9790
  br label %9792

9792:                                             ; preds = %9791
  call void @exit(i32 noundef 1) #14
  unreachable

9793:                                             ; No predecessors!
  br label %9794

9794:                                             ; preds = %9793
  br label %9795

9795:                                             ; preds = %9794, %9731
  br label %9796

9796:                                             ; preds = %9795
  br label %9797

9797:                                             ; preds = %9796
  br label %9798

9798:                                             ; preds = %9797
  %9799 = load i32, ptr @test_count, align 4, !tbaa !5
  %9800 = add nsw i32 %9799, 1
  store i32 %9800, ptr @test_count, align 4, !tbaa !5
  %9801 = load ptr, ptr %182, align 8, !tbaa !9
  %9802 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9801, i32 0, i32 2
  %9803 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %9802, i32 0, i32 0
  %9804 = load ptr, ptr %9803, align 8, !tbaa !55
  %9805 = load ptr, ptr %183, align 8, !tbaa !9
  %9806 = getelementptr inbounds %struct.s2n_kem_group, ptr %9805, i32 0, i32 2
  %9807 = load ptr, ptr %9806, align 8, !tbaa !54
  %9808 = icmp eq ptr %9804, %9807
  br i1 %9808, label %9862, label %9809

9809:                                             ; preds = %9798
  br label %9810

9810:                                             ; preds = %9809
  br label %9811

9811:                                             ; preds = %9810
  call void @llvm.lifetime.start.p0(i64 4, ptr %195) #12
  %9812 = call ptr @__errno_location() #13
  %9813 = load i32, ptr %9812, align 4, !tbaa !5
  store i32 %9813, ptr %195, align 4, !tbaa !5
  %9814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9815 = call i32 @s2n_print_stacktrace(ptr noundef %9814)
  %9816 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9817 = trunc i8 %9816 to i1
  br i1 %9817, label %9818, label %9840

9818:                                             ; preds = %9811
  %9819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9820 = call i32 @fileno(ptr noundef %9819) #12
  %9821 = call i32 @isatty(i32 noundef %9820) #12
  %9822 = icmp ne i32 %9821, 0
  br i1 %9822, label %9823, label %9840

9823:                                             ; preds = %9818
  %9824 = load i32, ptr %195, align 4, !tbaa !5
  %9825 = call ptr @__errno_location() #13
  store i32 %9824, ptr %9825, align 4, !tbaa !5
  %9826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9827 = load i32, ptr @test_count, align 4, !tbaa !5
  %9828 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9829 = load i32, ptr %9828, align 4, !tbaa !5
  %9830 = call ptr @s2n_strerror(i32 noundef %9829, ptr noundef @.str.4)
  %9831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9832 = load i32, ptr %9831, align 4, !tbaa !5
  %9833 = call ptr @s2n_strerror_debug(i32 noundef %9832, ptr noundef @.str.4)
  %9834 = call ptr @__errno_location() #13
  %9835 = load i32, ptr %9834, align 4, !tbaa !5
  %9836 = call ptr @strerror(i32 noundef %9835) #12
  %9837 = call ptr @__errno_location() #13
  %9838 = load i32, ptr %9837, align 4, !tbaa !5
  %9839 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9826, ptr noundef @.str.2, i32 noundef %9827, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 377, ptr noundef %9830, ptr noundef %9833, ptr noundef %9836, i32 noundef %9838) #12
  br label %9857

9840:                                             ; preds = %9818, %9811
  %9841 = load i32, ptr %195, align 4, !tbaa !5
  %9842 = call ptr @__errno_location() #13
  store i32 %9841, ptr %9842, align 4, !tbaa !5
  %9843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9844 = load i32, ptr @test_count, align 4, !tbaa !5
  %9845 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9846 = load i32, ptr %9845, align 4, !tbaa !5
  %9847 = call ptr @s2n_strerror(i32 noundef %9846, ptr noundef @.str.4)
  %9848 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9849 = load i32, ptr %9848, align 4, !tbaa !5
  %9850 = call ptr @s2n_strerror_debug(i32 noundef %9849, ptr noundef @.str.4)
  %9851 = call ptr @__errno_location() #13
  %9852 = load i32, ptr %9851, align 4, !tbaa !5
  %9853 = call ptr @strerror(i32 noundef %9852) #12
  %9854 = call ptr @__errno_location() #13
  %9855 = load i32, ptr %9854, align 4, !tbaa !5
  %9856 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9843, ptr noundef @.str.5, i32 noundef %9844, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 377, ptr noundef %9847, ptr noundef %9850, ptr noundef %9853, i32 noundef %9855) #12
  br label %9857

9857:                                             ; preds = %9840, %9823
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #12
  br label %9858

9858:                                             ; preds = %9857
  br label %9859

9859:                                             ; preds = %9858
  call void @exit(i32 noundef 1) #14
  unreachable

9860:                                             ; No predecessors!
  br label %9861

9861:                                             ; preds = %9860
  br label %9862

9862:                                             ; preds = %9861, %9798
  br label %9863

9863:                                             ; preds = %9862
  br label %9864

9864:                                             ; preds = %9863
  br label %9865

9865:                                             ; preds = %9864
  %9866 = load i32, ptr @test_count, align 4, !tbaa !5
  %9867 = add nsw i32 %9866, 1
  store i32 %9867, ptr @test_count, align 4, !tbaa !5
  %9868 = load ptr, ptr %170, align 8, !tbaa !9
  %9869 = getelementptr inbounds %struct.s2n_connection, ptr %9868, i32 0, i32 31
  %9870 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %9869, i32 0, i32 5
  %9871 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %9870, i32 0, i32 0
  %9872 = load ptr, ptr %9871, align 8, !tbaa !56
  %9873 = load ptr, ptr %183, align 8, !tbaa !9
  %9874 = icmp eq ptr %9872, %9873
  br i1 %9874, label %9928, label %9875

9875:                                             ; preds = %9865
  br label %9876

9876:                                             ; preds = %9875
  br label %9877

9877:                                             ; preds = %9876
  call void @llvm.lifetime.start.p0(i64 4, ptr %196) #12
  %9878 = call ptr @__errno_location() #13
  %9879 = load i32, ptr %9878, align 4, !tbaa !5
  store i32 %9879, ptr %196, align 4, !tbaa !5
  %9880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9881 = call i32 @s2n_print_stacktrace(ptr noundef %9880)
  %9882 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9883 = trunc i8 %9882 to i1
  br i1 %9883, label %9884, label %9906

9884:                                             ; preds = %9877
  %9885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9886 = call i32 @fileno(ptr noundef %9885) #12
  %9887 = call i32 @isatty(i32 noundef %9886) #12
  %9888 = icmp ne i32 %9887, 0
  br i1 %9888, label %9889, label %9906

9889:                                             ; preds = %9884
  %9890 = load i32, ptr %196, align 4, !tbaa !5
  %9891 = call ptr @__errno_location() #13
  store i32 %9890, ptr %9891, align 4, !tbaa !5
  %9892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9893 = load i32, ptr @test_count, align 4, !tbaa !5
  %9894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9895 = load i32, ptr %9894, align 4, !tbaa !5
  %9896 = call ptr @s2n_strerror(i32 noundef %9895, ptr noundef @.str.4)
  %9897 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9898 = load i32, ptr %9897, align 4, !tbaa !5
  %9899 = call ptr @s2n_strerror_debug(i32 noundef %9898, ptr noundef @.str.4)
  %9900 = call ptr @__errno_location() #13
  %9901 = load i32, ptr %9900, align 4, !tbaa !5
  %9902 = call ptr @strerror(i32 noundef %9901) #12
  %9903 = call ptr @__errno_location() #13
  %9904 = load i32, ptr %9903, align 4, !tbaa !5
  %9905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9892, ptr noundef @.str.2, i32 noundef %9893, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 378, ptr noundef %9896, ptr noundef %9899, ptr noundef %9902, i32 noundef %9904) #12
  br label %9923

9906:                                             ; preds = %9884, %9877
  %9907 = load i32, ptr %196, align 4, !tbaa !5
  %9908 = call ptr @__errno_location() #13
  store i32 %9907, ptr %9908, align 4, !tbaa !5
  %9909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9910 = load i32, ptr @test_count, align 4, !tbaa !5
  %9911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9912 = load i32, ptr %9911, align 4, !tbaa !5
  %9913 = call ptr @s2n_strerror(i32 noundef %9912, ptr noundef @.str.4)
  %9914 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9915 = load i32, ptr %9914, align 4, !tbaa !5
  %9916 = call ptr @s2n_strerror_debug(i32 noundef %9915, ptr noundef @.str.4)
  %9917 = call ptr @__errno_location() #13
  %9918 = load i32, ptr %9917, align 4, !tbaa !5
  %9919 = call ptr @strerror(i32 noundef %9918) #12
  %9920 = call ptr @__errno_location() #13
  %9921 = load i32, ptr %9920, align 4, !tbaa !5
  %9922 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9909, ptr noundef @.str.5, i32 noundef %9910, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 378, ptr noundef %9913, ptr noundef %9916, ptr noundef %9919, i32 noundef %9921) #12
  br label %9923

9923:                                             ; preds = %9906, %9889
  call void @llvm.lifetime.end.p0(i64 4, ptr %196) #12
  br label %9924

9924:                                             ; preds = %9923
  br label %9925

9925:                                             ; preds = %9924
  call void @exit(i32 noundef 1) #14
  unreachable

9926:                                             ; No predecessors!
  br label %9927

9927:                                             ; preds = %9926
  br label %9928

9928:                                             ; preds = %9927, %9865
  br label %9929

9929:                                             ; preds = %9928
  br label %9930

9930:                                             ; preds = %9929
  br label %9931

9931:                                             ; preds = %9930
  %9932 = load i32, ptr @test_count, align 4, !tbaa !5
  %9933 = add nsw i32 %9932, 1
  store i32 %9933, ptr @test_count, align 4, !tbaa !5
  %9934 = load ptr, ptr %170, align 8, !tbaa !9
  %9935 = getelementptr inbounds %struct.s2n_connection, ptr %9934, i32 0, i32 31
  %9936 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %9935, i32 0, i32 1
  %9937 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %9936, i32 0, i32 0
  %9938 = load ptr, ptr %9937, align 8, !tbaa !15
  %9939 = icmp eq ptr %9938, null
  br i1 %9939, label %9993, label %9940

9940:                                             ; preds = %9931
  br label %9941

9941:                                             ; preds = %9940
  br label %9942

9942:                                             ; preds = %9941
  call void @llvm.lifetime.start.p0(i64 4, ptr %197) #12
  %9943 = call ptr @__errno_location() #13
  %9944 = load i32, ptr %9943, align 4, !tbaa !5
  store i32 %9944, ptr %197, align 4, !tbaa !5
  %9945 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9946 = call i32 @s2n_print_stacktrace(ptr noundef %9945)
  %9947 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9948 = trunc i8 %9947 to i1
  br i1 %9948, label %9949, label %9971

9949:                                             ; preds = %9942
  %9950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9951 = call i32 @fileno(ptr noundef %9950) #12
  %9952 = call i32 @isatty(i32 noundef %9951) #12
  %9953 = icmp ne i32 %9952, 0
  br i1 %9953, label %9954, label %9971

9954:                                             ; preds = %9949
  %9955 = load i32, ptr %197, align 4, !tbaa !5
  %9956 = call ptr @__errno_location() #13
  store i32 %9955, ptr %9956, align 4, !tbaa !5
  %9957 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9958 = load i32, ptr @test_count, align 4, !tbaa !5
  %9959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9960 = load i32, ptr %9959, align 4, !tbaa !5
  %9961 = call ptr @s2n_strerror(i32 noundef %9960, ptr noundef @.str.4)
  %9962 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9963 = load i32, ptr %9962, align 4, !tbaa !5
  %9964 = call ptr @s2n_strerror_debug(i32 noundef %9963, ptr noundef @.str.4)
  %9965 = call ptr @__errno_location() #13
  %9966 = load i32, ptr %9965, align 4, !tbaa !5
  %9967 = call ptr @strerror(i32 noundef %9966) #12
  %9968 = call ptr @__errno_location() #13
  %9969 = load i32, ptr %9968, align 4, !tbaa !5
  %9970 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9957, ptr noundef @.str.2, i32 noundef %9958, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 379, ptr noundef %9961, ptr noundef %9964, ptr noundef %9967, i32 noundef %9969) #12
  br label %9988

9971:                                             ; preds = %9949, %9942
  %9972 = load i32, ptr %197, align 4, !tbaa !5
  %9973 = call ptr @__errno_location() #13
  store i32 %9972, ptr %9973, align 4, !tbaa !5
  %9974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9975 = load i32, ptr @test_count, align 4, !tbaa !5
  %9976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9977 = load i32, ptr %9976, align 4, !tbaa !5
  %9978 = call ptr @s2n_strerror(i32 noundef %9977, ptr noundef @.str.4)
  %9979 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9980 = load i32, ptr %9979, align 4, !tbaa !5
  %9981 = call ptr @s2n_strerror_debug(i32 noundef %9980, ptr noundef @.str.4)
  %9982 = call ptr @__errno_location() #13
  %9983 = load i32, ptr %9982, align 4, !tbaa !5
  %9984 = call ptr @strerror(i32 noundef %9983) #12
  %9985 = call ptr @__errno_location() #13
  %9986 = load i32, ptr %9985, align 4, !tbaa !5
  %9987 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9974, ptr noundef @.str.5, i32 noundef %9975, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 379, ptr noundef %9978, ptr noundef %9981, ptr noundef %9984, i32 noundef %9986) #12
  br label %9988

9988:                                             ; preds = %9971, %9954
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #12
  br label %9989

9989:                                             ; preds = %9988
  br label %9990

9990:                                             ; preds = %9989
  call void @exit(i32 noundef 1) #14
  unreachable

9991:                                             ; No predecessors!
  br label %9992

9992:                                             ; preds = %9991
  br label %9993

9993:                                             ; preds = %9992, %9931
  br label %9994

9994:                                             ; preds = %9993
  br label %9995

9995:                                             ; preds = %9994
  br label %9996

9996:                                             ; preds = %9995
  %9997 = load i32, ptr @test_count, align 4, !tbaa !5
  %9998 = add nsw i32 %9997, 1
  store i32 %9998, ptr @test_count, align 4, !tbaa !5
  %9999 = load ptr, ptr %170, align 8, !tbaa !9
  %10000 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %9999)
  br i1 %10000, label %10001, label %10054

10001:                                            ; preds = %9996
  br label %10002

10002:                                            ; preds = %10001
  br label %10003

10003:                                            ; preds = %10002
  call void @llvm.lifetime.start.p0(i64 4, ptr %198) #12
  %10004 = call ptr @__errno_location() #13
  %10005 = load i32, ptr %10004, align 4, !tbaa !5
  store i32 %10005, ptr %198, align 4, !tbaa !5
  %10006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10007 = call i32 @s2n_print_stacktrace(ptr noundef %10006)
  %10008 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10009 = trunc i8 %10008 to i1
  br i1 %10009, label %10010, label %10032

10010:                                            ; preds = %10003
  %10011 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10012 = call i32 @fileno(ptr noundef %10011) #12
  %10013 = call i32 @isatty(i32 noundef %10012) #12
  %10014 = icmp ne i32 %10013, 0
  br i1 %10014, label %10015, label %10032

10015:                                            ; preds = %10010
  %10016 = load i32, ptr %198, align 4, !tbaa !5
  %10017 = call ptr @__errno_location() #13
  store i32 %10016, ptr %10017, align 4, !tbaa !5
  %10018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10019 = load i32, ptr @test_count, align 4, !tbaa !5
  %10020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10021 = load i32, ptr %10020, align 4, !tbaa !5
  %10022 = call ptr @s2n_strerror(i32 noundef %10021, ptr noundef @.str.4)
  %10023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10024 = load i32, ptr %10023, align 4, !tbaa !5
  %10025 = call ptr @s2n_strerror_debug(i32 noundef %10024, ptr noundef @.str.4)
  %10026 = call ptr @__errno_location() #13
  %10027 = load i32, ptr %10026, align 4, !tbaa !5
  %10028 = call ptr @strerror(i32 noundef %10027) #12
  %10029 = call ptr @__errno_location() #13
  %10030 = load i32, ptr %10029, align 4, !tbaa !5
  %10031 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10018, ptr noundef @.str.2, i32 noundef %10019, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 380, ptr noundef %10022, ptr noundef %10025, ptr noundef %10028, i32 noundef %10030) #12
  br label %10049

10032:                                            ; preds = %10010, %10003
  %10033 = load i32, ptr %198, align 4, !tbaa !5
  %10034 = call ptr @__errno_location() #13
  store i32 %10033, ptr %10034, align 4, !tbaa !5
  %10035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10036 = load i32, ptr @test_count, align 4, !tbaa !5
  %10037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10038 = load i32, ptr %10037, align 4, !tbaa !5
  %10039 = call ptr @s2n_strerror(i32 noundef %10038, ptr noundef @.str.4)
  %10040 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10041 = load i32, ptr %10040, align 4, !tbaa !5
  %10042 = call ptr @s2n_strerror_debug(i32 noundef %10041, ptr noundef @.str.4)
  %10043 = call ptr @__errno_location() #13
  %10044 = load i32, ptr %10043, align 4, !tbaa !5
  %10045 = call ptr @strerror(i32 noundef %10044) #12
  %10046 = call ptr @__errno_location() #13
  %10047 = load i32, ptr %10046, align 4, !tbaa !5
  %10048 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10035, ptr noundef @.str.5, i32 noundef %10036, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 380, ptr noundef %10039, ptr noundef %10042, ptr noundef %10045, i32 noundef %10047) #12
  br label %10049

10049:                                            ; preds = %10032, %10015
  call void @llvm.lifetime.end.p0(i64 4, ptr %198) #12
  br label %10050

10050:                                            ; preds = %10049
  br label %10051

10051:                                            ; preds = %10050
  call void @exit(i32 noundef 1) #14
  unreachable

10052:                                            ; No predecessors!
  br label %10053

10053:                                            ; preds = %10052
  br label %10054

10054:                                            ; preds = %10053, %9996
  br label %10055

10055:                                            ; preds = %10054
  br label %10056

10056:                                            ; preds = %10055
  br label %10057

10057:                                            ; preds = %10056
  %10058 = load i32, ptr @test_count, align 4, !tbaa !5
  %10059 = add nsw i32 %10058, 1
  store i32 %10059, ptr @test_count, align 4, !tbaa !5
  %10060 = load ptr, ptr %170, align 8, !tbaa !9
  %10061 = call i32 @s2n_connection_free(ptr noundef %10060)
  %10062 = icmp eq i32 %10061, -1
  br i1 %10062, label %10063, label %10116

10063:                                            ; preds = %10057
  br label %10064

10064:                                            ; preds = %10063
  br label %10065

10065:                                            ; preds = %10064
  call void @llvm.lifetime.start.p0(i64 4, ptr %199) #12
  %10066 = call ptr @__errno_location() #13
  %10067 = load i32, ptr %10066, align 4, !tbaa !5
  store i32 %10067, ptr %199, align 4, !tbaa !5
  %10068 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10069 = call i32 @s2n_print_stacktrace(ptr noundef %10068)
  %10070 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10071 = trunc i8 %10070 to i1
  br i1 %10071, label %10072, label %10094

10072:                                            ; preds = %10065
  %10073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10074 = call i32 @fileno(ptr noundef %10073) #12
  %10075 = call i32 @isatty(i32 noundef %10074) #12
  %10076 = icmp ne i32 %10075, 0
  br i1 %10076, label %10077, label %10094

10077:                                            ; preds = %10072
  %10078 = load i32, ptr %199, align 4, !tbaa !5
  %10079 = call ptr @__errno_location() #13
  store i32 %10078, ptr %10079, align 4, !tbaa !5
  %10080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10081 = load i32, ptr @test_count, align 4, !tbaa !5
  %10082 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10083 = load i32, ptr %10082, align 4, !tbaa !5
  %10084 = call ptr @s2n_strerror(i32 noundef %10083, ptr noundef @.str.4)
  %10085 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10086 = load i32, ptr %10085, align 4, !tbaa !5
  %10087 = call ptr @s2n_strerror_debug(i32 noundef %10086, ptr noundef @.str.4)
  %10088 = call ptr @__errno_location() #13
  %10089 = load i32, ptr %10088, align 4, !tbaa !5
  %10090 = call ptr @strerror(i32 noundef %10089) #12
  %10091 = call ptr @__errno_location() #13
  %10092 = load i32, ptr %10091, align 4, !tbaa !5
  %10093 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10080, ptr noundef @.str.2, i32 noundef %10081, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 382, ptr noundef %10084, ptr noundef %10087, ptr noundef %10090, i32 noundef %10092) #12
  br label %10111

10094:                                            ; preds = %10072, %10065
  %10095 = load i32, ptr %199, align 4, !tbaa !5
  %10096 = call ptr @__errno_location() #13
  store i32 %10095, ptr %10096, align 4, !tbaa !5
  %10097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10098 = load i32, ptr @test_count, align 4, !tbaa !5
  %10099 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10100 = load i32, ptr %10099, align 4, !tbaa !5
  %10101 = call ptr @s2n_strerror(i32 noundef %10100, ptr noundef @.str.4)
  %10102 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10103 = load i32, ptr %10102, align 4, !tbaa !5
  %10104 = call ptr @s2n_strerror_debug(i32 noundef %10103, ptr noundef @.str.4)
  %10105 = call ptr @__errno_location() #13
  %10106 = load i32, ptr %10105, align 4, !tbaa !5
  %10107 = call ptr @strerror(i32 noundef %10106) #12
  %10108 = call ptr @__errno_location() #13
  %10109 = load i32, ptr %10108, align 4, !tbaa !5
  %10110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10097, ptr noundef @.str.5, i32 noundef %10098, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 382, ptr noundef %10101, ptr noundef %10104, ptr noundef %10107, i32 noundef %10109) #12
  br label %10111

10111:                                            ; preds = %10094, %10077
  call void @llvm.lifetime.end.p0(i64 4, ptr %199) #12
  br label %10112

10112:                                            ; preds = %10111
  br label %10113

10113:                                            ; preds = %10112
  call void @exit(i32 noundef 1) #14
  unreachable

10114:                                            ; No predecessors!
  br label %10115

10115:                                            ; preds = %10114
  br label %10116

10116:                                            ; preds = %10115, %10057
  br label %10117

10117:                                            ; preds = %10116
  br label %10118

10118:                                            ; preds = %10117
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #12
  store i32 0, ptr %10, align 4
  br label %10119

10119:                                            ; preds = %10118, %9465
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #12
  %10120 = load i32, ptr %10, align 4
  switch i32 %10120, label %11561 [
    i32 0, label %10121
  ]

10121:                                            ; preds = %10119
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #12
  store ptr null, ptr %200, align 8, !tbaa !9
  br label %10122

10122:                                            ; preds = %10121
  %10123 = load i32, ptr @test_count, align 4, !tbaa !5
  %10124 = add nsw i32 %10123, 1
  store i32 %10124, ptr @test_count, align 4, !tbaa !5
  %10125 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %10125, ptr %200, align 8, !tbaa !9
  %10126 = icmp eq ptr %10125, null
  br i1 %10126, label %10127, label %10180

10127:                                            ; preds = %10122
  br label %10128

10128:                                            ; preds = %10127
  br label %10129

10129:                                            ; preds = %10128
  call void @llvm.lifetime.start.p0(i64 4, ptr %201) #12
  %10130 = call ptr @__errno_location() #13
  %10131 = load i32, ptr %10130, align 4, !tbaa !5
  store i32 %10131, ptr %201, align 4, !tbaa !5
  %10132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10133 = call i32 @s2n_print_stacktrace(ptr noundef %10132)
  %10134 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10135 = trunc i8 %10134 to i1
  br i1 %10135, label %10136, label %10158

10136:                                            ; preds = %10129
  %10137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10138 = call i32 @fileno(ptr noundef %10137) #12
  %10139 = call i32 @isatty(i32 noundef %10138) #12
  %10140 = icmp ne i32 %10139, 0
  br i1 %10140, label %10141, label %10158

10141:                                            ; preds = %10136
  %10142 = load i32, ptr %201, align 4, !tbaa !5
  %10143 = call ptr @__errno_location() #13
  store i32 %10142, ptr %10143, align 4, !tbaa !5
  %10144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10145 = load i32, ptr @test_count, align 4, !tbaa !5
  %10146 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10147 = load i32, ptr %10146, align 4, !tbaa !5
  %10148 = call ptr @s2n_strerror(i32 noundef %10147, ptr noundef @.str.4)
  %10149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10150 = load i32, ptr %10149, align 4, !tbaa !5
  %10151 = call ptr @s2n_strerror_debug(i32 noundef %10150, ptr noundef @.str.4)
  %10152 = call ptr @__errno_location() #13
  %10153 = load i32, ptr %10152, align 4, !tbaa !5
  %10154 = call ptr @strerror(i32 noundef %10153) #12
  %10155 = call ptr @__errno_location() #13
  %10156 = load i32, ptr %10155, align 4, !tbaa !5
  %10157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10144, ptr noundef @.str.2, i32 noundef %10145, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 388, ptr noundef %10148, ptr noundef %10151, ptr noundef %10154, i32 noundef %10156) #12
  br label %10175

10158:                                            ; preds = %10136, %10129
  %10159 = load i32, ptr %201, align 4, !tbaa !5
  %10160 = call ptr @__errno_location() #13
  store i32 %10159, ptr %10160, align 4, !tbaa !5
  %10161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10162 = load i32, ptr @test_count, align 4, !tbaa !5
  %10163 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10164 = load i32, ptr %10163, align 4, !tbaa !5
  %10165 = call ptr @s2n_strerror(i32 noundef %10164, ptr noundef @.str.4)
  %10166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10167 = load i32, ptr %10166, align 4, !tbaa !5
  %10168 = call ptr @s2n_strerror_debug(i32 noundef %10167, ptr noundef @.str.4)
  %10169 = call ptr @__errno_location() #13
  %10170 = load i32, ptr %10169, align 4, !tbaa !5
  %10171 = call ptr @strerror(i32 noundef %10170) #12
  %10172 = call ptr @__errno_location() #13
  %10173 = load i32, ptr %10172, align 4, !tbaa !5
  %10174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10161, ptr noundef @.str.5, i32 noundef %10162, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 388, ptr noundef %10165, ptr noundef %10168, ptr noundef %10171, i32 noundef %10173) #12
  br label %10175

10175:                                            ; preds = %10158, %10141
  call void @llvm.lifetime.end.p0(i64 4, ptr %201) #12
  br label %10176

10176:                                            ; preds = %10175
  br label %10177

10177:                                            ; preds = %10176
  call void @exit(i32 noundef 1) #14
  unreachable

10178:                                            ; No predecessors!
  br label %10179

10179:                                            ; preds = %10178
  br label %10180

10180:                                            ; preds = %10179, %10122
  br label %10181

10181:                                            ; preds = %10180
  br label %10182

10182:                                            ; preds = %10181
  %10183 = load ptr, ptr %200, align 8, !tbaa !9
  %10184 = getelementptr inbounds %struct.s2n_connection, ptr %10183, i32 0, i32 2
  store ptr %54, ptr %10184, align 8, !tbaa !47
  br label %10185

10185:                                            ; preds = %10182
  %10186 = load i32, ptr @test_count, align 4, !tbaa !5
  %10187 = add nsw i32 %10186, 1
  store i32 %10187, ptr @test_count, align 4, !tbaa !5
  %10188 = load ptr, ptr %200, align 8, !tbaa !9
  %10189 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef %10188, i8 noundef zeroext 34)
  %10190 = icmp eq i32 %10189, -1
  br i1 %10190, label %10191, label %10244

10191:                                            ; preds = %10185
  br label %10192

10192:                                            ; preds = %10191
  br label %10193

10193:                                            ; preds = %10192
  call void @llvm.lifetime.start.p0(i64 4, ptr %202) #12
  %10194 = call ptr @__errno_location() #13
  %10195 = load i32, ptr %10194, align 4, !tbaa !5
  store i32 %10195, ptr %202, align 4, !tbaa !5
  %10196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10197 = call i32 @s2n_print_stacktrace(ptr noundef %10196)
  %10198 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10199 = trunc i8 %10198 to i1
  br i1 %10199, label %10200, label %10222

10200:                                            ; preds = %10193
  %10201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10202 = call i32 @fileno(ptr noundef %10201) #12
  %10203 = call i32 @isatty(i32 noundef %10202) #12
  %10204 = icmp ne i32 %10203, 0
  br i1 %10204, label %10205, label %10222

10205:                                            ; preds = %10200
  %10206 = load i32, ptr %202, align 4, !tbaa !5
  %10207 = call ptr @__errno_location() #13
  store i32 %10206, ptr %10207, align 4, !tbaa !5
  %10208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10209 = load i32, ptr @test_count, align 4, !tbaa !5
  %10210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10211 = load i32, ptr %10210, align 4, !tbaa !5
  %10212 = call ptr @s2n_strerror(i32 noundef %10211, ptr noundef @.str.4)
  %10213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10214 = load i32, ptr %10213, align 4, !tbaa !5
  %10215 = call ptr @s2n_strerror_debug(i32 noundef %10214, ptr noundef @.str.4)
  %10216 = call ptr @__errno_location() #13
  %10217 = load i32, ptr %10216, align 4, !tbaa !5
  %10218 = call ptr @strerror(i32 noundef %10217) #12
  %10219 = call ptr @__errno_location() #13
  %10220 = load i32, ptr %10219, align 4, !tbaa !5
  %10221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10208, ptr noundef @.str.2, i32 noundef %10209, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 390, ptr noundef %10212, ptr noundef %10215, ptr noundef %10218, i32 noundef %10220) #12
  br label %10239

10222:                                            ; preds = %10200, %10193
  %10223 = load i32, ptr %202, align 4, !tbaa !5
  %10224 = call ptr @__errno_location() #13
  store i32 %10223, ptr %10224, align 4, !tbaa !5
  %10225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10226 = load i32, ptr @test_count, align 4, !tbaa !5
  %10227 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10228 = load i32, ptr %10227, align 4, !tbaa !5
  %10229 = call ptr @s2n_strerror(i32 noundef %10228, ptr noundef @.str.4)
  %10230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10231 = load i32, ptr %10230, align 4, !tbaa !5
  %10232 = call ptr @s2n_strerror_debug(i32 noundef %10231, ptr noundef @.str.4)
  %10233 = call ptr @__errno_location() #13
  %10234 = load i32, ptr %10233, align 4, !tbaa !5
  %10235 = call ptr @strerror(i32 noundef %10234) #12
  %10236 = call ptr @__errno_location() #13
  %10237 = load i32, ptr %10236, align 4, !tbaa !5
  %10238 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10225, ptr noundef @.str.5, i32 noundef %10226, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 390, ptr noundef %10229, ptr noundef %10232, ptr noundef %10235, i32 noundef %10237) #12
  br label %10239

10239:                                            ; preds = %10222, %10205
  call void @llvm.lifetime.end.p0(i64 4, ptr %202) #12
  br label %10240

10240:                                            ; preds = %10239
  br label %10241

10241:                                            ; preds = %10240
  call void @exit(i32 noundef 1) #14
  unreachable

10242:                                            ; No predecessors!
  br label %10243

10243:                                            ; preds = %10242
  br label %10244

10244:                                            ; preds = %10243, %10185
  br label %10245

10245:                                            ; preds = %10244
  br label %10246

10246:                                            ; preds = %10245
  br label %10247

10247:                                            ; preds = %10246
  %10248 = load i32, ptr @test_count, align 4, !tbaa !5
  %10249 = add nsw i32 %10248, 1
  store i32 %10249, ptr @test_count, align 4, !tbaa !5
  %10250 = load ptr, ptr %200, align 8, !tbaa !9
  %10251 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef %10250)
  %10252 = getelementptr inbounds %struct.s2n_result, ptr %203, i32 0, i32 0
  store i32 %10251, ptr %10252, align 4
  %10253 = getelementptr inbounds %struct.s2n_result, ptr %203, i32 0, i32 0
  %10254 = load i32, ptr %10253, align 4
  %10255 = call zeroext i1 @s2n_result_is_ok(i32 %10254)
  br i1 %10255, label %10309, label %10256

10256:                                            ; preds = %10247
  br label %10257

10257:                                            ; preds = %10256
  br label %10258

10258:                                            ; preds = %10257
  call void @llvm.lifetime.start.p0(i64 4, ptr %204) #12
  %10259 = call ptr @__errno_location() #13
  %10260 = load i32, ptr %10259, align 4, !tbaa !5
  store i32 %10260, ptr %204, align 4, !tbaa !5
  %10261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10262 = call i32 @s2n_print_stacktrace(ptr noundef %10261)
  %10263 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10264 = trunc i8 %10263 to i1
  br i1 %10264, label %10265, label %10287

10265:                                            ; preds = %10258
  %10266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10267 = call i32 @fileno(ptr noundef %10266) #12
  %10268 = call i32 @isatty(i32 noundef %10267) #12
  %10269 = icmp ne i32 %10268, 0
  br i1 %10269, label %10270, label %10287

10270:                                            ; preds = %10265
  %10271 = load i32, ptr %204, align 4, !tbaa !5
  %10272 = call ptr @__errno_location() #13
  store i32 %10271, ptr %10272, align 4, !tbaa !5
  %10273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10274 = load i32, ptr @test_count, align 4, !tbaa !5
  %10275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10276 = load i32, ptr %10275, align 4, !tbaa !5
  %10277 = call ptr @s2n_strerror(i32 noundef %10276, ptr noundef @.str.4)
  %10278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10279 = load i32, ptr %10278, align 4, !tbaa !5
  %10280 = call ptr @s2n_strerror_debug(i32 noundef %10279, ptr noundef @.str.4)
  %10281 = call ptr @__errno_location() #13
  %10282 = load i32, ptr %10281, align 4, !tbaa !5
  %10283 = call ptr @strerror(i32 noundef %10282) #12
  %10284 = call ptr @__errno_location() #13
  %10285 = load i32, ptr %10284, align 4, !tbaa !5
  %10286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10273, ptr noundef @.str.2, i32 noundef %10274, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 391, ptr noundef %10277, ptr noundef %10280, ptr noundef %10283, i32 noundef %10285) #12
  br label %10304

10287:                                            ; preds = %10265, %10258
  %10288 = load i32, ptr %204, align 4, !tbaa !5
  %10289 = call ptr @__errno_location() #13
  store i32 %10288, ptr %10289, align 4, !tbaa !5
  %10290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10291 = load i32, ptr @test_count, align 4, !tbaa !5
  %10292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10293 = load i32, ptr %10292, align 4, !tbaa !5
  %10294 = call ptr @s2n_strerror(i32 noundef %10293, ptr noundef @.str.4)
  %10295 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10296 = load i32, ptr %10295, align 4, !tbaa !5
  %10297 = call ptr @s2n_strerror_debug(i32 noundef %10296, ptr noundef @.str.4)
  %10298 = call ptr @__errno_location() #13
  %10299 = load i32, ptr %10298, align 4, !tbaa !5
  %10300 = call ptr @strerror(i32 noundef %10299) #12
  %10301 = call ptr @__errno_location() #13
  %10302 = load i32, ptr %10301, align 4, !tbaa !5
  %10303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10290, ptr noundef @.str.5, i32 noundef %10291, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 391, ptr noundef %10294, ptr noundef %10297, ptr noundef %10300, i32 noundef %10302) #12
  br label %10304

10304:                                            ; preds = %10287, %10270
  call void @llvm.lifetime.end.p0(i64 4, ptr %204) #12
  br label %10305

10305:                                            ; preds = %10304
  br label %10306

10306:                                            ; preds = %10305
  call void @exit(i32 noundef 1) #14
  unreachable

10307:                                            ; No predecessors!
  br label %10308

10308:                                            ; preds = %10307
  br label %10309

10309:                                            ; preds = %10308, %10247
  br label %10310

10310:                                            ; preds = %10309
  br label %10311

10311:                                            ; preds = %10310
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #12
  store ptr null, ptr %205, align 8, !tbaa !9
  br label %10312

10312:                                            ; preds = %10311
  %10313 = load i32, ptr @test_count, align 4, !tbaa !5
  %10314 = add nsw i32 %10313, 1
  store i32 %10314, ptr @test_count, align 4, !tbaa !5
  %10315 = load ptr, ptr %200, align 8, !tbaa !9
  %10316 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %10315, ptr noundef %205)
  %10317 = icmp eq i32 %10316, -1
  br i1 %10317, label %10318, label %10371

10318:                                            ; preds = %10312
  br label %10319

10319:                                            ; preds = %10318
  br label %10320

10320:                                            ; preds = %10319
  call void @llvm.lifetime.start.p0(i64 4, ptr %206) #12
  %10321 = call ptr @__errno_location() #13
  %10322 = load i32, ptr %10321, align 4, !tbaa !5
  store i32 %10322, ptr %206, align 4, !tbaa !5
  %10323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10324 = call i32 @s2n_print_stacktrace(ptr noundef %10323)
  %10325 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10326 = trunc i8 %10325 to i1
  br i1 %10326, label %10327, label %10349

10327:                                            ; preds = %10320
  %10328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10329 = call i32 @fileno(ptr noundef %10328) #12
  %10330 = call i32 @isatty(i32 noundef %10329) #12
  %10331 = icmp ne i32 %10330, 0
  br i1 %10331, label %10332, label %10349

10332:                                            ; preds = %10327
  %10333 = load i32, ptr %206, align 4, !tbaa !5
  %10334 = call ptr @__errno_location() #13
  store i32 %10333, ptr %10334, align 4, !tbaa !5
  %10335 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10336 = load i32, ptr @test_count, align 4, !tbaa !5
  %10337 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10338 = load i32, ptr %10337, align 4, !tbaa !5
  %10339 = call ptr @s2n_strerror(i32 noundef %10338, ptr noundef @.str.4)
  %10340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10341 = load i32, ptr %10340, align 4, !tbaa !5
  %10342 = call ptr @s2n_strerror_debug(i32 noundef %10341, ptr noundef @.str.4)
  %10343 = call ptr @__errno_location() #13
  %10344 = load i32, ptr %10343, align 4, !tbaa !5
  %10345 = call ptr @strerror(i32 noundef %10344) #12
  %10346 = call ptr @__errno_location() #13
  %10347 = load i32, ptr %10346, align 4, !tbaa !5
  %10348 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10335, ptr noundef @.str.2, i32 noundef %10336, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 394, ptr noundef %10339, ptr noundef %10342, ptr noundef %10345, i32 noundef %10347) #12
  br label %10366

10349:                                            ; preds = %10327, %10320
  %10350 = load i32, ptr %206, align 4, !tbaa !5
  %10351 = call ptr @__errno_location() #13
  store i32 %10350, ptr %10351, align 4, !tbaa !5
  %10352 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10353 = load i32, ptr @test_count, align 4, !tbaa !5
  %10354 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10355 = load i32, ptr %10354, align 4, !tbaa !5
  %10356 = call ptr @s2n_strerror(i32 noundef %10355, ptr noundef @.str.4)
  %10357 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10358 = load i32, ptr %10357, align 4, !tbaa !5
  %10359 = call ptr @s2n_strerror_debug(i32 noundef %10358, ptr noundef @.str.4)
  %10360 = call ptr @__errno_location() #13
  %10361 = load i32, ptr %10360, align 4, !tbaa !5
  %10362 = call ptr @strerror(i32 noundef %10361) #12
  %10363 = call ptr @__errno_location() #13
  %10364 = load i32, ptr %10363, align 4, !tbaa !5
  %10365 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10352, ptr noundef @.str.5, i32 noundef %10353, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 394, ptr noundef %10356, ptr noundef %10359, ptr noundef %10362, i32 noundef %10364) #12
  br label %10366

10366:                                            ; preds = %10349, %10332
  call void @llvm.lifetime.end.p0(i64 4, ptr %206) #12
  br label %10367

10367:                                            ; preds = %10366
  br label %10368

10368:                                            ; preds = %10367
  call void @exit(i32 noundef 1) #14
  unreachable

10369:                                            ; No predecessors!
  br label %10370

10370:                                            ; preds = %10369
  br label %10371

10371:                                            ; preds = %10370, %10312
  br label %10372

10372:                                            ; preds = %10371
  br label %10373

10373:                                            ; preds = %10372
  br label %10374

10374:                                            ; preds = %10373
  %10375 = load i32, ptr @test_count, align 4, !tbaa !5
  %10376 = add nsw i32 %10375, 1
  store i32 %10376, ptr @test_count, align 4, !tbaa !5
  %10377 = load ptr, ptr %205, align 8, !tbaa !9
  %10378 = icmp eq ptr %10377, null
  br i1 %10378, label %10379, label %10432

10379:                                            ; preds = %10374
  br label %10380

10380:                                            ; preds = %10379
  br label %10381

10381:                                            ; preds = %10380
  call void @llvm.lifetime.start.p0(i64 4, ptr %207) #12
  %10382 = call ptr @__errno_location() #13
  %10383 = load i32, ptr %10382, align 4, !tbaa !5
  store i32 %10383, ptr %207, align 4, !tbaa !5
  %10384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10385 = call i32 @s2n_print_stacktrace(ptr noundef %10384)
  %10386 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10387 = trunc i8 %10386 to i1
  br i1 %10387, label %10388, label %10410

10388:                                            ; preds = %10381
  %10389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10390 = call i32 @fileno(ptr noundef %10389) #12
  %10391 = call i32 @isatty(i32 noundef %10390) #12
  %10392 = icmp ne i32 %10391, 0
  br i1 %10392, label %10393, label %10410

10393:                                            ; preds = %10388
  %10394 = load i32, ptr %207, align 4, !tbaa !5
  %10395 = call ptr @__errno_location() #13
  store i32 %10394, ptr %10395, align 4, !tbaa !5
  %10396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10397 = load i32, ptr @test_count, align 4, !tbaa !5
  %10398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10399 = load i32, ptr %10398, align 4, !tbaa !5
  %10400 = call ptr @s2n_strerror(i32 noundef %10399, ptr noundef @.str.4)
  %10401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10402 = load i32, ptr %10401, align 4, !tbaa !5
  %10403 = call ptr @s2n_strerror_debug(i32 noundef %10402, ptr noundef @.str.4)
  %10404 = call ptr @__errno_location() #13
  %10405 = load i32, ptr %10404, align 4, !tbaa !5
  %10406 = call ptr @strerror(i32 noundef %10405) #12
  %10407 = call ptr @__errno_location() #13
  %10408 = load i32, ptr %10407, align 4, !tbaa !5
  %10409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10396, ptr noundef @.str.2, i32 noundef %10397, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 395, ptr noundef %10400, ptr noundef %10403, ptr noundef %10406, i32 noundef %10408) #12
  br label %10427

10410:                                            ; preds = %10388, %10381
  %10411 = load i32, ptr %207, align 4, !tbaa !5
  %10412 = call ptr @__errno_location() #13
  store i32 %10411, ptr %10412, align 4, !tbaa !5
  %10413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10414 = load i32, ptr @test_count, align 4, !tbaa !5
  %10415 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10416 = load i32, ptr %10415, align 4, !tbaa !5
  %10417 = call ptr @s2n_strerror(i32 noundef %10416, ptr noundef @.str.4)
  %10418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10419 = load i32, ptr %10418, align 4, !tbaa !5
  %10420 = call ptr @s2n_strerror_debug(i32 noundef %10419, ptr noundef @.str.4)
  %10421 = call ptr @__errno_location() #13
  %10422 = load i32, ptr %10421, align 4, !tbaa !5
  %10423 = call ptr @strerror(i32 noundef %10422) #12
  %10424 = call ptr @__errno_location() #13
  %10425 = load i32, ptr %10424, align 4, !tbaa !5
  %10426 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10413, ptr noundef @.str.5, i32 noundef %10414, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 395, ptr noundef %10417, ptr noundef %10420, ptr noundef %10423, i32 noundef %10425) #12
  br label %10427

10427:                                            ; preds = %10410, %10393
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #12
  br label %10428

10428:                                            ; preds = %10427
  br label %10429

10429:                                            ; preds = %10428
  call void @exit(i32 noundef 1) #14
  unreachable

10430:                                            ; No predecessors!
  br label %10431

10431:                                            ; preds = %10430
  br label %10432

10432:                                            ; preds = %10431, %10374
  br label %10433

10433:                                            ; preds = %10432
  br label %10434

10434:                                            ; preds = %10433
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #12
  store ptr null, ptr %208, align 8, !tbaa !9
  br label %10435

10435:                                            ; preds = %10434
  %10436 = load i32, ptr @test_count, align 4, !tbaa !5
  %10437 = add nsw i32 %10436, 1
  store i32 %10437, ptr @test_count, align 4, !tbaa !5
  %10438 = load ptr, ptr %200, align 8, !tbaa !9
  %10439 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %10438, ptr noundef %208)
  %10440 = icmp eq i32 %10439, -1
  br i1 %10440, label %10441, label %10494

10441:                                            ; preds = %10435
  br label %10442

10442:                                            ; preds = %10441
  br label %10443

10443:                                            ; preds = %10442
  call void @llvm.lifetime.start.p0(i64 4, ptr %209) #12
  %10444 = call ptr @__errno_location() #13
  %10445 = load i32, ptr %10444, align 4, !tbaa !5
  store i32 %10445, ptr %209, align 4, !tbaa !5
  %10446 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10447 = call i32 @s2n_print_stacktrace(ptr noundef %10446)
  %10448 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10449 = trunc i8 %10448 to i1
  br i1 %10449, label %10450, label %10472

10450:                                            ; preds = %10443
  %10451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10452 = call i32 @fileno(ptr noundef %10451) #12
  %10453 = call i32 @isatty(i32 noundef %10452) #12
  %10454 = icmp ne i32 %10453, 0
  br i1 %10454, label %10455, label %10472

10455:                                            ; preds = %10450
  %10456 = load i32, ptr %209, align 4, !tbaa !5
  %10457 = call ptr @__errno_location() #13
  store i32 %10456, ptr %10457, align 4, !tbaa !5
  %10458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10459 = load i32, ptr @test_count, align 4, !tbaa !5
  %10460 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10461 = load i32, ptr %10460, align 4, !tbaa !5
  %10462 = call ptr @s2n_strerror(i32 noundef %10461, ptr noundef @.str.4)
  %10463 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10464 = load i32, ptr %10463, align 4, !tbaa !5
  %10465 = call ptr @s2n_strerror_debug(i32 noundef %10464, ptr noundef @.str.4)
  %10466 = call ptr @__errno_location() #13
  %10467 = load i32, ptr %10466, align 4, !tbaa !5
  %10468 = call ptr @strerror(i32 noundef %10467) #12
  %10469 = call ptr @__errno_location() #13
  %10470 = load i32, ptr %10469, align 4, !tbaa !5
  %10471 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10458, ptr noundef @.str.2, i32 noundef %10459, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 398, ptr noundef %10462, ptr noundef %10465, ptr noundef %10468, i32 noundef %10470) #12
  br label %10489

10472:                                            ; preds = %10450, %10443
  %10473 = load i32, ptr %209, align 4, !tbaa !5
  %10474 = call ptr @__errno_location() #13
  store i32 %10473, ptr %10474, align 4, !tbaa !5
  %10475 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10476 = load i32, ptr @test_count, align 4, !tbaa !5
  %10477 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10478 = load i32, ptr %10477, align 4, !tbaa !5
  %10479 = call ptr @s2n_strerror(i32 noundef %10478, ptr noundef @.str.4)
  %10480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10481 = load i32, ptr %10480, align 4, !tbaa !5
  %10482 = call ptr @s2n_strerror_debug(i32 noundef %10481, ptr noundef @.str.4)
  %10483 = call ptr @__errno_location() #13
  %10484 = load i32, ptr %10483, align 4, !tbaa !5
  %10485 = call ptr @strerror(i32 noundef %10484) #12
  %10486 = call ptr @__errno_location() #13
  %10487 = load i32, ptr %10486, align 4, !tbaa !5
  %10488 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10475, ptr noundef @.str.5, i32 noundef %10476, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 398, ptr noundef %10479, ptr noundef %10482, ptr noundef %10485, i32 noundef %10487) #12
  br label %10489

10489:                                            ; preds = %10472, %10455
  call void @llvm.lifetime.end.p0(i64 4, ptr %209) #12
  br label %10490

10490:                                            ; preds = %10489
  br label %10491

10491:                                            ; preds = %10490
  call void @exit(i32 noundef 1) #14
  unreachable

10492:                                            ; No predecessors!
  br label %10493

10493:                                            ; preds = %10492
  br label %10494

10494:                                            ; preds = %10493, %10435
  br label %10495

10495:                                            ; preds = %10494
  br label %10496

10496:                                            ; preds = %10495
  br label %10497

10497:                                            ; preds = %10496
  %10498 = load i32, ptr @test_count, align 4, !tbaa !5
  %10499 = add nsw i32 %10498, 1
  store i32 %10499, ptr @test_count, align 4, !tbaa !5
  %10500 = load ptr, ptr %208, align 8, !tbaa !9
  %10501 = icmp eq ptr %10500, null
  br i1 %10501, label %10502, label %10555

10502:                                            ; preds = %10497
  br label %10503

10503:                                            ; preds = %10502
  br label %10504

10504:                                            ; preds = %10503
  call void @llvm.lifetime.start.p0(i64 4, ptr %210) #12
  %10505 = call ptr @__errno_location() #13
  %10506 = load i32, ptr %10505, align 4, !tbaa !5
  store i32 %10506, ptr %210, align 4, !tbaa !5
  %10507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10508 = call i32 @s2n_print_stacktrace(ptr noundef %10507)
  %10509 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10510 = trunc i8 %10509 to i1
  br i1 %10510, label %10511, label %10533

10511:                                            ; preds = %10504
  %10512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10513 = call i32 @fileno(ptr noundef %10512) #12
  %10514 = call i32 @isatty(i32 noundef %10513) #12
  %10515 = icmp ne i32 %10514, 0
  br i1 %10515, label %10516, label %10533

10516:                                            ; preds = %10511
  %10517 = load i32, ptr %210, align 4, !tbaa !5
  %10518 = call ptr @__errno_location() #13
  store i32 %10517, ptr %10518, align 4, !tbaa !5
  %10519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10520 = load i32, ptr @test_count, align 4, !tbaa !5
  %10521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10522 = load i32, ptr %10521, align 4, !tbaa !5
  %10523 = call ptr @s2n_strerror(i32 noundef %10522, ptr noundef @.str.4)
  %10524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10525 = load i32, ptr %10524, align 4, !tbaa !5
  %10526 = call ptr @s2n_strerror_debug(i32 noundef %10525, ptr noundef @.str.4)
  %10527 = call ptr @__errno_location() #13
  %10528 = load i32, ptr %10527, align 4, !tbaa !5
  %10529 = call ptr @strerror(i32 noundef %10528) #12
  %10530 = call ptr @__errno_location() #13
  %10531 = load i32, ptr %10530, align 4, !tbaa !5
  %10532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10519, ptr noundef @.str.2, i32 noundef %10520, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 399, ptr noundef %10523, ptr noundef %10526, ptr noundef %10529, i32 noundef %10531) #12
  br label %10550

10533:                                            ; preds = %10511, %10504
  %10534 = load i32, ptr %210, align 4, !tbaa !5
  %10535 = call ptr @__errno_location() #13
  store i32 %10534, ptr %10535, align 4, !tbaa !5
  %10536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10537 = load i32, ptr @test_count, align 4, !tbaa !5
  %10538 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10539 = load i32, ptr %10538, align 4, !tbaa !5
  %10540 = call ptr @s2n_strerror(i32 noundef %10539, ptr noundef @.str.4)
  %10541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10542 = load i32, ptr %10541, align 4, !tbaa !5
  %10543 = call ptr @s2n_strerror_debug(i32 noundef %10542, ptr noundef @.str.4)
  %10544 = call ptr @__errno_location() #13
  %10545 = load i32, ptr %10544, align 4, !tbaa !5
  %10546 = call ptr @strerror(i32 noundef %10545) #12
  %10547 = call ptr @__errno_location() #13
  %10548 = load i32, ptr %10547, align 4, !tbaa !5
  %10549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10536, ptr noundef @.str.5, i32 noundef %10537, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 399, ptr noundef %10540, ptr noundef %10543, ptr noundef %10546, i32 noundef %10548) #12
  br label %10550

10550:                                            ; preds = %10533, %10516
  call void @llvm.lifetime.end.p0(i64 4, ptr %210) #12
  br label %10551

10551:                                            ; preds = %10550
  br label %10552

10552:                                            ; preds = %10551
  call void @exit(i32 noundef 1) #14
  unreachable

10553:                                            ; No predecessors!
  br label %10554

10554:                                            ; preds = %10553
  br label %10555

10555:                                            ; preds = %10554, %10497
  br label %10556

10556:                                            ; preds = %10555
  br label %10557

10557:                                            ; preds = %10556
  br label %10558

10558:                                            ; preds = %10557
  %10559 = load i32, ptr @test_count, align 4, !tbaa !5
  %10560 = add nsw i32 %10559, 1
  store i32 %10560, ptr @test_count, align 4, !tbaa !5
  %10561 = load ptr, ptr %200, align 8, !tbaa !9
  %10562 = getelementptr inbounds %struct.s2n_connection, ptr %10561, i32 0, i32 31
  %10563 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10562, i32 0, i32 1
  %10564 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %10563, i32 0, i32 0
  %10565 = load ptr, ptr %10564, align 8, !tbaa !15
  %10566 = icmp eq ptr %10565, null
  br i1 %10566, label %10620, label %10567

10567:                                            ; preds = %10558
  br label %10568

10568:                                            ; preds = %10567
  br label %10569

10569:                                            ; preds = %10568
  call void @llvm.lifetime.start.p0(i64 4, ptr %211) #12
  %10570 = call ptr @__errno_location() #13
  %10571 = load i32, ptr %10570, align 4, !tbaa !5
  store i32 %10571, ptr %211, align 4, !tbaa !5
  %10572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10573 = call i32 @s2n_print_stacktrace(ptr noundef %10572)
  %10574 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10575 = trunc i8 %10574 to i1
  br i1 %10575, label %10576, label %10598

10576:                                            ; preds = %10569
  %10577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10578 = call i32 @fileno(ptr noundef %10577) #12
  %10579 = call i32 @isatty(i32 noundef %10578) #12
  %10580 = icmp ne i32 %10579, 0
  br i1 %10580, label %10581, label %10598

10581:                                            ; preds = %10576
  %10582 = load i32, ptr %211, align 4, !tbaa !5
  %10583 = call ptr @__errno_location() #13
  store i32 %10582, ptr %10583, align 4, !tbaa !5
  %10584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10585 = load i32, ptr @test_count, align 4, !tbaa !5
  %10586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10587 = load i32, ptr %10586, align 4, !tbaa !5
  %10588 = call ptr @s2n_strerror(i32 noundef %10587, ptr noundef @.str.4)
  %10589 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10590 = load i32, ptr %10589, align 4, !tbaa !5
  %10591 = call ptr @s2n_strerror_debug(i32 noundef %10590, ptr noundef @.str.4)
  %10592 = call ptr @__errno_location() #13
  %10593 = load i32, ptr %10592, align 4, !tbaa !5
  %10594 = call ptr @strerror(i32 noundef %10593) #12
  %10595 = call ptr @__errno_location() #13
  %10596 = load i32, ptr %10595, align 4, !tbaa !5
  %10597 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10584, ptr noundef @.str.2, i32 noundef %10585, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 402, ptr noundef %10588, ptr noundef %10591, ptr noundef %10594, i32 noundef %10596) #12
  br label %10615

10598:                                            ; preds = %10576, %10569
  %10599 = load i32, ptr %211, align 4, !tbaa !5
  %10600 = call ptr @__errno_location() #13
  store i32 %10599, ptr %10600, align 4, !tbaa !5
  %10601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10602 = load i32, ptr @test_count, align 4, !tbaa !5
  %10603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10604 = load i32, ptr %10603, align 4, !tbaa !5
  %10605 = call ptr @s2n_strerror(i32 noundef %10604, ptr noundef @.str.4)
  %10606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10607 = load i32, ptr %10606, align 4, !tbaa !5
  %10608 = call ptr @s2n_strerror_debug(i32 noundef %10607, ptr noundef @.str.4)
  %10609 = call ptr @__errno_location() #13
  %10610 = load i32, ptr %10609, align 4, !tbaa !5
  %10611 = call ptr @strerror(i32 noundef %10610) #12
  %10612 = call ptr @__errno_location() #13
  %10613 = load i32, ptr %10612, align 4, !tbaa !5
  %10614 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10601, ptr noundef @.str.5, i32 noundef %10602, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 402, ptr noundef %10605, ptr noundef %10608, ptr noundef %10611, i32 noundef %10613) #12
  br label %10615

10615:                                            ; preds = %10598, %10581
  call void @llvm.lifetime.end.p0(i64 4, ptr %211) #12
  br label %10616

10616:                                            ; preds = %10615
  br label %10617

10617:                                            ; preds = %10616
  call void @exit(i32 noundef 1) #14
  unreachable

10618:                                            ; No predecessors!
  br label %10619

10619:                                            ; preds = %10618
  br label %10620

10620:                                            ; preds = %10619, %10558
  br label %10621

10621:                                            ; preds = %10620
  br label %10622

10622:                                            ; preds = %10621
  call void @llvm.lifetime.start.p0(i64 8, ptr %212) #12
  %10623 = load ptr, ptr %200, align 8, !tbaa !9
  %10624 = getelementptr inbounds %struct.s2n_connection, ptr %10623, i32 0, i32 31
  %10625 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10624, i32 0, i32 4
  store ptr %10625, ptr %212, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #12
  %10626 = load ptr, ptr %208, align 8, !tbaa !9
  %10627 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %10626, i32 0, i32 3
  %10628 = load ptr, ptr %10627, align 8, !tbaa !48
  %10629 = getelementptr inbounds ptr, ptr %10628, i64 0
  %10630 = load ptr, ptr %10629, align 8, !tbaa !9
  store ptr %10630, ptr %213, align 8, !tbaa !9
  %10631 = load ptr, ptr %213, align 8, !tbaa !9
  %10632 = load ptr, ptr %212, align 8, !tbaa !9
  %10633 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10632, i32 0, i32 0
  store ptr %10631, ptr %10633, align 8, !tbaa !50
  %10634 = load ptr, ptr %213, align 8, !tbaa !9
  %10635 = getelementptr inbounds %struct.s2n_kem_group, ptr %10634, i32 0, i32 3
  %10636 = load ptr, ptr %10635, align 8, !tbaa !51
  %10637 = load ptr, ptr %212, align 8, !tbaa !9
  %10638 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10637, i32 0, i32 1
  %10639 = getelementptr inbounds %struct.s2n_kem_params, ptr %10638, i32 0, i32 0
  store ptr %10636, ptr %10639, align 8, !tbaa !53
  %10640 = load ptr, ptr %213, align 8, !tbaa !9
  %10641 = getelementptr inbounds %struct.s2n_kem_group, ptr %10640, i32 0, i32 2
  %10642 = load ptr, ptr %10641, align 8, !tbaa !54
  %10643 = load ptr, ptr %212, align 8, !tbaa !9
  %10644 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10643, i32 0, i32 2
  %10645 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %10644, i32 0, i32 0
  store ptr %10642, ptr %10645, align 8, !tbaa !55
  br label %10646

10646:                                            ; preds = %10622
  %10647 = load i32, ptr @test_count, align 4, !tbaa !5
  %10648 = add nsw i32 %10647, 1
  store i32 %10648, ptr @test_count, align 4, !tbaa !5
  %10649 = load ptr, ptr %200, align 8, !tbaa !9
  %10650 = getelementptr inbounds %struct.s2n_connection, ptr %10649, i32 0, i32 31
  %10651 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10650, i32 0, i32 5
  %10652 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10651, i32 0, i32 0
  %10653 = load ptr, ptr %10652, align 8, !tbaa !56
  %10654 = icmp eq ptr %10653, null
  br i1 %10654, label %10708, label %10655

10655:                                            ; preds = %10646
  br label %10656

10656:                                            ; preds = %10655
  br label %10657

10657:                                            ; preds = %10656
  call void @llvm.lifetime.start.p0(i64 4, ptr %214) #12
  %10658 = call ptr @__errno_location() #13
  %10659 = load i32, ptr %10658, align 4, !tbaa !5
  store i32 %10659, ptr %214, align 4, !tbaa !5
  %10660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10661 = call i32 @s2n_print_stacktrace(ptr noundef %10660)
  %10662 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10663 = trunc i8 %10662 to i1
  br i1 %10663, label %10664, label %10686

10664:                                            ; preds = %10657
  %10665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10666 = call i32 @fileno(ptr noundef %10665) #12
  %10667 = call i32 @isatty(i32 noundef %10666) #12
  %10668 = icmp ne i32 %10667, 0
  br i1 %10668, label %10669, label %10686

10669:                                            ; preds = %10664
  %10670 = load i32, ptr %214, align 4, !tbaa !5
  %10671 = call ptr @__errno_location() #13
  store i32 %10670, ptr %10671, align 4, !tbaa !5
  %10672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10673 = load i32, ptr @test_count, align 4, !tbaa !5
  %10674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10675 = load i32, ptr %10674, align 4, !tbaa !5
  %10676 = call ptr @s2n_strerror(i32 noundef %10675, ptr noundef @.str.4)
  %10677 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10678 = load i32, ptr %10677, align 4, !tbaa !5
  %10679 = call ptr @s2n_strerror_debug(i32 noundef %10678, ptr noundef @.str.4)
  %10680 = call ptr @__errno_location() #13
  %10681 = load i32, ptr %10680, align 4, !tbaa !5
  %10682 = call ptr @strerror(i32 noundef %10681) #12
  %10683 = call ptr @__errno_location() #13
  %10684 = load i32, ptr %10683, align 4, !tbaa !5
  %10685 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10672, ptr noundef @.str.2, i32 noundef %10673, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 410, ptr noundef %10676, ptr noundef %10679, ptr noundef %10682, i32 noundef %10684) #12
  br label %10703

10686:                                            ; preds = %10664, %10657
  %10687 = load i32, ptr %214, align 4, !tbaa !5
  %10688 = call ptr @__errno_location() #13
  store i32 %10687, ptr %10688, align 4, !tbaa !5
  %10689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10690 = load i32, ptr @test_count, align 4, !tbaa !5
  %10691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10692 = load i32, ptr %10691, align 4, !tbaa !5
  %10693 = call ptr @s2n_strerror(i32 noundef %10692, ptr noundef @.str.4)
  %10694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10695 = load i32, ptr %10694, align 4, !tbaa !5
  %10696 = call ptr @s2n_strerror_debug(i32 noundef %10695, ptr noundef @.str.4)
  %10697 = call ptr @__errno_location() #13
  %10698 = load i32, ptr %10697, align 4, !tbaa !5
  %10699 = call ptr @strerror(i32 noundef %10698) #12
  %10700 = call ptr @__errno_location() #13
  %10701 = load i32, ptr %10700, align 4, !tbaa !5
  %10702 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10689, ptr noundef @.str.5, i32 noundef %10690, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 410, ptr noundef %10693, ptr noundef %10696, ptr noundef %10699, i32 noundef %10701) #12
  br label %10703

10703:                                            ; preds = %10686, %10669
  call void @llvm.lifetime.end.p0(i64 4, ptr %214) #12
  br label %10704

10704:                                            ; preds = %10703
  br label %10705

10705:                                            ; preds = %10704
  call void @exit(i32 noundef 1) #14
  unreachable

10706:                                            ; No predecessors!
  br label %10707

10707:                                            ; preds = %10706
  br label %10708

10708:                                            ; preds = %10707, %10646
  br label %10709

10709:                                            ; preds = %10708
  br label %10710

10710:                                            ; preds = %10709
  br label %10711

10711:                                            ; preds = %10710
  %10712 = load i32, ptr @test_count, align 4, !tbaa !5
  %10713 = add nsw i32 %10712, 1
  store i32 %10713, ptr @test_count, align 4, !tbaa !5
  %10714 = load ptr, ptr %200, align 8, !tbaa !9
  %10715 = getelementptr inbounds %struct.s2n_connection, ptr %10714, i32 0, i32 31
  %10716 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10715, i32 0, i32 5
  %10717 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10716, i32 0, i32 1
  %10718 = getelementptr inbounds %struct.s2n_kem_params, ptr %10717, i32 0, i32 0
  %10719 = load ptr, ptr %10718, align 8, !tbaa !57
  %10720 = icmp eq ptr %10719, null
  br i1 %10720, label %10774, label %10721

10721:                                            ; preds = %10711
  br label %10722

10722:                                            ; preds = %10721
  br label %10723

10723:                                            ; preds = %10722
  call void @llvm.lifetime.start.p0(i64 4, ptr %215) #12
  %10724 = call ptr @__errno_location() #13
  %10725 = load i32, ptr %10724, align 4, !tbaa !5
  store i32 %10725, ptr %215, align 4, !tbaa !5
  %10726 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10727 = call i32 @s2n_print_stacktrace(ptr noundef %10726)
  %10728 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10729 = trunc i8 %10728 to i1
  br i1 %10729, label %10730, label %10752

10730:                                            ; preds = %10723
  %10731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10732 = call i32 @fileno(ptr noundef %10731) #12
  %10733 = call i32 @isatty(i32 noundef %10732) #12
  %10734 = icmp ne i32 %10733, 0
  br i1 %10734, label %10735, label %10752

10735:                                            ; preds = %10730
  %10736 = load i32, ptr %215, align 4, !tbaa !5
  %10737 = call ptr @__errno_location() #13
  store i32 %10736, ptr %10737, align 4, !tbaa !5
  %10738 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10739 = load i32, ptr @test_count, align 4, !tbaa !5
  %10740 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10741 = load i32, ptr %10740, align 4, !tbaa !5
  %10742 = call ptr @s2n_strerror(i32 noundef %10741, ptr noundef @.str.4)
  %10743 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10744 = load i32, ptr %10743, align 4, !tbaa !5
  %10745 = call ptr @s2n_strerror_debug(i32 noundef %10744, ptr noundef @.str.4)
  %10746 = call ptr @__errno_location() #13
  %10747 = load i32, ptr %10746, align 4, !tbaa !5
  %10748 = call ptr @strerror(i32 noundef %10747) #12
  %10749 = call ptr @__errno_location() #13
  %10750 = load i32, ptr %10749, align 4, !tbaa !5
  %10751 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10738, ptr noundef @.str.2, i32 noundef %10739, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 411, ptr noundef %10742, ptr noundef %10745, ptr noundef %10748, i32 noundef %10750) #12
  br label %10769

10752:                                            ; preds = %10730, %10723
  %10753 = load i32, ptr %215, align 4, !tbaa !5
  %10754 = call ptr @__errno_location() #13
  store i32 %10753, ptr %10754, align 4, !tbaa !5
  %10755 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10756 = load i32, ptr @test_count, align 4, !tbaa !5
  %10757 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10758 = load i32, ptr %10757, align 4, !tbaa !5
  %10759 = call ptr @s2n_strerror(i32 noundef %10758, ptr noundef @.str.4)
  %10760 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10761 = load i32, ptr %10760, align 4, !tbaa !5
  %10762 = call ptr @s2n_strerror_debug(i32 noundef %10761, ptr noundef @.str.4)
  %10763 = call ptr @__errno_location() #13
  %10764 = load i32, ptr %10763, align 4, !tbaa !5
  %10765 = call ptr @strerror(i32 noundef %10764) #12
  %10766 = call ptr @__errno_location() #13
  %10767 = load i32, ptr %10766, align 4, !tbaa !5
  %10768 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10755, ptr noundef @.str.5, i32 noundef %10756, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 411, ptr noundef %10759, ptr noundef %10762, ptr noundef %10765, i32 noundef %10767) #12
  br label %10769

10769:                                            ; preds = %10752, %10735
  call void @llvm.lifetime.end.p0(i64 4, ptr %215) #12
  br label %10770

10770:                                            ; preds = %10769
  br label %10771

10771:                                            ; preds = %10770
  call void @exit(i32 noundef 1) #14
  unreachable

10772:                                            ; No predecessors!
  br label %10773

10773:                                            ; preds = %10772
  br label %10774

10774:                                            ; preds = %10773, %10711
  br label %10775

10775:                                            ; preds = %10774
  br label %10776

10776:                                            ; preds = %10775
  br label %10777

10777:                                            ; preds = %10776
  %10778 = load i32, ptr @test_count, align 4, !tbaa !5
  %10779 = add nsw i32 %10778, 1
  store i32 %10779, ptr @test_count, align 4, !tbaa !5
  %10780 = load ptr, ptr %200, align 8, !tbaa !9
  %10781 = getelementptr inbounds %struct.s2n_connection, ptr %10780, i32 0, i32 31
  %10782 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10781, i32 0, i32 5
  %10783 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10782, i32 0, i32 1
  %10784 = getelementptr inbounds %struct.s2n_kem_params, ptr %10783, i32 0, i32 1
  %10785 = getelementptr inbounds %struct.s2n_blob, ptr %10784, i32 0, i32 0
  %10786 = load ptr, ptr %10785, align 8, !tbaa !58
  %10787 = icmp eq ptr %10786, null
  br i1 %10787, label %10841, label %10788

10788:                                            ; preds = %10777
  br label %10789

10789:                                            ; preds = %10788
  br label %10790

10790:                                            ; preds = %10789
  call void @llvm.lifetime.start.p0(i64 4, ptr %216) #12
  %10791 = call ptr @__errno_location() #13
  %10792 = load i32, ptr %10791, align 4, !tbaa !5
  store i32 %10792, ptr %216, align 4, !tbaa !5
  %10793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10794 = call i32 @s2n_print_stacktrace(ptr noundef %10793)
  %10795 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10796 = trunc i8 %10795 to i1
  br i1 %10796, label %10797, label %10819

10797:                                            ; preds = %10790
  %10798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10799 = call i32 @fileno(ptr noundef %10798) #12
  %10800 = call i32 @isatty(i32 noundef %10799) #12
  %10801 = icmp ne i32 %10800, 0
  br i1 %10801, label %10802, label %10819

10802:                                            ; preds = %10797
  %10803 = load i32, ptr %216, align 4, !tbaa !5
  %10804 = call ptr @__errno_location() #13
  store i32 %10803, ptr %10804, align 4, !tbaa !5
  %10805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10806 = load i32, ptr @test_count, align 4, !tbaa !5
  %10807 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10808 = load i32, ptr %10807, align 4, !tbaa !5
  %10809 = call ptr @s2n_strerror(i32 noundef %10808, ptr noundef @.str.4)
  %10810 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10811 = load i32, ptr %10810, align 4, !tbaa !5
  %10812 = call ptr @s2n_strerror_debug(i32 noundef %10811, ptr noundef @.str.4)
  %10813 = call ptr @__errno_location() #13
  %10814 = load i32, ptr %10813, align 4, !tbaa !5
  %10815 = call ptr @strerror(i32 noundef %10814) #12
  %10816 = call ptr @__errno_location() #13
  %10817 = load i32, ptr %10816, align 4, !tbaa !5
  %10818 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10805, ptr noundef @.str.2, i32 noundef %10806, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 412, ptr noundef %10809, ptr noundef %10812, ptr noundef %10815, i32 noundef %10817) #12
  br label %10836

10819:                                            ; preds = %10797, %10790
  %10820 = load i32, ptr %216, align 4, !tbaa !5
  %10821 = call ptr @__errno_location() #13
  store i32 %10820, ptr %10821, align 4, !tbaa !5
  %10822 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10823 = load i32, ptr @test_count, align 4, !tbaa !5
  %10824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10825 = load i32, ptr %10824, align 4, !tbaa !5
  %10826 = call ptr @s2n_strerror(i32 noundef %10825, ptr noundef @.str.4)
  %10827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10828 = load i32, ptr %10827, align 4, !tbaa !5
  %10829 = call ptr @s2n_strerror_debug(i32 noundef %10828, ptr noundef @.str.4)
  %10830 = call ptr @__errno_location() #13
  %10831 = load i32, ptr %10830, align 4, !tbaa !5
  %10832 = call ptr @strerror(i32 noundef %10831) #12
  %10833 = call ptr @__errno_location() #13
  %10834 = load i32, ptr %10833, align 4, !tbaa !5
  %10835 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10822, ptr noundef @.str.5, i32 noundef %10823, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 412, ptr noundef %10826, ptr noundef %10829, ptr noundef %10832, i32 noundef %10834) #12
  br label %10836

10836:                                            ; preds = %10819, %10802
  call void @llvm.lifetime.end.p0(i64 4, ptr %216) #12
  br label %10837

10837:                                            ; preds = %10836
  br label %10838

10838:                                            ; preds = %10837
  call void @exit(i32 noundef 1) #14
  unreachable

10839:                                            ; No predecessors!
  br label %10840

10840:                                            ; preds = %10839
  br label %10841

10841:                                            ; preds = %10840, %10777
  br label %10842

10842:                                            ; preds = %10841
  br label %10843

10843:                                            ; preds = %10842
  br label %10844

10844:                                            ; preds = %10843
  %10845 = load i32, ptr @test_count, align 4, !tbaa !5
  %10846 = add nsw i32 %10845, 1
  store i32 %10846, ptr @test_count, align 4, !tbaa !5
  %10847 = load ptr, ptr %200, align 8, !tbaa !9
  %10848 = getelementptr inbounds %struct.s2n_connection, ptr %10847, i32 0, i32 31
  %10849 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10848, i32 0, i32 5
  %10850 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10849, i32 0, i32 2
  %10851 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %10850, i32 0, i32 0
  %10852 = load ptr, ptr %10851, align 8, !tbaa !59
  %10853 = icmp eq ptr %10852, null
  br i1 %10853, label %10907, label %10854

10854:                                            ; preds = %10844
  br label %10855

10855:                                            ; preds = %10854
  br label %10856

10856:                                            ; preds = %10855
  call void @llvm.lifetime.start.p0(i64 4, ptr %217) #12
  %10857 = call ptr @__errno_location() #13
  %10858 = load i32, ptr %10857, align 4, !tbaa !5
  store i32 %10858, ptr %217, align 4, !tbaa !5
  %10859 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10860 = call i32 @s2n_print_stacktrace(ptr noundef %10859)
  %10861 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10862 = trunc i8 %10861 to i1
  br i1 %10862, label %10863, label %10885

10863:                                            ; preds = %10856
  %10864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10865 = call i32 @fileno(ptr noundef %10864) #12
  %10866 = call i32 @isatty(i32 noundef %10865) #12
  %10867 = icmp ne i32 %10866, 0
  br i1 %10867, label %10868, label %10885

10868:                                            ; preds = %10863
  %10869 = load i32, ptr %217, align 4, !tbaa !5
  %10870 = call ptr @__errno_location() #13
  store i32 %10869, ptr %10870, align 4, !tbaa !5
  %10871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10872 = load i32, ptr @test_count, align 4, !tbaa !5
  %10873 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10874 = load i32, ptr %10873, align 4, !tbaa !5
  %10875 = call ptr @s2n_strerror(i32 noundef %10874, ptr noundef @.str.4)
  %10876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10877 = load i32, ptr %10876, align 4, !tbaa !5
  %10878 = call ptr @s2n_strerror_debug(i32 noundef %10877, ptr noundef @.str.4)
  %10879 = call ptr @__errno_location() #13
  %10880 = load i32, ptr %10879, align 4, !tbaa !5
  %10881 = call ptr @strerror(i32 noundef %10880) #12
  %10882 = call ptr @__errno_location() #13
  %10883 = load i32, ptr %10882, align 4, !tbaa !5
  %10884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10871, ptr noundef @.str.2, i32 noundef %10872, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 413, ptr noundef %10875, ptr noundef %10878, ptr noundef %10881, i32 noundef %10883) #12
  br label %10902

10885:                                            ; preds = %10863, %10856
  %10886 = load i32, ptr %217, align 4, !tbaa !5
  %10887 = call ptr @__errno_location() #13
  store i32 %10886, ptr %10887, align 4, !tbaa !5
  %10888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10889 = load i32, ptr @test_count, align 4, !tbaa !5
  %10890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10891 = load i32, ptr %10890, align 4, !tbaa !5
  %10892 = call ptr @s2n_strerror(i32 noundef %10891, ptr noundef @.str.4)
  %10893 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10894 = load i32, ptr %10893, align 4, !tbaa !5
  %10895 = call ptr @s2n_strerror_debug(i32 noundef %10894, ptr noundef @.str.4)
  %10896 = call ptr @__errno_location() #13
  %10897 = load i32, ptr %10896, align 4, !tbaa !5
  %10898 = call ptr @strerror(i32 noundef %10897) #12
  %10899 = call ptr @__errno_location() #13
  %10900 = load i32, ptr %10899, align 4, !tbaa !5
  %10901 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10888, ptr noundef @.str.5, i32 noundef %10889, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 413, ptr noundef %10892, ptr noundef %10895, ptr noundef %10898, i32 noundef %10900) #12
  br label %10902

10902:                                            ; preds = %10885, %10868
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #12
  br label %10903

10903:                                            ; preds = %10902
  br label %10904

10904:                                            ; preds = %10903
  call void @exit(i32 noundef 1) #14
  unreachable

10905:                                            ; No predecessors!
  br label %10906

10906:                                            ; preds = %10905
  br label %10907

10907:                                            ; preds = %10906, %10844
  br label %10908

10908:                                            ; preds = %10907
  br label %10909

10909:                                            ; preds = %10908
  br label %10910

10910:                                            ; preds = %10909
  %10911 = load i32, ptr @test_count, align 4, !tbaa !5
  %10912 = add nsw i32 %10911, 1
  store i32 %10912, ptr @test_count, align 4, !tbaa !5
  %10913 = load ptr, ptr %200, align 8, !tbaa !9
  %10914 = getelementptr inbounds %struct.s2n_connection, ptr %10913, i32 0, i32 31
  %10915 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10914, i32 0, i32 5
  %10916 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %10915, i32 0, i32 2
  %10917 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %10916, i32 0, i32 1
  %10918 = load ptr, ptr %10917, align 8, !tbaa !60
  %10919 = icmp eq ptr %10918, null
  br i1 %10919, label %10973, label %10920

10920:                                            ; preds = %10910
  br label %10921

10921:                                            ; preds = %10920
  br label %10922

10922:                                            ; preds = %10921
  call void @llvm.lifetime.start.p0(i64 4, ptr %218) #12
  %10923 = call ptr @__errno_location() #13
  %10924 = load i32, ptr %10923, align 4, !tbaa !5
  store i32 %10924, ptr %218, align 4, !tbaa !5
  %10925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10926 = call i32 @s2n_print_stacktrace(ptr noundef %10925)
  %10927 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10928 = trunc i8 %10927 to i1
  br i1 %10928, label %10929, label %10951

10929:                                            ; preds = %10922
  %10930 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10931 = call i32 @fileno(ptr noundef %10930) #12
  %10932 = call i32 @isatty(i32 noundef %10931) #12
  %10933 = icmp ne i32 %10932, 0
  br i1 %10933, label %10934, label %10951

10934:                                            ; preds = %10929
  %10935 = load i32, ptr %218, align 4, !tbaa !5
  %10936 = call ptr @__errno_location() #13
  store i32 %10935, ptr %10936, align 4, !tbaa !5
  %10937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10938 = load i32, ptr @test_count, align 4, !tbaa !5
  %10939 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10940 = load i32, ptr %10939, align 4, !tbaa !5
  %10941 = call ptr @s2n_strerror(i32 noundef %10940, ptr noundef @.str.4)
  %10942 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10943 = load i32, ptr %10942, align 4, !tbaa !5
  %10944 = call ptr @s2n_strerror_debug(i32 noundef %10943, ptr noundef @.str.4)
  %10945 = call ptr @__errno_location() #13
  %10946 = load i32, ptr %10945, align 4, !tbaa !5
  %10947 = call ptr @strerror(i32 noundef %10946) #12
  %10948 = call ptr @__errno_location() #13
  %10949 = load i32, ptr %10948, align 4, !tbaa !5
  %10950 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10937, ptr noundef @.str.2, i32 noundef %10938, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 414, ptr noundef %10941, ptr noundef %10944, ptr noundef %10947, i32 noundef %10949) #12
  br label %10968

10951:                                            ; preds = %10929, %10922
  %10952 = load i32, ptr %218, align 4, !tbaa !5
  %10953 = call ptr @__errno_location() #13
  store i32 %10952, ptr %10953, align 4, !tbaa !5
  %10954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10955 = load i32, ptr @test_count, align 4, !tbaa !5
  %10956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10957 = load i32, ptr %10956, align 4, !tbaa !5
  %10958 = call ptr @s2n_strerror(i32 noundef %10957, ptr noundef @.str.4)
  %10959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10960 = load i32, ptr %10959, align 4, !tbaa !5
  %10961 = call ptr @s2n_strerror_debug(i32 noundef %10960, ptr noundef @.str.4)
  %10962 = call ptr @__errno_location() #13
  %10963 = load i32, ptr %10962, align 4, !tbaa !5
  %10964 = call ptr @strerror(i32 noundef %10963) #12
  %10965 = call ptr @__errno_location() #13
  %10966 = load i32, ptr %10965, align 4, !tbaa !5
  %10967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10954, ptr noundef @.str.5, i32 noundef %10955, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 414, ptr noundef %10958, ptr noundef %10961, ptr noundef %10964, i32 noundef %10966) #12
  br label %10968

10968:                                            ; preds = %10951, %10934
  call void @llvm.lifetime.end.p0(i64 4, ptr %218) #12
  br label %10969

10969:                                            ; preds = %10968
  br label %10970

10970:                                            ; preds = %10969
  call void @exit(i32 noundef 1) #14
  unreachable

10971:                                            ; No predecessors!
  br label %10972

10972:                                            ; preds = %10971
  br label %10973

10973:                                            ; preds = %10972, %10910
  br label %10974

10974:                                            ; preds = %10973
  br label %10975

10975:                                            ; preds = %10974
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #12
  %10976 = load ptr, ptr %200, align 8, !tbaa !9
  %10977 = getelementptr inbounds %struct.s2n_connection, ptr %10976, i32 0, i32 31
  %10978 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %10977, i32 0, i32 3
  store ptr %10978, ptr %219, align 8, !tbaa !9
  %10979 = load ptr, ptr %205, align 8, !tbaa !9
  %10980 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %10979, i32 0, i32 1
  %10981 = load ptr, ptr %10980, align 8, !tbaa !43
  %10982 = getelementptr inbounds ptr, ptr %10981, i64 0
  %10983 = load ptr, ptr %10982, align 8, !tbaa !9
  %10984 = load ptr, ptr %219, align 8, !tbaa !9
  %10985 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %10984, i32 0, i32 0
  store ptr %10983, ptr %10985, align 8, !tbaa !68
  br label %10986

10986:                                            ; preds = %10975
  %10987 = load i32, ptr @test_count, align 4, !tbaa !5
  %10988 = add nsw i32 %10987, 1
  store i32 %10988, ptr @test_count, align 4, !tbaa !5
  %10989 = load ptr, ptr %219, align 8, !tbaa !9
  %10990 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef %10989)
  %10991 = icmp eq i32 %10990, -1
  br i1 %10991, label %10992, label %11045

10992:                                            ; preds = %10986
  br label %10993

10993:                                            ; preds = %10992
  br label %10994

10994:                                            ; preds = %10993
  call void @llvm.lifetime.start.p0(i64 4, ptr %220) #12
  %10995 = call ptr @__errno_location() #13
  %10996 = load i32, ptr %10995, align 4, !tbaa !5
  store i32 %10996, ptr %220, align 4, !tbaa !5
  %10997 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10998 = call i32 @s2n_print_stacktrace(ptr noundef %10997)
  %10999 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11000 = trunc i8 %10999 to i1
  br i1 %11000, label %11001, label %11023

11001:                                            ; preds = %10994
  %11002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11003 = call i32 @fileno(ptr noundef %11002) #12
  %11004 = call i32 @isatty(i32 noundef %11003) #12
  %11005 = icmp ne i32 %11004, 0
  br i1 %11005, label %11006, label %11023

11006:                                            ; preds = %11001
  %11007 = load i32, ptr %220, align 4, !tbaa !5
  %11008 = call ptr @__errno_location() #13
  store i32 %11007, ptr %11008, align 4, !tbaa !5
  %11009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11010 = load i32, ptr @test_count, align 4, !tbaa !5
  %11011 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11012 = load i32, ptr %11011, align 4, !tbaa !5
  %11013 = call ptr @s2n_strerror(i32 noundef %11012, ptr noundef @.str.4)
  %11014 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11015 = load i32, ptr %11014, align 4, !tbaa !5
  %11016 = call ptr @s2n_strerror_debug(i32 noundef %11015, ptr noundef @.str.4)
  %11017 = call ptr @__errno_location() #13
  %11018 = load i32, ptr %11017, align 4, !tbaa !5
  %11019 = call ptr @strerror(i32 noundef %11018) #12
  %11020 = call ptr @__errno_location() #13
  %11021 = load i32, ptr %11020, align 4, !tbaa !5
  %11022 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11009, ptr noundef @.str.2, i32 noundef %11010, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 419, ptr noundef %11013, ptr noundef %11016, ptr noundef %11019, i32 noundef %11021) #12
  br label %11040

11023:                                            ; preds = %11001, %10994
  %11024 = load i32, ptr %220, align 4, !tbaa !5
  %11025 = call ptr @__errno_location() #13
  store i32 %11024, ptr %11025, align 4, !tbaa !5
  %11026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11027 = load i32, ptr @test_count, align 4, !tbaa !5
  %11028 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11029 = load i32, ptr %11028, align 4, !tbaa !5
  %11030 = call ptr @s2n_strerror(i32 noundef %11029, ptr noundef @.str.4)
  %11031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11032 = load i32, ptr %11031, align 4, !tbaa !5
  %11033 = call ptr @s2n_strerror_debug(i32 noundef %11032, ptr noundef @.str.4)
  %11034 = call ptr @__errno_location() #13
  %11035 = load i32, ptr %11034, align 4, !tbaa !5
  %11036 = call ptr @strerror(i32 noundef %11035) #12
  %11037 = call ptr @__errno_location() #13
  %11038 = load i32, ptr %11037, align 4, !tbaa !5
  %11039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11026, ptr noundef @.str.5, i32 noundef %11027, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 419, ptr noundef %11030, ptr noundef %11033, ptr noundef %11036, i32 noundef %11038) #12
  br label %11040

11040:                                            ; preds = %11023, %11006
  call void @llvm.lifetime.end.p0(i64 4, ptr %220) #12
  br label %11041

11041:                                            ; preds = %11040
  br label %11042

11042:                                            ; preds = %11041
  call void @exit(i32 noundef 1) #14
  unreachable

11043:                                            ; No predecessors!
  br label %11044

11044:                                            ; preds = %11043
  br label %11045

11045:                                            ; preds = %11044, %10986
  br label %11046

11046:                                            ; preds = %11045
  br label %11047

11047:                                            ; preds = %11046
  br label %11048

11048:                                            ; preds = %11047
  %11049 = load i32, ptr @test_count, align 4, !tbaa !5
  %11050 = add nsw i32 %11049, 1
  store i32 %11050, ptr @test_count, align 4, !tbaa !5
  %11051 = load ptr, ptr %200, align 8, !tbaa !9
  %11052 = call i32 @s2n_extensions_server_key_share_select(ptr noundef %11051)
  %11053 = icmp eq i32 %11052, -1
  br i1 %11053, label %11054, label %11107

11054:                                            ; preds = %11048
  br label %11055

11055:                                            ; preds = %11054
  br label %11056

11056:                                            ; preds = %11055
  call void @llvm.lifetime.start.p0(i64 4, ptr %221) #12
  %11057 = call ptr @__errno_location() #13
  %11058 = load i32, ptr %11057, align 4, !tbaa !5
  store i32 %11058, ptr %221, align 4, !tbaa !5
  %11059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11060 = call i32 @s2n_print_stacktrace(ptr noundef %11059)
  %11061 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11062 = trunc i8 %11061 to i1
  br i1 %11062, label %11063, label %11085

11063:                                            ; preds = %11056
  %11064 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11065 = call i32 @fileno(ptr noundef %11064) #12
  %11066 = call i32 @isatty(i32 noundef %11065) #12
  %11067 = icmp ne i32 %11066, 0
  br i1 %11067, label %11068, label %11085

11068:                                            ; preds = %11063
  %11069 = load i32, ptr %221, align 4, !tbaa !5
  %11070 = call ptr @__errno_location() #13
  store i32 %11069, ptr %11070, align 4, !tbaa !5
  %11071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11072 = load i32, ptr @test_count, align 4, !tbaa !5
  %11073 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11074 = load i32, ptr %11073, align 4, !tbaa !5
  %11075 = call ptr @s2n_strerror(i32 noundef %11074, ptr noundef @.str.4)
  %11076 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11077 = load i32, ptr %11076, align 4, !tbaa !5
  %11078 = call ptr @s2n_strerror_debug(i32 noundef %11077, ptr noundef @.str.4)
  %11079 = call ptr @__errno_location() #13
  %11080 = load i32, ptr %11079, align 4, !tbaa !5
  %11081 = call ptr @strerror(i32 noundef %11080) #12
  %11082 = call ptr @__errno_location() #13
  %11083 = load i32, ptr %11082, align 4, !tbaa !5
  %11084 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11071, ptr noundef @.str.2, i32 noundef %11072, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 421, ptr noundef %11075, ptr noundef %11078, ptr noundef %11081, i32 noundef %11083) #12
  br label %11102

11085:                                            ; preds = %11063, %11056
  %11086 = load i32, ptr %221, align 4, !tbaa !5
  %11087 = call ptr @__errno_location() #13
  store i32 %11086, ptr %11087, align 4, !tbaa !5
  %11088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11089 = load i32, ptr @test_count, align 4, !tbaa !5
  %11090 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11091 = load i32, ptr %11090, align 4, !tbaa !5
  %11092 = call ptr @s2n_strerror(i32 noundef %11091, ptr noundef @.str.4)
  %11093 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11094 = load i32, ptr %11093, align 4, !tbaa !5
  %11095 = call ptr @s2n_strerror_debug(i32 noundef %11094, ptr noundef @.str.4)
  %11096 = call ptr @__errno_location() #13
  %11097 = load i32, ptr %11096, align 4, !tbaa !5
  %11098 = call ptr @strerror(i32 noundef %11097) #12
  %11099 = call ptr @__errno_location() #13
  %11100 = load i32, ptr %11099, align 4, !tbaa !5
  %11101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11088, ptr noundef @.str.5, i32 noundef %11089, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 421, ptr noundef %11092, ptr noundef %11095, ptr noundef %11098, i32 noundef %11100) #12
  br label %11102

11102:                                            ; preds = %11085, %11068
  call void @llvm.lifetime.end.p0(i64 4, ptr %221) #12
  br label %11103

11103:                                            ; preds = %11102
  br label %11104

11104:                                            ; preds = %11103
  call void @exit(i32 noundef 1) #14
  unreachable

11105:                                            ; No predecessors!
  br label %11106

11106:                                            ; preds = %11105
  br label %11107

11107:                                            ; preds = %11106, %11048
  br label %11108

11108:                                            ; preds = %11107
  br label %11109

11109:                                            ; preds = %11108
  br label %11110

11110:                                            ; preds = %11109
  %11111 = load i32, ptr @test_count, align 4, !tbaa !5
  %11112 = add nsw i32 %11111, 1
  store i32 %11112, ptr @test_count, align 4, !tbaa !5
  %11113 = load ptr, ptr %200, align 8, !tbaa !9
  %11114 = getelementptr inbounds %struct.s2n_connection, ptr %11113, i32 0, i32 31
  %11115 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %11114, i32 0, i32 1
  %11116 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %11115, i32 0, i32 0
  %11117 = load ptr, ptr %11116, align 8, !tbaa !15
  %11118 = icmp eq ptr %11117, null
  br i1 %11118, label %11172, label %11119

11119:                                            ; preds = %11110
  br label %11120

11120:                                            ; preds = %11119
  br label %11121

11121:                                            ; preds = %11120
  call void @llvm.lifetime.start.p0(i64 4, ptr %222) #12
  %11122 = call ptr @__errno_location() #13
  %11123 = load i32, ptr %11122, align 4, !tbaa !5
  store i32 %11123, ptr %222, align 4, !tbaa !5
  %11124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11125 = call i32 @s2n_print_stacktrace(ptr noundef %11124)
  %11126 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11127 = trunc i8 %11126 to i1
  br i1 %11127, label %11128, label %11150

11128:                                            ; preds = %11121
  %11129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11130 = call i32 @fileno(ptr noundef %11129) #12
  %11131 = call i32 @isatty(i32 noundef %11130) #12
  %11132 = icmp ne i32 %11131, 0
  br i1 %11132, label %11133, label %11150

11133:                                            ; preds = %11128
  %11134 = load i32, ptr %222, align 4, !tbaa !5
  %11135 = call ptr @__errno_location() #13
  store i32 %11134, ptr %11135, align 4, !tbaa !5
  %11136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11137 = load i32, ptr @test_count, align 4, !tbaa !5
  %11138 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11139 = load i32, ptr %11138, align 4, !tbaa !5
  %11140 = call ptr @s2n_strerror(i32 noundef %11139, ptr noundef @.str.4)
  %11141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11142 = load i32, ptr %11141, align 4, !tbaa !5
  %11143 = call ptr @s2n_strerror_debug(i32 noundef %11142, ptr noundef @.str.4)
  %11144 = call ptr @__errno_location() #13
  %11145 = load i32, ptr %11144, align 4, !tbaa !5
  %11146 = call ptr @strerror(i32 noundef %11145) #12
  %11147 = call ptr @__errno_location() #13
  %11148 = load i32, ptr %11147, align 4, !tbaa !5
  %11149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11136, ptr noundef @.str.2, i32 noundef %11137, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 423, ptr noundef %11140, ptr noundef %11143, ptr noundef %11146, i32 noundef %11148) #12
  br label %11167

11150:                                            ; preds = %11128, %11121
  %11151 = load i32, ptr %222, align 4, !tbaa !5
  %11152 = call ptr @__errno_location() #13
  store i32 %11151, ptr %11152, align 4, !tbaa !5
  %11153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11154 = load i32, ptr @test_count, align 4, !tbaa !5
  %11155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11156 = load i32, ptr %11155, align 4, !tbaa !5
  %11157 = call ptr @s2n_strerror(i32 noundef %11156, ptr noundef @.str.4)
  %11158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11159 = load i32, ptr %11158, align 4, !tbaa !5
  %11160 = call ptr @s2n_strerror_debug(i32 noundef %11159, ptr noundef @.str.4)
  %11161 = call ptr @__errno_location() #13
  %11162 = load i32, ptr %11161, align 4, !tbaa !5
  %11163 = call ptr @strerror(i32 noundef %11162) #12
  %11164 = call ptr @__errno_location() #13
  %11165 = load i32, ptr %11164, align 4, !tbaa !5
  %11166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11153, ptr noundef @.str.5, i32 noundef %11154, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 423, ptr noundef %11157, ptr noundef %11160, ptr noundef %11163, i32 noundef %11165) #12
  br label %11167

11167:                                            ; preds = %11150, %11133
  call void @llvm.lifetime.end.p0(i64 4, ptr %222) #12
  br label %11168

11168:                                            ; preds = %11167
  br label %11169

11169:                                            ; preds = %11168
  call void @exit(i32 noundef 1) #14
  unreachable

11170:                                            ; No predecessors!
  br label %11171

11171:                                            ; preds = %11170
  br label %11172

11172:                                            ; preds = %11171, %11110
  br label %11173

11173:                                            ; preds = %11172
  br label %11174

11174:                                            ; preds = %11173
  br label %11175

11175:                                            ; preds = %11174
  %11176 = load i32, ptr @test_count, align 4, !tbaa !5
  %11177 = add nsw i32 %11176, 1
  store i32 %11177, ptr @test_count, align 4, !tbaa !5
  %11178 = load ptr, ptr %212, align 8, !tbaa !9
  %11179 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %11178, i32 0, i32 0
  %11180 = load ptr, ptr %11179, align 8, !tbaa !50
  %11181 = load ptr, ptr %213, align 8, !tbaa !9
  %11182 = icmp eq ptr %11180, %11181
  br i1 %11182, label %11236, label %11183

11183:                                            ; preds = %11175
  br label %11184

11184:                                            ; preds = %11183
  br label %11185

11185:                                            ; preds = %11184
  call void @llvm.lifetime.start.p0(i64 4, ptr %223) #12
  %11186 = call ptr @__errno_location() #13
  %11187 = load i32, ptr %11186, align 4, !tbaa !5
  store i32 %11187, ptr %223, align 4, !tbaa !5
  %11188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11189 = call i32 @s2n_print_stacktrace(ptr noundef %11188)
  %11190 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11191 = trunc i8 %11190 to i1
  br i1 %11191, label %11192, label %11214

11192:                                            ; preds = %11185
  %11193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11194 = call i32 @fileno(ptr noundef %11193) #12
  %11195 = call i32 @isatty(i32 noundef %11194) #12
  %11196 = icmp ne i32 %11195, 0
  br i1 %11196, label %11197, label %11214

11197:                                            ; preds = %11192
  %11198 = load i32, ptr %223, align 4, !tbaa !5
  %11199 = call ptr @__errno_location() #13
  store i32 %11198, ptr %11199, align 4, !tbaa !5
  %11200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11201 = load i32, ptr @test_count, align 4, !tbaa !5
  %11202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11203 = load i32, ptr %11202, align 4, !tbaa !5
  %11204 = call ptr @s2n_strerror(i32 noundef %11203, ptr noundef @.str.4)
  %11205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11206 = load i32, ptr %11205, align 4, !tbaa !5
  %11207 = call ptr @s2n_strerror_debug(i32 noundef %11206, ptr noundef @.str.4)
  %11208 = call ptr @__errno_location() #13
  %11209 = load i32, ptr %11208, align 4, !tbaa !5
  %11210 = call ptr @strerror(i32 noundef %11209) #12
  %11211 = call ptr @__errno_location() #13
  %11212 = load i32, ptr %11211, align 4, !tbaa !5
  %11213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11200, ptr noundef @.str.2, i32 noundef %11201, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 424, ptr noundef %11204, ptr noundef %11207, ptr noundef %11210, i32 noundef %11212) #12
  br label %11231

11214:                                            ; preds = %11192, %11185
  %11215 = load i32, ptr %223, align 4, !tbaa !5
  %11216 = call ptr @__errno_location() #13
  store i32 %11215, ptr %11216, align 4, !tbaa !5
  %11217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11218 = load i32, ptr @test_count, align 4, !tbaa !5
  %11219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11220 = load i32, ptr %11219, align 4, !tbaa !5
  %11221 = call ptr @s2n_strerror(i32 noundef %11220, ptr noundef @.str.4)
  %11222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11223 = load i32, ptr %11222, align 4, !tbaa !5
  %11224 = call ptr @s2n_strerror_debug(i32 noundef %11223, ptr noundef @.str.4)
  %11225 = call ptr @__errno_location() #13
  %11226 = load i32, ptr %11225, align 4, !tbaa !5
  %11227 = call ptr @strerror(i32 noundef %11226) #12
  %11228 = call ptr @__errno_location() #13
  %11229 = load i32, ptr %11228, align 4, !tbaa !5
  %11230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11217, ptr noundef @.str.5, i32 noundef %11218, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 424, ptr noundef %11221, ptr noundef %11224, ptr noundef %11227, i32 noundef %11229) #12
  br label %11231

11231:                                            ; preds = %11214, %11197
  call void @llvm.lifetime.end.p0(i64 4, ptr %223) #12
  br label %11232

11232:                                            ; preds = %11231
  br label %11233

11233:                                            ; preds = %11232
  call void @exit(i32 noundef 1) #14
  unreachable

11234:                                            ; No predecessors!
  br label %11235

11235:                                            ; preds = %11234
  br label %11236

11236:                                            ; preds = %11235, %11175
  br label %11237

11237:                                            ; preds = %11236
  br label %11238

11238:                                            ; preds = %11237
  br label %11239

11239:                                            ; preds = %11238
  %11240 = load i32, ptr @test_count, align 4, !tbaa !5
  %11241 = add nsw i32 %11240, 1
  store i32 %11241, ptr @test_count, align 4, !tbaa !5
  %11242 = load ptr, ptr %212, align 8, !tbaa !9
  %11243 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %11242, i32 0, i32 1
  %11244 = getelementptr inbounds %struct.s2n_kem_params, ptr %11243, i32 0, i32 0
  %11245 = load ptr, ptr %11244, align 8, !tbaa !53
  %11246 = load ptr, ptr %213, align 8, !tbaa !9
  %11247 = getelementptr inbounds %struct.s2n_kem_group, ptr %11246, i32 0, i32 3
  %11248 = load ptr, ptr %11247, align 8, !tbaa !51
  %11249 = icmp eq ptr %11245, %11248
  br i1 %11249, label %11303, label %11250

11250:                                            ; preds = %11239
  br label %11251

11251:                                            ; preds = %11250
  br label %11252

11252:                                            ; preds = %11251
  call void @llvm.lifetime.start.p0(i64 4, ptr %224) #12
  %11253 = call ptr @__errno_location() #13
  %11254 = load i32, ptr %11253, align 4, !tbaa !5
  store i32 %11254, ptr %224, align 4, !tbaa !5
  %11255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11256 = call i32 @s2n_print_stacktrace(ptr noundef %11255)
  %11257 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11258 = trunc i8 %11257 to i1
  br i1 %11258, label %11259, label %11281

11259:                                            ; preds = %11252
  %11260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11261 = call i32 @fileno(ptr noundef %11260) #12
  %11262 = call i32 @isatty(i32 noundef %11261) #12
  %11263 = icmp ne i32 %11262, 0
  br i1 %11263, label %11264, label %11281

11264:                                            ; preds = %11259
  %11265 = load i32, ptr %224, align 4, !tbaa !5
  %11266 = call ptr @__errno_location() #13
  store i32 %11265, ptr %11266, align 4, !tbaa !5
  %11267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11268 = load i32, ptr @test_count, align 4, !tbaa !5
  %11269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11270 = load i32, ptr %11269, align 4, !tbaa !5
  %11271 = call ptr @s2n_strerror(i32 noundef %11270, ptr noundef @.str.4)
  %11272 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11273 = load i32, ptr %11272, align 4, !tbaa !5
  %11274 = call ptr @s2n_strerror_debug(i32 noundef %11273, ptr noundef @.str.4)
  %11275 = call ptr @__errno_location() #13
  %11276 = load i32, ptr %11275, align 4, !tbaa !5
  %11277 = call ptr @strerror(i32 noundef %11276) #12
  %11278 = call ptr @__errno_location() #13
  %11279 = load i32, ptr %11278, align 4, !tbaa !5
  %11280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11267, ptr noundef @.str.2, i32 noundef %11268, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 425, ptr noundef %11271, ptr noundef %11274, ptr noundef %11277, i32 noundef %11279) #12
  br label %11298

11281:                                            ; preds = %11259, %11252
  %11282 = load i32, ptr %224, align 4, !tbaa !5
  %11283 = call ptr @__errno_location() #13
  store i32 %11282, ptr %11283, align 4, !tbaa !5
  %11284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11285 = load i32, ptr @test_count, align 4, !tbaa !5
  %11286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11287 = load i32, ptr %11286, align 4, !tbaa !5
  %11288 = call ptr @s2n_strerror(i32 noundef %11287, ptr noundef @.str.4)
  %11289 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11290 = load i32, ptr %11289, align 4, !tbaa !5
  %11291 = call ptr @s2n_strerror_debug(i32 noundef %11290, ptr noundef @.str.4)
  %11292 = call ptr @__errno_location() #13
  %11293 = load i32, ptr %11292, align 4, !tbaa !5
  %11294 = call ptr @strerror(i32 noundef %11293) #12
  %11295 = call ptr @__errno_location() #13
  %11296 = load i32, ptr %11295, align 4, !tbaa !5
  %11297 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11284, ptr noundef @.str.5, i32 noundef %11285, ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 425, ptr noundef %11288, ptr noundef %11291, ptr noundef %11294, i32 noundef %11296) #12
  br label %11298

11298:                                            ; preds = %11281, %11264
  call void @llvm.lifetime.end.p0(i64 4, ptr %224) #12
  br label %11299

11299:                                            ; preds = %11298
  br label %11300

11300:                                            ; preds = %11299
  call void @exit(i32 noundef 1) #14
  unreachable

11301:                                            ; No predecessors!
  br label %11302

11302:                                            ; preds = %11301
  br label %11303

11303:                                            ; preds = %11302, %11239
  br label %11304

11304:                                            ; preds = %11303
  br label %11305

11305:                                            ; preds = %11304
  br label %11306

11306:                                            ; preds = %11305
  %11307 = load i32, ptr @test_count, align 4, !tbaa !5
  %11308 = add nsw i32 %11307, 1
  store i32 %11308, ptr @test_count, align 4, !tbaa !5
  %11309 = load ptr, ptr %212, align 8, !tbaa !9
  %11310 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %11309, i32 0, i32 2
  %11311 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %11310, i32 0, i32 0
  %11312 = load ptr, ptr %11311, align 8, !tbaa !55
  %11313 = load ptr, ptr %213, align 8, !tbaa !9
  %11314 = getelementptr inbounds %struct.s2n_kem_group, ptr %11313, i32 0, i32 2
  %11315 = load ptr, ptr %11314, align 8, !tbaa !54
  %11316 = icmp eq ptr %11312, %11315
  br i1 %11316, label %11370, label %11317

11317:                                            ; preds = %11306
  br label %11318

11318:                                            ; preds = %11317
  br label %11319

11319:                                            ; preds = %11318
  call void @llvm.lifetime.start.p0(i64 4, ptr %225) #12
  %11320 = call ptr @__errno_location() #13
  %11321 = load i32, ptr %11320, align 4, !tbaa !5
  store i32 %11321, ptr %225, align 4, !tbaa !5
  %11322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11323 = call i32 @s2n_print_stacktrace(ptr noundef %11322)
  %11324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11325 = trunc i8 %11324 to i1
  br i1 %11325, label %11326, label %11348

11326:                                            ; preds = %11319
  %11327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11328 = call i32 @fileno(ptr noundef %11327) #12
  %11329 = call i32 @isatty(i32 noundef %11328) #12
  %11330 = icmp ne i32 %11329, 0
  br i1 %11330, label %11331, label %11348

11331:                                            ; preds = %11326
  %11332 = load i32, ptr %225, align 4, !tbaa !5
  %11333 = call ptr @__errno_location() #13
  store i32 %11332, ptr %11333, align 4, !tbaa !5
  %11334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11335 = load i32, ptr @test_count, align 4, !tbaa !5
  %11336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11337 = load i32, ptr %11336, align 4, !tbaa !5
  %11338 = call ptr @s2n_strerror(i32 noundef %11337, ptr noundef @.str.4)
  %11339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11340 = load i32, ptr %11339, align 4, !tbaa !5
  %11341 = call ptr @s2n_strerror_debug(i32 noundef %11340, ptr noundef @.str.4)
  %11342 = call ptr @__errno_location() #13
  %11343 = load i32, ptr %11342, align 4, !tbaa !5
  %11344 = call ptr @strerror(i32 noundef %11343) #12
  %11345 = call ptr @__errno_location() #13
  %11346 = load i32, ptr %11345, align 4, !tbaa !5
  %11347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11334, ptr noundef @.str.2, i32 noundef %11335, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 426, ptr noundef %11338, ptr noundef %11341, ptr noundef %11344, i32 noundef %11346) #12
  br label %11365

11348:                                            ; preds = %11326, %11319
  %11349 = load i32, ptr %225, align 4, !tbaa !5
  %11350 = call ptr @__errno_location() #13
  store i32 %11349, ptr %11350, align 4, !tbaa !5
  %11351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11352 = load i32, ptr @test_count, align 4, !tbaa !5
  %11353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11354 = load i32, ptr %11353, align 4, !tbaa !5
  %11355 = call ptr @s2n_strerror(i32 noundef %11354, ptr noundef @.str.4)
  %11356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11357 = load i32, ptr %11356, align 4, !tbaa !5
  %11358 = call ptr @s2n_strerror_debug(i32 noundef %11357, ptr noundef @.str.4)
  %11359 = call ptr @__errno_location() #13
  %11360 = load i32, ptr %11359, align 4, !tbaa !5
  %11361 = call ptr @strerror(i32 noundef %11360) #12
  %11362 = call ptr @__errno_location() #13
  %11363 = load i32, ptr %11362, align 4, !tbaa !5
  %11364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11351, ptr noundef @.str.5, i32 noundef %11352, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 426, ptr noundef %11355, ptr noundef %11358, ptr noundef %11361, i32 noundef %11363) #12
  br label %11365

11365:                                            ; preds = %11348, %11331
  call void @llvm.lifetime.end.p0(i64 4, ptr %225) #12
  br label %11366

11366:                                            ; preds = %11365
  br label %11367

11367:                                            ; preds = %11366
  call void @exit(i32 noundef 1) #14
  unreachable

11368:                                            ; No predecessors!
  br label %11369

11369:                                            ; preds = %11368
  br label %11370

11370:                                            ; preds = %11369, %11306
  br label %11371

11371:                                            ; preds = %11370
  br label %11372

11372:                                            ; preds = %11371
  br label %11373

11373:                                            ; preds = %11372
  %11374 = load i32, ptr @test_count, align 4, !tbaa !5
  %11375 = add nsw i32 %11374, 1
  store i32 %11375, ptr @test_count, align 4, !tbaa !5
  %11376 = load ptr, ptr %200, align 8, !tbaa !9
  %11377 = getelementptr inbounds %struct.s2n_connection, ptr %11376, i32 0, i32 31
  %11378 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %11377, i32 0, i32 5
  %11379 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %11378, i32 0, i32 0
  %11380 = load ptr, ptr %11379, align 8, !tbaa !56
  %11381 = icmp eq ptr %11380, null
  br i1 %11381, label %11435, label %11382

11382:                                            ; preds = %11373
  br label %11383

11383:                                            ; preds = %11382
  br label %11384

11384:                                            ; preds = %11383
  call void @llvm.lifetime.start.p0(i64 4, ptr %226) #12
  %11385 = call ptr @__errno_location() #13
  %11386 = load i32, ptr %11385, align 4, !tbaa !5
  store i32 %11386, ptr %226, align 4, !tbaa !5
  %11387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11388 = call i32 @s2n_print_stacktrace(ptr noundef %11387)
  %11389 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11390 = trunc i8 %11389 to i1
  br i1 %11390, label %11391, label %11413

11391:                                            ; preds = %11384
  %11392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11393 = call i32 @fileno(ptr noundef %11392) #12
  %11394 = call i32 @isatty(i32 noundef %11393) #12
  %11395 = icmp ne i32 %11394, 0
  br i1 %11395, label %11396, label %11413

11396:                                            ; preds = %11391
  %11397 = load i32, ptr %226, align 4, !tbaa !5
  %11398 = call ptr @__errno_location() #13
  store i32 %11397, ptr %11398, align 4, !tbaa !5
  %11399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11400 = load i32, ptr @test_count, align 4, !tbaa !5
  %11401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11402 = load i32, ptr %11401, align 4, !tbaa !5
  %11403 = call ptr @s2n_strerror(i32 noundef %11402, ptr noundef @.str.4)
  %11404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11405 = load i32, ptr %11404, align 4, !tbaa !5
  %11406 = call ptr @s2n_strerror_debug(i32 noundef %11405, ptr noundef @.str.4)
  %11407 = call ptr @__errno_location() #13
  %11408 = load i32, ptr %11407, align 4, !tbaa !5
  %11409 = call ptr @strerror(i32 noundef %11408) #12
  %11410 = call ptr @__errno_location() #13
  %11411 = load i32, ptr %11410, align 4, !tbaa !5
  %11412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11399, ptr noundef @.str.2, i32 noundef %11400, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 427, ptr noundef %11403, ptr noundef %11406, ptr noundef %11409, i32 noundef %11411) #12
  br label %11430

11413:                                            ; preds = %11391, %11384
  %11414 = load i32, ptr %226, align 4, !tbaa !5
  %11415 = call ptr @__errno_location() #13
  store i32 %11414, ptr %11415, align 4, !tbaa !5
  %11416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11417 = load i32, ptr @test_count, align 4, !tbaa !5
  %11418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11419 = load i32, ptr %11418, align 4, !tbaa !5
  %11420 = call ptr @s2n_strerror(i32 noundef %11419, ptr noundef @.str.4)
  %11421 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11422 = load i32, ptr %11421, align 4, !tbaa !5
  %11423 = call ptr @s2n_strerror_debug(i32 noundef %11422, ptr noundef @.str.4)
  %11424 = call ptr @__errno_location() #13
  %11425 = load i32, ptr %11424, align 4, !tbaa !5
  %11426 = call ptr @strerror(i32 noundef %11425) #12
  %11427 = call ptr @__errno_location() #13
  %11428 = load i32, ptr %11427, align 4, !tbaa !5
  %11429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11416, ptr noundef @.str.5, i32 noundef %11417, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 427, ptr noundef %11420, ptr noundef %11423, ptr noundef %11426, i32 noundef %11428) #12
  br label %11430

11430:                                            ; preds = %11413, %11396
  call void @llvm.lifetime.end.p0(i64 4, ptr %226) #12
  br label %11431

11431:                                            ; preds = %11430
  br label %11432

11432:                                            ; preds = %11431
  call void @exit(i32 noundef 1) #14
  unreachable

11433:                                            ; No predecessors!
  br label %11434

11434:                                            ; preds = %11433
  br label %11435

11435:                                            ; preds = %11434, %11373
  br label %11436

11436:                                            ; preds = %11435
  br label %11437

11437:                                            ; preds = %11436
  br label %11438

11438:                                            ; preds = %11437
  %11439 = load i32, ptr @test_count, align 4, !tbaa !5
  %11440 = add nsw i32 %11439, 1
  store i32 %11440, ptr @test_count, align 4, !tbaa !5
  %11441 = load ptr, ptr %200, align 8, !tbaa !9
  %11442 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef %11441)
  br i1 %11442, label %11496, label %11443

11443:                                            ; preds = %11438
  br label %11444

11444:                                            ; preds = %11443
  br label %11445

11445:                                            ; preds = %11444
  call void @llvm.lifetime.start.p0(i64 4, ptr %227) #12
  %11446 = call ptr @__errno_location() #13
  %11447 = load i32, ptr %11446, align 4, !tbaa !5
  store i32 %11447, ptr %227, align 4, !tbaa !5
  %11448 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11449 = call i32 @s2n_print_stacktrace(ptr noundef %11448)
  %11450 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11451 = trunc i8 %11450 to i1
  br i1 %11451, label %11452, label %11474

11452:                                            ; preds = %11445
  %11453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11454 = call i32 @fileno(ptr noundef %11453) #12
  %11455 = call i32 @isatty(i32 noundef %11454) #12
  %11456 = icmp ne i32 %11455, 0
  br i1 %11456, label %11457, label %11474

11457:                                            ; preds = %11452
  %11458 = load i32, ptr %227, align 4, !tbaa !5
  %11459 = call ptr @__errno_location() #13
  store i32 %11458, ptr %11459, align 4, !tbaa !5
  %11460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11461 = load i32, ptr @test_count, align 4, !tbaa !5
  %11462 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11463 = load i32, ptr %11462, align 4, !tbaa !5
  %11464 = call ptr @s2n_strerror(i32 noundef %11463, ptr noundef @.str.4)
  %11465 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11466 = load i32, ptr %11465, align 4, !tbaa !5
  %11467 = call ptr @s2n_strerror_debug(i32 noundef %11466, ptr noundef @.str.4)
  %11468 = call ptr @__errno_location() #13
  %11469 = load i32, ptr %11468, align 4, !tbaa !5
  %11470 = call ptr @strerror(i32 noundef %11469) #12
  %11471 = call ptr @__errno_location() #13
  %11472 = load i32, ptr %11471, align 4, !tbaa !5
  %11473 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11460, ptr noundef @.str.2, i32 noundef %11461, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 428, ptr noundef %11464, ptr noundef %11467, ptr noundef %11470, i32 noundef %11472) #12
  br label %11491

11474:                                            ; preds = %11452, %11445
  %11475 = load i32, ptr %227, align 4, !tbaa !5
  %11476 = call ptr @__errno_location() #13
  store i32 %11475, ptr %11476, align 4, !tbaa !5
  %11477 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11478 = load i32, ptr @test_count, align 4, !tbaa !5
  %11479 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11480 = load i32, ptr %11479, align 4, !tbaa !5
  %11481 = call ptr @s2n_strerror(i32 noundef %11480, ptr noundef @.str.4)
  %11482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11483 = load i32, ptr %11482, align 4, !tbaa !5
  %11484 = call ptr @s2n_strerror_debug(i32 noundef %11483, ptr noundef @.str.4)
  %11485 = call ptr @__errno_location() #13
  %11486 = load i32, ptr %11485, align 4, !tbaa !5
  %11487 = call ptr @strerror(i32 noundef %11486) #12
  %11488 = call ptr @__errno_location() #13
  %11489 = load i32, ptr %11488, align 4, !tbaa !5
  %11490 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11477, ptr noundef @.str.5, i32 noundef %11478, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 428, ptr noundef %11481, ptr noundef %11484, ptr noundef %11487, i32 noundef %11489) #12
  br label %11491

11491:                                            ; preds = %11474, %11457
  call void @llvm.lifetime.end.p0(i64 4, ptr %227) #12
  br label %11492

11492:                                            ; preds = %11491
  br label %11493

11493:                                            ; preds = %11492
  call void @exit(i32 noundef 1) #14
  unreachable

11494:                                            ; No predecessors!
  br label %11495

11495:                                            ; preds = %11494
  br label %11496

11496:                                            ; preds = %11495, %11438
  br label %11497

11497:                                            ; preds = %11496
  br label %11498

11498:                                            ; preds = %11497
  br label %11499

11499:                                            ; preds = %11498
  %11500 = load i32, ptr @test_count, align 4, !tbaa !5
  %11501 = add nsw i32 %11500, 1
  store i32 %11501, ptr @test_count, align 4, !tbaa !5
  %11502 = load ptr, ptr %200, align 8, !tbaa !9
  %11503 = call i32 @s2n_connection_free(ptr noundef %11502)
  %11504 = icmp eq i32 %11503, -1
  br i1 %11504, label %11505, label %11558

11505:                                            ; preds = %11499
  br label %11506

11506:                                            ; preds = %11505
  br label %11507

11507:                                            ; preds = %11506
  call void @llvm.lifetime.start.p0(i64 4, ptr %228) #12
  %11508 = call ptr @__errno_location() #13
  %11509 = load i32, ptr %11508, align 4, !tbaa !5
  store i32 %11509, ptr %228, align 4, !tbaa !5
  %11510 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11511 = call i32 @s2n_print_stacktrace(ptr noundef %11510)
  %11512 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11513 = trunc i8 %11512 to i1
  br i1 %11513, label %11514, label %11536

11514:                                            ; preds = %11507
  %11515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11516 = call i32 @fileno(ptr noundef %11515) #12
  %11517 = call i32 @isatty(i32 noundef %11516) #12
  %11518 = icmp ne i32 %11517, 0
  br i1 %11518, label %11519, label %11536

11519:                                            ; preds = %11514
  %11520 = load i32, ptr %228, align 4, !tbaa !5
  %11521 = call ptr @__errno_location() #13
  store i32 %11520, ptr %11521, align 4, !tbaa !5
  %11522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11523 = load i32, ptr @test_count, align 4, !tbaa !5
  %11524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11525 = load i32, ptr %11524, align 4, !tbaa !5
  %11526 = call ptr @s2n_strerror(i32 noundef %11525, ptr noundef @.str.4)
  %11527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11528 = load i32, ptr %11527, align 4, !tbaa !5
  %11529 = call ptr @s2n_strerror_debug(i32 noundef %11528, ptr noundef @.str.4)
  %11530 = call ptr @__errno_location() #13
  %11531 = load i32, ptr %11530, align 4, !tbaa !5
  %11532 = call ptr @strerror(i32 noundef %11531) #12
  %11533 = call ptr @__errno_location() #13
  %11534 = load i32, ptr %11533, align 4, !tbaa !5
  %11535 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11522, ptr noundef @.str.2, i32 noundef %11523, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 430, ptr noundef %11526, ptr noundef %11529, ptr noundef %11532, i32 noundef %11534) #12
  br label %11553

11536:                                            ; preds = %11514, %11507
  %11537 = load i32, ptr %228, align 4, !tbaa !5
  %11538 = call ptr @__errno_location() #13
  store i32 %11537, ptr %11538, align 4, !tbaa !5
  %11539 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11540 = load i32, ptr @test_count, align 4, !tbaa !5
  %11541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11542 = load i32, ptr %11541, align 4, !tbaa !5
  %11543 = call ptr @s2n_strerror(i32 noundef %11542, ptr noundef @.str.4)
  %11544 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11545 = load i32, ptr %11544, align 4, !tbaa !5
  %11546 = call ptr @s2n_strerror_debug(i32 noundef %11545, ptr noundef @.str.4)
  %11547 = call ptr @__errno_location() #13
  %11548 = load i32, ptr %11547, align 4, !tbaa !5
  %11549 = call ptr @strerror(i32 noundef %11548) #12
  %11550 = call ptr @__errno_location() #13
  %11551 = load i32, ptr %11550, align 4, !tbaa !5
  %11552 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11539, ptr noundef @.str.5, i32 noundef %11540, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 430, ptr noundef %11543, ptr noundef %11546, ptr noundef %11549, i32 noundef %11551) #12
  br label %11553

11553:                                            ; preds = %11536, %11519
  call void @llvm.lifetime.end.p0(i64 4, ptr %228) #12
  br label %11554

11554:                                            ; preds = %11553
  br label %11555

11555:                                            ; preds = %11554
  call void @exit(i32 noundef 1) #14
  unreachable

11556:                                            ; No predecessors!
  br label %11557

11557:                                            ; preds = %11556
  br label %11558

11558:                                            ; preds = %11557, %11499
  br label %11559

11559:                                            ; preds = %11558
  br label %11560

11560:                                            ; preds = %11559
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #12
  store i32 0, ptr %10, align 4
  br label %11561

11561:                                            ; preds = %11560, %10119, %7412, %6267
  call void @llvm.lifetime.end.p0(i64 64, ptr %54) #12
  %11562 = load i32, ptr %10, align 4
  switch i32 %11562, label %11718 [
    i32 0, label %11563
  ]

11563:                                            ; preds = %11561
  br label %11564

11564:                                            ; preds = %11563
  br label %11565

11565:                                            ; preds = %11564
  %11566 = call i32 @s2n_cleanup()
  %11567 = icmp eq i32 %11566, -1
  br i1 %11567, label %11568, label %11621

11568:                                            ; preds = %11565
  br label %11569

11569:                                            ; preds = %11568
  br label %11570

11570:                                            ; preds = %11569
  call void @llvm.lifetime.start.p0(i64 4, ptr %229) #12
  %11571 = call ptr @__errno_location() #13
  %11572 = load i32, ptr %11571, align 4, !tbaa !5
  store i32 %11572, ptr %229, align 4, !tbaa !5
  %11573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11574 = call i32 @s2n_print_stacktrace(ptr noundef %11573)
  %11575 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11576 = trunc i8 %11575 to i1
  br i1 %11576, label %11577, label %11599

11577:                                            ; preds = %11570
  %11578 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11579 = call i32 @fileno(ptr noundef %11578) #12
  %11580 = call i32 @isatty(i32 noundef %11579) #12
  %11581 = icmp ne i32 %11580, 0
  br i1 %11581, label %11582, label %11599

11582:                                            ; preds = %11577
  %11583 = load i32, ptr %229, align 4, !tbaa !5
  %11584 = call ptr @__errno_location() #13
  store i32 %11583, ptr %11584, align 4, !tbaa !5
  %11585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11586 = load i32, ptr @test_count, align 4, !tbaa !5
  %11587 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11588 = load i32, ptr %11587, align 4, !tbaa !5
  %11589 = call ptr @s2n_strerror(i32 noundef %11588, ptr noundef @.str.4)
  %11590 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11591 = load i32, ptr %11590, align 4, !tbaa !5
  %11592 = call ptr @s2n_strerror_debug(i32 noundef %11591, ptr noundef @.str.4)
  %11593 = call ptr @__errno_location() #13
  %11594 = load i32, ptr %11593, align 4, !tbaa !5
  %11595 = call ptr @strerror(i32 noundef %11594) #12
  %11596 = call ptr @__errno_location() #13
  %11597 = load i32, ptr %11596, align 4, !tbaa !5
  %11598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11585, ptr noundef @.str.2, i32 noundef %11586, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 433, ptr noundef %11589, ptr noundef %11592, ptr noundef %11595, i32 noundef %11597) #12
  br label %11616

11599:                                            ; preds = %11577, %11570
  %11600 = load i32, ptr %229, align 4, !tbaa !5
  %11601 = call ptr @__errno_location() #13
  store i32 %11600, ptr %11601, align 4, !tbaa !5
  %11602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11603 = load i32, ptr @test_count, align 4, !tbaa !5
  %11604 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11605 = load i32, ptr %11604, align 4, !tbaa !5
  %11606 = call ptr @s2n_strerror(i32 noundef %11605, ptr noundef @.str.4)
  %11607 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11608 = load i32, ptr %11607, align 4, !tbaa !5
  %11609 = call ptr @s2n_strerror_debug(i32 noundef %11608, ptr noundef @.str.4)
  %11610 = call ptr @__errno_location() #13
  %11611 = load i32, ptr %11610, align 4, !tbaa !5
  %11612 = call ptr @strerror(i32 noundef %11611) #12
  %11613 = call ptr @__errno_location() #13
  %11614 = load i32, ptr %11613, align 4, !tbaa !5
  %11615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11602, ptr noundef @.str.5, i32 noundef %11603, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 433, ptr noundef %11606, ptr noundef %11609, ptr noundef %11612, i32 noundef %11614) #12
  br label %11616

11616:                                            ; preds = %11599, %11582
  call void @llvm.lifetime.end.p0(i64 4, ptr %229) #12
  br label %11617

11617:                                            ; preds = %11616
  br label %11618

11618:                                            ; preds = %11617
  call void @exit(i32 noundef 1) #14
  unreachable

11619:                                            ; No predecessors!
  br label %11620

11620:                                            ; preds = %11619
  br label %11621

11621:                                            ; preds = %11620, %11565
  br label %11622

11622:                                            ; preds = %11621
  br label %11623

11623:                                            ; preds = %11622
  br label %11624

11624:                                            ; preds = %11623
  br label %11625

11625:                                            ; preds = %11624
  %11626 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %11627 = icmp eq i32 %11626, -1
  br i1 %11627, label %11628, label %11681

11628:                                            ; preds = %11625
  br label %11629

11629:                                            ; preds = %11628
  br label %11630

11630:                                            ; preds = %11629
  call void @llvm.lifetime.start.p0(i64 4, ptr %230) #12
  %11631 = call ptr @__errno_location() #13
  %11632 = load i32, ptr %11631, align 4, !tbaa !5
  store i32 %11632, ptr %230, align 4, !tbaa !5
  %11633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11634 = call i32 @s2n_print_stacktrace(ptr noundef %11633)
  %11635 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11636 = trunc i8 %11635 to i1
  br i1 %11636, label %11637, label %11659

11637:                                            ; preds = %11630
  %11638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11639 = call i32 @fileno(ptr noundef %11638) #12
  %11640 = call i32 @isatty(i32 noundef %11639) #12
  %11641 = icmp ne i32 %11640, 0
  br i1 %11641, label %11642, label %11659

11642:                                            ; preds = %11637
  %11643 = load i32, ptr %230, align 4, !tbaa !5
  %11644 = call ptr @__errno_location() #13
  store i32 %11643, ptr %11644, align 4, !tbaa !5
  %11645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11646 = load i32, ptr @test_count, align 4, !tbaa !5
  %11647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11648 = load i32, ptr %11647, align 4, !tbaa !5
  %11649 = call ptr @s2n_strerror(i32 noundef %11648, ptr noundef @.str.4)
  %11650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11651 = load i32, ptr %11650, align 4, !tbaa !5
  %11652 = call ptr @s2n_strerror_debug(i32 noundef %11651, ptr noundef @.str.4)
  %11653 = call ptr @__errno_location() #13
  %11654 = load i32, ptr %11653, align 4, !tbaa !5
  %11655 = call ptr @strerror(i32 noundef %11654) #12
  %11656 = call ptr @__errno_location() #13
  %11657 = load i32, ptr %11656, align 4, !tbaa !5
  %11658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11645, ptr noundef @.str.2, i32 noundef %11646, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 433, ptr noundef %11649, ptr noundef %11652, ptr noundef %11655, i32 noundef %11657) #12
  br label %11676

11659:                                            ; preds = %11637, %11630
  %11660 = load i32, ptr %230, align 4, !tbaa !5
  %11661 = call ptr @__errno_location() #13
  store i32 %11660, ptr %11661, align 4, !tbaa !5
  %11662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %11663 = load i32, ptr @test_count, align 4, !tbaa !5
  %11664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11665 = load i32, ptr %11664, align 4, !tbaa !5
  %11666 = call ptr @s2n_strerror(i32 noundef %11665, ptr noundef @.str.4)
  %11667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %11668 = load i32, ptr %11667, align 4, !tbaa !5
  %11669 = call ptr @s2n_strerror_debug(i32 noundef %11668, ptr noundef @.str.4)
  %11670 = call ptr @__errno_location() #13
  %11671 = load i32, ptr %11670, align 4, !tbaa !5
  %11672 = call ptr @strerror(i32 noundef %11671) #12
  %11673 = call ptr @__errno_location() #13
  %11674 = load i32, ptr %11673, align 4, !tbaa !5
  %11675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11662, ptr noundef @.str.5, i32 noundef %11663, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 433, ptr noundef %11666, ptr noundef %11669, ptr noundef %11672, i32 noundef %11674) #12
  br label %11676

11676:                                            ; preds = %11659, %11642
  call void @llvm.lifetime.end.p0(i64 4, ptr %230) #12
  br label %11677

11677:                                            ; preds = %11676
  br label %11678

11678:                                            ; preds = %11677
  call void @exit(i32 noundef 1) #14
  unreachable

11679:                                            ; No predecessors!
  br label %11680

11680:                                            ; preds = %11679
  br label %11681

11681:                                            ; preds = %11680, %11625
  br label %11682

11682:                                            ; preds = %11681
  br label %11683

11683:                                            ; preds = %11682
  %11684 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %11685 = trunc i8 %11684 to i1
  br i1 %11685, label %11686, label %11702

11686:                                            ; preds = %11683
  %11687 = load ptr, ptr @stdout, align 8, !tbaa !9
  %11688 = call i32 @fileno(ptr noundef %11687) #12
  %11689 = call i32 @isatty(i32 noundef %11688) #12
  %11690 = icmp ne i32 %11689, 0
  br i1 %11690, label %11691, label %11702

11691:                                            ; preds = %11686
  %11692 = load i32, ptr @test_count, align 4, !tbaa !5
  %11693 = icmp ne i32 %11692, 0
  br i1 %11693, label %11694, label %11698

11694:                                            ; preds = %11691
  %11695 = load ptr, ptr @stdout, align 8, !tbaa !9
  %11696 = load i32, ptr @test_count, align 4, !tbaa !5
  %11697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11695, ptr noundef @.str.11, i32 noundef %11696) #12
  br label %11701

11698:                                            ; preds = %11691
  %11699 = load ptr, ptr @stdout, align 8, !tbaa !9
  %11700 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11699, ptr noundef @.str.12) #12
  br label %11701

11701:                                            ; preds = %11698, %11694
  br label %11713

11702:                                            ; preds = %11686, %11683
  %11703 = load i32, ptr @test_count, align 4, !tbaa !5
  %11704 = icmp ne i32 %11703, 0
  br i1 %11704, label %11705, label %11709

11705:                                            ; preds = %11702
  %11706 = load ptr, ptr @stdout, align 8, !tbaa !9
  %11707 = load i32, ptr @test_count, align 4, !tbaa !5
  %11708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11706, ptr noundef @.str.13, i32 noundef %11707) #12
  br label %11712

11709:                                            ; preds = %11702
  %11710 = load ptr, ptr @stdout, align 8, !tbaa !9
  %11711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11710, ptr noundef @.str.14) #12
  br label %11712

11712:                                            ; preds = %11709, %11705
  br label %11713

11713:                                            ; preds = %11712, %11701
  store i32 0, ptr %1, align 4
  store i32 1, ptr %10, align 4
  br label %11718

11714:                                            ; No predecessors!
  br label %11715

11715:                                            ; preds = %11714
  br label %11716

11716:                                            ; preds = %11715
  br label %11717

11717:                                            ; preds = %11716
  store i32 0, ptr %10, align 4
  br label %11718

11718:                                            ; preds = %11717, %11713, %11561, %625
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #12
  %11719 = load i32, ptr %10, align 4
  switch i32 %11719, label %11722 [
    i32 0, label %11720
    i32 1, label %11720
  ]

11720:                                            ; preds = %11718, %11718
  %11721 = load i32, ptr %1, align 4
  ret i32 %11721

11722:                                            ; preds = %11718
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

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

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

declare i32 @s2n_cleanup() #2

declare i32 @s2n_enable_tls13_in_test(...) #2

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_set_all_protocol_versions(ptr noundef, i8 noundef zeroext) #2

declare i32 @s2n_extensions_server_key_share_select(ptr noundef) #2

declare void @s2n_debug_info_reset() #2

declare zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef) #2

declare i32 @s2n_connection_free(ptr noundef) #2

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

declare i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef) #2

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

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

declare i32 @s2n_set_all_mutually_supported_groups(ptr noundef) #2

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i64 @llvm.expect.i64(i64, i64) #9

; Function Attrs: nounwind willreturn memory(read)
declare ptr @strrchr(ptr noundef, i32 noundef) #10

declare i32 @s2n_calculate_stacktrace() #2

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

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

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

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


; 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_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_debug_info = type { ptr, ptr }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [102 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@kem_preferences_all = external constant %struct.s2n_kem_preferences, align 8
@.str.8 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [111 x i8], align 1
@__const.main.test_security_policy = external hidden unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.34 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [127 x i8], align 1
@_s2n_debug_info = external thread_local local_unnamed_addr global %struct.s2n_debug_info, align 8
@.str.48 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [78 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

102:                                              ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #12
  store i32 0, ptr %1, align 4, !tbaa !5
  %103 = load i32, ptr @test_count, align 4, !tbaa !5
  %104 = add nsw i32 %103, 1
  store i32 %104, ptr @test_count, align 4, !tbaa !5
  %105 = call i32 @s2n_kem_preferences_groups_available(ptr noundef nonnull @kem_preferences_all, ptr noundef nonnull %1) #12
  %106 = call zeroext i1 @s2n_result_is_ok(i32 %105)
  br i1 %106, label %131, label %107

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

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

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

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

131:                                              ; preds = %102
  %132 = load i32, ptr %1, align 4, !tbaa !5
  %133 = icmp ult i32 %132, 2
  br i1 %133, label %134, label %209

134:                                              ; preds = %131
  %135 = call i32 @s2n_cleanup() #12
  %136 = icmp eq i32 %135, -1
  br i1 %136, label %137, label %161

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

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

148:                                              ; preds = %144, %137
  br label %149

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

161:                                              ; preds = %134
  %162 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %163 = icmp eq i32 %162, -1
  br i1 %163, label %164, label %188

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

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

175:                                              ; preds = %171, %164
  br label %176

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

188:                                              ; preds = %161
  %189 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %190 = trunc nuw i8 %189 to i1
  br i1 %190, label %191, label %202

191:                                              ; preds = %188
  %192 = load ptr, ptr @stdout, align 8, !tbaa !9
  %193 = call i32 @fileno(ptr noundef %192) #12
  %194 = call i32 @isatty(i32 noundef %193) #12
  %.not840 = icmp eq i32 %194, 0
  br i1 %.not840, label %202, label %195

195:                                              ; preds = %191
  %196 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not842 = icmp eq i32 %196, 0
  %197 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not842, label %200, label %198

198:                                              ; preds = %195
  %199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.11, i32 noundef %196) #12
  br label %4836

200:                                              ; preds = %195
  %201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull @.str.12) #12
  br label %4836

202:                                              ; preds = %191, %188
  %203 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not841 = icmp eq i32 %203, 0
  %204 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not841, label %207, label %205

205:                                              ; preds = %202
  %206 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %204, ptr noundef nonnull @.str.13, i32 noundef %203) #12
  br label %4836

207:                                              ; preds = %202
  %208 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %204, ptr noundef nonnull @.str.14) #12
  br label %4836

209:                                              ; preds = %131
  %210 = load i32, ptr @test_count, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr @test_count, align 4, !tbaa !5
  %212 = call i32 (...) @s2n_enable_tls13_in_test() #12
  %213 = icmp eq i32 %212, -1
  br i1 %213, label %214, label %238

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

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

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

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

238:                                              ; preds = %209
  %239 = load i32, ptr @test_count, align 4, !tbaa !5
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr @test_count, align 4, !tbaa !5
  %241 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %242 = icmp eq ptr %241, null
  br i1 %242, label %243, label %267

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

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

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

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

267:                                              ; preds = %238
  %268 = load i32, ptr @test_count, align 4, !tbaa !5
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr @test_count, align 4, !tbaa !5
  %270 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %241, i8 noundef zeroext 34) #12
  %271 = icmp eq i32 %270, -1
  br i1 %271, label %272, label %296

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

279:                                              ; preds = %272
  %280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %281 = call i32 @fileno(ptr noundef %280) #12
  %282 = call i32 @isatty(i32 noundef %281) #12
  %.not837 = icmp eq i32 %282, 0
  br i1 %.not837, label %283, label %284

283:                                              ; preds = %279, %272
  br label %284

284:                                              ; preds = %279, %283
  %.str.5.sink967 = phi ptr [ @.str.5, %283 ], [ @.str.2, %279 ]
  store i32 %274, ptr %273, align 4, !tbaa !5
  %285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %286 = load i32, ptr @test_count, align 4, !tbaa !5
  %287 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = call ptr @s2n_strerror(i32 noundef %288, ptr noundef nonnull @.str.4) #12
  %290 = load i32, ptr %287, align 4, !tbaa !5
  %291 = call ptr @s2n_strerror_debug(i32 noundef %290, ptr noundef nonnull @.str.4) #12
  %292 = load i32, ptr %273, align 4, !tbaa !5
  %293 = call ptr @strerror(i32 noundef %292) #12
  %294 = load i32, ptr %273, align 4, !tbaa !5
  %295 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %285, ptr noundef nonnull %.str.5.sink967, i32 noundef %286, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 41, ptr noundef %289, ptr noundef %291, ptr noundef %293, i32 noundef %294) #14
  call void @exit(i32 noundef 1) #15
  unreachable

296:                                              ; preds = %267
  %297 = load i32, ptr @test_count, align 4, !tbaa !5
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr @test_count, align 4, !tbaa !5
  %299 = getelementptr inbounds i8, ptr %241, i64 656
  %300 = load ptr, ptr %299, align 8, !tbaa !15
  %301 = icmp eq ptr %300, null
  br i1 %301, label %326, label %302

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

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

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

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

326:                                              ; preds = %296
  %327 = add nsw i32 %297, 2
  store i32 %327, ptr @test_count, align 4, !tbaa !5
  %328 = getelementptr inbounds i8, ptr %241, i64 720
  %329 = load ptr, ptr %328, align 8, !tbaa !42
  %330 = icmp eq ptr %329, null
  br i1 %330, label %355, label %331

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

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

342:                                              ; preds = %338, %331
  br label %343

343:                                              ; preds = %338, %342
  %.str.5.sink989 = phi ptr [ @.str.5, %342 ], [ @.str.2, %338 ]
  store i32 %333, ptr %332, align 4, !tbaa !5
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = load i32, ptr @test_count, align 4, !tbaa !5
  %346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = call ptr @s2n_strerror(i32 noundef %347, ptr noundef nonnull @.str.4) #12
  %349 = load i32, ptr %346, align 4, !tbaa !5
  %350 = call ptr @s2n_strerror_debug(i32 noundef %349, ptr noundef nonnull @.str.4) #12
  %351 = load i32, ptr %332, align 4, !tbaa !5
  %352 = call ptr @strerror(i32 noundef %351) #12
  %353 = load i32, ptr %332, align 4, !tbaa !5
  %354 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %344, ptr noundef nonnull %.str.5.sink989, i32 noundef %345, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %348, ptr noundef %350, ptr noundef %352, i32 noundef %353) #14
  call void @exit(i32 noundef 1) #15
  unreachable

355:                                              ; preds = %326
  %356 = add nsw i32 %297, 3
  store i32 %356, ptr @test_count, align 4, !tbaa !5
  %357 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %241) #12
  %358 = icmp eq i32 %357, -1
  br i1 %358, label %383, label %359

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

366:                                              ; preds = %359
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = call i32 @fileno(ptr noundef %367) #12
  %369 = call i32 @isatty(i32 noundef %368) #12
  %.not665 = icmp eq i32 %369, 0
  br i1 %.not665, label %370, label %371

370:                                              ; preds = %366, %359
  br label %371

371:                                              ; preds = %366, %370
  %.str.5.sink1000 = phi ptr [ @.str.5, %370 ], [ @.str.2, %366 ]
  store i32 %361, ptr %360, align 4, !tbaa !5
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = load i32, ptr @test_count, align 4, !tbaa !5
  %374 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = call ptr @s2n_strerror(i32 noundef %375, ptr noundef nonnull @.str.4) #12
  %377 = load i32, ptr %374, align 4, !tbaa !5
  %378 = call ptr @s2n_strerror_debug(i32 noundef %377, ptr noundef nonnull @.str.4) #12
  %379 = load i32, ptr %360, align 4, !tbaa !5
  %380 = call ptr @strerror(i32 noundef %379) #12
  %381 = load i32, ptr %360, align 4, !tbaa !5
  %382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %372, ptr noundef nonnull %.str.5.sink1000, i32 noundef %373, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %376, ptr noundef %378, ptr noundef %380, i32 noundef %381) #14
  call void @exit(i32 noundef 1) #15
  unreachable

383:                                              ; preds = %355
  %384 = load i32, ptr @test_count, align 4, !tbaa !5
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr @test_count, align 4, !tbaa !5
  %386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = icmp eq i32 %387, 335544356
  br i1 %388, label %412, label %389

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

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

400:                                              ; preds = %396, %389
  br label %401

401:                                              ; preds = %396, %400
  %.str.5.sink1011 = phi ptr [ @.str.5, %400 ], [ @.str.2, %396 ]
  store i32 %391, ptr %390, align 4, !tbaa !5
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = load i32, ptr @test_count, align 4, !tbaa !5
  %404 = load i32, ptr %386, align 4, !tbaa !5
  %405 = call ptr @s2n_strerror(i32 noundef %404, ptr noundef nonnull @.str.4) #12
  %406 = load i32, ptr %386, align 4, !tbaa !5
  %407 = call ptr @s2n_strerror_debug(i32 noundef %406, ptr noundef nonnull @.str.4) #12
  %408 = load i32, ptr %390, align 4, !tbaa !5
  %409 = call ptr @strerror(i32 noundef %408) #12
  %410 = load i32, ptr %390, align 4, !tbaa !5
  %411 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %402, ptr noundef nonnull %.str.5.sink1011, i32 noundef %403, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %405, ptr noundef %407, ptr noundef %409, i32 noundef %410) #14
  call void @exit(i32 noundef 1) #15
  unreachable

412:                                              ; preds = %383
  %413 = add nsw i32 %384, 2
  store i32 %413, ptr @test_count, align 4, !tbaa !5
  %414 = call ptr @s2n_strerror_debug(i32 noundef 335544356, ptr noundef nonnull @.str.4) #12
  %415 = icmp eq ptr %414, null
  br i1 %415, label %416, label %439

416:                                              ; preds = %412
  %417 = tail call ptr @__errno_location() #13
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %420 = call i32 @s2n_print_stacktrace(ptr noundef %419) #12
  %421 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %423, label %427

423:                                              ; preds = %416
  %424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %425 = call i32 @fileno(ptr noundef %424) #12
  %426 = call i32 @isatty(i32 noundef %425) #12
  %.not836 = icmp eq i32 %426, 0
  br i1 %.not836, label %427, label %428

427:                                              ; preds = %423, %416
  br label %428

428:                                              ; preds = %423, %427
  %.str.5.sink1020 = phi ptr [ @.str.5, %427 ], [ @.str.2, %423 ]
  store i32 %418, ptr %417, align 4, !tbaa !5
  %429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %430 = load i32, ptr @test_count, align 4, !tbaa !5
  %431 = load i32, ptr %386, align 4, !tbaa !5
  %432 = call ptr @s2n_strerror(i32 noundef %431, ptr noundef nonnull @.str.4) #12
  %433 = load i32, ptr %386, align 4, !tbaa !5
  %434 = call ptr @s2n_strerror_debug(i32 noundef %433, ptr noundef nonnull @.str.4) #12
  %435 = load i32, ptr %417, align 4, !tbaa !5
  %436 = call ptr @strerror(i32 noundef %435) #12
  %437 = load i32, ptr %417, align 4, !tbaa !5
  %438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef nonnull %.str.5.sink1020, i32 noundef %430, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %432, ptr noundef %434, ptr noundef %436, i32 noundef %437) #14
  call void @exit(i32 noundef 1) #15
  unreachable

439:                                              ; preds = %412
  store i32 0, ptr %386, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #12
  %440 = tail call ptr @__errno_location() #13
  store i32 0, ptr %440, align 4, !tbaa !5
  %441 = load i32, ptr @test_count, align 4, !tbaa !5
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr @test_count, align 4, !tbaa !5
  %443 = load ptr, ptr %299, align 8, !tbaa !15
  %444 = icmp eq ptr %443, null
  br i1 %444, label %467, label %445

445:                                              ; preds = %439
  %446 = load i32, ptr %440, align 4, !tbaa !5
  %447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %448 = call i32 @s2n_print_stacktrace(ptr noundef %447) #12
  %449 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %450 = trunc nuw i8 %449 to i1
  br i1 %450, label %451, label %455

451:                                              ; preds = %445
  %452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %453 = call i32 @fileno(ptr noundef %452) #12
  %454 = call i32 @isatty(i32 noundef %453) #12
  %.not667 = icmp eq i32 %454, 0
  br i1 %.not667, label %455, label %456

455:                                              ; preds = %451, %445
  br label %456

456:                                              ; preds = %451, %455
  %.str.5.sink1029 = phi ptr [ @.str.5, %455 ], [ @.str.2, %451 ]
  store i32 %446, ptr %440, align 4, !tbaa !5
  %457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %458 = load i32, ptr @test_count, align 4, !tbaa !5
  %459 = load i32, ptr %386, align 4, !tbaa !5
  %460 = call ptr @s2n_strerror(i32 noundef %459, ptr noundef nonnull @.str.4) #12
  %461 = load i32, ptr %386, align 4, !tbaa !5
  %462 = call ptr @s2n_strerror_debug(i32 noundef %461, ptr noundef nonnull @.str.4) #12
  %463 = load i32, ptr %440, align 4, !tbaa !5
  %464 = call ptr @strerror(i32 noundef %463) #12
  %465 = load i32, ptr %440, align 4, !tbaa !5
  %466 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %457, ptr noundef nonnull %.str.5.sink1029, i32 noundef %458, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 49, ptr noundef %460, ptr noundef %462, ptr noundef %464, i32 noundef %465) #14
  call void @exit(i32 noundef 1) #15
  unreachable

467:                                              ; preds = %439
  %468 = add nsw i32 %441, 2
  store i32 %468, ptr @test_count, align 4, !tbaa !5
  %469 = load ptr, ptr %328, align 8, !tbaa !42
  %470 = icmp eq ptr %469, null
  br i1 %470, label %493, label %471

471:                                              ; preds = %467
  %472 = load i32, ptr %440, align 4, !tbaa !5
  %473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %474 = call i32 @s2n_print_stacktrace(ptr noundef %473) #12
  %475 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %476 = trunc nuw i8 %475 to i1
  br i1 %476, label %477, label %481

477:                                              ; preds = %471
  %478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %479 = call i32 @fileno(ptr noundef %478) #12
  %480 = call i32 @isatty(i32 noundef %479) #12
  %.not668 = icmp eq i32 %480, 0
  br i1 %.not668, label %481, label %482

481:                                              ; preds = %477, %471
  br label %482

482:                                              ; preds = %477, %481
  %.str.5.sink1038 = phi ptr [ @.str.5, %481 ], [ @.str.2, %477 ]
  store i32 %472, ptr %440, align 4, !tbaa !5
  %483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %484 = load i32, ptr @test_count, align 4, !tbaa !5
  %485 = load i32, ptr %386, align 4, !tbaa !5
  %486 = call ptr @s2n_strerror(i32 noundef %485, ptr noundef nonnull @.str.4) #12
  %487 = load i32, ptr %386, align 4, !tbaa !5
  %488 = call ptr @s2n_strerror_debug(i32 noundef %487, ptr noundef nonnull @.str.4) #12
  %489 = load i32, ptr %440, align 4, !tbaa !5
  %490 = call ptr @strerror(i32 noundef %489) #12
  %491 = load i32, ptr %440, align 4, !tbaa !5
  %492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %483, ptr noundef nonnull %.str.5.sink1038, i32 noundef %484, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 50, ptr noundef %486, ptr noundef %488, ptr noundef %490, i32 noundef %491) #14
  call void @exit(i32 noundef 1) #15
  unreachable

493:                                              ; preds = %467
  %494 = add nsw i32 %441, 3
  store i32 %494, ptr @test_count, align 4, !tbaa !5
  %495 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %241) #12
  br i1 %495, label %496, label %518

496:                                              ; preds = %493
  %497 = load i32, ptr %440, align 4, !tbaa !5
  %498 = load ptr, ptr @stderr, align 8, !tbaa !9
  %499 = call i32 @s2n_print_stacktrace(ptr noundef %498) #12
  %500 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %501 = trunc nuw i8 %500 to i1
  br i1 %501, label %502, label %506

502:                                              ; preds = %496
  %503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %504 = call i32 @fileno(ptr noundef %503) #12
  %505 = call i32 @isatty(i32 noundef %504) #12
  %.not835 = icmp eq i32 %505, 0
  br i1 %.not835, label %506, label %507

506:                                              ; preds = %502, %496
  br label %507

507:                                              ; preds = %502, %506
  %.str.5.sink1047 = phi ptr [ @.str.5, %506 ], [ @.str.2, %502 ]
  store i32 %497, ptr %440, align 4, !tbaa !5
  %508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %509 = load i32, ptr @test_count, align 4, !tbaa !5
  %510 = load i32, ptr %386, align 4, !tbaa !5
  %511 = call ptr @s2n_strerror(i32 noundef %510, ptr noundef nonnull @.str.4) #12
  %512 = load i32, ptr %386, align 4, !tbaa !5
  %513 = call ptr @s2n_strerror_debug(i32 noundef %512, ptr noundef nonnull @.str.4) #12
  %514 = load i32, ptr %440, align 4, !tbaa !5
  %515 = call ptr @strerror(i32 noundef %514) #12
  %516 = load i32, ptr %440, align 4, !tbaa !5
  %517 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %508, ptr noundef nonnull %.str.5.sink1047, i32 noundef %509, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 51, ptr noundef %511, ptr noundef %513, ptr noundef %515, i32 noundef %516) #14
  call void @exit(i32 noundef 1) #15
  unreachable

518:                                              ; preds = %493
  %519 = load i32, ptr @test_count, align 4, !tbaa !5
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr @test_count, align 4, !tbaa !5
  %521 = call i32 @s2n_connection_free(ptr noundef nonnull %241) #12
  %522 = icmp eq i32 %521, -1
  br i1 %522, label %523, label %545

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

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

533:                                              ; preds = %529, %523
  br label %534

534:                                              ; preds = %529, %533
  %.str.5.sink1056 = phi ptr [ @.str.5, %533 ], [ @.str.2, %529 ]
  store i32 %524, ptr %440, align 4, !tbaa !5
  %535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %536 = load i32, ptr @test_count, align 4, !tbaa !5
  %537 = load i32, ptr %386, align 4, !tbaa !5
  %538 = call ptr @s2n_strerror(i32 noundef %537, ptr noundef nonnull @.str.4) #12
  %539 = load i32, ptr %386, align 4, !tbaa !5
  %540 = call ptr @s2n_strerror_debug(i32 noundef %539, ptr noundef nonnull @.str.4) #12
  %541 = load i32, ptr %440, align 4, !tbaa !5
  %542 = call ptr @strerror(i32 noundef %541) #12
  %543 = load i32, ptr %440, align 4, !tbaa !5
  %544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %535, ptr noundef nonnull %.str.5.sink1056, i32 noundef %536, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 53, ptr noundef %538, ptr noundef %540, ptr noundef %542, i32 noundef %543) #14
  call void @exit(i32 noundef 1) #15
  unreachable

545:                                              ; preds = %518
  %546 = load i32, ptr @test_count, align 4, !tbaa !5
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr @test_count, align 4, !tbaa !5
  %548 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %549 = icmp eq ptr %548, null
  br i1 %549, label %550, label %572

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

556:                                              ; preds = %550
  %557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %558 = call i32 @fileno(ptr noundef %557) #12
  %559 = call i32 @isatty(i32 noundef %558) #12
  %.not833 = icmp eq i32 %559, 0
  br i1 %.not833, label %560, label %561

560:                                              ; preds = %556, %550
  br label %561

561:                                              ; preds = %556, %560
  %.str.5.sink1065 = phi ptr [ @.str.5, %560 ], [ @.str.2, %556 ]
  store i32 %551, ptr %440, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = load i32, ptr @test_count, align 4, !tbaa !5
  %564 = load i32, ptr %386, align 4, !tbaa !5
  %565 = call ptr @s2n_strerror(i32 noundef %564, ptr noundef nonnull @.str.4) #12
  %566 = load i32, ptr %386, align 4, !tbaa !5
  %567 = call ptr @s2n_strerror_debug(i32 noundef %566, ptr noundef nonnull @.str.4) #12
  %568 = load i32, ptr %440, align 4, !tbaa !5
  %569 = call ptr @strerror(i32 noundef %568) #12
  %570 = load i32, ptr %440, align 4, !tbaa !5
  %571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %562, ptr noundef nonnull %.str.5.sink1065, i32 noundef %563, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 60, ptr noundef %565, ptr noundef %567, ptr noundef %569, i32 noundef %570) #14
  call void @exit(i32 noundef 1) #15
  unreachable

572:                                              ; preds = %545
  %573 = load i32, ptr @test_count, align 4, !tbaa !5
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr @test_count, align 4, !tbaa !5
  %575 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %548, i8 noundef zeroext 34) #12
  %576 = icmp eq i32 %575, -1
  br i1 %576, label %577, label %599

577:                                              ; preds = %572
  %578 = load i32, ptr %440, align 4, !tbaa !5
  %579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %580 = call i32 @s2n_print_stacktrace(ptr noundef %579) #12
  %581 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %582 = trunc nuw i8 %581 to i1
  br i1 %582, label %583, label %587

583:                                              ; preds = %577
  %584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %585 = call i32 @fileno(ptr noundef %584) #12
  %586 = call i32 @isatty(i32 noundef %585) #12
  %.not832 = icmp eq i32 %586, 0
  br i1 %.not832, label %587, label %588

587:                                              ; preds = %583, %577
  br label %588

588:                                              ; preds = %583, %587
  %.str.5.sink1074 = phi ptr [ @.str.5, %587 ], [ @.str.2, %583 ]
  store i32 %578, ptr %440, align 4, !tbaa !5
  %589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %590 = load i32, ptr @test_count, align 4, !tbaa !5
  %591 = load i32, ptr %386, align 4, !tbaa !5
  %592 = call ptr @s2n_strerror(i32 noundef %591, ptr noundef nonnull @.str.4) #12
  %593 = load i32, ptr %386, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror_debug(i32 noundef %593, ptr noundef nonnull @.str.4) #12
  %595 = load i32, ptr %440, align 4, !tbaa !5
  %596 = call ptr @strerror(i32 noundef %595) #12
  %597 = load i32, ptr %440, align 4, !tbaa !5
  %598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %589, ptr noundef nonnull %.str.5.sink1074, i32 noundef %590, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 61, ptr noundef %592, ptr noundef %594, ptr noundef %596, i32 noundef %597) #14
  call void @exit(i32 noundef 1) #15
  unreachable

599:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #12
  store ptr null, ptr %2, align 8, !tbaa !9
  %600 = load i32, ptr @test_count, align 4, !tbaa !5
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr @test_count, align 4, !tbaa !5
  %602 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %548, ptr noundef nonnull %2) #12
  %603 = icmp eq i32 %602, -1
  br i1 %603, label %604, label %626

604:                                              ; preds = %599
  %605 = load i32, ptr %440, align 4, !tbaa !5
  %606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %607 = call i32 @s2n_print_stacktrace(ptr noundef %606) #12
  %608 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %609 = trunc nuw i8 %608 to i1
  br i1 %609, label %610, label %614

610:                                              ; preds = %604
  %611 = load ptr, ptr @stderr, align 8, !tbaa !9
  %612 = call i32 @fileno(ptr noundef %611) #12
  %613 = call i32 @isatty(i32 noundef %612) #12
  %.not831 = icmp eq i32 %613, 0
  br i1 %.not831, label %614, label %615

614:                                              ; preds = %610, %604
  br label %615

615:                                              ; preds = %610, %614
  %.str.5.sink1083 = phi ptr [ @.str.5, %614 ], [ @.str.2, %610 ]
  store i32 %605, ptr %440, align 4, !tbaa !5
  %616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %617 = load i32, ptr @test_count, align 4, !tbaa !5
  %618 = load i32, ptr %386, align 4, !tbaa !5
  %619 = call ptr @s2n_strerror(i32 noundef %618, ptr noundef nonnull @.str.4) #12
  %620 = load i32, ptr %386, align 4, !tbaa !5
  %621 = call ptr @s2n_strerror_debug(i32 noundef %620, ptr noundef nonnull @.str.4) #12
  %622 = load i32, ptr %440, align 4, !tbaa !5
  %623 = call ptr @strerror(i32 noundef %622) #12
  %624 = load i32, ptr %440, align 4, !tbaa !5
  %625 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %616, ptr noundef nonnull %.str.5.sink1083, i32 noundef %617, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 64, ptr noundef %619, ptr noundef %621, ptr noundef %623, i32 noundef %624) #14
  call void @exit(i32 noundef 1) #15
  unreachable

626:                                              ; preds = %599
  %627 = load i32, ptr @test_count, align 4, !tbaa !5
  %628 = add nsw i32 %627, 1
  store i32 %628, ptr @test_count, align 4, !tbaa !5
  %629 = load ptr, ptr %2, align 8, !tbaa !9
  %630 = icmp eq ptr %629, null
  br i1 %630, label %631, label %653

631:                                              ; preds = %626
  %632 = load i32, ptr %440, align 4, !tbaa !5
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = call i32 @s2n_print_stacktrace(ptr noundef %633) #12
  %635 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %636 = trunc nuw i8 %635 to i1
  br i1 %636, label %637, label %641

637:                                              ; preds = %631
  %638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %639 = call i32 @fileno(ptr noundef %638) #12
  %640 = call i32 @isatty(i32 noundef %639) #12
  %.not830 = icmp eq i32 %640, 0
  br i1 %.not830, label %641, label %642

641:                                              ; preds = %637, %631
  br label %642

642:                                              ; preds = %637, %641
  %.str.5.sink1092 = phi ptr [ @.str.5, %641 ], [ @.str.2, %637 ]
  store i32 %632, ptr %440, align 4, !tbaa !5
  %643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %644 = load i32, ptr @test_count, align 4, !tbaa !5
  %645 = load i32, ptr %386, align 4, !tbaa !5
  %646 = call ptr @s2n_strerror(i32 noundef %645, ptr noundef nonnull @.str.4) #12
  %647 = load i32, ptr %386, align 4, !tbaa !5
  %648 = call ptr @s2n_strerror_debug(i32 noundef %647, ptr noundef nonnull @.str.4) #12
  %649 = load i32, ptr %440, align 4, !tbaa !5
  %650 = call ptr @strerror(i32 noundef %649) #12
  %651 = load i32, ptr %440, align 4, !tbaa !5
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %643, ptr noundef nonnull %.str.5.sink1092, i32 noundef %644, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 65, ptr noundef %646, ptr noundef %648, ptr noundef %650, i32 noundef %651) #14
  call void @exit(i32 noundef 1) #15
  unreachable

653:                                              ; preds = %626
  %654 = add nsw i32 %627, 2
  store i32 %654, ptr @test_count, align 4, !tbaa !5
  %655 = getelementptr inbounds i8, ptr %548, i64 720
  %656 = load ptr, ptr %655, align 8, !tbaa !42
  %657 = icmp eq ptr %656, null
  br i1 %657, label %680, label %658

658:                                              ; preds = %653
  %659 = load i32, ptr %440, align 4, !tbaa !5
  %660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %661 = call i32 @s2n_print_stacktrace(ptr noundef %660) #12
  %662 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %663 = trunc nuw i8 %662 to i1
  br i1 %663, label %664, label %668

664:                                              ; preds = %658
  %665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %666 = call i32 @fileno(ptr noundef %665) #12
  %667 = call i32 @isatty(i32 noundef %666) #12
  %.not669 = icmp eq i32 %667, 0
  br i1 %.not669, label %668, label %669

668:                                              ; preds = %664, %658
  br label %669

669:                                              ; preds = %664, %668
  %.str.5.sink1101 = phi ptr [ @.str.5, %668 ], [ @.str.2, %664 ]
  store i32 %659, ptr %440, align 4, !tbaa !5
  %670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %671 = load i32, ptr @test_count, align 4, !tbaa !5
  %672 = load i32, ptr %386, align 4, !tbaa !5
  %673 = call ptr @s2n_strerror(i32 noundef %672, ptr noundef nonnull @.str.4) #12
  %674 = load i32, ptr %386, align 4, !tbaa !5
  %675 = call ptr @s2n_strerror_debug(i32 noundef %674, ptr noundef nonnull @.str.4) #12
  %676 = load i32, ptr %440, align 4, !tbaa !5
  %677 = call ptr @strerror(i32 noundef %676) #12
  %678 = load i32, ptr %440, align 4, !tbaa !5
  %679 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %670, ptr noundef nonnull %.str.5.sink1101, i32 noundef %671, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 67, ptr noundef %673, ptr noundef %675, ptr noundef %677, i32 noundef %678) #14
  call void @exit(i32 noundef 1) #15
  unreachable

680:                                              ; preds = %653
  %681 = getelementptr inbounds i8, ptr %629, i64 8
  %682 = load ptr, ptr %681, align 8, !tbaa !43
  %683 = getelementptr inbounds i8, ptr %682, i64 8
  %684 = load ptr, ptr %683, align 8, !tbaa !9
  %685 = getelementptr inbounds i8, ptr %548, i64 656
  store ptr %684, ptr %685, align 8, !tbaa !15
  %686 = add nsw i32 %627, 3
  store i32 %686, ptr @test_count, align 4, !tbaa !5
  %687 = getelementptr inbounds i8, ptr %548, i64 672
  %688 = load ptr, ptr %687, align 8, !tbaa !9
  %689 = icmp eq ptr %688, null
  br i1 %689, label %712, label %690

690:                                              ; preds = %680
  %691 = load i32, ptr %440, align 4, !tbaa !5
  %692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %693 = call i32 @s2n_print_stacktrace(ptr noundef %692) #12
  %694 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %695 = trunc nuw i8 %694 to i1
  br i1 %695, label %696, label %700

696:                                              ; preds = %690
  %697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %698 = call i32 @fileno(ptr noundef %697) #12
  %699 = call i32 @isatty(i32 noundef %698) #12
  %.not670 = icmp eq i32 %699, 0
  br i1 %.not670, label %700, label %701

700:                                              ; preds = %696, %690
  br label %701

701:                                              ; preds = %696, %700
  %.str.5.sink1110 = phi ptr [ @.str.5, %700 ], [ @.str.2, %696 ]
  store i32 %691, ptr %440, align 4, !tbaa !5
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = load i32, ptr @test_count, align 4, !tbaa !5
  %704 = load i32, ptr %386, align 4, !tbaa !5
  %705 = call ptr @s2n_strerror(i32 noundef %704, ptr noundef nonnull @.str.4) #12
  %706 = load i32, ptr %386, align 4, !tbaa !5
  %707 = call ptr @s2n_strerror_debug(i32 noundef %706, ptr noundef nonnull @.str.4) #12
  %708 = load i32, ptr %440, align 4, !tbaa !5
  %709 = call ptr @strerror(i32 noundef %708) #12
  %710 = load i32, ptr %440, align 4, !tbaa !5
  %711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %702, ptr noundef nonnull %.str.5.sink1110, i32 noundef %703, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %705, ptr noundef %707, ptr noundef %709, i32 noundef %710) #14
  call void @exit(i32 noundef 1) #15
  unreachable

712:                                              ; preds = %680
  %713 = getelementptr inbounds i8, ptr %548, i64 680
  store ptr %684, ptr %713, align 8, !tbaa !9
  %714 = add nsw i32 %627, 4
  store i32 %714, ptr @test_count, align 4, !tbaa !5
  %715 = getelementptr inbounds i8, ptr %548, i64 712
  %716 = load ptr, ptr %715, align 8, !tbaa !45
  %717 = icmp eq ptr %716, null
  br i1 %717, label %740, label %718

718:                                              ; preds = %712
  %719 = load i32, ptr %440, align 4, !tbaa !5
  %720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %721 = call i32 @s2n_print_stacktrace(ptr noundef %720) #12
  %722 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %723 = trunc nuw i8 %722 to i1
  br i1 %723, label %724, label %728

724:                                              ; preds = %718
  %725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %726 = call i32 @fileno(ptr noundef %725) #12
  %727 = call i32 @isatty(i32 noundef %726) #12
  %.not671 = icmp eq i32 %727, 0
  br i1 %.not671, label %728, label %729

728:                                              ; preds = %724, %718
  br label %729

729:                                              ; preds = %724, %728
  %.str.5.sink1119 = phi ptr [ @.str.5, %728 ], [ @.str.2, %724 ]
  store i32 %719, ptr %440, align 4, !tbaa !5
  %730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %731 = load i32, ptr @test_count, align 4, !tbaa !5
  %732 = load i32, ptr %386, align 4, !tbaa !5
  %733 = call ptr @s2n_strerror(i32 noundef %732, ptr noundef nonnull @.str.4) #12
  %734 = load i32, ptr %386, align 4, !tbaa !5
  %735 = call ptr @s2n_strerror_debug(i32 noundef %734, ptr noundef nonnull @.str.4) #12
  %736 = load i32, ptr %440, align 4, !tbaa !5
  %737 = call ptr @strerror(i32 noundef %736) #12
  %738 = load i32, ptr %440, align 4, !tbaa !5
  %739 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %730, ptr noundef nonnull %.str.5.sink1119, i32 noundef %731, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 71, ptr noundef %733, ptr noundef %735, ptr noundef %737, i32 noundef %738) #14
  call void @exit(i32 noundef 1) #15
  unreachable

740:                                              ; preds = %712
  %741 = getelementptr inbounds i8, ptr %548, i64 704
  %742 = add nsw i32 %627, 5
  store i32 %742, ptr @test_count, align 4, !tbaa !5
  %743 = load ptr, ptr %741, align 8, !tbaa !46
  %744 = icmp eq ptr %743, null
  br i1 %744, label %767, label %745

745:                                              ; preds = %740
  %746 = load i32, ptr %440, align 4, !tbaa !5
  %747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %748 = call i32 @s2n_print_stacktrace(ptr noundef %747) #12
  %749 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %750 = trunc nuw i8 %749 to i1
  br i1 %750, label %751, label %755

751:                                              ; preds = %745
  %752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %753 = call i32 @fileno(ptr noundef %752) #12
  %754 = call i32 @isatty(i32 noundef %753) #12
  %.not672 = icmp eq i32 %754, 0
  br i1 %.not672, label %755, label %756

755:                                              ; preds = %751, %745
  br label %756

756:                                              ; preds = %751, %755
  %.str.5.sink1128 = phi ptr [ @.str.5, %755 ], [ @.str.2, %751 ]
  store i32 %746, ptr %440, align 4, !tbaa !5
  %757 = load ptr, ptr @stderr, align 8, !tbaa !9
  %758 = load i32, ptr @test_count, align 4, !tbaa !5
  %759 = load i32, ptr %386, align 4, !tbaa !5
  %760 = call ptr @s2n_strerror(i32 noundef %759, ptr noundef nonnull @.str.4) #12
  %761 = load i32, ptr %386, align 4, !tbaa !5
  %762 = call ptr @s2n_strerror_debug(i32 noundef %761, ptr noundef nonnull @.str.4) #12
  %763 = load i32, ptr %440, align 4, !tbaa !5
  %764 = call ptr @strerror(i32 noundef %763) #12
  %765 = load i32, ptr %440, align 4, !tbaa !5
  %766 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %757, ptr noundef nonnull %.str.5.sink1128, i32 noundef %758, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 72, ptr noundef %760, ptr noundef %762, ptr noundef %764, i32 noundef %765) #14
  call void @exit(i32 noundef 1) #15
  unreachable

767:                                              ; preds = %740
  %768 = add nsw i32 %627, 6
  store i32 %768, ptr @test_count, align 4, !tbaa !5
  %769 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %548) #12
  %770 = icmp eq i32 %769, -1
  br i1 %770, label %771, label %793

771:                                              ; preds = %767
  %772 = load i32, ptr %440, align 4, !tbaa !5
  %773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %774 = call i32 @s2n_print_stacktrace(ptr noundef %773) #12
  %775 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %776 = trunc nuw i8 %775 to i1
  br i1 %776, label %777, label %781

777:                                              ; preds = %771
  %778 = load ptr, ptr @stderr, align 8, !tbaa !9
  %779 = call i32 @fileno(ptr noundef %778) #12
  %780 = call i32 @isatty(i32 noundef %779) #12
  %.not829 = icmp eq i32 %780, 0
  br i1 %.not829, label %781, label %782

781:                                              ; preds = %777, %771
  br label %782

782:                                              ; preds = %777, %781
  %.str.5.sink1137 = phi ptr [ @.str.5, %781 ], [ @.str.2, %777 ]
  store i32 %772, ptr %440, align 4, !tbaa !5
  %783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %784 = load i32, ptr @test_count, align 4, !tbaa !5
  %785 = load i32, ptr %386, align 4, !tbaa !5
  %786 = call ptr @s2n_strerror(i32 noundef %785, ptr noundef nonnull @.str.4) #12
  %787 = load i32, ptr %386, align 4, !tbaa !5
  %788 = call ptr @s2n_strerror_debug(i32 noundef %787, ptr noundef nonnull @.str.4) #12
  %789 = load i32, ptr %440, align 4, !tbaa !5
  %790 = call ptr @strerror(i32 noundef %789) #12
  %791 = load i32, ptr %440, align 4, !tbaa !5
  %792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %783, ptr noundef nonnull %.str.5.sink1137, i32 noundef %784, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 74, ptr noundef %786, ptr noundef %788, ptr noundef %790, i32 noundef %791) #14
  call void @exit(i32 noundef 1) #15
  unreachable

793:                                              ; preds = %767
  %794 = load i32, ptr @test_count, align 4, !tbaa !5
  %795 = add nsw i32 %794, 1
  store i32 %795, ptr @test_count, align 4, !tbaa !5
  %796 = load ptr, ptr %685, align 8, !tbaa !15
  %797 = load ptr, ptr %2, align 8, !tbaa !9
  %798 = getelementptr inbounds i8, ptr %797, i64 8
  %799 = load ptr, ptr %798, align 8, !tbaa !43
  %800 = getelementptr inbounds i8, ptr %799, i64 8
  %801 = load ptr, ptr %800, align 8, !tbaa !9
  %802 = icmp eq ptr %796, %801
  br i1 %802, label %825, label %803

803:                                              ; preds = %793
  %804 = load i32, ptr %440, align 4, !tbaa !5
  %805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %806 = call i32 @s2n_print_stacktrace(ptr noundef %805) #12
  %807 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %808 = trunc nuw i8 %807 to i1
  br i1 %808, label %809, label %813

809:                                              ; preds = %803
  %810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %811 = call i32 @fileno(ptr noundef %810) #12
  %812 = call i32 @isatty(i32 noundef %811) #12
  %.not673 = icmp eq i32 %812, 0
  br i1 %.not673, label %813, label %814

813:                                              ; preds = %809, %803
  br label %814

814:                                              ; preds = %809, %813
  %.str.5.sink1146 = phi ptr [ @.str.5, %813 ], [ @.str.2, %809 ]
  store i32 %804, ptr %440, align 4, !tbaa !5
  %815 = load ptr, ptr @stderr, align 8, !tbaa !9
  %816 = load i32, ptr @test_count, align 4, !tbaa !5
  %817 = load i32, ptr %386, align 4, !tbaa !5
  %818 = call ptr @s2n_strerror(i32 noundef %817, ptr noundef nonnull @.str.4) #12
  %819 = load i32, ptr %386, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror_debug(i32 noundef %819, ptr noundef nonnull @.str.4) #12
  %821 = load i32, ptr %440, align 4, !tbaa !5
  %822 = call ptr @strerror(i32 noundef %821) #12
  %823 = load i32, ptr %440, align 4, !tbaa !5
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %815, ptr noundef nonnull %.str.5.sink1146, i32 noundef %816, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 76, ptr noundef %818, ptr noundef %820, ptr noundef %822, i32 noundef %823) #14
  call void @exit(i32 noundef 1) #15
  unreachable

825:                                              ; preds = %793
  %826 = add nsw i32 %794, 2
  store i32 %826, ptr @test_count, align 4, !tbaa !5
  %827 = load ptr, ptr %655, align 8, !tbaa !42
  %828 = icmp eq ptr %827, null
  br i1 %828, label %851, label %829

829:                                              ; preds = %825
  %830 = load i32, ptr %440, align 4, !tbaa !5
  %831 = load ptr, ptr @stderr, align 8, !tbaa !9
  %832 = call i32 @s2n_print_stacktrace(ptr noundef %831) #12
  %833 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %834 = trunc nuw i8 %833 to i1
  br i1 %834, label %835, label %839

835:                                              ; preds = %829
  %836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %837 = call i32 @fileno(ptr noundef %836) #12
  %838 = call i32 @isatty(i32 noundef %837) #12
  %.not674 = icmp eq i32 %838, 0
  br i1 %.not674, label %839, label %840

839:                                              ; preds = %835, %829
  br label %840

840:                                              ; preds = %835, %839
  %.str.5.sink1155 = phi ptr [ @.str.5, %839 ], [ @.str.2, %835 ]
  store i32 %830, ptr %440, align 4, !tbaa !5
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = load i32, ptr @test_count, align 4, !tbaa !5
  %843 = load i32, ptr %386, align 4, !tbaa !5
  %844 = call ptr @s2n_strerror(i32 noundef %843, ptr noundef nonnull @.str.4) #12
  %845 = load i32, ptr %386, align 4, !tbaa !5
  %846 = call ptr @s2n_strerror_debug(i32 noundef %845, ptr noundef nonnull @.str.4) #12
  %847 = load i32, ptr %440, align 4, !tbaa !5
  %848 = call ptr @strerror(i32 noundef %847) #12
  %849 = load i32, ptr %440, align 4, !tbaa !5
  %850 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef nonnull %.str.5.sink1155, i32 noundef %842, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 77, ptr noundef %844, ptr noundef %846, ptr noundef %848, i32 noundef %849) #14
  call void @exit(i32 noundef 1) #15
  unreachable

851:                                              ; preds = %825
  %852 = add nsw i32 %794, 3
  store i32 %852, ptr @test_count, align 4, !tbaa !5
  %853 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %548) #12
  br i1 %853, label %876, label %854

854:                                              ; preds = %851
  %855 = load i32, ptr %440, align 4, !tbaa !5
  %856 = load ptr, ptr @stderr, align 8, !tbaa !9
  %857 = call i32 @s2n_print_stacktrace(ptr noundef %856) #12
  %858 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %859 = trunc nuw i8 %858 to i1
  br i1 %859, label %860, label %864

860:                                              ; preds = %854
  %861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %862 = call i32 @fileno(ptr noundef %861) #12
  %863 = call i32 @isatty(i32 noundef %862) #12
  %.not675 = icmp eq i32 %863, 0
  br i1 %.not675, label %864, label %865

864:                                              ; preds = %860, %854
  br label %865

865:                                              ; preds = %860, %864
  %.str.5.sink1164 = phi ptr [ @.str.5, %864 ], [ @.str.2, %860 ]
  store i32 %855, ptr %440, align 4, !tbaa !5
  %866 = load ptr, ptr @stderr, align 8, !tbaa !9
  %867 = load i32, ptr @test_count, align 4, !tbaa !5
  %868 = load i32, ptr %386, align 4, !tbaa !5
  %869 = call ptr @s2n_strerror(i32 noundef %868, ptr noundef nonnull @.str.4) #12
  %870 = load i32, ptr %386, align 4, !tbaa !5
  %871 = call ptr @s2n_strerror_debug(i32 noundef %870, ptr noundef nonnull @.str.4) #12
  %872 = load i32, ptr %440, align 4, !tbaa !5
  %873 = call ptr @strerror(i32 noundef %872) #12
  %874 = load i32, ptr %440, align 4, !tbaa !5
  %875 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %866, ptr noundef nonnull %.str.5.sink1164, i32 noundef %867, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 78, ptr noundef %869, ptr noundef %871, ptr noundef %873, i32 noundef %874) #14
  call void @exit(i32 noundef 1) #15
  unreachable

876:                                              ; preds = %851
  %877 = load i32, ptr @test_count, align 4, !tbaa !5
  %878 = add nsw i32 %877, 1
  store i32 %878, ptr @test_count, align 4, !tbaa !5
  %879 = call i32 @s2n_connection_free(ptr noundef nonnull %548) #12
  %880 = icmp eq i32 %879, -1
  br i1 %880, label %881, label %903

881:                                              ; preds = %876
  %882 = load i32, ptr %440, align 4, !tbaa !5
  %883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %884 = call i32 @s2n_print_stacktrace(ptr noundef %883) #12
  %885 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %886 = trunc nuw i8 %885 to i1
  br i1 %886, label %887, label %891

887:                                              ; preds = %881
  %888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %889 = call i32 @fileno(ptr noundef %888) #12
  %890 = call i32 @isatty(i32 noundef %889) #12
  %.not828 = icmp eq i32 %890, 0
  br i1 %.not828, label %891, label %892

891:                                              ; preds = %887, %881
  br label %892

892:                                              ; preds = %887, %891
  %.str.5.sink1173 = phi ptr [ @.str.5, %891 ], [ @.str.2, %887 ]
  store i32 %882, ptr %440, align 4, !tbaa !5
  %893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %894 = load i32, ptr @test_count, align 4, !tbaa !5
  %895 = load i32, ptr %386, align 4, !tbaa !5
  %896 = call ptr @s2n_strerror(i32 noundef %895, ptr noundef nonnull @.str.4) #12
  %897 = load i32, ptr %386, align 4, !tbaa !5
  %898 = call ptr @s2n_strerror_debug(i32 noundef %897, ptr noundef nonnull @.str.4) #12
  %899 = load i32, ptr %440, align 4, !tbaa !5
  %900 = call ptr @strerror(i32 noundef %899) #12
  %901 = load i32, ptr %440, align 4, !tbaa !5
  %902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %893, ptr noundef nonnull %.str.5.sink1173, i32 noundef %894, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 80, ptr noundef %896, ptr noundef %898, ptr noundef %900, i32 noundef %901) #14
  call void @exit(i32 noundef 1) #15
  unreachable

903:                                              ; preds = %876
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #12
  %904 = load i32, ptr @test_count, align 4, !tbaa !5
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr @test_count, align 4, !tbaa !5
  %906 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %907 = icmp eq ptr %906, null
  br i1 %907, label %908, label %930

908:                                              ; preds = %903
  %909 = load i32, ptr %440, align 4, !tbaa !5
  %910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %911 = call i32 @s2n_print_stacktrace(ptr noundef %910) #12
  %912 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %913 = trunc nuw i8 %912 to i1
  br i1 %913, label %914, label %918

914:                                              ; preds = %908
  %915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %916 = call i32 @fileno(ptr noundef %915) #12
  %917 = call i32 @isatty(i32 noundef %916) #12
  %.not827 = icmp eq i32 %917, 0
  br i1 %.not827, label %918, label %919

918:                                              ; preds = %914, %908
  br label %919

919:                                              ; preds = %914, %918
  %.str.5.sink1182 = phi ptr [ @.str.5, %918 ], [ @.str.2, %914 ]
  store i32 %909, ptr %440, align 4, !tbaa !5
  %920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %921 = load i32, ptr @test_count, align 4, !tbaa !5
  %922 = load i32, ptr %386, align 4, !tbaa !5
  %923 = call ptr @s2n_strerror(i32 noundef %922, ptr noundef nonnull @.str.4) #12
  %924 = load i32, ptr %386, align 4, !tbaa !5
  %925 = call ptr @s2n_strerror_debug(i32 noundef %924, ptr noundef nonnull @.str.4) #12
  %926 = load i32, ptr %440, align 4, !tbaa !5
  %927 = call ptr @strerror(i32 noundef %926) #12
  %928 = load i32, ptr %440, align 4, !tbaa !5
  %929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %920, ptr noundef nonnull %.str.5.sink1182, i32 noundef %921, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 87, ptr noundef %923, ptr noundef %925, ptr noundef %927, i32 noundef %928) #14
  call void @exit(i32 noundef 1) #15
  unreachable

930:                                              ; preds = %903
  %931 = load i32, ptr @test_count, align 4, !tbaa !5
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr @test_count, align 4, !tbaa !5
  %933 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %906, i8 noundef zeroext 34) #12
  %934 = icmp eq i32 %933, -1
  br i1 %934, label %935, label %957

935:                                              ; preds = %930
  %936 = load i32, ptr %440, align 4, !tbaa !5
  %937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %938 = call i32 @s2n_print_stacktrace(ptr noundef %937) #12
  %939 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %940 = trunc nuw i8 %939 to i1
  br i1 %940, label %941, label %945

941:                                              ; preds = %935
  %942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %943 = call i32 @fileno(ptr noundef %942) #12
  %944 = call i32 @isatty(i32 noundef %943) #12
  %.not826 = icmp eq i32 %944, 0
  br i1 %.not826, label %945, label %946

945:                                              ; preds = %941, %935
  br label %946

946:                                              ; preds = %941, %945
  %.str.5.sink1191 = phi ptr [ @.str.5, %945 ], [ @.str.2, %941 ]
  store i32 %936, ptr %440, align 4, !tbaa !5
  %947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %948 = load i32, ptr @test_count, align 4, !tbaa !5
  %949 = load i32, ptr %386, align 4, !tbaa !5
  %950 = call ptr @s2n_strerror(i32 noundef %949, ptr noundef nonnull @.str.4) #12
  %951 = load i32, ptr %386, align 4, !tbaa !5
  %952 = call ptr @s2n_strerror_debug(i32 noundef %951, ptr noundef nonnull @.str.4) #12
  %953 = load i32, ptr %440, align 4, !tbaa !5
  %954 = call ptr @strerror(i32 noundef %953) #12
  %955 = load i32, ptr %440, align 4, !tbaa !5
  %956 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %947, ptr noundef nonnull %.str.5.sink1191, i32 noundef %948, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef %950, ptr noundef %952, ptr noundef %954, i32 noundef %955) #14
  call void @exit(i32 noundef 1) #15
  unreachable

957:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #12
  store ptr null, ptr %3, align 8, !tbaa !9
  %958 = load i32, ptr @test_count, align 4, !tbaa !5
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr @test_count, align 4, !tbaa !5
  %960 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %906, ptr noundef nonnull %3) #12
  %961 = icmp eq i32 %960, -1
  br i1 %961, label %962, label %984

962:                                              ; preds = %957
  %963 = load i32, ptr %440, align 4, !tbaa !5
  %964 = load ptr, ptr @stderr, align 8, !tbaa !9
  %965 = call i32 @s2n_print_stacktrace(ptr noundef %964) #12
  %966 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %967 = trunc nuw i8 %966 to i1
  br i1 %967, label %968, label %972

968:                                              ; preds = %962
  %969 = load ptr, ptr @stderr, align 8, !tbaa !9
  %970 = call i32 @fileno(ptr noundef %969) #12
  %971 = call i32 @isatty(i32 noundef %970) #12
  %.not825 = icmp eq i32 %971, 0
  br i1 %.not825, label %972, label %973

972:                                              ; preds = %968, %962
  br label %973

973:                                              ; preds = %968, %972
  %.str.5.sink1200 = phi ptr [ @.str.5, %972 ], [ @.str.2, %968 ]
  store i32 %963, ptr %440, align 4, !tbaa !5
  %974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %975 = load i32, ptr @test_count, align 4, !tbaa !5
  %976 = load i32, ptr %386, align 4, !tbaa !5
  %977 = call ptr @s2n_strerror(i32 noundef %976, ptr noundef nonnull @.str.4) #12
  %978 = load i32, ptr %386, align 4, !tbaa !5
  %979 = call ptr @s2n_strerror_debug(i32 noundef %978, ptr noundef nonnull @.str.4) #12
  %980 = load i32, ptr %440, align 4, !tbaa !5
  %981 = call ptr @strerror(i32 noundef %980) #12
  %982 = load i32, ptr %440, align 4, !tbaa !5
  %983 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %974, ptr noundef nonnull %.str.5.sink1200, i32 noundef %975, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef %977, ptr noundef %979, ptr noundef %981, i32 noundef %982) #14
  call void @exit(i32 noundef 1) #15
  unreachable

984:                                              ; preds = %957
  %985 = load i32, ptr @test_count, align 4, !tbaa !5
  %986 = add nsw i32 %985, 1
  store i32 %986, ptr @test_count, align 4, !tbaa !5
  %987 = load ptr, ptr %3, align 8, !tbaa !9
  %988 = icmp eq ptr %987, null
  br i1 %988, label %989, label %1011

989:                                              ; preds = %984
  %990 = load i32, ptr %440, align 4, !tbaa !5
  %991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %992 = call i32 @s2n_print_stacktrace(ptr noundef %991) #12
  %993 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %994 = trunc nuw i8 %993 to i1
  br i1 %994, label %995, label %999

995:                                              ; preds = %989
  %996 = load ptr, ptr @stderr, align 8, !tbaa !9
  %997 = call i32 @fileno(ptr noundef %996) #12
  %998 = call i32 @isatty(i32 noundef %997) #12
  %.not824 = icmp eq i32 %998, 0
  br i1 %.not824, label %999, label %1000

999:                                              ; preds = %995, %989
  br label %1000

1000:                                             ; preds = %995, %999
  %.str.5.sink1209 = phi ptr [ @.str.5, %999 ], [ @.str.2, %995 ]
  store i32 %990, ptr %440, align 4, !tbaa !5
  %1001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1002 = load i32, ptr @test_count, align 4, !tbaa !5
  %1003 = load i32, ptr %386, align 4, !tbaa !5
  %1004 = call ptr @s2n_strerror(i32 noundef %1003, ptr noundef nonnull @.str.4) #12
  %1005 = load i32, ptr %386, align 4, !tbaa !5
  %1006 = call ptr @s2n_strerror_debug(i32 noundef %1005, ptr noundef nonnull @.str.4) #12
  %1007 = load i32, ptr %440, align 4, !tbaa !5
  %1008 = call ptr @strerror(i32 noundef %1007) #12
  %1009 = load i32, ptr %440, align 4, !tbaa !5
  %1010 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1001, ptr noundef nonnull %.str.5.sink1209, i32 noundef %1002, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 92, ptr noundef %1004, ptr noundef %1006, ptr noundef %1008, i32 noundef %1009) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1011:                                             ; preds = %984
  %1012 = add nsw i32 %985, 2
  store i32 %1012, ptr @test_count, align 4, !tbaa !5
  %1013 = getelementptr inbounds i8, ptr %906, i64 720
  %1014 = load ptr, ptr %1013, align 8, !tbaa !42
  %1015 = icmp eq ptr %1014, null
  br i1 %1015, label %1038, label %1016

1016:                                             ; preds = %1011
  %1017 = load i32, ptr %440, align 4, !tbaa !5
  %1018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1019 = call i32 @s2n_print_stacktrace(ptr noundef %1018) #12
  %1020 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1021 = trunc nuw i8 %1020 to i1
  br i1 %1021, label %1022, label %1026

1022:                                             ; preds = %1016
  %1023 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1024 = call i32 @fileno(ptr noundef %1023) #12
  %1025 = call i32 @isatty(i32 noundef %1024) #12
  %.not676 = icmp eq i32 %1025, 0
  br i1 %.not676, label %1026, label %1027

1026:                                             ; preds = %1022, %1016
  br label %1027

1027:                                             ; preds = %1022, %1026
  %.str.5.sink1218 = phi ptr [ @.str.5, %1026 ], [ @.str.2, %1022 ]
  store i32 %1017, ptr %440, align 4, !tbaa !5
  %1028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1029 = load i32, ptr @test_count, align 4, !tbaa !5
  %1030 = load i32, ptr %386, align 4, !tbaa !5
  %1031 = call ptr @s2n_strerror(i32 noundef %1030, ptr noundef nonnull @.str.4) #12
  %1032 = load i32, ptr %386, align 4, !tbaa !5
  %1033 = call ptr @s2n_strerror_debug(i32 noundef %1032, ptr noundef nonnull @.str.4) #12
  %1034 = load i32, ptr %440, align 4, !tbaa !5
  %1035 = call ptr @strerror(i32 noundef %1034) #12
  %1036 = load i32, ptr %440, align 4, !tbaa !5
  %1037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1028, ptr noundef nonnull %.str.5.sink1218, i32 noundef %1029, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 95, ptr noundef %1031, ptr noundef %1033, ptr noundef %1035, i32 noundef %1036) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1038:                                             ; preds = %1011
  %1039 = getelementptr inbounds i8, ptr %987, i64 8
  %1040 = load ptr, ptr %1039, align 8, !tbaa !43
  %1041 = load ptr, ptr %1040, align 8, !tbaa !9
  %1042 = getelementptr inbounds i8, ptr %906, i64 656
  store ptr %1041, ptr %1042, align 8, !tbaa !15
  %1043 = getelementptr inbounds i8, ptr %906, i64 672
  store ptr %1041, ptr %1043, align 8, !tbaa !9
  %1044 = load ptr, ptr %1039, align 8, !tbaa !43
  %1045 = getelementptr inbounds i8, ptr %1044, i64 8
  %1046 = load ptr, ptr %1045, align 8, !tbaa !9
  %1047 = getelementptr inbounds i8, ptr %906, i64 680
  store ptr %1046, ptr %1047, align 8, !tbaa !9
  %1048 = add nsw i32 %985, 3
  store i32 %1048, ptr @test_count, align 4, !tbaa !5
  %1049 = getelementptr inbounds i8, ptr %906, i64 704
  %1050 = getelementptr inbounds i8, ptr %906, i64 712
  %1051 = load ptr, ptr %1050, align 8, !tbaa !45
  %1052 = icmp eq ptr %1051, null
  br i1 %1052, label %1075, label %1053

1053:                                             ; preds = %1038
  %1054 = load i32, ptr %440, align 4, !tbaa !5
  %1055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1056 = call i32 @s2n_print_stacktrace(ptr noundef %1055) #12
  %1057 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1058 = trunc nuw i8 %1057 to i1
  br i1 %1058, label %1059, label %1063

1059:                                             ; preds = %1053
  %1060 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1061 = call i32 @fileno(ptr noundef %1060) #12
  %1062 = call i32 @isatty(i32 noundef %1061) #12
  %.not677 = icmp eq i32 %1062, 0
  br i1 %.not677, label %1063, label %1064

1063:                                             ; preds = %1059, %1053
  br label %1064

1064:                                             ; preds = %1059, %1063
  %.str.5.sink1227 = phi ptr [ @.str.5, %1063 ], [ @.str.2, %1059 ]
  store i32 %1054, ptr %440, align 4, !tbaa !5
  %1065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1066 = load i32, ptr @test_count, align 4, !tbaa !5
  %1067 = load i32, ptr %386, align 4, !tbaa !5
  %1068 = call ptr @s2n_strerror(i32 noundef %1067, ptr noundef nonnull @.str.4) #12
  %1069 = load i32, ptr %386, align 4, !tbaa !5
  %1070 = call ptr @s2n_strerror_debug(i32 noundef %1069, ptr noundef nonnull @.str.4) #12
  %1071 = load i32, ptr %440, align 4, !tbaa !5
  %1072 = call ptr @strerror(i32 noundef %1071) #12
  %1073 = load i32, ptr %440, align 4, !tbaa !5
  %1074 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1065, ptr noundef nonnull %.str.5.sink1227, i32 noundef %1066, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 100, ptr noundef %1068, ptr noundef %1070, ptr noundef %1072, i32 noundef %1073) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1075:                                             ; preds = %1038
  %1076 = add nsw i32 %985, 4
  store i32 %1076, ptr @test_count, align 4, !tbaa !5
  %1077 = load ptr, ptr %1049, align 8, !tbaa !46
  %1078 = icmp eq ptr %1077, null
  br i1 %1078, label %1101, label %1079

1079:                                             ; preds = %1075
  %1080 = load i32, ptr %440, align 4, !tbaa !5
  %1081 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1082 = call i32 @s2n_print_stacktrace(ptr noundef %1081) #12
  %1083 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1084 = trunc nuw i8 %1083 to i1
  br i1 %1084, label %1085, label %1089

1085:                                             ; preds = %1079
  %1086 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1087 = call i32 @fileno(ptr noundef %1086) #12
  %1088 = call i32 @isatty(i32 noundef %1087) #12
  %.not678 = icmp eq i32 %1088, 0
  br i1 %.not678, label %1089, label %1090

1089:                                             ; preds = %1085, %1079
  br label %1090

1090:                                             ; preds = %1085, %1089
  %.str.5.sink1236 = phi ptr [ @.str.5, %1089 ], [ @.str.2, %1085 ]
  store i32 %1080, ptr %440, align 4, !tbaa !5
  %1091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1092 = load i32, ptr @test_count, align 4, !tbaa !5
  %1093 = load i32, ptr %386, align 4, !tbaa !5
  %1094 = call ptr @s2n_strerror(i32 noundef %1093, ptr noundef nonnull @.str.4) #12
  %1095 = load i32, ptr %386, align 4, !tbaa !5
  %1096 = call ptr @s2n_strerror_debug(i32 noundef %1095, ptr noundef nonnull @.str.4) #12
  %1097 = load i32, ptr %440, align 4, !tbaa !5
  %1098 = call ptr @strerror(i32 noundef %1097) #12
  %1099 = load i32, ptr %440, align 4, !tbaa !5
  %1100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1091, ptr noundef nonnull %.str.5.sink1236, i32 noundef %1092, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 101, ptr noundef %1094, ptr noundef %1096, ptr noundef %1098, i32 noundef %1099) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1101:                                             ; preds = %1075
  %1102 = load ptr, ptr %1039, align 8, !tbaa !43
  %1103 = getelementptr inbounds i8, ptr %1102, i64 8
  %1104 = load ptr, ptr %1103, align 8, !tbaa !9
  store ptr %1104, ptr %1049, align 8, !tbaa !46
  %1105 = add nsw i32 %985, 5
  store i32 %1105, ptr @test_count, align 4, !tbaa !5
  %1106 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef nonnull %1049) #12
  %1107 = icmp eq i32 %1106, -1
  br i1 %1107, label %1108, label %1130

1108:                                             ; preds = %1101
  %1109 = load i32, ptr %440, align 4, !tbaa !5
  %1110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1111 = call i32 @s2n_print_stacktrace(ptr noundef %1110) #12
  %1112 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1113 = trunc nuw i8 %1112 to i1
  br i1 %1113, label %1114, label %1118

1114:                                             ; preds = %1108
  %1115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1116 = call i32 @fileno(ptr noundef %1115) #12
  %1117 = call i32 @isatty(i32 noundef %1116) #12
  %.not823 = icmp eq i32 %1117, 0
  br i1 %.not823, label %1118, label %1119

1118:                                             ; preds = %1114, %1108
  br label %1119

1119:                                             ; preds = %1114, %1118
  %.str.5.sink1245 = phi ptr [ @.str.5, %1118 ], [ @.str.2, %1114 ]
  store i32 %1109, ptr %440, align 4, !tbaa !5
  %1120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1121 = load i32, ptr @test_count, align 4, !tbaa !5
  %1122 = load i32, ptr %386, align 4, !tbaa !5
  %1123 = call ptr @s2n_strerror(i32 noundef %1122, ptr noundef nonnull @.str.4) #12
  %1124 = load i32, ptr %386, align 4, !tbaa !5
  %1125 = call ptr @s2n_strerror_debug(i32 noundef %1124, ptr noundef nonnull @.str.4) #12
  %1126 = load i32, ptr %440, align 4, !tbaa !5
  %1127 = call ptr @strerror(i32 noundef %1126) #12
  %1128 = load i32, ptr %440, align 4, !tbaa !5
  %1129 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1120, ptr noundef nonnull %.str.5.sink1245, i32 noundef %1121, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 103, ptr noundef %1123, ptr noundef %1125, ptr noundef %1127, i32 noundef %1128) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1130:                                             ; preds = %1101
  %1131 = load i32, ptr @test_count, align 4, !tbaa !5
  %1132 = add nsw i32 %1131, 1
  store i32 %1132, ptr @test_count, align 4, !tbaa !5
  %1133 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %906) #12
  %1134 = icmp eq i32 %1133, -1
  br i1 %1134, label %1135, label %1157

1135:                                             ; preds = %1130
  %1136 = load i32, ptr %440, align 4, !tbaa !5
  %1137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1138 = call i32 @s2n_print_stacktrace(ptr noundef %1137) #12
  %1139 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1140 = trunc nuw i8 %1139 to i1
  br i1 %1140, label %1141, label %1145

1141:                                             ; preds = %1135
  %1142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1143 = call i32 @fileno(ptr noundef %1142) #12
  %1144 = call i32 @isatty(i32 noundef %1143) #12
  %.not822 = icmp eq i32 %1144, 0
  br i1 %.not822, label %1145, label %1146

1145:                                             ; preds = %1141, %1135
  br label %1146

1146:                                             ; preds = %1141, %1145
  %.str.5.sink1254 = phi ptr [ @.str.5, %1145 ], [ @.str.2, %1141 ]
  store i32 %1136, ptr %440, align 4, !tbaa !5
  %1147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1148 = load i32, ptr @test_count, align 4, !tbaa !5
  %1149 = load i32, ptr %386, align 4, !tbaa !5
  %1150 = call ptr @s2n_strerror(i32 noundef %1149, ptr noundef nonnull @.str.4) #12
  %1151 = load i32, ptr %386, align 4, !tbaa !5
  %1152 = call ptr @s2n_strerror_debug(i32 noundef %1151, ptr noundef nonnull @.str.4) #12
  %1153 = load i32, ptr %440, align 4, !tbaa !5
  %1154 = call ptr @strerror(i32 noundef %1153) #12
  %1155 = load i32, ptr %440, align 4, !tbaa !5
  %1156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1147, ptr noundef nonnull %.str.5.sink1254, i32 noundef %1148, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 105, ptr noundef %1150, ptr noundef %1152, ptr noundef %1154, i32 noundef %1155) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1157:                                             ; preds = %1130
  %1158 = load i32, ptr @test_count, align 4, !tbaa !5
  %1159 = add nsw i32 %1158, 1
  store i32 %1159, ptr @test_count, align 4, !tbaa !5
  %1160 = load ptr, ptr %1042, align 8, !tbaa !15
  %1161 = load ptr, ptr %3, align 8, !tbaa !9
  %1162 = getelementptr inbounds i8, ptr %1161, i64 8
  %1163 = load ptr, ptr %1162, align 8, !tbaa !43
  %1164 = getelementptr inbounds i8, ptr %1163, i64 8
  %1165 = load ptr, ptr %1164, align 8, !tbaa !9
  %1166 = icmp eq ptr %1160, %1165
  br i1 %1166, label %1189, label %1167

1167:                                             ; preds = %1157
  %1168 = load i32, ptr %440, align 4, !tbaa !5
  %1169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1170 = call i32 @s2n_print_stacktrace(ptr noundef %1169) #12
  %1171 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1172 = trunc nuw i8 %1171 to i1
  br i1 %1172, label %1173, label %1177

1173:                                             ; preds = %1167
  %1174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1175 = call i32 @fileno(ptr noundef %1174) #12
  %1176 = call i32 @isatty(i32 noundef %1175) #12
  %.not679 = icmp eq i32 %1176, 0
  br i1 %.not679, label %1177, label %1178

1177:                                             ; preds = %1173, %1167
  br label %1178

1178:                                             ; preds = %1173, %1177
  %.str.5.sink1263 = phi ptr [ @.str.5, %1177 ], [ @.str.2, %1173 ]
  store i32 %1168, ptr %440, align 4, !tbaa !5
  %1179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1180 = load i32, ptr @test_count, align 4, !tbaa !5
  %1181 = load i32, ptr %386, align 4, !tbaa !5
  %1182 = call ptr @s2n_strerror(i32 noundef %1181, ptr noundef nonnull @.str.4) #12
  %1183 = load i32, ptr %386, align 4, !tbaa !5
  %1184 = call ptr @s2n_strerror_debug(i32 noundef %1183, ptr noundef nonnull @.str.4) #12
  %1185 = load i32, ptr %440, align 4, !tbaa !5
  %1186 = call ptr @strerror(i32 noundef %1185) #12
  %1187 = load i32, ptr %440, align 4, !tbaa !5
  %1188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1179, ptr noundef nonnull %.str.5.sink1263, i32 noundef %1180, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 108, ptr noundef %1182, ptr noundef %1184, ptr noundef %1186, i32 noundef %1187) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1189:                                             ; preds = %1157
  %1190 = add nsw i32 %1158, 2
  store i32 %1190, ptr @test_count, align 4, !tbaa !5
  %1191 = load ptr, ptr %1013, align 8, !tbaa !42
  %1192 = icmp eq ptr %1191, null
  br i1 %1192, label %1215, label %1193

1193:                                             ; preds = %1189
  %1194 = load i32, ptr %440, align 4, !tbaa !5
  %1195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1196 = call i32 @s2n_print_stacktrace(ptr noundef %1195) #12
  %1197 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1198 = trunc nuw i8 %1197 to i1
  br i1 %1198, label %1199, label %1203

1199:                                             ; preds = %1193
  %1200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1201 = call i32 @fileno(ptr noundef %1200) #12
  %1202 = call i32 @isatty(i32 noundef %1201) #12
  %.not680 = icmp eq i32 %1202, 0
  br i1 %.not680, label %1203, label %1204

1203:                                             ; preds = %1199, %1193
  br label %1204

1204:                                             ; preds = %1199, %1203
  %.str.5.sink1272 = phi ptr [ @.str.5, %1203 ], [ @.str.2, %1199 ]
  store i32 %1194, ptr %440, align 4, !tbaa !5
  %1205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1206 = load i32, ptr @test_count, align 4, !tbaa !5
  %1207 = load i32, ptr %386, align 4, !tbaa !5
  %1208 = call ptr @s2n_strerror(i32 noundef %1207, ptr noundef nonnull @.str.4) #12
  %1209 = load i32, ptr %386, align 4, !tbaa !5
  %1210 = call ptr @s2n_strerror_debug(i32 noundef %1209, ptr noundef nonnull @.str.4) #12
  %1211 = load i32, ptr %440, align 4, !tbaa !5
  %1212 = call ptr @strerror(i32 noundef %1211) #12
  %1213 = load i32, ptr %440, align 4, !tbaa !5
  %1214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1205, ptr noundef nonnull %.str.5.sink1272, i32 noundef %1206, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 109, ptr noundef %1208, ptr noundef %1210, ptr noundef %1212, i32 noundef %1213) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1215:                                             ; preds = %1189
  %1216 = add nsw i32 %1158, 3
  store i32 %1216, ptr @test_count, align 4, !tbaa !5
  %1217 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %906) #12
  br i1 %1217, label %1218, label %1240

1218:                                             ; preds = %1215
  %1219 = load i32, ptr %440, align 4, !tbaa !5
  %1220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1221 = call i32 @s2n_print_stacktrace(ptr noundef %1220) #12
  %1222 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1223 = trunc nuw i8 %1222 to i1
  br i1 %1223, label %1224, label %1228

1224:                                             ; preds = %1218
  %1225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1226 = call i32 @fileno(ptr noundef %1225) #12
  %1227 = call i32 @isatty(i32 noundef %1226) #12
  %.not821 = icmp eq i32 %1227, 0
  br i1 %.not821, label %1228, label %1229

1228:                                             ; preds = %1224, %1218
  br label %1229

1229:                                             ; preds = %1224, %1228
  %.str.5.sink1281 = phi ptr [ @.str.5, %1228 ], [ @.str.2, %1224 ]
  store i32 %1219, ptr %440, align 4, !tbaa !5
  %1230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1231 = load i32, ptr @test_count, align 4, !tbaa !5
  %1232 = load i32, ptr %386, align 4, !tbaa !5
  %1233 = call ptr @s2n_strerror(i32 noundef %1232, ptr noundef nonnull @.str.4) #12
  %1234 = load i32, ptr %386, align 4, !tbaa !5
  %1235 = call ptr @s2n_strerror_debug(i32 noundef %1234, ptr noundef nonnull @.str.4) #12
  %1236 = load i32, ptr %440, align 4, !tbaa !5
  %1237 = call ptr @strerror(i32 noundef %1236) #12
  %1238 = load i32, ptr %440, align 4, !tbaa !5
  %1239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1230, ptr noundef nonnull %.str.5.sink1281, i32 noundef %1231, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 110, ptr noundef %1233, ptr noundef %1235, ptr noundef %1237, i32 noundef %1238) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1240:                                             ; preds = %1215
  %1241 = load i32, ptr @test_count, align 4, !tbaa !5
  %1242 = add nsw i32 %1241, 1
  store i32 %1242, ptr @test_count, align 4, !tbaa !5
  %1243 = call i32 @s2n_connection_free(ptr noundef nonnull %906) #12
  %1244 = icmp eq i32 %1243, -1
  br i1 %1244, label %1245, label %1267

1245:                                             ; preds = %1240
  %1246 = load i32, ptr %440, align 4, !tbaa !5
  %1247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1248 = call i32 @s2n_print_stacktrace(ptr noundef %1247) #12
  %1249 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1250 = trunc nuw i8 %1249 to i1
  br i1 %1250, label %1251, label %1255

1251:                                             ; preds = %1245
  %1252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1253 = call i32 @fileno(ptr noundef %1252) #12
  %1254 = call i32 @isatty(i32 noundef %1253) #12
  %.not820 = icmp eq i32 %1254, 0
  br i1 %.not820, label %1255, label %1256

1255:                                             ; preds = %1251, %1245
  br label %1256

1256:                                             ; preds = %1251, %1255
  %.str.5.sink1290 = phi ptr [ @.str.5, %1255 ], [ @.str.2, %1251 ]
  store i32 %1246, ptr %440, align 4, !tbaa !5
  %1257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1258 = load i32, ptr @test_count, align 4, !tbaa !5
  %1259 = load i32, ptr %386, align 4, !tbaa !5
  %1260 = call ptr @s2n_strerror(i32 noundef %1259, ptr noundef nonnull @.str.4) #12
  %1261 = load i32, ptr %386, align 4, !tbaa !5
  %1262 = call ptr @s2n_strerror_debug(i32 noundef %1261, ptr noundef nonnull @.str.4) #12
  %1263 = load i32, ptr %440, align 4, !tbaa !5
  %1264 = call ptr @strerror(i32 noundef %1263) #12
  %1265 = load i32, ptr %440, align 4, !tbaa !5
  %1266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1257, ptr noundef nonnull %.str.5.sink1290, i32 noundef %1258, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 112, ptr noundef %1260, ptr noundef %1262, ptr noundef %1264, i32 noundef %1265) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1267:                                             ; preds = %1240
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, ptr noundef nonnull align 8 dereferenceable(64) @__const.main.test_security_policy, i64 64, i1 false)
  %1268 = load i32, ptr @test_count, align 4, !tbaa !5
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr @test_count, align 4, !tbaa !5
  %1270 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %1271 = icmp eq ptr %1270, null
  br i1 %1271, label %1272, label %1294

1272:                                             ; preds = %1267
  %1273 = load i32, ptr %440, align 4, !tbaa !5
  %1274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1275 = call i32 @s2n_print_stacktrace(ptr noundef %1274) #12
  %1276 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1277 = trunc nuw i8 %1276 to i1
  br i1 %1277, label %1278, label %1282

1278:                                             ; preds = %1272
  %1279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1280 = call i32 @fileno(ptr noundef %1279) #12
  %1281 = call i32 @isatty(i32 noundef %1280) #12
  %.not819 = icmp eq i32 %1281, 0
  br i1 %.not819, label %1282, label %1283

1282:                                             ; preds = %1278, %1272
  br label %1283

1283:                                             ; preds = %1278, %1282
  %.str.5.sink1299 = phi ptr [ @.str.5, %1282 ], [ @.str.2, %1278 ]
  store i32 %1273, ptr %440, align 4, !tbaa !5
  %1284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1285 = load i32, ptr @test_count, align 4, !tbaa !5
  %1286 = load i32, ptr %386, align 4, !tbaa !5
  %1287 = call ptr @s2n_strerror(i32 noundef %1286, ptr noundef nonnull @.str.4) #12
  %1288 = load i32, ptr %386, align 4, !tbaa !5
  %1289 = call ptr @s2n_strerror_debug(i32 noundef %1288, ptr noundef nonnull @.str.4) #12
  %1290 = load i32, ptr %440, align 4, !tbaa !5
  %1291 = call ptr @strerror(i32 noundef %1290) #12
  %1292 = load i32, ptr %440, align 4, !tbaa !5
  %1293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1284, ptr noundef nonnull %.str.5.sink1299, i32 noundef %1285, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 128, ptr noundef %1287, ptr noundef %1289, ptr noundef %1291, i32 noundef %1292) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1294:                                             ; preds = %1267
  %1295 = getelementptr inbounds i8, ptr %1270, i64 16
  store ptr %4, ptr %1295, align 8, !tbaa !47
  %1296 = load i32, ptr @test_count, align 4, !tbaa !5
  %1297 = add nsw i32 %1296, 1
  store i32 %1297, ptr @test_count, align 4, !tbaa !5
  %1298 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %1270, i8 noundef zeroext 34) #12
  %1299 = icmp eq i32 %1298, -1
  br i1 %1299, label %1300, label %1322

1300:                                             ; preds = %1294
  %1301 = load i32, ptr %440, align 4, !tbaa !5
  %1302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1303 = call i32 @s2n_print_stacktrace(ptr noundef %1302) #12
  %1304 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1305 = trunc nuw i8 %1304 to i1
  br i1 %1305, label %1306, label %1310

1306:                                             ; preds = %1300
  %1307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1308 = call i32 @fileno(ptr noundef %1307) #12
  %1309 = call i32 @isatty(i32 noundef %1308) #12
  %.not818 = icmp eq i32 %1309, 0
  br i1 %.not818, label %1310, label %1311

1310:                                             ; preds = %1306, %1300
  br label %1311

1311:                                             ; preds = %1306, %1310
  %.str.5.sink1308 = phi ptr [ @.str.5, %1310 ], [ @.str.2, %1306 ]
  store i32 %1301, ptr %440, align 4, !tbaa !5
  %1312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1313 = load i32, ptr @test_count, align 4, !tbaa !5
  %1314 = load i32, ptr %386, align 4, !tbaa !5
  %1315 = call ptr @s2n_strerror(i32 noundef %1314, ptr noundef nonnull @.str.4) #12
  %1316 = load i32, ptr %386, align 4, !tbaa !5
  %1317 = call ptr @s2n_strerror_debug(i32 noundef %1316, ptr noundef nonnull @.str.4) #12
  %1318 = load i32, ptr %440, align 4, !tbaa !5
  %1319 = call ptr @strerror(i32 noundef %1318) #12
  %1320 = load i32, ptr %440, align 4, !tbaa !5
  %1321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1312, ptr noundef nonnull %.str.5.sink1308, i32 noundef %1313, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 130, ptr noundef %1315, ptr noundef %1317, ptr noundef %1319, i32 noundef %1320) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1322:                                             ; preds = %1294
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  store ptr null, ptr %5, align 8, !tbaa !9
  %1323 = load i32, ptr @test_count, align 4, !tbaa !5
  %1324 = add nsw i32 %1323, 1
  store i32 %1324, ptr @test_count, align 4, !tbaa !5
  %1325 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %1270, ptr noundef nonnull %5) #12
  %1326 = icmp eq i32 %1325, -1
  br i1 %1326, label %1327, label %1349

1327:                                             ; preds = %1322
  %1328 = load i32, ptr %440, align 4, !tbaa !5
  %1329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1330 = call i32 @s2n_print_stacktrace(ptr noundef %1329) #12
  %1331 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1332 = trunc nuw i8 %1331 to i1
  br i1 %1332, label %1333, label %1337

1333:                                             ; preds = %1327
  %1334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1335 = call i32 @fileno(ptr noundef %1334) #12
  %1336 = call i32 @isatty(i32 noundef %1335) #12
  %.not817 = icmp eq i32 %1336, 0
  br i1 %.not817, label %1337, label %1338

1337:                                             ; preds = %1333, %1327
  br label %1338

1338:                                             ; preds = %1333, %1337
  %.str.5.sink1317 = phi ptr [ @.str.5, %1337 ], [ @.str.2, %1333 ]
  store i32 %1328, ptr %440, align 4, !tbaa !5
  %1339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1340 = load i32, ptr @test_count, align 4, !tbaa !5
  %1341 = load i32, ptr %386, align 4, !tbaa !5
  %1342 = call ptr @s2n_strerror(i32 noundef %1341, ptr noundef nonnull @.str.4) #12
  %1343 = load i32, ptr %386, align 4, !tbaa !5
  %1344 = call ptr @s2n_strerror_debug(i32 noundef %1343, ptr noundef nonnull @.str.4) #12
  %1345 = load i32, ptr %440, align 4, !tbaa !5
  %1346 = call ptr @strerror(i32 noundef %1345) #12
  %1347 = load i32, ptr %440, align 4, !tbaa !5
  %1348 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1339, ptr noundef nonnull %.str.5.sink1317, i32 noundef %1340, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 133, ptr noundef %1342, ptr noundef %1344, ptr noundef %1346, i32 noundef %1347) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1349:                                             ; preds = %1322
  %1350 = load i32, ptr @test_count, align 4, !tbaa !5
  %1351 = add nsw i32 %1350, 1
  store i32 %1351, ptr @test_count, align 4, !tbaa !5
  %1352 = load ptr, ptr %5, align 8, !tbaa !9
  %1353 = icmp eq ptr %1352, null
  br i1 %1353, label %1354, label %1376

1354:                                             ; preds = %1349
  %1355 = load i32, ptr %440, align 4, !tbaa !5
  %1356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1357 = call i32 @s2n_print_stacktrace(ptr noundef %1356) #12
  %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 = %1354
  %1361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1362 = call i32 @fileno(ptr noundef %1361) #12
  %1363 = call i32 @isatty(i32 noundef %1362) #12
  %.not816 = icmp eq i32 %1363, 0
  br i1 %.not816, label %1364, label %1365

1364:                                             ; preds = %1360, %1354
  br label %1365

1365:                                             ; preds = %1360, %1364
  %.str.5.sink1326 = phi ptr [ @.str.5, %1364 ], [ @.str.2, %1360 ]
  store i32 %1355, ptr %440, align 4, !tbaa !5
  %1366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1367 = load i32, ptr @test_count, align 4, !tbaa !5
  %1368 = load i32, ptr %386, align 4, !tbaa !5
  %1369 = call ptr @s2n_strerror(i32 noundef %1368, ptr noundef nonnull @.str.4) #12
  %1370 = load i32, ptr %386, align 4, !tbaa !5
  %1371 = call ptr @s2n_strerror_debug(i32 noundef %1370, ptr noundef nonnull @.str.4) #12
  %1372 = load i32, ptr %440, align 4, !tbaa !5
  %1373 = call ptr @strerror(i32 noundef %1372) #12
  %1374 = load i32, ptr %440, align 4, !tbaa !5
  %1375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1366, ptr noundef nonnull %.str.5.sink1326, i32 noundef %1367, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 134, ptr noundef %1369, ptr noundef %1371, ptr noundef %1373, i32 noundef %1374) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1376:                                             ; preds = %1349
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  store ptr null, ptr %6, align 8, !tbaa !9
  %1377 = add nsw i32 %1350, 2
  store i32 %1377, ptr @test_count, align 4, !tbaa !5
  %1378 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %1270, ptr noundef nonnull %6) #12
  %1379 = icmp eq i32 %1378, -1
  br i1 %1379, label %1380, label %1402

1380:                                             ; preds = %1376
  %1381 = load i32, ptr %440, align 4, !tbaa !5
  %1382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1383 = call i32 @s2n_print_stacktrace(ptr noundef %1382) #12
  %1384 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1385 = trunc nuw i8 %1384 to i1
  br i1 %1385, label %1386, label %1390

1386:                                             ; preds = %1380
  %1387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1388 = call i32 @fileno(ptr noundef %1387) #12
  %1389 = call i32 @isatty(i32 noundef %1388) #12
  %.not815 = icmp eq i32 %1389, 0
  br i1 %.not815, label %1390, label %1391

1390:                                             ; preds = %1386, %1380
  br label %1391

1391:                                             ; preds = %1386, %1390
  %.str.5.sink1335 = phi ptr [ @.str.5, %1390 ], [ @.str.2, %1386 ]
  store i32 %1381, ptr %440, align 4, !tbaa !5
  %1392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1393 = load i32, ptr @test_count, align 4, !tbaa !5
  %1394 = load i32, ptr %386, align 4, !tbaa !5
  %1395 = call ptr @s2n_strerror(i32 noundef %1394, ptr noundef nonnull @.str.4) #12
  %1396 = load i32, ptr %386, align 4, !tbaa !5
  %1397 = call ptr @s2n_strerror_debug(i32 noundef %1396, ptr noundef nonnull @.str.4) #12
  %1398 = load i32, ptr %440, align 4, !tbaa !5
  %1399 = call ptr @strerror(i32 noundef %1398) #12
  %1400 = load i32, ptr %440, align 4, !tbaa !5
  %1401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1392, ptr noundef nonnull %.str.5.sink1335, i32 noundef %1393, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 137, ptr noundef %1395, ptr noundef %1397, ptr noundef %1399, i32 noundef %1400) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1402:                                             ; preds = %1376
  %1403 = load i32, ptr @test_count, align 4, !tbaa !5
  %1404 = add nsw i32 %1403, 1
  store i32 %1404, ptr @test_count, align 4, !tbaa !5
  %1405 = load ptr, ptr %6, align 8, !tbaa !9
  %1406 = icmp eq ptr %1405, null
  br i1 %1406, label %1407, label %1429

1407:                                             ; preds = %1402
  %1408 = load i32, ptr %440, align 4, !tbaa !5
  %1409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1410 = call i32 @s2n_print_stacktrace(ptr noundef %1409) #12
  %1411 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1412 = trunc nuw i8 %1411 to i1
  br i1 %1412, label %1413, label %1417

1413:                                             ; preds = %1407
  %1414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1415 = call i32 @fileno(ptr noundef %1414) #12
  %1416 = call i32 @isatty(i32 noundef %1415) #12
  %.not814 = icmp eq i32 %1416, 0
  br i1 %.not814, label %1417, label %1418

1417:                                             ; preds = %1413, %1407
  br label %1418

1418:                                             ; preds = %1413, %1417
  %.str.5.sink1344 = phi ptr [ @.str.5, %1417 ], [ @.str.2, %1413 ]
  store i32 %1408, ptr %440, align 4, !tbaa !5
  %1419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1420 = load i32, ptr @test_count, align 4, !tbaa !5
  %1421 = load i32, ptr %386, align 4, !tbaa !5
  %1422 = call ptr @s2n_strerror(i32 noundef %1421, ptr noundef nonnull @.str.4) #12
  %1423 = load i32, ptr %386, align 4, !tbaa !5
  %1424 = call ptr @s2n_strerror_debug(i32 noundef %1423, ptr noundef nonnull @.str.4) #12
  %1425 = load i32, ptr %440, align 4, !tbaa !5
  %1426 = call ptr @strerror(i32 noundef %1425) #12
  %1427 = load i32, ptr %440, align 4, !tbaa !5
  %1428 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1419, ptr noundef nonnull %.str.5.sink1344, i32 noundef %1420, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 138, ptr noundef %1422, ptr noundef %1424, ptr noundef %1426, i32 noundef %1427) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1429:                                             ; preds = %1402
  %1430 = load ptr, ptr %5, align 8, !tbaa !9
  %1431 = getelementptr inbounds i8, ptr %1430, i64 8
  %1432 = load ptr, ptr %1431, align 8, !tbaa !43
  %1433 = load ptr, ptr %1432, align 8, !tbaa !9
  %1434 = getelementptr inbounds i8, ptr %1270, i64 656
  store ptr %1433, ptr %1434, align 8, !tbaa !15
  %1435 = getelementptr inbounds i8, ptr %1405, i64 24
  %1436 = load ptr, ptr %1435, align 8, !tbaa !48
  %1437 = load ptr, ptr %1436, align 8, !tbaa !9
  %1438 = getelementptr inbounds i8, ptr %1270, i64 720
  store ptr %1437, ptr %1438, align 8, !tbaa !42
  %1439 = add nsw i32 %1403, 2
  store i32 %1439, ptr @test_count, align 4, !tbaa !5
  %1440 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %1270) #12
  %1441 = icmp eq i32 %1440, -1
  br i1 %1441, label %1464, label %1442

1442:                                             ; preds = %1429
  %1443 = load i32, ptr %440, align 4, !tbaa !5
  %1444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1445 = call i32 @s2n_print_stacktrace(ptr noundef %1444) #12
  %1446 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1447 = trunc nuw i8 %1446 to i1
  br i1 %1447, label %1448, label %1452

1448:                                             ; preds = %1442
  %1449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1450 = call i32 @fileno(ptr noundef %1449) #12
  %1451 = call i32 @isatty(i32 noundef %1450) #12
  %.not681 = icmp eq i32 %1451, 0
  br i1 %.not681, label %1452, label %1453

1452:                                             ; preds = %1448, %1442
  br label %1453

1453:                                             ; preds = %1448, %1452
  %.str.5.sink1353 = phi ptr [ @.str.5, %1452 ], [ @.str.2, %1448 ]
  store i32 %1443, ptr %440, align 4, !tbaa !5
  %1454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1455 = load i32, ptr @test_count, align 4, !tbaa !5
  %1456 = load i32, ptr %386, align 4, !tbaa !5
  %1457 = call ptr @s2n_strerror(i32 noundef %1456, ptr noundef nonnull @.str.4) #12
  %1458 = load i32, ptr %386, align 4, !tbaa !5
  %1459 = call ptr @s2n_strerror_debug(i32 noundef %1458, ptr noundef nonnull @.str.4) #12
  %1460 = load i32, ptr %440, align 4, !tbaa !5
  %1461 = call ptr @strerror(i32 noundef %1460) #12
  %1462 = load i32, ptr %440, align 4, !tbaa !5
  %1463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1454, ptr noundef nonnull %.str.5.sink1353, i32 noundef %1455, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 144, ptr noundef %1457, ptr noundef %1459, ptr noundef %1461, i32 noundef %1462) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1464:                                             ; preds = %1429
  %1465 = load i32, ptr @test_count, align 4, !tbaa !5
  %1466 = add nsw i32 %1465, 1
  store i32 %1466, ptr @test_count, align 4, !tbaa !5
  %1467 = load i32, ptr %386, align 4, !tbaa !5
  %1468 = icmp eq i32 %1467, 335544356
  br i1 %1468, label %1491, label %1469

1469:                                             ; preds = %1464
  %1470 = load i32, ptr %440, align 4, !tbaa !5
  %1471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1472 = call i32 @s2n_print_stacktrace(ptr noundef %1471) #12
  %1473 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1474 = trunc nuw i8 %1473 to i1
  br i1 %1474, label %1475, label %1479

1475:                                             ; preds = %1469
  %1476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1477 = call i32 @fileno(ptr noundef %1476) #12
  %1478 = call i32 @isatty(i32 noundef %1477) #12
  %.not682 = icmp eq i32 %1478, 0
  br i1 %.not682, label %1479, label %1480

1479:                                             ; preds = %1475, %1469
  br label %1480

1480:                                             ; preds = %1475, %1479
  %.str.5.sink1362 = phi ptr [ @.str.5, %1479 ], [ @.str.2, %1475 ]
  store i32 %1470, ptr %440, align 4, !tbaa !5
  %1481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1482 = load i32, ptr @test_count, align 4, !tbaa !5
  %1483 = load i32, ptr %386, align 4, !tbaa !5
  %1484 = call ptr @s2n_strerror(i32 noundef %1483, ptr noundef nonnull @.str.4) #12
  %1485 = load i32, ptr %386, align 4, !tbaa !5
  %1486 = call ptr @s2n_strerror_debug(i32 noundef %1485, ptr noundef nonnull @.str.4) #12
  %1487 = load i32, ptr %440, align 4, !tbaa !5
  %1488 = call ptr @strerror(i32 noundef %1487) #12
  %1489 = load i32, ptr %440, align 4, !tbaa !5
  %1490 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1481, ptr noundef nonnull %.str.5.sink1362, i32 noundef %1482, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 144, ptr noundef %1484, ptr noundef %1486, ptr noundef %1488, i32 noundef %1489) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1491:                                             ; preds = %1464
  %1492 = add nsw i32 %1465, 2
  store i32 %1492, ptr @test_count, align 4, !tbaa !5
  %1493 = call ptr @s2n_strerror_debug(i32 noundef 335544356, ptr noundef nonnull @.str.4) #12
  %1494 = icmp eq ptr %1493, null
  br i1 %1494, label %1495, label %1517

1495:                                             ; preds = %1491
  %1496 = load i32, ptr %440, align 4, !tbaa !5
  %1497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1498 = call i32 @s2n_print_stacktrace(ptr noundef %1497) #12
  %1499 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1500 = trunc nuw i8 %1499 to i1
  br i1 %1500, label %1501, label %1505

1501:                                             ; preds = %1495
  %1502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1503 = call i32 @fileno(ptr noundef %1502) #12
  %1504 = call i32 @isatty(i32 noundef %1503) #12
  %.not813 = icmp eq i32 %1504, 0
  br i1 %.not813, label %1505, label %1506

1505:                                             ; preds = %1501, %1495
  br label %1506

1506:                                             ; preds = %1501, %1505
  %.str.5.sink1371 = phi ptr [ @.str.5, %1505 ], [ @.str.2, %1501 ]
  store i32 %1496, ptr %440, align 4, !tbaa !5
  %1507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1508 = load i32, ptr @test_count, align 4, !tbaa !5
  %1509 = load i32, ptr %386, align 4, !tbaa !5
  %1510 = call ptr @s2n_strerror(i32 noundef %1509, ptr noundef nonnull @.str.4) #12
  %1511 = load i32, ptr %386, align 4, !tbaa !5
  %1512 = call ptr @s2n_strerror_debug(i32 noundef %1511, ptr noundef nonnull @.str.4) #12
  %1513 = load i32, ptr %440, align 4, !tbaa !5
  %1514 = call ptr @strerror(i32 noundef %1513) #12
  %1515 = load i32, ptr %440, align 4, !tbaa !5
  %1516 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1507, ptr noundef nonnull %.str.5.sink1371, i32 noundef %1508, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 144, ptr noundef %1510, ptr noundef %1512, ptr noundef %1514, i32 noundef %1515) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1517:                                             ; preds = %1491
  store i32 0, ptr %386, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #12
  store i32 0, ptr %440, align 4, !tbaa !5
  %1518 = load i32, ptr @test_count, align 4, !tbaa !5
  %1519 = add nsw i32 %1518, 1
  store i32 %1519, ptr @test_count, align 4, !tbaa !5
  %1520 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %1270) #12
  br i1 %1520, label %1521, label %1543

1521:                                             ; preds = %1517
  %1522 = load i32, ptr %440, align 4, !tbaa !5
  %1523 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1524 = call i32 @s2n_print_stacktrace(ptr noundef %1523) #12
  %1525 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1526 = trunc nuw i8 %1525 to i1
  br i1 %1526, label %1527, label %1531

1527:                                             ; preds = %1521
  %1528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1529 = call i32 @fileno(ptr noundef %1528) #12
  %1530 = call i32 @isatty(i32 noundef %1529) #12
  %.not812 = icmp eq i32 %1530, 0
  br i1 %.not812, label %1531, label %1532

1531:                                             ; preds = %1527, %1521
  br label %1532

1532:                                             ; preds = %1527, %1531
  %.str.5.sink1380 = phi ptr [ @.str.5, %1531 ], [ @.str.2, %1527 ]
  store i32 %1522, ptr %440, align 4, !tbaa !5
  %1533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1534 = load i32, ptr @test_count, align 4, !tbaa !5
  %1535 = load i32, ptr %386, align 4, !tbaa !5
  %1536 = call ptr @s2n_strerror(i32 noundef %1535, ptr noundef nonnull @.str.4) #12
  %1537 = load i32, ptr %386, align 4, !tbaa !5
  %1538 = call ptr @s2n_strerror_debug(i32 noundef %1537, ptr noundef nonnull @.str.4) #12
  %1539 = load i32, ptr %440, align 4, !tbaa !5
  %1540 = call ptr @strerror(i32 noundef %1539) #12
  %1541 = load i32, ptr %440, align 4, !tbaa !5
  %1542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1533, ptr noundef nonnull %.str.5.sink1380, i32 noundef %1534, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 146, ptr noundef %1536, ptr noundef %1538, ptr noundef %1540, i32 noundef %1541) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1543:                                             ; preds = %1517
  %1544 = load i32, ptr @test_count, align 4, !tbaa !5
  %1545 = add nsw i32 %1544, 1
  store i32 %1545, ptr @test_count, align 4, !tbaa !5
  %1546 = call i32 @s2n_connection_free(ptr noundef nonnull %1270) #12
  %1547 = icmp eq i32 %1546, -1
  br i1 %1547, label %1548, label %1570

1548:                                             ; preds = %1543
  %1549 = load i32, ptr %440, align 4, !tbaa !5
  %1550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1551 = call i32 @s2n_print_stacktrace(ptr noundef %1550) #12
  %1552 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1553 = trunc nuw i8 %1552 to i1
  br i1 %1553, label %1554, label %1558

1554:                                             ; preds = %1548
  %1555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1556 = call i32 @fileno(ptr noundef %1555) #12
  %1557 = call i32 @isatty(i32 noundef %1556) #12
  %.not811 = icmp eq i32 %1557, 0
  br i1 %.not811, label %1558, label %1559

1558:                                             ; preds = %1554, %1548
  br label %1559

1559:                                             ; preds = %1554, %1558
  %.str.5.sink1389 = phi ptr [ @.str.5, %1558 ], [ @.str.2, %1554 ]
  store i32 %1549, ptr %440, align 4, !tbaa !5
  %1560 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1561 = load i32, ptr @test_count, align 4, !tbaa !5
  %1562 = load i32, ptr %386, align 4, !tbaa !5
  %1563 = call ptr @s2n_strerror(i32 noundef %1562, ptr noundef nonnull @.str.4) #12
  %1564 = load i32, ptr %386, align 4, !tbaa !5
  %1565 = call ptr @s2n_strerror_debug(i32 noundef %1564, ptr noundef nonnull @.str.4) #12
  %1566 = load i32, ptr %440, align 4, !tbaa !5
  %1567 = call ptr @strerror(i32 noundef %1566) #12
  %1568 = load i32, ptr %440, align 4, !tbaa !5
  %1569 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1560, ptr noundef nonnull %.str.5.sink1389, i32 noundef %1561, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 148, ptr noundef %1563, ptr noundef %1565, ptr noundef %1567, i32 noundef %1568) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1570:                                             ; preds = %1543
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  %1571 = load i32, ptr @test_count, align 4, !tbaa !5
  %1572 = add nsw i32 %1571, 1
  store i32 %1572, ptr @test_count, align 4, !tbaa !5
  %1573 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %1574 = icmp eq ptr %1573, null
  br i1 %1574, label %1575, label %1597

1575:                                             ; preds = %1570
  %1576 = load i32, ptr %440, align 4, !tbaa !5
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1578 = call i32 @s2n_print_stacktrace(ptr noundef %1577) #12
  %1579 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1580 = trunc nuw i8 %1579 to i1
  br i1 %1580, label %1581, label %1585

1581:                                             ; preds = %1575
  %1582 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1583 = call i32 @fileno(ptr noundef %1582) #12
  %1584 = call i32 @isatty(i32 noundef %1583) #12
  %.not810 = icmp eq i32 %1584, 0
  br i1 %.not810, label %1585, label %1586

1585:                                             ; preds = %1581, %1575
  br label %1586

1586:                                             ; preds = %1581, %1585
  %.str.5.sink1398 = phi ptr [ @.str.5, %1585 ], [ @.str.2, %1581 ]
  store i32 %1576, ptr %440, align 4, !tbaa !5
  %1587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1588 = load i32, ptr @test_count, align 4, !tbaa !5
  %1589 = load i32, ptr %386, align 4, !tbaa !5
  %1590 = call ptr @s2n_strerror(i32 noundef %1589, ptr noundef nonnull @.str.4) #12
  %1591 = load i32, ptr %386, align 4, !tbaa !5
  %1592 = call ptr @s2n_strerror_debug(i32 noundef %1591, ptr noundef nonnull @.str.4) #12
  %1593 = load i32, ptr %440, align 4, !tbaa !5
  %1594 = call ptr @strerror(i32 noundef %1593) #12
  %1595 = load i32, ptr %440, align 4, !tbaa !5
  %1596 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1587, ptr noundef nonnull %.str.5.sink1398, i32 noundef %1588, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 155, ptr noundef %1590, ptr noundef %1592, ptr noundef %1594, i32 noundef %1595) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1597:                                             ; preds = %1570
  %1598 = getelementptr inbounds i8, ptr %1573, i64 16
  store ptr %4, ptr %1598, align 8, !tbaa !47
  %1599 = load i32, ptr @test_count, align 4, !tbaa !5
  %1600 = add nsw i32 %1599, 1
  store i32 %1600, ptr @test_count, align 4, !tbaa !5
  %1601 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %1573, i8 noundef zeroext 34) #12
  %1602 = icmp eq i32 %1601, -1
  br i1 %1602, label %1603, label %1625

1603:                                             ; preds = %1597
  %1604 = load i32, ptr %440, align 4, !tbaa !5
  %1605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1606 = call i32 @s2n_print_stacktrace(ptr noundef %1605) #12
  %1607 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1608 = trunc nuw i8 %1607 to i1
  br i1 %1608, label %1609, label %1613

1609:                                             ; preds = %1603
  %1610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1611 = call i32 @fileno(ptr noundef %1610) #12
  %1612 = call i32 @isatty(i32 noundef %1611) #12
  %.not809 = icmp eq i32 %1612, 0
  br i1 %.not809, label %1613, label %1614

1613:                                             ; preds = %1609, %1603
  br label %1614

1614:                                             ; preds = %1609, %1613
  %.str.5.sink1407 = phi ptr [ @.str.5, %1613 ], [ @.str.2, %1609 ]
  store i32 %1604, ptr %440, align 4, !tbaa !5
  %1615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1616 = load i32, ptr @test_count, align 4, !tbaa !5
  %1617 = load i32, ptr %386, align 4, !tbaa !5
  %1618 = call ptr @s2n_strerror(i32 noundef %1617, ptr noundef nonnull @.str.4) #12
  %1619 = load i32, ptr %386, align 4, !tbaa !5
  %1620 = call ptr @s2n_strerror_debug(i32 noundef %1619, ptr noundef nonnull @.str.4) #12
  %1621 = load i32, ptr %440, align 4, !tbaa !5
  %1622 = call ptr @strerror(i32 noundef %1621) #12
  %1623 = load i32, ptr %440, align 4, !tbaa !5
  %1624 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1615, ptr noundef nonnull %.str.5.sink1407, i32 noundef %1616, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 157, ptr noundef %1618, ptr noundef %1620, ptr noundef %1622, i32 noundef %1623) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1625:                                             ; preds = %1597
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #12
  store ptr null, ptr %7, align 8, !tbaa !9
  %1626 = load i32, ptr @test_count, align 4, !tbaa !5
  %1627 = add nsw i32 %1626, 1
  store i32 %1627, ptr @test_count, align 4, !tbaa !5
  %1628 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %1573, ptr noundef nonnull %7) #12
  %1629 = icmp eq i32 %1628, -1
  br i1 %1629, label %1630, label %1652

1630:                                             ; preds = %1625
  %1631 = load i32, ptr %440, align 4, !tbaa !5
  %1632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1633 = call i32 @s2n_print_stacktrace(ptr noundef %1632) #12
  %1634 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1635 = trunc nuw i8 %1634 to i1
  br i1 %1635, label %1636, label %1640

1636:                                             ; preds = %1630
  %1637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1638 = call i32 @fileno(ptr noundef %1637) #12
  %1639 = call i32 @isatty(i32 noundef %1638) #12
  %.not808 = icmp eq i32 %1639, 0
  br i1 %.not808, label %1640, label %1641

1640:                                             ; preds = %1636, %1630
  br label %1641

1641:                                             ; preds = %1636, %1640
  %.str.5.sink1416 = phi ptr [ @.str.5, %1640 ], [ @.str.2, %1636 ]
  store i32 %1631, ptr %440, align 4, !tbaa !5
  %1642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1643 = load i32, ptr @test_count, align 4, !tbaa !5
  %1644 = load i32, ptr %386, align 4, !tbaa !5
  %1645 = call ptr @s2n_strerror(i32 noundef %1644, ptr noundef nonnull @.str.4) #12
  %1646 = load i32, ptr %386, align 4, !tbaa !5
  %1647 = call ptr @s2n_strerror_debug(i32 noundef %1646, ptr noundef nonnull @.str.4) #12
  %1648 = load i32, ptr %440, align 4, !tbaa !5
  %1649 = call ptr @strerror(i32 noundef %1648) #12
  %1650 = load i32, ptr %440, align 4, !tbaa !5
  %1651 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1642, ptr noundef nonnull %.str.5.sink1416, i32 noundef %1643, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 160, ptr noundef %1645, ptr noundef %1647, ptr noundef %1649, i32 noundef %1650) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1652:                                             ; preds = %1625
  %1653 = load i32, ptr @test_count, align 4, !tbaa !5
  %1654 = add nsw i32 %1653, 1
  store i32 %1654, ptr @test_count, align 4, !tbaa !5
  %1655 = load ptr, ptr %7, align 8, !tbaa !9
  %1656 = icmp eq ptr %1655, null
  br i1 %1656, label %1657, label %1679

1657:                                             ; preds = %1652
  %1658 = load i32, ptr %440, align 4, !tbaa !5
  %1659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1660 = call i32 @s2n_print_stacktrace(ptr noundef %1659) #12
  %1661 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1662 = trunc nuw i8 %1661 to i1
  br i1 %1662, label %1663, label %1667

1663:                                             ; preds = %1657
  %1664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1665 = call i32 @fileno(ptr noundef %1664) #12
  %1666 = call i32 @isatty(i32 noundef %1665) #12
  %.not807 = icmp eq i32 %1666, 0
  br i1 %.not807, label %1667, label %1668

1667:                                             ; preds = %1663, %1657
  br label %1668

1668:                                             ; preds = %1663, %1667
  %.str.5.sink1425 = phi ptr [ @.str.5, %1667 ], [ @.str.2, %1663 ]
  store i32 %1658, ptr %440, align 4, !tbaa !5
  %1669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1670 = load i32, ptr @test_count, align 4, !tbaa !5
  %1671 = load i32, ptr %386, align 4, !tbaa !5
  %1672 = call ptr @s2n_strerror(i32 noundef %1671, ptr noundef nonnull @.str.4) #12
  %1673 = load i32, ptr %386, align 4, !tbaa !5
  %1674 = call ptr @s2n_strerror_debug(i32 noundef %1673, ptr noundef nonnull @.str.4) #12
  %1675 = load i32, ptr %440, align 4, !tbaa !5
  %1676 = call ptr @strerror(i32 noundef %1675) #12
  %1677 = load i32, ptr %440, align 4, !tbaa !5
  %1678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1669, ptr noundef nonnull %.str.5.sink1425, i32 noundef %1670, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 161, ptr noundef %1672, ptr noundef %1674, ptr noundef %1676, i32 noundef %1677) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1679:                                             ; preds = %1652
  %1680 = add nsw i32 %1653, 2
  store i32 %1680, ptr @test_count, align 4, !tbaa !5
  %1681 = getelementptr inbounds i8, ptr %1573, i64 656
  %1682 = load ptr, ptr %1681, align 8, !tbaa !15
  %1683 = icmp eq ptr %1682, null
  br i1 %1683, label %1706, label %1684

1684:                                             ; preds = %1679
  %1685 = load i32, ptr %440, align 4, !tbaa !5
  %1686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1687 = call i32 @s2n_print_stacktrace(ptr noundef %1686) #12
  %1688 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1689 = trunc nuw i8 %1688 to i1
  br i1 %1689, label %1690, label %1694

1690:                                             ; preds = %1684
  %1691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1692 = call i32 @fileno(ptr noundef %1691) #12
  %1693 = call i32 @isatty(i32 noundef %1692) #12
  %.not683 = icmp eq i32 %1693, 0
  br i1 %.not683, label %1694, label %1695

1694:                                             ; preds = %1690, %1684
  br label %1695

1695:                                             ; preds = %1690, %1694
  %.str.5.sink1434 = phi ptr [ @.str.5, %1694 ], [ @.str.2, %1690 ]
  store i32 %1685, ptr %440, align 4, !tbaa !5
  %1696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1697 = load i32, ptr @test_count, align 4, !tbaa !5
  %1698 = load i32, ptr %386, align 4, !tbaa !5
  %1699 = call ptr @s2n_strerror(i32 noundef %1698, ptr noundef nonnull @.str.4) #12
  %1700 = load i32, ptr %386, align 4, !tbaa !5
  %1701 = call ptr @s2n_strerror_debug(i32 noundef %1700, ptr noundef nonnull @.str.4) #12
  %1702 = load i32, ptr %440, align 4, !tbaa !5
  %1703 = call ptr @strerror(i32 noundef %1702) #12
  %1704 = load i32, ptr %440, align 4, !tbaa !5
  %1705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1696, ptr noundef nonnull %.str.5.sink1434, i32 noundef %1697, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef %1699, ptr noundef %1701, ptr noundef %1703, i32 noundef %1704) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1706:                                             ; preds = %1679
  %1707 = getelementptr inbounds i8, ptr %1573, i64 720
  %1708 = getelementptr inbounds i8, ptr %1655, i64 24
  %1709 = load ptr, ptr %1708, align 8, !tbaa !48
  %1710 = getelementptr inbounds i8, ptr %1709, i64 8
  %1711 = load ptr, ptr %1710, align 8, !tbaa !9
  store ptr %1711, ptr %1707, align 8, !tbaa !50
  %1712 = getelementptr inbounds i8, ptr %1711, i64 24
  %1713 = load ptr, ptr %1712, align 8, !tbaa !51
  %1714 = getelementptr inbounds i8, ptr %1573, i64 728
  store ptr %1713, ptr %1714, align 8, !tbaa !53
  %1715 = getelementptr inbounds i8, ptr %1711, i64 16
  %1716 = load ptr, ptr %1715, align 8, !tbaa !54
  %1717 = getelementptr inbounds i8, ptr %1573, i64 816
  store ptr %1716, ptr %1717, align 8, !tbaa !55
  %1718 = add nsw i32 %1653, 3
  store i32 %1718, ptr @test_count, align 4, !tbaa !5
  %1719 = getelementptr inbounds i8, ptr %1573, i64 944
  %1720 = load ptr, ptr %1719, align 8, !tbaa !9
  %1721 = icmp eq ptr %1720, null
  br i1 %1721, label %1744, label %1722

1722:                                             ; preds = %1706
  %1723 = load i32, ptr %440, align 4, !tbaa !5
  %1724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1725 = call i32 @s2n_print_stacktrace(ptr noundef %1724) #12
  %1726 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1727 = trunc nuw i8 %1726 to i1
  br i1 %1727, label %1728, label %1732

1728:                                             ; preds = %1722
  %1729 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1730 = call i32 @fileno(ptr noundef %1729) #12
  %1731 = call i32 @isatty(i32 noundef %1730) #12
  %.not684 = icmp eq i32 %1731, 0
  br i1 %.not684, label %1732, label %1733

1732:                                             ; preds = %1728, %1722
  br label %1733

1733:                                             ; preds = %1728, %1732
  %.str.5.sink1443 = phi ptr [ @.str.5, %1732 ], [ @.str.2, %1728 ]
  store i32 %1723, ptr %440, align 4, !tbaa !5
  %1734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1735 = load i32, ptr @test_count, align 4, !tbaa !5
  %1736 = load i32, ptr %386, align 4, !tbaa !5
  %1737 = call ptr @s2n_strerror(i32 noundef %1736, ptr noundef nonnull @.str.4) #12
  %1738 = load i32, ptr %386, align 4, !tbaa !5
  %1739 = call ptr @s2n_strerror_debug(i32 noundef %1738, ptr noundef nonnull @.str.4) #12
  %1740 = load i32, ptr %440, align 4, !tbaa !5
  %1741 = call ptr @strerror(i32 noundef %1740) #12
  %1742 = load i32, ptr %440, align 4, !tbaa !5
  %1743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1734, ptr noundef nonnull %.str.5.sink1443, i32 noundef %1735, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 172, ptr noundef %1737, ptr noundef %1739, ptr noundef %1741, i32 noundef %1742) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1744:                                             ; preds = %1706
  %1745 = getelementptr inbounds i8, ptr %1573, i64 952
  store ptr %1711, ptr %1745, align 8, !tbaa !9
  %1746 = add nsw i32 %1653, 4
  store i32 %1746, ptr @test_count, align 4, !tbaa !5
  %1747 = getelementptr inbounds i8, ptr %1573, i64 832
  %1748 = load ptr, ptr %1747, align 8, !tbaa !56
  %1749 = icmp eq ptr %1748, null
  br i1 %1749, label %1772, label %1750

1750:                                             ; preds = %1744
  %1751 = load i32, ptr %440, align 4, !tbaa !5
  %1752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1753 = call i32 @s2n_print_stacktrace(ptr noundef %1752) #12
  %1754 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1755 = trunc nuw i8 %1754 to i1
  br i1 %1755, label %1756, label %1760

1756:                                             ; preds = %1750
  %1757 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1758 = call i32 @fileno(ptr noundef %1757) #12
  %1759 = call i32 @isatty(i32 noundef %1758) #12
  %.not685 = icmp eq i32 %1759, 0
  br i1 %.not685, label %1760, label %1761

1760:                                             ; preds = %1756, %1750
  br label %1761

1761:                                             ; preds = %1756, %1760
  %.str.5.sink1452 = phi ptr [ @.str.5, %1760 ], [ @.str.2, %1756 ]
  store i32 %1751, ptr %440, align 4, !tbaa !5
  %1762 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1763 = load i32, ptr @test_count, align 4, !tbaa !5
  %1764 = load i32, ptr %386, align 4, !tbaa !5
  %1765 = call ptr @s2n_strerror(i32 noundef %1764, ptr noundef nonnull @.str.4) #12
  %1766 = load i32, ptr %386, align 4, !tbaa !5
  %1767 = call ptr @s2n_strerror_debug(i32 noundef %1766, ptr noundef nonnull @.str.4) #12
  %1768 = load i32, ptr %440, align 4, !tbaa !5
  %1769 = call ptr @strerror(i32 noundef %1768) #12
  %1770 = load i32, ptr %440, align 4, !tbaa !5
  %1771 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1762, ptr noundef nonnull %.str.5.sink1452, i32 noundef %1763, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef %1765, ptr noundef %1767, ptr noundef %1769, i32 noundef %1770) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1772:                                             ; preds = %1744
  %1773 = add nsw i32 %1653, 5
  store i32 %1773, ptr @test_count, align 4, !tbaa !5
  %1774 = getelementptr inbounds i8, ptr %1573, i64 840
  %1775 = load ptr, ptr %1774, align 8, !tbaa !57
  %1776 = icmp eq ptr %1775, null
  br i1 %1776, label %1799, label %1777

1777:                                             ; preds = %1772
  %1778 = load i32, ptr %440, align 4, !tbaa !5
  %1779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1780 = call i32 @s2n_print_stacktrace(ptr noundef %1779) #12
  %1781 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1782 = trunc nuw i8 %1781 to i1
  br i1 %1782, label %1783, label %1787

1783:                                             ; preds = %1777
  %1784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1785 = call i32 @fileno(ptr noundef %1784) #12
  %1786 = call i32 @isatty(i32 noundef %1785) #12
  %.not686 = icmp eq i32 %1786, 0
  br i1 %.not686, label %1787, label %1788

1787:                                             ; preds = %1783, %1777
  br label %1788

1788:                                             ; preds = %1783, %1787
  %.str.5.sink1461 = phi ptr [ @.str.5, %1787 ], [ @.str.2, %1783 ]
  store i32 %1778, ptr %440, align 4, !tbaa !5
  %1789 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1790 = load i32, ptr @test_count, align 4, !tbaa !5
  %1791 = load i32, ptr %386, align 4, !tbaa !5
  %1792 = call ptr @s2n_strerror(i32 noundef %1791, ptr noundef nonnull @.str.4) #12
  %1793 = load i32, ptr %386, align 4, !tbaa !5
  %1794 = call ptr @s2n_strerror_debug(i32 noundef %1793, ptr noundef nonnull @.str.4) #12
  %1795 = load i32, ptr %440, align 4, !tbaa !5
  %1796 = call ptr @strerror(i32 noundef %1795) #12
  %1797 = load i32, ptr %440, align 4, !tbaa !5
  %1798 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1789, ptr noundef nonnull %.str.5.sink1461, i32 noundef %1790, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 177, ptr noundef %1792, ptr noundef %1794, ptr noundef %1796, i32 noundef %1797) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1799:                                             ; preds = %1772
  %1800 = add nsw i32 %1653, 6
  store i32 %1800, ptr @test_count, align 4, !tbaa !5
  %1801 = getelementptr inbounds i8, ptr %1573, i64 848
  %1802 = load ptr, ptr %1801, align 8, !tbaa !58
  %1803 = icmp eq ptr %1802, null
  br i1 %1803, label %1826, label %1804

1804:                                             ; preds = %1799
  %1805 = load i32, ptr %440, align 4, !tbaa !5
  %1806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1807 = call i32 @s2n_print_stacktrace(ptr noundef %1806) #12
  %1808 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1809 = trunc nuw i8 %1808 to i1
  br i1 %1809, label %1810, label %1814

1810:                                             ; preds = %1804
  %1811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1812 = call i32 @fileno(ptr noundef %1811) #12
  %1813 = call i32 @isatty(i32 noundef %1812) #12
  %.not687 = icmp eq i32 %1813, 0
  br i1 %.not687, label %1814, label %1815

1814:                                             ; preds = %1810, %1804
  br label %1815

1815:                                             ; preds = %1810, %1814
  %.str.5.sink1470 = phi ptr [ @.str.5, %1814 ], [ @.str.2, %1810 ]
  store i32 %1805, ptr %440, align 4, !tbaa !5
  %1816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1817 = load i32, ptr @test_count, align 4, !tbaa !5
  %1818 = load i32, ptr %386, align 4, !tbaa !5
  %1819 = call ptr @s2n_strerror(i32 noundef %1818, ptr noundef nonnull @.str.4) #12
  %1820 = load i32, ptr %386, align 4, !tbaa !5
  %1821 = call ptr @s2n_strerror_debug(i32 noundef %1820, ptr noundef nonnull @.str.4) #12
  %1822 = load i32, ptr %440, align 4, !tbaa !5
  %1823 = call ptr @strerror(i32 noundef %1822) #12
  %1824 = load i32, ptr %440, align 4, !tbaa !5
  %1825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1816, ptr noundef nonnull %.str.5.sink1470, i32 noundef %1817, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 178, ptr noundef %1819, ptr noundef %1821, ptr noundef %1823, i32 noundef %1824) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1826:                                             ; preds = %1799
  %1827 = add nsw i32 %1653, 7
  store i32 %1827, ptr @test_count, align 4, !tbaa !5
  %1828 = getelementptr inbounds i8, ptr %1573, i64 928
  %1829 = load ptr, ptr %1828, align 8, !tbaa !59
  %1830 = icmp eq ptr %1829, null
  br i1 %1830, label %1853, label %1831

1831:                                             ; preds = %1826
  %1832 = load i32, ptr %440, align 4, !tbaa !5
  %1833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1834 = call i32 @s2n_print_stacktrace(ptr noundef %1833) #12
  %1835 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1836 = trunc nuw i8 %1835 to i1
  br i1 %1836, label %1837, label %1841

1837:                                             ; preds = %1831
  %1838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1839 = call i32 @fileno(ptr noundef %1838) #12
  %1840 = call i32 @isatty(i32 noundef %1839) #12
  %.not688 = icmp eq i32 %1840, 0
  br i1 %.not688, label %1841, label %1842

1841:                                             ; preds = %1837, %1831
  br label %1842

1842:                                             ; preds = %1837, %1841
  %.str.5.sink1479 = phi ptr [ @.str.5, %1841 ], [ @.str.2, %1837 ]
  store i32 %1832, ptr %440, align 4, !tbaa !5
  %1843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1844 = load i32, ptr @test_count, align 4, !tbaa !5
  %1845 = load i32, ptr %386, align 4, !tbaa !5
  %1846 = call ptr @s2n_strerror(i32 noundef %1845, ptr noundef nonnull @.str.4) #12
  %1847 = load i32, ptr %386, align 4, !tbaa !5
  %1848 = call ptr @s2n_strerror_debug(i32 noundef %1847, ptr noundef nonnull @.str.4) #12
  %1849 = load i32, ptr %440, align 4, !tbaa !5
  %1850 = call ptr @strerror(i32 noundef %1849) #12
  %1851 = load i32, ptr %440, align 4, !tbaa !5
  %1852 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1843, ptr noundef nonnull %.str.5.sink1479, i32 noundef %1844, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 179, ptr noundef %1846, ptr noundef %1848, ptr noundef %1850, i32 noundef %1851) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1853:                                             ; preds = %1826
  %1854 = add nsw i32 %1653, 8
  store i32 %1854, ptr @test_count, align 4, !tbaa !5
  %1855 = getelementptr inbounds i8, ptr %1573, i64 936
  %1856 = load ptr, ptr %1855, align 8, !tbaa !60
  %1857 = icmp eq ptr %1856, null
  br i1 %1857, label %1880, label %1858

1858:                                             ; preds = %1853
  %1859 = load i32, ptr %440, align 4, !tbaa !5
  %1860 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1861 = call i32 @s2n_print_stacktrace(ptr noundef %1860) #12
  %1862 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1863 = trunc nuw i8 %1862 to i1
  br i1 %1863, label %1864, label %1868

1864:                                             ; preds = %1858
  %1865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1866 = call i32 @fileno(ptr noundef %1865) #12
  %1867 = call i32 @isatty(i32 noundef %1866) #12
  %.not689 = icmp eq i32 %1867, 0
  br i1 %.not689, label %1868, label %1869

1868:                                             ; preds = %1864, %1858
  br label %1869

1869:                                             ; preds = %1864, %1868
  %.str.5.sink1488 = phi ptr [ @.str.5, %1868 ], [ @.str.2, %1864 ]
  store i32 %1859, ptr %440, align 4, !tbaa !5
  %1870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1871 = load i32, ptr @test_count, align 4, !tbaa !5
  %1872 = load i32, ptr %386, align 4, !tbaa !5
  %1873 = call ptr @s2n_strerror(i32 noundef %1872, ptr noundef nonnull @.str.4) #12
  %1874 = load i32, ptr %386, align 4, !tbaa !5
  %1875 = call ptr @s2n_strerror_debug(i32 noundef %1874, ptr noundef nonnull @.str.4) #12
  %1876 = load i32, ptr %440, align 4, !tbaa !5
  %1877 = call ptr @strerror(i32 noundef %1876) #12
  %1878 = load i32, ptr %440, align 4, !tbaa !5
  %1879 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1870, ptr noundef nonnull %.str.5.sink1488, i32 noundef %1871, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 180, ptr noundef %1873, ptr noundef %1875, ptr noundef %1877, i32 noundef %1878) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1880:                                             ; preds = %1853
  %1881 = add nsw i32 %1653, 9
  store i32 %1881, ptr @test_count, align 4, !tbaa !5
  %1882 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %1573) #12
  %1883 = icmp eq i32 %1882, -1
  br i1 %1883, label %1884, label %1906

1884:                                             ; preds = %1880
  %1885 = load i32, ptr %440, align 4, !tbaa !5
  %1886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1887 = call i32 @s2n_print_stacktrace(ptr noundef %1886) #12
  %1888 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1889 = trunc nuw i8 %1888 to i1
  br i1 %1889, label %1890, label %1894

1890:                                             ; preds = %1884
  %1891 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1892 = call i32 @fileno(ptr noundef %1891) #12
  %1893 = call i32 @isatty(i32 noundef %1892) #12
  %.not806 = icmp eq i32 %1893, 0
  br i1 %.not806, label %1894, label %1895

1894:                                             ; preds = %1890, %1884
  br label %1895

1895:                                             ; preds = %1890, %1894
  %.str.5.sink1497 = phi ptr [ @.str.5, %1894 ], [ @.str.2, %1890 ]
  store i32 %1885, ptr %440, align 4, !tbaa !5
  %1896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1897 = load i32, ptr @test_count, align 4, !tbaa !5
  %1898 = load i32, ptr %386, align 4, !tbaa !5
  %1899 = call ptr @s2n_strerror(i32 noundef %1898, ptr noundef nonnull @.str.4) #12
  %1900 = load i32, ptr %386, align 4, !tbaa !5
  %1901 = call ptr @s2n_strerror_debug(i32 noundef %1900, ptr noundef nonnull @.str.4) #12
  %1902 = load i32, ptr %440, align 4, !tbaa !5
  %1903 = call ptr @strerror(i32 noundef %1902) #12
  %1904 = load i32, ptr %440, align 4, !tbaa !5
  %1905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1896, ptr noundef nonnull %.str.5.sink1497, i32 noundef %1897, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef %1899, ptr noundef %1901, ptr noundef %1903, i32 noundef %1904) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1906:                                             ; preds = %1880
  %1907 = load i32, ptr @test_count, align 4, !tbaa !5
  %1908 = add nsw i32 %1907, 1
  store i32 %1908, ptr @test_count, align 4, !tbaa !5
  %1909 = load ptr, ptr %1707, align 8, !tbaa !50
  %1910 = icmp eq ptr %1909, %1711
  br i1 %1910, label %1933, label %1911

1911:                                             ; preds = %1906
  %1912 = load i32, ptr %440, align 4, !tbaa !5
  %1913 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1914 = call i32 @s2n_print_stacktrace(ptr noundef %1913) #12
  %1915 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1916 = trunc nuw i8 %1915 to i1
  br i1 %1916, label %1917, label %1921

1917:                                             ; preds = %1911
  %1918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1919 = call i32 @fileno(ptr noundef %1918) #12
  %1920 = call i32 @isatty(i32 noundef %1919) #12
  %.not690 = icmp eq i32 %1920, 0
  br i1 %.not690, label %1921, label %1922

1921:                                             ; preds = %1917, %1911
  br label %1922

1922:                                             ; preds = %1917, %1921
  %.str.5.sink1506 = phi ptr [ @.str.5, %1921 ], [ @.str.2, %1917 ]
  store i32 %1912, ptr %440, align 4, !tbaa !5
  %1923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1924 = load i32, ptr @test_count, align 4, !tbaa !5
  %1925 = load i32, ptr %386, align 4, !tbaa !5
  %1926 = call ptr @s2n_strerror(i32 noundef %1925, ptr noundef nonnull @.str.4) #12
  %1927 = load i32, ptr %386, align 4, !tbaa !5
  %1928 = call ptr @s2n_strerror_debug(i32 noundef %1927, ptr noundef nonnull @.str.4) #12
  %1929 = load i32, ptr %440, align 4, !tbaa !5
  %1930 = call ptr @strerror(i32 noundef %1929) #12
  %1931 = load i32, ptr %440, align 4, !tbaa !5
  %1932 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1923, ptr noundef nonnull %.str.5.sink1506, i32 noundef %1924, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.1, i32 noundef 185, ptr noundef %1926, ptr noundef %1928, ptr noundef %1930, i32 noundef %1931) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1933:                                             ; preds = %1906
  %1934 = add nsw i32 %1907, 2
  store i32 %1934, ptr @test_count, align 4, !tbaa !5
  %1935 = load ptr, ptr %1714, align 8, !tbaa !53
  %1936 = load ptr, ptr %1712, align 8, !tbaa !51
  %1937 = icmp eq ptr %1935, %1936
  br i1 %1937, label %1960, label %1938

1938:                                             ; preds = %1933
  %1939 = load i32, ptr %440, align 4, !tbaa !5
  %1940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1941 = call i32 @s2n_print_stacktrace(ptr noundef %1940) #12
  %1942 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1943 = trunc nuw i8 %1942 to i1
  br i1 %1943, label %1944, label %1948

1944:                                             ; preds = %1938
  %1945 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1946 = call i32 @fileno(ptr noundef %1945) #12
  %1947 = call i32 @isatty(i32 noundef %1946) #12
  %.not691 = icmp eq i32 %1947, 0
  br i1 %.not691, label %1948, label %1949

1948:                                             ; preds = %1944, %1938
  br label %1949

1949:                                             ; preds = %1944, %1948
  %.str.5.sink1515 = phi ptr [ @.str.5, %1948 ], [ @.str.2, %1944 ]
  store i32 %1939, ptr %440, align 4, !tbaa !5
  %1950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1951 = load i32, ptr @test_count, align 4, !tbaa !5
  %1952 = load i32, ptr %386, align 4, !tbaa !5
  %1953 = call ptr @s2n_strerror(i32 noundef %1952, ptr noundef nonnull @.str.4) #12
  %1954 = load i32, ptr %386, align 4, !tbaa !5
  %1955 = call ptr @s2n_strerror_debug(i32 noundef %1954, ptr noundef nonnull @.str.4) #12
  %1956 = load i32, ptr %440, align 4, !tbaa !5
  %1957 = call ptr @strerror(i32 noundef %1956) #12
  %1958 = load i32, ptr %440, align 4, !tbaa !5
  %1959 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1950, ptr noundef nonnull %.str.5.sink1515, i32 noundef %1951, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 186, ptr noundef %1953, ptr noundef %1955, ptr noundef %1957, i32 noundef %1958) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1960:                                             ; preds = %1933
  %1961 = add nsw i32 %1907, 3
  store i32 %1961, ptr @test_count, align 4, !tbaa !5
  %1962 = load ptr, ptr %1717, align 8, !tbaa !55
  %1963 = load ptr, ptr %1715, align 8, !tbaa !54
  %1964 = icmp eq ptr %1962, %1963
  br i1 %1964, label %1987, label %1965

1965:                                             ; preds = %1960
  %1966 = load i32, ptr %440, align 4, !tbaa !5
  %1967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1968 = call i32 @s2n_print_stacktrace(ptr noundef %1967) #12
  %1969 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1970 = trunc nuw i8 %1969 to i1
  br i1 %1970, label %1971, label %1975

1971:                                             ; preds = %1965
  %1972 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1973 = call i32 @fileno(ptr noundef %1972) #12
  %1974 = call i32 @isatty(i32 noundef %1973) #12
  %.not692 = icmp eq i32 %1974, 0
  br i1 %.not692, label %1975, label %1976

1975:                                             ; preds = %1971, %1965
  br label %1976

1976:                                             ; preds = %1971, %1975
  %.str.5.sink1524 = phi ptr [ @.str.5, %1975 ], [ @.str.2, %1971 ]
  store i32 %1966, ptr %440, align 4, !tbaa !5
  %1977 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1978 = load i32, ptr @test_count, align 4, !tbaa !5
  %1979 = load i32, ptr %386, align 4, !tbaa !5
  %1980 = call ptr @s2n_strerror(i32 noundef %1979, ptr noundef nonnull @.str.4) #12
  %1981 = load i32, ptr %386, align 4, !tbaa !5
  %1982 = call ptr @s2n_strerror_debug(i32 noundef %1981, ptr noundef nonnull @.str.4) #12
  %1983 = load i32, ptr %440, align 4, !tbaa !5
  %1984 = call ptr @strerror(i32 noundef %1983) #12
  %1985 = load i32, ptr %440, align 4, !tbaa !5
  %1986 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1977, ptr noundef nonnull %.str.5.sink1524, i32 noundef %1978, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 187, ptr noundef %1980, ptr noundef %1982, ptr noundef %1984, i32 noundef %1985) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1987:                                             ; preds = %1960
  %1988 = add nsw i32 %1907, 4
  store i32 %1988, ptr @test_count, align 4, !tbaa !5
  %1989 = load ptr, ptr %1747, align 8, !tbaa !56
  %1990 = icmp eq ptr %1989, null
  br i1 %1990, label %2013, label %1991

1991:                                             ; preds = %1987
  %1992 = load i32, ptr %440, align 4, !tbaa !5
  %1993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1994 = call i32 @s2n_print_stacktrace(ptr noundef %1993) #12
  %1995 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1996 = trunc nuw i8 %1995 to i1
  br i1 %1996, label %1997, label %2001

1997:                                             ; preds = %1991
  %1998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1999 = call i32 @fileno(ptr noundef %1998) #12
  %2000 = call i32 @isatty(i32 noundef %1999) #12
  %.not693 = icmp eq i32 %2000, 0
  br i1 %.not693, label %2001, label %2002

2001:                                             ; preds = %1997, %1991
  br label %2002

2002:                                             ; preds = %1997, %2001
  %.str.5.sink1533 = phi ptr [ @.str.5, %2001 ], [ @.str.2, %1997 ]
  store i32 %1992, ptr %440, align 4, !tbaa !5
  %2003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2004 = load i32, ptr @test_count, align 4, !tbaa !5
  %2005 = load i32, ptr %386, align 4, !tbaa !5
  %2006 = call ptr @s2n_strerror(i32 noundef %2005, ptr noundef nonnull @.str.4) #12
  %2007 = load i32, ptr %386, align 4, !tbaa !5
  %2008 = call ptr @s2n_strerror_debug(i32 noundef %2007, ptr noundef nonnull @.str.4) #12
  %2009 = load i32, ptr %440, align 4, !tbaa !5
  %2010 = call ptr @strerror(i32 noundef %2009) #12
  %2011 = load i32, ptr %440, align 4, !tbaa !5
  %2012 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2003, ptr noundef nonnull %.str.5.sink1533, i32 noundef %2004, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 188, ptr noundef %2006, ptr noundef %2008, ptr noundef %2010, i32 noundef %2011) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2013:                                             ; preds = %1987
  %2014 = add nsw i32 %1907, 5
  store i32 %2014, ptr @test_count, align 4, !tbaa !5
  %2015 = load ptr, ptr %1681, align 8, !tbaa !15
  %2016 = icmp eq ptr %2015, null
  br i1 %2016, label %2039, label %2017

2017:                                             ; preds = %2013
  %2018 = load i32, ptr %440, align 4, !tbaa !5
  %2019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2020 = call i32 @s2n_print_stacktrace(ptr noundef %2019) #12
  %2021 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2022 = trunc nuw i8 %2021 to i1
  br i1 %2022, label %2023, label %2027

2023:                                             ; preds = %2017
  %2024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2025 = call i32 @fileno(ptr noundef %2024) #12
  %2026 = call i32 @isatty(i32 noundef %2025) #12
  %.not694 = icmp eq i32 %2026, 0
  br i1 %.not694, label %2027, label %2028

2027:                                             ; preds = %2023, %2017
  br label %2028

2028:                                             ; preds = %2023, %2027
  %.str.5.sink1542 = phi ptr [ @.str.5, %2027 ], [ @.str.2, %2023 ]
  store i32 %2018, ptr %440, align 4, !tbaa !5
  %2029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2030 = load i32, ptr @test_count, align 4, !tbaa !5
  %2031 = load i32, ptr %386, align 4, !tbaa !5
  %2032 = call ptr @s2n_strerror(i32 noundef %2031, ptr noundef nonnull @.str.4) #12
  %2033 = load i32, ptr %386, align 4, !tbaa !5
  %2034 = call ptr @s2n_strerror_debug(i32 noundef %2033, ptr noundef nonnull @.str.4) #12
  %2035 = load i32, ptr %440, align 4, !tbaa !5
  %2036 = call ptr @strerror(i32 noundef %2035) #12
  %2037 = load i32, ptr %440, align 4, !tbaa !5
  %2038 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2029, ptr noundef nonnull %.str.5.sink1542, i32 noundef %2030, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 189, ptr noundef %2032, ptr noundef %2034, ptr noundef %2036, i32 noundef %2037) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2039:                                             ; preds = %2013
  %2040 = add nsw i32 %1907, 6
  store i32 %2040, ptr @test_count, align 4, !tbaa !5
  %2041 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %1573) #12
  br i1 %2041, label %2064, label %2042

2042:                                             ; preds = %2039
  %2043 = load i32, ptr %440, align 4, !tbaa !5
  %2044 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2045 = call i32 @s2n_print_stacktrace(ptr noundef %2044) #12
  %2046 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2047 = trunc nuw i8 %2046 to i1
  br i1 %2047, label %2048, label %2052

2048:                                             ; preds = %2042
  %2049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2050 = call i32 @fileno(ptr noundef %2049) #12
  %2051 = call i32 @isatty(i32 noundef %2050) #12
  %.not695 = icmp eq i32 %2051, 0
  br i1 %.not695, label %2052, label %2053

2052:                                             ; preds = %2048, %2042
  br label %2053

2053:                                             ; preds = %2048, %2052
  %.str.5.sink1551 = phi ptr [ @.str.5, %2052 ], [ @.str.2, %2048 ]
  store i32 %2043, ptr %440, align 4, !tbaa !5
  %2054 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2055 = load i32, ptr @test_count, align 4, !tbaa !5
  %2056 = load i32, ptr %386, align 4, !tbaa !5
  %2057 = call ptr @s2n_strerror(i32 noundef %2056, ptr noundef nonnull @.str.4) #12
  %2058 = load i32, ptr %386, align 4, !tbaa !5
  %2059 = call ptr @s2n_strerror_debug(i32 noundef %2058, ptr noundef nonnull @.str.4) #12
  %2060 = load i32, ptr %440, align 4, !tbaa !5
  %2061 = call ptr @strerror(i32 noundef %2060) #12
  %2062 = load i32, ptr %440, align 4, !tbaa !5
  %2063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2054, ptr noundef nonnull %.str.5.sink1551, i32 noundef %2055, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 190, ptr noundef %2057, ptr noundef %2059, ptr noundef %2061, i32 noundef %2062) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2064:                                             ; preds = %2039
  %2065 = load i32, ptr @test_count, align 4, !tbaa !5
  %2066 = add nsw i32 %2065, 1
  store i32 %2066, ptr @test_count, align 4, !tbaa !5
  %2067 = call i32 @s2n_connection_free(ptr noundef nonnull %1573) #12
  %2068 = icmp eq i32 %2067, -1
  br i1 %2068, label %2069, label %2091

2069:                                             ; preds = %2064
  %2070 = load i32, ptr %440, align 4, !tbaa !5
  %2071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2072 = call i32 @s2n_print_stacktrace(ptr noundef %2071) #12
  %2073 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2074 = trunc nuw i8 %2073 to i1
  br i1 %2074, label %2075, label %2079

2075:                                             ; preds = %2069
  %2076 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2077 = call i32 @fileno(ptr noundef %2076) #12
  %2078 = call i32 @isatty(i32 noundef %2077) #12
  %.not805 = icmp eq i32 %2078, 0
  br i1 %.not805, label %2079, label %2080

2079:                                             ; preds = %2075, %2069
  br label %2080

2080:                                             ; preds = %2075, %2079
  %.str.5.sink1560 = phi ptr [ @.str.5, %2079 ], [ @.str.2, %2075 ]
  store i32 %2070, ptr %440, align 4, !tbaa !5
  %2081 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2082 = load i32, ptr @test_count, align 4, !tbaa !5
  %2083 = load i32, ptr %386, align 4, !tbaa !5
  %2084 = call ptr @s2n_strerror(i32 noundef %2083, ptr noundef nonnull @.str.4) #12
  %2085 = load i32, ptr %386, align 4, !tbaa !5
  %2086 = call ptr @s2n_strerror_debug(i32 noundef %2085, ptr noundef nonnull @.str.4) #12
  %2087 = load i32, ptr %440, align 4, !tbaa !5
  %2088 = call ptr @strerror(i32 noundef %2087) #12
  %2089 = load i32, ptr %440, align 4, !tbaa !5
  %2090 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2081, ptr noundef nonnull %.str.5.sink1560, i32 noundef %2082, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 192, ptr noundef %2084, ptr noundef %2086, ptr noundef %2088, i32 noundef %2089) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2091:                                             ; preds = %2064
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12
  %2092 = load i32, ptr @test_count, align 4, !tbaa !5
  %2093 = add nsw i32 %2092, 1
  store i32 %2093, ptr @test_count, align 4, !tbaa !5
  %2094 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %2095 = icmp eq ptr %2094, null
  br i1 %2095, label %2096, label %2118

2096:                                             ; preds = %2091
  %2097 = load i32, ptr %440, align 4, !tbaa !5
  %2098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2099 = call i32 @s2n_print_stacktrace(ptr noundef %2098) #12
  %2100 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2101 = trunc nuw i8 %2100 to i1
  br i1 %2101, label %2102, label %2106

2102:                                             ; preds = %2096
  %2103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2104 = call i32 @fileno(ptr noundef %2103) #12
  %2105 = call i32 @isatty(i32 noundef %2104) #12
  %.not804 = icmp eq i32 %2105, 0
  br i1 %.not804, label %2106, label %2107

2106:                                             ; preds = %2102, %2096
  br label %2107

2107:                                             ; preds = %2102, %2106
  %.str.5.sink1569 = phi ptr [ @.str.5, %2106 ], [ @.str.2, %2102 ]
  store i32 %2097, ptr %440, align 4, !tbaa !5
  %2108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2109 = load i32, ptr @test_count, align 4, !tbaa !5
  %2110 = load i32, ptr %386, align 4, !tbaa !5
  %2111 = call ptr @s2n_strerror(i32 noundef %2110, ptr noundef nonnull @.str.4) #12
  %2112 = load i32, ptr %386, align 4, !tbaa !5
  %2113 = call ptr @s2n_strerror_debug(i32 noundef %2112, ptr noundef nonnull @.str.4) #12
  %2114 = load i32, ptr %440, align 4, !tbaa !5
  %2115 = call ptr @strerror(i32 noundef %2114) #12
  %2116 = load i32, ptr %440, align 4, !tbaa !5
  %2117 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2108, ptr noundef nonnull %.str.5.sink1569, i32 noundef %2109, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 199, ptr noundef %2111, ptr noundef %2113, ptr noundef %2115, i32 noundef %2116) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2118:                                             ; preds = %2091
  %2119 = getelementptr inbounds i8, ptr %2094, i64 16
  store ptr %4, ptr %2119, align 8, !tbaa !47
  %2120 = load i32, ptr @test_count, align 4, !tbaa !5
  %2121 = add nsw i32 %2120, 1
  store i32 %2121, ptr @test_count, align 4, !tbaa !5
  %2122 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %2094, i8 noundef zeroext 34) #12
  %2123 = icmp eq i32 %2122, -1
  br i1 %2123, label %2124, label %2146

2124:                                             ; preds = %2118
  %2125 = load i32, ptr %440, align 4, !tbaa !5
  %2126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2127 = call i32 @s2n_print_stacktrace(ptr noundef %2126) #12
  %2128 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2129 = trunc nuw i8 %2128 to i1
  br i1 %2129, label %2130, label %2134

2130:                                             ; preds = %2124
  %2131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2132 = call i32 @fileno(ptr noundef %2131) #12
  %2133 = call i32 @isatty(i32 noundef %2132) #12
  %.not803 = icmp eq i32 %2133, 0
  br i1 %.not803, label %2134, label %2135

2134:                                             ; preds = %2130, %2124
  br label %2135

2135:                                             ; preds = %2130, %2134
  %.str.5.sink1578 = phi ptr [ @.str.5, %2134 ], [ @.str.2, %2130 ]
  store i32 %2125, ptr %440, align 4, !tbaa !5
  %2136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2137 = load i32, ptr @test_count, align 4, !tbaa !5
  %2138 = load i32, ptr %386, align 4, !tbaa !5
  %2139 = call ptr @s2n_strerror(i32 noundef %2138, ptr noundef nonnull @.str.4) #12
  %2140 = load i32, ptr %386, align 4, !tbaa !5
  %2141 = call ptr @s2n_strerror_debug(i32 noundef %2140, ptr noundef nonnull @.str.4) #12
  %2142 = load i32, ptr %440, align 4, !tbaa !5
  %2143 = call ptr @strerror(i32 noundef %2142) #12
  %2144 = load i32, ptr %440, align 4, !tbaa !5
  %2145 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2136, ptr noundef nonnull %.str.5.sink1578, i32 noundef %2137, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 201, ptr noundef %2139, ptr noundef %2141, ptr noundef %2143, i32 noundef %2144) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2146:                                             ; preds = %2118
  %2147 = load i32, ptr @test_count, align 4, !tbaa !5
  %2148 = add nsw i32 %2147, 1
  store i32 %2148, ptr @test_count, align 4, !tbaa !5
  %2149 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef nonnull %2094) #12
  %2150 = call zeroext i1 @s2n_result_is_ok(i32 %2149)
  br i1 %2150, label %2173, label %2151

2151:                                             ; preds = %2146
  %2152 = load i32, ptr %440, align 4, !tbaa !5
  %2153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2154 = call i32 @s2n_print_stacktrace(ptr noundef %2153) #12
  %2155 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2156 = trunc nuw i8 %2155 to i1
  br i1 %2156, label %2157, label %2161

2157:                                             ; preds = %2151
  %2158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2159 = call i32 @fileno(ptr noundef %2158) #12
  %2160 = call i32 @isatty(i32 noundef %2159) #12
  %.not696 = icmp eq i32 %2160, 0
  br i1 %.not696, label %2161, label %2162

2161:                                             ; preds = %2157, %2151
  br label %2162

2162:                                             ; preds = %2157, %2161
  %.str.5.sink1587 = phi ptr [ @.str.5, %2161 ], [ @.str.2, %2157 ]
  store i32 %2152, ptr %440, align 4, !tbaa !5
  %2163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2164 = load i32, ptr @test_count, align 4, !tbaa !5
  %2165 = load i32, ptr %386, align 4, !tbaa !5
  %2166 = call ptr @s2n_strerror(i32 noundef %2165, ptr noundef nonnull @.str.4) #12
  %2167 = load i32, ptr %386, align 4, !tbaa !5
  %2168 = call ptr @s2n_strerror_debug(i32 noundef %2167, ptr noundef nonnull @.str.4) #12
  %2169 = load i32, ptr %440, align 4, !tbaa !5
  %2170 = call ptr @strerror(i32 noundef %2169) #12
  %2171 = load i32, ptr %440, align 4, !tbaa !5
  %2172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2163, ptr noundef nonnull %.str.5.sink1587, i32 noundef %2164, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 202, ptr noundef %2166, ptr noundef %2168, ptr noundef %2170, i32 noundef %2171) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2173:                                             ; preds = %2146
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  store ptr null, ptr %8, align 8, !tbaa !9
  %2174 = load i32, ptr @test_count, align 4, !tbaa !5
  %2175 = add nsw i32 %2174, 1
  store i32 %2175, ptr @test_count, align 4, !tbaa !5
  %2176 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %2094, ptr noundef nonnull %8) #12
  %2177 = icmp eq i32 %2176, -1
  br i1 %2177, label %2178, label %2200

2178:                                             ; preds = %2173
  %2179 = load i32, ptr %440, align 4, !tbaa !5
  %2180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2181 = call i32 @s2n_print_stacktrace(ptr noundef %2180) #12
  %2182 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2183 = trunc nuw i8 %2182 to i1
  br i1 %2183, label %2184, label %2188

2184:                                             ; preds = %2178
  %2185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2186 = call i32 @fileno(ptr noundef %2185) #12
  %2187 = call i32 @isatty(i32 noundef %2186) #12
  %.not802 = icmp eq i32 %2187, 0
  br i1 %.not802, label %2188, label %2189

2188:                                             ; preds = %2184, %2178
  br label %2189

2189:                                             ; preds = %2184, %2188
  %.str.5.sink1596 = phi ptr [ @.str.5, %2188 ], [ @.str.2, %2184 ]
  store i32 %2179, ptr %440, align 4, !tbaa !5
  %2190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2191 = load i32, ptr @test_count, align 4, !tbaa !5
  %2192 = load i32, ptr %386, align 4, !tbaa !5
  %2193 = call ptr @s2n_strerror(i32 noundef %2192, ptr noundef nonnull @.str.4) #12
  %2194 = load i32, ptr %386, align 4, !tbaa !5
  %2195 = call ptr @s2n_strerror_debug(i32 noundef %2194, ptr noundef nonnull @.str.4) #12
  %2196 = load i32, ptr %440, align 4, !tbaa !5
  %2197 = call ptr @strerror(i32 noundef %2196) #12
  %2198 = load i32, ptr %440, align 4, !tbaa !5
  %2199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2190, ptr noundef nonnull %.str.5.sink1596, i32 noundef %2191, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 205, ptr noundef %2193, ptr noundef %2195, ptr noundef %2197, i32 noundef %2198) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2200:                                             ; preds = %2173
  %2201 = load i32, ptr @test_count, align 4, !tbaa !5
  %2202 = add nsw i32 %2201, 1
  store i32 %2202, ptr @test_count, align 4, !tbaa !5
  %2203 = load ptr, ptr %8, align 8, !tbaa !9
  %2204 = icmp eq ptr %2203, null
  br i1 %2204, label %2205, label %2227

2205:                                             ; preds = %2200
  %2206 = load i32, ptr %440, align 4, !tbaa !5
  %2207 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2208 = call i32 @s2n_print_stacktrace(ptr noundef %2207) #12
  %2209 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2210 = trunc nuw i8 %2209 to i1
  br i1 %2210, label %2211, label %2215

2211:                                             ; preds = %2205
  %2212 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2213 = call i32 @fileno(ptr noundef %2212) #12
  %2214 = call i32 @isatty(i32 noundef %2213) #12
  %.not801 = icmp eq i32 %2214, 0
  br i1 %.not801, label %2215, label %2216

2215:                                             ; preds = %2211, %2205
  br label %2216

2216:                                             ; preds = %2211, %2215
  %.str.5.sink1605 = phi ptr [ @.str.5, %2215 ], [ @.str.2, %2211 ]
  store i32 %2206, ptr %440, align 4, !tbaa !5
  %2217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2218 = load i32, ptr @test_count, align 4, !tbaa !5
  %2219 = load i32, ptr %386, align 4, !tbaa !5
  %2220 = call ptr @s2n_strerror(i32 noundef %2219, ptr noundef nonnull @.str.4) #12
  %2221 = load i32, ptr %386, align 4, !tbaa !5
  %2222 = call ptr @s2n_strerror_debug(i32 noundef %2221, ptr noundef nonnull @.str.4) #12
  %2223 = load i32, ptr %440, align 4, !tbaa !5
  %2224 = call ptr @strerror(i32 noundef %2223) #12
  %2225 = load i32, ptr %440, align 4, !tbaa !5
  %2226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2217, ptr noundef nonnull %.str.5.sink1605, i32 noundef %2218, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 206, ptr noundef %2220, ptr noundef %2222, ptr noundef %2224, i32 noundef %2225) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2227:                                             ; preds = %2200
  %2228 = add nsw i32 %2201, 2
  store i32 %2228, ptr @test_count, align 4, !tbaa !5
  %2229 = getelementptr inbounds i8, ptr %2094, i64 656
  %2230 = load ptr, ptr %2229, align 8, !tbaa !15
  %2231 = icmp eq ptr %2230, null
  br i1 %2231, label %2254, label %2232

2232:                                             ; preds = %2227
  %2233 = load i32, ptr %440, align 4, !tbaa !5
  %2234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2235 = call i32 @s2n_print_stacktrace(ptr noundef %2234) #12
  %2236 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2237 = trunc nuw i8 %2236 to i1
  br i1 %2237, label %2238, label %2242

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

2242:                                             ; preds = %2238, %2232
  br label %2243

2243:                                             ; preds = %2238, %2242
  %.str.5.sink1614 = phi ptr [ @.str.5, %2242 ], [ @.str.2, %2238 ]
  store i32 %2233, ptr %440, align 4, !tbaa !5
  %2244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2245 = load i32, ptr @test_count, align 4, !tbaa !5
  %2246 = load i32, ptr %386, align 4, !tbaa !5
  %2247 = call ptr @s2n_strerror(i32 noundef %2246, ptr noundef nonnull @.str.4) #12
  %2248 = load i32, ptr %386, align 4, !tbaa !5
  %2249 = call ptr @s2n_strerror_debug(i32 noundef %2248, ptr noundef nonnull @.str.4) #12
  %2250 = load i32, ptr %440, align 4, !tbaa !5
  %2251 = call ptr @strerror(i32 noundef %2250) #12
  %2252 = load i32, ptr %440, align 4, !tbaa !5
  %2253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2244, ptr noundef nonnull %.str.5.sink1614, i32 noundef %2245, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 209, ptr noundef %2247, ptr noundef %2249, ptr noundef %2251, i32 noundef %2252) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2254:                                             ; preds = %2227
  %2255 = getelementptr inbounds i8, ptr %2094, i64 720
  %2256 = getelementptr inbounds i8, ptr %2203, i64 24
  %2257 = load ptr, ptr %2256, align 8, !tbaa !48
  %2258 = load ptr, ptr %2257, align 8, !tbaa !9
  %2259 = getelementptr inbounds i8, ptr %2257, i64 8
  %2260 = load ptr, ptr %2259, align 8, !tbaa !9
  store ptr %2258, ptr %2255, align 8, !tbaa !50
  %2261 = getelementptr inbounds i8, ptr %2258, i64 24
  %2262 = load ptr, ptr %2261, align 8, !tbaa !51
  %2263 = getelementptr inbounds i8, ptr %2094, i64 728
  store ptr %2262, ptr %2263, align 8, !tbaa !53
  %2264 = getelementptr inbounds i8, ptr %2258, i64 16
  %2265 = load ptr, ptr %2264, align 8, !tbaa !54
  %2266 = getelementptr inbounds i8, ptr %2094, i64 816
  store ptr %2265, ptr %2266, align 8, !tbaa !55
  %2267 = add nsw i32 %2201, 3
  store i32 %2267, ptr @test_count, align 4, !tbaa !5
  %2268 = getelementptr inbounds i8, ptr %2094, i64 832
  %2269 = load ptr, ptr %2268, align 8, !tbaa !56
  %2270 = icmp eq ptr %2269, null
  br i1 %2270, label %2293, label %2271

2271:                                             ; preds = %2254
  %2272 = load i32, ptr %440, align 4, !tbaa !5
  %2273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2274 = call i32 @s2n_print_stacktrace(ptr noundef %2273) #12
  %2275 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2276 = trunc nuw i8 %2275 to i1
  br i1 %2276, label %2277, label %2281

2277:                                             ; preds = %2271
  %2278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2279 = call i32 @fileno(ptr noundef %2278) #12
  %2280 = call i32 @isatty(i32 noundef %2279) #12
  %.not698 = icmp eq i32 %2280, 0
  br i1 %.not698, label %2281, label %2282

2281:                                             ; preds = %2277, %2271
  br label %2282

2282:                                             ; preds = %2277, %2281
  %.str.5.sink1623 = phi ptr [ @.str.5, %2281 ], [ @.str.2, %2277 ]
  store i32 %2272, ptr %440, align 4, !tbaa !5
  %2283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2284 = load i32, ptr @test_count, align 4, !tbaa !5
  %2285 = load i32, ptr %386, align 4, !tbaa !5
  %2286 = call ptr @s2n_strerror(i32 noundef %2285, ptr noundef nonnull @.str.4) #12
  %2287 = load i32, ptr %386, align 4, !tbaa !5
  %2288 = call ptr @s2n_strerror_debug(i32 noundef %2287, ptr noundef nonnull @.str.4) #12
  %2289 = load i32, ptr %440, align 4, !tbaa !5
  %2290 = call ptr @strerror(i32 noundef %2289) #12
  %2291 = load i32, ptr %440, align 4, !tbaa !5
  %2292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2283, ptr noundef nonnull %.str.5.sink1623, i32 noundef %2284, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 218, ptr noundef %2286, ptr noundef %2288, ptr noundef %2290, i32 noundef %2291) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2293:                                             ; preds = %2254
  store ptr %2260, ptr %2268, align 8, !tbaa !50
  %2294 = getelementptr inbounds i8, ptr %2260, i64 24
  %2295 = load ptr, ptr %2294, align 8, !tbaa !51
  %2296 = getelementptr inbounds i8, ptr %2094, i64 840
  store ptr %2295, ptr %2296, align 8, !tbaa !53
  %2297 = getelementptr inbounds i8, ptr %2260, i64 16
  %2298 = load ptr, ptr %2297, align 8, !tbaa !54
  %2299 = getelementptr inbounds i8, ptr %2094, i64 928
  store ptr %2298, ptr %2299, align 8, !tbaa !55
  %2300 = add nsw i32 %2201, 4
  store i32 %2300, ptr @test_count, align 4, !tbaa !5
  %2301 = getelementptr inbounds i8, ptr %2094, i64 848
  %2302 = getelementptr inbounds i8, ptr %2295, i64 14
  %2303 = load i16, ptr %2302, align 2, !tbaa !61
  %2304 = zext i16 %2303 to i32
  %2305 = call i32 @s2n_alloc(ptr noundef nonnull %2301, i32 noundef %2304) #12
  %2306 = icmp eq i32 %2305, -1
  br i1 %2306, label %2307, label %2329

2307:                                             ; preds = %2293
  %2308 = load i32, ptr %440, align 4, !tbaa !5
  %2309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2310 = call i32 @s2n_print_stacktrace(ptr noundef %2309) #12
  %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 = %2307
  %2314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2315 = call i32 @fileno(ptr noundef %2314) #12
  %2316 = call i32 @isatty(i32 noundef %2315) #12
  %.not800 = icmp eq i32 %2316, 0
  br i1 %.not800, label %2317, label %2318

2317:                                             ; preds = %2313, %2307
  br label %2318

2318:                                             ; preds = %2313, %2317
  %.str.5.sink1632 = phi ptr [ @.str.5, %2317 ], [ @.str.2, %2313 ]
  store i32 %2308, ptr %440, align 4, !tbaa !5
  %2319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2320 = load i32, ptr @test_count, align 4, !tbaa !5
  %2321 = load i32, ptr %386, align 4, !tbaa !5
  %2322 = call ptr @s2n_strerror(i32 noundef %2321, ptr noundef nonnull @.str.4) #12
  %2323 = load i32, ptr %386, align 4, !tbaa !5
  %2324 = call ptr @s2n_strerror_debug(i32 noundef %2323, ptr noundef nonnull @.str.4) #12
  %2325 = load i32, ptr %440, align 4, !tbaa !5
  %2326 = call ptr @strerror(i32 noundef %2325) #12
  %2327 = load i32, ptr %440, align 4, !tbaa !5
  %2328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2319, ptr noundef nonnull %.str.5.sink1632, i32 noundef %2320, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.1, i32 noundef 223, ptr noundef %2322, ptr noundef %2324, ptr noundef %2326, i32 noundef %2327) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2329:                                             ; preds = %2293
  %2330 = load ptr, ptr %2294, align 8, !tbaa !51
  %2331 = getelementptr inbounds i8, ptr %2330, i64 14
  %2332 = load i16, ptr %2331, align 2, !tbaa !61
  %.not699 = icmp eq i16 %2332, 0
  br i1 %.not699, label %.thread, label %2333, !prof !63

2333:                                             ; preds = %2329
  %2334 = load ptr, ptr %2301, align 8, !tbaa !64
  %.not700.not = icmp eq ptr %2334, null
  br i1 %.not700.not, label %.critedge, label %.thread858

.thread858:                                       ; preds = %2333
  %2335 = zext i16 %2332 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %2334, i8 1, i64 %2335, i1 false)
  br label %.thread

.thread:                                          ; preds = %2329, %.thread858
  %2336 = load i32, ptr @test_count, align 4, !tbaa !5
  %2337 = add nsw i32 %2336, 1
  store i32 %2337, ptr @test_count, align 4, !tbaa !5
  %2338 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef nonnull %2299) #12
  %2339 = icmp eq i32 %2338, -1
  br i1 %2339, label %2340, label %2362

2340:                                             ; preds = %.thread
  %2341 = load i32, ptr %440, align 4, !tbaa !5
  %2342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2343 = call i32 @s2n_print_stacktrace(ptr noundef %2342) #12
  %2344 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2345 = trunc nuw i8 %2344 to i1
  br i1 %2345, label %2346, label %2350

2346:                                             ; preds = %2340
  %2347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2348 = call i32 @fileno(ptr noundef %2347) #12
  %2349 = call i32 @isatty(i32 noundef %2348) #12
  %.not799 = icmp eq i32 %2349, 0
  br i1 %.not799, label %2350, label %2351

2350:                                             ; preds = %2346, %2340
  br label %2351

2351:                                             ; preds = %2346, %2350
  %.str.5.sink1641 = phi ptr [ @.str.5, %2350 ], [ @.str.2, %2346 ]
  store i32 %2341, ptr %440, align 4, !tbaa !5
  %2352 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2353 = load i32, ptr @test_count, align 4, !tbaa !5
  %2354 = load i32, ptr %386, align 4, !tbaa !5
  %2355 = call ptr @s2n_strerror(i32 noundef %2354, ptr noundef nonnull @.str.4) #12
  %2356 = load i32, ptr %386, align 4, !tbaa !5
  %2357 = call ptr @s2n_strerror_debug(i32 noundef %2356, ptr noundef nonnull @.str.4) #12
  %2358 = load i32, ptr %440, align 4, !tbaa !5
  %2359 = call ptr @strerror(i32 noundef %2358) #12
  %2360 = load i32, ptr %440, align 4, !tbaa !5
  %2361 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2352, ptr noundef nonnull %.str.5.sink1641, i32 noundef %2353, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.1, i32 noundef 226, ptr noundef %2355, ptr noundef %2357, ptr noundef %2359, i32 noundef %2360) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2362:                                             ; preds = %.thread
  %2363 = load i32, ptr @test_count, align 4, !tbaa !5
  %2364 = add nsw i32 %2363, 1
  store i32 %2364, ptr @test_count, align 4, !tbaa !5
  %2365 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %2094) #12
  %2366 = icmp eq i32 %2365, -1
  br i1 %2366, label %2367, label %2389

2367:                                             ; preds = %2362
  %2368 = load i32, ptr %440, align 4, !tbaa !5
  %2369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2370 = call i32 @s2n_print_stacktrace(ptr noundef %2369) #12
  %2371 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2372 = trunc nuw i8 %2371 to i1
  br i1 %2372, label %2373, label %2377

2373:                                             ; preds = %2367
  %2374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2375 = call i32 @fileno(ptr noundef %2374) #12
  %2376 = call i32 @isatty(i32 noundef %2375) #12
  %.not798 = icmp eq i32 %2376, 0
  br i1 %.not798, label %2377, label %2378

2377:                                             ; preds = %2373, %2367
  br label %2378

2378:                                             ; preds = %2373, %2377
  %.str.5.sink1650 = phi ptr [ @.str.5, %2377 ], [ @.str.2, %2373 ]
  store i32 %2368, ptr %440, align 4, !tbaa !5
  %2379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2380 = load i32, ptr @test_count, align 4, !tbaa !5
  %2381 = load i32, ptr %386, align 4, !tbaa !5
  %2382 = call ptr @s2n_strerror(i32 noundef %2381, ptr noundef nonnull @.str.4) #12
  %2383 = load i32, ptr %386, align 4, !tbaa !5
  %2384 = call ptr @s2n_strerror_debug(i32 noundef %2383, ptr noundef nonnull @.str.4) #12
  %2385 = load i32, ptr %440, align 4, !tbaa !5
  %2386 = call ptr @strerror(i32 noundef %2385) #12
  %2387 = load i32, ptr %440, align 4, !tbaa !5
  %2388 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2379, ptr noundef nonnull %.str.5.sink1650, i32 noundef %2380, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 228, ptr noundef %2382, ptr noundef %2384, ptr noundef %2386, i32 noundef %2387) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2389:                                             ; preds = %2362
  %2390 = load i32, ptr @test_count, align 4, !tbaa !5
  %2391 = add nsw i32 %2390, 1
  store i32 %2391, ptr @test_count, align 4, !tbaa !5
  %2392 = load ptr, ptr %2255, align 8, !tbaa !50
  %2393 = icmp eq ptr %2392, %2260
  br i1 %2393, label %2416, label %2394

2394:                                             ; preds = %2389
  %2395 = load i32, ptr %440, align 4, !tbaa !5
  %2396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2397 = call i32 @s2n_print_stacktrace(ptr noundef %2396) #12
  %2398 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2399 = trunc nuw i8 %2398 to i1
  br i1 %2399, label %2400, label %2404

2400:                                             ; preds = %2394
  %2401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2402 = call i32 @fileno(ptr noundef %2401) #12
  %2403 = call i32 @isatty(i32 noundef %2402) #12
  %.not702 = icmp eq i32 %2403, 0
  br i1 %.not702, label %2404, label %2405

2404:                                             ; preds = %2400, %2394
  br label %2405

2405:                                             ; preds = %2400, %2404
  %.str.5.sink1659 = phi ptr [ @.str.5, %2404 ], [ @.str.2, %2400 ]
  store i32 %2395, ptr %440, align 4, !tbaa !5
  %2406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2407 = load i32, ptr @test_count, align 4, !tbaa !5
  %2408 = load i32, ptr %386, align 4, !tbaa !5
  %2409 = call ptr @s2n_strerror(i32 noundef %2408, ptr noundef nonnull @.str.4) #12
  %2410 = load i32, ptr %386, align 4, !tbaa !5
  %2411 = call ptr @s2n_strerror_debug(i32 noundef %2410, ptr noundef nonnull @.str.4) #12
  %2412 = load i32, ptr %440, align 4, !tbaa !5
  %2413 = call ptr @strerror(i32 noundef %2412) #12
  %2414 = load i32, ptr %440, align 4, !tbaa !5
  %2415 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2406, ptr noundef nonnull %.str.5.sink1659, i32 noundef %2407, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.1, i32 noundef 231, ptr noundef %2409, ptr noundef %2411, ptr noundef %2413, i32 noundef %2414) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2416:                                             ; preds = %2389
  %2417 = add nsw i32 %2390, 2
  store i32 %2417, ptr @test_count, align 4, !tbaa !5
  %2418 = load ptr, ptr %2263, align 8, !tbaa !53
  %2419 = load ptr, ptr %2294, align 8, !tbaa !51
  %2420 = icmp eq ptr %2418, %2419
  br i1 %2420, label %2443, label %2421

2421:                                             ; preds = %2416
  %2422 = load i32, ptr %440, align 4, !tbaa !5
  %2423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2424 = call i32 @s2n_print_stacktrace(ptr noundef %2423) #12
  %2425 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2426 = trunc nuw i8 %2425 to i1
  br i1 %2426, label %2427, label %2431

2427:                                             ; preds = %2421
  %2428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2429 = call i32 @fileno(ptr noundef %2428) #12
  %2430 = call i32 @isatty(i32 noundef %2429) #12
  %.not703 = icmp eq i32 %2430, 0
  br i1 %.not703, label %2431, label %2432

2431:                                             ; preds = %2427, %2421
  br label %2432

2432:                                             ; preds = %2427, %2431
  %.str.5.sink1668 = phi ptr [ @.str.5, %2431 ], [ @.str.2, %2427 ]
  store i32 %2422, ptr %440, align 4, !tbaa !5
  %2433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2434 = load i32, ptr @test_count, align 4, !tbaa !5
  %2435 = load i32, ptr %386, align 4, !tbaa !5
  %2436 = call ptr @s2n_strerror(i32 noundef %2435, ptr noundef nonnull @.str.4) #12
  %2437 = load i32, ptr %386, align 4, !tbaa !5
  %2438 = call ptr @s2n_strerror_debug(i32 noundef %2437, ptr noundef nonnull @.str.4) #12
  %2439 = load i32, ptr %440, align 4, !tbaa !5
  %2440 = call ptr @strerror(i32 noundef %2439) #12
  %2441 = load i32, ptr %440, align 4, !tbaa !5
  %2442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2433, ptr noundef nonnull %.str.5.sink1668, i32 noundef %2434, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 232, ptr noundef %2436, ptr noundef %2438, ptr noundef %2440, i32 noundef %2441) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2443:                                             ; preds = %2416
  %2444 = add nsw i32 %2390, 3
  store i32 %2444, ptr @test_count, align 4, !tbaa !5
  %2445 = load ptr, ptr %2266, align 8, !tbaa !55
  %2446 = load ptr, ptr %2297, align 8, !tbaa !54
  %2447 = icmp eq ptr %2445, %2446
  br i1 %2447, label %2470, label %2448

2448:                                             ; preds = %2443
  %2449 = load i32, ptr %440, align 4, !tbaa !5
  %2450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2451 = call i32 @s2n_print_stacktrace(ptr noundef %2450) #12
  %2452 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2453 = trunc nuw i8 %2452 to i1
  br i1 %2453, label %2454, label %2458

2454:                                             ; preds = %2448
  %2455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2456 = call i32 @fileno(ptr noundef %2455) #12
  %2457 = call i32 @isatty(i32 noundef %2456) #12
  %.not704 = icmp eq i32 %2457, 0
  br i1 %.not704, label %2458, label %2459

2458:                                             ; preds = %2454, %2448
  br label %2459

2459:                                             ; preds = %2454, %2458
  %.str.5.sink1677 = phi ptr [ @.str.5, %2458 ], [ @.str.2, %2454 ]
  store i32 %2449, ptr %440, align 4, !tbaa !5
  %2460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2461 = load i32, ptr @test_count, align 4, !tbaa !5
  %2462 = load i32, ptr %386, align 4, !tbaa !5
  %2463 = call ptr @s2n_strerror(i32 noundef %2462, ptr noundef nonnull @.str.4) #12
  %2464 = load i32, ptr %386, align 4, !tbaa !5
  %2465 = call ptr @s2n_strerror_debug(i32 noundef %2464, ptr noundef nonnull @.str.4) #12
  %2466 = load i32, ptr %440, align 4, !tbaa !5
  %2467 = call ptr @strerror(i32 noundef %2466) #12
  %2468 = load i32, ptr %440, align 4, !tbaa !5
  %2469 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2460, ptr noundef nonnull %.str.5.sink1677, i32 noundef %2461, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 233, ptr noundef %2463, ptr noundef %2465, ptr noundef %2467, i32 noundef %2468) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2470:                                             ; preds = %2443
  %2471 = add nsw i32 %2390, 4
  store i32 %2471, ptr @test_count, align 4, !tbaa !5
  %2472 = load ptr, ptr %2268, align 8, !tbaa !56
  %2473 = icmp eq ptr %2472, %2260
  br i1 %2473, label %2496, label %2474

2474:                                             ; preds = %2470
  %2475 = load i32, ptr %440, align 4, !tbaa !5
  %2476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2477 = call i32 @s2n_print_stacktrace(ptr noundef %2476) #12
  %2478 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2479 = trunc nuw i8 %2478 to i1
  br i1 %2479, label %2480, label %2484

2480:                                             ; preds = %2474
  %2481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2482 = call i32 @fileno(ptr noundef %2481) #12
  %2483 = call i32 @isatty(i32 noundef %2482) #12
  %.not705 = icmp eq i32 %2483, 0
  br i1 %.not705, label %2484, label %2485

2484:                                             ; preds = %2480, %2474
  br label %2485

2485:                                             ; preds = %2480, %2484
  %.str.5.sink1686 = phi ptr [ @.str.5, %2484 ], [ @.str.2, %2480 ]
  store i32 %2475, ptr %440, align 4, !tbaa !5
  %2486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2487 = load i32, ptr @test_count, align 4, !tbaa !5
  %2488 = load i32, ptr %386, align 4, !tbaa !5
  %2489 = call ptr @s2n_strerror(i32 noundef %2488, ptr noundef nonnull @.str.4) #12
  %2490 = load i32, ptr %386, align 4, !tbaa !5
  %2491 = call ptr @s2n_strerror_debug(i32 noundef %2490, ptr noundef nonnull @.str.4) #12
  %2492 = load i32, ptr %440, align 4, !tbaa !5
  %2493 = call ptr @strerror(i32 noundef %2492) #12
  %2494 = load i32, ptr %440, align 4, !tbaa !5
  %2495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2486, ptr noundef nonnull %.str.5.sink1686, i32 noundef %2487, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.1, i32 noundef 234, ptr noundef %2489, ptr noundef %2491, ptr noundef %2493, i32 noundef %2494) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2496:                                             ; preds = %2470
  %2497 = add nsw i32 %2390, 5
  store i32 %2497, ptr @test_count, align 4, !tbaa !5
  %2498 = load ptr, ptr %2229, align 8, !tbaa !15
  %2499 = icmp eq ptr %2498, null
  br i1 %2499, label %2522, label %2500

2500:                                             ; preds = %2496
  %2501 = load i32, ptr %440, align 4, !tbaa !5
  %2502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2503 = call i32 @s2n_print_stacktrace(ptr noundef %2502) #12
  %2504 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2505 = trunc nuw i8 %2504 to i1
  br i1 %2505, label %2506, label %2510

2506:                                             ; preds = %2500
  %2507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2508 = call i32 @fileno(ptr noundef %2507) #12
  %2509 = call i32 @isatty(i32 noundef %2508) #12
  %.not706 = icmp eq i32 %2509, 0
  br i1 %.not706, label %2510, label %2511

2510:                                             ; preds = %2506, %2500
  br label %2511

2511:                                             ; preds = %2506, %2510
  %.str.5.sink1695 = phi ptr [ @.str.5, %2510 ], [ @.str.2, %2506 ]
  store i32 %2501, ptr %440, align 4, !tbaa !5
  %2512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2513 = load i32, ptr @test_count, align 4, !tbaa !5
  %2514 = load i32, ptr %386, align 4, !tbaa !5
  %2515 = call ptr @s2n_strerror(i32 noundef %2514, ptr noundef nonnull @.str.4) #12
  %2516 = load i32, ptr %386, align 4, !tbaa !5
  %2517 = call ptr @s2n_strerror_debug(i32 noundef %2516, ptr noundef nonnull @.str.4) #12
  %2518 = load i32, ptr %440, align 4, !tbaa !5
  %2519 = call ptr @strerror(i32 noundef %2518) #12
  %2520 = load i32, ptr %440, align 4, !tbaa !5
  %2521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2512, ptr noundef nonnull %.str.5.sink1695, i32 noundef %2513, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 235, ptr noundef %2515, ptr noundef %2517, ptr noundef %2519, i32 noundef %2520) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2522:                                             ; preds = %2496
  %2523 = add nsw i32 %2390, 6
  store i32 %2523, ptr @test_count, align 4, !tbaa !5
  %2524 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %2094) #12
  br i1 %2524, label %2525, label %2547

2525:                                             ; preds = %2522
  %2526 = load i32, ptr %440, align 4, !tbaa !5
  %2527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2528 = call i32 @s2n_print_stacktrace(ptr noundef %2527) #12
  %2529 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2530 = trunc nuw i8 %2529 to i1
  br i1 %2530, label %2531, label %2535

2531:                                             ; preds = %2525
  %2532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2533 = call i32 @fileno(ptr noundef %2532) #12
  %2534 = call i32 @isatty(i32 noundef %2533) #12
  %.not797 = icmp eq i32 %2534, 0
  br i1 %.not797, label %2535, label %2536

2535:                                             ; preds = %2531, %2525
  br label %2536

2536:                                             ; preds = %2531, %2535
  %.str.5.sink1704 = phi ptr [ @.str.5, %2535 ], [ @.str.2, %2531 ]
  store i32 %2526, ptr %440, align 4, !tbaa !5
  %2537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2538 = load i32, ptr @test_count, align 4, !tbaa !5
  %2539 = load i32, ptr %386, align 4, !tbaa !5
  %2540 = call ptr @s2n_strerror(i32 noundef %2539, ptr noundef nonnull @.str.4) #12
  %2541 = load i32, ptr %386, align 4, !tbaa !5
  %2542 = call ptr @s2n_strerror_debug(i32 noundef %2541, ptr noundef nonnull @.str.4) #12
  %2543 = load i32, ptr %440, align 4, !tbaa !5
  %2544 = call ptr @strerror(i32 noundef %2543) #12
  %2545 = load i32, ptr %440, align 4, !tbaa !5
  %2546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2537, ptr noundef nonnull %.str.5.sink1704, i32 noundef %2538, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 236, ptr noundef %2540, ptr noundef %2542, ptr noundef %2544, i32 noundef %2545) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2547:                                             ; preds = %2522
  %2548 = load i32, ptr @test_count, align 4, !tbaa !5
  %2549 = add nsw i32 %2548, 1
  store i32 %2549, ptr @test_count, align 4, !tbaa !5
  %2550 = call i32 @s2n_connection_free(ptr noundef nonnull %2094) #12
  %2551 = icmp eq i32 %2550, -1
  br i1 %2551, label %2552, label %2574

2552:                                             ; preds = %2547
  %2553 = load i32, ptr %440, align 4, !tbaa !5
  %2554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2555 = call i32 @s2n_print_stacktrace(ptr noundef %2554) #12
  %2556 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2557 = trunc nuw i8 %2556 to i1
  br i1 %2557, label %2558, label %2562

2558:                                             ; preds = %2552
  %2559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2560 = call i32 @fileno(ptr noundef %2559) #12
  %2561 = call i32 @isatty(i32 noundef %2560) #12
  %.not796 = icmp eq i32 %2561, 0
  br i1 %.not796, label %2562, label %2563

2562:                                             ; preds = %2558, %2552
  br label %2563

2563:                                             ; preds = %2558, %2562
  %.str.5.sink1713 = phi ptr [ @.str.5, %2562 ], [ @.str.2, %2558 ]
  store i32 %2553, ptr %440, align 4, !tbaa !5
  %2564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2565 = load i32, ptr @test_count, align 4, !tbaa !5
  %2566 = load i32, ptr %386, align 4, !tbaa !5
  %2567 = call ptr @s2n_strerror(i32 noundef %2566, ptr noundef nonnull @.str.4) #12
  %2568 = load i32, ptr %386, align 4, !tbaa !5
  %2569 = call ptr @s2n_strerror_debug(i32 noundef %2568, ptr noundef nonnull @.str.4) #12
  %2570 = load i32, ptr %440, align 4, !tbaa !5
  %2571 = call ptr @strerror(i32 noundef %2570) #12
  %2572 = load i32, ptr %440, align 4, !tbaa !5
  %2573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2564, ptr noundef nonnull %.str.5.sink1713, i32 noundef %2565, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 238, ptr noundef %2567, ptr noundef %2569, ptr noundef %2571, i32 noundef %2572) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2574:                                             ; preds = %2547
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  %2575 = load i32, ptr @test_count, align 4, !tbaa !5
  %2576 = add nsw i32 %2575, 1
  store i32 %2576, ptr @test_count, align 4, !tbaa !5
  %2577 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %2578 = icmp eq ptr %2577, null
  br i1 %2578, label %2579, label %2601

2579:                                             ; preds = %2574
  %2580 = load i32, ptr %440, align 4, !tbaa !5
  %2581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2582 = call i32 @s2n_print_stacktrace(ptr noundef %2581) #12
  %2583 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2584 = trunc nuw i8 %2583 to i1
  br i1 %2584, label %2585, label %2589

2585:                                             ; preds = %2579
  %2586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2587 = call i32 @fileno(ptr noundef %2586) #12
  %2588 = call i32 @isatty(i32 noundef %2587) #12
  %.not795 = icmp eq i32 %2588, 0
  br i1 %.not795, label %2589, label %2590

2589:                                             ; preds = %2585, %2579
  br label %2590

2590:                                             ; preds = %2585, %2589
  %.str.5.sink1722 = phi ptr [ @.str.5, %2589 ], [ @.str.2, %2585 ]
  store i32 %2580, ptr %440, align 4, !tbaa !5
  %2591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2592 = load i32, ptr @test_count, align 4, !tbaa !5
  %2593 = load i32, ptr %386, align 4, !tbaa !5
  %2594 = call ptr @s2n_strerror(i32 noundef %2593, ptr noundef nonnull @.str.4) #12
  %2595 = load i32, ptr %386, align 4, !tbaa !5
  %2596 = call ptr @s2n_strerror_debug(i32 noundef %2595, ptr noundef nonnull @.str.4) #12
  %2597 = load i32, ptr %440, align 4, !tbaa !5
  %2598 = call ptr @strerror(i32 noundef %2597) #12
  %2599 = load i32, ptr %440, align 4, !tbaa !5
  %2600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2591, ptr noundef nonnull %.str.5.sink1722, i32 noundef %2592, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 245, ptr noundef %2594, ptr noundef %2596, ptr noundef %2598, i32 noundef %2599) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2601:                                             ; preds = %2574
  %2602 = getelementptr inbounds i8, ptr %2577, i64 16
  store ptr %4, ptr %2602, align 8, !tbaa !47
  %2603 = load i32, ptr @test_count, align 4, !tbaa !5
  %2604 = add nsw i32 %2603, 1
  store i32 %2604, ptr @test_count, align 4, !tbaa !5
  %2605 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %2577, i8 noundef zeroext 34) #12
  %2606 = icmp eq i32 %2605, -1
  br i1 %2606, label %2607, label %2629

2607:                                             ; preds = %2601
  %2608 = load i32, ptr %440, align 4, !tbaa !5
  %2609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2610 = call i32 @s2n_print_stacktrace(ptr noundef %2609) #12
  %2611 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2612 = trunc nuw i8 %2611 to i1
  br i1 %2612, label %2613, label %2617

2613:                                             ; preds = %2607
  %2614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2615 = call i32 @fileno(ptr noundef %2614) #12
  %2616 = call i32 @isatty(i32 noundef %2615) #12
  %.not794 = icmp eq i32 %2616, 0
  br i1 %.not794, label %2617, label %2618

2617:                                             ; preds = %2613, %2607
  br label %2618

2618:                                             ; preds = %2613, %2617
  %.str.5.sink1731 = phi ptr [ @.str.5, %2617 ], [ @.str.2, %2613 ]
  store i32 %2608, ptr %440, align 4, !tbaa !5
  %2619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2620 = load i32, ptr @test_count, align 4, !tbaa !5
  %2621 = load i32, ptr %386, align 4, !tbaa !5
  %2622 = call ptr @s2n_strerror(i32 noundef %2621, ptr noundef nonnull @.str.4) #12
  %2623 = load i32, ptr %386, align 4, !tbaa !5
  %2624 = call ptr @s2n_strerror_debug(i32 noundef %2623, ptr noundef nonnull @.str.4) #12
  %2625 = load i32, ptr %440, align 4, !tbaa !5
  %2626 = call ptr @strerror(i32 noundef %2625) #12
  %2627 = load i32, ptr %440, align 4, !tbaa !5
  %2628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2619, ptr noundef nonnull %.str.5.sink1731, i32 noundef %2620, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 247, ptr noundef %2622, ptr noundef %2624, ptr noundef %2626, i32 noundef %2627) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2629:                                             ; preds = %2601
  %2630 = load i32, ptr @test_count, align 4, !tbaa !5
  %2631 = add nsw i32 %2630, 1
  store i32 %2631, ptr @test_count, align 4, !tbaa !5
  %2632 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef nonnull %2577) #12
  %2633 = call zeroext i1 @s2n_result_is_ok(i32 %2632)
  br i1 %2633, label %2656, label %2634

2634:                                             ; preds = %2629
  %2635 = load i32, ptr %440, align 4, !tbaa !5
  %2636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2637 = call i32 @s2n_print_stacktrace(ptr noundef %2636) #12
  %2638 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2639 = trunc nuw i8 %2638 to i1
  br i1 %2639, label %2640, label %2644

2640:                                             ; preds = %2634
  %2641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2642 = call i32 @fileno(ptr noundef %2641) #12
  %2643 = call i32 @isatty(i32 noundef %2642) #12
  %.not707 = icmp eq i32 %2643, 0
  br i1 %.not707, label %2644, label %2645

2644:                                             ; preds = %2640, %2634
  br label %2645

2645:                                             ; preds = %2640, %2644
  %.str.5.sink1740 = phi ptr [ @.str.5, %2644 ], [ @.str.2, %2640 ]
  store i32 %2635, ptr %440, align 4, !tbaa !5
  %2646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2647 = load i32, ptr @test_count, align 4, !tbaa !5
  %2648 = load i32, ptr %386, align 4, !tbaa !5
  %2649 = call ptr @s2n_strerror(i32 noundef %2648, ptr noundef nonnull @.str.4) #12
  %2650 = load i32, ptr %386, align 4, !tbaa !5
  %2651 = call ptr @s2n_strerror_debug(i32 noundef %2650, ptr noundef nonnull @.str.4) #12
  %2652 = load i32, ptr %440, align 4, !tbaa !5
  %2653 = call ptr @strerror(i32 noundef %2652) #12
  %2654 = load i32, ptr %440, align 4, !tbaa !5
  %2655 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2646, ptr noundef nonnull %.str.5.sink1740, i32 noundef %2647, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 248, ptr noundef %2649, ptr noundef %2651, ptr noundef %2653, i32 noundef %2654) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2656:                                             ; preds = %2629
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  store ptr null, ptr %9, align 8, !tbaa !9
  %2657 = load i32, ptr @test_count, align 4, !tbaa !5
  %2658 = add nsw i32 %2657, 1
  store i32 %2658, ptr @test_count, align 4, !tbaa !5
  %2659 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %2577, ptr noundef nonnull %9) #12
  %2660 = icmp eq i32 %2659, -1
  br i1 %2660, label %2661, label %2683

2661:                                             ; preds = %2656
  %2662 = load i32, ptr %440, align 4, !tbaa !5
  %2663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2664 = call i32 @s2n_print_stacktrace(ptr noundef %2663) #12
  %2665 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2666 = trunc nuw i8 %2665 to i1
  br i1 %2666, label %2667, label %2671

2667:                                             ; preds = %2661
  %2668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2669 = call i32 @fileno(ptr noundef %2668) #12
  %2670 = call i32 @isatty(i32 noundef %2669) #12
  %.not793 = icmp eq i32 %2670, 0
  br i1 %.not793, label %2671, label %2672

2671:                                             ; preds = %2667, %2661
  br label %2672

2672:                                             ; preds = %2667, %2671
  %.str.5.sink1749 = phi ptr [ @.str.5, %2671 ], [ @.str.2, %2667 ]
  store i32 %2662, ptr %440, align 4, !tbaa !5
  %2673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2674 = load i32, ptr @test_count, align 4, !tbaa !5
  %2675 = load i32, ptr %386, align 4, !tbaa !5
  %2676 = call ptr @s2n_strerror(i32 noundef %2675, ptr noundef nonnull @.str.4) #12
  %2677 = load i32, ptr %386, align 4, !tbaa !5
  %2678 = call ptr @s2n_strerror_debug(i32 noundef %2677, ptr noundef nonnull @.str.4) #12
  %2679 = load i32, ptr %440, align 4, !tbaa !5
  %2680 = call ptr @strerror(i32 noundef %2679) #12
  %2681 = load i32, ptr %440, align 4, !tbaa !5
  %2682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2673, ptr noundef nonnull %.str.5.sink1749, i32 noundef %2674, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 251, ptr noundef %2676, ptr noundef %2678, ptr noundef %2680, i32 noundef %2681) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2683:                                             ; preds = %2656
  %2684 = load i32, ptr @test_count, align 4, !tbaa !5
  %2685 = add nsw i32 %2684, 1
  store i32 %2685, ptr @test_count, align 4, !tbaa !5
  %2686 = load ptr, ptr %9, align 8, !tbaa !9
  %2687 = icmp eq ptr %2686, null
  br i1 %2687, label %2688, label %2710

2688:                                             ; preds = %2683
  %2689 = load i32, ptr %440, align 4, !tbaa !5
  %2690 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2691 = call i32 @s2n_print_stacktrace(ptr noundef %2690) #12
  %2692 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2693 = trunc nuw i8 %2692 to i1
  br i1 %2693, label %2694, label %2698

2694:                                             ; preds = %2688
  %2695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2696 = call i32 @fileno(ptr noundef %2695) #12
  %2697 = call i32 @isatty(i32 noundef %2696) #12
  %.not792 = icmp eq i32 %2697, 0
  br i1 %.not792, label %2698, label %2699

2698:                                             ; preds = %2694, %2688
  br label %2699

2699:                                             ; preds = %2694, %2698
  %.str.5.sink1758 = phi ptr [ @.str.5, %2698 ], [ @.str.2, %2694 ]
  store i32 %2689, ptr %440, align 4, !tbaa !5
  %2700 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2701 = load i32, ptr @test_count, align 4, !tbaa !5
  %2702 = load i32, ptr %386, align 4, !tbaa !5
  %2703 = call ptr @s2n_strerror(i32 noundef %2702, ptr noundef nonnull @.str.4) #12
  %2704 = load i32, ptr %386, align 4, !tbaa !5
  %2705 = call ptr @s2n_strerror_debug(i32 noundef %2704, ptr noundef nonnull @.str.4) #12
  %2706 = load i32, ptr %440, align 4, !tbaa !5
  %2707 = call ptr @strerror(i32 noundef %2706) #12
  %2708 = load i32, ptr %440, align 4, !tbaa !5
  %2709 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2700, ptr noundef nonnull %.str.5.sink1758, i32 noundef %2701, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 252, ptr noundef %2703, ptr noundef %2705, ptr noundef %2707, i32 noundef %2708) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2710:                                             ; preds = %2683
  %2711 = add nsw i32 %2684, 2
  store i32 %2711, ptr @test_count, align 4, !tbaa !5
  %2712 = getelementptr inbounds i8, ptr %2577, i64 656
  %2713 = load ptr, ptr %2712, align 8, !tbaa !15
  %2714 = icmp eq ptr %2713, null
  br i1 %2714, label %2737, label %2715

2715:                                             ; preds = %2710
  %2716 = load i32, ptr %440, align 4, !tbaa !5
  %2717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2718 = call i32 @s2n_print_stacktrace(ptr noundef %2717) #12
  %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 = %2715
  %2722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2723 = call i32 @fileno(ptr noundef %2722) #12
  %2724 = call i32 @isatty(i32 noundef %2723) #12
  %.not708 = icmp eq i32 %2724, 0
  br i1 %.not708, label %2725, label %2726

2725:                                             ; preds = %2721, %2715
  br label %2726

2726:                                             ; preds = %2721, %2725
  %.str.5.sink1767 = phi ptr [ @.str.5, %2725 ], [ @.str.2, %2721 ]
  store i32 %2716, ptr %440, align 4, !tbaa !5
  %2727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2728 = load i32, ptr @test_count, align 4, !tbaa !5
  %2729 = load i32, ptr %386, align 4, !tbaa !5
  %2730 = call ptr @s2n_strerror(i32 noundef %2729, ptr noundef nonnull @.str.4) #12
  %2731 = load i32, ptr %386, align 4, !tbaa !5
  %2732 = call ptr @s2n_strerror_debug(i32 noundef %2731, ptr noundef nonnull @.str.4) #12
  %2733 = load i32, ptr %440, align 4, !tbaa !5
  %2734 = call ptr @strerror(i32 noundef %2733) #12
  %2735 = load i32, ptr %440, align 4, !tbaa !5
  %2736 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2727, ptr noundef nonnull %.str.5.sink1767, i32 noundef %2728, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 255, ptr noundef %2730, ptr noundef %2732, ptr noundef %2734, i32 noundef %2735) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2737:                                             ; preds = %2710
  %2738 = getelementptr inbounds i8, ptr %2577, i64 720
  %2739 = getelementptr inbounds i8, ptr %2686, i64 24
  %2740 = load ptr, ptr %2739, align 8, !tbaa !48
  %2741 = load ptr, ptr %2740, align 8, !tbaa !9
  store ptr %2741, ptr %2738, align 8, !tbaa !50
  %2742 = getelementptr inbounds i8, ptr %2741, i64 24
  %2743 = load ptr, ptr %2742, align 8, !tbaa !51
  %2744 = getelementptr inbounds i8, ptr %2577, i64 728
  store ptr %2743, ptr %2744, align 8, !tbaa !53
  %2745 = getelementptr inbounds i8, ptr %2741, i64 16
  %2746 = load ptr, ptr %2745, align 8, !tbaa !54
  %2747 = getelementptr inbounds i8, ptr %2577, i64 816
  store ptr %2746, ptr %2747, align 8, !tbaa !55
  %2748 = getelementptr inbounds i8, ptr %2577, i64 832
  %2749 = load ptr, ptr %2740, align 8, !tbaa !9
  store ptr %2749, ptr %2748, align 8, !tbaa !50
  %2750 = getelementptr inbounds i8, ptr %2749, i64 24
  %2751 = load ptr, ptr %2750, align 8, !tbaa !51
  %2752 = getelementptr inbounds i8, ptr %2577, i64 840
  store ptr %2751, ptr %2752, align 8, !tbaa !53
  %2753 = getelementptr inbounds i8, ptr %2749, i64 16
  %2754 = load ptr, ptr %2753, align 8, !tbaa !54
  %2755 = getelementptr inbounds i8, ptr %2577, i64 928
  store ptr %2754, ptr %2755, align 8, !tbaa !55
  %2756 = add nsw i32 %2684, 3
  store i32 %2756, ptr @test_count, align 4, !tbaa !5
  %2757 = getelementptr inbounds i8, ptr %2577, i64 848
  %2758 = getelementptr inbounds i8, ptr %2751, i64 14
  %2759 = load i16, ptr %2758, align 2, !tbaa !61
  %2760 = zext i16 %2759 to i32
  %2761 = call i32 @s2n_alloc(ptr noundef nonnull %2757, i32 noundef %2760) #12
  %2762 = icmp eq i32 %2761, -1
  br i1 %2762, label %2763, label %2785

2763:                                             ; preds = %2737
  %2764 = load i32, ptr %440, align 4, !tbaa !5
  %2765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2766 = call i32 @s2n_print_stacktrace(ptr noundef %2765) #12
  %2767 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2768 = trunc nuw i8 %2767 to i1
  br i1 %2768, label %2769, label %2773

2769:                                             ; preds = %2763
  %2770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2771 = call i32 @fileno(ptr noundef %2770) #12
  %2772 = call i32 @isatty(i32 noundef %2771) #12
  %.not791 = icmp eq i32 %2772, 0
  br i1 %.not791, label %2773, label %2774

2773:                                             ; preds = %2769, %2763
  br label %2774

2774:                                             ; preds = %2769, %2773
  %.str.5.sink1776 = phi ptr [ @.str.5, %2773 ], [ @.str.2, %2769 ]
  store i32 %2764, ptr %440, align 4, !tbaa !5
  %2775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2776 = load i32, ptr @test_count, align 4, !tbaa !5
  %2777 = load i32, ptr %386, align 4, !tbaa !5
  %2778 = call ptr @s2n_strerror(i32 noundef %2777, ptr noundef nonnull @.str.4) #12
  %2779 = load i32, ptr %386, align 4, !tbaa !5
  %2780 = call ptr @s2n_strerror_debug(i32 noundef %2779, ptr noundef nonnull @.str.4) #12
  %2781 = load i32, ptr %440, align 4, !tbaa !5
  %2782 = call ptr @strerror(i32 noundef %2781) #12
  %2783 = load i32, ptr %440, align 4, !tbaa !5
  %2784 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2775, ptr noundef nonnull %.str.5.sink1776, i32 noundef %2776, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 268, ptr noundef %2778, ptr noundef %2780, ptr noundef %2782, i32 noundef %2783) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2785:                                             ; preds = %2737
  %2786 = load ptr, ptr %2750, align 8, !tbaa !51
  %2787 = getelementptr inbounds i8, ptr %2786, i64 14
  %2788 = load i16, ptr %2787, align 2, !tbaa !61
  %.not709 = icmp eq i16 %2788, 0
  br i1 %.not709, label %.thread861, label %2789, !prof !63

2789:                                             ; preds = %2785
  %2790 = load ptr, ptr %2757, align 8, !tbaa !64
  %.not710.not = icmp eq ptr %2790, null
  br i1 %.not710.not, label %.critedge849, label %.thread866

.thread866:                                       ; preds = %2789
  %2791 = zext i16 %2788 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %2790, i8 1, i64 %2791, i1 false)
  br label %.thread861

.thread861:                                       ; preds = %2785, %.thread866
  %2792 = load i32, ptr @test_count, align 4, !tbaa !5
  %2793 = add nsw i32 %2792, 1
  store i32 %2793, ptr @test_count, align 4, !tbaa !5
  %2794 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef nonnull %2755) #12
  %2795 = icmp eq i32 %2794, -1
  br i1 %2795, label %2796, label %2818

2796:                                             ; preds = %.thread861
  %2797 = load i32, ptr %440, align 4, !tbaa !5
  %2798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2799 = call i32 @s2n_print_stacktrace(ptr noundef %2798) #12
  %2800 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2801 = trunc nuw i8 %2800 to i1
  br i1 %2801, label %2802, label %2806

2802:                                             ; preds = %2796
  %2803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2804 = call i32 @fileno(ptr noundef %2803) #12
  %2805 = call i32 @isatty(i32 noundef %2804) #12
  %.not790 = icmp eq i32 %2805, 0
  br i1 %.not790, label %2806, label %2807

2806:                                             ; preds = %2802, %2796
  br label %2807

2807:                                             ; preds = %2802, %2806
  %.str.5.sink1785 = phi ptr [ @.str.5, %2806 ], [ @.str.2, %2802 ]
  store i32 %2797, ptr %440, align 4, !tbaa !5
  %2808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2809 = load i32, ptr @test_count, align 4, !tbaa !5
  %2810 = load i32, ptr %386, align 4, !tbaa !5
  %2811 = call ptr @s2n_strerror(i32 noundef %2810, ptr noundef nonnull @.str.4) #12
  %2812 = load i32, ptr %386, align 4, !tbaa !5
  %2813 = call ptr @s2n_strerror_debug(i32 noundef %2812, ptr noundef nonnull @.str.4) #12
  %2814 = load i32, ptr %440, align 4, !tbaa !5
  %2815 = call ptr @strerror(i32 noundef %2814) #12
  %2816 = load i32, ptr %440, align 4, !tbaa !5
  %2817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2808, ptr noundef nonnull %.str.5.sink1785, i32 noundef %2809, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.1, i32 noundef 271, ptr noundef %2811, ptr noundef %2813, ptr noundef %2815, i32 noundef %2816) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2818:                                             ; preds = %.thread861
  %2819 = load i32, ptr @test_count, align 4, !tbaa !5
  %2820 = add nsw i32 %2819, 1
  store i32 %2820, ptr @test_count, align 4, !tbaa !5
  %2821 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %2577) #12
  %2822 = icmp eq i32 %2821, -1
  br i1 %2822, label %2823, label %2845

2823:                                             ; preds = %2818
  %2824 = load i32, ptr %440, align 4, !tbaa !5
  %2825 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2826 = call i32 @s2n_print_stacktrace(ptr noundef %2825) #12
  %2827 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2828 = trunc nuw i8 %2827 to i1
  br i1 %2828, label %2829, label %2833

2829:                                             ; preds = %2823
  %2830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2831 = call i32 @fileno(ptr noundef %2830) #12
  %2832 = call i32 @isatty(i32 noundef %2831) #12
  %.not789 = icmp eq i32 %2832, 0
  br i1 %.not789, label %2833, label %2834

2833:                                             ; preds = %2829, %2823
  br label %2834

2834:                                             ; preds = %2829, %2833
  %.str.5.sink1794 = phi ptr [ @.str.5, %2833 ], [ @.str.2, %2829 ]
  store i32 %2824, ptr %440, align 4, !tbaa !5
  %2835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2836 = load i32, ptr @test_count, align 4, !tbaa !5
  %2837 = load i32, ptr %386, align 4, !tbaa !5
  %2838 = call ptr @s2n_strerror(i32 noundef %2837, ptr noundef nonnull @.str.4) #12
  %2839 = load i32, ptr %386, align 4, !tbaa !5
  %2840 = call ptr @s2n_strerror_debug(i32 noundef %2839, ptr noundef nonnull @.str.4) #12
  %2841 = load i32, ptr %440, align 4, !tbaa !5
  %2842 = call ptr @strerror(i32 noundef %2841) #12
  %2843 = load i32, ptr %440, align 4, !tbaa !5
  %2844 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2835, ptr noundef nonnull %.str.5.sink1794, i32 noundef %2836, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 273, ptr noundef %2838, ptr noundef %2840, ptr noundef %2842, i32 noundef %2843) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2845:                                             ; preds = %2818
  %2846 = load i32, ptr @test_count, align 4, !tbaa !5
  %2847 = add nsw i32 %2846, 1
  store i32 %2847, ptr @test_count, align 4, !tbaa !5
  %2848 = load ptr, ptr %2738, align 8, !tbaa !50
  %2849 = icmp eq ptr %2848, %2741
  br i1 %2849, label %2872, label %2850

2850:                                             ; preds = %2845
  %2851 = load i32, ptr %440, align 4, !tbaa !5
  %2852 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2853 = call i32 @s2n_print_stacktrace(ptr noundef %2852) #12
  %2854 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2855 = trunc nuw i8 %2854 to i1
  br i1 %2855, label %2856, label %2860

2856:                                             ; preds = %2850
  %2857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2858 = call i32 @fileno(ptr noundef %2857) #12
  %2859 = call i32 @isatty(i32 noundef %2858) #12
  %.not712 = icmp eq i32 %2859, 0
  br i1 %.not712, label %2860, label %2861

2860:                                             ; preds = %2856, %2850
  br label %2861

2861:                                             ; preds = %2856, %2860
  %.str.5.sink1803 = phi ptr [ @.str.5, %2860 ], [ @.str.2, %2856 ]
  store i32 %2851, ptr %440, align 4, !tbaa !5
  %2862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2863 = load i32, ptr @test_count, align 4, !tbaa !5
  %2864 = load i32, ptr %386, align 4, !tbaa !5
  %2865 = call ptr @s2n_strerror(i32 noundef %2864, ptr noundef nonnull @.str.4) #12
  %2866 = load i32, ptr %386, align 4, !tbaa !5
  %2867 = call ptr @s2n_strerror_debug(i32 noundef %2866, ptr noundef nonnull @.str.4) #12
  %2868 = load i32, ptr %440, align 4, !tbaa !5
  %2869 = call ptr @strerror(i32 noundef %2868) #12
  %2870 = load i32, ptr %440, align 4, !tbaa !5
  %2871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2862, ptr noundef nonnull %.str.5.sink1803, i32 noundef %2863, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 276, ptr noundef %2865, ptr noundef %2867, ptr noundef %2869, i32 noundef %2870) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2872:                                             ; preds = %2845
  %2873 = add nsw i32 %2846, 2
  store i32 %2873, ptr @test_count, align 4, !tbaa !5
  %2874 = load ptr, ptr %2744, align 8, !tbaa !53
  %2875 = load ptr, ptr %2742, align 8, !tbaa !51
  %2876 = icmp eq ptr %2874, %2875
  br i1 %2876, label %2899, label %2877

2877:                                             ; preds = %2872
  %2878 = load i32, ptr %440, align 4, !tbaa !5
  %2879 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2880 = call i32 @s2n_print_stacktrace(ptr noundef %2879) #12
  %2881 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2882 = trunc nuw i8 %2881 to i1
  br i1 %2882, label %2883, label %2887

2883:                                             ; preds = %2877
  %2884 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2885 = call i32 @fileno(ptr noundef %2884) #12
  %2886 = call i32 @isatty(i32 noundef %2885) #12
  %.not713 = icmp eq i32 %2886, 0
  br i1 %.not713, label %2887, label %2888

2887:                                             ; preds = %2883, %2877
  br label %2888

2888:                                             ; preds = %2883, %2887
  %.str.5.sink1812 = phi ptr [ @.str.5, %2887 ], [ @.str.2, %2883 ]
  store i32 %2878, ptr %440, align 4, !tbaa !5
  %2889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2890 = load i32, ptr @test_count, align 4, !tbaa !5
  %2891 = load i32, ptr %386, align 4, !tbaa !5
  %2892 = call ptr @s2n_strerror(i32 noundef %2891, ptr noundef nonnull @.str.4) #12
  %2893 = load i32, ptr %386, align 4, !tbaa !5
  %2894 = call ptr @s2n_strerror_debug(i32 noundef %2893, ptr noundef nonnull @.str.4) #12
  %2895 = load i32, ptr %440, align 4, !tbaa !5
  %2896 = call ptr @strerror(i32 noundef %2895) #12
  %2897 = load i32, ptr %440, align 4, !tbaa !5
  %2898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2889, ptr noundef nonnull %.str.5.sink1812, i32 noundef %2890, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 277, ptr noundef %2892, ptr noundef %2894, ptr noundef %2896, i32 noundef %2897) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2899:                                             ; preds = %2872
  %2900 = add nsw i32 %2846, 3
  store i32 %2900, ptr @test_count, align 4, !tbaa !5
  %2901 = load ptr, ptr %2747, align 8, !tbaa !55
  %2902 = load ptr, ptr %2745, align 8, !tbaa !54
  %2903 = icmp eq ptr %2901, %2902
  br i1 %2903, label %2926, label %2904

2904:                                             ; preds = %2899
  %2905 = load i32, ptr %440, align 4, !tbaa !5
  %2906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2907 = call i32 @s2n_print_stacktrace(ptr noundef %2906) #12
  %2908 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2909 = trunc nuw i8 %2908 to i1
  br i1 %2909, label %2910, label %2914

2910:                                             ; preds = %2904
  %2911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2912 = call i32 @fileno(ptr noundef %2911) #12
  %2913 = call i32 @isatty(i32 noundef %2912) #12
  %.not714 = icmp eq i32 %2913, 0
  br i1 %.not714, label %2914, label %2915

2914:                                             ; preds = %2910, %2904
  br label %2915

2915:                                             ; preds = %2910, %2914
  %.str.5.sink1821 = phi ptr [ @.str.5, %2914 ], [ @.str.2, %2910 ]
  store i32 %2905, ptr %440, align 4, !tbaa !5
  %2916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2917 = load i32, ptr @test_count, align 4, !tbaa !5
  %2918 = load i32, ptr %386, align 4, !tbaa !5
  %2919 = call ptr @s2n_strerror(i32 noundef %2918, ptr noundef nonnull @.str.4) #12
  %2920 = load i32, ptr %386, align 4, !tbaa !5
  %2921 = call ptr @s2n_strerror_debug(i32 noundef %2920, ptr noundef nonnull @.str.4) #12
  %2922 = load i32, ptr %440, align 4, !tbaa !5
  %2923 = call ptr @strerror(i32 noundef %2922) #12
  %2924 = load i32, ptr %440, align 4, !tbaa !5
  %2925 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2916, ptr noundef nonnull %.str.5.sink1821, i32 noundef %2917, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 278, ptr noundef %2919, ptr noundef %2921, ptr noundef %2923, i32 noundef %2924) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2926:                                             ; preds = %2899
  %2927 = add nsw i32 %2846, 4
  store i32 %2927, ptr @test_count, align 4, !tbaa !5
  %2928 = load ptr, ptr %2748, align 8, !tbaa !56
  %2929 = icmp eq ptr %2928, %2741
  br i1 %2929, label %2952, label %2930

2930:                                             ; preds = %2926
  %2931 = load i32, ptr %440, align 4, !tbaa !5
  %2932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2933 = call i32 @s2n_print_stacktrace(ptr noundef %2932) #12
  %2934 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2935 = trunc nuw i8 %2934 to i1
  br i1 %2935, label %2936, label %2940

2936:                                             ; preds = %2930
  %2937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2938 = call i32 @fileno(ptr noundef %2937) #12
  %2939 = call i32 @isatty(i32 noundef %2938) #12
  %.not715 = icmp eq i32 %2939, 0
  br i1 %.not715, label %2940, label %2941

2940:                                             ; preds = %2936, %2930
  br label %2941

2941:                                             ; preds = %2936, %2940
  %.str.5.sink1830 = phi ptr [ @.str.5, %2940 ], [ @.str.2, %2936 ]
  store i32 %2931, ptr %440, align 4, !tbaa !5
  %2942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2943 = load i32, ptr @test_count, align 4, !tbaa !5
  %2944 = load i32, ptr %386, align 4, !tbaa !5
  %2945 = call ptr @s2n_strerror(i32 noundef %2944, ptr noundef nonnull @.str.4) #12
  %2946 = load i32, ptr %386, align 4, !tbaa !5
  %2947 = call ptr @s2n_strerror_debug(i32 noundef %2946, ptr noundef nonnull @.str.4) #12
  %2948 = load i32, ptr %440, align 4, !tbaa !5
  %2949 = call ptr @strerror(i32 noundef %2948) #12
  %2950 = load i32, ptr %440, align 4, !tbaa !5
  %2951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2942, ptr noundef nonnull %.str.5.sink1830, i32 noundef %2943, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 279, ptr noundef %2945, ptr noundef %2947, ptr noundef %2949, i32 noundef %2950) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2952:                                             ; preds = %2926
  %2953 = add nsw i32 %2846, 5
  store i32 %2953, ptr @test_count, align 4, !tbaa !5
  %2954 = load ptr, ptr %2712, align 8, !tbaa !15
  %2955 = icmp eq ptr %2954, null
  br i1 %2955, label %2978, label %2956

2956:                                             ; preds = %2952
  %2957 = load i32, ptr %440, align 4, !tbaa !5
  %2958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2959 = call i32 @s2n_print_stacktrace(ptr noundef %2958) #12
  %2960 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2961 = trunc nuw i8 %2960 to i1
  br i1 %2961, label %2962, label %2966

2962:                                             ; preds = %2956
  %2963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2964 = call i32 @fileno(ptr noundef %2963) #12
  %2965 = call i32 @isatty(i32 noundef %2964) #12
  %.not716 = icmp eq i32 %2965, 0
  br i1 %.not716, label %2966, label %2967

2966:                                             ; preds = %2962, %2956
  br label %2967

2967:                                             ; preds = %2962, %2966
  %.str.5.sink1839 = phi ptr [ @.str.5, %2966 ], [ @.str.2, %2962 ]
  store i32 %2957, ptr %440, align 4, !tbaa !5
  %2968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2969 = load i32, ptr @test_count, align 4, !tbaa !5
  %2970 = load i32, ptr %386, align 4, !tbaa !5
  %2971 = call ptr @s2n_strerror(i32 noundef %2970, ptr noundef nonnull @.str.4) #12
  %2972 = load i32, ptr %386, align 4, !tbaa !5
  %2973 = call ptr @s2n_strerror_debug(i32 noundef %2972, ptr noundef nonnull @.str.4) #12
  %2974 = load i32, ptr %440, align 4, !tbaa !5
  %2975 = call ptr @strerror(i32 noundef %2974) #12
  %2976 = load i32, ptr %440, align 4, !tbaa !5
  %2977 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2968, ptr noundef nonnull %.str.5.sink1839, i32 noundef %2969, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 280, ptr noundef %2971, ptr noundef %2973, ptr noundef %2975, i32 noundef %2976) #14
  call void @exit(i32 noundef 1) #15
  unreachable

2978:                                             ; preds = %2952
  %2979 = add nsw i32 %2846, 6
  store i32 %2979, ptr @test_count, align 4, !tbaa !5
  %2980 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %2577) #12
  br i1 %2980, label %2981, label %3003

2981:                                             ; preds = %2978
  %2982 = load i32, ptr %440, align 4, !tbaa !5
  %2983 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2984 = call i32 @s2n_print_stacktrace(ptr noundef %2983) #12
  %2985 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2986 = trunc nuw i8 %2985 to i1
  br i1 %2986, label %2987, label %2991

2987:                                             ; preds = %2981
  %2988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2989 = call i32 @fileno(ptr noundef %2988) #12
  %2990 = call i32 @isatty(i32 noundef %2989) #12
  %.not788 = icmp eq i32 %2990, 0
  br i1 %.not788, label %2991, label %2992

2991:                                             ; preds = %2987, %2981
  br label %2992

2992:                                             ; preds = %2987, %2991
  %.str.5.sink1848 = phi ptr [ @.str.5, %2991 ], [ @.str.2, %2987 ]
  store i32 %2982, ptr %440, align 4, !tbaa !5
  %2993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2994 = load i32, ptr @test_count, align 4, !tbaa !5
  %2995 = load i32, ptr %386, align 4, !tbaa !5
  %2996 = call ptr @s2n_strerror(i32 noundef %2995, ptr noundef nonnull @.str.4) #12
  %2997 = load i32, ptr %386, align 4, !tbaa !5
  %2998 = call ptr @s2n_strerror_debug(i32 noundef %2997, ptr noundef nonnull @.str.4) #12
  %2999 = load i32, ptr %440, align 4, !tbaa !5
  %3000 = call ptr @strerror(i32 noundef %2999) #12
  %3001 = load i32, ptr %440, align 4, !tbaa !5
  %3002 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2993, ptr noundef nonnull %.str.5.sink1848, i32 noundef %2994, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 281, ptr noundef %2996, ptr noundef %2998, ptr noundef %3000, i32 noundef %3001) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3003:                                             ; preds = %2978
  %3004 = load i32, ptr @test_count, align 4, !tbaa !5
  %3005 = add nsw i32 %3004, 1
  store i32 %3005, ptr @test_count, align 4, !tbaa !5
  %3006 = call i32 @s2n_connection_free(ptr noundef nonnull %2577) #12
  %3007 = icmp eq i32 %3006, -1
  br i1 %3007, label %3008, label %3030

3008:                                             ; preds = %3003
  %3009 = load i32, ptr %440, align 4, !tbaa !5
  %3010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3011 = call i32 @s2n_print_stacktrace(ptr noundef %3010) #12
  %3012 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3013 = trunc nuw i8 %3012 to i1
  br i1 %3013, label %3014, label %3018

3014:                                             ; preds = %3008
  %3015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3016 = call i32 @fileno(ptr noundef %3015) #12
  %3017 = call i32 @isatty(i32 noundef %3016) #12
  %.not787 = icmp eq i32 %3017, 0
  br i1 %.not787, label %3018, label %3019

3018:                                             ; preds = %3014, %3008
  br label %3019

3019:                                             ; preds = %3014, %3018
  %.str.5.sink1857 = phi ptr [ @.str.5, %3018 ], [ @.str.2, %3014 ]
  store i32 %3009, ptr %440, align 4, !tbaa !5
  %3020 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3021 = load i32, ptr @test_count, align 4, !tbaa !5
  %3022 = load i32, ptr %386, align 4, !tbaa !5
  %3023 = call ptr @s2n_strerror(i32 noundef %3022, ptr noundef nonnull @.str.4) #12
  %3024 = load i32, ptr %386, align 4, !tbaa !5
  %3025 = call ptr @s2n_strerror_debug(i32 noundef %3024, ptr noundef nonnull @.str.4) #12
  %3026 = load i32, ptr %440, align 4, !tbaa !5
  %3027 = call ptr @strerror(i32 noundef %3026) #12
  %3028 = load i32, ptr %440, align 4, !tbaa !5
  %3029 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3020, ptr noundef nonnull %.str.5.sink1857, i32 noundef %3021, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 283, ptr noundef %3023, ptr noundef %3025, ptr noundef %3027, i32 noundef %3028) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3030:                                             ; preds = %3003
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  %3031 = load i32, ptr @test_count, align 4, !tbaa !5
  %3032 = add nsw i32 %3031, 1
  store i32 %3032, ptr @test_count, align 4, !tbaa !5
  %3033 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %3034 = icmp eq ptr %3033, null
  br i1 %3034, label %3035, label %3057

3035:                                             ; preds = %3030
  %3036 = load i32, ptr %440, align 4, !tbaa !5
  %3037 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3038 = call i32 @s2n_print_stacktrace(ptr noundef %3037) #12
  %3039 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3040 = trunc nuw i8 %3039 to i1
  br i1 %3040, label %3041, label %3045

3041:                                             ; preds = %3035
  %3042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3043 = call i32 @fileno(ptr noundef %3042) #12
  %3044 = call i32 @isatty(i32 noundef %3043) #12
  %.not786 = icmp eq i32 %3044, 0
  br i1 %.not786, label %3045, label %3046

3045:                                             ; preds = %3041, %3035
  br label %3046

3046:                                             ; preds = %3041, %3045
  %.str.5.sink1866 = phi ptr [ @.str.5, %3045 ], [ @.str.2, %3041 ]
  store i32 %3036, ptr %440, align 4, !tbaa !5
  %3047 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3048 = load i32, ptr @test_count, align 4, !tbaa !5
  %3049 = load i32, ptr %386, align 4, !tbaa !5
  %3050 = call ptr @s2n_strerror(i32 noundef %3049, ptr noundef nonnull @.str.4) #12
  %3051 = load i32, ptr %386, align 4, !tbaa !5
  %3052 = call ptr @s2n_strerror_debug(i32 noundef %3051, ptr noundef nonnull @.str.4) #12
  %3053 = load i32, ptr %440, align 4, !tbaa !5
  %3054 = call ptr @strerror(i32 noundef %3053) #12
  %3055 = load i32, ptr %440, align 4, !tbaa !5
  %3056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3047, ptr noundef nonnull %.str.5.sink1866, i32 noundef %3048, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 290, ptr noundef %3050, ptr noundef %3052, ptr noundef %3054, i32 noundef %3055) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3057:                                             ; preds = %3030
  %3058 = getelementptr inbounds i8, ptr %3033, i64 16
  store ptr %4, ptr %3058, align 8, !tbaa !47
  %3059 = load i32, ptr @test_count, align 4, !tbaa !5
  %3060 = add nsw i32 %3059, 1
  store i32 %3060, ptr @test_count, align 4, !tbaa !5
  %3061 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %3033, i8 noundef zeroext 34) #12
  %3062 = icmp eq i32 %3061, -1
  br i1 %3062, label %3063, label %3085

3063:                                             ; preds = %3057
  %3064 = load i32, ptr %440, align 4, !tbaa !5
  %3065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3066 = call i32 @s2n_print_stacktrace(ptr noundef %3065) #12
  %3067 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3068 = trunc nuw i8 %3067 to i1
  br i1 %3068, label %3069, label %3073

3069:                                             ; preds = %3063
  %3070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3071 = call i32 @fileno(ptr noundef %3070) #12
  %3072 = call i32 @isatty(i32 noundef %3071) #12
  %.not785 = icmp eq i32 %3072, 0
  br i1 %.not785, label %3073, label %3074

3073:                                             ; preds = %3069, %3063
  br label %3074

3074:                                             ; preds = %3069, %3073
  %.str.5.sink1875 = phi ptr [ @.str.5, %3073 ], [ @.str.2, %3069 ]
  store i32 %3064, ptr %440, align 4, !tbaa !5
  %3075 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3076 = load i32, ptr @test_count, align 4, !tbaa !5
  %3077 = load i32, ptr %386, align 4, !tbaa !5
  %3078 = call ptr @s2n_strerror(i32 noundef %3077, ptr noundef nonnull @.str.4) #12
  %3079 = load i32, ptr %386, align 4, !tbaa !5
  %3080 = call ptr @s2n_strerror_debug(i32 noundef %3079, ptr noundef nonnull @.str.4) #12
  %3081 = load i32, ptr %440, align 4, !tbaa !5
  %3082 = call ptr @strerror(i32 noundef %3081) #12
  %3083 = load i32, ptr %440, align 4, !tbaa !5
  %3084 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3075, ptr noundef nonnull %.str.5.sink1875, i32 noundef %3076, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 292, ptr noundef %3078, ptr noundef %3080, ptr noundef %3082, i32 noundef %3083) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3085:                                             ; preds = %3057
  %3086 = load i32, ptr @test_count, align 4, !tbaa !5
  %3087 = add nsw i32 %3086, 1
  store i32 %3087, ptr @test_count, align 4, !tbaa !5
  %3088 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef nonnull %3033) #12
  %3089 = call zeroext i1 @s2n_result_is_ok(i32 %3088)
  br i1 %3089, label %3112, label %3090

3090:                                             ; preds = %3085
  %3091 = load i32, ptr %440, align 4, !tbaa !5
  %3092 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3093 = call i32 @s2n_print_stacktrace(ptr noundef %3092) #12
  %3094 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3095 = trunc nuw i8 %3094 to i1
  br i1 %3095, label %3096, label %3100

3096:                                             ; preds = %3090
  %3097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3098 = call i32 @fileno(ptr noundef %3097) #12
  %3099 = call i32 @isatty(i32 noundef %3098) #12
  %.not717 = icmp eq i32 %3099, 0
  br i1 %.not717, label %3100, label %3101

3100:                                             ; preds = %3096, %3090
  br label %3101

3101:                                             ; preds = %3096, %3100
  %.str.5.sink1884 = phi ptr [ @.str.5, %3100 ], [ @.str.2, %3096 ]
  store i32 %3091, ptr %440, align 4, !tbaa !5
  %3102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3103 = load i32, ptr @test_count, align 4, !tbaa !5
  %3104 = load i32, ptr %386, align 4, !tbaa !5
  %3105 = call ptr @s2n_strerror(i32 noundef %3104, ptr noundef nonnull @.str.4) #12
  %3106 = load i32, ptr %386, align 4, !tbaa !5
  %3107 = call ptr @s2n_strerror_debug(i32 noundef %3106, ptr noundef nonnull @.str.4) #12
  %3108 = load i32, ptr %440, align 4, !tbaa !5
  %3109 = call ptr @strerror(i32 noundef %3108) #12
  %3110 = load i32, ptr %440, align 4, !tbaa !5
  %3111 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3102, ptr noundef nonnull %.str.5.sink1884, i32 noundef %3103, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 293, ptr noundef %3105, ptr noundef %3107, ptr noundef %3109, i32 noundef %3110) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3112:                                             ; preds = %3085
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  store ptr null, ptr %10, align 8, !tbaa !9
  %3113 = load i32, ptr @test_count, align 4, !tbaa !5
  %3114 = add nsw i32 %3113, 1
  store i32 %3114, ptr @test_count, align 4, !tbaa !5
  %3115 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %3033, ptr noundef nonnull %10) #12
  %3116 = icmp eq i32 %3115, -1
  br i1 %3116, label %3117, label %3139

3117:                                             ; preds = %3112
  %3118 = load i32, ptr %440, align 4, !tbaa !5
  %3119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3120 = call i32 @s2n_print_stacktrace(ptr noundef %3119) #12
  %3121 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3122 = trunc nuw i8 %3121 to i1
  br i1 %3122, label %3123, label %3127

3123:                                             ; preds = %3117
  %3124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3125 = call i32 @fileno(ptr noundef %3124) #12
  %3126 = call i32 @isatty(i32 noundef %3125) #12
  %.not784 = icmp eq i32 %3126, 0
  br i1 %.not784, label %3127, label %3128

3127:                                             ; preds = %3123, %3117
  br label %3128

3128:                                             ; preds = %3123, %3127
  %.str.5.sink1893 = phi ptr [ @.str.5, %3127 ], [ @.str.2, %3123 ]
  store i32 %3118, ptr %440, align 4, !tbaa !5
  %3129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3130 = load i32, ptr @test_count, align 4, !tbaa !5
  %3131 = load i32, ptr %386, align 4, !tbaa !5
  %3132 = call ptr @s2n_strerror(i32 noundef %3131, ptr noundef nonnull @.str.4) #12
  %3133 = load i32, ptr %386, align 4, !tbaa !5
  %3134 = call ptr @s2n_strerror_debug(i32 noundef %3133, ptr noundef nonnull @.str.4) #12
  %3135 = load i32, ptr %440, align 4, !tbaa !5
  %3136 = call ptr @strerror(i32 noundef %3135) #12
  %3137 = load i32, ptr %440, align 4, !tbaa !5
  %3138 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3129, ptr noundef nonnull %.str.5.sink1893, i32 noundef %3130, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 296, ptr noundef %3132, ptr noundef %3134, ptr noundef %3136, i32 noundef %3137) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3139:                                             ; preds = %3112
  %3140 = load i32, ptr @test_count, align 4, !tbaa !5
  %3141 = add nsw i32 %3140, 1
  store i32 %3141, ptr @test_count, align 4, !tbaa !5
  %3142 = load ptr, ptr %10, align 8, !tbaa !9
  %3143 = icmp eq ptr %3142, null
  br i1 %3143, label %3144, label %3166

3144:                                             ; preds = %3139
  %3145 = load i32, ptr %440, align 4, !tbaa !5
  %3146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3147 = call i32 @s2n_print_stacktrace(ptr noundef %3146) #12
  %3148 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3149 = trunc nuw i8 %3148 to i1
  br i1 %3149, label %3150, label %3154

3150:                                             ; preds = %3144
  %3151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3152 = call i32 @fileno(ptr noundef %3151) #12
  %3153 = call i32 @isatty(i32 noundef %3152) #12
  %.not783 = icmp eq i32 %3153, 0
  br i1 %.not783, label %3154, label %3155

3154:                                             ; preds = %3150, %3144
  br label %3155

3155:                                             ; preds = %3150, %3154
  %.str.5.sink1902 = phi ptr [ @.str.5, %3154 ], [ @.str.2, %3150 ]
  store i32 %3145, ptr %440, align 4, !tbaa !5
  %3156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3157 = load i32, ptr @test_count, align 4, !tbaa !5
  %3158 = load i32, ptr %386, align 4, !tbaa !5
  %3159 = call ptr @s2n_strerror(i32 noundef %3158, ptr noundef nonnull @.str.4) #12
  %3160 = load i32, ptr %386, align 4, !tbaa !5
  %3161 = call ptr @s2n_strerror_debug(i32 noundef %3160, ptr noundef nonnull @.str.4) #12
  %3162 = load i32, ptr %440, align 4, !tbaa !5
  %3163 = call ptr @strerror(i32 noundef %3162) #12
  %3164 = load i32, ptr %440, align 4, !tbaa !5
  %3165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3156, ptr noundef nonnull %.str.5.sink1902, i32 noundef %3157, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 297, ptr noundef %3159, ptr noundef %3161, ptr noundef %3163, i32 noundef %3164) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3166:                                             ; preds = %3139
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  store ptr null, ptr %11, align 8, !tbaa !9
  %3167 = add nsw i32 %3140, 2
  store i32 %3167, ptr @test_count, align 4, !tbaa !5
  %3168 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %3033, ptr noundef nonnull %11) #12
  %3169 = icmp eq i32 %3168, -1
  br i1 %3169, label %3170, label %3192

3170:                                             ; preds = %3166
  %3171 = load i32, ptr %440, align 4, !tbaa !5
  %3172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3173 = call i32 @s2n_print_stacktrace(ptr noundef %3172) #12
  %3174 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3175 = trunc nuw i8 %3174 to i1
  br i1 %3175, label %3176, label %3180

3176:                                             ; preds = %3170
  %3177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3178 = call i32 @fileno(ptr noundef %3177) #12
  %3179 = call i32 @isatty(i32 noundef %3178) #12
  %.not782 = icmp eq i32 %3179, 0
  br i1 %.not782, label %3180, label %3181

3180:                                             ; preds = %3176, %3170
  br label %3181

3181:                                             ; preds = %3176, %3180
  %.str.5.sink1911 = phi ptr [ @.str.5, %3180 ], [ @.str.2, %3176 ]
  store i32 %3171, ptr %440, align 4, !tbaa !5
  %3182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3183 = load i32, ptr @test_count, align 4, !tbaa !5
  %3184 = load i32, ptr %386, align 4, !tbaa !5
  %3185 = call ptr @s2n_strerror(i32 noundef %3184, ptr noundef nonnull @.str.4) #12
  %3186 = load i32, ptr %386, align 4, !tbaa !5
  %3187 = call ptr @s2n_strerror_debug(i32 noundef %3186, ptr noundef nonnull @.str.4) #12
  %3188 = load i32, ptr %440, align 4, !tbaa !5
  %3189 = call ptr @strerror(i32 noundef %3188) #12
  %3190 = load i32, ptr %440, align 4, !tbaa !5
  %3191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3182, ptr noundef nonnull %.str.5.sink1911, i32 noundef %3183, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 300, ptr noundef %3185, ptr noundef %3187, ptr noundef %3189, i32 noundef %3190) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3192:                                             ; preds = %3166
  %3193 = load i32, ptr @test_count, align 4, !tbaa !5
  %3194 = add nsw i32 %3193, 1
  store i32 %3194, ptr @test_count, align 4, !tbaa !5
  %3195 = load ptr, ptr %11, align 8, !tbaa !9
  %3196 = icmp eq ptr %3195, null
  br i1 %3196, label %3197, label %3219

3197:                                             ; preds = %3192
  %3198 = load i32, ptr %440, align 4, !tbaa !5
  %3199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3200 = call i32 @s2n_print_stacktrace(ptr noundef %3199) #12
  %3201 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3202 = trunc nuw i8 %3201 to i1
  br i1 %3202, label %3203, label %3207

3203:                                             ; preds = %3197
  %3204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3205 = call i32 @fileno(ptr noundef %3204) #12
  %3206 = call i32 @isatty(i32 noundef %3205) #12
  %.not781 = icmp eq i32 %3206, 0
  br i1 %.not781, label %3207, label %3208

3207:                                             ; preds = %3203, %3197
  br label %3208

3208:                                             ; preds = %3203, %3207
  %.str.5.sink1920 = phi ptr [ @.str.5, %3207 ], [ @.str.2, %3203 ]
  store i32 %3198, ptr %440, align 4, !tbaa !5
  %3209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3210 = load i32, ptr @test_count, align 4, !tbaa !5
  %3211 = load i32, ptr %386, align 4, !tbaa !5
  %3212 = call ptr @s2n_strerror(i32 noundef %3211, ptr noundef nonnull @.str.4) #12
  %3213 = load i32, ptr %386, align 4, !tbaa !5
  %3214 = call ptr @s2n_strerror_debug(i32 noundef %3213, ptr noundef nonnull @.str.4) #12
  %3215 = load i32, ptr %440, align 4, !tbaa !5
  %3216 = call ptr @strerror(i32 noundef %3215) #12
  %3217 = load i32, ptr %440, align 4, !tbaa !5
  %3218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3209, ptr noundef nonnull %.str.5.sink1920, i32 noundef %3210, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 301, ptr noundef %3212, ptr noundef %3214, ptr noundef %3216, i32 noundef %3217) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3219:                                             ; preds = %3192
  %3220 = add nsw i32 %3193, 2
  store i32 %3220, ptr @test_count, align 4, !tbaa !5
  %3221 = getelementptr inbounds i8, ptr %3033, i64 656
  %3222 = load ptr, ptr %3221, align 8, !tbaa !15
  %3223 = icmp eq ptr %3222, null
  br i1 %3223, label %3246, label %3224

3224:                                             ; preds = %3219
  %3225 = load i32, ptr %440, align 4, !tbaa !5
  %3226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3227 = call i32 @s2n_print_stacktrace(ptr noundef %3226) #12
  %3228 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3229 = trunc nuw i8 %3228 to i1
  br i1 %3229, label %3230, label %3234

3230:                                             ; preds = %3224
  %3231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3232 = call i32 @fileno(ptr noundef %3231) #12
  %3233 = call i32 @isatty(i32 noundef %3232) #12
  %.not718 = icmp eq i32 %3233, 0
  br i1 %.not718, label %3234, label %3235

3234:                                             ; preds = %3230, %3224
  br label %3235

3235:                                             ; preds = %3230, %3234
  %.str.5.sink1929 = phi ptr [ @.str.5, %3234 ], [ @.str.2, %3230 ]
  store i32 %3225, ptr %440, align 4, !tbaa !5
  %3236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3237 = load i32, ptr @test_count, align 4, !tbaa !5
  %3238 = load i32, ptr %386, align 4, !tbaa !5
  %3239 = call ptr @s2n_strerror(i32 noundef %3238, ptr noundef nonnull @.str.4) #12
  %3240 = load i32, ptr %386, align 4, !tbaa !5
  %3241 = call ptr @s2n_strerror_debug(i32 noundef %3240, ptr noundef nonnull @.str.4) #12
  %3242 = load i32, ptr %440, align 4, !tbaa !5
  %3243 = call ptr @strerror(i32 noundef %3242) #12
  %3244 = load i32, ptr %440, align 4, !tbaa !5
  %3245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3236, ptr noundef nonnull %.str.5.sink1929, i32 noundef %3237, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 304, ptr noundef %3239, ptr noundef %3241, ptr noundef %3243, i32 noundef %3244) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3246:                                             ; preds = %3219
  %3247 = getelementptr inbounds i8, ptr %3033, i64 720
  %3248 = getelementptr inbounds i8, ptr %3195, i64 24
  %3249 = load ptr, ptr %3248, align 8, !tbaa !48
  %3250 = load ptr, ptr %3249, align 8, !tbaa !9
  store ptr %3250, ptr %3247, align 8, !tbaa !50
  %3251 = getelementptr inbounds i8, ptr %3250, i64 24
  %3252 = load ptr, ptr %3251, align 8, !tbaa !51
  %3253 = getelementptr inbounds i8, ptr %3033, i64 728
  store ptr %3252, ptr %3253, align 8, !tbaa !53
  %3254 = getelementptr inbounds i8, ptr %3250, i64 16
  %3255 = load ptr, ptr %3254, align 8, !tbaa !54
  %3256 = getelementptr inbounds i8, ptr %3033, i64 816
  store ptr %3255, ptr %3256, align 8, !tbaa !55
  %3257 = add nsw i32 %3193, 3
  store i32 %3257, ptr @test_count, align 4, !tbaa !5
  %3258 = getelementptr inbounds i8, ptr %3033, i64 832
  %3259 = load ptr, ptr %3258, align 8, !tbaa !56
  %3260 = icmp eq ptr %3259, null
  br i1 %3260, label %3283, label %3261

3261:                                             ; preds = %3246
  %3262 = load i32, ptr %440, align 4, !tbaa !5
  %3263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3264 = call i32 @s2n_print_stacktrace(ptr noundef %3263) #12
  %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 = %3261
  %3268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3269 = call i32 @fileno(ptr noundef %3268) #12
  %3270 = call i32 @isatty(i32 noundef %3269) #12
  %.not719 = icmp eq i32 %3270, 0
  br i1 %.not719, label %3271, label %3272

3271:                                             ; preds = %3267, %3261
  br label %3272

3272:                                             ; preds = %3267, %3271
  %.str.5.sink1938 = phi ptr [ @.str.5, %3271 ], [ @.str.2, %3267 ]
  store i32 %3262, ptr %440, align 4, !tbaa !5
  %3273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3274 = load i32, ptr @test_count, align 4, !tbaa !5
  %3275 = load i32, ptr %386, align 4, !tbaa !5
  %3276 = call ptr @s2n_strerror(i32 noundef %3275, ptr noundef nonnull @.str.4) #12
  %3277 = load i32, ptr %386, align 4, !tbaa !5
  %3278 = call ptr @s2n_strerror_debug(i32 noundef %3277, ptr noundef nonnull @.str.4) #12
  %3279 = load i32, ptr %440, align 4, !tbaa !5
  %3280 = call ptr @strerror(i32 noundef %3279) #12
  %3281 = load i32, ptr %440, align 4, !tbaa !5
  %3282 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3273, ptr noundef nonnull %.str.5.sink1938, i32 noundef %3274, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 312, ptr noundef %3276, ptr noundef %3278, ptr noundef %3280, i32 noundef %3281) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3283:                                             ; preds = %3246
  %3284 = add nsw i32 %3193, 4
  store i32 %3284, ptr @test_count, align 4, !tbaa !5
  %3285 = getelementptr inbounds i8, ptr %3033, i64 840
  %3286 = load ptr, ptr %3285, align 8, !tbaa !57
  %3287 = icmp eq ptr %3286, null
  br i1 %3287, label %3310, label %3288

3288:                                             ; preds = %3283
  %3289 = load i32, ptr %440, align 4, !tbaa !5
  %3290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3291 = call i32 @s2n_print_stacktrace(ptr noundef %3290) #12
  %3292 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3293 = trunc nuw i8 %3292 to i1
  br i1 %3293, label %3294, label %3298

3294:                                             ; preds = %3288
  %3295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3296 = call i32 @fileno(ptr noundef %3295) #12
  %3297 = call i32 @isatty(i32 noundef %3296) #12
  %.not720 = icmp eq i32 %3297, 0
  br i1 %.not720, label %3298, label %3299

3298:                                             ; preds = %3294, %3288
  br label %3299

3299:                                             ; preds = %3294, %3298
  %.str.5.sink1947 = phi ptr [ @.str.5, %3298 ], [ @.str.2, %3294 ]
  store i32 %3289, ptr %440, align 4, !tbaa !5
  %3300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3301 = load i32, ptr @test_count, align 4, !tbaa !5
  %3302 = load i32, ptr %386, align 4, !tbaa !5
  %3303 = call ptr @s2n_strerror(i32 noundef %3302, ptr noundef nonnull @.str.4) #12
  %3304 = load i32, ptr %386, align 4, !tbaa !5
  %3305 = call ptr @s2n_strerror_debug(i32 noundef %3304, ptr noundef nonnull @.str.4) #12
  %3306 = load i32, ptr %440, align 4, !tbaa !5
  %3307 = call ptr @strerror(i32 noundef %3306) #12
  %3308 = load i32, ptr %440, align 4, !tbaa !5
  %3309 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3300, ptr noundef nonnull %.str.5.sink1947, i32 noundef %3301, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 313, ptr noundef %3303, ptr noundef %3305, ptr noundef %3307, i32 noundef %3308) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3310:                                             ; preds = %3283
  %3311 = add nsw i32 %3193, 5
  store i32 %3311, ptr @test_count, align 4, !tbaa !5
  %3312 = getelementptr inbounds i8, ptr %3033, i64 848
  %3313 = load ptr, ptr %3312, align 8, !tbaa !58
  %3314 = icmp eq ptr %3313, null
  br i1 %3314, label %3337, label %3315

3315:                                             ; preds = %3310
  %3316 = load i32, ptr %440, align 4, !tbaa !5
  %3317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3318 = call i32 @s2n_print_stacktrace(ptr noundef %3317) #12
  %3319 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3320 = trunc nuw i8 %3319 to i1
  br i1 %3320, label %3321, label %3325

3321:                                             ; preds = %3315
  %3322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3323 = call i32 @fileno(ptr noundef %3322) #12
  %3324 = call i32 @isatty(i32 noundef %3323) #12
  %.not721 = icmp eq i32 %3324, 0
  br i1 %.not721, label %3325, label %3326

3325:                                             ; preds = %3321, %3315
  br label %3326

3326:                                             ; preds = %3321, %3325
  %.str.5.sink1956 = phi ptr [ @.str.5, %3325 ], [ @.str.2, %3321 ]
  store i32 %3316, ptr %440, align 4, !tbaa !5
  %3327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3328 = load i32, ptr @test_count, align 4, !tbaa !5
  %3329 = load i32, ptr %386, align 4, !tbaa !5
  %3330 = call ptr @s2n_strerror(i32 noundef %3329, ptr noundef nonnull @.str.4) #12
  %3331 = load i32, ptr %386, align 4, !tbaa !5
  %3332 = call ptr @s2n_strerror_debug(i32 noundef %3331, ptr noundef nonnull @.str.4) #12
  %3333 = load i32, ptr %440, align 4, !tbaa !5
  %3334 = call ptr @strerror(i32 noundef %3333) #12
  %3335 = load i32, ptr %440, align 4, !tbaa !5
  %3336 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3327, ptr noundef nonnull %.str.5.sink1956, i32 noundef %3328, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 314, ptr noundef %3330, ptr noundef %3332, ptr noundef %3334, i32 noundef %3335) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3337:                                             ; preds = %3310
  %3338 = add nsw i32 %3193, 6
  store i32 %3338, ptr @test_count, align 4, !tbaa !5
  %3339 = getelementptr inbounds i8, ptr %3033, i64 928
  %3340 = load ptr, ptr %3339, align 8, !tbaa !59
  %3341 = icmp eq ptr %3340, null
  br i1 %3341, label %3364, label %3342

3342:                                             ; preds = %3337
  %3343 = load i32, ptr %440, align 4, !tbaa !5
  %3344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3345 = call i32 @s2n_print_stacktrace(ptr noundef %3344) #12
  %3346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3347 = trunc nuw i8 %3346 to i1
  br i1 %3347, label %3348, label %3352

3348:                                             ; preds = %3342
  %3349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3350 = call i32 @fileno(ptr noundef %3349) #12
  %3351 = call i32 @isatty(i32 noundef %3350) #12
  %.not722 = icmp eq i32 %3351, 0
  br i1 %.not722, label %3352, label %3353

3352:                                             ; preds = %3348, %3342
  br label %3353

3353:                                             ; preds = %3348, %3352
  %.str.5.sink1965 = phi ptr [ @.str.5, %3352 ], [ @.str.2, %3348 ]
  store i32 %3343, ptr %440, align 4, !tbaa !5
  %3354 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3355 = load i32, ptr @test_count, align 4, !tbaa !5
  %3356 = load i32, ptr %386, align 4, !tbaa !5
  %3357 = call ptr @s2n_strerror(i32 noundef %3356, ptr noundef nonnull @.str.4) #12
  %3358 = load i32, ptr %386, align 4, !tbaa !5
  %3359 = call ptr @s2n_strerror_debug(i32 noundef %3358, ptr noundef nonnull @.str.4) #12
  %3360 = load i32, ptr %440, align 4, !tbaa !5
  %3361 = call ptr @strerror(i32 noundef %3360) #12
  %3362 = load i32, ptr %440, align 4, !tbaa !5
  %3363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3354, ptr noundef nonnull %.str.5.sink1965, i32 noundef %3355, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 315, ptr noundef %3357, ptr noundef %3359, ptr noundef %3361, i32 noundef %3362) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3364:                                             ; preds = %3337
  %3365 = add nsw i32 %3193, 7
  store i32 %3365, ptr @test_count, align 4, !tbaa !5
  %3366 = getelementptr inbounds i8, ptr %3033, i64 936
  %3367 = load ptr, ptr %3366, align 8, !tbaa !60
  %3368 = icmp eq ptr %3367, null
  br i1 %3368, label %3391, label %3369

3369:                                             ; preds = %3364
  %3370 = load i32, ptr %440, align 4, !tbaa !5
  %3371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3372 = call i32 @s2n_print_stacktrace(ptr noundef %3371) #12
  %3373 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3374 = trunc nuw i8 %3373 to i1
  br i1 %3374, label %3375, label %3379

3375:                                             ; preds = %3369
  %3376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3377 = call i32 @fileno(ptr noundef %3376) #12
  %3378 = call i32 @isatty(i32 noundef %3377) #12
  %.not723 = icmp eq i32 %3378, 0
  br i1 %.not723, label %3379, label %3380

3379:                                             ; preds = %3375, %3369
  br label %3380

3380:                                             ; preds = %3375, %3379
  %.str.5.sink1974 = phi ptr [ @.str.5, %3379 ], [ @.str.2, %3375 ]
  store i32 %3370, ptr %440, align 4, !tbaa !5
  %3381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3382 = load i32, ptr @test_count, align 4, !tbaa !5
  %3383 = load i32, ptr %386, align 4, !tbaa !5
  %3384 = call ptr @s2n_strerror(i32 noundef %3383, ptr noundef nonnull @.str.4) #12
  %3385 = load i32, ptr %386, align 4, !tbaa !5
  %3386 = call ptr @s2n_strerror_debug(i32 noundef %3385, ptr noundef nonnull @.str.4) #12
  %3387 = load i32, ptr %440, align 4, !tbaa !5
  %3388 = call ptr @strerror(i32 noundef %3387) #12
  %3389 = load i32, ptr %440, align 4, !tbaa !5
  %3390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3381, ptr noundef nonnull %.str.5.sink1974, i32 noundef %3382, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 316, ptr noundef %3384, ptr noundef %3386, ptr noundef %3388, i32 noundef %3389) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3391:                                             ; preds = %3364
  %3392 = add nsw i32 %3193, 8
  store i32 %3392, ptr @test_count, align 4, !tbaa !5
  %3393 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %3033) #12
  %3394 = icmp eq i32 %3393, -1
  br i1 %3394, label %3395, label %3417

3395:                                             ; preds = %3391
  %3396 = load i32, ptr %440, align 4, !tbaa !5
  %3397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3398 = call i32 @s2n_print_stacktrace(ptr noundef %3397) #12
  %3399 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3400 = trunc nuw i8 %3399 to i1
  br i1 %3400, label %3401, label %3405

3401:                                             ; preds = %3395
  %3402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3403 = call i32 @fileno(ptr noundef %3402) #12
  %3404 = call i32 @isatty(i32 noundef %3403) #12
  %.not780 = icmp eq i32 %3404, 0
  br i1 %.not780, label %3405, label %3406

3405:                                             ; preds = %3401, %3395
  br label %3406

3406:                                             ; preds = %3401, %3405
  %.str.5.sink1983 = phi ptr [ @.str.5, %3405 ], [ @.str.2, %3401 ]
  store i32 %3396, ptr %440, align 4, !tbaa !5
  %3407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3408 = load i32, ptr @test_count, align 4, !tbaa !5
  %3409 = load i32, ptr %386, align 4, !tbaa !5
  %3410 = call ptr @s2n_strerror(i32 noundef %3409, ptr noundef nonnull @.str.4) #12
  %3411 = load i32, ptr %386, align 4, !tbaa !5
  %3412 = call ptr @s2n_strerror_debug(i32 noundef %3411, ptr noundef nonnull @.str.4) #12
  %3413 = load i32, ptr %440, align 4, !tbaa !5
  %3414 = call ptr @strerror(i32 noundef %3413) #12
  %3415 = load i32, ptr %440, align 4, !tbaa !5
  %3416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3407, ptr noundef nonnull %.str.5.sink1983, i32 noundef %3408, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 318, ptr noundef %3410, ptr noundef %3412, ptr noundef %3414, i32 noundef %3415) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3417:                                             ; preds = %3391
  %3418 = load i32, ptr @test_count, align 4, !tbaa !5
  %3419 = add nsw i32 %3418, 1
  store i32 %3419, ptr @test_count, align 4, !tbaa !5
  %3420 = load ptr, ptr %3247, align 8, !tbaa !50
  %3421 = icmp eq ptr %3420, %3250
  br i1 %3421, label %3444, label %3422

3422:                                             ; preds = %3417
  %3423 = load i32, ptr %440, align 4, !tbaa !5
  %3424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3425 = call i32 @s2n_print_stacktrace(ptr noundef %3424) #12
  %3426 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3427 = trunc nuw i8 %3426 to i1
  br i1 %3427, label %3428, label %3432

3428:                                             ; preds = %3422
  %3429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3430 = call i32 @fileno(ptr noundef %3429) #12
  %3431 = call i32 @isatty(i32 noundef %3430) #12
  %.not724 = icmp eq i32 %3431, 0
  br i1 %.not724, label %3432, label %3433

3432:                                             ; preds = %3428, %3422
  br label %3433

3433:                                             ; preds = %3428, %3432
  %.str.5.sink1992 = phi ptr [ @.str.5, %3432 ], [ @.str.2, %3428 ]
  store i32 %3423, ptr %440, align 4, !tbaa !5
  %3434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3435 = load i32, ptr @test_count, align 4, !tbaa !5
  %3436 = load i32, ptr %386, align 4, !tbaa !5
  %3437 = call ptr @s2n_strerror(i32 noundef %3436, ptr noundef nonnull @.str.4) #12
  %3438 = load i32, ptr %386, align 4, !tbaa !5
  %3439 = call ptr @s2n_strerror_debug(i32 noundef %3438, ptr noundef nonnull @.str.4) #12
  %3440 = load i32, ptr %440, align 4, !tbaa !5
  %3441 = call ptr @strerror(i32 noundef %3440) #12
  %3442 = load i32, ptr %440, align 4, !tbaa !5
  %3443 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3434, ptr noundef nonnull %.str.5.sink1992, i32 noundef %3435, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 321, ptr noundef %3437, ptr noundef %3439, ptr noundef %3441, i32 noundef %3442) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3444:                                             ; preds = %3417
  %3445 = add nsw i32 %3418, 2
  store i32 %3445, ptr @test_count, align 4, !tbaa !5
  %3446 = load ptr, ptr %3253, align 8, !tbaa !53
  %3447 = load ptr, ptr %3251, align 8, !tbaa !51
  %3448 = icmp eq ptr %3446, %3447
  br i1 %3448, label %3471, label %3449

3449:                                             ; preds = %3444
  %3450 = load i32, ptr %440, align 4, !tbaa !5
  %3451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3452 = call i32 @s2n_print_stacktrace(ptr noundef %3451) #12
  %3453 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3454 = trunc nuw i8 %3453 to i1
  br i1 %3454, label %3455, label %3459

3455:                                             ; preds = %3449
  %3456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3457 = call i32 @fileno(ptr noundef %3456) #12
  %3458 = call i32 @isatty(i32 noundef %3457) #12
  %.not725 = icmp eq i32 %3458, 0
  br i1 %.not725, label %3459, label %3460

3459:                                             ; preds = %3455, %3449
  br label %3460

3460:                                             ; preds = %3455, %3459
  %.str.5.sink2001 = phi ptr [ @.str.5, %3459 ], [ @.str.2, %3455 ]
  store i32 %3450, ptr %440, align 4, !tbaa !5
  %3461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3462 = load i32, ptr @test_count, align 4, !tbaa !5
  %3463 = load i32, ptr %386, align 4, !tbaa !5
  %3464 = call ptr @s2n_strerror(i32 noundef %3463, ptr noundef nonnull @.str.4) #12
  %3465 = load i32, ptr %386, align 4, !tbaa !5
  %3466 = call ptr @s2n_strerror_debug(i32 noundef %3465, ptr noundef nonnull @.str.4) #12
  %3467 = load i32, ptr %440, align 4, !tbaa !5
  %3468 = call ptr @strerror(i32 noundef %3467) #12
  %3469 = load i32, ptr %440, align 4, !tbaa !5
  %3470 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3461, ptr noundef nonnull %.str.5.sink2001, i32 noundef %3462, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 322, ptr noundef %3464, ptr noundef %3466, ptr noundef %3468, i32 noundef %3469) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3471:                                             ; preds = %3444
  %3472 = add nsw i32 %3418, 3
  store i32 %3472, ptr @test_count, align 4, !tbaa !5
  %3473 = load ptr, ptr %3256, align 8, !tbaa !55
  %3474 = load ptr, ptr %3254, align 8, !tbaa !54
  %3475 = icmp eq ptr %3473, %3474
  br i1 %3475, label %3498, label %3476

3476:                                             ; preds = %3471
  %3477 = load i32, ptr %440, align 4, !tbaa !5
  %3478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3479 = call i32 @s2n_print_stacktrace(ptr noundef %3478) #12
  %3480 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3481 = trunc nuw i8 %3480 to i1
  br i1 %3481, label %3482, label %3486

3482:                                             ; preds = %3476
  %3483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3484 = call i32 @fileno(ptr noundef %3483) #12
  %3485 = call i32 @isatty(i32 noundef %3484) #12
  %.not726 = icmp eq i32 %3485, 0
  br i1 %.not726, label %3486, label %3487

3486:                                             ; preds = %3482, %3476
  br label %3487

3487:                                             ; preds = %3482, %3486
  %.str.5.sink2010 = phi ptr [ @.str.5, %3486 ], [ @.str.2, %3482 ]
  store i32 %3477, ptr %440, align 4, !tbaa !5
  %3488 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3489 = load i32, ptr @test_count, align 4, !tbaa !5
  %3490 = load i32, ptr %386, align 4, !tbaa !5
  %3491 = call ptr @s2n_strerror(i32 noundef %3490, ptr noundef nonnull @.str.4) #12
  %3492 = load i32, ptr %386, align 4, !tbaa !5
  %3493 = call ptr @s2n_strerror_debug(i32 noundef %3492, ptr noundef nonnull @.str.4) #12
  %3494 = load i32, ptr %440, align 4, !tbaa !5
  %3495 = call ptr @strerror(i32 noundef %3494) #12
  %3496 = load i32, ptr %440, align 4, !tbaa !5
  %3497 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3488, ptr noundef nonnull %.str.5.sink2010, i32 noundef %3489, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 323, ptr noundef %3491, ptr noundef %3493, ptr noundef %3495, i32 noundef %3496) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3498:                                             ; preds = %3471
  %3499 = add nsw i32 %3418, 4
  store i32 %3499, ptr @test_count, align 4, !tbaa !5
  %3500 = load ptr, ptr %3258, align 8, !tbaa !56
  %3501 = icmp eq ptr %3500, null
  br i1 %3501, label %3524, label %3502

3502:                                             ; preds = %3498
  %3503 = load i32, ptr %440, align 4, !tbaa !5
  %3504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3505 = call i32 @s2n_print_stacktrace(ptr noundef %3504) #12
  %3506 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3507 = trunc nuw i8 %3506 to i1
  br i1 %3507, label %3508, label %3512

3508:                                             ; preds = %3502
  %3509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3510 = call i32 @fileno(ptr noundef %3509) #12
  %3511 = call i32 @isatty(i32 noundef %3510) #12
  %.not727 = icmp eq i32 %3511, 0
  br i1 %.not727, label %3512, label %3513

3512:                                             ; preds = %3508, %3502
  br label %3513

3513:                                             ; preds = %3508, %3512
  %.str.5.sink2019 = phi ptr [ @.str.5, %3512 ], [ @.str.2, %3508 ]
  store i32 %3503, ptr %440, align 4, !tbaa !5
  %3514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3515 = load i32, ptr @test_count, align 4, !tbaa !5
  %3516 = load i32, ptr %386, align 4, !tbaa !5
  %3517 = call ptr @s2n_strerror(i32 noundef %3516, ptr noundef nonnull @.str.4) #12
  %3518 = load i32, ptr %386, align 4, !tbaa !5
  %3519 = call ptr @s2n_strerror_debug(i32 noundef %3518, ptr noundef nonnull @.str.4) #12
  %3520 = load i32, ptr %440, align 4, !tbaa !5
  %3521 = call ptr @strerror(i32 noundef %3520) #12
  %3522 = load i32, ptr %440, align 4, !tbaa !5
  %3523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3514, ptr noundef nonnull %.str.5.sink2019, i32 noundef %3515, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 324, ptr noundef %3517, ptr noundef %3519, ptr noundef %3521, i32 noundef %3522) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3524:                                             ; preds = %3498
  %3525 = add nsw i32 %3418, 5
  store i32 %3525, ptr @test_count, align 4, !tbaa !5
  %3526 = load ptr, ptr %3221, align 8, !tbaa !15
  %3527 = icmp eq ptr %3526, null
  br i1 %3527, label %3550, label %3528

3528:                                             ; preds = %3524
  %3529 = load i32, ptr %440, align 4, !tbaa !5
  %3530 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3531 = call i32 @s2n_print_stacktrace(ptr noundef %3530) #12
  %3532 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3533 = trunc nuw i8 %3532 to i1
  br i1 %3533, label %3534, label %3538

3534:                                             ; preds = %3528
  %3535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3536 = call i32 @fileno(ptr noundef %3535) #12
  %3537 = call i32 @isatty(i32 noundef %3536) #12
  %.not728 = icmp eq i32 %3537, 0
  br i1 %.not728, label %3538, label %3539

3538:                                             ; preds = %3534, %3528
  br label %3539

3539:                                             ; preds = %3534, %3538
  %.str.5.sink2028 = phi ptr [ @.str.5, %3538 ], [ @.str.2, %3534 ]
  store i32 %3529, ptr %440, align 4, !tbaa !5
  %3540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3541 = load i32, ptr @test_count, align 4, !tbaa !5
  %3542 = load i32, ptr %386, align 4, !tbaa !5
  %3543 = call ptr @s2n_strerror(i32 noundef %3542, ptr noundef nonnull @.str.4) #12
  %3544 = load i32, ptr %386, align 4, !tbaa !5
  %3545 = call ptr @s2n_strerror_debug(i32 noundef %3544, ptr noundef nonnull @.str.4) #12
  %3546 = load i32, ptr %440, align 4, !tbaa !5
  %3547 = call ptr @strerror(i32 noundef %3546) #12
  %3548 = load i32, ptr %440, align 4, !tbaa !5
  %3549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3540, ptr noundef nonnull %.str.5.sink2028, i32 noundef %3541, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 325, ptr noundef %3543, ptr noundef %3545, ptr noundef %3547, i32 noundef %3548) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3550:                                             ; preds = %3524
  %3551 = add nsw i32 %3418, 6
  store i32 %3551, ptr @test_count, align 4, !tbaa !5
  %3552 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %3033) #12
  br i1 %3552, label %3575, label %3553

3553:                                             ; preds = %3550
  %3554 = load i32, ptr %440, align 4, !tbaa !5
  %3555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3556 = call i32 @s2n_print_stacktrace(ptr noundef %3555) #12
  %3557 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3558 = trunc nuw i8 %3557 to i1
  br i1 %3558, label %3559, label %3563

3559:                                             ; preds = %3553
  %3560 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3561 = call i32 @fileno(ptr noundef %3560) #12
  %3562 = call i32 @isatty(i32 noundef %3561) #12
  %.not729 = icmp eq i32 %3562, 0
  br i1 %.not729, label %3563, label %3564

3563:                                             ; preds = %3559, %3553
  br label %3564

3564:                                             ; preds = %3559, %3563
  %.str.5.sink2037 = phi ptr [ @.str.5, %3563 ], [ @.str.2, %3559 ]
  store i32 %3554, ptr %440, align 4, !tbaa !5
  %3565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3566 = load i32, ptr @test_count, align 4, !tbaa !5
  %3567 = load i32, ptr %386, align 4, !tbaa !5
  %3568 = call ptr @s2n_strerror(i32 noundef %3567, ptr noundef nonnull @.str.4) #12
  %3569 = load i32, ptr %386, align 4, !tbaa !5
  %3570 = call ptr @s2n_strerror_debug(i32 noundef %3569, ptr noundef nonnull @.str.4) #12
  %3571 = load i32, ptr %440, align 4, !tbaa !5
  %3572 = call ptr @strerror(i32 noundef %3571) #12
  %3573 = load i32, ptr %440, align 4, !tbaa !5
  %3574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3565, ptr noundef nonnull %.str.5.sink2037, i32 noundef %3566, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 326, ptr noundef %3568, ptr noundef %3570, ptr noundef %3572, i32 noundef %3573) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3575:                                             ; preds = %3550
  %3576 = load i32, ptr @test_count, align 4, !tbaa !5
  %3577 = add nsw i32 %3576, 1
  store i32 %3577, ptr @test_count, align 4, !tbaa !5
  %3578 = call i32 @s2n_connection_free(ptr noundef nonnull %3033) #12
  %3579 = icmp eq i32 %3578, -1
  br i1 %3579, label %3580, label %3602

3580:                                             ; preds = %3575
  %3581 = load i32, ptr %440, align 4, !tbaa !5
  %3582 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3583 = call i32 @s2n_print_stacktrace(ptr noundef %3582) #12
  %3584 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3585 = trunc nuw i8 %3584 to i1
  br i1 %3585, label %3586, label %3590

3586:                                             ; preds = %3580
  %3587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3588 = call i32 @fileno(ptr noundef %3587) #12
  %3589 = call i32 @isatty(i32 noundef %3588) #12
  %.not779 = icmp eq i32 %3589, 0
  br i1 %.not779, label %3590, label %3591

3590:                                             ; preds = %3586, %3580
  br label %3591

3591:                                             ; preds = %3586, %3590
  %.str.5.sink2046 = phi ptr [ @.str.5, %3590 ], [ @.str.2, %3586 ]
  store i32 %3581, ptr %440, align 4, !tbaa !5
  %3592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3593 = load i32, ptr @test_count, align 4, !tbaa !5
  %3594 = load i32, ptr %386, align 4, !tbaa !5
  %3595 = call ptr @s2n_strerror(i32 noundef %3594, ptr noundef nonnull @.str.4) #12
  %3596 = load i32, ptr %386, align 4, !tbaa !5
  %3597 = call ptr @s2n_strerror_debug(i32 noundef %3596, ptr noundef nonnull @.str.4) #12
  %3598 = load i32, ptr %440, align 4, !tbaa !5
  %3599 = call ptr @strerror(i32 noundef %3598) #12
  %3600 = load i32, ptr %440, align 4, !tbaa !5
  %3601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3592, ptr noundef nonnull %.str.5.sink2046, i32 noundef %3593, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 328, ptr noundef %3595, ptr noundef %3597, ptr noundef %3599, i32 noundef %3600) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3602:                                             ; preds = %3575
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  %3603 = load i32, ptr @test_count, align 4, !tbaa !5
  %3604 = add nsw i32 %3603, 1
  store i32 %3604, ptr @test_count, align 4, !tbaa !5
  %3605 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %3606 = icmp eq ptr %3605, null
  br i1 %3606, label %3607, label %3629

3607:                                             ; preds = %3602
  %3608 = load i32, ptr %440, align 4, !tbaa !5
  %3609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3610 = call i32 @s2n_print_stacktrace(ptr noundef %3609) #12
  %3611 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3612 = trunc nuw i8 %3611 to i1
  br i1 %3612, label %3613, label %3617

3613:                                             ; preds = %3607
  %3614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3615 = call i32 @fileno(ptr noundef %3614) #12
  %3616 = call i32 @isatty(i32 noundef %3615) #12
  %.not778 = icmp eq i32 %3616, 0
  br i1 %.not778, label %3617, label %3618

3617:                                             ; preds = %3613, %3607
  br label %3618

3618:                                             ; preds = %3613, %3617
  %.str.5.sink2055 = phi ptr [ @.str.5, %3617 ], [ @.str.2, %3613 ]
  store i32 %3608, ptr %440, align 4, !tbaa !5
  %3619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3620 = load i32, ptr @test_count, align 4, !tbaa !5
  %3621 = load i32, ptr %386, align 4, !tbaa !5
  %3622 = call ptr @s2n_strerror(i32 noundef %3621, ptr noundef nonnull @.str.4) #12
  %3623 = load i32, ptr %386, align 4, !tbaa !5
  %3624 = call ptr @s2n_strerror_debug(i32 noundef %3623, ptr noundef nonnull @.str.4) #12
  %3625 = load i32, ptr %440, align 4, !tbaa !5
  %3626 = call ptr @strerror(i32 noundef %3625) #12
  %3627 = load i32, ptr %440, align 4, !tbaa !5
  %3628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3619, ptr noundef nonnull %.str.5.sink2055, i32 noundef %3620, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 335, ptr noundef %3622, ptr noundef %3624, ptr noundef %3626, i32 noundef %3627) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3629:                                             ; preds = %3602
  %3630 = getelementptr inbounds i8, ptr %3605, i64 16
  store ptr %4, ptr %3630, align 8, !tbaa !47
  %3631 = load i32, ptr @test_count, align 4, !tbaa !5
  %3632 = add nsw i32 %3631, 1
  store i32 %3632, ptr @test_count, align 4, !tbaa !5
  %3633 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %3605, i8 noundef zeroext 34) #12
  %3634 = icmp eq i32 %3633, -1
  br i1 %3634, label %3635, label %3657

3635:                                             ; preds = %3629
  %3636 = load i32, ptr %440, align 4, !tbaa !5
  %3637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3638 = call i32 @s2n_print_stacktrace(ptr noundef %3637) #12
  %3639 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3640 = trunc nuw i8 %3639 to i1
  br i1 %3640, label %3641, label %3645

3641:                                             ; preds = %3635
  %3642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3643 = call i32 @fileno(ptr noundef %3642) #12
  %3644 = call i32 @isatty(i32 noundef %3643) #12
  %.not777 = icmp eq i32 %3644, 0
  br i1 %.not777, label %3645, label %3646

3645:                                             ; preds = %3641, %3635
  br label %3646

3646:                                             ; preds = %3641, %3645
  %.str.5.sink2064 = phi ptr [ @.str.5, %3645 ], [ @.str.2, %3641 ]
  store i32 %3636, ptr %440, align 4, !tbaa !5
  %3647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3648 = load i32, ptr @test_count, align 4, !tbaa !5
  %3649 = load i32, ptr %386, align 4, !tbaa !5
  %3650 = call ptr @s2n_strerror(i32 noundef %3649, ptr noundef nonnull @.str.4) #12
  %3651 = load i32, ptr %386, align 4, !tbaa !5
  %3652 = call ptr @s2n_strerror_debug(i32 noundef %3651, ptr noundef nonnull @.str.4) #12
  %3653 = load i32, ptr %440, align 4, !tbaa !5
  %3654 = call ptr @strerror(i32 noundef %3653) #12
  %3655 = load i32, ptr %440, align 4, !tbaa !5
  %3656 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3647, ptr noundef nonnull %.str.5.sink2064, i32 noundef %3648, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 337, ptr noundef %3650, ptr noundef %3652, ptr noundef %3654, i32 noundef %3655) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3657:                                             ; preds = %3629
  %3658 = load i32, ptr @test_count, align 4, !tbaa !5
  %3659 = add nsw i32 %3658, 1
  store i32 %3659, ptr @test_count, align 4, !tbaa !5
  %3660 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef nonnull %3605) #12
  %3661 = call zeroext i1 @s2n_result_is_ok(i32 %3660)
  br i1 %3661, label %3684, label %3662

3662:                                             ; preds = %3657
  %3663 = load i32, ptr %440, align 4, !tbaa !5
  %3664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3665 = call i32 @s2n_print_stacktrace(ptr noundef %3664) #12
  %3666 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3667 = trunc nuw i8 %3666 to i1
  br i1 %3667, label %3668, label %3672

3668:                                             ; preds = %3662
  %3669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3670 = call i32 @fileno(ptr noundef %3669) #12
  %3671 = call i32 @isatty(i32 noundef %3670) #12
  %.not730 = icmp eq i32 %3671, 0
  br i1 %.not730, label %3672, label %3673

3672:                                             ; preds = %3668, %3662
  br label %3673

3673:                                             ; preds = %3668, %3672
  %.str.5.sink2073 = phi ptr [ @.str.5, %3672 ], [ @.str.2, %3668 ]
  store i32 %3663, ptr %440, align 4, !tbaa !5
  %3674 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3675 = load i32, ptr @test_count, align 4, !tbaa !5
  %3676 = load i32, ptr %386, align 4, !tbaa !5
  %3677 = call ptr @s2n_strerror(i32 noundef %3676, ptr noundef nonnull @.str.4) #12
  %3678 = load i32, ptr %386, align 4, !tbaa !5
  %3679 = call ptr @s2n_strerror_debug(i32 noundef %3678, ptr noundef nonnull @.str.4) #12
  %3680 = load i32, ptr %440, align 4, !tbaa !5
  %3681 = call ptr @strerror(i32 noundef %3680) #12
  %3682 = load i32, ptr %440, align 4, !tbaa !5
  %3683 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3674, ptr noundef nonnull %.str.5.sink2073, i32 noundef %3675, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 338, ptr noundef %3677, ptr noundef %3679, ptr noundef %3681, i32 noundef %3682) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3684:                                             ; preds = %3657
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  store ptr null, ptr %12, align 8, !tbaa !9
  %3685 = load i32, ptr @test_count, align 4, !tbaa !5
  %3686 = add nsw i32 %3685, 1
  store i32 %3686, ptr @test_count, align 4, !tbaa !5
  %3687 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %3605, ptr noundef nonnull %12) #12
  %3688 = icmp eq i32 %3687, -1
  br i1 %3688, label %3689, label %3711

3689:                                             ; preds = %3684
  %3690 = load i32, ptr %440, align 4, !tbaa !5
  %3691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3692 = call i32 @s2n_print_stacktrace(ptr noundef %3691) #12
  %3693 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3694 = trunc nuw i8 %3693 to i1
  br i1 %3694, label %3695, label %3699

3695:                                             ; preds = %3689
  %3696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3697 = call i32 @fileno(ptr noundef %3696) #12
  %3698 = call i32 @isatty(i32 noundef %3697) #12
  %.not776 = icmp eq i32 %3698, 0
  br i1 %.not776, label %3699, label %3700

3699:                                             ; preds = %3695, %3689
  br label %3700

3700:                                             ; preds = %3695, %3699
  %.str.5.sink2082 = phi ptr [ @.str.5, %3699 ], [ @.str.2, %3695 ]
  store i32 %3690, ptr %440, align 4, !tbaa !5
  %3701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3702 = load i32, ptr @test_count, align 4, !tbaa !5
  %3703 = load i32, ptr %386, align 4, !tbaa !5
  %3704 = call ptr @s2n_strerror(i32 noundef %3703, ptr noundef nonnull @.str.4) #12
  %3705 = load i32, ptr %386, align 4, !tbaa !5
  %3706 = call ptr @s2n_strerror_debug(i32 noundef %3705, ptr noundef nonnull @.str.4) #12
  %3707 = load i32, ptr %440, align 4, !tbaa !5
  %3708 = call ptr @strerror(i32 noundef %3707) #12
  %3709 = load i32, ptr %440, align 4, !tbaa !5
  %3710 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3701, ptr noundef nonnull %.str.5.sink2082, i32 noundef %3702, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 341, ptr noundef %3704, ptr noundef %3706, ptr noundef %3708, i32 noundef %3709) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3711:                                             ; preds = %3684
  %3712 = load i32, ptr @test_count, align 4, !tbaa !5
  %3713 = add nsw i32 %3712, 1
  store i32 %3713, ptr @test_count, align 4, !tbaa !5
  %3714 = load ptr, ptr %12, align 8, !tbaa !9
  %3715 = icmp eq ptr %3714, null
  br i1 %3715, label %3716, label %3738

3716:                                             ; preds = %3711
  %3717 = load i32, ptr %440, align 4, !tbaa !5
  %3718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3719 = call i32 @s2n_print_stacktrace(ptr noundef %3718) #12
  %3720 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3721 = trunc nuw i8 %3720 to i1
  br i1 %3721, label %3722, label %3726

3722:                                             ; preds = %3716
  %3723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3724 = call i32 @fileno(ptr noundef %3723) #12
  %3725 = call i32 @isatty(i32 noundef %3724) #12
  %.not775 = icmp eq i32 %3725, 0
  br i1 %.not775, label %3726, label %3727

3726:                                             ; preds = %3722, %3716
  br label %3727

3727:                                             ; preds = %3722, %3726
  %.str.5.sink2091 = phi ptr [ @.str.5, %3726 ], [ @.str.2, %3722 ]
  store i32 %3717, ptr %440, align 4, !tbaa !5
  %3728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3729 = load i32, ptr @test_count, align 4, !tbaa !5
  %3730 = load i32, ptr %386, align 4, !tbaa !5
  %3731 = call ptr @s2n_strerror(i32 noundef %3730, ptr noundef nonnull @.str.4) #12
  %3732 = load i32, ptr %386, align 4, !tbaa !5
  %3733 = call ptr @s2n_strerror_debug(i32 noundef %3732, ptr noundef nonnull @.str.4) #12
  %3734 = load i32, ptr %440, align 4, !tbaa !5
  %3735 = call ptr @strerror(i32 noundef %3734) #12
  %3736 = load i32, ptr %440, align 4, !tbaa !5
  %3737 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3728, ptr noundef nonnull %.str.5.sink2091, i32 noundef %3729, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 342, ptr noundef %3731, ptr noundef %3733, ptr noundef %3735, i32 noundef %3736) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3738:                                             ; preds = %3711
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  store ptr null, ptr %13, align 8, !tbaa !9
  %3739 = add nsw i32 %3712, 2
  store i32 %3739, ptr @test_count, align 4, !tbaa !5
  %3740 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %3605, ptr noundef nonnull %13) #12
  %3741 = icmp eq i32 %3740, -1
  br i1 %3741, label %3742, label %3764

3742:                                             ; preds = %3738
  %3743 = load i32, ptr %440, align 4, !tbaa !5
  %3744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3745 = call i32 @s2n_print_stacktrace(ptr noundef %3744) #12
  %3746 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3747 = trunc nuw i8 %3746 to i1
  br i1 %3747, label %3748, label %3752

3748:                                             ; preds = %3742
  %3749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3750 = call i32 @fileno(ptr noundef %3749) #12
  %3751 = call i32 @isatty(i32 noundef %3750) #12
  %.not774 = icmp eq i32 %3751, 0
  br i1 %.not774, label %3752, label %3753

3752:                                             ; preds = %3748, %3742
  br label %3753

3753:                                             ; preds = %3748, %3752
  %.str.5.sink2100 = phi ptr [ @.str.5, %3752 ], [ @.str.2, %3748 ]
  store i32 %3743, ptr %440, align 4, !tbaa !5
  %3754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3755 = load i32, ptr @test_count, align 4, !tbaa !5
  %3756 = load i32, ptr %386, align 4, !tbaa !5
  %3757 = call ptr @s2n_strerror(i32 noundef %3756, ptr noundef nonnull @.str.4) #12
  %3758 = load i32, ptr %386, align 4, !tbaa !5
  %3759 = call ptr @s2n_strerror_debug(i32 noundef %3758, ptr noundef nonnull @.str.4) #12
  %3760 = load i32, ptr %440, align 4, !tbaa !5
  %3761 = call ptr @strerror(i32 noundef %3760) #12
  %3762 = load i32, ptr %440, align 4, !tbaa !5
  %3763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3754, ptr noundef nonnull %.str.5.sink2100, i32 noundef %3755, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 345, ptr noundef %3757, ptr noundef %3759, ptr noundef %3761, i32 noundef %3762) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3764:                                             ; preds = %3738
  %3765 = load i32, ptr @test_count, align 4, !tbaa !5
  %3766 = add nsw i32 %3765, 1
  store i32 %3766, ptr @test_count, align 4, !tbaa !5
  %3767 = load ptr, ptr %13, align 8, !tbaa !9
  %3768 = icmp eq ptr %3767, null
  br i1 %3768, label %3769, label %3791

3769:                                             ; preds = %3764
  %3770 = load i32, ptr %440, align 4, !tbaa !5
  %3771 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3772 = call i32 @s2n_print_stacktrace(ptr noundef %3771) #12
  %3773 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3774 = trunc nuw i8 %3773 to i1
  br i1 %3774, label %3775, label %3779

3775:                                             ; preds = %3769
  %3776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3777 = call i32 @fileno(ptr noundef %3776) #12
  %3778 = call i32 @isatty(i32 noundef %3777) #12
  %.not773 = icmp eq i32 %3778, 0
  br i1 %.not773, label %3779, label %3780

3779:                                             ; preds = %3775, %3769
  br label %3780

3780:                                             ; preds = %3775, %3779
  %.str.5.sink2109 = phi ptr [ @.str.5, %3779 ], [ @.str.2, %3775 ]
  store i32 %3770, ptr %440, align 4, !tbaa !5
  %3781 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3782 = load i32, ptr @test_count, align 4, !tbaa !5
  %3783 = load i32, ptr %386, align 4, !tbaa !5
  %3784 = call ptr @s2n_strerror(i32 noundef %3783, ptr noundef nonnull @.str.4) #12
  %3785 = load i32, ptr %386, align 4, !tbaa !5
  %3786 = call ptr @s2n_strerror_debug(i32 noundef %3785, ptr noundef nonnull @.str.4) #12
  %3787 = load i32, ptr %440, align 4, !tbaa !5
  %3788 = call ptr @strerror(i32 noundef %3787) #12
  %3789 = load i32, ptr %440, align 4, !tbaa !5
  %3790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3781, ptr noundef nonnull %.str.5.sink2109, i32 noundef %3782, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 346, ptr noundef %3784, ptr noundef %3786, ptr noundef %3788, i32 noundef %3789) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3791:                                             ; preds = %3764
  %3792 = add nsw i32 %3765, 2
  store i32 %3792, ptr @test_count, align 4, !tbaa !5
  %3793 = getelementptr inbounds i8, ptr %3605, i64 656
  %3794 = load ptr, ptr %3793, align 8, !tbaa !15
  %3795 = icmp eq ptr %3794, null
  br i1 %3795, label %3818, label %3796

3796:                                             ; preds = %3791
  %3797 = load i32, ptr %440, align 4, !tbaa !5
  %3798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3799 = call i32 @s2n_print_stacktrace(ptr noundef %3798) #12
  %3800 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3801 = trunc nuw i8 %3800 to i1
  br i1 %3801, label %3802, label %3806

3802:                                             ; preds = %3796
  %3803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3804 = call i32 @fileno(ptr noundef %3803) #12
  %3805 = call i32 @isatty(i32 noundef %3804) #12
  %.not731 = icmp eq i32 %3805, 0
  br i1 %.not731, label %3806, label %3807

3806:                                             ; preds = %3802, %3796
  br label %3807

3807:                                             ; preds = %3802, %3806
  %.str.5.sink2118 = phi ptr [ @.str.5, %3806 ], [ @.str.2, %3802 ]
  store i32 %3797, ptr %440, align 4, !tbaa !5
  %3808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3809 = load i32, ptr @test_count, align 4, !tbaa !5
  %3810 = load i32, ptr %386, align 4, !tbaa !5
  %3811 = call ptr @s2n_strerror(i32 noundef %3810, ptr noundef nonnull @.str.4) #12
  %3812 = load i32, ptr %386, align 4, !tbaa !5
  %3813 = call ptr @s2n_strerror_debug(i32 noundef %3812, ptr noundef nonnull @.str.4) #12
  %3814 = load i32, ptr %440, align 4, !tbaa !5
  %3815 = call ptr @strerror(i32 noundef %3814) #12
  %3816 = load i32, ptr %440, align 4, !tbaa !5
  %3817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3808, ptr noundef nonnull %.str.5.sink2118, i32 noundef %3809, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 349, ptr noundef %3811, ptr noundef %3813, ptr noundef %3815, i32 noundef %3816) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3818:                                             ; preds = %3791
  %3819 = getelementptr inbounds i8, ptr %3605, i64 720
  %3820 = getelementptr inbounds i8, ptr %3767, i64 24
  %3821 = load ptr, ptr %3820, align 8, !tbaa !48
  %3822 = load ptr, ptr %3821, align 8, !tbaa !9
  store ptr %3822, ptr %3819, align 8, !tbaa !50
  %3823 = getelementptr inbounds i8, ptr %3822, i64 24
  %3824 = load ptr, ptr %3823, align 8, !tbaa !51
  %3825 = getelementptr inbounds i8, ptr %3605, i64 728
  store ptr %3824, ptr %3825, align 8, !tbaa !53
  %3826 = getelementptr inbounds i8, ptr %3822, i64 16
  %3827 = load ptr, ptr %3826, align 8, !tbaa !54
  %3828 = getelementptr inbounds i8, ptr %3605, i64 816
  store ptr %3827, ptr %3828, align 8, !tbaa !55
  %3829 = getelementptr inbounds i8, ptr %3605, i64 832
  %3830 = load ptr, ptr %3821, align 8, !tbaa !9
  store ptr %3830, ptr %3829, align 8, !tbaa !50
  %3831 = getelementptr inbounds i8, ptr %3830, i64 24
  %3832 = load ptr, ptr %3831, align 8, !tbaa !51
  %3833 = getelementptr inbounds i8, ptr %3605, i64 840
  store ptr %3832, ptr %3833, align 8, !tbaa !53
  %3834 = getelementptr inbounds i8, ptr %3830, i64 16
  %3835 = load ptr, ptr %3834, align 8, !tbaa !54
  %3836 = getelementptr inbounds i8, ptr %3605, i64 928
  store ptr %3835, ptr %3836, align 8, !tbaa !55
  %3837 = add nsw i32 %3765, 3
  store i32 %3837, ptr @test_count, align 4, !tbaa !5
  %3838 = getelementptr inbounds i8, ptr %3605, i64 848
  %3839 = getelementptr inbounds i8, ptr %3832, i64 14
  %3840 = load i16, ptr %3839, align 2, !tbaa !61
  %3841 = zext i16 %3840 to i32
  %3842 = call i32 @s2n_alloc(ptr noundef nonnull %3838, i32 noundef %3841) #12
  %3843 = icmp eq i32 %3842, -1
  br i1 %3843, label %3844, label %3866

3844:                                             ; preds = %3818
  %3845 = load i32, ptr %440, align 4, !tbaa !5
  %3846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3847 = call i32 @s2n_print_stacktrace(ptr noundef %3846) #12
  %3848 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3849 = trunc nuw i8 %3848 to i1
  br i1 %3849, label %3850, label %3854

3850:                                             ; preds = %3844
  %3851 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3852 = call i32 @fileno(ptr noundef %3851) #12
  %3853 = call i32 @isatty(i32 noundef %3852) #12
  %.not772 = icmp eq i32 %3853, 0
  br i1 %.not772, label %3854, label %3855

3854:                                             ; preds = %3850, %3844
  br label %3855

3855:                                             ; preds = %3850, %3854
  %.str.5.sink2127 = phi ptr [ @.str.5, %3854 ], [ @.str.2, %3850 ]
  store i32 %3845, ptr %440, align 4, !tbaa !5
  %3856 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3857 = load i32, ptr @test_count, align 4, !tbaa !5
  %3858 = load i32, ptr %386, align 4, !tbaa !5
  %3859 = call ptr @s2n_strerror(i32 noundef %3858, ptr noundef nonnull @.str.4) #12
  %3860 = load i32, ptr %386, align 4, !tbaa !5
  %3861 = call ptr @s2n_strerror_debug(i32 noundef %3860, ptr noundef nonnull @.str.4) #12
  %3862 = load i32, ptr %440, align 4, !tbaa !5
  %3863 = call ptr @strerror(i32 noundef %3862) #12
  %3864 = load i32, ptr %440, align 4, !tbaa !5
  %3865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3856, ptr noundef nonnull %.str.5.sink2127, i32 noundef %3857, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 362, ptr noundef %3859, ptr noundef %3861, ptr noundef %3863, i32 noundef %3864) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3866:                                             ; preds = %3818
  %3867 = load ptr, ptr %3831, align 8, !tbaa !51
  %3868 = getelementptr inbounds i8, ptr %3867, i64 14
  %3869 = load i16, ptr %3868, align 2, !tbaa !61
  %.not732 = icmp eq i16 %3869, 0
  br i1 %.not732, label %.thread869, label %3870, !prof !63

3870:                                             ; preds = %3866
  %3871 = load ptr, ptr %3838, align 8, !tbaa !64
  %.not733.not = icmp eq ptr %3871, null
  br i1 %.not733.not, label %.critedge851, label %.thread874

.thread874:                                       ; preds = %3870
  %3872 = zext i16 %3869 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %3871, i8 1, i64 %3872, i1 false)
  br label %.thread869

.thread869:                                       ; preds = %3866, %.thread874
  %3873 = load i32, ptr @test_count, align 4, !tbaa !5
  %3874 = add nsw i32 %3873, 1
  store i32 %3874, ptr @test_count, align 4, !tbaa !5
  %3875 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef nonnull %3836) #12
  %3876 = icmp eq i32 %3875, -1
  br i1 %3876, label %3877, label %3899

3877:                                             ; preds = %.thread869
  %3878 = load i32, ptr %440, align 4, !tbaa !5
  %3879 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3880 = call i32 @s2n_print_stacktrace(ptr noundef %3879) #12
  %3881 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3882 = trunc nuw i8 %3881 to i1
  br i1 %3882, label %3883, label %3887

3883:                                             ; preds = %3877
  %3884 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3885 = call i32 @fileno(ptr noundef %3884) #12
  %3886 = call i32 @isatty(i32 noundef %3885) #12
  %.not771 = icmp eq i32 %3886, 0
  br i1 %.not771, label %3887, label %3888

3887:                                             ; preds = %3883, %3877
  br label %3888

3888:                                             ; preds = %3883, %3887
  %.str.5.sink2136 = phi ptr [ @.str.5, %3887 ], [ @.str.2, %3883 ]
  store i32 %3878, ptr %440, align 4, !tbaa !5
  %3889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3890 = load i32, ptr @test_count, align 4, !tbaa !5
  %3891 = load i32, ptr %386, align 4, !tbaa !5
  %3892 = call ptr @s2n_strerror(i32 noundef %3891, ptr noundef nonnull @.str.4) #12
  %3893 = load i32, ptr %386, align 4, !tbaa !5
  %3894 = call ptr @s2n_strerror_debug(i32 noundef %3893, ptr noundef nonnull @.str.4) #12
  %3895 = load i32, ptr %440, align 4, !tbaa !5
  %3896 = call ptr @strerror(i32 noundef %3895) #12
  %3897 = load i32, ptr %440, align 4, !tbaa !5
  %3898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3889, ptr noundef nonnull %.str.5.sink2136, i32 noundef %3890, ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 365, ptr noundef %3892, ptr noundef %3894, ptr noundef %3896, i32 noundef %3897) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3899:                                             ; preds = %.thread869
  %3900 = getelementptr inbounds i8, ptr %3605, i64 704
  %3901 = load ptr, ptr %12, align 8, !tbaa !9
  %3902 = getelementptr inbounds i8, ptr %3901, i64 8
  %3903 = load ptr, ptr %3902, align 8, !tbaa !43
  %3904 = load ptr, ptr %3903, align 8, !tbaa !9
  store ptr %3904, ptr %3900, align 8, !tbaa !65
  %3905 = load i32, ptr @test_count, align 4, !tbaa !5
  %3906 = add nsw i32 %3905, 1
  store i32 %3906, ptr @test_count, align 4, !tbaa !5
  %3907 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef nonnull %3900) #12
  %3908 = icmp eq i32 %3907, -1
  br i1 %3908, label %3909, label %3931

3909:                                             ; preds = %3899
  %3910 = load i32, ptr %440, align 4, !tbaa !5
  %3911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3912 = call i32 @s2n_print_stacktrace(ptr noundef %3911) #12
  %3913 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3914 = trunc nuw i8 %3913 to i1
  br i1 %3914, label %3915, label %3919

3915:                                             ; preds = %3909
  %3916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3917 = call i32 @fileno(ptr noundef %3916) #12
  %3918 = call i32 @isatty(i32 noundef %3917) #12
  %.not770 = icmp eq i32 %3918, 0
  br i1 %.not770, label %3919, label %3920

3919:                                             ; preds = %3915, %3909
  br label %3920

3920:                                             ; preds = %3915, %3919
  %.str.5.sink2145 = phi ptr [ @.str.5, %3919 ], [ @.str.2, %3915 ]
  store i32 %3910, ptr %440, align 4, !tbaa !5
  %3921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3922 = load i32, ptr @test_count, align 4, !tbaa !5
  %3923 = load i32, ptr %386, align 4, !tbaa !5
  %3924 = call ptr @s2n_strerror(i32 noundef %3923, ptr noundef nonnull @.str.4) #12
  %3925 = load i32, ptr %386, align 4, !tbaa !5
  %3926 = call ptr @s2n_strerror_debug(i32 noundef %3925, ptr noundef nonnull @.str.4) #12
  %3927 = load i32, ptr %440, align 4, !tbaa !5
  %3928 = call ptr @strerror(i32 noundef %3927) #12
  %3929 = load i32, ptr %440, align 4, !tbaa !5
  %3930 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3921, ptr noundef nonnull %.str.5.sink2145, i32 noundef %3922, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 370, ptr noundef %3924, ptr noundef %3926, ptr noundef %3928, i32 noundef %3929) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3931:                                             ; preds = %3899
  %3932 = load i32, ptr @test_count, align 4, !tbaa !5
  %3933 = add nsw i32 %3932, 1
  store i32 %3933, ptr @test_count, align 4, !tbaa !5
  %3934 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %3605) #12
  %3935 = icmp eq i32 %3934, -1
  br i1 %3935, label %3936, label %3958

3936:                                             ; preds = %3931
  %3937 = load i32, ptr %440, align 4, !tbaa !5
  %3938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3939 = call i32 @s2n_print_stacktrace(ptr noundef %3938) #12
  %3940 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3941 = trunc nuw i8 %3940 to i1
  br i1 %3941, label %3942, label %3946

3942:                                             ; preds = %3936
  %3943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3944 = call i32 @fileno(ptr noundef %3943) #12
  %3945 = call i32 @isatty(i32 noundef %3944) #12
  %.not769 = icmp eq i32 %3945, 0
  br i1 %.not769, label %3946, label %3947

3946:                                             ; preds = %3942, %3936
  br label %3947

3947:                                             ; preds = %3942, %3946
  %.str.5.sink2154 = phi ptr [ @.str.5, %3946 ], [ @.str.2, %3942 ]
  store i32 %3937, ptr %440, align 4, !tbaa !5
  %3948 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3949 = load i32, ptr @test_count, align 4, !tbaa !5
  %3950 = load i32, ptr %386, align 4, !tbaa !5
  %3951 = call ptr @s2n_strerror(i32 noundef %3950, ptr noundef nonnull @.str.4) #12
  %3952 = load i32, ptr %386, align 4, !tbaa !5
  %3953 = call ptr @s2n_strerror_debug(i32 noundef %3952, ptr noundef nonnull @.str.4) #12
  %3954 = load i32, ptr %440, align 4, !tbaa !5
  %3955 = call ptr @strerror(i32 noundef %3954) #12
  %3956 = load i32, ptr %440, align 4, !tbaa !5
  %3957 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3948, ptr noundef nonnull %.str.5.sink2154, i32 noundef %3949, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 372, ptr noundef %3951, ptr noundef %3953, ptr noundef %3955, i32 noundef %3956) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3958:                                             ; preds = %3931
  %3959 = load i32, ptr @test_count, align 4, !tbaa !5
  %3960 = add nsw i32 %3959, 1
  store i32 %3960, ptr @test_count, align 4, !tbaa !5
  %3961 = load ptr, ptr %3819, align 8, !tbaa !50
  %3962 = icmp eq ptr %3961, %3822
  br i1 %3962, label %3985, label %3963

3963:                                             ; preds = %3958
  %3964 = load i32, ptr %440, align 4, !tbaa !5
  %3965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3966 = call i32 @s2n_print_stacktrace(ptr noundef %3965) #12
  %3967 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3968 = trunc nuw i8 %3967 to i1
  br i1 %3968, label %3969, label %3973

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

3973:                                             ; preds = %3969, %3963
  br label %3974

3974:                                             ; preds = %3969, %3973
  %.str.5.sink2163 = phi ptr [ @.str.5, %3973 ], [ @.str.2, %3969 ]
  store i32 %3964, ptr %440, align 4, !tbaa !5
  %3975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3976 = load i32, ptr @test_count, align 4, !tbaa !5
  %3977 = load i32, ptr %386, align 4, !tbaa !5
  %3978 = call ptr @s2n_strerror(i32 noundef %3977, ptr noundef nonnull @.str.4) #12
  %3979 = load i32, ptr %386, align 4, !tbaa !5
  %3980 = call ptr @s2n_strerror_debug(i32 noundef %3979, ptr noundef nonnull @.str.4) #12
  %3981 = load i32, ptr %440, align 4, !tbaa !5
  %3982 = call ptr @strerror(i32 noundef %3981) #12
  %3983 = load i32, ptr %440, align 4, !tbaa !5
  %3984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3975, ptr noundef nonnull %.str.5.sink2163, i32 noundef %3976, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 375, ptr noundef %3978, ptr noundef %3980, ptr noundef %3982, i32 noundef %3983) #14
  call void @exit(i32 noundef 1) #15
  unreachable

3985:                                             ; preds = %3958
  %3986 = add nsw i32 %3959, 2
  store i32 %3986, ptr @test_count, align 4, !tbaa !5
  %3987 = load ptr, ptr %3825, align 8, !tbaa !53
  %3988 = load ptr, ptr %3823, align 8, !tbaa !51
  %3989 = icmp eq ptr %3987, %3988
  br i1 %3989, label %4012, label %3990

3990:                                             ; preds = %3985
  %3991 = load i32, ptr %440, align 4, !tbaa !5
  %3992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3993 = call i32 @s2n_print_stacktrace(ptr noundef %3992) #12
  %3994 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3995 = trunc nuw i8 %3994 to i1
  br i1 %3995, label %3996, label %4000

3996:                                             ; preds = %3990
  %3997 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3998 = call i32 @fileno(ptr noundef %3997) #12
  %3999 = call i32 @isatty(i32 noundef %3998) #12
  %.not736 = icmp eq i32 %3999, 0
  br i1 %.not736, label %4000, label %4001

4000:                                             ; preds = %3996, %3990
  br label %4001

4001:                                             ; preds = %3996, %4000
  %.str.5.sink2172 = phi ptr [ @.str.5, %4000 ], [ @.str.2, %3996 ]
  store i32 %3991, ptr %440, align 4, !tbaa !5
  %4002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4003 = load i32, ptr @test_count, align 4, !tbaa !5
  %4004 = load i32, ptr %386, align 4, !tbaa !5
  %4005 = call ptr @s2n_strerror(i32 noundef %4004, ptr noundef nonnull @.str.4) #12
  %4006 = load i32, ptr %386, align 4, !tbaa !5
  %4007 = call ptr @s2n_strerror_debug(i32 noundef %4006, ptr noundef nonnull @.str.4) #12
  %4008 = load i32, ptr %440, align 4, !tbaa !5
  %4009 = call ptr @strerror(i32 noundef %4008) #12
  %4010 = load i32, ptr %440, align 4, !tbaa !5
  %4011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4002, ptr noundef nonnull %.str.5.sink2172, i32 noundef %4003, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 376, ptr noundef %4005, ptr noundef %4007, ptr noundef %4009, i32 noundef %4010) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4012:                                             ; preds = %3985
  %4013 = add nsw i32 %3959, 3
  store i32 %4013, ptr @test_count, align 4, !tbaa !5
  %4014 = load ptr, ptr %3828, align 8, !tbaa !55
  %4015 = load ptr, ptr %3826, align 8, !tbaa !54
  %4016 = icmp eq ptr %4014, %4015
  br i1 %4016, label %4039, label %4017

4017:                                             ; preds = %4012
  %4018 = load i32, ptr %440, align 4, !tbaa !5
  %4019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4020 = call i32 @s2n_print_stacktrace(ptr noundef %4019) #12
  %4021 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4022 = trunc nuw i8 %4021 to i1
  br i1 %4022, label %4023, label %4027

4023:                                             ; preds = %4017
  %4024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4025 = call i32 @fileno(ptr noundef %4024) #12
  %4026 = call i32 @isatty(i32 noundef %4025) #12
  %.not737 = icmp eq i32 %4026, 0
  br i1 %.not737, label %4027, label %4028

4027:                                             ; preds = %4023, %4017
  br label %4028

4028:                                             ; preds = %4023, %4027
  %.str.5.sink2181 = phi ptr [ @.str.5, %4027 ], [ @.str.2, %4023 ]
  store i32 %4018, ptr %440, align 4, !tbaa !5
  %4029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4030 = load i32, ptr @test_count, align 4, !tbaa !5
  %4031 = load i32, ptr %386, align 4, !tbaa !5
  %4032 = call ptr @s2n_strerror(i32 noundef %4031, ptr noundef nonnull @.str.4) #12
  %4033 = load i32, ptr %386, align 4, !tbaa !5
  %4034 = call ptr @s2n_strerror_debug(i32 noundef %4033, ptr noundef nonnull @.str.4) #12
  %4035 = load i32, ptr %440, align 4, !tbaa !5
  %4036 = call ptr @strerror(i32 noundef %4035) #12
  %4037 = load i32, ptr %440, align 4, !tbaa !5
  %4038 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4029, ptr noundef nonnull %.str.5.sink2181, i32 noundef %4030, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 377, ptr noundef %4032, ptr noundef %4034, ptr noundef %4036, i32 noundef %4037) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4039:                                             ; preds = %4012
  %4040 = add nsw i32 %3959, 4
  store i32 %4040, ptr @test_count, align 4, !tbaa !5
  %4041 = load ptr, ptr %3829, align 8, !tbaa !56
  %4042 = icmp eq ptr %4041, %3822
  br i1 %4042, label %4065, label %4043

4043:                                             ; preds = %4039
  %4044 = load i32, ptr %440, align 4, !tbaa !5
  %4045 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4046 = call i32 @s2n_print_stacktrace(ptr noundef %4045) #12
  %4047 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4048 = trunc nuw i8 %4047 to i1
  br i1 %4048, label %4049, label %4053

4049:                                             ; preds = %4043
  %4050 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4051 = call i32 @fileno(ptr noundef %4050) #12
  %4052 = call i32 @isatty(i32 noundef %4051) #12
  %.not738 = icmp eq i32 %4052, 0
  br i1 %.not738, label %4053, label %4054

4053:                                             ; preds = %4049, %4043
  br label %4054

4054:                                             ; preds = %4049, %4053
  %.str.5.sink2190 = phi ptr [ @.str.5, %4053 ], [ @.str.2, %4049 ]
  store i32 %4044, ptr %440, align 4, !tbaa !5
  %4055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4056 = load i32, ptr @test_count, align 4, !tbaa !5
  %4057 = load i32, ptr %386, align 4, !tbaa !5
  %4058 = call ptr @s2n_strerror(i32 noundef %4057, ptr noundef nonnull @.str.4) #12
  %4059 = load i32, ptr %386, align 4, !tbaa !5
  %4060 = call ptr @s2n_strerror_debug(i32 noundef %4059, ptr noundef nonnull @.str.4) #12
  %4061 = load i32, ptr %440, align 4, !tbaa !5
  %4062 = call ptr @strerror(i32 noundef %4061) #12
  %4063 = load i32, ptr %440, align 4, !tbaa !5
  %4064 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4055, ptr noundef nonnull %.str.5.sink2190, i32 noundef %4056, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 378, ptr noundef %4058, ptr noundef %4060, ptr noundef %4062, i32 noundef %4063) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4065:                                             ; preds = %4039
  %4066 = add nsw i32 %3959, 5
  store i32 %4066, ptr @test_count, align 4, !tbaa !5
  %4067 = load ptr, ptr %3793, align 8, !tbaa !15
  %4068 = icmp eq ptr %4067, null
  br i1 %4068, label %4091, label %4069

4069:                                             ; preds = %4065
  %4070 = load i32, ptr %440, align 4, !tbaa !5
  %4071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4072 = call i32 @s2n_print_stacktrace(ptr noundef %4071) #12
  %4073 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4074 = trunc nuw i8 %4073 to i1
  br i1 %4074, label %4075, label %4079

4075:                                             ; preds = %4069
  %4076 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4077 = call i32 @fileno(ptr noundef %4076) #12
  %4078 = call i32 @isatty(i32 noundef %4077) #12
  %.not739 = icmp eq i32 %4078, 0
  br i1 %.not739, label %4079, label %4080

4079:                                             ; preds = %4075, %4069
  br label %4080

4080:                                             ; preds = %4075, %4079
  %.str.5.sink2199 = phi ptr [ @.str.5, %4079 ], [ @.str.2, %4075 ]
  store i32 %4070, ptr %440, align 4, !tbaa !5
  %4081 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4082 = load i32, ptr @test_count, align 4, !tbaa !5
  %4083 = load i32, ptr %386, align 4, !tbaa !5
  %4084 = call ptr @s2n_strerror(i32 noundef %4083, ptr noundef nonnull @.str.4) #12
  %4085 = load i32, ptr %386, align 4, !tbaa !5
  %4086 = call ptr @s2n_strerror_debug(i32 noundef %4085, ptr noundef nonnull @.str.4) #12
  %4087 = load i32, ptr %440, align 4, !tbaa !5
  %4088 = call ptr @strerror(i32 noundef %4087) #12
  %4089 = load i32, ptr %440, align 4, !tbaa !5
  %4090 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4081, ptr noundef nonnull %.str.5.sink2199, i32 noundef %4082, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 379, ptr noundef %4084, ptr noundef %4086, ptr noundef %4088, i32 noundef %4089) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4091:                                             ; preds = %4065
  %4092 = add nsw i32 %3959, 6
  store i32 %4092, ptr @test_count, align 4, !tbaa !5
  %4093 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %3605) #12
  br i1 %4093, label %4094, label %4116

4094:                                             ; preds = %4091
  %4095 = load i32, ptr %440, align 4, !tbaa !5
  %4096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4097 = call i32 @s2n_print_stacktrace(ptr noundef %4096) #12
  %4098 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4099 = trunc nuw i8 %4098 to i1
  br i1 %4099, label %4100, label %4104

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

4104:                                             ; preds = %4100, %4094
  br label %4105

4105:                                             ; preds = %4100, %4104
  %.str.5.sink2208 = phi ptr [ @.str.5, %4104 ], [ @.str.2, %4100 ]
  store i32 %4095, ptr %440, align 4, !tbaa !5
  %4106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4107 = load i32, ptr @test_count, align 4, !tbaa !5
  %4108 = load i32, ptr %386, align 4, !tbaa !5
  %4109 = call ptr @s2n_strerror(i32 noundef %4108, ptr noundef nonnull @.str.4) #12
  %4110 = load i32, ptr %386, align 4, !tbaa !5
  %4111 = call ptr @s2n_strerror_debug(i32 noundef %4110, ptr noundef nonnull @.str.4) #12
  %4112 = load i32, ptr %440, align 4, !tbaa !5
  %4113 = call ptr @strerror(i32 noundef %4112) #12
  %4114 = load i32, ptr %440, align 4, !tbaa !5
  %4115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4106, ptr noundef nonnull %.str.5.sink2208, i32 noundef %4107, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 380, ptr noundef %4109, ptr noundef %4111, ptr noundef %4113, i32 noundef %4114) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4116:                                             ; preds = %4091
  %4117 = load i32, ptr @test_count, align 4, !tbaa !5
  %4118 = add nsw i32 %4117, 1
  store i32 %4118, ptr @test_count, align 4, !tbaa !5
  %4119 = call i32 @s2n_connection_free(ptr noundef nonnull %3605) #12
  %4120 = icmp eq i32 %4119, -1
  br i1 %4120, label %4121, label %4143

4121:                                             ; preds = %4116
  %4122 = load i32, ptr %440, align 4, !tbaa !5
  %4123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4124 = call i32 @s2n_print_stacktrace(ptr noundef %4123) #12
  %4125 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4126 = trunc nuw i8 %4125 to i1
  br i1 %4126, label %4127, label %4131

4127:                                             ; preds = %4121
  %4128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4129 = call i32 @fileno(ptr noundef %4128) #12
  %4130 = call i32 @isatty(i32 noundef %4129) #12
  %.not767 = icmp eq i32 %4130, 0
  br i1 %.not767, label %4131, label %4132

4131:                                             ; preds = %4127, %4121
  br label %4132

4132:                                             ; preds = %4127, %4131
  %.str.5.sink2217 = phi ptr [ @.str.5, %4131 ], [ @.str.2, %4127 ]
  store i32 %4122, ptr %440, align 4, !tbaa !5
  %4133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4134 = load i32, ptr @test_count, align 4, !tbaa !5
  %4135 = load i32, ptr %386, align 4, !tbaa !5
  %4136 = call ptr @s2n_strerror(i32 noundef %4135, ptr noundef nonnull @.str.4) #12
  %4137 = load i32, ptr %386, align 4, !tbaa !5
  %4138 = call ptr @s2n_strerror_debug(i32 noundef %4137, ptr noundef nonnull @.str.4) #12
  %4139 = load i32, ptr %440, align 4, !tbaa !5
  %4140 = call ptr @strerror(i32 noundef %4139) #12
  %4141 = load i32, ptr %440, align 4, !tbaa !5
  %4142 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4133, ptr noundef nonnull %.str.5.sink2217, i32 noundef %4134, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 382, ptr noundef %4136, ptr noundef %4138, ptr noundef %4140, i32 noundef %4141) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4143:                                             ; preds = %4116
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  %4144 = load i32, ptr @test_count, align 4, !tbaa !5
  %4145 = add nsw i32 %4144, 1
  store i32 %4145, ptr @test_count, align 4, !tbaa !5
  %4146 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %4147 = icmp eq ptr %4146, null
  br i1 %4147, label %4148, label %4170

4148:                                             ; preds = %4143
  %4149 = load i32, ptr %440, align 4, !tbaa !5
  %4150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4151 = call i32 @s2n_print_stacktrace(ptr noundef %4150) #12
  %4152 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4153 = trunc nuw i8 %4152 to i1
  br i1 %4153, label %4154, label %4158

4154:                                             ; preds = %4148
  %4155 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4156 = call i32 @fileno(ptr noundef %4155) #12
  %4157 = call i32 @isatty(i32 noundef %4156) #12
  %.not766 = icmp eq i32 %4157, 0
  br i1 %.not766, label %4158, label %4159

4158:                                             ; preds = %4154, %4148
  br label %4159

4159:                                             ; preds = %4154, %4158
  %.str.5.sink2226 = phi ptr [ @.str.5, %4158 ], [ @.str.2, %4154 ]
  store i32 %4149, ptr %440, align 4, !tbaa !5
  %4160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4161 = load i32, ptr @test_count, align 4, !tbaa !5
  %4162 = load i32, ptr %386, align 4, !tbaa !5
  %4163 = call ptr @s2n_strerror(i32 noundef %4162, ptr noundef nonnull @.str.4) #12
  %4164 = load i32, ptr %386, align 4, !tbaa !5
  %4165 = call ptr @s2n_strerror_debug(i32 noundef %4164, ptr noundef nonnull @.str.4) #12
  %4166 = load i32, ptr %440, align 4, !tbaa !5
  %4167 = call ptr @strerror(i32 noundef %4166) #12
  %4168 = load i32, ptr %440, align 4, !tbaa !5
  %4169 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4160, ptr noundef nonnull %.str.5.sink2226, i32 noundef %4161, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 388, ptr noundef %4163, ptr noundef %4165, ptr noundef %4167, i32 noundef %4168) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4170:                                             ; preds = %4143
  %4171 = getelementptr inbounds i8, ptr %4146, i64 16
  store ptr %4, ptr %4171, align 8, !tbaa !47
  %4172 = load i32, ptr @test_count, align 4, !tbaa !5
  %4173 = add nsw i32 %4172, 1
  store i32 %4173, ptr @test_count, align 4, !tbaa !5
  %4174 = call i32 @s2n_connection_set_all_protocol_versions(ptr noundef nonnull %4146, i8 noundef zeroext 34) #12
  %4175 = icmp eq i32 %4174, -1
  br i1 %4175, label %4176, label %4198

4176:                                             ; preds = %4170
  %4177 = load i32, ptr %440, align 4, !tbaa !5
  %4178 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4179 = call i32 @s2n_print_stacktrace(ptr noundef %4178) #12
  %4180 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4181 = trunc nuw i8 %4180 to i1
  br i1 %4181, label %4182, label %4186

4182:                                             ; preds = %4176
  %4183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4184 = call i32 @fileno(ptr noundef %4183) #12
  %4185 = call i32 @isatty(i32 noundef %4184) #12
  %.not765 = icmp eq i32 %4185, 0
  br i1 %.not765, label %4186, label %4187

4186:                                             ; preds = %4182, %4176
  br label %4187

4187:                                             ; preds = %4182, %4186
  %.str.5.sink2235 = phi ptr [ @.str.5, %4186 ], [ @.str.2, %4182 ]
  store i32 %4177, ptr %440, align 4, !tbaa !5
  %4188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4189 = load i32, ptr @test_count, align 4, !tbaa !5
  %4190 = load i32, ptr %386, align 4, !tbaa !5
  %4191 = call ptr @s2n_strerror(i32 noundef %4190, ptr noundef nonnull @.str.4) #12
  %4192 = load i32, ptr %386, align 4, !tbaa !5
  %4193 = call ptr @s2n_strerror_debug(i32 noundef %4192, ptr noundef nonnull @.str.4) #12
  %4194 = load i32, ptr %440, align 4, !tbaa !5
  %4195 = call ptr @strerror(i32 noundef %4194) #12
  %4196 = load i32, ptr %440, align 4, !tbaa !5
  %4197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4188, ptr noundef nonnull %.str.5.sink2235, i32 noundef %4189, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 390, ptr noundef %4191, ptr noundef %4193, ptr noundef %4195, i32 noundef %4196) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4198:                                             ; preds = %4170
  %4199 = load i32, ptr @test_count, align 4, !tbaa !5
  %4200 = add nsw i32 %4199, 1
  store i32 %4200, ptr @test_count, align 4, !tbaa !5
  %4201 = call i32 @s2n_set_all_mutually_supported_groups(ptr noundef nonnull %4146) #12
  %4202 = call zeroext i1 @s2n_result_is_ok(i32 %4201)
  br i1 %4202, label %4225, label %4203

4203:                                             ; preds = %4198
  %4204 = load i32, ptr %440, align 4, !tbaa !5
  %4205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4206 = call i32 @s2n_print_stacktrace(ptr noundef %4205) #12
  %4207 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4208 = trunc nuw i8 %4207 to i1
  br i1 %4208, label %4209, label %4213

4209:                                             ; preds = %4203
  %4210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4211 = call i32 @fileno(ptr noundef %4210) #12
  %4212 = call i32 @isatty(i32 noundef %4211) #12
  %.not740 = icmp eq i32 %4212, 0
  br i1 %.not740, label %4213, label %4214

4213:                                             ; preds = %4209, %4203
  br label %4214

4214:                                             ; preds = %4209, %4213
  %.str.5.sink2244 = phi ptr [ @.str.5, %4213 ], [ @.str.2, %4209 ]
  store i32 %4204, ptr %440, align 4, !tbaa !5
  %4215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4216 = load i32, ptr @test_count, align 4, !tbaa !5
  %4217 = load i32, ptr %386, align 4, !tbaa !5
  %4218 = call ptr @s2n_strerror(i32 noundef %4217, ptr noundef nonnull @.str.4) #12
  %4219 = load i32, ptr %386, align 4, !tbaa !5
  %4220 = call ptr @s2n_strerror_debug(i32 noundef %4219, ptr noundef nonnull @.str.4) #12
  %4221 = load i32, ptr %440, align 4, !tbaa !5
  %4222 = call ptr @strerror(i32 noundef %4221) #12
  %4223 = load i32, ptr %440, align 4, !tbaa !5
  %4224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4215, ptr noundef nonnull %.str.5.sink2244, i32 noundef %4216, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 391, ptr noundef %4218, ptr noundef %4220, ptr noundef %4222, i32 noundef %4223) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4225:                                             ; preds = %4198
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  store ptr null, ptr %14, align 8, !tbaa !9
  %4226 = load i32, ptr @test_count, align 4, !tbaa !5
  %4227 = add nsw i32 %4226, 1
  store i32 %4227, ptr @test_count, align 4, !tbaa !5
  %4228 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %4146, ptr noundef nonnull %14) #12
  %4229 = icmp eq i32 %4228, -1
  br i1 %4229, label %4230, label %4252

4230:                                             ; preds = %4225
  %4231 = load i32, ptr %440, align 4, !tbaa !5
  %4232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4233 = call i32 @s2n_print_stacktrace(ptr noundef %4232) #12
  %4234 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4235 = trunc nuw i8 %4234 to i1
  br i1 %4235, label %4236, label %4240

4236:                                             ; preds = %4230
  %4237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4238 = call i32 @fileno(ptr noundef %4237) #12
  %4239 = call i32 @isatty(i32 noundef %4238) #12
  %.not764 = icmp eq i32 %4239, 0
  br i1 %.not764, label %4240, label %4241

4240:                                             ; preds = %4236, %4230
  br label %4241

4241:                                             ; preds = %4236, %4240
  %.str.5.sink2253 = phi ptr [ @.str.5, %4240 ], [ @.str.2, %4236 ]
  store i32 %4231, ptr %440, align 4, !tbaa !5
  %4242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4243 = load i32, ptr @test_count, align 4, !tbaa !5
  %4244 = load i32, ptr %386, align 4, !tbaa !5
  %4245 = call ptr @s2n_strerror(i32 noundef %4244, ptr noundef nonnull @.str.4) #12
  %4246 = load i32, ptr %386, align 4, !tbaa !5
  %4247 = call ptr @s2n_strerror_debug(i32 noundef %4246, ptr noundef nonnull @.str.4) #12
  %4248 = load i32, ptr %440, align 4, !tbaa !5
  %4249 = call ptr @strerror(i32 noundef %4248) #12
  %4250 = load i32, ptr %440, align 4, !tbaa !5
  %4251 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4242, ptr noundef nonnull %.str.5.sink2253, i32 noundef %4243, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 394, ptr noundef %4245, ptr noundef %4247, ptr noundef %4249, i32 noundef %4250) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4252:                                             ; preds = %4225
  %4253 = load i32, ptr @test_count, align 4, !tbaa !5
  %4254 = add nsw i32 %4253, 1
  store i32 %4254, ptr @test_count, align 4, !tbaa !5
  %4255 = load ptr, ptr %14, align 8, !tbaa !9
  %4256 = icmp eq ptr %4255, null
  br i1 %4256, label %4257, label %4279

4257:                                             ; preds = %4252
  %4258 = load i32, ptr %440, align 4, !tbaa !5
  %4259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4260 = call i32 @s2n_print_stacktrace(ptr noundef %4259) #12
  %4261 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4262 = trunc nuw i8 %4261 to i1
  br i1 %4262, label %4263, label %4267

4263:                                             ; preds = %4257
  %4264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4265 = call i32 @fileno(ptr noundef %4264) #12
  %4266 = call i32 @isatty(i32 noundef %4265) #12
  %.not763 = icmp eq i32 %4266, 0
  br i1 %.not763, label %4267, label %4268

4267:                                             ; preds = %4263, %4257
  br label %4268

4268:                                             ; preds = %4263, %4267
  %.str.5.sink2262 = phi ptr [ @.str.5, %4267 ], [ @.str.2, %4263 ]
  store i32 %4258, ptr %440, align 4, !tbaa !5
  %4269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4270 = load i32, ptr @test_count, align 4, !tbaa !5
  %4271 = load i32, ptr %386, align 4, !tbaa !5
  %4272 = call ptr @s2n_strerror(i32 noundef %4271, ptr noundef nonnull @.str.4) #12
  %4273 = load i32, ptr %386, align 4, !tbaa !5
  %4274 = call ptr @s2n_strerror_debug(i32 noundef %4273, ptr noundef nonnull @.str.4) #12
  %4275 = load i32, ptr %440, align 4, !tbaa !5
  %4276 = call ptr @strerror(i32 noundef %4275) #12
  %4277 = load i32, ptr %440, align 4, !tbaa !5
  %4278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4269, ptr noundef nonnull %.str.5.sink2262, i32 noundef %4270, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 395, ptr noundef %4272, ptr noundef %4274, ptr noundef %4276, i32 noundef %4277) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4279:                                             ; preds = %4252
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  store ptr null, ptr %15, align 8, !tbaa !9
  %4280 = add nsw i32 %4253, 2
  store i32 %4280, ptr @test_count, align 4, !tbaa !5
  %4281 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %4146, ptr noundef nonnull %15) #12
  %4282 = icmp eq i32 %4281, -1
  br i1 %4282, label %4283, label %4305

4283:                                             ; preds = %4279
  %4284 = load i32, ptr %440, align 4, !tbaa !5
  %4285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4286 = call i32 @s2n_print_stacktrace(ptr noundef %4285) #12
  %4287 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4288 = trunc nuw i8 %4287 to i1
  br i1 %4288, label %4289, label %4293

4289:                                             ; preds = %4283
  %4290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4291 = call i32 @fileno(ptr noundef %4290) #12
  %4292 = call i32 @isatty(i32 noundef %4291) #12
  %.not762 = icmp eq i32 %4292, 0
  br i1 %.not762, label %4293, label %4294

4293:                                             ; preds = %4289, %4283
  br label %4294

4294:                                             ; preds = %4289, %4293
  %.str.5.sink2271 = phi ptr [ @.str.5, %4293 ], [ @.str.2, %4289 ]
  store i32 %4284, ptr %440, align 4, !tbaa !5
  %4295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4296 = load i32, ptr @test_count, align 4, !tbaa !5
  %4297 = load i32, ptr %386, align 4, !tbaa !5
  %4298 = call ptr @s2n_strerror(i32 noundef %4297, ptr noundef nonnull @.str.4) #12
  %4299 = load i32, ptr %386, align 4, !tbaa !5
  %4300 = call ptr @s2n_strerror_debug(i32 noundef %4299, ptr noundef nonnull @.str.4) #12
  %4301 = load i32, ptr %440, align 4, !tbaa !5
  %4302 = call ptr @strerror(i32 noundef %4301) #12
  %4303 = load i32, ptr %440, align 4, !tbaa !5
  %4304 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4295, ptr noundef nonnull %.str.5.sink2271, i32 noundef %4296, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 398, ptr noundef %4298, ptr noundef %4300, ptr noundef %4302, i32 noundef %4303) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4305:                                             ; preds = %4279
  %4306 = load i32, ptr @test_count, align 4, !tbaa !5
  %4307 = add nsw i32 %4306, 1
  store i32 %4307, ptr @test_count, align 4, !tbaa !5
  %4308 = load ptr, ptr %15, align 8, !tbaa !9
  %4309 = icmp eq ptr %4308, null
  br i1 %4309, label %4310, label %4332

4310:                                             ; preds = %4305
  %4311 = load i32, ptr %440, align 4, !tbaa !5
  %4312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4313 = call i32 @s2n_print_stacktrace(ptr noundef %4312) #12
  %4314 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4315 = trunc nuw i8 %4314 to i1
  br i1 %4315, label %4316, label %4320

4316:                                             ; preds = %4310
  %4317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4318 = call i32 @fileno(ptr noundef %4317) #12
  %4319 = call i32 @isatty(i32 noundef %4318) #12
  %.not761 = icmp eq i32 %4319, 0
  br i1 %.not761, label %4320, label %4321

4320:                                             ; preds = %4316, %4310
  br label %4321

4321:                                             ; preds = %4316, %4320
  %.str.5.sink2280 = phi ptr [ @.str.5, %4320 ], [ @.str.2, %4316 ]
  store i32 %4311, ptr %440, align 4, !tbaa !5
  %4322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4323 = load i32, ptr @test_count, align 4, !tbaa !5
  %4324 = load i32, ptr %386, align 4, !tbaa !5
  %4325 = call ptr @s2n_strerror(i32 noundef %4324, ptr noundef nonnull @.str.4) #12
  %4326 = load i32, ptr %386, align 4, !tbaa !5
  %4327 = call ptr @s2n_strerror_debug(i32 noundef %4326, ptr noundef nonnull @.str.4) #12
  %4328 = load i32, ptr %440, align 4, !tbaa !5
  %4329 = call ptr @strerror(i32 noundef %4328) #12
  %4330 = load i32, ptr %440, align 4, !tbaa !5
  %4331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4322, ptr noundef nonnull %.str.5.sink2280, i32 noundef %4323, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 399, ptr noundef %4325, ptr noundef %4327, ptr noundef %4329, i32 noundef %4330) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4332:                                             ; preds = %4305
  %4333 = add nsw i32 %4306, 2
  store i32 %4333, ptr @test_count, align 4, !tbaa !5
  %4334 = getelementptr inbounds i8, ptr %4146, i64 656
  %4335 = load ptr, ptr %4334, align 8, !tbaa !15
  %4336 = icmp eq ptr %4335, null
  br i1 %4336, label %4359, label %4337

4337:                                             ; preds = %4332
  %4338 = load i32, ptr %440, align 4, !tbaa !5
  %4339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4340 = call i32 @s2n_print_stacktrace(ptr noundef %4339) #12
  %4341 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4342 = trunc nuw i8 %4341 to i1
  br i1 %4342, label %4343, label %4347

4343:                                             ; preds = %4337
  %4344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4345 = call i32 @fileno(ptr noundef %4344) #12
  %4346 = call i32 @isatty(i32 noundef %4345) #12
  %.not741 = icmp eq i32 %4346, 0
  br i1 %.not741, label %4347, label %4348

4347:                                             ; preds = %4343, %4337
  br label %4348

4348:                                             ; preds = %4343, %4347
  %.str.5.sink2289 = phi ptr [ @.str.5, %4347 ], [ @.str.2, %4343 ]
  store i32 %4338, ptr %440, align 4, !tbaa !5
  %4349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4350 = load i32, ptr @test_count, align 4, !tbaa !5
  %4351 = load i32, ptr %386, align 4, !tbaa !5
  %4352 = call ptr @s2n_strerror(i32 noundef %4351, ptr noundef nonnull @.str.4) #12
  %4353 = load i32, ptr %386, align 4, !tbaa !5
  %4354 = call ptr @s2n_strerror_debug(i32 noundef %4353, ptr noundef nonnull @.str.4) #12
  %4355 = load i32, ptr %440, align 4, !tbaa !5
  %4356 = call ptr @strerror(i32 noundef %4355) #12
  %4357 = load i32, ptr %440, align 4, !tbaa !5
  %4358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4349, ptr noundef nonnull %.str.5.sink2289, i32 noundef %4350, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 402, ptr noundef %4352, ptr noundef %4354, ptr noundef %4356, i32 noundef %4357) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4359:                                             ; preds = %4332
  %4360 = getelementptr inbounds i8, ptr %4146, i64 720
  %4361 = getelementptr inbounds i8, ptr %4308, i64 24
  %4362 = load ptr, ptr %4361, align 8, !tbaa !48
  %4363 = load ptr, ptr %4362, align 8, !tbaa !9
  store ptr %4363, ptr %4360, align 8, !tbaa !50
  %4364 = getelementptr inbounds i8, ptr %4363, i64 24
  %4365 = load ptr, ptr %4364, align 8, !tbaa !51
  %4366 = getelementptr inbounds i8, ptr %4146, i64 728
  store ptr %4365, ptr %4366, align 8, !tbaa !53
  %4367 = getelementptr inbounds i8, ptr %4363, i64 16
  %4368 = load ptr, ptr %4367, align 8, !tbaa !54
  %4369 = getelementptr inbounds i8, ptr %4146, i64 816
  store ptr %4368, ptr %4369, align 8, !tbaa !55
  %4370 = add nsw i32 %4306, 3
  store i32 %4370, ptr @test_count, align 4, !tbaa !5
  %4371 = getelementptr inbounds i8, ptr %4146, i64 832
  %4372 = load ptr, ptr %4371, align 8, !tbaa !56
  %4373 = icmp eq ptr %4372, null
  br i1 %4373, label %4396, label %4374

4374:                                             ; preds = %4359
  %4375 = load i32, ptr %440, align 4, !tbaa !5
  %4376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4377 = call i32 @s2n_print_stacktrace(ptr noundef %4376) #12
  %4378 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4379 = trunc nuw i8 %4378 to i1
  br i1 %4379, label %4380, label %4384

4380:                                             ; preds = %4374
  %4381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4382 = call i32 @fileno(ptr noundef %4381) #12
  %4383 = call i32 @isatty(i32 noundef %4382) #12
  %.not742 = icmp eq i32 %4383, 0
  br i1 %.not742, label %4384, label %4385

4384:                                             ; preds = %4380, %4374
  br label %4385

4385:                                             ; preds = %4380, %4384
  %.str.5.sink2298 = phi ptr [ @.str.5, %4384 ], [ @.str.2, %4380 ]
  store i32 %4375, ptr %440, align 4, !tbaa !5
  %4386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4387 = load i32, ptr @test_count, align 4, !tbaa !5
  %4388 = load i32, ptr %386, align 4, !tbaa !5
  %4389 = call ptr @s2n_strerror(i32 noundef %4388, ptr noundef nonnull @.str.4) #12
  %4390 = load i32, ptr %386, align 4, !tbaa !5
  %4391 = call ptr @s2n_strerror_debug(i32 noundef %4390, ptr noundef nonnull @.str.4) #12
  %4392 = load i32, ptr %440, align 4, !tbaa !5
  %4393 = call ptr @strerror(i32 noundef %4392) #12
  %4394 = load i32, ptr %440, align 4, !tbaa !5
  %4395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4386, ptr noundef nonnull %.str.5.sink2298, i32 noundef %4387, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 410, ptr noundef %4389, ptr noundef %4391, ptr noundef %4393, i32 noundef %4394) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4396:                                             ; preds = %4359
  %4397 = add nsw i32 %4306, 4
  store i32 %4397, ptr @test_count, align 4, !tbaa !5
  %4398 = getelementptr inbounds i8, ptr %4146, i64 840
  %4399 = load ptr, ptr %4398, align 8, !tbaa !57
  %4400 = icmp eq ptr %4399, null
  br i1 %4400, label %4423, label %4401

4401:                                             ; preds = %4396
  %4402 = load i32, ptr %440, align 4, !tbaa !5
  %4403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4404 = call i32 @s2n_print_stacktrace(ptr noundef %4403) #12
  %4405 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4406 = trunc nuw i8 %4405 to i1
  br i1 %4406, label %4407, label %4411

4407:                                             ; preds = %4401
  %4408 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4409 = call i32 @fileno(ptr noundef %4408) #12
  %4410 = call i32 @isatty(i32 noundef %4409) #12
  %.not743 = icmp eq i32 %4410, 0
  br i1 %.not743, label %4411, label %4412

4411:                                             ; preds = %4407, %4401
  br label %4412

4412:                                             ; preds = %4407, %4411
  %.str.5.sink2307 = phi ptr [ @.str.5, %4411 ], [ @.str.2, %4407 ]
  store i32 %4402, ptr %440, align 4, !tbaa !5
  %4413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4414 = load i32, ptr @test_count, align 4, !tbaa !5
  %4415 = load i32, ptr %386, align 4, !tbaa !5
  %4416 = call ptr @s2n_strerror(i32 noundef %4415, ptr noundef nonnull @.str.4) #12
  %4417 = load i32, ptr %386, align 4, !tbaa !5
  %4418 = call ptr @s2n_strerror_debug(i32 noundef %4417, ptr noundef nonnull @.str.4) #12
  %4419 = load i32, ptr %440, align 4, !tbaa !5
  %4420 = call ptr @strerror(i32 noundef %4419) #12
  %4421 = load i32, ptr %440, align 4, !tbaa !5
  %4422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4413, ptr noundef nonnull %.str.5.sink2307, i32 noundef %4414, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 411, ptr noundef %4416, ptr noundef %4418, ptr noundef %4420, i32 noundef %4421) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4423:                                             ; preds = %4396
  %4424 = add nsw i32 %4306, 5
  store i32 %4424, ptr @test_count, align 4, !tbaa !5
  %4425 = getelementptr inbounds i8, ptr %4146, i64 848
  %4426 = load ptr, ptr %4425, align 8, !tbaa !58
  %4427 = icmp eq ptr %4426, null
  br i1 %4427, label %4450, label %4428

4428:                                             ; preds = %4423
  %4429 = load i32, ptr %440, align 4, !tbaa !5
  %4430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4431 = call i32 @s2n_print_stacktrace(ptr noundef %4430) #12
  %4432 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4433 = trunc nuw i8 %4432 to i1
  br i1 %4433, label %4434, label %4438

4434:                                             ; preds = %4428
  %4435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4436 = call i32 @fileno(ptr noundef %4435) #12
  %4437 = call i32 @isatty(i32 noundef %4436) #12
  %.not744 = icmp eq i32 %4437, 0
  br i1 %.not744, label %4438, label %4439

4438:                                             ; preds = %4434, %4428
  br label %4439

4439:                                             ; preds = %4434, %4438
  %.str.5.sink2316 = phi ptr [ @.str.5, %4438 ], [ @.str.2, %4434 ]
  store i32 %4429, ptr %440, align 4, !tbaa !5
  %4440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4441 = load i32, ptr @test_count, align 4, !tbaa !5
  %4442 = load i32, ptr %386, align 4, !tbaa !5
  %4443 = call ptr @s2n_strerror(i32 noundef %4442, ptr noundef nonnull @.str.4) #12
  %4444 = load i32, ptr %386, align 4, !tbaa !5
  %4445 = call ptr @s2n_strerror_debug(i32 noundef %4444, ptr noundef nonnull @.str.4) #12
  %4446 = load i32, ptr %440, align 4, !tbaa !5
  %4447 = call ptr @strerror(i32 noundef %4446) #12
  %4448 = load i32, ptr %440, align 4, !tbaa !5
  %4449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4440, ptr noundef nonnull %.str.5.sink2316, i32 noundef %4441, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 412, ptr noundef %4443, ptr noundef %4445, ptr noundef %4447, i32 noundef %4448) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4450:                                             ; preds = %4423
  %4451 = add nsw i32 %4306, 6
  store i32 %4451, ptr @test_count, align 4, !tbaa !5
  %4452 = getelementptr inbounds i8, ptr %4146, i64 928
  %4453 = load ptr, ptr %4452, align 8, !tbaa !59
  %4454 = icmp eq ptr %4453, null
  br i1 %4454, label %4477, label %4455

4455:                                             ; preds = %4450
  %4456 = load i32, ptr %440, align 4, !tbaa !5
  %4457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4458 = call i32 @s2n_print_stacktrace(ptr noundef %4457) #12
  %4459 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4460 = trunc nuw i8 %4459 to i1
  br i1 %4460, label %4461, label %4465

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

4465:                                             ; preds = %4461, %4455
  br label %4466

4466:                                             ; preds = %4461, %4465
  %.str.5.sink2325 = phi ptr [ @.str.5, %4465 ], [ @.str.2, %4461 ]
  store i32 %4456, ptr %440, align 4, !tbaa !5
  %4467 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4468 = load i32, ptr @test_count, align 4, !tbaa !5
  %4469 = load i32, ptr %386, align 4, !tbaa !5
  %4470 = call ptr @s2n_strerror(i32 noundef %4469, ptr noundef nonnull @.str.4) #12
  %4471 = load i32, ptr %386, align 4, !tbaa !5
  %4472 = call ptr @s2n_strerror_debug(i32 noundef %4471, ptr noundef nonnull @.str.4) #12
  %4473 = load i32, ptr %440, align 4, !tbaa !5
  %4474 = call ptr @strerror(i32 noundef %4473) #12
  %4475 = load i32, ptr %440, align 4, !tbaa !5
  %4476 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4467, ptr noundef nonnull %.str.5.sink2325, i32 noundef %4468, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 413, ptr noundef %4470, ptr noundef %4472, ptr noundef %4474, i32 noundef %4475) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4477:                                             ; preds = %4450
  %4478 = add nsw i32 %4306, 7
  store i32 %4478, ptr @test_count, align 4, !tbaa !5
  %4479 = getelementptr inbounds i8, ptr %4146, i64 936
  %4480 = load ptr, ptr %4479, align 8, !tbaa !60
  %4481 = icmp eq ptr %4480, null
  br i1 %4481, label %4504, label %4482

4482:                                             ; preds = %4477
  %4483 = load i32, ptr %440, align 4, !tbaa !5
  %4484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4485 = call i32 @s2n_print_stacktrace(ptr noundef %4484) #12
  %4486 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4487 = trunc nuw i8 %4486 to i1
  br i1 %4487, label %4488, label %4492

4488:                                             ; preds = %4482
  %4489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4490 = call i32 @fileno(ptr noundef %4489) #12
  %4491 = call i32 @isatty(i32 noundef %4490) #12
  %.not746 = icmp eq i32 %4491, 0
  br i1 %.not746, label %4492, label %4493

4492:                                             ; preds = %4488, %4482
  br label %4493

4493:                                             ; preds = %4488, %4492
  %.str.5.sink2334 = phi ptr [ @.str.5, %4492 ], [ @.str.2, %4488 ]
  store i32 %4483, ptr %440, align 4, !tbaa !5
  %4494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4495 = load i32, ptr @test_count, align 4, !tbaa !5
  %4496 = load i32, ptr %386, align 4, !tbaa !5
  %4497 = call ptr @s2n_strerror(i32 noundef %4496, ptr noundef nonnull @.str.4) #12
  %4498 = load i32, ptr %386, align 4, !tbaa !5
  %4499 = call ptr @s2n_strerror_debug(i32 noundef %4498, ptr noundef nonnull @.str.4) #12
  %4500 = load i32, ptr %440, align 4, !tbaa !5
  %4501 = call ptr @strerror(i32 noundef %4500) #12
  %4502 = load i32, ptr %440, align 4, !tbaa !5
  %4503 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4494, ptr noundef nonnull %.str.5.sink2334, i32 noundef %4495, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 414, ptr noundef %4497, ptr noundef %4499, ptr noundef %4501, i32 noundef %4502) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4504:                                             ; preds = %4477
  %4505 = getelementptr inbounds i8, ptr %4146, i64 704
  %4506 = load ptr, ptr %14, align 8, !tbaa !9
  %4507 = getelementptr inbounds i8, ptr %4506, i64 8
  %4508 = load ptr, ptr %4507, align 8, !tbaa !43
  %4509 = load ptr, ptr %4508, align 8, !tbaa !9
  store ptr %4509, ptr %4505, align 8, !tbaa !65
  %4510 = add nsw i32 %4306, 8
  store i32 %4510, ptr @test_count, align 4, !tbaa !5
  %4511 = call i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef nonnull %4505) #12
  %4512 = icmp eq i32 %4511, -1
  br i1 %4512, label %4513, label %4535

4513:                                             ; preds = %4504
  %4514 = load i32, ptr %440, align 4, !tbaa !5
  %4515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4516 = call i32 @s2n_print_stacktrace(ptr noundef %4515) #12
  %4517 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4518 = trunc nuw i8 %4517 to i1
  br i1 %4518, label %4519, label %4523

4519:                                             ; preds = %4513
  %4520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4521 = call i32 @fileno(ptr noundef %4520) #12
  %4522 = call i32 @isatty(i32 noundef %4521) #12
  %.not760 = icmp eq i32 %4522, 0
  br i1 %.not760, label %4523, label %4524

4523:                                             ; preds = %4519, %4513
  br label %4524

4524:                                             ; preds = %4519, %4523
  %.str.5.sink2343 = phi ptr [ @.str.5, %4523 ], [ @.str.2, %4519 ]
  store i32 %4514, ptr %440, align 4, !tbaa !5
  %4525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4526 = load i32, ptr @test_count, align 4, !tbaa !5
  %4527 = load i32, ptr %386, align 4, !tbaa !5
  %4528 = call ptr @s2n_strerror(i32 noundef %4527, ptr noundef nonnull @.str.4) #12
  %4529 = load i32, ptr %386, align 4, !tbaa !5
  %4530 = call ptr @s2n_strerror_debug(i32 noundef %4529, ptr noundef nonnull @.str.4) #12
  %4531 = load i32, ptr %440, align 4, !tbaa !5
  %4532 = call ptr @strerror(i32 noundef %4531) #12
  %4533 = load i32, ptr %440, align 4, !tbaa !5
  %4534 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4525, ptr noundef nonnull %.str.5.sink2343, i32 noundef %4526, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 419, ptr noundef %4528, ptr noundef %4530, ptr noundef %4532, i32 noundef %4533) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4535:                                             ; preds = %4504
  %4536 = load i32, ptr @test_count, align 4, !tbaa !5
  %4537 = add nsw i32 %4536, 1
  store i32 %4537, ptr @test_count, align 4, !tbaa !5
  %4538 = call i32 @s2n_extensions_server_key_share_select(ptr noundef nonnull %4146) #12
  %4539 = icmp eq i32 %4538, -1
  br i1 %4539, label %4540, label %4562

4540:                                             ; preds = %4535
  %4541 = load i32, ptr %440, align 4, !tbaa !5
  %4542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4543 = call i32 @s2n_print_stacktrace(ptr noundef %4542) #12
  %4544 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4545 = trunc nuw i8 %4544 to i1
  br i1 %4545, label %4546, label %4550

4546:                                             ; preds = %4540
  %4547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4548 = call i32 @fileno(ptr noundef %4547) #12
  %4549 = call i32 @isatty(i32 noundef %4548) #12
  %.not759 = icmp eq i32 %4549, 0
  br i1 %.not759, label %4550, label %4551

4550:                                             ; preds = %4546, %4540
  br label %4551

4551:                                             ; preds = %4546, %4550
  %.str.5.sink2352 = phi ptr [ @.str.5, %4550 ], [ @.str.2, %4546 ]
  store i32 %4541, ptr %440, align 4, !tbaa !5
  %4552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4553 = load i32, ptr @test_count, align 4, !tbaa !5
  %4554 = load i32, ptr %386, align 4, !tbaa !5
  %4555 = call ptr @s2n_strerror(i32 noundef %4554, ptr noundef nonnull @.str.4) #12
  %4556 = load i32, ptr %386, align 4, !tbaa !5
  %4557 = call ptr @s2n_strerror_debug(i32 noundef %4556, ptr noundef nonnull @.str.4) #12
  %4558 = load i32, ptr %440, align 4, !tbaa !5
  %4559 = call ptr @strerror(i32 noundef %4558) #12
  %4560 = load i32, ptr %440, align 4, !tbaa !5
  %4561 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4552, ptr noundef nonnull %.str.5.sink2352, i32 noundef %4553, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 421, ptr noundef %4555, ptr noundef %4557, ptr noundef %4559, i32 noundef %4560) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4562:                                             ; preds = %4535
  %4563 = load i32, ptr @test_count, align 4, !tbaa !5
  %4564 = add nsw i32 %4563, 1
  store i32 %4564, ptr @test_count, align 4, !tbaa !5
  %4565 = load ptr, ptr %4334, align 8, !tbaa !15
  %4566 = icmp eq ptr %4565, null
  br i1 %4566, label %4589, label %4567

4567:                                             ; preds = %4562
  %4568 = load i32, ptr %440, align 4, !tbaa !5
  %4569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4570 = call i32 @s2n_print_stacktrace(ptr noundef %4569) #12
  %4571 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4572 = trunc nuw i8 %4571 to i1
  br i1 %4572, label %4573, label %4577

4573:                                             ; preds = %4567
  %4574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4575 = call i32 @fileno(ptr noundef %4574) #12
  %4576 = call i32 @isatty(i32 noundef %4575) #12
  %.not747 = icmp eq i32 %4576, 0
  br i1 %.not747, label %4577, label %4578

4577:                                             ; preds = %4573, %4567
  br label %4578

4578:                                             ; preds = %4573, %4577
  %.str.5.sink2361 = phi ptr [ @.str.5, %4577 ], [ @.str.2, %4573 ]
  store i32 %4568, ptr %440, align 4, !tbaa !5
  %4579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4580 = load i32, ptr @test_count, align 4, !tbaa !5
  %4581 = load i32, ptr %386, align 4, !tbaa !5
  %4582 = call ptr @s2n_strerror(i32 noundef %4581, ptr noundef nonnull @.str.4) #12
  %4583 = load i32, ptr %386, align 4, !tbaa !5
  %4584 = call ptr @s2n_strerror_debug(i32 noundef %4583, ptr noundef nonnull @.str.4) #12
  %4585 = load i32, ptr %440, align 4, !tbaa !5
  %4586 = call ptr @strerror(i32 noundef %4585) #12
  %4587 = load i32, ptr %440, align 4, !tbaa !5
  %4588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4579, ptr noundef nonnull %.str.5.sink2361, i32 noundef %4580, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 423, ptr noundef %4582, ptr noundef %4584, ptr noundef %4586, i32 noundef %4587) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4589:                                             ; preds = %4562
  %4590 = add nsw i32 %4563, 2
  store i32 %4590, ptr @test_count, align 4, !tbaa !5
  %4591 = load ptr, ptr %4360, align 8, !tbaa !50
  %4592 = icmp eq ptr %4591, %4363
  br i1 %4592, label %4615, label %4593

4593:                                             ; preds = %4589
  %4594 = load i32, ptr %440, align 4, !tbaa !5
  %4595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4596 = call i32 @s2n_print_stacktrace(ptr noundef %4595) #12
  %4597 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4598 = trunc nuw i8 %4597 to i1
  br i1 %4598, label %4599, label %4603

4599:                                             ; preds = %4593
  %4600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4601 = call i32 @fileno(ptr noundef %4600) #12
  %4602 = call i32 @isatty(i32 noundef %4601) #12
  %.not748 = icmp eq i32 %4602, 0
  br i1 %.not748, label %4603, label %4604

4603:                                             ; preds = %4599, %4593
  br label %4604

4604:                                             ; preds = %4599, %4603
  %.str.5.sink2370 = phi ptr [ @.str.5, %4603 ], [ @.str.2, %4599 ]
  store i32 %4594, ptr %440, align 4, !tbaa !5
  %4605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4606 = load i32, ptr @test_count, align 4, !tbaa !5
  %4607 = load i32, ptr %386, align 4, !tbaa !5
  %4608 = call ptr @s2n_strerror(i32 noundef %4607, ptr noundef nonnull @.str.4) #12
  %4609 = load i32, ptr %386, align 4, !tbaa !5
  %4610 = call ptr @s2n_strerror_debug(i32 noundef %4609, ptr noundef nonnull @.str.4) #12
  %4611 = load i32, ptr %440, align 4, !tbaa !5
  %4612 = call ptr @strerror(i32 noundef %4611) #12
  %4613 = load i32, ptr %440, align 4, !tbaa !5
  %4614 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4605, ptr noundef nonnull %.str.5.sink2370, i32 noundef %4606, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 424, ptr noundef %4608, ptr noundef %4610, ptr noundef %4612, i32 noundef %4613) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4615:                                             ; preds = %4589
  %4616 = add nsw i32 %4563, 3
  store i32 %4616, ptr @test_count, align 4, !tbaa !5
  %4617 = load ptr, ptr %4366, align 8, !tbaa !53
  %4618 = load ptr, ptr %4364, align 8, !tbaa !51
  %4619 = icmp eq ptr %4617, %4618
  br i1 %4619, label %4642, label %4620

4620:                                             ; preds = %4615
  %4621 = load i32, ptr %440, align 4, !tbaa !5
  %4622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4623 = call i32 @s2n_print_stacktrace(ptr noundef %4622) #12
  %4624 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4625 = trunc nuw i8 %4624 to i1
  br i1 %4625, label %4626, label %4630

4626:                                             ; preds = %4620
  %4627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4628 = call i32 @fileno(ptr noundef %4627) #12
  %4629 = call i32 @isatty(i32 noundef %4628) #12
  %.not749 = icmp eq i32 %4629, 0
  br i1 %.not749, label %4630, label %4631

4630:                                             ; preds = %4626, %4620
  br label %4631

4631:                                             ; preds = %4626, %4630
  %.str.5.sink2379 = phi ptr [ @.str.5, %4630 ], [ @.str.2, %4626 ]
  store i32 %4621, ptr %440, align 4, !tbaa !5
  %4632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4633 = load i32, ptr @test_count, align 4, !tbaa !5
  %4634 = load i32, ptr %386, align 4, !tbaa !5
  %4635 = call ptr @s2n_strerror(i32 noundef %4634, ptr noundef nonnull @.str.4) #12
  %4636 = load i32, ptr %386, align 4, !tbaa !5
  %4637 = call ptr @s2n_strerror_debug(i32 noundef %4636, ptr noundef nonnull @.str.4) #12
  %4638 = load i32, ptr %440, align 4, !tbaa !5
  %4639 = call ptr @strerror(i32 noundef %4638) #12
  %4640 = load i32, ptr %440, align 4, !tbaa !5
  %4641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4632, ptr noundef nonnull %.str.5.sink2379, i32 noundef %4633, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 425, ptr noundef %4635, ptr noundef %4637, ptr noundef %4639, i32 noundef %4640) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4642:                                             ; preds = %4615
  %4643 = add nsw i32 %4563, 4
  store i32 %4643, ptr @test_count, align 4, !tbaa !5
  %4644 = load ptr, ptr %4369, align 8, !tbaa !55
  %4645 = load ptr, ptr %4367, align 8, !tbaa !54
  %4646 = icmp eq ptr %4644, %4645
  br i1 %4646, label %4669, label %4647

4647:                                             ; preds = %4642
  %4648 = load i32, ptr %440, align 4, !tbaa !5
  %4649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4650 = call i32 @s2n_print_stacktrace(ptr noundef %4649) #12
  %4651 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4652 = trunc nuw i8 %4651 to i1
  br i1 %4652, label %4653, label %4657

4653:                                             ; preds = %4647
  %4654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4655 = call i32 @fileno(ptr noundef %4654) #12
  %4656 = call i32 @isatty(i32 noundef %4655) #12
  %.not750 = icmp eq i32 %4656, 0
  br i1 %.not750, label %4657, label %4658

4657:                                             ; preds = %4653, %4647
  br label %4658

4658:                                             ; preds = %4653, %4657
  %.str.5.sink2388 = phi ptr [ @.str.5, %4657 ], [ @.str.2, %4653 ]
  store i32 %4648, ptr %440, align 4, !tbaa !5
  %4659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4660 = load i32, ptr @test_count, align 4, !tbaa !5
  %4661 = load i32, ptr %386, align 4, !tbaa !5
  %4662 = call ptr @s2n_strerror(i32 noundef %4661, ptr noundef nonnull @.str.4) #12
  %4663 = load i32, ptr %386, align 4, !tbaa !5
  %4664 = call ptr @s2n_strerror_debug(i32 noundef %4663, ptr noundef nonnull @.str.4) #12
  %4665 = load i32, ptr %440, align 4, !tbaa !5
  %4666 = call ptr @strerror(i32 noundef %4665) #12
  %4667 = load i32, ptr %440, align 4, !tbaa !5
  %4668 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4659, ptr noundef nonnull %.str.5.sink2388, i32 noundef %4660, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 426, ptr noundef %4662, ptr noundef %4664, ptr noundef %4666, i32 noundef %4667) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4669:                                             ; preds = %4642
  %4670 = add nsw i32 %4563, 5
  store i32 %4670, ptr @test_count, align 4, !tbaa !5
  %4671 = load ptr, ptr %4371, align 8, !tbaa !56
  %4672 = icmp eq ptr %4671, null
  br i1 %4672, label %4695, label %4673

4673:                                             ; preds = %4669
  %4674 = load i32, ptr %440, align 4, !tbaa !5
  %4675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4676 = call i32 @s2n_print_stacktrace(ptr noundef %4675) #12
  %4677 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4678 = trunc nuw i8 %4677 to i1
  br i1 %4678, label %4679, label %4683

4679:                                             ; preds = %4673
  %4680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4681 = call i32 @fileno(ptr noundef %4680) #12
  %4682 = call i32 @isatty(i32 noundef %4681) #12
  %.not751 = icmp eq i32 %4682, 0
  br i1 %.not751, label %4683, label %4684

4683:                                             ; preds = %4679, %4673
  br label %4684

4684:                                             ; preds = %4679, %4683
  %.str.5.sink2397 = phi ptr [ @.str.5, %4683 ], [ @.str.2, %4679 ]
  store i32 %4674, ptr %440, align 4, !tbaa !5
  %4685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4686 = load i32, ptr @test_count, align 4, !tbaa !5
  %4687 = load i32, ptr %386, align 4, !tbaa !5
  %4688 = call ptr @s2n_strerror(i32 noundef %4687, ptr noundef nonnull @.str.4) #12
  %4689 = load i32, ptr %386, align 4, !tbaa !5
  %4690 = call ptr @s2n_strerror_debug(i32 noundef %4689, ptr noundef nonnull @.str.4) #12
  %4691 = load i32, ptr %440, align 4, !tbaa !5
  %4692 = call ptr @strerror(i32 noundef %4691) #12
  %4693 = load i32, ptr %440, align 4, !tbaa !5
  %4694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4685, ptr noundef nonnull %.str.5.sink2397, i32 noundef %4686, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 427, ptr noundef %4688, ptr noundef %4690, ptr noundef %4692, i32 noundef %4693) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4695:                                             ; preds = %4669
  %4696 = add nsw i32 %4563, 6
  store i32 %4696, ptr @test_count, align 4, !tbaa !5
  %4697 = call zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef nonnull %4146) #12
  br i1 %4697, label %4720, label %4698

4698:                                             ; preds = %4695
  %4699 = load i32, ptr %440, align 4, !tbaa !5
  %4700 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4701 = call i32 @s2n_print_stacktrace(ptr noundef %4700) #12
  %4702 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4703 = trunc nuw i8 %4702 to i1
  br i1 %4703, label %4704, label %4708

4704:                                             ; preds = %4698
  %4705 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4706 = call i32 @fileno(ptr noundef %4705) #12
  %4707 = call i32 @isatty(i32 noundef %4706) #12
  %.not752 = icmp eq i32 %4707, 0
  br i1 %.not752, label %4708, label %4709

4708:                                             ; preds = %4704, %4698
  br label %4709

4709:                                             ; preds = %4704, %4708
  %.str.5.sink2406 = phi ptr [ @.str.5, %4708 ], [ @.str.2, %4704 ]
  store i32 %4699, ptr %440, align 4, !tbaa !5
  %4710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4711 = load i32, ptr @test_count, align 4, !tbaa !5
  %4712 = load i32, ptr %386, align 4, !tbaa !5
  %4713 = call ptr @s2n_strerror(i32 noundef %4712, ptr noundef nonnull @.str.4) #12
  %4714 = load i32, ptr %386, align 4, !tbaa !5
  %4715 = call ptr @s2n_strerror_debug(i32 noundef %4714, ptr noundef nonnull @.str.4) #12
  %4716 = load i32, ptr %440, align 4, !tbaa !5
  %4717 = call ptr @strerror(i32 noundef %4716) #12
  %4718 = load i32, ptr %440, align 4, !tbaa !5
  %4719 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4710, ptr noundef nonnull %.str.5.sink2406, i32 noundef %4711, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 428, ptr noundef %4713, ptr noundef %4715, ptr noundef %4717, i32 noundef %4718) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4720:                                             ; preds = %4695
  %4721 = load i32, ptr @test_count, align 4, !tbaa !5
  %4722 = add nsw i32 %4721, 1
  store i32 %4722, ptr @test_count, align 4, !tbaa !5
  %4723 = call i32 @s2n_connection_free(ptr noundef nonnull %4146) #12
  %4724 = icmp eq i32 %4723, -1
  br i1 %4724, label %4725, label %4765

4725:                                             ; preds = %4720
  %4726 = load i32, ptr %440, align 4, !tbaa !5
  %4727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4728 = call i32 @s2n_print_stacktrace(ptr noundef %4727) #12
  %4729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4730 = trunc nuw i8 %4729 to i1
  br i1 %4730, label %4731, label %4735

4731:                                             ; preds = %4725
  %4732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4733 = call i32 @fileno(ptr noundef %4732) #12
  %4734 = call i32 @isatty(i32 noundef %4733) #12
  %.not758 = icmp eq i32 %4734, 0
  br i1 %.not758, label %4735, label %4736

4735:                                             ; preds = %4731, %4725
  br label %4736

4736:                                             ; preds = %4731, %4735
  %.str.5.sink2415 = phi ptr [ @.str.5, %4735 ], [ @.str.2, %4731 ]
  store i32 %4726, ptr %440, align 4, !tbaa !5
  %4737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4738 = load i32, ptr @test_count, align 4, !tbaa !5
  %4739 = load i32, ptr %386, align 4, !tbaa !5
  %4740 = call ptr @s2n_strerror(i32 noundef %4739, ptr noundef nonnull @.str.4) #12
  %4741 = load i32, ptr %386, align 4, !tbaa !5
  %4742 = call ptr @s2n_strerror_debug(i32 noundef %4741, ptr noundef nonnull @.str.4) #12
  %4743 = load i32, ptr %440, align 4, !tbaa !5
  %4744 = call ptr @strerror(i32 noundef %4743) #12
  %4745 = load i32, ptr %440, align 4, !tbaa !5
  %4746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4737, ptr noundef nonnull %.str.5.sink2415, i32 noundef %4738, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 430, ptr noundef %4740, ptr noundef %4742, ptr noundef %4744, i32 noundef %4745) #14
  call void @exit(i32 noundef 1) #15
  unreachable

.critedge:                                        ; preds = %2333
  %4747 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.47, ptr %4747, align 8, !tbaa !66
  %4748 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.47, i64 21), i32 noundef 47) #16
  %.not701 = icmp eq ptr %4748, null
  %4749 = getelementptr inbounds i8, ptr %4748, i64 1
  %4750 = select i1 %.not701, ptr getelementptr inbounds (i8, ptr @.str.47, i64 21), ptr %4749
  %4751 = getelementptr inbounds i8, ptr %4747, i64 8
  store ptr %4750, ptr %4751, align 8, !tbaa !68
  store i32 402653193, ptr %386, align 4, !tbaa !5
  %4752 = call i32 @s2n_calculate_stacktrace() #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %.thread877

.critedge849:                                     ; preds = %2789
  %4753 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.51, ptr %4753, align 8, !tbaa !66
  %4754 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.51, i64 21), i32 noundef 47) #16
  %.not711 = icmp eq ptr %4754, null
  %4755 = getelementptr inbounds i8, ptr %4754, i64 1
  %4756 = select i1 %.not711, ptr getelementptr inbounds (i8, ptr @.str.51, i64 21), ptr %4755
  %4757 = getelementptr inbounds i8, ptr %4753, i64 8
  store ptr %4756, ptr %4757, align 8, !tbaa !68
  store i32 402653193, ptr %386, align 4, !tbaa !5
  %4758 = call i32 @s2n_calculate_stacktrace() #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %.thread877

.critedge851:                                     ; preds = %3870
  %4759 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.57, ptr %4759, align 8, !tbaa !66
  %4760 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.57, i64 21), i32 noundef 47) #16
  %.not734 = icmp eq ptr %4760, null
  %4761 = getelementptr inbounds i8, ptr %4760, i64 1
  %4762 = select i1 %.not734, ptr getelementptr inbounds (i8, ptr @.str.57, i64 21), ptr %4761
  %4763 = getelementptr inbounds i8, ptr %4759, i64 8
  store ptr %4762, ptr %4763, align 8, !tbaa !68
  store i32 402653193, ptr %386, align 4, !tbaa !5
  %4764 = call i32 @s2n_calculate_stacktrace() #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  br label %.thread877

.thread877:                                       ; preds = %.critedge, %.critedge849, %.critedge851
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #12
  br label %4836

4765:                                             ; preds = %4720
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #12
  %4766 = call i32 @s2n_cleanup() #12
  %4767 = icmp eq i32 %4766, -1
  br i1 %4767, label %4768, label %4790

4768:                                             ; preds = %4765
  %4769 = load i32, ptr %440, align 4, !tbaa !5
  %4770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4771 = call i32 @s2n_print_stacktrace(ptr noundef %4770) #12
  %4772 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4773 = trunc nuw i8 %4772 to i1
  br i1 %4773, label %4774, label %4778

4774:                                             ; preds = %4768
  %4775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4776 = call i32 @fileno(ptr noundef %4775) #12
  %4777 = call i32 @isatty(i32 noundef %4776) #12
  %.not757 = icmp eq i32 %4777, 0
  br i1 %.not757, label %4778, label %4779

4778:                                             ; preds = %4774, %4768
  br label %4779

4779:                                             ; preds = %4774, %4778
  %.str.5.sink2424 = phi ptr [ @.str.5, %4778 ], [ @.str.2, %4774 ]
  store i32 %4769, ptr %440, align 4, !tbaa !5
  %4780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4781 = load i32, ptr @test_count, align 4, !tbaa !5
  %4782 = load i32, ptr %386, align 4, !tbaa !5
  %4783 = call ptr @s2n_strerror(i32 noundef %4782, ptr noundef nonnull @.str.4) #12
  %4784 = load i32, ptr %386, align 4, !tbaa !5
  %4785 = call ptr @s2n_strerror_debug(i32 noundef %4784, ptr noundef nonnull @.str.4) #12
  %4786 = load i32, ptr %440, align 4, !tbaa !5
  %4787 = call ptr @strerror(i32 noundef %4786) #12
  %4788 = load i32, ptr %440, align 4, !tbaa !5
  %4789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4780, ptr noundef nonnull %.str.5.sink2424, i32 noundef %4781, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 433, ptr noundef %4783, ptr noundef %4785, ptr noundef %4787, i32 noundef %4788) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4790:                                             ; preds = %4765
  %4791 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %4792 = icmp eq i32 %4791, -1
  br i1 %4792, label %4793, label %4815

4793:                                             ; preds = %4790
  %4794 = load i32, ptr %440, align 4, !tbaa !5
  %4795 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4796 = call i32 @s2n_print_stacktrace(ptr noundef %4795) #12
  %4797 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4798 = trunc nuw i8 %4797 to i1
  br i1 %4798, label %4799, label %4803

4799:                                             ; preds = %4793
  %4800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4801 = call i32 @fileno(ptr noundef %4800) #12
  %4802 = call i32 @isatty(i32 noundef %4801) #12
  %.not756 = icmp eq i32 %4802, 0
  br i1 %.not756, label %4803, label %4804

4803:                                             ; preds = %4799, %4793
  br label %4804

4804:                                             ; preds = %4799, %4803
  %.str.5.sink2433 = phi ptr [ @.str.5, %4803 ], [ @.str.2, %4799 ]
  store i32 %4794, ptr %440, align 4, !tbaa !5
  %4805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4806 = load i32, ptr @test_count, align 4, !tbaa !5
  %4807 = load i32, ptr %386, align 4, !tbaa !5
  %4808 = call ptr @s2n_strerror(i32 noundef %4807, ptr noundef nonnull @.str.4) #12
  %4809 = load i32, ptr %386, align 4, !tbaa !5
  %4810 = call ptr @s2n_strerror_debug(i32 noundef %4809, ptr noundef nonnull @.str.4) #12
  %4811 = load i32, ptr %440, align 4, !tbaa !5
  %4812 = call ptr @strerror(i32 noundef %4811) #12
  %4813 = load i32, ptr %440, align 4, !tbaa !5
  %4814 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4805, ptr noundef nonnull %.str.5.sink2433, i32 noundef %4806, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 433, ptr noundef %4808, ptr noundef %4810, ptr noundef %4812, i32 noundef %4813) #14
  call void @exit(i32 noundef 1) #15
  unreachable

4815:                                             ; preds = %4790
  %4816 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4817 = trunc nuw i8 %4816 to i1
  br i1 %4817, label %4818, label %4829

4818:                                             ; preds = %4815
  %4819 = load ptr, ptr @stdout, align 8, !tbaa !9
  %4820 = call i32 @fileno(ptr noundef %4819) #12
  %4821 = call i32 @isatty(i32 noundef %4820) #12
  %.not753 = icmp eq i32 %4821, 0
  br i1 %.not753, label %4829, label %4822

4822:                                             ; preds = %4818
  %4823 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not755 = icmp eq i32 %4823, 0
  %4824 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not755, label %4827, label %4825

4825:                                             ; preds = %4822
  %4826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4824, ptr noundef nonnull @.str.11, i32 noundef %4823) #12
  br label %4836

4827:                                             ; preds = %4822
  %4828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4824, ptr noundef nonnull @.str.12) #12
  br label %4836

4829:                                             ; preds = %4818, %4815
  %4830 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not754 = icmp eq i32 %4830, 0
  %4831 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not754, label %4834, label %4832

4832:                                             ; preds = %4829
  %4833 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4831, ptr noundef nonnull @.str.13, i32 noundef %4830) #12
  br label %4836

4834:                                             ; preds = %4829
  %4835 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4831, ptr noundef nonnull @.str.14) #12
  br label %4836

4836:                                             ; preds = %.thread877, %4827, %4825, %4834, %4832, %200, %198, %207, %205
  %.10 = phi i32 [ 0, %205 ], [ 0, %207 ], [ 0, %198 ], [ 0, %200 ], [ 0, %4832 ], [ 0, %4834 ], [ 0, %4825 ], [ 0, %4827 ], [ -1, %.thread877 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #12
  ret i32 %.10
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

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

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_set_all_protocol_versions(ptr noundef, i8 noundef zeroext) local_unnamed_addr #2

declare i32 @s2n_extensions_server_key_share_select(ptr noundef) local_unnamed_addr #2

declare void @s2n_debug_info_reset() local_unnamed_addr #2

declare zeroext i1 @s2n_is_hello_retry_handshake(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

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

declare i32 @s2n_ecc_evp_generate_ephemeral_key(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_set_all_mutually_supported_groups(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare ptr @strrchr(ptr noundef, i32 noundef) local_unnamed_addr #10

declare i32 @s2n_calculate_stacktrace() local_unnamed_addr #2

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LowerExpectIntrinsicPass,SROAPass,SimplifyCFGPass,TailCallElimPass