; LLVM IR from aws/s2n-tls :: tests/unit (s2n_cipher_info_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_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_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%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 }
%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 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 [79 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 [72 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.25 = 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 i32, align 4
  %12 = alloca [2 x i8], align 1
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i64, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  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 %29

29:                                               ; preds = %2
  br label %30

30:                                               ; preds = %29
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %31 = load ptr, ptr @stdout, align 8, !tbaa !9
  %32 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef @.str, ptr noundef @.str.1) #9
  %33 = load ptr, ptr @stdout, align 8, !tbaa !9
  %34 = call i32 @fflush(ptr noundef %33)
  br label %35

35:                                               ; preds = %30
  %36 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %37 = icmp eq i32 %36, -1
  br i1 %37, label %38, label %89

38:                                               ; preds = %35
  br label %39

39:                                               ; preds = %38
  br label %40

40:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #9
  %41 = call ptr @__errno_location() #10
  %42 = load i32, ptr %41, align 4, !tbaa !5
  store i32 %42, ptr %6, align 4, !tbaa !5
  %43 = load ptr, ptr @stderr, align 8, !tbaa !9
  %44 = call i32 @s2n_print_stacktrace(ptr noundef %43)
  %45 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %46 = trunc i8 %45 to i1
  br i1 %46, label %47, label %69

47:                                               ; preds = %40
  %48 = load ptr, ptr @stderr, align 8, !tbaa !9
  %49 = call i32 @fileno(ptr noundef %48) #9
  %50 = call i32 @isatty(i32 noundef %49) #9
  %51 = icmp ne i32 %50, 0
  br i1 %51, label %52, label %69

52:                                               ; preds = %47
  %53 = load i32, ptr %6, align 4, !tbaa !5
  %54 = call ptr @__errno_location() #10
  store i32 %53, ptr %54, align 4, !tbaa !5
  %55 = load ptr, ptr @stderr, align 8, !tbaa !9
  %56 = load i32, ptr @test_count, align 4, !tbaa !5
  %57 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %58 = load i32, ptr %57, align 4, !tbaa !5
  %59 = call ptr @s2n_strerror(i32 noundef %58, ptr noundef @.str.4)
  %60 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %61 = load i32, ptr %60, align 4, !tbaa !5
  %62 = call ptr @s2n_strerror_debug(i32 noundef %61, ptr noundef @.str.4)
  %63 = call ptr @__errno_location() #10
  %64 = load i32, ptr %63, align 4, !tbaa !5
  %65 = call ptr @strerror(i32 noundef %64) #9
  %66 = call ptr @__errno_location() #10
  %67 = load i32, ptr %66, align 4, !tbaa !5
  %68 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef @.str.2, i32 noundef %56, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 22, ptr noundef %59, ptr noundef %62, ptr noundef %65, i32 noundef %67) #9
  br label %86

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

86:                                               ; preds = %69, %52
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  br label %87

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

88:                                               ; No predecessors!
  br label %89

89:                                               ; preds = %88, %35
  br label %90

90:                                               ; preds = %89
  br label %91

91:                                               ; preds = %90
  %92 = load i32, ptr @test_count, align 4, !tbaa !5
  %93 = add nsw i32 %92, 1
  store i32 %93, ptr @test_count, align 4, !tbaa !5
  %94 = call i32 @s2n_enable_atexit()
  %95 = icmp eq i32 %94, -1
  br i1 %95, label %96, label %147

96:                                               ; preds = %91
  br label %97

97:                                               ; preds = %96
  br label %98

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %99 = call ptr @__errno_location() #10
  %100 = load i32, ptr %99, align 4, !tbaa !5
  store i32 %100, ptr %7, align 4, !tbaa !5
  %101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %102 = call i32 @s2n_print_stacktrace(ptr noundef %101)
  %103 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %104 = trunc i8 %103 to i1
  br i1 %104, label %105, label %127

105:                                              ; preds = %98
  %106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %107 = call i32 @fileno(ptr noundef %106) #9
  %108 = call i32 @isatty(i32 noundef %107) #9
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %127

110:                                              ; preds = %105
  %111 = load i32, ptr %7, align 4, !tbaa !5
  %112 = call ptr @__errno_location() #10
  store i32 %111, ptr %112, align 4, !tbaa !5
  %113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %114 = load i32, ptr @test_count, align 4, !tbaa !5
  %115 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = call ptr @s2n_strerror(i32 noundef %116, ptr noundef @.str.4)
  %118 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = call ptr @s2n_strerror_debug(i32 noundef %119, ptr noundef @.str.4)
  %121 = call ptr @__errno_location() #10
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = call ptr @strerror(i32 noundef %122) #9
  %124 = call ptr @__errno_location() #10
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef @.str.2, i32 noundef %114, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 22, ptr noundef %117, ptr noundef %120, ptr noundef %123, i32 noundef %125) #9
  br label %144

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

144:                                              ; preds = %127, %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %145

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

146:                                              ; No predecessors!
  br label %147

147:                                              ; preds = %146, %91
  br label %148

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %148
  br label %150

150:                                              ; preds = %149
  %151 = call i32 @s2n_init()
  %152 = icmp eq i32 %151, -1
  br i1 %152, label %153, label %204

153:                                              ; preds = %150
  br label %154

154:                                              ; preds = %153
  br label %155

155:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  %156 = call ptr @__errno_location() #10
  %157 = load i32, ptr %156, align 4, !tbaa !5
  store i32 %157, ptr %8, align 4, !tbaa !5
  %158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %159 = call i32 @s2n_print_stacktrace(ptr noundef %158)
  %160 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %161 = trunc i8 %160 to i1
  br i1 %161, label %162, label %184

162:                                              ; preds = %155
  %163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %164 = call i32 @fileno(ptr noundef %163) #9
  %165 = call i32 @isatty(i32 noundef %164) #9
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %184

167:                                              ; preds = %162
  %168 = load i32, ptr %8, align 4, !tbaa !5
  %169 = call ptr @__errno_location() #10
  store i32 %168, ptr %169, align 4, !tbaa !5
  %170 = load ptr, ptr @stderr, align 8, !tbaa !9
  %171 = load i32, ptr @test_count, align 4, !tbaa !5
  %172 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = call ptr @s2n_strerror(i32 noundef %173, ptr noundef @.str.4)
  %175 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %176 = load i32, ptr %175, align 4, !tbaa !5
  %177 = call ptr @s2n_strerror_debug(i32 noundef %176, ptr noundef @.str.4)
  %178 = call ptr @__errno_location() #10
  %179 = load i32, ptr %178, align 4, !tbaa !5
  %180 = call ptr @strerror(i32 noundef %179) #9
  %181 = call ptr @__errno_location() #10
  %182 = load i32, ptr %181, align 4, !tbaa !5
  %183 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %170, ptr noundef @.str.2, i32 noundef %171, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 22, ptr noundef %174, ptr noundef %177, ptr noundef %180, i32 noundef %182) #9
  br label %201

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

201:                                              ; preds = %184, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  br label %202

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

203:                                              ; No predecessors!
  br label %204

204:                                              ; preds = %203, %150
  br label %205

205:                                              ; preds = %204
  br label %206

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

207:                                              ; preds = %206
  %208 = load i32, ptr @test_count, align 4, !tbaa !5
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr @test_count, align 4, !tbaa !5
  %210 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %210, ptr %9, align 8, !tbaa !9
  %211 = icmp eq ptr %210, null
  br i1 %211, label %212, label %265

212:                                              ; preds = %207
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  %215 = call ptr @__errno_location() #10
  %216 = load i32, ptr %215, align 4, !tbaa !5
  store i32 %216, ptr %10, align 4, !tbaa !5
  %217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %218 = call i32 @s2n_print_stacktrace(ptr noundef %217)
  %219 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %220 = trunc i8 %219 to i1
  br i1 %220, label %221, label %243

221:                                              ; preds = %214
  %222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %223 = call i32 @fileno(ptr noundef %222) #9
  %224 = call i32 @isatty(i32 noundef %223) #9
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %243

226:                                              ; preds = %221
  %227 = load i32, ptr %10, align 4, !tbaa !5
  %228 = call ptr @__errno_location() #10
  store i32 %227, ptr %228, align 4, !tbaa !5
  %229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %230 = load i32, ptr @test_count, align 4, !tbaa !5
  %231 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call ptr @s2n_strerror(i32 noundef %232, ptr noundef @.str.4)
  %234 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = call ptr @s2n_strerror_debug(i32 noundef %235, ptr noundef @.str.4)
  %237 = call ptr @__errno_location() #10
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = call ptr @strerror(i32 noundef %238) #9
  %240 = call ptr @__errno_location() #10
  %241 = load i32, ptr %240, align 4, !tbaa !5
  %242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef @.str.2, i32 noundef %230, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 25, ptr noundef %233, ptr noundef %236, ptr noundef %239, i32 noundef %241) #9
  br label %260

243:                                              ; preds = %221, %214
  %244 = load i32, ptr %10, align 4, !tbaa !5
  %245 = call ptr @__errno_location() #10
  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() #10
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = call ptr @strerror(i32 noundef %255) #9
  %257 = call ptr @__errno_location() #10
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %246, ptr noundef @.str.5, i32 noundef %247, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 25, ptr noundef %250, ptr noundef %253, ptr noundef %256, i32 noundef %258) #9
  br label %260

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

261:                                              ; preds = %260
  br label %262

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

263:                                              ; No predecessors!
  br label %264

264:                                              ; preds = %263
  br label %265

265:                                              ; preds = %264, %207
  br label %266

266:                                              ; preds = %265
  br label %267

267:                                              ; preds = %266
  br label %268

268:                                              ; preds = %267
  %269 = load i32, ptr @test_count, align 4, !tbaa !5
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr @test_count, align 4, !tbaa !5
  %271 = load ptr, ptr %9, align 8, !tbaa !9
  %272 = call i32 @s2n_connection_set_cipher_preferences(ptr noundef %271, ptr noundef @.str.9)
  %273 = icmp eq i32 %272, -1
  br i1 %273, label %274, label %327

274:                                              ; preds = %268
  br label %275

275:                                              ; preds = %274
  br label %276

276:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %277 = call ptr @__errno_location() #10
  %278 = load i32, ptr %277, align 4, !tbaa !5
  store i32 %278, ptr %11, align 4, !tbaa !5
  %279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %280 = call i32 @s2n_print_stacktrace(ptr noundef %279)
  %281 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %282 = trunc i8 %281 to i1
  br i1 %282, label %283, label %305

283:                                              ; preds = %276
  %284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %285 = call i32 @fileno(ptr noundef %284) #9
  %286 = call i32 @isatty(i32 noundef %285) #9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %305

288:                                              ; preds = %283
  %289 = load i32, ptr %11, align 4, !tbaa !5
  %290 = call ptr @__errno_location() #10
  store i32 %289, ptr %290, align 4, !tbaa !5
  %291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %292 = load i32, ptr @test_count, align 4, !tbaa !5
  %293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %294 = load i32, ptr %293, align 4, !tbaa !5
  %295 = call ptr @s2n_strerror(i32 noundef %294, ptr noundef @.str.4)
  %296 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %297 = load i32, ptr %296, align 4, !tbaa !5
  %298 = call ptr @s2n_strerror_debug(i32 noundef %297, ptr noundef @.str.4)
  %299 = call ptr @__errno_location() #10
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = call ptr @strerror(i32 noundef %300) #9
  %302 = call ptr @__errno_location() #10
  %303 = load i32, ptr %302, align 4, !tbaa !5
  %304 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %291, ptr noundef @.str.2, i32 noundef %292, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 26, ptr noundef %295, ptr noundef %298, ptr noundef %301, i32 noundef %303) #9
  br label %322

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

322:                                              ; preds = %305, %288
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %323

323:                                              ; preds = %322
  br label %324

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

325:                                              ; No predecessors!
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326, %268
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #9
  call void @llvm.memset.p0.i64(ptr align 1 %12, i8 0, i64 2, i1 false)
  br label %330

330:                                              ; preds = %329
  br label %331

331:                                              ; preds = %330
  %332 = load i32, ptr @test_count, align 4, !tbaa !5
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr @test_count, align 4, !tbaa !5
  %334 = load ptr, ptr %9, align 8, !tbaa !9
  %335 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 0
  %336 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 1
  %337 = call i32 @s2n_connection_get_cipher_iana_value(ptr noundef %334, ptr noundef %335, ptr noundef %336)
  %338 = icmp eq i32 %337, -1
  br i1 %338, label %392, label %339

339:                                              ; preds = %331
  br label %340

340:                                              ; preds = %339
  br label %341

341:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %342 = call ptr @__errno_location() #10
  %343 = load i32, ptr %342, align 4, !tbaa !5
  store i32 %343, ptr %13, align 4, !tbaa !5
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = call i32 @s2n_print_stacktrace(ptr noundef %344)
  %346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %347 = trunc i8 %346 to i1
  br i1 %347, label %348, label %370

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

353:                                              ; preds = %348
  %354 = load i32, ptr %13, align 4, !tbaa !5
  %355 = call ptr @__errno_location() #10
  store i32 %354, ptr %355, align 4, !tbaa !5
  %356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %357 = load i32, ptr @test_count, align 4, !tbaa !5
  %358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %359 = load i32, ptr %358, align 4, !tbaa !5
  %360 = call ptr @s2n_strerror(i32 noundef %359, ptr noundef @.str.4)
  %361 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = call ptr @s2n_strerror_debug(i32 noundef %362, ptr noundef @.str.4)
  %364 = call ptr @__errno_location() #10
  %365 = load i32, ptr %364, align 4, !tbaa !5
  %366 = call ptr @strerror(i32 noundef %365) #9
  %367 = call ptr @__errno_location() #10
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %356, ptr noundef @.str.2, i32 noundef %357, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 31, ptr noundef %360, ptr noundef %363, ptr noundef %366, i32 noundef %368) #9
  br label %387

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

387:                                              ; preds = %370, %353
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %388

388:                                              ; preds = %387
  br label %389

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

390:                                              ; No predecessors!
  br label %391

391:                                              ; preds = %390
  br label %392

392:                                              ; preds = %391, %331
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393
  br label %395

395:                                              ; preds = %394
  %396 = load i32, ptr @test_count, align 4, !tbaa !5
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr @test_count, align 4, !tbaa !5
  %398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %399 = load i32, ptr %398, align 4, !tbaa !5
  %400 = icmp eq i32 %399, 0
  br i1 %400, label %401, label %454

401:                                              ; preds = %395
  br label %402

402:                                              ; preds = %401
  br label %403

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

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

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

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

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

450:                                              ; preds = %449
  br label %451

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

452:                                              ; No predecessors!
  br label %453

453:                                              ; preds = %452
  br label %454

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

455:                                              ; preds = %454
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456
  %458 = load i32, ptr @test_count, align 4, !tbaa !5
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr @test_count, align 4, !tbaa !5
  %460 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %461 = load i32, ptr %460, align 4, !tbaa !5
  %462 = call ptr @s2n_strerror_debug(i32 noundef %461, ptr noundef @.str.4)
  %463 = icmp eq ptr %462, null
  br i1 %463, label %464, label %517

464:                                              ; preds = %457
  br label %465

465:                                              ; preds = %464
  br label %466

466:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %467 = call ptr @__errno_location() #10
  %468 = load i32, ptr %467, align 4, !tbaa !5
  store i32 %468, ptr %15, align 4, !tbaa !5
  %469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %470 = call i32 @s2n_print_stacktrace(ptr noundef %469)
  %471 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %472 = trunc i8 %471 to i1
  br i1 %472, label %473, label %495

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

478:                                              ; preds = %473
  %479 = load i32, ptr %15, align 4, !tbaa !5
  %480 = call ptr @__errno_location() #10
  store i32 %479, ptr %480, align 4, !tbaa !5
  %481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %482 = load i32, ptr @test_count, align 4, !tbaa !5
  %483 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %484 = load i32, ptr %483, align 4, !tbaa !5
  %485 = call ptr @s2n_strerror(i32 noundef %484, ptr noundef @.str.4)
  %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_debug(i32 noundef %487, ptr noundef @.str.4)
  %489 = call ptr @__errno_location() #10
  %490 = load i32, ptr %489, align 4, !tbaa !5
  %491 = call ptr @strerror(i32 noundef %490) #9
  %492 = call ptr @__errno_location() #10
  %493 = load i32, ptr %492, align 4, !tbaa !5
  %494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %481, ptr noundef @.str.2, i32 noundef %482, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 31, ptr noundef %485, ptr noundef %488, ptr noundef %491, i32 noundef %493) #9
  br label %512

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

512:                                              ; preds = %495, %478
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %513

513:                                              ; preds = %512
  br label %514

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

515:                                              ; No predecessors!
  br label %516

516:                                              ; preds = %515
  br label %517

517:                                              ; preds = %516, %457
  br label %518

518:                                              ; preds = %517
  br label %519

519:                                              ; preds = %518
  br label %520

520:                                              ; preds = %519
  %521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %521, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %522 = call ptr @__errno_location() #10
  store i32 0, ptr %522, align 4, !tbaa !5
  br label %523

523:                                              ; preds = %520
  br label %524

524:                                              ; preds = %523
  br label %525

525:                                              ; preds = %524
  br label %526

526:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %527 = load ptr, ptr %9, align 8, !tbaa !9
  %528 = getelementptr inbounds %struct.s2n_connection, ptr %527, i32 0, i32 2
  %529 = load ptr, ptr %528, align 8, !tbaa !15
  store ptr %529, ptr %16, align 8, !tbaa !9
  br label %530

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

535:                                              ; preds = %530
  br label %536

536:                                              ; preds = %535
  br label %537

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

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

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

566:                                              ; preds = %544, %537
  %567 = load i32, ptr %17, align 4, !tbaa !5
  %568 = call ptr @__errno_location() #10
  store i32 %567, ptr %568, align 4, !tbaa !5
  %569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %570 = load i32, ptr @test_count, align 4, !tbaa !5
  %571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %572 = load i32, ptr %571, align 4, !tbaa !5
  %573 = call ptr @s2n_strerror(i32 noundef %572, ptr noundef @.str.4)
  %574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %575 = load i32, ptr %574, align 4, !tbaa !5
  %576 = call ptr @s2n_strerror_debug(i32 noundef %575, ptr noundef @.str.4)
  %577 = call ptr @__errno_location() #10
  %578 = load i32, ptr %577, align 4, !tbaa !5
  %579 = call ptr @strerror(i32 noundef %578) #9
  %580 = call ptr @__errno_location() #10
  %581 = load i32, ptr %580, align 4, !tbaa !5
  %582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %569, ptr noundef @.str.5, i32 noundef %570, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 34, ptr noundef %573, ptr noundef %576, ptr noundef %579, i32 noundef %581) #9
  br label %583

583:                                              ; preds = %566, %549
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %584

584:                                              ; preds = %583
  br label %585

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

586:                                              ; No predecessors!
  br label %587

587:                                              ; preds = %586
  br label %588

588:                                              ; preds = %587, %530
  br label %589

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %591 = load ptr, ptr %16, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct.s2n_security_policy, ptr %591, i32 0, i32 1
  %593 = load ptr, ptr %592, align 8, !tbaa !42
  store ptr %593, ptr %18, align 8, !tbaa !9
  br label %594

594:                                              ; preds = %590
  %595 = load i32, ptr @test_count, align 4, !tbaa !5
  %596 = add nsw i32 %595, 1
  store i32 %596, ptr @test_count, align 4, !tbaa !5
  %597 = load ptr, ptr %18, align 8, !tbaa !9
  %598 = icmp eq ptr %597, null
  br i1 %598, label %599, label %652

599:                                              ; preds = %594
  br label %600

600:                                              ; preds = %599
  br label %601

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

608:                                              ; preds = %601
  %609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %610 = call i32 @fileno(ptr noundef %609) #9
  %611 = call i32 @isatty(i32 noundef %610) #9
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %613, label %630

613:                                              ; preds = %608
  %614 = load i32, ptr %19, align 4, !tbaa !5
  %615 = call ptr @__errno_location() #10
  store i32 %614, ptr %615, align 4, !tbaa !5
  %616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %617 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %619, ptr noundef @.str.4)
  %621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %623 = call ptr @s2n_strerror_debug(i32 noundef %622, ptr noundef @.str.4)
  %624 = call ptr @__errno_location() #10
  %625 = load i32, ptr %624, align 4, !tbaa !5
  %626 = call ptr @strerror(i32 noundef %625) #9
  %627 = call ptr @__errno_location() #10
  %628 = load i32, ptr %627, align 4, !tbaa !5
  %629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %616, ptr noundef @.str.2, i32 noundef %617, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 37, ptr noundef %620, ptr noundef %623, ptr noundef %626, i32 noundef %628) #9
  br label %647

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

647:                                              ; preds = %630, %613
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %648

648:                                              ; preds = %647
  br label %649

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

650:                                              ; No predecessors!
  br label %651

651:                                              ; preds = %650
  br label %652

652:                                              ; preds = %651, %594
  br label %653

653:                                              ; preds = %652
  br label %654

654:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  store i64 0, ptr %20, align 8, !tbaa !44
  br label %655

655:                                              ; preds = %870, %654
  %656 = load i64, ptr %20, align 8, !tbaa !44
  %657 = load ptr, ptr %18, align 8, !tbaa !9
  %658 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %657, i32 0, i32 0
  %659 = load i16, ptr %658, align 8, !tbaa !45
  %660 = zext i16 %659 to i64
  %661 = icmp ult i64 %656, %660
  br i1 %661, label %663, label %662

662:                                              ; preds = %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %873

663:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %664 = load ptr, ptr %18, align 8, !tbaa !9
  %665 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %664, i32 0, i32 1
  %666 = load ptr, ptr %665, align 8, !tbaa !47
  %667 = load i64, ptr %20, align 8, !tbaa !44
  %668 = getelementptr inbounds ptr, ptr %666, i64 %667
  %669 = load ptr, ptr %668, align 8, !tbaa !9
  store ptr %669, ptr %21, align 8, !tbaa !9
  %670 = load ptr, ptr %21, align 8, !tbaa !9
  %671 = load ptr, ptr %9, align 8, !tbaa !9
  %672 = getelementptr inbounds %struct.s2n_connection, ptr %671, i32 0, i32 27
  %673 = load ptr, ptr %672, align 8, !tbaa !48
  %674 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %673, i32 0, i32 0
  store ptr %670, ptr %674, align 8, !tbaa !49
  br label %675

675:                                              ; preds = %663
  %676 = load i32, ptr @test_count, align 4, !tbaa !5
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr @test_count, align 4, !tbaa !5
  %678 = load ptr, ptr %9, align 8, !tbaa !9
  %679 = call ptr @s2n_connection_get_cipher(ptr noundef %678)
  %680 = load ptr, ptr %21, align 8, !tbaa !9
  %681 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %680, i32 0, i32 1
  %682 = load ptr, ptr %681, align 8, !tbaa !54
  %683 = call i32 @strcmp(ptr noundef %679, ptr noundef %682) #12
  %684 = icmp eq i32 %683, 0
  br i1 %684, label %738, label %685

685:                                              ; preds = %675
  br label %686

686:                                              ; preds = %685
  br label %687

687:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  %688 = call ptr @__errno_location() #10
  %689 = load i32, ptr %688, align 4, !tbaa !5
  store i32 %689, ptr %22, align 4, !tbaa !5
  %690 = load ptr, ptr @stderr, align 8, !tbaa !9
  %691 = call i32 @s2n_print_stacktrace(ptr noundef %690)
  %692 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %716

694:                                              ; preds = %687
  %695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %696 = call i32 @fileno(ptr noundef %695) #9
  %697 = call i32 @isatty(i32 noundef %696) #9
  %698 = icmp ne i32 %697, 0
  br i1 %698, label %699, label %716

699:                                              ; preds = %694
  %700 = load i32, ptr %22, align 4, !tbaa !5
  %701 = call ptr @__errno_location() #10
  store i32 %700, ptr %701, align 4, !tbaa !5
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = load i32, ptr @test_count, align 4, !tbaa !5
  %704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call ptr @s2n_strerror(i32 noundef %705, ptr noundef @.str.4)
  %707 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %708 = load i32, ptr %707, align 4, !tbaa !5
  %709 = call ptr @s2n_strerror_debug(i32 noundef %708, ptr noundef @.str.4)
  %710 = call ptr @__errno_location() #10
  %711 = load i32, ptr %710, align 4, !tbaa !5
  %712 = call ptr @strerror(i32 noundef %711) #9
  %713 = call ptr @__errno_location() #10
  %714 = load i32, ptr %713, align 4, !tbaa !5
  %715 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %702, ptr noundef @.str.2, i32 noundef %703, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 44, ptr noundef %706, ptr noundef %709, ptr noundef %712, i32 noundef %714) #9
  br label %733

716:                                              ; preds = %694, %687
  %717 = load i32, ptr %22, align 4, !tbaa !5
  %718 = call ptr @__errno_location() #10
  store i32 %717, ptr %718, align 4, !tbaa !5
  %719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %720 = load i32, 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 = call ptr @s2n_strerror(i32 noundef %722, ptr noundef @.str.4)
  %724 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %725 = load i32, ptr %724, align 4, !tbaa !5
  %726 = call ptr @s2n_strerror_debug(i32 noundef %725, ptr noundef @.str.4)
  %727 = call ptr @__errno_location() #10
  %728 = load i32, ptr %727, align 4, !tbaa !5
  %729 = call ptr @strerror(i32 noundef %728) #9
  %730 = call ptr @__errno_location() #10
  %731 = load i32, ptr %730, align 4, !tbaa !5
  %732 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %719, ptr noundef @.str.5, i32 noundef %720, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 44, ptr noundef %723, ptr noundef %726, ptr noundef %729, i32 noundef %731) #9
  br label %733

733:                                              ; preds = %716, %699
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %734

734:                                              ; preds = %733
  br label %735

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

736:                                              ; No predecessors!
  br label %737

737:                                              ; preds = %736
  br label %738

738:                                              ; preds = %737, %675
  br label %739

739:                                              ; preds = %738
  br label %740

740:                                              ; preds = %739
  br label %741

741:                                              ; preds = %740
  %742 = load i32, ptr @test_count, align 4, !tbaa !5
  %743 = add nsw i32 %742, 1
  store i32 %743, ptr @test_count, align 4, !tbaa !5
  %744 = load ptr, ptr %9, align 8, !tbaa !9
  %745 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 0
  %746 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 1
  %747 = call i32 @s2n_connection_get_cipher_iana_value(ptr noundef %744, ptr noundef %745, ptr noundef %746)
  %748 = icmp eq i32 %747, -1
  br i1 %748, label %749, label %802

749:                                              ; preds = %741
  br label %750

750:                                              ; preds = %749
  br label %751

751:                                              ; preds = %750
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %752 = call ptr @__errno_location() #10
  %753 = load i32, ptr %752, align 4, !tbaa !5
  store i32 %753, ptr %23, align 4, !tbaa !5
  %754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %755 = call i32 @s2n_print_stacktrace(ptr noundef %754)
  %756 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %757 = trunc i8 %756 to i1
  br i1 %757, label %758, label %780

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

763:                                              ; preds = %758
  %764 = load i32, ptr %23, align 4, !tbaa !5
  %765 = call ptr @__errno_location() #10
  store i32 %764, ptr %765, align 4, !tbaa !5
  %766 = load ptr, ptr @stderr, align 8, !tbaa !9
  %767 = load i32, ptr @test_count, align 4, !tbaa !5
  %768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %769 = load i32, ptr %768, align 4, !tbaa !5
  %770 = call ptr @s2n_strerror(i32 noundef %769, ptr noundef @.str.4)
  %771 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %772 = load i32, ptr %771, align 4, !tbaa !5
  %773 = call ptr @s2n_strerror_debug(i32 noundef %772, ptr noundef @.str.4)
  %774 = call ptr @__errno_location() #10
  %775 = load i32, ptr %774, align 4, !tbaa !5
  %776 = call ptr @strerror(i32 noundef %775) #9
  %777 = call ptr @__errno_location() #10
  %778 = load i32, ptr %777, align 4, !tbaa !5
  %779 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %766, ptr noundef @.str.2, i32 noundef %767, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 45, ptr noundef %770, ptr noundef %773, ptr noundef %776, i32 noundef %778) #9
  br label %797

780:                                              ; preds = %758, %751
  %781 = load i32, ptr %23, align 4, !tbaa !5
  %782 = call ptr @__errno_location() #10
  store i32 %781, ptr %782, align 4, !tbaa !5
  %783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %784 = load i32, ptr @test_count, align 4, !tbaa !5
  %785 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %786 = load i32, ptr %785, align 4, !tbaa !5
  %787 = call ptr @s2n_strerror(i32 noundef %786, ptr noundef @.str.4)
  %788 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %789 = load i32, ptr %788, align 4, !tbaa !5
  %790 = call ptr @s2n_strerror_debug(i32 noundef %789, ptr noundef @.str.4)
  %791 = call ptr @__errno_location() #10
  %792 = load i32, ptr %791, align 4, !tbaa !5
  %793 = call ptr @strerror(i32 noundef %792) #9
  %794 = call ptr @__errno_location() #10
  %795 = load i32, ptr %794, align 4, !tbaa !5
  %796 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %783, ptr noundef @.str.5, i32 noundef %784, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 45, ptr noundef %787, ptr noundef %790, ptr noundef %793, i32 noundef %795) #9
  br label %797

797:                                              ; preds = %780, %763
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %798

798:                                              ; preds = %797
  br label %799

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

800:                                              ; No predecessors!
  br label %801

801:                                              ; preds = %800
  br label %802

802:                                              ; preds = %801, %741
  br label %803

803:                                              ; preds = %802
  br label %804

804:                                              ; preds = %803
  br label %805

805:                                              ; preds = %804
  %806 = load i32, ptr @test_count, align 4, !tbaa !5
  %807 = add nsw i32 %806, 1
  store i32 %807, ptr @test_count, align 4, !tbaa !5
  %808 = load ptr, ptr %21, align 8, !tbaa !9
  %809 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %808, i32 0, i32 3
  %810 = getelementptr inbounds [2 x i8], ptr %809, i64 0, i64 0
  %811 = getelementptr inbounds [2 x i8], ptr %12, i64 0, i64 0
  %812 = call i32 @memcmp(ptr noundef %810, ptr noundef %811, i64 noundef 2) #12
  %813 = icmp eq i32 %812, 0
  br i1 %813, label %867, label %814

814:                                              ; preds = %805
  br label %815

815:                                              ; preds = %814
  br label %816

816:                                              ; preds = %815
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %817 = call ptr @__errno_location() #10
  %818 = load i32, ptr %817, align 4, !tbaa !5
  store i32 %818, ptr %24, align 4, !tbaa !5
  %819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %820 = call i32 @s2n_print_stacktrace(ptr noundef %819)
  %821 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %822 = trunc i8 %821 to i1
  br i1 %822, label %823, label %845

823:                                              ; preds = %816
  %824 = load ptr, ptr @stderr, align 8, !tbaa !9
  %825 = call i32 @fileno(ptr noundef %824) #9
  %826 = call i32 @isatty(i32 noundef %825) #9
  %827 = icmp ne i32 %826, 0
  br i1 %827, label %828, label %845

828:                                              ; preds = %823
  %829 = load i32, ptr %24, align 4, !tbaa !5
  %830 = call ptr @__errno_location() #10
  store i32 %829, ptr %830, align 4, !tbaa !5
  %831 = load ptr, ptr @stderr, align 8, !tbaa !9
  %832 = load i32, ptr @test_count, align 4, !tbaa !5
  %833 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %834 = load i32, ptr %833, align 4, !tbaa !5
  %835 = call ptr @s2n_strerror(i32 noundef %834, ptr noundef @.str.4)
  %836 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %837 = load i32, ptr %836, align 4, !tbaa !5
  %838 = call ptr @s2n_strerror_debug(i32 noundef %837, ptr noundef @.str.4)
  %839 = call ptr @__errno_location() #10
  %840 = load i32, ptr %839, align 4, !tbaa !5
  %841 = call ptr @strerror(i32 noundef %840) #9
  %842 = call ptr @__errno_location() #10
  %843 = load i32, ptr %842, align 4, !tbaa !5
  %844 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %831, ptr noundef @.str.2, i32 noundef %832, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 46, ptr noundef %835, ptr noundef %838, ptr noundef %841, i32 noundef %843) #9
  br label %862

845:                                              ; preds = %823, %816
  %846 = load i32, ptr %24, align 4, !tbaa !5
  %847 = call ptr @__errno_location() #10
  store i32 %846, ptr %847, align 4, !tbaa !5
  %848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %849 = load i32, ptr @test_count, align 4, !tbaa !5
  %850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %851 = load i32, ptr %850, align 4, !tbaa !5
  %852 = call ptr @s2n_strerror(i32 noundef %851, ptr noundef @.str.4)
  %853 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %854 = load i32, ptr %853, align 4, !tbaa !5
  %855 = call ptr @s2n_strerror_debug(i32 noundef %854, ptr noundef @.str.4)
  %856 = call ptr @__errno_location() #10
  %857 = load i32, ptr %856, align 4, !tbaa !5
  %858 = call ptr @strerror(i32 noundef %857) #9
  %859 = call ptr @__errno_location() #10
  %860 = load i32, ptr %859, align 4, !tbaa !5
  %861 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %848, ptr noundef @.str.5, i32 noundef %849, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 46, ptr noundef %852, ptr noundef %855, ptr noundef %858, i32 noundef %860) #9
  br label %862

862:                                              ; preds = %845, %828
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %863

863:                                              ; preds = %862
  br label %864

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

865:                                              ; No predecessors!
  br label %866

866:                                              ; preds = %865
  br label %867

867:                                              ; preds = %866, %805
  br label %868

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %870

870:                                              ; preds = %869
  %871 = load i64, ptr %20, align 8, !tbaa !44
  %872 = add i64 %871, 1
  store i64 %872, ptr %20, align 8, !tbaa !44
  br label %655, !llvm.loop !56

873:                                              ; preds = %662
  br label %874

874:                                              ; preds = %873
  %875 = load i32, ptr @test_count, align 4, !tbaa !5
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr @test_count, align 4, !tbaa !5
  %877 = load ptr, ptr %9, align 8, !tbaa !9
  %878 = call i32 @s2n_connection_free(ptr noundef %877)
  %879 = icmp eq i32 %878, -1
  br i1 %879, label %880, label %933

880:                                              ; preds = %874
  br label %881

881:                                              ; preds = %880
  br label %882

882:                                              ; preds = %881
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %883 = call ptr @__errno_location() #10
  %884 = load i32, ptr %883, align 4, !tbaa !5
  store i32 %884, ptr %25, align 4, !tbaa !5
  %885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %886 = call i32 @s2n_print_stacktrace(ptr noundef %885)
  %887 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %888 = trunc i8 %887 to i1
  br i1 %888, label %889, label %911

889:                                              ; preds = %882
  %890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %891 = call i32 @fileno(ptr noundef %890) #9
  %892 = call i32 @isatty(i32 noundef %891) #9
  %893 = icmp ne i32 %892, 0
  br i1 %893, label %894, label %911

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

911:                                              ; preds = %889, %882
  %912 = load i32, ptr %25, align 4, !tbaa !5
  %913 = call ptr @__errno_location() #10
  store i32 %912, ptr %913, align 4, !tbaa !5
  %914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %915 = load i32, ptr @test_count, align 4, !tbaa !5
  %916 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %917 = load i32, ptr %916, align 4, !tbaa !5
  %918 = call ptr @s2n_strerror(i32 noundef %917, ptr noundef @.str.4)
  %919 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %920 = load i32, ptr %919, align 4, !tbaa !5
  %921 = call ptr @s2n_strerror_debug(i32 noundef %920, ptr noundef @.str.4)
  %922 = call ptr @__errno_location() #10
  %923 = load i32, ptr %922, align 4, !tbaa !5
  %924 = call ptr @strerror(i32 noundef %923) #9
  %925 = call ptr @__errno_location() #10
  %926 = load i32, ptr %925, align 4, !tbaa !5
  %927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %914, ptr noundef @.str.5, i32 noundef %915, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 49, ptr noundef %918, ptr noundef %921, ptr noundef %924, i32 noundef %926) #9
  br label %928

928:                                              ; preds = %911, %894
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %929

929:                                              ; preds = %928
  br label %930

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

931:                                              ; No predecessors!
  br label %932

932:                                              ; preds = %931
  br label %933

933:                                              ; preds = %932, %874
  br label %934

934:                                              ; preds = %933
  br label %935

935:                                              ; preds = %934
  br label %936

936:                                              ; preds = %935
  br label %937

937:                                              ; preds = %936
  %938 = call i32 @s2n_cleanup()
  %939 = icmp eq i32 %938, -1
  br i1 %939, label %940, label %993

940:                                              ; preds = %937
  br label %941

941:                                              ; preds = %940
  br label %942

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

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

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

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

988:                                              ; preds = %971, %954
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %989

989:                                              ; preds = %988
  br label %990

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

991:                                              ; No predecessors!
  br label %992

992:                                              ; preds = %991
  br label %993

993:                                              ; preds = %992, %937
  br label %994

994:                                              ; preds = %993
  br label %995

995:                                              ; preds = %994
  br label %996

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996
  %998 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %999 = icmp eq i32 %998, -1
  br i1 %999, label %1000, label %1053

1000:                                             ; preds = %997
  br label %1001

1001:                                             ; preds = %1000
  br label %1002

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

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

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

1031:                                             ; preds = %1009, %1002
  %1032 = load i32, ptr %27, align 4, !tbaa !5
  %1033 = call ptr @__errno_location() #10
  store i32 %1032, ptr %1033, align 4, !tbaa !5
  %1034 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1035 = load i32, ptr @test_count, align 4, !tbaa !5
  %1036 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1037 = load i32, ptr %1036, align 4, !tbaa !5
  %1038 = call ptr @s2n_strerror(i32 noundef %1037, ptr noundef @.str.4)
  %1039 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1040 = load i32, ptr %1039, align 4, !tbaa !5
  %1041 = call ptr @s2n_strerror_debug(i32 noundef %1040, ptr noundef @.str.4)
  %1042 = call ptr @__errno_location() #10
  %1043 = load i32, ptr %1042, align 4, !tbaa !5
  %1044 = call ptr @strerror(i32 noundef %1043) #9
  %1045 = call ptr @__errno_location() #10
  %1046 = load i32, ptr %1045, align 4, !tbaa !5
  %1047 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1034, ptr noundef @.str.5, i32 noundef %1035, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 51, ptr noundef %1038, ptr noundef %1041, ptr noundef %1044, i32 noundef %1046) #9
  br label %1048

1048:                                             ; preds = %1031, %1014
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %1049

1049:                                             ; preds = %1048
  br label %1050

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

1051:                                             ; No predecessors!
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

1053:                                             ; preds = %1052, %997
  br label %1054

1054:                                             ; preds = %1053
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1057 = trunc i8 %1056 to i1
  br i1 %1057, label %1058, label %1074

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1060 = call i32 @fileno(ptr noundef %1059) #9
  %1061 = call i32 @isatty(i32 noundef %1060) #9
  %1062 = icmp ne i32 %1061, 0
  br i1 %1062, label %1063, label %1074

1063:                                             ; preds = %1058
  %1064 = load i32, ptr @test_count, align 4, !tbaa !5
  %1065 = icmp ne i32 %1064, 0
  br i1 %1065, label %1066, label %1070

1066:                                             ; preds = %1063
  %1067 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1068 = load i32, ptr @test_count, align 4, !tbaa !5
  %1069 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1067, ptr noundef @.str.22, i32 noundef %1068) #9
  br label %1073

1070:                                             ; preds = %1063
  %1071 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1071, ptr noundef @.str.23) #9
  br label %1073

1073:                                             ; preds = %1070, %1066
  br label %1085

1074:                                             ; preds = %1058, %1055
  %1075 = load i32, ptr @test_count, align 4, !tbaa !5
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1081

1077:                                             ; preds = %1074
  %1078 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1079 = load i32, ptr @test_count, align 4, !tbaa !5
  %1080 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1078, ptr noundef @.str.24, i32 noundef %1079) #9
  br label %1084

1081:                                             ; preds = %1074
  %1082 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1083 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1082, ptr noundef @.str.25) #9
  br label %1084

1084:                                             ; preds = %1081, %1077
  br label %1085

1085:                                             ; preds = %1084, %1073
  store i32 0, ptr %3, align 4
  store i32 1, ptr %28, align 4
  br label %1090

1086:                                             ; No predecessors!
  br label %1087

1087:                                             ; preds = %1086
  br label %1088

1088:                                             ; preds = %1087
  br label %1089

1089:                                             ; preds = %1088
  store i32 0, ptr %3, align 4
  store i32 1, ptr %28, align 4
  br label %1090

1090:                                             ; preds = %1089, %1085
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  %1091 = load i32, ptr %3, align 4
  ret i32 %1091
}

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

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

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

declare void @s2n_debug_info_reset() #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #8

declare ptr @s2n_connection_get_cipher(ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #8

declare i32 @s2n_connection_free(ptr noundef) #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { nounwind willreturn memory(none) }
attributes #11 = { noreturn nounwind }
attributes #12 = { nounwind willreturn memory(read) }

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

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


; 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"

@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 [79 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 [72 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

17:                                               ; preds = %10
  %18 = load ptr, ptr @stderr, align 8, !tbaa !9
  %19 = tail call i32 @fileno(ptr noundef %18) #10
  %20 = tail call i32 @isatty(i32 noundef %19) #10
  %.not72 = icmp eq i32 %20, 0
  br i1 %.not72, label %21, label %22

21:                                               ; preds = %17, %10
  br label %22

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

34:                                               ; preds = %2
  %35 = load i32, ptr @test_count, align 4, !tbaa !5
  %36 = add nsw i32 %35, 1
  store i32 %36, ptr @test_count, align 4, !tbaa !5
  %37 = tail call i32 @s2n_enable_atexit() #10
  %38 = icmp eq i32 %37, -1
  br i1 %38, label %39, label %63

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

46:                                               ; preds = %39
  %47 = load ptr, ptr @stderr, align 8, !tbaa !9
  %48 = tail call i32 @fileno(ptr noundef %47) #10
  %49 = tail call i32 @isatty(i32 noundef %48) #10
  %.not71 = icmp eq i32 %49, 0
  br i1 %.not71, label %50, label %51

50:                                               ; preds = %46, %39
  br label %51

51:                                               ; preds = %46, %50
  %.str.5.sink86 = phi ptr [ @.str.5, %50 ], [ @.str.2, %46 ]
  store i32 %41, ptr %40, align 4, !tbaa !5
  %52 = load ptr, ptr @stderr, align 8, !tbaa !9
  %53 = load i32, ptr @test_count, align 4, !tbaa !5
  %54 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %55 = load i32, ptr %54, align 4, !tbaa !5
  %56 = tail call ptr @s2n_strerror(i32 noundef %55, ptr noundef nonnull @.str.4) #10
  %57 = load i32, ptr %54, align 4, !tbaa !5
  %58 = tail call ptr @s2n_strerror_debug(i32 noundef %57, ptr noundef nonnull @.str.4) #10
  %59 = load i32, ptr %40, align 4, !tbaa !5
  %60 = tail call ptr @strerror(i32 noundef %59) #10
  %61 = load i32, ptr %40, align 4, !tbaa !5
  %62 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %52, ptr noundef nonnull %.str.5.sink86, i32 noundef %53, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 22, ptr noundef %56, ptr noundef %58, ptr noundef %60, i32 noundef %61) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

63:                                               ; preds = %34
  %64 = tail call i32 @s2n_init() #10
  %65 = icmp eq i32 %64, -1
  br i1 %65, label %66, label %90

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

73:                                               ; preds = %66
  %74 = load ptr, ptr @stderr, align 8, !tbaa !9
  %75 = tail call i32 @fileno(ptr noundef %74) #10
  %76 = tail call i32 @isatty(i32 noundef %75) #10
  %.not70 = icmp eq i32 %76, 0
  br i1 %.not70, label %77, label %78

77:                                               ; preds = %73, %66
  br label %78

78:                                               ; preds = %73, %77
  %.str.5.sink97 = phi ptr [ @.str.5, %77 ], [ @.str.2, %73 ]
  store i32 %68, ptr %67, align 4, !tbaa !5
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = load i32, ptr @test_count, align 4, !tbaa !5
  %81 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = tail call ptr @s2n_strerror(i32 noundef %82, ptr noundef nonnull @.str.4) #10
  %84 = load i32, ptr %81, align 4, !tbaa !5
  %85 = tail call ptr @s2n_strerror_debug(i32 noundef %84, ptr noundef nonnull @.str.4) #10
  %86 = load i32, ptr %67, align 4, !tbaa !5
  %87 = tail call ptr @strerror(i32 noundef %86) #10
  %88 = load i32, ptr %67, align 4, !tbaa !5
  %89 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef nonnull %.str.5.sink97, i32 noundef %80, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 22, ptr noundef %83, ptr noundef %85, ptr noundef %87, i32 noundef %88) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

90:                                               ; preds = %63
  %91 = load i32, ptr @test_count, align 4, !tbaa !5
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr @test_count, align 4, !tbaa !5
  %93 = tail call ptr @s2n_connection_new(i32 noundef 1) #10
  %94 = icmp eq ptr %93, null
  br i1 %94, label %95, label %119

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

102:                                              ; preds = %95
  %103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %104 = tail call i32 @fileno(ptr noundef %103) #10
  %105 = tail call i32 @isatty(i32 noundef %104) #10
  %.not69 = icmp eq i32 %105, 0
  br i1 %.not69, label %106, label %107

106:                                              ; preds = %102, %95
  br label %107

107:                                              ; preds = %102, %106
  %.str.5.sink108 = phi ptr [ @.str.5, %106 ], [ @.str.2, %102 ]
  store i32 %97, ptr %96, align 4, !tbaa !5
  %108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %109 = load i32, ptr @test_count, align 4, !tbaa !5
  %110 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = tail call ptr @s2n_strerror(i32 noundef %111, ptr noundef nonnull @.str.4) #10
  %113 = load i32, ptr %110, align 4, !tbaa !5
  %114 = tail call ptr @s2n_strerror_debug(i32 noundef %113, ptr noundef nonnull @.str.4) #10
  %115 = load i32, ptr %96, align 4, !tbaa !5
  %116 = tail call ptr @strerror(i32 noundef %115) #10
  %117 = load i32, ptr %96, align 4, !tbaa !5
  %118 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %108, ptr noundef nonnull %.str.5.sink108, i32 noundef %109, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 25, ptr noundef %112, ptr noundef %114, ptr noundef %116, i32 noundef %117) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

119:                                              ; preds = %90
  %120 = load i32, ptr @test_count, align 4, !tbaa !5
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr @test_count, align 4, !tbaa !5
  %122 = tail call i32 @s2n_connection_set_cipher_preferences(ptr noundef nonnull %93, ptr noundef nonnull @.str.9) #10
  %123 = icmp eq i32 %122, -1
  br i1 %123, label %124, label %148

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

131:                                              ; preds = %124
  %132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %133 = tail call i32 @fileno(ptr noundef %132) #10
  %134 = tail call i32 @isatty(i32 noundef %133) #10
  %.not68 = icmp eq i32 %134, 0
  br i1 %.not68, label %135, label %136

135:                                              ; preds = %131, %124
  br label %136

136:                                              ; preds = %131, %135
  %.str.5.sink119 = phi ptr [ @.str.5, %135 ], [ @.str.2, %131 ]
  store i32 %126, ptr %125, align 4, !tbaa !5
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = load i32, ptr @test_count, align 4, !tbaa !5
  %139 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = tail call ptr @s2n_strerror(i32 noundef %140, ptr noundef nonnull @.str.4) #10
  %142 = load i32, ptr %139, align 4, !tbaa !5
  %143 = tail call ptr @s2n_strerror_debug(i32 noundef %142, ptr noundef nonnull @.str.4) #10
  %144 = load i32, ptr %125, align 4, !tbaa !5
  %145 = tail call ptr @strerror(i32 noundef %144) #10
  %146 = load i32, ptr %125, align 4, !tbaa !5
  %147 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %137, ptr noundef nonnull %.str.5.sink119, i32 noundef %138, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 26, ptr noundef %141, ptr noundef %143, ptr noundef %145, i32 noundef %146) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

148:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %3) #10
  store i16 0, ptr %3, align 2
  %149 = load i32, ptr @test_count, align 4, !tbaa !5
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr @test_count, align 4, !tbaa !5
  %151 = getelementptr inbounds i8, ptr %3, i64 1
  %152 = call i32 @s2n_connection_get_cipher_iana_value(ptr noundef nonnull %93, ptr noundef nonnull %3, ptr noundef nonnull %151) #10
  %153 = icmp eq i32 %152, -1
  br i1 %153, label %178, label %154

154:                                              ; preds = %148
  %155 = tail call ptr @__errno_location() #11
  %156 = load i32, ptr %155, align 4, !tbaa !5
  %157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %158 = call i32 @s2n_print_stacktrace(ptr noundef %157) #10
  %159 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %160 = trunc nuw i8 %159 to i1
  br i1 %160, label %161, label %165

161:                                              ; preds = %154
  %162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %163 = call i32 @fileno(ptr noundef %162) #10
  %164 = call i32 @isatty(i32 noundef %163) #10
  %.not = icmp eq i32 %164, 0
  br i1 %.not, label %165, label %166

165:                                              ; preds = %161, %154
  br label %166

166:                                              ; preds = %161, %165
  %.str.5.sink130 = phi ptr [ @.str.5, %165 ], [ @.str.2, %161 ]
  store i32 %156, ptr %155, align 4, !tbaa !5
  %167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %168 = load i32, ptr @test_count, align 4, !tbaa !5
  %169 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = call ptr @s2n_strerror(i32 noundef %170, ptr noundef nonnull @.str.4) #10
  %172 = load i32, ptr %169, align 4, !tbaa !5
  %173 = call ptr @s2n_strerror_debug(i32 noundef %172, ptr noundef nonnull @.str.4) #10
  %174 = load i32, ptr %155, align 4, !tbaa !5
  %175 = call ptr @strerror(i32 noundef %174) #10
  %176 = load i32, ptr %155, align 4, !tbaa !5
  %177 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %167, ptr noundef nonnull %.str.5.sink130, i32 noundef %168, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 31, ptr noundef %171, ptr noundef %173, ptr noundef %175, i32 noundef %176) #12
  call void @exit(i32 noundef 1) #13
  unreachable

178:                                              ; preds = %148
  %179 = load i32, ptr @test_count, align 4, !tbaa !5
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr @test_count, align 4, !tbaa !5
  %181 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %182 = load i32, ptr %181, align 4, !tbaa !5
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %207

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

191:                                              ; preds = %184
  %192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %193 = call i32 @fileno(ptr noundef %192) #10
  %194 = call i32 @isatty(i32 noundef %193) #10
  %.not67 = icmp eq i32 %194, 0
  br i1 %.not67, label %195, label %196

195:                                              ; preds = %191, %184
  br label %196

196:                                              ; preds = %191, %195
  %.str.5.sink141 = phi ptr [ @.str.5, %195 ], [ @.str.2, %191 ]
  store i32 %186, ptr %185, align 4, !tbaa !5
  %197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %198 = load i32, ptr @test_count, align 4, !tbaa !5
  %199 = load i32, ptr %181, align 4, !tbaa !5
  %200 = call ptr @s2n_strerror(i32 noundef %199, ptr noundef nonnull @.str.4) #10
  %201 = load i32, ptr %181, align 4, !tbaa !5
  %202 = call ptr @s2n_strerror_debug(i32 noundef %201, ptr noundef nonnull @.str.4) #10
  %203 = load i32, ptr %185, align 4, !tbaa !5
  %204 = call ptr @strerror(i32 noundef %203) #10
  %205 = load i32, ptr %185, align 4, !tbaa !5
  %206 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %197, ptr noundef nonnull %.str.5.sink141, i32 noundef %198, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 31, ptr noundef %200, ptr noundef %202, ptr noundef %204, i32 noundef %205) #12
  call void @exit(i32 noundef 1) #13
  unreachable

207:                                              ; preds = %178
  %208 = add nsw i32 %179, 2
  store i32 %208, ptr @test_count, align 4, !tbaa !5
  %209 = call ptr @s2n_strerror_debug(i32 noundef %182, ptr noundef nonnull @.str.4) #10
  %210 = icmp eq ptr %209, null
  br i1 %210, label %211, label %234

211:                                              ; preds = %207
  %212 = tail call ptr @__errno_location() #11
  %213 = load i32, ptr %212, align 4, !tbaa !5
  %214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %215 = call i32 @s2n_print_stacktrace(ptr noundef %214) #10
  %216 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %217 = trunc nuw i8 %216 to i1
  br i1 %217, label %218, label %222

218:                                              ; preds = %211
  %219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %220 = call i32 @fileno(ptr noundef %219) #10
  %221 = call i32 @isatty(i32 noundef %220) #10
  %.not66 = icmp eq i32 %221, 0
  br i1 %.not66, label %222, label %223

222:                                              ; preds = %218, %211
  br label %223

223:                                              ; preds = %218, %222
  %.str.5.sink150 = phi ptr [ @.str.5, %222 ], [ @.str.2, %218 ]
  store i32 %213, ptr %212, align 4, !tbaa !5
  %224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %225 = load i32, ptr @test_count, align 4, !tbaa !5
  %226 = load i32, ptr %181, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror(i32 noundef %226, ptr noundef nonnull @.str.4) #10
  %228 = load i32, ptr %181, align 4, !tbaa !5
  %229 = call ptr @s2n_strerror_debug(i32 noundef %228, ptr noundef nonnull @.str.4) #10
  %230 = load i32, ptr %212, align 4, !tbaa !5
  %231 = call ptr @strerror(i32 noundef %230) #10
  %232 = load i32, ptr %212, align 4, !tbaa !5
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %224, ptr noundef nonnull %.str.5.sink150, i32 noundef %225, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 31, ptr noundef %227, ptr noundef %229, ptr noundef %231, i32 noundef %232) #12
  call void @exit(i32 noundef 1) #13
  unreachable

234:                                              ; preds = %207
  store i32 0, ptr %181, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  %235 = tail call ptr @__errno_location() #11
  store i32 0, ptr %235, align 4, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %93, i64 16
  %237 = load ptr, ptr %236, align 8, !tbaa !15
  %238 = load i32, ptr @test_count, align 4, !tbaa !5
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr @test_count, align 4, !tbaa !5
  %240 = icmp eq ptr %237, null
  br i1 %240, label %241, label %263

241:                                              ; preds = %234
  %242 = load i32, ptr %235, align 4, !tbaa !5
  %243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %244 = call i32 @s2n_print_stacktrace(ptr noundef %243) #10
  %245 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %246 = trunc nuw i8 %245 to i1
  br i1 %246, label %247, label %251

247:                                              ; preds = %241
  %248 = load ptr, ptr @stderr, align 8, !tbaa !9
  %249 = call i32 @fileno(ptr noundef %248) #10
  %250 = call i32 @isatty(i32 noundef %249) #10
  %.not65 = icmp eq i32 %250, 0
  br i1 %.not65, label %251, label %252

251:                                              ; preds = %247, %241
  br label %252

252:                                              ; preds = %247, %251
  %.str.5.sink159 = phi ptr [ @.str.5, %251 ], [ @.str.2, %247 ]
  store i32 %242, ptr %235, align 4, !tbaa !5
  %253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %254 = load i32, ptr @test_count, align 4, !tbaa !5
  %255 = load i32, ptr %181, align 4, !tbaa !5
  %256 = call ptr @s2n_strerror(i32 noundef %255, ptr noundef nonnull @.str.4) #10
  %257 = load i32, ptr %181, align 4, !tbaa !5
  %258 = call ptr @s2n_strerror_debug(i32 noundef %257, ptr noundef nonnull @.str.4) #10
  %259 = load i32, ptr %235, align 4, !tbaa !5
  %260 = call ptr @strerror(i32 noundef %259) #10
  %261 = load i32, ptr %235, align 4, !tbaa !5
  %262 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef nonnull %.str.5.sink159, i32 noundef %254, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 34, ptr noundef %256, ptr noundef %258, ptr noundef %260, i32 noundef %261) #12
  call void @exit(i32 noundef 1) #13
  unreachable

263:                                              ; preds = %234
  %264 = getelementptr inbounds i8, ptr %237, i64 8
  %265 = load ptr, ptr %264, align 8, !tbaa !42
  %266 = add nsw i32 %238, 2
  store i32 %266, ptr @test_count, align 4, !tbaa !5
  %267 = icmp eq ptr %265, null
  br i1 %267, label %271, label %.preheader

.preheader:                                       ; preds = %263
  %268 = load i16, ptr %265, align 8, !tbaa !44
  %.not74 = icmp eq i16 %268, 0
  br i1 %.not74, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %269 = getelementptr inbounds i8, ptr %265, i64 8
  %270 = getelementptr inbounds i8, ptr %93, i64 232
  br label %302

271:                                              ; preds = %263
  %272 = load i32, ptr %235, align 4, !tbaa !5
  %273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %274 = call i32 @s2n_print_stacktrace(ptr noundef %273) #10
  %275 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %276 = trunc nuw i8 %275 to i1
  br i1 %276, label %277, label %281

277:                                              ; preds = %271
  %278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %279 = call i32 @fileno(ptr noundef %278) #10
  %280 = call i32 @isatty(i32 noundef %279) #10
  %.not64 = icmp eq i32 %280, 0
  br i1 %.not64, label %281, label %282

281:                                              ; preds = %277, %271
  br label %282

282:                                              ; preds = %277, %281
  %.str.5.sink168 = phi ptr [ @.str.5, %281 ], [ @.str.2, %277 ]
  store i32 %272, ptr %235, align 4, !tbaa !5
  %283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %284 = load i32, ptr @test_count, align 4, !tbaa !5
  %285 = load i32, ptr %181, align 4, !tbaa !5
  %286 = call ptr @s2n_strerror(i32 noundef %285, ptr noundef nonnull @.str.4) #10
  %287 = load i32, ptr %181, align 4, !tbaa !5
  %288 = call ptr @s2n_strerror_debug(i32 noundef %287, ptr noundef nonnull @.str.4) #10
  %289 = load i32, ptr %235, align 4, !tbaa !5
  %290 = call ptr @strerror(i32 noundef %289) #10
  %291 = load i32, ptr %235, align 4, !tbaa !5
  %292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %283, ptr noundef nonnull %.str.5.sink168, i32 noundef %284, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 37, ptr noundef %286, ptr noundef %288, ptr noundef %290, i32 noundef %291) #12
  call void @exit(i32 noundef 1) #13
  unreachable

293:                                              ; preds = %363
  %294 = add nuw nsw i64 %.073, 1
  %295 = load i16, ptr %265, align 8, !tbaa !44
  %296 = zext i16 %295 to i64
  %297 = icmp ult i64 %294, %296
  br i1 %297, label %302, label %._crit_edge, !llvm.loop !46

._crit_edge:                                      ; preds = %293, %.preheader
  %298 = phi i32 [ %266, %.preheader ], [ %365, %293 ]
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr @test_count, align 4, !tbaa !5
  %300 = call i32 @s2n_connection_free(ptr noundef nonnull %93) #10
  %301 = icmp eq i32 %300, -1
  br i1 %301, label %390, label %412

302:                                              ; preds = %.lr.ph, %293
  %303 = phi i32 [ %266, %.lr.ph ], [ %365, %293 ]
  %.073 = phi i64 [ 0, %.lr.ph ], [ %294, %293 ]
  %304 = load ptr, ptr %269, align 8, !tbaa !48
  %305 = getelementptr inbounds ptr, ptr %304, i64 %.073
  %306 = load ptr, ptr %305, align 8, !tbaa !9
  %307 = load ptr, ptr %270, align 8, !tbaa !49
  store ptr %306, ptr %307, align 8, !tbaa !50
  %308 = add nsw i32 %303, 1
  store i32 %308, ptr @test_count, align 4, !tbaa !5
  %309 = call ptr @s2n_connection_get_cipher(ptr noundef nonnull %93) #10
  %310 = getelementptr inbounds i8, ptr %306, i64 8
  %311 = load ptr, ptr %310, align 8, !tbaa !55
  %312 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %309, ptr noundef nonnull dereferenceable(1) %311) #14
  %313 = icmp eq i32 %312, 0
  br i1 %313, label %336, label %314

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

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

324:                                              ; preds = %320, %314
  br label %325

325:                                              ; preds = %320, %324
  %.str.5.sink177 = phi ptr [ @.str.5, %324 ], [ @.str.2, %320 ]
  store i32 %315, ptr %235, align 4, !tbaa !5
  %326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %327 = load i32, ptr @test_count, align 4, !tbaa !5
  %328 = load i32, ptr %181, align 4, !tbaa !5
  %329 = call ptr @s2n_strerror(i32 noundef %328, ptr noundef nonnull @.str.4) #10
  %330 = load i32, ptr %181, align 4, !tbaa !5
  %331 = call ptr @s2n_strerror_debug(i32 noundef %330, ptr noundef nonnull @.str.4) #10
  %332 = load i32, ptr %235, align 4, !tbaa !5
  %333 = call ptr @strerror(i32 noundef %332) #10
  %334 = load i32, ptr %235, align 4, !tbaa !5
  %335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %326, ptr noundef nonnull %.str.5.sink177, i32 noundef %327, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %329, ptr noundef %331, ptr noundef %333, i32 noundef %334) #12
  call void @exit(i32 noundef 1) #13
  unreachable

336:                                              ; preds = %302
  %337 = load i32, ptr @test_count, align 4, !tbaa !5
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr @test_count, align 4, !tbaa !5
  %339 = call i32 @s2n_connection_get_cipher_iana_value(ptr noundef nonnull %93, ptr noundef nonnull %3, ptr noundef nonnull %151) #10
  %340 = icmp eq i32 %339, -1
  br i1 %340, label %341, label %363

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

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

351:                                              ; preds = %347, %341
  br label %352

352:                                              ; preds = %347, %351
  %.str.5.sink186 = phi ptr [ @.str.5, %351 ], [ @.str.2, %347 ]
  store i32 %342, ptr %235, align 4, !tbaa !5
  %353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %354 = load i32, ptr @test_count, align 4, !tbaa !5
  %355 = load i32, ptr %181, align 4, !tbaa !5
  %356 = call ptr @s2n_strerror(i32 noundef %355, ptr noundef nonnull @.str.4) #10
  %357 = load i32, ptr %181, align 4, !tbaa !5
  %358 = call ptr @s2n_strerror_debug(i32 noundef %357, ptr noundef nonnull @.str.4) #10
  %359 = load i32, ptr %235, align 4, !tbaa !5
  %360 = call ptr @strerror(i32 noundef %359) #10
  %361 = load i32, ptr %235, align 4, !tbaa !5
  %362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %353, ptr noundef nonnull %.str.5.sink186, i32 noundef %354, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 45, ptr noundef %356, ptr noundef %358, ptr noundef %360, i32 noundef %361) #12
  call void @exit(i32 noundef 1) #13
  unreachable

363:                                              ; preds = %336
  %364 = load i32, ptr @test_count, align 4, !tbaa !5
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr @test_count, align 4, !tbaa !5
  %366 = getelementptr inbounds i8, ptr %306, i64 24
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %366, ptr noundef nonnull dereferenceable(2) %3, i64 2)
  %367 = icmp eq i32 %bcmp, 0
  br i1 %367, label %293, label %368

368:                                              ; preds = %363
  %369 = load i32, ptr %235, align 4, !tbaa !5
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = call i32 @s2n_print_stacktrace(ptr noundef %370) #10
  %372 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %373 = trunc nuw i8 %372 to i1
  br i1 %373, label %374, label %378

374:                                              ; preds = %368
  %375 = load ptr, ptr @stderr, align 8, !tbaa !9
  %376 = call i32 @fileno(ptr noundef %375) #10
  %377 = call i32 @isatty(i32 noundef %376) #10
  %.not62 = icmp eq i32 %377, 0
  br i1 %.not62, label %378, label %379

378:                                              ; preds = %374, %368
  br label %379

379:                                              ; preds = %374, %378
  %.str.5.sink195 = phi ptr [ @.str.5, %378 ], [ @.str.2, %374 ]
  store i32 %369, ptr %235, align 4, !tbaa !5
  %380 = load ptr, ptr @stderr, align 8, !tbaa !9
  %381 = load i32, ptr @test_count, align 4, !tbaa !5
  %382 = load i32, ptr %181, align 4, !tbaa !5
  %383 = call ptr @s2n_strerror(i32 noundef %382, ptr noundef nonnull @.str.4) #10
  %384 = load i32, ptr %181, align 4, !tbaa !5
  %385 = call ptr @s2n_strerror_debug(i32 noundef %384, ptr noundef nonnull @.str.4) #10
  %386 = load i32, ptr %235, align 4, !tbaa !5
  %387 = call ptr @strerror(i32 noundef %386) #10
  %388 = load i32, ptr %235, align 4, !tbaa !5
  %389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %380, ptr noundef nonnull %.str.5.sink195, i32 noundef %381, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 46, ptr noundef %383, ptr noundef %385, ptr noundef %387, i32 noundef %388) #12
  call void @exit(i32 noundef 1) #13
  unreachable

390:                                              ; preds = %._crit_edge
  %391 = load i32, ptr %235, align 4, !tbaa !5
  %392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %393 = call i32 @s2n_print_stacktrace(ptr noundef %392) #10
  %394 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %395 = trunc nuw i8 %394 to i1
  br i1 %395, label %396, label %400

396:                                              ; preds = %390
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = call i32 @fileno(ptr noundef %397) #10
  %399 = call i32 @isatty(i32 noundef %398) #10
  %.not60 = icmp eq i32 %399, 0
  br i1 %.not60, label %400, label %401

400:                                              ; preds = %396, %390
  br label %401

401:                                              ; preds = %396, %400
  %.str.5.sink204 = phi ptr [ @.str.5, %400 ], [ @.str.2, %396 ]
  store i32 %391, ptr %235, align 4, !tbaa !5
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = load i32, ptr @test_count, align 4, !tbaa !5
  %404 = load i32, ptr %181, align 4, !tbaa !5
  %405 = call ptr @s2n_strerror(i32 noundef %404, ptr noundef nonnull @.str.4) #10
  %406 = load i32, ptr %181, align 4, !tbaa !5
  %407 = call ptr @s2n_strerror_debug(i32 noundef %406, ptr noundef nonnull @.str.4) #10
  %408 = load i32, ptr %235, align 4, !tbaa !5
  %409 = call ptr @strerror(i32 noundef %408) #10
  %410 = load i32, ptr %235, align 4, !tbaa !5
  %411 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %402, ptr noundef nonnull %.str.5.sink204, i32 noundef %403, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 49, ptr noundef %405, ptr noundef %407, ptr noundef %409, i32 noundef %410) #12
  call void @exit(i32 noundef 1) #13
  unreachable

412:                                              ; preds = %._crit_edge
  %413 = call i32 @s2n_cleanup() #10
  %414 = icmp eq i32 %413, -1
  br i1 %414, label %415, label %437

415:                                              ; preds = %412
  %416 = load i32, ptr %235, align 4, !tbaa !5
  %417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %418 = call i32 @s2n_print_stacktrace(ptr noundef %417) #10
  %419 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %420 = trunc nuw i8 %419 to i1
  br i1 %420, label %421, label %425

421:                                              ; preds = %415
  %422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %423 = call i32 @fileno(ptr noundef %422) #10
  %424 = call i32 @isatty(i32 noundef %423) #10
  %.not59 = icmp eq i32 %424, 0
  br i1 %.not59, label %425, label %426

425:                                              ; preds = %421, %415
  br label %426

426:                                              ; preds = %421, %425
  %.str.5.sink213 = phi ptr [ @.str.5, %425 ], [ @.str.2, %421 ]
  store i32 %416, ptr %235, align 4, !tbaa !5
  %427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %428 = load i32, ptr @test_count, align 4, !tbaa !5
  %429 = load i32, ptr %181, align 4, !tbaa !5
  %430 = call ptr @s2n_strerror(i32 noundef %429, ptr noundef nonnull @.str.4) #10
  %431 = load i32, ptr %181, align 4, !tbaa !5
  %432 = call ptr @s2n_strerror_debug(i32 noundef %431, ptr noundef nonnull @.str.4) #10
  %433 = load i32, ptr %235, align 4, !tbaa !5
  %434 = call ptr @strerror(i32 noundef %433) #10
  %435 = load i32, ptr %235, align 4, !tbaa !5
  %436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %427, ptr noundef nonnull %.str.5.sink213, i32 noundef %428, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 51, ptr noundef %430, ptr noundef %432, ptr noundef %434, i32 noundef %435) #12
  call void @exit(i32 noundef 1) #13
  unreachable

437:                                              ; preds = %412
  %438 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %439 = icmp eq i32 %438, -1
  br i1 %439, label %440, label %462

440:                                              ; preds = %437
  %441 = load i32, ptr %235, align 4, !tbaa !5
  %442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %443 = call i32 @s2n_print_stacktrace(ptr noundef %442) #10
  %444 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %445 = trunc nuw i8 %444 to i1
  br i1 %445, label %446, label %450

446:                                              ; preds = %440
  %447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %448 = call i32 @fileno(ptr noundef %447) #10
  %449 = call i32 @isatty(i32 noundef %448) #10
  %.not58 = icmp eq i32 %449, 0
  br i1 %.not58, label %450, label %451

450:                                              ; preds = %446, %440
  br label %451

451:                                              ; preds = %446, %450
  %.str.5.sink222 = phi ptr [ @.str.5, %450 ], [ @.str.2, %446 ]
  store i32 %441, ptr %235, align 4, !tbaa !5
  %452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %453 = load i32, ptr @test_count, align 4, !tbaa !5
  %454 = load i32, ptr %181, align 4, !tbaa !5
  %455 = call ptr @s2n_strerror(i32 noundef %454, ptr noundef nonnull @.str.4) #10
  %456 = load i32, ptr %181, align 4, !tbaa !5
  %457 = call ptr @s2n_strerror_debug(i32 noundef %456, ptr noundef nonnull @.str.4) #10
  %458 = load i32, ptr %235, align 4, !tbaa !5
  %459 = call ptr @strerror(i32 noundef %458) #10
  %460 = load i32, ptr %235, align 4, !tbaa !5
  %461 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %452, ptr noundef nonnull %.str.5.sink222, i32 noundef %453, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 51, ptr noundef %455, ptr noundef %457, ptr noundef %459, i32 noundef %460) #12
  call void @exit(i32 noundef 1) #13
  unreachable

462:                                              ; preds = %437
  %463 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %465, label %476

465:                                              ; preds = %462
  %466 = load ptr, ptr @stdout, align 8, !tbaa !9
  %467 = call i32 @fileno(ptr noundef %466) #10
  %468 = call i32 @isatty(i32 noundef %467) #10
  %.not55 = icmp eq i32 %468, 0
  br i1 %.not55, label %476, label %469

469:                                              ; preds = %465
  %470 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not57 = icmp eq i32 %470, 0
  %471 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not57, label %474, label %472

472:                                              ; preds = %469
  %473 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %471, ptr noundef nonnull @.str.22, i32 noundef %470) #10
  br label %483

474:                                              ; preds = %469
  %475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %471, ptr noundef nonnull @.str.23) #10
  br label %483

476:                                              ; preds = %465, %462
  %477 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not56 = icmp eq i32 %477, 0
  %478 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not56, label %481, label %479

479:                                              ; preds = %476
  %480 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %478, ptr noundef nonnull @.str.24, i32 noundef %477) #10
  br label %483

481:                                              ; preds = %476
  %482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %478, ptr noundef nonnull @.str.25) #10
  br label %483

483:                                              ; preds = %479, %481, %472, %474
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %3) #10
  ret i32 0
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

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

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

declare void @s2n_debug_info_reset() local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #8

declare ptr @s2n_connection_get_cipher(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #9

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

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

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


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