; LLVM IR from aws/s2n-tls :: tests/unit (s2n_pq_mlkem_policies_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_security_policy_selection = type { ptr, ptr, i8 }
%struct.s2n_debug_info = type { ptr, ptr }
%struct.s2n_result = 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_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
@mlkem_list = external dso_local global [1 x ptr], align 8
@legacy_cipher_suites = external dso_local global [7 x ptr], align 16
@cipher_exceptions = external dso_local global [1 x ptr], align 8
@tls_version_exceptions = external dso_local global [1 x ptr], align 8
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [85 x i8], align 1
@stderr = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@security_policy_selection = external global [0 x %struct.s2n_security_policy_selection], align 8
@.str.9 = external hidden unnamed_addr constant [110 x i8], align 1
@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@.str.10 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.26 = 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 i64, align 8
  %10 = alloca i32, align 4
  %11 = alloca %struct.s2n_security_policy_selection, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i8, align 1
  %15 = alloca %struct.s2n_result, align 4
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca i64, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca %struct.s2n_result, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca %struct.s2n_result, align 4
  %29 = alloca i32, align 4
  %30 = alloca i8, align 1
  %31 = alloca %struct.s2n_result, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = 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 %36

36:                                               ; preds = %2
  br label %37

37:                                               ; preds = %36
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %38 = load ptr, ptr @stdout, align 8, !tbaa !9
  %39 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %38, ptr noundef @.str.1, ptr noundef @.str.2) #10
  %40 = load ptr, ptr @stdout, align 8, !tbaa !9
  %41 = call i32 @fflush(ptr noundef %40)
  br label %42

42:                                               ; preds = %37
  %43 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %44 = icmp eq i32 %43, -1
  br i1 %44, label %45, label %96

45:                                               ; preds = %42
  br label %46

46:                                               ; preds = %45
  br label %47

47:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  %48 = call ptr @__errno_location() #11
  %49 = load i32, ptr %48, align 4, !tbaa !5
  store i32 %49, ptr %6, align 4, !tbaa !5
  %50 = load ptr, ptr @stderr, align 8, !tbaa !9
  %51 = call i32 @s2n_print_stacktrace(ptr noundef %50)
  %52 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %53 = trunc i8 %52 to i1
  br i1 %53, label %54, label %76

54:                                               ; preds = %47
  %55 = load ptr, ptr @stderr, align 8, !tbaa !9
  %56 = call i32 @fileno(ptr noundef %55) #10
  %57 = call i32 @isatty(i32 noundef %56) #10
  %58 = icmp ne i32 %57, 0
  br i1 %58, label %59, label %76

59:                                               ; preds = %54
  %60 = load i32, ptr %6, align 4, !tbaa !5
  %61 = call ptr @__errno_location() #11
  store i32 %60, ptr %61, align 4, !tbaa !5
  %62 = load ptr, ptr @stderr, align 8, !tbaa !9
  %63 = load i32, ptr @test_count, align 4, !tbaa !5
  %64 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %65 = load i32, ptr %64, align 4, !tbaa !5
  %66 = call ptr @s2n_strerror(i32 noundef %65, ptr noundef @.str.5)
  %67 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %68 = load i32, ptr %67, align 4, !tbaa !5
  %69 = call ptr @s2n_strerror_debug(i32 noundef %68, ptr noundef @.str.5)
  %70 = call ptr @__errno_location() #11
  %71 = load i32, ptr %70, align 4, !tbaa !5
  %72 = call ptr @strerror(i32 noundef %71) #10
  %73 = call ptr @__errno_location() #11
  %74 = load i32, ptr %73, align 4, !tbaa !5
  %75 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef @.str.3, i32 noundef %63, ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 122, ptr noundef %66, ptr noundef %69, ptr noundef %72, i32 noundef %74) #10
  br label %93

76:                                               ; preds = %54, %47
  %77 = load i32, ptr %6, align 4, !tbaa !5
  %78 = call ptr @__errno_location() #11
  store i32 %77, ptr %78, align 4, !tbaa !5
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = load i32, ptr @test_count, align 4, !tbaa !5
  %81 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = call ptr @s2n_strerror(i32 noundef %82, ptr noundef @.str.5)
  %84 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = call ptr @s2n_strerror_debug(i32 noundef %85, ptr noundef @.str.5)
  %87 = call ptr @__errno_location() #11
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call ptr @strerror(i32 noundef %88) #10
  %90 = call ptr @__errno_location() #11
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef @.str.6, i32 noundef %80, ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 122, ptr noundef %83, ptr noundef %86, ptr noundef %89, i32 noundef %91) #10
  br label %93

93:                                               ; preds = %76, %59
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %94

94:                                               ; preds = %93
  call void @exit(i32 noundef 1) #12
  unreachable

95:                                               ; No predecessors!
  br label %96

96:                                               ; preds = %95, %42
  br label %97

97:                                               ; preds = %96
  br label %98

98:                                               ; preds = %97
  %99 = load i32, ptr @test_count, align 4, !tbaa !5
  %100 = add nsw i32 %99, 1
  store i32 %100, ptr @test_count, align 4, !tbaa !5
  %101 = call i32 @s2n_enable_atexit()
  %102 = icmp eq i32 %101, -1
  br i1 %102, label %103, label %154

103:                                              ; preds = %98
  br label %104

104:                                              ; preds = %103
  br label %105

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %106 = call ptr @__errno_location() #11
  %107 = load i32, ptr %106, align 4, !tbaa !5
  store i32 %107, ptr %7, align 4, !tbaa !5
  %108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %109 = call i32 @s2n_print_stacktrace(ptr noundef %108)
  %110 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %111 = trunc i8 %110 to i1
  br i1 %111, label %112, label %134

112:                                              ; preds = %105
  %113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %114 = call i32 @fileno(ptr noundef %113) #10
  %115 = call i32 @isatty(i32 noundef %114) #10
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %134

117:                                              ; preds = %112
  %118 = load i32, ptr %7, align 4, !tbaa !5
  %119 = call ptr @__errno_location() #11
  store i32 %118, ptr %119, align 4, !tbaa !5
  %120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %121 = load i32, ptr @test_count, align 4, !tbaa !5
  %122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %123 = load i32, ptr %122, align 4, !tbaa !5
  %124 = call ptr @s2n_strerror(i32 noundef %123, ptr noundef @.str.5)
  %125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %126 = load i32, ptr %125, align 4, !tbaa !5
  %127 = call ptr @s2n_strerror_debug(i32 noundef %126, ptr noundef @.str.5)
  %128 = call ptr @__errno_location() #11
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %130 = call ptr @strerror(i32 noundef %129) #10
  %131 = call ptr @__errno_location() #11
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %120, ptr noundef @.str.3, i32 noundef %121, ptr noundef @.str.7, ptr noundef @.str.2, i32 noundef 122, ptr noundef %124, ptr noundef %127, ptr noundef %130, i32 noundef %132) #10
  br label %151

134:                                              ; preds = %112, %105
  %135 = load i32, ptr %7, align 4, !tbaa !5
  %136 = call ptr @__errno_location() #11
  store i32 %135, ptr %136, align 4, !tbaa !5
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = load i32, ptr @test_count, align 4, !tbaa !5
  %139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = call ptr @s2n_strerror(i32 noundef %140, ptr noundef @.str.5)
  %142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = call ptr @s2n_strerror_debug(i32 noundef %143, ptr noundef @.str.5)
  %145 = call ptr @__errno_location() #11
  %146 = load i32, ptr %145, align 4, !tbaa !5
  %147 = call ptr @strerror(i32 noundef %146) #10
  %148 = call ptr @__errno_location() #11
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %137, ptr noundef @.str.6, i32 noundef %138, ptr noundef @.str.7, ptr noundef @.str.2, i32 noundef 122, ptr noundef %141, ptr noundef %144, ptr noundef %147, i32 noundef %149) #10
  br label %151

151:                                              ; preds = %134, %117
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %152

152:                                              ; preds = %151
  call void @exit(i32 noundef 1) #12
  unreachable

153:                                              ; No predecessors!
  br label %154

154:                                              ; preds = %153, %98
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  br label %157

157:                                              ; preds = %156
  %158 = call i32 @s2n_init()
  %159 = icmp eq i32 %158, -1
  br i1 %159, label %160, label %211

160:                                              ; preds = %157
  br label %161

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %163 = call ptr @__errno_location() #11
  %164 = load i32, ptr %163, align 4, !tbaa !5
  store i32 %164, ptr %8, align 4, !tbaa !5
  %165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %166 = call i32 @s2n_print_stacktrace(ptr noundef %165)
  %167 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %168 = trunc i8 %167 to i1
  br i1 %168, label %169, label %191

169:                                              ; preds = %162
  %170 = load ptr, ptr @stderr, align 8, !tbaa !9
  %171 = call i32 @fileno(ptr noundef %170) #10
  %172 = call i32 @isatty(i32 noundef %171) #10
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %191

174:                                              ; preds = %169
  %175 = load i32, ptr %8, align 4, !tbaa !5
  %176 = call ptr @__errno_location() #11
  store i32 %175, ptr %176, align 4, !tbaa !5
  %177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %178 = load i32, ptr @test_count, align 4, !tbaa !5
  %179 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %180 = load i32, ptr %179, align 4, !tbaa !5
  %181 = call ptr @s2n_strerror(i32 noundef %180, ptr noundef @.str.5)
  %182 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %183 = load i32, ptr %182, align 4, !tbaa !5
  %184 = call ptr @s2n_strerror_debug(i32 noundef %183, ptr noundef @.str.5)
  %185 = call ptr @__errno_location() #11
  %186 = load i32, ptr %185, align 4, !tbaa !5
  %187 = call ptr @strerror(i32 noundef %186) #10
  %188 = call ptr @__errno_location() #11
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %177, ptr noundef @.str.3, i32 noundef %178, ptr noundef @.str.8, ptr noundef @.str.2, i32 noundef 122, ptr noundef %181, ptr noundef %184, ptr noundef %187, i32 noundef %189) #10
  br label %208

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

208:                                              ; preds = %191, %174
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %209

209:                                              ; preds = %208
  call void @exit(i32 noundef 1) #12
  unreachable

210:                                              ; No predecessors!
  br label %211

211:                                              ; preds = %210, %157
  br label %212

212:                                              ; preds = %211
  br label %213

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

214:                                              ; preds = %883, %213
  %215 = load i64, ptr %9, align 8, !tbaa !15
  %216 = getelementptr inbounds [0 x %struct.s2n_security_policy_selection], ptr @security_policy_selection, i64 0, i64 %215
  %217 = getelementptr inbounds %struct.s2n_security_policy_selection, ptr %216, i32 0, i32 0
  %218 = load ptr, ptr %217, align 8, !tbaa !17
  %219 = icmp ne ptr %218, null
  br i1 %219, label %221, label %220

220:                                              ; preds = %214
  store i32 24, ptr %10, align 4
  br label %886

221:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #10
  %222 = load i64, ptr %9, align 8, !tbaa !15
  %223 = getelementptr inbounds [0 x %struct.s2n_security_policy_selection], ptr @security_policy_selection, i64 0, i64 %222
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %11, ptr align 8 %223, i64 24, i1 false), !tbaa.struct !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %224 = getelementptr inbounds %struct.s2n_security_policy_selection, ptr %11, i32 0, i32 0
  %225 = load ptr, ptr %224, align 8, !tbaa !17
  store ptr %225, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  %226 = getelementptr inbounds %struct.s2n_security_policy_selection, ptr %11, i32 0, i32 1
  %227 = load ptr, ptr %226, align 8, !tbaa !21
  store ptr %227, ptr %13, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %221
  %229 = load ptr, ptr %13, align 8, !tbaa !9
  %230 = icmp ne ptr %229, null
  br i1 %230, label %264, label %231

231:                                              ; preds = %228
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232
  %234 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %235 = getelementptr inbounds %struct.s2n_debug_info, ptr %234, i32 0, i32 0
  store ptr @.str.9, ptr %235, align 8, !tbaa !22
  %236 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %237 = getelementptr inbounds %struct.s2n_debug_info, ptr %236, i32 0, i32 0
  %238 = load ptr, ptr %237, align 8, !tbaa !22
  %239 = getelementptr inbounds i8, ptr %238, i64 21
  %240 = call ptr @strrchr(ptr noundef %239, i32 noundef 47) #13
  %241 = icmp ne ptr %240, null
  br i1 %241, label %242, label %249

242:                                              ; preds = %233
  %243 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %244 = getelementptr inbounds %struct.s2n_debug_info, ptr %243, i32 0, i32 0
  %245 = load ptr, ptr %244, align 8, !tbaa !22
  %246 = getelementptr inbounds i8, ptr %245, i64 21
  %247 = call ptr @strrchr(ptr noundef %246, i32 noundef 47) #13
  %248 = getelementptr inbounds i8, ptr %247, i64 1
  br label %254

249:                                              ; preds = %233
  %250 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %251 = getelementptr inbounds %struct.s2n_debug_info, ptr %250, i32 0, i32 0
  %252 = load ptr, ptr %251, align 8, !tbaa !22
  %253 = getelementptr inbounds i8, ptr %252, i64 21
  br label %254

254:                                              ; preds = %249, %242
  %255 = phi ptr [ %248, %242 ], [ %253, %249 ]
  %256 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %257 = getelementptr inbounds %struct.s2n_debug_info, ptr %256, i32 0, i32 1
  store ptr %255, ptr %257, align 8, !tbaa !24
  %258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %258, align 4, !tbaa !5
  %259 = call i32 @s2n_calculate_stacktrace()
  br label %260

260:                                              ; preds = %254
  br label %261

261:                                              ; preds = %260
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %880

262:                                              ; No predecessors!
  br label %263

263:                                              ; preds = %262
  br label %264

264:                                              ; preds = %263, %228
  br label %265

265:                                              ; preds = %264
  br label %266

266:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #10
  store i8 0, ptr %14, align 1, !tbaa !11
  br label %267

267:                                              ; preds = %266
  %268 = load i32, ptr @test_count, align 4, !tbaa !5
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr @test_count, align 4, !tbaa !5
  %270 = load ptr, ptr %13, align 8, !tbaa !9
  %271 = call i32 @s2n_policy_has_kem(ptr noundef %270, ptr noundef @mlkem_list, i64 noundef 1, ptr noundef %14)
  %272 = getelementptr inbounds %struct.s2n_result, ptr %15, i32 0, i32 0
  store i32 %271, ptr %272, align 4
  %273 = getelementptr inbounds %struct.s2n_result, ptr %15, i32 0, i32 0
  %274 = load i32, ptr %273, align 4
  %275 = call zeroext i1 @s2n_result_is_ok(i32 %274)
  br i1 %275, label %329, label %276

276:                                              ; preds = %267
  br label %277

277:                                              ; preds = %276
  br label %278

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

285:                                              ; preds = %278
  %286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %287 = call i32 @fileno(ptr noundef %286) #10
  %288 = call i32 @isatty(i32 noundef %287) #10
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %307

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

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

324:                                              ; preds = %307, %290
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  call void @exit(i32 noundef 1) #12
  unreachable

327:                                              ; No predecessors!
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328, %267
  br label %330

330:                                              ; preds = %329
  br label %331

331:                                              ; preds = %330
  %332 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %333 = trunc i8 %332 to i1
  br i1 %333, label %335, label %334

334:                                              ; preds = %331
  store i32 26, ptr %10, align 4
  br label %879

335:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #10
  store i8 0, ptr %17, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  store i64 0, ptr %18, align 8, !tbaa !15
  br label %336

336:                                              ; preds = %361, %335
  %337 = load i64, ptr %18, align 8, !tbaa !15
  %338 = load ptr, ptr %13, align 8, !tbaa !9
  %339 = getelementptr inbounds %struct.s2n_security_policy, ptr %338, i32 0, i32 1
  %340 = load ptr, ptr %339, align 8, !tbaa !25
  %341 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %340, i32 0, i32 0
  %342 = load i16, ptr %341, align 8, !tbaa !27
  %343 = zext i16 %342 to i64
  %344 = icmp ult i64 %337, %343
  br i1 %344, label %346, label %345

345:                                              ; preds = %336
  store i32 39, ptr %10, align 4
  br label %364

346:                                              ; preds = %336
  %347 = load ptr, ptr %13, align 8, !tbaa !9
  %348 = getelementptr inbounds %struct.s2n_security_policy, ptr %347, i32 0, i32 1
  %349 = load ptr, ptr %348, align 8, !tbaa !25
  %350 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %349, i32 0, i32 1
  %351 = load ptr, ptr %350, align 8, !tbaa !30
  %352 = load i64, ptr %18, align 8, !tbaa !15
  %353 = getelementptr inbounds ptr, ptr %351, i64 %352
  %354 = load ptr, ptr %353, align 8, !tbaa !9
  %355 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %354, i32 0, i32 12
  %356 = load i8, ptr %355, align 4, !tbaa !31
  %357 = zext i8 %356 to i32
  %358 = icmp eq i32 %357, 34
  br i1 %358, label %359, label %360

359:                                              ; preds = %346
  store i8 1, ptr %17, align 1, !tbaa !11
  store i32 39, ptr %10, align 4
  br label %364

360:                                              ; preds = %346
  br label %361

361:                                              ; preds = %360
  %362 = load i64, ptr %18, align 8, !tbaa !15
  %363 = add i64 %362, 1
  store i64 %363, ptr %18, align 8, !tbaa !15
  br label %336, !llvm.loop !33

364:                                              ; preds = %359, %345
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  br label %365

365:                                              ; preds = %364
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr @test_count, align 4, !tbaa !5
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr @test_count, align 4, !tbaa !5
  %369 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %370 = trunc i8 %369 to i1
  br i1 %370, label %424, label %371

371:                                              ; preds = %366
  br label %372

372:                                              ; preds = %371
  br label %373

373:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %374 = call ptr @__errno_location() #11
  %375 = load i32, ptr %374, align 4, !tbaa !5
  store i32 %375, ptr %19, align 4, !tbaa !5
  %376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %377 = call i32 @s2n_print_stacktrace(ptr noundef %376)
  %378 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %379 = trunc i8 %378 to i1
  br i1 %379, label %380, label %402

380:                                              ; preds = %373
  %381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %382 = call i32 @fileno(ptr noundef %381) #10
  %383 = call i32 @isatty(i32 noundef %382) #10
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %402

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

402:                                              ; preds = %380, %373
  %403 = load i32, ptr %19, align 4, !tbaa !5
  %404 = call ptr @__errno_location() #11
  store i32 %403, ptr %404, align 4, !tbaa !5
  %405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %406 = load i32, ptr @test_count, align 4, !tbaa !5
  %407 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = call ptr @s2n_strerror(i32 noundef %408, ptr noundef @.str.5)
  %410 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %411 = load i32, ptr %410, align 4, !tbaa !5
  %412 = call ptr @s2n_strerror_debug(i32 noundef %411, ptr noundef @.str.5)
  %413 = call ptr @__errno_location() #11
  %414 = load i32, ptr %413, align 4, !tbaa !5
  %415 = call ptr @strerror(i32 noundef %414) #10
  %416 = call ptr @__errno_location() #11
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %405, ptr noundef @.str.6, i32 noundef %406, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 146, ptr noundef %409, ptr noundef %412, ptr noundef %415, i32 noundef %417) #10
  br label %419

419:                                              ; preds = %402, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420
  call void @exit(i32 noundef 1) #12
  unreachable

422:                                              ; No predecessors!
  br label %423

423:                                              ; preds = %422
  br label %424

424:                                              ; preds = %423, %366
  br label %425

425:                                              ; preds = %424
  br label %426

426:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %427 = load ptr, ptr %13, align 8, !tbaa !9
  %428 = getelementptr inbounds %struct.s2n_security_policy, ptr %427, i32 0, i32 2
  %429 = load ptr, ptr %428, align 8, !tbaa !35
  store ptr %429, ptr %20, align 8, !tbaa !9
  br label %430

430:                                              ; preds = %426
  %431 = load ptr, ptr %20, align 8, !tbaa !9
  %432 = icmp ne ptr %431, null
  br i1 %432, label %466, label %433

433:                                              ; preds = %430
  br label %434

434:                                              ; preds = %433
  br label %435

435:                                              ; preds = %434
  %436 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %437 = getelementptr inbounds %struct.s2n_debug_info, ptr %436, i32 0, i32 0
  store ptr @.str.12, ptr %437, align 8, !tbaa !22
  %438 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %439 = getelementptr inbounds %struct.s2n_debug_info, ptr %438, i32 0, i32 0
  %440 = load ptr, ptr %439, align 8, !tbaa !22
  %441 = getelementptr inbounds i8, ptr %440, i64 21
  %442 = call ptr @strrchr(ptr noundef %441, i32 noundef 47) #13
  %443 = icmp ne ptr %442, null
  br i1 %443, label %444, label %451

444:                                              ; preds = %435
  %445 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %446 = getelementptr inbounds %struct.s2n_debug_info, ptr %445, i32 0, i32 0
  %447 = load ptr, ptr %446, align 8, !tbaa !22
  %448 = getelementptr inbounds i8, ptr %447, i64 21
  %449 = call ptr @strrchr(ptr noundef %448, i32 noundef 47) #13
  %450 = getelementptr inbounds i8, ptr %449, i64 1
  br label %456

451:                                              ; preds = %435
  %452 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %453 = getelementptr inbounds %struct.s2n_debug_info, ptr %452, i32 0, i32 0
  %454 = load ptr, ptr %453, align 8, !tbaa !22
  %455 = getelementptr inbounds i8, ptr %454, i64 21
  br label %456

456:                                              ; preds = %451, %444
  %457 = phi ptr [ %450, %444 ], [ %455, %451 ]
  %458 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %459 = getelementptr inbounds %struct.s2n_debug_info, ptr %458, i32 0, i32 1
  store ptr %457, ptr %459, align 8, !tbaa !24
  %460 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %460, align 4, !tbaa !5
  %461 = call i32 @s2n_calculate_stacktrace()
  br label %462

462:                                              ; preds = %456
  br label %463

463:                                              ; preds = %462
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %10, align 4
  br label %878

464:                                              ; No predecessors!
  br label %465

465:                                              ; preds = %464
  br label %466

466:                                              ; preds = %465, %430
  br label %467

467:                                              ; preds = %466
  br label %468

468:                                              ; preds = %467
  br label %469

469:                                              ; preds = %468
  %470 = load i32, ptr @test_count, align 4, !tbaa !5
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr @test_count, align 4, !tbaa !5
  %472 = load ptr, ptr %20, align 8, !tbaa !9
  %473 = call zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef %472)
  br i1 %473, label %474, label %527

474:                                              ; preds = %469
  br label %475

475:                                              ; preds = %474
  br label %476

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

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

488:                                              ; preds = %483
  %489 = load i32, ptr %21, align 4, !tbaa !5
  %490 = call ptr @__errno_location() #11
  store i32 %489, ptr %490, align 4, !tbaa !5
  %491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %492 = load i32, ptr @test_count, align 4, !tbaa !5
  %493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %494 = load i32, ptr %493, align 4, !tbaa !5
  %495 = call ptr @s2n_strerror(i32 noundef %494, ptr noundef @.str.5)
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = call ptr @s2n_strerror_debug(i32 noundef %497, ptr noundef @.str.5)
  %499 = call ptr @__errno_location() #11
  %500 = load i32, ptr %499, align 4, !tbaa !5
  %501 = call ptr @strerror(i32 noundef %500) #10
  %502 = call ptr @__errno_location() #11
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %491, ptr noundef @.str.3, i32 noundef %492, ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 152, ptr noundef %495, ptr noundef %498, ptr noundef %501, i32 noundef %503) #10
  br label %522

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

522:                                              ; preds = %505, %488
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %523

523:                                              ; preds = %522
  br label %524

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

525:                                              ; No predecessors!
  br label %526

526:                                              ; preds = %525
  br label %527

527:                                              ; preds = %526, %469
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  %530 = load ptr, ptr %13, align 8, !tbaa !9
  %531 = getelementptr inbounds %struct.s2n_security_policy, ptr %530, i32 0, i32 0
  %532 = load i8, ptr %531, align 8, !tbaa !36
  %533 = zext i8 %532 to i32
  %534 = icmp slt i32 %533, 33
  br i1 %534, label %535, label %664

535:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #10
  store i8 0, ptr %22, align 1, !tbaa !11
  br label %536

536:                                              ; preds = %535
  %537 = load i32, ptr @test_count, align 4, !tbaa !5
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr @test_count, align 4, !tbaa !5
  %539 = load ptr, ptr %12, align 8, !tbaa !9
  %540 = call i32 @s2n_policy_in_list(ptr noundef %539, ptr noundef @tls_version_exceptions, i64 noundef 1, ptr noundef %22)
  %541 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  store i32 %540, ptr %541, align 4
  %542 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  %543 = load i32, ptr %542, align 4
  %544 = call zeroext i1 @s2n_result_is_ok(i32 %543)
  br i1 %544, label %598, label %545

545:                                              ; preds = %536
  br label %546

546:                                              ; preds = %545
  br label %547

547:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  %548 = call ptr @__errno_location() #11
  %549 = load i32, ptr %548, align 4, !tbaa !5
  store i32 %549, ptr %24, align 4, !tbaa !5
  %550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %551 = call i32 @s2n_print_stacktrace(ptr noundef %550)
  %552 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %553 = trunc i8 %552 to i1
  br i1 %553, label %554, label %576

554:                                              ; preds = %547
  %555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %556 = call i32 @fileno(ptr noundef %555) #10
  %557 = call i32 @isatty(i32 noundef %556) #10
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %576

559:                                              ; preds = %554
  %560 = load i32, ptr %24, align 4, !tbaa !5
  %561 = call ptr @__errno_location() #11
  store i32 %560, ptr %561, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = load i32, ptr @test_count, align 4, !tbaa !5
  %564 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %565 = load i32, ptr %564, align 4, !tbaa !5
  %566 = call ptr @s2n_strerror(i32 noundef %565, ptr noundef @.str.5)
  %567 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %568 = load i32, ptr %567, align 4, !tbaa !5
  %569 = call ptr @s2n_strerror_debug(i32 noundef %568, ptr noundef @.str.5)
  %570 = call ptr @__errno_location() #11
  %571 = load i32, ptr %570, align 4, !tbaa !5
  %572 = call ptr @strerror(i32 noundef %571) #10
  %573 = call ptr @__errno_location() #11
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %562, ptr noundef @.str.3, i32 noundef %563, ptr noundef @.str.14, ptr noundef @.str.2, i32 noundef 157, ptr noundef %566, ptr noundef %569, ptr noundef %572, i32 noundef %574) #10
  br label %593

576:                                              ; preds = %554, %547
  %577 = load i32, ptr %24, align 4, !tbaa !5
  %578 = call ptr @__errno_location() #11
  store i32 %577, ptr %578, align 4, !tbaa !5
  %579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %580 = load i32, ptr @test_count, align 4, !tbaa !5
  %581 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %582 = load i32, ptr %581, align 4, !tbaa !5
  %583 = call ptr @s2n_strerror(i32 noundef %582, ptr noundef @.str.5)
  %584 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %585 = load i32, ptr %584, align 4, !tbaa !5
  %586 = call ptr @s2n_strerror_debug(i32 noundef %585, ptr noundef @.str.5)
  %587 = call ptr @__errno_location() #11
  %588 = load i32, ptr %587, align 4, !tbaa !5
  %589 = call ptr @strerror(i32 noundef %588) #10
  %590 = call ptr @__errno_location() #11
  %591 = load i32, ptr %590, align 4, !tbaa !5
  %592 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %579, ptr noundef @.str.6, i32 noundef %580, ptr noundef @.str.14, ptr noundef @.str.2, i32 noundef 157, ptr noundef %583, ptr noundef %586, ptr noundef %589, i32 noundef %591) #10
  br label %593

593:                                              ; preds = %576, %559
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %594

594:                                              ; preds = %593
  br label %595

595:                                              ; preds = %594
  call void @exit(i32 noundef 1) #12
  unreachable

596:                                              ; No predecessors!
  br label %597

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597, %536
  br label %599

599:                                              ; preds = %598
  br label %600

600:                                              ; preds = %599
  %601 = load i8, ptr %22, align 1, !tbaa !11, !range !13, !noundef !14
  %602 = trunc i8 %601 to i1
  br i1 %602, label %663, label %603

603:                                              ; preds = %600
  %604 = load ptr, ptr @stdout, align 8, !tbaa !9
  %605 = load ptr, ptr %12, align 8, !tbaa !9
  %606 = load ptr, ptr %13, align 8, !tbaa !9
  %607 = getelementptr inbounds %struct.s2n_security_policy, ptr %606, i32 0, i32 0
  %608 = load i8, ptr %607, align 8, !tbaa !36
  %609 = zext i8 %608 to i32
  %610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %604, ptr noundef @.str.15, ptr noundef %605, i32 noundef %609) #10
  br label %611

611:                                              ; preds = %603
  br label %612

612:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  %613 = call ptr @__errno_location() #11
  %614 = load i32, ptr %613, align 4, !tbaa !5
  store i32 %614, ptr %25, align 4, !tbaa !5
  %615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %616 = call i32 @s2n_print_stacktrace(ptr noundef %615)
  %617 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %618 = trunc i8 %617 to i1
  br i1 %618, label %619, label %641

619:                                              ; preds = %612
  %620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %621 = call i32 @fileno(ptr noundef %620) #10
  %622 = call i32 @isatty(i32 noundef %621) #10
  %623 = icmp ne i32 %622, 0
  br i1 %623, label %624, label %641

624:                                              ; preds = %619
  %625 = load i32, ptr %25, align 4, !tbaa !5
  %626 = call ptr @__errno_location() #11
  store i32 %625, ptr %626, align 4, !tbaa !5
  %627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %628 = load i32, ptr @test_count, align 4, !tbaa !5
  %629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %630 = load i32, ptr %629, align 4, !tbaa !5
  %631 = call ptr @s2n_strerror(i32 noundef %630, ptr noundef @.str.5)
  %632 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %633 = load i32, ptr %632, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror_debug(i32 noundef %633, ptr noundef @.str.5)
  %635 = call ptr @__errno_location() #11
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @strerror(i32 noundef %636) #10
  %638 = call ptr @__errno_location() #11
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %627, ptr noundef @.str.3, i32 noundef %628, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 162, ptr noundef %631, ptr noundef %634, ptr noundef %637, i32 noundef %639) #10
  br label %658

641:                                              ; preds = %619, %612
  %642 = load i32, ptr %25, align 4, !tbaa !5
  %643 = call ptr @__errno_location() #11
  store i32 %642, ptr %643, align 4, !tbaa !5
  %644 = load ptr, ptr @stderr, align 8, !tbaa !9
  %645 = load i32, ptr @test_count, align 4, !tbaa !5
  %646 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %647 = load i32, ptr %646, align 4, !tbaa !5
  %648 = call ptr @s2n_strerror(i32 noundef %647, ptr noundef @.str.5)
  %649 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %650 = load i32, ptr %649, align 4, !tbaa !5
  %651 = call ptr @s2n_strerror_debug(i32 noundef %650, ptr noundef @.str.5)
  %652 = call ptr @__errno_location() #11
  %653 = load i32, ptr %652, align 4, !tbaa !5
  %654 = call ptr @strerror(i32 noundef %653) #10
  %655 = call ptr @__errno_location() #11
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %644, ptr noundef @.str.6, i32 noundef %645, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 162, ptr noundef %648, ptr noundef %651, ptr noundef %654, i32 noundef %656) #10
  br label %658

658:                                              ; preds = %641, %624
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %659

659:                                              ; preds = %658
  br label %660

660:                                              ; preds = %659
  call void @exit(i32 noundef 1) #12
  unreachable

661:                                              ; No predecessors!
  br label %662

662:                                              ; preds = %661
  br label %663

663:                                              ; preds = %662, %600
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #10
  br label %664

664:                                              ; preds = %663, %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %665

665:                                              ; preds = %874, %664
  %666 = load i32, ptr %26, align 4, !tbaa !5
  %667 = sext i32 %666 to i64
  %668 = icmp ult i64 %667, 7
  br i1 %668, label %670, label %669

669:                                              ; preds = %665
  store i32 70, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %877

670:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #10
  store i8 0, ptr %27, align 1, !tbaa !11
  br label %671

671:                                              ; preds = %670
  %672 = load i32, ptr @test_count, align 4, !tbaa !5
  %673 = add nsw i32 %672, 1
  store i32 %673, ptr @test_count, align 4, !tbaa !5
  %674 = load ptr, ptr %13, align 8, !tbaa !9
  %675 = load i32, ptr %26, align 4, !tbaa !5
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds [7 x ptr], ptr @legacy_cipher_suites, i64 0, i64 %676
  %678 = load ptr, ptr %677, align 8, !tbaa !9
  %679 = call i32 @s2n_policy_has_cipher(ptr noundef %674, ptr noundef %678, ptr noundef %27)
  %680 = getelementptr inbounds %struct.s2n_result, ptr %28, i32 0, i32 0
  store i32 %679, ptr %680, align 4
  %681 = getelementptr inbounds %struct.s2n_result, ptr %28, i32 0, i32 0
  %682 = load i32, ptr %681, align 4
  %683 = call zeroext i1 @s2n_result_is_ok(i32 %682)
  br i1 %683, label %737, label %684

684:                                              ; preds = %671
  br label %685

685:                                              ; preds = %684
  br label %686

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

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

698:                                              ; preds = %693
  %699 = load i32, ptr %29, align 4, !tbaa !5
  %700 = call ptr @__errno_location() #11
  store i32 %699, ptr %700, align 4, !tbaa !5
  %701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %702 = load i32, ptr @test_count, align 4, !tbaa !5
  %703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %704 = load i32, ptr %703, align 4, !tbaa !5
  %705 = call ptr @s2n_strerror(i32 noundef %704, ptr noundef @.str.5)
  %706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %707 = load i32, ptr %706, align 4, !tbaa !5
  %708 = call ptr @s2n_strerror_debug(i32 noundef %707, ptr noundef @.str.5)
  %709 = call ptr @__errno_location() #11
  %710 = load i32, ptr %709, align 4, !tbaa !5
  %711 = call ptr @strerror(i32 noundef %710) #10
  %712 = call ptr @__errno_location() #11
  %713 = load i32, ptr %712, align 4, !tbaa !5
  %714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %701, ptr noundef @.str.3, i32 noundef %702, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 169, ptr noundef %705, ptr noundef %708, ptr noundef %711, i32 noundef %713) #10
  br label %732

715:                                              ; preds = %693, %686
  %716 = load i32, ptr %29, align 4, !tbaa !5
  %717 = call ptr @__errno_location() #11
  store i32 %716, ptr %717, align 4, !tbaa !5
  %718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %719 = load i32, ptr @test_count, align 4, !tbaa !5
  %720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %721 = load i32, ptr %720, align 4, !tbaa !5
  %722 = call ptr @s2n_strerror(i32 noundef %721, ptr noundef @.str.5)
  %723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %724 = load i32, ptr %723, align 4, !tbaa !5
  %725 = call ptr @s2n_strerror_debug(i32 noundef %724, ptr noundef @.str.5)
  %726 = call ptr @__errno_location() #11
  %727 = load i32, ptr %726, align 4, !tbaa !5
  %728 = call ptr @strerror(i32 noundef %727) #10
  %729 = call ptr @__errno_location() #11
  %730 = load i32, ptr %729, align 4, !tbaa !5
  %731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %718, ptr noundef @.str.6, i32 noundef %719, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 169, ptr noundef %722, ptr noundef %725, ptr noundef %728, i32 noundef %730) #10
  br label %732

732:                                              ; preds = %715, %698
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %733

733:                                              ; preds = %732
  br label %734

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

735:                                              ; No predecessors!
  br label %736

736:                                              ; preds = %735
  br label %737

737:                                              ; preds = %736, %671
  br label %738

738:                                              ; preds = %737
  br label %739

739:                                              ; preds = %738
  %740 = load i8, ptr %27, align 1, !tbaa !11, !range !13, !noundef !14
  %741 = trunc i8 %740 to i1
  br i1 %741, label %742, label %873

742:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #10
  store i8 0, ptr %30, align 1, !tbaa !11
  br label %743

743:                                              ; preds = %742
  %744 = load i32, ptr @test_count, align 4, !tbaa !5
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr @test_count, align 4, !tbaa !5
  %746 = load ptr, ptr %12, align 8, !tbaa !9
  %747 = call i32 @s2n_policy_in_list(ptr noundef %746, ptr noundef @cipher_exceptions, i64 noundef 1, ptr noundef %30)
  %748 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %747, ptr %748, align 4
  %749 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  %750 = load i32, ptr %749, align 4
  %751 = call zeroext i1 @s2n_result_is_ok(i32 %750)
  br i1 %751, label %805, label %752

752:                                              ; preds = %743
  br label %753

753:                                              ; preds = %752
  br label %754

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

761:                                              ; preds = %754
  %762 = load ptr, ptr @stderr, align 8, !tbaa !9
  %763 = call i32 @fileno(ptr noundef %762) #10
  %764 = call i32 @isatty(i32 noundef %763) #10
  %765 = icmp ne i32 %764, 0
  br i1 %765, label %766, label %783

766:                                              ; preds = %761
  %767 = load i32, ptr %32, align 4, !tbaa !5
  %768 = call ptr @__errno_location() #11
  store i32 %767, ptr %768, align 4, !tbaa !5
  %769 = load ptr, ptr @stderr, align 8, !tbaa !9
  %770 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %772, ptr noundef @.str.5)
  %774 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %775 = load i32, ptr %774, align 4, !tbaa !5
  %776 = call ptr @s2n_strerror_debug(i32 noundef %775, ptr noundef @.str.5)
  %777 = call ptr @__errno_location() #11
  %778 = load i32, ptr %777, align 4, !tbaa !5
  %779 = call ptr @strerror(i32 noundef %778) #10
  %780 = call ptr @__errno_location() #11
  %781 = load i32, ptr %780, align 4, !tbaa !5
  %782 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %769, ptr noundef @.str.3, i32 noundef %770, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 173, ptr noundef %773, ptr noundef %776, ptr noundef %779, i32 noundef %781) #10
  br label %800

783:                                              ; preds = %761, %754
  %784 = load i32, ptr %32, align 4, !tbaa !5
  %785 = call ptr @__errno_location() #11
  store i32 %784, ptr %785, align 4, !tbaa !5
  %786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %787 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %789, ptr noundef @.str.5)
  %791 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %792 = load i32, ptr %791, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror_debug(i32 noundef %792, ptr noundef @.str.5)
  %794 = call ptr @__errno_location() #11
  %795 = load i32, ptr %794, align 4, !tbaa !5
  %796 = call ptr @strerror(i32 noundef %795) #10
  %797 = call ptr @__errno_location() #11
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %786, ptr noundef @.str.6, i32 noundef %787, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 173, ptr noundef %790, ptr noundef %793, ptr noundef %796, i32 noundef %798) #10
  br label %800

800:                                              ; preds = %783, %766
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %801

801:                                              ; preds = %800
  br label %802

802:                                              ; preds = %801
  call void @exit(i32 noundef 1) #12
  unreachable

803:                                              ; No predecessors!
  br label %804

804:                                              ; preds = %803
  br label %805

805:                                              ; preds = %804, %743
  br label %806

806:                                              ; preds = %805
  br label %807

807:                                              ; preds = %806
  %808 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %809 = trunc i8 %808 to i1
  br i1 %809, label %872, label %810

810:                                              ; preds = %807
  %811 = load ptr, ptr @stdout, align 8, !tbaa !9
  %812 = load ptr, ptr %12, align 8, !tbaa !9
  %813 = load i32, ptr %26, align 4, !tbaa !5
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds [7 x ptr], ptr @legacy_cipher_suites, i64 0, i64 %814
  %816 = load ptr, ptr %815, align 8, !tbaa !9
  %817 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %816, i32 0, i32 1
  %818 = load ptr, ptr %817, align 8, !tbaa !37
  %819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %811, ptr noundef @.str.19, ptr noundef %812, ptr noundef %818) #10
  br label %820

820:                                              ; preds = %810
  br label %821

821:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  %822 = call ptr @__errno_location() #11
  %823 = load i32, ptr %822, align 4, !tbaa !5
  store i32 %823, ptr %33, align 4, !tbaa !5
  %824 = load ptr, ptr @stderr, align 8, !tbaa !9
  %825 = call i32 @s2n_print_stacktrace(ptr noundef %824)
  %826 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %827 = trunc i8 %826 to i1
  br i1 %827, label %828, label %850

828:                                              ; preds = %821
  %829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %830 = call i32 @fileno(ptr noundef %829) #10
  %831 = call i32 @isatty(i32 noundef %830) #10
  %832 = icmp ne i32 %831, 0
  br i1 %832, label %833, label %850

833:                                              ; preds = %828
  %834 = load i32, ptr %33, align 4, !tbaa !5
  %835 = call ptr @__errno_location() #11
  store i32 %834, ptr %835, align 4, !tbaa !5
  %836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %837 = load i32, ptr @test_count, align 4, !tbaa !5
  %838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = call ptr @s2n_strerror(i32 noundef %839, ptr noundef @.str.5)
  %841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %842 = load i32, ptr %841, align 4, !tbaa !5
  %843 = call ptr @s2n_strerror_debug(i32 noundef %842, ptr noundef @.str.5)
  %844 = call ptr @__errno_location() #11
  %845 = load i32, ptr %844, align 4, !tbaa !5
  %846 = call ptr @strerror(i32 noundef %845) #10
  %847 = call ptr @__errno_location() #11
  %848 = load i32, ptr %847, align 4, !tbaa !5
  %849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %836, ptr noundef @.str.3, i32 noundef %837, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 178, ptr noundef %840, ptr noundef %843, ptr noundef %846, i32 noundef %848) #10
  br label %867

850:                                              ; preds = %828, %821
  %851 = load i32, ptr %33, align 4, !tbaa !5
  %852 = call ptr @__errno_location() #11
  store i32 %851, ptr %852, align 4, !tbaa !5
  %853 = load ptr, ptr @stderr, align 8, !tbaa !9
  %854 = load i32, ptr @test_count, align 4, !tbaa !5
  %855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %856 = load i32, ptr %855, align 4, !tbaa !5
  %857 = call ptr @s2n_strerror(i32 noundef %856, ptr noundef @.str.5)
  %858 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %859 = load i32, ptr %858, align 4, !tbaa !5
  %860 = call ptr @s2n_strerror_debug(i32 noundef %859, ptr noundef @.str.5)
  %861 = call ptr @__errno_location() #11
  %862 = load i32, ptr %861, align 4, !tbaa !5
  %863 = call ptr @strerror(i32 noundef %862) #10
  %864 = call ptr @__errno_location() #11
  %865 = load i32, ptr %864, align 4, !tbaa !5
  %866 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %853, ptr noundef @.str.6, i32 noundef %854, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 178, ptr noundef %857, ptr noundef %860, ptr noundef %863, i32 noundef %865) #10
  br label %867

867:                                              ; preds = %850, %833
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %868

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  call void @exit(i32 noundef 1) #12
  unreachable

870:                                              ; No predecessors!
  br label %871

871:                                              ; preds = %870
  br label %872

872:                                              ; preds = %871, %807
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #10
  br label %873

873:                                              ; preds = %872, %739
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #10
  br label %874

874:                                              ; preds = %873
  %875 = load i32, ptr %26, align 4, !tbaa !5
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %26, align 4, !tbaa !5
  br label %665, !llvm.loop !38

877:                                              ; preds = %669
  store i32 0, ptr %10, align 4
  br label %878

878:                                              ; preds = %877, %463
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #10
  br label %879

879:                                              ; preds = %878, %334
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #10
  br label %880

880:                                              ; preds = %879, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #10
  %881 = load i32, ptr %10, align 4
  switch i32 %881, label %886 [
    i32 0, label %882
    i32 26, label %883
  ]

882:                                              ; preds = %880
  br label %883

883:                                              ; preds = %882, %880
  %884 = load i64, ptr %9, align 8, !tbaa !15
  %885 = add i64 %884, 1
  store i64 %885, ptr %9, align 8, !tbaa !15
  br label %214, !llvm.loop !39

886:                                              ; preds = %880, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  %887 = load i32, ptr %10, align 4
  switch i32 %887, label %1036 [
    i32 24, label %888
    i32 1, label %1034
  ]

888:                                              ; preds = %886
  br label %889

889:                                              ; preds = %888
  br label %890

890:                                              ; preds = %889
  %891 = call i32 @s2n_cleanup()
  %892 = icmp eq i32 %891, -1
  br i1 %892, label %893, label %944

893:                                              ; preds = %890
  br label %894

894:                                              ; preds = %893
  br label %895

895:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  %896 = call ptr @__errno_location() #11
  %897 = load i32, ptr %896, align 4, !tbaa !5
  store i32 %897, ptr %34, align 4, !tbaa !5
  %898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %899 = call i32 @s2n_print_stacktrace(ptr noundef %898)
  %900 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %901 = trunc i8 %900 to i1
  br i1 %901, label %902, label %924

902:                                              ; preds = %895
  %903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %904 = call i32 @fileno(ptr noundef %903) #10
  %905 = call i32 @isatty(i32 noundef %904) #10
  %906 = icmp ne i32 %905, 0
  br i1 %906, label %907, label %924

907:                                              ; preds = %902
  %908 = load i32, ptr %34, align 4, !tbaa !5
  %909 = call ptr @__errno_location() #11
  store i32 %908, ptr %909, align 4, !tbaa !5
  %910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %911 = load i32, ptr @test_count, align 4, !tbaa !5
  %912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call ptr @s2n_strerror(i32 noundef %913, ptr noundef @.str.5)
  %915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %916 = load i32, ptr %915, align 4, !tbaa !5
  %917 = call ptr @s2n_strerror_debug(i32 noundef %916, ptr noundef @.str.5)
  %918 = call ptr @__errno_location() #11
  %919 = load i32, ptr %918, align 4, !tbaa !5
  %920 = call ptr @strerror(i32 noundef %919) #10
  %921 = call ptr @__errno_location() #11
  %922 = load i32, ptr %921, align 4, !tbaa !5
  %923 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %910, ptr noundef @.str.3, i32 noundef %911, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 184, ptr noundef %914, ptr noundef %917, ptr noundef %920, i32 noundef %922) #10
  br label %941

924:                                              ; preds = %902, %895
  %925 = load i32, ptr %34, align 4, !tbaa !5
  %926 = call ptr @__errno_location() #11
  store i32 %925, ptr %926, align 4, !tbaa !5
  %927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %928 = load i32, ptr @test_count, align 4, !tbaa !5
  %929 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %930 = load i32, ptr %929, align 4, !tbaa !5
  %931 = call ptr @s2n_strerror(i32 noundef %930, ptr noundef @.str.5)
  %932 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %933 = load i32, ptr %932, align 4, !tbaa !5
  %934 = call ptr @s2n_strerror_debug(i32 noundef %933, ptr noundef @.str.5)
  %935 = call ptr @__errno_location() #11
  %936 = load i32, ptr %935, align 4, !tbaa !5
  %937 = call ptr @strerror(i32 noundef %936) #10
  %938 = call ptr @__errno_location() #11
  %939 = load i32, ptr %938, align 4, !tbaa !5
  %940 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %927, ptr noundef @.str.6, i32 noundef %928, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 184, ptr noundef %931, ptr noundef %934, ptr noundef %937, i32 noundef %939) #10
  br label %941

941:                                              ; preds = %924, %907
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %942

942:                                              ; preds = %941
  call void @exit(i32 noundef 1) #12
  unreachable

943:                                              ; No predecessors!
  br label %944

944:                                              ; preds = %943, %890
  br label %945

945:                                              ; preds = %944
  br label %946

946:                                              ; preds = %945
  br label %947

947:                                              ; preds = %946
  %948 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %949 = icmp eq i32 %948, -1
  br i1 %949, label %950, label %1001

950:                                              ; preds = %947
  br label %951

951:                                              ; preds = %950
  br label %952

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

959:                                              ; preds = %952
  %960 = load ptr, ptr @stderr, align 8, !tbaa !9
  %961 = call i32 @fileno(ptr noundef %960) #10
  %962 = call i32 @isatty(i32 noundef %961) #10
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %964, label %981

964:                                              ; preds = %959
  %965 = load i32, ptr %35, align 4, !tbaa !5
  %966 = call ptr @__errno_location() #11
  store i32 %965, ptr %966, align 4, !tbaa !5
  %967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %968 = load i32, ptr @test_count, align 4, !tbaa !5
  %969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call ptr @s2n_strerror(i32 noundef %970, ptr noundef @.str.5)
  %972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call ptr @s2n_strerror_debug(i32 noundef %973, ptr noundef @.str.5)
  %975 = call ptr @__errno_location() #11
  %976 = load i32, ptr %975, align 4, !tbaa !5
  %977 = call ptr @strerror(i32 noundef %976) #10
  %978 = call ptr @__errno_location() #11
  %979 = load i32, ptr %978, align 4, !tbaa !5
  %980 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %967, ptr noundef @.str.3, i32 noundef %968, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 184, ptr noundef %971, ptr noundef %974, ptr noundef %977, i32 noundef %979) #10
  br label %998

981:                                              ; preds = %959, %952
  %982 = load i32, ptr %35, align 4, !tbaa !5
  %983 = call ptr @__errno_location() #11
  store i32 %982, ptr %983, align 4, !tbaa !5
  %984 = load ptr, ptr @stderr, align 8, !tbaa !9
  %985 = load i32, ptr @test_count, align 4, !tbaa !5
  %986 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call ptr @s2n_strerror(i32 noundef %987, ptr noundef @.str.5)
  %989 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = call ptr @s2n_strerror_debug(i32 noundef %990, ptr noundef @.str.5)
  %992 = call ptr @__errno_location() #11
  %993 = load i32, ptr %992, align 4, !tbaa !5
  %994 = call ptr @strerror(i32 noundef %993) #10
  %995 = call ptr @__errno_location() #11
  %996 = load i32, ptr %995, align 4, !tbaa !5
  %997 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %984, ptr noundef @.str.6, i32 noundef %985, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 184, ptr noundef %988, ptr noundef %991, ptr noundef %994, i32 noundef %996) #10
  br label %998

998:                                              ; preds = %981, %964
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %999

999:                                              ; preds = %998
  call void @exit(i32 noundef 1) #12
  unreachable

1000:                                             ; No predecessors!
  br label %1001

1001:                                             ; preds = %1000, %947
  br label %1002

1002:                                             ; preds = %1001
  %1003 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1004 = trunc i8 %1003 to i1
  br i1 %1004, label %1005, label %1021

1005:                                             ; preds = %1002
  %1006 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1007 = call i32 @fileno(ptr noundef %1006) #10
  %1008 = call i32 @isatty(i32 noundef %1007) #10
  %1009 = icmp ne i32 %1008, 0
  br i1 %1009, label %1010, label %1021

1010:                                             ; preds = %1005
  %1011 = load i32, ptr @test_count, align 4, !tbaa !5
  %1012 = icmp ne i32 %1011, 0
  br i1 %1012, label %1013, label %1017

1013:                                             ; preds = %1010
  %1014 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1015 = load i32, ptr @test_count, align 4, !tbaa !5
  %1016 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1014, ptr noundef @.str.23, i32 noundef %1015) #10
  br label %1020

1017:                                             ; preds = %1010
  %1018 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1019 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1018, ptr noundef @.str.24) #10
  br label %1020

1020:                                             ; preds = %1017, %1013
  br label %1032

1021:                                             ; preds = %1005, %1002
  %1022 = load i32, ptr @test_count, align 4, !tbaa !5
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1024, label %1028

1024:                                             ; preds = %1021
  %1025 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1026 = load i32, ptr @test_count, align 4, !tbaa !5
  %1027 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1025, ptr noundef @.str.25, i32 noundef %1026) #10
  br label %1031

1028:                                             ; preds = %1021
  %1029 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1030 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1029, ptr noundef @.str.26) #10
  br label %1031

1031:                                             ; preds = %1028, %1024
  br label %1032

1032:                                             ; preds = %1031, %1020
  store i32 0, ptr %3, align 4
  br label %1034

1033:                                             ; No predecessors!
  br label %1034

1034:                                             ; preds = %1033, %1032, %886
  %1035 = load i32, ptr %3, align 4
  ret i32 %1035

1036:                                             ; preds = %886
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

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

declare i32 @s2n_calculate_stacktrace() #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @s2n_result_is_ok(i32) #9

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_policy_has_kem(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #0

declare zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_policy_in_list(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_policy_has_cipher(ptr noundef, ptr noundef, ptr noundef) #0

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: readwrite) }
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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { noreturn nounwind }
attributes #13 = { 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, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!18, !10, i64 0}
!18 = !{!"s2n_security_policy_selection", !10, i64 0, !10, i64 8, !6, i64 16, !6, i64 16, !6, i64 16}
!19 = !{i64 0, i64 8, !9, i64 8, i64 8, !9, i64 16, i64 1, !20}
!20 = !{!7, !7, i64 0}
!21 = !{!18, !10, i64 8}
!22 = !{!23, !10, i64 0}
!23 = !{!"s2n_debug_info", !10, i64 0, !10, i64 8}
!24 = !{!23, !10, i64 8}
!25 = !{!26, !10, i64 8}
!26 = !{!"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}
!27 = !{!28, !29, i64 0}
!28 = !{!"s2n_cipher_preferences", !29, i64 0, !10, i64 8, !12, i64 16}
!29 = !{!"short", !7, i64 0}
!30 = !{!28, !10, i64 8}
!31 = !{!32, !7, i64 100}
!32 = !{!"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}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!26, !10, i64 16}
!36 = !{!26, !7, i64 0}
!37 = !{!32, !10, i64 8}
!38 = distinct !{!38, !34}
!39 = distinct !{!39, !34}


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

%struct.s2n_security_policy_selection = type { ptr, ptr, i8 }
%struct.s2n_debug_info = type { ptr, ptr }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@mlkem_list = external dso_local global [1 x ptr], align 8
@legacy_cipher_suites = external dso_local local_unnamed_addr global [7 x ptr], align 16
@cipher_exceptions = external dso_local global [1 x ptr], align 8
@tls_version_exceptions = external dso_local global [1 x ptr], align 8
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [85 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@security_policy_selection = external local_unnamed_addr global [0 x %struct.s2n_security_policy_selection], align 8
@.str.9 = external hidden unnamed_addr constant [110 x i8], align 1
@_s2n_debug_info = external thread_local local_unnamed_addr global %struct.s2n_debug_info, align 8
@.str.10 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [110 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [132 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

20:                                               ; preds = %13
  %21 = load ptr, ptr @stderr, align 8, !tbaa !9
  %22 = tail call i32 @fileno(ptr noundef %21) #10
  %23 = tail call i32 @isatty(i32 noundef %22) #10
  %.not91 = icmp eq i32 %23, 0
  br i1 %.not91, label %24, label %25

24:                                               ; preds = %20, %13
  br label %25

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

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

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

49:                                               ; preds = %42
  %50 = load ptr, ptr @stderr, align 8, !tbaa !9
  %51 = tail call i32 @fileno(ptr noundef %50) #10
  %52 = tail call i32 @isatty(i32 noundef %51) #10
  %.not90 = icmp eq i32 %52, 0
  br i1 %.not90, label %53, label %54

53:                                               ; preds = %49, %42
  br label %54

54:                                               ; preds = %49, %53
  %.str.6.sink195 = phi ptr [ @.str.6, %53 ], [ @.str.3, %49 ]
  store i32 %44, ptr %43, align 4, !tbaa !5
  %55 = load ptr, ptr @stderr, align 8, !tbaa !9
  %56 = load i32, ptr @test_count, align 4, !tbaa !5
  %57 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %58 = load i32, ptr %57, align 4, !tbaa !5
  %59 = tail call ptr @s2n_strerror(i32 noundef %58, ptr noundef nonnull @.str.5) #10
  %60 = load i32, ptr %57, align 4, !tbaa !5
  %61 = tail call ptr @s2n_strerror_debug(i32 noundef %60, ptr noundef nonnull @.str.5) #10
  %62 = load i32, ptr %43, align 4, !tbaa !5
  %63 = tail call ptr @strerror(i32 noundef %62) #10
  %64 = load i32, ptr %43, align 4, !tbaa !5
  %65 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef nonnull %.str.6.sink195, i32 noundef %56, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.2, i32 noundef 122, ptr noundef %59, ptr noundef %61, ptr noundef %63, i32 noundef %64) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

66:                                               ; preds = %37
  %67 = tail call i32 @s2n_init() #10
  %68 = icmp eq i32 %67, -1
  br i1 %68, label %70, label %.preheader105

.preheader105:                                    ; preds = %66
  %69 = load ptr, ptr @security_policy_selection, align 8, !tbaa !9
  %.not129 = icmp eq ptr %69, null
  br i1 %.not129, label %._crit_edge132, label %.lr.ph131

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

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

81:                                               ; preds = %77, %70
  br label %82

82:                                               ; preds = %77, %81
  %.str.6.sink206 = phi ptr [ @.str.6, %81 ], [ @.str.3, %77 ]
  store i32 %72, ptr %71, align 4, !tbaa !5
  %83 = load ptr, ptr @stderr, align 8, !tbaa !9
  %84 = load i32, ptr @test_count, align 4, !tbaa !5
  %85 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %86 = load i32, ptr %85, align 4, !tbaa !5
  %87 = tail call ptr @s2n_strerror(i32 noundef %86, ptr noundef nonnull @.str.5) #10
  %88 = load i32, ptr %85, align 4, !tbaa !5
  %89 = tail call ptr @s2n_strerror_debug(i32 noundef %88, ptr noundef nonnull @.str.5) #10
  %90 = load i32, ptr %71, align 4, !tbaa !5
  %91 = tail call ptr @strerror(i32 noundef %90) #10
  %92 = load i32, ptr %71, align 4, !tbaa !5
  %93 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %83, ptr noundef nonnull %.str.6.sink206, i32 noundef %84, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.2, i32 noundef 122, ptr noundef %87, ptr noundef %89, ptr noundef %91, i32 noundef %92) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

.lr.ph131:                                        ; preds = %.preheader105, %.loopexit
  %94 = phi ptr [ %484, %.loopexit ], [ %69, %.preheader105 ]
  %95 = phi ptr [ %483, %.loopexit ], [ @security_policy_selection, %.preheader105 ]
  %.057130 = phi i64 [ %482, %.loopexit ], [ 0, %.preheader105 ]
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %95, i64 8
  %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !9
  %.not72 = icmp eq ptr %.sroa.4.0.copyload, null
  br i1 %.not72, label %.thread92, label %103

.thread92:                                        ; preds = %.lr.ph131
  %96 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.9, ptr %96, align 8, !tbaa !15
  %97 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.9, i64 21), i32 noundef 47) #14
  %.not73 = icmp eq ptr %97, null
  %98 = getelementptr inbounds i8, ptr %97, i64 1
  %99 = select i1 %.not73, ptr getelementptr inbounds (i8, ptr @.str.9, i64 21), ptr %98
  %100 = getelementptr inbounds i8, ptr %96, i64 8
  store ptr %99, ptr %100, align 8, !tbaa !17
  %101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %101, align 4, !tbaa !5
  %102 = call i32 @s2n_calculate_stacktrace() #10
  br label %.thread100

103:                                              ; preds = %.lr.ph131
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #10
  store i8 0, ptr %3, align 1, !tbaa !11
  %104 = load i32, ptr @test_count, align 4, !tbaa !5
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr @test_count, align 4, !tbaa !5
  %106 = call i32 @s2n_policy_has_kem(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef nonnull @mlkem_list, i64 noundef 1, ptr noundef nonnull %3)
  %107 = call zeroext i1 @s2n_result_is_ok(i32 %106)
  br i1 %107, label %132, label %108

108:                                              ; preds = %103
  %109 = tail call ptr @__errno_location() #11
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %112 = call i32 @s2n_print_stacktrace(ptr noundef %111) #10
  %113 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %114 = trunc nuw i8 %113 to i1
  br i1 %114, label %115, label %119

115:                                              ; preds = %108
  %116 = load ptr, ptr @stderr, align 8, !tbaa !9
  %117 = call i32 @fileno(ptr noundef %116) #10
  %118 = call i32 @isatty(i32 noundef %117) #10
  %.not74 = icmp eq i32 %118, 0
  br i1 %.not74, label %119, label %120

119:                                              ; preds = %115, %108
  br label %120

120:                                              ; preds = %115, %119
  %.str.6.sink217 = phi ptr [ @.str.6, %119 ], [ @.str.3, %115 ]
  store i32 %110, ptr %109, align 4, !tbaa !5
  %121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %122 = load i32, ptr @test_count, align 4, !tbaa !5
  %123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %124 = load i32, ptr %123, align 4, !tbaa !5
  %125 = call ptr @s2n_strerror(i32 noundef %124, ptr noundef nonnull @.str.5) #10
  %126 = load i32, ptr %123, align 4, !tbaa !5
  %127 = call ptr @s2n_strerror_debug(i32 noundef %126, ptr noundef nonnull @.str.5) #10
  %128 = load i32, ptr %109, align 4, !tbaa !5
  %129 = call ptr @strerror(i32 noundef %128) #10
  %130 = load i32, ptr %109, align 4, !tbaa !5
  %131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %121, ptr noundef nonnull %.str.6.sink217, i32 noundef %122, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 132, ptr noundef %125, ptr noundef %127, ptr noundef %129, i32 noundef %130) #12
  call void @exit(i32 noundef 1) #13
  unreachable

132:                                              ; preds = %103
  %133 = load i8, ptr %3, align 1, !tbaa !11, !range !13, !noundef !14
  %134 = trunc nuw i8 %133 to i1
  br i1 %134, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %132
  %135 = getelementptr inbounds i8, ptr %.sroa.4.0.copyload, i64 8
  %136 = load ptr, ptr %135, align 8, !tbaa !18
  %137 = load i16, ptr %136, align 8, !tbaa !20
  %138 = zext i16 %137 to i64
  %.not133 = icmp eq i16 %137, 0
  br i1 %.not133, label %.preheader._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %139 = getelementptr inbounds i8, ptr %136, i64 8
  %140 = load ptr, ptr %139, align 8, !tbaa !23
  br label %143

141:                                              ; preds = %143
  %142 = add nuw nsw i64 %.063127, 1
  %exitcond.not = icmp eq i64 %142, %138
  br i1 %exitcond.not, label %.preheader._crit_edge, label %143, !llvm.loop !24

143:                                              ; preds = %.lr.ph, %141
  %.063127 = phi i64 [ 0, %.lr.ph ], [ %142, %141 ]
  %144 = getelementptr inbounds ptr, ptr %140, i64 %.063127
  %145 = load ptr, ptr %144, align 8, !tbaa !9
  %146 = getelementptr inbounds i8, ptr %145, i64 100
  %147 = load i8, ptr %146, align 4, !tbaa !26
  %148 = icmp eq i8 %147, 34
  br i1 %148, label %174, label %141

.preheader._crit_edge:                            ; preds = %.preheader, %141
  %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 = tail call ptr @__errno_location() #11
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %154 = call i32 @s2n_print_stacktrace(ptr noundef %153) #10
  %155 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %156 = trunc nuw i8 %155 to i1
  br i1 %156, label %157, label %161

157:                                              ; preds = %.preheader._crit_edge
  %158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %159 = call i32 @fileno(ptr noundef %158) #10
  %160 = call i32 @isatty(i32 noundef %159) #10
  %.not75 = icmp eq i32 %160, 0
  br i1 %.not75, label %161, label %162

161:                                              ; preds = %157, %.preheader._crit_edge
  br label %162

162:                                              ; preds = %157, %161
  %.str.6.sink228 = phi ptr [ @.str.6, %161 ], [ @.str.3, %157 ]
  store i32 %152, ptr %151, align 4, !tbaa !5
  %163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %164 = load i32, ptr @test_count, align 4, !tbaa !5
  %165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = call ptr @s2n_strerror(i32 noundef %166, ptr noundef nonnull @.str.5) #10
  %168 = load i32, ptr %165, align 4, !tbaa !5
  %169 = call ptr @s2n_strerror_debug(i32 noundef %168, ptr noundef nonnull @.str.5) #10
  %170 = load i32, ptr %151, align 4, !tbaa !5
  %171 = call ptr @strerror(i32 noundef %170) #10
  %172 = load i32, ptr %151, align 4, !tbaa !5
  %173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %163, ptr noundef nonnull %.str.6.sink228, i32 noundef %164, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.2, i32 noundef 146, ptr noundef %167, ptr noundef %169, ptr noundef %171, i32 noundef %172) #12
  call void @exit(i32 noundef 1) #13
  unreachable

174:                                              ; preds = %143
  %175 = load i32, ptr @test_count, align 4, !tbaa !5
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr @test_count, align 4, !tbaa !5
  %177 = getelementptr inbounds i8, ptr %.sroa.4.0.copyload, i64 16
  %178 = load ptr, ptr %177, align 8, !tbaa !28
  %.not76 = icmp eq ptr %178, null
  br i1 %.not76, label %474, label %179

179:                                              ; preds = %174
  %180 = add nsw i32 %175, 2
  store i32 %180, ptr @test_count, align 4, !tbaa !5
  %181 = call zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef nonnull %178) #10
  br i1 %181, label %182, label %206

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

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

193:                                              ; preds = %189, %182
  br label %194

194:                                              ; preds = %189, %193
  %.str.6.sink239 = phi ptr [ @.str.6, %193 ], [ @.str.3, %189 ]
  store i32 %184, ptr %183, align 4, !tbaa !5
  %195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %196 = load i32, ptr @test_count, align 4, !tbaa !5
  %197 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %198 = load i32, ptr %197, align 4, !tbaa !5
  %199 = call ptr @s2n_strerror(i32 noundef %198, ptr noundef nonnull @.str.5) #10
  %200 = load i32, ptr %197, align 4, !tbaa !5
  %201 = call ptr @s2n_strerror_debug(i32 noundef %200, ptr noundef nonnull @.str.5) #10
  %202 = load i32, ptr %183, align 4, !tbaa !5
  %203 = call ptr @strerror(i32 noundef %202) #10
  %204 = load i32, ptr %183, align 4, !tbaa !5
  %205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %195, ptr noundef nonnull %.str.6.sink239, i32 noundef %196, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.2, i32 noundef 152, ptr noundef %199, ptr noundef %201, ptr noundef %203, i32 noundef %204) #12
  call void @exit(i32 noundef 1) #13
  unreachable

206:                                              ; preds = %179
  %207 = load i8, ptr %.sroa.4.0.copyload, align 8, !tbaa !29
  %208 = icmp ult i8 %207, 33
  br i1 %208, label %209, label %270

209:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  store i8 0, ptr %4, align 1, !tbaa !11
  %210 = load i32, ptr @test_count, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr @test_count, align 4, !tbaa !5
  %212 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @tls_version_exceptions, i64 noundef 1, ptr noundef nonnull %4)
  %213 = call zeroext i1 @s2n_result_is_ok(i32 %212)
  br i1 %213, label %238, label %214

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

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

225:                                              ; preds = %221, %214
  br label %226

226:                                              ; preds = %221, %225
  %.str.6.sink250 = phi ptr [ @.str.6, %225 ], [ @.str.3, %221 ]
  store i32 %216, ptr %215, align 4, !tbaa !5
  %227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %228 = load i32, ptr @test_count, align 4, !tbaa !5
  %229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %230 = load i32, ptr %229, align 4, !tbaa !5
  %231 = call ptr @s2n_strerror(i32 noundef %230, ptr noundef nonnull @.str.5) #10
  %232 = load i32, ptr %229, align 4, !tbaa !5
  %233 = call ptr @s2n_strerror_debug(i32 noundef %232, ptr noundef nonnull @.str.5) #10
  %234 = load i32, ptr %215, align 4, !tbaa !5
  %235 = call ptr @strerror(i32 noundef %234) #10
  %236 = load i32, ptr %215, align 4, !tbaa !5
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %227, ptr noundef nonnull %.str.6.sink250, i32 noundef %228, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.2, i32 noundef 157, ptr noundef %231, ptr noundef %233, ptr noundef %235, i32 noundef %236) #12
  call void @exit(i32 noundef 1) #13
  unreachable

238:                                              ; preds = %209
  %239 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %240 = trunc nuw i8 %239 to i1
  br i1 %240, label %269, label %241

241:                                              ; preds = %238
  %242 = load ptr, ptr @stdout, align 8, !tbaa !9
  %243 = load i8, ptr %.sroa.4.0.copyload, align 8, !tbaa !29
  %244 = zext i8 %243 to i32
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %242, ptr noundef nonnull @.str.15, ptr noundef nonnull %94, i32 noundef %244) #10
  %246 = tail call ptr @__errno_location() #11
  %247 = load i32, ptr %246, align 4, !tbaa !5
  %248 = load ptr, ptr @stderr, align 8, !tbaa !9
  %249 = call i32 @s2n_print_stacktrace(ptr noundef %248) #10
  %250 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %252, label %256

252:                                              ; preds = %241
  %253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %254 = call i32 @fileno(ptr noundef %253) #10
  %255 = call i32 @isatty(i32 noundef %254) #10
  %.not79 = icmp eq i32 %255, 0
  br i1 %.not79, label %256, label %257

256:                                              ; preds = %252, %241
  br label %257

257:                                              ; preds = %252, %256
  %.str.6.sink261 = phi ptr [ @.str.6, %256 ], [ @.str.3, %252 ]
  store i32 %247, ptr %246, align 4, !tbaa !5
  %258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %259 = load i32, ptr @test_count, align 4, !tbaa !5
  %260 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %261 = load i32, ptr %260, align 4, !tbaa !5
  %262 = call ptr @s2n_strerror(i32 noundef %261, ptr noundef nonnull @.str.5) #10
  %263 = load i32, ptr %260, align 4, !tbaa !5
  %264 = call ptr @s2n_strerror_debug(i32 noundef %263, ptr noundef nonnull @.str.5) #10
  %265 = load i32, ptr %246, align 4, !tbaa !5
  %266 = call ptr @strerror(i32 noundef %265) #10
  %267 = load i32, ptr %246, align 4, !tbaa !5
  %268 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %258, ptr noundef nonnull %.str.6.sink261, i32 noundef %259, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 162, ptr noundef %262, ptr noundef %264, ptr noundef %266, i32 noundef %267) #12
  call void @exit(i32 noundef 1) #13
  unreachable

269:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  br label %270

270:                                              ; preds = %269, %206
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %271 = load i32, ptr @test_count, align 4, !tbaa !5
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr @test_count, align 4, !tbaa !5
  %273 = load ptr, ptr @legacy_cipher_suites, align 16, !tbaa !9
  %274 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %273, ptr noundef nonnull %5)
  %275 = call zeroext i1 @s2n_result_is_ok(i32 %274)
  br i1 %275, label %300, label %276

276:                                              ; preds = %456, %438, %420, %402, %384, %366, %270
  %277 = tail call ptr @__errno_location() #11
  %278 = load i32, ptr %277, align 4, !tbaa !5
  %279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %280 = call i32 @s2n_print_stacktrace(ptr noundef %279) #10
  %281 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %282 = trunc nuw i8 %281 to i1
  br i1 %282, label %283, label %287

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

287:                                              ; preds = %283, %276
  br label %288

288:                                              ; preds = %283, %287
  %.str.6.sink272 = phi ptr [ @.str.6, %287 ], [ @.str.3, %283 ]
  store i32 %278, ptr %277, align 4, !tbaa !5
  %289 = load ptr, ptr @stderr, align 8, !tbaa !9
  %290 = load i32, ptr @test_count, align 4, !tbaa !5
  %291 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %292 = load i32, ptr %291, align 4, !tbaa !5
  %293 = call ptr @s2n_strerror(i32 noundef %292, ptr noundef nonnull @.str.5) #10
  %294 = load i32, ptr %291, align 4, !tbaa !5
  %295 = call ptr @s2n_strerror_debug(i32 noundef %294, ptr noundef nonnull @.str.5) #10
  %296 = load i32, ptr %277, align 4, !tbaa !5
  %297 = call ptr @strerror(i32 noundef %296) #10
  %298 = load i32, ptr %277, align 4, !tbaa !5
  %299 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %289, ptr noundef nonnull %.str.6.sink272, i32 noundef %290, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.2, i32 noundef 169, ptr noundef %293, ptr noundef %295, ptr noundef %297, i32 noundef %298) #12
  call void @exit(i32 noundef 1) #13
  unreachable

300:                                              ; preds = %270
  %301 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %302 = trunc nuw i8 %301 to i1
  br i1 %302, label %303, label %366

303:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %304 = load i32, ptr @test_count, align 4, !tbaa !5
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr @test_count, align 4, !tbaa !5
  %306 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %307 = call zeroext i1 @s2n_result_is_ok(i32 %306)
  br i1 %307, label %332, label %308

308:                                              ; preds = %465, %447, %429, %411, %393, %375, %303
  %309 = tail call ptr @__errno_location() #11
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %312 = call i32 @s2n_print_stacktrace(ptr noundef %311) #10
  %313 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %314 = trunc nuw i8 %313 to i1
  br i1 %314, label %315, label %319

315:                                              ; preds = %308
  %316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %317 = call i32 @fileno(ptr noundef %316) #10
  %318 = call i32 @isatty(i32 noundef %317) #10
  %.not86 = icmp eq i32 %318, 0
  br i1 %.not86, label %319, label %320

319:                                              ; preds = %315, %308
  br label %320

320:                                              ; preds = %315, %319
  %.str.6.sink283 = phi ptr [ @.str.6, %319 ], [ @.str.3, %315 ]
  store i32 %310, ptr %309, align 4, !tbaa !5
  %321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %322 = load i32, ptr @test_count, align 4, !tbaa !5
  %323 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %324 = load i32, ptr %323, align 4, !tbaa !5
  %325 = call ptr @s2n_strerror(i32 noundef %324, ptr noundef nonnull @.str.5) #10
  %326 = load i32, ptr %323, align 4, !tbaa !5
  %327 = call ptr @s2n_strerror_debug(i32 noundef %326, ptr noundef nonnull @.str.5) #10
  %328 = load i32, ptr %309, align 4, !tbaa !5
  %329 = call ptr @strerror(i32 noundef %328) #10
  %330 = load i32, ptr %309, align 4, !tbaa !5
  %331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %321, ptr noundef nonnull %.str.6.sink283, i32 noundef %322, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 173, ptr noundef %325, ptr noundef %327, ptr noundef %329, i32 noundef %330) #12
  call void @exit(i32 noundef 1) #13
  unreachable

332:                                              ; preds = %303
  %333 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %334 = trunc nuw i8 %333 to i1
  br i1 %334, label %365, label %335

335:                                              ; preds = %470, %452, %434, %416, %398, %380, %332
  %.lcssa136 = phi i64 [ 0, %332 ], [ 1, %380 ], [ 2, %398 ], [ 3, %416 ], [ 4, %434 ], [ 5, %452 ], [ 6, %470 ]
  %336 = getelementptr inbounds [7 x ptr], ptr @legacy_cipher_suites, i64 0, i64 %.lcssa136
  %337 = load ptr, ptr @stdout, align 8, !tbaa !9
  %338 = load ptr, ptr %336, align 8, !tbaa !9
  %339 = getelementptr inbounds i8, ptr %338, i64 8
  %340 = load ptr, ptr %339, align 8, !tbaa !30
  %341 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %337, ptr noundef nonnull @.str.19, ptr noundef nonnull %94, ptr noundef %340) #10
  %342 = tail call ptr @__errno_location() #11
  %343 = load i32, ptr %342, align 4, !tbaa !5
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = call i32 @s2n_print_stacktrace(ptr noundef %344) #10
  %346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %347 = trunc nuw i8 %346 to i1
  br i1 %347, label %348, label %352

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

352:                                              ; preds = %348, %335
  br label %353

353:                                              ; preds = %348, %352
  %.str.6.sink294 = phi ptr [ @.str.6, %352 ], [ @.str.3, %348 ]
  store i32 %343, ptr %342, align 4, !tbaa !5
  %354 = load ptr, ptr @stderr, align 8, !tbaa !9
  %355 = load i32, ptr @test_count, align 4, !tbaa !5
  %356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %357 = load i32, ptr %356, align 4, !tbaa !5
  %358 = call ptr @s2n_strerror(i32 noundef %357, ptr noundef nonnull @.str.5) #10
  %359 = load i32, ptr %356, align 4, !tbaa !5
  %360 = call ptr @s2n_strerror_debug(i32 noundef %359, ptr noundef nonnull @.str.5) #10
  %361 = load i32, ptr %342, align 4, !tbaa !5
  %362 = call ptr @strerror(i32 noundef %361) #10
  %363 = load i32, ptr %342, align 4, !tbaa !5
  %364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef nonnull %.str.6.sink294, i32 noundef %355, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 178, ptr noundef %358, ptr noundef %360, ptr noundef %362, i32 noundef %363) #12
  call void @exit(i32 noundef 1) #13
  unreachable

365:                                              ; preds = %332
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %366

366:                                              ; preds = %365, %300
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %367 = load i32, ptr @test_count, align 4, !tbaa !5
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr @test_count, align 4, !tbaa !5
  %369 = load ptr, ptr getelementptr inbounds (i8, ptr @legacy_cipher_suites, i64 8), align 8, !tbaa !9
  %370 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %369, ptr noundef nonnull %5)
  %371 = call zeroext i1 @s2n_result_is_ok(i32 %370)
  br i1 %371, label %372, label %276

372:                                              ; preds = %366
  %373 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %374 = trunc nuw i8 %373 to i1
  br i1 %374, label %375, label %384

375:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %376 = load i32, ptr @test_count, align 4, !tbaa !5
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr @test_count, align 4, !tbaa !5
  %378 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %379 = call zeroext i1 @s2n_result_is_ok(i32 %378)
  br i1 %379, label %380, label %308

380:                                              ; preds = %375
  %381 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %382 = trunc nuw i8 %381 to i1
  br i1 %382, label %383, label %335

383:                                              ; preds = %380
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %384

384:                                              ; preds = %383, %372
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr @test_count, align 4, !tbaa !5
  %387 = load ptr, ptr getelementptr inbounds (i8, ptr @legacy_cipher_suites, i64 16), align 16, !tbaa !9
  %388 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %387, ptr noundef nonnull %5)
  %389 = call zeroext i1 @s2n_result_is_ok(i32 %388)
  br i1 %389, label %390, label %276

390:                                              ; preds = %384
  %391 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %392 = trunc nuw i8 %391 to i1
  br i1 %392, label %393, label %402

393:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %394 = load i32, ptr @test_count, align 4, !tbaa !5
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr @test_count, align 4, !tbaa !5
  %396 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %397 = call zeroext i1 @s2n_result_is_ok(i32 %396)
  br i1 %397, label %398, label %308

398:                                              ; preds = %393
  %399 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %400 = trunc nuw i8 %399 to i1
  br i1 %400, label %401, label %335

401:                                              ; preds = %398
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %402

402:                                              ; preds = %401, %390
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %403 = load i32, ptr @test_count, align 4, !tbaa !5
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr @test_count, align 4, !tbaa !5
  %405 = load ptr, ptr getelementptr inbounds (i8, ptr @legacy_cipher_suites, i64 24), align 8, !tbaa !9
  %406 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %405, ptr noundef nonnull %5)
  %407 = call zeroext i1 @s2n_result_is_ok(i32 %406)
  br i1 %407, label %408, label %276

408:                                              ; preds = %402
  %409 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %410 = trunc nuw i8 %409 to i1
  br i1 %410, label %411, label %420

411:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %412 = load i32, ptr @test_count, align 4, !tbaa !5
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr @test_count, align 4, !tbaa !5
  %414 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %415 = call zeroext i1 @s2n_result_is_ok(i32 %414)
  br i1 %415, label %416, label %308

416:                                              ; preds = %411
  %417 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %418 = trunc nuw i8 %417 to i1
  br i1 %418, label %419, label %335

419:                                              ; preds = %416
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %420

420:                                              ; preds = %419, %408
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %421 = load i32, ptr @test_count, align 4, !tbaa !5
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr @test_count, align 4, !tbaa !5
  %423 = load ptr, ptr getelementptr inbounds (i8, ptr @legacy_cipher_suites, i64 32), align 16, !tbaa !9
  %424 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %423, ptr noundef nonnull %5)
  %425 = call zeroext i1 @s2n_result_is_ok(i32 %424)
  br i1 %425, label %426, label %276

426:                                              ; preds = %420
  %427 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %428 = trunc nuw i8 %427 to i1
  br i1 %428, label %429, label %438

429:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %430 = load i32, ptr @test_count, align 4, !tbaa !5
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr @test_count, align 4, !tbaa !5
  %432 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %433 = call zeroext i1 @s2n_result_is_ok(i32 %432)
  br i1 %433, label %434, label %308

434:                                              ; preds = %429
  %435 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %436 = trunc nuw i8 %435 to i1
  br i1 %436, label %437, label %335

437:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %438

438:                                              ; preds = %437, %426
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %439 = load i32, ptr @test_count, align 4, !tbaa !5
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr @test_count, align 4, !tbaa !5
  %441 = load ptr, ptr getelementptr inbounds (i8, ptr @legacy_cipher_suites, i64 40), align 8, !tbaa !9
  %442 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %441, ptr noundef nonnull %5)
  %443 = call zeroext i1 @s2n_result_is_ok(i32 %442)
  br i1 %443, label %444, label %276

444:                                              ; preds = %438
  %445 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %446 = trunc nuw i8 %445 to i1
  br i1 %446, label %447, label %456

447:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %448 = load i32, ptr @test_count, align 4, !tbaa !5
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr @test_count, align 4, !tbaa !5
  %450 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %451 = call zeroext i1 @s2n_result_is_ok(i32 %450)
  br i1 %451, label %452, label %308

452:                                              ; preds = %447
  %453 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %454 = trunc nuw i8 %453 to i1
  br i1 %454, label %455, label %335

455:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %456

456:                                              ; preds = %455, %444
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 0, ptr %5, align 1, !tbaa !11
  %457 = load i32, ptr @test_count, align 4, !tbaa !5
  %458 = add nsw i32 %457, 1
  store i32 %458, ptr @test_count, align 4, !tbaa !5
  %459 = load ptr, ptr getelementptr inbounds (i8, ptr @legacy_cipher_suites, i64 48), align 16, !tbaa !9
  %460 = call i32 @s2n_policy_has_cipher(ptr noundef nonnull %.sroa.4.0.copyload, ptr noundef %459, ptr noundef nonnull %5)
  %461 = call zeroext i1 @s2n_result_is_ok(i32 %460)
  br i1 %461, label %462, label %276

462:                                              ; preds = %456
  %463 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %465, label %.loopexit.loopexit

465:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #10
  store i8 0, ptr %6, align 1, !tbaa !11
  %466 = load i32, ptr @test_count, align 4, !tbaa !5
  %467 = add nsw i32 %466, 1
  store i32 %467, ptr @test_count, align 4, !tbaa !5
  %468 = call i32 @s2n_policy_in_list(ptr noundef nonnull %94, ptr noundef nonnull @cipher_exceptions, i64 noundef 1, ptr noundef nonnull %6)
  %469 = call zeroext i1 @s2n_result_is_ok(i32 %468)
  br i1 %469, label %470, label %308

470:                                              ; preds = %465
  %471 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %472 = trunc nuw i8 %471 to i1
  br i1 %472, label %473, label %335

473:                                              ; preds = %470
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %473, %462
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  br label %.loopexit

474:                                              ; preds = %174
  %475 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.12, ptr %475, align 8, !tbaa !15
  %476 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.12, i64 21), i32 noundef 47) #14
  %.not77 = icmp eq ptr %476, null
  %477 = getelementptr inbounds i8, ptr %476, i64 1
  %478 = select i1 %.not77, ptr getelementptr inbounds (i8, ptr @.str.12, i64 21), ptr %477
  %479 = getelementptr inbounds i8, ptr %475, i64 8
  store ptr %478, ptr %479, align 8, !tbaa !17
  %480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %480, align 4, !tbaa !5
  %481 = call i32 @s2n_calculate_stacktrace() #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #10
  br label %.thread100

.loopexit:                                        ; preds = %.loopexit.loopexit, %132
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #10
  %482 = add i64 %.057130, 1
  %483 = getelementptr inbounds [0 x %struct.s2n_security_policy_selection], ptr @security_policy_selection, i64 0, i64 %482
  %484 = load ptr, ptr %483, align 8, !tbaa !9
  %.not = icmp eq ptr %484, null
  br i1 %.not, label %._crit_edge132, label %.lr.ph131, !llvm.loop !31

._crit_edge132:                                   ; preds = %.loopexit, %.preheader105
  %485 = call i32 @s2n_cleanup() #10
  %486 = icmp eq i32 %485, -1
  br i1 %486, label %487, label %511

487:                                              ; preds = %._crit_edge132
  %488 = tail call ptr @__errno_location() #11
  %489 = load i32, ptr %488, align 4, !tbaa !5
  %490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %491 = call i32 @s2n_print_stacktrace(ptr noundef %490) #10
  %492 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %493 = trunc nuw i8 %492 to i1
  br i1 %493, label %494, label %498

494:                                              ; preds = %487
  %495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %496 = call i32 @fileno(ptr noundef %495) #10
  %497 = call i32 @isatty(i32 noundef %496) #10
  %.not84 = icmp eq i32 %497, 0
  br i1 %.not84, label %498, label %499

498:                                              ; preds = %494, %487
  br label %499

499:                                              ; preds = %494, %498
  %.str.6.sink305 = phi ptr [ @.str.6, %498 ], [ @.str.3, %494 ]
  store i32 %489, ptr %488, align 4, !tbaa !5
  %500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %501 = load i32, ptr @test_count, align 4, !tbaa !5
  %502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = call ptr @s2n_strerror(i32 noundef %503, ptr noundef nonnull @.str.5) #10
  %505 = load i32, ptr %502, align 4, !tbaa !5
  %506 = call ptr @s2n_strerror_debug(i32 noundef %505, ptr noundef nonnull @.str.5) #10
  %507 = load i32, ptr %488, align 4, !tbaa !5
  %508 = call ptr @strerror(i32 noundef %507) #10
  %509 = load i32, ptr %488, align 4, !tbaa !5
  %510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %500, ptr noundef nonnull %.str.6.sink305, i32 noundef %501, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 184, ptr noundef %504, ptr noundef %506, ptr noundef %508, i32 noundef %509) #12
  call void @exit(i32 noundef 1) #13
  unreachable

511:                                              ; preds = %._crit_edge132
  %512 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %513 = icmp eq i32 %512, -1
  br i1 %513, label %514, label %538

514:                                              ; preds = %511
  %515 = tail call ptr @__errno_location() #11
  %516 = load i32, ptr %515, align 4, !tbaa !5
  %517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %518 = call i32 @s2n_print_stacktrace(ptr noundef %517) #10
  %519 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %520 = trunc nuw i8 %519 to i1
  br i1 %520, label %521, label %525

521:                                              ; preds = %514
  %522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %523 = call i32 @fileno(ptr noundef %522) #10
  %524 = call i32 @isatty(i32 noundef %523) #10
  %.not83 = icmp eq i32 %524, 0
  br i1 %.not83, label %525, label %526

525:                                              ; preds = %521, %514
  br label %526

526:                                              ; preds = %521, %525
  %.str.6.sink316 = phi ptr [ @.str.6, %525 ], [ @.str.3, %521 ]
  store i32 %516, ptr %515, align 4, !tbaa !5
  %527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %528 = load i32, ptr @test_count, align 4, !tbaa !5
  %529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %530 = load i32, ptr %529, align 4, !tbaa !5
  %531 = call ptr @s2n_strerror(i32 noundef %530, ptr noundef nonnull @.str.5) #10
  %532 = load i32, ptr %529, align 4, !tbaa !5
  %533 = call ptr @s2n_strerror_debug(i32 noundef %532, ptr noundef nonnull @.str.5) #10
  %534 = load i32, ptr %515, align 4, !tbaa !5
  %535 = call ptr @strerror(i32 noundef %534) #10
  %536 = load i32, ptr %515, align 4, !tbaa !5
  %537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %527, ptr noundef nonnull %.str.6.sink316, i32 noundef %528, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 184, ptr noundef %531, ptr noundef %533, ptr noundef %535, i32 noundef %536) #12
  call void @exit(i32 noundef 1) #13
  unreachable

538:                                              ; preds = %511
  %539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %540 = trunc nuw i8 %539 to i1
  br i1 %540, label %541, label %552

541:                                              ; preds = %538
  %542 = load ptr, ptr @stdout, align 8, !tbaa !9
  %543 = call i32 @fileno(ptr noundef %542) #10
  %544 = call i32 @isatty(i32 noundef %543) #10
  %.not80 = icmp eq i32 %544, 0
  br i1 %.not80, label %552, label %545

545:                                              ; preds = %541
  %546 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not82 = icmp eq i32 %546, 0
  %547 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not82, label %550, label %548

548:                                              ; preds = %545
  %549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %547, ptr noundef nonnull @.str.23, i32 noundef %546) #10
  br label %.thread100

550:                                              ; preds = %545
  %551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %547, ptr noundef nonnull @.str.24) #10
  br label %.thread100

552:                                              ; preds = %541, %538
  %553 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not81 = icmp eq i32 %553, 0
  %554 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not81, label %557, label %555

555:                                              ; preds = %552
  %556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %554, ptr noundef nonnull @.str.25, i32 noundef %553) #10
  br label %.thread100

557:                                              ; preds = %552
  %558 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %554, ptr noundef nonnull @.str.26) #10
  br label %.thread100

.thread100:                                       ; preds = %.thread92, %474, %550, %548, %557, %555
  %.5 = phi i32 [ 0, %555 ], [ 0, %557 ], [ 0, %548 ], [ 0, %550 ], [ -1, %474 ], [ -1, %.thread92 ]
  ret i32 %.5
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare i32 @s2n_calculate_stacktrace() local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i1 @s2n_result_is_ok(i32) local_unnamed_addr #9

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_policy_has_kem(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_policy_in_list(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_policy_has_cipher(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @s2n_cleanup() local_unnamed_addr #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { cold nounwind }
attributes #13 = { noreturn nounwind }
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 0}
!16 = !{!"s2n_debug_info", !10, i64 0, !10, i64 8}
!17 = !{!16, !10, i64 8}
!18 = !{!19, !10, i64 8}
!19 = !{!"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}
!20 = !{!21, !22, i64 0}
!21 = !{!"s2n_cipher_preferences", !22, i64 0, !10, i64 8, !12, i64 16}
!22 = !{!"short", !7, i64 0}
!23 = !{!21, !10, i64 8}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!27, !7, i64 100}
!27 = !{!"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}
!28 = !{!19, !10, i64 16}
!29 = !{!19, !7, i64 0}
!30 = !{!27, !10, i64 8}
!31 = distinct !{!31, !25}


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