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

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

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_kex = type { i8, [2 x ptr], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_signature_scheme = type { i16, ptr, i32, i32, i8, i8, i16, ptr }
%struct.s2n_ecc_named_curve = type { i16, i32, ptr, i8, ptr }
%struct.s2n_ecc_preferences = type { i8, ptr }
%struct.s2n_result = type { i32 }
%struct.s2n_signature_preferences = type { i8, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [78 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [70 x i8], align 1
@s2n_null_cipher_suite = external global %struct.s2n_cipher_suite, align 8
@.str.11 = external hidden unnamed_addr constant [101 x i8], align 1
@__const.main.valid = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.12 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@__const.main.invalid = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.14 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@cipher_preferences_test_all = external constant %struct.s2n_cipher_preferences, align 8
@.str.16 = external hidden unnamed_addr constant [87 x i8], align 1
@security_policy_test_all_fips = external constant %struct.s2n_security_policy, align 8
@.str.17 = external hidden unnamed_addr constant [39 x i8], align 1
@s2n_rsa = external constant %struct.s2n_kex, align 8
@.str.18 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [92 x i8], align 1
@s2n_null_sig_scheme = external constant %struct.s2n_signature_scheme, align 8
@.str.25 = external hidden unnamed_addr constant [103 x i8], align 1
@__const.main.valid.26 = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.27 = external hidden unnamed_addr constant [87 x i8], align 1
@__const.main.invalid.28 = external hidden unnamed_addr constant [4 x ptr], align 16
@.str.29 = external hidden unnamed_addr constant [89 x i8], align 1
@security_policy_test_all = external constant %struct.s2n_security_policy, align 8
@.str.30 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [81 x i8], align 1
@s2n_ecc_curve_secp256r1 = external constant %struct.s2n_ecc_named_curve, align 8
@.str.32 = external hidden unnamed_addr constant [96 x i8], align 1
@__const.main.valid.33 = external hidden unnamed_addr constant [1 x ptr], align 8
@.str.34 = external hidden unnamed_addr constant [76 x i8], align 1
@__const.main.invalid.35 = external hidden unnamed_addr constant [1 x ptr], align 8
@.str.36 = external hidden unnamed_addr constant [78 x i8], align 1
@s2n_ecc_preferences_test_all = external constant %struct.s2n_ecc_preferences, align 8
@.str.37 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [75 x i8], align 1
@__const.main.valid.39 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [78 x i8], align 1
@__const.main.invalid.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.49 = 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 i8, align 1
  %10 = alloca %struct.s2n_result, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %struct.s2n_result, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca [3 x ptr], align 16
  %19 = alloca i64, align 8
  %20 = alloca i8, align 1
  %21 = alloca %struct.s2n_result, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca [3 x ptr], align 16
  %25 = alloca i64, align 8
  %26 = alloca i8, align 1
  %27 = alloca %struct.s2n_result, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i8, align 1
  %34 = alloca %struct.s2n_result, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca i8, align 1
  %38 = alloca i64, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i8, align 1
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.s2n_result, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i8, align 1
  %49 = alloca %struct.s2n_result, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %struct.s2n_result, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca [3 x ptr], align 16
  %58 = alloca i64, align 8
  %59 = alloca i8, align 1
  %60 = alloca %struct.s2n_result, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca [4 x ptr], align 16
  %64 = alloca i64, align 8
  %65 = alloca i8, align 1
  %66 = alloca %struct.s2n_result, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca ptr, align 8
  %70 = alloca i64, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i8, align 1
  %73 = alloca %struct.s2n_result, align 4
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca i8, align 1
  %77 = alloca i64, align 8
  %78 = alloca i32, align 4
  %79 = alloca i8, align 1
  %80 = alloca %struct.s2n_result, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca %struct.s2n_result, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca [1 x ptr], align 8
  %89 = alloca i64, align 8
  %90 = alloca i8, align 1
  %91 = alloca %struct.s2n_result, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca [1 x ptr], align 8
  %95 = alloca i64, align 8
  %96 = alloca i8, align 1
  %97 = alloca %struct.s2n_result, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i64, align 8
  %101 = alloca ptr, align 8
  %102 = alloca i8, align 1
  %103 = alloca %struct.s2n_result, align 4
  %104 = alloca i32, align 4
  %105 = alloca ptr, align 8
  %106 = alloca i8, align 1
  %107 = alloca i64, align 8
  %108 = alloca i32, align 4
  %109 = alloca %struct.s2n_result, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca [2 x i8], align 1
  %114 = alloca i64, align 8
  %115 = alloca i8, align 1
  %116 = alloca %struct.s2n_result, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca [5 x i8], align 1
  %120 = alloca i64, align 8
  %121 = alloca i8, align 1
  %122 = alloca %struct.s2n_result, align 4
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i64, align 8
  %126 = alloca i8, align 1
  %127 = alloca %struct.s2n_result, align 4
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = 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 %131

131:                                              ; preds = %2
  br label %132

132:                                              ; preds = %131
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %133 = load ptr, ptr @stdout, align 8, !tbaa !9
  %134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %133, ptr noundef @.str, ptr noundef @.str.1) #10
  %135 = load ptr, ptr @stdout, align 8, !tbaa !9
  %136 = call i32 @fflush(ptr noundef %135)
  br label %137

137:                                              ; preds = %132
  %138 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %139 = icmp eq i32 %138, -1
  br i1 %139, label %140, label %191

140:                                              ; preds = %137
  br label %141

141:                                              ; preds = %140
  br label %142

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  %143 = call ptr @__errno_location() #11
  %144 = load i32, ptr %143, align 4, !tbaa !5
  store i32 %144, ptr %6, align 4, !tbaa !5
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = call i32 @s2n_print_stacktrace(ptr noundef %145)
  %147 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %148 = trunc i8 %147 to i1
  br i1 %148, label %149, label %171

149:                                              ; preds = %142
  %150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %151 = call i32 @fileno(ptr noundef %150) #10
  %152 = call i32 @isatty(i32 noundef %151) #10
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %154, label %171

154:                                              ; preds = %149
  %155 = load i32, ptr %6, align 4, !tbaa !5
  %156 = call ptr @__errno_location() #11
  store i32 %155, ptr %156, align 4, !tbaa !5
  %157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %158 = load i32, ptr @test_count, align 4, !tbaa !5
  %159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = call ptr @s2n_strerror(i32 noundef %160, ptr noundef @.str.4)
  %162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = call ptr @s2n_strerror_debug(i32 noundef %163, ptr noundef @.str.4)
  %165 = call ptr @__errno_location() #11
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = call ptr @strerror(i32 noundef %166) #10
  %168 = call ptr @__errno_location() #11
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %157, ptr noundef @.str.2, i32 noundef %158, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 24, ptr noundef %161, ptr noundef %164, ptr noundef %167, i32 noundef %169) #10
  br label %188

171:                                              ; preds = %149, %142
  %172 = load i32, ptr %6, align 4, !tbaa !5
  %173 = call ptr @__errno_location() #11
  store i32 %172, ptr %173, align 4, !tbaa !5
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = load i32, ptr @test_count, align 4, !tbaa !5
  %176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = call ptr @s2n_strerror(i32 noundef %177, ptr noundef @.str.4)
  %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_debug(i32 noundef %180, ptr noundef @.str.4)
  %182 = call ptr @__errno_location() #11
  %183 = load i32, ptr %182, align 4, !tbaa !5
  %184 = call ptr @strerror(i32 noundef %183) #10
  %185 = call ptr @__errno_location() #11
  %186 = load i32, ptr %185, align 4, !tbaa !5
  %187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef @.str.5, i32 noundef %175, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 24, ptr noundef %178, ptr noundef %181, ptr noundef %184, i32 noundef %186) #10
  br label %188

188:                                              ; preds = %171, %154
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %189

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

190:                                              ; No predecessors!
  br label %191

191:                                              ; preds = %190, %137
  br label %192

192:                                              ; preds = %191
  br label %193

193:                                              ; preds = %192
  %194 = load i32, ptr @test_count, align 4, !tbaa !5
  %195 = add nsw i32 %194, 1
  store i32 %195, ptr @test_count, align 4, !tbaa !5
  %196 = call i32 @s2n_enable_atexit()
  %197 = icmp eq i32 %196, -1
  br i1 %197, label %198, label %249

198:                                              ; preds = %193
  br label %199

199:                                              ; preds = %198
  br label %200

200:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %201 = call ptr @__errno_location() #11
  %202 = load i32, ptr %201, align 4, !tbaa !5
  store i32 %202, ptr %7, align 4, !tbaa !5
  %203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %204 = call i32 @s2n_print_stacktrace(ptr noundef %203)
  %205 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %206 = trunc i8 %205 to i1
  br i1 %206, label %207, label %229

207:                                              ; preds = %200
  %208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %209 = call i32 @fileno(ptr noundef %208) #10
  %210 = call i32 @isatty(i32 noundef %209) #10
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %229

212:                                              ; preds = %207
  %213 = load i32, ptr %7, align 4, !tbaa !5
  %214 = call ptr @__errno_location() #11
  store i32 %213, ptr %214, align 4, !tbaa !5
  %215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %216 = load i32, ptr @test_count, align 4, !tbaa !5
  %217 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = call ptr @s2n_strerror(i32 noundef %218, ptr noundef @.str.4)
  %220 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %221 = load i32, ptr %220, align 4, !tbaa !5
  %222 = call ptr @s2n_strerror_debug(i32 noundef %221, ptr noundef @.str.4)
  %223 = call ptr @__errno_location() #11
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = call ptr @strerror(i32 noundef %224) #10
  %226 = call ptr @__errno_location() #11
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %215, ptr noundef @.str.2, i32 noundef %216, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 24, ptr noundef %219, ptr noundef %222, ptr noundef %225, i32 noundef %227) #10
  br label %246

229:                                              ; preds = %207, %200
  %230 = load i32, ptr %7, align 4, !tbaa !5
  %231 = call ptr @__errno_location() #11
  store i32 %230, ptr %231, align 4, !tbaa !5
  %232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %233 = load i32, ptr @test_count, align 4, !tbaa !5
  %234 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = call ptr @s2n_strerror(i32 noundef %235, ptr noundef @.str.4)
  %237 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = call ptr @s2n_strerror_debug(i32 noundef %238, ptr noundef @.str.4)
  %240 = call ptr @__errno_location() #11
  %241 = load i32, ptr %240, align 4, !tbaa !5
  %242 = call ptr @strerror(i32 noundef %241) #10
  %243 = call ptr @__errno_location() #11
  %244 = load i32, ptr %243, align 4, !tbaa !5
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %232, ptr noundef @.str.5, i32 noundef %233, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 24, ptr noundef %236, ptr noundef %239, ptr noundef %242, i32 noundef %244) #10
  br label %246

246:                                              ; preds = %229, %212
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %247

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

248:                                              ; No predecessors!
  br label %249

249:                                              ; preds = %248, %193
  br label %250

250:                                              ; preds = %249
  br label %251

251:                                              ; preds = %250
  br label %252

252:                                              ; preds = %251
  %253 = call i32 @s2n_init()
  %254 = icmp eq i32 %253, -1
  br i1 %254, label %255, label %306

255:                                              ; preds = %252
  br label %256

256:                                              ; preds = %255
  br label %257

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %258 = call ptr @__errno_location() #11
  %259 = load i32, ptr %258, align 4, !tbaa !5
  store i32 %259, ptr %8, align 4, !tbaa !5
  %260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %261 = call i32 @s2n_print_stacktrace(ptr noundef %260)
  %262 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %263 = trunc i8 %262 to i1
  br i1 %263, label %264, label %286

264:                                              ; preds = %257
  %265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %266 = call i32 @fileno(ptr noundef %265) #10
  %267 = call i32 @isatty(i32 noundef %266) #10
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %286

269:                                              ; preds = %264
  %270 = load i32, ptr %8, align 4, !tbaa !5
  %271 = call ptr @__errno_location() #11
  store i32 %270, ptr %271, align 4, !tbaa !5
  %272 = load ptr, ptr @stderr, align 8, !tbaa !9
  %273 = load i32, ptr @test_count, align 4, !tbaa !5
  %274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = call ptr @s2n_strerror(i32 noundef %275, ptr noundef @.str.4)
  %277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %278 = load i32, ptr %277, align 4, !tbaa !5
  %279 = call ptr @s2n_strerror_debug(i32 noundef %278, ptr noundef @.str.4)
  %280 = call ptr @__errno_location() #11
  %281 = load i32, ptr %280, align 4, !tbaa !5
  %282 = call ptr @strerror(i32 noundef %281) #10
  %283 = call ptr @__errno_location() #11
  %284 = load i32, ptr %283, align 4, !tbaa !5
  %285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %272, ptr noundef @.str.2, i32 noundef %273, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 24, ptr noundef %276, ptr noundef %279, ptr noundef %282, i32 noundef %284) #10
  br label %303

286:                                              ; preds = %264, %257
  %287 = load i32, ptr %8, align 4, !tbaa !5
  %288 = call ptr @__errno_location() #11
  store i32 %287, ptr %288, 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 @.str.4)
  %294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %295 = load i32, ptr %294, align 4, !tbaa !5
  %296 = call ptr @s2n_strerror_debug(i32 noundef %295, ptr noundef @.str.4)
  %297 = call ptr @__errno_location() #11
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = call ptr @strerror(i32 noundef %298) #10
  %300 = call ptr @__errno_location() #11
  %301 = load i32, ptr %300, align 4, !tbaa !5
  %302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %289, ptr noundef @.str.5, i32 noundef %290, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 24, ptr noundef %293, ptr noundef %296, ptr noundef %299, i32 noundef %301) #10
  br label %303

303:                                              ; preds = %286, %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %304

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

305:                                              ; No predecessors!
  br label %306

306:                                              ; preds = %305, %252
  br label %307

307:                                              ; preds = %306
  br label %308

308:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #10
  store i8 0, ptr %9, align 1, !tbaa !11
  br label %309

309:                                              ; preds = %308
  br label %310

310:                                              ; preds = %309
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr @test_count, align 4, !tbaa !5
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr @test_count, align 4, !tbaa !5
  %314 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef null, ptr noundef %9)
  %315 = getelementptr inbounds %struct.s2n_result, ptr %10, i32 0, i32 0
  store i32 %314, ptr %315, align 4
  %316 = getelementptr inbounds %struct.s2n_result, ptr %10, i32 0, i32 0
  %317 = load i32, ptr %316, align 4
  %318 = call zeroext i1 @s2n_result_is_error(i32 %317)
  br i1 %318, label %372, label %319

319:                                              ; preds = %311
  br label %320

320:                                              ; preds = %319
  br label %321

321:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  %322 = call ptr @__errno_location() #11
  %323 = load i32, ptr %322, align 4, !tbaa !5
  store i32 %323, ptr %11, align 4, !tbaa !5
  %324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %325 = call i32 @s2n_print_stacktrace(ptr noundef %324)
  %326 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %327 = trunc i8 %326 to i1
  br i1 %327, label %328, label %350

328:                                              ; preds = %321
  %329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %330 = call i32 @fileno(ptr noundef %329) #10
  %331 = call i32 @isatty(i32 noundef %330) #10
  %332 = icmp ne i32 %331, 0
  br i1 %332, label %333, label %350

333:                                              ; preds = %328
  %334 = load i32, ptr %11, align 4, !tbaa !5
  %335 = call ptr @__errno_location() #11
  store i32 %334, ptr %335, align 4, !tbaa !5
  %336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %337 = load i32, ptr @test_count, align 4, !tbaa !5
  %338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %339 = load i32, ptr %338, align 4, !tbaa !5
  %340 = call ptr @s2n_strerror(i32 noundef %339, ptr noundef @.str.4)
  %341 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %342 = load i32, ptr %341, align 4, !tbaa !5
  %343 = call ptr @s2n_strerror_debug(i32 noundef %342, ptr noundef @.str.4)
  %344 = call ptr @__errno_location() #11
  %345 = load i32, ptr %344, align 4, !tbaa !5
  %346 = call ptr @strerror(i32 noundef %345) #10
  %347 = call ptr @__errno_location() #11
  %348 = load i32, ptr %347, align 4, !tbaa !5
  %349 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %336, ptr noundef @.str.2, i32 noundef %337, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 33, ptr noundef %340, ptr noundef %343, ptr noundef %346, i32 noundef %348) #10
  br label %367

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

367:                                              ; preds = %350, %333
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  br label %368

368:                                              ; preds = %367
  br label %369

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

370:                                              ; No predecessors!
  br label %371

371:                                              ; preds = %370
  br label %372

372:                                              ; preds = %371, %311
  br label %373

373:                                              ; preds = %372
  br label %374

374:                                              ; preds = %373
  br label %375

375:                                              ; preds = %374
  %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 align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %379 = load i32, ptr %378, align 4, !tbaa !5
  %380 = icmp eq i32 %379, 402653193
  br i1 %380, label %434, label %381

381:                                              ; preds = %375
  br label %382

382:                                              ; preds = %381
  br label %383

383:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  %384 = call ptr @__errno_location() #11
  %385 = load i32, ptr %384, align 4, !tbaa !5
  store i32 %385, ptr %12, align 4, !tbaa !5
  %386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %387 = call i32 @s2n_print_stacktrace(ptr noundef %386)
  %388 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %389 = trunc i8 %388 to i1
  br i1 %389, label %390, label %412

390:                                              ; preds = %383
  %391 = load ptr, ptr @stderr, align 8, !tbaa !9
  %392 = call i32 @fileno(ptr noundef %391) #10
  %393 = call i32 @isatty(i32 noundef %392) #10
  %394 = icmp ne i32 %393, 0
  br i1 %394, label %395, label %412

395:                                              ; preds = %390
  %396 = load i32, ptr %12, align 4, !tbaa !5
  %397 = call ptr @__errno_location() #11
  store i32 %396, ptr %397, align 4, !tbaa !5
  %398 = load ptr, ptr @stderr, align 8, !tbaa !9
  %399 = load i32, ptr @test_count, align 4, !tbaa !5
  %400 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %401 = load i32, ptr %400, align 4, !tbaa !5
  %402 = call ptr @s2n_strerror(i32 noundef %401, ptr noundef @.str.4)
  %403 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %404 = load i32, ptr %403, align 4, !tbaa !5
  %405 = call ptr @s2n_strerror_debug(i32 noundef %404, ptr noundef @.str.4)
  %406 = call ptr @__errno_location() #11
  %407 = load i32, ptr %406, align 4, !tbaa !5
  %408 = call ptr @strerror(i32 noundef %407) #10
  %409 = call ptr @__errno_location() #11
  %410 = load i32, ptr %409, align 4, !tbaa !5
  %411 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %398, ptr noundef @.str.2, i32 noundef %399, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 33, ptr noundef %402, ptr noundef %405, ptr noundef %408, i32 noundef %410) #10
  br label %429

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

429:                                              ; preds = %412, %395
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %430

430:                                              ; preds = %429
  br label %431

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

432:                                              ; No predecessors!
  br label %433

433:                                              ; preds = %432
  br label %434

434:                                              ; preds = %433, %375
  br label %435

435:                                              ; preds = %434
  br label %436

436:                                              ; preds = %435
  br label %437

437:                                              ; preds = %436
  %438 = load i32, ptr @test_count, align 4, !tbaa !5
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr @test_count, align 4, !tbaa !5
  %440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = call ptr @s2n_strerror_debug(i32 noundef %441, ptr noundef @.str.4)
  %443 = icmp eq ptr %442, null
  br i1 %443, label %444, label %497

444:                                              ; preds = %437
  br label %445

445:                                              ; preds = %444
  br label %446

446:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  %447 = call ptr @__errno_location() #11
  %448 = load i32, ptr %447, align 4, !tbaa !5
  store i32 %448, ptr %13, align 4, !tbaa !5
  %449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %450 = call i32 @s2n_print_stacktrace(ptr noundef %449)
  %451 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %452 = trunc i8 %451 to i1
  br i1 %452, label %453, label %475

453:                                              ; preds = %446
  %454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %455 = call i32 @fileno(ptr noundef %454) #10
  %456 = call i32 @isatty(i32 noundef %455) #10
  %457 = icmp ne i32 %456, 0
  br i1 %457, label %458, label %475

458:                                              ; preds = %453
  %459 = load i32, ptr %13, align 4, !tbaa !5
  %460 = call ptr @__errno_location() #11
  store i32 %459, ptr %460, align 4, !tbaa !5
  %461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %462 = load i32, ptr @test_count, align 4, !tbaa !5
  %463 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %464 = load i32, ptr %463, align 4, !tbaa !5
  %465 = call ptr @s2n_strerror(i32 noundef %464, ptr noundef @.str.4)
  %466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %467 = load i32, ptr %466, align 4, !tbaa !5
  %468 = call ptr @s2n_strerror_debug(i32 noundef %467, ptr noundef @.str.4)
  %469 = call ptr @__errno_location() #11
  %470 = load i32, ptr %469, align 4, !tbaa !5
  %471 = call ptr @strerror(i32 noundef %470) #10
  %472 = call ptr @__errno_location() #11
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %461, ptr noundef @.str.2, i32 noundef %462, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 33, ptr noundef %465, ptr noundef %468, ptr noundef %471, i32 noundef %473) #10
  br label %492

475:                                              ; preds = %453, %446
  %476 = load i32, ptr %13, align 4, !tbaa !5
  %477 = call ptr @__errno_location() #11
  store i32 %476, ptr %477, align 4, !tbaa !5
  %478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %479 = load i32, ptr @test_count, align 4, !tbaa !5
  %480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %481 = load i32, ptr %480, align 4, !tbaa !5
  %482 = call ptr @s2n_strerror(i32 noundef %481, ptr noundef @.str.4)
  %483 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %484 = load i32, ptr %483, align 4, !tbaa !5
  %485 = call ptr @s2n_strerror_debug(i32 noundef %484, ptr noundef @.str.4)
  %486 = call ptr @__errno_location() #11
  %487 = load i32, ptr %486, align 4, !tbaa !5
  %488 = call ptr @strerror(i32 noundef %487) #10
  %489 = call ptr @__errno_location() #11
  %490 = load i32, ptr %489, align 4, !tbaa !5
  %491 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %478, ptr noundef @.str.5, i32 noundef %479, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 33, ptr noundef %482, ptr noundef %485, ptr noundef %488, i32 noundef %490) #10
  br label %492

492:                                              ; preds = %475, %458
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  br label %493

493:                                              ; preds = %492
  br label %494

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

495:                                              ; No predecessors!
  br label %496

496:                                              ; preds = %495
  br label %497

497:                                              ; preds = %496, %437
  br label %498

498:                                              ; preds = %497
  br label %499

499:                                              ; preds = %498
  br label %500

500:                                              ; preds = %499
  br label %501

501:                                              ; preds = %500
  br label %502

502:                                              ; preds = %501
  %503 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %503, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %504 = call ptr @__errno_location() #11
  store i32 0, ptr %504, align 4, !tbaa !5
  br label %505

505:                                              ; preds = %502
  br label %506

506:                                              ; preds = %505
  br label %507

507:                                              ; preds = %506
  br label %508

508:                                              ; preds = %507
  br label %509

509:                                              ; preds = %508
  br label %510

510:                                              ; preds = %509
  br label %511

511:                                              ; preds = %510
  %512 = load i32, ptr @test_count, align 4, !tbaa !5
  %513 = add nsw i32 %512, 1
  store i32 %513, ptr @test_count, align 4, !tbaa !5
  %514 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef @s2n_null_cipher_suite, ptr noundef null)
  %515 = getelementptr inbounds %struct.s2n_result, ptr %14, i32 0, i32 0
  store i32 %514, ptr %515, align 4
  %516 = getelementptr inbounds %struct.s2n_result, ptr %14, i32 0, i32 0
  %517 = load i32, ptr %516, align 4
  %518 = call zeroext i1 @s2n_result_is_error(i32 %517)
  br i1 %518, label %572, label %519

519:                                              ; preds = %511
  br label %520

520:                                              ; preds = %519
  br label %521

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

528:                                              ; preds = %521
  %529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %530 = call i32 @fileno(ptr noundef %529) #10
  %531 = call i32 @isatty(i32 noundef %530) #10
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %533, label %550

533:                                              ; preds = %528
  %534 = load i32, ptr %15, align 4, !tbaa !5
  %535 = call ptr @__errno_location() #11
  store i32 %534, ptr %535, align 4, !tbaa !5
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = load i32, ptr @test_count, align 4, !tbaa !5
  %538 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %539 = load i32, ptr %538, align 4, !tbaa !5
  %540 = call ptr @s2n_strerror(i32 noundef %539, ptr noundef @.str.4)
  %541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %542 = load i32, ptr %541, align 4, !tbaa !5
  %543 = call ptr @s2n_strerror_debug(i32 noundef %542, ptr noundef @.str.4)
  %544 = call ptr @__errno_location() #11
  %545 = load i32, ptr %544, align 4, !tbaa !5
  %546 = call ptr @strerror(i32 noundef %545) #10
  %547 = call ptr @__errno_location() #11
  %548 = load i32, ptr %547, align 4, !tbaa !5
  %549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %536, ptr noundef @.str.2, i32 noundef %537, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 36, ptr noundef %540, ptr noundef %543, ptr noundef %546, i32 noundef %548) #10
  br label %567

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

567:                                              ; preds = %550, %533
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  br label %568

568:                                              ; preds = %567
  br label %569

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

570:                                              ; No predecessors!
  br label %571

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571, %511
  br label %573

573:                                              ; preds = %572
  br label %574

574:                                              ; preds = %573
  br label %575

575:                                              ; preds = %574
  %576 = load i32, ptr @test_count, align 4, !tbaa !5
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr @test_count, align 4, !tbaa !5
  %578 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = icmp eq i32 %579, 402653193
  br i1 %580, label %634, label %581

581:                                              ; preds = %575
  br label %582

582:                                              ; preds = %581
  br label %583

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

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

595:                                              ; preds = %590
  %596 = load i32, ptr %16, align 4, !tbaa !5
  %597 = call ptr @__errno_location() #11
  store i32 %596, ptr %597, align 4, !tbaa !5
  %598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %599 = load i32, ptr @test_count, align 4, !tbaa !5
  %600 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %601 = load i32, ptr %600, align 4, !tbaa !5
  %602 = call ptr @s2n_strerror(i32 noundef %601, ptr noundef @.str.4)
  %603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %604 = load i32, ptr %603, align 4, !tbaa !5
  %605 = call ptr @s2n_strerror_debug(i32 noundef %604, ptr noundef @.str.4)
  %606 = call ptr @__errno_location() #11
  %607 = load i32, ptr %606, align 4, !tbaa !5
  %608 = call ptr @strerror(i32 noundef %607) #10
  %609 = call ptr @__errno_location() #11
  %610 = load i32, ptr %609, align 4, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %598, ptr noundef @.str.2, i32 noundef %599, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 36, ptr noundef %602, ptr noundef %605, ptr noundef %608, i32 noundef %610) #10
  br label %629

612:                                              ; preds = %590, %583
  %613 = load i32, ptr %16, align 4, !tbaa !5
  %614 = call ptr @__errno_location() #11
  store i32 %613, ptr %614, align 4, !tbaa !5
  %615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %616 = load i32, ptr @test_count, align 4, !tbaa !5
  %617 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %618 = load i32, ptr %617, align 4, !tbaa !5
  %619 = call ptr @s2n_strerror(i32 noundef %618, ptr noundef @.str.4)
  %620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %621 = load i32, ptr %620, align 4, !tbaa !5
  %622 = call ptr @s2n_strerror_debug(i32 noundef %621, ptr noundef @.str.4)
  %623 = call ptr @__errno_location() #11
  %624 = load i32, ptr %623, align 4, !tbaa !5
  %625 = call ptr @strerror(i32 noundef %624) #10
  %626 = call ptr @__errno_location() #11
  %627 = load i32, ptr %626, align 4, !tbaa !5
  %628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %615, ptr noundef @.str.5, i32 noundef %616, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 36, ptr noundef %619, ptr noundef %622, ptr noundef %625, i32 noundef %627) #10
  br label %629

629:                                              ; preds = %612, %595
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %630

630:                                              ; preds = %629
  br label %631

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

632:                                              ; No predecessors!
  br label %633

633:                                              ; preds = %632
  br label %634

634:                                              ; preds = %633, %575
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  br label %637

637:                                              ; preds = %636
  %638 = load i32, ptr @test_count, align 4, !tbaa !5
  %639 = add nsw i32 %638, 1
  store i32 %639, ptr @test_count, align 4, !tbaa !5
  %640 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %641 = load i32, ptr %640, align 4, !tbaa !5
  %642 = call ptr @s2n_strerror_debug(i32 noundef %641, ptr noundef @.str.4)
  %643 = icmp eq ptr %642, null
  br i1 %643, label %644, label %697

644:                                              ; preds = %637
  br label %645

645:                                              ; preds = %644
  br label %646

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

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

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

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

692:                                              ; preds = %675, %658
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %693

693:                                              ; preds = %692
  br label %694

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

695:                                              ; No predecessors!
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696, %637
  br label %698

698:                                              ; preds = %697
  br label %699

699:                                              ; preds = %698
  br label %700

700:                                              ; preds = %699
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701
  %703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %703, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %704 = call ptr @__errno_location() #11
  store i32 0, ptr %704, align 4, !tbaa !5
  br label %705

705:                                              ; preds = %702
  br label %706

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %18, ptr align 16 @__const.main.valid, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  store i64 0, ptr %19, align 8, !tbaa !15
  br label %709

709:                                              ; preds = %842, %708
  %710 = load i64, ptr %19, align 8, !tbaa !15
  %711 = icmp ult i64 %710, 3
  br i1 %711, label %713, label %712

712:                                              ; preds = %709
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %845

713:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #10
  store i8 0, ptr %20, align 1, !tbaa !11
  br label %714

714:                                              ; preds = %713
  %715 = load i32, ptr @test_count, align 4, !tbaa !5
  %716 = add nsw i32 %715, 1
  store i32 %716, ptr @test_count, align 4, !tbaa !5
  %717 = load i64, ptr %19, align 8, !tbaa !15
  %718 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %717
  %719 = load ptr, ptr %718, align 8, !tbaa !9
  %720 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %719, ptr noundef %20)
  %721 = getelementptr inbounds %struct.s2n_result, ptr %21, i32 0, i32 0
  store i32 %720, ptr %721, align 4
  %722 = getelementptr inbounds %struct.s2n_result, ptr %21, i32 0, i32 0
  %723 = load i32, ptr %722, align 4
  %724 = call zeroext i1 @s2n_result_is_ok(i32 %723)
  br i1 %724, label %778, label %725

725:                                              ; preds = %714
  br label %726

726:                                              ; preds = %725
  br label %727

727:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %728 = call ptr @__errno_location() #11
  %729 = load i32, ptr %728, align 4, !tbaa !5
  store i32 %729, ptr %22, align 4, !tbaa !5
  %730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %731 = call i32 @s2n_print_stacktrace(ptr noundef %730)
  %732 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %733 = trunc i8 %732 to i1
  br i1 %733, label %734, label %756

734:                                              ; preds = %727
  %735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %736 = call i32 @fileno(ptr noundef %735) #10
  %737 = call i32 @isatty(i32 noundef %736) #10
  %738 = icmp ne i32 %737, 0
  br i1 %738, label %739, label %756

739:                                              ; preds = %734
  %740 = load i32, ptr %22, align 4, !tbaa !5
  %741 = call ptr @__errno_location() #11
  store i32 %740, ptr %741, align 4, !tbaa !5
  %742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %743 = load i32, ptr @test_count, align 4, !tbaa !5
  %744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %745 = load i32, ptr %744, align 4, !tbaa !5
  %746 = call ptr @s2n_strerror(i32 noundef %745, ptr noundef @.str.4)
  %747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %748 = load i32, ptr %747, align 4, !tbaa !5
  %749 = call ptr @s2n_strerror_debug(i32 noundef %748, ptr noundef @.str.4)
  %750 = call ptr @__errno_location() #11
  %751 = load i32, ptr %750, align 4, !tbaa !5
  %752 = call ptr @strerror(i32 noundef %751) #10
  %753 = call ptr @__errno_location() #11
  %754 = load i32, ptr %753, align 4, !tbaa !5
  %755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %742, ptr noundef @.str.2, i32 noundef %743, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 47, ptr noundef %746, ptr noundef %749, ptr noundef %752, i32 noundef %754) #10
  br label %773

756:                                              ; preds = %734, %727
  %757 = load i32, ptr %22, align 4, !tbaa !5
  %758 = call ptr @__errno_location() #11
  store i32 %757, ptr %758, align 4, !tbaa !5
  %759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %760 = load i32, ptr @test_count, align 4, !tbaa !5
  %761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %762 = load i32, ptr %761, align 4, !tbaa !5
  %763 = call ptr @s2n_strerror(i32 noundef %762, ptr noundef @.str.4)
  %764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %765 = load i32, ptr %764, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror_debug(i32 noundef %765, ptr noundef @.str.4)
  %767 = call ptr @__errno_location() #11
  %768 = load i32, ptr %767, align 4, !tbaa !5
  %769 = call ptr @strerror(i32 noundef %768) #10
  %770 = call ptr @__errno_location() #11
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef @.str.5, i32 noundef %760, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 47, ptr noundef %763, ptr noundef %766, ptr noundef %769, i32 noundef %771) #10
  br label %773

773:                                              ; preds = %756, %739
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %774

774:                                              ; preds = %773
  br label %775

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

776:                                              ; No predecessors!
  br label %777

777:                                              ; preds = %776
  br label %778

778:                                              ; preds = %777, %714
  br label %779

779:                                              ; preds = %778
  br label %780

780:                                              ; preds = %779
  br label %781

781:                                              ; preds = %780
  %782 = load i32, ptr @test_count, align 4, !tbaa !5
  %783 = add nsw i32 %782, 1
  store i32 %783, ptr @test_count, align 4, !tbaa !5
  %784 = load i8, ptr %20, align 1, !tbaa !11, !range !13, !noundef !14
  %785 = trunc i8 %784 to i1
  br i1 %785, label %839, label %786

786:                                              ; preds = %781
  br label %787

787:                                              ; preds = %786
  br label %788

788:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  %789 = call ptr @__errno_location() #11
  %790 = load i32, ptr %789, align 4, !tbaa !5
  store i32 %790, ptr %23, align 4, !tbaa !5
  %791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %792 = call i32 @s2n_print_stacktrace(ptr noundef %791)
  %793 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %794 = trunc i8 %793 to i1
  br i1 %794, label %795, label %817

795:                                              ; preds = %788
  %796 = load ptr, ptr @stderr, align 8, !tbaa !9
  %797 = call i32 @fileno(ptr noundef %796) #10
  %798 = call i32 @isatty(i32 noundef %797) #10
  %799 = icmp ne i32 %798, 0
  br i1 %799, label %800, label %817

800:                                              ; preds = %795
  %801 = load i32, ptr %23, align 4, !tbaa !5
  %802 = call ptr @__errno_location() #11
  store i32 %801, ptr %802, align 4, !tbaa !5
  %803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %804 = load i32, ptr @test_count, align 4, !tbaa !5
  %805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %806 = load i32, ptr %805, align 4, !tbaa !5
  %807 = call ptr @s2n_strerror(i32 noundef %806, ptr noundef @.str.4)
  %808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %809 = load i32, ptr %808, align 4, !tbaa !5
  %810 = call ptr @s2n_strerror_debug(i32 noundef %809, ptr noundef @.str.4)
  %811 = call ptr @__errno_location() #11
  %812 = load i32, ptr %811, align 4, !tbaa !5
  %813 = call ptr @strerror(i32 noundef %812) #10
  %814 = call ptr @__errno_location() #11
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %803, ptr noundef @.str.2, i32 noundef %804, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 48, ptr noundef %807, ptr noundef %810, ptr noundef %813, i32 noundef %815) #10
  br label %834

817:                                              ; preds = %795, %788
  %818 = load i32, ptr %23, align 4, !tbaa !5
  %819 = call ptr @__errno_location() #11
  store i32 %818, ptr %819, align 4, !tbaa !5
  %820 = load ptr, ptr @stderr, align 8, !tbaa !9
  %821 = load i32, ptr @test_count, align 4, !tbaa !5
  %822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %823 = load i32, ptr %822, align 4, !tbaa !5
  %824 = call ptr @s2n_strerror(i32 noundef %823, ptr noundef @.str.4)
  %825 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %826 = load i32, ptr %825, align 4, !tbaa !5
  %827 = call ptr @s2n_strerror_debug(i32 noundef %826, ptr noundef @.str.4)
  %828 = call ptr @__errno_location() #11
  %829 = load i32, ptr %828, align 4, !tbaa !5
  %830 = call ptr @strerror(i32 noundef %829) #10
  %831 = call ptr @__errno_location() #11
  %832 = load i32, ptr %831, align 4, !tbaa !5
  %833 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef @.str.5, i32 noundef %821, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 48, ptr noundef %824, ptr noundef %827, ptr noundef %830, i32 noundef %832) #10
  br label %834

834:                                              ; preds = %817, %800
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  br label %835

835:                                              ; preds = %834
  br label %836

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

837:                                              ; No predecessors!
  br label %838

838:                                              ; preds = %837
  br label %839

839:                                              ; preds = %838, %781
  br label %840

840:                                              ; preds = %839
  br label %841

841:                                              ; preds = %840
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  br label %842

842:                                              ; preds = %841
  %843 = load i64, ptr %19, align 8, !tbaa !15
  %844 = add i64 %843, 1
  store i64 %844, ptr %19, align 8, !tbaa !15
  br label %709, !llvm.loop !17

845:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %24, ptr align 16 @__const.main.invalid, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  store i64 0, ptr %25, align 8, !tbaa !15
  br label %846

846:                                              ; preds = %979, %845
  %847 = load i64, ptr %25, align 8, !tbaa !15
  %848 = icmp ult i64 %847, 3
  br i1 %848, label %850, label %849

849:                                              ; preds = %846
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %982

850:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #10
  store i8 1, ptr %26, align 1, !tbaa !11
  br label %851

851:                                              ; preds = %850
  %852 = load i32, ptr @test_count, align 4, !tbaa !5
  %853 = add nsw i32 %852, 1
  store i32 %853, ptr @test_count, align 4, !tbaa !5
  %854 = load i64, ptr %25, align 8, !tbaa !15
  %855 = getelementptr inbounds [3 x ptr], ptr %24, i64 0, i64 %854
  %856 = load ptr, ptr %855, align 8, !tbaa !9
  %857 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %856, ptr noundef %26)
  %858 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  store i32 %857, ptr %858, align 4
  %859 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  %860 = load i32, ptr %859, align 4
  %861 = call zeroext i1 @s2n_result_is_ok(i32 %860)
  br i1 %861, label %915, label %862

862:                                              ; preds = %851
  br label %863

863:                                              ; preds = %862
  br label %864

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

871:                                              ; preds = %864
  %872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %873 = call i32 @fileno(ptr noundef %872) #10
  %874 = call i32 @isatty(i32 noundef %873) #10
  %875 = icmp ne i32 %874, 0
  br i1 %875, label %876, label %893

876:                                              ; preds = %871
  %877 = load i32, ptr %28, align 4, !tbaa !5
  %878 = call ptr @__errno_location() #11
  store i32 %877, ptr %878, align 4, !tbaa !5
  %879 = load ptr, ptr @stderr, align 8, !tbaa !9
  %880 = load i32, ptr @test_count, align 4, !tbaa !5
  %881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %882 = load i32, ptr %881, align 4, !tbaa !5
  %883 = call ptr @s2n_strerror(i32 noundef %882, ptr noundef @.str.4)
  %884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %885 = load i32, ptr %884, align 4, !tbaa !5
  %886 = call ptr @s2n_strerror_debug(i32 noundef %885, ptr noundef @.str.4)
  %887 = call ptr @__errno_location() #11
  %888 = load i32, ptr %887, align 4, !tbaa !5
  %889 = call ptr @strerror(i32 noundef %888) #10
  %890 = call ptr @__errno_location() #11
  %891 = load i32, ptr %890, align 4, !tbaa !5
  %892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %879, ptr noundef @.str.2, i32 noundef %880, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 59, ptr noundef %883, ptr noundef %886, ptr noundef %889, i32 noundef %891) #10
  br label %910

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

910:                                              ; preds = %893, %876
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %911

911:                                              ; preds = %910
  br label %912

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

913:                                              ; No predecessors!
  br label %914

914:                                              ; preds = %913
  br label %915

915:                                              ; preds = %914, %851
  br label %916

916:                                              ; preds = %915
  br label %917

917:                                              ; preds = %916
  br label %918

918:                                              ; preds = %917
  %919 = load i32, ptr @test_count, align 4, !tbaa !5
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr @test_count, align 4, !tbaa !5
  %921 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %922 = trunc i8 %921 to i1
  br i1 %922, label %923, label %976

923:                                              ; preds = %918
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %926 = call ptr @__errno_location() #11
  %927 = load i32, ptr %926, align 4, !tbaa !5
  store i32 %927, ptr %29, align 4, !tbaa !5
  %928 = load ptr, ptr @stderr, align 8, !tbaa !9
  %929 = call i32 @s2n_print_stacktrace(ptr noundef %928)
  %930 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %931 = trunc i8 %930 to i1
  br i1 %931, label %932, label %954

932:                                              ; preds = %925
  %933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %934 = call i32 @fileno(ptr noundef %933) #10
  %935 = call i32 @isatty(i32 noundef %934) #10
  %936 = icmp ne i32 %935, 0
  br i1 %936, label %937, label %954

937:                                              ; preds = %932
  %938 = load i32, ptr %29, align 4, !tbaa !5
  %939 = call ptr @__errno_location() #11
  store i32 %938, ptr %939, align 4, !tbaa !5
  %940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %941 = load i32, ptr @test_count, align 4, !tbaa !5
  %942 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %943 = load i32, ptr %942, align 4, !tbaa !5
  %944 = call ptr @s2n_strerror(i32 noundef %943, ptr noundef @.str.4)
  %945 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %946 = load i32, ptr %945, align 4, !tbaa !5
  %947 = call ptr @s2n_strerror_debug(i32 noundef %946, ptr noundef @.str.4)
  %948 = call ptr @__errno_location() #11
  %949 = load i32, ptr %948, align 4, !tbaa !5
  %950 = call ptr @strerror(i32 noundef %949) #10
  %951 = call ptr @__errno_location() #11
  %952 = load i32, ptr %951, align 4, !tbaa !5
  %953 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %940, ptr noundef @.str.2, i32 noundef %941, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 60, ptr noundef %944, ptr noundef %947, ptr noundef %950, i32 noundef %952) #10
  br label %971

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

971:                                              ; preds = %954, %937
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %972

972:                                              ; preds = %971
  br label %973

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

974:                                              ; No predecessors!
  br label %975

975:                                              ; preds = %974
  br label %976

976:                                              ; preds = %975, %918
  br label %977

977:                                              ; preds = %976
  br label %978

978:                                              ; preds = %977
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  br label %979

979:                                              ; preds = %978
  %980 = load i64, ptr %25, align 8, !tbaa !15
  %981 = add i64 %980, 1
  store i64 %981, ptr %25, align 8, !tbaa !15
  br label %846, !llvm.loop !19

982:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  store i64 0, ptr %30, align 8, !tbaa !15
  br label %983

983:                                              ; preds = %1468, %982
  %984 = load i64, ptr %30, align 8, !tbaa !15
  %985 = load i16, ptr @cipher_preferences_test_all, align 8, !tbaa !20
  %986 = zext i16 %985 to i64
  %987 = icmp ult i64 %984, %986
  br i1 %987, label %989, label %988

988:                                              ; preds = %983
  store i32 102, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %1471

989:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %990 = load ptr, ptr getelementptr inbounds (%struct.s2n_cipher_preferences, ptr @cipher_preferences_test_all, i32 0, i32 1), align 8, !tbaa !23
  %991 = load i64, ptr %30, align 8, !tbaa !15
  %992 = getelementptr inbounds ptr, ptr %990, i64 %991
  %993 = load ptr, ptr %992, align 8, !tbaa !9
  store ptr %993, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #10
  store i8 0, ptr %33, align 1, !tbaa !11
  br label %994

994:                                              ; preds = %989
  %995 = load i32, ptr @test_count, align 4, !tbaa !5
  %996 = add nsw i32 %995, 1
  store i32 %996, ptr @test_count, align 4, !tbaa !5
  %997 = load ptr, ptr %32, align 8, !tbaa !9
  %998 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %997, ptr noundef %33)
  %999 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  store i32 %998, ptr %999, align 4
  %1000 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  %1001 = load i32, ptr %1000, align 4
  %1002 = call zeroext i1 @s2n_result_is_ok(i32 %1001)
  br i1 %1002, label %1056, label %1003

1003:                                             ; preds = %994
  br label %1004

1004:                                             ; preds = %1003
  br label %1005

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

1012:                                             ; preds = %1005
  %1013 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1014 = call i32 @fileno(ptr noundef %1013) #10
  %1015 = call i32 @isatty(i32 noundef %1014) #10
  %1016 = icmp ne i32 %1015, 0
  br i1 %1016, label %1017, label %1034

1017:                                             ; preds = %1012
  %1018 = load i32, ptr %35, align 4, !tbaa !5
  %1019 = call ptr @__errno_location() #11
  store i32 %1018, ptr %1019, align 4, !tbaa !5
  %1020 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1021 = load i32, ptr @test_count, align 4, !tbaa !5
  %1022 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1023 = load i32, ptr %1022, align 4, !tbaa !5
  %1024 = call ptr @s2n_strerror(i32 noundef %1023, ptr noundef @.str.4)
  %1025 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1026 = load i32, ptr %1025, align 4, !tbaa !5
  %1027 = call ptr @s2n_strerror_debug(i32 noundef %1026, ptr noundef @.str.4)
  %1028 = call ptr @__errno_location() #11
  %1029 = load i32, ptr %1028, align 4, !tbaa !5
  %1030 = call ptr @strerror(i32 noundef %1029) #10
  %1031 = call ptr @__errno_location() #11
  %1032 = load i32, ptr %1031, align 4, !tbaa !5
  %1033 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1020, ptr noundef @.str.2, i32 noundef %1021, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 68, ptr noundef %1024, ptr noundef %1027, ptr noundef %1030, i32 noundef %1032) #10
  br label %1051

1034:                                             ; preds = %1012, %1005
  %1035 = load i32, ptr %35, align 4, !tbaa !5
  %1036 = call ptr @__errno_location() #11
  store i32 %1035, ptr %1036, align 4, !tbaa !5
  %1037 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1038 = load i32, ptr @test_count, align 4, !tbaa !5
  %1039 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1040 = load i32, ptr %1039, align 4, !tbaa !5
  %1041 = call ptr @s2n_strerror(i32 noundef %1040, ptr noundef @.str.4)
  %1042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1043 = load i32, ptr %1042, align 4, !tbaa !5
  %1044 = call ptr @s2n_strerror_debug(i32 noundef %1043, ptr noundef @.str.4)
  %1045 = call ptr @__errno_location() #11
  %1046 = load i32, ptr %1045, align 4, !tbaa !5
  %1047 = call ptr @strerror(i32 noundef %1046) #10
  %1048 = call ptr @__errno_location() #11
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1037, ptr noundef @.str.5, i32 noundef %1038, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 68, ptr noundef %1041, ptr noundef %1044, ptr noundef %1047, i32 noundef %1049) #10
  br label %1051

1051:                                             ; preds = %1034, %1017
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

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

1054:                                             ; No predecessors!
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

1056:                                             ; preds = %1055, %994
  br label %1057

1057:                                             ; preds = %1056
  br label %1058

1058:                                             ; preds = %1057
  %1059 = load i8, ptr %33, align 1, !tbaa !11, !range !13, !noundef !14
  %1060 = trunc i8 %1059 to i1
  br i1 %1060, label %1062, label %1061

1061:                                             ; preds = %1058
  store i32 104, ptr %31, align 4
  br label %1465

1062:                                             ; preds = %1058
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %1063 = load ptr, ptr getelementptr inbounds (%struct.s2n_security_policy, ptr @security_policy_test_all_fips, i32 0, i32 1), align 8, !tbaa !24
  store ptr %1063, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #10
  store i8 0, ptr %37, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  store i64 0, ptr %38, align 8, !tbaa !15
  br label %1064

1064:                                             ; preds = %1083, %1062
  %1065 = load i64, ptr %38, align 8, !tbaa !15
  %1066 = load ptr, ptr %36, align 8, !tbaa !9
  %1067 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %1066, i32 0, i32 0
  %1068 = load i16, ptr %1067, align 8, !tbaa !20
  %1069 = zext i16 %1068 to i64
  %1070 = icmp ult i64 %1065, %1069
  br i1 %1070, label %1072, label %1071

1071:                                             ; preds = %1064
  store i32 111, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %1086

1072:                                             ; preds = %1064
  %1073 = load ptr, ptr %32, align 8, !tbaa !9
  %1074 = load ptr, ptr %36, align 8, !tbaa !9
  %1075 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %1074, i32 0, i32 1
  %1076 = load ptr, ptr %1075, align 8, !tbaa !23
  %1077 = load i64, ptr %38, align 8, !tbaa !15
  %1078 = getelementptr inbounds ptr, ptr %1076, i64 %1077
  %1079 = load ptr, ptr %1078, align 8, !tbaa !9
  %1080 = icmp eq ptr %1073, %1079
  br i1 %1080, label %1081, label %1082

1081:                                             ; preds = %1072
  store i8 1, ptr %37, align 1, !tbaa !11
  br label %1082

1082:                                             ; preds = %1081, %1072
  br label %1083

1083:                                             ; preds = %1082
  %1084 = load i64, ptr %38, align 8, !tbaa !15
  %1085 = add i64 %1084, 1
  store i64 %1085, ptr %38, align 8, !tbaa !15
  br label %1064, !llvm.loop !26

1086:                                             ; preds = %1071
  br label %1087

1087:                                             ; preds = %1086
  %1088 = load i32, ptr @test_count, align 4, !tbaa !5
  %1089 = add nsw i32 %1088, 1
  store i32 %1089, ptr @test_count, align 4, !tbaa !5
  %1090 = load i8, ptr %37, align 1, !tbaa !11, !range !13, !noundef !14
  %1091 = trunc i8 %1090 to i1
  br i1 %1091, label %1145, label %1092

1092:                                             ; preds = %1087
  br label %1093

1093:                                             ; preds = %1092
  br label %1094

1094:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %1095 = call ptr @__errno_location() #11
  %1096 = load i32, ptr %1095, align 4, !tbaa !5
  store i32 %1096, ptr %39, align 4, !tbaa !5
  %1097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1098 = call i32 @s2n_print_stacktrace(ptr noundef %1097)
  %1099 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1100 = trunc i8 %1099 to i1
  br i1 %1100, label %1101, label %1123

1101:                                             ; preds = %1094
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = call i32 @fileno(ptr noundef %1102) #10
  %1104 = call i32 @isatty(i32 noundef %1103) #10
  %1105 = icmp ne i32 %1104, 0
  br i1 %1105, label %1106, label %1123

1106:                                             ; preds = %1101
  %1107 = load i32, ptr %39, align 4, !tbaa !5
  %1108 = call ptr @__errno_location() #11
  store i32 %1107, ptr %1108, align 4, !tbaa !5
  %1109 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1110 = load i32, ptr @test_count, align 4, !tbaa !5
  %1111 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1112 = load i32, ptr %1111, align 4, !tbaa !5
  %1113 = call ptr @s2n_strerror(i32 noundef %1112, ptr noundef @.str.4)
  %1114 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1115 = load i32, ptr %1114, align 4, !tbaa !5
  %1116 = call ptr @s2n_strerror_debug(i32 noundef %1115, ptr noundef @.str.4)
  %1117 = call ptr @__errno_location() #11
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = call ptr @strerror(i32 noundef %1118) #10
  %1120 = call ptr @__errno_location() #11
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1109, ptr noundef @.str.2, i32 noundef %1110, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 82, ptr noundef %1113, ptr noundef %1116, ptr noundef %1119, i32 noundef %1121) #10
  br label %1140

1123:                                             ; preds = %1101, %1094
  %1124 = load i32, ptr %39, align 4, !tbaa !5
  %1125 = call ptr @__errno_location() #11
  store i32 %1124, ptr %1125, align 4, !tbaa !5
  %1126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1127 = load i32, ptr @test_count, align 4, !tbaa !5
  %1128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1129 = load i32, ptr %1128, align 4, !tbaa !5
  %1130 = call ptr @s2n_strerror(i32 noundef %1129, ptr noundef @.str.4)
  %1131 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1132 = load i32, ptr %1131, align 4, !tbaa !5
  %1133 = call ptr @s2n_strerror_debug(i32 noundef %1132, ptr noundef @.str.4)
  %1134 = call ptr @__errno_location() #11
  %1135 = load i32, ptr %1134, align 4, !tbaa !5
  %1136 = call ptr @strerror(i32 noundef %1135) #10
  %1137 = call ptr @__errno_location() #11
  %1138 = load i32, ptr %1137, align 4, !tbaa !5
  %1139 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1126, ptr noundef @.str.5, i32 noundef %1127, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 82, ptr noundef %1130, ptr noundef %1133, ptr noundef %1136, i32 noundef %1138) #10
  br label %1140

1140:                                             ; preds = %1123, %1106
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %1141

1141:                                             ; preds = %1140
  br label %1142

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

1143:                                             ; No predecessors!
  br label %1144

1144:                                             ; preds = %1143
  br label %1145

1145:                                             ; preds = %1144, %1087
  br label %1146

1146:                                             ; preds = %1145
  br label %1147

1147:                                             ; preds = %1146
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load i32, ptr @test_count, align 4, !tbaa !5
  %1150 = add nsw i32 %1149, 1
  store i32 %1150, ptr @test_count, align 4, !tbaa !5
  %1151 = load ptr, ptr %32, align 8, !tbaa !9
  %1152 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %1151, i32 0, i32 4
  %1153 = load ptr, ptr %1152, align 8, !tbaa !27
  %1154 = icmp eq ptr %1153, @s2n_rsa
  br i1 %1154, label %1155, label %1208

1155:                                             ; preds = %1148
  br label %1156

1156:                                             ; preds = %1155
  br label %1157

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

1164:                                             ; preds = %1157
  %1165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1166 = call i32 @fileno(ptr noundef %1165) #10
  %1167 = call i32 @isatty(i32 noundef %1166) #10
  %1168 = icmp ne i32 %1167, 0
  br i1 %1168, label %1169, label %1186

1169:                                             ; preds = %1164
  %1170 = load i32, ptr %40, align 4, !tbaa !5
  %1171 = call ptr @__errno_location() #11
  store i32 %1170, ptr %1171, align 4, !tbaa !5
  %1172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1173 = load i32, ptr @test_count, align 4, !tbaa !5
  %1174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call ptr @s2n_strerror(i32 noundef %1175, ptr noundef @.str.4)
  %1177 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call ptr @s2n_strerror_debug(i32 noundef %1178, ptr noundef @.str.4)
  %1180 = call ptr @__errno_location() #11
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call ptr @strerror(i32 noundef %1181) #10
  %1183 = call ptr @__errno_location() #11
  %1184 = load i32, ptr %1183, align 4, !tbaa !5
  %1185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1172, ptr noundef @.str.2, i32 noundef %1173, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 90, ptr noundef %1176, ptr noundef %1179, ptr noundef %1182, i32 noundef %1184) #10
  br label %1203

1186:                                             ; preds = %1164, %1157
  %1187 = load i32, ptr %40, align 4, !tbaa !5
  %1188 = call ptr @__errno_location() #11
  store i32 %1187, ptr %1188, align 4, !tbaa !5
  %1189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1190 = load i32, ptr @test_count, align 4, !tbaa !5
  %1191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  %1193 = call ptr @s2n_strerror(i32 noundef %1192, ptr noundef @.str.4)
  %1194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call ptr @s2n_strerror_debug(i32 noundef %1195, ptr noundef @.str.4)
  %1197 = call ptr @__errno_location() #11
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  %1199 = call ptr @strerror(i32 noundef %1198) #10
  %1200 = call ptr @__errno_location() #11
  %1201 = load i32, ptr %1200, align 4, !tbaa !5
  %1202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1189, ptr noundef @.str.5, i32 noundef %1190, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 90, ptr noundef %1193, ptr noundef %1196, ptr noundef %1199, i32 noundef %1201) #10
  br label %1203

1203:                                             ; preds = %1186, %1169
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

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

1206:                                             ; No predecessors!
  br label %1207

1207:                                             ; preds = %1206
  br label %1208

1208:                                             ; preds = %1207, %1148
  br label %1209

1209:                                             ; preds = %1208
  br label %1210

1210:                                             ; preds = %1209
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr @test_count, align 4, !tbaa !5
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr @test_count, align 4, !tbaa !5
  %1214 = load ptr, ptr %32, align 8, !tbaa !9
  %1215 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %1214, i32 0, i32 1
  %1216 = load ptr, ptr %1215, align 8, !tbaa !29
  %1217 = call ptr @strstr(ptr noundef %1216, ptr noundef @.str.19) #13
  %1218 = icmp eq ptr %1217, null
  br i1 %1218, label %1219, label %1272

1219:                                             ; preds = %1211
  br label %1220

1220:                                             ; preds = %1219
  br label %1221

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

1228:                                             ; preds = %1221
  %1229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1230 = call i32 @fileno(ptr noundef %1229) #10
  %1231 = call i32 @isatty(i32 noundef %1230) #10
  %1232 = icmp ne i32 %1231, 0
  br i1 %1232, label %1233, label %1250

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

1250:                                             ; preds = %1228, %1221
  %1251 = load i32, ptr %41, align 4, !tbaa !5
  %1252 = call ptr @__errno_location() #11
  store i32 %1251, ptr %1252, align 4, !tbaa !5
  %1253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1254 = load i32, ptr @test_count, align 4, !tbaa !5
  %1255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1256 = load i32, ptr %1255, align 4, !tbaa !5
  %1257 = call ptr @s2n_strerror(i32 noundef %1256, ptr noundef @.str.4)
  %1258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1259 = load i32, ptr %1258, align 4, !tbaa !5
  %1260 = call ptr @s2n_strerror_debug(i32 noundef %1259, ptr noundef @.str.4)
  %1261 = call ptr @__errno_location() #11
  %1262 = load i32, ptr %1261, align 4, !tbaa !5
  %1263 = call ptr @strerror(i32 noundef %1262) #10
  %1264 = call ptr @__errno_location() #11
  %1265 = load i32, ptr %1264, align 4, !tbaa !5
  %1266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1253, ptr noundef @.str.5, i32 noundef %1254, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1257, ptr noundef %1260, ptr noundef %1263, i32 noundef %1265) #10
  br label %1267

1267:                                             ; preds = %1250, %1233
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1268

1268:                                             ; preds = %1267
  br label %1269

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

1270:                                             ; No predecessors!
  br label %1271

1271:                                             ; preds = %1270
  br label %1272

1272:                                             ; preds = %1271, %1211
  br label %1273

1273:                                             ; preds = %1272
  br label %1274

1274:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #10
  store i8 0, ptr %42, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  store i32 0, ptr %43, align 4, !tbaa !5
  br label %1275

1275:                                             ; preds = %1274
  %1276 = load i32, ptr @test_count, align 4, !tbaa !5
  %1277 = add nsw i32 %1276, 1
  store i32 %1277, ptr @test_count, align 4, !tbaa !5
  %1278 = load ptr, ptr %32, align 8, !tbaa !9
  %1279 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %1278, i32 0, i32 11
  %1280 = load i32, ptr %1279, align 8, !tbaa !30
  %1281 = call i32 @s2n_hmac_hash_alg(i32 noundef %1280, ptr noundef %43)
  %1282 = icmp eq i32 %1281, -1
  br i1 %1282, label %1283, label %1336

1283:                                             ; preds = %1275
  br label %1284

1284:                                             ; preds = %1283
  br label %1285

1285:                                             ; preds = %1284
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %1286 = call ptr @__errno_location() #11
  %1287 = load i32, ptr %1286, align 4, !tbaa !5
  store i32 %1287, ptr %44, align 4, !tbaa !5
  %1288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1289 = call i32 @s2n_print_stacktrace(ptr noundef %1288)
  %1290 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1291 = trunc i8 %1290 to i1
  br i1 %1291, label %1292, label %1314

1292:                                             ; preds = %1285
  %1293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1294 = call i32 @fileno(ptr noundef %1293) #10
  %1295 = call i32 @isatty(i32 noundef %1294) #10
  %1296 = icmp ne i32 %1295, 0
  br i1 %1296, label %1297, label %1314

1297:                                             ; preds = %1292
  %1298 = load i32, ptr %44, align 4, !tbaa !5
  %1299 = call ptr @__errno_location() #11
  store i32 %1298, ptr %1299, align 4, !tbaa !5
  %1300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1301 = load i32, ptr @test_count, align 4, !tbaa !5
  %1302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1303 = load i32, ptr %1302, align 4, !tbaa !5
  %1304 = call ptr @s2n_strerror(i32 noundef %1303, ptr noundef @.str.4)
  %1305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1306 = load i32, ptr %1305, align 4, !tbaa !5
  %1307 = call ptr @s2n_strerror_debug(i32 noundef %1306, ptr noundef @.str.4)
  %1308 = call ptr @__errno_location() #11
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = call ptr @strerror(i32 noundef %1309) #10
  %1311 = call ptr @__errno_location() #11
  %1312 = load i32, ptr %1311, align 4, !tbaa !5
  %1313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1300, ptr noundef @.str.2, i32 noundef %1301, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 100, ptr noundef %1304, ptr noundef %1307, ptr noundef %1310, i32 noundef %1312) #10
  br label %1331

1314:                                             ; preds = %1292, %1285
  %1315 = load i32, ptr %44, align 4, !tbaa !5
  %1316 = call ptr @__errno_location() #11
  store i32 %1315, ptr %1316, align 4, !tbaa !5
  %1317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1318 = load i32, ptr @test_count, align 4, !tbaa !5
  %1319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1320 = load i32, ptr %1319, align 4, !tbaa !5
  %1321 = call ptr @s2n_strerror(i32 noundef %1320, ptr noundef @.str.4)
  %1322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1323 = load i32, ptr %1322, align 4, !tbaa !5
  %1324 = call ptr @s2n_strerror_debug(i32 noundef %1323, ptr noundef @.str.4)
  %1325 = call ptr @__errno_location() #11
  %1326 = load i32, ptr %1325, align 4, !tbaa !5
  %1327 = call ptr @strerror(i32 noundef %1326) #10
  %1328 = call ptr @__errno_location() #11
  %1329 = load i32, ptr %1328, align 4, !tbaa !5
  %1330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1317, ptr noundef @.str.5, i32 noundef %1318, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 100, ptr noundef %1321, ptr noundef %1324, ptr noundef %1327, i32 noundef %1329) #10
  br label %1331

1331:                                             ; preds = %1314, %1297
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1332

1332:                                             ; preds = %1331
  br label %1333

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

1334:                                             ; No predecessors!
  br label %1335

1335:                                             ; preds = %1334
  br label %1336

1336:                                             ; preds = %1335, %1275
  br label %1337

1337:                                             ; preds = %1336
  br label %1338

1338:                                             ; preds = %1337
  br label %1339

1339:                                             ; preds = %1338
  %1340 = load i32, ptr @test_count, align 4, !tbaa !5
  %1341 = add nsw i32 %1340, 1
  store i32 %1341, ptr @test_count, align 4, !tbaa !5
  %1342 = load i32, ptr %43, align 4, !tbaa !5
  %1343 = call i32 @s2n_fips_validate_hash_algorithm(i32 noundef %1342, ptr noundef %42)
  %1344 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  store i32 %1343, ptr %1344, align 4
  %1345 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  %1346 = load i32, ptr %1345, align 4
  %1347 = call zeroext i1 @s2n_result_is_ok(i32 %1346)
  br i1 %1347, label %1401, label %1348

1348:                                             ; preds = %1339
  br label %1349

1349:                                             ; preds = %1348
  br label %1350

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

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

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

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

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

1397:                                             ; preds = %1396
  br label %1398

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

1399:                                             ; No predecessors!
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

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

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load i32, ptr @test_count, align 4, !tbaa !5
  %1406 = add nsw i32 %1405, 1
  store i32 %1406, ptr @test_count, align 4, !tbaa !5
  %1407 = load i8, ptr %42, align 1, !tbaa !11, !range !13, !noundef !14
  %1408 = trunc i8 %1407 to i1
  br i1 %1408, label %1462, label %1409

1409:                                             ; preds = %1404
  br label %1410

1410:                                             ; preds = %1409
  br label %1411

1411:                                             ; preds = %1410
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  %1412 = call ptr @__errno_location() #11
  %1413 = load i32, ptr %1412, align 4, !tbaa !5
  store i32 %1413, ptr %47, align 4, !tbaa !5
  %1414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1415 = call i32 @s2n_print_stacktrace(ptr noundef %1414)
  %1416 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1417 = trunc i8 %1416 to i1
  br i1 %1417, label %1418, label %1440

1418:                                             ; preds = %1411
  %1419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1420 = call i32 @fileno(ptr noundef %1419) #10
  %1421 = call i32 @isatty(i32 noundef %1420) #10
  %1422 = icmp ne i32 %1421, 0
  br i1 %1422, label %1423, label %1440

1423:                                             ; preds = %1418
  %1424 = load i32, ptr %47, align 4, !tbaa !5
  %1425 = call ptr @__errno_location() #11
  store i32 %1424, ptr %1425, align 4, !tbaa !5
  %1426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1427 = load i32, ptr @test_count, align 4, !tbaa !5
  %1428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1429 = load i32, ptr %1428, align 4, !tbaa !5
  %1430 = call ptr @s2n_strerror(i32 noundef %1429, ptr noundef @.str.4)
  %1431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1432 = load i32, ptr %1431, align 4, !tbaa !5
  %1433 = call ptr @s2n_strerror_debug(i32 noundef %1432, ptr noundef @.str.4)
  %1434 = call ptr @__errno_location() #11
  %1435 = load i32, ptr %1434, align 4, !tbaa !5
  %1436 = call ptr @strerror(i32 noundef %1435) #10
  %1437 = call ptr @__errno_location() #11
  %1438 = load i32, ptr %1437, align 4, !tbaa !5
  %1439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1426, ptr noundef @.str.2, i32 noundef %1427, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 102, ptr noundef %1430, ptr noundef %1433, ptr noundef %1436, i32 noundef %1438) #10
  br label %1457

1440:                                             ; preds = %1418, %1411
  %1441 = load i32, ptr %47, align 4, !tbaa !5
  %1442 = call ptr @__errno_location() #11
  store i32 %1441, ptr %1442, align 4, !tbaa !5
  %1443 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1444 = load i32, ptr @test_count, align 4, !tbaa !5
  %1445 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1446 = load i32, ptr %1445, align 4, !tbaa !5
  %1447 = call ptr @s2n_strerror(i32 noundef %1446, ptr noundef @.str.4)
  %1448 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1449 = load i32, ptr %1448, align 4, !tbaa !5
  %1450 = call ptr @s2n_strerror_debug(i32 noundef %1449, ptr noundef @.str.4)
  %1451 = call ptr @__errno_location() #11
  %1452 = load i32, ptr %1451, align 4, !tbaa !5
  %1453 = call ptr @strerror(i32 noundef %1452) #10
  %1454 = call ptr @__errno_location() #11
  %1455 = load i32, ptr %1454, align 4, !tbaa !5
  %1456 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1443, ptr noundef @.str.5, i32 noundef %1444, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 102, ptr noundef %1447, ptr noundef %1450, ptr noundef %1453, i32 noundef %1455) #10
  br label %1457

1457:                                             ; preds = %1440, %1423
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %1458

1458:                                             ; preds = %1457
  br label %1459

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

1460:                                             ; No predecessors!
  br label %1461

1461:                                             ; preds = %1460
  br label %1462

1462:                                             ; preds = %1461, %1404
  br label %1463

1463:                                             ; preds = %1462
  br label %1464

1464:                                             ; preds = %1463
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  store i32 0, ptr %31, align 4
  br label %1465

1465:                                             ; preds = %1464, %1061
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  %1466 = load i32, ptr %31, align 4
  switch i32 %1466, label %3853 [
    i32 0, label %1467
    i32 104, label %1468
  ]

1467:                                             ; preds = %1465
  br label %1468

1468:                                             ; preds = %1467, %1465
  %1469 = load i64, ptr %30, align 8, !tbaa !15
  %1470 = add i64 %1469, 1
  store i64 %1470, ptr %30, align 8, !tbaa !15
  br label %983, !llvm.loop !31

1471:                                             ; preds = %988
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #10
  store i8 0, ptr %48, align 1, !tbaa !11
  br label %1472

1472:                                             ; preds = %1471
  br label %1473

1473:                                             ; preds = %1472
  br label %1474

1474:                                             ; preds = %1473
  %1475 = load i32, ptr @test_count, align 4, !tbaa !5
  %1476 = add nsw i32 %1475, 1
  store i32 %1476, ptr @test_count, align 4, !tbaa !5
  %1477 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef null, ptr noundef %48)
  %1478 = getelementptr inbounds %struct.s2n_result, ptr %49, i32 0, i32 0
  store i32 %1477, ptr %1478, align 4
  %1479 = getelementptr inbounds %struct.s2n_result, ptr %49, i32 0, i32 0
  %1480 = load i32, ptr %1479, align 4
  %1481 = call zeroext i1 @s2n_result_is_error(i32 %1480)
  br i1 %1481, label %1535, label %1482

1482:                                             ; preds = %1474
  br label %1483

1483:                                             ; preds = %1482
  br label %1484

1484:                                             ; preds = %1483
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %1485 = call ptr @__errno_location() #11
  %1486 = load i32, ptr %1485, align 4, !tbaa !5
  store i32 %1486, ptr %50, align 4, !tbaa !5
  %1487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1488 = call i32 @s2n_print_stacktrace(ptr noundef %1487)
  %1489 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1490 = trunc i8 %1489 to i1
  br i1 %1490, label %1491, label %1513

1491:                                             ; preds = %1484
  %1492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1493 = call i32 @fileno(ptr noundef %1492) #10
  %1494 = call i32 @isatty(i32 noundef %1493) #10
  %1495 = icmp ne i32 %1494, 0
  br i1 %1495, label %1496, label %1513

1496:                                             ; preds = %1491
  %1497 = load i32, ptr %50, align 4, !tbaa !5
  %1498 = call ptr @__errno_location() #11
  store i32 %1497, ptr %1498, align 4, !tbaa !5
  %1499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1500 = load i32, ptr @test_count, align 4, !tbaa !5
  %1501 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1502 = load i32, ptr %1501, align 4, !tbaa !5
  %1503 = call ptr @s2n_strerror(i32 noundef %1502, ptr noundef @.str.4)
  %1504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1505 = load i32, ptr %1504, align 4, !tbaa !5
  %1506 = call ptr @s2n_strerror_debug(i32 noundef %1505, ptr noundef @.str.4)
  %1507 = call ptr @__errno_location() #11
  %1508 = load i32, ptr %1507, align 4, !tbaa !5
  %1509 = call ptr @strerror(i32 noundef %1508) #10
  %1510 = call ptr @__errno_location() #11
  %1511 = load i32, ptr %1510, align 4, !tbaa !5
  %1512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1499, ptr noundef @.str.2, i32 noundef %1500, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1503, ptr noundef %1506, ptr noundef %1509, i32 noundef %1511) #10
  br label %1530

1513:                                             ; preds = %1491, %1484
  %1514 = load i32, ptr %50, align 4, !tbaa !5
  %1515 = call ptr @__errno_location() #11
  store i32 %1514, ptr %1515, align 4, !tbaa !5
  %1516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1517 = load i32, ptr @test_count, align 4, !tbaa !5
  %1518 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1519 = load i32, ptr %1518, align 4, !tbaa !5
  %1520 = call ptr @s2n_strerror(i32 noundef %1519, ptr noundef @.str.4)
  %1521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1522 = load i32, ptr %1521, align 4, !tbaa !5
  %1523 = call ptr @s2n_strerror_debug(i32 noundef %1522, ptr noundef @.str.4)
  %1524 = call ptr @__errno_location() #11
  %1525 = load i32, ptr %1524, align 4, !tbaa !5
  %1526 = call ptr @strerror(i32 noundef %1525) #10
  %1527 = call ptr @__errno_location() #11
  %1528 = load i32, ptr %1527, align 4, !tbaa !5
  %1529 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1516, ptr noundef @.str.5, i32 noundef %1517, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1520, ptr noundef %1523, ptr noundef %1526, i32 noundef %1528) #10
  br label %1530

1530:                                             ; preds = %1513, %1496
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %1531

1531:                                             ; preds = %1530
  br label %1532

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

1533:                                             ; No predecessors!
  br label %1534

1534:                                             ; preds = %1533
  br label %1535

1535:                                             ; preds = %1534, %1474
  br label %1536

1536:                                             ; preds = %1535
  br label %1537

1537:                                             ; preds = %1536
  br label %1538

1538:                                             ; preds = %1537
  %1539 = load i32, ptr @test_count, align 4, !tbaa !5
  %1540 = add nsw i32 %1539, 1
  store i32 %1540, ptr @test_count, align 4, !tbaa !5
  %1541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1542 = load i32, ptr %1541, align 4, !tbaa !5
  %1543 = icmp eq i32 %1542, 402653193
  br i1 %1543, label %1597, label %1544

1544:                                             ; preds = %1538
  br label %1545

1545:                                             ; preds = %1544
  br label %1546

1546:                                             ; preds = %1545
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %1547 = call ptr @__errno_location() #11
  %1548 = load i32, ptr %1547, align 4, !tbaa !5
  store i32 %1548, ptr %51, align 4, !tbaa !5
  %1549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1550 = call i32 @s2n_print_stacktrace(ptr noundef %1549)
  %1551 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1552 = trunc i8 %1551 to i1
  br i1 %1552, label %1553, label %1575

1553:                                             ; preds = %1546
  %1554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1555 = call i32 @fileno(ptr noundef %1554) #10
  %1556 = call i32 @isatty(i32 noundef %1555) #10
  %1557 = icmp ne i32 %1556, 0
  br i1 %1557, label %1558, label %1575

1558:                                             ; preds = %1553
  %1559 = load i32, ptr %51, align 4, !tbaa !5
  %1560 = call ptr @__errno_location() #11
  store i32 %1559, ptr %1560, align 4, !tbaa !5
  %1561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1562 = load i32, ptr @test_count, align 4, !tbaa !5
  %1563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  %1565 = call ptr @s2n_strerror(i32 noundef %1564, ptr noundef @.str.4)
  %1566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1567 = load i32, ptr %1566, align 4, !tbaa !5
  %1568 = call ptr @s2n_strerror_debug(i32 noundef %1567, ptr noundef @.str.4)
  %1569 = call ptr @__errno_location() #11
  %1570 = load i32, ptr %1569, align 4, !tbaa !5
  %1571 = call ptr @strerror(i32 noundef %1570) #10
  %1572 = call ptr @__errno_location() #11
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  %1574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1561, ptr noundef @.str.2, i32 noundef %1562, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1565, ptr noundef %1568, ptr noundef %1571, i32 noundef %1573) #10
  br label %1592

1575:                                             ; preds = %1553, %1546
  %1576 = load i32, ptr %51, align 4, !tbaa !5
  %1577 = call ptr @__errno_location() #11
  store i32 %1576, ptr %1577, align 4, !tbaa !5
  %1578 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1579 = load i32, ptr @test_count, align 4, !tbaa !5
  %1580 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1581 = load i32, ptr %1580, align 4, !tbaa !5
  %1582 = call ptr @s2n_strerror(i32 noundef %1581, ptr noundef @.str.4)
  %1583 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1584 = load i32, ptr %1583, align 4, !tbaa !5
  %1585 = call ptr @s2n_strerror_debug(i32 noundef %1584, ptr noundef @.str.4)
  %1586 = call ptr @__errno_location() #11
  %1587 = load i32, ptr %1586, align 4, !tbaa !5
  %1588 = call ptr @strerror(i32 noundef %1587) #10
  %1589 = call ptr @__errno_location() #11
  %1590 = load i32, ptr %1589, align 4, !tbaa !5
  %1591 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1578, ptr noundef @.str.5, i32 noundef %1579, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1582, ptr noundef %1585, ptr noundef %1588, i32 noundef %1590) #10
  br label %1592

1592:                                             ; preds = %1575, %1558
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1593

1593:                                             ; preds = %1592
  br label %1594

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

1595:                                             ; No predecessors!
  br label %1596

1596:                                             ; preds = %1595
  br label %1597

1597:                                             ; preds = %1596, %1538
  br label %1598

1598:                                             ; preds = %1597
  br label %1599

1599:                                             ; preds = %1598
  br label %1600

1600:                                             ; preds = %1599
  %1601 = load i32, ptr @test_count, align 4, !tbaa !5
  %1602 = add nsw i32 %1601, 1
  store i32 %1602, ptr @test_count, align 4, !tbaa !5
  %1603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1604 = load i32, ptr %1603, align 4, !tbaa !5
  %1605 = call ptr @s2n_strerror_debug(i32 noundef %1604, ptr noundef @.str.4)
  %1606 = icmp eq ptr %1605, null
  br i1 %1606, label %1607, label %1660

1607:                                             ; preds = %1600
  br label %1608

1608:                                             ; preds = %1607
  br label %1609

1609:                                             ; preds = %1608
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %1610 = call ptr @__errno_location() #11
  %1611 = load i32, ptr %1610, align 4, !tbaa !5
  store i32 %1611, ptr %52, align 4, !tbaa !5
  %1612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1613 = call i32 @s2n_print_stacktrace(ptr noundef %1612)
  %1614 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1615 = trunc i8 %1614 to i1
  br i1 %1615, label %1616, label %1638

1616:                                             ; preds = %1609
  %1617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1618 = call i32 @fileno(ptr noundef %1617) #10
  %1619 = call i32 @isatty(i32 noundef %1618) #10
  %1620 = icmp ne i32 %1619, 0
  br i1 %1620, label %1621, label %1638

1621:                                             ; preds = %1616
  %1622 = load i32, ptr %52, align 4, !tbaa !5
  %1623 = call ptr @__errno_location() #11
  store i32 %1622, ptr %1623, align 4, !tbaa !5
  %1624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1625 = load i32, ptr @test_count, align 4, !tbaa !5
  %1626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1627 = load i32, ptr %1626, align 4, !tbaa !5
  %1628 = call ptr @s2n_strerror(i32 noundef %1627, ptr noundef @.str.4)
  %1629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1630 = load i32, ptr %1629, align 4, !tbaa !5
  %1631 = call ptr @s2n_strerror_debug(i32 noundef %1630, ptr noundef @.str.4)
  %1632 = call ptr @__errno_location() #11
  %1633 = load i32, ptr %1632, align 4, !tbaa !5
  %1634 = call ptr @strerror(i32 noundef %1633) #10
  %1635 = call ptr @__errno_location() #11
  %1636 = load i32, ptr %1635, align 4, !tbaa !5
  %1637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1624, ptr noundef @.str.2, i32 noundef %1625, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1628, ptr noundef %1631, ptr noundef %1634, i32 noundef %1636) #10
  br label %1655

1638:                                             ; preds = %1616, %1609
  %1639 = load i32, ptr %52, align 4, !tbaa !5
  %1640 = call ptr @__errno_location() #11
  store i32 %1639, ptr %1640, align 4, !tbaa !5
  %1641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1642 = load i32, ptr @test_count, align 4, !tbaa !5
  %1643 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1644 = load i32, ptr %1643, align 4, !tbaa !5
  %1645 = call ptr @s2n_strerror(i32 noundef %1644, ptr noundef @.str.4)
  %1646 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1647 = load i32, ptr %1646, align 4, !tbaa !5
  %1648 = call ptr @s2n_strerror_debug(i32 noundef %1647, ptr noundef @.str.4)
  %1649 = call ptr @__errno_location() #11
  %1650 = load i32, ptr %1649, align 4, !tbaa !5
  %1651 = call ptr @strerror(i32 noundef %1650) #10
  %1652 = call ptr @__errno_location() #11
  %1653 = load i32, ptr %1652, align 4, !tbaa !5
  %1654 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1641, ptr noundef @.str.5, i32 noundef %1642, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1645, ptr noundef %1648, ptr noundef %1651, i32 noundef %1653) #10
  br label %1655

1655:                                             ; preds = %1638, %1621
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %1656

1656:                                             ; preds = %1655
  br label %1657

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

1658:                                             ; No predecessors!
  br label %1659

1659:                                             ; preds = %1658
  br label %1660

1660:                                             ; preds = %1659, %1600
  br label %1661

1661:                                             ; preds = %1660
  br label %1662

1662:                                             ; preds = %1661
  br label %1663

1663:                                             ; preds = %1662
  br label %1664

1664:                                             ; preds = %1663
  br label %1665

1665:                                             ; preds = %1664
  %1666 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1666, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1667 = call ptr @__errno_location() #11
  store i32 0, ptr %1667, align 4, !tbaa !5
  br label %1668

1668:                                             ; preds = %1665
  br label %1669

1669:                                             ; preds = %1668
  br label %1670

1670:                                             ; preds = %1669
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

1672:                                             ; preds = %1671
  br label %1673

1673:                                             ; preds = %1672
  br label %1674

1674:                                             ; preds = %1673
  %1675 = load i32, ptr @test_count, align 4, !tbaa !5
  %1676 = add nsw i32 %1675, 1
  store i32 %1676, ptr @test_count, align 4, !tbaa !5
  %1677 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef @s2n_null_sig_scheme, ptr noundef null)
  %1678 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  store i32 %1677, ptr %1678, align 4
  %1679 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  %1680 = load i32, ptr %1679, align 4
  %1681 = call zeroext i1 @s2n_result_is_error(i32 %1680)
  br i1 %1681, label %1735, label %1682

1682:                                             ; preds = %1674
  br label %1683

1683:                                             ; preds = %1682
  br label %1684

1684:                                             ; preds = %1683
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #10
  %1685 = call ptr @__errno_location() #11
  %1686 = load i32, ptr %1685, align 4, !tbaa !5
  store i32 %1686, ptr %54, align 4, !tbaa !5
  %1687 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1688 = call i32 @s2n_print_stacktrace(ptr noundef %1687)
  %1689 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1690 = trunc i8 %1689 to i1
  br i1 %1690, label %1691, label %1713

1691:                                             ; preds = %1684
  %1692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1693 = call i32 @fileno(ptr noundef %1692) #10
  %1694 = call i32 @isatty(i32 noundef %1693) #10
  %1695 = icmp ne i32 %1694, 0
  br i1 %1695, label %1696, label %1713

1696:                                             ; preds = %1691
  %1697 = load i32, ptr %54, align 4, !tbaa !5
  %1698 = call ptr @__errno_location() #11
  store i32 %1697, ptr %1698, align 4, !tbaa !5
  %1699 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1700 = load i32, ptr @test_count, align 4, !tbaa !5
  %1701 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1702 = load i32, ptr %1701, align 4, !tbaa !5
  %1703 = call ptr @s2n_strerror(i32 noundef %1702, ptr noundef @.str.4)
  %1704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1705 = load i32, ptr %1704, align 4, !tbaa !5
  %1706 = call ptr @s2n_strerror_debug(i32 noundef %1705, ptr noundef @.str.4)
  %1707 = call ptr @__errno_location() #11
  %1708 = load i32, ptr %1707, align 4, !tbaa !5
  %1709 = call ptr @strerror(i32 noundef %1708) #10
  %1710 = call ptr @__errno_location() #11
  %1711 = load i32, ptr %1710, align 4, !tbaa !5
  %1712 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1699, ptr noundef @.str.2, i32 noundef %1700, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 116, ptr noundef %1703, ptr noundef %1706, ptr noundef %1709, i32 noundef %1711) #10
  br label %1730

1713:                                             ; preds = %1691, %1684
  %1714 = load i32, ptr %54, align 4, !tbaa !5
  %1715 = call ptr @__errno_location() #11
  store i32 %1714, ptr %1715, align 4, !tbaa !5
  %1716 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1717 = load i32, ptr @test_count, align 4, !tbaa !5
  %1718 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1719 = load i32, ptr %1718, align 4, !tbaa !5
  %1720 = call ptr @s2n_strerror(i32 noundef %1719, ptr noundef @.str.4)
  %1721 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1722 = load i32, ptr %1721, align 4, !tbaa !5
  %1723 = call ptr @s2n_strerror_debug(i32 noundef %1722, ptr noundef @.str.4)
  %1724 = call ptr @__errno_location() #11
  %1725 = load i32, ptr %1724, align 4, !tbaa !5
  %1726 = call ptr @strerror(i32 noundef %1725) #10
  %1727 = call ptr @__errno_location() #11
  %1728 = load i32, ptr %1727, align 4, !tbaa !5
  %1729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1716, ptr noundef @.str.5, i32 noundef %1717, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 116, ptr noundef %1720, ptr noundef %1723, ptr noundef %1726, i32 noundef %1728) #10
  br label %1730

1730:                                             ; preds = %1713, %1696
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #10
  br label %1731

1731:                                             ; preds = %1730
  br label %1732

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

1733:                                             ; No predecessors!
  br label %1734

1734:                                             ; preds = %1733
  br label %1735

1735:                                             ; preds = %1734, %1674
  br label %1736

1736:                                             ; preds = %1735
  br label %1737

1737:                                             ; preds = %1736
  br label %1738

1738:                                             ; preds = %1737
  %1739 = load i32, ptr @test_count, align 4, !tbaa !5
  %1740 = add nsw i32 %1739, 1
  store i32 %1740, ptr @test_count, align 4, !tbaa !5
  %1741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1742 = load i32, ptr %1741, align 4, !tbaa !5
  %1743 = icmp eq i32 %1742, 402653193
  br i1 %1743, label %1797, label %1744

1744:                                             ; preds = %1738
  br label %1745

1745:                                             ; preds = %1744
  br label %1746

1746:                                             ; preds = %1745
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  %1747 = call ptr @__errno_location() #11
  %1748 = load i32, ptr %1747, align 4, !tbaa !5
  store i32 %1748, ptr %55, align 4, !tbaa !5
  %1749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1750 = call i32 @s2n_print_stacktrace(ptr noundef %1749)
  %1751 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1752 = trunc i8 %1751 to i1
  br i1 %1752, label %1753, label %1775

1753:                                             ; preds = %1746
  %1754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1755 = call i32 @fileno(ptr noundef %1754) #10
  %1756 = call i32 @isatty(i32 noundef %1755) #10
  %1757 = icmp ne i32 %1756, 0
  br i1 %1757, label %1758, label %1775

1758:                                             ; preds = %1753
  %1759 = load i32, ptr %55, align 4, !tbaa !5
  %1760 = call ptr @__errno_location() #11
  store i32 %1759, ptr %1760, align 4, !tbaa !5
  %1761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1762 = load i32, ptr @test_count, align 4, !tbaa !5
  %1763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1764 = load i32, ptr %1763, align 4, !tbaa !5
  %1765 = call ptr @s2n_strerror(i32 noundef %1764, ptr noundef @.str.4)
  %1766 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1767 = load i32, ptr %1766, align 4, !tbaa !5
  %1768 = call ptr @s2n_strerror_debug(i32 noundef %1767, ptr noundef @.str.4)
  %1769 = call ptr @__errno_location() #11
  %1770 = load i32, ptr %1769, align 4, !tbaa !5
  %1771 = call ptr @strerror(i32 noundef %1770) #10
  %1772 = call ptr @__errno_location() #11
  %1773 = load i32, ptr %1772, align 4, !tbaa !5
  %1774 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1761, ptr noundef @.str.2, i32 noundef %1762, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 116, ptr noundef %1765, ptr noundef %1768, ptr noundef %1771, i32 noundef %1773) #10
  br label %1792

1775:                                             ; preds = %1753, %1746
  %1776 = load i32, ptr %55, align 4, !tbaa !5
  %1777 = call ptr @__errno_location() #11
  store i32 %1776, ptr %1777, align 4, !tbaa !5
  %1778 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1779 = load i32, ptr @test_count, align 4, !tbaa !5
  %1780 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1781 = load i32, ptr %1780, align 4, !tbaa !5
  %1782 = call ptr @s2n_strerror(i32 noundef %1781, ptr noundef @.str.4)
  %1783 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1784 = load i32, ptr %1783, align 4, !tbaa !5
  %1785 = call ptr @s2n_strerror_debug(i32 noundef %1784, ptr noundef @.str.4)
  %1786 = call ptr @__errno_location() #11
  %1787 = load i32, ptr %1786, align 4, !tbaa !5
  %1788 = call ptr @strerror(i32 noundef %1787) #10
  %1789 = call ptr @__errno_location() #11
  %1790 = load i32, ptr %1789, align 4, !tbaa !5
  %1791 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1778, ptr noundef @.str.5, i32 noundef %1779, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 116, ptr noundef %1782, ptr noundef %1785, ptr noundef %1788, i32 noundef %1790) #10
  br label %1792

1792:                                             ; preds = %1775, %1758
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %1793

1793:                                             ; preds = %1792
  br label %1794

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

1795:                                             ; No predecessors!
  br label %1796

1796:                                             ; preds = %1795
  br label %1797

1797:                                             ; preds = %1796, %1738
  br label %1798

1798:                                             ; preds = %1797
  br label %1799

1799:                                             ; preds = %1798
  br label %1800

1800:                                             ; preds = %1799
  %1801 = load i32, ptr @test_count, align 4, !tbaa !5
  %1802 = add nsw i32 %1801, 1
  store i32 %1802, ptr @test_count, align 4, !tbaa !5
  %1803 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1804 = load i32, ptr %1803, align 4, !tbaa !5
  %1805 = call ptr @s2n_strerror_debug(i32 noundef %1804, ptr noundef @.str.4)
  %1806 = icmp eq ptr %1805, null
  br i1 %1806, label %1807, label %1860

1807:                                             ; preds = %1800
  br label %1808

1808:                                             ; preds = %1807
  br label %1809

1809:                                             ; preds = %1808
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  %1810 = call ptr @__errno_location() #11
  %1811 = load i32, ptr %1810, align 4, !tbaa !5
  store i32 %1811, ptr %56, align 4, !tbaa !5
  %1812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1813 = call i32 @s2n_print_stacktrace(ptr noundef %1812)
  %1814 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1815 = trunc i8 %1814 to i1
  br i1 %1815, label %1816, label %1838

1816:                                             ; preds = %1809
  %1817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1818 = call i32 @fileno(ptr noundef %1817) #10
  %1819 = call i32 @isatty(i32 noundef %1818) #10
  %1820 = icmp ne i32 %1819, 0
  br i1 %1820, label %1821, label %1838

1821:                                             ; preds = %1816
  %1822 = load i32, ptr %56, align 4, !tbaa !5
  %1823 = call ptr @__errno_location() #11
  store i32 %1822, ptr %1823, align 4, !tbaa !5
  %1824 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1825 = load i32, ptr @test_count, align 4, !tbaa !5
  %1826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1827 = load i32, ptr %1826, align 4, !tbaa !5
  %1828 = call ptr @s2n_strerror(i32 noundef %1827, ptr noundef @.str.4)
  %1829 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1830 = load i32, ptr %1829, align 4, !tbaa !5
  %1831 = call ptr @s2n_strerror_debug(i32 noundef %1830, ptr noundef @.str.4)
  %1832 = call ptr @__errno_location() #11
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = call ptr @strerror(i32 noundef %1833) #10
  %1835 = call ptr @__errno_location() #11
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1824, ptr noundef @.str.2, i32 noundef %1825, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 116, ptr noundef %1828, ptr noundef %1831, ptr noundef %1834, i32 noundef %1836) #10
  br label %1855

1838:                                             ; preds = %1816, %1809
  %1839 = load i32, ptr %56, align 4, !tbaa !5
  %1840 = call ptr @__errno_location() #11
  store i32 %1839, ptr %1840, align 4, !tbaa !5
  %1841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1842 = load i32, ptr @test_count, align 4, !tbaa !5
  %1843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1844 = load i32, ptr %1843, align 4, !tbaa !5
  %1845 = call ptr @s2n_strerror(i32 noundef %1844, ptr noundef @.str.4)
  %1846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1847 = load i32, ptr %1846, align 4, !tbaa !5
  %1848 = call ptr @s2n_strerror_debug(i32 noundef %1847, ptr noundef @.str.4)
  %1849 = call ptr @__errno_location() #11
  %1850 = load i32, ptr %1849, align 4, !tbaa !5
  %1851 = call ptr @strerror(i32 noundef %1850) #10
  %1852 = call ptr @__errno_location() #11
  %1853 = load i32, ptr %1852, align 4, !tbaa !5
  %1854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1841, ptr noundef @.str.5, i32 noundef %1842, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 116, ptr noundef %1845, ptr noundef %1848, ptr noundef %1851, i32 noundef %1853) #10
  br label %1855

1855:                                             ; preds = %1838, %1821
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %1856

1856:                                             ; preds = %1855
  br label %1857

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

1858:                                             ; No predecessors!
  br label %1859

1859:                                             ; preds = %1858
  br label %1860

1860:                                             ; preds = %1859, %1800
  br label %1861

1861:                                             ; preds = %1860
  br label %1862

1862:                                             ; preds = %1861
  br label %1863

1863:                                             ; preds = %1862
  br label %1864

1864:                                             ; preds = %1863
  br label %1865

1865:                                             ; preds = %1864
  %1866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1866, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1867 = call ptr @__errno_location() #11
  store i32 0, ptr %1867, align 4, !tbaa !5
  br label %1868

1868:                                             ; preds = %1865
  br label %1869

1869:                                             ; preds = %1868
  br label %1870

1870:                                             ; preds = %1869
  br label %1871

1871:                                             ; preds = %1870
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %57, ptr align 16 @__const.main.valid.26, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  store i64 0, ptr %58, align 8, !tbaa !15
  br label %1872

1872:                                             ; preds = %2005, %1871
  %1873 = load i64, ptr %58, align 8, !tbaa !15
  %1874 = icmp ult i64 %1873, 3
  br i1 %1874, label %1876, label %1875

1875:                                             ; preds = %1872
  store i32 198, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %2008

1876:                                             ; preds = %1872
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #10
  store i8 0, ptr %59, align 1, !tbaa !11
  br label %1877

1877:                                             ; preds = %1876
  %1878 = load i32, ptr @test_count, align 4, !tbaa !5
  %1879 = add nsw i32 %1878, 1
  store i32 %1879, ptr @test_count, align 4, !tbaa !5
  %1880 = load i64, ptr %58, align 8, !tbaa !15
  %1881 = getelementptr inbounds [3 x ptr], ptr %57, i64 0, i64 %1880
  %1882 = load ptr, ptr %1881, align 8, !tbaa !9
  %1883 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %1882, ptr noundef %59)
  %1884 = getelementptr inbounds %struct.s2n_result, ptr %60, i32 0, i32 0
  store i32 %1883, ptr %1884, align 4
  %1885 = getelementptr inbounds %struct.s2n_result, ptr %60, i32 0, i32 0
  %1886 = load i32, ptr %1885, align 4
  %1887 = call zeroext i1 @s2n_result_is_ok(i32 %1886)
  br i1 %1887, label %1941, label %1888

1888:                                             ; preds = %1877
  br label %1889

1889:                                             ; preds = %1888
  br label %1890

1890:                                             ; preds = %1889
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  %1891 = call ptr @__errno_location() #11
  %1892 = load i32, ptr %1891, align 4, !tbaa !5
  store i32 %1892, ptr %61, align 4, !tbaa !5
  %1893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1894 = call i32 @s2n_print_stacktrace(ptr noundef %1893)
  %1895 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1896 = trunc i8 %1895 to i1
  br i1 %1896, label %1897, label %1919

1897:                                             ; preds = %1890
  %1898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1899 = call i32 @fileno(ptr noundef %1898) #10
  %1900 = call i32 @isatty(i32 noundef %1899) #10
  %1901 = icmp ne i32 %1900, 0
  br i1 %1901, label %1902, label %1919

1902:                                             ; preds = %1897
  %1903 = load i32, ptr %61, align 4, !tbaa !5
  %1904 = call ptr @__errno_location() #11
  store i32 %1903, ptr %1904, align 4, !tbaa !5
  %1905 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1906 = load i32, ptr @test_count, align 4, !tbaa !5
  %1907 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1908 = load i32, ptr %1907, align 4, !tbaa !5
  %1909 = call ptr @s2n_strerror(i32 noundef %1908, ptr noundef @.str.4)
  %1910 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1911 = load i32, ptr %1910, align 4, !tbaa !5
  %1912 = call ptr @s2n_strerror_debug(i32 noundef %1911, ptr noundef @.str.4)
  %1913 = call ptr @__errno_location() #11
  %1914 = load i32, ptr %1913, align 4, !tbaa !5
  %1915 = call ptr @strerror(i32 noundef %1914) #10
  %1916 = call ptr @__errno_location() #11
  %1917 = load i32, ptr %1916, align 4, !tbaa !5
  %1918 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1905, ptr noundef @.str.2, i32 noundef %1906, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 127, ptr noundef %1909, ptr noundef %1912, ptr noundef %1915, i32 noundef %1917) #10
  br label %1936

1919:                                             ; preds = %1897, %1890
  %1920 = load i32, ptr %61, align 4, !tbaa !5
  %1921 = call ptr @__errno_location() #11
  store i32 %1920, ptr %1921, align 4, !tbaa !5
  %1922 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1923 = load i32, ptr @test_count, align 4, !tbaa !5
  %1924 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1925 = load i32, ptr %1924, align 4, !tbaa !5
  %1926 = call ptr @s2n_strerror(i32 noundef %1925, ptr noundef @.str.4)
  %1927 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1928 = load i32, ptr %1927, align 4, !tbaa !5
  %1929 = call ptr @s2n_strerror_debug(i32 noundef %1928, ptr noundef @.str.4)
  %1930 = call ptr @__errno_location() #11
  %1931 = load i32, ptr %1930, align 4, !tbaa !5
  %1932 = call ptr @strerror(i32 noundef %1931) #10
  %1933 = call ptr @__errno_location() #11
  %1934 = load i32, ptr %1933, align 4, !tbaa !5
  %1935 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1922, ptr noundef @.str.5, i32 noundef %1923, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 127, ptr noundef %1926, ptr noundef %1929, ptr noundef %1932, i32 noundef %1934) #10
  br label %1936

1936:                                             ; preds = %1919, %1902
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %1937

1937:                                             ; preds = %1936
  br label %1938

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

1939:                                             ; No predecessors!
  br label %1940

1940:                                             ; preds = %1939
  br label %1941

1941:                                             ; preds = %1940, %1877
  br label %1942

1942:                                             ; preds = %1941
  br label %1943

1943:                                             ; preds = %1942
  br label %1944

1944:                                             ; preds = %1943
  %1945 = load i32, ptr @test_count, align 4, !tbaa !5
  %1946 = add nsw i32 %1945, 1
  store i32 %1946, ptr @test_count, align 4, !tbaa !5
  %1947 = load i8, ptr %59, align 1, !tbaa !11, !range !13, !noundef !14
  %1948 = trunc i8 %1947 to i1
  br i1 %1948, label %2002, label %1949

1949:                                             ; preds = %1944
  br label %1950

1950:                                             ; preds = %1949
  br label %1951

1951:                                             ; preds = %1950
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %1952 = call ptr @__errno_location() #11
  %1953 = load i32, ptr %1952, align 4, !tbaa !5
  store i32 %1953, ptr %62, align 4, !tbaa !5
  %1954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1955 = call i32 @s2n_print_stacktrace(ptr noundef %1954)
  %1956 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1957 = trunc i8 %1956 to i1
  br i1 %1957, label %1958, label %1980

1958:                                             ; preds = %1951
  %1959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1960 = call i32 @fileno(ptr noundef %1959) #10
  %1961 = call i32 @isatty(i32 noundef %1960) #10
  %1962 = icmp ne i32 %1961, 0
  br i1 %1962, label %1963, label %1980

1963:                                             ; preds = %1958
  %1964 = load i32, ptr %62, align 4, !tbaa !5
  %1965 = call ptr @__errno_location() #11
  store i32 %1964, ptr %1965, align 4, !tbaa !5
  %1966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1967 = load i32, ptr @test_count, align 4, !tbaa !5
  %1968 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1969 = load i32, ptr %1968, align 4, !tbaa !5
  %1970 = call ptr @s2n_strerror(i32 noundef %1969, ptr noundef @.str.4)
  %1971 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1972 = load i32, ptr %1971, align 4, !tbaa !5
  %1973 = call ptr @s2n_strerror_debug(i32 noundef %1972, ptr noundef @.str.4)
  %1974 = call ptr @__errno_location() #11
  %1975 = load i32, ptr %1974, align 4, !tbaa !5
  %1976 = call ptr @strerror(i32 noundef %1975) #10
  %1977 = call ptr @__errno_location() #11
  %1978 = load i32, ptr %1977, align 4, !tbaa !5
  %1979 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1966, ptr noundef @.str.2, i32 noundef %1967, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 128, ptr noundef %1970, ptr noundef %1973, ptr noundef %1976, i32 noundef %1978) #10
  br label %1997

1980:                                             ; preds = %1958, %1951
  %1981 = load i32, ptr %62, align 4, !tbaa !5
  %1982 = call ptr @__errno_location() #11
  store i32 %1981, ptr %1982, align 4, !tbaa !5
  %1983 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1984 = load i32, ptr @test_count, align 4, !tbaa !5
  %1985 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1986 = load i32, ptr %1985, align 4, !tbaa !5
  %1987 = call ptr @s2n_strerror(i32 noundef %1986, ptr noundef @.str.4)
  %1988 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1989 = load i32, ptr %1988, align 4, !tbaa !5
  %1990 = call ptr @s2n_strerror_debug(i32 noundef %1989, ptr noundef @.str.4)
  %1991 = call ptr @__errno_location() #11
  %1992 = load i32, ptr %1991, align 4, !tbaa !5
  %1993 = call ptr @strerror(i32 noundef %1992) #10
  %1994 = call ptr @__errno_location() #11
  %1995 = load i32, ptr %1994, align 4, !tbaa !5
  %1996 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1983, ptr noundef @.str.5, i32 noundef %1984, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 128, ptr noundef %1987, ptr noundef %1990, ptr noundef %1993, i32 noundef %1995) #10
  br label %1997

1997:                                             ; preds = %1980, %1963
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %1998

1998:                                             ; preds = %1997
  br label %1999

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

2000:                                             ; No predecessors!
  br label %2001

2001:                                             ; preds = %2000
  br label %2002

2002:                                             ; preds = %2001, %1944
  br label %2003

2003:                                             ; preds = %2002
  br label %2004

2004:                                             ; preds = %2003
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #10
  br label %2005

2005:                                             ; preds = %2004
  %2006 = load i64, ptr %58, align 8, !tbaa !15
  %2007 = add i64 %2006, 1
  store i64 %2007, ptr %58, align 8, !tbaa !15
  br label %1872, !llvm.loop !32

2008:                                             ; preds = %1875
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %63, ptr align 16 @__const.main.invalid.28, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  store i64 0, ptr %64, align 8, !tbaa !15
  br label %2009

2009:                                             ; preds = %2142, %2008
  %2010 = load i64, ptr %64, align 8, !tbaa !15
  %2011 = icmp ult i64 %2010, 4
  br i1 %2011, label %2013, label %2012

2012:                                             ; preds = %2009
  store i32 213, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %2145

2013:                                             ; preds = %2009
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #10
  store i8 1, ptr %65, align 1, !tbaa !11
  br label %2014

2014:                                             ; preds = %2013
  %2015 = load i32, ptr @test_count, align 4, !tbaa !5
  %2016 = add nsw i32 %2015, 1
  store i32 %2016, ptr @test_count, align 4, !tbaa !5
  %2017 = load i64, ptr %64, align 8, !tbaa !15
  %2018 = getelementptr inbounds [4 x ptr], ptr %63, i64 0, i64 %2017
  %2019 = load ptr, ptr %2018, align 8, !tbaa !9
  %2020 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %2019, ptr noundef %65)
  %2021 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  store i32 %2020, ptr %2021, align 4
  %2022 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  %2023 = load i32, ptr %2022, align 4
  %2024 = call zeroext i1 @s2n_result_is_ok(i32 %2023)
  br i1 %2024, label %2078, label %2025

2025:                                             ; preds = %2014
  br label %2026

2026:                                             ; preds = %2025
  br label %2027

2027:                                             ; preds = %2026
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  %2028 = call ptr @__errno_location() #11
  %2029 = load i32, ptr %2028, align 4, !tbaa !5
  store i32 %2029, ptr %67, align 4, !tbaa !5
  %2030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2031 = call i32 @s2n_print_stacktrace(ptr noundef %2030)
  %2032 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2033 = trunc i8 %2032 to i1
  br i1 %2033, label %2034, label %2056

2034:                                             ; preds = %2027
  %2035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2036 = call i32 @fileno(ptr noundef %2035) #10
  %2037 = call i32 @isatty(i32 noundef %2036) #10
  %2038 = icmp ne i32 %2037, 0
  br i1 %2038, label %2039, label %2056

2039:                                             ; preds = %2034
  %2040 = load i32, ptr %67, align 4, !tbaa !5
  %2041 = call ptr @__errno_location() #11
  store i32 %2040, ptr %2041, align 4, !tbaa !5
  %2042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2043 = load i32, ptr @test_count, align 4, !tbaa !5
  %2044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2045 = load i32, ptr %2044, align 4, !tbaa !5
  %2046 = call ptr @s2n_strerror(i32 noundef %2045, ptr noundef @.str.4)
  %2047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2048 = load i32, ptr %2047, align 4, !tbaa !5
  %2049 = call ptr @s2n_strerror_debug(i32 noundef %2048, ptr noundef @.str.4)
  %2050 = call ptr @__errno_location() #11
  %2051 = load i32, ptr %2050, align 4, !tbaa !5
  %2052 = call ptr @strerror(i32 noundef %2051) #10
  %2053 = call ptr @__errno_location() #11
  %2054 = load i32, ptr %2053, align 4, !tbaa !5
  %2055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2042, ptr noundef @.str.2, i32 noundef %2043, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 140, ptr noundef %2046, ptr noundef %2049, ptr noundef %2052, i32 noundef %2054) #10
  br label %2073

2056:                                             ; preds = %2034, %2027
  %2057 = load i32, ptr %67, align 4, !tbaa !5
  %2058 = call ptr @__errno_location() #11
  store i32 %2057, ptr %2058, align 4, !tbaa !5
  %2059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2060 = load i32, ptr @test_count, align 4, !tbaa !5
  %2061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2062 = load i32, ptr %2061, align 4, !tbaa !5
  %2063 = call ptr @s2n_strerror(i32 noundef %2062, ptr noundef @.str.4)
  %2064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2065 = load i32, ptr %2064, align 4, !tbaa !5
  %2066 = call ptr @s2n_strerror_debug(i32 noundef %2065, ptr noundef @.str.4)
  %2067 = call ptr @__errno_location() #11
  %2068 = load i32, ptr %2067, align 4, !tbaa !5
  %2069 = call ptr @strerror(i32 noundef %2068) #10
  %2070 = call ptr @__errno_location() #11
  %2071 = load i32, ptr %2070, align 4, !tbaa !5
  %2072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2059, ptr noundef @.str.5, i32 noundef %2060, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 140, ptr noundef %2063, ptr noundef %2066, ptr noundef %2069, i32 noundef %2071) #10
  br label %2073

2073:                                             ; preds = %2056, %2039
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  br label %2074

2074:                                             ; preds = %2073
  br label %2075

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

2076:                                             ; No predecessors!
  br label %2077

2077:                                             ; preds = %2076
  br label %2078

2078:                                             ; preds = %2077, %2014
  br label %2079

2079:                                             ; preds = %2078
  br label %2080

2080:                                             ; preds = %2079
  br label %2081

2081:                                             ; preds = %2080
  %2082 = load i32, ptr @test_count, align 4, !tbaa !5
  %2083 = add nsw i32 %2082, 1
  store i32 %2083, ptr @test_count, align 4, !tbaa !5
  %2084 = load i8, ptr %65, align 1, !tbaa !11, !range !13, !noundef !14
  %2085 = trunc i8 %2084 to i1
  br i1 %2085, label %2086, label %2139

2086:                                             ; preds = %2081
  br label %2087

2087:                                             ; preds = %2086
  br label %2088

2088:                                             ; preds = %2087
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  %2089 = call ptr @__errno_location() #11
  %2090 = load i32, ptr %2089, align 4, !tbaa !5
  store i32 %2090, ptr %68, align 4, !tbaa !5
  %2091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2092 = call i32 @s2n_print_stacktrace(ptr noundef %2091)
  %2093 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2094 = trunc i8 %2093 to i1
  br i1 %2094, label %2095, label %2117

2095:                                             ; preds = %2088
  %2096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2097 = call i32 @fileno(ptr noundef %2096) #10
  %2098 = call i32 @isatty(i32 noundef %2097) #10
  %2099 = icmp ne i32 %2098, 0
  br i1 %2099, label %2100, label %2117

2100:                                             ; preds = %2095
  %2101 = load i32, ptr %68, align 4, !tbaa !5
  %2102 = call ptr @__errno_location() #11
  store i32 %2101, ptr %2102, align 4, !tbaa !5
  %2103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2104 = load i32, ptr @test_count, align 4, !tbaa !5
  %2105 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2106 = load i32, ptr %2105, align 4, !tbaa !5
  %2107 = call ptr @s2n_strerror(i32 noundef %2106, ptr noundef @.str.4)
  %2108 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2109 = load i32, ptr %2108, align 4, !tbaa !5
  %2110 = call ptr @s2n_strerror_debug(i32 noundef %2109, ptr noundef @.str.4)
  %2111 = call ptr @__errno_location() #11
  %2112 = load i32, ptr %2111, align 4, !tbaa !5
  %2113 = call ptr @strerror(i32 noundef %2112) #10
  %2114 = call ptr @__errno_location() #11
  %2115 = load i32, ptr %2114, align 4, !tbaa !5
  %2116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2103, ptr noundef @.str.2, i32 noundef %2104, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 141, ptr noundef %2107, ptr noundef %2110, ptr noundef %2113, i32 noundef %2115) #10
  br label %2134

2117:                                             ; preds = %2095, %2088
  %2118 = load i32, ptr %68, align 4, !tbaa !5
  %2119 = call ptr @__errno_location() #11
  store i32 %2118, ptr %2119, align 4, !tbaa !5
  %2120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2121 = load i32, ptr @test_count, align 4, !tbaa !5
  %2122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2123 = load i32, ptr %2122, align 4, !tbaa !5
  %2124 = call ptr @s2n_strerror(i32 noundef %2123, ptr noundef @.str.4)
  %2125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2126 = load i32, ptr %2125, align 4, !tbaa !5
  %2127 = call ptr @s2n_strerror_debug(i32 noundef %2126, ptr noundef @.str.4)
  %2128 = call ptr @__errno_location() #11
  %2129 = load i32, ptr %2128, align 4, !tbaa !5
  %2130 = call ptr @strerror(i32 noundef %2129) #10
  %2131 = call ptr @__errno_location() #11
  %2132 = load i32, ptr %2131, align 4, !tbaa !5
  %2133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2120, ptr noundef @.str.5, i32 noundef %2121, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 141, ptr noundef %2124, ptr noundef %2127, ptr noundef %2130, i32 noundef %2132) #10
  br label %2134

2134:                                             ; preds = %2117, %2100
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  br label %2135

2135:                                             ; preds = %2134
  br label %2136

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

2137:                                             ; No predecessors!
  br label %2138

2138:                                             ; preds = %2137
  br label %2139

2139:                                             ; preds = %2138, %2081
  br label %2140

2140:                                             ; preds = %2139
  br label %2141

2141:                                             ; preds = %2140
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #10
  br label %2142

2142:                                             ; preds = %2141
  %2143 = load i64, ptr %64, align 8, !tbaa !15
  %2144 = add i64 %2143, 1
  store i64 %2144, ptr %64, align 8, !tbaa !15
  br label %2009, !llvm.loop !33

2145:                                             ; preds = %2012
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %2146 = load ptr, ptr getelementptr inbounds (%struct.s2n_security_policy, ptr @security_policy_test_all, i32 0, i32 3), align 8, !tbaa !34
  store ptr %2146, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  store i64 0, ptr %70, align 8, !tbaa !15
  br label %2147

2147:                                             ; preds = %2319, %2145
  %2148 = load i64, ptr %70, align 8, !tbaa !15
  %2149 = load ptr, ptr %69, align 8, !tbaa !9
  %2150 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %2149, i32 0, i32 0
  %2151 = load i8, ptr %2150, align 8, !tbaa !35
  %2152 = zext i8 %2151 to i64
  %2153 = icmp ult i64 %2148, %2152
  br i1 %2153, label %2155, label %2154

2154:                                             ; preds = %2147
  store i32 228, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %2322

2155:                                             ; preds = %2147
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %2156 = load ptr, ptr %69, align 8, !tbaa !9
  %2157 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %2156, i32 0, i32 1
  %2158 = load ptr, ptr %2157, align 8, !tbaa !37
  %2159 = load i64, ptr %70, align 8, !tbaa !15
  %2160 = getelementptr inbounds ptr, ptr %2158, i64 %2159
  %2161 = load ptr, ptr %2160, align 8, !tbaa !9
  store ptr %2161, ptr %71, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #10
  store i8 0, ptr %72, align 1, !tbaa !11
  br label %2162

2162:                                             ; preds = %2155
  %2163 = load i32, ptr @test_count, align 4, !tbaa !5
  %2164 = add nsw i32 %2163, 1
  store i32 %2164, ptr @test_count, align 4, !tbaa !5
  %2165 = load ptr, ptr %71, align 8, !tbaa !9
  %2166 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %2165, ptr noundef %72)
  %2167 = getelementptr inbounds %struct.s2n_result, ptr %73, i32 0, i32 0
  store i32 %2166, ptr %2167, align 4
  %2168 = getelementptr inbounds %struct.s2n_result, ptr %73, i32 0, i32 0
  %2169 = load i32, ptr %2168, align 4
  %2170 = call zeroext i1 @s2n_result_is_ok(i32 %2169)
  br i1 %2170, label %2224, label %2171

2171:                                             ; preds = %2162
  br label %2172

2172:                                             ; preds = %2171
  br label %2173

2173:                                             ; preds = %2172
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  %2174 = call ptr @__errno_location() #11
  %2175 = load i32, ptr %2174, align 4, !tbaa !5
  store i32 %2175, ptr %74, align 4, !tbaa !5
  %2176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2177 = call i32 @s2n_print_stacktrace(ptr noundef %2176)
  %2178 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2179 = trunc i8 %2178 to i1
  br i1 %2179, label %2180, label %2202

2180:                                             ; preds = %2173
  %2181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2182 = call i32 @fileno(ptr noundef %2181) #10
  %2183 = call i32 @isatty(i32 noundef %2182) #10
  %2184 = icmp ne i32 %2183, 0
  br i1 %2184, label %2185, label %2202

2185:                                             ; preds = %2180
  %2186 = load i32, ptr %74, align 4, !tbaa !5
  %2187 = call ptr @__errno_location() #11
  store i32 %2186, ptr %2187, align 4, !tbaa !5
  %2188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2189 = load i32, ptr @test_count, align 4, !tbaa !5
  %2190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2191 = load i32, ptr %2190, align 4, !tbaa !5
  %2192 = call ptr @s2n_strerror(i32 noundef %2191, ptr noundef @.str.4)
  %2193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2194 = load i32, ptr %2193, align 4, !tbaa !5
  %2195 = call ptr @s2n_strerror_debug(i32 noundef %2194, ptr noundef @.str.4)
  %2196 = call ptr @__errno_location() #11
  %2197 = load i32, ptr %2196, align 4, !tbaa !5
  %2198 = call ptr @strerror(i32 noundef %2197) #10
  %2199 = call ptr @__errno_location() #11
  %2200 = load i32, ptr %2199, align 4, !tbaa !5
  %2201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2188, ptr noundef @.str.2, i32 noundef %2189, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 151, ptr noundef %2192, ptr noundef %2195, ptr noundef %2198, i32 noundef %2200) #10
  br label %2219

2202:                                             ; preds = %2180, %2173
  %2203 = load i32, ptr %74, align 4, !tbaa !5
  %2204 = call ptr @__errno_location() #11
  store i32 %2203, ptr %2204, align 4, !tbaa !5
  %2205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2206 = load i32, ptr @test_count, align 4, !tbaa !5
  %2207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2208 = load i32, ptr %2207, align 4, !tbaa !5
  %2209 = call ptr @s2n_strerror(i32 noundef %2208, ptr noundef @.str.4)
  %2210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2211 = load i32, ptr %2210, align 4, !tbaa !5
  %2212 = call ptr @s2n_strerror_debug(i32 noundef %2211, ptr noundef @.str.4)
  %2213 = call ptr @__errno_location() #11
  %2214 = load i32, ptr %2213, align 4, !tbaa !5
  %2215 = call ptr @strerror(i32 noundef %2214) #10
  %2216 = call ptr @__errno_location() #11
  %2217 = load i32, ptr %2216, align 4, !tbaa !5
  %2218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2205, ptr noundef @.str.5, i32 noundef %2206, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 151, ptr noundef %2209, ptr noundef %2212, ptr noundef %2215, i32 noundef %2217) #10
  br label %2219

2219:                                             ; preds = %2202, %2185
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %2220

2220:                                             ; preds = %2219
  br label %2221

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

2222:                                             ; No predecessors!
  br label %2223

2223:                                             ; preds = %2222
  br label %2224

2224:                                             ; preds = %2223, %2162
  br label %2225

2225:                                             ; preds = %2224
  br label %2226

2226:                                             ; preds = %2225
  %2227 = load i8, ptr %72, align 1, !tbaa !11, !range !13, !noundef !14
  %2228 = trunc i8 %2227 to i1
  br i1 %2228, label %2230, label %2229

2229:                                             ; preds = %2226
  store i32 230, ptr %31, align 4
  br label %2316

2230:                                             ; preds = %2226
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #10
  %2231 = load ptr, ptr getelementptr inbounds (%struct.s2n_security_policy, ptr @security_policy_test_all_fips, i32 0, i32 3), align 8, !tbaa !34
  store ptr %2231, ptr %75, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #10
  store i8 0, ptr %76, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #10
  store i64 0, ptr %77, align 8, !tbaa !15
  br label %2232

2232:                                             ; preds = %2251, %2230
  %2233 = load i64, ptr %77, align 8, !tbaa !15
  %2234 = load ptr, ptr %75, align 8, !tbaa !9
  %2235 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %2234, i32 0, i32 0
  %2236 = load i8, ptr %2235, align 8, !tbaa !35
  %2237 = zext i8 %2236 to i64
  %2238 = icmp ult i64 %2233, %2237
  br i1 %2238, label %2240, label %2239

2239:                                             ; preds = %2232
  store i32 237, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %2254

2240:                                             ; preds = %2232
  %2241 = load ptr, ptr %71, align 8, !tbaa !9
  %2242 = load ptr, ptr %75, align 8, !tbaa !9
  %2243 = getelementptr inbounds %struct.s2n_signature_preferences, ptr %2242, i32 0, i32 1
  %2244 = load ptr, ptr %2243, align 8, !tbaa !37
  %2245 = load i64, ptr %77, align 8, !tbaa !15
  %2246 = getelementptr inbounds ptr, ptr %2244, i64 %2245
  %2247 = load ptr, ptr %2246, align 8, !tbaa !9
  %2248 = icmp eq ptr %2241, %2247
  br i1 %2248, label %2249, label %2250

2249:                                             ; preds = %2240
  store i8 1, ptr %76, align 1, !tbaa !11
  br label %2250

2250:                                             ; preds = %2249, %2240
  br label %2251

2251:                                             ; preds = %2250
  %2252 = load i64, ptr %77, align 8, !tbaa !15
  %2253 = add i64 %2252, 1
  store i64 %2253, ptr %77, align 8, !tbaa !15
  br label %2232, !llvm.loop !38

2254:                                             ; preds = %2239
  br label %2255

2255:                                             ; preds = %2254
  %2256 = load i32, ptr @test_count, align 4, !tbaa !5
  %2257 = add nsw i32 %2256, 1
  store i32 %2257, ptr @test_count, align 4, !tbaa !5
  %2258 = load i8, ptr %76, align 1, !tbaa !11, !range !13, !noundef !14
  %2259 = trunc i8 %2258 to i1
  br i1 %2259, label %2313, label %2260

2260:                                             ; preds = %2255
  br label %2261

2261:                                             ; preds = %2260
  br label %2262

2262:                                             ; preds = %2261
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #10
  %2263 = call ptr @__errno_location() #11
  %2264 = load i32, ptr %2263, align 4, !tbaa !5
  store i32 %2264, ptr %78, align 4, !tbaa !5
  %2265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2266 = call i32 @s2n_print_stacktrace(ptr noundef %2265)
  %2267 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2268 = trunc i8 %2267 to i1
  br i1 %2268, label %2269, label %2291

2269:                                             ; preds = %2262
  %2270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2271 = call i32 @fileno(ptr noundef %2270) #10
  %2272 = call i32 @isatty(i32 noundef %2271) #10
  %2273 = icmp ne i32 %2272, 0
  br i1 %2273, label %2274, label %2291

2274:                                             ; preds = %2269
  %2275 = load i32, ptr %78, align 4, !tbaa !5
  %2276 = call ptr @__errno_location() #11
  store i32 %2275, ptr %2276, align 4, !tbaa !5
  %2277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2278 = load i32, ptr @test_count, align 4, !tbaa !5
  %2279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2280 = load i32, ptr %2279, align 4, !tbaa !5
  %2281 = call ptr @s2n_strerror(i32 noundef %2280, ptr noundef @.str.4)
  %2282 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2283 = load i32, ptr %2282, align 4, !tbaa !5
  %2284 = call ptr @s2n_strerror_debug(i32 noundef %2283, ptr noundef @.str.4)
  %2285 = call ptr @__errno_location() #11
  %2286 = load i32, ptr %2285, align 4, !tbaa !5
  %2287 = call ptr @strerror(i32 noundef %2286) #10
  %2288 = call ptr @__errno_location() #11
  %2289 = load i32, ptr %2288, align 4, !tbaa !5
  %2290 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2277, ptr noundef @.str.2, i32 noundef %2278, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 165, ptr noundef %2281, ptr noundef %2284, ptr noundef %2287, i32 noundef %2289) #10
  br label %2308

2291:                                             ; preds = %2269, %2262
  %2292 = load i32, ptr %78, align 4, !tbaa !5
  %2293 = call ptr @__errno_location() #11
  store i32 %2292, ptr %2293, align 4, !tbaa !5
  %2294 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2295 = load i32, ptr @test_count, align 4, !tbaa !5
  %2296 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2297 = load i32, ptr %2296, align 4, !tbaa !5
  %2298 = call ptr @s2n_strerror(i32 noundef %2297, ptr noundef @.str.4)
  %2299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2300 = load i32, ptr %2299, align 4, !tbaa !5
  %2301 = call ptr @s2n_strerror_debug(i32 noundef %2300, ptr noundef @.str.4)
  %2302 = call ptr @__errno_location() #11
  %2303 = load i32, ptr %2302, align 4, !tbaa !5
  %2304 = call ptr @strerror(i32 noundef %2303) #10
  %2305 = call ptr @__errno_location() #11
  %2306 = load i32, ptr %2305, align 4, !tbaa !5
  %2307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2294, ptr noundef @.str.5, i32 noundef %2295, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 165, ptr noundef %2298, ptr noundef %2301, ptr noundef %2304, i32 noundef %2306) #10
  br label %2308

2308:                                             ; preds = %2291, %2274
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %2309

2309:                                             ; preds = %2308
  br label %2310

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

2311:                                             ; No predecessors!
  br label %2312

2312:                                             ; preds = %2311
  br label %2313

2313:                                             ; preds = %2312, %2255
  br label %2314

2314:                                             ; preds = %2313
  br label %2315

2315:                                             ; preds = %2314
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  store i32 0, ptr %31, align 4
  br label %2316

2316:                                             ; preds = %2315, %2229
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  %2317 = load i32, ptr %31, align 4
  switch i32 %2317, label %3853 [
    i32 0, label %2318
    i32 230, label %2319
  ]

2318:                                             ; preds = %2316
  br label %2319

2319:                                             ; preds = %2318, %2316
  %2320 = load i64, ptr %70, align 8, !tbaa !15
  %2321 = add i64 %2320, 1
  store i64 %2321, ptr %70, align 8, !tbaa !15
  br label %2147, !llvm.loop !39

2322:                                             ; preds = %2154
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #10
  store i8 0, ptr %79, align 1, !tbaa !11
  br label %2323

2323:                                             ; preds = %2322
  br label %2324

2324:                                             ; preds = %2323
  br label %2325

2325:                                             ; preds = %2324
  %2326 = load i32, ptr @test_count, align 4, !tbaa !5
  %2327 = add nsw i32 %2326, 1
  store i32 %2327, ptr @test_count, align 4, !tbaa !5
  %2328 = call i32 @s2n_fips_validate_curve(ptr noundef null, ptr noundef %79)
  %2329 = getelementptr inbounds %struct.s2n_result, ptr %80, i32 0, i32 0
  store i32 %2328, ptr %2329, align 4
  %2330 = getelementptr inbounds %struct.s2n_result, ptr %80, i32 0, i32 0
  %2331 = load i32, ptr %2330, align 4
  %2332 = call zeroext i1 @s2n_result_is_error(i32 %2331)
  br i1 %2332, label %2386, label %2333

2333:                                             ; preds = %2325
  br label %2334

2334:                                             ; preds = %2333
  br label %2335

2335:                                             ; preds = %2334
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  %2336 = call ptr @__errno_location() #11
  %2337 = load i32, ptr %2336, align 4, !tbaa !5
  store i32 %2337, ptr %81, align 4, !tbaa !5
  %2338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2339 = call i32 @s2n_print_stacktrace(ptr noundef %2338)
  %2340 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2341 = trunc i8 %2340 to i1
  br i1 %2341, label %2342, label %2364

2342:                                             ; preds = %2335
  %2343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2344 = call i32 @fileno(ptr noundef %2343) #10
  %2345 = call i32 @isatty(i32 noundef %2344) #10
  %2346 = icmp ne i32 %2345, 0
  br i1 %2346, label %2347, label %2364

2347:                                             ; preds = %2342
  %2348 = load i32, ptr %81, align 4, !tbaa !5
  %2349 = call ptr @__errno_location() #11
  store i32 %2348, ptr %2349, align 4, !tbaa !5
  %2350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2351 = load i32, ptr @test_count, align 4, !tbaa !5
  %2352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2353 = load i32, ptr %2352, align 4, !tbaa !5
  %2354 = call ptr @s2n_strerror(i32 noundef %2353, ptr noundef @.str.4)
  %2355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2356 = load i32, ptr %2355, align 4, !tbaa !5
  %2357 = call ptr @s2n_strerror_debug(i32 noundef %2356, ptr noundef @.str.4)
  %2358 = call ptr @__errno_location() #11
  %2359 = load i32, ptr %2358, align 4, !tbaa !5
  %2360 = call ptr @strerror(i32 noundef %2359) #10
  %2361 = call ptr @__errno_location() #11
  %2362 = load i32, ptr %2361, align 4, !tbaa !5
  %2363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2350, ptr noundef @.str.2, i32 noundef %2351, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 176, ptr noundef %2354, ptr noundef %2357, ptr noundef %2360, i32 noundef %2362) #10
  br label %2381

2364:                                             ; preds = %2342, %2335
  %2365 = load i32, ptr %81, align 4, !tbaa !5
  %2366 = call ptr @__errno_location() #11
  store i32 %2365, ptr %2366, align 4, !tbaa !5
  %2367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2368 = load i32, ptr @test_count, align 4, !tbaa !5
  %2369 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2370 = load i32, ptr %2369, align 4, !tbaa !5
  %2371 = call ptr @s2n_strerror(i32 noundef %2370, ptr noundef @.str.4)
  %2372 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2373 = load i32, ptr %2372, align 4, !tbaa !5
  %2374 = call ptr @s2n_strerror_debug(i32 noundef %2373, ptr noundef @.str.4)
  %2375 = call ptr @__errno_location() #11
  %2376 = load i32, ptr %2375, align 4, !tbaa !5
  %2377 = call ptr @strerror(i32 noundef %2376) #10
  %2378 = call ptr @__errno_location() #11
  %2379 = load i32, ptr %2378, align 4, !tbaa !5
  %2380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2367, ptr noundef @.str.5, i32 noundef %2368, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 176, ptr noundef %2371, ptr noundef %2374, ptr noundef %2377, i32 noundef %2379) #10
  br label %2381

2381:                                             ; preds = %2364, %2347
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %2382

2382:                                             ; preds = %2381
  br label %2383

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

2384:                                             ; No predecessors!
  br label %2385

2385:                                             ; preds = %2384
  br label %2386

2386:                                             ; preds = %2385, %2325
  br label %2387

2387:                                             ; preds = %2386
  br label %2388

2388:                                             ; preds = %2387
  br label %2389

2389:                                             ; preds = %2388
  %2390 = load i32, ptr @test_count, align 4, !tbaa !5
  %2391 = add nsw i32 %2390, 1
  store i32 %2391, ptr @test_count, align 4, !tbaa !5
  %2392 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2393 = load i32, ptr %2392, align 4, !tbaa !5
  %2394 = icmp eq i32 %2393, 402653193
  br i1 %2394, label %2448, label %2395

2395:                                             ; preds = %2389
  br label %2396

2396:                                             ; preds = %2395
  br label %2397

2397:                                             ; preds = %2396
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #10
  %2398 = call ptr @__errno_location() #11
  %2399 = load i32, ptr %2398, align 4, !tbaa !5
  store i32 %2399, ptr %82, align 4, !tbaa !5
  %2400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2401 = call i32 @s2n_print_stacktrace(ptr noundef %2400)
  %2402 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2403 = trunc i8 %2402 to i1
  br i1 %2403, label %2404, label %2426

2404:                                             ; preds = %2397
  %2405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2406 = call i32 @fileno(ptr noundef %2405) #10
  %2407 = call i32 @isatty(i32 noundef %2406) #10
  %2408 = icmp ne i32 %2407, 0
  br i1 %2408, label %2409, label %2426

2409:                                             ; preds = %2404
  %2410 = load i32, ptr %82, align 4, !tbaa !5
  %2411 = call ptr @__errno_location() #11
  store i32 %2410, ptr %2411, align 4, !tbaa !5
  %2412 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2413 = load i32, ptr @test_count, align 4, !tbaa !5
  %2414 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2415 = load i32, ptr %2414, align 4, !tbaa !5
  %2416 = call ptr @s2n_strerror(i32 noundef %2415, ptr noundef @.str.4)
  %2417 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2418 = load i32, ptr %2417, align 4, !tbaa !5
  %2419 = call ptr @s2n_strerror_debug(i32 noundef %2418, ptr noundef @.str.4)
  %2420 = call ptr @__errno_location() #11
  %2421 = load i32, ptr %2420, align 4, !tbaa !5
  %2422 = call ptr @strerror(i32 noundef %2421) #10
  %2423 = call ptr @__errno_location() #11
  %2424 = load i32, ptr %2423, align 4, !tbaa !5
  %2425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2412, ptr noundef @.str.2, i32 noundef %2413, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 176, ptr noundef %2416, ptr noundef %2419, ptr noundef %2422, i32 noundef %2424) #10
  br label %2443

2426:                                             ; preds = %2404, %2397
  %2427 = load i32, ptr %82, align 4, !tbaa !5
  %2428 = call ptr @__errno_location() #11
  store i32 %2427, ptr %2428, align 4, !tbaa !5
  %2429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2430 = load i32, ptr @test_count, align 4, !tbaa !5
  %2431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2432 = load i32, ptr %2431, align 4, !tbaa !5
  %2433 = call ptr @s2n_strerror(i32 noundef %2432, ptr noundef @.str.4)
  %2434 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2435 = load i32, ptr %2434, align 4, !tbaa !5
  %2436 = call ptr @s2n_strerror_debug(i32 noundef %2435, ptr noundef @.str.4)
  %2437 = call ptr @__errno_location() #11
  %2438 = load i32, ptr %2437, align 4, !tbaa !5
  %2439 = call ptr @strerror(i32 noundef %2438) #10
  %2440 = call ptr @__errno_location() #11
  %2441 = load i32, ptr %2440, align 4, !tbaa !5
  %2442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2429, ptr noundef @.str.5, i32 noundef %2430, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 176, ptr noundef %2433, ptr noundef %2436, ptr noundef %2439, i32 noundef %2441) #10
  br label %2443

2443:                                             ; preds = %2426, %2409
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %2444

2444:                                             ; preds = %2443
  br label %2445

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

2446:                                             ; No predecessors!
  br label %2447

2447:                                             ; preds = %2446
  br label %2448

2448:                                             ; preds = %2447, %2389
  br label %2449

2449:                                             ; preds = %2448
  br label %2450

2450:                                             ; preds = %2449
  br label %2451

2451:                                             ; preds = %2450
  %2452 = load i32, ptr @test_count, align 4, !tbaa !5
  %2453 = add nsw i32 %2452, 1
  store i32 %2453, ptr @test_count, align 4, !tbaa !5
  %2454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2455 = load i32, ptr %2454, align 4, !tbaa !5
  %2456 = call ptr @s2n_strerror_debug(i32 noundef %2455, ptr noundef @.str.4)
  %2457 = icmp eq ptr %2456, null
  br i1 %2457, label %2458, label %2511

2458:                                             ; preds = %2451
  br label %2459

2459:                                             ; preds = %2458
  br label %2460

2460:                                             ; preds = %2459
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #10
  %2461 = call ptr @__errno_location() #11
  %2462 = load i32, ptr %2461, align 4, !tbaa !5
  store i32 %2462, ptr %83, align 4, !tbaa !5
  %2463 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2464 = call i32 @s2n_print_stacktrace(ptr noundef %2463)
  %2465 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2466 = trunc i8 %2465 to i1
  br i1 %2466, label %2467, label %2489

2467:                                             ; preds = %2460
  %2468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2469 = call i32 @fileno(ptr noundef %2468) #10
  %2470 = call i32 @isatty(i32 noundef %2469) #10
  %2471 = icmp ne i32 %2470, 0
  br i1 %2471, label %2472, label %2489

2472:                                             ; preds = %2467
  %2473 = load i32, ptr %83, align 4, !tbaa !5
  %2474 = call ptr @__errno_location() #11
  store i32 %2473, ptr %2474, align 4, !tbaa !5
  %2475 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2476 = load i32, ptr @test_count, align 4, !tbaa !5
  %2477 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2478 = load i32, ptr %2477, align 4, !tbaa !5
  %2479 = call ptr @s2n_strerror(i32 noundef %2478, ptr noundef @.str.4)
  %2480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2481 = load i32, ptr %2480, align 4, !tbaa !5
  %2482 = call ptr @s2n_strerror_debug(i32 noundef %2481, ptr noundef @.str.4)
  %2483 = call ptr @__errno_location() #11
  %2484 = load i32, ptr %2483, align 4, !tbaa !5
  %2485 = call ptr @strerror(i32 noundef %2484) #10
  %2486 = call ptr @__errno_location() #11
  %2487 = load i32, ptr %2486, align 4, !tbaa !5
  %2488 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2475, ptr noundef @.str.2, i32 noundef %2476, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 176, ptr noundef %2479, ptr noundef %2482, ptr noundef %2485, i32 noundef %2487) #10
  br label %2506

2489:                                             ; preds = %2467, %2460
  %2490 = load i32, ptr %83, align 4, !tbaa !5
  %2491 = call ptr @__errno_location() #11
  store i32 %2490, ptr %2491, align 4, !tbaa !5
  %2492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2493 = load i32, ptr @test_count, align 4, !tbaa !5
  %2494 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2495 = load i32, ptr %2494, align 4, !tbaa !5
  %2496 = call ptr @s2n_strerror(i32 noundef %2495, ptr noundef @.str.4)
  %2497 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2498 = load i32, ptr %2497, align 4, !tbaa !5
  %2499 = call ptr @s2n_strerror_debug(i32 noundef %2498, ptr noundef @.str.4)
  %2500 = call ptr @__errno_location() #11
  %2501 = load i32, ptr %2500, align 4, !tbaa !5
  %2502 = call ptr @strerror(i32 noundef %2501) #10
  %2503 = call ptr @__errno_location() #11
  %2504 = load i32, ptr %2503, align 4, !tbaa !5
  %2505 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2492, ptr noundef @.str.5, i32 noundef %2493, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 176, ptr noundef %2496, ptr noundef %2499, ptr noundef %2502, i32 noundef %2504) #10
  br label %2506

2506:                                             ; preds = %2489, %2472
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #10
  br label %2507

2507:                                             ; preds = %2506
  br label %2508

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

2509:                                             ; No predecessors!
  br label %2510

2510:                                             ; preds = %2509
  br label %2511

2511:                                             ; preds = %2510, %2451
  br label %2512

2512:                                             ; preds = %2511
  br label %2513

2513:                                             ; preds = %2512
  br label %2514

2514:                                             ; preds = %2513
  br label %2515

2515:                                             ; preds = %2514
  br label %2516

2516:                                             ; preds = %2515
  %2517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2517, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2518 = call ptr @__errno_location() #11
  store i32 0, ptr %2518, align 4, !tbaa !5
  br label %2519

2519:                                             ; preds = %2516
  br label %2520

2520:                                             ; preds = %2519
  br label %2521

2521:                                             ; preds = %2520
  br label %2522

2522:                                             ; preds = %2521
  br label %2523

2523:                                             ; preds = %2522
  br label %2524

2524:                                             ; preds = %2523
  br label %2525

2525:                                             ; preds = %2524
  %2526 = load i32, ptr @test_count, align 4, !tbaa !5
  %2527 = add nsw i32 %2526, 1
  store i32 %2527, ptr @test_count, align 4, !tbaa !5
  %2528 = call i32 @s2n_fips_validate_curve(ptr noundef @s2n_ecc_curve_secp256r1, ptr noundef null)
  %2529 = getelementptr inbounds %struct.s2n_result, ptr %84, i32 0, i32 0
  store i32 %2528, ptr %2529, align 4
  %2530 = getelementptr inbounds %struct.s2n_result, ptr %84, i32 0, i32 0
  %2531 = load i32, ptr %2530, align 4
  %2532 = call zeroext i1 @s2n_result_is_error(i32 %2531)
  br i1 %2532, label %2586, label %2533

2533:                                             ; preds = %2525
  br label %2534

2534:                                             ; preds = %2533
  br label %2535

2535:                                             ; preds = %2534
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #10
  %2536 = call ptr @__errno_location() #11
  %2537 = load i32, ptr %2536, align 4, !tbaa !5
  store i32 %2537, ptr %85, align 4, !tbaa !5
  %2538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2539 = call i32 @s2n_print_stacktrace(ptr noundef %2538)
  %2540 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2541 = trunc i8 %2540 to i1
  br i1 %2541, label %2542, label %2564

2542:                                             ; preds = %2535
  %2543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2544 = call i32 @fileno(ptr noundef %2543) #10
  %2545 = call i32 @isatty(i32 noundef %2544) #10
  %2546 = icmp ne i32 %2545, 0
  br i1 %2546, label %2547, label %2564

2547:                                             ; preds = %2542
  %2548 = load i32, ptr %85, align 4, !tbaa !5
  %2549 = call ptr @__errno_location() #11
  store i32 %2548, ptr %2549, align 4, !tbaa !5
  %2550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2551 = load i32, ptr @test_count, align 4, !tbaa !5
  %2552 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2553 = load i32, ptr %2552, align 4, !tbaa !5
  %2554 = call ptr @s2n_strerror(i32 noundef %2553, ptr noundef @.str.4)
  %2555 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2556 = load i32, ptr %2555, align 4, !tbaa !5
  %2557 = call ptr @s2n_strerror_debug(i32 noundef %2556, ptr noundef @.str.4)
  %2558 = call ptr @__errno_location() #11
  %2559 = load i32, ptr %2558, align 4, !tbaa !5
  %2560 = call ptr @strerror(i32 noundef %2559) #10
  %2561 = call ptr @__errno_location() #11
  %2562 = load i32, ptr %2561, align 4, !tbaa !5
  %2563 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2550, ptr noundef @.str.2, i32 noundef %2551, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 179, ptr noundef %2554, ptr noundef %2557, ptr noundef %2560, i32 noundef %2562) #10
  br label %2581

2564:                                             ; preds = %2542, %2535
  %2565 = load i32, ptr %85, align 4, !tbaa !5
  %2566 = call ptr @__errno_location() #11
  store i32 %2565, ptr %2566, align 4, !tbaa !5
  %2567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2568 = load i32, ptr @test_count, align 4, !tbaa !5
  %2569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2570 = load i32, ptr %2569, align 4, !tbaa !5
  %2571 = call ptr @s2n_strerror(i32 noundef %2570, ptr noundef @.str.4)
  %2572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2573 = load i32, ptr %2572, align 4, !tbaa !5
  %2574 = call ptr @s2n_strerror_debug(i32 noundef %2573, ptr noundef @.str.4)
  %2575 = call ptr @__errno_location() #11
  %2576 = load i32, ptr %2575, align 4, !tbaa !5
  %2577 = call ptr @strerror(i32 noundef %2576) #10
  %2578 = call ptr @__errno_location() #11
  %2579 = load i32, ptr %2578, align 4, !tbaa !5
  %2580 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2567, ptr noundef @.str.5, i32 noundef %2568, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 179, ptr noundef %2571, ptr noundef %2574, ptr noundef %2577, i32 noundef %2579) #10
  br label %2581

2581:                                             ; preds = %2564, %2547
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #10
  br label %2582

2582:                                             ; preds = %2581
  br label %2583

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

2584:                                             ; No predecessors!
  br label %2585

2585:                                             ; preds = %2584
  br label %2586

2586:                                             ; preds = %2585, %2525
  br label %2587

2587:                                             ; preds = %2586
  br label %2588

2588:                                             ; preds = %2587
  br label %2589

2589:                                             ; preds = %2588
  %2590 = load i32, ptr @test_count, align 4, !tbaa !5
  %2591 = add nsw i32 %2590, 1
  store i32 %2591, ptr @test_count, align 4, !tbaa !5
  %2592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2593 = load i32, ptr %2592, align 4, !tbaa !5
  %2594 = icmp eq i32 %2593, 402653193
  br i1 %2594, label %2648, label %2595

2595:                                             ; preds = %2589
  br label %2596

2596:                                             ; preds = %2595
  br label %2597

2597:                                             ; preds = %2596
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #10
  %2598 = call ptr @__errno_location() #11
  %2599 = load i32, ptr %2598, align 4, !tbaa !5
  store i32 %2599, ptr %86, align 4, !tbaa !5
  %2600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2601 = call i32 @s2n_print_stacktrace(ptr noundef %2600)
  %2602 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2603 = trunc i8 %2602 to i1
  br i1 %2603, label %2604, label %2626

2604:                                             ; preds = %2597
  %2605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2606 = call i32 @fileno(ptr noundef %2605) #10
  %2607 = call i32 @isatty(i32 noundef %2606) #10
  %2608 = icmp ne i32 %2607, 0
  br i1 %2608, label %2609, label %2626

2609:                                             ; preds = %2604
  %2610 = load i32, ptr %86, align 4, !tbaa !5
  %2611 = call ptr @__errno_location() #11
  store i32 %2610, ptr %2611, align 4, !tbaa !5
  %2612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2613 = load i32, ptr @test_count, align 4, !tbaa !5
  %2614 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2615 = load i32, ptr %2614, align 4, !tbaa !5
  %2616 = call ptr @s2n_strerror(i32 noundef %2615, ptr noundef @.str.4)
  %2617 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2618 = load i32, ptr %2617, align 4, !tbaa !5
  %2619 = call ptr @s2n_strerror_debug(i32 noundef %2618, ptr noundef @.str.4)
  %2620 = call ptr @__errno_location() #11
  %2621 = load i32, ptr %2620, align 4, !tbaa !5
  %2622 = call ptr @strerror(i32 noundef %2621) #10
  %2623 = call ptr @__errno_location() #11
  %2624 = load i32, ptr %2623, align 4, !tbaa !5
  %2625 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2612, ptr noundef @.str.2, i32 noundef %2613, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 179, ptr noundef %2616, ptr noundef %2619, ptr noundef %2622, i32 noundef %2624) #10
  br label %2643

2626:                                             ; preds = %2604, %2597
  %2627 = load i32, ptr %86, align 4, !tbaa !5
  %2628 = call ptr @__errno_location() #11
  store i32 %2627, ptr %2628, align 4, !tbaa !5
  %2629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2630 = load i32, ptr @test_count, align 4, !tbaa !5
  %2631 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2632 = load i32, ptr %2631, align 4, !tbaa !5
  %2633 = call ptr @s2n_strerror(i32 noundef %2632, ptr noundef @.str.4)
  %2634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2635 = load i32, ptr %2634, align 4, !tbaa !5
  %2636 = call ptr @s2n_strerror_debug(i32 noundef %2635, ptr noundef @.str.4)
  %2637 = call ptr @__errno_location() #11
  %2638 = load i32, ptr %2637, align 4, !tbaa !5
  %2639 = call ptr @strerror(i32 noundef %2638) #10
  %2640 = call ptr @__errno_location() #11
  %2641 = load i32, ptr %2640, align 4, !tbaa !5
  %2642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2629, ptr noundef @.str.5, i32 noundef %2630, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 179, ptr noundef %2633, ptr noundef %2636, ptr noundef %2639, i32 noundef %2641) #10
  br label %2643

2643:                                             ; preds = %2626, %2609
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  br label %2644

2644:                                             ; preds = %2643
  br label %2645

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

2646:                                             ; No predecessors!
  br label %2647

2647:                                             ; preds = %2646
  br label %2648

2648:                                             ; preds = %2647, %2589
  br label %2649

2649:                                             ; preds = %2648
  br label %2650

2650:                                             ; preds = %2649
  br label %2651

2651:                                             ; preds = %2650
  %2652 = load i32, ptr @test_count, align 4, !tbaa !5
  %2653 = add nsw i32 %2652, 1
  store i32 %2653, ptr @test_count, align 4, !tbaa !5
  %2654 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2655 = load i32, ptr %2654, align 4, !tbaa !5
  %2656 = call ptr @s2n_strerror_debug(i32 noundef %2655, ptr noundef @.str.4)
  %2657 = icmp eq ptr %2656, null
  br i1 %2657, label %2658, label %2711

2658:                                             ; preds = %2651
  br label %2659

2659:                                             ; preds = %2658
  br label %2660

2660:                                             ; preds = %2659
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #10
  %2661 = call ptr @__errno_location() #11
  %2662 = load i32, ptr %2661, align 4, !tbaa !5
  store i32 %2662, ptr %87, align 4, !tbaa !5
  %2663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2664 = call i32 @s2n_print_stacktrace(ptr noundef %2663)
  %2665 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2666 = trunc i8 %2665 to i1
  br i1 %2666, label %2667, label %2689

2667:                                             ; preds = %2660
  %2668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2669 = call i32 @fileno(ptr noundef %2668) #10
  %2670 = call i32 @isatty(i32 noundef %2669) #10
  %2671 = icmp ne i32 %2670, 0
  br i1 %2671, label %2672, label %2689

2672:                                             ; preds = %2667
  %2673 = load i32, ptr %87, align 4, !tbaa !5
  %2674 = call ptr @__errno_location() #11
  store i32 %2673, ptr %2674, align 4, !tbaa !5
  %2675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2676 = load i32, ptr @test_count, align 4, !tbaa !5
  %2677 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2678 = load i32, ptr %2677, align 4, !tbaa !5
  %2679 = call ptr @s2n_strerror(i32 noundef %2678, ptr noundef @.str.4)
  %2680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2681 = load i32, ptr %2680, align 4, !tbaa !5
  %2682 = call ptr @s2n_strerror_debug(i32 noundef %2681, ptr noundef @.str.4)
  %2683 = call ptr @__errno_location() #11
  %2684 = load i32, ptr %2683, align 4, !tbaa !5
  %2685 = call ptr @strerror(i32 noundef %2684) #10
  %2686 = call ptr @__errno_location() #11
  %2687 = load i32, ptr %2686, align 4, !tbaa !5
  %2688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2675, ptr noundef @.str.2, i32 noundef %2676, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 179, ptr noundef %2679, ptr noundef %2682, ptr noundef %2685, i32 noundef %2687) #10
  br label %2706

2689:                                             ; preds = %2667, %2660
  %2690 = load i32, ptr %87, align 4, !tbaa !5
  %2691 = call ptr @__errno_location() #11
  store i32 %2690, ptr %2691, align 4, !tbaa !5
  %2692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2693 = load i32, ptr @test_count, align 4, !tbaa !5
  %2694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2695 = load i32, ptr %2694, align 4, !tbaa !5
  %2696 = call ptr @s2n_strerror(i32 noundef %2695, ptr noundef @.str.4)
  %2697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2698 = load i32, ptr %2697, align 4, !tbaa !5
  %2699 = call ptr @s2n_strerror_debug(i32 noundef %2698, ptr noundef @.str.4)
  %2700 = call ptr @__errno_location() #11
  %2701 = load i32, ptr %2700, align 4, !tbaa !5
  %2702 = call ptr @strerror(i32 noundef %2701) #10
  %2703 = call ptr @__errno_location() #11
  %2704 = load i32, ptr %2703, align 4, !tbaa !5
  %2705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2692, ptr noundef @.str.5, i32 noundef %2693, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 179, ptr noundef %2696, ptr noundef %2699, ptr noundef %2702, i32 noundef %2704) #10
  br label %2706

2706:                                             ; preds = %2689, %2672
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  br label %2707

2707:                                             ; preds = %2706
  br label %2708

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

2709:                                             ; No predecessors!
  br label %2710

2710:                                             ; preds = %2709
  br label %2711

2711:                                             ; preds = %2710, %2651
  br label %2712

2712:                                             ; preds = %2711
  br label %2713

2713:                                             ; preds = %2712
  br label %2714

2714:                                             ; preds = %2713
  br label %2715

2715:                                             ; preds = %2714
  br label %2716

2716:                                             ; preds = %2715
  %2717 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2717, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2718 = call ptr @__errno_location() #11
  store i32 0, ptr %2718, align 4, !tbaa !5
  br label %2719

2719:                                             ; preds = %2716
  br label %2720

2720:                                             ; preds = %2719
  br label %2721

2721:                                             ; preds = %2720
  br label %2722

2722:                                             ; preds = %2721
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %88, ptr align 8 @__const.main.valid.33, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #10
  store i64 0, ptr %89, align 8, !tbaa !15
  br label %2723

2723:                                             ; preds = %2856, %2722
  %2724 = load i64, ptr %89, align 8, !tbaa !15
  %2725 = icmp ult i64 %2724, 1
  br i1 %2725, label %2727, label %2726

2726:                                             ; preds = %2723
  store i32 294, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  br label %2859

2727:                                             ; preds = %2723
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #10
  store i8 0, ptr %90, align 1, !tbaa !11
  br label %2728

2728:                                             ; preds = %2727
  %2729 = load i32, ptr @test_count, align 4, !tbaa !5
  %2730 = add nsw i32 %2729, 1
  store i32 %2730, ptr @test_count, align 4, !tbaa !5
  %2731 = load i64, ptr %89, align 8, !tbaa !15
  %2732 = getelementptr inbounds [1 x ptr], ptr %88, i64 0, i64 %2731
  %2733 = load ptr, ptr %2732, align 8, !tbaa !9
  %2734 = call i32 @s2n_fips_validate_curve(ptr noundef %2733, ptr noundef %90)
  %2735 = getelementptr inbounds %struct.s2n_result, ptr %91, i32 0, i32 0
  store i32 %2734, ptr %2735, align 4
  %2736 = getelementptr inbounds %struct.s2n_result, ptr %91, i32 0, i32 0
  %2737 = load i32, ptr %2736, align 4
  %2738 = call zeroext i1 @s2n_result_is_ok(i32 %2737)
  br i1 %2738, label %2792, label %2739

2739:                                             ; preds = %2728
  br label %2740

2740:                                             ; preds = %2739
  br label %2741

2741:                                             ; preds = %2740
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  %2742 = call ptr @__errno_location() #11
  %2743 = load i32, ptr %2742, align 4, !tbaa !5
  store i32 %2743, ptr %92, align 4, !tbaa !5
  %2744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2745 = call i32 @s2n_print_stacktrace(ptr noundef %2744)
  %2746 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2747 = trunc i8 %2746 to i1
  br i1 %2747, label %2748, label %2770

2748:                                             ; preds = %2741
  %2749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2750 = call i32 @fileno(ptr noundef %2749) #10
  %2751 = call i32 @isatty(i32 noundef %2750) #10
  %2752 = icmp ne i32 %2751, 0
  br i1 %2752, label %2753, label %2770

2753:                                             ; preds = %2748
  %2754 = load i32, ptr %92, align 4, !tbaa !5
  %2755 = call ptr @__errno_location() #11
  store i32 %2754, ptr %2755, align 4, !tbaa !5
  %2756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2757 = load i32, ptr @test_count, align 4, !tbaa !5
  %2758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2759 = load i32, ptr %2758, align 4, !tbaa !5
  %2760 = call ptr @s2n_strerror(i32 noundef %2759, ptr noundef @.str.4)
  %2761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2762 = load i32, ptr %2761, align 4, !tbaa !5
  %2763 = call ptr @s2n_strerror_debug(i32 noundef %2762, ptr noundef @.str.4)
  %2764 = call ptr @__errno_location() #11
  %2765 = load i32, ptr %2764, align 4, !tbaa !5
  %2766 = call ptr @strerror(i32 noundef %2765) #10
  %2767 = call ptr @__errno_location() #11
  %2768 = load i32, ptr %2767, align 4, !tbaa !5
  %2769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2756, ptr noundef @.str.2, i32 noundef %2757, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 186, ptr noundef %2760, ptr noundef %2763, ptr noundef %2766, i32 noundef %2768) #10
  br label %2787

2770:                                             ; preds = %2748, %2741
  %2771 = load i32, ptr %92, align 4, !tbaa !5
  %2772 = call ptr @__errno_location() #11
  store i32 %2771, ptr %2772, align 4, !tbaa !5
  %2773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2774 = load i32, ptr @test_count, align 4, !tbaa !5
  %2775 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2776 = load i32, ptr %2775, align 4, !tbaa !5
  %2777 = call ptr @s2n_strerror(i32 noundef %2776, ptr noundef @.str.4)
  %2778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2779 = load i32, ptr %2778, align 4, !tbaa !5
  %2780 = call ptr @s2n_strerror_debug(i32 noundef %2779, ptr noundef @.str.4)
  %2781 = call ptr @__errno_location() #11
  %2782 = load i32, ptr %2781, align 4, !tbaa !5
  %2783 = call ptr @strerror(i32 noundef %2782) #10
  %2784 = call ptr @__errno_location() #11
  %2785 = load i32, ptr %2784, align 4, !tbaa !5
  %2786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2773, ptr noundef @.str.5, i32 noundef %2774, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 186, ptr noundef %2777, ptr noundef %2780, ptr noundef %2783, i32 noundef %2785) #10
  br label %2787

2787:                                             ; preds = %2770, %2753
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  br label %2788

2788:                                             ; preds = %2787
  br label %2789

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

2790:                                             ; No predecessors!
  br label %2791

2791:                                             ; preds = %2790
  br label %2792

2792:                                             ; preds = %2791, %2728
  br label %2793

2793:                                             ; preds = %2792
  br label %2794

2794:                                             ; preds = %2793
  br label %2795

2795:                                             ; preds = %2794
  %2796 = load i32, ptr @test_count, align 4, !tbaa !5
  %2797 = add nsw i32 %2796, 1
  store i32 %2797, ptr @test_count, align 4, !tbaa !5
  %2798 = load i8, ptr %90, align 1, !tbaa !11, !range !13, !noundef !14
  %2799 = trunc i8 %2798 to i1
  br i1 %2799, label %2853, label %2800

2800:                                             ; preds = %2795
  br label %2801

2801:                                             ; preds = %2800
  br label %2802

2802:                                             ; preds = %2801
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #10
  %2803 = call ptr @__errno_location() #11
  %2804 = load i32, ptr %2803, align 4, !tbaa !5
  store i32 %2804, ptr %93, align 4, !tbaa !5
  %2805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2806 = call i32 @s2n_print_stacktrace(ptr noundef %2805)
  %2807 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2808 = trunc i8 %2807 to i1
  br i1 %2808, label %2809, label %2831

2809:                                             ; preds = %2802
  %2810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2811 = call i32 @fileno(ptr noundef %2810) #10
  %2812 = call i32 @isatty(i32 noundef %2811) #10
  %2813 = icmp ne i32 %2812, 0
  br i1 %2813, label %2814, label %2831

2814:                                             ; preds = %2809
  %2815 = load i32, ptr %93, align 4, !tbaa !5
  %2816 = call ptr @__errno_location() #11
  store i32 %2815, ptr %2816, align 4, !tbaa !5
  %2817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2818 = load i32, ptr @test_count, align 4, !tbaa !5
  %2819 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2820 = load i32, ptr %2819, align 4, !tbaa !5
  %2821 = call ptr @s2n_strerror(i32 noundef %2820, ptr noundef @.str.4)
  %2822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2823 = load i32, ptr %2822, align 4, !tbaa !5
  %2824 = call ptr @s2n_strerror_debug(i32 noundef %2823, ptr noundef @.str.4)
  %2825 = call ptr @__errno_location() #11
  %2826 = load i32, ptr %2825, align 4, !tbaa !5
  %2827 = call ptr @strerror(i32 noundef %2826) #10
  %2828 = call ptr @__errno_location() #11
  %2829 = load i32, ptr %2828, align 4, !tbaa !5
  %2830 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2817, ptr noundef @.str.2, i32 noundef %2818, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 187, ptr noundef %2821, ptr noundef %2824, ptr noundef %2827, i32 noundef %2829) #10
  br label %2848

2831:                                             ; preds = %2809, %2802
  %2832 = load i32, ptr %93, align 4, !tbaa !5
  %2833 = call ptr @__errno_location() #11
  store i32 %2832, ptr %2833, align 4, !tbaa !5
  %2834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2835 = load i32, ptr @test_count, align 4, !tbaa !5
  %2836 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2837 = load i32, ptr %2836, align 4, !tbaa !5
  %2838 = call ptr @s2n_strerror(i32 noundef %2837, ptr noundef @.str.4)
  %2839 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2840 = load i32, ptr %2839, align 4, !tbaa !5
  %2841 = call ptr @s2n_strerror_debug(i32 noundef %2840, ptr noundef @.str.4)
  %2842 = call ptr @__errno_location() #11
  %2843 = load i32, ptr %2842, align 4, !tbaa !5
  %2844 = call ptr @strerror(i32 noundef %2843) #10
  %2845 = call ptr @__errno_location() #11
  %2846 = load i32, ptr %2845, align 4, !tbaa !5
  %2847 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2834, ptr noundef @.str.5, i32 noundef %2835, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 187, ptr noundef %2838, ptr noundef %2841, ptr noundef %2844, i32 noundef %2846) #10
  br label %2848

2848:                                             ; preds = %2831, %2814
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #10
  br label %2849

2849:                                             ; preds = %2848
  br label %2850

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

2851:                                             ; No predecessors!
  br label %2852

2852:                                             ; preds = %2851
  br label %2853

2853:                                             ; preds = %2852, %2795
  br label %2854

2854:                                             ; preds = %2853
  br label %2855

2855:                                             ; preds = %2854
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #10
  br label %2856

2856:                                             ; preds = %2855
  %2857 = load i64, ptr %89, align 8, !tbaa !15
  %2858 = add i64 %2857, 1
  store i64 %2858, ptr %89, align 8, !tbaa !15
  br label %2723, !llvm.loop !40

2859:                                             ; preds = %2726
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %94, ptr align 8 @__const.main.invalid.35, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #10
  store i64 0, ptr %95, align 8, !tbaa !15
  br label %2860

2860:                                             ; preds = %2993, %2859
  %2861 = load i64, ptr %95, align 8, !tbaa !15
  %2862 = icmp ult i64 %2861, 1
  br i1 %2862, label %2864, label %2863

2863:                                             ; preds = %2860
  store i32 309, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  br label %2996

2864:                                             ; preds = %2860
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #10
  store i8 1, ptr %96, align 1, !tbaa !11
  br label %2865

2865:                                             ; preds = %2864
  %2866 = load i32, ptr @test_count, align 4, !tbaa !5
  %2867 = add nsw i32 %2866, 1
  store i32 %2867, ptr @test_count, align 4, !tbaa !5
  %2868 = load i64, ptr %95, align 8, !tbaa !15
  %2869 = getelementptr inbounds [1 x ptr], ptr %94, i64 0, i64 %2868
  %2870 = load ptr, ptr %2869, align 8, !tbaa !9
  %2871 = call i32 @s2n_fips_validate_curve(ptr noundef %2870, ptr noundef %96)
  %2872 = getelementptr inbounds %struct.s2n_result, ptr %97, i32 0, i32 0
  store i32 %2871, ptr %2872, align 4
  %2873 = getelementptr inbounds %struct.s2n_result, ptr %97, i32 0, i32 0
  %2874 = load i32, ptr %2873, align 4
  %2875 = call zeroext i1 @s2n_result_is_ok(i32 %2874)
  br i1 %2875, label %2929, label %2876

2876:                                             ; preds = %2865
  br label %2877

2877:                                             ; preds = %2876
  br label %2878

2878:                                             ; preds = %2877
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #10
  %2879 = call ptr @__errno_location() #11
  %2880 = load i32, ptr %2879, align 4, !tbaa !5
  store i32 %2880, ptr %98, align 4, !tbaa !5
  %2881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2882 = call i32 @s2n_print_stacktrace(ptr noundef %2881)
  %2883 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2884 = trunc i8 %2883 to i1
  br i1 %2884, label %2885, label %2907

2885:                                             ; preds = %2878
  %2886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2887 = call i32 @fileno(ptr noundef %2886) #10
  %2888 = call i32 @isatty(i32 noundef %2887) #10
  %2889 = icmp ne i32 %2888, 0
  br i1 %2889, label %2890, label %2907

2890:                                             ; preds = %2885
  %2891 = load i32, ptr %98, align 4, !tbaa !5
  %2892 = call ptr @__errno_location() #11
  store i32 %2891, ptr %2892, align 4, !tbaa !5
  %2893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2894 = load i32, ptr @test_count, align 4, !tbaa !5
  %2895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2896 = load i32, ptr %2895, align 4, !tbaa !5
  %2897 = call ptr @s2n_strerror(i32 noundef %2896, ptr noundef @.str.4)
  %2898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2899 = load i32, ptr %2898, align 4, !tbaa !5
  %2900 = call ptr @s2n_strerror_debug(i32 noundef %2899, ptr noundef @.str.4)
  %2901 = call ptr @__errno_location() #11
  %2902 = load i32, ptr %2901, align 4, !tbaa !5
  %2903 = call ptr @strerror(i32 noundef %2902) #10
  %2904 = call ptr @__errno_location() #11
  %2905 = load i32, ptr %2904, align 4, !tbaa !5
  %2906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2893, ptr noundef @.str.2, i32 noundef %2894, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 194, ptr noundef %2897, ptr noundef %2900, ptr noundef %2903, i32 noundef %2905) #10
  br label %2924

2907:                                             ; preds = %2885, %2878
  %2908 = load i32, ptr %98, align 4, !tbaa !5
  %2909 = call ptr @__errno_location() #11
  store i32 %2908, ptr %2909, align 4, !tbaa !5
  %2910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2911 = load i32, ptr @test_count, align 4, !tbaa !5
  %2912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2913 = load i32, ptr %2912, align 4, !tbaa !5
  %2914 = call ptr @s2n_strerror(i32 noundef %2913, ptr noundef @.str.4)
  %2915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2916 = load i32, ptr %2915, align 4, !tbaa !5
  %2917 = call ptr @s2n_strerror_debug(i32 noundef %2916, ptr noundef @.str.4)
  %2918 = call ptr @__errno_location() #11
  %2919 = load i32, ptr %2918, align 4, !tbaa !5
  %2920 = call ptr @strerror(i32 noundef %2919) #10
  %2921 = call ptr @__errno_location() #11
  %2922 = load i32, ptr %2921, align 4, !tbaa !5
  %2923 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2910, ptr noundef @.str.5, i32 noundef %2911, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 194, ptr noundef %2914, ptr noundef %2917, ptr noundef %2920, i32 noundef %2922) #10
  br label %2924

2924:                                             ; preds = %2907, %2890
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #10
  br label %2925

2925:                                             ; preds = %2924
  br label %2926

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

2927:                                             ; No predecessors!
  br label %2928

2928:                                             ; preds = %2927
  br label %2929

2929:                                             ; preds = %2928, %2865
  br label %2930

2930:                                             ; preds = %2929
  br label %2931

2931:                                             ; preds = %2930
  br label %2932

2932:                                             ; preds = %2931
  %2933 = load i32, ptr @test_count, align 4, !tbaa !5
  %2934 = add nsw i32 %2933, 1
  store i32 %2934, ptr @test_count, align 4, !tbaa !5
  %2935 = load i8, ptr %96, align 1, !tbaa !11, !range !13, !noundef !14
  %2936 = trunc i8 %2935 to i1
  br i1 %2936, label %2937, label %2990

2937:                                             ; preds = %2932
  br label %2938

2938:                                             ; preds = %2937
  br label %2939

2939:                                             ; preds = %2938
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #10
  %2940 = call ptr @__errno_location() #11
  %2941 = load i32, ptr %2940, align 4, !tbaa !5
  store i32 %2941, ptr %99, align 4, !tbaa !5
  %2942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2943 = call i32 @s2n_print_stacktrace(ptr noundef %2942)
  %2944 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2945 = trunc i8 %2944 to i1
  br i1 %2945, label %2946, label %2968

2946:                                             ; preds = %2939
  %2947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2948 = call i32 @fileno(ptr noundef %2947) #10
  %2949 = call i32 @isatty(i32 noundef %2948) #10
  %2950 = icmp ne i32 %2949, 0
  br i1 %2950, label %2951, label %2968

2951:                                             ; preds = %2946
  %2952 = load i32, ptr %99, align 4, !tbaa !5
  %2953 = call ptr @__errno_location() #11
  store i32 %2952, ptr %2953, align 4, !tbaa !5
  %2954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2955 = load i32, ptr @test_count, align 4, !tbaa !5
  %2956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2957 = load i32, ptr %2956, align 4, !tbaa !5
  %2958 = call ptr @s2n_strerror(i32 noundef %2957, ptr noundef @.str.4)
  %2959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2960 = load i32, ptr %2959, align 4, !tbaa !5
  %2961 = call ptr @s2n_strerror_debug(i32 noundef %2960, ptr noundef @.str.4)
  %2962 = call ptr @__errno_location() #11
  %2963 = load i32, ptr %2962, align 4, !tbaa !5
  %2964 = call ptr @strerror(i32 noundef %2963) #10
  %2965 = call ptr @__errno_location() #11
  %2966 = load i32, ptr %2965, align 4, !tbaa !5
  %2967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2954, ptr noundef @.str.2, i32 noundef %2955, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 195, ptr noundef %2958, ptr noundef %2961, ptr noundef %2964, i32 noundef %2966) #10
  br label %2985

2968:                                             ; preds = %2946, %2939
  %2969 = load i32, ptr %99, align 4, !tbaa !5
  %2970 = call ptr @__errno_location() #11
  store i32 %2969, ptr %2970, align 4, !tbaa !5
  %2971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2972 = load i32, ptr @test_count, align 4, !tbaa !5
  %2973 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2974 = load i32, ptr %2973, align 4, !tbaa !5
  %2975 = call ptr @s2n_strerror(i32 noundef %2974, ptr noundef @.str.4)
  %2976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2977 = load i32, ptr %2976, align 4, !tbaa !5
  %2978 = call ptr @s2n_strerror_debug(i32 noundef %2977, ptr noundef @.str.4)
  %2979 = call ptr @__errno_location() #11
  %2980 = load i32, ptr %2979, align 4, !tbaa !5
  %2981 = call ptr @strerror(i32 noundef %2980) #10
  %2982 = call ptr @__errno_location() #11
  %2983 = load i32, ptr %2982, align 4, !tbaa !5
  %2984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2971, ptr noundef @.str.5, i32 noundef %2972, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 195, ptr noundef %2975, ptr noundef %2978, ptr noundef %2981, i32 noundef %2983) #10
  br label %2985

2985:                                             ; preds = %2968, %2951
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #10
  br label %2986

2986:                                             ; preds = %2985
  br label %2987

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

2988:                                             ; No predecessors!
  br label %2989

2989:                                             ; preds = %2988
  br label %2990

2990:                                             ; preds = %2989, %2932
  br label %2991

2991:                                             ; preds = %2990
  br label %2992

2992:                                             ; preds = %2991
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #10
  br label %2993

2993:                                             ; preds = %2992
  %2994 = load i64, ptr %95, align 8, !tbaa !15
  %2995 = add i64 %2994, 1
  store i64 %2995, ptr %95, align 8, !tbaa !15
  br label %2860, !llvm.loop !41

2996:                                             ; preds = %2863
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #10
  store i64 0, ptr %100, align 8, !tbaa !15
  br label %2997

2997:                                             ; preds = %3165, %2996
  %2998 = load i64, ptr %100, align 8, !tbaa !15
  %2999 = load i8, ptr @s2n_ecc_preferences_test_all, align 8, !tbaa !42
  %3000 = zext i8 %2999 to i64
  %3001 = icmp ult i64 %2998, %3000
  br i1 %3001, label %3003, label %3002

3002:                                             ; preds = %2997
  store i32 324, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  br label %3168

3003:                                             ; preds = %2997
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %3004 = load ptr, ptr getelementptr inbounds (%struct.s2n_ecc_preferences, ptr @s2n_ecc_preferences_test_all, i32 0, i32 1), align 8, !tbaa !44
  %3005 = load i64, ptr %100, align 8, !tbaa !15
  %3006 = getelementptr inbounds ptr, ptr %3004, i64 %3005
  %3007 = load ptr, ptr %3006, align 8, !tbaa !9
  store ptr %3007, ptr %101, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #10
  store i8 0, ptr %102, align 1, !tbaa !11
  br label %3008

3008:                                             ; preds = %3003
  %3009 = load i32, ptr @test_count, align 4, !tbaa !5
  %3010 = add nsw i32 %3009, 1
  store i32 %3010, ptr @test_count, align 4, !tbaa !5
  %3011 = load ptr, ptr %101, align 8, !tbaa !9
  %3012 = call i32 @s2n_fips_validate_curve(ptr noundef %3011, ptr noundef %102)
  %3013 = getelementptr inbounds %struct.s2n_result, ptr %103, i32 0, i32 0
  store i32 %3012, ptr %3013, align 4
  %3014 = getelementptr inbounds %struct.s2n_result, ptr %103, i32 0, i32 0
  %3015 = load i32, ptr %3014, align 4
  %3016 = call zeroext i1 @s2n_result_is_ok(i32 %3015)
  br i1 %3016, label %3070, label %3017

3017:                                             ; preds = %3008
  br label %3018

3018:                                             ; preds = %3017
  br label %3019

3019:                                             ; preds = %3018
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #10
  %3020 = call ptr @__errno_location() #11
  %3021 = load i32, ptr %3020, align 4, !tbaa !5
  store i32 %3021, ptr %104, align 4, !tbaa !5
  %3022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3023 = call i32 @s2n_print_stacktrace(ptr noundef %3022)
  %3024 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3025 = trunc i8 %3024 to i1
  br i1 %3025, label %3026, label %3048

3026:                                             ; preds = %3019
  %3027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3028 = call i32 @fileno(ptr noundef %3027) #10
  %3029 = call i32 @isatty(i32 noundef %3028) #10
  %3030 = icmp ne i32 %3029, 0
  br i1 %3030, label %3031, label %3048

3031:                                             ; preds = %3026
  %3032 = load i32, ptr %104, align 4, !tbaa !5
  %3033 = call ptr @__errno_location() #11
  store i32 %3032, ptr %3033, align 4, !tbaa !5
  %3034 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3035 = load i32, ptr @test_count, align 4, !tbaa !5
  %3036 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3037 = load i32, ptr %3036, align 4, !tbaa !5
  %3038 = call ptr @s2n_strerror(i32 noundef %3037, ptr noundef @.str.4)
  %3039 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3040 = load i32, ptr %3039, align 4, !tbaa !5
  %3041 = call ptr @s2n_strerror_debug(i32 noundef %3040, ptr noundef @.str.4)
  %3042 = call ptr @__errno_location() #11
  %3043 = load i32, ptr %3042, align 4, !tbaa !5
  %3044 = call ptr @strerror(i32 noundef %3043) #10
  %3045 = call ptr @__errno_location() #11
  %3046 = load i32, ptr %3045, align 4, !tbaa !5
  %3047 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3034, ptr noundef @.str.2, i32 noundef %3035, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 203, ptr noundef %3038, ptr noundef %3041, ptr noundef %3044, i32 noundef %3046) #10
  br label %3065

3048:                                             ; preds = %3026, %3019
  %3049 = load i32, ptr %104, align 4, !tbaa !5
  %3050 = call ptr @__errno_location() #11
  store i32 %3049, ptr %3050, align 4, !tbaa !5
  %3051 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3052 = load i32, ptr @test_count, align 4, !tbaa !5
  %3053 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3054 = load i32, ptr %3053, align 4, !tbaa !5
  %3055 = call ptr @s2n_strerror(i32 noundef %3054, ptr noundef @.str.4)
  %3056 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3057 = load i32, ptr %3056, align 4, !tbaa !5
  %3058 = call ptr @s2n_strerror_debug(i32 noundef %3057, ptr noundef @.str.4)
  %3059 = call ptr @__errno_location() #11
  %3060 = load i32, ptr %3059, align 4, !tbaa !5
  %3061 = call ptr @strerror(i32 noundef %3060) #10
  %3062 = call ptr @__errno_location() #11
  %3063 = load i32, ptr %3062, align 4, !tbaa !5
  %3064 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3051, ptr noundef @.str.5, i32 noundef %3052, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 203, ptr noundef %3055, ptr noundef %3058, ptr noundef %3061, i32 noundef %3063) #10
  br label %3065

3065:                                             ; preds = %3048, %3031
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #10
  br label %3066

3066:                                             ; preds = %3065
  br label %3067

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

3068:                                             ; No predecessors!
  br label %3069

3069:                                             ; preds = %3068
  br label %3070

3070:                                             ; preds = %3069, %3008
  br label %3071

3071:                                             ; preds = %3070
  br label %3072

3072:                                             ; preds = %3071
  %3073 = load i8, ptr %102, align 1, !tbaa !11, !range !13, !noundef !14
  %3074 = trunc i8 %3073 to i1
  br i1 %3074, label %3076, label %3075

3075:                                             ; preds = %3072
  store i32 326, ptr %31, align 4
  br label %3162

3076:                                             ; preds = %3072
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #10
  %3077 = load ptr, ptr getelementptr inbounds (%struct.s2n_security_policy, ptr @security_policy_test_all_fips, i32 0, i32 5), align 8, !tbaa !45
  store ptr %3077, ptr %105, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #10
  store i8 0, ptr %106, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #10
  store i64 0, ptr %107, align 8, !tbaa !15
  br label %3078

3078:                                             ; preds = %3097, %3076
  %3079 = load i64, ptr %107, align 8, !tbaa !15
  %3080 = load ptr, ptr %105, align 8, !tbaa !9
  %3081 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %3080, i32 0, i32 0
  %3082 = load i8, ptr %3081, align 8, !tbaa !42
  %3083 = zext i8 %3082 to i64
  %3084 = icmp ult i64 %3079, %3083
  br i1 %3084, label %3086, label %3085

3085:                                             ; preds = %3078
  store i32 333, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  br label %3100

3086:                                             ; preds = %3078
  %3087 = load ptr, ptr %101, align 8, !tbaa !9
  %3088 = load ptr, ptr %105, align 8, !tbaa !9
  %3089 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %3088, i32 0, i32 1
  %3090 = load ptr, ptr %3089, align 8, !tbaa !44
  %3091 = load i64, ptr %107, align 8, !tbaa !15
  %3092 = getelementptr inbounds ptr, ptr %3090, i64 %3091
  %3093 = load ptr, ptr %3092, align 8, !tbaa !9
  %3094 = icmp eq ptr %3087, %3093
  br i1 %3094, label %3095, label %3096

3095:                                             ; preds = %3086
  store i8 1, ptr %106, align 1, !tbaa !11
  br label %3096

3096:                                             ; preds = %3095, %3086
  br label %3097

3097:                                             ; preds = %3096
  %3098 = load i64, ptr %107, align 8, !tbaa !15
  %3099 = add i64 %3098, 1
  store i64 %3099, ptr %107, align 8, !tbaa !15
  br label %3078, !llvm.loop !46

3100:                                             ; preds = %3085
  br label %3101

3101:                                             ; preds = %3100
  %3102 = load i32, ptr @test_count, align 4, !tbaa !5
  %3103 = add nsw i32 %3102, 1
  store i32 %3103, ptr @test_count, align 4, !tbaa !5
  %3104 = load i8, ptr %106, align 1, !tbaa !11, !range !13, !noundef !14
  %3105 = trunc i8 %3104 to i1
  br i1 %3105, label %3159, label %3106

3106:                                             ; preds = %3101
  br label %3107

3107:                                             ; preds = %3106
  br label %3108

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

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

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

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

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

3155:                                             ; preds = %3154
  br label %3156

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

3157:                                             ; No predecessors!
  br label %3158

3158:                                             ; preds = %3157
  br label %3159

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

3160:                                             ; preds = %3159
  br label %3161

3161:                                             ; preds = %3160
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  store i32 0, ptr %31, align 4
  br label %3162

3162:                                             ; preds = %3161, %3075
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  %3163 = load i32, ptr %31, align 4
  switch i32 %3163, label %3853 [
    i32 0, label %3164
    i32 326, label %3165
  ]

3164:                                             ; preds = %3162
  br label %3165

3165:                                             ; preds = %3164, %3162
  %3166 = load i64, ptr %100, align 8, !tbaa !15
  %3167 = add i64 %3166, 1
  store i64 %3167, ptr %100, align 8, !tbaa !15
  br label %2997, !llvm.loop !47

3168:                                             ; preds = %3002
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %3169

3169:                                             ; preds = %3168
  br label %3170

3170:                                             ; preds = %3169
  br label %3171

3171:                                             ; preds = %3170
  %3172 = load i32, ptr @test_count, align 4, !tbaa !5
  %3173 = add nsw i32 %3172, 1
  store i32 %3173, ptr @test_count, align 4, !tbaa !5
  %3174 = call i32 @s2n_fips_validate_version(i8 noundef zeroext 0, ptr noundef null)
  %3175 = getelementptr inbounds %struct.s2n_result, ptr %109, i32 0, i32 0
  store i32 %3174, ptr %3175, align 4
  %3176 = getelementptr inbounds %struct.s2n_result, ptr %109, i32 0, i32 0
  %3177 = load i32, ptr %3176, align 4
  %3178 = call zeroext i1 @s2n_result_is_error(i32 %3177)
  br i1 %3178, label %3230, label %3179

3179:                                             ; preds = %3171
  br label %3180

3180:                                             ; preds = %3179
  br label %3181

3181:                                             ; preds = %3180
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #10
  %3182 = call ptr @__errno_location() #11
  %3183 = load i32, ptr %3182, align 4, !tbaa !5
  store i32 %3183, ptr %110, align 4, !tbaa !5
  %3184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3185 = call i32 @s2n_print_stacktrace(ptr noundef %3184)
  %3186 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3187 = trunc i8 %3186 to i1
  br i1 %3187, label %3188, label %3210

3188:                                             ; preds = %3181
  %3189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3190 = call i32 @fileno(ptr noundef %3189) #10
  %3191 = call i32 @isatty(i32 noundef %3190) #10
  %3192 = icmp ne i32 %3191, 0
  br i1 %3192, label %3193, label %3210

3193:                                             ; preds = %3188
  %3194 = load i32, ptr %110, align 4, !tbaa !5
  %3195 = call ptr @__errno_location() #11
  store i32 %3194, ptr %3195, align 4, !tbaa !5
  %3196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3197 = load i32, ptr @test_count, align 4, !tbaa !5
  %3198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3199 = load i32, ptr %3198, align 4, !tbaa !5
  %3200 = call ptr @s2n_strerror(i32 noundef %3199, ptr noundef @.str.4)
  %3201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3202 = load i32, ptr %3201, align 4, !tbaa !5
  %3203 = call ptr @s2n_strerror_debug(i32 noundef %3202, ptr noundef @.str.4)
  %3204 = call ptr @__errno_location() #11
  %3205 = load i32, ptr %3204, align 4, !tbaa !5
  %3206 = call ptr @strerror(i32 noundef %3205) #10
  %3207 = call ptr @__errno_location() #11
  %3208 = load i32, ptr %3207, align 4, !tbaa !5
  %3209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3196, ptr noundef @.str.2, i32 noundef %3197, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 224, ptr noundef %3200, ptr noundef %3203, ptr noundef %3206, i32 noundef %3208) #10
  br label %3227

3210:                                             ; preds = %3188, %3181
  %3211 = load i32, ptr %110, align 4, !tbaa !5
  %3212 = call ptr @__errno_location() #11
  store i32 %3211, ptr %3212, align 4, !tbaa !5
  %3213 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3214 = load i32, ptr @test_count, align 4, !tbaa !5
  %3215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3216 = load i32, ptr %3215, align 4, !tbaa !5
  %3217 = call ptr @s2n_strerror(i32 noundef %3216, ptr noundef @.str.4)
  %3218 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3219 = load i32, ptr %3218, align 4, !tbaa !5
  %3220 = call ptr @s2n_strerror_debug(i32 noundef %3219, ptr noundef @.str.4)
  %3221 = call ptr @__errno_location() #11
  %3222 = load i32, ptr %3221, align 4, !tbaa !5
  %3223 = call ptr @strerror(i32 noundef %3222) #10
  %3224 = call ptr @__errno_location() #11
  %3225 = load i32, ptr %3224, align 4, !tbaa !5
  %3226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3213, ptr noundef @.str.5, i32 noundef %3214, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 224, ptr noundef %3217, ptr noundef %3220, ptr noundef %3223, i32 noundef %3225) #10
  br label %3227

3227:                                             ; preds = %3210, %3193
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #10
  br label %3228

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

3229:                                             ; No predecessors!
  br label %3230

3230:                                             ; preds = %3229, %3171
  br label %3231

3231:                                             ; preds = %3230
  br label %3232

3232:                                             ; preds = %3231
  %3233 = load i32, ptr @test_count, align 4, !tbaa !5
  %3234 = add nsw i32 %3233, 1
  store i32 %3234, ptr @test_count, align 4, !tbaa !5
  %3235 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3236 = load i32, ptr %3235, align 4, !tbaa !5
  %3237 = icmp eq i32 %3236, 402653193
  br i1 %3237, label %3289, label %3238

3238:                                             ; preds = %3232
  br label %3239

3239:                                             ; preds = %3238
  br label %3240

3240:                                             ; preds = %3239
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #10
  %3241 = call ptr @__errno_location() #11
  %3242 = load i32, ptr %3241, align 4, !tbaa !5
  store i32 %3242, ptr %111, align 4, !tbaa !5
  %3243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3244 = call i32 @s2n_print_stacktrace(ptr noundef %3243)
  %3245 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3246 = trunc i8 %3245 to i1
  br i1 %3246, label %3247, label %3269

3247:                                             ; preds = %3240
  %3248 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3249 = call i32 @fileno(ptr noundef %3248) #10
  %3250 = call i32 @isatty(i32 noundef %3249) #10
  %3251 = icmp ne i32 %3250, 0
  br i1 %3251, label %3252, label %3269

3252:                                             ; preds = %3247
  %3253 = load i32, ptr %111, align 4, !tbaa !5
  %3254 = call ptr @__errno_location() #11
  store i32 %3253, ptr %3254, align 4, !tbaa !5
  %3255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3256 = load i32, ptr @test_count, align 4, !tbaa !5
  %3257 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3258 = load i32, ptr %3257, align 4, !tbaa !5
  %3259 = call ptr @s2n_strerror(i32 noundef %3258, ptr noundef @.str.4)
  %3260 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3261 = load i32, ptr %3260, align 4, !tbaa !5
  %3262 = call ptr @s2n_strerror_debug(i32 noundef %3261, ptr noundef @.str.4)
  %3263 = call ptr @__errno_location() #11
  %3264 = load i32, ptr %3263, align 4, !tbaa !5
  %3265 = call ptr @strerror(i32 noundef %3264) #10
  %3266 = call ptr @__errno_location() #11
  %3267 = load i32, ptr %3266, align 4, !tbaa !5
  %3268 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3255, ptr noundef @.str.2, i32 noundef %3256, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 224, ptr noundef %3259, ptr noundef %3262, ptr noundef %3265, i32 noundef %3267) #10
  br label %3286

3269:                                             ; preds = %3247, %3240
  %3270 = load i32, ptr %111, align 4, !tbaa !5
  %3271 = call ptr @__errno_location() #11
  store i32 %3270, ptr %3271, align 4, !tbaa !5
  %3272 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3273 = load i32, ptr @test_count, align 4, !tbaa !5
  %3274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3275 = load i32, ptr %3274, align 4, !tbaa !5
  %3276 = call ptr @s2n_strerror(i32 noundef %3275, ptr noundef @.str.4)
  %3277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3278 = load i32, ptr %3277, align 4, !tbaa !5
  %3279 = call ptr @s2n_strerror_debug(i32 noundef %3278, ptr noundef @.str.4)
  %3280 = call ptr @__errno_location() #11
  %3281 = load i32, ptr %3280, align 4, !tbaa !5
  %3282 = call ptr @strerror(i32 noundef %3281) #10
  %3283 = call ptr @__errno_location() #11
  %3284 = load i32, ptr %3283, align 4, !tbaa !5
  %3285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3272, ptr noundef @.str.5, i32 noundef %3273, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 224, ptr noundef %3276, ptr noundef %3279, ptr noundef %3282, i32 noundef %3284) #10
  br label %3286

3286:                                             ; preds = %3269, %3252
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #10
  br label %3287

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

3288:                                             ; No predecessors!
  br label %3289

3289:                                             ; preds = %3288, %3232
  br label %3290

3290:                                             ; preds = %3289
  br label %3291

3291:                                             ; preds = %3290
  %3292 = load i32, ptr @test_count, align 4, !tbaa !5
  %3293 = add nsw i32 %3292, 1
  store i32 %3293, ptr @test_count, align 4, !tbaa !5
  %3294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3295 = load i32, ptr %3294, align 4, !tbaa !5
  %3296 = call ptr @s2n_strerror_debug(i32 noundef %3295, ptr noundef @.str.4)
  %3297 = icmp eq ptr %3296, null
  br i1 %3297, label %3298, label %3349

3298:                                             ; preds = %3291
  br label %3299

3299:                                             ; preds = %3298
  br label %3300

3300:                                             ; preds = %3299
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #10
  %3301 = call ptr @__errno_location() #11
  %3302 = load i32, ptr %3301, align 4, !tbaa !5
  store i32 %3302, ptr %112, align 4, !tbaa !5
  %3303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3304 = call i32 @s2n_print_stacktrace(ptr noundef %3303)
  %3305 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3306 = trunc i8 %3305 to i1
  br i1 %3306, label %3307, label %3329

3307:                                             ; preds = %3300
  %3308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3309 = call i32 @fileno(ptr noundef %3308) #10
  %3310 = call i32 @isatty(i32 noundef %3309) #10
  %3311 = icmp ne i32 %3310, 0
  br i1 %3311, label %3312, label %3329

3312:                                             ; preds = %3307
  %3313 = load i32, ptr %112, align 4, !tbaa !5
  %3314 = call ptr @__errno_location() #11
  store i32 %3313, ptr %3314, align 4, !tbaa !5
  %3315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3316 = load i32, ptr @test_count, align 4, !tbaa !5
  %3317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3318 = load i32, ptr %3317, align 4, !tbaa !5
  %3319 = call ptr @s2n_strerror(i32 noundef %3318, ptr noundef @.str.4)
  %3320 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3321 = load i32, ptr %3320, align 4, !tbaa !5
  %3322 = call ptr @s2n_strerror_debug(i32 noundef %3321, ptr noundef @.str.4)
  %3323 = call ptr @__errno_location() #11
  %3324 = load i32, ptr %3323, align 4, !tbaa !5
  %3325 = call ptr @strerror(i32 noundef %3324) #10
  %3326 = call ptr @__errno_location() #11
  %3327 = load i32, ptr %3326, align 4, !tbaa !5
  %3328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3315, ptr noundef @.str.2, i32 noundef %3316, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 224, ptr noundef %3319, ptr noundef %3322, ptr noundef %3325, i32 noundef %3327) #10
  br label %3346

3329:                                             ; preds = %3307, %3300
  %3330 = load i32, ptr %112, align 4, !tbaa !5
  %3331 = call ptr @__errno_location() #11
  store i32 %3330, ptr %3331, align 4, !tbaa !5
  %3332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3333 = load i32, ptr @test_count, align 4, !tbaa !5
  %3334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3335 = load i32, ptr %3334, align 4, !tbaa !5
  %3336 = call ptr @s2n_strerror(i32 noundef %3335, ptr noundef @.str.4)
  %3337 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3338 = load i32, ptr %3337, align 4, !tbaa !5
  %3339 = call ptr @s2n_strerror_debug(i32 noundef %3338, ptr noundef @.str.4)
  %3340 = call ptr @__errno_location() #11
  %3341 = load i32, ptr %3340, align 4, !tbaa !5
  %3342 = call ptr @strerror(i32 noundef %3341) #10
  %3343 = call ptr @__errno_location() #11
  %3344 = load i32, ptr %3343, align 4, !tbaa !5
  %3345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3332, ptr noundef @.str.5, i32 noundef %3333, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 224, ptr noundef %3336, ptr noundef %3339, ptr noundef %3342, i32 noundef %3344) #10
  br label %3346

3346:                                             ; preds = %3329, %3312
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #10
  br label %3347

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

3348:                                             ; No predecessors!
  br label %3349

3349:                                             ; preds = %3348, %3291
  br label %3350

3350:                                             ; preds = %3349
  br label %3351

3351:                                             ; preds = %3350
  br label %3352

3352:                                             ; preds = %3351
  %3353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %3353, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %3354 = call ptr @__errno_location() #11
  store i32 0, ptr %3354, align 4, !tbaa !5
  br label %3355

3355:                                             ; preds = %3352
  br label %3356

3356:                                             ; preds = %3355
  call void @llvm.lifetime.start.p0(i64 2, ptr %113) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %113, ptr align 1 @__const.main.valid.39, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #10
  store i64 0, ptr %114, align 8, !tbaa !15
  br label %3357

3357:                                             ; preds = %3490, %3356
  %3358 = load i64, ptr %114, align 8, !tbaa !15
  %3359 = icmp ult i64 %3358, 2
  br i1 %3359, label %3361, label %3360

3360:                                             ; preds = %3357
  store i32 366, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  br label %3493

3361:                                             ; preds = %3357
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #10
  store i8 0, ptr %115, align 1, !tbaa !11
  br label %3362

3362:                                             ; preds = %3361
  %3363 = load i32, ptr @test_count, align 4, !tbaa !5
  %3364 = add nsw i32 %3363, 1
  store i32 %3364, ptr @test_count, align 4, !tbaa !5
  %3365 = load i64, ptr %114, align 8, !tbaa !15
  %3366 = getelementptr inbounds [2 x i8], ptr %113, i64 0, i64 %3365
  %3367 = load i8, ptr %3366, align 1, !tbaa !48
  %3368 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %3367, ptr noundef %115)
  %3369 = getelementptr inbounds %struct.s2n_result, ptr %116, i32 0, i32 0
  store i32 %3368, ptr %3369, align 4
  %3370 = getelementptr inbounds %struct.s2n_result, ptr %116, i32 0, i32 0
  %3371 = load i32, ptr %3370, align 4
  %3372 = call zeroext i1 @s2n_result_is_ok(i32 %3371)
  br i1 %3372, label %3426, label %3373

3373:                                             ; preds = %3362
  br label %3374

3374:                                             ; preds = %3373
  br label %3375

3375:                                             ; preds = %3374
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #10
  %3376 = call ptr @__errno_location() #11
  %3377 = load i32, ptr %3376, align 4, !tbaa !5
  store i32 %3377, ptr %117, align 4, !tbaa !5
  %3378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3379 = call i32 @s2n_print_stacktrace(ptr noundef %3378)
  %3380 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3381 = trunc i8 %3380 to i1
  br i1 %3381, label %3382, label %3404

3382:                                             ; preds = %3375
  %3383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3384 = call i32 @fileno(ptr noundef %3383) #10
  %3385 = call i32 @isatty(i32 noundef %3384) #10
  %3386 = icmp ne i32 %3385, 0
  br i1 %3386, label %3387, label %3404

3387:                                             ; preds = %3382
  %3388 = load i32, ptr %117, align 4, !tbaa !5
  %3389 = call ptr @__errno_location() #11
  store i32 %3388, ptr %3389, align 4, !tbaa !5
  %3390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3391 = load i32, ptr @test_count, align 4, !tbaa !5
  %3392 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3393 = load i32, ptr %3392, align 4, !tbaa !5
  %3394 = call ptr @s2n_strerror(i32 noundef %3393, ptr noundef @.str.4)
  %3395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3396 = load i32, ptr %3395, align 4, !tbaa !5
  %3397 = call ptr @s2n_strerror_debug(i32 noundef %3396, ptr noundef @.str.4)
  %3398 = call ptr @__errno_location() #11
  %3399 = load i32, ptr %3398, align 4, !tbaa !5
  %3400 = call ptr @strerror(i32 noundef %3399) #10
  %3401 = call ptr @__errno_location() #11
  %3402 = load i32, ptr %3401, align 4, !tbaa !5
  %3403 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3390, ptr noundef @.str.2, i32 noundef %3391, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 230, ptr noundef %3394, ptr noundef %3397, ptr noundef %3400, i32 noundef %3402) #10
  br label %3421

3404:                                             ; preds = %3382, %3375
  %3405 = load i32, ptr %117, align 4, !tbaa !5
  %3406 = call ptr @__errno_location() #11
  store i32 %3405, ptr %3406, align 4, !tbaa !5
  %3407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3408 = load i32, ptr @test_count, align 4, !tbaa !5
  %3409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3410 = load i32, ptr %3409, align 4, !tbaa !5
  %3411 = call ptr @s2n_strerror(i32 noundef %3410, ptr noundef @.str.4)
  %3412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3413 = load i32, ptr %3412, align 4, !tbaa !5
  %3414 = call ptr @s2n_strerror_debug(i32 noundef %3413, ptr noundef @.str.4)
  %3415 = call ptr @__errno_location() #11
  %3416 = load i32, ptr %3415, align 4, !tbaa !5
  %3417 = call ptr @strerror(i32 noundef %3416) #10
  %3418 = call ptr @__errno_location() #11
  %3419 = load i32, ptr %3418, align 4, !tbaa !5
  %3420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3407, ptr noundef @.str.5, i32 noundef %3408, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 230, ptr noundef %3411, ptr noundef %3414, ptr noundef %3417, i32 noundef %3419) #10
  br label %3421

3421:                                             ; preds = %3404, %3387
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #10
  br label %3422

3422:                                             ; preds = %3421
  br label %3423

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

3424:                                             ; No predecessors!
  br label %3425

3425:                                             ; preds = %3424
  br label %3426

3426:                                             ; preds = %3425, %3362
  br label %3427

3427:                                             ; preds = %3426
  br label %3428

3428:                                             ; preds = %3427
  br label %3429

3429:                                             ; preds = %3428
  %3430 = load i32, ptr @test_count, align 4, !tbaa !5
  %3431 = add nsw i32 %3430, 1
  store i32 %3431, ptr @test_count, align 4, !tbaa !5
  %3432 = load i8, ptr %115, align 1, !tbaa !11, !range !13, !noundef !14
  %3433 = trunc i8 %3432 to i1
  br i1 %3433, label %3487, label %3434

3434:                                             ; preds = %3429
  br label %3435

3435:                                             ; preds = %3434
  br label %3436

3436:                                             ; preds = %3435
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #10
  %3437 = call ptr @__errno_location() #11
  %3438 = load i32, ptr %3437, align 4, !tbaa !5
  store i32 %3438, ptr %118, align 4, !tbaa !5
  %3439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3440 = call i32 @s2n_print_stacktrace(ptr noundef %3439)
  %3441 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3442 = trunc i8 %3441 to i1
  br i1 %3442, label %3443, label %3465

3443:                                             ; preds = %3436
  %3444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3445 = call i32 @fileno(ptr noundef %3444) #10
  %3446 = call i32 @isatty(i32 noundef %3445) #10
  %3447 = icmp ne i32 %3446, 0
  br i1 %3447, label %3448, label %3465

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

3465:                                             ; preds = %3443, %3436
  %3466 = load i32, ptr %118, align 4, !tbaa !5
  %3467 = call ptr @__errno_location() #11
  store i32 %3466, ptr %3467, align 4, !tbaa !5
  %3468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3469 = load i32, ptr @test_count, align 4, !tbaa !5
  %3470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3471 = load i32, ptr %3470, align 4, !tbaa !5
  %3472 = call ptr @s2n_strerror(i32 noundef %3471, ptr noundef @.str.4)
  %3473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3474 = load i32, ptr %3473, align 4, !tbaa !5
  %3475 = call ptr @s2n_strerror_debug(i32 noundef %3474, ptr noundef @.str.4)
  %3476 = call ptr @__errno_location() #11
  %3477 = load i32, ptr %3476, align 4, !tbaa !5
  %3478 = call ptr @strerror(i32 noundef %3477) #10
  %3479 = call ptr @__errno_location() #11
  %3480 = load i32, ptr %3479, align 4, !tbaa !5
  %3481 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3468, ptr noundef @.str.5, i32 noundef %3469, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 231, ptr noundef %3472, ptr noundef %3475, ptr noundef %3478, i32 noundef %3480) #10
  br label %3482

3482:                                             ; preds = %3465, %3448
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #10
  br label %3483

3483:                                             ; preds = %3482
  br label %3484

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

3485:                                             ; No predecessors!
  br label %3486

3486:                                             ; preds = %3485
  br label %3487

3487:                                             ; preds = %3486, %3429
  br label %3488

3488:                                             ; preds = %3487
  br label %3489

3489:                                             ; preds = %3488
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #10
  br label %3490

3490:                                             ; preds = %3489
  %3491 = load i64, ptr %114, align 8, !tbaa !15
  %3492 = add i64 %3491, 1
  store i64 %3492, ptr %114, align 8, !tbaa !15
  br label %3357, !llvm.loop !49

3493:                                             ; preds = %3360
  call void @llvm.lifetime.start.p0(i64 5, ptr %119) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %119, ptr align 1 @__const.main.invalid.41, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  store i64 0, ptr %120, align 8, !tbaa !15
  br label %3494

3494:                                             ; preds = %3627, %3493
  %3495 = load i64, ptr %120, align 8, !tbaa !15
  %3496 = icmp ult i64 %3495, 5
  br i1 %3496, label %3498, label %3497

3497:                                             ; preds = %3494
  store i32 381, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %3630

3498:                                             ; preds = %3494
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #10
  store i8 1, ptr %121, align 1, !tbaa !11
  br label %3499

3499:                                             ; preds = %3498
  %3500 = load i32, ptr @test_count, align 4, !tbaa !5
  %3501 = add nsw i32 %3500, 1
  store i32 %3501, ptr @test_count, align 4, !tbaa !5
  %3502 = load i64, ptr %120, align 8, !tbaa !15
  %3503 = getelementptr inbounds [5 x i8], ptr %119, i64 0, i64 %3502
  %3504 = load i8, ptr %3503, align 1, !tbaa !48
  %3505 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %3504, ptr noundef %121)
  %3506 = getelementptr inbounds %struct.s2n_result, ptr %122, i32 0, i32 0
  store i32 %3505, ptr %3506, align 4
  %3507 = getelementptr inbounds %struct.s2n_result, ptr %122, i32 0, i32 0
  %3508 = load i32, ptr %3507, align 4
  %3509 = call zeroext i1 @s2n_result_is_ok(i32 %3508)
  br i1 %3509, label %3563, label %3510

3510:                                             ; preds = %3499
  br label %3511

3511:                                             ; preds = %3510
  br label %3512

3512:                                             ; preds = %3511
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #10
  %3513 = call ptr @__errno_location() #11
  %3514 = load i32, ptr %3513, align 4, !tbaa !5
  store i32 %3514, ptr %123, align 4, !tbaa !5
  %3515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3516 = call i32 @s2n_print_stacktrace(ptr noundef %3515)
  %3517 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3518 = trunc i8 %3517 to i1
  br i1 %3518, label %3519, label %3541

3519:                                             ; preds = %3512
  %3520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3521 = call i32 @fileno(ptr noundef %3520) #10
  %3522 = call i32 @isatty(i32 noundef %3521) #10
  %3523 = icmp ne i32 %3522, 0
  br i1 %3523, label %3524, label %3541

3524:                                             ; preds = %3519
  %3525 = load i32, ptr %123, align 4, !tbaa !5
  %3526 = call ptr @__errno_location() #11
  store i32 %3525, ptr %3526, align 4, !tbaa !5
  %3527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3528 = load i32, ptr @test_count, align 4, !tbaa !5
  %3529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3530 = load i32, ptr %3529, align 4, !tbaa !5
  %3531 = call ptr @s2n_strerror(i32 noundef %3530, ptr noundef @.str.4)
  %3532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3533 = load i32, ptr %3532, align 4, !tbaa !5
  %3534 = call ptr @s2n_strerror_debug(i32 noundef %3533, ptr noundef @.str.4)
  %3535 = call ptr @__errno_location() #11
  %3536 = load i32, ptr %3535, align 4, !tbaa !5
  %3537 = call ptr @strerror(i32 noundef %3536) #10
  %3538 = call ptr @__errno_location() #11
  %3539 = load i32, ptr %3538, align 4, !tbaa !5
  %3540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3527, ptr noundef @.str.2, i32 noundef %3528, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 238, ptr noundef %3531, ptr noundef %3534, ptr noundef %3537, i32 noundef %3539) #10
  br label %3558

3541:                                             ; preds = %3519, %3512
  %3542 = load i32, ptr %123, align 4, !tbaa !5
  %3543 = call ptr @__errno_location() #11
  store i32 %3542, ptr %3543, align 4, !tbaa !5
  %3544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3545 = load i32, ptr @test_count, align 4, !tbaa !5
  %3546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3547 = load i32, ptr %3546, align 4, !tbaa !5
  %3548 = call ptr @s2n_strerror(i32 noundef %3547, ptr noundef @.str.4)
  %3549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3550 = load i32, ptr %3549, align 4, !tbaa !5
  %3551 = call ptr @s2n_strerror_debug(i32 noundef %3550, ptr noundef @.str.4)
  %3552 = call ptr @__errno_location() #11
  %3553 = load i32, ptr %3552, align 4, !tbaa !5
  %3554 = call ptr @strerror(i32 noundef %3553) #10
  %3555 = call ptr @__errno_location() #11
  %3556 = load i32, ptr %3555, align 4, !tbaa !5
  %3557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3544, ptr noundef @.str.5, i32 noundef %3545, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 238, ptr noundef %3548, ptr noundef %3551, ptr noundef %3554, i32 noundef %3556) #10
  br label %3558

3558:                                             ; preds = %3541, %3524
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #10
  br label %3559

3559:                                             ; preds = %3558
  br label %3560

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

3561:                                             ; No predecessors!
  br label %3562

3562:                                             ; preds = %3561
  br label %3563

3563:                                             ; preds = %3562, %3499
  br label %3564

3564:                                             ; preds = %3563
  br label %3565

3565:                                             ; preds = %3564
  br label %3566

3566:                                             ; preds = %3565
  %3567 = load i32, ptr @test_count, align 4, !tbaa !5
  %3568 = add nsw i32 %3567, 1
  store i32 %3568, ptr @test_count, align 4, !tbaa !5
  %3569 = load i8, ptr %121, align 1, !tbaa !11, !range !13, !noundef !14
  %3570 = trunc i8 %3569 to i1
  br i1 %3570, label %3571, label %3624

3571:                                             ; preds = %3566
  br label %3572

3572:                                             ; preds = %3571
  br label %3573

3573:                                             ; preds = %3572
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #10
  %3574 = call ptr @__errno_location() #11
  %3575 = load i32, ptr %3574, align 4, !tbaa !5
  store i32 %3575, ptr %124, align 4, !tbaa !5
  %3576 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3577 = call i32 @s2n_print_stacktrace(ptr noundef %3576)
  %3578 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3579 = trunc i8 %3578 to i1
  br i1 %3579, label %3580, label %3602

3580:                                             ; preds = %3573
  %3581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3582 = call i32 @fileno(ptr noundef %3581) #10
  %3583 = call i32 @isatty(i32 noundef %3582) #10
  %3584 = icmp ne i32 %3583, 0
  br i1 %3584, label %3585, label %3602

3585:                                             ; preds = %3580
  %3586 = load i32, ptr %124, align 4, !tbaa !5
  %3587 = call ptr @__errno_location() #11
  store i32 %3586, ptr %3587, align 4, !tbaa !5
  %3588 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3589 = load i32, ptr @test_count, align 4, !tbaa !5
  %3590 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3591 = load i32, ptr %3590, align 4, !tbaa !5
  %3592 = call ptr @s2n_strerror(i32 noundef %3591, ptr noundef @.str.4)
  %3593 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3594 = load i32, ptr %3593, align 4, !tbaa !5
  %3595 = call ptr @s2n_strerror_debug(i32 noundef %3594, ptr noundef @.str.4)
  %3596 = call ptr @__errno_location() #11
  %3597 = load i32, ptr %3596, align 4, !tbaa !5
  %3598 = call ptr @strerror(i32 noundef %3597) #10
  %3599 = call ptr @__errno_location() #11
  %3600 = load i32, ptr %3599, align 4, !tbaa !5
  %3601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3588, ptr noundef @.str.2, i32 noundef %3589, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 239, ptr noundef %3592, ptr noundef %3595, ptr noundef %3598, i32 noundef %3600) #10
  br label %3619

3602:                                             ; preds = %3580, %3573
  %3603 = load i32, ptr %124, align 4, !tbaa !5
  %3604 = call ptr @__errno_location() #11
  store i32 %3603, ptr %3604, align 4, !tbaa !5
  %3605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3606 = load i32, ptr @test_count, align 4, !tbaa !5
  %3607 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3608 = load i32, ptr %3607, align 4, !tbaa !5
  %3609 = call ptr @s2n_strerror(i32 noundef %3608, ptr noundef @.str.4)
  %3610 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3611 = load i32, ptr %3610, align 4, !tbaa !5
  %3612 = call ptr @s2n_strerror_debug(i32 noundef %3611, ptr noundef @.str.4)
  %3613 = call ptr @__errno_location() #11
  %3614 = load i32, ptr %3613, align 4, !tbaa !5
  %3615 = call ptr @strerror(i32 noundef %3614) #10
  %3616 = call ptr @__errno_location() #11
  %3617 = load i32, ptr %3616, align 4, !tbaa !5
  %3618 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3605, ptr noundef @.str.5, i32 noundef %3606, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 239, ptr noundef %3609, ptr noundef %3612, ptr noundef %3615, i32 noundef %3617) #10
  br label %3619

3619:                                             ; preds = %3602, %3585
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #10
  br label %3620

3620:                                             ; preds = %3619
  br label %3621

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

3622:                                             ; No predecessors!
  br label %3623

3623:                                             ; preds = %3622
  br label %3624

3624:                                             ; preds = %3623, %3566
  br label %3625

3625:                                             ; preds = %3624
  br label %3626

3626:                                             ; preds = %3625
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #10
  br label %3627

3627:                                             ; preds = %3626
  %3628 = load i64, ptr %120, align 8, !tbaa !15
  %3629 = add i64 %3628, 1
  store i64 %3629, ptr %120, align 8, !tbaa !15
  br label %3494, !llvm.loop !50

3630:                                             ; preds = %3497
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #10
  store i64 0, ptr %125, align 8, !tbaa !15
  br label %3631

3631:                                             ; preds = %3702, %3630
  %3632 = load i64, ptr %125, align 8, !tbaa !15
  %3633 = icmp ult i64 %3632, 255
  br i1 %3633, label %3635, label %3634

3634:                                             ; preds = %3631
  store i32 396, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  br label %3705

3635:                                             ; preds = %3631
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #10
  store i8 0, ptr %126, align 1, !tbaa !11
  br label %3636

3636:                                             ; preds = %3635
  %3637 = load i32, ptr @test_count, align 4, !tbaa !5
  %3638 = add nsw i32 %3637, 1
  store i32 %3638, ptr @test_count, align 4, !tbaa !5
  %3639 = load i64, ptr %125, align 8, !tbaa !15
  %3640 = trunc i64 %3639 to i8
  %3641 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %3640, ptr noundef %126)
  %3642 = getelementptr inbounds %struct.s2n_result, ptr %127, i32 0, i32 0
  store i32 %3641, ptr %3642, align 4
  %3643 = getelementptr inbounds %struct.s2n_result, ptr %127, i32 0, i32 0
  %3644 = load i32, ptr %3643, align 4
  %3645 = call zeroext i1 @s2n_result_is_ok(i32 %3644)
  br i1 %3645, label %3699, label %3646

3646:                                             ; preds = %3636
  br label %3647

3647:                                             ; preds = %3646
  br label %3648

3648:                                             ; preds = %3647
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #10
  %3649 = call ptr @__errno_location() #11
  %3650 = load i32, ptr %3649, align 4, !tbaa !5
  store i32 %3650, ptr %128, align 4, !tbaa !5
  %3651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3652 = call i32 @s2n_print_stacktrace(ptr noundef %3651)
  %3653 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3654 = trunc i8 %3653 to i1
  br i1 %3654, label %3655, label %3677

3655:                                             ; preds = %3648
  %3656 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3657 = call i32 @fileno(ptr noundef %3656) #10
  %3658 = call i32 @isatty(i32 noundef %3657) #10
  %3659 = icmp ne i32 %3658, 0
  br i1 %3659, label %3660, label %3677

3660:                                             ; preds = %3655
  %3661 = load i32, ptr %128, align 4, !tbaa !5
  %3662 = call ptr @__errno_location() #11
  store i32 %3661, ptr %3662, align 4, !tbaa !5
  %3663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3664 = load i32, ptr @test_count, align 4, !tbaa !5
  %3665 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3666 = load i32, ptr %3665, align 4, !tbaa !5
  %3667 = call ptr @s2n_strerror(i32 noundef %3666, ptr noundef @.str.4)
  %3668 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3669 = load i32, ptr %3668, align 4, !tbaa !5
  %3670 = call ptr @s2n_strerror_debug(i32 noundef %3669, ptr noundef @.str.4)
  %3671 = call ptr @__errno_location() #11
  %3672 = load i32, ptr %3671, align 4, !tbaa !5
  %3673 = call ptr @strerror(i32 noundef %3672) #10
  %3674 = call ptr @__errno_location() #11
  %3675 = load i32, ptr %3674, align 4, !tbaa !5
  %3676 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3663, ptr noundef @.str.2, i32 noundef %3664, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 245, ptr noundef %3667, ptr noundef %3670, ptr noundef %3673, i32 noundef %3675) #10
  br label %3694

3677:                                             ; preds = %3655, %3648
  %3678 = load i32, ptr %128, align 4, !tbaa !5
  %3679 = call ptr @__errno_location() #11
  store i32 %3678, ptr %3679, align 4, !tbaa !5
  %3680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3681 = load i32, ptr @test_count, align 4, !tbaa !5
  %3682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3683 = load i32, ptr %3682, align 4, !tbaa !5
  %3684 = call ptr @s2n_strerror(i32 noundef %3683, ptr noundef @.str.4)
  %3685 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3686 = load i32, ptr %3685, align 4, !tbaa !5
  %3687 = call ptr @s2n_strerror_debug(i32 noundef %3686, ptr noundef @.str.4)
  %3688 = call ptr @__errno_location() #11
  %3689 = load i32, ptr %3688, align 4, !tbaa !5
  %3690 = call ptr @strerror(i32 noundef %3689) #10
  %3691 = call ptr @__errno_location() #11
  %3692 = load i32, ptr %3691, align 4, !tbaa !5
  %3693 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3680, ptr noundef @.str.5, i32 noundef %3681, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 245, ptr noundef %3684, ptr noundef %3687, ptr noundef %3690, i32 noundef %3692) #10
  br label %3694

3694:                                             ; preds = %3677, %3660
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #10
  br label %3695

3695:                                             ; preds = %3694
  br label %3696

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

3697:                                             ; No predecessors!
  br label %3698

3698:                                             ; preds = %3697
  br label %3699

3699:                                             ; preds = %3698, %3636
  br label %3700

3700:                                             ; preds = %3699
  br label %3701

3701:                                             ; preds = %3700
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #10
  br label %3702

3702:                                             ; preds = %3701
  %3703 = load i64, ptr %125, align 8, !tbaa !15
  %3704 = add i64 %3703, 1
  store i64 %3704, ptr %125, align 8, !tbaa !15
  br label %3631, !llvm.loop !51

3705:                                             ; preds = %3634
  call void @llvm.lifetime.end.p0(i64 5, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %113) #10
  br label %3706

3706:                                             ; preds = %3705
  br label %3707

3707:                                             ; preds = %3706
  %3708 = call i32 @s2n_cleanup()
  %3709 = icmp eq i32 %3708, -1
  br i1 %3709, label %3710, label %3761

3710:                                             ; preds = %3707
  br label %3711

3711:                                             ; preds = %3710
  br label %3712

3712:                                             ; preds = %3711
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #10
  %3713 = call ptr @__errno_location() #11
  %3714 = load i32, ptr %3713, align 4, !tbaa !5
  store i32 %3714, ptr %129, align 4, !tbaa !5
  %3715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3716 = call i32 @s2n_print_stacktrace(ptr noundef %3715)
  %3717 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3718 = trunc i8 %3717 to i1
  br i1 %3718, label %3719, label %3741

3719:                                             ; preds = %3712
  %3720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3721 = call i32 @fileno(ptr noundef %3720) #10
  %3722 = call i32 @isatty(i32 noundef %3721) #10
  %3723 = icmp ne i32 %3722, 0
  br i1 %3723, label %3724, label %3741

3724:                                             ; preds = %3719
  %3725 = load i32, ptr %129, align 4, !tbaa !5
  %3726 = call ptr @__errno_location() #11
  store i32 %3725, ptr %3726, align 4, !tbaa !5
  %3727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3728 = load i32, ptr @test_count, align 4, !tbaa !5
  %3729 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3730 = load i32, ptr %3729, align 4, !tbaa !5
  %3731 = call ptr @s2n_strerror(i32 noundef %3730, ptr noundef @.str.4)
  %3732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3733 = load i32, ptr %3732, align 4, !tbaa !5
  %3734 = call ptr @s2n_strerror_debug(i32 noundef %3733, ptr noundef @.str.4)
  %3735 = call ptr @__errno_location() #11
  %3736 = load i32, ptr %3735, align 4, !tbaa !5
  %3737 = call ptr @strerror(i32 noundef %3736) #10
  %3738 = call ptr @__errno_location() #11
  %3739 = load i32, ptr %3738, align 4, !tbaa !5
  %3740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3727, ptr noundef @.str.2, i32 noundef %3728, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 249, ptr noundef %3731, ptr noundef %3734, ptr noundef %3737, i32 noundef %3739) #10
  br label %3758

3741:                                             ; preds = %3719, %3712
  %3742 = load i32, ptr %129, align 4, !tbaa !5
  %3743 = call ptr @__errno_location() #11
  store i32 %3742, ptr %3743, align 4, !tbaa !5
  %3744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3745 = load i32, ptr @test_count, align 4, !tbaa !5
  %3746 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3747 = load i32, ptr %3746, align 4, !tbaa !5
  %3748 = call ptr @s2n_strerror(i32 noundef %3747, ptr noundef @.str.4)
  %3749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3750 = load i32, ptr %3749, align 4, !tbaa !5
  %3751 = call ptr @s2n_strerror_debug(i32 noundef %3750, ptr noundef @.str.4)
  %3752 = call ptr @__errno_location() #11
  %3753 = load i32, ptr %3752, align 4, !tbaa !5
  %3754 = call ptr @strerror(i32 noundef %3753) #10
  %3755 = call ptr @__errno_location() #11
  %3756 = load i32, ptr %3755, align 4, !tbaa !5
  %3757 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3744, ptr noundef @.str.5, i32 noundef %3745, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 249, ptr noundef %3748, ptr noundef %3751, ptr noundef %3754, i32 noundef %3756) #10
  br label %3758

3758:                                             ; preds = %3741, %3724
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #10
  br label %3759

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

3760:                                             ; No predecessors!
  br label %3761

3761:                                             ; preds = %3760, %3707
  br label %3762

3762:                                             ; preds = %3761
  br label %3763

3763:                                             ; preds = %3762
  br label %3764

3764:                                             ; preds = %3763
  %3765 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %3766 = icmp eq i32 %3765, -1
  br i1 %3766, label %3767, label %3818

3767:                                             ; preds = %3764
  br label %3768

3768:                                             ; preds = %3767
  br label %3769

3769:                                             ; preds = %3768
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #10
  %3770 = call ptr @__errno_location() #11
  %3771 = load i32, ptr %3770, align 4, !tbaa !5
  store i32 %3771, ptr %130, align 4, !tbaa !5
  %3772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3773 = call i32 @s2n_print_stacktrace(ptr noundef %3772)
  %3774 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3775 = trunc i8 %3774 to i1
  br i1 %3775, label %3776, label %3798

3776:                                             ; preds = %3769
  %3777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3778 = call i32 @fileno(ptr noundef %3777) #10
  %3779 = call i32 @isatty(i32 noundef %3778) #10
  %3780 = icmp ne i32 %3779, 0
  br i1 %3780, label %3781, label %3798

3781:                                             ; preds = %3776
  %3782 = load i32, ptr %130, align 4, !tbaa !5
  %3783 = call ptr @__errno_location() #11
  store i32 %3782, ptr %3783, align 4, !tbaa !5
  %3784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3785 = load i32, ptr @test_count, align 4, !tbaa !5
  %3786 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3787 = load i32, ptr %3786, align 4, !tbaa !5
  %3788 = call ptr @s2n_strerror(i32 noundef %3787, ptr noundef @.str.4)
  %3789 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3790 = load i32, ptr %3789, align 4, !tbaa !5
  %3791 = call ptr @s2n_strerror_debug(i32 noundef %3790, ptr noundef @.str.4)
  %3792 = call ptr @__errno_location() #11
  %3793 = load i32, ptr %3792, align 4, !tbaa !5
  %3794 = call ptr @strerror(i32 noundef %3793) #10
  %3795 = call ptr @__errno_location() #11
  %3796 = load i32, ptr %3795, align 4, !tbaa !5
  %3797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3784, ptr noundef @.str.2, i32 noundef %3785, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 249, ptr noundef %3788, ptr noundef %3791, ptr noundef %3794, i32 noundef %3796) #10
  br label %3815

3798:                                             ; preds = %3776, %3769
  %3799 = load i32, ptr %130, align 4, !tbaa !5
  %3800 = call ptr @__errno_location() #11
  store i32 %3799, ptr %3800, align 4, !tbaa !5
  %3801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3802 = load i32, ptr @test_count, align 4, !tbaa !5
  %3803 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3804 = load i32, ptr %3803, align 4, !tbaa !5
  %3805 = call ptr @s2n_strerror(i32 noundef %3804, ptr noundef @.str.4)
  %3806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3807 = load i32, ptr %3806, align 4, !tbaa !5
  %3808 = call ptr @s2n_strerror_debug(i32 noundef %3807, ptr noundef @.str.4)
  %3809 = call ptr @__errno_location() #11
  %3810 = load i32, ptr %3809, align 4, !tbaa !5
  %3811 = call ptr @strerror(i32 noundef %3810) #10
  %3812 = call ptr @__errno_location() #11
  %3813 = load i32, ptr %3812, align 4, !tbaa !5
  %3814 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3801, ptr noundef @.str.5, i32 noundef %3802, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 249, ptr noundef %3805, ptr noundef %3808, ptr noundef %3811, i32 noundef %3813) #10
  br label %3815

3815:                                             ; preds = %3798, %3781
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #10
  br label %3816

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

3817:                                             ; No predecessors!
  br label %3818

3818:                                             ; preds = %3817, %3764
  br label %3819

3819:                                             ; preds = %3818
  %3820 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3821 = trunc i8 %3820 to i1
  br i1 %3821, label %3822, label %3838

3822:                                             ; preds = %3819
  %3823 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3824 = call i32 @fileno(ptr noundef %3823) #10
  %3825 = call i32 @isatty(i32 noundef %3824) #10
  %3826 = icmp ne i32 %3825, 0
  br i1 %3826, label %3827, label %3838

3827:                                             ; preds = %3822
  %3828 = load i32, ptr @test_count, align 4, !tbaa !5
  %3829 = icmp ne i32 %3828, 0
  br i1 %3829, label %3830, label %3834

3830:                                             ; preds = %3827
  %3831 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3832 = load i32, ptr @test_count, align 4, !tbaa !5
  %3833 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3831, ptr noundef @.str.46, i32 noundef %3832) #10
  br label %3837

3834:                                             ; preds = %3827
  %3835 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3836 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3835, ptr noundef @.str.47) #10
  br label %3837

3837:                                             ; preds = %3834, %3830
  br label %3849

3838:                                             ; preds = %3822, %3819
  %3839 = load i32, ptr @test_count, align 4, !tbaa !5
  %3840 = icmp ne i32 %3839, 0
  br i1 %3840, label %3841, label %3845

3841:                                             ; preds = %3838
  %3842 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3843 = load i32, ptr @test_count, align 4, !tbaa !5
  %3844 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3842, ptr noundef @.str.48, i32 noundef %3843) #10
  br label %3848

3845:                                             ; preds = %3838
  %3846 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3847 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3846, ptr noundef @.str.49) #10
  br label %3848

3848:                                             ; preds = %3845, %3841
  br label %3849

3849:                                             ; preds = %3848, %3837
  store i32 0, ptr %3, align 4
  br label %3851

3850:                                             ; No predecessors!
  br label %3851

3851:                                             ; preds = %3850, %3849
  %3852 = load i32, ptr %3, align 4
  ret i32 %3852

3853:                                             ; preds = %3162, %2316, %1465
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

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

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

declare void @s2n_debug_info_reset() #2

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

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

; Function Attrs: nounwind willreturn memory(read)
declare ptr @strstr(ptr noundef, ptr noundef) #9

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

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

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

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

declare i32 @s2n_fips_validate_version(i8 noundef zeroext, ptr noundef) #2

declare i32 @s2n_cleanup() #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { 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 #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 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!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 = !{!25, !10, i64 8}
!25 = !{!"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}
!26 = distinct !{!26, !18}
!27 = !{!28, !10, i64 32}
!28 = !{!"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}
!29 = !{!28, !10, i64 8}
!30 = !{!28, !6, i64 96}
!31 = distinct !{!31, !18}
!32 = distinct !{!32, !18}
!33 = distinct !{!33, !18}
!34 = !{!25, !10, i64 24}
!35 = !{!36, !7, i64 0}
!36 = !{!"s2n_signature_preferences", !7, i64 0, !10, i64 8}
!37 = !{!36, !10, i64 8}
!38 = distinct !{!38, !18}
!39 = distinct !{!39, !18}
!40 = distinct !{!40, !18}
!41 = distinct !{!41, !18}
!42 = !{!43, !7, i64 0}
!43 = !{!"s2n_ecc_preferences", !7, i64 0, !10, i64 8}
!44 = !{!43, !10, i64 8}
!45 = !{!25, !10, i64 40}
!46 = distinct !{!46, !18}
!47 = distinct !{!47, !18}
!48 = !{!7, !7, i64 0}
!49 = distinct !{!49, !18}
!50 = distinct !{!50, !18}
!51 = distinct !{!51, !18}


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

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_kex = type { i8, [2 x ptr], ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_signature_scheme = type { i16, ptr, i32, i32, i8, i8, i16, ptr }
%struct.s2n_ecc_named_curve = type { i16, i32, ptr, i8, ptr }
%struct.s2n_ecc_preferences = type { i8, ptr }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [78 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [70 x i8], align 1
@s2n_null_cipher_suite = external global %struct.s2n_cipher_suite, align 8
@.str.11 = external hidden unnamed_addr constant [101 x i8], align 1
@__const.main.valid = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.12 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [22 x i8], align 1
@__const.main.invalid = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.14 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@cipher_preferences_test_all = external local_unnamed_addr constant %struct.s2n_cipher_preferences, align 8
@.str.16 = external hidden unnamed_addr constant [87 x i8], align 1
@security_policy_test_all_fips = external local_unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.17 = external hidden unnamed_addr constant [39 x i8], align 1
@s2n_rsa = external constant %struct.s2n_kex, align 8
@.str.18 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [92 x i8], align 1
@s2n_null_sig_scheme = external constant %struct.s2n_signature_scheme, align 8
@.str.25 = external hidden unnamed_addr constant [103 x i8], align 1
@__const.main.valid.26 = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.27 = external hidden unnamed_addr constant [87 x i8], align 1
@__const.main.invalid.28 = external hidden unnamed_addr constant [4 x ptr], align 16
@.str.29 = external hidden unnamed_addr constant [89 x i8], align 1
@security_policy_test_all = external local_unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.30 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [81 x i8], align 1
@s2n_ecc_curve_secp256r1 = external constant %struct.s2n_ecc_named_curve, align 8
@.str.32 = external hidden unnamed_addr constant [96 x i8], align 1
@__const.main.valid.33 = external hidden unnamed_addr constant [1 x ptr], align 8
@.str.34 = external hidden unnamed_addr constant [76 x i8], align 1
@__const.main.invalid.35 = external hidden unnamed_addr constant [1 x ptr], align 8
@.str.36 = external hidden unnamed_addr constant [78 x i8], align 1
@s2n_ecc_preferences_test_all = external local_unnamed_addr constant %struct.s2n_ecc_preferences, align 8
@.str.37 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [75 x i8], align 1
@__const.main.valid.39 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [78 x i8], align 1
@__const.main.invalid.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1

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

26:                                               ; preds = %2
  %27 = tail call ptr @__errno_location() #11
  %28 = load i32, ptr %27, align 4, !tbaa !5
  %29 = load ptr, ptr @stderr, align 8, !tbaa !9
  %30 = tail call i32 @s2n_print_stacktrace(ptr noundef %29) #10
  %31 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %32 = trunc nuw i8 %31 to i1
  br i1 %32, label %33, label %37

33:                                               ; preds = %26
  %34 = load ptr, ptr @stderr, align 8, !tbaa !9
  %35 = tail call i32 @fileno(ptr noundef %34) #10
  %36 = tail call i32 @isatty(i32 noundef %35) #10
  %.not268 = icmp eq i32 %36, 0
  br i1 %.not268, label %37, label %38

37:                                               ; preds = %33, %26
  br label %38

38:                                               ; preds = %33, %37
  %.str.5.sink = phi ptr [ @.str.5, %37 ], [ @.str.2, %33 ]
  store i32 %28, ptr %27, align 4, !tbaa !5
  %39 = load ptr, ptr @stderr, align 8, !tbaa !9
  %40 = load i32, ptr @test_count, align 4, !tbaa !5
  %41 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %42 = load i32, ptr %41, align 4, !tbaa !5
  %43 = tail call ptr @s2n_strerror(i32 noundef %42, ptr noundef nonnull @.str.4) #10
  %44 = load i32, ptr %41, align 4, !tbaa !5
  %45 = tail call ptr @s2n_strerror_debug(i32 noundef %44, ptr noundef nonnull @.str.4) #10
  %46 = load i32, ptr %27, align 4, !tbaa !5
  %47 = tail call ptr @strerror(i32 noundef %46) #10
  %48 = load i32, ptr %27, align 4, !tbaa !5
  %49 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %39, ptr noundef nonnull %.str.5.sink, i32 noundef %40, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 24, ptr noundef %43, ptr noundef %45, ptr noundef %47, i32 noundef %48) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

50:                                               ; preds = %2
  %51 = load i32, ptr @test_count, align 4, !tbaa !5
  %52 = add nsw i32 %51, 1
  store i32 %52, ptr @test_count, align 4, !tbaa !5
  %53 = tail call i32 @s2n_enable_atexit() #10
  %54 = icmp eq i32 %53, -1
  br i1 %54, label %55, label %79

55:                                               ; preds = %50
  %56 = tail call ptr @__errno_location() #11
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = load ptr, ptr @stderr, align 8, !tbaa !9
  %59 = tail call i32 @s2n_print_stacktrace(ptr noundef %58) #10
  %60 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %61 = trunc nuw i8 %60 to i1
  br i1 %61, label %62, label %66

62:                                               ; preds = %55
  %63 = load ptr, ptr @stderr, align 8, !tbaa !9
  %64 = tail call i32 @fileno(ptr noundef %63) #10
  %65 = tail call i32 @isatty(i32 noundef %64) #10
  %.not267 = icmp eq i32 %65, 0
  br i1 %.not267, label %66, label %67

66:                                               ; preds = %62, %55
  br label %67

67:                                               ; preds = %62, %66
  %.str.5.sink340 = phi ptr [ @.str.5, %66 ], [ @.str.2, %62 ]
  store i32 %57, ptr %56, align 4, !tbaa !5
  %68 = load ptr, ptr @stderr, align 8, !tbaa !9
  %69 = load i32, ptr @test_count, align 4, !tbaa !5
  %70 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %71 = load i32, ptr %70, align 4, !tbaa !5
  %72 = tail call ptr @s2n_strerror(i32 noundef %71, ptr noundef nonnull @.str.4) #10
  %73 = load i32, ptr %70, align 4, !tbaa !5
  %74 = tail call ptr @s2n_strerror_debug(i32 noundef %73, ptr noundef nonnull @.str.4) #10
  %75 = load i32, ptr %56, align 4, !tbaa !5
  %76 = tail call ptr @strerror(i32 noundef %75) #10
  %77 = load i32, ptr %56, align 4, !tbaa !5
  %78 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %68, ptr noundef nonnull %.str.5.sink340, i32 noundef %69, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 24, ptr noundef %72, ptr noundef %74, ptr noundef %76, i32 noundef %77) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

79:                                               ; preds = %50
  %80 = tail call i32 @s2n_init() #10
  %81 = icmp eq i32 %80, -1
  br i1 %81, label %82, label %106

82:                                               ; preds = %79
  %83 = tail call ptr @__errno_location() #11
  %84 = load i32, ptr %83, align 4, !tbaa !5
  %85 = load ptr, ptr @stderr, align 8, !tbaa !9
  %86 = tail call i32 @s2n_print_stacktrace(ptr noundef %85) #10
  %87 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %88 = trunc nuw i8 %87 to i1
  br i1 %88, label %89, label %93

89:                                               ; preds = %82
  %90 = load ptr, ptr @stderr, align 8, !tbaa !9
  %91 = tail call i32 @fileno(ptr noundef %90) #10
  %92 = tail call i32 @isatty(i32 noundef %91) #10
  %.not266 = icmp eq i32 %92, 0
  br i1 %.not266, label %93, label %94

93:                                               ; preds = %89, %82
  br label %94

94:                                               ; preds = %89, %93
  %.str.5.sink351 = phi ptr [ @.str.5, %93 ], [ @.str.2, %89 ]
  store i32 %84, ptr %83, align 4, !tbaa !5
  %95 = load ptr, ptr @stderr, align 8, !tbaa !9
  %96 = load i32, ptr @test_count, align 4, !tbaa !5
  %97 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %98 = load i32, ptr %97, align 4, !tbaa !5
  %99 = tail call ptr @s2n_strerror(i32 noundef %98, ptr noundef nonnull @.str.4) #10
  %100 = load i32, ptr %97, align 4, !tbaa !5
  %101 = tail call ptr @s2n_strerror_debug(i32 noundef %100, ptr noundef nonnull @.str.4) #10
  %102 = load i32, ptr %83, align 4, !tbaa !5
  %103 = tail call ptr @strerror(i32 noundef %102) #10
  %104 = load i32, ptr %83, align 4, !tbaa !5
  %105 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %95, ptr noundef nonnull %.str.5.sink351, i32 noundef %96, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 24, ptr noundef %99, ptr noundef %101, ptr noundef %103, i32 noundef %104) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

106:                                              ; preds = %79
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #10
  store i8 0, ptr %3, align 1, !tbaa !11
  %107 = load i32, ptr @test_count, align 4, !tbaa !5
  %108 = add nsw i32 %107, 1
  store i32 %108, ptr @test_count, align 4, !tbaa !5
  %109 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef null, ptr noundef nonnull %3) #10
  %110 = call zeroext i1 @s2n_result_is_error(i32 %109)
  br i1 %110, label %135, label %111

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

118:                                              ; preds = %111
  %119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %120 = call i32 @fileno(ptr noundef %119) #10
  %121 = call i32 @isatty(i32 noundef %120) #10
  %.not = icmp eq i32 %121, 0
  br i1 %.not, label %122, label %123

122:                                              ; preds = %118, %111
  br label %123

123:                                              ; preds = %118, %122
  %.str.5.sink362 = phi ptr [ @.str.5, %122 ], [ @.str.2, %118 ]
  store i32 %113, ptr %112, align 4, !tbaa !5
  %124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %125 = load i32, ptr @test_count, align 4, !tbaa !5
  %126 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %128 = call ptr @s2n_strerror(i32 noundef %127, ptr noundef nonnull @.str.4) #10
  %129 = load i32, ptr %126, align 4, !tbaa !5
  %130 = call ptr @s2n_strerror_debug(i32 noundef %129, ptr noundef nonnull @.str.4) #10
  %131 = load i32, ptr %112, align 4, !tbaa !5
  %132 = call ptr @strerror(i32 noundef %131) #10
  %133 = load i32, ptr %112, align 4, !tbaa !5
  %134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %124, ptr noundef nonnull %.str.5.sink362, i32 noundef %125, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 33, ptr noundef %128, ptr noundef %130, ptr noundef %132, i32 noundef %133) #12
  call void @exit(i32 noundef 1) #13
  unreachable

135:                                              ; preds = %106
  %136 = load i32, ptr @test_count, align 4, !tbaa !5
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr @test_count, align 4, !tbaa !5
  %138 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %139 = load i32, ptr %138, align 4, !tbaa !5
  %140 = icmp eq i32 %139, 402653193
  br i1 %140, label %164, label %141

141:                                              ; preds = %135
  %142 = tail call ptr @__errno_location() #11
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %145 = call i32 @s2n_print_stacktrace(ptr noundef %144) #10
  %146 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %147 = trunc nuw i8 %146 to i1
  br i1 %147, label %148, label %152

148:                                              ; preds = %141
  %149 = load ptr, ptr @stderr, align 8, !tbaa !9
  %150 = call i32 @fileno(ptr noundef %149) #10
  %151 = call i32 @isatty(i32 noundef %150) #10
  %.not213 = icmp eq i32 %151, 0
  br i1 %.not213, label %152, label %153

152:                                              ; preds = %148, %141
  br label %153

153:                                              ; preds = %148, %152
  %.str.5.sink373 = phi ptr [ @.str.5, %152 ], [ @.str.2, %148 ]
  store i32 %143, ptr %142, align 4, !tbaa !5
  %154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %155 = load i32, ptr @test_count, align 4, !tbaa !5
  %156 = load i32, ptr %138, align 4, !tbaa !5
  %157 = call ptr @s2n_strerror(i32 noundef %156, ptr noundef nonnull @.str.4) #10
  %158 = load i32, ptr %138, align 4, !tbaa !5
  %159 = call ptr @s2n_strerror_debug(i32 noundef %158, ptr noundef nonnull @.str.4) #10
  %160 = load i32, ptr %142, align 4, !tbaa !5
  %161 = call ptr @strerror(i32 noundef %160) #10
  %162 = load i32, ptr %142, align 4, !tbaa !5
  %163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %154, ptr noundef nonnull %.str.5.sink373, i32 noundef %155, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 33, ptr noundef %157, ptr noundef %159, ptr noundef %161, i32 noundef %162) #12
  call void @exit(i32 noundef 1) #13
  unreachable

164:                                              ; preds = %135
  %165 = add nsw i32 %136, 2
  store i32 %165, ptr @test_count, align 4, !tbaa !5
  %166 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %167 = icmp eq ptr %166, null
  br i1 %167, label %168, label %191

168:                                              ; preds = %164
  %169 = tail call ptr @__errno_location() #11
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %172 = call i32 @s2n_print_stacktrace(ptr noundef %171) #10
  %173 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %174 = trunc nuw i8 %173 to i1
  br i1 %174, label %175, label %179

175:                                              ; preds = %168
  %176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %177 = call i32 @fileno(ptr noundef %176) #10
  %178 = call i32 @isatty(i32 noundef %177) #10
  %.not265 = icmp eq i32 %178, 0
  br i1 %.not265, label %179, label %180

179:                                              ; preds = %175, %168
  br label %180

180:                                              ; preds = %175, %179
  %.str.5.sink382 = phi ptr [ @.str.5, %179 ], [ @.str.2, %175 ]
  store i32 %170, ptr %169, align 4, !tbaa !5
  %181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %182 = load i32, ptr @test_count, align 4, !tbaa !5
  %183 = load i32, ptr %138, align 4, !tbaa !5
  %184 = call ptr @s2n_strerror(i32 noundef %183, ptr noundef nonnull @.str.4) #10
  %185 = load i32, ptr %138, align 4, !tbaa !5
  %186 = call ptr @s2n_strerror_debug(i32 noundef %185, ptr noundef nonnull @.str.4) #10
  %187 = load i32, ptr %169, align 4, !tbaa !5
  %188 = call ptr @strerror(i32 noundef %187) #10
  %189 = load i32, ptr %169, align 4, !tbaa !5
  %190 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %181, ptr noundef nonnull %.str.5.sink382, i32 noundef %182, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 33, ptr noundef %184, ptr noundef %186, ptr noundef %188, i32 noundef %189) #12
  call void @exit(i32 noundef 1) #13
  unreachable

191:                                              ; preds = %164
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  %192 = tail call ptr @__errno_location() #11
  store i32 0, ptr %192, align 4, !tbaa !5
  %193 = load i32, ptr @test_count, align 4, !tbaa !5
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr @test_count, align 4, !tbaa !5
  %195 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef nonnull @s2n_null_cipher_suite, ptr noundef null) #10
  %196 = call zeroext i1 @s2n_result_is_error(i32 %195)
  br i1 %196, label %219, label %197

197:                                              ; preds = %191
  %198 = load i32, ptr %192, align 4, !tbaa !5
  %199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %200 = call i32 @s2n_print_stacktrace(ptr noundef %199) #10
  %201 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %202 = trunc nuw i8 %201 to i1
  br i1 %202, label %203, label %207

203:                                              ; preds = %197
  %204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %205 = call i32 @fileno(ptr noundef %204) #10
  %206 = call i32 @isatty(i32 noundef %205) #10
  %.not214 = icmp eq i32 %206, 0
  br i1 %.not214, label %207, label %208

207:                                              ; preds = %203, %197
  br label %208

208:                                              ; preds = %203, %207
  %.str.5.sink391 = phi ptr [ @.str.5, %207 ], [ @.str.2, %203 ]
  store i32 %198, ptr %192, align 4, !tbaa !5
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = load i32, ptr @test_count, align 4, !tbaa !5
  %211 = load i32, ptr %138, align 4, !tbaa !5
  %212 = call ptr @s2n_strerror(i32 noundef %211, ptr noundef nonnull @.str.4) #10
  %213 = load i32, ptr %138, align 4, !tbaa !5
  %214 = call ptr @s2n_strerror_debug(i32 noundef %213, ptr noundef nonnull @.str.4) #10
  %215 = load i32, ptr %192, align 4, !tbaa !5
  %216 = call ptr @strerror(i32 noundef %215) #10
  %217 = load i32, ptr %192, align 4, !tbaa !5
  %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %209, ptr noundef nonnull %.str.5.sink391, i32 noundef %210, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 36, ptr noundef %212, ptr noundef %214, ptr noundef %216, i32 noundef %217) #12
  call void @exit(i32 noundef 1) #13
  unreachable

219:                                              ; preds = %191
  %220 = load i32, ptr @test_count, align 4, !tbaa !5
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr @test_count, align 4, !tbaa !5
  %222 = load i32, ptr %138, align 4, !tbaa !5
  %223 = icmp eq i32 %222, 402653193
  br i1 %223, label %246, label %224

224:                                              ; preds = %219
  %225 = load i32, ptr %192, align 4, !tbaa !5
  %226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %227 = call i32 @s2n_print_stacktrace(ptr noundef %226) #10
  %228 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %229 = trunc nuw i8 %228 to i1
  br i1 %229, label %230, label %234

230:                                              ; preds = %224
  %231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %232 = call i32 @fileno(ptr noundef %231) #10
  %233 = call i32 @isatty(i32 noundef %232) #10
  %.not215 = icmp eq i32 %233, 0
  br i1 %.not215, label %234, label %235

234:                                              ; preds = %230, %224
  br label %235

235:                                              ; preds = %230, %234
  %.str.5.sink400 = phi ptr [ @.str.5, %234 ], [ @.str.2, %230 ]
  store i32 %225, ptr %192, align 4, !tbaa !5
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = load i32, ptr @test_count, align 4, !tbaa !5
  %238 = load i32, ptr %138, align 4, !tbaa !5
  %239 = call ptr @s2n_strerror(i32 noundef %238, ptr noundef nonnull @.str.4) #10
  %240 = load i32, ptr %138, align 4, !tbaa !5
  %241 = call ptr @s2n_strerror_debug(i32 noundef %240, ptr noundef nonnull @.str.4) #10
  %242 = load i32, ptr %192, align 4, !tbaa !5
  %243 = call ptr @strerror(i32 noundef %242) #10
  %244 = load i32, ptr %192, align 4, !tbaa !5
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef nonnull %.str.5.sink400, i32 noundef %237, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 36, ptr noundef %239, ptr noundef %241, ptr noundef %243, i32 noundef %244) #12
  call void @exit(i32 noundef 1) #13
  unreachable

246:                                              ; preds = %219
  %247 = add nsw i32 %220, 2
  store i32 %247, ptr @test_count, align 4, !tbaa !5
  %248 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %249 = icmp eq ptr %248, null
  br i1 %249, label %250, label %272

250:                                              ; preds = %246
  %251 = load i32, ptr %192, align 4, !tbaa !5
  %252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %253 = call i32 @s2n_print_stacktrace(ptr noundef %252) #10
  %254 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %255 = trunc nuw i8 %254 to i1
  br i1 %255, label %256, label %260

256:                                              ; preds = %250
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = call i32 @fileno(ptr noundef %257) #10
  %259 = call i32 @isatty(i32 noundef %258) #10
  %.not264 = icmp eq i32 %259, 0
  br i1 %.not264, label %260, label %261

260:                                              ; preds = %256, %250
  br label %261

261:                                              ; preds = %256, %260
  %.str.5.sink409 = phi ptr [ @.str.5, %260 ], [ @.str.2, %256 ]
  store i32 %251, ptr %192, align 4, !tbaa !5
  %262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %263 = load i32, ptr @test_count, align 4, !tbaa !5
  %264 = load i32, ptr %138, align 4, !tbaa !5
  %265 = call ptr @s2n_strerror(i32 noundef %264, ptr noundef nonnull @.str.4) #10
  %266 = load i32, ptr %138, align 4, !tbaa !5
  %267 = call ptr @s2n_strerror_debug(i32 noundef %266, ptr noundef nonnull @.str.4) #10
  %268 = load i32, ptr %192, align 4, !tbaa !5
  %269 = call ptr @strerror(i32 noundef %268) #10
  %270 = load i32, ptr %192, align 4, !tbaa !5
  %271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %262, ptr noundef nonnull %.str.5.sink409, i32 noundef %263, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 36, ptr noundef %265, ptr noundef %267, ptr noundef %269, i32 noundef %270) #12
  call void @exit(i32 noundef 1) #13
  unreachable

272:                                              ; preds = %246
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %192, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  store i8 0, ptr %4, align 1, !tbaa !11
  %273 = load i32, ptr @test_count, align 4, !tbaa !5
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr @test_count, align 4, !tbaa !5
  %275 = load ptr, ptr @__const.main.valid, align 16, !tbaa !9
  %276 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %275, ptr noundef nonnull %4) #10
  %277 = call zeroext i1 @s2n_result_is_ok(i32 %276)
  br i1 %277, label %300, label %278

278:                                              ; preds = %337, %327, %272
  %279 = load i32, ptr %192, align 4, !tbaa !5
  %280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %281 = call i32 @s2n_print_stacktrace(ptr noundef %280) #10
  %282 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %283 = trunc nuw i8 %282 to i1
  br i1 %283, label %284, label %288

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

288:                                              ; preds = %284, %278
  br label %289

289:                                              ; preds = %284, %288
  %.str.5.sink418 = phi ptr [ @.str.5, %288 ], [ @.str.2, %284 ]
  store i32 %279, ptr %192, align 4, !tbaa !5
  %290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %291 = load i32, ptr @test_count, align 4, !tbaa !5
  %292 = load i32, ptr %138, align 4, !tbaa !5
  %293 = call ptr @s2n_strerror(i32 noundef %292, ptr noundef nonnull @.str.4) #10
  %294 = load i32, ptr %138, align 4, !tbaa !5
  %295 = call ptr @s2n_strerror_debug(i32 noundef %294, ptr noundef nonnull @.str.4) #10
  %296 = load i32, ptr %192, align 4, !tbaa !5
  %297 = call ptr @strerror(i32 noundef %296) #10
  %298 = load i32, ptr %192, align 4, !tbaa !5
  %299 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %290, ptr noundef nonnull %.str.5.sink418, i32 noundef %291, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %293, ptr noundef %295, ptr noundef %297, i32 noundef %298) #12
  call void @exit(i32 noundef 1) #13
  unreachable

300:                                              ; preds = %272
  %301 = load i32, ptr @test_count, align 4, !tbaa !5
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr @test_count, align 4, !tbaa !5
  %303 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %304 = trunc nuw i8 %303 to i1
  br i1 %304, label %327, label %305

305:                                              ; preds = %342, %332, %300
  %306 = load i32, ptr %192, align 4, !tbaa !5
  %307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %308 = call i32 @s2n_print_stacktrace(ptr noundef %307) #10
  %309 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %311, label %315

311:                                              ; preds = %305
  %312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %313 = call i32 @fileno(ptr noundef %312) #10
  %314 = call i32 @isatty(i32 noundef %313) #10
  %.not263 = icmp eq i32 %314, 0
  br i1 %.not263, label %315, label %316

315:                                              ; preds = %311, %305
  br label %316

316:                                              ; preds = %311, %315
  %.str.5.sink427 = phi ptr [ @.str.5, %315 ], [ @.str.2, %311 ]
  store i32 %306, ptr %192, align 4, !tbaa !5
  %317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %318 = load i32, ptr @test_count, align 4, !tbaa !5
  %319 = load i32, ptr %138, align 4, !tbaa !5
  %320 = call ptr @s2n_strerror(i32 noundef %319, ptr noundef nonnull @.str.4) #10
  %321 = load i32, ptr %138, align 4, !tbaa !5
  %322 = call ptr @s2n_strerror_debug(i32 noundef %321, ptr noundef nonnull @.str.4) #10
  %323 = load i32, ptr %192, align 4, !tbaa !5
  %324 = call ptr @strerror(i32 noundef %323) #10
  %325 = load i32, ptr %192, align 4, !tbaa !5
  %326 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull %.str.5.sink427, i32 noundef %318, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 48, ptr noundef %320, ptr noundef %322, ptr noundef %324, i32 noundef %325) #12
  call void @exit(i32 noundef 1) #13
  unreachable

327:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  store i8 0, ptr %4, align 1, !tbaa !11
  %328 = add nsw i32 %301, 2
  store i32 %328, ptr @test_count, align 4, !tbaa !5
  %329 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.valid, i64 8), align 8, !tbaa !9
  %330 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %329, ptr noundef nonnull %4) #10
  %331 = call zeroext i1 @s2n_result_is_ok(i32 %330)
  br i1 %331, label %332, label %278

332:                                              ; preds = %327
  %333 = load i32, ptr @test_count, align 4, !tbaa !5
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr @test_count, align 4, !tbaa !5
  %335 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %336 = trunc nuw i8 %335 to i1
  br i1 %336, label %337, label %305

337:                                              ; preds = %332
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #10
  store i8 0, ptr %4, align 1, !tbaa !11
  %338 = add nsw i32 %333, 2
  store i32 %338, ptr @test_count, align 4, !tbaa !5
  %339 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.valid, i64 16), align 16, !tbaa !9
  %340 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %339, ptr noundef nonnull %4) #10
  %341 = call zeroext i1 @s2n_result_is_ok(i32 %340)
  br i1 %341, label %342, label %278

342:                                              ; preds = %337
  %343 = load i32, ptr @test_count, align 4, !tbaa !5
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr @test_count, align 4, !tbaa !5
  %345 = load i8, ptr %4, align 1, !tbaa !11, !range !13, !noundef !14
  %346 = trunc nuw i8 %345 to i1
  br i1 %346, label %.preheader276.preheader, label %305

.preheader276.preheader:                          ; preds = %342
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  store i8 1, ptr %5, align 1, !tbaa !11
  %347 = add nsw i32 %343, 2
  store i32 %347, ptr @test_count, align 4, !tbaa !5
  %348 = load ptr, ptr @__const.main.invalid, align 16, !tbaa !9
  %349 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %348, ptr noundef nonnull %5) #10
  %350 = call zeroext i1 @s2n_result_is_ok(i32 %349)
  br i1 %350, label %376, label %354

.lr.ph282:                                        ; preds = %.preheader275
  %351 = load ptr, ptr getelementptr inbounds (i8, ptr @cipher_preferences_test_all, i64 8), align 8, !tbaa !15
  %352 = load ptr, ptr getelementptr inbounds (i8, ptr @security_policy_test_all_fips, i64 8), align 8
  %353 = getelementptr inbounds i8, ptr %352, i64 8
  br label %427

354:                                              ; preds = %.preheader276.2, %.preheader276.1, %.preheader276.preheader
  %355 = load i32, ptr %192, align 4, !tbaa !5
  %356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %357 = call i32 @s2n_print_stacktrace(ptr noundef %356) #10
  %358 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %359 = trunc nuw i8 %358 to i1
  br i1 %359, label %360, label %364

360:                                              ; preds = %354
  %361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %362 = call i32 @fileno(ptr noundef %361) #10
  %363 = call i32 @isatty(i32 noundef %362) #10
  %.not260 = icmp eq i32 %363, 0
  br i1 %.not260, label %364, label %365

364:                                              ; preds = %360, %354
  br label %365

365:                                              ; preds = %360, %364
  %.str.5.sink436 = phi ptr [ @.str.5, %364 ], [ @.str.2, %360 ]
  store i32 %355, ptr %192, align 4, !tbaa !5
  %366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %367 = load i32, ptr @test_count, align 4, !tbaa !5
  %368 = load i32, ptr %138, align 4, !tbaa !5
  %369 = call ptr @s2n_strerror(i32 noundef %368, ptr noundef nonnull @.str.4) #10
  %370 = load i32, ptr %138, align 4, !tbaa !5
  %371 = call ptr @s2n_strerror_debug(i32 noundef %370, ptr noundef nonnull @.str.4) #10
  %372 = load i32, ptr %192, align 4, !tbaa !5
  %373 = call ptr @strerror(i32 noundef %372) #10
  %374 = load i32, ptr %192, align 4, !tbaa !5
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %366, ptr noundef nonnull %.str.5.sink436, i32 noundef %367, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 59, ptr noundef %369, ptr noundef %371, ptr noundef %373, i32 noundef %374) #12
  call void @exit(i32 noundef 1) #13
  unreachable

376:                                              ; preds = %.preheader276.preheader
  %377 = load i32, ptr @test_count, align 4, !tbaa !5
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr @test_count, align 4, !tbaa !5
  %379 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %380 = trunc nuw i8 %379 to i1
  br i1 %380, label %381, label %.preheader276.1

381:                                              ; preds = %416, %407, %376
  %382 = load i32, ptr %192, align 4, !tbaa !5
  %383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %384 = call i32 @s2n_print_stacktrace(ptr noundef %383) #10
  %385 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %386 = trunc nuw i8 %385 to i1
  br i1 %386, label %387, label %391

387:                                              ; preds = %381
  %388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %389 = call i32 @fileno(ptr noundef %388) #10
  %390 = call i32 @isatty(i32 noundef %389) #10
  %.not261 = icmp eq i32 %390, 0
  br i1 %.not261, label %391, label %392

391:                                              ; preds = %387, %381
  br label %392

392:                                              ; preds = %387, %391
  %.str.5.sink445 = phi ptr [ @.str.5, %391 ], [ @.str.2, %387 ]
  store i32 %382, ptr %192, align 4, !tbaa !5
  %393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %394 = load i32, ptr @test_count, align 4, !tbaa !5
  %395 = load i32, ptr %138, align 4, !tbaa !5
  %396 = call ptr @s2n_strerror(i32 noundef %395, ptr noundef nonnull @.str.4) #10
  %397 = load i32, ptr %138, align 4, !tbaa !5
  %398 = call ptr @s2n_strerror_debug(i32 noundef %397, ptr noundef nonnull @.str.4) #10
  %399 = load i32, ptr %192, align 4, !tbaa !5
  %400 = call ptr @strerror(i32 noundef %399) #10
  %401 = load i32, ptr %192, align 4, !tbaa !5
  %402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %393, ptr noundef nonnull %.str.5.sink445, i32 noundef %394, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 60, ptr noundef %396, ptr noundef %398, ptr noundef %400, i32 noundef %401) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader276.1:                                  ; preds = %376
  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 1, ptr %5, align 1, !tbaa !11
  %403 = add nsw i32 %377, 2
  store i32 %403, ptr @test_count, align 4, !tbaa !5
  %404 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.invalid, i64 8), align 8, !tbaa !9
  %405 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %404, ptr noundef nonnull %5) #10
  %406 = call zeroext i1 @s2n_result_is_ok(i32 %405)
  br i1 %406, label %407, label %354

407:                                              ; preds = %.preheader276.1
  %408 = load i32, ptr @test_count, align 4, !tbaa !5
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr @test_count, align 4, !tbaa !5
  %410 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %411 = trunc nuw i8 %410 to i1
  br i1 %411, label %381, label %.preheader276.2

.preheader276.2:                                  ; preds = %407
  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 1, ptr %5, align 1, !tbaa !11
  %412 = add nsw i32 %408, 2
  store i32 %412, ptr @test_count, align 4, !tbaa !5
  %413 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.invalid, i64 16), align 16, !tbaa !9
  %414 = call i32 @s2n_fips_validate_cipher_suite(ptr noundef %413, ptr noundef nonnull %5) #10
  %415 = call zeroext i1 @s2n_result_is_ok(i32 %414)
  br i1 %415, label %416, label %354

416:                                              ; preds = %.preheader276.2
  %417 = load i32, ptr @test_count, align 4, !tbaa !5
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr @test_count, align 4, !tbaa !5
  %419 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14
  %420 = trunc nuw i8 %419 to i1
  br i1 %420, label %381, label %.preheader275

.preheader275:                                    ; preds = %416
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  %421 = load i16, ptr @cipher_preferences_test_all, align 8, !tbaa !18
  %422 = zext i16 %421 to i64
  %.not311 = icmp eq i16 %421, 0
  br i1 %.not311, label %._crit_edge283, label %.lr.ph282

._crit_edge283.loopexit:                          ; preds = %640
  %.pre = load i32, ptr @test_count, align 4, !tbaa !5
  br label %._crit_edge283

._crit_edge283:                                   ; preds = %._crit_edge283.loopexit, %.preheader275
  %423 = phi i32 [ %.pre, %._crit_edge283.loopexit ], [ %418, %.preheader275 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #10
  store i8 0, ptr %9, align 1, !tbaa !11
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr @test_count, align 4, !tbaa !5
  %425 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef null, ptr noundef nonnull %9) #10
  %426 = call zeroext i1 @s2n_result_is_error(i32 %425)
  br i1 %426, label %664, label %642

427:                                              ; preds = %.lr.ph282, %640
  %.0193281 = phi i64 [ 0, %.lr.ph282 ], [ %641, %640 ]
  %428 = getelementptr inbounds ptr, ptr %351, i64 %.0193281
  %429 = load ptr, ptr %428, align 8, !tbaa !9
  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_fips_validate_cipher_suite(ptr noundef %429, ptr noundef nonnull %6) #10
  %433 = call zeroext i1 @s2n_result_is_ok(i32 %432)
  br i1 %433, label %456, label %434

434:                                              ; preds = %427
  %435 = load i32, ptr %192, align 4, !tbaa !5
  %436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %437 = call i32 @s2n_print_stacktrace(ptr noundef %436) #10
  %438 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %439 = trunc nuw i8 %438 to i1
  br i1 %439, label %440, label %444

440:                                              ; preds = %434
  %441 = load ptr, ptr @stderr, align 8, !tbaa !9
  %442 = call i32 @fileno(ptr noundef %441) #10
  %443 = call i32 @isatty(i32 noundef %442) #10
  %.not253 = icmp eq i32 %443, 0
  br i1 %.not253, label %444, label %445

444:                                              ; preds = %440, %434
  br label %445

445:                                              ; preds = %440, %444
  %.str.5.sink454 = phi ptr [ @.str.5, %444 ], [ @.str.2, %440 ]
  store i32 %435, ptr %192, align 4, !tbaa !5
  %446 = load ptr, ptr @stderr, align 8, !tbaa !9
  %447 = load i32, ptr @test_count, align 4, !tbaa !5
  %448 = load i32, ptr %138, align 4, !tbaa !5
  %449 = call ptr @s2n_strerror(i32 noundef %448, ptr noundef nonnull @.str.4) #10
  %450 = load i32, ptr %138, align 4, !tbaa !5
  %451 = call ptr @s2n_strerror_debug(i32 noundef %450, ptr noundef nonnull @.str.4) #10
  %452 = load i32, ptr %192, align 4, !tbaa !5
  %453 = call ptr @strerror(i32 noundef %452) #10
  %454 = load i32, ptr %192, align 4, !tbaa !5
  %455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %446, ptr noundef nonnull %.str.5.sink454, i32 noundef %447, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 68, ptr noundef %449, ptr noundef %451, ptr noundef %453, i32 noundef %454) #12
  call void @exit(i32 noundef 1) #13
  unreachable

456:                                              ; preds = %427
  %457 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %458 = trunc nuw i8 %457 to i1
  br i1 %458, label %459, label %640

459:                                              ; preds = %456
  %460 = load i16, ptr %352, align 8, !tbaa !18
  %461 = zext i16 %460 to i64
  %.not312 = icmp eq i16 %460, 0
  br i1 %.not312, label %._crit_edge.thread, label %.lr.ph

._crit_edge.thread:                               ; preds = %459
  %462 = load i32, ptr @test_count, align 4, !tbaa !5
  %463 = add nsw i32 %462, 1
  store i32 %463, ptr @test_count, align 4, !tbaa !5
  br label %.loopexit329

.lr.ph:                                           ; preds = %459
  %464 = load ptr, ptr %353, align 8, !tbaa !15
  %min.iters.check = icmp ult i16 %460, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph
  %.0195280.ph = phi i1 [ false, %.lr.ph ], [ %473, %middle.block ]
  %.0196279.ph = phi i64 [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  br label %scalar.ph

vector.ph:                                        ; preds = %.lr.ph
  %n.vec = and i64 %461, 65532
  %broadcast.splatinsert = insertelement <2 x ptr> poison, ptr %429, i64 0
  %broadcast.splat = shufflevector <2 x ptr> %broadcast.splatinsert, <2 x ptr> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i1> [ zeroinitializer, %vector.ph ], [ %469, %vector.body ]
  %vec.phi823 = phi <2 x i1> [ zeroinitializer, %vector.ph ], [ %470, %vector.body ]
  %465 = getelementptr inbounds ptr, ptr %464, i64 %index
  %466 = getelementptr inbounds i8, ptr %465, i64 16
  %wide.load = load <2 x ptr>, ptr %465, align 8, !tbaa !9
  %wide.load824 = load <2 x ptr>, ptr %466, align 8, !tbaa !9
  %467 = icmp eq <2 x ptr> %broadcast.splat, %wide.load
  %468 = icmp eq <2 x ptr> %broadcast.splat, %wide.load824
  %469 = or <2 x i1> %vec.phi, %467
  %470 = or <2 x i1> %vec.phi823, %468
  %index.next = add nuw i64 %index, 4
  %471 = icmp eq i64 %index.next, %n.vec
  br i1 %471, label %middle.block, label %vector.body, !llvm.loop !19

middle.block:                                     ; preds = %vector.body
  %bin.rdx = or <2 x i1> %470, %469
  %bin.rdx.fr = freeze <2 x i1> %bin.rdx
  %472 = bitcast <2 x i1> %bin.rdx.fr to i2
  %473 = icmp ne i2 %472, 0
  %cmp.n = icmp eq i64 %n.vec, %461
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

._crit_edge:                                      ; preds = %scalar.ph, %middle.block
  %spec.select.lcssa = phi i1 [ %473, %middle.block ], [ %spec.select, %scalar.ph ]
  %474 = load i32, ptr @test_count, align 4, !tbaa !5
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr @test_count, align 4, !tbaa !5
  br i1 %spec.select.lcssa, label %501, label %.loopexit329

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.0195280 = phi i1 [ %spec.select, %scalar.ph ], [ %.0195280.ph, %scalar.ph.preheader ]
  %.0196279 = phi i64 [ %479, %scalar.ph ], [ %.0196279.ph, %scalar.ph.preheader ]
  %476 = getelementptr inbounds ptr, ptr %464, i64 %.0196279
  %477 = load ptr, ptr %476, align 8, !tbaa !9
  %478 = icmp eq ptr %429, %477
  %spec.select = select i1 %478, i1 true, i1 %.0195280
  %479 = add nuw nsw i64 %.0196279, 1
  %exitcond.not = icmp eq i64 %479, %461
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !23

.loopexit329:                                     ; preds = %._crit_edge, %._crit_edge.thread
  %480 = load i32, ptr %192, align 4, !tbaa !5
  %481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %482 = call i32 @s2n_print_stacktrace(ptr noundef %481) #10
  %483 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %484 = trunc nuw i8 %483 to i1
  br i1 %484, label %485, label %489

485:                                              ; preds = %.loopexit329
  %486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %487 = call i32 @fileno(ptr noundef %486) #10
  %488 = call i32 @isatty(i32 noundef %487) #10
  %.not254 = icmp eq i32 %488, 0
  br i1 %.not254, label %489, label %490

489:                                              ; preds = %485, %.loopexit329
  br label %490

490:                                              ; preds = %485, %489
  %.str.5.sink463 = phi ptr [ @.str.5, %489 ], [ @.str.2, %485 ]
  store i32 %480, ptr %192, align 4, !tbaa !5
  %491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %492 = load i32, ptr @test_count, align 4, !tbaa !5
  %493 = load i32, ptr %138, align 4, !tbaa !5
  %494 = call ptr @s2n_strerror(i32 noundef %493, ptr noundef nonnull @.str.4) #10
  %495 = load i32, ptr %138, align 4, !tbaa !5
  %496 = call ptr @s2n_strerror_debug(i32 noundef %495, ptr noundef nonnull @.str.4) #10
  %497 = load i32, ptr %192, align 4, !tbaa !5
  %498 = call ptr @strerror(i32 noundef %497) #10
  %499 = load i32, ptr %192, align 4, !tbaa !5
  %500 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %491, ptr noundef nonnull %.str.5.sink463, i32 noundef %492, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 82, ptr noundef %494, ptr noundef %496, ptr noundef %498, i32 noundef %499) #12
  call void @exit(i32 noundef 1) #13
  unreachable

501:                                              ; preds = %._crit_edge
  %502 = add nsw i32 %474, 2
  store i32 %502, ptr @test_count, align 4, !tbaa !5
  %503 = getelementptr inbounds i8, ptr %429, i64 32
  %504 = load ptr, ptr %503, align 8, !tbaa !24
  %505 = icmp eq ptr %504, @s2n_rsa
  br i1 %505, label %506, label %528

506:                                              ; preds = %501
  %507 = load i32, ptr %192, align 4, !tbaa !5
  %508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %509 = call i32 @s2n_print_stacktrace(ptr noundef %508) #10
  %510 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %511 = trunc nuw i8 %510 to i1
  br i1 %511, label %512, label %516

512:                                              ; preds = %506
  %513 = load ptr, ptr @stderr, align 8, !tbaa !9
  %514 = call i32 @fileno(ptr noundef %513) #10
  %515 = call i32 @isatty(i32 noundef %514) #10
  %.not259 = icmp eq i32 %515, 0
  br i1 %.not259, label %516, label %517

516:                                              ; preds = %512, %506
  br label %517

517:                                              ; preds = %512, %516
  %.str.5.sink472 = phi ptr [ @.str.5, %516 ], [ @.str.2, %512 ]
  store i32 %507, ptr %192, align 4, !tbaa !5
  %518 = load ptr, ptr @stderr, align 8, !tbaa !9
  %519 = load i32, ptr @test_count, align 4, !tbaa !5
  %520 = load i32, ptr %138, align 4, !tbaa !5
  %521 = call ptr @s2n_strerror(i32 noundef %520, ptr noundef nonnull @.str.4) #10
  %522 = load i32, ptr %138, align 4, !tbaa !5
  %523 = call ptr @s2n_strerror_debug(i32 noundef %522, ptr noundef nonnull @.str.4) #10
  %524 = load i32, ptr %192, align 4, !tbaa !5
  %525 = call ptr @strerror(i32 noundef %524) #10
  %526 = load i32, ptr %192, align 4, !tbaa !5
  %527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %518, ptr noundef nonnull %.str.5.sink472, i32 noundef %519, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 90, ptr noundef %521, ptr noundef %523, ptr noundef %525, i32 noundef %526) #12
  call void @exit(i32 noundef 1) #13
  unreachable

528:                                              ; preds = %501
  %529 = add nsw i32 %474, 3
  store i32 %529, ptr @test_count, align 4, !tbaa !5
  %530 = getelementptr inbounds i8, ptr %429, i64 8
  %531 = load ptr, ptr %530, align 8, !tbaa !26
  %532 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %531, ptr noundef nonnull dereferenceable(1) @.str.19) #14
  %533 = icmp eq ptr %532, null
  br i1 %533, label %534, label %556

534:                                              ; preds = %528
  %535 = load i32, ptr %192, align 4, !tbaa !5
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = call i32 @s2n_print_stacktrace(ptr noundef %536) #10
  %538 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %539 = trunc nuw i8 %538 to i1
  br i1 %539, label %540, label %544

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

544:                                              ; preds = %540, %534
  br label %545

545:                                              ; preds = %540, %544
  %.str.5.sink481 = phi ptr [ @.str.5, %544 ], [ @.str.2, %540 ]
  store i32 %535, ptr %192, align 4, !tbaa !5
  %546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %547 = load i32, ptr @test_count, align 4, !tbaa !5
  %548 = load i32, ptr %138, align 4, !tbaa !5
  %549 = call ptr @s2n_strerror(i32 noundef %548, ptr noundef nonnull @.str.4) #10
  %550 = load i32, ptr %138, align 4, !tbaa !5
  %551 = call ptr @s2n_strerror_debug(i32 noundef %550, ptr noundef nonnull @.str.4) #10
  %552 = load i32, ptr %192, align 4, !tbaa !5
  %553 = call ptr @strerror(i32 noundef %552) #10
  %554 = load i32, ptr %192, align 4, !tbaa !5
  %555 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %546, ptr noundef nonnull %.str.5.sink481, i32 noundef %547, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 95, ptr noundef %549, ptr noundef %551, ptr noundef %553, i32 noundef %554) #12
  call void @exit(i32 noundef 1) #13
  unreachable

556:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #10
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  store i32 0, ptr %8, align 4, !tbaa !5
  %557 = add nsw i32 %474, 4
  store i32 %557, ptr @test_count, align 4, !tbaa !5
  %558 = getelementptr inbounds i8, ptr %429, i64 96
  %559 = load i32, ptr %558, align 8, !tbaa !27
  %560 = call i32 @s2n_hmac_hash_alg(i32 noundef %559, ptr noundef nonnull %8) #10
  %561 = icmp eq i32 %560, -1
  br i1 %561, label %562, label %584

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

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

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

573:                                              ; preds = %568, %572
  %.str.5.sink490 = phi ptr [ @.str.5, %572 ], [ @.str.2, %568 ]
  store i32 %563, ptr %192, align 4, !tbaa !5
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = load i32, ptr @test_count, align 4, !tbaa !5
  %576 = load i32, ptr %138, align 4, !tbaa !5
  %577 = call ptr @s2n_strerror(i32 noundef %576, ptr noundef nonnull @.str.4) #10
  %578 = load i32, ptr %138, align 4, !tbaa !5
  %579 = call ptr @s2n_strerror_debug(i32 noundef %578, ptr noundef nonnull @.str.4) #10
  %580 = load i32, ptr %192, align 4, !tbaa !5
  %581 = call ptr @strerror(i32 noundef %580) #10
  %582 = load i32, ptr %192, align 4, !tbaa !5
  %583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %574, ptr noundef nonnull %.str.5.sink490, i32 noundef %575, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 100, ptr noundef %577, ptr noundef %579, ptr noundef %581, i32 noundef %582) #12
  call void @exit(i32 noundef 1) #13
  unreachable

584:                                              ; preds = %556
  %585 = load i32, ptr @test_count, align 4, !tbaa !5
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr @test_count, align 4, !tbaa !5
  %587 = load i32, ptr %8, align 4, !tbaa !5
  %588 = call i32 @s2n_fips_validate_hash_algorithm(i32 noundef %587, ptr noundef nonnull %7) #10
  %589 = call zeroext i1 @s2n_result_is_ok(i32 %588)
  br i1 %589, label %612, label %590

590:                                              ; preds = %584
  %591 = load i32, ptr %192, align 4, !tbaa !5
  %592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %593 = call i32 @s2n_print_stacktrace(ptr noundef %592) #10
  %594 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %596, label %600

596:                                              ; preds = %590
  %597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %598 = call i32 @fileno(ptr noundef %597) #10
  %599 = call i32 @isatty(i32 noundef %598) #10
  %.not255 = icmp eq i32 %599, 0
  br i1 %.not255, label %600, label %601

600:                                              ; preds = %596, %590
  br label %601

601:                                              ; preds = %596, %600
  %.str.5.sink499 = phi ptr [ @.str.5, %600 ], [ @.str.2, %596 ]
  store i32 %591, ptr %192, align 4, !tbaa !5
  %602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %603 = load i32, ptr @test_count, align 4, !tbaa !5
  %604 = load i32, ptr %138, align 4, !tbaa !5
  %605 = call ptr @s2n_strerror(i32 noundef %604, ptr noundef nonnull @.str.4) #10
  %606 = load i32, ptr %138, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror_debug(i32 noundef %606, ptr noundef nonnull @.str.4) #10
  %608 = load i32, ptr %192, align 4, !tbaa !5
  %609 = call ptr @strerror(i32 noundef %608) #10
  %610 = load i32, ptr %192, align 4, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %602, ptr noundef nonnull %.str.5.sink499, i32 noundef %603, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 101, ptr noundef %605, ptr noundef %607, ptr noundef %609, i32 noundef %610) #12
  call void @exit(i32 noundef 1) #13
  unreachable

612:                                              ; preds = %584
  %613 = load i32, ptr @test_count, align 4, !tbaa !5
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr @test_count, align 4, !tbaa !5
  %615 = load i8, ptr %7, align 1, !tbaa !11, !range !13, !noundef !14
  %616 = trunc nuw i8 %615 to i1
  br i1 %616, label %639, label %617

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

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

627:                                              ; preds = %623, %617
  br label %628

628:                                              ; preds = %623, %627
  %.str.5.sink508 = phi ptr [ @.str.5, %627 ], [ @.str.2, %623 ]
  store i32 %618, ptr %192, align 4, !tbaa !5
  %629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %630 = load i32, ptr @test_count, align 4, !tbaa !5
  %631 = load i32, ptr %138, align 4, !tbaa !5
  %632 = call ptr @s2n_strerror(i32 noundef %631, ptr noundef nonnull @.str.4) #10
  %633 = load i32, ptr %138, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror_debug(i32 noundef %633, ptr noundef nonnull @.str.4) #10
  %635 = load i32, ptr %192, align 4, !tbaa !5
  %636 = call ptr @strerror(i32 noundef %635) #10
  %637 = load i32, ptr %192, align 4, !tbaa !5
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %629, ptr noundef nonnull %.str.5.sink508, i32 noundef %630, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 102, ptr noundef %632, ptr noundef %634, ptr noundef %636, i32 noundef %637) #12
  call void @exit(i32 noundef 1) #13
  unreachable

639:                                              ; preds = %612
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #10
  br label %640

640:                                              ; preds = %456, %639
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #10
  %641 = add nuw nsw i64 %.0193281, 1
  %exitcond318.not = icmp eq i64 %641, %422
  br i1 %exitcond318.not, label %._crit_edge283.loopexit, label %427, !llvm.loop !28

642:                                              ; preds = %._crit_edge283
  %643 = load i32, ptr %192, align 4, !tbaa !5
  %644 = load ptr, ptr @stderr, align 8, !tbaa !9
  %645 = call i32 @s2n_print_stacktrace(ptr noundef %644) #10
  %646 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %647 = trunc nuw i8 %646 to i1
  br i1 %647, label %648, label %652

648:                                              ; preds = %642
  %649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %650 = call i32 @fileno(ptr noundef %649) #10
  %651 = call i32 @isatty(i32 noundef %650) #10
  %.not216 = icmp eq i32 %651, 0
  br i1 %.not216, label %652, label %653

652:                                              ; preds = %648, %642
  br label %653

653:                                              ; preds = %648, %652
  %.str.5.sink517 = phi ptr [ @.str.5, %652 ], [ @.str.2, %648 ]
  store i32 %643, ptr %192, align 4, !tbaa !5
  %654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %655 = load i32, ptr @test_count, align 4, !tbaa !5
  %656 = load i32, ptr %138, align 4, !tbaa !5
  %657 = call ptr @s2n_strerror(i32 noundef %656, ptr noundef nonnull @.str.4) #10
  %658 = load i32, ptr %138, align 4, !tbaa !5
  %659 = call ptr @s2n_strerror_debug(i32 noundef %658, ptr noundef nonnull @.str.4) #10
  %660 = load i32, ptr %192, align 4, !tbaa !5
  %661 = call ptr @strerror(i32 noundef %660) #10
  %662 = load i32, ptr %192, align 4, !tbaa !5
  %663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %654, ptr noundef nonnull %.str.5.sink517, i32 noundef %655, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 113, ptr noundef %657, ptr noundef %659, ptr noundef %661, i32 noundef %662) #12
  call void @exit(i32 noundef 1) #13
  unreachable

664:                                              ; preds = %._crit_edge283
  %665 = load i32, ptr @test_count, align 4, !tbaa !5
  %666 = add nsw i32 %665, 1
  store i32 %666, ptr @test_count, align 4, !tbaa !5
  %667 = load i32, ptr %138, align 4, !tbaa !5
  %668 = icmp eq i32 %667, 402653193
  br i1 %668, label %691, label %669

669:                                              ; preds = %664
  %670 = load i32, ptr %192, align 4, !tbaa !5
  %671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %672 = call i32 @s2n_print_stacktrace(ptr noundef %671) #10
  %673 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %674 = trunc nuw i8 %673 to i1
  br i1 %674, label %675, label %679

675:                                              ; preds = %669
  %676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %677 = call i32 @fileno(ptr noundef %676) #10
  %678 = call i32 @isatty(i32 noundef %677) #10
  %.not217 = icmp eq i32 %678, 0
  br i1 %.not217, label %679, label %680

679:                                              ; preds = %675, %669
  br label %680

680:                                              ; preds = %675, %679
  %.str.5.sink526 = phi ptr [ @.str.5, %679 ], [ @.str.2, %675 ]
  store i32 %670, ptr %192, align 4, !tbaa !5
  %681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %682 = load i32, ptr @test_count, align 4, !tbaa !5
  %683 = load i32, ptr %138, align 4, !tbaa !5
  %684 = call ptr @s2n_strerror(i32 noundef %683, ptr noundef nonnull @.str.4) #10
  %685 = load i32, ptr %138, align 4, !tbaa !5
  %686 = call ptr @s2n_strerror_debug(i32 noundef %685, ptr noundef nonnull @.str.4) #10
  %687 = load i32, ptr %192, align 4, !tbaa !5
  %688 = call ptr @strerror(i32 noundef %687) #10
  %689 = load i32, ptr %192, align 4, !tbaa !5
  %690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %681, ptr noundef nonnull %.str.5.sink526, i32 noundef %682, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 113, ptr noundef %684, ptr noundef %686, ptr noundef %688, i32 noundef %689) #12
  call void @exit(i32 noundef 1) #13
  unreachable

691:                                              ; preds = %664
  %692 = add nsw i32 %665, 2
  store i32 %692, ptr @test_count, align 4, !tbaa !5
  %693 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %694 = icmp eq ptr %693, null
  br i1 %694, label %695, label %717

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

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

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

706:                                              ; preds = %701, %705
  %.str.5.sink535 = phi ptr [ @.str.5, %705 ], [ @.str.2, %701 ]
  store i32 %696, ptr %192, align 4, !tbaa !5
  %707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %708 = load i32, ptr @test_count, align 4, !tbaa !5
  %709 = load i32, ptr %138, align 4, !tbaa !5
  %710 = call ptr @s2n_strerror(i32 noundef %709, ptr noundef nonnull @.str.4) #10
  %711 = load i32, ptr %138, align 4, !tbaa !5
  %712 = call ptr @s2n_strerror_debug(i32 noundef %711, ptr noundef nonnull @.str.4) #10
  %713 = load i32, ptr %192, align 4, !tbaa !5
  %714 = call ptr @strerror(i32 noundef %713) #10
  %715 = load i32, ptr %192, align 4, !tbaa !5
  %716 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %707, ptr noundef nonnull %.str.5.sink535, i32 noundef %708, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 113, ptr noundef %710, ptr noundef %712, ptr noundef %714, i32 noundef %715) #12
  call void @exit(i32 noundef 1) #13
  unreachable

717:                                              ; preds = %691
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %192, align 4, !tbaa !5
  %718 = load i32, ptr @test_count, align 4, !tbaa !5
  %719 = add nsw i32 %718, 1
  store i32 %719, ptr @test_count, align 4, !tbaa !5
  %720 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef nonnull @s2n_null_sig_scheme, ptr noundef null) #10
  %721 = call zeroext i1 @s2n_result_is_error(i32 %720)
  br i1 %721, label %744, label %722

722:                                              ; preds = %717
  %723 = load i32, ptr %192, align 4, !tbaa !5
  %724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %725 = call i32 @s2n_print_stacktrace(ptr noundef %724) #10
  %726 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %727 = trunc nuw i8 %726 to i1
  br i1 %727, label %728, label %732

728:                                              ; preds = %722
  %729 = load ptr, ptr @stderr, align 8, !tbaa !9
  %730 = call i32 @fileno(ptr noundef %729) #10
  %731 = call i32 @isatty(i32 noundef %730) #10
  %.not218 = icmp eq i32 %731, 0
  br i1 %.not218, label %732, label %733

732:                                              ; preds = %728, %722
  br label %733

733:                                              ; preds = %728, %732
  %.str.5.sink544 = phi ptr [ @.str.5, %732 ], [ @.str.2, %728 ]
  store i32 %723, ptr %192, align 4, !tbaa !5
  %734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = load i32, ptr %138, align 4, !tbaa !5
  %737 = call ptr @s2n_strerror(i32 noundef %736, ptr noundef nonnull @.str.4) #10
  %738 = load i32, ptr %138, align 4, !tbaa !5
  %739 = call ptr @s2n_strerror_debug(i32 noundef %738, ptr noundef nonnull @.str.4) #10
  %740 = load i32, ptr %192, align 4, !tbaa !5
  %741 = call ptr @strerror(i32 noundef %740) #10
  %742 = load i32, ptr %192, align 4, !tbaa !5
  %743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %734, ptr noundef nonnull %.str.5.sink544, i32 noundef %735, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 116, ptr noundef %737, ptr noundef %739, ptr noundef %741, i32 noundef %742) #12
  call void @exit(i32 noundef 1) #13
  unreachable

744:                                              ; preds = %717
  %745 = load i32, ptr @test_count, align 4, !tbaa !5
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr @test_count, align 4, !tbaa !5
  %747 = load i32, ptr %138, align 4, !tbaa !5
  %748 = icmp eq i32 %747, 402653193
  br i1 %748, label %771, label %749

749:                                              ; preds = %744
  %750 = load i32, ptr %192, align 4, !tbaa !5
  %751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %752 = call i32 @s2n_print_stacktrace(ptr noundef %751) #10
  %753 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %754 = trunc nuw i8 %753 to i1
  br i1 %754, label %755, label %759

755:                                              ; preds = %749
  %756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %757 = call i32 @fileno(ptr noundef %756) #10
  %758 = call i32 @isatty(i32 noundef %757) #10
  %.not219 = icmp eq i32 %758, 0
  br i1 %.not219, label %759, label %760

759:                                              ; preds = %755, %749
  br label %760

760:                                              ; preds = %755, %759
  %.str.5.sink553 = phi ptr [ @.str.5, %759 ], [ @.str.2, %755 ]
  store i32 %750, ptr %192, align 4, !tbaa !5
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = load i32, ptr @test_count, align 4, !tbaa !5
  %763 = load i32, ptr %138, align 4, !tbaa !5
  %764 = call ptr @s2n_strerror(i32 noundef %763, ptr noundef nonnull @.str.4) #10
  %765 = load i32, ptr %138, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror_debug(i32 noundef %765, ptr noundef nonnull @.str.4) #10
  %767 = load i32, ptr %192, align 4, !tbaa !5
  %768 = call ptr @strerror(i32 noundef %767) #10
  %769 = load i32, ptr %192, align 4, !tbaa !5
  %770 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef nonnull %.str.5.sink553, i32 noundef %762, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 116, ptr noundef %764, ptr noundef %766, ptr noundef %768, i32 noundef %769) #12
  call void @exit(i32 noundef 1) #13
  unreachable

771:                                              ; preds = %744
  %772 = add nsw i32 %745, 2
  store i32 %772, ptr @test_count, align 4, !tbaa !5
  %773 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %774 = icmp eq ptr %773, null
  br i1 %774, label %775, label %797

775:                                              ; preds = %771
  %776 = load i32, ptr %192, align 4, !tbaa !5
  %777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %778 = call i32 @s2n_print_stacktrace(ptr noundef %777) #10
  %779 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %780 = trunc nuw i8 %779 to i1
  br i1 %780, label %781, label %785

781:                                              ; preds = %775
  %782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %783 = call i32 @fileno(ptr noundef %782) #10
  %784 = call i32 @isatty(i32 noundef %783) #10
  %.not251 = icmp eq i32 %784, 0
  br i1 %.not251, label %785, label %786

785:                                              ; preds = %781, %775
  br label %786

786:                                              ; preds = %781, %785
  %.str.5.sink562 = phi ptr [ @.str.5, %785 ], [ @.str.2, %781 ]
  store i32 %776, ptr %192, align 4, !tbaa !5
  %787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %788 = load i32, ptr @test_count, align 4, !tbaa !5
  %789 = load i32, ptr %138, align 4, !tbaa !5
  %790 = call ptr @s2n_strerror(i32 noundef %789, ptr noundef nonnull @.str.4) #10
  %791 = load i32, ptr %138, align 4, !tbaa !5
  %792 = call ptr @s2n_strerror_debug(i32 noundef %791, ptr noundef nonnull @.str.4) #10
  %793 = load i32, ptr %192, align 4, !tbaa !5
  %794 = call ptr @strerror(i32 noundef %793) #10
  %795 = load i32, ptr %192, align 4, !tbaa !5
  %796 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %787, ptr noundef nonnull %.str.5.sink562, i32 noundef %788, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 116, ptr noundef %790, ptr noundef %792, ptr noundef %794, i32 noundef %795) #12
  call void @exit(i32 noundef 1) #13
  unreachable

797:                                              ; preds = %771
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %192, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #10
  store i8 0, ptr %10, align 1, !tbaa !11
  %798 = load i32, ptr @test_count, align 4, !tbaa !5
  %799 = add nsw i32 %798, 1
  store i32 %799, ptr @test_count, align 4, !tbaa !5
  %800 = load ptr, ptr @__const.main.valid.26, align 16, !tbaa !9
  %801 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %800, ptr noundef nonnull %10) #10
  %802 = call zeroext i1 @s2n_result_is_ok(i32 %801)
  br i1 %802, label %825, label %803

803:                                              ; preds = %862, %852, %797
  %804 = load i32, ptr %192, align 4, !tbaa !5
  %805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %806 = call i32 @s2n_print_stacktrace(ptr noundef %805) #10
  %807 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %808 = trunc nuw i8 %807 to i1
  br i1 %808, label %809, label %813

809:                                              ; preds = %803
  %810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %811 = call i32 @fileno(ptr noundef %810) #10
  %812 = call i32 @isatty(i32 noundef %811) #10
  %.not249 = icmp eq i32 %812, 0
  br i1 %.not249, label %813, label %814

813:                                              ; preds = %809, %803
  br label %814

814:                                              ; preds = %809, %813
  %.str.5.sink571 = phi ptr [ @.str.5, %813 ], [ @.str.2, %809 ]
  store i32 %804, ptr %192, align 4, !tbaa !5
  %815 = load ptr, ptr @stderr, align 8, !tbaa !9
  %816 = load i32, ptr @test_count, align 4, !tbaa !5
  %817 = load i32, ptr %138, align 4, !tbaa !5
  %818 = call ptr @s2n_strerror(i32 noundef %817, ptr noundef nonnull @.str.4) #10
  %819 = load i32, ptr %138, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror_debug(i32 noundef %819, ptr noundef nonnull @.str.4) #10
  %821 = load i32, ptr %192, align 4, !tbaa !5
  %822 = call ptr @strerror(i32 noundef %821) #10
  %823 = load i32, ptr %192, align 4, !tbaa !5
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %815, ptr noundef nonnull %.str.5.sink571, i32 noundef %816, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 127, ptr noundef %818, ptr noundef %820, ptr noundef %822, i32 noundef %823) #12
  call void @exit(i32 noundef 1) #13
  unreachable

825:                                              ; preds = %797
  %826 = load i32, ptr @test_count, align 4, !tbaa !5
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr @test_count, align 4, !tbaa !5
  %828 = load i8, ptr %10, align 1, !tbaa !11, !range !13, !noundef !14
  %829 = trunc nuw i8 %828 to i1
  br i1 %829, label %852, label %830

830:                                              ; preds = %867, %857, %825
  %831 = load i32, ptr %192, align 4, !tbaa !5
  %832 = load ptr, ptr @stderr, align 8, !tbaa !9
  %833 = call i32 @s2n_print_stacktrace(ptr noundef %832) #10
  %834 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %835 = trunc nuw i8 %834 to i1
  br i1 %835, label %836, label %840

836:                                              ; preds = %830
  %837 = load ptr, ptr @stderr, align 8, !tbaa !9
  %838 = call i32 @fileno(ptr noundef %837) #10
  %839 = call i32 @isatty(i32 noundef %838) #10
  %.not250 = icmp eq i32 %839, 0
  br i1 %.not250, label %840, label %841

840:                                              ; preds = %836, %830
  br label %841

841:                                              ; preds = %836, %840
  %.str.5.sink580 = phi ptr [ @.str.5, %840 ], [ @.str.2, %836 ]
  store i32 %831, ptr %192, align 4, !tbaa !5
  %842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %843 = load i32, ptr @test_count, align 4, !tbaa !5
  %844 = load i32, ptr %138, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror(i32 noundef %844, ptr noundef nonnull @.str.4) #10
  %846 = load i32, ptr %138, align 4, !tbaa !5
  %847 = call ptr @s2n_strerror_debug(i32 noundef %846, ptr noundef nonnull @.str.4) #10
  %848 = load i32, ptr %192, align 4, !tbaa !5
  %849 = call ptr @strerror(i32 noundef %848) #10
  %850 = load i32, ptr %192, align 4, !tbaa !5
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %842, ptr noundef nonnull %.str.5.sink580, i32 noundef %843, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 128, ptr noundef %845, ptr noundef %847, ptr noundef %849, i32 noundef %850) #12
  call void @exit(i32 noundef 1) #13
  unreachable

852:                                              ; preds = %825
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #10
  store i8 0, ptr %10, align 1, !tbaa !11
  %853 = add nsw i32 %826, 2
  store i32 %853, ptr @test_count, align 4, !tbaa !5
  %854 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.valid.26, i64 8), align 8, !tbaa !9
  %855 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %854, ptr noundef nonnull %10) #10
  %856 = call zeroext i1 @s2n_result_is_ok(i32 %855)
  br i1 %856, label %857, label %803

857:                                              ; preds = %852
  %858 = load i32, ptr @test_count, align 4, !tbaa !5
  %859 = add nsw i32 %858, 1
  store i32 %859, ptr @test_count, align 4, !tbaa !5
  %860 = load i8, ptr %10, align 1, !tbaa !11, !range !13, !noundef !14
  %861 = trunc nuw i8 %860 to i1
  br i1 %861, label %862, label %830

862:                                              ; preds = %857
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #10
  store i8 0, ptr %10, align 1, !tbaa !11
  %863 = add nsw i32 %858, 2
  store i32 %863, ptr @test_count, align 4, !tbaa !5
  %864 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.valid.26, i64 16), align 16, !tbaa !9
  %865 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %864, ptr noundef nonnull %10) #10
  %866 = call zeroext i1 @s2n_result_is_ok(i32 %865)
  br i1 %866, label %867, label %803

867:                                              ; preds = %862
  %868 = load i32, ptr @test_count, align 4, !tbaa !5
  %869 = add nsw i32 %868, 1
  store i32 %869, ptr @test_count, align 4, !tbaa !5
  %870 = load i8, ptr %10, align 1, !tbaa !11, !range !13, !noundef !14
  %871 = trunc nuw i8 %870 to i1
  br i1 %871, label %.preheader274.preheader, label %830

.preheader274.preheader:                          ; preds = %867
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  store i8 1, ptr %11, align 1, !tbaa !11
  %872 = add nsw i32 %868, 2
  store i32 %872, ptr @test_count, align 4, !tbaa !5
  %873 = load ptr, ptr @__const.main.invalid.28, align 16, !tbaa !9
  %874 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %873, ptr noundef nonnull %11) #10
  %875 = call zeroext i1 @s2n_result_is_ok(i32 %874)
  br i1 %875, label %901, label %879

.lr.ph294:                                        ; preds = %955
  %876 = getelementptr inbounds i8, ptr %956, i64 8
  %877 = load ptr, ptr getelementptr inbounds (i8, ptr @security_policy_test_all_fips, i64 24), align 8
  %878 = getelementptr inbounds i8, ptr %877, i64 8
  br label %962

879:                                              ; preds = %.preheader274.3, %.preheader274.2, %.preheader274.1, %.preheader274.preheader
  %880 = load i32, ptr %192, align 4, !tbaa !5
  %881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %882 = call i32 @s2n_print_stacktrace(ptr noundef %881) #10
  %883 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %884 = trunc nuw i8 %883 to i1
  br i1 %884, label %885, label %889

885:                                              ; preds = %879
  %886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %887 = call i32 @fileno(ptr noundef %886) #10
  %888 = call i32 @isatty(i32 noundef %887) #10
  %.not247 = icmp eq i32 %888, 0
  br i1 %.not247, label %889, label %890

889:                                              ; preds = %885, %879
  br label %890

890:                                              ; preds = %885, %889
  %.str.5.sink589 = phi ptr [ @.str.5, %889 ], [ @.str.2, %885 ]
  store i32 %880, ptr %192, align 4, !tbaa !5
  %891 = load ptr, ptr @stderr, align 8, !tbaa !9
  %892 = load i32, ptr @test_count, align 4, !tbaa !5
  %893 = load i32, ptr %138, align 4, !tbaa !5
  %894 = call ptr @s2n_strerror(i32 noundef %893, ptr noundef nonnull @.str.4) #10
  %895 = load i32, ptr %138, align 4, !tbaa !5
  %896 = call ptr @s2n_strerror_debug(i32 noundef %895, ptr noundef nonnull @.str.4) #10
  %897 = load i32, ptr %192, align 4, !tbaa !5
  %898 = call ptr @strerror(i32 noundef %897) #10
  %899 = load i32, ptr %192, align 4, !tbaa !5
  %900 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %891, ptr noundef nonnull %.str.5.sink589, i32 noundef %892, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 140, ptr noundef %894, ptr noundef %896, ptr noundef %898, i32 noundef %899) #12
  call void @exit(i32 noundef 1) #13
  unreachable

901:                                              ; preds = %.preheader274.preheader
  %902 = load i32, ptr @test_count, align 4, !tbaa !5
  %903 = add nsw i32 %902, 1
  store i32 %903, ptr @test_count, align 4, !tbaa !5
  %904 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %905 = trunc nuw i8 %904 to i1
  br i1 %905, label %906, label %.preheader274.1

906:                                              ; preds = %950, %941, %932, %901
  %907 = load i32, ptr %192, align 4, !tbaa !5
  %908 = load ptr, ptr @stderr, align 8, !tbaa !9
  %909 = call i32 @s2n_print_stacktrace(ptr noundef %908) #10
  %910 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %911 = trunc nuw i8 %910 to i1
  br i1 %911, label %912, label %916

912:                                              ; preds = %906
  %913 = load ptr, ptr @stderr, align 8, !tbaa !9
  %914 = call i32 @fileno(ptr noundef %913) #10
  %915 = call i32 @isatty(i32 noundef %914) #10
  %.not248 = icmp eq i32 %915, 0
  br i1 %.not248, label %916, label %917

916:                                              ; preds = %912, %906
  br label %917

917:                                              ; preds = %912, %916
  %.str.5.sink598 = phi ptr [ @.str.5, %916 ], [ @.str.2, %912 ]
  store i32 %907, ptr %192, align 4, !tbaa !5
  %918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %919 = load i32, ptr @test_count, align 4, !tbaa !5
  %920 = load i32, ptr %138, align 4, !tbaa !5
  %921 = call ptr @s2n_strerror(i32 noundef %920, ptr noundef nonnull @.str.4) #10
  %922 = load i32, ptr %138, align 4, !tbaa !5
  %923 = call ptr @s2n_strerror_debug(i32 noundef %922, ptr noundef nonnull @.str.4) #10
  %924 = load i32, ptr %192, align 4, !tbaa !5
  %925 = call ptr @strerror(i32 noundef %924) #10
  %926 = load i32, ptr %192, align 4, !tbaa !5
  %927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %918, ptr noundef nonnull %.str.5.sink598, i32 noundef %919, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 141, ptr noundef %921, ptr noundef %923, ptr noundef %925, i32 noundef %926) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader274.1:                                  ; preds = %901
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  store i8 1, ptr %11, align 1, !tbaa !11
  %928 = add nsw i32 %902, 2
  store i32 %928, ptr @test_count, align 4, !tbaa !5
  %929 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.28, i64 8), align 8, !tbaa !9
  %930 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %929, ptr noundef nonnull %11) #10
  %931 = call zeroext i1 @s2n_result_is_ok(i32 %930)
  br i1 %931, label %932, label %879

932:                                              ; preds = %.preheader274.1
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr @test_count, align 4, !tbaa !5
  %935 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %936 = trunc nuw i8 %935 to i1
  br i1 %936, label %906, label %.preheader274.2

.preheader274.2:                                  ; preds = %932
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  store i8 1, ptr %11, align 1, !tbaa !11
  %937 = add nsw i32 %933, 2
  store i32 %937, ptr @test_count, align 4, !tbaa !5
  %938 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.28, i64 16), align 16, !tbaa !9
  %939 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %938, ptr noundef nonnull %11) #10
  %940 = call zeroext i1 @s2n_result_is_ok(i32 %939)
  br i1 %940, label %941, label %879

941:                                              ; preds = %.preheader274.2
  %942 = load i32, ptr @test_count, align 4, !tbaa !5
  %943 = add nsw i32 %942, 1
  store i32 %943, ptr @test_count, align 4, !tbaa !5
  %944 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %945 = trunc nuw i8 %944 to i1
  br i1 %945, label %906, label %.preheader274.3

.preheader274.3:                                  ; preds = %941
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  store i8 1, ptr %11, align 1, !tbaa !11
  %946 = add nsw i32 %942, 2
  store i32 %946, ptr @test_count, align 4, !tbaa !5
  %947 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.28, i64 24), align 8, !tbaa !9
  %948 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %947, ptr noundef nonnull %11) #10
  %949 = call zeroext i1 @s2n_result_is_ok(i32 %948)
  br i1 %949, label %950, label %879

950:                                              ; preds = %.preheader274.3
  %951 = load i32, ptr @test_count, align 4, !tbaa !5
  %952 = add nsw i32 %951, 1
  store i32 %952, ptr @test_count, align 4, !tbaa !5
  %953 = load i8, ptr %11, align 1, !tbaa !11, !range !13, !noundef !14
  %954 = trunc nuw i8 %953 to i1
  br i1 %954, label %906, label %955

955:                                              ; preds = %950
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  %956 = load ptr, ptr getelementptr inbounds (i8, ptr @security_policy_test_all, i64 24), align 8, !tbaa !29
  %957 = load i8, ptr %956, align 8, !tbaa !31
  %.not313 = icmp eq i8 %957, 0
  br i1 %.not313, label %._crit_edge295, label %.lr.ph294

._crit_edge295.loopexit:                          ; preds = %1037
  %.pre326 = load i32, ptr @test_count, align 4, !tbaa !5
  br label %._crit_edge295

._crit_edge295:                                   ; preds = %._crit_edge295.loopexit, %955
  %958 = phi i32 [ %.pre326, %._crit_edge295.loopexit ], [ %952, %955 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #10
  store i8 0, ptr %13, align 1, !tbaa !11
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr @test_count, align 4, !tbaa !5
  %960 = call i32 @s2n_fips_validate_curve(ptr noundef null, ptr noundef nonnull %13) #10
  %961 = call zeroext i1 @s2n_result_is_error(i32 %960)
  br i1 %961, label %1064, label %1042

962:                                              ; preds = %.lr.ph294, %1037
  %.0200292 = phi i64 [ 0, %.lr.ph294 ], [ %1038, %1037 ]
  %963 = load ptr, ptr %876, align 8, !tbaa !33
  %964 = getelementptr inbounds ptr, ptr %963, i64 %.0200292
  %965 = load ptr, ptr %964, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #10
  store i8 0, ptr %12, align 1, !tbaa !11
  %966 = load i32, ptr @test_count, align 4, !tbaa !5
  %967 = add nsw i32 %966, 1
  store i32 %967, ptr @test_count, align 4, !tbaa !5
  %968 = call i32 @s2n_fips_validate_signature_scheme(ptr noundef %965, ptr noundef nonnull %12) #10
  %969 = call zeroext i1 @s2n_result_is_ok(i32 %968)
  br i1 %969, label %992, label %970

970:                                              ; preds = %962
  %971 = load i32, ptr %192, align 4, !tbaa !5
  %972 = load ptr, ptr @stderr, align 8, !tbaa !9
  %973 = call i32 @s2n_print_stacktrace(ptr noundef %972) #10
  %974 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %975 = trunc nuw i8 %974 to i1
  br i1 %975, label %976, label %980

976:                                              ; preds = %970
  %977 = load ptr, ptr @stderr, align 8, !tbaa !9
  %978 = call i32 @fileno(ptr noundef %977) #10
  %979 = call i32 @isatty(i32 noundef %978) #10
  %.not245 = icmp eq i32 %979, 0
  br i1 %.not245, label %980, label %981

980:                                              ; preds = %976, %970
  br label %981

981:                                              ; preds = %976, %980
  %.str.5.sink607 = phi ptr [ @.str.5, %980 ], [ @.str.2, %976 ]
  store i32 %971, ptr %192, align 4, !tbaa !5
  %982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %983 = load i32, ptr @test_count, align 4, !tbaa !5
  %984 = load i32, ptr %138, align 4, !tbaa !5
  %985 = call ptr @s2n_strerror(i32 noundef %984, ptr noundef nonnull @.str.4) #10
  %986 = load i32, ptr %138, align 4, !tbaa !5
  %987 = call ptr @s2n_strerror_debug(i32 noundef %986, ptr noundef nonnull @.str.4) #10
  %988 = load i32, ptr %192, align 4, !tbaa !5
  %989 = call ptr @strerror(i32 noundef %988) #10
  %990 = load i32, ptr %192, align 4, !tbaa !5
  %991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %982, ptr noundef nonnull %.str.5.sink607, i32 noundef %983, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 151, ptr noundef %985, ptr noundef %987, ptr noundef %989, i32 noundef %990) #12
  call void @exit(i32 noundef 1) #13
  unreachable

992:                                              ; preds = %962
  %993 = load i8, ptr %12, align 1, !tbaa !11, !range !13, !noundef !14
  %994 = trunc nuw i8 %993 to i1
  br i1 %994, label %995, label %1037

995:                                              ; preds = %992
  %996 = load i8, ptr %877, align 8, !tbaa !31
  %997 = zext i8 %996 to i64
  %.not314 = icmp eq i8 %996, 0
  br i1 %.not314, label %.critedge309, label %.lr.ph289

.lr.ph289:                                        ; preds = %995
  %998 = load ptr, ptr %878, align 8, !tbaa !33
  %min.iters.check827 = icmp ult i8 %996, 4
  br i1 %min.iters.check827, label %scalar.ph826.preheader, label %vector.ph828

scalar.ph826.preheader:                           ; preds = %middle.block825, %.lr.ph289
  %.0202287.ph = phi i1 [ false, %.lr.ph289 ], [ %1007, %middle.block825 ]
  %.0204286.ph = phi i64 [ 0, %.lr.ph289 ], [ %n.vec830, %middle.block825 ]
  br label %scalar.ph826

vector.ph828:                                     ; preds = %.lr.ph289
  %n.vec830 = and i64 %997, 252
  %broadcast.splatinsert838 = insertelement <2 x ptr> poison, ptr %965, i64 0
  %broadcast.splat839 = shufflevector <2 x ptr> %broadcast.splatinsert838, <2 x ptr> poison, <2 x i32> zeroinitializer
  br label %vector.body832

vector.body832:                                   ; preds = %vector.body832, %vector.ph828
  %index833 = phi i64 [ 0, %vector.ph828 ], [ %index.next840, %vector.body832 ]
  %vec.phi834 = phi <2 x i1> [ zeroinitializer, %vector.ph828 ], [ %1003, %vector.body832 ]
  %vec.phi835 = phi <2 x i1> [ zeroinitializer, %vector.ph828 ], [ %1004, %vector.body832 ]
  %999 = getelementptr inbounds ptr, ptr %998, i64 %index833
  %1000 = getelementptr inbounds i8, ptr %999, i64 16
  %wide.load836 = load <2 x ptr>, ptr %999, align 8, !tbaa !9
  %wide.load837 = load <2 x ptr>, ptr %1000, align 8, !tbaa !9
  %1001 = icmp eq <2 x ptr> %broadcast.splat839, %wide.load836
  %1002 = icmp eq <2 x ptr> %broadcast.splat839, %wide.load837
  %1003 = or <2 x i1> %vec.phi834, %1001
  %1004 = or <2 x i1> %vec.phi835, %1002
  %index.next840 = add nuw i64 %index833, 4
  %1005 = icmp eq i64 %index.next840, %n.vec830
  br i1 %1005, label %middle.block825, label %vector.body832, !llvm.loop !34

middle.block825:                                  ; preds = %vector.body832
  %bin.rdx841 = or <2 x i1> %1004, %1003
  %bin.rdx841.fr = freeze <2 x i1> %bin.rdx841
  %1006 = bitcast <2 x i1> %bin.rdx841.fr to i2
  %1007 = icmp ne i2 %1006, 0
  %cmp.n843 = icmp eq i64 %n.vec830, %997
  br i1 %cmp.n843, label %._crit_edge290, label %scalar.ph826.preheader

._crit_edge290:                                   ; preds = %scalar.ph826, %middle.block825
  %spec.select269.lcssa = phi i1 [ %1007, %middle.block825 ], [ %spec.select269, %scalar.ph826 ]
  %1008 = load i32, ptr @test_count, align 4, !tbaa !5
  %1009 = add nsw i32 %1008, 1
  store i32 %1009, ptr @test_count, align 4, !tbaa !5
  br i1 %spec.select269.lcssa, label %1037, label %.loopexit317

scalar.ph826:                                     ; preds = %scalar.ph826.preheader, %scalar.ph826
  %.0202287 = phi i1 [ %spec.select269, %scalar.ph826 ], [ %.0202287.ph, %scalar.ph826.preheader ]
  %.0204286 = phi i64 [ %1013, %scalar.ph826 ], [ %.0204286.ph, %scalar.ph826.preheader ]
  %1010 = getelementptr inbounds ptr, ptr %998, i64 %.0204286
  %1011 = load ptr, ptr %1010, align 8, !tbaa !9
  %1012 = icmp eq ptr %965, %1011
  %spec.select269 = select i1 %1012, i1 true, i1 %.0202287
  %1013 = add nuw nsw i64 %.0204286, 1
  %exitcond321.not = icmp eq i64 %1013, %997
  br i1 %exitcond321.not, label %._crit_edge290, label %scalar.ph826, !llvm.loop !35

.critedge309:                                     ; preds = %995
  %1014 = load i32, ptr @test_count, align 4, !tbaa !5
  %1015 = add nsw i32 %1014, 1
  store i32 %1015, ptr @test_count, align 4, !tbaa !5
  br label %.loopexit317

.loopexit317:                                     ; preds = %._crit_edge290, %.critedge309
  %1016 = load i32, ptr %192, align 4, !tbaa !5
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = call i32 @s2n_print_stacktrace(ptr noundef %1017) #10
  %1019 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1020 = trunc nuw i8 %1019 to i1
  br i1 %1020, label %1021, label %1025

1021:                                             ; preds = %.loopexit317
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = call i32 @fileno(ptr noundef %1022) #10
  %1024 = call i32 @isatty(i32 noundef %1023) #10
  %.not246 = icmp eq i32 %1024, 0
  br i1 %.not246, label %1025, label %1026

1025:                                             ; preds = %1021, %.loopexit317
  br label %1026

1026:                                             ; preds = %1021, %1025
  %.str.5.sink616 = phi ptr [ @.str.5, %1025 ], [ @.str.2, %1021 ]
  store i32 %1016, ptr %192, align 4, !tbaa !5
  %1027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1028 = load i32, ptr @test_count, align 4, !tbaa !5
  %1029 = load i32, ptr %138, align 4, !tbaa !5
  %1030 = call ptr @s2n_strerror(i32 noundef %1029, ptr noundef nonnull @.str.4) #10
  %1031 = load i32, ptr %138, align 4, !tbaa !5
  %1032 = call ptr @s2n_strerror_debug(i32 noundef %1031, ptr noundef nonnull @.str.4) #10
  %1033 = load i32, ptr %192, align 4, !tbaa !5
  %1034 = call ptr @strerror(i32 noundef %1033) #10
  %1035 = load i32, ptr %192, align 4, !tbaa !5
  %1036 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1027, ptr noundef nonnull %.str.5.sink616, i32 noundef %1028, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 165, ptr noundef %1030, ptr noundef %1032, ptr noundef %1034, i32 noundef %1035) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1037:                                             ; preds = %._crit_edge290, %992
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #10
  %1038 = add nuw nsw i64 %.0200292, 1
  %1039 = load i8, ptr %956, align 8, !tbaa !31
  %1040 = zext i8 %1039 to i64
  %1041 = icmp ult i64 %1038, %1040
  br i1 %1041, label %962, label %._crit_edge295.loopexit, !llvm.loop !36

1042:                                             ; preds = %._crit_edge295
  %1043 = load i32, ptr %192, align 4, !tbaa !5
  %1044 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1045 = call i32 @s2n_print_stacktrace(ptr noundef %1044) #10
  %1046 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1047 = trunc nuw i8 %1046 to i1
  br i1 %1047, label %1048, label %1052

1048:                                             ; preds = %1042
  %1049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1050 = call i32 @fileno(ptr noundef %1049) #10
  %1051 = call i32 @isatty(i32 noundef %1050) #10
  %.not220 = icmp eq i32 %1051, 0
  br i1 %.not220, label %1052, label %1053

1052:                                             ; preds = %1048, %1042
  br label %1053

1053:                                             ; preds = %1048, %1052
  %.str.5.sink625 = phi ptr [ @.str.5, %1052 ], [ @.str.2, %1048 ]
  store i32 %1043, ptr %192, align 4, !tbaa !5
  %1054 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1055 = load i32, ptr @test_count, align 4, !tbaa !5
  %1056 = load i32, ptr %138, align 4, !tbaa !5
  %1057 = call ptr @s2n_strerror(i32 noundef %1056, ptr noundef nonnull @.str.4) #10
  %1058 = load i32, ptr %138, align 4, !tbaa !5
  %1059 = call ptr @s2n_strerror_debug(i32 noundef %1058, ptr noundef nonnull @.str.4) #10
  %1060 = load i32, ptr %192, align 4, !tbaa !5
  %1061 = call ptr @strerror(i32 noundef %1060) #10
  %1062 = load i32, ptr %192, align 4, !tbaa !5
  %1063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1054, ptr noundef nonnull %.str.5.sink625, i32 noundef %1055, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef %1057, ptr noundef %1059, ptr noundef %1061, i32 noundef %1062) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1064:                                             ; preds = %._crit_edge295
  %1065 = load i32, ptr @test_count, align 4, !tbaa !5
  %1066 = add nsw i32 %1065, 1
  store i32 %1066, ptr @test_count, align 4, !tbaa !5
  %1067 = load i32, ptr %138, align 4, !tbaa !5
  %1068 = icmp eq i32 %1067, 402653193
  br i1 %1068, label %1091, label %1069

1069:                                             ; preds = %1064
  %1070 = load i32, ptr %192, align 4, !tbaa !5
  %1071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1072 = call i32 @s2n_print_stacktrace(ptr noundef %1071) #10
  %1073 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1074 = trunc nuw i8 %1073 to i1
  br i1 %1074, label %1075, label %1079

1075:                                             ; preds = %1069
  %1076 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1077 = call i32 @fileno(ptr noundef %1076) #10
  %1078 = call i32 @isatty(i32 noundef %1077) #10
  %.not221 = icmp eq i32 %1078, 0
  br i1 %.not221, label %1079, label %1080

1079:                                             ; preds = %1075, %1069
  br label %1080

1080:                                             ; preds = %1075, %1079
  %.str.5.sink634 = phi ptr [ @.str.5, %1079 ], [ @.str.2, %1075 ]
  store i32 %1070, ptr %192, align 4, !tbaa !5
  %1081 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1082 = load i32, ptr @test_count, align 4, !tbaa !5
  %1083 = load i32, ptr %138, align 4, !tbaa !5
  %1084 = call ptr @s2n_strerror(i32 noundef %1083, ptr noundef nonnull @.str.4) #10
  %1085 = load i32, ptr %138, align 4, !tbaa !5
  %1086 = call ptr @s2n_strerror_debug(i32 noundef %1085, ptr noundef nonnull @.str.4) #10
  %1087 = load i32, ptr %192, align 4, !tbaa !5
  %1088 = call ptr @strerror(i32 noundef %1087) #10
  %1089 = load i32, ptr %192, align 4, !tbaa !5
  %1090 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1081, ptr noundef nonnull %.str.5.sink634, i32 noundef %1082, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef %1084, ptr noundef %1086, ptr noundef %1088, i32 noundef %1089) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1091:                                             ; preds = %1064
  %1092 = add nsw i32 %1065, 2
  store i32 %1092, ptr @test_count, align 4, !tbaa !5
  %1093 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %1094 = icmp eq ptr %1093, null
  br i1 %1094, label %1095, label %1117

1095:                                             ; preds = %1091
  %1096 = load i32, ptr %192, align 4, !tbaa !5
  %1097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1098 = call i32 @s2n_print_stacktrace(ptr noundef %1097) #10
  %1099 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1100 = trunc nuw i8 %1099 to i1
  br i1 %1100, label %1101, label %1105

1101:                                             ; preds = %1095
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = call i32 @fileno(ptr noundef %1102) #10
  %1104 = call i32 @isatty(i32 noundef %1103) #10
  %.not244 = icmp eq i32 %1104, 0
  br i1 %.not244, label %1105, label %1106

1105:                                             ; preds = %1101, %1095
  br label %1106

1106:                                             ; preds = %1101, %1105
  %.str.5.sink643 = phi ptr [ @.str.5, %1105 ], [ @.str.2, %1101 ]
  store i32 %1096, ptr %192, align 4, !tbaa !5
  %1107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1108 = load i32, ptr @test_count, align 4, !tbaa !5
  %1109 = load i32, ptr %138, align 4, !tbaa !5
  %1110 = call ptr @s2n_strerror(i32 noundef %1109, ptr noundef nonnull @.str.4) #10
  %1111 = load i32, ptr %138, align 4, !tbaa !5
  %1112 = call ptr @s2n_strerror_debug(i32 noundef %1111, ptr noundef nonnull @.str.4) #10
  %1113 = load i32, ptr %192, align 4, !tbaa !5
  %1114 = call ptr @strerror(i32 noundef %1113) #10
  %1115 = load i32, ptr %192, align 4, !tbaa !5
  %1116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1107, ptr noundef nonnull %.str.5.sink643, i32 noundef %1108, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef %1110, ptr noundef %1112, ptr noundef %1114, i32 noundef %1115) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1117:                                             ; preds = %1091
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %192, align 4, !tbaa !5
  %1118 = load i32, ptr @test_count, align 4, !tbaa !5
  %1119 = add nsw i32 %1118, 1
  store i32 %1119, ptr @test_count, align 4, !tbaa !5
  %1120 = call i32 @s2n_fips_validate_curve(ptr noundef nonnull @s2n_ecc_curve_secp256r1, ptr noundef null) #10
  %1121 = call zeroext i1 @s2n_result_is_error(i32 %1120)
  br i1 %1121, label %1144, label %1122

1122:                                             ; preds = %1117
  %1123 = load i32, ptr %192, align 4, !tbaa !5
  %1124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1125 = call i32 @s2n_print_stacktrace(ptr noundef %1124) #10
  %1126 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1127 = trunc nuw i8 %1126 to i1
  br i1 %1127, label %1128, label %1132

1128:                                             ; preds = %1122
  %1129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1130 = call i32 @fileno(ptr noundef %1129) #10
  %1131 = call i32 @isatty(i32 noundef %1130) #10
  %.not222 = icmp eq i32 %1131, 0
  br i1 %.not222, label %1132, label %1133

1132:                                             ; preds = %1128, %1122
  br label %1133

1133:                                             ; preds = %1128, %1132
  %.str.5.sink652 = phi ptr [ @.str.5, %1132 ], [ @.str.2, %1128 ]
  store i32 %1123, ptr %192, align 4, !tbaa !5
  %1134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1135 = load i32, ptr @test_count, align 4, !tbaa !5
  %1136 = load i32, ptr %138, align 4, !tbaa !5
  %1137 = call ptr @s2n_strerror(i32 noundef %1136, ptr noundef nonnull @.str.4) #10
  %1138 = load i32, ptr %138, align 4, !tbaa !5
  %1139 = call ptr @s2n_strerror_debug(i32 noundef %1138, ptr noundef nonnull @.str.4) #10
  %1140 = load i32, ptr %192, align 4, !tbaa !5
  %1141 = call ptr @strerror(i32 noundef %1140) #10
  %1142 = load i32, ptr %192, align 4, !tbaa !5
  %1143 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1134, ptr noundef nonnull %.str.5.sink652, i32 noundef %1135, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 179, ptr noundef %1137, ptr noundef %1139, ptr noundef %1141, i32 noundef %1142) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1144:                                             ; preds = %1117
  %1145 = load i32, ptr @test_count, align 4, !tbaa !5
  %1146 = add nsw i32 %1145, 1
  store i32 %1146, ptr @test_count, align 4, !tbaa !5
  %1147 = load i32, ptr %138, align 4, !tbaa !5
  %1148 = icmp eq i32 %1147, 402653193
  br i1 %1148, label %1171, label %1149

1149:                                             ; preds = %1144
  %1150 = load i32, ptr %192, align 4, !tbaa !5
  %1151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1152 = call i32 @s2n_print_stacktrace(ptr noundef %1151) #10
  %1153 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1154 = trunc nuw i8 %1153 to i1
  br i1 %1154, label %1155, label %1159

1155:                                             ; preds = %1149
  %1156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1157 = call i32 @fileno(ptr noundef %1156) #10
  %1158 = call i32 @isatty(i32 noundef %1157) #10
  %.not223 = icmp eq i32 %1158, 0
  br i1 %.not223, label %1159, label %1160

1159:                                             ; preds = %1155, %1149
  br label %1160

1160:                                             ; preds = %1155, %1159
  %.str.5.sink661 = phi ptr [ @.str.5, %1159 ], [ @.str.2, %1155 ]
  store i32 %1150, ptr %192, align 4, !tbaa !5
  %1161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1162 = load i32, ptr @test_count, align 4, !tbaa !5
  %1163 = load i32, ptr %138, align 4, !tbaa !5
  %1164 = call ptr @s2n_strerror(i32 noundef %1163, ptr noundef nonnull @.str.4) #10
  %1165 = load i32, ptr %138, align 4, !tbaa !5
  %1166 = call ptr @s2n_strerror_debug(i32 noundef %1165, ptr noundef nonnull @.str.4) #10
  %1167 = load i32, ptr %192, align 4, !tbaa !5
  %1168 = call ptr @strerror(i32 noundef %1167) #10
  %1169 = load i32, ptr %192, align 4, !tbaa !5
  %1170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1161, ptr noundef nonnull %.str.5.sink661, i32 noundef %1162, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 179, ptr noundef %1164, ptr noundef %1166, ptr noundef %1168, i32 noundef %1169) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1171:                                             ; preds = %1144
  %1172 = add nsw i32 %1145, 2
  store i32 %1172, ptr @test_count, align 4, !tbaa !5
  %1173 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %1174 = icmp eq ptr %1173, null
  br i1 %1174, label %1175, label %.critedge

1175:                                             ; preds = %1171
  %1176 = load i32, ptr %192, align 4, !tbaa !5
  %1177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1178 = call i32 @s2n_print_stacktrace(ptr noundef %1177) #10
  %1179 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1180 = trunc nuw i8 %1179 to i1
  br i1 %1180, label %1181, label %1185

1181:                                             ; preds = %1175
  %1182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1183 = call i32 @fileno(ptr noundef %1182) #10
  %1184 = call i32 @isatty(i32 noundef %1183) #10
  %.not243 = icmp eq i32 %1184, 0
  br i1 %.not243, label %1185, label %1186

1185:                                             ; preds = %1181, %1175
  br label %1186

1186:                                             ; preds = %1181, %1185
  %.str.5.sink670 = phi ptr [ @.str.5, %1185 ], [ @.str.2, %1181 ]
  store i32 %1176, ptr %192, align 4, !tbaa !5
  %1187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1188 = load i32, ptr @test_count, align 4, !tbaa !5
  %1189 = load i32, ptr %138, align 4, !tbaa !5
  %1190 = call ptr @s2n_strerror(i32 noundef %1189, ptr noundef nonnull @.str.4) #10
  %1191 = load i32, ptr %138, align 4, !tbaa !5
  %1192 = call ptr @s2n_strerror_debug(i32 noundef %1191, ptr noundef nonnull @.str.4) #10
  %1193 = load i32, ptr %192, align 4, !tbaa !5
  %1194 = call ptr @strerror(i32 noundef %1193) #10
  %1195 = load i32, ptr %192, align 4, !tbaa !5
  %1196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1187, ptr noundef nonnull %.str.5.sink670, i32 noundef %1188, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 179, ptr noundef %1190, ptr noundef %1192, ptr noundef %1194, i32 noundef %1195) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.critedge:                                        ; preds = %1171
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %192, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #10
  store i8 0, ptr %14, align 1, !tbaa !11
  %1197 = load i32, ptr @test_count, align 4, !tbaa !5
  %1198 = add nsw i32 %1197, 1
  store i32 %1198, ptr @test_count, align 4, !tbaa !5
  %1199 = load ptr, ptr @__const.main.valid.33, align 8, !tbaa !9
  %1200 = call i32 @s2n_fips_validate_curve(ptr noundef %1199, ptr noundef nonnull %14) #10
  %1201 = call zeroext i1 @s2n_result_is_ok(i32 %1200)
  br i1 %1201, label %1224, label %1202

1202:                                             ; preds = %.critedge
  %1203 = load i32, ptr %192, align 4, !tbaa !5
  %1204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1205 = call i32 @s2n_print_stacktrace(ptr noundef %1204) #10
  %1206 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1207 = trunc nuw i8 %1206 to i1
  br i1 %1207, label %1208, label %1212

1208:                                             ; preds = %1202
  %1209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1210 = call i32 @fileno(ptr noundef %1209) #10
  %1211 = call i32 @isatty(i32 noundef %1210) #10
  %.not241 = icmp eq i32 %1211, 0
  br i1 %.not241, label %1212, label %1213

1212:                                             ; preds = %1208, %1202
  br label %1213

1213:                                             ; preds = %1208, %1212
  %.str.5.sink679 = phi ptr [ @.str.5, %1212 ], [ @.str.2, %1208 ]
  store i32 %1203, ptr %192, align 4, !tbaa !5
  %1214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1215 = load i32, ptr @test_count, align 4, !tbaa !5
  %1216 = load i32, ptr %138, align 4, !tbaa !5
  %1217 = call ptr @s2n_strerror(i32 noundef %1216, ptr noundef nonnull @.str.4) #10
  %1218 = load i32, ptr %138, align 4, !tbaa !5
  %1219 = call ptr @s2n_strerror_debug(i32 noundef %1218, ptr noundef nonnull @.str.4) #10
  %1220 = load i32, ptr %192, align 4, !tbaa !5
  %1221 = call ptr @strerror(i32 noundef %1220) #10
  %1222 = load i32, ptr %192, align 4, !tbaa !5
  %1223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1214, ptr noundef nonnull %.str.5.sink679, i32 noundef %1215, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 186, ptr noundef %1217, ptr noundef %1219, ptr noundef %1221, i32 noundef %1222) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1224:                                             ; preds = %.critedge
  %1225 = load i32, ptr @test_count, align 4, !tbaa !5
  %1226 = add nsw i32 %1225, 1
  store i32 %1226, ptr @test_count, align 4, !tbaa !5
  %1227 = load i8, ptr %14, align 1, !tbaa !11, !range !13, !noundef !14
  %1228 = trunc nuw i8 %1227 to i1
  br i1 %1228, label %.critedge271, label %1229

1229:                                             ; preds = %1224
  %1230 = load i32, ptr %192, align 4, !tbaa !5
  %1231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1232 = call i32 @s2n_print_stacktrace(ptr noundef %1231) #10
  %1233 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1234 = trunc nuw i8 %1233 to i1
  br i1 %1234, label %1235, label %1239

1235:                                             ; preds = %1229
  %1236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1237 = call i32 @fileno(ptr noundef %1236) #10
  %1238 = call i32 @isatty(i32 noundef %1237) #10
  %.not242 = icmp eq i32 %1238, 0
  br i1 %.not242, label %1239, label %1240

1239:                                             ; preds = %1235, %1229
  br label %1240

1240:                                             ; preds = %1235, %1239
  %.str.5.sink688 = phi ptr [ @.str.5, %1239 ], [ @.str.2, %1235 ]
  store i32 %1230, ptr %192, align 4, !tbaa !5
  %1241 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1242 = load i32, ptr @test_count, align 4, !tbaa !5
  %1243 = load i32, ptr %138, align 4, !tbaa !5
  %1244 = call ptr @s2n_strerror(i32 noundef %1243, ptr noundef nonnull @.str.4) #10
  %1245 = load i32, ptr %138, align 4, !tbaa !5
  %1246 = call ptr @s2n_strerror_debug(i32 noundef %1245, ptr noundef nonnull @.str.4) #10
  %1247 = load i32, ptr %192, align 4, !tbaa !5
  %1248 = call ptr @strerror(i32 noundef %1247) #10
  %1249 = load i32, ptr %192, align 4, !tbaa !5
  %1250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1241, ptr noundef nonnull %.str.5.sink688, i32 noundef %1242, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 187, ptr noundef %1244, ptr noundef %1246, ptr noundef %1248, i32 noundef %1249) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.critedge271:                                     ; preds = %1224
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #10
  store i8 1, ptr %15, align 1, !tbaa !11
  %1251 = add nsw i32 %1225, 2
  store i32 %1251, ptr @test_count, align 4, !tbaa !5
  %1252 = load ptr, ptr @__const.main.invalid.35, align 8, !tbaa !9
  %1253 = call i32 @s2n_fips_validate_curve(ptr noundef %1252, ptr noundef nonnull %15) #10
  %1254 = call zeroext i1 @s2n_result_is_ok(i32 %1253)
  br i1 %1254, label %1277, label %1255

1255:                                             ; preds = %.critedge271
  %1256 = load i32, ptr %192, align 4, !tbaa !5
  %1257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1258 = call i32 @s2n_print_stacktrace(ptr noundef %1257) #10
  %1259 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1260 = trunc nuw i8 %1259 to i1
  br i1 %1260, label %1261, label %1265

1261:                                             ; preds = %1255
  %1262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1263 = call i32 @fileno(ptr noundef %1262) #10
  %1264 = call i32 @isatty(i32 noundef %1263) #10
  %.not239 = icmp eq i32 %1264, 0
  br i1 %.not239, label %1265, label %1266

1265:                                             ; preds = %1261, %1255
  br label %1266

1266:                                             ; preds = %1261, %1265
  %.str.5.sink697 = phi ptr [ @.str.5, %1265 ], [ @.str.2, %1261 ]
  store i32 %1256, ptr %192, align 4, !tbaa !5
  %1267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1268 = load i32, ptr @test_count, align 4, !tbaa !5
  %1269 = load i32, ptr %138, align 4, !tbaa !5
  %1270 = call ptr @s2n_strerror(i32 noundef %1269, ptr noundef nonnull @.str.4) #10
  %1271 = load i32, ptr %138, align 4, !tbaa !5
  %1272 = call ptr @s2n_strerror_debug(i32 noundef %1271, ptr noundef nonnull @.str.4) #10
  %1273 = load i32, ptr %192, align 4, !tbaa !5
  %1274 = call ptr @strerror(i32 noundef %1273) #10
  %1275 = load i32, ptr %192, align 4, !tbaa !5
  %1276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1267, ptr noundef nonnull %.str.5.sink697, i32 noundef %1268, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 194, ptr noundef %1270, ptr noundef %1272, ptr noundef %1274, i32 noundef %1275) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1277:                                             ; preds = %.critedge271
  %1278 = load i32, ptr @test_count, align 4, !tbaa !5
  %1279 = add nsw i32 %1278, 1
  store i32 %1279, ptr @test_count, align 4, !tbaa !5
  %1280 = load i8, ptr %15, align 1, !tbaa !11, !range !13, !noundef !14
  %1281 = trunc nuw i8 %1280 to i1
  br i1 %1281, label %1282, label %1304

1282:                                             ; preds = %1277
  %1283 = load i32, ptr %192, align 4, !tbaa !5
  %1284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1285 = call i32 @s2n_print_stacktrace(ptr noundef %1284) #10
  %1286 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1287 = trunc nuw i8 %1286 to i1
  br i1 %1287, label %1288, label %1292

1288:                                             ; preds = %1282
  %1289 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1290 = call i32 @fileno(ptr noundef %1289) #10
  %1291 = call i32 @isatty(i32 noundef %1290) #10
  %.not240 = icmp eq i32 %1291, 0
  br i1 %.not240, label %1292, label %1293

1292:                                             ; preds = %1288, %1282
  br label %1293

1293:                                             ; preds = %1288, %1292
  %.str.5.sink706 = phi ptr [ @.str.5, %1292 ], [ @.str.2, %1288 ]
  store i32 %1283, ptr %192, align 4, !tbaa !5
  %1294 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1295 = load i32, ptr @test_count, align 4, !tbaa !5
  %1296 = load i32, ptr %138, align 4, !tbaa !5
  %1297 = call ptr @s2n_strerror(i32 noundef %1296, ptr noundef nonnull @.str.4) #10
  %1298 = load i32, ptr %138, align 4, !tbaa !5
  %1299 = call ptr @s2n_strerror_debug(i32 noundef %1298, ptr noundef nonnull @.str.4) #10
  %1300 = load i32, ptr %192, align 4, !tbaa !5
  %1301 = call ptr @strerror(i32 noundef %1300) #10
  %1302 = load i32, ptr %192, align 4, !tbaa !5
  %1303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1294, ptr noundef nonnull %.str.5.sink706, i32 noundef %1295, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 195, ptr noundef %1297, ptr noundef %1299, ptr noundef %1301, i32 noundef %1302) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1304:                                             ; preds = %1277
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  %1305 = load i8, ptr @s2n_ecc_preferences_test_all, align 8, !tbaa !37
  %1306 = zext i8 %1305 to i64
  %.not315 = icmp eq i8 %1305, 0
  br i1 %.not315, label %._crit_edge305, label %.lr.ph304

.lr.ph304:                                        ; preds = %1304
  %1307 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_ecc_preferences_test_all, i64 8), align 8, !tbaa !39
  %1308 = load ptr, ptr getelementptr inbounds (i8, ptr @security_policy_test_all_fips, i64 40), align 8
  %1309 = getelementptr inbounds i8, ptr %1308, i64 8
  br label %1314

._crit_edge305.loopexit:                          ; preds = %1388
  %.pre327 = load i32, ptr @test_count, align 4, !tbaa !5
  br label %._crit_edge305

._crit_edge305:                                   ; preds = %._crit_edge305.loopexit, %1304
  %1310 = phi i32 [ %.pre327, %._crit_edge305.loopexit ], [ %1279, %1304 ]
  %1311 = add nsw i32 %1310, 1
  store i32 %1311, ptr @test_count, align 4, !tbaa !5
  %1312 = call i32 @s2n_fips_validate_version(i8 noundef zeroext 0, ptr noundef null) #10
  %1313 = call zeroext i1 @s2n_result_is_error(i32 %1312)
  br i1 %1313, label %1412, label %1390

1314:                                             ; preds = %.lr.ph304, %1388
  %.0207302 = phi i64 [ 0, %.lr.ph304 ], [ %1389, %1388 ]
  %1315 = getelementptr inbounds ptr, ptr %1307, i64 %.0207302
  %1316 = load ptr, ptr %1315, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #10
  store i8 0, ptr %16, align 1, !tbaa !11
  %1317 = load i32, ptr @test_count, align 4, !tbaa !5
  %1318 = add nsw i32 %1317, 1
  store i32 %1318, ptr @test_count, align 4, !tbaa !5
  %1319 = call i32 @s2n_fips_validate_curve(ptr noundef %1316, ptr noundef nonnull %16) #10
  %1320 = call zeroext i1 @s2n_result_is_ok(i32 %1319)
  br i1 %1320, label %1343, label %1321

1321:                                             ; preds = %1314
  %1322 = load i32, ptr %192, align 4, !tbaa !5
  %1323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1324 = call i32 @s2n_print_stacktrace(ptr noundef %1323) #10
  %1325 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1326 = trunc nuw i8 %1325 to i1
  br i1 %1326, label %1327, label %1331

1327:                                             ; preds = %1321
  %1328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1329 = call i32 @fileno(ptr noundef %1328) #10
  %1330 = call i32 @isatty(i32 noundef %1329) #10
  %.not237 = icmp eq i32 %1330, 0
  br i1 %.not237, label %1331, label %1332

1331:                                             ; preds = %1327, %1321
  br label %1332

1332:                                             ; preds = %1327, %1331
  %.str.5.sink715 = phi ptr [ @.str.5, %1331 ], [ @.str.2, %1327 ]
  store i32 %1322, ptr %192, align 4, !tbaa !5
  %1333 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1334 = load i32, ptr @test_count, align 4, !tbaa !5
  %1335 = load i32, ptr %138, align 4, !tbaa !5
  %1336 = call ptr @s2n_strerror(i32 noundef %1335, ptr noundef nonnull @.str.4) #10
  %1337 = load i32, ptr %138, align 4, !tbaa !5
  %1338 = call ptr @s2n_strerror_debug(i32 noundef %1337, ptr noundef nonnull @.str.4) #10
  %1339 = load i32, ptr %192, align 4, !tbaa !5
  %1340 = call ptr @strerror(i32 noundef %1339) #10
  %1341 = load i32, ptr %192, align 4, !tbaa !5
  %1342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1333, ptr noundef nonnull %.str.5.sink715, i32 noundef %1334, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 203, ptr noundef %1336, ptr noundef %1338, ptr noundef %1340, i32 noundef %1341) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1343:                                             ; preds = %1314
  %1344 = load i8, ptr %16, align 1, !tbaa !11, !range !13, !noundef !14
  %1345 = trunc nuw i8 %1344 to i1
  br i1 %1345, label %1346, label %1388

1346:                                             ; preds = %1343
  %1347 = load i8, ptr %1308, align 8, !tbaa !37
  %1348 = zext i8 %1347 to i64
  %.not316 = icmp eq i8 %1347, 0
  br i1 %.not316, label %.critedge310, label %.lr.ph299

.lr.ph299:                                        ; preds = %1346
  %1349 = load ptr, ptr %1309, align 8, !tbaa !39
  %min.iters.check847 = icmp ult i8 %1347, 4
  br i1 %min.iters.check847, label %scalar.ph846.preheader, label %vector.ph848

scalar.ph846.preheader:                           ; preds = %middle.block845, %.lr.ph299
  %.0208297.ph = phi i64 [ 0, %.lr.ph299 ], [ %n.vec850, %middle.block845 ]
  %.0209296.ph = phi i1 [ false, %.lr.ph299 ], [ %1358, %middle.block845 ]
  br label %scalar.ph846

vector.ph848:                                     ; preds = %.lr.ph299
  %n.vec850 = and i64 %1348, 252
  %broadcast.splatinsert858 = insertelement <2 x ptr> poison, ptr %1316, i64 0
  %broadcast.splat859 = shufflevector <2 x ptr> %broadcast.splatinsert858, <2 x ptr> poison, <2 x i32> zeroinitializer
  br label %vector.body852

vector.body852:                                   ; preds = %vector.body852, %vector.ph848
  %index853 = phi i64 [ 0, %vector.ph848 ], [ %index.next860, %vector.body852 ]
  %vec.phi854 = phi <2 x i1> [ zeroinitializer, %vector.ph848 ], [ %1354, %vector.body852 ]
  %vec.phi855 = phi <2 x i1> [ zeroinitializer, %vector.ph848 ], [ %1355, %vector.body852 ]
  %1350 = getelementptr inbounds ptr, ptr %1349, i64 %index853
  %1351 = getelementptr inbounds i8, ptr %1350, i64 16
  %wide.load856 = load <2 x ptr>, ptr %1350, align 8, !tbaa !9
  %wide.load857 = load <2 x ptr>, ptr %1351, align 8, !tbaa !9
  %1352 = icmp eq <2 x ptr> %broadcast.splat859, %wide.load856
  %1353 = icmp eq <2 x ptr> %broadcast.splat859, %wide.load857
  %1354 = or <2 x i1> %vec.phi854, %1352
  %1355 = or <2 x i1> %vec.phi855, %1353
  %index.next860 = add nuw i64 %index853, 4
  %1356 = icmp eq i64 %index.next860, %n.vec850
  br i1 %1356, label %middle.block845, label %vector.body852, !llvm.loop !40

middle.block845:                                  ; preds = %vector.body852
  %bin.rdx861 = or <2 x i1> %1355, %1354
  %bin.rdx861.fr = freeze <2 x i1> %bin.rdx861
  %1357 = bitcast <2 x i1> %bin.rdx861.fr to i2
  %1358 = icmp ne i2 %1357, 0
  %cmp.n863 = icmp eq i64 %n.vec850, %1348
  br i1 %cmp.n863, label %._crit_edge300, label %scalar.ph846.preheader

._crit_edge300:                                   ; preds = %scalar.ph846, %middle.block845
  %spec.select272.lcssa = phi i1 [ %1358, %middle.block845 ], [ %spec.select272, %scalar.ph846 ]
  %1359 = load i32, ptr @test_count, align 4, !tbaa !5
  %1360 = add nsw i32 %1359, 1
  store i32 %1360, ptr @test_count, align 4, !tbaa !5
  br i1 %spec.select272.lcssa, label %1388, label %.loopexit

scalar.ph846:                                     ; preds = %scalar.ph846.preheader, %scalar.ph846
  %.0208297 = phi i64 [ %1364, %scalar.ph846 ], [ %.0208297.ph, %scalar.ph846.preheader ]
  %.0209296 = phi i1 [ %spec.select272, %scalar.ph846 ], [ %.0209296.ph, %scalar.ph846.preheader ]
  %1361 = getelementptr inbounds ptr, ptr %1349, i64 %.0208297
  %1362 = load ptr, ptr %1361, align 8, !tbaa !9
  %1363 = icmp eq ptr %1316, %1362
  %spec.select272 = select i1 %1363, i1 true, i1 %.0209296
  %1364 = add nuw nsw i64 %.0208297, 1
  %exitcond322.not = icmp eq i64 %1364, %1348
  br i1 %exitcond322.not, label %._crit_edge300, label %scalar.ph846, !llvm.loop !41

.critedge310:                                     ; preds = %1346
  %1365 = load i32, ptr @test_count, align 4, !tbaa !5
  %1366 = add nsw i32 %1365, 1
  store i32 %1366, ptr @test_count, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge300, %.critedge310
  %1367 = load i32, ptr %192, align 4, !tbaa !5
  %1368 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1369 = call i32 @s2n_print_stacktrace(ptr noundef %1368) #10
  %1370 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1371 = trunc nuw i8 %1370 to i1
  br i1 %1371, label %1372, label %1376

1372:                                             ; preds = %.loopexit
  %1373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1374 = call i32 @fileno(ptr noundef %1373) #10
  %1375 = call i32 @isatty(i32 noundef %1374) #10
  %.not238 = icmp eq i32 %1375, 0
  br i1 %.not238, label %1376, label %1377

1376:                                             ; preds = %1372, %.loopexit
  br label %1377

1377:                                             ; preds = %1372, %1376
  %.str.5.sink724 = phi ptr [ @.str.5, %1376 ], [ @.str.2, %1372 ]
  store i32 %1367, ptr %192, align 4, !tbaa !5
  %1378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1379 = load i32, ptr @test_count, align 4, !tbaa !5
  %1380 = load i32, ptr %138, align 4, !tbaa !5
  %1381 = call ptr @s2n_strerror(i32 noundef %1380, ptr noundef nonnull @.str.4) #10
  %1382 = load i32, ptr %138, align 4, !tbaa !5
  %1383 = call ptr @s2n_strerror_debug(i32 noundef %1382, ptr noundef nonnull @.str.4) #10
  %1384 = load i32, ptr %192, align 4, !tbaa !5
  %1385 = call ptr @strerror(i32 noundef %1384) #10
  %1386 = load i32, ptr %192, align 4, !tbaa !5
  %1387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1378, ptr noundef nonnull %.str.5.sink724, i32 noundef %1379, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 217, ptr noundef %1381, ptr noundef %1383, ptr noundef %1385, i32 noundef %1386) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1388:                                             ; preds = %._crit_edge300, %1343
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  %1389 = add nuw nsw i64 %.0207302, 1
  %exitcond323.not = icmp eq i64 %1389, %1306
  br i1 %exitcond323.not, label %._crit_edge305.loopexit, label %1314, !llvm.loop !42

1390:                                             ; preds = %._crit_edge305
  %1391 = load i32, ptr %192, align 4, !tbaa !5
  %1392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1393 = call i32 @s2n_print_stacktrace(ptr noundef %1392) #10
  %1394 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1395 = trunc nuw i8 %1394 to i1
  br i1 %1395, label %1396, label %1400

1396:                                             ; preds = %1390
  %1397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1398 = call i32 @fileno(ptr noundef %1397) #10
  %1399 = call i32 @isatty(i32 noundef %1398) #10
  %.not224 = icmp eq i32 %1399, 0
  br i1 %.not224, label %1400, label %1401

1400:                                             ; preds = %1396, %1390
  br label %1401

1401:                                             ; preds = %1396, %1400
  %.str.5.sink733 = phi ptr [ @.str.5, %1400 ], [ @.str.2, %1396 ]
  store i32 %1391, ptr %192, align 4, !tbaa !5
  %1402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1403 = load i32, ptr @test_count, align 4, !tbaa !5
  %1404 = load i32, ptr %138, align 4, !tbaa !5
  %1405 = call ptr @s2n_strerror(i32 noundef %1404, ptr noundef nonnull @.str.4) #10
  %1406 = load i32, ptr %138, align 4, !tbaa !5
  %1407 = call ptr @s2n_strerror_debug(i32 noundef %1406, ptr noundef nonnull @.str.4) #10
  %1408 = load i32, ptr %192, align 4, !tbaa !5
  %1409 = call ptr @strerror(i32 noundef %1408) #10
  %1410 = load i32, ptr %192, align 4, !tbaa !5
  %1411 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1402, ptr noundef nonnull %.str.5.sink733, i32 noundef %1403, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 224, ptr noundef %1405, ptr noundef %1407, ptr noundef %1409, i32 noundef %1410) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1412:                                             ; preds = %._crit_edge305
  %1413 = load i32, ptr @test_count, align 4, !tbaa !5
  %1414 = add nsw i32 %1413, 1
  store i32 %1414, ptr @test_count, align 4, !tbaa !5
  %1415 = load i32, ptr %138, align 4, !tbaa !5
  %1416 = icmp eq i32 %1415, 402653193
  br i1 %1416, label %1439, label %1417

1417:                                             ; preds = %1412
  %1418 = load i32, ptr %192, align 4, !tbaa !5
  %1419 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1420 = call i32 @s2n_print_stacktrace(ptr noundef %1419) #10
  %1421 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1422 = trunc nuw i8 %1421 to i1
  br i1 %1422, label %1423, label %1427

1423:                                             ; preds = %1417
  %1424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1425 = call i32 @fileno(ptr noundef %1424) #10
  %1426 = call i32 @isatty(i32 noundef %1425) #10
  %.not225 = icmp eq i32 %1426, 0
  br i1 %.not225, label %1427, label %1428

1427:                                             ; preds = %1423, %1417
  br label %1428

1428:                                             ; preds = %1423, %1427
  %.str.5.sink742 = phi ptr [ @.str.5, %1427 ], [ @.str.2, %1423 ]
  store i32 %1418, ptr %192, align 4, !tbaa !5
  %1429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1430 = load i32, ptr @test_count, align 4, !tbaa !5
  %1431 = load i32, ptr %138, align 4, !tbaa !5
  %1432 = call ptr @s2n_strerror(i32 noundef %1431, ptr noundef nonnull @.str.4) #10
  %1433 = load i32, ptr %138, align 4, !tbaa !5
  %1434 = call ptr @s2n_strerror_debug(i32 noundef %1433, ptr noundef nonnull @.str.4) #10
  %1435 = load i32, ptr %192, align 4, !tbaa !5
  %1436 = call ptr @strerror(i32 noundef %1435) #10
  %1437 = load i32, ptr %192, align 4, !tbaa !5
  %1438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1429, ptr noundef nonnull %.str.5.sink742, i32 noundef %1430, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 224, ptr noundef %1432, ptr noundef %1434, ptr noundef %1436, i32 noundef %1437) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1439:                                             ; preds = %1412
  %1440 = add nsw i32 %1413, 2
  store i32 %1440, ptr @test_count, align 4, !tbaa !5
  %1441 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.4) #10
  %1442 = icmp eq ptr %1441, null
  br i1 %1442, label %1443, label %1465

1443:                                             ; preds = %1439
  %1444 = load i32, ptr %192, align 4, !tbaa !5
  %1445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1446 = call i32 @s2n_print_stacktrace(ptr noundef %1445) #10
  %1447 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1448 = trunc nuw i8 %1447 to i1
  br i1 %1448, label %1449, label %1453

1449:                                             ; preds = %1443
  %1450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1451 = call i32 @fileno(ptr noundef %1450) #10
  %1452 = call i32 @isatty(i32 noundef %1451) #10
  %.not236 = icmp eq i32 %1452, 0
  br i1 %.not236, label %1453, label %1454

1453:                                             ; preds = %1449, %1443
  br label %1454

1454:                                             ; preds = %1449, %1453
  %.str.5.sink751 = phi ptr [ @.str.5, %1453 ], [ @.str.2, %1449 ]
  store i32 %1444, ptr %192, align 4, !tbaa !5
  %1455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1456 = load i32, ptr @test_count, align 4, !tbaa !5
  %1457 = load i32, ptr %138, align 4, !tbaa !5
  %1458 = call ptr @s2n_strerror(i32 noundef %1457, ptr noundef nonnull @.str.4) #10
  %1459 = load i32, ptr %138, align 4, !tbaa !5
  %1460 = call ptr @s2n_strerror_debug(i32 noundef %1459, ptr noundef nonnull @.str.4) #10
  %1461 = load i32, ptr %192, align 4, !tbaa !5
  %1462 = call ptr @strerror(i32 noundef %1461) #10
  %1463 = load i32, ptr %192, align 4, !tbaa !5
  %1464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1455, ptr noundef nonnull %.str.5.sink751, i32 noundef %1456, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 224, ptr noundef %1458, ptr noundef %1460, ptr noundef %1462, i32 noundef %1463) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1465:                                             ; preds = %1439
  store i32 0, ptr %138, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %192, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #10
  store i8 0, ptr %17, align 1, !tbaa !11
  %1466 = load i32, ptr @test_count, align 4, !tbaa !5
  %1467 = add nsw i32 %1466, 1
  store i32 %1467, ptr @test_count, align 4, !tbaa !5
  %1468 = load i8, ptr @__const.main.valid.39, align 1, !tbaa !43
  %1469 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1468, ptr noundef nonnull %17) #10
  %1470 = call zeroext i1 @s2n_result_is_ok(i32 %1469)
  br i1 %1470, label %1493, label %1471

1471:                                             ; preds = %1520, %1465
  %1472 = load i32, ptr %192, align 4, !tbaa !5
  %1473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1474 = call i32 @s2n_print_stacktrace(ptr noundef %1473) #10
  %1475 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1476 = trunc nuw i8 %1475 to i1
  br i1 %1476, label %1477, label %1481

1477:                                             ; preds = %1471
  %1478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1479 = call i32 @fileno(ptr noundef %1478) #10
  %1480 = call i32 @isatty(i32 noundef %1479) #10
  %.not234 = icmp eq i32 %1480, 0
  br i1 %.not234, label %1481, label %1482

1481:                                             ; preds = %1477, %1471
  br label %1482

1482:                                             ; preds = %1477, %1481
  %.str.5.sink760 = phi ptr [ @.str.5, %1481 ], [ @.str.2, %1477 ]
  store i32 %1472, ptr %192, align 4, !tbaa !5
  %1483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1484 = load i32, ptr @test_count, align 4, !tbaa !5
  %1485 = load i32, ptr %138, align 4, !tbaa !5
  %1486 = call ptr @s2n_strerror(i32 noundef %1485, ptr noundef nonnull @.str.4) #10
  %1487 = load i32, ptr %138, align 4, !tbaa !5
  %1488 = call ptr @s2n_strerror_debug(i32 noundef %1487, ptr noundef nonnull @.str.4) #10
  %1489 = load i32, ptr %192, align 4, !tbaa !5
  %1490 = call ptr @strerror(i32 noundef %1489) #10
  %1491 = load i32, ptr %192, align 4, !tbaa !5
  %1492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1483, ptr noundef nonnull %.str.5.sink760, i32 noundef %1484, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 230, ptr noundef %1486, ptr noundef %1488, ptr noundef %1490, i32 noundef %1491) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1493:                                             ; preds = %1465
  %1494 = load i32, ptr @test_count, align 4, !tbaa !5
  %1495 = add nsw i32 %1494, 1
  store i32 %1495, ptr @test_count, align 4, !tbaa !5
  %1496 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %1497 = trunc nuw i8 %1496 to i1
  br i1 %1497, label %1520, label %1498

1498:                                             ; preds = %1525, %1493
  %1499 = load i32, ptr %192, align 4, !tbaa !5
  %1500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1501 = call i32 @s2n_print_stacktrace(ptr noundef %1500) #10
  %1502 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1503 = trunc nuw i8 %1502 to i1
  br i1 %1503, label %1504, label %1508

1504:                                             ; preds = %1498
  %1505 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1506 = call i32 @fileno(ptr noundef %1505) #10
  %1507 = call i32 @isatty(i32 noundef %1506) #10
  %.not235 = icmp eq i32 %1507, 0
  br i1 %.not235, label %1508, label %1509

1508:                                             ; preds = %1504, %1498
  br label %1509

1509:                                             ; preds = %1504, %1508
  %.str.5.sink769 = phi ptr [ @.str.5, %1508 ], [ @.str.2, %1504 ]
  store i32 %1499, ptr %192, align 4, !tbaa !5
  %1510 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1511 = load i32, ptr @test_count, align 4, !tbaa !5
  %1512 = load i32, ptr %138, align 4, !tbaa !5
  %1513 = call ptr @s2n_strerror(i32 noundef %1512, ptr noundef nonnull @.str.4) #10
  %1514 = load i32, ptr %138, align 4, !tbaa !5
  %1515 = call ptr @s2n_strerror_debug(i32 noundef %1514, ptr noundef nonnull @.str.4) #10
  %1516 = load i32, ptr %192, align 4, !tbaa !5
  %1517 = call ptr @strerror(i32 noundef %1516) #10
  %1518 = load i32, ptr %192, align 4, !tbaa !5
  %1519 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1510, ptr noundef nonnull %.str.5.sink769, i32 noundef %1511, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 231, ptr noundef %1513, ptr noundef %1515, ptr noundef %1517, i32 noundef %1518) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1520:                                             ; preds = %1493
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #10
  store i8 0, ptr %17, align 1, !tbaa !11
  %1521 = add nsw i32 %1494, 2
  store i32 %1521, ptr @test_count, align 4, !tbaa !5
  %1522 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.valid.39, i64 1), align 1, !tbaa !43
  %1523 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1522, ptr noundef nonnull %17) #10
  %1524 = call zeroext i1 @s2n_result_is_ok(i32 %1523)
  br i1 %1524, label %1525, label %1471

1525:                                             ; preds = %1520
  %1526 = load i32, ptr @test_count, align 4, !tbaa !5
  %1527 = add nsw i32 %1526, 1
  store i32 %1527, ptr @test_count, align 4, !tbaa !5
  %1528 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %1529 = trunc nuw i8 %1528 to i1
  br i1 %1529, label %.preheader273.preheader, label %1498

.preheader273.preheader:                          ; preds = %1525
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  store i8 1, ptr %18, align 1, !tbaa !11
  %1530 = add nsw i32 %1526, 2
  store i32 %1530, ptr @test_count, align 4, !tbaa !5
  %1531 = load i8, ptr @__const.main.invalid.41, align 1, !tbaa !43
  %1532 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1531, ptr noundef nonnull %18) #10
  %1533 = call zeroext i1 @s2n_result_is_ok(i32 %1532)
  br i1 %1533, label %1556, label %1534

1534:                                             ; preds = %.preheader273.4, %.preheader273.3, %.preheader273.2, %.preheader273.1, %.preheader273.preheader
  %1535 = load i32, ptr %192, align 4, !tbaa !5
  %1536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1537 = call i32 @s2n_print_stacktrace(ptr noundef %1536) #10
  %1538 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1539 = trunc nuw i8 %1538 to i1
  br i1 %1539, label %1540, label %1544

1540:                                             ; preds = %1534
  %1541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1542 = call i32 @fileno(ptr noundef %1541) #10
  %1543 = call i32 @isatty(i32 noundef %1542) #10
  %.not232 = icmp eq i32 %1543, 0
  br i1 %.not232, label %1544, label %1545

1544:                                             ; preds = %1540, %1534
  br label %1545

1545:                                             ; preds = %1540, %1544
  %.str.5.sink778 = phi ptr [ @.str.5, %1544 ], [ @.str.2, %1540 ]
  store i32 %1535, ptr %192, align 4, !tbaa !5
  %1546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1547 = load i32, ptr @test_count, align 4, !tbaa !5
  %1548 = load i32, ptr %138, align 4, !tbaa !5
  %1549 = call ptr @s2n_strerror(i32 noundef %1548, ptr noundef nonnull @.str.4) #10
  %1550 = load i32, ptr %138, align 4, !tbaa !5
  %1551 = call ptr @s2n_strerror_debug(i32 noundef %1550, ptr noundef nonnull @.str.4) #10
  %1552 = load i32, ptr %192, align 4, !tbaa !5
  %1553 = call ptr @strerror(i32 noundef %1552) #10
  %1554 = load i32, ptr %192, align 4, !tbaa !5
  %1555 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1546, ptr noundef nonnull %.str.5.sink778, i32 noundef %1547, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.1, i32 noundef 238, ptr noundef %1549, ptr noundef %1551, ptr noundef %1553, i32 noundef %1554) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1556:                                             ; preds = %.preheader273.preheader
  %1557 = load i32, ptr @test_count, align 4, !tbaa !5
  %1558 = add nsw i32 %1557, 1
  store i32 %1558, ptr @test_count, align 4, !tbaa !5
  %1559 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %1560 = trunc nuw i8 %1559 to i1
  br i1 %1560, label %1561, label %.preheader273.1

1561:                                             ; preds = %1614, %1605, %1596, %1587, %1556
  %1562 = load i32, ptr %192, align 4, !tbaa !5
  %1563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1564 = call i32 @s2n_print_stacktrace(ptr noundef %1563) #10
  %1565 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1566 = trunc nuw i8 %1565 to i1
  br i1 %1566, label %1567, label %1571

1567:                                             ; preds = %1561
  %1568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1569 = call i32 @fileno(ptr noundef %1568) #10
  %1570 = call i32 @isatty(i32 noundef %1569) #10
  %.not233 = icmp eq i32 %1570, 0
  br i1 %.not233, label %1571, label %1572

1571:                                             ; preds = %1567, %1561
  br label %1572

1572:                                             ; preds = %1567, %1571
  %.str.5.sink787 = phi ptr [ @.str.5, %1571 ], [ @.str.2, %1567 ]
  store i32 %1562, ptr %192, align 4, !tbaa !5
  %1573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1574 = load i32, ptr @test_count, align 4, !tbaa !5
  %1575 = load i32, ptr %138, align 4, !tbaa !5
  %1576 = call ptr @s2n_strerror(i32 noundef %1575, ptr noundef nonnull @.str.4) #10
  %1577 = load i32, ptr %138, align 4, !tbaa !5
  %1578 = call ptr @s2n_strerror_debug(i32 noundef %1577, ptr noundef nonnull @.str.4) #10
  %1579 = load i32, ptr %192, align 4, !tbaa !5
  %1580 = call ptr @strerror(i32 noundef %1579) #10
  %1581 = load i32, ptr %192, align 4, !tbaa !5
  %1582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1573, ptr noundef nonnull %.str.5.sink787, i32 noundef %1574, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 239, ptr noundef %1576, ptr noundef %1578, ptr noundef %1580, i32 noundef %1581) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader273.1:                                  ; preds = %1556
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  store i8 1, ptr %18, align 1, !tbaa !11
  %1583 = add nsw i32 %1557, 2
  store i32 %1583, ptr @test_count, align 4, !tbaa !5
  %1584 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.41, i64 1), align 1, !tbaa !43
  %1585 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1584, ptr noundef nonnull %18) #10
  %1586 = call zeroext i1 @s2n_result_is_ok(i32 %1585)
  br i1 %1586, label %1587, label %1534

1587:                                             ; preds = %.preheader273.1
  %1588 = load i32, ptr @test_count, align 4, !tbaa !5
  %1589 = add nsw i32 %1588, 1
  store i32 %1589, ptr @test_count, align 4, !tbaa !5
  %1590 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %1591 = trunc nuw i8 %1590 to i1
  br i1 %1591, label %1561, label %.preheader273.2

.preheader273.2:                                  ; preds = %1587
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  store i8 1, ptr %18, align 1, !tbaa !11
  %1592 = add nsw i32 %1588, 2
  store i32 %1592, ptr @test_count, align 4, !tbaa !5
  %1593 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.41, i64 2), align 1, !tbaa !43
  %1594 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1593, ptr noundef nonnull %18) #10
  %1595 = call zeroext i1 @s2n_result_is_ok(i32 %1594)
  br i1 %1595, label %1596, label %1534

1596:                                             ; preds = %.preheader273.2
  %1597 = load i32, ptr @test_count, align 4, !tbaa !5
  %1598 = add nsw i32 %1597, 1
  store i32 %1598, ptr @test_count, align 4, !tbaa !5
  %1599 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %1600 = trunc nuw i8 %1599 to i1
  br i1 %1600, label %1561, label %.preheader273.3

.preheader273.3:                                  ; preds = %1596
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  store i8 1, ptr %18, align 1, !tbaa !11
  %1601 = add nsw i32 %1597, 2
  store i32 %1601, ptr @test_count, align 4, !tbaa !5
  %1602 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.41, i64 3), align 1, !tbaa !43
  %1603 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1602, ptr noundef nonnull %18) #10
  %1604 = call zeroext i1 @s2n_result_is_ok(i32 %1603)
  br i1 %1604, label %1605, label %1534

1605:                                             ; preds = %.preheader273.3
  %1606 = load i32, ptr @test_count, align 4, !tbaa !5
  %1607 = add nsw i32 %1606, 1
  store i32 %1607, ptr @test_count, align 4, !tbaa !5
  %1608 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %1609 = trunc nuw i8 %1608 to i1
  br i1 %1609, label %1561, label %.preheader273.4

.preheader273.4:                                  ; preds = %1605
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  store i8 1, ptr %18, align 1, !tbaa !11
  %1610 = add nsw i32 %1606, 2
  store i32 %1610, ptr @test_count, align 4, !tbaa !5
  %1611 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.invalid.41, i64 4), align 1, !tbaa !43
  %1612 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1611, ptr noundef nonnull %18) #10
  %1613 = call zeroext i1 @s2n_result_is_ok(i32 %1612)
  br i1 %1613, label %1614, label %1534

1614:                                             ; preds = %.preheader273.4
  %1615 = load i32, ptr @test_count, align 4, !tbaa !5
  %1616 = add nsw i32 %1615, 1
  store i32 %1616, ptr @test_count, align 4, !tbaa !5
  %1617 = load i8, ptr %18, align 1, !tbaa !11, !range !13, !noundef !14
  %1618 = trunc nuw i8 %1617 to i1
  br i1 %1618, label %1561, label %.preheader.preheader

.preheader.preheader:                             ; preds = %1614
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  br label %.preheader

1619:                                             ; preds = %1649
  %1620 = call i32 @s2n_cleanup() #10
  %1621 = icmp eq i32 %1620, -1
  br i1 %1621, label %1651, label %1673

.preheader:                                       ; preds = %.preheader.preheader, %1649
  %.0194308 = phi i64 [ %1650, %1649 ], [ 0, %.preheader.preheader ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #10
  store i8 0, ptr %19, align 1, !tbaa !11
  %1622 = load i32, ptr @test_count, align 4, !tbaa !5
  %1623 = add nsw i32 %1622, 1
  store i32 %1623, ptr @test_count, align 4, !tbaa !5
  %1624 = trunc nuw i64 %.0194308 to i8
  %1625 = call i32 @s2n_fips_validate_version(i8 noundef zeroext %1624, ptr noundef nonnull %19) #10
  %1626 = call zeroext i1 @s2n_result_is_ok(i32 %1625)
  br i1 %1626, label %1649, label %1627

1627:                                             ; preds = %.preheader
  %1628 = load i32, ptr %192, align 4, !tbaa !5
  %1629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1630 = call i32 @s2n_print_stacktrace(ptr noundef %1629) #10
  %1631 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1632 = trunc nuw i8 %1631 to i1
  br i1 %1632, label %1633, label %1637

1633:                                             ; preds = %1627
  %1634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1635 = call i32 @fileno(ptr noundef %1634) #10
  %1636 = call i32 @isatty(i32 noundef %1635) #10
  %.not231 = icmp eq i32 %1636, 0
  br i1 %.not231, label %1637, label %1638

1637:                                             ; preds = %1633, %1627
  br label %1638

1638:                                             ; preds = %1633, %1637
  %.str.5.sink796 = phi ptr [ @.str.5, %1637 ], [ @.str.2, %1633 ]
  store i32 %1628, ptr %192, align 4, !tbaa !5
  %1639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1640 = load i32, ptr @test_count, align 4, !tbaa !5
  %1641 = load i32, ptr %138, align 4, !tbaa !5
  %1642 = call ptr @s2n_strerror(i32 noundef %1641, ptr noundef nonnull @.str.4) #10
  %1643 = load i32, ptr %138, align 4, !tbaa !5
  %1644 = call ptr @s2n_strerror_debug(i32 noundef %1643, ptr noundef nonnull @.str.4) #10
  %1645 = load i32, ptr %192, align 4, !tbaa !5
  %1646 = call ptr @strerror(i32 noundef %1645) #10
  %1647 = load i32, ptr %192, align 4, !tbaa !5
  %1648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1639, ptr noundef nonnull %.str.5.sink796, i32 noundef %1640, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 245, ptr noundef %1642, ptr noundef %1644, ptr noundef %1646, i32 noundef %1647) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1649:                                             ; preds = %.preheader
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #10
  %1650 = add nuw nsw i64 %.0194308, 1
  %exitcond325.not = icmp eq i64 %1650, 255
  br i1 %exitcond325.not, label %1619, label %.preheader, !llvm.loop !44

1651:                                             ; preds = %1619
  %1652 = load i32, ptr %192, align 4, !tbaa !5
  %1653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1654 = call i32 @s2n_print_stacktrace(ptr noundef %1653) #10
  %1655 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1656 = trunc nuw i8 %1655 to i1
  br i1 %1656, label %1657, label %1661

1657:                                             ; preds = %1651
  %1658 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1659 = call i32 @fileno(ptr noundef %1658) #10
  %1660 = call i32 @isatty(i32 noundef %1659) #10
  %.not230 = icmp eq i32 %1660, 0
  br i1 %.not230, label %1661, label %1662

1661:                                             ; preds = %1657, %1651
  br label %1662

1662:                                             ; preds = %1657, %1661
  %.str.5.sink805 = phi ptr [ @.str.5, %1661 ], [ @.str.2, %1657 ]
  store i32 %1652, ptr %192, align 4, !tbaa !5
  %1663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1664 = load i32, ptr @test_count, align 4, !tbaa !5
  %1665 = load i32, ptr %138, align 4, !tbaa !5
  %1666 = call ptr @s2n_strerror(i32 noundef %1665, ptr noundef nonnull @.str.4) #10
  %1667 = load i32, ptr %138, align 4, !tbaa !5
  %1668 = call ptr @s2n_strerror_debug(i32 noundef %1667, ptr noundef nonnull @.str.4) #10
  %1669 = load i32, ptr %192, align 4, !tbaa !5
  %1670 = call ptr @strerror(i32 noundef %1669) #10
  %1671 = load i32, ptr %192, align 4, !tbaa !5
  %1672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1663, ptr noundef nonnull %.str.5.sink805, i32 noundef %1664, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 249, ptr noundef %1666, ptr noundef %1668, ptr noundef %1670, i32 noundef %1671) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1673:                                             ; preds = %1619
  %1674 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %1675 = icmp eq i32 %1674, -1
  br i1 %1675, label %1676, label %1698

1676:                                             ; preds = %1673
  %1677 = load i32, ptr %192, align 4, !tbaa !5
  %1678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1679 = call i32 @s2n_print_stacktrace(ptr noundef %1678) #10
  %1680 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1681 = trunc nuw i8 %1680 to i1
  br i1 %1681, label %1682, label %1686

1682:                                             ; preds = %1676
  %1683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1684 = call i32 @fileno(ptr noundef %1683) #10
  %1685 = call i32 @isatty(i32 noundef %1684) #10
  %.not229 = icmp eq i32 %1685, 0
  br i1 %.not229, label %1686, label %1687

1686:                                             ; preds = %1682, %1676
  br label %1687

1687:                                             ; preds = %1682, %1686
  %.str.5.sink814 = phi ptr [ @.str.5, %1686 ], [ @.str.2, %1682 ]
  store i32 %1677, ptr %192, align 4, !tbaa !5
  %1688 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1689 = load i32, ptr @test_count, align 4, !tbaa !5
  %1690 = load i32, ptr %138, align 4, !tbaa !5
  %1691 = call ptr @s2n_strerror(i32 noundef %1690, ptr noundef nonnull @.str.4) #10
  %1692 = load i32, ptr %138, align 4, !tbaa !5
  %1693 = call ptr @s2n_strerror_debug(i32 noundef %1692, ptr noundef nonnull @.str.4) #10
  %1694 = load i32, ptr %192, align 4, !tbaa !5
  %1695 = call ptr @strerror(i32 noundef %1694) #10
  %1696 = load i32, ptr %192, align 4, !tbaa !5
  %1697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1688, ptr noundef nonnull %.str.5.sink814, i32 noundef %1689, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 249, ptr noundef %1691, ptr noundef %1693, ptr noundef %1695, i32 noundef %1696) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1698:                                             ; preds = %1673
  %1699 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1700 = trunc nuw i8 %1699 to i1
  br i1 %1700, label %1701, label %1712

1701:                                             ; preds = %1698
  %1702 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1703 = call i32 @fileno(ptr noundef %1702) #10
  %1704 = call i32 @isatty(i32 noundef %1703) #10
  %.not226 = icmp eq i32 %1704, 0
  br i1 %.not226, label %1712, label %1705

1705:                                             ; preds = %1701
  %1706 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not228 = icmp eq i32 %1706, 0
  %1707 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not228, label %1710, label %1708

1708:                                             ; preds = %1705
  %1709 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1707, ptr noundef nonnull @.str.46, i32 noundef %1706) #10
  br label %1719

1710:                                             ; preds = %1705
  %1711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1707, ptr noundef nonnull @.str.47) #10
  br label %1719

1712:                                             ; preds = %1701, %1698
  %1713 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not227 = icmp eq i32 %1713, 0
  %1714 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not227, label %1717, label %1715

1715:                                             ; preds = %1712
  %1716 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1714, ptr noundef nonnull @.str.48, i32 noundef %1713) #10
  br label %1719

1717:                                             ; preds = %1712
  %1718 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1714, ptr noundef nonnull @.str.49) #10
  br label %1719

1719:                                             ; preds = %1715, %1717, %1708, %1710
  ret i32 0
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

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

declare void @s2n_debug_info_reset() local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @s2n_fips_validate_version(i8 noundef zeroext, ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress 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 #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 8}
!16 = !{!"s2n_cipher_preferences", !17, i64 0, !10, i64 8, !12, i64 16}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !17, i64 0}
!19 = distinct !{!19, !20, !21, !22}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!"llvm.loop.isvectorized", i32 1}
!22 = !{!"llvm.loop.unroll.runtime.disable"}
!23 = distinct !{!23, !20, !22, !21}
!24 = !{!25, !10, i64 32}
!25 = !{!"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}
!26 = !{!25, !10, i64 8}
!27 = !{!25, !6, i64 96}
!28 = distinct !{!28, !20}
!29 = !{!30, !10, i64 24}
!30 = !{!"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}
!31 = !{!32, !7, i64 0}
!32 = !{!"s2n_signature_preferences", !7, i64 0, !10, i64 8}
!33 = !{!32, !10, i64 8}
!34 = distinct !{!34, !20, !21, !22}
!35 = distinct !{!35, !20, !22, !21}
!36 = distinct !{!36, !20}
!37 = !{!38, !7, i64 0}
!38 = !{!"s2n_ecc_preferences", !7, i64 0, !10, i64 8}
!39 = !{!38, !10, i64 8}
!40 = distinct !{!40, !20, !21, !22}
!41 = distinct !{!41, !20, !22, !21}
!42 = distinct !{!42, !20}
!43 = !{!7, !7, i64 0}
!44 = distinct !{!44, !20}


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