; LLVM IR from aws/s2n-tls :: tests/unit (s2n_server_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 %11, align 8, !tbaa !9
  %361 = call i32 @s2n_prf_server_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 %9, align 8, !tbaa !9
  %371 = getelementptr inbounds %struct.s2n_connection, ptr %370, i32 0, i32 30
  %372 = load ptr, ptr %371, align 8, !tbaa !48
  %373 = load ptr, ptr %9, 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 %9, align 8, !tbaa !9
  %437 = call i32 @s2n_server_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 %9, 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 %11, 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 %9, 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 %9, 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 %11, align 8, !tbaa !9
  %577 = call i32 @s2n_server_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 %9, align 8, !tbaa !9
  %639 = getelementptr inbounds %struct.s2n_connection, ptr %638, i32 0, i32 30
  %640 = load ptr, ptr %639, align 8, !tbaa !48
  %641 = load ptr, ptr %9, 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 %1842 [
    i32 0, label %707
    i32 1, label %1840
  ]

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 ptr, ptr %23, align 8, !tbaa !9
  %846 = call i32 @s2n_prf_server_finished(ptr noundef %845)
  %847 = icmp sgt i32 %846, -1
  br i1 %847, label %849, label %848

848:                                              ; preds = %844
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %1196

849:                                              ; preds = %844
  br label %850

850:                                              ; preds = %849
  br label %851

851:                                              ; preds = %850
  %852 = load ptr, ptr %23, align 8, !tbaa !9
  %853 = getelementptr inbounds %struct.s2n_connection, ptr %852, i32 0, i32 52
  %854 = getelementptr inbounds %struct.s2n_handshake, ptr %853, i32 0, i32 3
  %855 = getelementptr inbounds [48 x i8], ptr %854, i64 0, i64 0
  %856 = load i8, ptr %855, align 8, !tbaa !52
  %857 = add i8 %856, 1
  store i8 %857, ptr %855, align 8, !tbaa !52
  br label %858

858:                                              ; preds = %851
  %859 = load i32, ptr @test_count, align 4, !tbaa !5
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr @test_count, align 4, !tbaa !5
  %861 = load ptr, ptr %21, align 8, !tbaa !9
  %862 = call i32 @s2n_server_finished_send(ptr noundef %861)
  %863 = icmp eq i32 %862, -1
  br i1 %863, label %864, label %917

864:                                              ; preds = %858
  br label %865

865:                                              ; preds = %864
  br label %866

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

873:                                              ; preds = %866
  %874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %875 = call i32 @fileno(ptr noundef %874) #7
  %876 = call i32 @isatty(i32 noundef %875) #7
  %877 = icmp ne i32 %876, 0
  br i1 %877, label %878, label %895

878:                                              ; preds = %873
  %879 = load i32, ptr %25, align 4, !tbaa !5
  %880 = call ptr @__errno_location() #8
  store i32 %879, ptr %880, align 4, !tbaa !5
  %881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %882 = load i32, ptr @test_count, align 4, !tbaa !5
  %883 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %884 = load i32, ptr %883, align 4, !tbaa !5
  %885 = call ptr @s2n_strerror(i32 noundef %884, ptr noundef @.str.4)
  %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_debug(i32 noundef %887, ptr noundef @.str.4)
  %889 = call ptr @__errno_location() #8
  %890 = load i32, ptr %889, align 4, !tbaa !5
  %891 = call ptr @strerror(i32 noundef %890) #7
  %892 = call ptr @__errno_location() #8
  %893 = load i32, ptr %892, align 4, !tbaa !5
  %894 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %881, ptr noundef @.str.2, i32 noundef %882, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 66, ptr noundef %885, ptr noundef %888, ptr noundef %891, i32 noundef %893) #7
  br label %912

895:                                              ; preds = %873, %866
  %896 = load i32, ptr %25, align 4, !tbaa !5
  %897 = call ptr @__errno_location() #8
  store i32 %896, ptr %897, align 4, !tbaa !5
  %898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %899 = load i32, ptr @test_count, align 4, !tbaa !5
  %900 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %901 = load i32, ptr %900, align 4, !tbaa !5
  %902 = call ptr @s2n_strerror(i32 noundef %901, ptr noundef @.str.4)
  %903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %904 = load i32, ptr %903, align 4, !tbaa !5
  %905 = call ptr @s2n_strerror_debug(i32 noundef %904, ptr noundef @.str.4)
  %906 = call ptr @__errno_location() #8
  %907 = load i32, ptr %906, align 4, !tbaa !5
  %908 = call ptr @strerror(i32 noundef %907) #7
  %909 = call ptr @__errno_location() #8
  %910 = load i32, ptr %909, align 4, !tbaa !5
  %911 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %898, ptr noundef @.str.5, i32 noundef %899, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 66, ptr noundef %902, ptr noundef %905, ptr noundef %908, i32 noundef %910) #7
  br label %912

912:                                              ; preds = %895, %878
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %913

913:                                              ; preds = %912
  br label %914

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

915:                                              ; No predecessors!
  br label %916

916:                                              ; preds = %915
  br label %917

917:                                              ; preds = %916, %858
  br label %918

918:                                              ; preds = %917
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919
  %921 = load i32, ptr @test_count, align 4, !tbaa !5
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr @test_count, align 4, !tbaa !5
  %923 = load ptr, ptr %21, align 8, !tbaa !9
  %924 = getelementptr inbounds %struct.s2n_connection, ptr %923, i32 0, i32 52
  %925 = getelementptr inbounds %struct.s2n_handshake, ptr %924, i32 0, i32 0
  %926 = load ptr, ptr %23, align 8, !tbaa !9
  %927 = getelementptr inbounds %struct.s2n_connection, ptr %926, i32 0, i32 52
  %928 = getelementptr inbounds %struct.s2n_handshake, ptr %927, i32 0, i32 0
  %929 = load ptr, ptr %21, 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 2
  %933 = load i32, ptr %932, align 4, !tbaa !50
  %934 = load ptr, ptr %21, align 8, !tbaa !9
  %935 = getelementptr inbounds %struct.s2n_connection, ptr %934, i32 0, i32 52
  %936 = getelementptr inbounds %struct.s2n_handshake, ptr %935, i32 0, i32 0
  %937 = getelementptr inbounds %struct.s2n_stuffer, ptr %936, i32 0, i32 1
  %938 = load i32, ptr %937, align 8, !tbaa !51
  %939 = sub i32 %933, %938
  %940 = call i32 @s2n_stuffer_copy(ptr noundef %925, ptr noundef %928, i32 noundef %939)
  %941 = icmp eq i32 %940, -1
  br i1 %941, label %942, label %995

942:                                              ; preds = %920
  br label %943

943:                                              ; preds = %942
  br label %944

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

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

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

973:                                              ; preds = %951, %944
  %974 = load i32, ptr %26, align 4, !tbaa !5
  %975 = call ptr @__errno_location() #8
  store i32 %974, ptr %975, align 4, !tbaa !5
  %976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %977 = load i32, ptr @test_count, align 4, !tbaa !5
  %978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %979 = load i32, ptr %978, align 4, !tbaa !5
  %980 = call ptr @s2n_strerror(i32 noundef %979, ptr noundef @.str.4)
  %981 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %982 = load i32, ptr %981, align 4, !tbaa !5
  %983 = call ptr @s2n_strerror_debug(i32 noundef %982, ptr noundef @.str.4)
  %984 = call ptr @__errno_location() #8
  %985 = load i32, ptr %984, align 4, !tbaa !5
  %986 = call ptr @strerror(i32 noundef %985) #7
  %987 = call ptr @__errno_location() #8
  %988 = load i32, ptr %987, align 4, !tbaa !5
  %989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %976, ptr noundef @.str.5, i32 noundef %977, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 68, ptr noundef %980, ptr noundef %983, ptr noundef %986, i32 noundef %988) #7
  br label %990

990:                                              ; preds = %973, %956
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %991

991:                                              ; preds = %990
  br label %992

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

993:                                              ; No predecessors!
  br label %994

994:                                              ; preds = %993
  br label %995

995:                                              ; preds = %994, %920
  br label %996

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996
  br label %998

998:                                              ; preds = %997
  br label %999

999:                                              ; preds = %998
  br label %1000

1000:                                             ; preds = %999
  %1001 = load i32, ptr @test_count, align 4, !tbaa !5
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr @test_count, align 4, !tbaa !5
  %1003 = load ptr, ptr %23, align 8, !tbaa !9
  %1004 = call i32 @s2n_client_finished_recv(ptr noundef %1003)
  %1005 = icmp eq i32 %1004, -1
  br i1 %1005, label %1059, label %1006

1006:                                             ; preds = %1000
  br label %1007

1007:                                             ; preds = %1006
  br label %1008

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

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

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

1037:                                             ; preds = %1015, %1008
  %1038 = load i32, ptr %27, align 4, !tbaa !5
  %1039 = call ptr @__errno_location() #8
  store i32 %1038, ptr %1039, align 4, !tbaa !5
  %1040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1041 = load i32, ptr @test_count, align 4, !tbaa !5
  %1042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1043 = load i32, ptr %1042, align 4, !tbaa !5
  %1044 = call ptr @s2n_strerror(i32 noundef %1043, ptr noundef @.str.4)
  %1045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1046 = load i32, ptr %1045, align 4, !tbaa !5
  %1047 = call ptr @s2n_strerror_debug(i32 noundef %1046, ptr noundef @.str.4)
  %1048 = call ptr @__errno_location() #8
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = call ptr @strerror(i32 noundef %1049) #7
  %1051 = call ptr @__errno_location() #8
  %1052 = load i32, ptr %1051, align 4, !tbaa !5
  %1053 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1040, ptr noundef @.str.5, i32 noundef %1041, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 69, ptr noundef %1044, ptr noundef %1047, ptr noundef %1050, i32 noundef %1052) #7
  br label %1054

1054:                                             ; preds = %1037, %1020
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

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

1057:                                             ; No predecessors!
  br label %1058

1058:                                             ; preds = %1057
  br label %1059

1059:                                             ; preds = %1058, %1000
  br label %1060

1060:                                             ; preds = %1059
  br label %1061

1061:                                             ; preds = %1060
  br label %1062

1062:                                             ; preds = %1061
  %1063 = load i32, ptr @test_count, align 4, !tbaa !5
  %1064 = add nsw i32 %1063, 1
  store i32 %1064, ptr @test_count, align 4, !tbaa !5
  %1065 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1066 = load i32, ptr %1065, align 4, !tbaa !5
  %1067 = icmp eq i32 %1066, 335544322
  br i1 %1067, label %1121, label %1068

1068:                                             ; preds = %1062
  br label %1069

1069:                                             ; preds = %1068
  br label %1070

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

1077:                                             ; preds = %1070
  %1078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1079 = call i32 @fileno(ptr noundef %1078) #7
  %1080 = call i32 @isatty(i32 noundef %1079) #7
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1099

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

1099:                                             ; preds = %1077, %1070
  %1100 = load i32, ptr %28, align 4, !tbaa !5
  %1101 = call ptr @__errno_location() #8
  store i32 %1100, ptr %1101, align 4, !tbaa !5
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = load i32, ptr @test_count, align 4, !tbaa !5
  %1104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1105 = load i32, ptr %1104, align 4, !tbaa !5
  %1106 = call ptr @s2n_strerror(i32 noundef %1105, ptr noundef @.str.4)
  %1107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  %1109 = call ptr @s2n_strerror_debug(i32 noundef %1108, ptr noundef @.str.4)
  %1110 = call ptr @__errno_location() #8
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  %1112 = call ptr @strerror(i32 noundef %1111) #7
  %1113 = call ptr @__errno_location() #8
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  %1115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1102, ptr noundef @.str.5, i32 noundef %1103, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 69, ptr noundef %1106, ptr noundef %1109, ptr noundef %1112, i32 noundef %1114) #7
  br label %1116

1116:                                             ; preds = %1099, %1082
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %1117

1117:                                             ; preds = %1116
  br label %1118

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

1119:                                             ; No predecessors!
  br label %1120

1120:                                             ; preds = %1119
  br label %1121

1121:                                             ; preds = %1120, %1062
  br label %1122

1122:                                             ; preds = %1121
  br label %1123

1123:                                             ; preds = %1122
  br label %1124

1124:                                             ; preds = %1123
  %1125 = load i32, ptr @test_count, align 4, !tbaa !5
  %1126 = add nsw i32 %1125, 1
  store i32 %1126, ptr @test_count, align 4, !tbaa !5
  %1127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1128 = load i32, ptr %1127, align 4, !tbaa !5
  %1129 = call ptr @s2n_strerror_debug(i32 noundef %1128, ptr noundef @.str.4)
  %1130 = icmp eq ptr %1129, null
  br i1 %1130, label %1131, label %1184

1131:                                             ; preds = %1124
  br label %1132

1132:                                             ; preds = %1131
  br label %1133

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

1140:                                             ; preds = %1133
  %1141 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1142 = call i32 @fileno(ptr noundef %1141) #7
  %1143 = call i32 @isatty(i32 noundef %1142) #7
  %1144 = icmp ne i32 %1143, 0
  br i1 %1144, label %1145, label %1162

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

1162:                                             ; preds = %1140, %1133
  %1163 = load i32, ptr %29, align 4, !tbaa !5
  %1164 = call ptr @__errno_location() #8
  store i32 %1163, ptr %1164, align 4, !tbaa !5
  %1165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1166 = load i32, ptr @test_count, align 4, !tbaa !5
  %1167 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1168 = load i32, ptr %1167, align 4, !tbaa !5
  %1169 = call ptr @s2n_strerror(i32 noundef %1168, ptr noundef @.str.4)
  %1170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1171 = load i32, ptr %1170, align 4, !tbaa !5
  %1172 = call ptr @s2n_strerror_debug(i32 noundef %1171, ptr noundef @.str.4)
  %1173 = call ptr @__errno_location() #8
  %1174 = load i32, ptr %1173, align 4, !tbaa !5
  %1175 = call ptr @strerror(i32 noundef %1174) #7
  %1176 = call ptr @__errno_location() #8
  %1177 = load i32, ptr %1176, align 4, !tbaa !5
  %1178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1165, ptr noundef @.str.5, i32 noundef %1166, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 69, ptr noundef %1169, ptr noundef %1172, ptr noundef %1175, i32 noundef %1177) #7
  br label %1179

1179:                                             ; preds = %1162, %1145
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %1180

1180:                                             ; preds = %1179
  br label %1181

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

1182:                                             ; No predecessors!
  br label %1183

1183:                                             ; preds = %1182
  br label %1184

1184:                                             ; preds = %1183, %1124
  br label %1185

1185:                                             ; preds = %1184
  br label %1186

1186:                                             ; preds = %1185
  br label %1187

1187:                                             ; preds = %1186
  br label %1188

1188:                                             ; preds = %1187
  br label %1189

1189:                                             ; preds = %1188
  %1190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1190, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1191 = call ptr @__errno_location() #8
  store i32 0, ptr %1191, align 4, !tbaa !5
  br label %1192

1192:                                             ; preds = %1189
  br label %1193

1193:                                             ; preds = %1192
  br label %1194

1194:                                             ; preds = %1193
  br label %1195

1195:                                             ; preds = %1194
  store i32 0, ptr %13, align 4
  br label %1196

1196:                                             ; preds = %1195, %848
  %1197 = call i32 @s2n_connection_ptr_free(ptr noundef %23)
  %1198 = getelementptr inbounds %struct.s2n_result, ptr %30, i32 0, i32 0
  store i32 %1197, ptr %1198, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  %1199 = call i32 @s2n_connection_ptr_free(ptr noundef %21)
  %1200 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %1199, ptr %1200, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  %1201 = load i32, ptr %13, align 4
  switch i32 %1201, label %1842 [
    i32 0, label %1202
    i32 1, label %1840
  ]

1202:                                             ; preds = %1196
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %1203 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %1203, ptr %32, align 8, !tbaa !9
  br label %1204

1204:                                             ; preds = %1202
  %1205 = load i32, ptr @test_count, align 4, !tbaa !5
  %1206 = add nsw i32 %1205, 1
  store i32 %1206, ptr @test_count, align 4, !tbaa !5
  %1207 = load ptr, ptr %32, align 8, !tbaa !9
  %1208 = icmp eq ptr %1207, null
  br i1 %1208, label %1209, label %1262

1209:                                             ; preds = %1204
  br label %1210

1210:                                             ; preds = %1209
  br label %1211

1211:                                             ; preds = %1210
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %1212 = call ptr @__errno_location() #8
  %1213 = load i32, ptr %1212, align 4, !tbaa !5
  store i32 %1213, ptr %33, align 4, !tbaa !5
  %1214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1215 = call i32 @s2n_print_stacktrace(ptr noundef %1214)
  %1216 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1217 = trunc i8 %1216 to i1
  br i1 %1217, label %1218, label %1240

1218:                                             ; preds = %1211
  %1219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1220 = call i32 @fileno(ptr noundef %1219) #7
  %1221 = call i32 @isatty(i32 noundef %1220) #7
  %1222 = icmp ne i32 %1221, 0
  br i1 %1222, label %1223, label %1240

1223:                                             ; preds = %1218
  %1224 = load i32, ptr %33, align 4, !tbaa !5
  %1225 = call ptr @__errno_location() #8
  store i32 %1224, ptr %1225, align 4, !tbaa !5
  %1226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1227 = load i32, ptr @test_count, align 4, !tbaa !5
  %1228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1229 = load i32, ptr %1228, align 4, !tbaa !5
  %1230 = call ptr @s2n_strerror(i32 noundef %1229, ptr noundef @.str.4)
  %1231 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1232 = load i32, ptr %1231, align 4, !tbaa !5
  %1233 = call ptr @s2n_strerror_debug(i32 noundef %1232, ptr noundef @.str.4)
  %1234 = call ptr @__errno_location() #8
  %1235 = load i32, ptr %1234, align 4, !tbaa !5
  %1236 = call ptr @strerror(i32 noundef %1235) #7
  %1237 = call ptr @__errno_location() #8
  %1238 = load i32, ptr %1237, align 4, !tbaa !5
  %1239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1226, ptr noundef @.str.2, i32 noundef %1227, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 75, ptr noundef %1230, ptr noundef %1233, ptr noundef %1236, i32 noundef %1238) #7
  br label %1257

1240:                                             ; preds = %1218, %1211
  %1241 = load i32, ptr %33, align 4, !tbaa !5
  %1242 = call ptr @__errno_location() #8
  store i32 %1241, ptr %1242, align 4, !tbaa !5
  %1243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1244 = load i32, ptr @test_count, align 4, !tbaa !5
  %1245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1246 = load i32, ptr %1245, align 4, !tbaa !5
  %1247 = call ptr @s2n_strerror(i32 noundef %1246, ptr noundef @.str.4)
  %1248 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1249 = load i32, ptr %1248, align 4, !tbaa !5
  %1250 = call ptr @s2n_strerror_debug(i32 noundef %1249, ptr noundef @.str.4)
  %1251 = call ptr @__errno_location() #8
  %1252 = load i32, ptr %1251, align 4, !tbaa !5
  %1253 = call ptr @strerror(i32 noundef %1252) #7
  %1254 = call ptr @__errno_location() #8
  %1255 = load i32, ptr %1254, align 4, !tbaa !5
  %1256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1243, ptr noundef @.str.5, i32 noundef %1244, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 75, ptr noundef %1247, ptr noundef %1250, ptr noundef %1253, i32 noundef %1255) #7
  br label %1257

1257:                                             ; preds = %1240, %1223
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %1258

1258:                                             ; preds = %1257
  br label %1259

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

1260:                                             ; No predecessors!
  br label %1261

1261:                                             ; preds = %1260
  br label %1262

1262:                                             ; preds = %1261, %1204
  br label %1263

1263:                                             ; preds = %1262
  br label %1264

1264:                                             ; preds = %1263
  %1265 = load ptr, ptr %32, align 8, !tbaa !9
  %1266 = getelementptr inbounds %struct.s2n_connection, ptr %1265, i32 0, i32 27
  %1267 = load ptr, ptr %1266, align 8, !tbaa !15
  %1268 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1267, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %1268, align 8, !tbaa !42
  %1269 = load ptr, ptr %32, align 8, !tbaa !9
  %1270 = getelementptr inbounds %struct.s2n_connection, ptr %1269, i32 0, i32 23
  store i8 33, ptr %1270, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %1271 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1271, ptr %34, align 8, !tbaa !9
  br label %1272

1272:                                             ; preds = %1264
  %1273 = load i32, ptr @test_count, align 4, !tbaa !5
  %1274 = add nsw i32 %1273, 1
  store i32 %1274, ptr @test_count, align 4, !tbaa !5
  %1275 = load ptr, ptr %34, align 8, !tbaa !9
  %1276 = icmp eq ptr %1275, null
  br i1 %1276, label %1277, label %1330

1277:                                             ; preds = %1272
  br label %1278

1278:                                             ; preds = %1277
  br label %1279

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

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

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

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

1325:                                             ; preds = %1308, %1291
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %1326

1326:                                             ; preds = %1325
  br label %1327

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

1328:                                             ; No predecessors!
  br label %1329

1329:                                             ; preds = %1328
  br label %1330

1330:                                             ; preds = %1329, %1272
  br label %1331

1331:                                             ; preds = %1330
  br label %1332

1332:                                             ; preds = %1331
  %1333 = load ptr, ptr %34, align 8, !tbaa !9
  %1334 = getelementptr inbounds %struct.s2n_connection, ptr %1333, i32 0, i32 27
  %1335 = load ptr, ptr %1334, align 8, !tbaa !15
  %1336 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1335, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %1336, align 8, !tbaa !42
  %1337 = load ptr, ptr %34, align 8, !tbaa !9
  %1338 = getelementptr inbounds %struct.s2n_connection, ptr %1337, i32 0, i32 23
  store i8 33, ptr %1338, align 4, !tbaa !47
  br label %1339

1339:                                             ; preds = %1332
  %1340 = load ptr, ptr %34, align 8, !tbaa !9
  %1341 = call i32 @s2n_prf_server_finished(ptr noundef %1340)
  %1342 = icmp sgt i32 %1341, -1
  br i1 %1342, label %1344, label %1343

1343:                                             ; preds = %1339
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %13, align 4
  br label %1688

1344:                                             ; preds = %1339
  br label %1345

1345:                                             ; preds = %1344
  br label %1346

1346:                                             ; preds = %1345
  %1347 = load ptr, ptr %34, align 8, !tbaa !9
  %1348 = getelementptr inbounds %struct.s2n_connection, ptr %1347, i32 0, i32 52
  %1349 = getelementptr inbounds %struct.s2n_handshake, ptr %1348, i32 0, i32 5
  store i8 1, ptr %1349, align 8, !tbaa !53
  br label %1350

1350:                                             ; preds = %1346
  %1351 = load i32, ptr @test_count, align 4, !tbaa !5
  %1352 = add nsw i32 %1351, 1
  store i32 %1352, ptr @test_count, align 4, !tbaa !5
  %1353 = load ptr, ptr %32, align 8, !tbaa !9
  %1354 = call i32 @s2n_server_finished_send(ptr noundef %1353)
  %1355 = icmp eq i32 %1354, -1
  br i1 %1355, label %1356, label %1409

1356:                                             ; preds = %1350
  br label %1357

1357:                                             ; preds = %1356
  br label %1358

1358:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %1359 = call ptr @__errno_location() #8
  %1360 = load i32, ptr %1359, align 4, !tbaa !5
  store i32 %1360, ptr %36, align 4, !tbaa !5
  %1361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1362 = call i32 @s2n_print_stacktrace(ptr noundef %1361)
  %1363 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1364 = trunc i8 %1363 to i1
  br i1 %1364, label %1365, label %1387

1365:                                             ; preds = %1358
  %1366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1367 = call i32 @fileno(ptr noundef %1366) #7
  %1368 = call i32 @isatty(i32 noundef %1367) #7
  %1369 = icmp ne i32 %1368, 0
  br i1 %1369, label %1370, label %1387

1370:                                             ; preds = %1365
  %1371 = load i32, ptr %36, align 4, !tbaa !5
  %1372 = call ptr @__errno_location() #8
  store i32 %1371, ptr %1372, align 4, !tbaa !5
  %1373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1374 = load i32, ptr @test_count, align 4, !tbaa !5
  %1375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1376 = load i32, ptr %1375, align 4, !tbaa !5
  %1377 = call ptr @s2n_strerror(i32 noundef %1376, ptr noundef @.str.4)
  %1378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1379 = load i32, ptr %1378, align 4, !tbaa !5
  %1380 = call ptr @s2n_strerror_debug(i32 noundef %1379, ptr noundef @.str.4)
  %1381 = call ptr @__errno_location() #8
  %1382 = load i32, ptr %1381, align 4, !tbaa !5
  %1383 = call ptr @strerror(i32 noundef %1382) #7
  %1384 = call ptr @__errno_location() #8
  %1385 = load i32, ptr %1384, align 4, !tbaa !5
  %1386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1373, ptr noundef @.str.2, i32 noundef %1374, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 88, ptr noundef %1377, ptr noundef %1380, ptr noundef %1383, i32 noundef %1385) #7
  br label %1404

1387:                                             ; preds = %1365, %1358
  %1388 = load i32, ptr %36, align 4, !tbaa !5
  %1389 = call ptr @__errno_location() #8
  store i32 %1388, ptr %1389, align 4, !tbaa !5
  %1390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1391 = load i32, ptr @test_count, align 4, !tbaa !5
  %1392 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1393 = load i32, ptr %1392, align 4, !tbaa !5
  %1394 = call ptr @s2n_strerror(i32 noundef %1393, ptr noundef @.str.4)
  %1395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1396 = load i32, ptr %1395, align 4, !tbaa !5
  %1397 = call ptr @s2n_strerror_debug(i32 noundef %1396, ptr noundef @.str.4)
  %1398 = call ptr @__errno_location() #8
  %1399 = load i32, ptr %1398, align 4, !tbaa !5
  %1400 = call ptr @strerror(i32 noundef %1399) #7
  %1401 = call ptr @__errno_location() #8
  %1402 = load i32, ptr %1401, align 4, !tbaa !5
  %1403 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1390, ptr noundef @.str.5, i32 noundef %1391, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 88, ptr noundef %1394, ptr noundef %1397, ptr noundef %1400, i32 noundef %1402) #7
  br label %1404

1404:                                             ; preds = %1387, %1370
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %1405

1405:                                             ; preds = %1404
  br label %1406

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

1407:                                             ; No predecessors!
  br label %1408

1408:                                             ; preds = %1407
  br label %1409

1409:                                             ; preds = %1408, %1350
  br label %1410

1410:                                             ; preds = %1409
  br label %1411

1411:                                             ; preds = %1410
  br label %1412

1412:                                             ; preds = %1411
  %1413 = load i32, ptr @test_count, align 4, !tbaa !5
  %1414 = add nsw i32 %1413, 1
  store i32 %1414, ptr @test_count, align 4, !tbaa !5
  %1415 = load ptr, ptr %32, align 8, !tbaa !9
  %1416 = getelementptr inbounds %struct.s2n_connection, ptr %1415, i32 0, i32 52
  %1417 = getelementptr inbounds %struct.s2n_handshake, ptr %1416, i32 0, i32 0
  %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 = load ptr, ptr %32, align 8, !tbaa !9
  %1422 = getelementptr inbounds %struct.s2n_connection, ptr %1421, i32 0, i32 52
  %1423 = getelementptr inbounds %struct.s2n_handshake, ptr %1422, i32 0, i32 0
  %1424 = getelementptr inbounds %struct.s2n_stuffer, ptr %1423, i32 0, i32 2
  %1425 = load i32, ptr %1424, align 4, !tbaa !50
  %1426 = load ptr, ptr %32, align 8, !tbaa !9
  %1427 = getelementptr inbounds %struct.s2n_connection, ptr %1426, i32 0, i32 52
  %1428 = getelementptr inbounds %struct.s2n_handshake, ptr %1427, i32 0, i32 0
  %1429 = getelementptr inbounds %struct.s2n_stuffer, ptr %1428, i32 0, i32 1
  %1430 = load i32, ptr %1429, align 8, !tbaa !51
  %1431 = sub i32 %1425, %1430
  %1432 = call i32 @s2n_stuffer_copy(ptr noundef %1417, ptr noundef %1420, i32 noundef %1431)
  %1433 = icmp eq i32 %1432, -1
  br i1 %1433, label %1434, label %1487

1434:                                             ; preds = %1412
  br label %1435

1435:                                             ; preds = %1434
  br label %1436

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

1443:                                             ; preds = %1436
  %1444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1445 = call i32 @fileno(ptr noundef %1444) #7
  %1446 = call i32 @isatty(i32 noundef %1445) #7
  %1447 = icmp ne i32 %1446, 0
  br i1 %1447, label %1448, label %1465

1448:                                             ; preds = %1443
  %1449 = load i32, ptr %37, align 4, !tbaa !5
  %1450 = call ptr @__errno_location() #8
  store i32 %1449, ptr %1450, align 4, !tbaa !5
  %1451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1452 = load i32, ptr @test_count, align 4, !tbaa !5
  %1453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1454 = load i32, ptr %1453, align 4, !tbaa !5
  %1455 = call ptr @s2n_strerror(i32 noundef %1454, ptr noundef @.str.4)
  %1456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1457 = load i32, ptr %1456, align 4, !tbaa !5
  %1458 = call ptr @s2n_strerror_debug(i32 noundef %1457, ptr noundef @.str.4)
  %1459 = call ptr @__errno_location() #8
  %1460 = load i32, ptr %1459, align 4, !tbaa !5
  %1461 = call ptr @strerror(i32 noundef %1460) #7
  %1462 = call ptr @__errno_location() #8
  %1463 = load i32, ptr %1462, align 4, !tbaa !5
  %1464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1451, ptr noundef @.str.2, i32 noundef %1452, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 90, ptr noundef %1455, ptr noundef %1458, ptr noundef %1461, i32 noundef %1463) #7
  br label %1482

1465:                                             ; preds = %1443, %1436
  %1466 = load i32, ptr %37, align 4, !tbaa !5
  %1467 = call ptr @__errno_location() #8
  store i32 %1466, ptr %1467, align 4, !tbaa !5
  %1468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1469 = load i32, ptr @test_count, align 4, !tbaa !5
  %1470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1471 = load i32, ptr %1470, align 4, !tbaa !5
  %1472 = call ptr @s2n_strerror(i32 noundef %1471, ptr noundef @.str.4)
  %1473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1474 = load i32, ptr %1473, align 4, !tbaa !5
  %1475 = call ptr @s2n_strerror_debug(i32 noundef %1474, ptr noundef @.str.4)
  %1476 = call ptr @__errno_location() #8
  %1477 = load i32, ptr %1476, align 4, !tbaa !5
  %1478 = call ptr @strerror(i32 noundef %1477) #7
  %1479 = call ptr @__errno_location() #8
  %1480 = load i32, ptr %1479, align 4, !tbaa !5
  %1481 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1468, ptr noundef @.str.5, i32 noundef %1469, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 90, ptr noundef %1472, ptr noundef %1475, ptr noundef %1478, i32 noundef %1480) #7
  br label %1482

1482:                                             ; preds = %1465, %1448
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %1483

1483:                                             ; preds = %1482
  br label %1484

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

1485:                                             ; No predecessors!
  br label %1486

1486:                                             ; preds = %1485
  br label %1487

1487:                                             ; preds = %1486, %1412
  br label %1488

1488:                                             ; preds = %1487
  br label %1489

1489:                                             ; preds = %1488
  br label %1490

1490:                                             ; preds = %1489
  br label %1491

1491:                                             ; preds = %1490
  br label %1492

1492:                                             ; preds = %1491
  %1493 = load i32, ptr @test_count, align 4, !tbaa !5
  %1494 = add nsw i32 %1493, 1
  store i32 %1494, ptr @test_count, align 4, !tbaa !5
  %1495 = load ptr, ptr %34, align 8, !tbaa !9
  %1496 = call i32 @s2n_client_finished_recv(ptr noundef %1495)
  %1497 = icmp eq i32 %1496, -1
  br i1 %1497, label %1551, label %1498

1498:                                             ; preds = %1492
  br label %1499

1499:                                             ; preds = %1498
  br label %1500

1500:                                             ; preds = %1499
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %1501 = call ptr @__errno_location() #8
  %1502 = load i32, ptr %1501, align 4, !tbaa !5
  store i32 %1502, ptr %38, align 4, !tbaa !5
  %1503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1504 = call i32 @s2n_print_stacktrace(ptr noundef %1503)
  %1505 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1506 = trunc i8 %1505 to i1
  br i1 %1506, label %1507, label %1529

1507:                                             ; preds = %1500
  %1508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1509 = call i32 @fileno(ptr noundef %1508) #7
  %1510 = call i32 @isatty(i32 noundef %1509) #7
  %1511 = icmp ne i32 %1510, 0
  br i1 %1511, label %1512, label %1529

1512:                                             ; preds = %1507
  %1513 = load i32, ptr %38, align 4, !tbaa !5
  %1514 = call ptr @__errno_location() #8
  store i32 %1513, ptr %1514, align 4, !tbaa !5
  %1515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1516 = load i32, ptr @test_count, align 4, !tbaa !5
  %1517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1518 = load i32, ptr %1517, align 4, !tbaa !5
  %1519 = call ptr @s2n_strerror(i32 noundef %1518, ptr noundef @.str.4)
  %1520 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1521 = load i32, ptr %1520, align 4, !tbaa !5
  %1522 = call ptr @s2n_strerror_debug(i32 noundef %1521, ptr noundef @.str.4)
  %1523 = call ptr @__errno_location() #8
  %1524 = load i32, ptr %1523, align 4, !tbaa !5
  %1525 = call ptr @strerror(i32 noundef %1524) #7
  %1526 = call ptr @__errno_location() #8
  %1527 = load i32, ptr %1526, align 4, !tbaa !5
  %1528 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1515, ptr noundef @.str.2, i32 noundef %1516, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1519, ptr noundef %1522, ptr noundef %1525, i32 noundef %1527) #7
  br label %1546

1529:                                             ; preds = %1507, %1500
  %1530 = load i32, ptr %38, align 4, !tbaa !5
  %1531 = call ptr @__errno_location() #8
  store i32 %1530, ptr %1531, align 4, !tbaa !5
  %1532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1533 = load i32, ptr @test_count, align 4, !tbaa !5
  %1534 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1535 = load i32, ptr %1534, align 4, !tbaa !5
  %1536 = call ptr @s2n_strerror(i32 noundef %1535, ptr noundef @.str.4)
  %1537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1538 = load i32, ptr %1537, align 4, !tbaa !5
  %1539 = call ptr @s2n_strerror_debug(i32 noundef %1538, ptr noundef @.str.4)
  %1540 = call ptr @__errno_location() #8
  %1541 = load i32, ptr %1540, align 4, !tbaa !5
  %1542 = call ptr @strerror(i32 noundef %1541) #7
  %1543 = call ptr @__errno_location() #8
  %1544 = load i32, ptr %1543, align 4, !tbaa !5
  %1545 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1532, ptr noundef @.str.5, i32 noundef %1533, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1536, ptr noundef %1539, ptr noundef %1542, i32 noundef %1544) #7
  br label %1546

1546:                                             ; preds = %1529, %1512
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %1547

1547:                                             ; preds = %1546
  br label %1548

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

1549:                                             ; No predecessors!
  br label %1550

1550:                                             ; preds = %1549
  br label %1551

1551:                                             ; preds = %1550, %1492
  br label %1552

1552:                                             ; preds = %1551
  br label %1553

1553:                                             ; preds = %1552
  br label %1554

1554:                                             ; preds = %1553
  %1555 = load i32, ptr @test_count, align 4, !tbaa !5
  %1556 = add nsw i32 %1555, 1
  store i32 %1556, ptr @test_count, align 4, !tbaa !5
  %1557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1558 = load i32, ptr %1557, align 4, !tbaa !5
  %1559 = icmp eq i32 %1558, 402653194
  br i1 %1559, label %1613, label %1560

1560:                                             ; preds = %1554
  br label %1561

1561:                                             ; preds = %1560
  br label %1562

1562:                                             ; preds = %1561
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %1563 = call ptr @__errno_location() #8
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  store i32 %1564, ptr %39, align 4, !tbaa !5
  %1565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1566 = call i32 @s2n_print_stacktrace(ptr noundef %1565)
  %1567 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1568 = trunc i8 %1567 to i1
  br i1 %1568, label %1569, label %1591

1569:                                             ; preds = %1562
  %1570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1571 = call i32 @fileno(ptr noundef %1570) #7
  %1572 = call i32 @isatty(i32 noundef %1571) #7
  %1573 = icmp ne i32 %1572, 0
  br i1 %1573, label %1574, label %1591

1574:                                             ; preds = %1569
  %1575 = load i32, ptr %39, align 4, !tbaa !5
  %1576 = call ptr @__errno_location() #8
  store i32 %1575, ptr %1576, align 4, !tbaa !5
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1578 = load i32, ptr @test_count, align 4, !tbaa !5
  %1579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1580 = load i32, ptr %1579, align 4, !tbaa !5
  %1581 = call ptr @s2n_strerror(i32 noundef %1580, ptr noundef @.str.4)
  %1582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1583 = load i32, ptr %1582, align 4, !tbaa !5
  %1584 = call ptr @s2n_strerror_debug(i32 noundef %1583, ptr noundef @.str.4)
  %1585 = call ptr @__errno_location() #8
  %1586 = load i32, ptr %1585, align 4, !tbaa !5
  %1587 = call ptr @strerror(i32 noundef %1586) #7
  %1588 = call ptr @__errno_location() #8
  %1589 = load i32, ptr %1588, align 4, !tbaa !5
  %1590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1577, ptr noundef @.str.2, i32 noundef %1578, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1581, ptr noundef %1584, ptr noundef %1587, i32 noundef %1589) #7
  br label %1608

1591:                                             ; preds = %1569, %1562
  %1592 = load i32, ptr %39, align 4, !tbaa !5
  %1593 = call ptr @__errno_location() #8
  store i32 %1592, ptr %1593, align 4, !tbaa !5
  %1594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1595 = load i32, ptr @test_count, align 4, !tbaa !5
  %1596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1597 = load i32, ptr %1596, align 4, !tbaa !5
  %1598 = call ptr @s2n_strerror(i32 noundef %1597, ptr noundef @.str.4)
  %1599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1600 = load i32, ptr %1599, align 4, !tbaa !5
  %1601 = call ptr @s2n_strerror_debug(i32 noundef %1600, ptr noundef @.str.4)
  %1602 = call ptr @__errno_location() #8
  %1603 = load i32, ptr %1602, align 4, !tbaa !5
  %1604 = call ptr @strerror(i32 noundef %1603) #7
  %1605 = call ptr @__errno_location() #8
  %1606 = load i32, ptr %1605, align 4, !tbaa !5
  %1607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1594, ptr noundef @.str.5, i32 noundef %1595, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1598, ptr noundef %1601, ptr noundef %1604, i32 noundef %1606) #7
  br label %1608

1608:                                             ; preds = %1591, %1574
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %1609

1609:                                             ; preds = %1608
  br label %1610

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

1611:                                             ; No predecessors!
  br label %1612

1612:                                             ; preds = %1611
  br label %1613

1613:                                             ; preds = %1612, %1554
  br label %1614

1614:                                             ; preds = %1613
  br label %1615

1615:                                             ; preds = %1614
  br label %1616

1616:                                             ; preds = %1615
  %1617 = load i32, ptr @test_count, align 4, !tbaa !5
  %1618 = add nsw i32 %1617, 1
  store i32 %1618, ptr @test_count, align 4, !tbaa !5
  %1619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1620 = load i32, ptr %1619, align 4, !tbaa !5
  %1621 = call ptr @s2n_strerror_debug(i32 noundef %1620, ptr noundef @.str.4)
  %1622 = icmp eq ptr %1621, null
  br i1 %1622, label %1623, label %1676

1623:                                             ; preds = %1616
  br label %1624

1624:                                             ; preds = %1623
  br label %1625

1625:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %1626 = call ptr @__errno_location() #8
  %1627 = load i32, ptr %1626, align 4, !tbaa !5
  store i32 %1627, ptr %40, align 4, !tbaa !5
  %1628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1629 = call i32 @s2n_print_stacktrace(ptr noundef %1628)
  %1630 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1631 = trunc i8 %1630 to i1
  br i1 %1631, label %1632, label %1654

1632:                                             ; preds = %1625
  %1633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1634 = call i32 @fileno(ptr noundef %1633) #7
  %1635 = call i32 @isatty(i32 noundef %1634) #7
  %1636 = icmp ne i32 %1635, 0
  br i1 %1636, label %1637, label %1654

1637:                                             ; preds = %1632
  %1638 = load i32, ptr %40, align 4, !tbaa !5
  %1639 = call ptr @__errno_location() #8
  store i32 %1638, ptr %1639, align 4, !tbaa !5
  %1640 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1641 = load i32, ptr @test_count, align 4, !tbaa !5
  %1642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1643 = load i32, ptr %1642, align 4, !tbaa !5
  %1644 = call ptr @s2n_strerror(i32 noundef %1643, ptr noundef @.str.4)
  %1645 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1646 = load i32, ptr %1645, align 4, !tbaa !5
  %1647 = call ptr @s2n_strerror_debug(i32 noundef %1646, ptr noundef @.str.4)
  %1648 = call ptr @__errno_location() #8
  %1649 = load i32, ptr %1648, align 4, !tbaa !5
  %1650 = call ptr @strerror(i32 noundef %1649) #7
  %1651 = call ptr @__errno_location() #8
  %1652 = load i32, ptr %1651, align 4, !tbaa !5
  %1653 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1640, ptr noundef @.str.2, i32 noundef %1641, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1644, ptr noundef %1647, ptr noundef %1650, i32 noundef %1652) #7
  br label %1671

1654:                                             ; preds = %1632, %1625
  %1655 = load i32, ptr %40, align 4, !tbaa !5
  %1656 = call ptr @__errno_location() #8
  store i32 %1655, ptr %1656, align 4, !tbaa !5
  %1657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1658 = load i32, ptr @test_count, align 4, !tbaa !5
  %1659 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1660 = load i32, ptr %1659, align 4, !tbaa !5
  %1661 = call ptr @s2n_strerror(i32 noundef %1660, ptr noundef @.str.4)
  %1662 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1663 = load i32, ptr %1662, align 4, !tbaa !5
  %1664 = call ptr @s2n_strerror_debug(i32 noundef %1663, ptr noundef @.str.4)
  %1665 = call ptr @__errno_location() #8
  %1666 = load i32, ptr %1665, align 4, !tbaa !5
  %1667 = call ptr @strerror(i32 noundef %1666) #7
  %1668 = call ptr @__errno_location() #8
  %1669 = load i32, ptr %1668, align 4, !tbaa !5
  %1670 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1657, ptr noundef @.str.5, i32 noundef %1658, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 91, ptr noundef %1661, ptr noundef %1664, ptr noundef %1667, i32 noundef %1669) #7
  br label %1671

1671:                                             ; preds = %1654, %1637
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %1672

1672:                                             ; preds = %1671
  br label %1673

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

1674:                                             ; No predecessors!
  br label %1675

1675:                                             ; preds = %1674
  br label %1676

1676:                                             ; preds = %1675, %1616
  br label %1677

1677:                                             ; preds = %1676
  br label %1678

1678:                                             ; preds = %1677
  br label %1679

1679:                                             ; preds = %1678
  br label %1680

1680:                                             ; preds = %1679
  br label %1681

1681:                                             ; preds = %1680
  %1682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1682, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1683 = call ptr @__errno_location() #8
  store i32 0, ptr %1683, align 4, !tbaa !5
  br label %1684

1684:                                             ; preds = %1681
  br label %1685

1685:                                             ; preds = %1684
  br label %1686

1686:                                             ; preds = %1685
  br label %1687

1687:                                             ; preds = %1686
  store i32 0, ptr %13, align 4
  br label %1688

1688:                                             ; preds = %1687, %1343
  %1689 = call i32 @s2n_connection_ptr_free(ptr noundef %34)
  %1690 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  store i32 %1689, ptr %1690, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  %1691 = call i32 @s2n_connection_ptr_free(ptr noundef %32)
  %1692 = getelementptr inbounds %struct.s2n_result, ptr %42, i32 0, i32 0
  store i32 %1691, ptr %1692, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  %1693 = load i32, ptr %13, align 4
  switch i32 %1693, label %1842 [
    i32 0, label %1694
    i32 1, label %1840
  ]

1694:                                             ; preds = %1688
  br label %1695

1695:                                             ; preds = %1694
  br label %1696

1696:                                             ; preds = %1695
  %1697 = call i32 @s2n_cleanup()
  %1698 = icmp eq i32 %1697, -1
  br i1 %1698, label %1699, label %1750

1699:                                             ; preds = %1696
  br label %1700

1700:                                             ; preds = %1699
  br label %1701

1701:                                             ; preds = %1700
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %1702 = call ptr @__errno_location() #8
  %1703 = load i32, ptr %1702, align 4, !tbaa !5
  store i32 %1703, ptr %43, align 4, !tbaa !5
  %1704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1705 = call i32 @s2n_print_stacktrace(ptr noundef %1704)
  %1706 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1707 = trunc i8 %1706 to i1
  br i1 %1707, label %1708, label %1730

1708:                                             ; preds = %1701
  %1709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1710 = call i32 @fileno(ptr noundef %1709) #7
  %1711 = call i32 @isatty(i32 noundef %1710) #7
  %1712 = icmp ne i32 %1711, 0
  br i1 %1712, label %1713, label %1730

1713:                                             ; preds = %1708
  %1714 = load i32, ptr %43, align 4, !tbaa !5
  %1715 = call ptr @__errno_location() #8
  store i32 %1714, ptr %1715, align 4, !tbaa !5
  %1716 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1717 = load i32, ptr @test_count, align 4, !tbaa !5
  %1718 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1719 = load i32, ptr %1718, align 4, !tbaa !5
  %1720 = call ptr @s2n_strerror(i32 noundef %1719, ptr noundef @.str.4)
  %1721 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1722 = load i32, ptr %1721, align 4, !tbaa !5
  %1723 = call ptr @s2n_strerror_debug(i32 noundef %1722, ptr noundef @.str.4)
  %1724 = call ptr @__errno_location() #8
  %1725 = load i32, ptr %1724, align 4, !tbaa !5
  %1726 = call ptr @strerror(i32 noundef %1725) #7
  %1727 = call ptr @__errno_location() #8
  %1728 = load i32, ptr %1727, align 4, !tbaa !5
  %1729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1716, ptr noundef @.str.2, i32 noundef %1717, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1720, ptr noundef %1723, ptr noundef %1726, i32 noundef %1728) #7
  br label %1747

1730:                                             ; preds = %1708, %1701
  %1731 = load i32, ptr %43, align 4, !tbaa !5
  %1732 = call ptr @__errno_location() #8
  store i32 %1731, ptr %1732, align 4, !tbaa !5
  %1733 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1734 = load i32, ptr @test_count, align 4, !tbaa !5
  %1735 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1736 = load i32, ptr %1735, align 4, !tbaa !5
  %1737 = call ptr @s2n_strerror(i32 noundef %1736, ptr noundef @.str.4)
  %1738 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1739 = load i32, ptr %1738, align 4, !tbaa !5
  %1740 = call ptr @s2n_strerror_debug(i32 noundef %1739, ptr noundef @.str.4)
  %1741 = call ptr @__errno_location() #8
  %1742 = load i32, ptr %1741, align 4, !tbaa !5
  %1743 = call ptr @strerror(i32 noundef %1742) #7
  %1744 = call ptr @__errno_location() #8
  %1745 = load i32, ptr %1744, align 4, !tbaa !5
  %1746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1733, ptr noundef @.str.5, i32 noundef %1734, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1737, ptr noundef %1740, ptr noundef %1743, i32 noundef %1745) #7
  br label %1747

1747:                                             ; preds = %1730, %1713
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %1748

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

1749:                                             ; No predecessors!
  br label %1750

1750:                                             ; preds = %1749, %1696
  br label %1751

1751:                                             ; preds = %1750
  br label %1752

1752:                                             ; preds = %1751
  br label %1753

1753:                                             ; preds = %1752
  %1754 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1755 = icmp eq i32 %1754, -1
  br i1 %1755, label %1756, label %1807

1756:                                             ; preds = %1753
  br label %1757

1757:                                             ; preds = %1756
  br label %1758

1758:                                             ; preds = %1757
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %1759 = call ptr @__errno_location() #8
  %1760 = load i32, ptr %1759, align 4, !tbaa !5
  store i32 %1760, ptr %44, align 4, !tbaa !5
  %1761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1762 = call i32 @s2n_print_stacktrace(ptr noundef %1761)
  %1763 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1764 = trunc i8 %1763 to i1
  br i1 %1764, label %1765, label %1787

1765:                                             ; preds = %1758
  %1766 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1767 = call i32 @fileno(ptr noundef %1766) #7
  %1768 = call i32 @isatty(i32 noundef %1767) #7
  %1769 = icmp ne i32 %1768, 0
  br i1 %1769, label %1770, label %1787

1770:                                             ; preds = %1765
  %1771 = load i32, ptr %44, align 4, !tbaa !5
  %1772 = call ptr @__errno_location() #8
  store i32 %1771, ptr %1772, align 4, !tbaa !5
  %1773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1774 = load i32, ptr @test_count, align 4, !tbaa !5
  %1775 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1776 = load i32, ptr %1775, align 4, !tbaa !5
  %1777 = call ptr @s2n_strerror(i32 noundef %1776, ptr noundef @.str.4)
  %1778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1779 = load i32, ptr %1778, align 4, !tbaa !5
  %1780 = call ptr @s2n_strerror_debug(i32 noundef %1779, ptr noundef @.str.4)
  %1781 = call ptr @__errno_location() #8
  %1782 = load i32, ptr %1781, align 4, !tbaa !5
  %1783 = call ptr @strerror(i32 noundef %1782) #7
  %1784 = call ptr @__errno_location() #8
  %1785 = load i32, ptr %1784, align 4, !tbaa !5
  %1786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1773, ptr noundef @.str.2, i32 noundef %1774, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1777, ptr noundef %1780, ptr noundef %1783, i32 noundef %1785) #7
  br label %1804

1787:                                             ; preds = %1765, %1758
  %1788 = load i32, ptr %44, align 4, !tbaa !5
  %1789 = call ptr @__errno_location() #8
  store i32 %1788, ptr %1789, align 4, !tbaa !5
  %1790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1791 = load i32, ptr @test_count, align 4, !tbaa !5
  %1792 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1793 = load i32, ptr %1792, align 4, !tbaa !5
  %1794 = call ptr @s2n_strerror(i32 noundef %1793, ptr noundef @.str.4)
  %1795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1796 = load i32, ptr %1795, align 4, !tbaa !5
  %1797 = call ptr @s2n_strerror_debug(i32 noundef %1796, ptr noundef @.str.4)
  %1798 = call ptr @__errno_location() #8
  %1799 = load i32, ptr %1798, align 4, !tbaa !5
  %1800 = call ptr @strerror(i32 noundef %1799) #7
  %1801 = call ptr @__errno_location() #8
  %1802 = load i32, ptr %1801, align 4, !tbaa !5
  %1803 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1790, ptr noundef @.str.5, i32 noundef %1791, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1794, ptr noundef %1797, ptr noundef %1800, i32 noundef %1802) #7
  br label %1804

1804:                                             ; preds = %1787, %1770
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %1805

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

1806:                                             ; No predecessors!
  br label %1807

1807:                                             ; preds = %1806, %1753
  br label %1808

1808:                                             ; preds = %1807
  %1809 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1810 = trunc i8 %1809 to i1
  br i1 %1810, label %1811, label %1827

1811:                                             ; preds = %1808
  %1812 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1813 = call i32 @fileno(ptr noundef %1812) #7
  %1814 = call i32 @isatty(i32 noundef %1813) #7
  %1815 = icmp ne i32 %1814, 0
  br i1 %1815, label %1816, label %1827

1816:                                             ; preds = %1811
  %1817 = load i32, ptr @test_count, align 4, !tbaa !5
  %1818 = icmp ne i32 %1817, 0
  br i1 %1818, label %1819, label %1823

1819:                                             ; preds = %1816
  %1820 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1821 = load i32, ptr @test_count, align 4, !tbaa !5
  %1822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1820, ptr noundef @.str.21, i32 noundef %1821) #7
  br label %1826

1823:                                             ; preds = %1816
  %1824 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1824, ptr noundef @.str.22) #7
  br label %1826

1826:                                             ; preds = %1823, %1819
  br label %1838

1827:                                             ; preds = %1811, %1808
  %1828 = load i32, ptr @test_count, align 4, !tbaa !5
  %1829 = icmp ne i32 %1828, 0
  br i1 %1829, label %1830, label %1834

1830:                                             ; preds = %1827
  %1831 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1832 = load i32, ptr @test_count, align 4, !tbaa !5
  %1833 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1831, ptr noundef @.str.23, i32 noundef %1832) #7
  br label %1837

1834:                                             ; preds = %1827
  %1835 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1836 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1835, ptr noundef @.str.24) #7
  br label %1837

1837:                                             ; preds = %1834, %1830
  br label %1838

1838:                                             ; preds = %1837, %1826
  store i32 0, ptr %3, align 4
  br label %1840

1839:                                             ; No predecessors!
  br label %1840

1840:                                             ; preds = %1839, %1838, %1688, %1196, %701
  %1841 = load i32, ptr %3, align 4
  ret i32 %1841

1842:                                             ; preds = %1688, %1196, %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_server_finished(ptr noundef) #2

declare i32 @s2n_server_finished_send(ptr noundef) #2

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

declare i32 @s2n_server_finished_recv(ptr 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 640}
!49 = !{!16, !10, i64 224}
!50 = !{!16, !6, i64 2044}
!51 = !{!16, !6, i64 2040}
!52 = !{!7, !7, i64 0}
!53 = !{!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
  %.not99 = icmp eq i32 %25, 0
  br i1 %.not99, 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
  %.not98 = icmp eq i32 %54, 0
  br i1 %.not98, label %55, label %56

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

56:                                               ; preds = %51, %55
  %.str.5.sink114 = 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.sink114, 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
  %.not97 = icmp eq i32 %81, 0
  br i1 %.not97, label %82, label %83

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

83:                                               ; preds = %78, %82
  %.str.5.sink125 = 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.sink125, 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
  %.not96 = icmp eq i32 %110, 0
  br i1 %.not96, label %111, label %112

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

112:                                              ; preds = %107, %111
  %.str.5.sink136 = 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.sink136, 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
  %.not95 = icmp eq i32 %143, 0
  br i1 %.not95, label %144, label %145

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

145:                                              ; preds = %140, %144
  %.str.5.sink147 = 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.sink147, 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 = tail call i32 @s2n_prf_server_finished(ptr noundef %160) #8
  %163 = icmp sgt i32 %162, -1
  br i1 %163, label %164, label %321

164:                                              ; preds = %157
  %165 = load i32, ptr @test_count, align 4, !tbaa !5
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr @test_count, align 4, !tbaa !5
  %167 = load ptr, ptr %3, align 8, !tbaa !9
  %168 = getelementptr inbounds i8, ptr %167, i64 640
  %169 = load ptr, ptr %168, align 8, !tbaa !48
  %170 = getelementptr inbounds i8, ptr %167, 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 = %164
  %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.sink158 = 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.sink158, 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 = %164
  %198 = add nsw i32 %165, 2
  store i32 %198, ptr @test_count, align 4, !tbaa !5
  %199 = tail call i32 @s2n_server_finished_send(ptr noundef nonnull %167) #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
  %.not94 = icmp eq i32 %211, 0
  br i1 %.not94, label %212, label %213

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

213:                                              ; preds = %208, %212
  %.str.5.sink169 = 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.sink169, 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 %167, i64 2016
  %229 = getelementptr inbounds i8, ptr %160, i64 2016
  %230 = getelementptr inbounds i8, ptr %167, i64 2044
  %231 = load i32, ptr %230, align 4, !tbaa !50
  %232 = getelementptr inbounds i8, ptr %167, 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
  %.not93 = icmp eq i32 %247, 0
  br i1 %.not93, label %248, label %249

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

249:                                              ; preds = %244, %248
  %.str.5.sink180 = 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.sink180, 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_server_finished_recv(ptr noundef nonnull %160) #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
  %.not92 = icmp eq i32 %276, 0
  br i1 %.not92, label %277, label %278

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

278:                                              ; preds = %273, %277
  %.str.5.sink191 = 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.sink191, 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 %167, 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
  %.not72 = icmp eq i32 %307, 0
  br i1 %.not72, label %308, label %309

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

309:                                              ; preds = %304, %308
  %.str.5.sink202 = 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.sink202, 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 %163, label %324, label %854

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
  %.not91 = icmp eq i32 %339, 0
  br i1 %.not91, label %340, label %341

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

341:                                              ; preds = %336, %340
  %.str.5.sink213 = 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.sink213, 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
  %.not90 = icmp eq i32 %372, 0
  br i1 %.not90, label %373, label %374

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

374:                                              ; preds = %369, %373
  %.str.5.sink224 = 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.sink224, 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 = call i32 @s2n_prf_server_finished(ptr noundef %389) #8
  %392 = icmp sgt i32 %391, -1
  br i1 %392, label %393, label %553

393:                                              ; preds = %386
  %394 = load ptr, ptr %6, align 8, !tbaa !9
  %395 = getelementptr inbounds i8, ptr %394, i64 2072
  %396 = load i8, ptr %395, align 8, !tbaa !52
  %397 = add i8 %396, 1
  store i8 %397, ptr %395, align 8, !tbaa !52
  %398 = load i32, ptr @test_count, align 4, !tbaa !5
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr @test_count, align 4, !tbaa !5
  %400 = load ptr, ptr %5, align 8, !tbaa !9
  %401 = call i32 @s2n_server_finished_send(ptr noundef %400) #8
  %402 = icmp eq i32 %401, -1
  br i1 %402, label %403, label %427

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

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

414:                                              ; preds = %410, %403
  br label %415

415:                                              ; preds = %410, %414
  %.str.5.sink235 = phi ptr [ @.str.5, %414 ], [ @.str.2, %410 ]
  store i32 %405, ptr %404, align 4, !tbaa !5
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = load i32, ptr @test_count, align 4, !tbaa !5
  %418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = call ptr @s2n_strerror(i32 noundef %419, ptr noundef nonnull @.str.4) #8
  %421 = load i32, ptr %418, align 4, !tbaa !5
  %422 = call ptr @s2n_strerror_debug(i32 noundef %421, ptr noundef nonnull @.str.4) #8
  %423 = load i32, ptr %404, align 4, !tbaa !5
  %424 = call ptr @strerror(i32 noundef %423) #8
  %425 = load i32, ptr %404, align 4, !tbaa !5
  %426 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %416, ptr noundef nonnull %.str.5.sink235, i32 noundef %417, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 66, ptr noundef %420, ptr noundef %422, ptr noundef %424, i32 noundef %425) #10
  call void @exit(i32 noundef 1) #11
  unreachable

427:                                              ; preds = %393
  %428 = load i32, ptr @test_count, align 4, !tbaa !5
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr @test_count, align 4, !tbaa !5
  %430 = load ptr, ptr %5, align 8, !tbaa !9
  %431 = getelementptr inbounds i8, ptr %430, i64 2016
  %432 = load ptr, ptr %6, align 8, !tbaa !9
  %433 = getelementptr inbounds i8, ptr %432, i64 2016
  %434 = getelementptr inbounds i8, ptr %430, i64 2044
  %435 = load i32, ptr %434, align 4, !tbaa !50
  %436 = getelementptr inbounds i8, ptr %430, i64 2040
  %437 = load i32, ptr %436, align 8, !tbaa !51
  %438 = sub i32 %435, %437
  %439 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %431, ptr noundef nonnull %433, i32 noundef %438) #8
  %440 = icmp eq i32 %439, -1
  br i1 %440, label %441, label %465

441:                                              ; preds = %427
  %442 = tail call ptr @__errno_location() #9
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %445 = call i32 @s2n_print_stacktrace(ptr noundef %444) #8
  %446 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %447 = trunc nuw i8 %446 to i1
  br i1 %447, label %448, label %452

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

452:                                              ; preds = %448, %441
  br label %453

453:                                              ; preds = %448, %452
  %.str.5.sink246 = phi ptr [ @.str.5, %452 ], [ @.str.2, %448 ]
  store i32 %443, ptr %442, align 4, !tbaa !5
  %454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %455 = load i32, ptr @test_count, align 4, !tbaa !5
  %456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = call ptr @s2n_strerror(i32 noundef %457, ptr noundef nonnull @.str.4) #8
  %459 = load i32, ptr %456, align 4, !tbaa !5
  %460 = call ptr @s2n_strerror_debug(i32 noundef %459, ptr noundef nonnull @.str.4) #8
  %461 = load i32, ptr %442, align 4, !tbaa !5
  %462 = call ptr @strerror(i32 noundef %461) #8
  %463 = load i32, ptr %442, align 4, !tbaa !5
  %464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %454, ptr noundef nonnull %.str.5.sink246, i32 noundef %455, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 68, ptr noundef %458, ptr noundef %460, ptr noundef %462, i32 noundef %463) #10
  call void @exit(i32 noundef 1) #11
  unreachable

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

471:                                              ; preds = %465
  %472 = tail call ptr @__errno_location() #9
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %475 = call i32 @s2n_print_stacktrace(ptr noundef %474) #8
  %476 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %477 = trunc nuw i8 %476 to i1
  br i1 %477, label %478, label %482

478:                                              ; preds = %471
  %479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %480 = call i32 @fileno(ptr noundef %479) #8
  %481 = call i32 @isatty(i32 noundef %480) #8
  %.not73 = icmp eq i32 %481, 0
  br i1 %.not73, label %482, label %483

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

483:                                              ; preds = %478, %482
  %.str.5.sink257 = phi ptr [ @.str.5, %482 ], [ @.str.2, %478 ]
  store i32 %473, ptr %472, align 4, !tbaa !5
  %484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %485 = load i32, ptr @test_count, align 4, !tbaa !5
  %486 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %487 = load i32, ptr %486, align 4, !tbaa !5
  %488 = call ptr @s2n_strerror(i32 noundef %487, ptr noundef nonnull @.str.4) #8
  %489 = load i32, ptr %486, align 4, !tbaa !5
  %490 = call ptr @s2n_strerror_debug(i32 noundef %489, ptr noundef nonnull @.str.4) #8
  %491 = load i32, ptr %472, align 4, !tbaa !5
  %492 = call ptr @strerror(i32 noundef %491) #8
  %493 = load i32, ptr %472, align 4, !tbaa !5
  %494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %484, ptr noundef nonnull %.str.5.sink257, i32 noundef %485, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %488, ptr noundef %490, ptr noundef %492, i32 noundef %493) #10
  call void @exit(i32 noundef 1) #11
  unreachable

495:                                              ; preds = %465
  %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 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %499 = load i32, ptr %498, align 4, !tbaa !5
  %500 = icmp eq i32 %499, 335544322
  br i1 %500, label %524, label %501

501:                                              ; preds = %495
  %502 = tail call ptr @__errno_location() #9
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %505 = call i32 @s2n_print_stacktrace(ptr noundef %504) #8
  %506 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %507 = trunc nuw i8 %506 to i1
  br i1 %507, label %508, label %512

508:                                              ; preds = %501
  %509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %510 = call i32 @fileno(ptr noundef %509) #8
  %511 = call i32 @isatty(i32 noundef %510) #8
  %.not74 = icmp eq i32 %511, 0
  br i1 %.not74, label %512, label %513

512:                                              ; preds = %508, %501
  br label %513

513:                                              ; preds = %508, %512
  %.str.5.sink268 = phi ptr [ @.str.5, %512 ], [ @.str.2, %508 ]
  store i32 %503, ptr %502, align 4, !tbaa !5
  %514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %515 = load i32, ptr @test_count, align 4, !tbaa !5
  %516 = load i32, ptr %498, align 4, !tbaa !5
  %517 = call ptr @s2n_strerror(i32 noundef %516, ptr noundef nonnull @.str.4) #8
  %518 = load i32, ptr %498, align 4, !tbaa !5
  %519 = call ptr @s2n_strerror_debug(i32 noundef %518, ptr noundef nonnull @.str.4) #8
  %520 = load i32, ptr %502, align 4, !tbaa !5
  %521 = call ptr @strerror(i32 noundef %520) #8
  %522 = load i32, ptr %502, align 4, !tbaa !5
  %523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %514, ptr noundef nonnull %.str.5.sink268, i32 noundef %515, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %517, ptr noundef %519, ptr noundef %521, i32 noundef %522) #10
  call void @exit(i32 noundef 1) #11
  unreachable

524:                                              ; preds = %495
  %525 = add nsw i32 %496, 2
  store i32 %525, ptr @test_count, align 4, !tbaa !5
  %526 = call ptr @s2n_strerror_debug(i32 noundef 335544322, ptr noundef nonnull @.str.4) #8
  %527 = icmp eq ptr %526, null
  br i1 %527, label %528, label %551

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

535:                                              ; preds = %528
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = call i32 @fileno(ptr noundef %536) #8
  %538 = call i32 @isatty(i32 noundef %537) #8
  %.not87 = icmp eq i32 %538, 0
  br i1 %.not87, label %539, label %540

539:                                              ; preds = %535, %528
  br label %540

540:                                              ; preds = %535, %539
  %.str.5.sink277 = phi ptr [ @.str.5, %539 ], [ @.str.2, %535 ]
  store i32 %530, ptr %529, align 4, !tbaa !5
  %541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %542 = load i32, ptr @test_count, align 4, !tbaa !5
  %543 = load i32, ptr %498, align 4, !tbaa !5
  %544 = call ptr @s2n_strerror(i32 noundef %543, ptr noundef nonnull @.str.4) #8
  %545 = load i32, ptr %498, align 4, !tbaa !5
  %546 = call ptr @s2n_strerror_debug(i32 noundef %545, ptr noundef nonnull @.str.4) #8
  %547 = load i32, ptr %529, align 4, !tbaa !5
  %548 = call ptr @strerror(i32 noundef %547) #8
  %549 = load i32, ptr %529, align 4, !tbaa !5
  %550 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %541, ptr noundef nonnull %.str.5.sink277, i32 noundef %542, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %544, ptr noundef %546, ptr noundef %548, i32 noundef %549) #10
  call void @exit(i32 noundef 1) #11
  unreachable

551:                                              ; preds = %524
  store i32 0, ptr %498, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #8
  %552 = tail call ptr @__errno_location() #9
  store i32 0, ptr %552, align 4, !tbaa !5
  br label %553

553:                                              ; preds = %386, %551
  %.1 = phi i32 [ %.0, %551 ], [ -1, %386 ]
  %554 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %555 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  br i1 %392, label %556, label %854

556:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %557 = call ptr @s2n_connection_new(i32 noundef 0) #8
  store ptr %557, ptr %7, align 8, !tbaa !9
  %558 = load i32, ptr @test_count, align 4, !tbaa !5
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr @test_count, align 4, !tbaa !5
  %560 = icmp eq ptr %557, null
  br i1 %560, label %561, label %585

561:                                              ; preds = %556
  %562 = tail call ptr @__errno_location() #9
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = call i32 @s2n_print_stacktrace(ptr noundef %564) #8
  %566 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %567 = trunc nuw i8 %566 to i1
  br i1 %567, label %568, label %572

568:                                              ; preds = %561
  %569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %570 = call i32 @fileno(ptr noundef %569) #8
  %571 = call i32 @isatty(i32 noundef %570) #8
  %.not86 = icmp eq i32 %571, 0
  br i1 %.not86, label %572, label %573

572:                                              ; preds = %568, %561
  br label %573

573:                                              ; preds = %568, %572
  %.str.5.sink286 = phi ptr [ @.str.5, %572 ], [ @.str.2, %568 ]
  store i32 %563, ptr %562, align 4, !tbaa !5
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = load i32, ptr @test_count, align 4, !tbaa !5
  %576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror(i32 noundef %577, ptr noundef nonnull @.str.4) #8
  %579 = load i32, ptr %576, align 4, !tbaa !5
  %580 = call ptr @s2n_strerror_debug(i32 noundef %579, ptr noundef nonnull @.str.4) #8
  %581 = load i32, ptr %562, align 4, !tbaa !5
  %582 = call ptr @strerror(i32 noundef %581) #8
  %583 = load i32, ptr %562, align 4, !tbaa !5
  %584 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %574, ptr noundef nonnull %.str.5.sink286, i32 noundef %575, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 75, ptr noundef %578, ptr noundef %580, ptr noundef %582, i32 noundef %583) #10
  call void @exit(i32 noundef 1) #11
  unreachable

585:                                              ; preds = %556
  %586 = getelementptr inbounds i8, ptr %557, i64 232
  %587 = load ptr, ptr %586, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %587, align 8, !tbaa !42
  %588 = getelementptr inbounds i8, ptr %557, i64 220
  store i8 33, ptr %588, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %589 = call ptr @s2n_connection_new(i32 noundef 1) #8
  store ptr %589, ptr %8, align 8, !tbaa !9
  %590 = load i32, ptr @test_count, align 4, !tbaa !5
  %591 = add nsw i32 %590, 1
  store i32 %591, ptr @test_count, align 4, !tbaa !5
  %592 = icmp eq ptr %589, null
  br i1 %592, label %593, label %617

593:                                              ; preds = %585
  %594 = tail call ptr @__errno_location() #9
  %595 = load i32, ptr %594, align 4, !tbaa !5
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = call i32 @s2n_print_stacktrace(ptr noundef %596) #8
  %598 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %599 = trunc nuw i8 %598 to i1
  br i1 %599, label %600, label %604

600:                                              ; preds = %593
  %601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %602 = call i32 @fileno(ptr noundef %601) #8
  %603 = call i32 @isatty(i32 noundef %602) #8
  %.not85 = icmp eq i32 %603, 0
  br i1 %.not85, label %604, label %605

604:                                              ; preds = %600, %593
  br label %605

605:                                              ; preds = %600, %604
  %.str.5.sink297 = phi ptr [ @.str.5, %604 ], [ @.str.2, %600 ]
  store i32 %595, ptr %594, align 4, !tbaa !5
  %606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %607 = load i32, ptr @test_count, align 4, !tbaa !5
  %608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = call ptr @s2n_strerror(i32 noundef %609, ptr noundef nonnull @.str.4) #8
  %611 = load i32, ptr %608, align 4, !tbaa !5
  %612 = call ptr @s2n_strerror_debug(i32 noundef %611, ptr noundef nonnull @.str.4) #8
  %613 = load i32, ptr %594, align 4, !tbaa !5
  %614 = call ptr @strerror(i32 noundef %613) #8
  %615 = load i32, ptr %594, align 4, !tbaa !5
  %616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %606, ptr noundef nonnull %.str.5.sink297, i32 noundef %607, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 80, ptr noundef %610, ptr noundef %612, ptr noundef %614, i32 noundef %615) #10
  call void @exit(i32 noundef 1) #11
  unreachable

617:                                              ; preds = %585
  %618 = getelementptr inbounds i8, ptr %589, i64 232
  %619 = load ptr, ptr %618, align 8, !tbaa !15
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %619, align 8, !tbaa !42
  %620 = getelementptr inbounds i8, ptr %589, i64 220
  store i8 33, ptr %620, align 4, !tbaa !47
  %621 = call i32 @s2n_prf_server_finished(ptr noundef nonnull %589) #8
  %622 = icmp sgt i32 %621, -1
  br i1 %622, label %623, label %776

623:                                              ; preds = %617
  %624 = getelementptr inbounds i8, ptr %589, i64 2168
  store i8 1, ptr %624, align 8, !tbaa !53
  %625 = load i32, ptr @test_count, align 4, !tbaa !5
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr @test_count, align 4, !tbaa !5
  %627 = call i32 @s2n_server_finished_send(ptr noundef nonnull %557) #8
  %628 = icmp eq i32 %627, -1
  br i1 %628, label %629, label %653

629:                                              ; preds = %623
  %630 = tail call ptr @__errno_location() #9
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %633 = call i32 @s2n_print_stacktrace(ptr noundef %632) #8
  %634 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %635 = trunc nuw i8 %634 to i1
  br i1 %635, label %636, label %640

636:                                              ; preds = %629
  %637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %638 = call i32 @fileno(ptr noundef %637) #8
  %639 = call i32 @isatty(i32 noundef %638) #8
  %.not84 = icmp eq i32 %639, 0
  br i1 %.not84, label %640, label %641

640:                                              ; preds = %636, %629
  br label %641

641:                                              ; preds = %636, %640
  %.str.5.sink308 = phi ptr [ @.str.5, %640 ], [ @.str.2, %636 ]
  store i32 %631, ptr %630, align 4, !tbaa !5
  %642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %643 = load i32, ptr @test_count, align 4, !tbaa !5
  %644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = call ptr @s2n_strerror(i32 noundef %645, ptr noundef nonnull @.str.4) #8
  %647 = load i32, ptr %644, align 4, !tbaa !5
  %648 = call ptr @s2n_strerror_debug(i32 noundef %647, ptr noundef nonnull @.str.4) #8
  %649 = load i32, ptr %630, align 4, !tbaa !5
  %650 = call ptr @strerror(i32 noundef %649) #8
  %651 = load i32, ptr %630, align 4, !tbaa !5
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %642, ptr noundef nonnull %.str.5.sink308, i32 noundef %643, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef %646, ptr noundef %648, ptr noundef %650, i32 noundef %651) #10
  call void @exit(i32 noundef 1) #11
  unreachable

653:                                              ; preds = %623
  %654 = load i32, ptr @test_count, align 4, !tbaa !5
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr @test_count, align 4, !tbaa !5
  %656 = getelementptr inbounds i8, ptr %557, i64 2016
  %657 = getelementptr inbounds i8, ptr %589, i64 2016
  %658 = getelementptr inbounds i8, ptr %557, i64 2044
  %659 = load i32, ptr %658, align 4, !tbaa !50
  %660 = getelementptr inbounds i8, ptr %557, i64 2040
  %661 = load i32, ptr %660, align 8, !tbaa !51
  %662 = sub i32 %659, %661
  %663 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %656, ptr noundef nonnull %657, i32 noundef %662) #8
  %664 = icmp eq i32 %663, -1
  br i1 %664, label %665, label %689

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

672:                                              ; preds = %665
  %673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %674 = call i32 @fileno(ptr noundef %673) #8
  %675 = call i32 @isatty(i32 noundef %674) #8
  %.not83 = icmp eq i32 %675, 0
  br i1 %.not83, label %676, label %677

676:                                              ; preds = %672, %665
  br label %677

677:                                              ; preds = %672, %676
  %.str.5.sink319 = phi ptr [ @.str.5, %676 ], [ @.str.2, %672 ]
  store i32 %667, ptr %666, align 4, !tbaa !5
  %678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %679 = load i32, ptr @test_count, align 4, !tbaa !5
  %680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %681 = load i32, ptr %680, align 4, !tbaa !5
  %682 = call ptr @s2n_strerror(i32 noundef %681, ptr noundef nonnull @.str.4) #8
  %683 = load i32, ptr %680, align 4, !tbaa !5
  %684 = call ptr @s2n_strerror_debug(i32 noundef %683, ptr noundef nonnull @.str.4) #8
  %685 = load i32, ptr %666, align 4, !tbaa !5
  %686 = call ptr @strerror(i32 noundef %685) #8
  %687 = load i32, ptr %666, align 4, !tbaa !5
  %688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %678, ptr noundef nonnull %.str.5.sink319, i32 noundef %679, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 90, ptr noundef %682, ptr noundef %684, ptr noundef %686, i32 noundef %687) #10
  call void @exit(i32 noundef 1) #11
  unreachable

689:                                              ; preds = %653
  %690 = load i32, ptr @test_count, align 4, !tbaa !5
  %691 = add nsw i32 %690, 1
  store i32 %691, ptr @test_count, align 4, !tbaa !5
  %692 = call i32 @s2n_client_finished_recv(ptr noundef nonnull %589) #8
  %693 = icmp eq i32 %692, -1
  br i1 %693, label %718, label %694

694:                                              ; preds = %689
  %695 = tail call ptr @__errno_location() #9
  %696 = load i32, ptr %695, align 4, !tbaa !5
  %697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %698 = call i32 @s2n_print_stacktrace(ptr noundef %697) #8
  %699 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %700 = trunc nuw i8 %699 to i1
  br i1 %700, label %701, label %705

701:                                              ; preds = %694
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = call i32 @fileno(ptr noundef %702) #8
  %704 = call i32 @isatty(i32 noundef %703) #8
  %.not75 = icmp eq i32 %704, 0
  br i1 %.not75, label %705, label %706

705:                                              ; preds = %701, %694
  br label %706

706:                                              ; preds = %701, %705
  %.str.5.sink330 = phi ptr [ @.str.5, %705 ], [ @.str.2, %701 ]
  store i32 %696, ptr %695, align 4, !tbaa !5
  %707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %708 = load i32, ptr @test_count, align 4, !tbaa !5
  %709 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %710 = load i32, ptr %709, align 4, !tbaa !5
  %711 = call ptr @s2n_strerror(i32 noundef %710, ptr noundef nonnull @.str.4) #8
  %712 = load i32, ptr %709, align 4, !tbaa !5
  %713 = call ptr @s2n_strerror_debug(i32 noundef %712, ptr noundef nonnull @.str.4) #8
  %714 = load i32, ptr %695, align 4, !tbaa !5
  %715 = call ptr @strerror(i32 noundef %714) #8
  %716 = load i32, ptr %695, align 4, !tbaa !5
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %707, ptr noundef nonnull %.str.5.sink330, i32 noundef %708, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef %711, ptr noundef %713, ptr noundef %715, i32 noundef %716) #10
  call void @exit(i32 noundef 1) #11
  unreachable

718:                                              ; preds = %689
  %719 = load i32, ptr @test_count, align 4, !tbaa !5
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr @test_count, align 4, !tbaa !5
  %721 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %722 = load i32, ptr %721, align 4, !tbaa !5
  %723 = icmp eq i32 %722, 402653194
  br i1 %723, label %747, label %724

724:                                              ; preds = %718
  %725 = tail call ptr @__errno_location() #9
  %726 = load i32, ptr %725, align 4, !tbaa !5
  %727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %728 = call i32 @s2n_print_stacktrace(ptr noundef %727) #8
  %729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %730 = trunc nuw i8 %729 to i1
  br i1 %730, label %731, label %735

731:                                              ; preds = %724
  %732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %733 = call i32 @fileno(ptr noundef %732) #8
  %734 = call i32 @isatty(i32 noundef %733) #8
  %.not76 = icmp eq i32 %734, 0
  br i1 %.not76, label %735, label %736

735:                                              ; preds = %731, %724
  br label %736

736:                                              ; preds = %731, %735
  %.str.5.sink341 = phi ptr [ @.str.5, %735 ], [ @.str.2, %731 ]
  store i32 %726, ptr %725, align 4, !tbaa !5
  %737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %738 = load i32, ptr @test_count, align 4, !tbaa !5
  %739 = load i32, ptr %721, align 4, !tbaa !5
  %740 = call ptr @s2n_strerror(i32 noundef %739, ptr noundef nonnull @.str.4) #8
  %741 = load i32, ptr %721, align 4, !tbaa !5
  %742 = call ptr @s2n_strerror_debug(i32 noundef %741, ptr noundef nonnull @.str.4) #8
  %743 = load i32, ptr %725, align 4, !tbaa !5
  %744 = call ptr @strerror(i32 noundef %743) #8
  %745 = load i32, ptr %725, align 4, !tbaa !5
  %746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %737, ptr noundef nonnull %.str.5.sink341, i32 noundef %738, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef %740, ptr noundef %742, ptr noundef %744, i32 noundef %745) #10
  call void @exit(i32 noundef 1) #11
  unreachable

747:                                              ; preds = %718
  %748 = add nsw i32 %719, 2
  store i32 %748, ptr @test_count, align 4, !tbaa !5
  %749 = call ptr @s2n_strerror_debug(i32 noundef 402653194, ptr noundef nonnull @.str.4) #8
  %750 = icmp eq ptr %749, null
  br i1 %750, label %751, label %774

751:                                              ; preds = %747
  %752 = tail call ptr @__errno_location() #9
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %755 = call i32 @s2n_print_stacktrace(ptr noundef %754) #8
  %756 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %757 = trunc nuw i8 %756 to i1
  br i1 %757, label %758, label %762

758:                                              ; preds = %751
  %759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %760 = call i32 @fileno(ptr noundef %759) #8
  %761 = call i32 @isatty(i32 noundef %760) #8
  %.not82 = icmp eq i32 %761, 0
  br i1 %.not82, label %762, label %763

762:                                              ; preds = %758, %751
  br label %763

763:                                              ; preds = %758, %762
  %.str.5.sink350 = phi ptr [ @.str.5, %762 ], [ @.str.2, %758 ]
  store i32 %753, ptr %752, align 4, !tbaa !5
  %764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %765 = load i32, ptr @test_count, align 4, !tbaa !5
  %766 = load i32, ptr %721, align 4, !tbaa !5
  %767 = call ptr @s2n_strerror(i32 noundef %766, ptr noundef nonnull @.str.4) #8
  %768 = load i32, ptr %721, align 4, !tbaa !5
  %769 = call ptr @s2n_strerror_debug(i32 noundef %768, ptr noundef nonnull @.str.4) #8
  %770 = load i32, ptr %752, align 4, !tbaa !5
  %771 = call ptr @strerror(i32 noundef %770) #8
  %772 = load i32, ptr %752, align 4, !tbaa !5
  %773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %764, ptr noundef nonnull %.str.5.sink350, i32 noundef %765, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 91, ptr noundef %767, ptr noundef %769, ptr noundef %771, i32 noundef %772) #10
  call void @exit(i32 noundef 1) #11
  unreachable

774:                                              ; preds = %747
  store i32 0, ptr %721, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #8
  %775 = tail call ptr @__errno_location() #9
  store i32 0, ptr %775, align 4, !tbaa !5
  br label %776

776:                                              ; preds = %617, %774
  %.2 = phi i32 [ %.1, %774 ], [ -1, %617 ]
  %777 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %778 = 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 %622, label %779, label %854

779:                                              ; preds = %776
  %780 = call i32 @s2n_cleanup() #8
  %781 = icmp eq i32 %780, -1
  br i1 %781, label %782, label %806

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

789:                                              ; preds = %782
  %790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %791 = call i32 @fileno(ptr noundef %790) #8
  %792 = call i32 @isatty(i32 noundef %791) #8
  %.not81 = icmp eq i32 %792, 0
  br i1 %.not81, label %793, label %794

793:                                              ; preds = %789, %782
  br label %794

794:                                              ; preds = %789, %793
  %.str.5.sink359 = phi ptr [ @.str.5, %793 ], [ @.str.2, %789 ]
  store i32 %784, ptr %783, align 4, !tbaa !5
  %795 = load ptr, ptr @stderr, align 8, !tbaa !9
  %796 = load i32, ptr @test_count, align 4, !tbaa !5
  %797 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = call ptr @s2n_strerror(i32 noundef %798, ptr noundef nonnull @.str.4) #8
  %800 = load i32, ptr %797, align 4, !tbaa !5
  %801 = call ptr @s2n_strerror_debug(i32 noundef %800, ptr noundef nonnull @.str.4) #8
  %802 = load i32, ptr %783, align 4, !tbaa !5
  %803 = call ptr @strerror(i32 noundef %802) #8
  %804 = load i32, ptr %783, align 4, !tbaa !5
  %805 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %795, ptr noundef nonnull %.str.5.sink359, i32 noundef %796, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 94, ptr noundef %799, ptr noundef %801, ptr noundef %803, i32 noundef %804) #10
  call void @exit(i32 noundef 1) #11
  unreachable

806:                                              ; preds = %779
  %807 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #8
  %808 = icmp eq i32 %807, -1
  br i1 %808, label %809, label %833

809:                                              ; preds = %806
  %810 = tail call ptr @__errno_location() #9
  %811 = load i32, ptr %810, align 4, !tbaa !5
  %812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %813 = call i32 @s2n_print_stacktrace(ptr noundef %812) #8
  %814 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %815 = trunc nuw i8 %814 to i1
  br i1 %815, label %816, label %820

816:                                              ; preds = %809
  %817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %818 = call i32 @fileno(ptr noundef %817) #8
  %819 = call i32 @isatty(i32 noundef %818) #8
  %.not80 = icmp eq i32 %819, 0
  br i1 %.not80, label %820, label %821

820:                                              ; preds = %816, %809
  br label %821

821:                                              ; preds = %816, %820
  %.str.5.sink370 = phi ptr [ @.str.5, %820 ], [ @.str.2, %816 ]
  store i32 %811, ptr %810, align 4, !tbaa !5
  %822 = load ptr, ptr @stderr, align 8, !tbaa !9
  %823 = load i32, ptr @test_count, align 4, !tbaa !5
  %824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = call ptr @s2n_strerror(i32 noundef %825, ptr noundef nonnull @.str.4) #8
  %827 = load i32, ptr %824, align 4, !tbaa !5
  %828 = call ptr @s2n_strerror_debug(i32 noundef %827, ptr noundef nonnull @.str.4) #8
  %829 = load i32, ptr %810, align 4, !tbaa !5
  %830 = call ptr @strerror(i32 noundef %829) #8
  %831 = load i32, ptr %810, align 4, !tbaa !5
  %832 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %822, ptr noundef nonnull %.str.5.sink370, i32 noundef %823, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 94, ptr noundef %826, ptr noundef %828, ptr noundef %830, i32 noundef %831) #10
  call void @exit(i32 noundef 1) #11
  unreachable

833:                                              ; preds = %806
  %834 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %835 = trunc nuw i8 %834 to i1
  br i1 %835, label %836, label %847

836:                                              ; preds = %833
  %837 = load ptr, ptr @stdout, align 8, !tbaa !9
  %838 = call i32 @fileno(ptr noundef %837) #8
  %839 = call i32 @isatty(i32 noundef %838) #8
  %.not77 = icmp eq i32 %839, 0
  br i1 %.not77, label %847, label %840

840:                                              ; preds = %836
  %841 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not79 = icmp eq i32 %841, 0
  %842 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not79, label %845, label %843

843:                                              ; preds = %840
  %844 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %842, ptr noundef nonnull @.str.21, i32 noundef %841) #8
  br label %854

845:                                              ; preds = %840
  %846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %842, ptr noundef nonnull @.str.22) #8
  br label %854

847:                                              ; preds = %836, %833
  %848 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not78 = icmp eq i32 %848, 0
  %849 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not78, label %852, label %850

850:                                              ; preds = %847
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %849, ptr noundef nonnull @.str.23, i32 noundef %848) #8
  br label %854

852:                                              ; preds = %847
  %853 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %849, ptr noundef nonnull @.str.24) #8
  br label %854

854:                                              ; preds = %845, %843, %852, %850, %776, %553, %321
  %.3 = phi i32 [ %.0, %321 ], [ %.1, %553 ], [ %.2, %776 ], [ 0, %850 ], [ 0, %852 ], [ 0, %843 ], [ 0, %845 ]
  ret i32 %.3
}

; 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_server_finished(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_server_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_server_finished_recv(ptr 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 640}
!49 = !{!16, !10, i64 224}
!50 = !{!16, !6, i64 2044}
!51 = !{!16, !6, i64 2040}
!52 = !{!7, !7, i64 0}
!53 = !{!16, !7, i64 2168}


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