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

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

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, i32 }
%union.anon = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_crypto_parameters = type { ptr, %struct.s2n_session_key, %struct.s2n_session_key, %struct.s2n_hmac_state, %struct.s2n_hmac_state, [16 x i8], [16 x i8], [8 x i8], [8 x i8] }
%struct.s2n_session_key = type { ptr }
%struct.s2n_hmac_state = type { i32, i16, i32, i16, i8, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, [128 x i8], [64 x i8] }
%struct.s2n_hash_state = type { ptr, i32, i8, i64, %union.anon.0 }
%union.anon.0 = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { 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 [83 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [46 x i8], align 1
@s2n_ecdhe_rsa_with_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@.str.9 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [191 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [25 x i8], align 1

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

45:                                               ; preds = %2
  br label %46

46:                                               ; preds = %45
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %47 = load ptr, ptr @stdout, align 8, !tbaa !9
  %48 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef @.str, ptr noundef @.str.1) #7
  %49 = load ptr, ptr @stdout, align 8, !tbaa !9
  %50 = call i32 @fflush(ptr noundef %49)
  br label %51

51:                                               ; preds = %46
  %52 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %53 = icmp eq i32 %52, -1
  br i1 %53, label %54, label %105

54:                                               ; preds = %51
  br label %55

55:                                               ; preds = %54
  br label %56

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  %57 = call ptr @__errno_location() #8
  %58 = load i32, ptr %57, align 4, !tbaa !5
  store i32 %58, ptr %6, align 4, !tbaa !5
  %59 = load ptr, ptr @stderr, align 8, !tbaa !9
  %60 = call i32 @s2n_print_stacktrace(ptr noundef %59)
  %61 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %62 = trunc i8 %61 to i1
  br i1 %62, label %63, label %85

63:                                               ; preds = %56
  %64 = load ptr, ptr @stderr, align 8, !tbaa !9
  %65 = call i32 @fileno(ptr noundef %64) #7
  %66 = call i32 @isatty(i32 noundef %65) #7
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %85

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

85:                                               ; preds = %63, %56
  %86 = load i32, ptr %6, align 4, !tbaa !5
  %87 = call ptr @__errno_location() #8
  store i32 %86, ptr %87, align 4, !tbaa !5
  %88 = load ptr, ptr @stderr, align 8, !tbaa !9
  %89 = load i32, ptr @test_count, align 4, !tbaa !5
  %90 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = call ptr @s2n_strerror(i32 noundef %91, ptr noundef @.str.4)
  %93 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = call ptr @s2n_strerror_debug(i32 noundef %94, ptr noundef @.str.4)
  %96 = call ptr @__errno_location() #8
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call ptr @strerror(i32 noundef %97) #7
  %99 = call ptr @__errno_location() #8
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %88, ptr noundef @.str.5, i32 noundef %89, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 23, ptr noundef %92, ptr noundef %95, ptr noundef %98, i32 noundef %100) #7
  br label %102

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

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

104:                                              ; No predecessors!
  br label %105

105:                                              ; preds = %104, %51
  br label %106

106:                                              ; preds = %105
  br label %107

107:                                              ; preds = %106
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr @test_count, align 4, !tbaa !5
  %110 = call i32 @s2n_enable_atexit()
  %111 = icmp eq i32 %110, -1
  br i1 %111, label %112, label %163

112:                                              ; preds = %107
  br label %113

113:                                              ; preds = %112
  br label %114

114:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %115 = call ptr @__errno_location() #8
  %116 = load i32, ptr %115, align 4, !tbaa !5
  store i32 %116, ptr %7, align 4, !tbaa !5
  %117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %118 = call i32 @s2n_print_stacktrace(ptr noundef %117)
  %119 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %120 = trunc i8 %119 to i1
  br i1 %120, label %121, label %143

121:                                              ; preds = %114
  %122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %123 = call i32 @fileno(ptr noundef %122) #7
  %124 = call i32 @isatty(i32 noundef %123) #7
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %126, label %143

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

143:                                              ; preds = %121, %114
  %144 = load i32, ptr %7, align 4, !tbaa !5
  %145 = call ptr @__errno_location() #8
  store i32 %144, ptr %145, align 4, !tbaa !5
  %146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %147 = load i32, ptr @test_count, align 4, !tbaa !5
  %148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = call ptr @s2n_strerror(i32 noundef %149, ptr noundef @.str.4)
  %151 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = call ptr @s2n_strerror_debug(i32 noundef %152, ptr noundef @.str.4)
  %154 = call ptr @__errno_location() #8
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = call ptr @strerror(i32 noundef %155) #7
  %157 = call ptr @__errno_location() #8
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %146, ptr noundef @.str.5, i32 noundef %147, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 23, ptr noundef %150, ptr noundef %153, ptr noundef %156, i32 noundef %158) #7
  br label %160

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

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

162:                                              ; No predecessors!
  br label %163

163:                                              ; preds = %162, %107
  br label %164

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %164
  br label %166

166:                                              ; preds = %165
  %167 = call i32 @s2n_init()
  %168 = icmp eq i32 %167, -1
  br i1 %168, label %169, label %220

169:                                              ; preds = %166
  br label %170

170:                                              ; preds = %169
  br label %171

171:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %172 = call ptr @__errno_location() #8
  %173 = load i32, ptr %172, align 4, !tbaa !5
  store i32 %173, ptr %8, align 4, !tbaa !5
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = call i32 @s2n_print_stacktrace(ptr noundef %174)
  %176 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %177 = trunc i8 %176 to i1
  br i1 %177, label %178, label %200

178:                                              ; preds = %171
  %179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %180 = call i32 @fileno(ptr noundef %179) #7
  %181 = call i32 @isatty(i32 noundef %180) #7
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %200

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

200:                                              ; preds = %178, %171
  %201 = load i32, ptr %8, align 4, !tbaa !5
  %202 = call ptr @__errno_location() #8
  store i32 %201, ptr %202, align 4, !tbaa !5
  %203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %204 = load i32, ptr @test_count, align 4, !tbaa !5
  %205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = call ptr @s2n_strerror(i32 noundef %206, ptr noundef @.str.4)
  %208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %210 = call ptr @s2n_strerror_debug(i32 noundef %209, ptr noundef @.str.4)
  %211 = call ptr @__errno_location() #8
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call ptr @strerror(i32 noundef %212) #7
  %214 = call ptr @__errno_location() #8
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %203, ptr noundef @.str.5, i32 noundef %204, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 23, ptr noundef %207, ptr noundef %210, ptr noundef %213, i32 noundef %215) #7
  br label %217

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

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

219:                                              ; No predecessors!
  br label %220

220:                                              ; preds = %219, %166
  br label %221

221:                                              ; preds = %220
  br label %222

222:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %223 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %223, ptr %9, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %222
  %225 = load i32, ptr @test_count, align 4, !tbaa !5
  %226 = add nsw i32 %225, 1
  store i32 %226, ptr @test_count, align 4, !tbaa !5
  %227 = load ptr, ptr %9, align 8, !tbaa !9
  %228 = icmp eq ptr %227, null
  br i1 %228, label %229, label %282

229:                                              ; preds = %224
  br label %230

230:                                              ; preds = %229
  br label %231

231:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %232 = call ptr @__errno_location() #8
  %233 = load i32, ptr %232, align 4, !tbaa !5
  store i32 %233, ptr %10, align 4, !tbaa !5
  %234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %235 = call i32 @s2n_print_stacktrace(ptr noundef %234)
  %236 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %237 = trunc i8 %236 to i1
  br i1 %237, label %238, label %260

238:                                              ; preds = %231
  %239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %240 = call i32 @fileno(ptr noundef %239) #7
  %241 = call i32 @isatty(i32 noundef %240) #7
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %243, label %260

243:                                              ; preds = %238
  %244 = load i32, ptr %10, align 4, !tbaa !5
  %245 = call ptr @__errno_location() #8
  store i32 %244, ptr %245, align 4, !tbaa !5
  %246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %247 = load i32, ptr @test_count, align 4, !tbaa !5
  %248 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = call ptr @s2n_strerror(i32 noundef %249, ptr noundef @.str.4)
  %251 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %252 = load i32, ptr %251, align 4, !tbaa !5
  %253 = call ptr @s2n_strerror_debug(i32 noundef %252, ptr noundef @.str.4)
  %254 = call ptr @__errno_location() #8
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = call ptr @strerror(i32 noundef %255) #7
  %257 = call ptr @__errno_location() #8
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %246, ptr noundef @.str.2, i32 noundef %247, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 28, ptr noundef %250, ptr noundef %253, ptr noundef %256, i32 noundef %258) #7
  br label %277

260:                                              ; preds = %238, %231
  %261 = load i32, ptr %10, align 4, !tbaa !5
  %262 = call ptr @__errno_location() #8
  store i32 %261, ptr %262, align 4, !tbaa !5
  %263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %264 = load i32, ptr @test_count, align 4, !tbaa !5
  %265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %266 = load i32, ptr %265, align 4, !tbaa !5
  %267 = call ptr @s2n_strerror(i32 noundef %266, ptr noundef @.str.4)
  %268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %270 = call ptr @s2n_strerror_debug(i32 noundef %269, ptr noundef @.str.4)
  %271 = call ptr @__errno_location() #8
  %272 = load i32, ptr %271, align 4, !tbaa !5
  %273 = call ptr @strerror(i32 noundef %272) #7
  %274 = call ptr @__errno_location() #8
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %263, ptr noundef @.str.5, i32 noundef %264, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 28, ptr noundef %267, ptr noundef %270, ptr noundef %273, i32 noundef %275) #7
  br label %277

277:                                              ; preds = %260, %243
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %278

278:                                              ; preds = %277
  br label %279

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

280:                                              ; No predecessors!
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281, %224
  br label %283

283:                                              ; preds = %282
  br label %284

284:                                              ; preds = %283
  %285 = load ptr, ptr %9, align 8, !tbaa !9
  %286 = getelementptr inbounds %struct.s2n_connection, ptr %285, i32 0, i32 27
  %287 = load ptr, ptr %286, align 8, !tbaa !15
  %288 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %287, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %288, align 8, !tbaa !42
  %289 = load ptr, ptr %9, align 8, !tbaa !9
  %290 = getelementptr inbounds %struct.s2n_connection, ptr %289, i32 0, i32 23
  store i8 33, ptr %290, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %291 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %291, ptr %11, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %284
  %293 = load i32, ptr @test_count, align 4, !tbaa !5
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr @test_count, align 4, !tbaa !5
  %295 = load ptr, ptr %11, align 8, !tbaa !9
  %296 = icmp eq ptr %295, null
  br i1 %296, label %297, label %350

297:                                              ; preds = %292
  br label %298

298:                                              ; preds = %297
  br label %299

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

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

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

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

345:                                              ; preds = %328, %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %346

346:                                              ; preds = %345
  br label %347

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

348:                                              ; No predecessors!
  br label %349

349:                                              ; preds = %348
  br label %350

350:                                              ; preds = %349, %292
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  %353 = load ptr, ptr %11, align 8, !tbaa !9
  %354 = getelementptr inbounds %struct.s2n_connection, ptr %353, i32 0, i32 27
  %355 = load ptr, ptr %354, align 8, !tbaa !15
  %356 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %355, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %356, align 8, !tbaa !42
  %357 = load ptr, ptr %11, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.s2n_connection, ptr %357, i32 0, i32 23
  store i8 33, ptr %358, align 4, !tbaa !47
  br label %359

359:                                              ; preds = %352
  %360 = load ptr, ptr %9, align 8, !tbaa !9
  %361 = call i32 @s2n_prf_client_finished(ptr noundef %360)
  %362 = icmp sgt i32 %361, -1
  br i1 %362, label %364, label %363

363:                                              ; preds = %359
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %701

364:                                              ; preds = %359
  br label %365

365:                                              ; preds = %364
  br label %366

366:                                              ; preds = %365
  br label %367

367:                                              ; preds = %366
  %368 = load i32, ptr @test_count, align 4, !tbaa !5
  %369 = add nsw i32 %368, 1
  store i32 %369, ptr @test_count, align 4, !tbaa !5
  %370 = load ptr, ptr %11, align 8, !tbaa !9
  %371 = getelementptr inbounds %struct.s2n_connection, ptr %370, i32 0, i32 29
  %372 = load ptr, ptr %371, align 8, !tbaa !48
  %373 = load ptr, ptr %11, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.s2n_connection, ptr %373, i32 0, i32 26
  %375 = load ptr, ptr %374, align 8, !tbaa !49
  %376 = icmp eq ptr %372, %375
  br i1 %376, label %430, label %377

377:                                              ; preds = %367
  br label %378

378:                                              ; preds = %377
  br label %379

379:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %380 = call ptr @__errno_location() #8
  %381 = load i32, ptr %380, align 4, !tbaa !5
  store i32 %381, ptr %14, align 4, !tbaa !5
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = call i32 @s2n_print_stacktrace(ptr noundef %382)
  %384 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %385 = trunc i8 %384 to i1
  br i1 %385, label %386, label %408

386:                                              ; preds = %379
  %387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %388 = call i32 @fileno(ptr noundef %387) #7
  %389 = call i32 @isatty(i32 noundef %388) #7
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %408

391:                                              ; preds = %386
  %392 = load i32, ptr %14, align 4, !tbaa !5
  %393 = call ptr @__errno_location() #8
  store i32 %392, ptr %393, align 4, !tbaa !5
  %394 = load ptr, ptr @stderr, align 8, !tbaa !9
  %395 = load i32, ptr @test_count, align 4, !tbaa !5
  %396 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %397 = load i32, ptr %396, align 4, !tbaa !5
  %398 = call ptr @s2n_strerror(i32 noundef %397, ptr noundef @.str.4)
  %399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %401 = call ptr @s2n_strerror_debug(i32 noundef %400, ptr noundef @.str.4)
  %402 = call ptr @__errno_location() #8
  %403 = load i32, ptr %402, align 4, !tbaa !5
  %404 = call ptr @strerror(i32 noundef %403) #7
  %405 = call ptr @__errno_location() #8
  %406 = load i32, ptr %405, align 4, !tbaa !5
  %407 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %394, ptr noundef @.str.2, i32 noundef %395, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 40, ptr noundef %398, ptr noundef %401, ptr noundef %404, i32 noundef %406) #7
  br label %425

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

425:                                              ; preds = %408, %391
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %426

426:                                              ; preds = %425
  br label %427

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

428:                                              ; No predecessors!
  br label %429

429:                                              ; preds = %428
  br label %430

430:                                              ; preds = %429, %367
  br label %431

431:                                              ; preds = %430
  br label %432

432:                                              ; preds = %431
  br label %433

433:                                              ; preds = %432
  %434 = load i32, ptr @test_count, align 4, !tbaa !5
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr @test_count, align 4, !tbaa !5
  %436 = load ptr, ptr %11, align 8, !tbaa !9
  %437 = call i32 @s2n_client_finished_send(ptr noundef %436)
  %438 = icmp eq i32 %437, -1
  br i1 %438, label %439, label %492

439:                                              ; preds = %433
  br label %440

440:                                              ; preds = %439
  br label %441

441:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %442 = call ptr @__errno_location() #8
  %443 = load i32, ptr %442, align 4, !tbaa !5
  store i32 %443, ptr %15, align 4, !tbaa !5
  %444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %445 = call i32 @s2n_print_stacktrace(ptr noundef %444)
  %446 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %447 = trunc i8 %446 to i1
  br i1 %447, label %448, label %470

448:                                              ; preds = %441
  %449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %450 = call i32 @fileno(ptr noundef %449) #7
  %451 = call i32 @isatty(i32 noundef %450) #7
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %453, label %470

453:                                              ; preds = %448
  %454 = load i32, ptr %15, align 4, !tbaa !5
  %455 = call ptr @__errno_location() #8
  store i32 %454, ptr %455, align 4, !tbaa !5
  %456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %457 = load i32, ptr @test_count, align 4, !tbaa !5
  %458 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %459 = load i32, ptr %458, align 4, !tbaa !5
  %460 = call ptr @s2n_strerror(i32 noundef %459, ptr noundef @.str.4)
  %461 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %462 = load i32, ptr %461, align 4, !tbaa !5
  %463 = call ptr @s2n_strerror_debug(i32 noundef %462, ptr noundef @.str.4)
  %464 = call ptr @__errno_location() #8
  %465 = load i32, ptr %464, align 4, !tbaa !5
  %466 = call ptr @strerror(i32 noundef %465) #7
  %467 = call ptr @__errno_location() #8
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %456, ptr noundef @.str.2, i32 noundef %457, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 42, ptr noundef %460, ptr noundef %463, ptr noundef %466, i32 noundef %468) #7
  br label %487

470:                                              ; preds = %448, %441
  %471 = load i32, ptr %15, align 4, !tbaa !5
  %472 = call ptr @__errno_location() #8
  store i32 %471, ptr %472, align 4, !tbaa !5
  %473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %474 = load i32, ptr @test_count, align 4, !tbaa !5
  %475 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %476 = load i32, ptr %475, align 4, !tbaa !5
  %477 = call ptr @s2n_strerror(i32 noundef %476, ptr noundef @.str.4)
  %478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %479 = load i32, ptr %478, align 4, !tbaa !5
  %480 = call ptr @s2n_strerror_debug(i32 noundef %479, ptr noundef @.str.4)
  %481 = call ptr @__errno_location() #8
  %482 = load i32, ptr %481, align 4, !tbaa !5
  %483 = call ptr @strerror(i32 noundef %482) #7
  %484 = call ptr @__errno_location() #8
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %486 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %473, ptr noundef @.str.5, i32 noundef %474, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 42, ptr noundef %477, ptr noundef %480, ptr noundef %483, i32 noundef %485) #7
  br label %487

487:                                              ; preds = %470, %453
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %488

488:                                              ; preds = %487
  br label %489

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

490:                                              ; No predecessors!
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491, %433
  br label %493

493:                                              ; preds = %492
  br label %494

494:                                              ; preds = %493
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr @test_count, align 4, !tbaa !5
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr @test_count, align 4, !tbaa !5
  %498 = load ptr, ptr %11, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.s2n_connection, ptr %498, i32 0, i32 52
  %500 = getelementptr inbounds %struct.s2n_handshake, ptr %499, i32 0, i32 0
  %501 = load ptr, ptr %9, align 8, !tbaa !9
  %502 = getelementptr inbounds %struct.s2n_connection, ptr %501, i32 0, i32 52
  %503 = getelementptr inbounds %struct.s2n_handshake, ptr %502, i32 0, i32 0
  %504 = load ptr, ptr %11, align 8, !tbaa !9
  %505 = getelementptr inbounds %struct.s2n_connection, ptr %504, i32 0, i32 52
  %506 = getelementptr inbounds %struct.s2n_handshake, ptr %505, i32 0, i32 0
  %507 = getelementptr inbounds %struct.s2n_stuffer, ptr %506, i32 0, i32 2
  %508 = load i32, ptr %507, align 4, !tbaa !50
  %509 = load ptr, ptr %11, align 8, !tbaa !9
  %510 = getelementptr inbounds %struct.s2n_connection, ptr %509, i32 0, i32 52
  %511 = getelementptr inbounds %struct.s2n_handshake, ptr %510, i32 0, i32 0
  %512 = getelementptr inbounds %struct.s2n_stuffer, ptr %511, i32 0, i32 1
  %513 = load i32, ptr %512, align 8, !tbaa !51
  %514 = sub i32 %508, %513
  %515 = call i32 @s2n_stuffer_copy(ptr noundef %500, ptr noundef %503, i32 noundef %514)
  %516 = icmp eq i32 %515, -1
  br i1 %516, label %517, label %570

517:                                              ; preds = %495
  br label %518

518:                                              ; preds = %517
  br label %519

519:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %520 = call ptr @__errno_location() #8
  %521 = load i32, ptr %520, align 4, !tbaa !5
  store i32 %521, ptr %16, align 4, !tbaa !5
  %522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %523 = call i32 @s2n_print_stacktrace(ptr noundef %522)
  %524 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %525 = trunc i8 %524 to i1
  br i1 %525, label %526, label %548

526:                                              ; preds = %519
  %527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %528 = call i32 @fileno(ptr noundef %527) #7
  %529 = call i32 @isatty(i32 noundef %528) #7
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %548

531:                                              ; preds = %526
  %532 = load i32, ptr %16, align 4, !tbaa !5
  %533 = call ptr @__errno_location() #8
  store i32 %532, ptr %533, align 4, !tbaa !5
  %534 = load ptr, ptr @stderr, align 8, !tbaa !9
  %535 = load i32, ptr @test_count, align 4, !tbaa !5
  %536 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %537 = load i32, ptr %536, align 4, !tbaa !5
  %538 = call ptr @s2n_strerror(i32 noundef %537, ptr noundef @.str.4)
  %539 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %540 = load i32, ptr %539, align 4, !tbaa !5
  %541 = call ptr @s2n_strerror_debug(i32 noundef %540, ptr noundef @.str.4)
  %542 = call ptr @__errno_location() #8
  %543 = load i32, ptr %542, align 4, !tbaa !5
  %544 = call ptr @strerror(i32 noundef %543) #7
  %545 = call ptr @__errno_location() #8
  %546 = load i32, ptr %545, align 4, !tbaa !5
  %547 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %534, ptr noundef @.str.2, i32 noundef %535, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 44, ptr noundef %538, ptr noundef %541, ptr noundef %544, i32 noundef %546) #7
  br label %565

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

565:                                              ; preds = %548, %531
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %566

566:                                              ; preds = %565
  br label %567

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

568:                                              ; No predecessors!
  br label %569

569:                                              ; preds = %568
  br label %570

570:                                              ; preds = %569, %495
  br label %571

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571
  br label %573

573:                                              ; preds = %572
  %574 = load i32, ptr @test_count, align 4, !tbaa !5
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr @test_count, align 4, !tbaa !5
  %576 = load ptr, ptr %9, align 8, !tbaa !9
  %577 = call i32 @s2n_client_finished_recv(ptr noundef %576)
  %578 = icmp eq i32 %577, -1
  br i1 %578, label %579, label %632

579:                                              ; preds = %573
  br label %580

580:                                              ; preds = %579
  br label %581

581:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %582 = call ptr @__errno_location() #8
  %583 = load i32, ptr %582, align 4, !tbaa !5
  store i32 %583, ptr %17, align 4, !tbaa !5
  %584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %585 = call i32 @s2n_print_stacktrace(ptr noundef %584)
  %586 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %587 = trunc i8 %586 to i1
  br i1 %587, label %588, label %610

588:                                              ; preds = %581
  %589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %590 = call i32 @fileno(ptr noundef %589) #7
  %591 = call i32 @isatty(i32 noundef %590) #7
  %592 = icmp ne i32 %591, 0
  br i1 %592, label %593, label %610

593:                                              ; preds = %588
  %594 = load i32, ptr %17, align 4, !tbaa !5
  %595 = call ptr @__errno_location() #8
  store i32 %594, ptr %595, align 4, !tbaa !5
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = load i32, ptr @test_count, align 4, !tbaa !5
  %598 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %599 = load i32, ptr %598, align 4, !tbaa !5
  %600 = call ptr @s2n_strerror(i32 noundef %599, ptr noundef @.str.4)
  %601 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %602 = load i32, ptr %601, align 4, !tbaa !5
  %603 = call ptr @s2n_strerror_debug(i32 noundef %602, ptr noundef @.str.4)
  %604 = call ptr @__errno_location() #8
  %605 = load i32, ptr %604, align 4, !tbaa !5
  %606 = call ptr @strerror(i32 noundef %605) #7
  %607 = call ptr @__errno_location() #8
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %596, ptr noundef @.str.2, i32 noundef %597, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 45, ptr noundef %600, ptr noundef %603, ptr noundef %606, i32 noundef %608) #7
  br label %627

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

627:                                              ; preds = %610, %593
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %628

628:                                              ; preds = %627
  br label %629

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

630:                                              ; No predecessors!
  br label %631

631:                                              ; preds = %630
  br label %632

632:                                              ; preds = %631, %573
  br label %633

633:                                              ; preds = %632
  br label %634

634:                                              ; preds = %633
  br label %635

635:                                              ; preds = %634
  %636 = load i32, ptr @test_count, align 4, !tbaa !5
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr @test_count, align 4, !tbaa !5
  %638 = load ptr, ptr %11, align 8, !tbaa !9
  %639 = getelementptr inbounds %struct.s2n_connection, ptr %638, i32 0, i32 29
  %640 = load ptr, ptr %639, align 8, !tbaa !48
  %641 = load ptr, ptr %11, align 8, !tbaa !9
  %642 = getelementptr inbounds %struct.s2n_connection, ptr %641, i32 0, i32 27
  %643 = load ptr, ptr %642, align 8, !tbaa !15
  %644 = icmp eq ptr %640, %643
  br i1 %644, label %698, label %645

645:                                              ; preds = %635
  br label %646

646:                                              ; preds = %645
  br label %647

647:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %648 = call ptr @__errno_location() #8
  %649 = load i32, ptr %648, align 4, !tbaa !5
  store i32 %649, ptr %18, align 4, !tbaa !5
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = call i32 @s2n_print_stacktrace(ptr noundef %650)
  %652 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %653 = trunc i8 %652 to i1
  br i1 %653, label %654, label %676

654:                                              ; preds = %647
  %655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %656 = call i32 @fileno(ptr noundef %655) #7
  %657 = call i32 @isatty(i32 noundef %656) #7
  %658 = icmp ne i32 %657, 0
  br i1 %658, label %659, label %676

659:                                              ; preds = %654
  %660 = load i32, ptr %18, align 4, !tbaa !5
  %661 = call ptr @__errno_location() #8
  store i32 %660, ptr %661, align 4, !tbaa !5
  %662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %663 = load i32, ptr @test_count, align 4, !tbaa !5
  %664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %665 = load i32, ptr %664, align 4, !tbaa !5
  %666 = call ptr @s2n_strerror(i32 noundef %665, ptr noundef @.str.4)
  %667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %668 = load i32, ptr %667, align 4, !tbaa !5
  %669 = call ptr @s2n_strerror_debug(i32 noundef %668, ptr noundef @.str.4)
  %670 = call ptr @__errno_location() #8
  %671 = load i32, ptr %670, align 4, !tbaa !5
  %672 = call ptr @strerror(i32 noundef %671) #7
  %673 = call ptr @__errno_location() #8
  %674 = load i32, ptr %673, align 4, !tbaa !5
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %662, ptr noundef @.str.2, i32 noundef %663, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 47, ptr noundef %666, ptr noundef %669, ptr noundef %672, i32 noundef %674) #7
  br label %693

676:                                              ; preds = %654, %647
  %677 = load i32, ptr %18, align 4, !tbaa !5
  %678 = call ptr @__errno_location() #8
  store i32 %677, ptr %678, align 4, !tbaa !5
  %679 = load ptr, ptr @stderr, align 8, !tbaa !9
  %680 = load i32, ptr @test_count, align 4, !tbaa !5
  %681 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %682 = load i32, ptr %681, align 4, !tbaa !5
  %683 = call ptr @s2n_strerror(i32 noundef %682, ptr noundef @.str.4)
  %684 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %685 = load i32, ptr %684, align 4, !tbaa !5
  %686 = call ptr @s2n_strerror_debug(i32 noundef %685, ptr noundef @.str.4)
  %687 = call ptr @__errno_location() #8
  %688 = load i32, ptr %687, align 4, !tbaa !5
  %689 = call ptr @strerror(i32 noundef %688) #7
  %690 = call ptr @__errno_location() #8
  %691 = load i32, ptr %690, align 4, !tbaa !5
  %692 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %679, ptr noundef @.str.5, i32 noundef %680, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 47, ptr noundef %683, ptr noundef %686, ptr noundef %689, i32 noundef %691) #7
  br label %693

693:                                              ; preds = %676, %659
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %694

694:                                              ; preds = %693
  br label %695

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

696:                                              ; No predecessors!
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697, %635
  br label %699

699:                                              ; preds = %698
  br label %700

700:                                              ; preds = %699
  store i32 0, ptr %13, align 4
  br label %701

701:                                              ; preds = %700, %363
  %702 = call i32 @s2n_connection_ptr_free(ptr noundef %11)
  %703 = getelementptr inbounds %struct.s2n_result, ptr %19, i32 0, i32 0
  store i32 %702, ptr %703, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  %704 = call i32 @s2n_connection_ptr_free(ptr noundef %9)
  %705 = getelementptr inbounds %struct.s2n_result, ptr %20, i32 0, i32 0
  store i32 %704, ptr %705, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  %706 = load i32, ptr %13, align 4
  switch i32 %706, label %1834 [
    i32 0, label %707
    i32 1, label %1832
  ]

707:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %708 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %708, ptr %21, align 8, !tbaa !9
  br label %709

709:                                              ; preds = %707
  %710 = load i32, ptr @test_count, align 4, !tbaa !5
  %711 = add nsw i32 %710, 1
  store i32 %711, ptr @test_count, align 4, !tbaa !5
  %712 = load ptr, ptr %21, align 8, !tbaa !9
  %713 = icmp eq ptr %712, null
  br i1 %713, label %714, label %767

714:                                              ; preds = %709
  br label %715

715:                                              ; preds = %714
  br label %716

716:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %717 = call ptr @__errno_location() #8
  %718 = load i32, ptr %717, align 4, !tbaa !5
  store i32 %718, ptr %22, align 4, !tbaa !5
  %719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %720 = call i32 @s2n_print_stacktrace(ptr noundef %719)
  %721 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %722 = trunc i8 %721 to i1
  br i1 %722, label %723, label %745

723:                                              ; preds = %716
  %724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %725 = call i32 @fileno(ptr noundef %724) #7
  %726 = call i32 @isatty(i32 noundef %725) #7
  %727 = icmp ne i32 %726, 0
  br i1 %727, label %728, label %745

728:                                              ; preds = %723
  %729 = load i32, ptr %22, align 4, !tbaa !5
  %730 = call ptr @__errno_location() #8
  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() #8
  %740 = load i32, ptr %739, align 4, !tbaa !5
  %741 = call ptr @strerror(i32 noundef %740) #7
  %742 = call ptr @__errno_location() #8
  %743 = load i32, ptr %742, align 4, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %731, ptr noundef @.str.2, i32 noundef %732, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 53, ptr noundef %735, ptr noundef %738, ptr noundef %741, i32 noundef %743) #7
  br label %762

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

762:                                              ; preds = %745, %728
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %763

763:                                              ; preds = %762
  br label %764

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

765:                                              ; No predecessors!
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766, %709
  br label %768

768:                                              ; preds = %767
  br label %769

769:                                              ; preds = %768
  %770 = load ptr, ptr %21, align 8, !tbaa !9
  %771 = getelementptr inbounds %struct.s2n_connection, ptr %770, i32 0, i32 27
  %772 = load ptr, ptr %771, align 8, !tbaa !15
  %773 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %772, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %773, align 8, !tbaa !42
  %774 = load ptr, ptr %21, align 8, !tbaa !9
  %775 = getelementptr inbounds %struct.s2n_connection, ptr %774, i32 0, i32 23
  store i8 33, ptr %775, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %776 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %776, ptr %23, align 8, !tbaa !9
  br label %777

777:                                              ; preds = %769
  %778 = load i32, ptr @test_count, align 4, !tbaa !5
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr @test_count, align 4, !tbaa !5
  %780 = load ptr, ptr %23, align 8, !tbaa !9
  %781 = icmp eq ptr %780, null
  br i1 %781, label %782, label %835

782:                                              ; preds = %777
  br label %783

783:                                              ; preds = %782
  br label %784

784:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %785 = call ptr @__errno_location() #8
  %786 = load i32, ptr %785, align 4, !tbaa !5
  store i32 %786, ptr %24, align 4, !tbaa !5
  %787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %788 = call i32 @s2n_print_stacktrace(ptr noundef %787)
  %789 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %790 = trunc i8 %789 to i1
  br i1 %790, label %791, label %813

791:                                              ; preds = %784
  %792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %793 = call i32 @fileno(ptr noundef %792) #7
  %794 = call i32 @isatty(i32 noundef %793) #7
  %795 = icmp ne i32 %794, 0
  br i1 %795, label %796, label %813

796:                                              ; preds = %791
  %797 = load i32, ptr %24, align 4, !tbaa !5
  %798 = call ptr @__errno_location() #8
  store i32 %797, ptr %798, align 4, !tbaa !5
  %799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %800 = load i32, ptr @test_count, align 4, !tbaa !5
  %801 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %802 = load i32, ptr %801, align 4, !tbaa !5
  %803 = call ptr @s2n_strerror(i32 noundef %802, ptr noundef @.str.4)
  %804 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %805 = load i32, ptr %804, align 4, !tbaa !5
  %806 = call ptr @s2n_strerror_debug(i32 noundef %805, ptr noundef @.str.4)
  %807 = call ptr @__errno_location() #8
  %808 = load i32, ptr %807, align 4, !tbaa !5
  %809 = call ptr @strerror(i32 noundef %808) #7
  %810 = call ptr @__errno_location() #8
  %811 = load i32, ptr %810, align 4, !tbaa !5
  %812 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %799, ptr noundef @.str.2, i32 noundef %800, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 58, ptr noundef %803, ptr noundef %806, ptr noundef %809, i32 noundef %811) #7
  br label %830

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

830:                                              ; preds = %813, %796
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %831

831:                                              ; preds = %830
  br label %832

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

833:                                              ; No predecessors!
  br label %834

834:                                              ; preds = %833
  br label %835

835:                                              ; preds = %834, %777
  br label %836

836:                                              ; preds = %835
  br label %837

837:                                              ; preds = %836
  %838 = load ptr, ptr %23, align 8, !tbaa !9
  %839 = getelementptr inbounds %struct.s2n_connection, ptr %838, i32 0, i32 27
  %840 = load ptr, ptr %839, align 8, !tbaa !15
  %841 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %840, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %841, align 8, !tbaa !42
  %842 = load ptr, ptr %23, align 8, !tbaa !9
  %843 = getelementptr inbounds %struct.s2n_connection, ptr %842, i32 0, i32 23
  store i8 33, ptr %843, align 4, !tbaa !47
  br label %844

844:                                              ; preds = %837
  %845 = load i32, ptr @test_count, align 4, !tbaa !5
  %846 = add nsw i32 %845, 1
  store i32 %846, ptr @test_count, align 4, !tbaa !5
  %847 = load ptr, ptr %23, align 8, !tbaa !9
  %848 = call i32 @s2n_client_finished_send(ptr noundef %847)
  %849 = icmp eq i32 %848, -1
  br i1 %849, label %850, label %903

850:                                              ; preds = %844
  br label %851

851:                                              ; preds = %850
  br label %852

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

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

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

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

898:                                              ; preds = %881, %864
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %899

899:                                              ; preds = %898
  br label %900

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

901:                                              ; No predecessors!
  br label %902

902:                                              ; preds = %901
  br label %903

903:                                              ; preds = %902, %844
  br label %904

904:                                              ; preds = %903
  br label %905

905:                                              ; preds = %904
  %906 = load ptr, ptr %23, align 8, !tbaa !9
  %907 = getelementptr inbounds %struct.s2n_connection, ptr %906, i32 0, i32 52
  %908 = getelementptr inbounds %struct.s2n_handshake, ptr %907, i32 0, i32 0
  %909 = getelementptr inbounds %struct.s2n_stuffer, ptr %908, i32 0, i32 0
  %910 = getelementptr inbounds %struct.s2n_blob, ptr %909, i32 0, i32 0
  %911 = load ptr, ptr %910, align 8, !tbaa !52
  %912 = getelementptr inbounds i8, ptr %911, i64 10
  %913 = load i8, ptr %912, align 1, !tbaa !53
  %914 = add i8 %913, 1
  store i8 %914, ptr %912, align 1, !tbaa !53
  br label %915

915:                                              ; preds = %905
  %916 = load i32, ptr @test_count, align 4, !tbaa !5
  %917 = add nsw i32 %916, 1
  store i32 %917, ptr @test_count, align 4, !tbaa !5
  %918 = load ptr, ptr %23, align 8, !tbaa !9
  %919 = getelementptr inbounds %struct.s2n_connection, ptr %918, i32 0, i32 52
  %920 = getelementptr inbounds %struct.s2n_handshake, ptr %919, i32 0, i32 0
  %921 = load ptr, ptr %21, align 8, !tbaa !9
  %922 = getelementptr inbounds %struct.s2n_connection, ptr %921, i32 0, i32 52
  %923 = getelementptr inbounds %struct.s2n_handshake, ptr %922, i32 0, i32 0
  %924 = load ptr, ptr %23, align 8, !tbaa !9
  %925 = getelementptr inbounds %struct.s2n_connection, ptr %924, i32 0, i32 52
  %926 = getelementptr inbounds %struct.s2n_handshake, ptr %925, i32 0, i32 0
  %927 = getelementptr inbounds %struct.s2n_stuffer, ptr %926, i32 0, i32 2
  %928 = load i32, ptr %927, align 4, !tbaa !50
  %929 = load ptr, ptr %23, align 8, !tbaa !9
  %930 = getelementptr inbounds %struct.s2n_connection, ptr %929, i32 0, i32 52
  %931 = getelementptr inbounds %struct.s2n_handshake, ptr %930, i32 0, i32 0
  %932 = getelementptr inbounds %struct.s2n_stuffer, ptr %931, i32 0, i32 1
  %933 = load i32, ptr %932, align 8, !tbaa !51
  %934 = sub i32 %928, %933
  %935 = call i32 @s2n_stuffer_copy(ptr noundef %920, ptr noundef %923, i32 noundef %934)
  %936 = icmp eq i32 %935, -1
  br i1 %936, label %937, label %990

937:                                              ; preds = %915
  br label %938

938:                                              ; preds = %937
  br label %939

939:                                              ; preds = %938
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %940 = call ptr @__errno_location() #8
  %941 = load i32, ptr %940, align 4, !tbaa !5
  store i32 %941, ptr %26, align 4, !tbaa !5
  %942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %943 = call i32 @s2n_print_stacktrace(ptr noundef %942)
  %944 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %945 = trunc i8 %944 to i1
  br i1 %945, label %946, label %968

946:                                              ; preds = %939
  %947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %948 = call i32 @fileno(ptr noundef %947) #7
  %949 = call i32 @isatty(i32 noundef %948) #7
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %968

951:                                              ; preds = %946
  %952 = load i32, ptr %26, align 4, !tbaa !5
  %953 = call ptr @__errno_location() #8
  store i32 %952, ptr %953, align 4, !tbaa !5
  %954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %955 = load i32, ptr @test_count, align 4, !tbaa !5
  %956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %957 = load i32, ptr %956, align 4, !tbaa !5
  %958 = call ptr @s2n_strerror(i32 noundef %957, ptr noundef @.str.4)
  %959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %960 = load i32, ptr %959, align 4, !tbaa !5
  %961 = call ptr @s2n_strerror_debug(i32 noundef %960, ptr noundef @.str.4)
  %962 = call ptr @__errno_location() #8
  %963 = load i32, ptr %962, align 4, !tbaa !5
  %964 = call ptr @strerror(i32 noundef %963) #7
  %965 = call ptr @__errno_location() #8
  %966 = load i32, ptr %965, align 4, !tbaa !5
  %967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %954, ptr noundef @.str.2, i32 noundef %955, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 69, ptr noundef %958, ptr noundef %961, ptr noundef %964, i32 noundef %966) #7
  br label %985

968:                                              ; preds = %946, %939
  %969 = load i32, ptr %26, align 4, !tbaa !5
  %970 = call ptr @__errno_location() #8
  store i32 %969, ptr %970, align 4, !tbaa !5
  %971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %972 = load i32, ptr @test_count, align 4, !tbaa !5
  %973 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %974 = load i32, ptr %973, align 4, !tbaa !5
  %975 = call ptr @s2n_strerror(i32 noundef %974, ptr noundef @.str.4)
  %976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %977 = load i32, ptr %976, align 4, !tbaa !5
  %978 = call ptr @s2n_strerror_debug(i32 noundef %977, ptr noundef @.str.4)
  %979 = call ptr @__errno_location() #8
  %980 = load i32, ptr %979, align 4, !tbaa !5
  %981 = call ptr @strerror(i32 noundef %980) #7
  %982 = call ptr @__errno_location() #8
  %983 = load i32, ptr %982, align 4, !tbaa !5
  %984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %971, ptr noundef @.str.5, i32 noundef %972, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 69, ptr noundef %975, ptr noundef %978, ptr noundef %981, i32 noundef %983) #7
  br label %985

985:                                              ; preds = %968, %951
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %986

986:                                              ; preds = %985
  br label %987

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

988:                                              ; No predecessors!
  br label %989

989:                                              ; preds = %988
  br label %990

990:                                              ; preds = %989, %915
  br label %991

991:                                              ; preds = %990
  br label %992

992:                                              ; preds = %991
  br label %993

993:                                              ; preds = %992
  br label %994

994:                                              ; preds = %993
  br label %995

995:                                              ; preds = %994
  %996 = load i32, ptr @test_count, align 4, !tbaa !5
  %997 = add nsw i32 %996, 1
  store i32 %997, ptr @test_count, align 4, !tbaa !5
  %998 = load ptr, ptr %21, align 8, !tbaa !9
  %999 = call i32 @s2n_client_finished_recv(ptr noundef %998)
  %1000 = icmp eq i32 %999, -1
  br i1 %1000, label %1054, label %1001

1001:                                             ; preds = %995
  br label %1002

1002:                                             ; preds = %1001
  br label %1003

1003:                                             ; preds = %1002
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %1004 = call ptr @__errno_location() #8
  %1005 = load i32, ptr %1004, align 4, !tbaa !5
  store i32 %1005, ptr %27, align 4, !tbaa !5
  %1006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1007 = call i32 @s2n_print_stacktrace(ptr noundef %1006)
  %1008 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1010, label %1032

1010:                                             ; preds = %1003
  %1011 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1012 = call i32 @fileno(ptr noundef %1011) #7
  %1013 = call i32 @isatty(i32 noundef %1012) #7
  %1014 = icmp ne i32 %1013, 0
  br i1 %1014, label %1015, label %1032

1015:                                             ; preds = %1010
  %1016 = load i32, ptr %27, align 4, !tbaa !5
  %1017 = call ptr @__errno_location() #8
  store i32 %1016, ptr %1017, align 4, !tbaa !5
  %1018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1019 = load i32, ptr @test_count, align 4, !tbaa !5
  %1020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1021 = load i32, ptr %1020, align 4, !tbaa !5
  %1022 = call ptr @s2n_strerror(i32 noundef %1021, ptr noundef @.str.4)
  %1023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1024 = load i32, ptr %1023, align 4, !tbaa !5
  %1025 = call ptr @s2n_strerror_debug(i32 noundef %1024, ptr noundef @.str.4)
  %1026 = call ptr @__errno_location() #8
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  %1028 = call ptr @strerror(i32 noundef %1027) #7
  %1029 = call ptr @__errno_location() #8
  %1030 = load i32, ptr %1029, align 4, !tbaa !5
  %1031 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1018, ptr noundef @.str.2, i32 noundef %1019, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 70, ptr noundef %1022, ptr noundef %1025, ptr noundef %1028, i32 noundef %1030) #7
  br label %1049

1032:                                             ; preds = %1010, %1003
  %1033 = load i32, ptr %27, align 4, !tbaa !5
  %1034 = call ptr @__errno_location() #8
  store i32 %1033, ptr %1034, align 4, !tbaa !5
  %1035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1036 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1038, ptr noundef @.str.4)
  %1040 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1041 = load i32, ptr %1040, align 4, !tbaa !5
  %1042 = call ptr @s2n_strerror_debug(i32 noundef %1041, ptr noundef @.str.4)
  %1043 = call ptr @__errno_location() #8
  %1044 = load i32, ptr %1043, align 4, !tbaa !5
  %1045 = call ptr @strerror(i32 noundef %1044) #7
  %1046 = call ptr @__errno_location() #8
  %1047 = load i32, ptr %1046, align 4, !tbaa !5
  %1048 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1035, ptr noundef @.str.5, i32 noundef %1036, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 70, ptr noundef %1039, ptr noundef %1042, ptr noundef %1045, i32 noundef %1047) #7
  br label %1049

1049:                                             ; preds = %1032, %1015
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %1050

1050:                                             ; preds = %1049
  br label %1051

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

1052:                                             ; No predecessors!
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053, %995
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

1056:                                             ; preds = %1055
  br label %1057

1057:                                             ; preds = %1056
  %1058 = load i32, ptr @test_count, align 4, !tbaa !5
  %1059 = add nsw i32 %1058, 1
  store i32 %1059, ptr @test_count, align 4, !tbaa !5
  %1060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1061 = load i32, ptr %1060, align 4, !tbaa !5
  %1062 = icmp eq i32 %1061, 335544322
  br i1 %1062, label %1116, label %1063

1063:                                             ; preds = %1057
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %1066 = call ptr @__errno_location() #8
  %1067 = load i32, ptr %1066, align 4, !tbaa !5
  store i32 %1067, ptr %28, align 4, !tbaa !5
  %1068 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1069 = call i32 @s2n_print_stacktrace(ptr noundef %1068)
  %1070 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1071 = trunc i8 %1070 to i1
  br i1 %1071, label %1072, label %1094

1072:                                             ; preds = %1065
  %1073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1074 = call i32 @fileno(ptr noundef %1073) #7
  %1075 = call i32 @isatty(i32 noundef %1074) #7
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1094

1077:                                             ; preds = %1072
  %1078 = load i32, ptr %28, align 4, !tbaa !5
  %1079 = call ptr @__errno_location() #8
  store i32 %1078, ptr %1079, align 4, !tbaa !5
  %1080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1081 = load i32, ptr @test_count, align 4, !tbaa !5
  %1082 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1083 = load i32, ptr %1082, align 4, !tbaa !5
  %1084 = call ptr @s2n_strerror(i32 noundef %1083, ptr noundef @.str.4)
  %1085 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1086 = load i32, ptr %1085, align 4, !tbaa !5
  %1087 = call ptr @s2n_strerror_debug(i32 noundef %1086, ptr noundef @.str.4)
  %1088 = call ptr @__errno_location() #8
  %1089 = load i32, ptr %1088, align 4, !tbaa !5
  %1090 = call ptr @strerror(i32 noundef %1089) #7
  %1091 = call ptr @__errno_location() #8
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  %1093 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1080, ptr noundef @.str.2, i32 noundef %1081, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 70, ptr noundef %1084, ptr noundef %1087, ptr noundef %1090, i32 noundef %1092) #7
  br label %1111

1094:                                             ; preds = %1072, %1065
  %1095 = load i32, ptr %28, align 4, !tbaa !5
  %1096 = call ptr @__errno_location() #8
  store i32 %1095, ptr %1096, align 4, !tbaa !5
  %1097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1098 = load i32, ptr @test_count, align 4, !tbaa !5
  %1099 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1100 = load i32, ptr %1099, align 4, !tbaa !5
  %1101 = call ptr @s2n_strerror(i32 noundef %1100, ptr noundef @.str.4)
  %1102 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1103 = load i32, ptr %1102, align 4, !tbaa !5
  %1104 = call ptr @s2n_strerror_debug(i32 noundef %1103, ptr noundef @.str.4)
  %1105 = call ptr @__errno_location() #8
  %1106 = load i32, ptr %1105, align 4, !tbaa !5
  %1107 = call ptr @strerror(i32 noundef %1106) #7
  %1108 = call ptr @__errno_location() #8
  %1109 = load i32, ptr %1108, align 4, !tbaa !5
  %1110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1097, ptr noundef @.str.5, i32 noundef %1098, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 70, ptr noundef %1101, ptr noundef %1104, ptr noundef %1107, i32 noundef %1109) #7
  br label %1111

1111:                                             ; preds = %1094, %1077
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %1112

1112:                                             ; preds = %1111
  br label %1113

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

1114:                                             ; No predecessors!
  br label %1115

1115:                                             ; preds = %1114
  br label %1116

1116:                                             ; preds = %1115, %1057
  br label %1117

1117:                                             ; preds = %1116
  br label %1118

1118:                                             ; preds = %1117
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i32, ptr @test_count, align 4, !tbaa !5
  %1121 = add nsw i32 %1120, 1
  store i32 %1121, ptr @test_count, align 4, !tbaa !5
  %1122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1123 = load i32, ptr %1122, align 4, !tbaa !5
  %1124 = call ptr @s2n_strerror_debug(i32 noundef %1123, ptr noundef @.str.4)
  %1125 = icmp eq ptr %1124, null
  br i1 %1125, label %1126, label %1179

1126:                                             ; preds = %1119
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %1129 = call ptr @__errno_location() #8
  %1130 = load i32, ptr %1129, align 4, !tbaa !5
  store i32 %1130, ptr %29, align 4, !tbaa !5
  %1131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1132 = call i32 @s2n_print_stacktrace(ptr noundef %1131)
  %1133 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1134 = trunc i8 %1133 to i1
  br i1 %1134, label %1135, label %1157

1135:                                             ; preds = %1128
  %1136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1137 = call i32 @fileno(ptr noundef %1136) #7
  %1138 = call i32 @isatty(i32 noundef %1137) #7
  %1139 = icmp ne i32 %1138, 0
  br i1 %1139, label %1140, label %1157

1140:                                             ; preds = %1135
  %1141 = load i32, ptr %29, align 4, !tbaa !5
  %1142 = call ptr @__errno_location() #8
  store i32 %1141, ptr %1142, align 4, !tbaa !5
  %1143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1144 = load i32, ptr @test_count, align 4, !tbaa !5
  %1145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1146 = load i32, ptr %1145, align 4, !tbaa !5
  %1147 = call ptr @s2n_strerror(i32 noundef %1146, ptr noundef @.str.4)
  %1148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1149 = load i32, ptr %1148, align 4, !tbaa !5
  %1150 = call ptr @s2n_strerror_debug(i32 noundef %1149, ptr noundef @.str.4)
  %1151 = call ptr @__errno_location() #8
  %1152 = load i32, ptr %1151, align 4, !tbaa !5
  %1153 = call ptr @strerror(i32 noundef %1152) #7
  %1154 = call ptr @__errno_location() #8
  %1155 = load i32, ptr %1154, align 4, !tbaa !5
  %1156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1143, ptr noundef @.str.2, i32 noundef %1144, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 70, ptr noundef %1147, ptr noundef %1150, ptr noundef %1153, i32 noundef %1155) #7
  br label %1174

1157:                                             ; preds = %1135, %1128
  %1158 = load i32, ptr %29, align 4, !tbaa !5
  %1159 = call ptr @__errno_location() #8
  store i32 %1158, ptr %1159, align 4, !tbaa !5
  %1160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1161 = load i32, ptr @test_count, align 4, !tbaa !5
  %1162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1163 = load i32, ptr %1162, align 4, !tbaa !5
  %1164 = call ptr @s2n_strerror(i32 noundef %1163, ptr noundef @.str.4)
  %1165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1166 = load i32, ptr %1165, align 4, !tbaa !5
  %1167 = call ptr @s2n_strerror_debug(i32 noundef %1166, ptr noundef @.str.4)
  %1168 = call ptr @__errno_location() #8
  %1169 = load i32, ptr %1168, align 4, !tbaa !5
  %1170 = call ptr @strerror(i32 noundef %1169) #7
  %1171 = call ptr @__errno_location() #8
  %1172 = load i32, ptr %1171, align 4, !tbaa !5
  %1173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1160, ptr noundef @.str.5, i32 noundef %1161, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 70, ptr noundef %1164, ptr noundef %1167, ptr noundef %1170, i32 noundef %1172) #7
  br label %1174

1174:                                             ; preds = %1157, %1140
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

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

1177:                                             ; No predecessors!
  br label %1178

1178:                                             ; preds = %1177
  br label %1179

1179:                                             ; preds = %1178, %1119
  br label %1180

1180:                                             ; preds = %1179
  br label %1181

1181:                                             ; preds = %1180
  br label %1182

1182:                                             ; preds = %1181
  br label %1183

1183:                                             ; preds = %1182
  br label %1184

1184:                                             ; preds = %1183
  %1185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1185, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1186 = call ptr @__errno_location() #8
  store i32 0, ptr %1186, align 4, !tbaa !5
  br label %1187

1187:                                             ; preds = %1184
  br label %1188

1188:                                             ; preds = %1187
  br label %1189

1189:                                             ; preds = %1188
  br label %1190

1190:                                             ; preds = %1189
  %1191 = call i32 @s2n_connection_ptr_free(ptr noundef %23)
  %1192 = getelementptr inbounds %struct.s2n_result, ptr %30, i32 0, i32 0
  store i32 %1191, ptr %1192, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  %1193 = call i32 @s2n_connection_ptr_free(ptr noundef %21)
  %1194 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %1193, ptr %1194, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %1195 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %1195, ptr %32, align 8, !tbaa !9
  br label %1196

1196:                                             ; preds = %1190
  %1197 = load i32, ptr @test_count, align 4, !tbaa !5
  %1198 = add nsw i32 %1197, 1
  store i32 %1198, ptr @test_count, align 4, !tbaa !5
  %1199 = load ptr, ptr %32, align 8, !tbaa !9
  %1200 = icmp eq ptr %1199, null
  br i1 %1200, label %1201, label %1254

1201:                                             ; preds = %1196
  br label %1202

1202:                                             ; preds = %1201
  br label %1203

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

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

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

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

1249:                                             ; preds = %1232, %1215
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %1250

1250:                                             ; preds = %1249
  br label %1251

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

1252:                                             ; No predecessors!
  br label %1253

1253:                                             ; preds = %1252
  br label %1254

1254:                                             ; preds = %1253, %1196
  br label %1255

1255:                                             ; preds = %1254
  br label %1256

1256:                                             ; preds = %1255
  %1257 = load ptr, ptr %32, align 8, !tbaa !9
  %1258 = getelementptr inbounds %struct.s2n_connection, ptr %1257, i32 0, i32 27
  %1259 = load ptr, ptr %1258, align 8, !tbaa !15
  %1260 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1259, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %1260, align 8, !tbaa !42
  %1261 = load ptr, ptr %32, align 8, !tbaa !9
  %1262 = getelementptr inbounds %struct.s2n_connection, ptr %1261, i32 0, i32 23
  store i8 33, ptr %1262, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %1263 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1263, ptr %34, align 8, !tbaa !9
  br label %1264

1264:                                             ; preds = %1256
  %1265 = load i32, ptr @test_count, align 4, !tbaa !5
  %1266 = add nsw i32 %1265, 1
  store i32 %1266, ptr @test_count, align 4, !tbaa !5
  %1267 = load ptr, ptr %34, align 8, !tbaa !9
  %1268 = icmp eq ptr %1267, null
  br i1 %1268, label %1269, label %1322

1269:                                             ; preds = %1264
  br label %1270

1270:                                             ; preds = %1269
  br label %1271

1271:                                             ; preds = %1270
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %1272 = call ptr @__errno_location() #8
  %1273 = load i32, ptr %1272, align 4, !tbaa !5
  store i32 %1273, ptr %35, align 4, !tbaa !5
  %1274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1275 = call i32 @s2n_print_stacktrace(ptr noundef %1274)
  %1276 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1277 = trunc i8 %1276 to i1
  br i1 %1277, label %1278, label %1300

1278:                                             ; preds = %1271
  %1279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1280 = call i32 @fileno(ptr noundef %1279) #7
  %1281 = call i32 @isatty(i32 noundef %1280) #7
  %1282 = icmp ne i32 %1281, 0
  br i1 %1282, label %1283, label %1300

1283:                                             ; preds = %1278
  %1284 = load i32, ptr %35, align 4, !tbaa !5
  %1285 = call ptr @__errno_location() #8
  store i32 %1284, ptr %1285, align 4, !tbaa !5
  %1286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1287 = load i32, ptr @test_count, align 4, !tbaa !5
  %1288 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1289 = load i32, ptr %1288, align 4, !tbaa !5
  %1290 = call ptr @s2n_strerror(i32 noundef %1289, ptr noundef @.str.4)
  %1291 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1292 = load i32, ptr %1291, align 4, !tbaa !5
  %1293 = call ptr @s2n_strerror_debug(i32 noundef %1292, ptr noundef @.str.4)
  %1294 = call ptr @__errno_location() #8
  %1295 = load i32, ptr %1294, align 4, !tbaa !5
  %1296 = call ptr @strerror(i32 noundef %1295) #7
  %1297 = call ptr @__errno_location() #8
  %1298 = load i32, ptr %1297, align 4, !tbaa !5
  %1299 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1286, ptr noundef @.str.2, i32 noundef %1287, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 81, ptr noundef %1290, ptr noundef %1293, ptr noundef %1296, i32 noundef %1298) #7
  br label %1317

1300:                                             ; preds = %1278, %1271
  %1301 = load i32, ptr %35, align 4, !tbaa !5
  %1302 = call ptr @__errno_location() #8
  store i32 %1301, ptr %1302, align 4, !tbaa !5
  %1303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1304 = load i32, ptr @test_count, align 4, !tbaa !5
  %1305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1306 = load i32, ptr %1305, align 4, !tbaa !5
  %1307 = call ptr @s2n_strerror(i32 noundef %1306, ptr noundef @.str.4)
  %1308 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = call ptr @s2n_strerror_debug(i32 noundef %1309, ptr noundef @.str.4)
  %1311 = call ptr @__errno_location() #8
  %1312 = load i32, ptr %1311, align 4, !tbaa !5
  %1313 = call ptr @strerror(i32 noundef %1312) #7
  %1314 = call ptr @__errno_location() #8
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1303, ptr noundef @.str.5, i32 noundef %1304, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 81, ptr noundef %1307, ptr noundef %1310, ptr noundef %1313, i32 noundef %1315) #7
  br label %1317

1317:                                             ; preds = %1300, %1283
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %1318

1318:                                             ; preds = %1317
  br label %1319

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

1320:                                             ; No predecessors!
  br label %1321

1321:                                             ; preds = %1320
  br label %1322

1322:                                             ; preds = %1321, %1264
  br label %1323

1323:                                             ; preds = %1322
  br label %1324

1324:                                             ; preds = %1323
  %1325 = load ptr, ptr %34, align 8, !tbaa !9
  %1326 = getelementptr inbounds %struct.s2n_connection, ptr %1325, i32 0, i32 27
  %1327 = load ptr, ptr %1326, align 8, !tbaa !15
  %1328 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1327, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %1328, align 8, !tbaa !42
  %1329 = load ptr, ptr %34, align 8, !tbaa !9
  %1330 = getelementptr inbounds %struct.s2n_connection, ptr %1329, i32 0, i32 23
  store i8 33, ptr %1330, align 4, !tbaa !47
  br label %1331

1331:                                             ; preds = %1324
  %1332 = load ptr, ptr %32, align 8, !tbaa !9
  %1333 = call i32 @s2n_prf_client_finished(ptr noundef %1332)
  %1334 = icmp sgt i32 %1333, -1
  br i1 %1334, label %1336, label %1335

1335:                                             ; preds = %1331
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %1680

1336:                                             ; preds = %1331
  br label %1337

1337:                                             ; preds = %1336
  br label %1338

1338:                                             ; preds = %1337
  %1339 = load ptr, ptr %32, align 8, !tbaa !9
  %1340 = getelementptr inbounds %struct.s2n_connection, ptr %1339, i32 0, i32 52
  %1341 = getelementptr inbounds %struct.s2n_handshake, ptr %1340, i32 0, i32 5
  store i8 1, ptr %1341, align 8, !tbaa !54
  br label %1342

1342:                                             ; preds = %1338
  %1343 = load i32, ptr @test_count, align 4, !tbaa !5
  %1344 = add nsw i32 %1343, 1
  store i32 %1344, ptr @test_count, align 4, !tbaa !5
  %1345 = load ptr, ptr %34, align 8, !tbaa !9
  %1346 = call i32 @s2n_client_finished_send(ptr noundef %1345)
  %1347 = icmp eq i32 %1346, -1
  br i1 %1347, label %1348, label %1401

1348:                                             ; preds = %1342
  br label %1349

1349:                                             ; preds = %1348
  br label %1350

1350:                                             ; preds = %1349
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %1351 = call ptr @__errno_location() #8
  %1352 = load i32, ptr %1351, align 4, !tbaa !5
  store i32 %1352, ptr %36, align 4, !tbaa !5
  %1353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1354 = call i32 @s2n_print_stacktrace(ptr noundef %1353)
  %1355 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1356 = trunc i8 %1355 to i1
  br i1 %1356, label %1357, label %1379

1357:                                             ; preds = %1350
  %1358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1359 = call i32 @fileno(ptr noundef %1358) #7
  %1360 = call i32 @isatty(i32 noundef %1359) #7
  %1361 = icmp ne i32 %1360, 0
  br i1 %1361, label %1362, label %1379

1362:                                             ; preds = %1357
  %1363 = load i32, ptr %36, align 4, !tbaa !5
  %1364 = call ptr @__errno_location() #8
  store i32 %1363, ptr %1364, align 4, !tbaa !5
  %1365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1366 = load i32, ptr @test_count, align 4, !tbaa !5
  %1367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1368 = load i32, ptr %1367, align 4, !tbaa !5
  %1369 = call ptr @s2n_strerror(i32 noundef %1368, ptr noundef @.str.4)
  %1370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1371 = load i32, ptr %1370, align 4, !tbaa !5
  %1372 = call ptr @s2n_strerror_debug(i32 noundef %1371, ptr noundef @.str.4)
  %1373 = call ptr @__errno_location() #8
  %1374 = load i32, ptr %1373, align 4, !tbaa !5
  %1375 = call ptr @strerror(i32 noundef %1374) #7
  %1376 = call ptr @__errno_location() #8
  %1377 = load i32, ptr %1376, align 4, !tbaa !5
  %1378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1365, ptr noundef @.str.2, i32 noundef %1366, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 89, ptr noundef %1369, ptr noundef %1372, ptr noundef %1375, i32 noundef %1377) #7
  br label %1396

1379:                                             ; preds = %1357, %1350
  %1380 = load i32, ptr %36, align 4, !tbaa !5
  %1381 = call ptr @__errno_location() #8
  store i32 %1380, ptr %1381, align 4, !tbaa !5
  %1382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1383 = load i32, ptr @test_count, align 4, !tbaa !5
  %1384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1385 = load i32, ptr %1384, align 4, !tbaa !5
  %1386 = call ptr @s2n_strerror(i32 noundef %1385, ptr noundef @.str.4)
  %1387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1388 = load i32, ptr %1387, align 4, !tbaa !5
  %1389 = call ptr @s2n_strerror_debug(i32 noundef %1388, ptr noundef @.str.4)
  %1390 = call ptr @__errno_location() #8
  %1391 = load i32, ptr %1390, align 4, !tbaa !5
  %1392 = call ptr @strerror(i32 noundef %1391) #7
  %1393 = call ptr @__errno_location() #8
  %1394 = load i32, ptr %1393, align 4, !tbaa !5
  %1395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1382, ptr noundef @.str.5, i32 noundef %1383, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 89, ptr noundef %1386, ptr noundef %1389, ptr noundef %1392, i32 noundef %1394) #7
  br label %1396

1396:                                             ; preds = %1379, %1362
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %1397

1397:                                             ; preds = %1396
  br label %1398

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

1399:                                             ; No predecessors!
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

1401:                                             ; preds = %1400, %1342
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load i32, ptr @test_count, align 4, !tbaa !5
  %1406 = add nsw i32 %1405, 1
  store i32 %1406, ptr @test_count, align 4, !tbaa !5
  %1407 = load ptr, ptr %34, align 8, !tbaa !9
  %1408 = getelementptr inbounds %struct.s2n_connection, ptr %1407, i32 0, i32 52
  %1409 = getelementptr inbounds %struct.s2n_handshake, ptr %1408, i32 0, i32 0
  %1410 = load ptr, ptr %32, align 8, !tbaa !9
  %1411 = getelementptr inbounds %struct.s2n_connection, ptr %1410, i32 0, i32 52
  %1412 = getelementptr inbounds %struct.s2n_handshake, ptr %1411, i32 0, i32 0
  %1413 = load ptr, ptr %34, align 8, !tbaa !9
  %1414 = getelementptr inbounds %struct.s2n_connection, ptr %1413, i32 0, i32 52
  %1415 = getelementptr inbounds %struct.s2n_handshake, ptr %1414, i32 0, i32 0
  %1416 = getelementptr inbounds %struct.s2n_stuffer, ptr %1415, i32 0, i32 2
  %1417 = load i32, ptr %1416, align 4, !tbaa !50
  %1418 = load ptr, ptr %34, align 8, !tbaa !9
  %1419 = getelementptr inbounds %struct.s2n_connection, ptr %1418, i32 0, i32 52
  %1420 = getelementptr inbounds %struct.s2n_handshake, ptr %1419, i32 0, i32 0
  %1421 = getelementptr inbounds %struct.s2n_stuffer, ptr %1420, i32 0, i32 1
  %1422 = load i32, ptr %1421, align 8, !tbaa !51
  %1423 = sub i32 %1417, %1422
  %1424 = call i32 @s2n_stuffer_copy(ptr noundef %1409, ptr noundef %1412, i32 noundef %1423)
  %1425 = icmp eq i32 %1424, -1
  br i1 %1425, label %1426, label %1479

1426:                                             ; preds = %1404
  br label %1427

1427:                                             ; preds = %1426
  br label %1428

1428:                                             ; preds = %1427
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  %1429 = call ptr @__errno_location() #8
  %1430 = load i32, ptr %1429, align 4, !tbaa !5
  store i32 %1430, ptr %37, align 4, !tbaa !5
  %1431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1432 = call i32 @s2n_print_stacktrace(ptr noundef %1431)
  %1433 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1434 = trunc i8 %1433 to i1
  br i1 %1434, label %1435, label %1457

1435:                                             ; preds = %1428
  %1436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1437 = call i32 @fileno(ptr noundef %1436) #7
  %1438 = call i32 @isatty(i32 noundef %1437) #7
  %1439 = icmp ne i32 %1438, 0
  br i1 %1439, label %1440, label %1457

1440:                                             ; preds = %1435
  %1441 = load i32, ptr %37, align 4, !tbaa !5
  %1442 = call ptr @__errno_location() #8
  store i32 %1441, ptr %1442, align 4, !tbaa !5
  %1443 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1444 = load i32, ptr @test_count, align 4, !tbaa !5
  %1445 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1446 = load i32, ptr %1445, align 4, !tbaa !5
  %1447 = call ptr @s2n_strerror(i32 noundef %1446, ptr noundef @.str.4)
  %1448 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1449 = load i32, ptr %1448, align 4, !tbaa !5
  %1450 = call ptr @s2n_strerror_debug(i32 noundef %1449, ptr noundef @.str.4)
  %1451 = call ptr @__errno_location() #8
  %1452 = load i32, ptr %1451, align 4, !tbaa !5
  %1453 = call ptr @strerror(i32 noundef %1452) #7
  %1454 = call ptr @__errno_location() #8
  %1455 = load i32, ptr %1454, align 4, !tbaa !5
  %1456 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1443, ptr noundef @.str.2, i32 noundef %1444, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1447, ptr noundef %1450, ptr noundef %1453, i32 noundef %1455) #7
  br label %1474

1457:                                             ; preds = %1435, %1428
  %1458 = load i32, ptr %37, align 4, !tbaa !5
  %1459 = call ptr @__errno_location() #8
  store i32 %1458, ptr %1459, align 4, !tbaa !5
  %1460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1461 = load i32, ptr @test_count, align 4, !tbaa !5
  %1462 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1463 = load i32, ptr %1462, align 4, !tbaa !5
  %1464 = call ptr @s2n_strerror(i32 noundef %1463, ptr noundef @.str.4)
  %1465 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1466 = load i32, ptr %1465, align 4, !tbaa !5
  %1467 = call ptr @s2n_strerror_debug(i32 noundef %1466, ptr noundef @.str.4)
  %1468 = call ptr @__errno_location() #8
  %1469 = load i32, ptr %1468, align 4, !tbaa !5
  %1470 = call ptr @strerror(i32 noundef %1469) #7
  %1471 = call ptr @__errno_location() #8
  %1472 = load i32, ptr %1471, align 4, !tbaa !5
  %1473 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1460, ptr noundef @.str.5, i32 noundef %1461, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1464, ptr noundef %1467, ptr noundef %1470, i32 noundef %1472) #7
  br label %1474

1474:                                             ; preds = %1457, %1440
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %1475

1475:                                             ; preds = %1474
  br label %1476

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

1477:                                             ; No predecessors!
  br label %1478

1478:                                             ; preds = %1477
  br label %1479

1479:                                             ; preds = %1478, %1404
  br label %1480

1480:                                             ; preds = %1479
  br label %1481

1481:                                             ; preds = %1480
  br label %1482

1482:                                             ; preds = %1481
  br label %1483

1483:                                             ; preds = %1482
  br label %1484

1484:                                             ; preds = %1483
  %1485 = load i32, ptr @test_count, align 4, !tbaa !5
  %1486 = add nsw i32 %1485, 1
  store i32 %1486, ptr @test_count, align 4, !tbaa !5
  %1487 = load ptr, ptr %32, align 8, !tbaa !9
  %1488 = call i32 @s2n_client_finished_recv(ptr noundef %1487)
  %1489 = icmp eq i32 %1488, -1
  br i1 %1489, label %1543, label %1490

1490:                                             ; preds = %1484
  br label %1491

1491:                                             ; preds = %1490
  br label %1492

1492:                                             ; preds = %1491
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %1493 = call ptr @__errno_location() #8
  %1494 = load i32, ptr %1493, align 4, !tbaa !5
  store i32 %1494, ptr %38, align 4, !tbaa !5
  %1495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1496 = call i32 @s2n_print_stacktrace(ptr noundef %1495)
  %1497 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1498 = trunc i8 %1497 to i1
  br i1 %1498, label %1499, label %1521

1499:                                             ; preds = %1492
  %1500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1501 = call i32 @fileno(ptr noundef %1500) #7
  %1502 = call i32 @isatty(i32 noundef %1501) #7
  %1503 = icmp ne i32 %1502, 0
  br i1 %1503, label %1504, label %1521

1504:                                             ; preds = %1499
  %1505 = load i32, ptr %38, align 4, !tbaa !5
  %1506 = call ptr @__errno_location() #8
  store i32 %1505, ptr %1506, align 4, !tbaa !5
  %1507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1508 = load i32, ptr @test_count, align 4, !tbaa !5
  %1509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1510 = load i32, ptr %1509, align 4, !tbaa !5
  %1511 = call ptr @s2n_strerror(i32 noundef %1510, ptr noundef @.str.4)
  %1512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1513 = load i32, ptr %1512, align 4, !tbaa !5
  %1514 = call ptr @s2n_strerror_debug(i32 noundef %1513, ptr noundef @.str.4)
  %1515 = call ptr @__errno_location() #8
  %1516 = load i32, ptr %1515, align 4, !tbaa !5
  %1517 = call ptr @strerror(i32 noundef %1516) #7
  %1518 = call ptr @__errno_location() #8
  %1519 = load i32, ptr %1518, align 4, !tbaa !5
  %1520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1507, ptr noundef @.str.2, i32 noundef %1508, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 92, ptr noundef %1511, ptr noundef %1514, ptr noundef %1517, i32 noundef %1519) #7
  br label %1538

1521:                                             ; preds = %1499, %1492
  %1522 = load i32, ptr %38, align 4, !tbaa !5
  %1523 = call ptr @__errno_location() #8
  store i32 %1522, ptr %1523, align 4, !tbaa !5
  %1524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1525 = load i32, ptr @test_count, align 4, !tbaa !5
  %1526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1527 = load i32, ptr %1526, align 4, !tbaa !5
  %1528 = call ptr @s2n_strerror(i32 noundef %1527, ptr noundef @.str.4)
  %1529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1530 = load i32, ptr %1529, align 4, !tbaa !5
  %1531 = call ptr @s2n_strerror_debug(i32 noundef %1530, ptr noundef @.str.4)
  %1532 = call ptr @__errno_location() #8
  %1533 = load i32, ptr %1532, align 4, !tbaa !5
  %1534 = call ptr @strerror(i32 noundef %1533) #7
  %1535 = call ptr @__errno_location() #8
  %1536 = load i32, ptr %1535, align 4, !tbaa !5
  %1537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1524, ptr noundef @.str.5, i32 noundef %1525, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 92, ptr noundef %1528, ptr noundef %1531, ptr noundef %1534, i32 noundef %1536) #7
  br label %1538

1538:                                             ; preds = %1521, %1504
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

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

1541:                                             ; No predecessors!
  br label %1542

1542:                                             ; preds = %1541
  br label %1543

1543:                                             ; preds = %1542, %1484
  br label %1544

1544:                                             ; preds = %1543
  br label %1545

1545:                                             ; preds = %1544
  br label %1546

1546:                                             ; preds = %1545
  %1547 = load i32, ptr @test_count, align 4, !tbaa !5
  %1548 = add nsw i32 %1547, 1
  store i32 %1548, ptr @test_count, align 4, !tbaa !5
  %1549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1550 = load i32, ptr %1549, align 4, !tbaa !5
  %1551 = icmp eq i32 %1550, 402653194
  br i1 %1551, label %1605, label %1552

1552:                                             ; preds = %1546
  br label %1553

1553:                                             ; preds = %1552
  br label %1554

1554:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %1555 = call ptr @__errno_location() #8
  %1556 = load i32, ptr %1555, align 4, !tbaa !5
  store i32 %1556, ptr %39, align 4, !tbaa !5
  %1557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1558 = call i32 @s2n_print_stacktrace(ptr noundef %1557)
  %1559 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1560 = trunc i8 %1559 to i1
  br i1 %1560, label %1561, label %1583

1561:                                             ; preds = %1554
  %1562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1563 = call i32 @fileno(ptr noundef %1562) #7
  %1564 = call i32 @isatty(i32 noundef %1563) #7
  %1565 = icmp ne i32 %1564, 0
  br i1 %1565, label %1566, label %1583

1566:                                             ; preds = %1561
  %1567 = load i32, ptr %39, align 4, !tbaa !5
  %1568 = call ptr @__errno_location() #8
  store i32 %1567, ptr %1568, align 4, !tbaa !5
  %1569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1570 = load i32, ptr @test_count, align 4, !tbaa !5
  %1571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1572 = load i32, ptr %1571, align 4, !tbaa !5
  %1573 = call ptr @s2n_strerror(i32 noundef %1572, ptr noundef @.str.4)
  %1574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1575 = load i32, ptr %1574, align 4, !tbaa !5
  %1576 = call ptr @s2n_strerror_debug(i32 noundef %1575, ptr noundef @.str.4)
  %1577 = call ptr @__errno_location() #8
  %1578 = load i32, ptr %1577, align 4, !tbaa !5
  %1579 = call ptr @strerror(i32 noundef %1578) #7
  %1580 = call ptr @__errno_location() #8
  %1581 = load i32, ptr %1580, align 4, !tbaa !5
  %1582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1569, ptr noundef @.str.2, i32 noundef %1570, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 92, ptr noundef %1573, ptr noundef %1576, ptr noundef %1579, i32 noundef %1581) #7
  br label %1600

1583:                                             ; preds = %1561, %1554
  %1584 = load i32, ptr %39, align 4, !tbaa !5
  %1585 = call ptr @__errno_location() #8
  store i32 %1584, ptr %1585, align 4, !tbaa !5
  %1586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1587 = load i32, ptr @test_count, align 4, !tbaa !5
  %1588 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1589 = load i32, ptr %1588, align 4, !tbaa !5
  %1590 = call ptr @s2n_strerror(i32 noundef %1589, ptr noundef @.str.4)
  %1591 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1592 = load i32, ptr %1591, align 4, !tbaa !5
  %1593 = call ptr @s2n_strerror_debug(i32 noundef %1592, ptr noundef @.str.4)
  %1594 = call ptr @__errno_location() #8
  %1595 = load i32, ptr %1594, align 4, !tbaa !5
  %1596 = call ptr @strerror(i32 noundef %1595) #7
  %1597 = call ptr @__errno_location() #8
  %1598 = load i32, ptr %1597, align 4, !tbaa !5
  %1599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1586, ptr noundef @.str.5, i32 noundef %1587, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 92, ptr noundef %1590, ptr noundef %1593, ptr noundef %1596, i32 noundef %1598) #7
  br label %1600

1600:                                             ; preds = %1583, %1566
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

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

1603:                                             ; No predecessors!
  br label %1604

1604:                                             ; preds = %1603
  br label %1605

1605:                                             ; preds = %1604, %1546
  br label %1606

1606:                                             ; preds = %1605
  br label %1607

1607:                                             ; preds = %1606
  br label %1608

1608:                                             ; preds = %1607
  %1609 = load i32, ptr @test_count, align 4, !tbaa !5
  %1610 = add nsw i32 %1609, 1
  store i32 %1610, ptr @test_count, align 4, !tbaa !5
  %1611 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1612 = load i32, ptr %1611, align 4, !tbaa !5
  %1613 = call ptr @s2n_strerror_debug(i32 noundef %1612, ptr noundef @.str.4)
  %1614 = icmp eq ptr %1613, null
  br i1 %1614, label %1615, label %1668

1615:                                             ; preds = %1608
  br label %1616

1616:                                             ; preds = %1615
  br label %1617

1617:                                             ; preds = %1616
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %1618 = call ptr @__errno_location() #8
  %1619 = load i32, ptr %1618, align 4, !tbaa !5
  store i32 %1619, ptr %40, align 4, !tbaa !5
  %1620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1621 = call i32 @s2n_print_stacktrace(ptr noundef %1620)
  %1622 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1623 = trunc i8 %1622 to i1
  br i1 %1623, label %1624, label %1646

1624:                                             ; preds = %1617
  %1625 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1626 = call i32 @fileno(ptr noundef %1625) #7
  %1627 = call i32 @isatty(i32 noundef %1626) #7
  %1628 = icmp ne i32 %1627, 0
  br i1 %1628, label %1629, label %1646

1629:                                             ; preds = %1624
  %1630 = load i32, ptr %40, align 4, !tbaa !5
  %1631 = call ptr @__errno_location() #8
  store i32 %1630, ptr %1631, align 4, !tbaa !5
  %1632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1633 = load i32, ptr @test_count, align 4, !tbaa !5
  %1634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1635 = load i32, ptr %1634, align 4, !tbaa !5
  %1636 = call ptr @s2n_strerror(i32 noundef %1635, ptr noundef @.str.4)
  %1637 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1638 = load i32, ptr %1637, align 4, !tbaa !5
  %1639 = call ptr @s2n_strerror_debug(i32 noundef %1638, ptr noundef @.str.4)
  %1640 = call ptr @__errno_location() #8
  %1641 = load i32, ptr %1640, align 4, !tbaa !5
  %1642 = call ptr @strerror(i32 noundef %1641) #7
  %1643 = call ptr @__errno_location() #8
  %1644 = load i32, ptr %1643, align 4, !tbaa !5
  %1645 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1632, ptr noundef @.str.2, i32 noundef %1633, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 92, ptr noundef %1636, ptr noundef %1639, ptr noundef %1642, i32 noundef %1644) #7
  br label %1663

1646:                                             ; preds = %1624, %1617
  %1647 = load i32, ptr %40, align 4, !tbaa !5
  %1648 = call ptr @__errno_location() #8
  store i32 %1647, ptr %1648, align 4, !tbaa !5
  %1649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1650 = load i32, ptr @test_count, align 4, !tbaa !5
  %1651 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1652 = load i32, ptr %1651, align 4, !tbaa !5
  %1653 = call ptr @s2n_strerror(i32 noundef %1652, ptr noundef @.str.4)
  %1654 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1655 = load i32, ptr %1654, align 4, !tbaa !5
  %1656 = call ptr @s2n_strerror_debug(i32 noundef %1655, ptr noundef @.str.4)
  %1657 = call ptr @__errno_location() #8
  %1658 = load i32, ptr %1657, align 4, !tbaa !5
  %1659 = call ptr @strerror(i32 noundef %1658) #7
  %1660 = call ptr @__errno_location() #8
  %1661 = load i32, ptr %1660, align 4, !tbaa !5
  %1662 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1649, ptr noundef @.str.5, i32 noundef %1650, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 92, ptr noundef %1653, ptr noundef %1656, ptr noundef %1659, i32 noundef %1661) #7
  br label %1663

1663:                                             ; preds = %1646, %1629
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %1664

1664:                                             ; preds = %1663
  br label %1665

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

1666:                                             ; No predecessors!
  br label %1667

1667:                                             ; preds = %1666
  br label %1668

1668:                                             ; preds = %1667, %1608
  br label %1669

1669:                                             ; preds = %1668
  br label %1670

1670:                                             ; preds = %1669
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

1672:                                             ; preds = %1671
  br label %1673

1673:                                             ; preds = %1672
  %1674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1674, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1675 = call ptr @__errno_location() #8
  store i32 0, ptr %1675, align 4, !tbaa !5
  br label %1676

1676:                                             ; preds = %1673
  br label %1677

1677:                                             ; preds = %1676
  br label %1678

1678:                                             ; preds = %1677
  br label %1679

1679:                                             ; preds = %1678
  store i32 0, ptr %13, align 4
  br label %1680

1680:                                             ; preds = %1679, %1335
  %1681 = call i32 @s2n_connection_ptr_free(ptr noundef %34)
  %1682 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  store i32 %1681, ptr %1682, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  %1683 = call i32 @s2n_connection_ptr_free(ptr noundef %32)
  %1684 = getelementptr inbounds %struct.s2n_result, ptr %42, i32 0, i32 0
  store i32 %1683, ptr %1684, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  %1685 = load i32, ptr %13, align 4
  switch i32 %1685, label %1834 [
    i32 0, label %1686
    i32 1, label %1832
  ]

1686:                                             ; preds = %1680
  br label %1687

1687:                                             ; preds = %1686
  br label %1688

1688:                                             ; preds = %1687
  %1689 = call i32 @s2n_cleanup()
  %1690 = icmp eq i32 %1689, -1
  br i1 %1690, label %1691, label %1742

1691:                                             ; preds = %1688
  br label %1692

1692:                                             ; preds = %1691
  br label %1693

1693:                                             ; preds = %1692
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %1694 = call ptr @__errno_location() #8
  %1695 = load i32, ptr %1694, align 4, !tbaa !5
  store i32 %1695, ptr %43, align 4, !tbaa !5
  %1696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1697 = call i32 @s2n_print_stacktrace(ptr noundef %1696)
  %1698 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1699 = trunc i8 %1698 to i1
  br i1 %1699, label %1700, label %1722

1700:                                             ; preds = %1693
  %1701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1702 = call i32 @fileno(ptr noundef %1701) #7
  %1703 = call i32 @isatty(i32 noundef %1702) #7
  %1704 = icmp ne i32 %1703, 0
  br i1 %1704, label %1705, label %1722

1705:                                             ; preds = %1700
  %1706 = load i32, ptr %43, align 4, !tbaa !5
  %1707 = call ptr @__errno_location() #8
  store i32 %1706, ptr %1707, align 4, !tbaa !5
  %1708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1709 = load i32, ptr @test_count, align 4, !tbaa !5
  %1710 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1711 = load i32, ptr %1710, align 4, !tbaa !5
  %1712 = call ptr @s2n_strerror(i32 noundef %1711, ptr noundef @.str.4)
  %1713 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1714 = load i32, ptr %1713, align 4, !tbaa !5
  %1715 = call ptr @s2n_strerror_debug(i32 noundef %1714, ptr noundef @.str.4)
  %1716 = call ptr @__errno_location() #8
  %1717 = load i32, ptr %1716, align 4, !tbaa !5
  %1718 = call ptr @strerror(i32 noundef %1717) #7
  %1719 = call ptr @__errno_location() #8
  %1720 = load i32, ptr %1719, align 4, !tbaa !5
  %1721 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1708, ptr noundef @.str.2, i32 noundef %1709, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1712, ptr noundef %1715, ptr noundef %1718, i32 noundef %1720) #7
  br label %1739

1722:                                             ; preds = %1700, %1693
  %1723 = load i32, ptr %43, align 4, !tbaa !5
  %1724 = call ptr @__errno_location() #8
  store i32 %1723, ptr %1724, align 4, !tbaa !5
  %1725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1726 = load i32, ptr @test_count, align 4, !tbaa !5
  %1727 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1728 = load i32, ptr %1727, align 4, !tbaa !5
  %1729 = call ptr @s2n_strerror(i32 noundef %1728, ptr noundef @.str.4)
  %1730 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1731 = load i32, ptr %1730, align 4, !tbaa !5
  %1732 = call ptr @s2n_strerror_debug(i32 noundef %1731, ptr noundef @.str.4)
  %1733 = call ptr @__errno_location() #8
  %1734 = load i32, ptr %1733, align 4, !tbaa !5
  %1735 = call ptr @strerror(i32 noundef %1734) #7
  %1736 = call ptr @__errno_location() #8
  %1737 = load i32, ptr %1736, align 4, !tbaa !5
  %1738 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1725, ptr noundef @.str.5, i32 noundef %1726, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1729, ptr noundef %1732, ptr noundef %1735, i32 noundef %1737) #7
  br label %1739

1739:                                             ; preds = %1722, %1705
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %1740

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

1741:                                             ; No predecessors!
  br label %1742

1742:                                             ; preds = %1741, %1688
  br label %1743

1743:                                             ; preds = %1742
  br label %1744

1744:                                             ; preds = %1743
  br label %1745

1745:                                             ; preds = %1744
  %1746 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1747 = icmp eq i32 %1746, -1
  br i1 %1747, label %1748, label %1799

1748:                                             ; preds = %1745
  br label %1749

1749:                                             ; preds = %1748
  br label %1750

1750:                                             ; preds = %1749
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %1751 = call ptr @__errno_location() #8
  %1752 = load i32, ptr %1751, align 4, !tbaa !5
  store i32 %1752, ptr %44, align 4, !tbaa !5
  %1753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1754 = call i32 @s2n_print_stacktrace(ptr noundef %1753)
  %1755 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1756 = trunc i8 %1755 to i1
  br i1 %1756, label %1757, label %1779

1757:                                             ; preds = %1750
  %1758 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1759 = call i32 @fileno(ptr noundef %1758) #7
  %1760 = call i32 @isatty(i32 noundef %1759) #7
  %1761 = icmp ne i32 %1760, 0
  br i1 %1761, label %1762, label %1779

1762:                                             ; preds = %1757
  %1763 = load i32, ptr %44, align 4, !tbaa !5
  %1764 = call ptr @__errno_location() #8
  store i32 %1763, ptr %1764, align 4, !tbaa !5
  %1765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1766 = load i32, ptr @test_count, align 4, !tbaa !5
  %1767 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1768 = load i32, ptr %1767, align 4, !tbaa !5
  %1769 = call ptr @s2n_strerror(i32 noundef %1768, ptr noundef @.str.4)
  %1770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call ptr @s2n_strerror_debug(i32 noundef %1771, ptr noundef @.str.4)
  %1773 = call ptr @__errno_location() #8
  %1774 = load i32, ptr %1773, align 4, !tbaa !5
  %1775 = call ptr @strerror(i32 noundef %1774) #7
  %1776 = call ptr @__errno_location() #8
  %1777 = load i32, ptr %1776, align 4, !tbaa !5
  %1778 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1765, ptr noundef @.str.2, i32 noundef %1766, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1769, ptr noundef %1772, ptr noundef %1775, i32 noundef %1777) #7
  br label %1796

1779:                                             ; preds = %1757, %1750
  %1780 = load i32, ptr %44, align 4, !tbaa !5
  %1781 = call ptr @__errno_location() #8
  store i32 %1780, ptr %1781, align 4, !tbaa !5
  %1782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1783 = load i32, ptr @test_count, align 4, !tbaa !5
  %1784 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1785 = load i32, ptr %1784, align 4, !tbaa !5
  %1786 = call ptr @s2n_strerror(i32 noundef %1785, ptr noundef @.str.4)
  %1787 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1788 = load i32, ptr %1787, align 4, !tbaa !5
  %1789 = call ptr @s2n_strerror_debug(i32 noundef %1788, ptr noundef @.str.4)
  %1790 = call ptr @__errno_location() #8
  %1791 = load i32, ptr %1790, align 4, !tbaa !5
  %1792 = call ptr @strerror(i32 noundef %1791) #7
  %1793 = call ptr @__errno_location() #8
  %1794 = load i32, ptr %1793, align 4, !tbaa !5
  %1795 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1782, ptr noundef @.str.5, i32 noundef %1783, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1786, ptr noundef %1789, ptr noundef %1792, i32 noundef %1794) #7
  br label %1796

1796:                                             ; preds = %1779, %1762
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %1797

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

1798:                                             ; No predecessors!
  br label %1799

1799:                                             ; preds = %1798, %1745
  br label %1800

1800:                                             ; preds = %1799
  %1801 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1802 = trunc i8 %1801 to i1
  br i1 %1802, label %1803, label %1819

1803:                                             ; preds = %1800
  %1804 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1805 = call i32 @fileno(ptr noundef %1804) #7
  %1806 = call i32 @isatty(i32 noundef %1805) #7
  %1807 = icmp ne i32 %1806, 0
  br i1 %1807, label %1808, label %1819

1808:                                             ; preds = %1803
  %1809 = load i32, ptr @test_count, align 4, !tbaa !5
  %1810 = icmp ne i32 %1809, 0
  br i1 %1810, label %1811, label %1815

1811:                                             ; preds = %1808
  %1812 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1813 = load i32, ptr @test_count, align 4, !tbaa !5
  %1814 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1812, ptr noundef @.str.21, i32 noundef %1813) #7
  br label %1818

1815:                                             ; preds = %1808
  %1816 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1816, ptr noundef @.str.22) #7
  br label %1818

1818:                                             ; preds = %1815, %1811
  br label %1830

1819:                                             ; preds = %1803, %1800
  %1820 = load i32, ptr @test_count, align 4, !tbaa !5
  %1821 = icmp ne i32 %1820, 0
  br i1 %1821, label %1822, label %1826

1822:                                             ; preds = %1819
  %1823 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1824 = load i32, ptr @test_count, align 4, !tbaa !5
  %1825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1823, ptr noundef @.str.23, i32 noundef %1824) #7
  br label %1829

1826:                                             ; preds = %1819
  %1827 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1827, ptr noundef @.str.24) #7
  br label %1829

1829:                                             ; preds = %1826, %1822
  br label %1830

1830:                                             ; preds = %1829, %1818
  store i32 0, ptr %3, align 4
  br label %1832

1831:                                             ; No predecessors!
  br label %1832

1832:                                             ; preds = %1831, %1830, %1680, %701
  %1833 = load i32, ptr %3, align 4
  ret i32 %1833

1834:                                             ; preds = %1680, %701
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_ptr_free(ptr noundef) #2

declare i32 @s2n_prf_client_finished(ptr noundef) #2

declare i32 @s2n_client_finished_send(ptr noundef) #2

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

declare i32 @s2n_client_finished_recv(ptr noundef) #2

declare void @s2n_debug_info_reset() #2

declare i32 @s2n_cleanup() #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !10, i64 232}
!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 = !{!43, !10, i64 0}
!43 = !{!"s2n_crypto_parameters", !10, i64 0, !44, i64 8, !44, i64 16, !45, i64 24, !45, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!44 = !{!"s2n_session_key", !10, i64 0}
!45 = !{!"s2n_hmac_state", !6, i64 0, !31, i64 4, !6, i64 8, !31, i64 12, !7, i64 14, !46, i64 16, !46, i64 72, !46, i64 128, !46, i64 184, !7, i64 240, !7, i64 368}
!46 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !18, i64 16, !7, i64 24}
!47 = !{!16, !7, i64 220}
!48 = !{!16, !10, i64 632}
!49 = !{!16, !10, i64 224}
!50 = !{!16, !6, i64 2044}
!51 = !{!16, !6, i64 2040}
!52 = !{!16, !10, i64 2016}
!53 = !{!7, !7, i64 0}
!54 = !{!16, !7, i64 2168}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }

@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 [83 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [46 x i8], align 1
@s2n_ecdhe_rsa_with_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@.str.9 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [191 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %9 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #8
  %11 = load ptr, ptr @stdout, align 8, !tbaa !9
  %12 = tail call i32 @fflush(ptr noundef %11)
  %13 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #8
  %14 = icmp eq i32 %13, -1
  br i1 %14, label %15, label %39

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

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

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

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

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

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

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

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

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

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

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

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

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

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

95:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %96 = tail call ptr @s2n_connection_new(i32 noundef 0) #8
  store ptr %96, ptr %3, align 8, !tbaa !9
  %97 = load i32, ptr @test_count, align 4, !tbaa !5
  %98 = add nsw i32 %97, 1
  store i32 %98, ptr @test_count, align 4, !tbaa !5
  %99 = icmp eq ptr %96, null
  br i1 %99, label %100, label %124

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

107:                                              ; preds = %100
  %108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %109 = tail call i32 @fileno(ptr noundef %108) #8
  %110 = tail call i32 @isatty(i32 noundef %109) #8
  %.not94 = icmp eq i32 %110, 0
  br i1 %.not94, label %111, label %112

111:                                              ; preds = %107, %100
  br label %112

112:                                              ; preds = %107, %111
  %.str.5.sink132 = phi ptr [ @.str.5, %111 ], [ @.str.2, %107 ]
  store i32 %102, ptr %101, align 4, !tbaa !5
  %113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %114 = load i32, ptr @test_count, align 4, !tbaa !5
  %115 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = tail call ptr @s2n_strerror(i32 noundef %116, ptr noundef nonnull @.str.4) #8
  %118 = load i32, ptr %115, align 4, !tbaa !5
  %119 = tail call ptr @s2n_strerror_debug(i32 noundef %118, ptr noundef nonnull @.str.4) #8
  %120 = load i32, ptr %101, align 4, !tbaa !5
  %121 = tail call ptr @strerror(i32 noundef %120) #8
  %122 = load i32, ptr %101, align 4, !tbaa !5
  %123 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef nonnull %.str.5.sink132, i32 noundef %114, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 28, ptr noundef %117, ptr noundef %119, ptr noundef %121, i32 noundef %122) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

124:                                              ; preds = %95
  %125 = getelementptr inbounds i8, ptr %96, i64 232
  %126 = load ptr, ptr %125, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %126, align 8, !tbaa !42
  %127 = load ptr, ptr %3, align 8, !tbaa !9
  %128 = getelementptr inbounds i8, ptr %127, i64 220
  store i8 33, ptr %128, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %129 = tail call ptr @s2n_connection_new(i32 noundef 1) #8
  store ptr %129, ptr %4, align 8, !tbaa !9
  %130 = load i32, ptr @test_count, align 4, !tbaa !5
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr @test_count, align 4, !tbaa !5
  %132 = icmp eq ptr %129, null
  br i1 %132, label %133, label %157

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

140:                                              ; preds = %133
  %141 = load ptr, ptr @stderr, align 8, !tbaa !9
  %142 = tail call i32 @fileno(ptr noundef %141) #8
  %143 = tail call i32 @isatty(i32 noundef %142) #8
  %.not93 = icmp eq i32 %143, 0
  br i1 %.not93, label %144, label %145

144:                                              ; preds = %140, %133
  br label %145

145:                                              ; preds = %140, %144
  %.str.5.sink143 = phi ptr [ @.str.5, %144 ], [ @.str.2, %140 ]
  store i32 %135, ptr %134, align 4, !tbaa !5
  %146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %147 = load i32, ptr @test_count, align 4, !tbaa !5
  %148 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = tail call ptr @s2n_strerror(i32 noundef %149, ptr noundef nonnull @.str.4) #8
  %151 = load i32, ptr %148, align 4, !tbaa !5
  %152 = tail call ptr @s2n_strerror_debug(i32 noundef %151, ptr noundef nonnull @.str.4) #8
  %153 = load i32, ptr %134, align 4, !tbaa !5
  %154 = tail call ptr @strerror(i32 noundef %153) #8
  %155 = load i32, ptr %134, align 4, !tbaa !5
  %156 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %146, ptr noundef nonnull %.str.5.sink143, i32 noundef %147, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 33, ptr noundef %150, ptr noundef %152, ptr noundef %154, i32 noundef %155) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

157:                                              ; preds = %124
  %158 = getelementptr inbounds i8, ptr %129, i64 232
  %159 = load ptr, ptr %158, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %159, align 8, !tbaa !42
  %160 = load ptr, ptr %4, align 8, !tbaa !9
  %161 = getelementptr inbounds i8, ptr %160, i64 220
  store i8 33, ptr %161, align 4, !tbaa !47
  %162 = load ptr, ptr %3, align 8, !tbaa !9
  %163 = tail call i32 @s2n_prf_client_finished(ptr noundef %162) #8
  %164 = icmp sgt i32 %163, -1
  br i1 %164, label %165, label %321

165:                                              ; preds = %157
  %166 = load i32, ptr @test_count, align 4, !tbaa !5
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr @test_count, align 4, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %160, i64 632
  %169 = load ptr, ptr %168, align 8, !tbaa !48
  %170 = getelementptr inbounds i8, ptr %160, i64 224
  %171 = load ptr, ptr %170, align 8, !tbaa !49
  %172 = icmp eq ptr %169, %171
  br i1 %172, label %197, label %173

173:                                              ; preds = %165
  %174 = tail call ptr @__errno_location() #9
  %175 = load i32, ptr %174, align 4, !tbaa !5
  %176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %177 = tail call i32 @s2n_print_stacktrace(ptr noundef %176) #8
  %178 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %179 = trunc nuw i8 %178 to i1
  br i1 %179, label %180, label %184

180:                                              ; preds = %173
  %181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %182 = tail call i32 @fileno(ptr noundef %181) #8
  %183 = tail call i32 @isatty(i32 noundef %182) #8
  %.not = icmp eq i32 %183, 0
  br i1 %.not, label %184, label %185

184:                                              ; preds = %180, %173
  br label %185

185:                                              ; preds = %180, %184
  %.str.5.sink154 = phi ptr [ @.str.5, %184 ], [ @.str.2, %180 ]
  store i32 %175, ptr %174, align 4, !tbaa !5
  %186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %187 = load i32, ptr @test_count, align 4, !tbaa !5
  %188 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = tail call ptr @s2n_strerror(i32 noundef %189, ptr noundef nonnull @.str.4) #8
  %191 = load i32, ptr %188, align 4, !tbaa !5
  %192 = tail call ptr @s2n_strerror_debug(i32 noundef %191, ptr noundef nonnull @.str.4) #8
  %193 = load i32, ptr %174, align 4, !tbaa !5
  %194 = tail call ptr @strerror(i32 noundef %193) #8
  %195 = load i32, ptr %174, align 4, !tbaa !5
  %196 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %186, ptr noundef nonnull %.str.5.sink154, i32 noundef %187, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 40, ptr noundef %190, ptr noundef %192, ptr noundef %194, i32 noundef %195) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

197:                                              ; preds = %165
  %198 = add nsw i32 %166, 2
  store i32 %198, ptr @test_count, align 4, !tbaa !5
  %199 = tail call i32 @s2n_client_finished_send(ptr noundef nonnull %160) #8
  %200 = icmp eq i32 %199, -1
  br i1 %200, label %201, label %225

201:                                              ; preds = %197
  %202 = tail call ptr @__errno_location() #9
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %205 = tail call i32 @s2n_print_stacktrace(ptr noundef %204) #8
  %206 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %207 = trunc nuw i8 %206 to i1
  br i1 %207, label %208, label %212

208:                                              ; preds = %201
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = tail call i32 @fileno(ptr noundef %209) #8
  %211 = tail call i32 @isatty(i32 noundef %210) #8
  %.not92 = icmp eq i32 %211, 0
  br i1 %.not92, label %212, label %213

212:                                              ; preds = %208, %201
  br label %213

213:                                              ; preds = %208, %212
  %.str.5.sink165 = phi ptr [ @.str.5, %212 ], [ @.str.2, %208 ]
  store i32 %203, ptr %202, align 4, !tbaa !5
  %214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %215 = load i32, ptr @test_count, align 4, !tbaa !5
  %216 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = tail call ptr @s2n_strerror(i32 noundef %217, ptr noundef nonnull @.str.4) #8
  %219 = load i32, ptr %216, align 4, !tbaa !5
  %220 = tail call ptr @s2n_strerror_debug(i32 noundef %219, ptr noundef nonnull @.str.4) #8
  %221 = load i32, ptr %202, align 4, !tbaa !5
  %222 = tail call ptr @strerror(i32 noundef %221) #8
  %223 = load i32, ptr %202, align 4, !tbaa !5
  %224 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %214, ptr noundef nonnull %.str.5.sink165, i32 noundef %215, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 42, ptr noundef %218, ptr noundef %220, ptr noundef %222, i32 noundef %223) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

225:                                              ; preds = %197
  %226 = load i32, ptr @test_count, align 4, !tbaa !5
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr @test_count, align 4, !tbaa !5
  %228 = getelementptr inbounds i8, ptr %160, i64 2016
  %229 = getelementptr inbounds i8, ptr %162, i64 2016
  %230 = getelementptr inbounds i8, ptr %160, i64 2044
  %231 = load i32, ptr %230, align 4, !tbaa !50
  %232 = getelementptr inbounds i8, ptr %160, i64 2040
  %233 = load i32, ptr %232, align 8, !tbaa !51
  %234 = sub i32 %231, %233
  %235 = tail call i32 @s2n_stuffer_copy(ptr noundef nonnull %228, ptr noundef nonnull %229, i32 noundef %234) #8
  %236 = icmp eq i32 %235, -1
  br i1 %236, label %237, label %261

237:                                              ; preds = %225
  %238 = tail call ptr @__errno_location() #9
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %241 = tail call i32 @s2n_print_stacktrace(ptr noundef %240) #8
  %242 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %243 = trunc nuw i8 %242 to i1
  br i1 %243, label %244, label %248

244:                                              ; preds = %237
  %245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %246 = tail call i32 @fileno(ptr noundef %245) #8
  %247 = tail call i32 @isatty(i32 noundef %246) #8
  %.not91 = icmp eq i32 %247, 0
  br i1 %.not91, label %248, label %249

248:                                              ; preds = %244, %237
  br label %249

249:                                              ; preds = %244, %248
  %.str.5.sink176 = phi ptr [ @.str.5, %248 ], [ @.str.2, %244 ]
  store i32 %239, ptr %238, align 4, !tbaa !5
  %250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %251 = load i32, ptr @test_count, align 4, !tbaa !5
  %252 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %253 = load i32, ptr %252, align 4, !tbaa !5
  %254 = tail call ptr @s2n_strerror(i32 noundef %253, ptr noundef nonnull @.str.4) #8
  %255 = load i32, ptr %252, align 4, !tbaa !5
  %256 = tail call ptr @s2n_strerror_debug(i32 noundef %255, ptr noundef nonnull @.str.4) #8
  %257 = load i32, ptr %238, align 4, !tbaa !5
  %258 = tail call ptr @strerror(i32 noundef %257) #8
  %259 = load i32, ptr %238, align 4, !tbaa !5
  %260 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %250, ptr noundef nonnull %.str.5.sink176, i32 noundef %251, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %254, ptr noundef %256, ptr noundef %258, i32 noundef %259) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

261:                                              ; preds = %225
  %262 = load i32, ptr @test_count, align 4, !tbaa !5
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr @test_count, align 4, !tbaa !5
  %264 = tail call i32 @s2n_client_finished_recv(ptr noundef %162) #8
  %265 = icmp eq i32 %264, -1
  br i1 %265, label %266, label %290

266:                                              ; preds = %261
  %267 = tail call ptr @__errno_location() #9
  %268 = load i32, ptr %267, align 4, !tbaa !5
  %269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %270 = tail call i32 @s2n_print_stacktrace(ptr noundef %269) #8
  %271 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %272 = trunc nuw i8 %271 to i1
  br i1 %272, label %273, label %277

273:                                              ; preds = %266
  %274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %275 = tail call i32 @fileno(ptr noundef %274) #8
  %276 = tail call i32 @isatty(i32 noundef %275) #8
  %.not90 = icmp eq i32 %276, 0
  br i1 %.not90, label %277, label %278

277:                                              ; preds = %273, %266
  br label %278

278:                                              ; preds = %273, %277
  %.str.5.sink187 = phi ptr [ @.str.5, %277 ], [ @.str.2, %273 ]
  store i32 %268, ptr %267, align 4, !tbaa !5
  %279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %280 = load i32, ptr @test_count, align 4, !tbaa !5
  %281 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = tail call ptr @s2n_strerror(i32 noundef %282, ptr noundef nonnull @.str.4) #8
  %284 = load i32, ptr %281, align 4, !tbaa !5
  %285 = tail call ptr @s2n_strerror_debug(i32 noundef %284, ptr noundef nonnull @.str.4) #8
  %286 = load i32, ptr %267, align 4, !tbaa !5
  %287 = tail call ptr @strerror(i32 noundef %286) #8
  %288 = load i32, ptr %267, align 4, !tbaa !5
  %289 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %279, ptr noundef nonnull %.str.5.sink187, i32 noundef %280, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 45, ptr noundef %283, ptr noundef %285, ptr noundef %287, i32 noundef %288) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

290:                                              ; preds = %261
  %291 = load i32, ptr @test_count, align 4, !tbaa !5
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr @test_count, align 4, !tbaa !5
  %293 = load ptr, ptr %168, align 8, !tbaa !48
  %294 = getelementptr inbounds i8, ptr %160, i64 232
  %295 = load ptr, ptr %294, align 8, !tbaa !15
  %296 = icmp eq ptr %293, %295
  br i1 %296, label %321, label %297

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

304:                                              ; preds = %297
  %305 = load ptr, ptr @stderr, align 8, !tbaa !9
  %306 = tail call i32 @fileno(ptr noundef %305) #8
  %307 = tail call i32 @isatty(i32 noundef %306) #8
  %.not70 = icmp eq i32 %307, 0
  br i1 %.not70, label %308, label %309

308:                                              ; preds = %304, %297
  br label %309

309:                                              ; preds = %304, %308
  %.str.5.sink198 = phi ptr [ @.str.5, %308 ], [ @.str.2, %304 ]
  store i32 %299, ptr %298, align 4, !tbaa !5
  %310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %311 = load i32, ptr @test_count, align 4, !tbaa !5
  %312 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = tail call ptr @s2n_strerror(i32 noundef %313, ptr noundef nonnull @.str.4) #8
  %315 = load i32, ptr %312, align 4, !tbaa !5
  %316 = tail call ptr @s2n_strerror_debug(i32 noundef %315, ptr noundef nonnull @.str.4) #8
  %317 = load i32, ptr %298, align 4, !tbaa !5
  %318 = tail call ptr @strerror(i32 noundef %317) #8
  %319 = load i32, ptr %298, align 4, !tbaa !5
  %320 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %310, ptr noundef nonnull %.str.5.sink198, i32 noundef %311, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %314, ptr noundef %316, ptr noundef %318, i32 noundef %319) #10
  tail call void @exit(i32 noundef 1) #11
  unreachable

321:                                              ; preds = %290, %157
  %.0 = phi i32 [ -1, %157 ], [ 0, %290 ]
  %322 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  %323 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br i1 %164, label %324, label %829

324:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  %325 = call ptr @s2n_connection_new(i32 noundef 0) #8
  store ptr %325, ptr %5, align 8, !tbaa !9
  %326 = load i32, ptr @test_count, align 4, !tbaa !5
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr @test_count, align 4, !tbaa !5
  %328 = icmp eq ptr %325, null
  br i1 %328, label %329, label %353

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

336:                                              ; preds = %329
  %337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %338 = call i32 @fileno(ptr noundef %337) #8
  %339 = call i32 @isatty(i32 noundef %338) #8
  %.not89 = icmp eq i32 %339, 0
  br i1 %.not89, label %340, label %341

340:                                              ; preds = %336, %329
  br label %341

341:                                              ; preds = %336, %340
  %.str.5.sink209 = phi ptr [ @.str.5, %340 ], [ @.str.2, %336 ]
  store i32 %331, ptr %330, align 4, !tbaa !5
  %342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %343 = load i32, ptr @test_count, align 4, !tbaa !5
  %344 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %345 = load i32, ptr %344, align 4, !tbaa !5
  %346 = call ptr @s2n_strerror(i32 noundef %345, ptr noundef nonnull @.str.4) #8
  %347 = load i32, ptr %344, align 4, !tbaa !5
  %348 = call ptr @s2n_strerror_debug(i32 noundef %347, ptr noundef nonnull @.str.4) #8
  %349 = load i32, ptr %330, align 4, !tbaa !5
  %350 = call ptr @strerror(i32 noundef %349) #8
  %351 = load i32, ptr %330, align 4, !tbaa !5
  %352 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %342, ptr noundef nonnull %.str.5.sink209, i32 noundef %343, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 53, ptr noundef %346, ptr noundef %348, ptr noundef %350, i32 noundef %351) #10
  call void @exit(i32 noundef 1) #11
  unreachable

353:                                              ; preds = %324
  %354 = getelementptr inbounds i8, ptr %325, i64 232
  %355 = load ptr, ptr %354, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %355, align 8, !tbaa !42
  %356 = load ptr, ptr %5, align 8, !tbaa !9
  %357 = getelementptr inbounds i8, ptr %356, i64 220
  store i8 33, ptr %357, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %358 = call ptr @s2n_connection_new(i32 noundef 1) #8
  store ptr %358, ptr %6, align 8, !tbaa !9
  %359 = load i32, ptr @test_count, align 4, !tbaa !5
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr @test_count, align 4, !tbaa !5
  %361 = icmp eq ptr %358, null
  br i1 %361, label %362, label %386

362:                                              ; preds = %353
  %363 = tail call ptr @__errno_location() #9
  %364 = load i32, ptr %363, align 4, !tbaa !5
  %365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %366 = call i32 @s2n_print_stacktrace(ptr noundef %365) #8
  %367 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %368 = trunc nuw i8 %367 to i1
  br i1 %368, label %369, label %373

369:                                              ; preds = %362
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = call i32 @fileno(ptr noundef %370) #8
  %372 = call i32 @isatty(i32 noundef %371) #8
  %.not88 = icmp eq i32 %372, 0
  br i1 %.not88, label %373, label %374

373:                                              ; preds = %369, %362
  br label %374

374:                                              ; preds = %369, %373
  %.str.5.sink220 = phi ptr [ @.str.5, %373 ], [ @.str.2, %369 ]
  store i32 %364, ptr %363, align 4, !tbaa !5
  %375 = load ptr, ptr @stderr, align 8, !tbaa !9
  %376 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %378, ptr noundef nonnull @.str.4) #8
  %380 = load i32, ptr %377, align 4, !tbaa !5
  %381 = call ptr @s2n_strerror_debug(i32 noundef %380, ptr noundef nonnull @.str.4) #8
  %382 = load i32, ptr %363, align 4, !tbaa !5
  %383 = call ptr @strerror(i32 noundef %382) #8
  %384 = load i32, ptr %363, align 4, !tbaa !5
  %385 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %375, ptr noundef nonnull %.str.5.sink220, i32 noundef %376, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 58, ptr noundef %379, ptr noundef %381, ptr noundef %383, i32 noundef %384) #10
  call void @exit(i32 noundef 1) #11
  unreachable

386:                                              ; preds = %353
  %387 = getelementptr inbounds i8, ptr %358, i64 232
  %388 = load ptr, ptr %387, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %388, align 8, !tbaa !42
  %389 = load ptr, ptr %6, align 8, !tbaa !9
  %390 = getelementptr inbounds i8, ptr %389, i64 220
  store i8 33, ptr %390, align 4, !tbaa !47
  %391 = add nsw i32 %359, 2
  store i32 %391, ptr @test_count, align 4, !tbaa !5
  %392 = call i32 @s2n_client_finished_send(ptr noundef %389) #8
  %393 = icmp eq i32 %392, -1
  br i1 %393, label %394, label %418

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

401:                                              ; preds = %394
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = call i32 @fileno(ptr noundef %402) #8
  %404 = call i32 @isatty(i32 noundef %403) #8
  %.not87 = icmp eq i32 %404, 0
  br i1 %.not87, label %405, label %406

405:                                              ; preds = %401, %394
  br label %406

406:                                              ; preds = %401, %405
  %.str.5.sink231 = phi ptr [ @.str.5, %405 ], [ @.str.2, %401 ]
  store i32 %396, ptr %395, align 4, !tbaa !5
  %407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %408 = load i32, ptr @test_count, align 4, !tbaa !5
  %409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %410 = load i32, ptr %409, align 4, !tbaa !5
  %411 = call ptr @s2n_strerror(i32 noundef %410, ptr noundef nonnull @.str.4) #8
  %412 = load i32, ptr %409, align 4, !tbaa !5
  %413 = call ptr @s2n_strerror_debug(i32 noundef %412, ptr noundef nonnull @.str.4) #8
  %414 = load i32, ptr %395, align 4, !tbaa !5
  %415 = call ptr @strerror(i32 noundef %414) #8
  %416 = load i32, ptr %395, align 4, !tbaa !5
  %417 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %407, ptr noundef nonnull %.str.5.sink231, i32 noundef %408, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 62, ptr noundef %411, ptr noundef %413, ptr noundef %415, i32 noundef %416) #10
  call void @exit(i32 noundef 1) #11
  unreachable

418:                                              ; preds = %386
  %419 = load ptr, ptr %6, align 8, !tbaa !9
  %420 = getelementptr inbounds i8, ptr %419, i64 2016
  %421 = load ptr, ptr %420, align 8, !tbaa !52
  %422 = getelementptr inbounds i8, ptr %421, i64 10
  %423 = load i8, ptr %422, align 1, !tbaa !53
  %424 = add i8 %423, 1
  store i8 %424, ptr %422, align 1, !tbaa !53
  %425 = load i32, ptr @test_count, align 4, !tbaa !5
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr @test_count, align 4, !tbaa !5
  %427 = load ptr, ptr %5, align 8, !tbaa !9
  %428 = getelementptr inbounds i8, ptr %427, i64 2016
  %429 = getelementptr inbounds i8, ptr %419, i64 2044
  %430 = load i32, ptr %429, align 4, !tbaa !50
  %431 = getelementptr inbounds i8, ptr %419, i64 2040
  %432 = load i32, ptr %431, align 8, !tbaa !51
  %433 = sub i32 %430, %432
  %434 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %420, ptr noundef nonnull %428, i32 noundef %433) #8
  %435 = icmp eq i32 %434, -1
  br i1 %435, label %436, label %460

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

443:                                              ; preds = %436
  %444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %445 = call i32 @fileno(ptr noundef %444) #8
  %446 = call i32 @isatty(i32 noundef %445) #8
  %.not86 = icmp eq i32 %446, 0
  br i1 %.not86, label %447, label %448

447:                                              ; preds = %443, %436
  br label %448

448:                                              ; preds = %443, %447
  %.str.5.sink242 = phi ptr [ @.str.5, %447 ], [ @.str.2, %443 ]
  store i32 %438, ptr %437, align 4, !tbaa !5
  %449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %450 = load i32, ptr @test_count, align 4, !tbaa !5
  %451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %452 = load i32, ptr %451, align 4, !tbaa !5
  %453 = call ptr @s2n_strerror(i32 noundef %452, ptr noundef nonnull @.str.4) #8
  %454 = load i32, ptr %451, align 4, !tbaa !5
  %455 = call ptr @s2n_strerror_debug(i32 noundef %454, ptr noundef nonnull @.str.4) #8
  %456 = load i32, ptr %437, align 4, !tbaa !5
  %457 = call ptr @strerror(i32 noundef %456) #8
  %458 = load i32, ptr %437, align 4, !tbaa !5
  %459 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %449, ptr noundef nonnull %.str.5.sink242, i32 noundef %450, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %453, ptr noundef %455, ptr noundef %457, i32 noundef %458) #10
  call void @exit(i32 noundef 1) #11
  unreachable

460:                                              ; preds = %418
  %461 = load i32, ptr @test_count, align 4, !tbaa !5
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr @test_count, align 4, !tbaa !5
  %463 = load ptr, ptr %5, align 8, !tbaa !9
  %464 = call i32 @s2n_client_finished_recv(ptr noundef %463) #8
  %465 = icmp eq i32 %464, -1
  br i1 %465, label %490, label %466

466:                                              ; preds = %460
  %467 = tail call ptr @__errno_location() #9
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %470 = call i32 @s2n_print_stacktrace(ptr noundef %469) #8
  %471 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %472 = trunc nuw i8 %471 to i1
  br i1 %472, label %473, label %477

473:                                              ; preds = %466
  %474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %475 = call i32 @fileno(ptr noundef %474) #8
  %476 = call i32 @isatty(i32 noundef %475) #8
  %.not71 = icmp eq i32 %476, 0
  br i1 %.not71, label %477, label %478

477:                                              ; preds = %473, %466
  br label %478

478:                                              ; preds = %473, %477
  %.str.5.sink253 = phi ptr [ @.str.5, %477 ], [ @.str.2, %473 ]
  store i32 %468, ptr %467, align 4, !tbaa !5
  %479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %480 = load i32, ptr @test_count, align 4, !tbaa !5
  %481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %482 = load i32, ptr %481, align 4, !tbaa !5
  %483 = call ptr @s2n_strerror(i32 noundef %482, ptr noundef nonnull @.str.4) #8
  %484 = load i32, ptr %481, align 4, !tbaa !5
  %485 = call ptr @s2n_strerror_debug(i32 noundef %484, ptr noundef nonnull @.str.4) #8
  %486 = load i32, ptr %467, align 4, !tbaa !5
  %487 = call ptr @strerror(i32 noundef %486) #8
  %488 = load i32, ptr %467, align 4, !tbaa !5
  %489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %479, ptr noundef nonnull %.str.5.sink253, i32 noundef %480, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 70, ptr noundef %483, ptr noundef %485, ptr noundef %487, i32 noundef %488) #10
  call void @exit(i32 noundef 1) #11
  unreachable

490:                                              ; preds = %460
  %491 = load i32, ptr @test_count, align 4, !tbaa !5
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr @test_count, align 4, !tbaa !5
  %493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %494 = load i32, ptr %493, align 4, !tbaa !5
  %495 = icmp eq i32 %494, 335544322
  br i1 %495, label %519, label %496

496:                                              ; preds = %490
  %497 = tail call ptr @__errno_location() #9
  %498 = load i32, ptr %497, align 4, !tbaa !5
  %499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %500 = call i32 @s2n_print_stacktrace(ptr noundef %499) #8
  %501 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %502 = trunc nuw i8 %501 to i1
  br i1 %502, label %503, label %507

503:                                              ; preds = %496
  %504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %505 = call i32 @fileno(ptr noundef %504) #8
  %506 = call i32 @isatty(i32 noundef %505) #8
  %.not72 = icmp eq i32 %506, 0
  br i1 %.not72, label %507, label %508

507:                                              ; preds = %503, %496
  br label %508

508:                                              ; preds = %503, %507
  %.str.5.sink264 = phi ptr [ @.str.5, %507 ], [ @.str.2, %503 ]
  store i32 %498, ptr %497, align 4, !tbaa !5
  %509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %510 = load i32, ptr @test_count, align 4, !tbaa !5
  %511 = load i32, ptr %493, align 4, !tbaa !5
  %512 = call ptr @s2n_strerror(i32 noundef %511, ptr noundef nonnull @.str.4) #8
  %513 = load i32, ptr %493, align 4, !tbaa !5
  %514 = call ptr @s2n_strerror_debug(i32 noundef %513, ptr noundef nonnull @.str.4) #8
  %515 = load i32, ptr %497, align 4, !tbaa !5
  %516 = call ptr @strerror(i32 noundef %515) #8
  %517 = load i32, ptr %497, align 4, !tbaa !5
  %518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %509, ptr noundef nonnull %.str.5.sink264, i32 noundef %510, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 70, ptr noundef %512, ptr noundef %514, ptr noundef %516, i32 noundef %517) #10
  call void @exit(i32 noundef 1) #11
  unreachable

519:                                              ; preds = %490
  %520 = add nsw i32 %491, 2
  store i32 %520, ptr @test_count, align 4, !tbaa !5
  %521 = call ptr @s2n_strerror_debug(i32 noundef 335544322, ptr noundef nonnull @.str.4) #8
  %522 = icmp eq ptr %521, null
  br i1 %522, label %523, label %546

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

530:                                              ; preds = %523
  %531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %532 = call i32 @fileno(ptr noundef %531) #8
  %533 = call i32 @isatty(i32 noundef %532) #8
  %.not85 = icmp eq i32 %533, 0
  br i1 %.not85, label %534, label %535

534:                                              ; preds = %530, %523
  br label %535

535:                                              ; preds = %530, %534
  %.str.5.sink273 = phi ptr [ @.str.5, %534 ], [ @.str.2, %530 ]
  store i32 %525, ptr %524, align 4, !tbaa !5
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = load i32, ptr @test_count, align 4, !tbaa !5
  %538 = load i32, ptr %493, align 4, !tbaa !5
  %539 = call ptr @s2n_strerror(i32 noundef %538, ptr noundef nonnull @.str.4) #8
  %540 = load i32, ptr %493, align 4, !tbaa !5
  %541 = call ptr @s2n_strerror_debug(i32 noundef %540, ptr noundef nonnull @.str.4) #8
  %542 = load i32, ptr %524, align 4, !tbaa !5
  %543 = call ptr @strerror(i32 noundef %542) #8
  %544 = load i32, ptr %524, align 4, !tbaa !5
  %545 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %536, ptr noundef nonnull %.str.5.sink273, i32 noundef %537, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 70, ptr noundef %539, ptr noundef %541, ptr noundef %543, i32 noundef %544) #10
  call void @exit(i32 noundef 1) #11
  unreachable

546:                                              ; preds = %519
  store i32 0, ptr %493, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #8
  %547 = tail call ptr @__errno_location() #9
  store i32 0, ptr %547, align 4, !tbaa !5
  %548 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %549 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %550 = call ptr @s2n_connection_new(i32 noundef 0) #8
  store ptr %550, ptr %7, align 8, !tbaa !9
  %551 = load i32, ptr @test_count, align 4, !tbaa !5
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr @test_count, align 4, !tbaa !5
  %553 = icmp eq ptr %550, null
  br i1 %553, label %554, label %576

554:                                              ; preds = %546
  %555 = load i32, ptr %547, align 4, !tbaa !5
  %556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %557 = call i32 @s2n_print_stacktrace(ptr noundef %556) #8
  %558 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %559 = trunc nuw i8 %558 to i1
  br i1 %559, label %560, label %564

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

564:                                              ; preds = %560, %554
  br label %565

565:                                              ; preds = %560, %564
  %.str.5.sink282 = phi ptr [ @.str.5, %564 ], [ @.str.2, %560 ]
  store i32 %555, ptr %547, align 4, !tbaa !5
  %566 = load ptr, ptr @stderr, align 8, !tbaa !9
  %567 = load i32, ptr @test_count, align 4, !tbaa !5
  %568 = load i32, ptr %493, align 4, !tbaa !5
  %569 = call ptr @s2n_strerror(i32 noundef %568, ptr noundef nonnull @.str.4) #8
  %570 = load i32, ptr %493, align 4, !tbaa !5
  %571 = call ptr @s2n_strerror_debug(i32 noundef %570, ptr noundef nonnull @.str.4) #8
  %572 = load i32, ptr %547, align 4, !tbaa !5
  %573 = call ptr @strerror(i32 noundef %572) #8
  %574 = load i32, ptr %547, align 4, !tbaa !5
  %575 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %566, ptr noundef nonnull %.str.5.sink282, i32 noundef %567, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 76, ptr noundef %569, ptr noundef %571, ptr noundef %573, i32 noundef %574) #10
  call void @exit(i32 noundef 1) #11
  unreachable

576:                                              ; preds = %546
  %577 = getelementptr inbounds i8, ptr %550, i64 232
  %578 = load ptr, ptr %577, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %578, align 8, !tbaa !42
  %579 = getelementptr inbounds i8, ptr %550, i64 220
  store i8 33, ptr %579, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %580 = call ptr @s2n_connection_new(i32 noundef 1) #8
  store ptr %580, ptr %8, align 8, !tbaa !9
  %581 = load i32, ptr @test_count, align 4, !tbaa !5
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr @test_count, align 4, !tbaa !5
  %583 = icmp eq ptr %580, null
  br i1 %583, label %584, label %606

584:                                              ; preds = %576
  %585 = load i32, ptr %547, align 4, !tbaa !5
  %586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %587 = call i32 @s2n_print_stacktrace(ptr noundef %586) #8
  %588 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %589 = trunc nuw i8 %588 to i1
  br i1 %589, label %590, label %594

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

594:                                              ; preds = %590, %584
  br label %595

595:                                              ; preds = %590, %594
  %.str.5.sink291 = phi ptr [ @.str.5, %594 ], [ @.str.2, %590 ]
  store i32 %585, ptr %547, align 4, !tbaa !5
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = load i32, ptr @test_count, align 4, !tbaa !5
  %598 = load i32, ptr %493, align 4, !tbaa !5
  %599 = call ptr @s2n_strerror(i32 noundef %598, ptr noundef nonnull @.str.4) #8
  %600 = load i32, ptr %493, align 4, !tbaa !5
  %601 = call ptr @s2n_strerror_debug(i32 noundef %600, ptr noundef nonnull @.str.4) #8
  %602 = load i32, ptr %547, align 4, !tbaa !5
  %603 = call ptr @strerror(i32 noundef %602) #8
  %604 = load i32, ptr %547, align 4, !tbaa !5
  %605 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %596, ptr noundef nonnull %.str.5.sink291, i32 noundef %597, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 81, ptr noundef %599, ptr noundef %601, ptr noundef %603, i32 noundef %604) #10
  call void @exit(i32 noundef 1) #11
  unreachable

606:                                              ; preds = %576
  %607 = getelementptr inbounds i8, ptr %580, i64 232
  %608 = load ptr, ptr %607, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %608, align 8, !tbaa !42
  %609 = getelementptr inbounds i8, ptr %580, i64 220
  store i8 33, ptr %609, align 4, !tbaa !47
  %610 = call i32 @s2n_prf_client_finished(ptr noundef nonnull %550) #8
  %611 = icmp sgt i32 %610, -1
  br i1 %611, label %612, label %755

612:                                              ; preds = %606
  %613 = getelementptr inbounds i8, ptr %550, i64 2168
  store i8 1, ptr %613, align 8, !tbaa !54
  %614 = load i32, ptr @test_count, align 4, !tbaa !5
  %615 = add nsw i32 %614, 1
  store i32 %615, ptr @test_count, align 4, !tbaa !5
  %616 = call i32 @s2n_client_finished_send(ptr noundef nonnull %580) #8
  %617 = icmp eq i32 %616, -1
  br i1 %617, label %618, label %640

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

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

628:                                              ; preds = %624, %618
  br label %629

629:                                              ; preds = %624, %628
  %.str.5.sink300 = phi ptr [ @.str.5, %628 ], [ @.str.2, %624 ]
  store i32 %619, ptr %547, align 4, !tbaa !5
  %630 = load ptr, ptr @stderr, align 8, !tbaa !9
  %631 = load i32, ptr @test_count, align 4, !tbaa !5
  %632 = load i32, ptr %493, align 4, !tbaa !5
  %633 = call ptr @s2n_strerror(i32 noundef %632, ptr noundef nonnull @.str.4) #8
  %634 = load i32, ptr %493, align 4, !tbaa !5
  %635 = call ptr @s2n_strerror_debug(i32 noundef %634, ptr noundef nonnull @.str.4) #8
  %636 = load i32, ptr %547, align 4, !tbaa !5
  %637 = call ptr @strerror(i32 noundef %636) #8
  %638 = load i32, ptr %547, align 4, !tbaa !5
  %639 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %630, ptr noundef nonnull %.str.5.sink300, i32 noundef %631, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 89, ptr noundef %633, ptr noundef %635, ptr noundef %637, i32 noundef %638) #10
  call void @exit(i32 noundef 1) #11
  unreachable

640:                                              ; preds = %612
  %641 = load i32, ptr @test_count, align 4, !tbaa !5
  %642 = add nsw i32 %641, 1
  store i32 %642, ptr @test_count, align 4, !tbaa !5
  %643 = getelementptr inbounds i8, ptr %580, i64 2016
  %644 = getelementptr inbounds i8, ptr %550, i64 2016
  %645 = getelementptr inbounds i8, ptr %580, i64 2044
  %646 = load i32, ptr %645, align 4, !tbaa !50
  %647 = getelementptr inbounds i8, ptr %580, i64 2040
  %648 = load i32, ptr %647, align 8, !tbaa !51
  %649 = sub i32 %646, %648
  %650 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %643, ptr noundef nonnull %644, i32 noundef %649) #8
  %651 = icmp eq i32 %650, -1
  br i1 %651, label %652, label %674

652:                                              ; preds = %640
  %653 = load i32, ptr %547, align 4, !tbaa !5
  %654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %655 = call i32 @s2n_print_stacktrace(ptr noundef %654) #8
  %656 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %657 = trunc nuw i8 %656 to i1
  br i1 %657, label %658, label %662

658:                                              ; preds = %652
  %659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %660 = call i32 @fileno(ptr noundef %659) #8
  %661 = call i32 @isatty(i32 noundef %660) #8
  %.not81 = icmp eq i32 %661, 0
  br i1 %.not81, label %662, label %663

662:                                              ; preds = %658, %652
  br label %663

663:                                              ; preds = %658, %662
  %.str.5.sink309 = phi ptr [ @.str.5, %662 ], [ @.str.2, %658 ]
  store i32 %653, ptr %547, align 4, !tbaa !5
  %664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %665 = load i32, ptr @test_count, align 4, !tbaa !5
  %666 = load i32, ptr %493, align 4, !tbaa !5
  %667 = call ptr @s2n_strerror(i32 noundef %666, ptr noundef nonnull @.str.4) #8
  %668 = load i32, ptr %493, align 4, !tbaa !5
  %669 = call ptr @s2n_strerror_debug(i32 noundef %668, ptr noundef nonnull @.str.4) #8
  %670 = load i32, ptr %547, align 4, !tbaa !5
  %671 = call ptr @strerror(i32 noundef %670) #8
  %672 = load i32, ptr %547, align 4, !tbaa !5
  %673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %664, ptr noundef nonnull %.str.5.sink309, i32 noundef %665, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef %667, ptr noundef %669, ptr noundef %671, i32 noundef %672) #10
  call void @exit(i32 noundef 1) #11
  unreachable

674:                                              ; preds = %640
  %675 = load i32, ptr @test_count, align 4, !tbaa !5
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr @test_count, align 4, !tbaa !5
  %677 = call i32 @s2n_client_finished_recv(ptr noundef nonnull %550) #8
  %678 = icmp eq i32 %677, -1
  br i1 %678, label %701, label %679

679:                                              ; preds = %674
  %680 = load i32, ptr %547, align 4, !tbaa !5
  %681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %682 = call i32 @s2n_print_stacktrace(ptr noundef %681) #8
  %683 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %684 = trunc nuw i8 %683 to i1
  br i1 %684, label %685, label %689

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

689:                                              ; preds = %685, %679
  br label %690

690:                                              ; preds = %685, %689
  %.str.5.sink318 = phi ptr [ @.str.5, %689 ], [ @.str.2, %685 ]
  store i32 %680, ptr %547, align 4, !tbaa !5
  %691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %692 = load i32, ptr @test_count, align 4, !tbaa !5
  %693 = load i32, ptr %493, align 4, !tbaa !5
  %694 = call ptr @s2n_strerror(i32 noundef %693, ptr noundef nonnull @.str.4) #8
  %695 = load i32, ptr %493, align 4, !tbaa !5
  %696 = call ptr @s2n_strerror_debug(i32 noundef %695, ptr noundef nonnull @.str.4) #8
  %697 = load i32, ptr %547, align 4, !tbaa !5
  %698 = call ptr @strerror(i32 noundef %697) #8
  %699 = load i32, ptr %547, align 4, !tbaa !5
  %700 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %691, ptr noundef nonnull %.str.5.sink318, i32 noundef %692, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 92, ptr noundef %694, ptr noundef %696, ptr noundef %698, i32 noundef %699) #10
  call void @exit(i32 noundef 1) #11
  unreachable

701:                                              ; preds = %674
  %702 = load i32, ptr @test_count, align 4, !tbaa !5
  %703 = add nsw i32 %702, 1
  store i32 %703, ptr @test_count, align 4, !tbaa !5
  %704 = load i32, ptr %493, align 4, !tbaa !5
  %705 = icmp eq i32 %704, 402653194
  br i1 %705, label %728, label %706

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

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

716:                                              ; preds = %712, %706
  br label %717

717:                                              ; preds = %712, %716
  %.str.5.sink327 = phi ptr [ @.str.5, %716 ], [ @.str.2, %712 ]
  store i32 %707, ptr %547, align 4, !tbaa !5
  %718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %719 = load i32, ptr @test_count, align 4, !tbaa !5
  %720 = load i32, ptr %493, align 4, !tbaa !5
  %721 = call ptr @s2n_strerror(i32 noundef %720, ptr noundef nonnull @.str.4) #8
  %722 = load i32, ptr %493, align 4, !tbaa !5
  %723 = call ptr @s2n_strerror_debug(i32 noundef %722, ptr noundef nonnull @.str.4) #8
  %724 = load i32, ptr %547, align 4, !tbaa !5
  %725 = call ptr @strerror(i32 noundef %724) #8
  %726 = load i32, ptr %547, align 4, !tbaa !5
  %727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %718, ptr noundef nonnull %.str.5.sink327, i32 noundef %719, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 92, ptr noundef %721, ptr noundef %723, ptr noundef %725, i32 noundef %726) #10
  call void @exit(i32 noundef 1) #11
  unreachable

728:                                              ; preds = %701
  %729 = add nsw i32 %702, 2
  store i32 %729, ptr @test_count, align 4, !tbaa !5
  %730 = call ptr @s2n_strerror_debug(i32 noundef 402653194, ptr noundef nonnull @.str.4) #8
  %731 = icmp eq ptr %730, null
  br i1 %731, label %732, label %754

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

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

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

743:                                              ; preds = %738, %742
  %.str.5.sink336 = phi ptr [ @.str.5, %742 ], [ @.str.2, %738 ]
  store i32 %733, ptr %547, align 4, !tbaa !5
  %744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %745 = load i32, ptr @test_count, align 4, !tbaa !5
  %746 = load i32, ptr %493, align 4, !tbaa !5
  %747 = call ptr @s2n_strerror(i32 noundef %746, ptr noundef nonnull @.str.4) #8
  %748 = load i32, ptr %493, align 4, !tbaa !5
  %749 = call ptr @s2n_strerror_debug(i32 noundef %748, ptr noundef nonnull @.str.4) #8
  %750 = load i32, ptr %547, align 4, !tbaa !5
  %751 = call ptr @strerror(i32 noundef %750) #8
  %752 = load i32, ptr %547, align 4, !tbaa !5
  %753 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %744, ptr noundef nonnull %.str.5.sink336, i32 noundef %745, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 92, ptr noundef %747, ptr noundef %749, ptr noundef %751, i32 noundef %752) #10
  call void @exit(i32 noundef 1) #11
  unreachable

754:                                              ; preds = %728
  store i32 0, ptr %493, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #8
  store i32 0, ptr %547, align 4, !tbaa !5
  br label %755

755:                                              ; preds = %606, %754
  %.1 = phi i32 [ %.0, %754 ], [ -1, %606 ]
  %756 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %757 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br i1 %611, label %758, label %829

758:                                              ; preds = %755
  %759 = call i32 @s2n_cleanup() #8
  %760 = icmp eq i32 %759, -1
  br i1 %760, label %761, label %783

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

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

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

772:                                              ; preds = %767, %771
  %.str.5.sink345 = phi ptr [ @.str.5, %771 ], [ @.str.2, %767 ]
  store i32 %762, ptr %547, align 4, !tbaa !5
  %773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %774 = load i32, ptr @test_count, align 4, !tbaa !5
  %775 = load i32, ptr %493, align 4, !tbaa !5
  %776 = call ptr @s2n_strerror(i32 noundef %775, ptr noundef nonnull @.str.4) #8
  %777 = load i32, ptr %493, align 4, !tbaa !5
  %778 = call ptr @s2n_strerror_debug(i32 noundef %777, ptr noundef nonnull @.str.4) #8
  %779 = load i32, ptr %547, align 4, !tbaa !5
  %780 = call ptr @strerror(i32 noundef %779) #8
  %781 = load i32, ptr %547, align 4, !tbaa !5
  %782 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %773, ptr noundef nonnull %.str.5.sink345, i32 noundef %774, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 95, ptr noundef %776, ptr noundef %778, ptr noundef %780, i32 noundef %781) #10
  call void @exit(i32 noundef 1) #11
  unreachable

783:                                              ; preds = %758
  %784 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #8
  %785 = icmp eq i32 %784, -1
  br i1 %785, label %786, label %808

786:                                              ; preds = %783
  %787 = load i32, ptr %547, align 4, !tbaa !5
  %788 = load ptr, ptr @stderr, align 8, !tbaa !9
  %789 = call i32 @s2n_print_stacktrace(ptr noundef %788) #8
  %790 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %791 = trunc nuw i8 %790 to i1
  br i1 %791, label %792, label %796

792:                                              ; preds = %786
  %793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %794 = call i32 @fileno(ptr noundef %793) #8
  %795 = call i32 @isatty(i32 noundef %794) #8
  %.not78 = icmp eq i32 %795, 0
  br i1 %.not78, label %796, label %797

796:                                              ; preds = %792, %786
  br label %797

797:                                              ; preds = %792, %796
  %.str.5.sink354 = phi ptr [ @.str.5, %796 ], [ @.str.2, %792 ]
  store i32 %787, ptr %547, align 4, !tbaa !5
  %798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %799 = load i32, ptr @test_count, align 4, !tbaa !5
  %800 = load i32, ptr %493, align 4, !tbaa !5
  %801 = call ptr @s2n_strerror(i32 noundef %800, ptr noundef nonnull @.str.4) #8
  %802 = load i32, ptr %493, align 4, !tbaa !5
  %803 = call ptr @s2n_strerror_debug(i32 noundef %802, ptr noundef nonnull @.str.4) #8
  %804 = load i32, ptr %547, align 4, !tbaa !5
  %805 = call ptr @strerror(i32 noundef %804) #8
  %806 = load i32, ptr %547, align 4, !tbaa !5
  %807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %798, ptr noundef nonnull %.str.5.sink354, i32 noundef %799, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 95, ptr noundef %801, ptr noundef %803, ptr noundef %805, i32 noundef %806) #10
  call void @exit(i32 noundef 1) #11
  unreachable

808:                                              ; preds = %783
  %809 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %810 = trunc nuw i8 %809 to i1
  br i1 %810, label %811, label %822

811:                                              ; preds = %808
  %812 = load ptr, ptr @stdout, align 8, !tbaa !9
  %813 = call i32 @fileno(ptr noundef %812) #8
  %814 = call i32 @isatty(i32 noundef %813) #8
  %.not75 = icmp eq i32 %814, 0
  br i1 %.not75, label %822, label %815

815:                                              ; preds = %811
  %816 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not77 = icmp eq i32 %816, 0
  %817 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not77, label %820, label %818

818:                                              ; preds = %815
  %819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %817, ptr noundef nonnull @.str.21, i32 noundef %816) #8
  br label %829

820:                                              ; preds = %815
  %821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %817, ptr noundef nonnull @.str.22) #8
  br label %829

822:                                              ; preds = %811, %808
  %823 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not76 = icmp eq i32 %823, 0
  %824 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not76, label %827, label %825

825:                                              ; preds = %822
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %824, ptr noundef nonnull @.str.23, i32 noundef %823) #8
  br label %829

827:                                              ; preds = %822
  %828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %824, ptr noundef nonnull @.str.24) #8
  br label %829

829:                                              ; preds = %820, %818, %827, %825, %755, %321
  %.2 = phi i32 [ %.0, %321 ], [ %.1, %755 ], [ 0, %825 ], [ 0, %827 ], [ 0, %818 ], [ 0, %820 ]
  ret i32 %.2
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_prf_client_finished(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_client_finished_send(ptr noundef) local_unnamed_addr #2

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

declare i32 @s2n_client_finished_recv(ptr noundef) local_unnamed_addr #2

declare void @s2n_debug_info_reset() local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !10, i64 232}
!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 = !{!43, !10, i64 0}
!43 = !{!"s2n_crypto_parameters", !10, i64 0, !44, i64 8, !44, i64 16, !45, i64 24, !45, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!44 = !{!"s2n_session_key", !10, i64 0}
!45 = !{!"s2n_hmac_state", !6, i64 0, !31, i64 4, !6, i64 8, !31, i64 12, !7, i64 14, !46, i64 16, !46, i64 72, !46, i64 128, !46, i64 184, !7, i64 240, !7, i64 368}
!46 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !18, i64 16, !7, i64 24}
!47 = !{!16, !7, i64 220}
!48 = !{!16, !10, i64 632}
!49 = !{!16, !10, i64 224}
!50 = !{!16, !6, i64 2044}
!51 = !{!16, !6, i64 2040}
!52 = !{!16, !10, i64 2016}
!53 = !{!7, !7, i64 0}
!54 = !{!16, !7, i64 2168}


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