; LLVM IR from aws/s2n-tls :: tests/unit (s2n_security_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_security_rule = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_ecc_preferences = type { i8, ptr }
%struct.s2n_kem_preferences = type { i8, ptr, i8, ptr, i8 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_security_rule_result = type { i8, i8, %struct.s2n_stuffer }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { i32 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@VALID_CIPHER_SUITE = external dso_local global ptr, align 8
@EXAMPLE_INVALID_CIPHER_SUITE = external dso_local global ptr, align 8
@EXAMPLE_INVALID_CIPHER_SUITE_2 = external dso_local global ptr, align 8
@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 [82 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
@__const.main.test_rule = external hidden unnamed_addr constant %struct.s2n_security_rule, align 8
@__const.main.valid_cipher_prefs = external hidden unnamed_addr constant %struct.s2n_cipher_preferences, align 8
@__const.main.valid_sig_prefs = external hidden unnamed_addr constant %struct.s2n_signature_preferences, align 8
@__const.main.invalid_sig_prefs = external hidden unnamed_addr constant %struct.s2n_signature_preferences, align 8
@__const.main.valid_ecc_prefs = external hidden unnamed_addr constant %struct.s2n_ecc_preferences, align 8
@__const.main.invalid_ecc_prefs = external hidden unnamed_addr constant %struct.s2n_ecc_preferences, align 8
@__const.main.valid_kem_preferences = external hidden unnamed_addr constant %struct.s2n_kem_preferences, align 8
@__const.main.invalid_kem_preferences = external hidden unnamed_addr constant %struct.s2n_kem_preferences, align 8
@.str.9 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [34 x i8], align 1
@__const.main.expected_output = external hidden unnamed_addr constant [50 x i8], align 16
@.str.15 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [81 x i8], align 1
@__const.main.expected_output.19 = external hidden unnamed_addr constant [145 x i8], align 16
@__const.main.expected_output.20 = external hidden unnamed_addr constant [194 x i8], align 16
@__const.main.expected_prefix = external hidden unnamed_addr constant [29 x i8], align 16
@security_policy_test_all = external constant %struct.s2n_security_policy, align 8
@.str.21 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [90 x i8], align 1
@s2n_rsa_with_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@__const.main.forward_secret_suites = external hidden unnamed_addr constant [2 x ptr], align 16
@.str.24 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = 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 %struct.s2n_security_rule, align 8
  %10 = alloca %struct.s2n_cipher_preferences, align 8
  %11 = alloca [3 x ptr], align 16
  %12 = alloca %struct.s2n_cipher_preferences, align 8
  %13 = alloca %struct.s2n_signature_preferences, align 8
  %14 = alloca %struct.s2n_signature_preferences, align 8
  %15 = alloca %struct.s2n_ecc_preferences, align 8
  %16 = alloca %struct.s2n_ecc_preferences, align 8
  %17 = alloca %struct.s2n_kem_preferences, align 8
  %18 = alloca %struct.s2n_kem_preferences, align 8
  %19 = alloca %struct.s2n_security_policy, align 8
  %20 = alloca %struct.s2n_security_policy, align 8
  %21 = alloca %struct.s2n_security_rule_result, align 8
  %22 = alloca %struct.s2n_result, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %struct.s2n_security_rule_result, align 8
  %26 = alloca %struct.s2n_result, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.s2n_security_policy, align 8
  %30 = alloca %struct.s2n_security_rule_result, align 8
  %31 = alloca %struct.s2n_result, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %struct.s2n_security_policy, align 8
  %35 = alloca %struct.s2n_security_rule_result, align 8
  %36 = alloca %struct.s2n_result, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %struct.s2n_security_policy, align 8
  %40 = alloca %struct.s2n_security_rule_result, align 8
  %41 = alloca %struct.s2n_result, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %struct.s2n_security_policy, align 8
  %45 = alloca %struct.s2n_security_rule_result, align 8
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca %struct.s2n_security_policy, align 8
  %50 = alloca %struct.s2n_security_rule_result, align 8
  %51 = alloca %struct.s2n_result, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca %struct.s2n_security_policy, align 8
  %55 = alloca %struct.s2n_security_rule_result, align 8
  %56 = alloca %struct.s2n_result, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca %struct.s2n_security_policy, align 8
  %60 = alloca %struct.s2n_security_rule_result, align 8
  %61 = alloca %struct.s2n_result, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca %struct.s2n_security_policy, align 8
  %65 = alloca %struct.s2n_security_rule_result, align 8
  %66 = alloca %struct.s2n_result, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i64, align 8
  %70 = alloca i32, align 4
  %71 = alloca %struct.s2n_result, align 4
  %72 = alloca %struct.s2n_security_policy, align 8
  %73 = alloca [50 x i8], align 16
  %74 = alloca %struct.s2n_security_rule_result, align 8
  %75 = alloca %struct.s2n_result, align 4
  %76 = alloca i32, align 4
  %77 = alloca %struct.s2n_result, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i64, align 8
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca %struct.s2n_result, align 4
  %86 = alloca %struct.s2n_security_policy, align 8
  %87 = alloca [145 x i8], align 16
  %88 = alloca %struct.s2n_security_rule_result, align 8
  %89 = alloca %struct.s2n_result, align 4
  %90 = alloca i32, align 4
  %91 = alloca %struct.s2n_result, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i64, align 8
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca %struct.s2n_result, align 4
  %100 = alloca %struct.s2n_security_policy, align 8
  %101 = alloca [194 x i8], align 16
  %102 = alloca %struct.s2n_security_rule_result, align 8
  %103 = alloca %struct.s2n_result, align 4
  %104 = alloca i32, align 4
  %105 = alloca %struct.s2n_result, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i64, align 8
  %109 = alloca i32, align 4
  %110 = alloca ptr, align 8
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca %struct.s2n_result, align 4
  %114 = alloca [29 x i8], align 16
  %115 = alloca i64, align 8
  %116 = alloca %struct.s2n_security_rule_result, align 8
  %117 = alloca %struct.s2n_result, align 4
  %118 = alloca i32, align 4
  %119 = alloca %struct.s2n_result, align 4
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i64, align 8
  %123 = alloca i32, align 4
  %124 = alloca ptr, align 8
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca %struct.s2n_result, align 4
  %128 = alloca ptr, align 8
  %129 = alloca %struct.s2n_cipher_preferences, align 8
  %130 = alloca [2 x ptr], align 16
  %131 = alloca %struct.s2n_cipher_preferences, align 8
  %132 = alloca %struct.s2n_security_policy, align 8
  %133 = alloca %struct.s2n_security_rule_result, align 8
  %134 = alloca %struct.s2n_result, align 4
  %135 = alloca i32, align 4
  %136 = alloca i32, align 4
  %137 = alloca %struct.s2n_security_rule_result, align 8
  %138 = alloca %struct.s2n_result, align 4
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca %struct.s2n_security_rule_result, align 8
  %142 = alloca %struct.s2n_result, align 4
  %143 = alloca i32, align 4
  %144 = alloca i32, align 4
  %145 = alloca %struct.s2n_security_rule_result, align 8
  %146 = alloca %struct.s2n_result, align 4
  %147 = alloca i32, align 4
  %148 = alloca i32, align 4
  %149 = alloca i32, align 4
  %150 = alloca i32, align 4
  %151 = 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 %152

152:                                              ; preds = %2
  br label %153

153:                                              ; preds = %152
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %154 = load ptr, ptr @stdout, align 8, !tbaa !9
  %155 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %154, ptr noundef @.str, ptr noundef @.str.1) #11
  %156 = load ptr, ptr @stdout, align 8, !tbaa !9
  %157 = call i32 @fflush(ptr noundef %156)
  br label %158

158:                                              ; preds = %153
  %159 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %160 = icmp eq i32 %159, -1
  br i1 %160, label %161, label %212

161:                                              ; preds = %158
  br label %162

162:                                              ; preds = %161
  br label %163

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

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

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

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

209:                                              ; preds = %192, %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %210

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

211:                                              ; No predecessors!
  br label %212

212:                                              ; preds = %211, %158
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  %215 = load i32, ptr @test_count, align 4, !tbaa !5
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr @test_count, align 4, !tbaa !5
  %217 = call i32 @s2n_enable_atexit()
  %218 = icmp eq i32 %217, -1
  br i1 %218, label %219, label %270

219:                                              ; preds = %214
  br label %220

220:                                              ; preds = %219
  br label %221

221:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  %222 = call ptr @__errno_location() #12
  %223 = load i32, ptr %222, align 4, !tbaa !5
  store i32 %223, ptr %7, align 4, !tbaa !5
  %224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %225 = call i32 @s2n_print_stacktrace(ptr noundef %224)
  %226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %227 = trunc i8 %226 to i1
  br i1 %227, label %228, label %250

228:                                              ; preds = %221
  %229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %230 = call i32 @fileno(ptr noundef %229) #11
  %231 = call i32 @isatty(i32 noundef %230) #11
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %233, label %250

233:                                              ; preds = %228
  %234 = load i32, ptr %7, align 4, !tbaa !5
  %235 = call ptr @__errno_location() #12
  store i32 %234, ptr %235, align 4, !tbaa !5
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = load i32, ptr @test_count, align 4, !tbaa !5
  %238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call ptr @s2n_strerror(i32 noundef %239, ptr noundef @.str.4)
  %241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %242 = load i32, ptr %241, align 4, !tbaa !5
  %243 = call ptr @s2n_strerror_debug(i32 noundef %242, ptr noundef @.str.4)
  %244 = call ptr @__errno_location() #12
  %245 = load i32, ptr %244, align 4, !tbaa !5
  %246 = call ptr @strerror(i32 noundef %245) #11
  %247 = call ptr @__errno_location() #12
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef @.str.2, i32 noundef %237, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 94, ptr noundef %240, ptr noundef %243, ptr noundef %246, i32 noundef %248) #11
  br label %267

250:                                              ; preds = %228, %221
  %251 = load i32, ptr %7, align 4, !tbaa !5
  %252 = call ptr @__errno_location() #12
  store i32 %251, ptr %252, align 4, !tbaa !5
  %253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %254 = load i32, ptr @test_count, align 4, !tbaa !5
  %255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = call ptr @s2n_strerror(i32 noundef %256, ptr noundef @.str.4)
  %258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = call ptr @s2n_strerror_debug(i32 noundef %259, ptr noundef @.str.4)
  %261 = call ptr @__errno_location() #12
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = call ptr @strerror(i32 noundef %262) #11
  %264 = call ptr @__errno_location() #12
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef @.str.5, i32 noundef %254, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 94, ptr noundef %257, ptr noundef %260, ptr noundef %263, i32 noundef %265) #11
  br label %267

267:                                              ; preds = %250, %233
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %268

268:                                              ; preds = %267
  call void @exit(i32 noundef 1) #13
  unreachable

269:                                              ; No predecessors!
  br label %270

270:                                              ; preds = %269, %214
  br label %271

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  %274 = call i32 @s2n_init()
  %275 = icmp eq i32 %274, -1
  br i1 %275, label %276, label %327

276:                                              ; preds = %273
  br label %277

277:                                              ; preds = %276
  br label %278

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

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

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

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

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

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

326:                                              ; No predecessors!
  br label %327

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

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 56, ptr %9) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 @__const.main.test_rule, i64 56, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %10, ptr align 8 @__const.main.valid_cipher_prefs, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #11
  %330 = load ptr, ptr @EXAMPLE_INVALID_CIPHER_SUITE, align 8, !tbaa !9
  store ptr %330, ptr %11, align 8, !tbaa !9
  %331 = getelementptr inbounds ptr, ptr %11, i64 1
  %332 = load ptr, ptr @VALID_CIPHER_SUITE, align 8, !tbaa !9
  store ptr %332, ptr %331, align 8, !tbaa !9
  %333 = getelementptr inbounds ptr, ptr %11, i64 2
  %334 = load ptr, ptr @EXAMPLE_INVALID_CIPHER_SUITE_2, align 8, !tbaa !9
  store ptr %334, ptr %333, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #11
  %335 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %12, i32 0, i32 0
  store i16 3, ptr %335, align 8, !tbaa !15
  %336 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %12, i32 0, i32 1
  %337 = getelementptr inbounds [3 x ptr], ptr %11, i64 0, i64 0
  store ptr %337, ptr %336, align 8, !tbaa !18
  %338 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %12, i32 0, i32 2
  store i8 0, ptr %338, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 @__const.main.valid_sig_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %14, ptr align 8 @__const.main.invalid_sig_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 @__const.main.valid_ecc_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %16, ptr align 8 @__const.main.invalid_ecc_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %17) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 @__const.main.valid_kem_preferences, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %18) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 @__const.main.invalid_kem_preferences, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #11
  %339 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 0
  store i8 33, ptr %339, align 8, !tbaa !20
  %340 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 1
  store ptr %10, ptr %340, align 8, !tbaa !22
  %341 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 2
  store ptr %17, ptr %341, align 8, !tbaa !23
  %342 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 3
  store ptr %13, ptr %342, align 8, !tbaa !24
  %343 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 4
  store ptr %13, ptr %343, align 8, !tbaa !25
  %344 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 5
  store ptr %15, ptr %344, align 8, !tbaa !26
  %345 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 6
  store ptr null, ptr %345, align 8, !tbaa !27
  %346 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 7
  store i8 0, ptr %346, align 8, !tbaa !28
  %347 = getelementptr inbounds %struct.s2n_security_policy, ptr %19, i32 0, i32 8
  call void @llvm.memset.p0.i64(ptr align 1 %347, i8 0, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #11
  %348 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 0
  store i8 32, ptr %348, align 8, !tbaa !20
  %349 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 1
  store ptr %12, ptr %349, align 8, !tbaa !22
  %350 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 2
  store ptr %18, ptr %350, align 8, !tbaa !23
  %351 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 3
  store ptr %14, ptr %351, align 8, !tbaa !24
  %352 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 4
  store ptr %14, ptr %352, align 8, !tbaa !25
  %353 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 5
  store ptr %16, ptr %353, align 8, !tbaa !26
  %354 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 6
  store ptr null, ptr %354, align 8, !tbaa !27
  %355 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 7
  store i8 0, ptr %355, align 8, !tbaa !28
  %356 = getelementptr inbounds %struct.s2n_security_policy, ptr %20, i32 0, i32 8
  call void @llvm.memset.p0.i64(ptr align 1 %356, i8 0, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %21) #11
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 48, i1 false)
  br label %357

357:                                              ; preds = %329
  %358 = load i32, ptr @test_count, align 4, !tbaa !5
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr @test_count, align 4, !tbaa !5
  %360 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %19, ptr noundef %21)
  %361 = getelementptr inbounds %struct.s2n_result, ptr %22, i32 0, i32 0
  store i32 %360, ptr %361, align 4
  %362 = getelementptr inbounds %struct.s2n_result, ptr %22, i32 0, i32 0
  %363 = load i32, ptr %362, align 4
  %364 = call zeroext i1 @s2n_result_is_ok(i32 %363)
  br i1 %364, label %418, label %365

365:                                              ; preds = %357
  br label %366

366:                                              ; preds = %365
  br label %367

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  %368 = call ptr @__errno_location() #12
  %369 = load i32, ptr %368, align 4, !tbaa !5
  store i32 %369, ptr %23, align 4, !tbaa !5
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = call i32 @s2n_print_stacktrace(ptr noundef %370)
  %372 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %373 = trunc i8 %372 to i1
  br i1 %373, label %374, label %396

374:                                              ; preds = %367
  %375 = load ptr, ptr @stderr, align 8, !tbaa !9
  %376 = call i32 @fileno(ptr noundef %375) #11
  %377 = call i32 @isatty(i32 noundef %376) #11
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %396

379:                                              ; preds = %374
  %380 = load i32, ptr %23, align 4, !tbaa !5
  %381 = call ptr @__errno_location() #12
  store i32 %380, ptr %381, align 4, !tbaa !5
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = load i32, ptr @test_count, align 4, !tbaa !5
  %384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = call ptr @s2n_strerror(i32 noundef %385, ptr noundef @.str.4)
  %387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = call ptr @s2n_strerror_debug(i32 noundef %388, ptr noundef @.str.4)
  %390 = call ptr @__errno_location() #12
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = call ptr @strerror(i32 noundef %391) #11
  %393 = call ptr @__errno_location() #12
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef @.str.2, i32 noundef %383, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 176, ptr noundef %386, ptr noundef %389, ptr noundef %392, i32 noundef %394) #11
  br label %413

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

413:                                              ; preds = %396, %379
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %414

414:                                              ; preds = %413
  br label %415

415:                                              ; preds = %414
  call void @exit(i32 noundef 1) #13
  unreachable

416:                                              ; No predecessors!
  br label %417

417:                                              ; preds = %416
  br label %418

418:                                              ; preds = %417, %357
  br label %419

419:                                              ; preds = %418
  br label %420

420:                                              ; preds = %419
  br label %421

421:                                              ; preds = %420
  %422 = load i32, ptr @test_count, align 4, !tbaa !5
  %423 = add nsw i32 %422, 1
  store i32 %423, ptr @test_count, align 4, !tbaa !5
  %424 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %21, i32 0, i32 0
  %425 = load i8, ptr %424, align 8, !tbaa !29, !range !13, !noundef !14
  %426 = trunc i8 %425 to i1
  br i1 %426, label %427, label %480

427:                                              ; preds = %421
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  %430 = call ptr @__errno_location() #12
  %431 = load i32, ptr %430, align 4, !tbaa !5
  store i32 %431, ptr %24, align 4, !tbaa !5
  %432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %433 = call i32 @s2n_print_stacktrace(ptr noundef %432)
  %434 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %435 = trunc i8 %434 to i1
  br i1 %435, label %436, label %458

436:                                              ; preds = %429
  %437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %438 = call i32 @fileno(ptr noundef %437) #11
  %439 = call i32 @isatty(i32 noundef %438) #11
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %458

441:                                              ; preds = %436
  %442 = load i32, ptr %24, align 4, !tbaa !5
  %443 = call ptr @__errno_location() #12
  store i32 %442, ptr %443, align 4, !tbaa !5
  %444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %445 = load i32, ptr @test_count, align 4, !tbaa !5
  %446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %447 = load i32, ptr %446, align 4, !tbaa !5
  %448 = call ptr @s2n_strerror(i32 noundef %447, ptr noundef @.str.4)
  %449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %450 = load i32, ptr %449, align 4, !tbaa !5
  %451 = call ptr @s2n_strerror_debug(i32 noundef %450, ptr noundef @.str.4)
  %452 = call ptr @__errno_location() #12
  %453 = load i32, ptr %452, align 4, !tbaa !5
  %454 = call ptr @strerror(i32 noundef %453) #11
  %455 = call ptr @__errno_location() #12
  %456 = load i32, ptr %455, align 4, !tbaa !5
  %457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %444, ptr noundef @.str.2, i32 noundef %445, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 177, ptr noundef %448, ptr noundef %451, ptr noundef %454, i32 noundef %456) #11
  br label %475

458:                                              ; preds = %436, %429
  %459 = load i32, ptr %24, align 4, !tbaa !5
  %460 = call ptr @__errno_location() #12
  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() #12
  %470 = load i32, ptr %469, align 4, !tbaa !5
  %471 = call ptr @strerror(i32 noundef %470) #11
  %472 = call ptr @__errno_location() #12
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %461, ptr noundef @.str.5, i32 noundef %462, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 177, ptr noundef %465, ptr noundef %468, ptr noundef %471, i32 noundef %473) #11
  br label %475

475:                                              ; preds = %458, %441
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476
  call void @exit(i32 noundef 1) #13
  unreachable

478:                                              ; No predecessors!
  br label %479

479:                                              ; preds = %478
  br label %480

480:                                              ; preds = %479, %421
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  call void @llvm.lifetime.end.p0(i64 48, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr %25) #11
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 48, i1 false)
  br label %483

483:                                              ; preds = %482
  %484 = load i32, ptr @test_count, align 4, !tbaa !5
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr @test_count, align 4, !tbaa !5
  %486 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %20, ptr noundef %25)
  %487 = getelementptr inbounds %struct.s2n_result, ptr %26, i32 0, i32 0
  store i32 %486, ptr %487, align 4
  %488 = getelementptr inbounds %struct.s2n_result, ptr %26, i32 0, i32 0
  %489 = load i32, ptr %488, align 4
  %490 = call zeroext i1 @s2n_result_is_ok(i32 %489)
  br i1 %490, label %544, label %491

491:                                              ; preds = %483
  br label %492

492:                                              ; preds = %491
  br label %493

493:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  %494 = call ptr @__errno_location() #12
  %495 = load i32, ptr %494, align 4, !tbaa !5
  store i32 %495, ptr %27, align 4, !tbaa !5
  %496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %497 = call i32 @s2n_print_stacktrace(ptr noundef %496)
  %498 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %499 = trunc i8 %498 to i1
  br i1 %499, label %500, label %522

500:                                              ; preds = %493
  %501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %502 = call i32 @fileno(ptr noundef %501) #11
  %503 = call i32 @isatty(i32 noundef %502) #11
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %505, label %522

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

522:                                              ; preds = %500, %493
  %523 = load i32, ptr %27, align 4, !tbaa !5
  %524 = call ptr @__errno_location() #12
  store i32 %523, ptr %524, align 4, !tbaa !5
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = load i32, ptr @test_count, align 4, !tbaa !5
  %527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %528 = load i32, ptr %527, align 4, !tbaa !5
  %529 = call ptr @s2n_strerror(i32 noundef %528, ptr noundef @.str.4)
  %530 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %531 = load i32, ptr %530, align 4, !tbaa !5
  %532 = call ptr @s2n_strerror_debug(i32 noundef %531, ptr noundef @.str.4)
  %533 = call ptr @__errno_location() #12
  %534 = load i32, ptr %533, align 4, !tbaa !5
  %535 = call ptr @strerror(i32 noundef %534) #11
  %536 = call ptr @__errno_location() #12
  %537 = load i32, ptr %536, align 4, !tbaa !5
  %538 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %525, ptr noundef @.str.5, i32 noundef %526, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 186, ptr noundef %529, ptr noundef %532, ptr noundef %535, i32 noundef %537) #11
  br label %539

539:                                              ; preds = %522, %505
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540
  call void @exit(i32 noundef 1) #13
  unreachable

542:                                              ; No predecessors!
  br label %543

543:                                              ; preds = %542
  br label %544

544:                                              ; preds = %543, %483
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  br label %547

547:                                              ; preds = %546
  %548 = load i32, ptr @test_count, align 4, !tbaa !5
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr @test_count, align 4, !tbaa !5
  %550 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %25, i32 0, i32 0
  %551 = load i8, ptr %550, align 8, !tbaa !29, !range !13, !noundef !14
  %552 = trunc i8 %551 to i1
  br i1 %552, label %606, label %553

553:                                              ; preds = %547
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  %556 = call ptr @__errno_location() #12
  %557 = load i32, ptr %556, align 4, !tbaa !5
  store i32 %557, ptr %28, align 4, !tbaa !5
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = call i32 @s2n_print_stacktrace(ptr noundef %558)
  %560 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %561 = trunc i8 %560 to i1
  br i1 %561, label %562, label %584

562:                                              ; preds = %555
  %563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %564 = call i32 @fileno(ptr noundef %563) #11
  %565 = call i32 @isatty(i32 noundef %564) #11
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %567, label %584

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

584:                                              ; preds = %562, %555
  %585 = load i32, ptr %28, align 4, !tbaa !5
  %586 = call ptr @__errno_location() #12
  store i32 %585, ptr %586, align 4, !tbaa !5
  %587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %588 = load i32, ptr @test_count, align 4, !tbaa !5
  %589 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %590 = load i32, ptr %589, align 4, !tbaa !5
  %591 = call ptr @s2n_strerror(i32 noundef %590, ptr noundef @.str.4)
  %592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror_debug(i32 noundef %593, ptr noundef @.str.4)
  %595 = call ptr @__errno_location() #12
  %596 = load i32, ptr %595, align 4, !tbaa !5
  %597 = call ptr @strerror(i32 noundef %596) #11
  %598 = call ptr @__errno_location() #12
  %599 = load i32, ptr %598, align 4, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %587, ptr noundef @.str.5, i32 noundef %588, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 187, ptr noundef %591, ptr noundef %594, ptr noundef %597, i32 noundef %599) #11
  br label %601

601:                                              ; preds = %584, %567
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  call void @exit(i32 noundef 1) #13
  unreachable

604:                                              ; No predecessors!
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605, %547
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %609 = getelementptr inbounds %struct.s2n_security_policy, ptr %29, i32 0, i32 1
  store ptr %12, ptr %609, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr %30) #11
  call void @llvm.memset.p0.i64(ptr align 8 %30, i8 0, i64 48, i1 false)
  br label %610

610:                                              ; preds = %608
  %611 = load i32, ptr @test_count, align 4, !tbaa !5
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr @test_count, align 4, !tbaa !5
  %613 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %29, ptr noundef %30)
  %614 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %613, ptr %614, align 4
  %615 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  %616 = load i32, ptr %615, align 4
  %617 = call zeroext i1 @s2n_result_is_ok(i32 %616)
  br i1 %617, label %671, label %618

618:                                              ; preds = %610
  br label %619

619:                                              ; preds = %618
  br label %620

620:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  %621 = call ptr @__errno_location() #12
  %622 = load i32, ptr %621, align 4, !tbaa !5
  store i32 %622, ptr %32, align 4, !tbaa !5
  %623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %624 = call i32 @s2n_print_stacktrace(ptr noundef %623)
  %625 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %626 = trunc i8 %625 to i1
  br i1 %626, label %627, label %649

627:                                              ; preds = %620
  %628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %629 = call i32 @fileno(ptr noundef %628) #11
  %630 = call i32 @isatty(i32 noundef %629) #11
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %649

632:                                              ; preds = %627
  %633 = load i32, ptr %32, align 4, !tbaa !5
  %634 = call ptr @__errno_location() #12
  store i32 %633, ptr %634, align 4, !tbaa !5
  %635 = load ptr, ptr @stderr, align 8, !tbaa !9
  %636 = load i32, ptr @test_count, align 4, !tbaa !5
  %637 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %638 = load i32, ptr %637, align 4, !tbaa !5
  %639 = call ptr @s2n_strerror(i32 noundef %638, ptr noundef @.str.4)
  %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 = call ptr @__errno_location() #12
  %644 = load i32, ptr %643, align 4, !tbaa !5
  %645 = call ptr @strerror(i32 noundef %644) #11
  %646 = call ptr @__errno_location() #12
  %647 = load i32, ptr %646, align 4, !tbaa !5
  %648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %635, ptr noundef @.str.2, i32 noundef %636, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 197, ptr noundef %639, ptr noundef %642, ptr noundef %645, i32 noundef %647) #11
  br label %666

649:                                              ; preds = %627, %620
  %650 = load i32, ptr %32, align 4, !tbaa !5
  %651 = call ptr @__errno_location() #12
  store i32 %650, ptr %651, align 4, !tbaa !5
  %652 = load ptr, ptr @stderr, align 8, !tbaa !9
  %653 = load i32, ptr @test_count, align 4, !tbaa !5
  %654 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %655 = load i32, ptr %654, align 4, !tbaa !5
  %656 = call ptr @s2n_strerror(i32 noundef %655, ptr noundef @.str.4)
  %657 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %658 = load i32, ptr %657, align 4, !tbaa !5
  %659 = call ptr @s2n_strerror_debug(i32 noundef %658, ptr noundef @.str.4)
  %660 = call ptr @__errno_location() #12
  %661 = load i32, ptr %660, align 4, !tbaa !5
  %662 = call ptr @strerror(i32 noundef %661) #11
  %663 = call ptr @__errno_location() #12
  %664 = load i32, ptr %663, align 4, !tbaa !5
  %665 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %652, ptr noundef @.str.5, i32 noundef %653, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 197, ptr noundef %656, ptr noundef %659, ptr noundef %662, i32 noundef %664) #11
  br label %666

666:                                              ; preds = %649, %632
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %667

667:                                              ; preds = %666
  br label %668

668:                                              ; preds = %667
  call void @exit(i32 noundef 1) #13
  unreachable

669:                                              ; No predecessors!
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670, %610
  br label %672

672:                                              ; preds = %671
  br label %673

673:                                              ; preds = %672
  br label %674

674:                                              ; preds = %673
  %675 = load i32, ptr @test_count, align 4, !tbaa !5
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr @test_count, align 4, !tbaa !5
  %677 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %30, i32 0, i32 0
  %678 = load i8, ptr %677, align 8, !tbaa !29, !range !13, !noundef !14
  %679 = trunc i8 %678 to i1
  br i1 %679, label %733, label %680

680:                                              ; preds = %674
  br label %681

681:                                              ; preds = %680
  br label %682

682:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  %683 = call ptr @__errno_location() #12
  %684 = load i32, ptr %683, align 4, !tbaa !5
  store i32 %684, ptr %33, align 4, !tbaa !5
  %685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %686 = call i32 @s2n_print_stacktrace(ptr noundef %685)
  %687 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %688 = trunc i8 %687 to i1
  br i1 %688, label %689, label %711

689:                                              ; preds = %682
  %690 = load ptr, ptr @stderr, align 8, !tbaa !9
  %691 = call i32 @fileno(ptr noundef %690) #11
  %692 = call i32 @isatty(i32 noundef %691) #11
  %693 = icmp ne i32 %692, 0
  br i1 %693, label %694, label %711

694:                                              ; preds = %689
  %695 = load i32, ptr %33, align 4, !tbaa !5
  %696 = call ptr @__errno_location() #12
  store i32 %695, ptr %696, align 4, !tbaa !5
  %697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %698 = load i32, ptr @test_count, align 4, !tbaa !5
  %699 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %700 = load i32, ptr %699, align 4, !tbaa !5
  %701 = call ptr @s2n_strerror(i32 noundef %700, ptr noundef @.str.4)
  %702 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %703 = load i32, ptr %702, align 4, !tbaa !5
  %704 = call ptr @s2n_strerror_debug(i32 noundef %703, ptr noundef @.str.4)
  %705 = call ptr @__errno_location() #12
  %706 = load i32, ptr %705, align 4, !tbaa !5
  %707 = call ptr @strerror(i32 noundef %706) #11
  %708 = call ptr @__errno_location() #12
  %709 = load i32, ptr %708, align 4, !tbaa !5
  %710 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %697, ptr noundef @.str.2, i32 noundef %698, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 198, ptr noundef %701, ptr noundef %704, ptr noundef %707, i32 noundef %709) #11
  br label %728

711:                                              ; preds = %689, %682
  %712 = load i32, ptr %33, align 4, !tbaa !5
  %713 = call ptr @__errno_location() #12
  store i32 %712, ptr %713, align 4, !tbaa !5
  %714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %715 = load i32, ptr @test_count, align 4, !tbaa !5
  %716 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %717 = load i32, ptr %716, align 4, !tbaa !5
  %718 = call ptr @s2n_strerror(i32 noundef %717, ptr noundef @.str.4)
  %719 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %720 = load i32, ptr %719, align 4, !tbaa !5
  %721 = call ptr @s2n_strerror_debug(i32 noundef %720, ptr noundef @.str.4)
  %722 = call ptr @__errno_location() #12
  %723 = load i32, ptr %722, align 4, !tbaa !5
  %724 = call ptr @strerror(i32 noundef %723) #11
  %725 = call ptr @__errno_location() #12
  %726 = load i32, ptr %725, align 4, !tbaa !5
  %727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %714, ptr noundef @.str.5, i32 noundef %715, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 198, ptr noundef %718, ptr noundef %721, ptr noundef %724, i32 noundef %726) #11
  br label %728

728:                                              ; preds = %711, %694
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %729

729:                                              ; preds = %728
  br label %730

730:                                              ; preds = %729
  call void @exit(i32 noundef 1) #13
  unreachable

731:                                              ; No predecessors!
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732, %674
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %34, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %736 = getelementptr inbounds %struct.s2n_security_policy, ptr %34, i32 0, i32 3
  store ptr %14, ptr %736, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 48, ptr %35) #11
  call void @llvm.memset.p0.i64(ptr align 8 %35, i8 0, i64 48, i1 false)
  br label %737

737:                                              ; preds = %735
  %738 = load i32, ptr @test_count, align 4, !tbaa !5
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr @test_count, align 4, !tbaa !5
  %740 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %34, ptr noundef %35)
  %741 = getelementptr inbounds %struct.s2n_result, ptr %36, i32 0, i32 0
  store i32 %740, ptr %741, align 4
  %742 = getelementptr inbounds %struct.s2n_result, ptr %36, i32 0, i32 0
  %743 = load i32, ptr %742, align 4
  %744 = call zeroext i1 @s2n_result_is_ok(i32 %743)
  br i1 %744, label %798, label %745

745:                                              ; preds = %737
  br label %746

746:                                              ; preds = %745
  br label %747

747:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  %748 = call ptr @__errno_location() #12
  %749 = load i32, ptr %748, align 4, !tbaa !5
  store i32 %749, ptr %37, align 4, !tbaa !5
  %750 = load ptr, ptr @stderr, align 8, !tbaa !9
  %751 = call i32 @s2n_print_stacktrace(ptr noundef %750)
  %752 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %753 = trunc i8 %752 to i1
  br i1 %753, label %754, label %776

754:                                              ; preds = %747
  %755 = load ptr, ptr @stderr, align 8, !tbaa !9
  %756 = call i32 @fileno(ptr noundef %755) #11
  %757 = call i32 @isatty(i32 noundef %756) #11
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %776

759:                                              ; preds = %754
  %760 = load i32, ptr %37, align 4, !tbaa !5
  %761 = call ptr @__errno_location() #12
  store i32 %760, ptr %761, align 4, !tbaa !5
  %762 = load ptr, ptr @stderr, align 8, !tbaa !9
  %763 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %765, ptr noundef @.str.4)
  %767 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %768 = load i32, ptr %767, align 4, !tbaa !5
  %769 = call ptr @s2n_strerror_debug(i32 noundef %768, ptr noundef @.str.4)
  %770 = call ptr @__errno_location() #12
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = call ptr @strerror(i32 noundef %771) #11
  %773 = call ptr @__errno_location() #12
  %774 = load i32, ptr %773, align 4, !tbaa !5
  %775 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %762, ptr noundef @.str.2, i32 noundef %763, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 208, ptr noundef %766, ptr noundef %769, ptr noundef %772, i32 noundef %774) #11
  br label %793

776:                                              ; preds = %754, %747
  %777 = load i32, ptr %37, align 4, !tbaa !5
  %778 = call ptr @__errno_location() #12
  store i32 %777, ptr %778, align 4, !tbaa !5
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = load i32, ptr @test_count, align 4, !tbaa !5
  %781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = call ptr @s2n_strerror(i32 noundef %782, ptr noundef @.str.4)
  %784 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %785 = load i32, ptr %784, align 4, !tbaa !5
  %786 = call ptr @s2n_strerror_debug(i32 noundef %785, ptr noundef @.str.4)
  %787 = call ptr @__errno_location() #12
  %788 = load i32, ptr %787, align 4, !tbaa !5
  %789 = call ptr @strerror(i32 noundef %788) #11
  %790 = call ptr @__errno_location() #12
  %791 = load i32, ptr %790, align 4, !tbaa !5
  %792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %779, ptr noundef @.str.5, i32 noundef %780, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 208, ptr noundef %783, ptr noundef %786, ptr noundef %789, i32 noundef %791) #11
  br label %793

793:                                              ; preds = %776, %759
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %794

794:                                              ; preds = %793
  br label %795

795:                                              ; preds = %794
  call void @exit(i32 noundef 1) #13
  unreachable

796:                                              ; No predecessors!
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797, %737
  br label %799

799:                                              ; preds = %798
  br label %800

800:                                              ; preds = %799
  br label %801

801:                                              ; preds = %800
  %802 = load i32, ptr @test_count, align 4, !tbaa !5
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr @test_count, align 4, !tbaa !5
  %804 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %35, i32 0, i32 0
  %805 = load i8, ptr %804, align 8, !tbaa !29, !range !13, !noundef !14
  %806 = trunc i8 %805 to i1
  br i1 %806, label %860, label %807

807:                                              ; preds = %801
  br label %808

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  %810 = call ptr @__errno_location() #12
  %811 = load i32, ptr %810, align 4, !tbaa !5
  store i32 %811, ptr %38, align 4, !tbaa !5
  %812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %813 = call i32 @s2n_print_stacktrace(ptr noundef %812)
  %814 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %815 = trunc i8 %814 to i1
  br i1 %815, label %816, label %838

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

821:                                              ; preds = %816
  %822 = load i32, ptr %38, align 4, !tbaa !5
  %823 = call ptr @__errno_location() #12
  store i32 %822, ptr %823, align 4, !tbaa !5
  %824 = load ptr, ptr @stderr, align 8, !tbaa !9
  %825 = load i32, ptr @test_count, align 4, !tbaa !5
  %826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %827 = load i32, ptr %826, align 4, !tbaa !5
  %828 = call ptr @s2n_strerror(i32 noundef %827, ptr noundef @.str.4)
  %829 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %830 = load i32, ptr %829, align 4, !tbaa !5
  %831 = call ptr @s2n_strerror_debug(i32 noundef %830, ptr noundef @.str.4)
  %832 = call ptr @__errno_location() #12
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = call ptr @strerror(i32 noundef %833) #11
  %835 = call ptr @__errno_location() #12
  %836 = load i32, ptr %835, align 4, !tbaa !5
  %837 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %824, ptr noundef @.str.2, i32 noundef %825, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 209, ptr noundef %828, ptr noundef %831, ptr noundef %834, i32 noundef %836) #11
  br label %855

838:                                              ; preds = %816, %809
  %839 = load i32, ptr %38, align 4, !tbaa !5
  %840 = call ptr @__errno_location() #12
  store i32 %839, ptr %840, align 4, !tbaa !5
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = load i32, ptr @test_count, align 4, !tbaa !5
  %843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror(i32 noundef %844, ptr noundef @.str.4)
  %846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %847 = load i32, ptr %846, align 4, !tbaa !5
  %848 = call ptr @s2n_strerror_debug(i32 noundef %847, ptr noundef @.str.4)
  %849 = call ptr @__errno_location() #12
  %850 = load i32, ptr %849, align 4, !tbaa !5
  %851 = call ptr @strerror(i32 noundef %850) #11
  %852 = call ptr @__errno_location() #12
  %853 = load i32, ptr %852, align 4, !tbaa !5
  %854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef @.str.5, i32 noundef %842, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 209, ptr noundef %845, ptr noundef %848, ptr noundef %851, i32 noundef %853) #11
  br label %855

855:                                              ; preds = %838, %821
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856
  call void @exit(i32 noundef 1) #13
  unreachable

858:                                              ; No predecessors!
  br label %859

859:                                              ; preds = %858
  br label %860

860:                                              ; preds = %859, %801
  br label %861

861:                                              ; preds = %860
  br label %862

862:                                              ; preds = %861
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %39) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %863 = getelementptr inbounds %struct.s2n_security_policy, ptr %39, i32 0, i32 4
  store ptr %14, ptr %863, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 48, ptr %40) #11
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 48, i1 false)
  br label %864

864:                                              ; preds = %862
  %865 = load i32, ptr @test_count, align 4, !tbaa !5
  %866 = add nsw i32 %865, 1
  store i32 %866, ptr @test_count, align 4, !tbaa !5
  %867 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %39, ptr noundef %40)
  %868 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  store i32 %867, ptr %868, align 4
  %869 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  %870 = load i32, ptr %869, align 4
  %871 = call zeroext i1 @s2n_result_is_ok(i32 %870)
  br i1 %871, label %925, label %872

872:                                              ; preds = %864
  br label %873

873:                                              ; preds = %872
  br label %874

874:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #11
  %875 = call ptr @__errno_location() #12
  %876 = load i32, ptr %875, align 4, !tbaa !5
  store i32 %876, ptr %42, align 4, !tbaa !5
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @s2n_print_stacktrace(ptr noundef %877)
  %879 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %880 = trunc i8 %879 to i1
  br i1 %880, label %881, label %903

881:                                              ; preds = %874
  %882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %883 = call i32 @fileno(ptr noundef %882) #11
  %884 = call i32 @isatty(i32 noundef %883) #11
  %885 = icmp ne i32 %884, 0
  br i1 %885, label %886, label %903

886:                                              ; preds = %881
  %887 = load i32, ptr %42, align 4, !tbaa !5
  %888 = call ptr @__errno_location() #12
  store i32 %887, ptr %888, align 4, !tbaa !5
  %889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %890 = load i32, ptr @test_count, align 4, !tbaa !5
  %891 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %892 = load i32, ptr %891, align 4, !tbaa !5
  %893 = call ptr @s2n_strerror(i32 noundef %892, ptr noundef @.str.4)
  %894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %895 = load i32, ptr %894, align 4, !tbaa !5
  %896 = call ptr @s2n_strerror_debug(i32 noundef %895, ptr noundef @.str.4)
  %897 = call ptr @__errno_location() #12
  %898 = load i32, ptr %897, align 4, !tbaa !5
  %899 = call ptr @strerror(i32 noundef %898) #11
  %900 = call ptr @__errno_location() #12
  %901 = load i32, ptr %900, align 4, !tbaa !5
  %902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %889, ptr noundef @.str.2, i32 noundef %890, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 219, ptr noundef %893, ptr noundef %896, ptr noundef %899, i32 noundef %901) #11
  br label %920

903:                                              ; preds = %881, %874
  %904 = load i32, ptr %42, align 4, !tbaa !5
  %905 = call ptr @__errno_location() #12
  store i32 %904, ptr %905, align 4, !tbaa !5
  %906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %907 = load i32, ptr @test_count, align 4, !tbaa !5
  %908 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %909 = load i32, ptr %908, align 4, !tbaa !5
  %910 = call ptr @s2n_strerror(i32 noundef %909, ptr noundef @.str.4)
  %911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %912 = load i32, ptr %911, align 4, !tbaa !5
  %913 = call ptr @s2n_strerror_debug(i32 noundef %912, ptr noundef @.str.4)
  %914 = call ptr @__errno_location() #12
  %915 = load i32, ptr %914, align 4, !tbaa !5
  %916 = call ptr @strerror(i32 noundef %915) #11
  %917 = call ptr @__errno_location() #12
  %918 = load i32, ptr %917, align 4, !tbaa !5
  %919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %906, ptr noundef @.str.5, i32 noundef %907, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 219, ptr noundef %910, ptr noundef %913, ptr noundef %916, i32 noundef %918) #11
  br label %920

920:                                              ; preds = %903, %886
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  br label %921

921:                                              ; preds = %920
  br label %922

922:                                              ; preds = %921
  call void @exit(i32 noundef 1) #13
  unreachable

923:                                              ; No predecessors!
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924, %864
  br label %926

926:                                              ; preds = %925
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %927
  %929 = load i32, ptr @test_count, align 4, !tbaa !5
  %930 = add nsw i32 %929, 1
  store i32 %930, ptr @test_count, align 4, !tbaa !5
  %931 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %40, i32 0, i32 0
  %932 = load i8, ptr %931, align 8, !tbaa !29, !range !13, !noundef !14
  %933 = trunc i8 %932 to i1
  br i1 %933, label %987, label %934

934:                                              ; preds = %928
  br label %935

935:                                              ; preds = %934
  br label %936

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

943:                                              ; preds = %936
  %944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %945 = call i32 @fileno(ptr noundef %944) #11
  %946 = call i32 @isatty(i32 noundef %945) #11
  %947 = icmp ne i32 %946, 0
  br i1 %947, label %948, label %965

948:                                              ; preds = %943
  %949 = load i32, ptr %43, align 4, !tbaa !5
  %950 = call ptr @__errno_location() #12
  store i32 %949, ptr %950, align 4, !tbaa !5
  %951 = load ptr, ptr @stderr, align 8, !tbaa !9
  %952 = load i32, ptr @test_count, align 4, !tbaa !5
  %953 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %954 = load i32, ptr %953, align 4, !tbaa !5
  %955 = call ptr @s2n_strerror(i32 noundef %954, ptr noundef @.str.4)
  %956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %957 = load i32, ptr %956, align 4, !tbaa !5
  %958 = call ptr @s2n_strerror_debug(i32 noundef %957, ptr noundef @.str.4)
  %959 = call ptr @__errno_location() #12
  %960 = load i32, ptr %959, align 4, !tbaa !5
  %961 = call ptr @strerror(i32 noundef %960) #11
  %962 = call ptr @__errno_location() #12
  %963 = load i32, ptr %962, align 4, !tbaa !5
  %964 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %951, ptr noundef @.str.2, i32 noundef %952, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 220, ptr noundef %955, ptr noundef %958, ptr noundef %961, i32 noundef %963) #11
  br label %982

965:                                              ; preds = %943, %936
  %966 = load i32, ptr %43, align 4, !tbaa !5
  %967 = call ptr @__errno_location() #12
  store i32 %966, ptr %967, align 4, !tbaa !5
  %968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %969 = load i32, ptr @test_count, align 4, !tbaa !5
  %970 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %971 = load i32, ptr %970, align 4, !tbaa !5
  %972 = call ptr @s2n_strerror(i32 noundef %971, ptr noundef @.str.4)
  %973 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %974 = load i32, ptr %973, align 4, !tbaa !5
  %975 = call ptr @s2n_strerror_debug(i32 noundef %974, ptr noundef @.str.4)
  %976 = call ptr @__errno_location() #12
  %977 = load i32, ptr %976, align 4, !tbaa !5
  %978 = call ptr @strerror(i32 noundef %977) #11
  %979 = call ptr @__errno_location() #12
  %980 = load i32, ptr %979, align 4, !tbaa !5
  %981 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %968, ptr noundef @.str.5, i32 noundef %969, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 220, ptr noundef %972, ptr noundef %975, ptr noundef %978, i32 noundef %980) #11
  br label %982

982:                                              ; preds = %965, %948
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %983

983:                                              ; preds = %982
  br label %984

984:                                              ; preds = %983
  call void @exit(i32 noundef 1) #13
  unreachable

985:                                              ; No predecessors!
  br label %986

986:                                              ; preds = %985
  br label %987

987:                                              ; preds = %986, %928
  br label %988

988:                                              ; preds = %987
  br label %989

989:                                              ; preds = %988
  call void @llvm.lifetime.end.p0(i64 48, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %39) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %44) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %990 = getelementptr inbounds %struct.s2n_security_policy, ptr %44, i32 0, i32 5
  store ptr %16, ptr %990, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #11
  call void @llvm.memset.p0.i64(ptr align 8 %45, i8 0, i64 48, i1 false)
  br label %991

991:                                              ; preds = %989
  %992 = load i32, ptr @test_count, align 4, !tbaa !5
  %993 = add nsw i32 %992, 1
  store i32 %993, ptr @test_count, align 4, !tbaa !5
  %994 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %44, ptr noundef %45)
  %995 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %994, ptr %995, align 4
  %996 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  %997 = load i32, ptr %996, align 4
  %998 = call zeroext i1 @s2n_result_is_ok(i32 %997)
  br i1 %998, label %1052, label %999

999:                                              ; preds = %991
  br label %1000

1000:                                             ; preds = %999
  br label %1001

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

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

1013:                                             ; preds = %1008
  %1014 = load i32, ptr %47, align 4, !tbaa !5
  %1015 = call ptr @__errno_location() #12
  store i32 %1014, ptr %1015, align 4, !tbaa !5
  %1016 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1017 = load i32, ptr @test_count, align 4, !tbaa !5
  %1018 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call ptr @s2n_strerror(i32 noundef %1019, ptr noundef @.str.4)
  %1021 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1022 = load i32, ptr %1021, align 4, !tbaa !5
  %1023 = call ptr @s2n_strerror_debug(i32 noundef %1022, ptr noundef @.str.4)
  %1024 = call ptr @__errno_location() #12
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call ptr @strerror(i32 noundef %1025) #11
  %1027 = call ptr @__errno_location() #12
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  %1029 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1016, ptr noundef @.str.2, i32 noundef %1017, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1020, ptr noundef %1023, ptr noundef %1026, i32 noundef %1028) #11
  br label %1047

1030:                                             ; preds = %1008, %1001
  %1031 = load i32, ptr %47, align 4, !tbaa !5
  %1032 = call ptr @__errno_location() #12
  store i32 %1031, ptr %1032, align 4, !tbaa !5
  %1033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1034 = load i32, ptr @test_count, align 4, !tbaa !5
  %1035 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1036 = load i32, ptr %1035, align 4, !tbaa !5
  %1037 = call ptr @s2n_strerror(i32 noundef %1036, ptr noundef @.str.4)
  %1038 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1039 = load i32, ptr %1038, align 4, !tbaa !5
  %1040 = call ptr @s2n_strerror_debug(i32 noundef %1039, ptr noundef @.str.4)
  %1041 = call ptr @__errno_location() #12
  %1042 = load i32, ptr %1041, align 4, !tbaa !5
  %1043 = call ptr @strerror(i32 noundef %1042) #11
  %1044 = call ptr @__errno_location() #12
  %1045 = load i32, ptr %1044, align 4, !tbaa !5
  %1046 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1033, ptr noundef @.str.5, i32 noundef %1034, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 230, ptr noundef %1037, ptr noundef %1040, ptr noundef %1043, i32 noundef %1045) #11
  br label %1047

1047:                                             ; preds = %1030, %1013
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %1048

1048:                                             ; preds = %1047
  br label %1049

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

1050:                                             ; No predecessors!
  br label %1051

1051:                                             ; preds = %1050
  br label %1052

1052:                                             ; preds = %1051, %991
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i32, ptr @test_count, align 4, !tbaa !5
  %1057 = add nsw i32 %1056, 1
  store i32 %1057, ptr @test_count, align 4, !tbaa !5
  %1058 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %45, i32 0, i32 0
  %1059 = load i8, ptr %1058, align 8, !tbaa !29, !range !13, !noundef !14
  %1060 = trunc i8 %1059 to i1
  br i1 %1060, label %1114, label %1061

1061:                                             ; preds = %1055
  br label %1062

1062:                                             ; preds = %1061
  br label %1063

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

1070:                                             ; preds = %1063
  %1071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1072 = call i32 @fileno(ptr noundef %1071) #11
  %1073 = call i32 @isatty(i32 noundef %1072) #11
  %1074 = icmp ne i32 %1073, 0
  br i1 %1074, label %1075, label %1092

1075:                                             ; preds = %1070
  %1076 = load i32, ptr %48, align 4, !tbaa !5
  %1077 = call ptr @__errno_location() #12
  store i32 %1076, ptr %1077, align 4, !tbaa !5
  %1078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1079 = load i32, ptr @test_count, align 4, !tbaa !5
  %1080 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  %1082 = call ptr @s2n_strerror(i32 noundef %1081, ptr noundef @.str.4)
  %1083 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1084 = load i32, ptr %1083, align 4, !tbaa !5
  %1085 = call ptr @s2n_strerror_debug(i32 noundef %1084, ptr noundef @.str.4)
  %1086 = call ptr @__errno_location() #12
  %1087 = load i32, ptr %1086, align 4, !tbaa !5
  %1088 = call ptr @strerror(i32 noundef %1087) #11
  %1089 = call ptr @__errno_location() #12
  %1090 = load i32, ptr %1089, align 4, !tbaa !5
  %1091 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1078, ptr noundef @.str.2, i32 noundef %1079, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 231, ptr noundef %1082, ptr noundef %1085, ptr noundef %1088, i32 noundef %1090) #11
  br label %1109

1092:                                             ; preds = %1070, %1063
  %1093 = load i32, ptr %48, align 4, !tbaa !5
  %1094 = call ptr @__errno_location() #12
  store i32 %1093, ptr %1094, align 4, !tbaa !5
  %1095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1096 = load i32, ptr @test_count, align 4, !tbaa !5
  %1097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call ptr @s2n_strerror(i32 noundef %1098, ptr noundef @.str.4)
  %1100 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = call ptr @s2n_strerror_debug(i32 noundef %1101, ptr noundef @.str.4)
  %1103 = call ptr @__errno_location() #12
  %1104 = load i32, ptr %1103, align 4, !tbaa !5
  %1105 = call ptr @strerror(i32 noundef %1104) #11
  %1106 = call ptr @__errno_location() #12
  %1107 = load i32, ptr %1106, align 4, !tbaa !5
  %1108 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1095, ptr noundef @.str.5, i32 noundef %1096, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 231, ptr noundef %1099, ptr noundef %1102, ptr noundef %1105, i32 noundef %1107) #11
  br label %1109

1109:                                             ; preds = %1092, %1075
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  br label %1110

1110:                                             ; preds = %1109
  br label %1111

1111:                                             ; preds = %1110
  call void @exit(i32 noundef 1) #13
  unreachable

1112:                                             ; No predecessors!
  br label %1113

1113:                                             ; preds = %1112
  br label %1114

1114:                                             ; preds = %1113, %1055
  br label %1115

1115:                                             ; preds = %1114
  br label %1116

1116:                                             ; preds = %1115
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %44) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %49) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %49, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %1117 = getelementptr inbounds %struct.s2n_security_policy, ptr %49, i32 0, i32 2
  store ptr %18, ptr %1117, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 48, ptr %50) #11
  call void @llvm.memset.p0.i64(ptr align 8 %50, i8 0, i64 48, i1 false)
  br label %1118

1118:                                             ; preds = %1116
  %1119 = load i32, ptr @test_count, align 4, !tbaa !5
  %1120 = add nsw i32 %1119, 1
  store i32 %1120, ptr @test_count, align 4, !tbaa !5
  %1121 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %49, ptr noundef %50)
  %1122 = getelementptr inbounds %struct.s2n_result, ptr %51, i32 0, i32 0
  store i32 %1121, ptr %1122, align 4
  %1123 = getelementptr inbounds %struct.s2n_result, ptr %51, i32 0, i32 0
  %1124 = load i32, ptr %1123, align 4
  %1125 = call zeroext i1 @s2n_result_is_ok(i32 %1124)
  br i1 %1125, label %1179, label %1126

1126:                                             ; preds = %1118
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

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

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

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

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

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

1175:                                             ; preds = %1174
  br label %1176

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

1177:                                             ; No predecessors!
  br label %1178

1178:                                             ; preds = %1177
  br label %1179

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

1180:                                             ; preds = %1179
  br label %1181

1181:                                             ; preds = %1180
  br label %1182

1182:                                             ; preds = %1181
  %1183 = load i32, ptr @test_count, align 4, !tbaa !5
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr @test_count, align 4, !tbaa !5
  %1185 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %50, i32 0, i32 0
  %1186 = load i8, ptr %1185, align 8, !tbaa !29, !range !13, !noundef !14
  %1187 = trunc i8 %1186 to i1
  br i1 %1187, label %1241, label %1188

1188:                                             ; preds = %1182
  br label %1189

1189:                                             ; preds = %1188
  br label %1190

1190:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  %1191 = call ptr @__errno_location() #12
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  store i32 %1192, ptr %53, align 4, !tbaa !5
  %1193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1194 = call i32 @s2n_print_stacktrace(ptr noundef %1193)
  %1195 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1196 = trunc i8 %1195 to i1
  br i1 %1196, label %1197, label %1219

1197:                                             ; preds = %1190
  %1198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1199 = call i32 @fileno(ptr noundef %1198) #11
  %1200 = call i32 @isatty(i32 noundef %1199) #11
  %1201 = icmp ne i32 %1200, 0
  br i1 %1201, label %1202, label %1219

1202:                                             ; preds = %1197
  %1203 = load i32, ptr %53, align 4, !tbaa !5
  %1204 = call ptr @__errno_location() #12
  store i32 %1203, ptr %1204, align 4, !tbaa !5
  %1205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1206 = load i32, ptr @test_count, align 4, !tbaa !5
  %1207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1208 = load i32, ptr %1207, align 4, !tbaa !5
  %1209 = call ptr @s2n_strerror(i32 noundef %1208, ptr noundef @.str.4)
  %1210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1211 = load i32, ptr %1210, align 4, !tbaa !5
  %1212 = call ptr @s2n_strerror_debug(i32 noundef %1211, ptr noundef @.str.4)
  %1213 = call ptr @__errno_location() #12
  %1214 = load i32, ptr %1213, align 4, !tbaa !5
  %1215 = call ptr @strerror(i32 noundef %1214) #11
  %1216 = call ptr @__errno_location() #12
  %1217 = load i32, ptr %1216, align 4, !tbaa !5
  %1218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1205, ptr noundef @.str.2, i32 noundef %1206, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 242, ptr noundef %1209, ptr noundef %1212, ptr noundef %1215, i32 noundef %1217) #11
  br label %1236

1219:                                             ; preds = %1197, %1190
  %1220 = load i32, ptr %53, align 4, !tbaa !5
  %1221 = call ptr @__errno_location() #12
  store i32 %1220, ptr %1221, align 4, !tbaa !5
  %1222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1223 = load i32, ptr @test_count, align 4, !tbaa !5
  %1224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1225 = load i32, ptr %1224, align 4, !tbaa !5
  %1226 = call ptr @s2n_strerror(i32 noundef %1225, ptr noundef @.str.4)
  %1227 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1228 = load i32, ptr %1227, align 4, !tbaa !5
  %1229 = call ptr @s2n_strerror_debug(i32 noundef %1228, ptr noundef @.str.4)
  %1230 = call ptr @__errno_location() #12
  %1231 = load i32, ptr %1230, align 4, !tbaa !5
  %1232 = call ptr @strerror(i32 noundef %1231) #11
  %1233 = call ptr @__errno_location() #12
  %1234 = load i32, ptr %1233, align 4, !tbaa !5
  %1235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1222, ptr noundef @.str.5, i32 noundef %1223, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 242, ptr noundef %1226, ptr noundef %1229, ptr noundef %1232, i32 noundef %1234) #11
  br label %1236

1236:                                             ; preds = %1219, %1202
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %1237

1237:                                             ; preds = %1236
  br label %1238

1238:                                             ; preds = %1237
  call void @exit(i32 noundef 1) #13
  unreachable

1239:                                             ; No predecessors!
  br label %1240

1240:                                             ; preds = %1239
  br label %1241

1241:                                             ; preds = %1240, %1182
  br label %1242

1242:                                             ; preds = %1241
  br label %1243

1243:                                             ; preds = %1242
  call void @llvm.lifetime.end.p0(i64 48, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %49) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %54) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %1244 = getelementptr inbounds %struct.s2n_security_policy, ptr %54, i32 0, i32 0
  store i8 32, ptr %1244, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 48, ptr %55) #11
  call void @llvm.memset.p0.i64(ptr align 8 %55, i8 0, i64 48, i1 false)
  br label %1245

1245:                                             ; preds = %1243
  %1246 = load i32, ptr @test_count, align 4, !tbaa !5
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr @test_count, align 4, !tbaa !5
  %1248 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %54, ptr noundef %55)
  %1249 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  store i32 %1248, ptr %1249, align 4
  %1250 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  %1251 = load i32, ptr %1250, align 4
  %1252 = call zeroext i1 @s2n_result_is_ok(i32 %1251)
  br i1 %1252, label %1306, label %1253

1253:                                             ; preds = %1245
  br label %1254

1254:                                             ; preds = %1253
  br label %1255

1255:                                             ; preds = %1254
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  %1256 = call ptr @__errno_location() #12
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  store i32 %1257, ptr %57, align 4, !tbaa !5
  %1258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1259 = call i32 @s2n_print_stacktrace(ptr noundef %1258)
  %1260 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1261 = trunc i8 %1260 to i1
  br i1 %1261, label %1262, label %1284

1262:                                             ; preds = %1255
  %1263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1264 = call i32 @fileno(ptr noundef %1263) #11
  %1265 = call i32 @isatty(i32 noundef %1264) #11
  %1266 = icmp ne i32 %1265, 0
  br i1 %1266, label %1267, label %1284

1267:                                             ; preds = %1262
  %1268 = load i32, ptr %57, align 4, !tbaa !5
  %1269 = call ptr @__errno_location() #12
  store i32 %1268, ptr %1269, align 4, !tbaa !5
  %1270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1271 = load i32, ptr @test_count, align 4, !tbaa !5
  %1272 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1273 = load i32, ptr %1272, align 4, !tbaa !5
  %1274 = call ptr @s2n_strerror(i32 noundef %1273, ptr noundef @.str.4)
  %1275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1276 = load i32, ptr %1275, align 4, !tbaa !5
  %1277 = call ptr @s2n_strerror_debug(i32 noundef %1276, ptr noundef @.str.4)
  %1278 = call ptr @__errno_location() #12
  %1279 = load i32, ptr %1278, align 4, !tbaa !5
  %1280 = call ptr @strerror(i32 noundef %1279) #11
  %1281 = call ptr @__errno_location() #12
  %1282 = load i32, ptr %1281, align 4, !tbaa !5
  %1283 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1270, ptr noundef @.str.2, i32 noundef %1271, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 252, ptr noundef %1274, ptr noundef %1277, ptr noundef %1280, i32 noundef %1282) #11
  br label %1301

1284:                                             ; preds = %1262, %1255
  %1285 = load i32, ptr %57, align 4, !tbaa !5
  %1286 = call ptr @__errno_location() #12
  store i32 %1285, ptr %1286, align 4, !tbaa !5
  %1287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1288 = load i32, ptr @test_count, align 4, !tbaa !5
  %1289 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1290 = load i32, ptr %1289, align 4, !tbaa !5
  %1291 = call ptr @s2n_strerror(i32 noundef %1290, ptr noundef @.str.4)
  %1292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1293 = load i32, ptr %1292, align 4, !tbaa !5
  %1294 = call ptr @s2n_strerror_debug(i32 noundef %1293, ptr noundef @.str.4)
  %1295 = call ptr @__errno_location() #12
  %1296 = load i32, ptr %1295, align 4, !tbaa !5
  %1297 = call ptr @strerror(i32 noundef %1296) #11
  %1298 = call ptr @__errno_location() #12
  %1299 = load i32, ptr %1298, align 4, !tbaa !5
  %1300 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1287, ptr noundef @.str.5, i32 noundef %1288, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 252, ptr noundef %1291, ptr noundef %1294, ptr noundef %1297, i32 noundef %1299) #11
  br label %1301

1301:                                             ; preds = %1284, %1267
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %1302

1302:                                             ; preds = %1301
  br label %1303

1303:                                             ; preds = %1302
  call void @exit(i32 noundef 1) #13
  unreachable

1304:                                             ; No predecessors!
  br label %1305

1305:                                             ; preds = %1304
  br label %1306

1306:                                             ; preds = %1305, %1245
  br label %1307

1307:                                             ; preds = %1306
  br label %1308

1308:                                             ; preds = %1307
  br label %1309

1309:                                             ; preds = %1308
  %1310 = load i32, ptr @test_count, align 4, !tbaa !5
  %1311 = add nsw i32 %1310, 1
  store i32 %1311, ptr @test_count, align 4, !tbaa !5
  %1312 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %55, i32 0, i32 0
  %1313 = load i8, ptr %1312, align 8, !tbaa !29, !range !13, !noundef !14
  %1314 = trunc i8 %1313 to i1
  br i1 %1314, label %1368, label %1315

1315:                                             ; preds = %1309
  br label %1316

1316:                                             ; preds = %1315
  br label %1317

1317:                                             ; preds = %1316
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #11
  %1318 = call ptr @__errno_location() #12
  %1319 = load i32, ptr %1318, align 4, !tbaa !5
  store i32 %1319, ptr %58, align 4, !tbaa !5
  %1320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1321 = call i32 @s2n_print_stacktrace(ptr noundef %1320)
  %1322 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1323 = trunc i8 %1322 to i1
  br i1 %1323, label %1324, label %1346

1324:                                             ; preds = %1317
  %1325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1326 = call i32 @fileno(ptr noundef %1325) #11
  %1327 = call i32 @isatty(i32 noundef %1326) #11
  %1328 = icmp ne i32 %1327, 0
  br i1 %1328, label %1329, label %1346

1329:                                             ; preds = %1324
  %1330 = load i32, ptr %58, align 4, !tbaa !5
  %1331 = call ptr @__errno_location() #12
  store i32 %1330, ptr %1331, align 4, !tbaa !5
  %1332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1333 = load i32, ptr @test_count, align 4, !tbaa !5
  %1334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1335 = load i32, ptr %1334, align 4, !tbaa !5
  %1336 = call ptr @s2n_strerror(i32 noundef %1335, ptr noundef @.str.4)
  %1337 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1338 = load i32, ptr %1337, align 4, !tbaa !5
  %1339 = call ptr @s2n_strerror_debug(i32 noundef %1338, ptr noundef @.str.4)
  %1340 = call ptr @__errno_location() #12
  %1341 = load i32, ptr %1340, align 4, !tbaa !5
  %1342 = call ptr @strerror(i32 noundef %1341) #11
  %1343 = call ptr @__errno_location() #12
  %1344 = load i32, ptr %1343, align 4, !tbaa !5
  %1345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1332, ptr noundef @.str.2, i32 noundef %1333, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 253, ptr noundef %1336, ptr noundef %1339, ptr noundef %1342, i32 noundef %1344) #11
  br label %1363

1346:                                             ; preds = %1324, %1317
  %1347 = load i32, ptr %58, align 4, !tbaa !5
  %1348 = call ptr @__errno_location() #12
  store i32 %1347, ptr %1348, align 4, !tbaa !5
  %1349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1350 = load i32, ptr @test_count, align 4, !tbaa !5
  %1351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1352 = load i32, ptr %1351, align 4, !tbaa !5
  %1353 = call ptr @s2n_strerror(i32 noundef %1352, ptr noundef @.str.4)
  %1354 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1355 = load i32, ptr %1354, align 4, !tbaa !5
  %1356 = call ptr @s2n_strerror_debug(i32 noundef %1355, ptr noundef @.str.4)
  %1357 = call ptr @__errno_location() #12
  %1358 = load i32, ptr %1357, align 4, !tbaa !5
  %1359 = call ptr @strerror(i32 noundef %1358) #11
  %1360 = call ptr @__errno_location() #12
  %1361 = load i32, ptr %1360, align 4, !tbaa !5
  %1362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1349, ptr noundef @.str.5, i32 noundef %1350, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 253, ptr noundef %1353, ptr noundef %1356, ptr noundef %1359, i32 noundef %1361) #11
  br label %1363

1363:                                             ; preds = %1346, %1329
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  br label %1364

1364:                                             ; preds = %1363
  br label %1365

1365:                                             ; preds = %1364
  call void @exit(i32 noundef 1) #13
  unreachable

1366:                                             ; No predecessors!
  br label %1367

1367:                                             ; preds = %1366
  br label %1368

1368:                                             ; preds = %1367, %1309
  br label %1369

1369:                                             ; preds = %1368
  br label %1370

1370:                                             ; preds = %1369
  call void @llvm.lifetime.end.p0(i64 48, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %54) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %59) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %59, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %1371 = getelementptr inbounds %struct.s2n_security_policy, ptr %59, i32 0, i32 4
  store ptr null, ptr %1371, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 48, ptr %60) #11
  call void @llvm.memset.p0.i64(ptr align 8 %60, i8 0, i64 48, i1 false)
  br label %1372

1372:                                             ; preds = %1370
  %1373 = load i32, ptr @test_count, align 4, !tbaa !5
  %1374 = add nsw i32 %1373, 1
  store i32 %1374, ptr @test_count, align 4, !tbaa !5
  %1375 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %59, ptr noundef %60)
  %1376 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  store i32 %1375, ptr %1376, align 4
  %1377 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  %1378 = load i32, ptr %1377, align 4
  %1379 = call zeroext i1 @s2n_result_is_ok(i32 %1378)
  br i1 %1379, label %1433, label %1380

1380:                                             ; preds = %1372
  br label %1381

1381:                                             ; preds = %1380
  br label %1382

1382:                                             ; preds = %1381
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #11
  %1383 = call ptr @__errno_location() #12
  %1384 = load i32, ptr %1383, align 4, !tbaa !5
  store i32 %1384, ptr %62, align 4, !tbaa !5
  %1385 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1386 = call i32 @s2n_print_stacktrace(ptr noundef %1385)
  %1387 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1388 = trunc i8 %1387 to i1
  br i1 %1388, label %1389, label %1411

1389:                                             ; preds = %1382
  %1390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1391 = call i32 @fileno(ptr noundef %1390) #11
  %1392 = call i32 @isatty(i32 noundef %1391) #11
  %1393 = icmp ne i32 %1392, 0
  br i1 %1393, label %1394, label %1411

1394:                                             ; preds = %1389
  %1395 = load i32, ptr %62, align 4, !tbaa !5
  %1396 = call ptr @__errno_location() #12
  store i32 %1395, ptr %1396, align 4, !tbaa !5
  %1397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1398 = load i32, ptr @test_count, align 4, !tbaa !5
  %1399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1400 = load i32, ptr %1399, align 4, !tbaa !5
  %1401 = call ptr @s2n_strerror(i32 noundef %1400, ptr noundef @.str.4)
  %1402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1403 = load i32, ptr %1402, align 4, !tbaa !5
  %1404 = call ptr @s2n_strerror_debug(i32 noundef %1403, ptr noundef @.str.4)
  %1405 = call ptr @__errno_location() #12
  %1406 = load i32, ptr %1405, align 4, !tbaa !5
  %1407 = call ptr @strerror(i32 noundef %1406) #11
  %1408 = call ptr @__errno_location() #12
  %1409 = load i32, ptr %1408, align 4, !tbaa !5
  %1410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1397, ptr noundef @.str.2, i32 noundef %1398, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 264, ptr noundef %1401, ptr noundef %1404, ptr noundef %1407, i32 noundef %1409) #11
  br label %1428

1411:                                             ; preds = %1389, %1382
  %1412 = load i32, ptr %62, align 4, !tbaa !5
  %1413 = call ptr @__errno_location() #12
  store i32 %1412, ptr %1413, align 4, !tbaa !5
  %1414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1415 = load i32, ptr @test_count, align 4, !tbaa !5
  %1416 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1417 = load i32, ptr %1416, align 4, !tbaa !5
  %1418 = call ptr @s2n_strerror(i32 noundef %1417, ptr noundef @.str.4)
  %1419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1420 = load i32, ptr %1419, align 4, !tbaa !5
  %1421 = call ptr @s2n_strerror_debug(i32 noundef %1420, ptr noundef @.str.4)
  %1422 = call ptr @__errno_location() #12
  %1423 = load i32, ptr %1422, align 4, !tbaa !5
  %1424 = call ptr @strerror(i32 noundef %1423) #11
  %1425 = call ptr @__errno_location() #12
  %1426 = load i32, ptr %1425, align 4, !tbaa !5
  %1427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1414, ptr noundef @.str.5, i32 noundef %1415, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 264, ptr noundef %1418, ptr noundef %1421, ptr noundef %1424, i32 noundef %1426) #11
  br label %1428

1428:                                             ; preds = %1411, %1394
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #11
  br label %1429

1429:                                             ; preds = %1428
  br label %1430

1430:                                             ; preds = %1429
  call void @exit(i32 noundef 1) #13
  unreachable

1431:                                             ; No predecessors!
  br label %1432

1432:                                             ; preds = %1431
  br label %1433

1433:                                             ; preds = %1432, %1372
  br label %1434

1434:                                             ; preds = %1433
  br label %1435

1435:                                             ; preds = %1434
  br label %1436

1436:                                             ; preds = %1435
  %1437 = load i32, ptr @test_count, align 4, !tbaa !5
  %1438 = add nsw i32 %1437, 1
  store i32 %1438, ptr @test_count, align 4, !tbaa !5
  %1439 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %60, i32 0, i32 0
  %1440 = load i8, ptr %1439, align 8, !tbaa !29, !range !13, !noundef !14
  %1441 = trunc i8 %1440 to i1
  br i1 %1441, label %1442, label %1495

1442:                                             ; preds = %1436
  br label %1443

1443:                                             ; preds = %1442
  br label %1444

1444:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #11
  %1445 = call ptr @__errno_location() #12
  %1446 = load i32, ptr %1445, align 4, !tbaa !5
  store i32 %1446, ptr %63, align 4, !tbaa !5
  %1447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1448 = call i32 @s2n_print_stacktrace(ptr noundef %1447)
  %1449 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1450 = trunc i8 %1449 to i1
  br i1 %1450, label %1451, label %1473

1451:                                             ; preds = %1444
  %1452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1453 = call i32 @fileno(ptr noundef %1452) #11
  %1454 = call i32 @isatty(i32 noundef %1453) #11
  %1455 = icmp ne i32 %1454, 0
  br i1 %1455, label %1456, label %1473

1456:                                             ; preds = %1451
  %1457 = load i32, ptr %63, align 4, !tbaa !5
  %1458 = call ptr @__errno_location() #12
  store i32 %1457, ptr %1458, align 4, !tbaa !5
  %1459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1460 = load i32, ptr @test_count, align 4, !tbaa !5
  %1461 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1462 = load i32, ptr %1461, align 4, !tbaa !5
  %1463 = call ptr @s2n_strerror(i32 noundef %1462, ptr noundef @.str.4)
  %1464 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1465 = load i32, ptr %1464, align 4, !tbaa !5
  %1466 = call ptr @s2n_strerror_debug(i32 noundef %1465, ptr noundef @.str.4)
  %1467 = call ptr @__errno_location() #12
  %1468 = load i32, ptr %1467, align 4, !tbaa !5
  %1469 = call ptr @strerror(i32 noundef %1468) #11
  %1470 = call ptr @__errno_location() #12
  %1471 = load i32, ptr %1470, align 4, !tbaa !5
  %1472 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1459, ptr noundef @.str.2, i32 noundef %1460, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 265, ptr noundef %1463, ptr noundef %1466, ptr noundef %1469, i32 noundef %1471) #11
  br label %1490

1473:                                             ; preds = %1451, %1444
  %1474 = load i32, ptr %63, align 4, !tbaa !5
  %1475 = call ptr @__errno_location() #12
  store i32 %1474, ptr %1475, align 4, !tbaa !5
  %1476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1477 = load i32, ptr @test_count, align 4, !tbaa !5
  %1478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1479 = load i32, ptr %1478, align 4, !tbaa !5
  %1480 = call ptr @s2n_strerror(i32 noundef %1479, ptr noundef @.str.4)
  %1481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1482 = load i32, ptr %1481, align 4, !tbaa !5
  %1483 = call ptr @s2n_strerror_debug(i32 noundef %1482, ptr noundef @.str.4)
  %1484 = call ptr @__errno_location() #12
  %1485 = load i32, ptr %1484, align 4, !tbaa !5
  %1486 = call ptr @strerror(i32 noundef %1485) #11
  %1487 = call ptr @__errno_location() #12
  %1488 = load i32, ptr %1487, align 4, !tbaa !5
  %1489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1476, ptr noundef @.str.5, i32 noundef %1477, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 265, ptr noundef %1480, ptr noundef %1483, ptr noundef %1486, i32 noundef %1488) #11
  br label %1490

1490:                                             ; preds = %1473, %1456
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  br label %1491

1491:                                             ; preds = %1490
  br label %1492

1492:                                             ; preds = %1491
  call void @exit(i32 noundef 1) #13
  unreachable

1493:                                             ; No predecessors!
  br label %1494

1494:                                             ; preds = %1493
  br label %1495

1495:                                             ; preds = %1494, %1436
  br label %1496

1496:                                             ; preds = %1495
  br label %1497

1497:                                             ; preds = %1496
  call void @llvm.lifetime.end.p0(i64 48, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %59) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %64) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %64, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %1498 = getelementptr inbounds %struct.s2n_security_policy, ptr %64, i32 0, i32 5
  store ptr %16, ptr %1498, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 48, ptr %65) #11
  call void @llvm.memset.p0.i64(ptr align 8 %65, i8 0, i64 48, i1 false)
  br label %1499

1499:                                             ; preds = %1497
  %1500 = load i32, ptr @test_count, align 4, !tbaa !5
  %1501 = add nsw i32 %1500, 1
  store i32 %1501, ptr @test_count, align 4, !tbaa !5
  %1502 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %64, ptr noundef %65)
  %1503 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  store i32 %1502, ptr %1503, align 4
  %1504 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  %1505 = load i32, ptr %1504, align 4
  %1506 = call zeroext i1 @s2n_result_is_ok(i32 %1505)
  br i1 %1506, label %1560, label %1507

1507:                                             ; preds = %1499
  br label %1508

1508:                                             ; preds = %1507
  br label %1509

1509:                                             ; preds = %1508
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #11
  %1510 = call ptr @__errno_location() #12
  %1511 = load i32, ptr %1510, align 4, !tbaa !5
  store i32 %1511, ptr %67, align 4, !tbaa !5
  %1512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1513 = call i32 @s2n_print_stacktrace(ptr noundef %1512)
  %1514 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1515 = trunc i8 %1514 to i1
  br i1 %1515, label %1516, label %1538

1516:                                             ; preds = %1509
  %1517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1518 = call i32 @fileno(ptr noundef %1517) #11
  %1519 = call i32 @isatty(i32 noundef %1518) #11
  %1520 = icmp ne i32 %1519, 0
  br i1 %1520, label %1521, label %1538

1521:                                             ; preds = %1516
  %1522 = load i32, ptr %67, align 4, !tbaa !5
  %1523 = call ptr @__errno_location() #12
  store i32 %1522, ptr %1523, align 4, !tbaa !5
  %1524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1525 = load i32, ptr @test_count, align 4, !tbaa !5
  %1526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1527 = load i32, ptr %1526, align 4, !tbaa !5
  %1528 = call ptr @s2n_strerror(i32 noundef %1527, ptr noundef @.str.4)
  %1529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1530 = load i32, ptr %1529, align 4, !tbaa !5
  %1531 = call ptr @s2n_strerror_debug(i32 noundef %1530, ptr noundef @.str.4)
  %1532 = call ptr @__errno_location() #12
  %1533 = load i32, ptr %1532, align 4, !tbaa !5
  %1534 = call ptr @strerror(i32 noundef %1533) #11
  %1535 = call ptr @__errno_location() #12
  %1536 = load i32, ptr %1535, align 4, !tbaa !5
  %1537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1524, ptr noundef @.str.2, i32 noundef %1525, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 283, ptr noundef %1528, ptr noundef %1531, ptr noundef %1534, i32 noundef %1536) #11
  br label %1555

1538:                                             ; preds = %1516, %1509
  %1539 = load i32, ptr %67, align 4, !tbaa !5
  %1540 = call ptr @__errno_location() #12
  store i32 %1539, ptr %1540, align 4, !tbaa !5
  %1541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1542 = load i32, ptr @test_count, align 4, !tbaa !5
  %1543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1544 = load i32, ptr %1543, align 4, !tbaa !5
  %1545 = call ptr @s2n_strerror(i32 noundef %1544, ptr noundef @.str.4)
  %1546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1547 = load i32, ptr %1546, align 4, !tbaa !5
  %1548 = call ptr @s2n_strerror_debug(i32 noundef %1547, ptr noundef @.str.4)
  %1549 = call ptr @__errno_location() #12
  %1550 = load i32, ptr %1549, align 4, !tbaa !5
  %1551 = call ptr @strerror(i32 noundef %1550) #11
  %1552 = call ptr @__errno_location() #12
  %1553 = load i32, ptr %1552, align 4, !tbaa !5
  %1554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1541, ptr noundef @.str.5, i32 noundef %1542, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 283, ptr noundef %1545, ptr noundef %1548, ptr noundef %1551, i32 noundef %1553) #11
  br label %1555

1555:                                             ; preds = %1538, %1521
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  br label %1556

1556:                                             ; preds = %1555
  br label %1557

1557:                                             ; preds = %1556
  call void @exit(i32 noundef 1) #13
  unreachable

1558:                                             ; No predecessors!
  br label %1559

1559:                                             ; preds = %1558
  br label %1560

1560:                                             ; preds = %1559, %1499
  br label %1561

1561:                                             ; preds = %1560
  br label %1562

1562:                                             ; preds = %1561
  br label %1563

1563:                                             ; preds = %1562
  %1564 = load i32, ptr @test_count, align 4, !tbaa !5
  %1565 = add nsw i32 %1564, 1
  store i32 %1565, ptr @test_count, align 4, !tbaa !5
  %1566 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %65, i32 0, i32 0
  %1567 = load i8, ptr %1566, align 8, !tbaa !29, !range !13, !noundef !14
  %1568 = trunc i8 %1567 to i1
  br i1 %1568, label %1622, label %1569

1569:                                             ; preds = %1563
  br label %1570

1570:                                             ; preds = %1569
  br label %1571

1571:                                             ; preds = %1570
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #11
  %1572 = call ptr @__errno_location() #12
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  store i32 %1573, ptr %68, align 4, !tbaa !5
  %1574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1575 = call i32 @s2n_print_stacktrace(ptr noundef %1574)
  %1576 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1577 = trunc i8 %1576 to i1
  br i1 %1577, label %1578, label %1600

1578:                                             ; preds = %1571
  %1579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1580 = call i32 @fileno(ptr noundef %1579) #11
  %1581 = call i32 @isatty(i32 noundef %1580) #11
  %1582 = icmp ne i32 %1581, 0
  br i1 %1582, label %1583, label %1600

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

1600:                                             ; preds = %1578, %1571
  %1601 = load i32, ptr %68, align 4, !tbaa !5
  %1602 = call ptr @__errno_location() #12
  store i32 %1601, ptr %1602, align 4, !tbaa !5
  %1603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1604 = load i32, ptr @test_count, align 4, !tbaa !5
  %1605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1606 = load i32, ptr %1605, align 4, !tbaa !5
  %1607 = call ptr @s2n_strerror(i32 noundef %1606, ptr noundef @.str.4)
  %1608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1609 = load i32, ptr %1608, align 4, !tbaa !5
  %1610 = call ptr @s2n_strerror_debug(i32 noundef %1609, ptr noundef @.str.4)
  %1611 = call ptr @__errno_location() #12
  %1612 = load i32, ptr %1611, align 4, !tbaa !5
  %1613 = call ptr @strerror(i32 noundef %1612) #11
  %1614 = call ptr @__errno_location() #12
  %1615 = load i32, ptr %1614, align 4, !tbaa !5
  %1616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1603, ptr noundef @.str.5, i32 noundef %1604, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 284, ptr noundef %1607, ptr noundef %1610, ptr noundef %1613, i32 noundef %1615) #11
  br label %1617

1617:                                             ; preds = %1600, %1583
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #11
  br label %1618

1618:                                             ; preds = %1617
  br label %1619

1619:                                             ; preds = %1618
  call void @exit(i32 noundef 1) #13
  unreachable

1620:                                             ; No predecessors!
  br label %1621

1621:                                             ; preds = %1620
  br label %1622

1622:                                             ; preds = %1621, %1563
  br label %1623

1623:                                             ; preds = %1622
  br label %1624

1624:                                             ; preds = %1623
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  %1625 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %65, i32 0, i32 2
  %1626 = getelementptr inbounds %struct.s2n_stuffer, ptr %1625, i32 0, i32 2
  %1627 = load i32, ptr %1626, align 4, !tbaa !35
  %1628 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %65, i32 0, i32 2
  %1629 = getelementptr inbounds %struct.s2n_stuffer, ptr %1628, i32 0, i32 1
  %1630 = load i32, ptr %1629, align 8, !tbaa !36
  %1631 = sub i32 %1627, %1630
  %1632 = zext i32 %1631 to i64
  store i64 %1632, ptr %69, align 8, !tbaa !37
  br label %1633

1633:                                             ; preds = %1624
  %1634 = load i32, ptr @test_count, align 4, !tbaa !5
  %1635 = add nsw i32 %1634, 1
  store i32 %1635, ptr @test_count, align 4, !tbaa !5
  %1636 = load i64, ptr %69, align 8, !tbaa !37
  %1637 = icmp eq i64 %1636, 0
  br i1 %1637, label %1691, label %1638

1638:                                             ; preds = %1633
  br label %1639

1639:                                             ; preds = %1638
  br label %1640

1640:                                             ; preds = %1639
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #11
  %1641 = call ptr @__errno_location() #12
  %1642 = load i32, ptr %1641, align 4, !tbaa !5
  store i32 %1642, ptr %70, align 4, !tbaa !5
  %1643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1644 = call i32 @s2n_print_stacktrace(ptr noundef %1643)
  %1645 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1646 = trunc i8 %1645 to i1
  br i1 %1646, label %1647, label %1669

1647:                                             ; preds = %1640
  %1648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1649 = call i32 @fileno(ptr noundef %1648) #11
  %1650 = call i32 @isatty(i32 noundef %1649) #11
  %1651 = icmp ne i32 %1650, 0
  br i1 %1651, label %1652, label %1669

1652:                                             ; preds = %1647
  %1653 = load i32, ptr %70, align 4, !tbaa !5
  %1654 = call ptr @__errno_location() #12
  store i32 %1653, ptr %1654, align 4, !tbaa !5
  %1655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1656 = load i32, ptr @test_count, align 4, !tbaa !5
  %1657 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1658 = load i32, ptr %1657, align 4, !tbaa !5
  %1659 = call ptr @s2n_strerror(i32 noundef %1658, ptr noundef @.str.4)
  %1660 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1661 = load i32, ptr %1660, align 4, !tbaa !5
  %1662 = call ptr @s2n_strerror_debug(i32 noundef %1661, ptr noundef @.str.4)
  %1663 = call ptr @__errno_location() #12
  %1664 = load i32, ptr %1663, align 4, !tbaa !5
  %1665 = call ptr @strerror(i32 noundef %1664) #11
  %1666 = call ptr @__errno_location() #12
  %1667 = load i32, ptr %1666, align 4, !tbaa !5
  %1668 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1655, ptr noundef @.str.2, i32 noundef %1656, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 287, ptr noundef %1659, ptr noundef %1662, ptr noundef %1665, i32 noundef %1667) #11
  br label %1686

1669:                                             ; preds = %1647, %1640
  %1670 = load i32, ptr %70, align 4, !tbaa !5
  %1671 = call ptr @__errno_location() #12
  store i32 %1670, ptr %1671, align 4, !tbaa !5
  %1672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1673 = load i32, ptr @test_count, align 4, !tbaa !5
  %1674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1675 = load i32, ptr %1674, align 4, !tbaa !5
  %1676 = call ptr @s2n_strerror(i32 noundef %1675, ptr noundef @.str.4)
  %1677 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1678 = load i32, ptr %1677, align 4, !tbaa !5
  %1679 = call ptr @s2n_strerror_debug(i32 noundef %1678, ptr noundef @.str.4)
  %1680 = call ptr @__errno_location() #12
  %1681 = load i32, ptr %1680, align 4, !tbaa !5
  %1682 = call ptr @strerror(i32 noundef %1681) #11
  %1683 = call ptr @__errno_location() #12
  %1684 = load i32, ptr %1683, align 4, !tbaa !5
  %1685 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1672, ptr noundef @.str.5, i32 noundef %1673, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 287, ptr noundef %1676, ptr noundef %1679, ptr noundef %1682, i32 noundef %1684) #11
  br label %1686

1686:                                             ; preds = %1669, %1652
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %1687

1687:                                             ; preds = %1686
  br label %1688

1688:                                             ; preds = %1687
  call void @exit(i32 noundef 1) #13
  unreachable

1689:                                             ; No predecessors!
  br label %1690

1690:                                             ; preds = %1689
  br label %1691

1691:                                             ; preds = %1690, %1633
  br label %1692

1692:                                             ; preds = %1691
  br label %1693

1693:                                             ; preds = %1692
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  %1694 = call i32 @s2n_security_rule_result_free(ptr noundef %65)
  %1695 = getelementptr inbounds %struct.s2n_result, ptr %71, i32 0, i32 0
  store i32 %1694, ptr %1695, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %64) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %72) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %1696 = getelementptr inbounds %struct.s2n_security_policy, ptr %72, i32 0, i32 5
  store ptr %16, ptr %1696, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 50, ptr %73) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %73, ptr align 16 @__const.main.expected_output, i64 50, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %74) #11
  call void @llvm.memset.p0.i64(ptr align 8 %74, i8 0, i64 48, i1 false)
  br label %1697

1697:                                             ; preds = %1693
  %1698 = load i32, ptr @test_count, align 4, !tbaa !5
  %1699 = add nsw i32 %1698, 1
  store i32 %1699, ptr @test_count, align 4, !tbaa !5
  %1700 = call i32 @s2n_security_rule_result_init_output(ptr noundef %74)
  %1701 = getelementptr inbounds %struct.s2n_result, ptr %75, i32 0, i32 0
  store i32 %1700, ptr %1701, align 4
  %1702 = getelementptr inbounds %struct.s2n_result, ptr %75, i32 0, i32 0
  %1703 = load i32, ptr %1702, align 4
  %1704 = call zeroext i1 @s2n_result_is_ok(i32 %1703)
  br i1 %1704, label %1758, label %1705

1705:                                             ; preds = %1697
  br label %1706

1706:                                             ; preds = %1705
  br label %1707

1707:                                             ; preds = %1706
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  %1708 = call ptr @__errno_location() #12
  %1709 = load i32, ptr %1708, align 4, !tbaa !5
  store i32 %1709, ptr %76, align 4, !tbaa !5
  %1710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1711 = call i32 @s2n_print_stacktrace(ptr noundef %1710)
  %1712 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1713 = trunc i8 %1712 to i1
  br i1 %1713, label %1714, label %1736

1714:                                             ; preds = %1707
  %1715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1716 = call i32 @fileno(ptr noundef %1715) #11
  %1717 = call i32 @isatty(i32 noundef %1716) #11
  %1718 = icmp ne i32 %1717, 0
  br i1 %1718, label %1719, label %1736

1719:                                             ; preds = %1714
  %1720 = load i32, ptr %76, align 4, !tbaa !5
  %1721 = call ptr @__errno_location() #12
  store i32 %1720, ptr %1721, align 4, !tbaa !5
  %1722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1723 = load i32, ptr @test_count, align 4, !tbaa !5
  %1724 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1725 = load i32, ptr %1724, align 4, !tbaa !5
  %1726 = call ptr @s2n_strerror(i32 noundef %1725, ptr noundef @.str.4)
  %1727 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1728 = load i32, ptr %1727, align 4, !tbaa !5
  %1729 = call ptr @s2n_strerror_debug(i32 noundef %1728, ptr noundef @.str.4)
  %1730 = call ptr @__errno_location() #12
  %1731 = load i32, ptr %1730, align 4, !tbaa !5
  %1732 = call ptr @strerror(i32 noundef %1731) #11
  %1733 = call ptr @__errno_location() #12
  %1734 = load i32, ptr %1733, align 4, !tbaa !5
  %1735 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1722, ptr noundef @.str.2, i32 noundef %1723, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 299, ptr noundef %1726, ptr noundef %1729, ptr noundef %1732, i32 noundef %1734) #11
  br label %1753

1736:                                             ; preds = %1714, %1707
  %1737 = load i32, ptr %76, align 4, !tbaa !5
  %1738 = call ptr @__errno_location() #12
  store i32 %1737, ptr %1738, align 4, !tbaa !5
  %1739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1740 = load i32, 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 = call ptr @s2n_strerror(i32 noundef %1742, ptr noundef @.str.4)
  %1744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1745 = load i32, ptr %1744, align 4, !tbaa !5
  %1746 = call ptr @s2n_strerror_debug(i32 noundef %1745, ptr noundef @.str.4)
  %1747 = call ptr @__errno_location() #12
  %1748 = load i32, ptr %1747, align 4, !tbaa !5
  %1749 = call ptr @strerror(i32 noundef %1748) #11
  %1750 = call ptr @__errno_location() #12
  %1751 = load i32, ptr %1750, align 4, !tbaa !5
  %1752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1739, ptr noundef @.str.5, i32 noundef %1740, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 299, ptr noundef %1743, ptr noundef %1746, ptr noundef %1749, i32 noundef %1751) #11
  br label %1753

1753:                                             ; preds = %1736, %1719
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  br label %1754

1754:                                             ; preds = %1753
  br label %1755

1755:                                             ; preds = %1754
  call void @exit(i32 noundef 1) #13
  unreachable

1756:                                             ; No predecessors!
  br label %1757

1757:                                             ; preds = %1756
  br label %1758

1758:                                             ; preds = %1757, %1697
  br label %1759

1759:                                             ; preds = %1758
  br label %1760

1760:                                             ; preds = %1759
  br label %1761

1761:                                             ; preds = %1760
  %1762 = load i32, ptr @test_count, align 4, !tbaa !5
  %1763 = add nsw i32 %1762, 1
  store i32 %1763, ptr @test_count, align 4, !tbaa !5
  %1764 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %72, ptr noundef %74)
  %1765 = getelementptr inbounds %struct.s2n_result, ptr %77, i32 0, i32 0
  store i32 %1764, ptr %1765, align 4
  %1766 = getelementptr inbounds %struct.s2n_result, ptr %77, i32 0, i32 0
  %1767 = load i32, ptr %1766, align 4
  %1768 = call zeroext i1 @s2n_result_is_ok(i32 %1767)
  br i1 %1768, label %1822, label %1769

1769:                                             ; preds = %1761
  br label %1770

1770:                                             ; preds = %1769
  br label %1771

1771:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #11
  %1772 = call ptr @__errno_location() #12
  %1773 = load i32, ptr %1772, align 4, !tbaa !5
  store i32 %1773, ptr %78, align 4, !tbaa !5
  %1774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1775 = call i32 @s2n_print_stacktrace(ptr noundef %1774)
  %1776 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1777 = trunc i8 %1776 to i1
  br i1 %1777, label %1778, label %1800

1778:                                             ; preds = %1771
  %1779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1780 = call i32 @fileno(ptr noundef %1779) #11
  %1781 = call i32 @isatty(i32 noundef %1780) #11
  %1782 = icmp ne i32 %1781, 0
  br i1 %1782, label %1783, label %1800

1783:                                             ; preds = %1778
  %1784 = load i32, ptr %78, align 4, !tbaa !5
  %1785 = call ptr @__errno_location() #12
  store i32 %1784, ptr %1785, align 4, !tbaa !5
  %1786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1787 = load i32, ptr @test_count, align 4, !tbaa !5
  %1788 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1789 = load i32, ptr %1788, align 4, !tbaa !5
  %1790 = call ptr @s2n_strerror(i32 noundef %1789, ptr noundef @.str.4)
  %1791 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1792 = load i32, ptr %1791, align 4, !tbaa !5
  %1793 = call ptr @s2n_strerror_debug(i32 noundef %1792, ptr noundef @.str.4)
  %1794 = call ptr @__errno_location() #12
  %1795 = load i32, ptr %1794, align 4, !tbaa !5
  %1796 = call ptr @strerror(i32 noundef %1795) #11
  %1797 = call ptr @__errno_location() #12
  %1798 = load i32, ptr %1797, align 4, !tbaa !5
  %1799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1786, ptr noundef @.str.2, i32 noundef %1787, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 302, ptr noundef %1790, ptr noundef %1793, ptr noundef %1796, i32 noundef %1798) #11
  br label %1817

1800:                                             ; preds = %1778, %1771
  %1801 = load i32, ptr %78, align 4, !tbaa !5
  %1802 = call ptr @__errno_location() #12
  store i32 %1801, ptr %1802, align 4, !tbaa !5
  %1803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1804 = load i32, ptr @test_count, align 4, !tbaa !5
  %1805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1806 = load i32, ptr %1805, align 4, !tbaa !5
  %1807 = call ptr @s2n_strerror(i32 noundef %1806, ptr noundef @.str.4)
  %1808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1809 = load i32, ptr %1808, align 4, !tbaa !5
  %1810 = call ptr @s2n_strerror_debug(i32 noundef %1809, ptr noundef @.str.4)
  %1811 = call ptr @__errno_location() #12
  %1812 = load i32, ptr %1811, align 4, !tbaa !5
  %1813 = call ptr @strerror(i32 noundef %1812) #11
  %1814 = call ptr @__errno_location() #12
  %1815 = load i32, ptr %1814, align 4, !tbaa !5
  %1816 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1803, ptr noundef @.str.5, i32 noundef %1804, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 302, ptr noundef %1807, ptr noundef %1810, ptr noundef %1813, i32 noundef %1815) #11
  br label %1817

1817:                                             ; preds = %1800, %1783
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #11
  br label %1818

1818:                                             ; preds = %1817
  br label %1819

1819:                                             ; preds = %1818
  call void @exit(i32 noundef 1) #13
  unreachable

1820:                                             ; No predecessors!
  br label %1821

1821:                                             ; preds = %1820
  br label %1822

1822:                                             ; preds = %1821, %1761
  br label %1823

1823:                                             ; preds = %1822
  br label %1824

1824:                                             ; preds = %1823
  br label %1825

1825:                                             ; preds = %1824
  %1826 = load i32, ptr @test_count, align 4, !tbaa !5
  %1827 = add nsw i32 %1826, 1
  store i32 %1827, ptr @test_count, align 4, !tbaa !5
  %1828 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %74, i32 0, i32 0
  %1829 = load i8, ptr %1828, align 8, !tbaa !29, !range !13, !noundef !14
  %1830 = trunc i8 %1829 to i1
  br i1 %1830, label %1884, label %1831

1831:                                             ; preds = %1825
  br label %1832

1832:                                             ; preds = %1831
  br label %1833

1833:                                             ; preds = %1832
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #11
  %1834 = call ptr @__errno_location() #12
  %1835 = load i32, ptr %1834, align 4, !tbaa !5
  store i32 %1835, ptr %79, align 4, !tbaa !5
  %1836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1837 = call i32 @s2n_print_stacktrace(ptr noundef %1836)
  %1838 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1839 = trunc i8 %1838 to i1
  br i1 %1839, label %1840, label %1862

1840:                                             ; preds = %1833
  %1841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1842 = call i32 @fileno(ptr noundef %1841) #11
  %1843 = call i32 @isatty(i32 noundef %1842) #11
  %1844 = icmp ne i32 %1843, 0
  br i1 %1844, label %1845, label %1862

1845:                                             ; preds = %1840
  %1846 = load i32, ptr %79, align 4, !tbaa !5
  %1847 = call ptr @__errno_location() #12
  store i32 %1846, ptr %1847, align 4, !tbaa !5
  %1848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1849 = load i32, ptr @test_count, align 4, !tbaa !5
  %1850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1851 = load i32, ptr %1850, align 4, !tbaa !5
  %1852 = call ptr @s2n_strerror(i32 noundef %1851, ptr noundef @.str.4)
  %1853 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1854 = load i32, ptr %1853, align 4, !tbaa !5
  %1855 = call ptr @s2n_strerror_debug(i32 noundef %1854, ptr noundef @.str.4)
  %1856 = call ptr @__errno_location() #12
  %1857 = load i32, ptr %1856, align 4, !tbaa !5
  %1858 = call ptr @strerror(i32 noundef %1857) #11
  %1859 = call ptr @__errno_location() #12
  %1860 = load i32, ptr %1859, align 4, !tbaa !5
  %1861 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1848, ptr noundef @.str.2, i32 noundef %1849, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 303, ptr noundef %1852, ptr noundef %1855, ptr noundef %1858, i32 noundef %1860) #11
  br label %1879

1862:                                             ; preds = %1840, %1833
  %1863 = load i32, ptr %79, align 4, !tbaa !5
  %1864 = call ptr @__errno_location() #12
  store i32 %1863, ptr %1864, align 4, !tbaa !5
  %1865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1866 = load i32, ptr @test_count, align 4, !tbaa !5
  %1867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1868 = load i32, ptr %1867, align 4, !tbaa !5
  %1869 = call ptr @s2n_strerror(i32 noundef %1868, ptr noundef @.str.4)
  %1870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1871 = load i32, ptr %1870, align 4, !tbaa !5
  %1872 = call ptr @s2n_strerror_debug(i32 noundef %1871, ptr noundef @.str.4)
  %1873 = call ptr @__errno_location() #12
  %1874 = load i32, ptr %1873, align 4, !tbaa !5
  %1875 = call ptr @strerror(i32 noundef %1874) #11
  %1876 = call ptr @__errno_location() #12
  %1877 = load i32, ptr %1876, align 4, !tbaa !5
  %1878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1865, ptr noundef @.str.5, i32 noundef %1866, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 303, ptr noundef %1869, ptr noundef %1872, ptr noundef %1875, i32 noundef %1877) #11
  br label %1879

1879:                                             ; preds = %1862, %1845
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #11
  br label %1880

1880:                                             ; preds = %1879
  br label %1881

1881:                                             ; preds = %1880
  call void @exit(i32 noundef 1) #13
  unreachable

1882:                                             ; No predecessors!
  br label %1883

1883:                                             ; preds = %1882
  br label %1884

1884:                                             ; preds = %1883, %1825
  br label %1885

1885:                                             ; preds = %1884
  br label %1886

1886:                                             ; preds = %1885
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #11
  %1887 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %74, i32 0, i32 2
  %1888 = getelementptr inbounds %struct.s2n_stuffer, ptr %1887, i32 0, i32 2
  %1889 = load i32, ptr %1888, align 4, !tbaa !35
  %1890 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %74, i32 0, i32 2
  %1891 = getelementptr inbounds %struct.s2n_stuffer, ptr %1890, i32 0, i32 1
  %1892 = load i32, ptr %1891, align 8, !tbaa !36
  %1893 = sub i32 %1889, %1892
  %1894 = zext i32 %1893 to i64
  store i64 %1894, ptr %80, align 8, !tbaa !37
  br label %1895

1895:                                             ; preds = %1886
  %1896 = load i32, ptr @test_count, align 4, !tbaa !5
  %1897 = add nsw i32 %1896, 1
  store i32 %1897, ptr @test_count, align 4, !tbaa !5
  %1898 = load i64, ptr %80, align 8, !tbaa !37
  %1899 = icmp eq i64 %1898, 49
  br i1 %1899, label %1953, label %1900

1900:                                             ; preds = %1895
  br label %1901

1901:                                             ; preds = %1900
  br label %1902

1902:                                             ; preds = %1901
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #11
  %1903 = call ptr @__errno_location() #12
  %1904 = load i32, ptr %1903, align 4, !tbaa !5
  store i32 %1904, ptr %81, align 4, !tbaa !5
  %1905 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1906 = call i32 @s2n_print_stacktrace(ptr noundef %1905)
  %1907 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1908 = trunc i8 %1907 to i1
  br i1 %1908, label %1909, label %1931

1909:                                             ; preds = %1902
  %1910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1911 = call i32 @fileno(ptr noundef %1910) #11
  %1912 = call i32 @isatty(i32 noundef %1911) #11
  %1913 = icmp ne i32 %1912, 0
  br i1 %1913, label %1914, label %1931

1914:                                             ; preds = %1909
  %1915 = load i32, ptr %81, align 4, !tbaa !5
  %1916 = call ptr @__errno_location() #12
  store i32 %1915, ptr %1916, align 4, !tbaa !5
  %1917 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1918 = load i32, ptr @test_count, align 4, !tbaa !5
  %1919 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1920 = load i32, ptr %1919, align 4, !tbaa !5
  %1921 = call ptr @s2n_strerror(i32 noundef %1920, ptr noundef @.str.4)
  %1922 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1923 = load i32, ptr %1922, align 4, !tbaa !5
  %1924 = call ptr @s2n_strerror_debug(i32 noundef %1923, ptr noundef @.str.4)
  %1925 = call ptr @__errno_location() #12
  %1926 = load i32, ptr %1925, align 4, !tbaa !5
  %1927 = call ptr @strerror(i32 noundef %1926) #11
  %1928 = call ptr @__errno_location() #12
  %1929 = load i32, ptr %1928, align 4, !tbaa !5
  %1930 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1917, ptr noundef @.str.2, i32 noundef %1918, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 306, ptr noundef %1921, ptr noundef %1924, ptr noundef %1927, i32 noundef %1929) #11
  br label %1948

1931:                                             ; preds = %1909, %1902
  %1932 = load i32, ptr %81, align 4, !tbaa !5
  %1933 = call ptr @__errno_location() #12
  store i32 %1932, ptr %1933, align 4, !tbaa !5
  %1934 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1935 = load i32, ptr @test_count, align 4, !tbaa !5
  %1936 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1937 = load i32, ptr %1936, align 4, !tbaa !5
  %1938 = call ptr @s2n_strerror(i32 noundef %1937, ptr noundef @.str.4)
  %1939 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1940 = load i32, ptr %1939, align 4, !tbaa !5
  %1941 = call ptr @s2n_strerror_debug(i32 noundef %1940, ptr noundef @.str.4)
  %1942 = call ptr @__errno_location() #12
  %1943 = load i32, ptr %1942, align 4, !tbaa !5
  %1944 = call ptr @strerror(i32 noundef %1943) #11
  %1945 = call ptr @__errno_location() #12
  %1946 = load i32, ptr %1945, align 4, !tbaa !5
  %1947 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1934, ptr noundef @.str.5, i32 noundef %1935, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 306, ptr noundef %1938, ptr noundef %1941, ptr noundef %1944, i32 noundef %1946) #11
  br label %1948

1948:                                             ; preds = %1931, %1914
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #11
  br label %1949

1949:                                             ; preds = %1948
  br label %1950

1950:                                             ; preds = %1949
  call void @exit(i32 noundef 1) #13
  unreachable

1951:                                             ; No predecessors!
  br label %1952

1952:                                             ; preds = %1951
  br label %1953

1953:                                             ; preds = %1952, %1895
  br label %1954

1954:                                             ; preds = %1953
  br label %1955

1955:                                             ; preds = %1954
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #11
  %1956 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %74, i32 0, i32 2
  %1957 = load i64, ptr %80, align 8, !tbaa !37
  %1958 = trunc i64 %1957 to i32
  %1959 = call ptr @s2n_stuffer_raw_read(ptr noundef %1956, i32 noundef %1958)
  store ptr %1959, ptr %82, align 8, !tbaa !9
  br label %1960

1960:                                             ; preds = %1955
  %1961 = load i32, ptr @test_count, align 4, !tbaa !5
  %1962 = add nsw i32 %1961, 1
  store i32 %1962, ptr @test_count, align 4, !tbaa !5
  %1963 = load ptr, ptr %82, align 8, !tbaa !9
  %1964 = icmp eq ptr %1963, null
  br i1 %1964, label %1965, label %2018

1965:                                             ; preds = %1960
  br label %1966

1966:                                             ; preds = %1965
  br label %1967

1967:                                             ; preds = %1966
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #11
  %1968 = call ptr @__errno_location() #12
  %1969 = load i32, ptr %1968, align 4, !tbaa !5
  store i32 %1969, ptr %83, align 4, !tbaa !5
  %1970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1971 = call i32 @s2n_print_stacktrace(ptr noundef %1970)
  %1972 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1973 = trunc i8 %1972 to i1
  br i1 %1973, label %1974, label %1996

1974:                                             ; preds = %1967
  %1975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1976 = call i32 @fileno(ptr noundef %1975) #11
  %1977 = call i32 @isatty(i32 noundef %1976) #11
  %1978 = icmp ne i32 %1977, 0
  br i1 %1978, label %1979, label %1996

1979:                                             ; preds = %1974
  %1980 = load i32, ptr %83, align 4, !tbaa !5
  %1981 = call ptr @__errno_location() #12
  store i32 %1980, ptr %1981, align 4, !tbaa !5
  %1982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1983 = load i32, ptr @test_count, align 4, !tbaa !5
  %1984 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1985 = load i32, ptr %1984, align 4, !tbaa !5
  %1986 = call ptr @s2n_strerror(i32 noundef %1985, ptr noundef @.str.4)
  %1987 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1988 = load i32, ptr %1987, align 4, !tbaa !5
  %1989 = call ptr @s2n_strerror_debug(i32 noundef %1988, ptr noundef @.str.4)
  %1990 = call ptr @__errno_location() #12
  %1991 = load i32, ptr %1990, align 4, !tbaa !5
  %1992 = call ptr @strerror(i32 noundef %1991) #11
  %1993 = call ptr @__errno_location() #12
  %1994 = load i32, ptr %1993, align 4, !tbaa !5
  %1995 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1982, ptr noundef @.str.2, i32 noundef %1983, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 308, ptr noundef %1986, ptr noundef %1989, ptr noundef %1992, i32 noundef %1994) #11
  br label %2013

1996:                                             ; preds = %1974, %1967
  %1997 = load i32, ptr %83, align 4, !tbaa !5
  %1998 = call ptr @__errno_location() #12
  store i32 %1997, ptr %1998, align 4, !tbaa !5
  %1999 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2000 = load i32, ptr @test_count, align 4, !tbaa !5
  %2001 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2002 = load i32, ptr %2001, align 4, !tbaa !5
  %2003 = call ptr @s2n_strerror(i32 noundef %2002, ptr noundef @.str.4)
  %2004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2005 = load i32, ptr %2004, align 4, !tbaa !5
  %2006 = call ptr @s2n_strerror_debug(i32 noundef %2005, ptr noundef @.str.4)
  %2007 = call ptr @__errno_location() #12
  %2008 = load i32, ptr %2007, align 4, !tbaa !5
  %2009 = call ptr @strerror(i32 noundef %2008) #11
  %2010 = call ptr @__errno_location() #12
  %2011 = load i32, ptr %2010, align 4, !tbaa !5
  %2012 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1999, ptr noundef @.str.5, i32 noundef %2000, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 308, ptr noundef %2003, ptr noundef %2006, ptr noundef %2009, i32 noundef %2011) #11
  br label %2013

2013:                                             ; preds = %1996, %1979
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  br label %2014

2014:                                             ; preds = %2013
  br label %2015

2015:                                             ; preds = %2014
  call void @exit(i32 noundef 1) #13
  unreachable

2016:                                             ; No predecessors!
  br label %2017

2017:                                             ; preds = %2016
  br label %2018

2018:                                             ; preds = %2017, %1960
  br label %2019

2019:                                             ; preds = %2018
  br label %2020

2020:                                             ; preds = %2019
  br label %2021

2021:                                             ; preds = %2020
  %2022 = load i64, ptr %80, align 8, !tbaa !37
  %2023 = icmp ne i64 %2022, 0
  br i1 %2023, label %2024, label %2089

2024:                                             ; preds = %2021
  br label %2025

2025:                                             ; preds = %2024
  %2026 = load i32, ptr @test_count, align 4, !tbaa !5
  %2027 = add nsw i32 %2026, 1
  store i32 %2027, ptr @test_count, align 4, !tbaa !5
  %2028 = getelementptr inbounds [50 x i8], ptr %73, i64 0, i64 0
  %2029 = load ptr, ptr %82, align 8, !tbaa !9
  %2030 = load i64, ptr %80, align 8, !tbaa !37
  %2031 = call i32 @memcmp(ptr noundef %2028, ptr noundef %2029, i64 noundef %2030) #14
  %2032 = icmp eq i32 %2031, 0
  br i1 %2032, label %2086, label %2033

2033:                                             ; preds = %2025
  br label %2034

2034:                                             ; preds = %2033
  br label %2035

2035:                                             ; preds = %2034
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #11
  %2036 = call ptr @__errno_location() #12
  %2037 = load i32, ptr %2036, align 4, !tbaa !5
  store i32 %2037, ptr %84, align 4, !tbaa !5
  %2038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2039 = call i32 @s2n_print_stacktrace(ptr noundef %2038)
  %2040 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2041 = trunc i8 %2040 to i1
  br i1 %2041, label %2042, label %2064

2042:                                             ; preds = %2035
  %2043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2044 = call i32 @fileno(ptr noundef %2043) #11
  %2045 = call i32 @isatty(i32 noundef %2044) #11
  %2046 = icmp ne i32 %2045, 0
  br i1 %2046, label %2047, label %2064

2047:                                             ; preds = %2042
  %2048 = load i32, ptr %84, align 4, !tbaa !5
  %2049 = call ptr @__errno_location() #12
  store i32 %2048, ptr %2049, align 4, !tbaa !5
  %2050 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2051 = load i32, ptr @test_count, align 4, !tbaa !5
  %2052 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2053 = load i32, ptr %2052, align 4, !tbaa !5
  %2054 = call ptr @s2n_strerror(i32 noundef %2053, ptr noundef @.str.4)
  %2055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2056 = load i32, ptr %2055, align 4, !tbaa !5
  %2057 = call ptr @s2n_strerror_debug(i32 noundef %2056, ptr noundef @.str.4)
  %2058 = call ptr @__errno_location() #12
  %2059 = load i32, ptr %2058, align 4, !tbaa !5
  %2060 = call ptr @strerror(i32 noundef %2059) #11
  %2061 = call ptr @__errno_location() #12
  %2062 = load i32, ptr %2061, align 4, !tbaa !5
  %2063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2050, ptr noundef @.str.2, i32 noundef %2051, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 309, ptr noundef %2054, ptr noundef %2057, ptr noundef %2060, i32 noundef %2062) #11
  br label %2081

2064:                                             ; preds = %2042, %2035
  %2065 = load i32, ptr %84, align 4, !tbaa !5
  %2066 = call ptr @__errno_location() #12
  store i32 %2065, ptr %2066, align 4, !tbaa !5
  %2067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2068 = load i32, ptr @test_count, align 4, !tbaa !5
  %2069 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2070 = load i32, ptr %2069, align 4, !tbaa !5
  %2071 = call ptr @s2n_strerror(i32 noundef %2070, ptr noundef @.str.4)
  %2072 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2073 = load i32, ptr %2072, align 4, !tbaa !5
  %2074 = call ptr @s2n_strerror_debug(i32 noundef %2073, ptr noundef @.str.4)
  %2075 = call ptr @__errno_location() #12
  %2076 = load i32, ptr %2075, align 4, !tbaa !5
  %2077 = call ptr @strerror(i32 noundef %2076) #11
  %2078 = call ptr @__errno_location() #12
  %2079 = load i32, ptr %2078, align 4, !tbaa !5
  %2080 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2067, ptr noundef @.str.5, i32 noundef %2068, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 309, ptr noundef %2071, ptr noundef %2074, ptr noundef %2077, i32 noundef %2079) #11
  br label %2081

2081:                                             ; preds = %2064, %2047
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  br label %2082

2082:                                             ; preds = %2081
  br label %2083

2083:                                             ; preds = %2082
  call void @exit(i32 noundef 1) #13
  unreachable

2084:                                             ; No predecessors!
  br label %2085

2085:                                             ; preds = %2084
  br label %2086

2086:                                             ; preds = %2085, %2025
  br label %2087

2087:                                             ; preds = %2086
  br label %2088

2088:                                             ; preds = %2087
  br label %2089

2089:                                             ; preds = %2088, %2021
  br label %2090

2090:                                             ; preds = %2089
  br label %2091

2091:                                             ; preds = %2090
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  %2092 = call i32 @s2n_security_rule_result_free(ptr noundef %74)
  %2093 = getelementptr inbounds %struct.s2n_result, ptr %85, i32 0, i32 0
  store i32 %2092, ptr %2093, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 50, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %72) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %86) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %86, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %2094 = getelementptr inbounds %struct.s2n_security_policy, ptr %86, i32 0, i32 1
  store ptr %12, ptr %2094, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 145, ptr %87) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %87, ptr align 16 @__const.main.expected_output.19, i64 145, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %88) #11
  call void @llvm.memset.p0.i64(ptr align 8 %88, i8 0, i64 48, i1 false)
  br label %2095

2095:                                             ; preds = %2091
  %2096 = load i32, ptr @test_count, align 4, !tbaa !5
  %2097 = add nsw i32 %2096, 1
  store i32 %2097, ptr @test_count, align 4, !tbaa !5
  %2098 = call i32 @s2n_security_rule_result_init_output(ptr noundef %88)
  %2099 = getelementptr inbounds %struct.s2n_result, ptr %89, i32 0, i32 0
  store i32 %2098, ptr %2099, align 4
  %2100 = getelementptr inbounds %struct.s2n_result, ptr %89, i32 0, i32 0
  %2101 = load i32, ptr %2100, align 4
  %2102 = call zeroext i1 @s2n_result_is_ok(i32 %2101)
  br i1 %2102, label %2156, label %2103

2103:                                             ; preds = %2095
  br label %2104

2104:                                             ; preds = %2103
  br label %2105

2105:                                             ; preds = %2104
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #11
  %2106 = call ptr @__errno_location() #12
  %2107 = load i32, ptr %2106, align 4, !tbaa !5
  store i32 %2107, ptr %90, align 4, !tbaa !5
  %2108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2109 = call i32 @s2n_print_stacktrace(ptr noundef %2108)
  %2110 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2111 = trunc i8 %2110 to i1
  br i1 %2111, label %2112, label %2134

2112:                                             ; preds = %2105
  %2113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2114 = call i32 @fileno(ptr noundef %2113) #11
  %2115 = call i32 @isatty(i32 noundef %2114) #11
  %2116 = icmp ne i32 %2115, 0
  br i1 %2116, label %2117, label %2134

2117:                                             ; preds = %2112
  %2118 = load i32, ptr %90, align 4, !tbaa !5
  %2119 = call ptr @__errno_location() #12
  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() #12
  %2129 = load i32, ptr %2128, align 4, !tbaa !5
  %2130 = call ptr @strerror(i32 noundef %2129) #11
  %2131 = call ptr @__errno_location() #12
  %2132 = load i32, ptr %2131, align 4, !tbaa !5
  %2133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2120, ptr noundef @.str.2, i32 noundef %2121, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 322, ptr noundef %2124, ptr noundef %2127, ptr noundef %2130, i32 noundef %2132) #11
  br label %2151

2134:                                             ; preds = %2112, %2105
  %2135 = load i32, ptr %90, align 4, !tbaa !5
  %2136 = call ptr @__errno_location() #12
  store i32 %2135, ptr %2136, align 4, !tbaa !5
  %2137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2138 = load i32, ptr @test_count, align 4, !tbaa !5
  %2139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2140 = load i32, ptr %2139, align 4, !tbaa !5
  %2141 = call ptr @s2n_strerror(i32 noundef %2140, ptr noundef @.str.4)
  %2142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2143 = load i32, ptr %2142, align 4, !tbaa !5
  %2144 = call ptr @s2n_strerror_debug(i32 noundef %2143, ptr noundef @.str.4)
  %2145 = call ptr @__errno_location() #12
  %2146 = load i32, ptr %2145, align 4, !tbaa !5
  %2147 = call ptr @strerror(i32 noundef %2146) #11
  %2148 = call ptr @__errno_location() #12
  %2149 = load i32, ptr %2148, align 4, !tbaa !5
  %2150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2137, ptr noundef @.str.5, i32 noundef %2138, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 322, ptr noundef %2141, ptr noundef %2144, ptr noundef %2147, i32 noundef %2149) #11
  br label %2151

2151:                                             ; preds = %2134, %2117
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #11
  br label %2152

2152:                                             ; preds = %2151
  br label %2153

2153:                                             ; preds = %2152
  call void @exit(i32 noundef 1) #13
  unreachable

2154:                                             ; No predecessors!
  br label %2155

2155:                                             ; preds = %2154
  br label %2156

2156:                                             ; preds = %2155, %2095
  br label %2157

2157:                                             ; preds = %2156
  br label %2158

2158:                                             ; preds = %2157
  br label %2159

2159:                                             ; preds = %2158
  %2160 = load i32, ptr @test_count, align 4, !tbaa !5
  %2161 = add nsw i32 %2160, 1
  store i32 %2161, ptr @test_count, align 4, !tbaa !5
  %2162 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %86, ptr noundef %88)
  %2163 = getelementptr inbounds %struct.s2n_result, ptr %91, i32 0, i32 0
  store i32 %2162, ptr %2163, align 4
  %2164 = getelementptr inbounds %struct.s2n_result, ptr %91, i32 0, i32 0
  %2165 = load i32, ptr %2164, align 4
  %2166 = call zeroext i1 @s2n_result_is_ok(i32 %2165)
  br i1 %2166, label %2220, label %2167

2167:                                             ; preds = %2159
  br label %2168

2168:                                             ; preds = %2167
  br label %2169

2169:                                             ; preds = %2168
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #11
  %2170 = call ptr @__errno_location() #12
  %2171 = load i32, ptr %2170, align 4, !tbaa !5
  store i32 %2171, ptr %92, align 4, !tbaa !5
  %2172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2173 = call i32 @s2n_print_stacktrace(ptr noundef %2172)
  %2174 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2175 = trunc i8 %2174 to i1
  br i1 %2175, label %2176, label %2198

2176:                                             ; preds = %2169
  %2177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2178 = call i32 @fileno(ptr noundef %2177) #11
  %2179 = call i32 @isatty(i32 noundef %2178) #11
  %2180 = icmp ne i32 %2179, 0
  br i1 %2180, label %2181, label %2198

2181:                                             ; preds = %2176
  %2182 = load i32, ptr %92, align 4, !tbaa !5
  %2183 = call ptr @__errno_location() #12
  store i32 %2182, ptr %2183, align 4, !tbaa !5
  %2184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2185 = load i32, ptr @test_count, align 4, !tbaa !5
  %2186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2187 = load i32, ptr %2186, align 4, !tbaa !5
  %2188 = call ptr @s2n_strerror(i32 noundef %2187, ptr noundef @.str.4)
  %2189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2190 = load i32, ptr %2189, align 4, !tbaa !5
  %2191 = call ptr @s2n_strerror_debug(i32 noundef %2190, ptr noundef @.str.4)
  %2192 = call ptr @__errno_location() #12
  %2193 = load i32, ptr %2192, align 4, !tbaa !5
  %2194 = call ptr @strerror(i32 noundef %2193) #11
  %2195 = call ptr @__errno_location() #12
  %2196 = load i32, ptr %2195, align 4, !tbaa !5
  %2197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2184, ptr noundef @.str.2, i32 noundef %2185, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 325, ptr noundef %2188, ptr noundef %2191, ptr noundef %2194, i32 noundef %2196) #11
  br label %2215

2198:                                             ; preds = %2176, %2169
  %2199 = load i32, ptr %92, align 4, !tbaa !5
  %2200 = call ptr @__errno_location() #12
  store i32 %2199, ptr %2200, align 4, !tbaa !5
  %2201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2202 = load i32, ptr @test_count, align 4, !tbaa !5
  %2203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2204 = load i32, ptr %2203, align 4, !tbaa !5
  %2205 = call ptr @s2n_strerror(i32 noundef %2204, ptr noundef @.str.4)
  %2206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2207 = load i32, ptr %2206, align 4, !tbaa !5
  %2208 = call ptr @s2n_strerror_debug(i32 noundef %2207, ptr noundef @.str.4)
  %2209 = call ptr @__errno_location() #12
  %2210 = load i32, ptr %2209, align 4, !tbaa !5
  %2211 = call ptr @strerror(i32 noundef %2210) #11
  %2212 = call ptr @__errno_location() #12
  %2213 = load i32, ptr %2212, align 4, !tbaa !5
  %2214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2201, ptr noundef @.str.5, i32 noundef %2202, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 325, ptr noundef %2205, ptr noundef %2208, ptr noundef %2211, i32 noundef %2213) #11
  br label %2215

2215:                                             ; preds = %2198, %2181
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  br label %2216

2216:                                             ; preds = %2215
  br label %2217

2217:                                             ; preds = %2216
  call void @exit(i32 noundef 1) #13
  unreachable

2218:                                             ; No predecessors!
  br label %2219

2219:                                             ; preds = %2218
  br label %2220

2220:                                             ; preds = %2219, %2159
  br label %2221

2221:                                             ; preds = %2220
  br label %2222

2222:                                             ; preds = %2221
  br label %2223

2223:                                             ; preds = %2222
  %2224 = load i32, ptr @test_count, align 4, !tbaa !5
  %2225 = add nsw i32 %2224, 1
  store i32 %2225, ptr @test_count, align 4, !tbaa !5
  %2226 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %88, i32 0, i32 0
  %2227 = load i8, ptr %2226, align 8, !tbaa !29, !range !13, !noundef !14
  %2228 = trunc i8 %2227 to i1
  br i1 %2228, label %2282, label %2229

2229:                                             ; preds = %2223
  br label %2230

2230:                                             ; preds = %2229
  br label %2231

2231:                                             ; preds = %2230
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #11
  %2232 = call ptr @__errno_location() #12
  %2233 = load i32, ptr %2232, align 4, !tbaa !5
  store i32 %2233, ptr %93, align 4, !tbaa !5
  %2234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2235 = call i32 @s2n_print_stacktrace(ptr noundef %2234)
  %2236 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2237 = trunc i8 %2236 to i1
  br i1 %2237, label %2238, label %2260

2238:                                             ; preds = %2231
  %2239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2240 = call i32 @fileno(ptr noundef %2239) #11
  %2241 = call i32 @isatty(i32 noundef %2240) #11
  %2242 = icmp ne i32 %2241, 0
  br i1 %2242, label %2243, label %2260

2243:                                             ; preds = %2238
  %2244 = load i32, ptr %93, align 4, !tbaa !5
  %2245 = call ptr @__errno_location() #12
  store i32 %2244, ptr %2245, align 4, !tbaa !5
  %2246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2247 = load i32, ptr @test_count, align 4, !tbaa !5
  %2248 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2249 = load i32, ptr %2248, align 4, !tbaa !5
  %2250 = call ptr @s2n_strerror(i32 noundef %2249, ptr noundef @.str.4)
  %2251 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2252 = load i32, ptr %2251, align 4, !tbaa !5
  %2253 = call ptr @s2n_strerror_debug(i32 noundef %2252, ptr noundef @.str.4)
  %2254 = call ptr @__errno_location() #12
  %2255 = load i32, ptr %2254, align 4, !tbaa !5
  %2256 = call ptr @strerror(i32 noundef %2255) #11
  %2257 = call ptr @__errno_location() #12
  %2258 = load i32, ptr %2257, align 4, !tbaa !5
  %2259 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2246, ptr noundef @.str.2, i32 noundef %2247, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 326, ptr noundef %2250, ptr noundef %2253, ptr noundef %2256, i32 noundef %2258) #11
  br label %2277

2260:                                             ; preds = %2238, %2231
  %2261 = load i32, ptr %93, align 4, !tbaa !5
  %2262 = call ptr @__errno_location() #12
  store i32 %2261, ptr %2262, align 4, !tbaa !5
  %2263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2264 = load i32, ptr @test_count, align 4, !tbaa !5
  %2265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2266 = load i32, ptr %2265, align 4, !tbaa !5
  %2267 = call ptr @s2n_strerror(i32 noundef %2266, ptr noundef @.str.4)
  %2268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2269 = load i32, ptr %2268, align 4, !tbaa !5
  %2270 = call ptr @s2n_strerror_debug(i32 noundef %2269, ptr noundef @.str.4)
  %2271 = call ptr @__errno_location() #12
  %2272 = load i32, ptr %2271, align 4, !tbaa !5
  %2273 = call ptr @strerror(i32 noundef %2272) #11
  %2274 = call ptr @__errno_location() #12
  %2275 = load i32, ptr %2274, align 4, !tbaa !5
  %2276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2263, ptr noundef @.str.5, i32 noundef %2264, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 326, ptr noundef %2267, ptr noundef %2270, ptr noundef %2273, i32 noundef %2275) #11
  br label %2277

2277:                                             ; preds = %2260, %2243
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #11
  br label %2278

2278:                                             ; preds = %2277
  br label %2279

2279:                                             ; preds = %2278
  call void @exit(i32 noundef 1) #13
  unreachable

2280:                                             ; No predecessors!
  br label %2281

2281:                                             ; preds = %2280
  br label %2282

2282:                                             ; preds = %2281, %2223
  br label %2283

2283:                                             ; preds = %2282
  br label %2284

2284:                                             ; preds = %2283
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #11
  %2285 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %88, i32 0, i32 2
  %2286 = getelementptr inbounds %struct.s2n_stuffer, ptr %2285, i32 0, i32 2
  %2287 = load i32, ptr %2286, align 4, !tbaa !35
  %2288 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %88, i32 0, i32 2
  %2289 = getelementptr inbounds %struct.s2n_stuffer, ptr %2288, i32 0, i32 1
  %2290 = load i32, ptr %2289, align 8, !tbaa !36
  %2291 = sub i32 %2287, %2290
  %2292 = zext i32 %2291 to i64
  store i64 %2292, ptr %94, align 8, !tbaa !37
  br label %2293

2293:                                             ; preds = %2284
  %2294 = load i32, ptr @test_count, align 4, !tbaa !5
  %2295 = add nsw i32 %2294, 1
  store i32 %2295, ptr @test_count, align 4, !tbaa !5
  %2296 = load i64, ptr %94, align 8, !tbaa !37
  %2297 = icmp eq i64 %2296, 144
  br i1 %2297, label %2351, label %2298

2298:                                             ; preds = %2293
  br label %2299

2299:                                             ; preds = %2298
  br label %2300

2300:                                             ; preds = %2299
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #11
  %2301 = call ptr @__errno_location() #12
  %2302 = load i32, ptr %2301, align 4, !tbaa !5
  store i32 %2302, ptr %95, align 4, !tbaa !5
  %2303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2304 = call i32 @s2n_print_stacktrace(ptr noundef %2303)
  %2305 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2306 = trunc i8 %2305 to i1
  br i1 %2306, label %2307, label %2329

2307:                                             ; preds = %2300
  %2308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2309 = call i32 @fileno(ptr noundef %2308) #11
  %2310 = call i32 @isatty(i32 noundef %2309) #11
  %2311 = icmp ne i32 %2310, 0
  br i1 %2311, label %2312, label %2329

2312:                                             ; preds = %2307
  %2313 = load i32, ptr %95, align 4, !tbaa !5
  %2314 = call ptr @__errno_location() #12
  store i32 %2313, ptr %2314, align 4, !tbaa !5
  %2315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2316 = load i32, ptr @test_count, align 4, !tbaa !5
  %2317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2318 = load i32, ptr %2317, align 4, !tbaa !5
  %2319 = call ptr @s2n_strerror(i32 noundef %2318, ptr noundef @.str.4)
  %2320 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2321 = load i32, ptr %2320, align 4, !tbaa !5
  %2322 = call ptr @s2n_strerror_debug(i32 noundef %2321, ptr noundef @.str.4)
  %2323 = call ptr @__errno_location() #12
  %2324 = load i32, ptr %2323, align 4, !tbaa !5
  %2325 = call ptr @strerror(i32 noundef %2324) #11
  %2326 = call ptr @__errno_location() #12
  %2327 = load i32, ptr %2326, align 4, !tbaa !5
  %2328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2315, ptr noundef @.str.2, i32 noundef %2316, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 329, ptr noundef %2319, ptr noundef %2322, ptr noundef %2325, i32 noundef %2327) #11
  br label %2346

2329:                                             ; preds = %2307, %2300
  %2330 = load i32, ptr %95, align 4, !tbaa !5
  %2331 = call ptr @__errno_location() #12
  store i32 %2330, ptr %2331, align 4, !tbaa !5
  %2332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2333 = load i32, ptr @test_count, align 4, !tbaa !5
  %2334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2335 = load i32, ptr %2334, align 4, !tbaa !5
  %2336 = call ptr @s2n_strerror(i32 noundef %2335, ptr noundef @.str.4)
  %2337 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2338 = load i32, ptr %2337, align 4, !tbaa !5
  %2339 = call ptr @s2n_strerror_debug(i32 noundef %2338, ptr noundef @.str.4)
  %2340 = call ptr @__errno_location() #12
  %2341 = load i32, ptr %2340, align 4, !tbaa !5
  %2342 = call ptr @strerror(i32 noundef %2341) #11
  %2343 = call ptr @__errno_location() #12
  %2344 = load i32, ptr %2343, align 4, !tbaa !5
  %2345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2332, ptr noundef @.str.5, i32 noundef %2333, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 329, ptr noundef %2336, ptr noundef %2339, ptr noundef %2342, i32 noundef %2344) #11
  br label %2346

2346:                                             ; preds = %2329, %2312
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #11
  br label %2347

2347:                                             ; preds = %2346
  br label %2348

2348:                                             ; preds = %2347
  call void @exit(i32 noundef 1) #13
  unreachable

2349:                                             ; No predecessors!
  br label %2350

2350:                                             ; preds = %2349
  br label %2351

2351:                                             ; preds = %2350, %2293
  br label %2352

2352:                                             ; preds = %2351
  br label %2353

2353:                                             ; preds = %2352
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #11
  %2354 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %88, i32 0, i32 2
  %2355 = load i64, ptr %94, align 8, !tbaa !37
  %2356 = trunc i64 %2355 to i32
  %2357 = call ptr @s2n_stuffer_raw_read(ptr noundef %2354, i32 noundef %2356)
  store ptr %2357, ptr %96, align 8, !tbaa !9
  br label %2358

2358:                                             ; preds = %2353
  %2359 = load i32, ptr @test_count, align 4, !tbaa !5
  %2360 = add nsw i32 %2359, 1
  store i32 %2360, ptr @test_count, align 4, !tbaa !5
  %2361 = load ptr, ptr %96, align 8, !tbaa !9
  %2362 = icmp eq ptr %2361, null
  br i1 %2362, label %2363, label %2416

2363:                                             ; preds = %2358
  br label %2364

2364:                                             ; preds = %2363
  br label %2365

2365:                                             ; preds = %2364
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #11
  %2366 = call ptr @__errno_location() #12
  %2367 = load i32, ptr %2366, align 4, !tbaa !5
  store i32 %2367, ptr %97, align 4, !tbaa !5
  %2368 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2369 = call i32 @s2n_print_stacktrace(ptr noundef %2368)
  %2370 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2371 = trunc i8 %2370 to i1
  br i1 %2371, label %2372, label %2394

2372:                                             ; preds = %2365
  %2373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2374 = call i32 @fileno(ptr noundef %2373) #11
  %2375 = call i32 @isatty(i32 noundef %2374) #11
  %2376 = icmp ne i32 %2375, 0
  br i1 %2376, label %2377, label %2394

2377:                                             ; preds = %2372
  %2378 = load i32, ptr %97, align 4, !tbaa !5
  %2379 = call ptr @__errno_location() #12
  store i32 %2378, ptr %2379, align 4, !tbaa !5
  %2380 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2381 = load i32, ptr @test_count, align 4, !tbaa !5
  %2382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2383 = load i32, ptr %2382, align 4, !tbaa !5
  %2384 = call ptr @s2n_strerror(i32 noundef %2383, ptr noundef @.str.4)
  %2385 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2386 = load i32, ptr %2385, align 4, !tbaa !5
  %2387 = call ptr @s2n_strerror_debug(i32 noundef %2386, ptr noundef @.str.4)
  %2388 = call ptr @__errno_location() #12
  %2389 = load i32, ptr %2388, align 4, !tbaa !5
  %2390 = call ptr @strerror(i32 noundef %2389) #11
  %2391 = call ptr @__errno_location() #12
  %2392 = load i32, ptr %2391, align 4, !tbaa !5
  %2393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2380, ptr noundef @.str.2, i32 noundef %2381, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 331, ptr noundef %2384, ptr noundef %2387, ptr noundef %2390, i32 noundef %2392) #11
  br label %2411

2394:                                             ; preds = %2372, %2365
  %2395 = load i32, ptr %97, align 4, !tbaa !5
  %2396 = call ptr @__errno_location() #12
  store i32 %2395, ptr %2396, align 4, !tbaa !5
  %2397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2398 = load i32, ptr @test_count, align 4, !tbaa !5
  %2399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2400 = load i32, ptr %2399, align 4, !tbaa !5
  %2401 = call ptr @s2n_strerror(i32 noundef %2400, ptr noundef @.str.4)
  %2402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2403 = load i32, ptr %2402, align 4, !tbaa !5
  %2404 = call ptr @s2n_strerror_debug(i32 noundef %2403, ptr noundef @.str.4)
  %2405 = call ptr @__errno_location() #12
  %2406 = load i32, ptr %2405, align 4, !tbaa !5
  %2407 = call ptr @strerror(i32 noundef %2406) #11
  %2408 = call ptr @__errno_location() #12
  %2409 = load i32, ptr %2408, align 4, !tbaa !5
  %2410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2397, ptr noundef @.str.5, i32 noundef %2398, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 331, ptr noundef %2401, ptr noundef %2404, ptr noundef %2407, i32 noundef %2409) #11
  br label %2411

2411:                                             ; preds = %2394, %2377
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #11
  br label %2412

2412:                                             ; preds = %2411
  br label %2413

2413:                                             ; preds = %2412
  call void @exit(i32 noundef 1) #13
  unreachable

2414:                                             ; No predecessors!
  br label %2415

2415:                                             ; preds = %2414
  br label %2416

2416:                                             ; preds = %2415, %2358
  br label %2417

2417:                                             ; preds = %2416
  br label %2418

2418:                                             ; preds = %2417
  br label %2419

2419:                                             ; preds = %2418
  %2420 = load i64, ptr %94, align 8, !tbaa !37
  %2421 = icmp ne i64 %2420, 0
  br i1 %2421, label %2422, label %2487

2422:                                             ; preds = %2419
  br label %2423

2423:                                             ; preds = %2422
  %2424 = load i32, ptr @test_count, align 4, !tbaa !5
  %2425 = add nsw i32 %2424, 1
  store i32 %2425, ptr @test_count, align 4, !tbaa !5
  %2426 = getelementptr inbounds [145 x i8], ptr %87, i64 0, i64 0
  %2427 = load ptr, ptr %96, align 8, !tbaa !9
  %2428 = load i64, ptr %94, align 8, !tbaa !37
  %2429 = call i32 @memcmp(ptr noundef %2426, ptr noundef %2427, i64 noundef %2428) #14
  %2430 = icmp eq i32 %2429, 0
  br i1 %2430, label %2484, label %2431

2431:                                             ; preds = %2423
  br label %2432

2432:                                             ; preds = %2431
  br label %2433

2433:                                             ; preds = %2432
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #11
  %2434 = call ptr @__errno_location() #12
  %2435 = load i32, ptr %2434, align 4, !tbaa !5
  store i32 %2435, ptr %98, align 4, !tbaa !5
  %2436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2437 = call i32 @s2n_print_stacktrace(ptr noundef %2436)
  %2438 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2439 = trunc i8 %2438 to i1
  br i1 %2439, label %2440, label %2462

2440:                                             ; preds = %2433
  %2441 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2442 = call i32 @fileno(ptr noundef %2441) #11
  %2443 = call i32 @isatty(i32 noundef %2442) #11
  %2444 = icmp ne i32 %2443, 0
  br i1 %2444, label %2445, label %2462

2445:                                             ; preds = %2440
  %2446 = load i32, ptr %98, align 4, !tbaa !5
  %2447 = call ptr @__errno_location() #12
  store i32 %2446, ptr %2447, align 4, !tbaa !5
  %2448 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2449 = load i32, ptr @test_count, align 4, !tbaa !5
  %2450 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2451 = load i32, ptr %2450, align 4, !tbaa !5
  %2452 = call ptr @s2n_strerror(i32 noundef %2451, ptr noundef @.str.4)
  %2453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2454 = load i32, ptr %2453, align 4, !tbaa !5
  %2455 = call ptr @s2n_strerror_debug(i32 noundef %2454, ptr noundef @.str.4)
  %2456 = call ptr @__errno_location() #12
  %2457 = load i32, ptr %2456, align 4, !tbaa !5
  %2458 = call ptr @strerror(i32 noundef %2457) #11
  %2459 = call ptr @__errno_location() #12
  %2460 = load i32, ptr %2459, align 4, !tbaa !5
  %2461 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2448, ptr noundef @.str.2, i32 noundef %2449, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 332, ptr noundef %2452, ptr noundef %2455, ptr noundef %2458, i32 noundef %2460) #11
  br label %2479

2462:                                             ; preds = %2440, %2433
  %2463 = load i32, ptr %98, align 4, !tbaa !5
  %2464 = call ptr @__errno_location() #12
  store i32 %2463, ptr %2464, align 4, !tbaa !5
  %2465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2466 = load i32, ptr @test_count, align 4, !tbaa !5
  %2467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2468 = load i32, ptr %2467, align 4, !tbaa !5
  %2469 = call ptr @s2n_strerror(i32 noundef %2468, ptr noundef @.str.4)
  %2470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2471 = load i32, ptr %2470, align 4, !tbaa !5
  %2472 = call ptr @s2n_strerror_debug(i32 noundef %2471, ptr noundef @.str.4)
  %2473 = call ptr @__errno_location() #12
  %2474 = load i32, ptr %2473, align 4, !tbaa !5
  %2475 = call ptr @strerror(i32 noundef %2474) #11
  %2476 = call ptr @__errno_location() #12
  %2477 = load i32, ptr %2476, align 4, !tbaa !5
  %2478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2465, ptr noundef @.str.5, i32 noundef %2466, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 332, ptr noundef %2469, ptr noundef %2472, ptr noundef %2475, i32 noundef %2477) #11
  br label %2479

2479:                                             ; preds = %2462, %2445
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #11
  br label %2480

2480:                                             ; preds = %2479
  br label %2481

2481:                                             ; preds = %2480
  call void @exit(i32 noundef 1) #13
  unreachable

2482:                                             ; No predecessors!
  br label %2483

2483:                                             ; preds = %2482
  br label %2484

2484:                                             ; preds = %2483, %2423
  br label %2485

2485:                                             ; preds = %2484
  br label %2486

2486:                                             ; preds = %2485
  br label %2487

2487:                                             ; preds = %2486, %2419
  br label %2488

2488:                                             ; preds = %2487
  br label %2489

2489:                                             ; preds = %2488
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #11
  %2490 = call i32 @s2n_security_rule_result_free(ptr noundef %88)
  %2491 = getelementptr inbounds %struct.s2n_result, ptr %99, i32 0, i32 0
  store i32 %2490, ptr %2491, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %88) #11
  call void @llvm.lifetime.end.p0(i64 145, ptr %87) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %86) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %100) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %100, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %2492 = getelementptr inbounds %struct.s2n_security_policy, ptr %100, i32 0, i32 1
  store ptr %12, ptr %2492, align 8, !tbaa !22
  %2493 = getelementptr inbounds %struct.s2n_security_policy, ptr %100, i32 0, i32 5
  store ptr %16, ptr %2493, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 194, ptr %101) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %101, ptr align 16 @__const.main.expected_output.20, i64 194, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %102) #11
  call void @llvm.memset.p0.i64(ptr align 8 %102, i8 0, i64 48, i1 false)
  br label %2494

2494:                                             ; preds = %2489
  %2495 = load i32, ptr @test_count, align 4, !tbaa !5
  %2496 = add nsw i32 %2495, 1
  store i32 %2496, ptr @test_count, align 4, !tbaa !5
  %2497 = call i32 @s2n_security_rule_result_init_output(ptr noundef %102)
  %2498 = getelementptr inbounds %struct.s2n_result, ptr %103, i32 0, i32 0
  store i32 %2497, ptr %2498, align 4
  %2499 = getelementptr inbounds %struct.s2n_result, ptr %103, i32 0, i32 0
  %2500 = load i32, ptr %2499, align 4
  %2501 = call zeroext i1 @s2n_result_is_ok(i32 %2500)
  br i1 %2501, label %2555, label %2502

2502:                                             ; preds = %2494
  br label %2503

2503:                                             ; preds = %2502
  br label %2504

2504:                                             ; preds = %2503
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #11
  %2505 = call ptr @__errno_location() #12
  %2506 = load i32, ptr %2505, align 4, !tbaa !5
  store i32 %2506, ptr %104, align 4, !tbaa !5
  %2507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2508 = call i32 @s2n_print_stacktrace(ptr noundef %2507)
  %2509 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2510 = trunc i8 %2509 to i1
  br i1 %2510, label %2511, label %2533

2511:                                             ; preds = %2504
  %2512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2513 = call i32 @fileno(ptr noundef %2512) #11
  %2514 = call i32 @isatty(i32 noundef %2513) #11
  %2515 = icmp ne i32 %2514, 0
  br i1 %2515, label %2516, label %2533

2516:                                             ; preds = %2511
  %2517 = load i32, ptr %104, align 4, !tbaa !5
  %2518 = call ptr @__errno_location() #12
  store i32 %2517, ptr %2518, align 4, !tbaa !5
  %2519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2520 = load i32, ptr @test_count, align 4, !tbaa !5
  %2521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2522 = load i32, ptr %2521, align 4, !tbaa !5
  %2523 = call ptr @s2n_strerror(i32 noundef %2522, ptr noundef @.str.4)
  %2524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2525 = load i32, ptr %2524, align 4, !tbaa !5
  %2526 = call ptr @s2n_strerror_debug(i32 noundef %2525, ptr noundef @.str.4)
  %2527 = call ptr @__errno_location() #12
  %2528 = load i32, ptr %2527, align 4, !tbaa !5
  %2529 = call ptr @strerror(i32 noundef %2528) #11
  %2530 = call ptr @__errno_location() #12
  %2531 = load i32, ptr %2530, align 4, !tbaa !5
  %2532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2519, ptr noundef @.str.2, i32 noundef %2520, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 347, ptr noundef %2523, ptr noundef %2526, ptr noundef %2529, i32 noundef %2531) #11
  br label %2550

2533:                                             ; preds = %2511, %2504
  %2534 = load i32, ptr %104, align 4, !tbaa !5
  %2535 = call ptr @__errno_location() #12
  store i32 %2534, ptr %2535, align 4, !tbaa !5
  %2536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2537 = load i32, ptr @test_count, align 4, !tbaa !5
  %2538 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2539 = load i32, ptr %2538, align 4, !tbaa !5
  %2540 = call ptr @s2n_strerror(i32 noundef %2539, ptr noundef @.str.4)
  %2541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2542 = load i32, ptr %2541, align 4, !tbaa !5
  %2543 = call ptr @s2n_strerror_debug(i32 noundef %2542, ptr noundef @.str.4)
  %2544 = call ptr @__errno_location() #12
  %2545 = load i32, ptr %2544, align 4, !tbaa !5
  %2546 = call ptr @strerror(i32 noundef %2545) #11
  %2547 = call ptr @__errno_location() #12
  %2548 = load i32, ptr %2547, align 4, !tbaa !5
  %2549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2536, ptr noundef @.str.5, i32 noundef %2537, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 347, ptr noundef %2540, ptr noundef %2543, ptr noundef %2546, i32 noundef %2548) #11
  br label %2550

2550:                                             ; preds = %2533, %2516
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #11
  br label %2551

2551:                                             ; preds = %2550
  br label %2552

2552:                                             ; preds = %2551
  call void @exit(i32 noundef 1) #13
  unreachable

2553:                                             ; No predecessors!
  br label %2554

2554:                                             ; preds = %2553
  br label %2555

2555:                                             ; preds = %2554, %2494
  br label %2556

2556:                                             ; preds = %2555
  br label %2557

2557:                                             ; preds = %2556
  br label %2558

2558:                                             ; preds = %2557
  %2559 = load i32, ptr @test_count, align 4, !tbaa !5
  %2560 = add nsw i32 %2559, 1
  store i32 %2560, ptr @test_count, align 4, !tbaa !5
  %2561 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef %100, ptr noundef %102)
  %2562 = getelementptr inbounds %struct.s2n_result, ptr %105, i32 0, i32 0
  store i32 %2561, ptr %2562, align 4
  %2563 = getelementptr inbounds %struct.s2n_result, ptr %105, i32 0, i32 0
  %2564 = load i32, ptr %2563, align 4
  %2565 = call zeroext i1 @s2n_result_is_ok(i32 %2564)
  br i1 %2565, label %2619, label %2566

2566:                                             ; preds = %2558
  br label %2567

2567:                                             ; preds = %2566
  br label %2568

2568:                                             ; preds = %2567
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #11
  %2569 = call ptr @__errno_location() #12
  %2570 = load i32, ptr %2569, align 4, !tbaa !5
  store i32 %2570, ptr %106, align 4, !tbaa !5
  %2571 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2572 = call i32 @s2n_print_stacktrace(ptr noundef %2571)
  %2573 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2574 = trunc i8 %2573 to i1
  br i1 %2574, label %2575, label %2597

2575:                                             ; preds = %2568
  %2576 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2577 = call i32 @fileno(ptr noundef %2576) #11
  %2578 = call i32 @isatty(i32 noundef %2577) #11
  %2579 = icmp ne i32 %2578, 0
  br i1 %2579, label %2580, label %2597

2580:                                             ; preds = %2575
  %2581 = load i32, ptr %106, align 4, !tbaa !5
  %2582 = call ptr @__errno_location() #12
  store i32 %2581, ptr %2582, align 4, !tbaa !5
  %2583 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2584 = load i32, ptr @test_count, align 4, !tbaa !5
  %2585 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2586 = load i32, ptr %2585, align 4, !tbaa !5
  %2587 = call ptr @s2n_strerror(i32 noundef %2586, ptr noundef @.str.4)
  %2588 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2589 = load i32, ptr %2588, align 4, !tbaa !5
  %2590 = call ptr @s2n_strerror_debug(i32 noundef %2589, ptr noundef @.str.4)
  %2591 = call ptr @__errno_location() #12
  %2592 = load i32, ptr %2591, align 4, !tbaa !5
  %2593 = call ptr @strerror(i32 noundef %2592) #11
  %2594 = call ptr @__errno_location() #12
  %2595 = load i32, ptr %2594, align 4, !tbaa !5
  %2596 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2583, ptr noundef @.str.2, i32 noundef %2584, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 350, ptr noundef %2587, ptr noundef %2590, ptr noundef %2593, i32 noundef %2595) #11
  br label %2614

2597:                                             ; preds = %2575, %2568
  %2598 = load i32, ptr %106, align 4, !tbaa !5
  %2599 = call ptr @__errno_location() #12
  store i32 %2598, ptr %2599, align 4, !tbaa !5
  %2600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2601 = load i32, ptr @test_count, align 4, !tbaa !5
  %2602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2603 = load i32, ptr %2602, align 4, !tbaa !5
  %2604 = call ptr @s2n_strerror(i32 noundef %2603, ptr noundef @.str.4)
  %2605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2606 = load i32, ptr %2605, align 4, !tbaa !5
  %2607 = call ptr @s2n_strerror_debug(i32 noundef %2606, ptr noundef @.str.4)
  %2608 = call ptr @__errno_location() #12
  %2609 = load i32, ptr %2608, align 4, !tbaa !5
  %2610 = call ptr @strerror(i32 noundef %2609) #11
  %2611 = call ptr @__errno_location() #12
  %2612 = load i32, ptr %2611, align 4, !tbaa !5
  %2613 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2600, ptr noundef @.str.5, i32 noundef %2601, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 350, ptr noundef %2604, ptr noundef %2607, ptr noundef %2610, i32 noundef %2612) #11
  br label %2614

2614:                                             ; preds = %2597, %2580
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #11
  br label %2615

2615:                                             ; preds = %2614
  br label %2616

2616:                                             ; preds = %2615
  call void @exit(i32 noundef 1) #13
  unreachable

2617:                                             ; No predecessors!
  br label %2618

2618:                                             ; preds = %2617
  br label %2619

2619:                                             ; preds = %2618, %2558
  br label %2620

2620:                                             ; preds = %2619
  br label %2621

2621:                                             ; preds = %2620
  br label %2622

2622:                                             ; preds = %2621
  %2623 = load i32, ptr @test_count, align 4, !tbaa !5
  %2624 = add nsw i32 %2623, 1
  store i32 %2624, ptr @test_count, align 4, !tbaa !5
  %2625 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %102, i32 0, i32 0
  %2626 = load i8, ptr %2625, align 8, !tbaa !29, !range !13, !noundef !14
  %2627 = trunc i8 %2626 to i1
  br i1 %2627, label %2681, label %2628

2628:                                             ; preds = %2622
  br label %2629

2629:                                             ; preds = %2628
  br label %2630

2630:                                             ; preds = %2629
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #11
  %2631 = call ptr @__errno_location() #12
  %2632 = load i32, ptr %2631, align 4, !tbaa !5
  store i32 %2632, ptr %107, align 4, !tbaa !5
  %2633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2634 = call i32 @s2n_print_stacktrace(ptr noundef %2633)
  %2635 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2636 = trunc i8 %2635 to i1
  br i1 %2636, label %2637, label %2659

2637:                                             ; preds = %2630
  %2638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2639 = call i32 @fileno(ptr noundef %2638) #11
  %2640 = call i32 @isatty(i32 noundef %2639) #11
  %2641 = icmp ne i32 %2640, 0
  br i1 %2641, label %2642, label %2659

2642:                                             ; preds = %2637
  %2643 = load i32, ptr %107, align 4, !tbaa !5
  %2644 = call ptr @__errno_location() #12
  store i32 %2643, ptr %2644, align 4, !tbaa !5
  %2645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2646 = load i32, ptr @test_count, align 4, !tbaa !5
  %2647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2648 = load i32, ptr %2647, align 4, !tbaa !5
  %2649 = call ptr @s2n_strerror(i32 noundef %2648, ptr noundef @.str.4)
  %2650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2651 = load i32, ptr %2650, align 4, !tbaa !5
  %2652 = call ptr @s2n_strerror_debug(i32 noundef %2651, ptr noundef @.str.4)
  %2653 = call ptr @__errno_location() #12
  %2654 = load i32, ptr %2653, align 4, !tbaa !5
  %2655 = call ptr @strerror(i32 noundef %2654) #11
  %2656 = call ptr @__errno_location() #12
  %2657 = load i32, ptr %2656, align 4, !tbaa !5
  %2658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2645, ptr noundef @.str.2, i32 noundef %2646, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 351, ptr noundef %2649, ptr noundef %2652, ptr noundef %2655, i32 noundef %2657) #11
  br label %2676

2659:                                             ; preds = %2637, %2630
  %2660 = load i32, ptr %107, align 4, !tbaa !5
  %2661 = call ptr @__errno_location() #12
  store i32 %2660, ptr %2661, align 4, !tbaa !5
  %2662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2663 = load i32, ptr @test_count, align 4, !tbaa !5
  %2664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2665 = load i32, ptr %2664, align 4, !tbaa !5
  %2666 = call ptr @s2n_strerror(i32 noundef %2665, ptr noundef @.str.4)
  %2667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2668 = load i32, ptr %2667, align 4, !tbaa !5
  %2669 = call ptr @s2n_strerror_debug(i32 noundef %2668, ptr noundef @.str.4)
  %2670 = call ptr @__errno_location() #12
  %2671 = load i32, ptr %2670, align 4, !tbaa !5
  %2672 = call ptr @strerror(i32 noundef %2671) #11
  %2673 = call ptr @__errno_location() #12
  %2674 = load i32, ptr %2673, align 4, !tbaa !5
  %2675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2662, ptr noundef @.str.5, i32 noundef %2663, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 351, ptr noundef %2666, ptr noundef %2669, ptr noundef %2672, i32 noundef %2674) #11
  br label %2676

2676:                                             ; preds = %2659, %2642
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #11
  br label %2677

2677:                                             ; preds = %2676
  br label %2678

2678:                                             ; preds = %2677
  call void @exit(i32 noundef 1) #13
  unreachable

2679:                                             ; No predecessors!
  br label %2680

2680:                                             ; preds = %2679
  br label %2681

2681:                                             ; preds = %2680, %2622
  br label %2682

2682:                                             ; preds = %2681
  br label %2683

2683:                                             ; preds = %2682
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #11
  %2684 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %102, i32 0, i32 2
  %2685 = getelementptr inbounds %struct.s2n_stuffer, ptr %2684, i32 0, i32 2
  %2686 = load i32, ptr %2685, align 4, !tbaa !35
  %2687 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %102, i32 0, i32 2
  %2688 = getelementptr inbounds %struct.s2n_stuffer, ptr %2687, i32 0, i32 1
  %2689 = load i32, ptr %2688, align 8, !tbaa !36
  %2690 = sub i32 %2686, %2689
  %2691 = zext i32 %2690 to i64
  store i64 %2691, ptr %108, align 8, !tbaa !37
  br label %2692

2692:                                             ; preds = %2683
  %2693 = load i32, ptr @test_count, align 4, !tbaa !5
  %2694 = add nsw i32 %2693, 1
  store i32 %2694, ptr @test_count, align 4, !tbaa !5
  %2695 = load i64, ptr %108, align 8, !tbaa !37
  %2696 = icmp eq i64 %2695, 193
  br i1 %2696, label %2750, label %2697

2697:                                             ; preds = %2692
  br label %2698

2698:                                             ; preds = %2697
  br label %2699

2699:                                             ; preds = %2698
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #11
  %2700 = call ptr @__errno_location() #12
  %2701 = load i32, ptr %2700, align 4, !tbaa !5
  store i32 %2701, ptr %109, align 4, !tbaa !5
  %2702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2703 = call i32 @s2n_print_stacktrace(ptr noundef %2702)
  %2704 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2705 = trunc i8 %2704 to i1
  br i1 %2705, label %2706, label %2728

2706:                                             ; preds = %2699
  %2707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2708 = call i32 @fileno(ptr noundef %2707) #11
  %2709 = call i32 @isatty(i32 noundef %2708) #11
  %2710 = icmp ne i32 %2709, 0
  br i1 %2710, label %2711, label %2728

2711:                                             ; preds = %2706
  %2712 = load i32, ptr %109, align 4, !tbaa !5
  %2713 = call ptr @__errno_location() #12
  store i32 %2712, ptr %2713, align 4, !tbaa !5
  %2714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2715 = load i32, ptr @test_count, align 4, !tbaa !5
  %2716 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2717 = load i32, ptr %2716, align 4, !tbaa !5
  %2718 = call ptr @s2n_strerror(i32 noundef %2717, ptr noundef @.str.4)
  %2719 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2720 = load i32, ptr %2719, align 4, !tbaa !5
  %2721 = call ptr @s2n_strerror_debug(i32 noundef %2720, ptr noundef @.str.4)
  %2722 = call ptr @__errno_location() #12
  %2723 = load i32, ptr %2722, align 4, !tbaa !5
  %2724 = call ptr @strerror(i32 noundef %2723) #11
  %2725 = call ptr @__errno_location() #12
  %2726 = load i32, ptr %2725, align 4, !tbaa !5
  %2727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2714, ptr noundef @.str.2, i32 noundef %2715, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 354, ptr noundef %2718, ptr noundef %2721, ptr noundef %2724, i32 noundef %2726) #11
  br label %2745

2728:                                             ; preds = %2706, %2699
  %2729 = load i32, ptr %109, align 4, !tbaa !5
  %2730 = call ptr @__errno_location() #12
  store i32 %2729, ptr %2730, align 4, !tbaa !5
  %2731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2732 = load i32, ptr @test_count, align 4, !tbaa !5
  %2733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2734 = load i32, ptr %2733, align 4, !tbaa !5
  %2735 = call ptr @s2n_strerror(i32 noundef %2734, ptr noundef @.str.4)
  %2736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2737 = load i32, ptr %2736, align 4, !tbaa !5
  %2738 = call ptr @s2n_strerror_debug(i32 noundef %2737, ptr noundef @.str.4)
  %2739 = call ptr @__errno_location() #12
  %2740 = load i32, ptr %2739, align 4, !tbaa !5
  %2741 = call ptr @strerror(i32 noundef %2740) #11
  %2742 = call ptr @__errno_location() #12
  %2743 = load i32, ptr %2742, align 4, !tbaa !5
  %2744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2731, ptr noundef @.str.5, i32 noundef %2732, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 354, ptr noundef %2735, ptr noundef %2738, ptr noundef %2741, i32 noundef %2743) #11
  br label %2745

2745:                                             ; preds = %2728, %2711
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #11
  br label %2746

2746:                                             ; preds = %2745
  br label %2747

2747:                                             ; preds = %2746
  call void @exit(i32 noundef 1) #13
  unreachable

2748:                                             ; No predecessors!
  br label %2749

2749:                                             ; preds = %2748
  br label %2750

2750:                                             ; preds = %2749, %2692
  br label %2751

2751:                                             ; preds = %2750
  br label %2752

2752:                                             ; preds = %2751
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #11
  %2753 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %102, i32 0, i32 2
  %2754 = load i64, ptr %108, align 8, !tbaa !37
  %2755 = trunc i64 %2754 to i32
  %2756 = call ptr @s2n_stuffer_raw_read(ptr noundef %2753, i32 noundef %2755)
  store ptr %2756, ptr %110, align 8, !tbaa !9
  br label %2757

2757:                                             ; preds = %2752
  %2758 = load i32, ptr @test_count, align 4, !tbaa !5
  %2759 = add nsw i32 %2758, 1
  store i32 %2759, ptr @test_count, align 4, !tbaa !5
  %2760 = load ptr, ptr %110, align 8, !tbaa !9
  %2761 = icmp eq ptr %2760, null
  br i1 %2761, label %2762, label %2815

2762:                                             ; preds = %2757
  br label %2763

2763:                                             ; preds = %2762
  br label %2764

2764:                                             ; preds = %2763
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #11
  %2765 = call ptr @__errno_location() #12
  %2766 = load i32, ptr %2765, align 4, !tbaa !5
  store i32 %2766, ptr %111, align 4, !tbaa !5
  %2767 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2768 = call i32 @s2n_print_stacktrace(ptr noundef %2767)
  %2769 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2770 = trunc i8 %2769 to i1
  br i1 %2770, label %2771, label %2793

2771:                                             ; preds = %2764
  %2772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2773 = call i32 @fileno(ptr noundef %2772) #11
  %2774 = call i32 @isatty(i32 noundef %2773) #11
  %2775 = icmp ne i32 %2774, 0
  br i1 %2775, label %2776, label %2793

2776:                                             ; preds = %2771
  %2777 = load i32, ptr %111, align 4, !tbaa !5
  %2778 = call ptr @__errno_location() #12
  store i32 %2777, ptr %2778, align 4, !tbaa !5
  %2779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2780 = load i32, ptr @test_count, align 4, !tbaa !5
  %2781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2782 = load i32, ptr %2781, align 4, !tbaa !5
  %2783 = call ptr @s2n_strerror(i32 noundef %2782, ptr noundef @.str.4)
  %2784 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2785 = load i32, ptr %2784, align 4, !tbaa !5
  %2786 = call ptr @s2n_strerror_debug(i32 noundef %2785, ptr noundef @.str.4)
  %2787 = call ptr @__errno_location() #12
  %2788 = load i32, ptr %2787, align 4, !tbaa !5
  %2789 = call ptr @strerror(i32 noundef %2788) #11
  %2790 = call ptr @__errno_location() #12
  %2791 = load i32, ptr %2790, align 4, !tbaa !5
  %2792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2779, ptr noundef @.str.2, i32 noundef %2780, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 356, ptr noundef %2783, ptr noundef %2786, ptr noundef %2789, i32 noundef %2791) #11
  br label %2810

2793:                                             ; preds = %2771, %2764
  %2794 = load i32, ptr %111, align 4, !tbaa !5
  %2795 = call ptr @__errno_location() #12
  store i32 %2794, ptr %2795, align 4, !tbaa !5
  %2796 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2797 = load i32, ptr @test_count, align 4, !tbaa !5
  %2798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2799 = load i32, ptr %2798, align 4, !tbaa !5
  %2800 = call ptr @s2n_strerror(i32 noundef %2799, ptr noundef @.str.4)
  %2801 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2802 = load i32, ptr %2801, align 4, !tbaa !5
  %2803 = call ptr @s2n_strerror_debug(i32 noundef %2802, ptr noundef @.str.4)
  %2804 = call ptr @__errno_location() #12
  %2805 = load i32, ptr %2804, align 4, !tbaa !5
  %2806 = call ptr @strerror(i32 noundef %2805) #11
  %2807 = call ptr @__errno_location() #12
  %2808 = load i32, ptr %2807, align 4, !tbaa !5
  %2809 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2796, ptr noundef @.str.5, i32 noundef %2797, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 356, ptr noundef %2800, ptr noundef %2803, ptr noundef %2806, i32 noundef %2808) #11
  br label %2810

2810:                                             ; preds = %2793, %2776
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #11
  br label %2811

2811:                                             ; preds = %2810
  br label %2812

2812:                                             ; preds = %2811
  call void @exit(i32 noundef 1) #13
  unreachable

2813:                                             ; No predecessors!
  br label %2814

2814:                                             ; preds = %2813
  br label %2815

2815:                                             ; preds = %2814, %2757
  br label %2816

2816:                                             ; preds = %2815
  br label %2817

2817:                                             ; preds = %2816
  br label %2818

2818:                                             ; preds = %2817
  %2819 = load i64, ptr %108, align 8, !tbaa !37
  %2820 = icmp ne i64 %2819, 0
  br i1 %2820, label %2821, label %2886

2821:                                             ; preds = %2818
  br label %2822

2822:                                             ; preds = %2821
  %2823 = load i32, ptr @test_count, align 4, !tbaa !5
  %2824 = add nsw i32 %2823, 1
  store i32 %2824, ptr @test_count, align 4, !tbaa !5
  %2825 = getelementptr inbounds [194 x i8], ptr %101, i64 0, i64 0
  %2826 = load ptr, ptr %110, align 8, !tbaa !9
  %2827 = load i64, ptr %108, align 8, !tbaa !37
  %2828 = call i32 @memcmp(ptr noundef %2825, ptr noundef %2826, i64 noundef %2827) #14
  %2829 = icmp eq i32 %2828, 0
  br i1 %2829, label %2883, label %2830

2830:                                             ; preds = %2822
  br label %2831

2831:                                             ; preds = %2830
  br label %2832

2832:                                             ; preds = %2831
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #11
  %2833 = call ptr @__errno_location() #12
  %2834 = load i32, ptr %2833, align 4, !tbaa !5
  store i32 %2834, ptr %112, align 4, !tbaa !5
  %2835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2836 = call i32 @s2n_print_stacktrace(ptr noundef %2835)
  %2837 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2838 = trunc i8 %2837 to i1
  br i1 %2838, label %2839, label %2861

2839:                                             ; preds = %2832
  %2840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2841 = call i32 @fileno(ptr noundef %2840) #11
  %2842 = call i32 @isatty(i32 noundef %2841) #11
  %2843 = icmp ne i32 %2842, 0
  br i1 %2843, label %2844, label %2861

2844:                                             ; preds = %2839
  %2845 = load i32, ptr %112, align 4, !tbaa !5
  %2846 = call ptr @__errno_location() #12
  store i32 %2845, ptr %2846, align 4, !tbaa !5
  %2847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2848 = load i32, ptr @test_count, align 4, !tbaa !5
  %2849 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2850 = load i32, ptr %2849, align 4, !tbaa !5
  %2851 = call ptr @s2n_strerror(i32 noundef %2850, ptr noundef @.str.4)
  %2852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2853 = load i32, ptr %2852, align 4, !tbaa !5
  %2854 = call ptr @s2n_strerror_debug(i32 noundef %2853, ptr noundef @.str.4)
  %2855 = call ptr @__errno_location() #12
  %2856 = load i32, ptr %2855, align 4, !tbaa !5
  %2857 = call ptr @strerror(i32 noundef %2856) #11
  %2858 = call ptr @__errno_location() #12
  %2859 = load i32, ptr %2858, align 4, !tbaa !5
  %2860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2847, ptr noundef @.str.2, i32 noundef %2848, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 357, ptr noundef %2851, ptr noundef %2854, ptr noundef %2857, i32 noundef %2859) #11
  br label %2878

2861:                                             ; preds = %2839, %2832
  %2862 = load i32, ptr %112, align 4, !tbaa !5
  %2863 = call ptr @__errno_location() #12
  store i32 %2862, ptr %2863, align 4, !tbaa !5
  %2864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2865 = load i32, ptr @test_count, align 4, !tbaa !5
  %2866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2867 = load i32, ptr %2866, align 4, !tbaa !5
  %2868 = call ptr @s2n_strerror(i32 noundef %2867, ptr noundef @.str.4)
  %2869 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2870 = load i32, ptr %2869, align 4, !tbaa !5
  %2871 = call ptr @s2n_strerror_debug(i32 noundef %2870, ptr noundef @.str.4)
  %2872 = call ptr @__errno_location() #12
  %2873 = load i32, ptr %2872, align 4, !tbaa !5
  %2874 = call ptr @strerror(i32 noundef %2873) #11
  %2875 = call ptr @__errno_location() #12
  %2876 = load i32, ptr %2875, align 4, !tbaa !5
  %2877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2864, ptr noundef @.str.5, i32 noundef %2865, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 357, ptr noundef %2868, ptr noundef %2871, ptr noundef %2874, i32 noundef %2876) #11
  br label %2878

2878:                                             ; preds = %2861, %2844
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #11
  br label %2879

2879:                                             ; preds = %2878
  br label %2880

2880:                                             ; preds = %2879
  call void @exit(i32 noundef 1) #13
  unreachable

2881:                                             ; No predecessors!
  br label %2882

2882:                                             ; preds = %2881
  br label %2883

2883:                                             ; preds = %2882, %2822
  br label %2884

2884:                                             ; preds = %2883
  br label %2885

2885:                                             ; preds = %2884
  br label %2886

2886:                                             ; preds = %2885, %2818
  br label %2887

2887:                                             ; preds = %2886
  br label %2888

2888:                                             ; preds = %2887
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #11
  %2889 = call i32 @s2n_security_rule_result_free(ptr noundef %102)
  %2890 = getelementptr inbounds %struct.s2n_result, ptr %113, i32 0, i32 0
  store i32 %2889, ptr %2890, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %102) #11
  call void @llvm.lifetime.end.p0(i64 194, ptr %101) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %100) #11
  call void @llvm.lifetime.start.p0(i64 29, ptr %114) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %114, ptr align 16 @__const.main.expected_prefix, i64 29, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #11
  store i64 28, ptr %115, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 48, ptr %116) #11
  call void @llvm.memset.p0.i64(ptr align 8 %116, i8 0, i64 48, i1 false)
  br label %2891

2891:                                             ; preds = %2888
  %2892 = load i32, ptr @test_count, align 4, !tbaa !5
  %2893 = add nsw i32 %2892, 1
  store i32 %2893, ptr @test_count, align 4, !tbaa !5
  %2894 = call i32 @s2n_security_rule_result_init_output(ptr noundef %116)
  %2895 = getelementptr inbounds %struct.s2n_result, ptr %117, i32 0, i32 0
  store i32 %2894, ptr %2895, align 4
  %2896 = getelementptr inbounds %struct.s2n_result, ptr %117, i32 0, i32 0
  %2897 = load i32, ptr %2896, align 4
  %2898 = call zeroext i1 @s2n_result_is_ok(i32 %2897)
  br i1 %2898, label %2952, label %2899

2899:                                             ; preds = %2891
  br label %2900

2900:                                             ; preds = %2899
  br label %2901

2901:                                             ; preds = %2900
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #11
  %2902 = call ptr @__errno_location() #12
  %2903 = load i32, ptr %2902, align 4, !tbaa !5
  store i32 %2903, ptr %118, align 4, !tbaa !5
  %2904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2905 = call i32 @s2n_print_stacktrace(ptr noundef %2904)
  %2906 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2907 = trunc i8 %2906 to i1
  br i1 %2907, label %2908, label %2930

2908:                                             ; preds = %2901
  %2909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2910 = call i32 @fileno(ptr noundef %2909) #11
  %2911 = call i32 @isatty(i32 noundef %2910) #11
  %2912 = icmp ne i32 %2911, 0
  br i1 %2912, label %2913, label %2930

2913:                                             ; preds = %2908
  %2914 = load i32, ptr %118, align 4, !tbaa !5
  %2915 = call ptr @__errno_location() #12
  store i32 %2914, ptr %2915, align 4, !tbaa !5
  %2916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2917 = load i32, ptr @test_count, align 4, !tbaa !5
  %2918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2919 = load i32, ptr %2918, align 4, !tbaa !5
  %2920 = call ptr @s2n_strerror(i32 noundef %2919, ptr noundef @.str.4)
  %2921 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2922 = load i32, ptr %2921, align 4, !tbaa !5
  %2923 = call ptr @s2n_strerror_debug(i32 noundef %2922, ptr noundef @.str.4)
  %2924 = call ptr @__errno_location() #12
  %2925 = load i32, ptr %2924, align 4, !tbaa !5
  %2926 = call ptr @strerror(i32 noundef %2925) #11
  %2927 = call ptr @__errno_location() #12
  %2928 = load i32, ptr %2927, align 4, !tbaa !5
  %2929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2916, ptr noundef @.str.2, i32 noundef %2917, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 368, ptr noundef %2920, ptr noundef %2923, ptr noundef %2926, i32 noundef %2928) #11
  br label %2947

2930:                                             ; preds = %2908, %2901
  %2931 = load i32, ptr %118, align 4, !tbaa !5
  %2932 = call ptr @__errno_location() #12
  store i32 %2931, ptr %2932, align 4, !tbaa !5
  %2933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2934 = load i32, ptr @test_count, align 4, !tbaa !5
  %2935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2936 = load i32, ptr %2935, align 4, !tbaa !5
  %2937 = call ptr @s2n_strerror(i32 noundef %2936, ptr noundef @.str.4)
  %2938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2939 = load i32, ptr %2938, align 4, !tbaa !5
  %2940 = call ptr @s2n_strerror_debug(i32 noundef %2939, ptr noundef @.str.4)
  %2941 = call ptr @__errno_location() #12
  %2942 = load i32, ptr %2941, align 4, !tbaa !5
  %2943 = call ptr @strerror(i32 noundef %2942) #11
  %2944 = call ptr @__errno_location() #12
  %2945 = load i32, ptr %2944, align 4, !tbaa !5
  %2946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2933, ptr noundef @.str.5, i32 noundef %2934, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 368, ptr noundef %2937, ptr noundef %2940, ptr noundef %2943, i32 noundef %2945) #11
  br label %2947

2947:                                             ; preds = %2930, %2913
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #11
  br label %2948

2948:                                             ; preds = %2947
  br label %2949

2949:                                             ; preds = %2948
  call void @exit(i32 noundef 1) #13
  unreachable

2950:                                             ; No predecessors!
  br label %2951

2951:                                             ; preds = %2950
  br label %2952

2952:                                             ; preds = %2951, %2891
  br label %2953

2953:                                             ; preds = %2952
  br label %2954

2954:                                             ; preds = %2953
  br label %2955

2955:                                             ; preds = %2954
  %2956 = load i32, ptr @test_count, align 4, !tbaa !5
  %2957 = add nsw i32 %2956, 1
  store i32 %2957, ptr @test_count, align 4, !tbaa !5
  %2958 = call i32 @s2n_security_rule_validate_policy(ptr noundef %9, ptr noundef @security_policy_test_all, ptr noundef %116)
  %2959 = getelementptr inbounds %struct.s2n_result, ptr %119, i32 0, i32 0
  store i32 %2958, ptr %2959, align 4
  %2960 = getelementptr inbounds %struct.s2n_result, ptr %119, i32 0, i32 0
  %2961 = load i32, ptr %2960, align 4
  %2962 = call zeroext i1 @s2n_result_is_ok(i32 %2961)
  br i1 %2962, label %3016, label %2963

2963:                                             ; preds = %2955
  br label %2964

2964:                                             ; preds = %2963
  br label %2965

2965:                                             ; preds = %2964
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #11
  %2966 = call ptr @__errno_location() #12
  %2967 = load i32, ptr %2966, align 4, !tbaa !5
  store i32 %2967, ptr %120, align 4, !tbaa !5
  %2968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2969 = call i32 @s2n_print_stacktrace(ptr noundef %2968)
  %2970 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2971 = trunc i8 %2970 to i1
  br i1 %2971, label %2972, label %2994

2972:                                             ; preds = %2965
  %2973 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2974 = call i32 @fileno(ptr noundef %2973) #11
  %2975 = call i32 @isatty(i32 noundef %2974) #11
  %2976 = icmp ne i32 %2975, 0
  br i1 %2976, label %2977, label %2994

2977:                                             ; preds = %2972
  %2978 = load i32, ptr %120, align 4, !tbaa !5
  %2979 = call ptr @__errno_location() #12
  store i32 %2978, ptr %2979, align 4, !tbaa !5
  %2980 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2981 = load i32, ptr @test_count, align 4, !tbaa !5
  %2982 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2983 = load i32, ptr %2982, align 4, !tbaa !5
  %2984 = call ptr @s2n_strerror(i32 noundef %2983, ptr noundef @.str.4)
  %2985 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2986 = load i32, ptr %2985, align 4, !tbaa !5
  %2987 = call ptr @s2n_strerror_debug(i32 noundef %2986, ptr noundef @.str.4)
  %2988 = call ptr @__errno_location() #12
  %2989 = load i32, ptr %2988, align 4, !tbaa !5
  %2990 = call ptr @strerror(i32 noundef %2989) #11
  %2991 = call ptr @__errno_location() #12
  %2992 = load i32, ptr %2991, align 4, !tbaa !5
  %2993 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2980, ptr noundef @.str.2, i32 noundef %2981, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 371, ptr noundef %2984, ptr noundef %2987, ptr noundef %2990, i32 noundef %2992) #11
  br label %3011

2994:                                             ; preds = %2972, %2965
  %2995 = load i32, ptr %120, align 4, !tbaa !5
  %2996 = call ptr @__errno_location() #12
  store i32 %2995, ptr %2996, align 4, !tbaa !5
  %2997 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2998 = load i32, ptr @test_count, align 4, !tbaa !5
  %2999 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3000 = load i32, ptr %2999, align 4, !tbaa !5
  %3001 = call ptr @s2n_strerror(i32 noundef %3000, ptr noundef @.str.4)
  %3002 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3003 = load i32, ptr %3002, align 4, !tbaa !5
  %3004 = call ptr @s2n_strerror_debug(i32 noundef %3003, ptr noundef @.str.4)
  %3005 = call ptr @__errno_location() #12
  %3006 = load i32, ptr %3005, align 4, !tbaa !5
  %3007 = call ptr @strerror(i32 noundef %3006) #11
  %3008 = call ptr @__errno_location() #12
  %3009 = load i32, ptr %3008, align 4, !tbaa !5
  %3010 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2997, ptr noundef @.str.5, i32 noundef %2998, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 371, ptr noundef %3001, ptr noundef %3004, ptr noundef %3007, i32 noundef %3009) #11
  br label %3011

3011:                                             ; preds = %2994, %2977
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #11
  br label %3012

3012:                                             ; preds = %3011
  br label %3013

3013:                                             ; preds = %3012
  call void @exit(i32 noundef 1) #13
  unreachable

3014:                                             ; No predecessors!
  br label %3015

3015:                                             ; preds = %3014
  br label %3016

3016:                                             ; preds = %3015, %2955
  br label %3017

3017:                                             ; preds = %3016
  br label %3018

3018:                                             ; preds = %3017
  br label %3019

3019:                                             ; preds = %3018
  %3020 = load i32, ptr @test_count, align 4, !tbaa !5
  %3021 = add nsw i32 %3020, 1
  store i32 %3021, ptr @test_count, align 4, !tbaa !5
  %3022 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %116, i32 0, i32 0
  %3023 = load i8, ptr %3022, align 8, !tbaa !29, !range !13, !noundef !14
  %3024 = trunc i8 %3023 to i1
  br i1 %3024, label %3078, label %3025

3025:                                             ; preds = %3019
  br label %3026

3026:                                             ; preds = %3025
  br label %3027

3027:                                             ; preds = %3026
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #11
  %3028 = call ptr @__errno_location() #12
  %3029 = load i32, ptr %3028, align 4, !tbaa !5
  store i32 %3029, ptr %121, align 4, !tbaa !5
  %3030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3031 = call i32 @s2n_print_stacktrace(ptr noundef %3030)
  %3032 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3033 = trunc i8 %3032 to i1
  br i1 %3033, label %3034, label %3056

3034:                                             ; preds = %3027
  %3035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3036 = call i32 @fileno(ptr noundef %3035) #11
  %3037 = call i32 @isatty(i32 noundef %3036) #11
  %3038 = icmp ne i32 %3037, 0
  br i1 %3038, label %3039, label %3056

3039:                                             ; preds = %3034
  %3040 = load i32, ptr %121, align 4, !tbaa !5
  %3041 = call ptr @__errno_location() #12
  store i32 %3040, ptr %3041, align 4, !tbaa !5
  %3042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3043 = load i32, ptr @test_count, align 4, !tbaa !5
  %3044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3045 = load i32, ptr %3044, align 4, !tbaa !5
  %3046 = call ptr @s2n_strerror(i32 noundef %3045, ptr noundef @.str.4)
  %3047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3048 = load i32, ptr %3047, align 4, !tbaa !5
  %3049 = call ptr @s2n_strerror_debug(i32 noundef %3048, ptr noundef @.str.4)
  %3050 = call ptr @__errno_location() #12
  %3051 = load i32, ptr %3050, align 4, !tbaa !5
  %3052 = call ptr @strerror(i32 noundef %3051) #11
  %3053 = call ptr @__errno_location() #12
  %3054 = load i32, ptr %3053, align 4, !tbaa !5
  %3055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3042, ptr noundef @.str.2, i32 noundef %3043, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 372, ptr noundef %3046, ptr noundef %3049, ptr noundef %3052, i32 noundef %3054) #11
  br label %3073

3056:                                             ; preds = %3034, %3027
  %3057 = load i32, ptr %121, align 4, !tbaa !5
  %3058 = call ptr @__errno_location() #12
  store i32 %3057, ptr %3058, align 4, !tbaa !5
  %3059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3060 = load i32, ptr @test_count, align 4, !tbaa !5
  %3061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3062 = load i32, ptr %3061, align 4, !tbaa !5
  %3063 = call ptr @s2n_strerror(i32 noundef %3062, ptr noundef @.str.4)
  %3064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3065 = load i32, ptr %3064, align 4, !tbaa !5
  %3066 = call ptr @s2n_strerror_debug(i32 noundef %3065, ptr noundef @.str.4)
  %3067 = call ptr @__errno_location() #12
  %3068 = load i32, ptr %3067, align 4, !tbaa !5
  %3069 = call ptr @strerror(i32 noundef %3068) #11
  %3070 = call ptr @__errno_location() #12
  %3071 = load i32, ptr %3070, align 4, !tbaa !5
  %3072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3059, ptr noundef @.str.5, i32 noundef %3060, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 372, ptr noundef %3063, ptr noundef %3066, ptr noundef %3069, i32 noundef %3071) #11
  br label %3073

3073:                                             ; preds = %3056, %3039
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #11
  br label %3074

3074:                                             ; preds = %3073
  br label %3075

3075:                                             ; preds = %3074
  call void @exit(i32 noundef 1) #13
  unreachable

3076:                                             ; No predecessors!
  br label %3077

3077:                                             ; preds = %3076
  br label %3078

3078:                                             ; preds = %3077, %3019
  br label %3079

3079:                                             ; preds = %3078
  br label %3080

3080:                                             ; preds = %3079
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #11
  %3081 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %116, i32 0, i32 2
  %3082 = getelementptr inbounds %struct.s2n_stuffer, ptr %3081, i32 0, i32 2
  %3083 = load i32, ptr %3082, align 4, !tbaa !35
  %3084 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %116, i32 0, i32 2
  %3085 = getelementptr inbounds %struct.s2n_stuffer, ptr %3084, i32 0, i32 1
  %3086 = load i32, ptr %3085, align 8, !tbaa !36
  %3087 = sub i32 %3083, %3086
  %3088 = zext i32 %3087 to i64
  store i64 %3088, ptr %122, align 8, !tbaa !37
  br label %3089

3089:                                             ; preds = %3080
  %3090 = load i32, ptr @test_count, align 4, !tbaa !5
  %3091 = add nsw i32 %3090, 1
  store i32 %3091, ptr @test_count, align 4, !tbaa !5
  %3092 = load i64, ptr %122, align 8, !tbaa !37
  %3093 = icmp ugt i64 %3092, 28
  br i1 %3093, label %3147, label %3094

3094:                                             ; preds = %3089
  br label %3095

3095:                                             ; preds = %3094
  br label %3096

3096:                                             ; preds = %3095
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #11
  %3097 = call ptr @__errno_location() #12
  %3098 = load i32, ptr %3097, align 4, !tbaa !5
  store i32 %3098, ptr %123, align 4, !tbaa !5
  %3099 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3100 = call i32 @s2n_print_stacktrace(ptr noundef %3099)
  %3101 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3102 = trunc i8 %3101 to i1
  br i1 %3102, label %3103, label %3125

3103:                                             ; preds = %3096
  %3104 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3105 = call i32 @fileno(ptr noundef %3104) #11
  %3106 = call i32 @isatty(i32 noundef %3105) #11
  %3107 = icmp ne i32 %3106, 0
  br i1 %3107, label %3108, label %3125

3108:                                             ; preds = %3103
  %3109 = load i32, ptr %123, align 4, !tbaa !5
  %3110 = call ptr @__errno_location() #12
  store i32 %3109, ptr %3110, align 4, !tbaa !5
  %3111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3112 = load i32, ptr @test_count, align 4, !tbaa !5
  %3113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3114 = load i32, ptr %3113, align 4, !tbaa !5
  %3115 = call ptr @s2n_strerror(i32 noundef %3114, ptr noundef @.str.4)
  %3116 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3117 = load i32, ptr %3116, align 4, !tbaa !5
  %3118 = call ptr @s2n_strerror_debug(i32 noundef %3117, ptr noundef @.str.4)
  %3119 = call ptr @__errno_location() #12
  %3120 = load i32, ptr %3119, align 4, !tbaa !5
  %3121 = call ptr @strerror(i32 noundef %3120) #11
  %3122 = call ptr @__errno_location() #12
  %3123 = load i32, ptr %3122, align 4, !tbaa !5
  %3124 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3111, ptr noundef @.str.2, i32 noundef %3112, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 375, ptr noundef %3115, ptr noundef %3118, ptr noundef %3121, i32 noundef %3123) #11
  br label %3142

3125:                                             ; preds = %3103, %3096
  %3126 = load i32, ptr %123, align 4, !tbaa !5
  %3127 = call ptr @__errno_location() #12
  store i32 %3126, ptr %3127, align 4, !tbaa !5
  %3128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3129 = load i32, ptr @test_count, align 4, !tbaa !5
  %3130 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3131 = load i32, ptr %3130, align 4, !tbaa !5
  %3132 = call ptr @s2n_strerror(i32 noundef %3131, ptr noundef @.str.4)
  %3133 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3134 = load i32, ptr %3133, align 4, !tbaa !5
  %3135 = call ptr @s2n_strerror_debug(i32 noundef %3134, ptr noundef @.str.4)
  %3136 = call ptr @__errno_location() #12
  %3137 = load i32, ptr %3136, align 4, !tbaa !5
  %3138 = call ptr @strerror(i32 noundef %3137) #11
  %3139 = call ptr @__errno_location() #12
  %3140 = load i32, ptr %3139, align 4, !tbaa !5
  %3141 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3128, ptr noundef @.str.5, i32 noundef %3129, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 375, ptr noundef %3132, ptr noundef %3135, ptr noundef %3138, i32 noundef %3140) #11
  br label %3142

3142:                                             ; preds = %3125, %3108
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #11
  br label %3143

3143:                                             ; preds = %3142
  br label %3144

3144:                                             ; preds = %3143
  call void @exit(i32 noundef 1) #13
  unreachable

3145:                                             ; No predecessors!
  br label %3146

3146:                                             ; preds = %3145
  br label %3147

3147:                                             ; preds = %3146, %3089
  br label %3148

3148:                                             ; preds = %3147
  br label %3149

3149:                                             ; preds = %3148
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #11
  %3150 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %116, i32 0, i32 2
  %3151 = call ptr @s2n_stuffer_raw_read(ptr noundef %3150, i32 noundef 28)
  store ptr %3151, ptr %124, align 8, !tbaa !9
  br label %3152

3152:                                             ; preds = %3149
  %3153 = load i32, ptr @test_count, align 4, !tbaa !5
  %3154 = add nsw i32 %3153, 1
  store i32 %3154, ptr @test_count, align 4, !tbaa !5
  %3155 = load ptr, ptr %124, align 8, !tbaa !9
  %3156 = icmp eq ptr %3155, null
  br i1 %3156, label %3157, label %3210

3157:                                             ; preds = %3152
  br label %3158

3158:                                             ; preds = %3157
  br label %3159

3159:                                             ; preds = %3158
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #11
  %3160 = call ptr @__errno_location() #12
  %3161 = load i32, ptr %3160, align 4, !tbaa !5
  store i32 %3161, ptr %125, align 4, !tbaa !5
  %3162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3163 = call i32 @s2n_print_stacktrace(ptr noundef %3162)
  %3164 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3165 = trunc i8 %3164 to i1
  br i1 %3165, label %3166, label %3188

3166:                                             ; preds = %3159
  %3167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3168 = call i32 @fileno(ptr noundef %3167) #11
  %3169 = call i32 @isatty(i32 noundef %3168) #11
  %3170 = icmp ne i32 %3169, 0
  br i1 %3170, label %3171, label %3188

3171:                                             ; preds = %3166
  %3172 = load i32, ptr %125, align 4, !tbaa !5
  %3173 = call ptr @__errno_location() #12
  store i32 %3172, ptr %3173, align 4, !tbaa !5
  %3174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3175 = load i32, ptr @test_count, align 4, !tbaa !5
  %3176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3177 = load i32, ptr %3176, align 4, !tbaa !5
  %3178 = call ptr @s2n_strerror(i32 noundef %3177, ptr noundef @.str.4)
  %3179 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3180 = load i32, ptr %3179, align 4, !tbaa !5
  %3181 = call ptr @s2n_strerror_debug(i32 noundef %3180, ptr noundef @.str.4)
  %3182 = call ptr @__errno_location() #12
  %3183 = load i32, ptr %3182, align 4, !tbaa !5
  %3184 = call ptr @strerror(i32 noundef %3183) #11
  %3185 = call ptr @__errno_location() #12
  %3186 = load i32, ptr %3185, align 4, !tbaa !5
  %3187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3174, ptr noundef @.str.2, i32 noundef %3175, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 377, ptr noundef %3178, ptr noundef %3181, ptr noundef %3184, i32 noundef %3186) #11
  br label %3205

3188:                                             ; preds = %3166, %3159
  %3189 = load i32, ptr %125, align 4, !tbaa !5
  %3190 = call ptr @__errno_location() #12
  store i32 %3189, ptr %3190, align 4, !tbaa !5
  %3191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3192 = load i32, ptr @test_count, align 4, !tbaa !5
  %3193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3194 = load i32, ptr %3193, align 4, !tbaa !5
  %3195 = call ptr @s2n_strerror(i32 noundef %3194, ptr noundef @.str.4)
  %3196 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3197 = load i32, ptr %3196, align 4, !tbaa !5
  %3198 = call ptr @s2n_strerror_debug(i32 noundef %3197, ptr noundef @.str.4)
  %3199 = call ptr @__errno_location() #12
  %3200 = load i32, ptr %3199, align 4, !tbaa !5
  %3201 = call ptr @strerror(i32 noundef %3200) #11
  %3202 = call ptr @__errno_location() #12
  %3203 = load i32, ptr %3202, align 4, !tbaa !5
  %3204 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3191, ptr noundef @.str.5, i32 noundef %3192, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 377, ptr noundef %3195, ptr noundef %3198, ptr noundef %3201, i32 noundef %3203) #11
  br label %3205

3205:                                             ; preds = %3188, %3171
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #11
  br label %3206

3206:                                             ; preds = %3205
  br label %3207

3207:                                             ; preds = %3206
  call void @exit(i32 noundef 1) #13
  unreachable

3208:                                             ; No predecessors!
  br label %3209

3209:                                             ; preds = %3208
  br label %3210

3210:                                             ; preds = %3209, %3152
  br label %3211

3211:                                             ; preds = %3210
  br label %3212

3212:                                             ; preds = %3211
  br label %3213

3213:                                             ; preds = %3212
  br label %3214

3214:                                             ; preds = %3213
  %3215 = load i32, ptr @test_count, align 4, !tbaa !5
  %3216 = add nsw i32 %3215, 1
  store i32 %3216, ptr @test_count, align 4, !tbaa !5
  %3217 = load ptr, ptr %124, align 8, !tbaa !9
  %3218 = getelementptr inbounds [29 x i8], ptr %114, i64 0, i64 0
  %3219 = call i32 @memcmp(ptr noundef %3217, ptr noundef %3218, i64 noundef 28) #14
  %3220 = icmp eq i32 %3219, 0
  br i1 %3220, label %3274, label %3221

3221:                                             ; preds = %3214
  br label %3222

3222:                                             ; preds = %3221
  br label %3223

3223:                                             ; preds = %3222
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #11
  %3224 = call ptr @__errno_location() #12
  %3225 = load i32, ptr %3224, align 4, !tbaa !5
  store i32 %3225, ptr %126, align 4, !tbaa !5
  %3226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3227 = call i32 @s2n_print_stacktrace(ptr noundef %3226)
  %3228 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3229 = trunc i8 %3228 to i1
  br i1 %3229, label %3230, label %3252

3230:                                             ; preds = %3223
  %3231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3232 = call i32 @fileno(ptr noundef %3231) #11
  %3233 = call i32 @isatty(i32 noundef %3232) #11
  %3234 = icmp ne i32 %3233, 0
  br i1 %3234, label %3235, label %3252

3235:                                             ; preds = %3230
  %3236 = load i32, ptr %126, align 4, !tbaa !5
  %3237 = call ptr @__errno_location() #12
  store i32 %3236, ptr %3237, align 4, !tbaa !5
  %3238 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3239 = load i32, ptr @test_count, align 4, !tbaa !5
  %3240 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3241 = load i32, ptr %3240, align 4, !tbaa !5
  %3242 = call ptr @s2n_strerror(i32 noundef %3241, ptr noundef @.str.4)
  %3243 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3244 = load i32, ptr %3243, align 4, !tbaa !5
  %3245 = call ptr @s2n_strerror_debug(i32 noundef %3244, ptr noundef @.str.4)
  %3246 = call ptr @__errno_location() #12
  %3247 = load i32, ptr %3246, align 4, !tbaa !5
  %3248 = call ptr @strerror(i32 noundef %3247) #11
  %3249 = call ptr @__errno_location() #12
  %3250 = load i32, ptr %3249, align 4, !tbaa !5
  %3251 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3238, ptr noundef @.str.2, i32 noundef %3239, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 378, ptr noundef %3242, ptr noundef %3245, ptr noundef %3248, i32 noundef %3250) #11
  br label %3269

3252:                                             ; preds = %3230, %3223
  %3253 = load i32, ptr %126, align 4, !tbaa !5
  %3254 = call ptr @__errno_location() #12
  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() #12
  %3264 = load i32, ptr %3263, align 4, !tbaa !5
  %3265 = call ptr @strerror(i32 noundef %3264) #11
  %3266 = call ptr @__errno_location() #12
  %3267 = load i32, ptr %3266, align 4, !tbaa !5
  %3268 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3255, ptr noundef @.str.5, i32 noundef %3256, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 378, ptr noundef %3259, ptr noundef %3262, ptr noundef %3265, i32 noundef %3267) #11
  br label %3269

3269:                                             ; preds = %3252, %3235
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #11
  br label %3270

3270:                                             ; preds = %3269
  br label %3271

3271:                                             ; preds = %3270
  call void @exit(i32 noundef 1) #13
  unreachable

3272:                                             ; No predecessors!
  br label %3273

3273:                                             ; preds = %3272
  br label %3274

3274:                                             ; preds = %3273, %3214
  br label %3275

3275:                                             ; preds = %3274
  br label %3276

3276:                                             ; preds = %3275
  br label %3277

3277:                                             ; preds = %3276
  br label %3278

3278:                                             ; preds = %3277
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #11
  %3279 = call i32 @s2n_security_rule_result_free(ptr noundef %116)
  %3280 = getelementptr inbounds %struct.s2n_result, ptr %127, i32 0, i32 0
  store i32 %3279, ptr %3280, align 4
  call void @llvm.lifetime.end.p0(i64 48, ptr %116) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #11
  call void @llvm.lifetime.end.p0(i64 29, ptr %114) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #11
  store ptr @s2n_rsa_with_aes_128_gcm_sha256, ptr %128, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %129) #11
  %3281 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %129, i32 0, i32 0
  store i16 1, ptr %3281, align 8, !tbaa !15
  %3282 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %129, i32 0, i32 1
  store ptr %128, ptr %3282, align 8, !tbaa !18
  %3283 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %129, i32 0, i32 2
  store i8 0, ptr %3283, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %130, ptr align 16 @__const.main.forward_secret_suites, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %131) #11
  %3284 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %131, i32 0, i32 0
  store i16 2, ptr %3284, align 8, !tbaa !15
  %3285 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %131, i32 0, i32 1
  %3286 = getelementptr inbounds [2 x ptr], ptr %130, i64 0, i64 0
  store ptr %3286, ptr %3285, align 8, !tbaa !18
  %3287 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %131, i32 0, i32 2
  store i8 0, ptr %3287, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 64, ptr %132) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %132, ptr align 8 %19, i64 64, i1 false), !tbaa.struct !33
  %3288 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 8
  %3289 = getelementptr inbounds [2 x i8], ptr %3288, i64 0, i64 0
  store i8 1, ptr %3289, align 1, !tbaa !11
  %3290 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 1
  store ptr %131, ptr %3290, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr %133) #11
  call void @llvm.memset.p0.i64(ptr align 8 %133, i8 0, i64 48, i1 false)
  br label %3291

3291:                                             ; preds = %3278
  %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 i32 @s2n_security_policy_validate_security_rules(ptr noundef %132, ptr noundef %133)
  %3295 = getelementptr inbounds %struct.s2n_result, ptr %134, i32 0, i32 0
  store i32 %3294, ptr %3295, align 4
  %3296 = getelementptr inbounds %struct.s2n_result, ptr %134, i32 0, i32 0
  %3297 = load i32, ptr %3296, align 4
  %3298 = call zeroext i1 @s2n_result_is_ok(i32 %3297)
  br i1 %3298, label %3352, label %3299

3299:                                             ; preds = %3291
  br label %3300

3300:                                             ; preds = %3299
  br label %3301

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

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

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

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

3347:                                             ; preds = %3330, %3313
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #11
  br label %3348

3348:                                             ; preds = %3347
  br label %3349

3349:                                             ; preds = %3348
  call void @exit(i32 noundef 1) #13
  unreachable

3350:                                             ; No predecessors!
  br label %3351

3351:                                             ; preds = %3350
  br label %3352

3352:                                             ; preds = %3351, %3291
  br label %3353

3353:                                             ; preds = %3352
  br label %3354

3354:                                             ; preds = %3353
  br label %3355

3355:                                             ; preds = %3354
  %3356 = load i32, ptr @test_count, align 4, !tbaa !5
  %3357 = add nsw i32 %3356, 1
  store i32 %3357, ptr @test_count, align 4, !tbaa !5
  %3358 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %133, i32 0, i32 0
  %3359 = load i8, ptr %3358, align 8, !tbaa !29, !range !13, !noundef !14
  %3360 = trunc i8 %3359 to i1
  br i1 %3360, label %3361, label %3414

3361:                                             ; preds = %3355
  br label %3362

3362:                                             ; preds = %3361
  br label %3363

3363:                                             ; preds = %3362
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #11
  %3364 = call ptr @__errno_location() #12
  %3365 = load i32, ptr %3364, align 4, !tbaa !5
  store i32 %3365, ptr %136, align 4, !tbaa !5
  %3366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3367 = call i32 @s2n_print_stacktrace(ptr noundef %3366)
  %3368 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3369 = trunc i8 %3368 to i1
  br i1 %3369, label %3370, label %3392

3370:                                             ; preds = %3363
  %3371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3372 = call i32 @fileno(ptr noundef %3371) #11
  %3373 = call i32 @isatty(i32 noundef %3372) #11
  %3374 = icmp ne i32 %3373, 0
  br i1 %3374, label %3375, label %3392

3375:                                             ; preds = %3370
  %3376 = load i32, ptr %136, align 4, !tbaa !5
  %3377 = call ptr @__errno_location() #12
  store i32 %3376, ptr %3377, align 4, !tbaa !5
  %3378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3379 = load i32, ptr @test_count, align 4, !tbaa !5
  %3380 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3381 = load i32, ptr %3380, align 4, !tbaa !5
  %3382 = call ptr @s2n_strerror(i32 noundef %3381, ptr noundef @.str.4)
  %3383 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3384 = load i32, ptr %3383, align 4, !tbaa !5
  %3385 = call ptr @s2n_strerror_debug(i32 noundef %3384, ptr noundef @.str.4)
  %3386 = call ptr @__errno_location() #12
  %3387 = load i32, ptr %3386, align 4, !tbaa !5
  %3388 = call ptr @strerror(i32 noundef %3387) #11
  %3389 = call ptr @__errno_location() #12
  %3390 = load i32, ptr %3389, align 4, !tbaa !5
  %3391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3378, ptr noundef @.str.2, i32 noundef %3379, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 410, ptr noundef %3382, ptr noundef %3385, ptr noundef %3388, i32 noundef %3390) #11
  br label %3409

3392:                                             ; preds = %3370, %3363
  %3393 = load i32, ptr %136, align 4, !tbaa !5
  %3394 = call ptr @__errno_location() #12
  store i32 %3393, ptr %3394, align 4, !tbaa !5
  %3395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3396 = load i32, ptr @test_count, align 4, !tbaa !5
  %3397 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3398 = load i32, ptr %3397, align 4, !tbaa !5
  %3399 = call ptr @s2n_strerror(i32 noundef %3398, ptr noundef @.str.4)
  %3400 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3401 = load i32, ptr %3400, align 4, !tbaa !5
  %3402 = call ptr @s2n_strerror_debug(i32 noundef %3401, ptr noundef @.str.4)
  %3403 = call ptr @__errno_location() #12
  %3404 = load i32, ptr %3403, align 4, !tbaa !5
  %3405 = call ptr @strerror(i32 noundef %3404) #11
  %3406 = call ptr @__errno_location() #12
  %3407 = load i32, ptr %3406, align 4, !tbaa !5
  %3408 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3395, ptr noundef @.str.5, i32 noundef %3396, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 410, ptr noundef %3399, ptr noundef %3402, ptr noundef %3405, i32 noundef %3407) #11
  br label %3409

3409:                                             ; preds = %3392, %3375
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #11
  br label %3410

3410:                                             ; preds = %3409
  br label %3411

3411:                                             ; preds = %3410
  call void @exit(i32 noundef 1) #13
  unreachable

3412:                                             ; No predecessors!
  br label %3413

3413:                                             ; preds = %3412
  br label %3414

3414:                                             ; preds = %3413, %3355
  br label %3415

3415:                                             ; preds = %3414
  br label %3416

3416:                                             ; preds = %3415
  call void @llvm.lifetime.end.p0(i64 48, ptr %133) #11
  %3417 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 8
  %3418 = getelementptr inbounds [2 x i8], ptr %3417, i64 0, i64 0
  store i8 1, ptr %3418, align 1, !tbaa !11
  %3419 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 1
  store ptr %129, ptr %3419, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr %137) #11
  call void @llvm.memset.p0.i64(ptr align 8 %137, i8 0, i64 48, i1 false)
  br label %3420

3420:                                             ; preds = %3416
  %3421 = load i32, ptr @test_count, align 4, !tbaa !5
  %3422 = add nsw i32 %3421, 1
  store i32 %3422, ptr @test_count, align 4, !tbaa !5
  %3423 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef %132, ptr noundef %137)
  %3424 = getelementptr inbounds %struct.s2n_result, ptr %138, i32 0, i32 0
  store i32 %3423, ptr %3424, align 4
  %3425 = getelementptr inbounds %struct.s2n_result, ptr %138, i32 0, i32 0
  %3426 = load i32, ptr %3425, align 4
  %3427 = call zeroext i1 @s2n_result_is_ok(i32 %3426)
  br i1 %3427, label %3481, label %3428

3428:                                             ; preds = %3420
  br label %3429

3429:                                             ; preds = %3428
  br label %3430

3430:                                             ; preds = %3429
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #11
  %3431 = call ptr @__errno_location() #12
  %3432 = load i32, ptr %3431, align 4, !tbaa !5
  store i32 %3432, ptr %139, align 4, !tbaa !5
  %3433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3434 = call i32 @s2n_print_stacktrace(ptr noundef %3433)
  %3435 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3436 = trunc i8 %3435 to i1
  br i1 %3436, label %3437, label %3459

3437:                                             ; preds = %3430
  %3438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3439 = call i32 @fileno(ptr noundef %3438) #11
  %3440 = call i32 @isatty(i32 noundef %3439) #11
  %3441 = icmp ne i32 %3440, 0
  br i1 %3441, label %3442, label %3459

3442:                                             ; preds = %3437
  %3443 = load i32, ptr %139, align 4, !tbaa !5
  %3444 = call ptr @__errno_location() #12
  store i32 %3443, ptr %3444, align 4, !tbaa !5
  %3445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3446 = load i32, ptr @test_count, align 4, !tbaa !5
  %3447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3448 = load i32, ptr %3447, align 4, !tbaa !5
  %3449 = call ptr @s2n_strerror(i32 noundef %3448, ptr noundef @.str.4)
  %3450 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3451 = load i32, ptr %3450, align 4, !tbaa !5
  %3452 = call ptr @s2n_strerror_debug(i32 noundef %3451, ptr noundef @.str.4)
  %3453 = call ptr @__errno_location() #12
  %3454 = load i32, ptr %3453, align 4, !tbaa !5
  %3455 = call ptr @strerror(i32 noundef %3454) #11
  %3456 = call ptr @__errno_location() #12
  %3457 = load i32, ptr %3456, align 4, !tbaa !5
  %3458 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3445, ptr noundef @.str.2, i32 noundef %3446, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 419, ptr noundef %3449, ptr noundef %3452, ptr noundef %3455, i32 noundef %3457) #11
  br label %3476

3459:                                             ; preds = %3437, %3430
  %3460 = load i32, ptr %139, align 4, !tbaa !5
  %3461 = call ptr @__errno_location() #12
  store i32 %3460, ptr %3461, align 4, !tbaa !5
  %3462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3463 = load i32, ptr @test_count, align 4, !tbaa !5
  %3464 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3465 = load i32, ptr %3464, align 4, !tbaa !5
  %3466 = call ptr @s2n_strerror(i32 noundef %3465, ptr noundef @.str.4)
  %3467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3468 = load i32, ptr %3467, align 4, !tbaa !5
  %3469 = call ptr @s2n_strerror_debug(i32 noundef %3468, ptr noundef @.str.4)
  %3470 = call ptr @__errno_location() #12
  %3471 = load i32, ptr %3470, align 4, !tbaa !5
  %3472 = call ptr @strerror(i32 noundef %3471) #11
  %3473 = call ptr @__errno_location() #12
  %3474 = load i32, ptr %3473, align 4, !tbaa !5
  %3475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3462, ptr noundef @.str.5, i32 noundef %3463, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 419, ptr noundef %3466, ptr noundef %3469, ptr noundef %3472, i32 noundef %3474) #11
  br label %3476

3476:                                             ; preds = %3459, %3442
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #11
  br label %3477

3477:                                             ; preds = %3476
  br label %3478

3478:                                             ; preds = %3477
  call void @exit(i32 noundef 1) #13
  unreachable

3479:                                             ; No predecessors!
  br label %3480

3480:                                             ; preds = %3479
  br label %3481

3481:                                             ; preds = %3480, %3420
  br label %3482

3482:                                             ; preds = %3481
  br label %3483

3483:                                             ; preds = %3482
  br label %3484

3484:                                             ; preds = %3483
  %3485 = load i32, ptr @test_count, align 4, !tbaa !5
  %3486 = add nsw i32 %3485, 1
  store i32 %3486, ptr @test_count, align 4, !tbaa !5
  %3487 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %137, i32 0, i32 0
  %3488 = load i8, ptr %3487, align 8, !tbaa !29, !range !13, !noundef !14
  %3489 = trunc i8 %3488 to i1
  br i1 %3489, label %3543, label %3490

3490:                                             ; preds = %3484
  br label %3491

3491:                                             ; preds = %3490
  br label %3492

3492:                                             ; preds = %3491
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #11
  %3493 = call ptr @__errno_location() #12
  %3494 = load i32, ptr %3493, align 4, !tbaa !5
  store i32 %3494, ptr %140, align 4, !tbaa !5
  %3495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3496 = call i32 @s2n_print_stacktrace(ptr noundef %3495)
  %3497 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3498 = trunc i8 %3497 to i1
  br i1 %3498, label %3499, label %3521

3499:                                             ; preds = %3492
  %3500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3501 = call i32 @fileno(ptr noundef %3500) #11
  %3502 = call i32 @isatty(i32 noundef %3501) #11
  %3503 = icmp ne i32 %3502, 0
  br i1 %3503, label %3504, label %3521

3504:                                             ; preds = %3499
  %3505 = load i32, ptr %140, align 4, !tbaa !5
  %3506 = call ptr @__errno_location() #12
  store i32 %3505, ptr %3506, align 4, !tbaa !5
  %3507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3508 = load i32, ptr @test_count, align 4, !tbaa !5
  %3509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3510 = load i32, ptr %3509, align 4, !tbaa !5
  %3511 = call ptr @s2n_strerror(i32 noundef %3510, ptr noundef @.str.4)
  %3512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3513 = load i32, ptr %3512, align 4, !tbaa !5
  %3514 = call ptr @s2n_strerror_debug(i32 noundef %3513, ptr noundef @.str.4)
  %3515 = call ptr @__errno_location() #12
  %3516 = load i32, ptr %3515, align 4, !tbaa !5
  %3517 = call ptr @strerror(i32 noundef %3516) #11
  %3518 = call ptr @__errno_location() #12
  %3519 = load i32, ptr %3518, align 4, !tbaa !5
  %3520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3507, ptr noundef @.str.2, i32 noundef %3508, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 420, ptr noundef %3511, ptr noundef %3514, ptr noundef %3517, i32 noundef %3519) #11
  br label %3538

3521:                                             ; preds = %3499, %3492
  %3522 = load i32, ptr %140, align 4, !tbaa !5
  %3523 = call ptr @__errno_location() #12
  store i32 %3522, ptr %3523, align 4, !tbaa !5
  %3524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3525 = load i32, ptr @test_count, align 4, !tbaa !5
  %3526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3527 = load i32, ptr %3526, align 4, !tbaa !5
  %3528 = call ptr @s2n_strerror(i32 noundef %3527, ptr noundef @.str.4)
  %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_debug(i32 noundef %3530, ptr noundef @.str.4)
  %3532 = call ptr @__errno_location() #12
  %3533 = load i32, ptr %3532, align 4, !tbaa !5
  %3534 = call ptr @strerror(i32 noundef %3533) #11
  %3535 = call ptr @__errno_location() #12
  %3536 = load i32, ptr %3535, align 4, !tbaa !5
  %3537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3524, ptr noundef @.str.5, i32 noundef %3525, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 420, ptr noundef %3528, ptr noundef %3531, ptr noundef %3534, i32 noundef %3536) #11
  br label %3538

3538:                                             ; preds = %3521, %3504
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #11
  br label %3539

3539:                                             ; preds = %3538
  br label %3540

3540:                                             ; preds = %3539
  call void @exit(i32 noundef 1) #13
  unreachable

3541:                                             ; No predecessors!
  br label %3542

3542:                                             ; preds = %3541
  br label %3543

3543:                                             ; preds = %3542, %3484
  br label %3544

3544:                                             ; preds = %3543
  br label %3545

3545:                                             ; preds = %3544
  call void @llvm.lifetime.end.p0(i64 48, ptr %137) #11
  %3546 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 8
  %3547 = getelementptr inbounds [2 x i8], ptr %3546, i64 0, i64 0
  store i8 0, ptr %3547, align 1, !tbaa !11
  %3548 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 1
  store ptr %131, ptr %3548, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr %141) #11
  call void @llvm.memset.p0.i64(ptr align 8 %141, i8 0, i64 48, i1 false)
  br label %3549

3549:                                             ; preds = %3545
  %3550 = load i32, ptr @test_count, align 4, !tbaa !5
  %3551 = add nsw i32 %3550, 1
  store i32 %3551, ptr @test_count, align 4, !tbaa !5
  %3552 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef %132, ptr noundef %141)
  %3553 = getelementptr inbounds %struct.s2n_result, ptr %142, i32 0, i32 0
  store i32 %3552, ptr %3553, align 4
  %3554 = getelementptr inbounds %struct.s2n_result, ptr %142, i32 0, i32 0
  %3555 = load i32, ptr %3554, align 4
  %3556 = call zeroext i1 @s2n_result_is_ok(i32 %3555)
  br i1 %3556, label %3610, label %3557

3557:                                             ; preds = %3549
  br label %3558

3558:                                             ; preds = %3557
  br label %3559

3559:                                             ; preds = %3558
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #11
  %3560 = call ptr @__errno_location() #12
  %3561 = load i32, ptr %3560, align 4, !tbaa !5
  store i32 %3561, ptr %143, align 4, !tbaa !5
  %3562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3563 = call i32 @s2n_print_stacktrace(ptr noundef %3562)
  %3564 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3565 = trunc i8 %3564 to i1
  br i1 %3565, label %3566, label %3588

3566:                                             ; preds = %3559
  %3567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3568 = call i32 @fileno(ptr noundef %3567) #11
  %3569 = call i32 @isatty(i32 noundef %3568) #11
  %3570 = icmp ne i32 %3569, 0
  br i1 %3570, label %3571, label %3588

3571:                                             ; preds = %3566
  %3572 = load i32, ptr %143, align 4, !tbaa !5
  %3573 = call ptr @__errno_location() #12
  store i32 %3572, ptr %3573, align 4, !tbaa !5
  %3574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3575 = load i32, ptr @test_count, align 4, !tbaa !5
  %3576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3577 = load i32, ptr %3576, align 4, !tbaa !5
  %3578 = call ptr @s2n_strerror(i32 noundef %3577, ptr noundef @.str.4)
  %3579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3580 = load i32, ptr %3579, align 4, !tbaa !5
  %3581 = call ptr @s2n_strerror_debug(i32 noundef %3580, ptr noundef @.str.4)
  %3582 = call ptr @__errno_location() #12
  %3583 = load i32, ptr %3582, align 4, !tbaa !5
  %3584 = call ptr @strerror(i32 noundef %3583) #11
  %3585 = call ptr @__errno_location() #12
  %3586 = load i32, ptr %3585, align 4, !tbaa !5
  %3587 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3574, ptr noundef @.str.2, i32 noundef %3575, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 429, ptr noundef %3578, ptr noundef %3581, ptr noundef %3584, i32 noundef %3586) #11
  br label %3605

3588:                                             ; preds = %3566, %3559
  %3589 = load i32, ptr %143, align 4, !tbaa !5
  %3590 = call ptr @__errno_location() #12
  store i32 %3589, ptr %3590, align 4, !tbaa !5
  %3591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3592 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %3594, ptr noundef @.str.4)
  %3596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3597 = load i32, ptr %3596, align 4, !tbaa !5
  %3598 = call ptr @s2n_strerror_debug(i32 noundef %3597, ptr noundef @.str.4)
  %3599 = call ptr @__errno_location() #12
  %3600 = load i32, ptr %3599, align 4, !tbaa !5
  %3601 = call ptr @strerror(i32 noundef %3600) #11
  %3602 = call ptr @__errno_location() #12
  %3603 = load i32, ptr %3602, align 4, !tbaa !5
  %3604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3591, ptr noundef @.str.5, i32 noundef %3592, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 429, ptr noundef %3595, ptr noundef %3598, ptr noundef %3601, i32 noundef %3603) #11
  br label %3605

3605:                                             ; preds = %3588, %3571
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #11
  br label %3606

3606:                                             ; preds = %3605
  br label %3607

3607:                                             ; preds = %3606
  call void @exit(i32 noundef 1) #13
  unreachable

3608:                                             ; No predecessors!
  br label %3609

3609:                                             ; preds = %3608
  br label %3610

3610:                                             ; preds = %3609, %3549
  br label %3611

3611:                                             ; preds = %3610
  br label %3612

3612:                                             ; preds = %3611
  br label %3613

3613:                                             ; preds = %3612
  %3614 = load i32, ptr @test_count, align 4, !tbaa !5
  %3615 = add nsw i32 %3614, 1
  store i32 %3615, ptr @test_count, align 4, !tbaa !5
  %3616 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %141, i32 0, i32 0
  %3617 = load i8, ptr %3616, align 8, !tbaa !29, !range !13, !noundef !14
  %3618 = trunc i8 %3617 to i1
  br i1 %3618, label %3619, label %3672

3619:                                             ; preds = %3613
  br label %3620

3620:                                             ; preds = %3619
  br label %3621

3621:                                             ; preds = %3620
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #11
  %3622 = call ptr @__errno_location() #12
  %3623 = load i32, ptr %3622, align 4, !tbaa !5
  store i32 %3623, ptr %144, align 4, !tbaa !5
  %3624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3625 = call i32 @s2n_print_stacktrace(ptr noundef %3624)
  %3626 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3627 = trunc i8 %3626 to i1
  br i1 %3627, label %3628, label %3650

3628:                                             ; preds = %3621
  %3629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3630 = call i32 @fileno(ptr noundef %3629) #11
  %3631 = call i32 @isatty(i32 noundef %3630) #11
  %3632 = icmp ne i32 %3631, 0
  br i1 %3632, label %3633, label %3650

3633:                                             ; preds = %3628
  %3634 = load i32, ptr %144, align 4, !tbaa !5
  %3635 = call ptr @__errno_location() #12
  store i32 %3634, ptr %3635, align 4, !tbaa !5
  %3636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3637 = load i32, ptr @test_count, align 4, !tbaa !5
  %3638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3639 = load i32, ptr %3638, align 4, !tbaa !5
  %3640 = call ptr @s2n_strerror(i32 noundef %3639, ptr noundef @.str.4)
  %3641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3642 = load i32, ptr %3641, align 4, !tbaa !5
  %3643 = call ptr @s2n_strerror_debug(i32 noundef %3642, ptr noundef @.str.4)
  %3644 = call ptr @__errno_location() #12
  %3645 = load i32, ptr %3644, align 4, !tbaa !5
  %3646 = call ptr @strerror(i32 noundef %3645) #11
  %3647 = call ptr @__errno_location() #12
  %3648 = load i32, ptr %3647, align 4, !tbaa !5
  %3649 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3636, ptr noundef @.str.2, i32 noundef %3637, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 430, ptr noundef %3640, ptr noundef %3643, ptr noundef %3646, i32 noundef %3648) #11
  br label %3667

3650:                                             ; preds = %3628, %3621
  %3651 = load i32, ptr %144, align 4, !tbaa !5
  %3652 = call ptr @__errno_location() #12
  store i32 %3651, ptr %3652, align 4, !tbaa !5
  %3653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3654 = load i32, ptr @test_count, align 4, !tbaa !5
  %3655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3656 = load i32, ptr %3655, align 4, !tbaa !5
  %3657 = call ptr @s2n_strerror(i32 noundef %3656, ptr noundef @.str.4)
  %3658 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3659 = load i32, ptr %3658, align 4, !tbaa !5
  %3660 = call ptr @s2n_strerror_debug(i32 noundef %3659, ptr noundef @.str.4)
  %3661 = call ptr @__errno_location() #12
  %3662 = load i32, ptr %3661, align 4, !tbaa !5
  %3663 = call ptr @strerror(i32 noundef %3662) #11
  %3664 = call ptr @__errno_location() #12
  %3665 = load i32, ptr %3664, align 4, !tbaa !5
  %3666 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3653, ptr noundef @.str.5, i32 noundef %3654, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 430, ptr noundef %3657, ptr noundef %3660, ptr noundef %3663, i32 noundef %3665) #11
  br label %3667

3667:                                             ; preds = %3650, %3633
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #11
  br label %3668

3668:                                             ; preds = %3667
  br label %3669

3669:                                             ; preds = %3668
  call void @exit(i32 noundef 1) #13
  unreachable

3670:                                             ; No predecessors!
  br label %3671

3671:                                             ; preds = %3670
  br label %3672

3672:                                             ; preds = %3671, %3613
  br label %3673

3673:                                             ; preds = %3672
  br label %3674

3674:                                             ; preds = %3673
  call void @llvm.lifetime.end.p0(i64 48, ptr %141) #11
  %3675 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 8
  %3676 = getelementptr inbounds [2 x i8], ptr %3675, i64 0, i64 0
  store i8 0, ptr %3676, align 1, !tbaa !11
  %3677 = getelementptr inbounds %struct.s2n_security_policy, ptr %132, i32 0, i32 1
  store ptr %129, ptr %3677, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr %145) #11
  call void @llvm.memset.p0.i64(ptr align 8 %145, i8 0, i64 48, i1 false)
  br label %3678

3678:                                             ; preds = %3674
  %3679 = load i32, ptr @test_count, align 4, !tbaa !5
  %3680 = add nsw i32 %3679, 1
  store i32 %3680, ptr @test_count, align 4, !tbaa !5
  %3681 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef %132, ptr noundef %145)
  %3682 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  store i32 %3681, ptr %3682, align 4
  %3683 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  %3684 = load i32, ptr %3683, align 4
  %3685 = call zeroext i1 @s2n_result_is_ok(i32 %3684)
  br i1 %3685, label %3739, label %3686

3686:                                             ; preds = %3678
  br label %3687

3687:                                             ; preds = %3686
  br label %3688

3688:                                             ; preds = %3687
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #11
  %3689 = call ptr @__errno_location() #12
  %3690 = load i32, ptr %3689, align 4, !tbaa !5
  store i32 %3690, ptr %147, align 4, !tbaa !5
  %3691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3692 = call i32 @s2n_print_stacktrace(ptr noundef %3691)
  %3693 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3694 = trunc i8 %3693 to i1
  br i1 %3694, label %3695, label %3717

3695:                                             ; preds = %3688
  %3696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3697 = call i32 @fileno(ptr noundef %3696) #11
  %3698 = call i32 @isatty(i32 noundef %3697) #11
  %3699 = icmp ne i32 %3698, 0
  br i1 %3699, label %3700, label %3717

3700:                                             ; preds = %3695
  %3701 = load i32, ptr %147, align 4, !tbaa !5
  %3702 = call ptr @__errno_location() #12
  store i32 %3701, ptr %3702, align 4, !tbaa !5
  %3703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3704 = load i32, ptr @test_count, align 4, !tbaa !5
  %3705 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3706 = load i32, ptr %3705, align 4, !tbaa !5
  %3707 = call ptr @s2n_strerror(i32 noundef %3706, ptr noundef @.str.4)
  %3708 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3709 = load i32, ptr %3708, align 4, !tbaa !5
  %3710 = call ptr @s2n_strerror_debug(i32 noundef %3709, ptr noundef @.str.4)
  %3711 = call ptr @__errno_location() #12
  %3712 = load i32, ptr %3711, align 4, !tbaa !5
  %3713 = call ptr @strerror(i32 noundef %3712) #11
  %3714 = call ptr @__errno_location() #12
  %3715 = load i32, ptr %3714, align 4, !tbaa !5
  %3716 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3703, ptr noundef @.str.2, i32 noundef %3704, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 439, ptr noundef %3707, ptr noundef %3710, ptr noundef %3713, i32 noundef %3715) #11
  br label %3734

3717:                                             ; preds = %3695, %3688
  %3718 = load i32, ptr %147, align 4, !tbaa !5
  %3719 = call ptr @__errno_location() #12
  store i32 %3718, ptr %3719, align 4, !tbaa !5
  %3720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3721 = load i32, ptr @test_count, align 4, !tbaa !5
  %3722 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3723 = load i32, ptr %3722, align 4, !tbaa !5
  %3724 = call ptr @s2n_strerror(i32 noundef %3723, ptr noundef @.str.4)
  %3725 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3726 = load i32, ptr %3725, align 4, !tbaa !5
  %3727 = call ptr @s2n_strerror_debug(i32 noundef %3726, ptr noundef @.str.4)
  %3728 = call ptr @__errno_location() #12
  %3729 = load i32, ptr %3728, align 4, !tbaa !5
  %3730 = call ptr @strerror(i32 noundef %3729) #11
  %3731 = call ptr @__errno_location() #12
  %3732 = load i32, ptr %3731, align 4, !tbaa !5
  %3733 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3720, ptr noundef @.str.5, i32 noundef %3721, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 439, ptr noundef %3724, ptr noundef %3727, ptr noundef %3730, i32 noundef %3732) #11
  br label %3734

3734:                                             ; preds = %3717, %3700
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #11
  br label %3735

3735:                                             ; preds = %3734
  br label %3736

3736:                                             ; preds = %3735
  call void @exit(i32 noundef 1) #13
  unreachable

3737:                                             ; No predecessors!
  br label %3738

3738:                                             ; preds = %3737
  br label %3739

3739:                                             ; preds = %3738, %3678
  br label %3740

3740:                                             ; preds = %3739
  br label %3741

3741:                                             ; preds = %3740
  br label %3742

3742:                                             ; preds = %3741
  %3743 = load i32, ptr @test_count, align 4, !tbaa !5
  %3744 = add nsw i32 %3743, 1
  store i32 %3744, ptr @test_count, align 4, !tbaa !5
  %3745 = getelementptr inbounds %struct.s2n_security_rule_result, ptr %145, i32 0, i32 0
  %3746 = load i8, ptr %3745, align 8, !tbaa !29, !range !13, !noundef !14
  %3747 = trunc i8 %3746 to i1
  br i1 %3747, label %3748, label %3801

3748:                                             ; preds = %3742
  br label %3749

3749:                                             ; preds = %3748
  br label %3750

3750:                                             ; preds = %3749
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #11
  %3751 = call ptr @__errno_location() #12
  %3752 = load i32, ptr %3751, align 4, !tbaa !5
  store i32 %3752, ptr %148, align 4, !tbaa !5
  %3753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3754 = call i32 @s2n_print_stacktrace(ptr noundef %3753)
  %3755 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3756 = trunc i8 %3755 to i1
  br i1 %3756, label %3757, label %3779

3757:                                             ; preds = %3750
  %3758 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3759 = call i32 @fileno(ptr noundef %3758) #11
  %3760 = call i32 @isatty(i32 noundef %3759) #11
  %3761 = icmp ne i32 %3760, 0
  br i1 %3761, label %3762, label %3779

3762:                                             ; preds = %3757
  %3763 = load i32, ptr %148, align 4, !tbaa !5
  %3764 = call ptr @__errno_location() #12
  store i32 %3763, ptr %3764, align 4, !tbaa !5
  %3765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3766 = load i32, ptr @test_count, align 4, !tbaa !5
  %3767 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3768 = load i32, ptr %3767, align 4, !tbaa !5
  %3769 = call ptr @s2n_strerror(i32 noundef %3768, ptr noundef @.str.4)
  %3770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3771 = load i32, ptr %3770, align 4, !tbaa !5
  %3772 = call ptr @s2n_strerror_debug(i32 noundef %3771, ptr noundef @.str.4)
  %3773 = call ptr @__errno_location() #12
  %3774 = load i32, ptr %3773, align 4, !tbaa !5
  %3775 = call ptr @strerror(i32 noundef %3774) #11
  %3776 = call ptr @__errno_location() #12
  %3777 = load i32, ptr %3776, align 4, !tbaa !5
  %3778 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3765, ptr noundef @.str.2, i32 noundef %3766, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 440, ptr noundef %3769, ptr noundef %3772, ptr noundef %3775, i32 noundef %3777) #11
  br label %3796

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

3796:                                             ; preds = %3779, %3762
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #11
  br label %3797

3797:                                             ; preds = %3796
  br label %3798

3798:                                             ; preds = %3797
  call void @exit(i32 noundef 1) #13
  unreachable

3799:                                             ; No predecessors!
  br label %3800

3800:                                             ; preds = %3799
  br label %3801

3801:                                             ; preds = %3800, %3742
  br label %3802

3802:                                             ; preds = %3801
  br label %3803

3803:                                             ; preds = %3802
  call void @llvm.lifetime.end.p0(i64 48, ptr %145) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %132) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %131) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %129) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #11
  br label %3804

3804:                                             ; preds = %3803
  br label %3805

3805:                                             ; preds = %3804
  %3806 = call i32 @s2n_cleanup()
  %3807 = icmp eq i32 %3806, -1
  br i1 %3807, label %3808, label %3861

3808:                                             ; preds = %3805
  br label %3809

3809:                                             ; preds = %3808
  br label %3810

3810:                                             ; preds = %3809
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #11
  %3811 = call ptr @__errno_location() #12
  %3812 = load i32, ptr %3811, align 4, !tbaa !5
  store i32 %3812, ptr %149, align 4, !tbaa !5
  %3813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3814 = call i32 @s2n_print_stacktrace(ptr noundef %3813)
  %3815 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3816 = trunc i8 %3815 to i1
  br i1 %3816, label %3817, label %3839

3817:                                             ; preds = %3810
  %3818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3819 = call i32 @fileno(ptr noundef %3818) #11
  %3820 = call i32 @isatty(i32 noundef %3819) #11
  %3821 = icmp ne i32 %3820, 0
  br i1 %3821, label %3822, label %3839

3822:                                             ; preds = %3817
  %3823 = load i32, ptr %149, align 4, !tbaa !5
  %3824 = call ptr @__errno_location() #12
  store i32 %3823, ptr %3824, align 4, !tbaa !5
  %3825 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3826 = load i32, ptr @test_count, align 4, !tbaa !5
  %3827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3828 = load i32, ptr %3827, align 4, !tbaa !5
  %3829 = call ptr @s2n_strerror(i32 noundef %3828, ptr noundef @.str.4)
  %3830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3831 = load i32, ptr %3830, align 4, !tbaa !5
  %3832 = call ptr @s2n_strerror_debug(i32 noundef %3831, ptr noundef @.str.4)
  %3833 = call ptr @__errno_location() #12
  %3834 = load i32, ptr %3833, align 4, !tbaa !5
  %3835 = call ptr @strerror(i32 noundef %3834) #11
  %3836 = call ptr @__errno_location() #12
  %3837 = load i32, ptr %3836, align 4, !tbaa !5
  %3838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3825, ptr noundef @.str.2, i32 noundef %3826, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 444, ptr noundef %3829, ptr noundef %3832, ptr noundef %3835, i32 noundef %3837) #11
  br label %3856

3839:                                             ; preds = %3817, %3810
  %3840 = load i32, ptr %149, align 4, !tbaa !5
  %3841 = call ptr @__errno_location() #12
  store i32 %3840, ptr %3841, align 4, !tbaa !5
  %3842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3843 = load i32, ptr @test_count, align 4, !tbaa !5
  %3844 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3845 = load i32, ptr %3844, align 4, !tbaa !5
  %3846 = call ptr @s2n_strerror(i32 noundef %3845, ptr noundef @.str.4)
  %3847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3848 = load i32, ptr %3847, align 4, !tbaa !5
  %3849 = call ptr @s2n_strerror_debug(i32 noundef %3848, ptr noundef @.str.4)
  %3850 = call ptr @__errno_location() #12
  %3851 = load i32, ptr %3850, align 4, !tbaa !5
  %3852 = call ptr @strerror(i32 noundef %3851) #11
  %3853 = call ptr @__errno_location() #12
  %3854 = load i32, ptr %3853, align 4, !tbaa !5
  %3855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3842, ptr noundef @.str.5, i32 noundef %3843, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 444, ptr noundef %3846, ptr noundef %3849, ptr noundef %3852, i32 noundef %3854) #11
  br label %3856

3856:                                             ; preds = %3839, %3822
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #11
  br label %3857

3857:                                             ; preds = %3856
  br label %3858

3858:                                             ; preds = %3857
  call void @exit(i32 noundef 1) #13
  unreachable

3859:                                             ; No predecessors!
  br label %3860

3860:                                             ; preds = %3859
  br label %3861

3861:                                             ; preds = %3860, %3805
  br label %3862

3862:                                             ; preds = %3861
  br label %3863

3863:                                             ; preds = %3862
  br label %3864

3864:                                             ; preds = %3863
  br label %3865

3865:                                             ; preds = %3864
  %3866 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %3867 = icmp eq i32 %3866, -1
  br i1 %3867, label %3868, label %3921

3868:                                             ; preds = %3865
  br label %3869

3869:                                             ; preds = %3868
  br label %3870

3870:                                             ; preds = %3869
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #11
  %3871 = call ptr @__errno_location() #12
  %3872 = load i32, ptr %3871, align 4, !tbaa !5
  store i32 %3872, ptr %150, align 4, !tbaa !5
  %3873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3874 = call i32 @s2n_print_stacktrace(ptr noundef %3873)
  %3875 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3876 = trunc i8 %3875 to i1
  br i1 %3876, label %3877, label %3899

3877:                                             ; preds = %3870
  %3878 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3879 = call i32 @fileno(ptr noundef %3878) #11
  %3880 = call i32 @isatty(i32 noundef %3879) #11
  %3881 = icmp ne i32 %3880, 0
  br i1 %3881, label %3882, label %3899

3882:                                             ; preds = %3877
  %3883 = load i32, ptr %150, align 4, !tbaa !5
  %3884 = call ptr @__errno_location() #12
  store i32 %3883, ptr %3884, align 4, !tbaa !5
  %3885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3886 = load i32, ptr @test_count, align 4, !tbaa !5
  %3887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3888 = load i32, ptr %3887, align 4, !tbaa !5
  %3889 = call ptr @s2n_strerror(i32 noundef %3888, ptr noundef @.str.4)
  %3890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3891 = load i32, ptr %3890, align 4, !tbaa !5
  %3892 = call ptr @s2n_strerror_debug(i32 noundef %3891, ptr noundef @.str.4)
  %3893 = call ptr @__errno_location() #12
  %3894 = load i32, ptr %3893, align 4, !tbaa !5
  %3895 = call ptr @strerror(i32 noundef %3894) #11
  %3896 = call ptr @__errno_location() #12
  %3897 = load i32, ptr %3896, align 4, !tbaa !5
  %3898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3885, ptr noundef @.str.2, i32 noundef %3886, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 444, ptr noundef %3889, ptr noundef %3892, ptr noundef %3895, i32 noundef %3897) #11
  br label %3916

3899:                                             ; preds = %3877, %3870
  %3900 = load i32, ptr %150, align 4, !tbaa !5
  %3901 = call ptr @__errno_location() #12
  store i32 %3900, ptr %3901, align 4, !tbaa !5
  %3902 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3903 = load i32, ptr @test_count, align 4, !tbaa !5
  %3904 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3905 = load i32, ptr %3904, align 4, !tbaa !5
  %3906 = call ptr @s2n_strerror(i32 noundef %3905, ptr noundef @.str.4)
  %3907 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3908 = load i32, ptr %3907, align 4, !tbaa !5
  %3909 = call ptr @s2n_strerror_debug(i32 noundef %3908, ptr noundef @.str.4)
  %3910 = call ptr @__errno_location() #12
  %3911 = load i32, ptr %3910, align 4, !tbaa !5
  %3912 = call ptr @strerror(i32 noundef %3911) #11
  %3913 = call ptr @__errno_location() #12
  %3914 = load i32, ptr %3913, align 4, !tbaa !5
  %3915 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3902, ptr noundef @.str.5, i32 noundef %3903, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 444, ptr noundef %3906, ptr noundef %3909, ptr noundef %3912, i32 noundef %3914) #11
  br label %3916

3916:                                             ; preds = %3899, %3882
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #11
  br label %3917

3917:                                             ; preds = %3916
  br label %3918

3918:                                             ; preds = %3917
  call void @exit(i32 noundef 1) #13
  unreachable

3919:                                             ; No predecessors!
  br label %3920

3920:                                             ; preds = %3919
  br label %3921

3921:                                             ; preds = %3920, %3865
  br label %3922

3922:                                             ; preds = %3921
  br label %3923

3923:                                             ; preds = %3922
  %3924 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3925 = trunc i8 %3924 to i1
  br i1 %3925, label %3926, label %3942

3926:                                             ; preds = %3923
  %3927 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3928 = call i32 @fileno(ptr noundef %3927) #11
  %3929 = call i32 @isatty(i32 noundef %3928) #11
  %3930 = icmp ne i32 %3929, 0
  br i1 %3930, label %3931, label %3942

3931:                                             ; preds = %3926
  %3932 = load i32, ptr @test_count, align 4, !tbaa !5
  %3933 = icmp ne i32 %3932, 0
  br i1 %3933, label %3934, label %3938

3934:                                             ; preds = %3931
  %3935 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3936 = load i32, ptr @test_count, align 4, !tbaa !5
  %3937 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3935, ptr noundef @.str.27, i32 noundef %3936) #11
  br label %3941

3938:                                             ; preds = %3931
  %3939 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3940 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3939, ptr noundef @.str.28) #11
  br label %3941

3941:                                             ; preds = %3938, %3934
  br label %3953

3942:                                             ; preds = %3926, %3923
  %3943 = load i32, ptr @test_count, align 4, !tbaa !5
  %3944 = icmp ne i32 %3943, 0
  br i1 %3944, label %3945, label %3949

3945:                                             ; preds = %3942
  %3946 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3947 = load i32, ptr @test_count, align 4, !tbaa !5
  %3948 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3946, ptr noundef @.str.29, i32 noundef %3947) #11
  br label %3952

3949:                                             ; preds = %3942
  %3950 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3950, ptr noundef @.str.30) #11
  br label %3952

3952:                                             ; preds = %3949, %3945
  br label %3953

3953:                                             ; preds = %3952, %3941
  store i32 0, ptr %3, align 4
  store i32 1, ptr %151, align 4
  br label %3958

3954:                                             ; No predecessors!
  br label %3955

3955:                                             ; preds = %3954
  br label %3956

3956:                                             ; preds = %3955
  br label %3957

3957:                                             ; preds = %3956
  store i32 0, ptr %151, align 4
  br label %3958

3958:                                             ; preds = %3957, %3953
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %9) #11
  %3959 = load i32, ptr %151, align 4
  switch i32 %3959, label %3962 [
    i32 0, label %3960
    i32 1, label %3960
  ]

3960:                                             ; preds = %3958, %3958
  %3961 = load i32, ptr %3, align 4
  ret i32 %3961

3962:                                             ; preds = %3958
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

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

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

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

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

declare i32 @s2n_security_rule_result_free(ptr noundef) #2

declare i32 @s2n_security_rule_result_init_output(ptr noundef) #2

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

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

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

declare i32 @s2n_cleanup() #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind 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 #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
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, !17, i64 0}
!16 = !{!"s2n_cipher_preferences", !17, i64 0, !10, i64 8, !12, i64 16}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !10, i64 8}
!19 = !{!16, !12, i64 16}
!20 = !{!21, !7, i64 0}
!21 = !{!"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}
!22 = !{!21, !10, i64 8}
!23 = !{!21, !10, i64 16}
!24 = !{!21, !10, i64 24}
!25 = !{!21, !10, i64 32}
!26 = !{!21, !10, i64 40}
!27 = !{!21, !10, i64 48}
!28 = !{!21, !12, i64 56}
!29 = !{!30, !12, i64 0}
!30 = !{!"s2n_security_rule_result", !12, i64 0, !12, i64 1, !31, i64 8}
!31 = !{!"s2n_stuffer", !32, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!32 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!33 = !{i64 0, i64 1, !34, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 8, !9, i64 32, i64 8, !9, i64 40, i64 8, !9, i64 48, i64 8, !9, i64 56, i64 1, !11, i64 57, i64 2, !34}
!34 = !{!7, !7, i64 0}
!35 = !{!30, !6, i64 36}
!36 = !{!30, !6, i64 32}
!37 = !{!38, !38, i64 0}
!38 = !{!"long", !7, i64 0}


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

%struct.s2n_security_rule = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_ecc_preferences = type { i8, ptr }
%struct.s2n_kem_preferences = type { i8, ptr, i8, ptr, i8 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_security_rule_result = type { i8, i8, %struct.s2n_stuffer }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@VALID_CIPHER_SUITE = external dso_local local_unnamed_addr global ptr, align 8
@EXAMPLE_INVALID_CIPHER_SUITE = external dso_local local_unnamed_addr global ptr, align 8
@EXAMPLE_INVALID_CIPHER_SUITE_2 = external dso_local local_unnamed_addr global ptr, align 8
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [82 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
@__const.main.test_rule = external hidden unnamed_addr constant %struct.s2n_security_rule, align 8
@__const.main.valid_cipher_prefs = external hidden unnamed_addr constant %struct.s2n_cipher_preferences, align 8
@__const.main.valid_sig_prefs = external hidden unnamed_addr constant %struct.s2n_signature_preferences, align 8
@__const.main.invalid_sig_prefs = external hidden unnamed_addr constant %struct.s2n_signature_preferences, align 8
@__const.main.valid_ecc_prefs = external hidden unnamed_addr constant %struct.s2n_ecc_preferences, align 8
@__const.main.invalid_ecc_prefs = external hidden unnamed_addr constant %struct.s2n_ecc_preferences, align 8
@__const.main.valid_kem_preferences = external hidden unnamed_addr constant %struct.s2n_kem_preferences, align 8
@__const.main.invalid_kem_preferences = external hidden unnamed_addr constant %struct.s2n_kem_preferences, align 8
@.str.9 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [34 x i8], align 1
@__const.main.expected_output = external hidden unnamed_addr constant [50 x i8], align 16
@.str.15 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [81 x i8], align 1
@__const.main.expected_output.19 = external hidden unnamed_addr constant [145 x i8], align 16
@__const.main.expected_output.20 = external hidden unnamed_addr constant [194 x i8], align 16
@__const.main.expected_prefix = external hidden unnamed_addr constant [29 x i8], align 16
@security_policy_test_all = external constant %struct.s2n_security_policy, align 8
@.str.21 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [90 x i8], align 1
@s2n_rsa_with_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@__const.main.forward_secret_suites = external hidden unnamed_addr constant [2 x ptr], align 16
@.str.24 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.30 = 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 %struct.s2n_security_rule, align 8
  %4 = alloca %struct.s2n_cipher_preferences, align 8
  %5 = alloca [3 x ptr], align 16
  %6 = alloca %struct.s2n_cipher_preferences, align 8
  %7 = alloca %struct.s2n_signature_preferences, align 8
  %8 = alloca %struct.s2n_signature_preferences, align 8
  %9 = alloca %struct.s2n_ecc_preferences, align 8
  %10 = alloca %struct.s2n_ecc_preferences, align 8
  %11 = alloca %struct.s2n_kem_preferences, align 8
  %12 = alloca %struct.s2n_kem_preferences, align 8
  %13 = alloca %struct.s2n_security_policy, align 8
  %14 = alloca %struct.s2n_security_policy, align 8
  %15 = alloca %struct.s2n_security_rule_result, align 8
  %16 = alloca %struct.s2n_security_rule_result, align 8
  %17 = alloca %struct.s2n_security_policy, align 8
  %18 = alloca %struct.s2n_security_rule_result, align 8
  %19 = alloca %struct.s2n_security_policy, align 8
  %20 = alloca %struct.s2n_security_rule_result, align 8
  %21 = alloca %struct.s2n_security_policy, align 8
  %22 = alloca %struct.s2n_security_rule_result, align 8
  %23 = alloca %struct.s2n_security_policy, align 8
  %24 = alloca %struct.s2n_security_rule_result, align 8
  %25 = alloca %struct.s2n_security_policy, align 8
  %26 = alloca %struct.s2n_security_rule_result, align 8
  %27 = alloca %struct.s2n_security_policy, align 8
  %28 = alloca %struct.s2n_security_rule_result, align 8
  %29 = alloca %struct.s2n_security_policy, align 8
  %30 = alloca %struct.s2n_security_rule_result, align 8
  %31 = alloca %struct.s2n_security_policy, align 8
  %32 = alloca %struct.s2n_security_rule_result, align 8
  %33 = alloca %struct.s2n_security_policy, align 8
  %34 = alloca %struct.s2n_security_rule_result, align 8
  %35 = alloca %struct.s2n_security_policy, align 8
  %36 = alloca %struct.s2n_security_rule_result, align 8
  %37 = alloca %struct.s2n_security_policy, align 8
  %38 = alloca %struct.s2n_security_rule_result, align 8
  %39 = alloca %struct.s2n_security_rule_result, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %struct.s2n_cipher_preferences, align 8
  %42 = alloca [2 x ptr], align 16
  %43 = alloca %struct.s2n_cipher_preferences, align 8
  %44 = alloca %struct.s2n_security_policy, align 8
  %45 = alloca %struct.s2n_security_rule_result, align 8
  %46 = alloca %struct.s2n_security_rule_result, align 8
  %47 = alloca %struct.s2n_security_rule_result, align 8
  %48 = alloca %struct.s2n_security_rule_result, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %49 = load ptr, ptr @stdout, align 8, !tbaa !9
  %50 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %49, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #12
  %51 = load ptr, ptr @stdout, align 8, !tbaa !9
  %52 = tail call i32 @fflush(ptr noundef %51)
  %53 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #12
  %54 = icmp eq i32 %53, -1
  br i1 %54, label %55, label %79

55:                                               ; preds = %2
  %56 = tail call ptr @__errno_location() #13
  %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) #12
  %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) #12
  %65 = tail call i32 @isatty(i32 noundef %64) #12
  %.not234 = icmp eq i32 %65, 0
  br i1 %.not234, label %66, label %67

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

67:                                               ; preds = %62, %66
  %.str.5.sink = 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) #12
  %73 = load i32, ptr %70, align 4, !tbaa !5
  %74 = tail call ptr @s2n_strerror_debug(i32 noundef %73, ptr noundef nonnull @.str.4) #12
  %75 = load i32, ptr %56, align 4, !tbaa !5
  %76 = tail call ptr @strerror(i32 noundef %75) #12
  %77 = load i32, ptr %56, align 4, !tbaa !5
  %78 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %68, ptr noundef nonnull %.str.5.sink, i32 noundef %69, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 94, ptr noundef %72, ptr noundef %74, ptr noundef %76, i32 noundef %77) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

79:                                               ; preds = %2
  %80 = load i32, ptr @test_count, align 4, !tbaa !5
  %81 = add nsw i32 %80, 1
  store i32 %81, ptr @test_count, align 4, !tbaa !5
  %82 = tail call i32 @s2n_enable_atexit() #12
  %83 = icmp eq i32 %82, -1
  br i1 %83, label %84, label %108

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

91:                                               ; preds = %84
  %92 = load ptr, ptr @stderr, align 8, !tbaa !9
  %93 = tail call i32 @fileno(ptr noundef %92) #12
  %94 = tail call i32 @isatty(i32 noundef %93) #12
  %.not233 = icmp eq i32 %94, 0
  br i1 %.not233, label %95, label %96

95:                                               ; preds = %91, %84
  br label %96

96:                                               ; preds = %91, %95
  %.str.5.sink245 = phi ptr [ @.str.5, %95 ], [ @.str.2, %91 ]
  store i32 %86, ptr %85, align 4, !tbaa !5
  %97 = load ptr, ptr @stderr, align 8, !tbaa !9
  %98 = load i32, ptr @test_count, align 4, !tbaa !5
  %99 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = tail call ptr @s2n_strerror(i32 noundef %100, ptr noundef nonnull @.str.4) #12
  %102 = load i32, ptr %99, align 4, !tbaa !5
  %103 = tail call ptr @s2n_strerror_debug(i32 noundef %102, ptr noundef nonnull @.str.4) #12
  %104 = load i32, ptr %85, align 4, !tbaa !5
  %105 = tail call ptr @strerror(i32 noundef %104) #12
  %106 = load i32, ptr %85, align 4, !tbaa !5
  %107 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %97, ptr noundef nonnull %.str.5.sink245, i32 noundef %98, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 94, ptr noundef %101, ptr noundef %103, ptr noundef %105, i32 noundef %106) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

108:                                              ; preds = %79
  %109 = tail call i32 @s2n_init() #12
  %110 = icmp eq i32 %109, -1
  br i1 %110, label %111, label %135

111:                                              ; preds = %108
  %112 = tail call ptr @__errno_location() #13
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %115 = tail call i32 @s2n_print_stacktrace(ptr noundef %114) #12
  %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 = tail call i32 @fileno(ptr noundef %119) #12
  %121 = tail call i32 @isatty(i32 noundef %120) #12
  %.not232 = icmp eq i32 %121, 0
  br i1 %.not232, label %122, label %123

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

123:                                              ; preds = %118, %122
  %.str.5.sink256 = 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 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %128 = tail call ptr @s2n_strerror(i32 noundef %127, ptr noundef nonnull @.str.4) #12
  %129 = load i32, ptr %126, align 4, !tbaa !5
  %130 = tail call ptr @s2n_strerror_debug(i32 noundef %129, ptr noundef nonnull @.str.4) #12
  %131 = load i32, ptr %112, align 4, !tbaa !5
  %132 = tail call ptr @strerror(i32 noundef %131) #12
  %133 = load i32, ptr %112, align 4, !tbaa !5
  %134 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %124, ptr noundef nonnull %.str.5.sink256, i32 noundef %125, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 94, ptr noundef %128, ptr noundef %130, ptr noundef %132, i32 noundef %133) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

135:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %3) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(56) @__const.main.test_rule, i64 56, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) @__const.main.valid_cipher_prefs, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #12
  %136 = load ptr, ptr @EXAMPLE_INVALID_CIPHER_SUITE, align 8, !tbaa !9
  store ptr %136, ptr %5, align 16, !tbaa !9
  %137 = getelementptr inbounds i8, ptr %5, i64 8
  %138 = load ptr, ptr @VALID_CIPHER_SUITE, align 8, !tbaa !9
  store ptr %138, ptr %137, align 8, !tbaa !9
  %139 = getelementptr inbounds i8, ptr %5, i64 16
  %140 = load ptr, ptr @EXAMPLE_INVALID_CIPHER_SUITE_2, align 8, !tbaa !9
  store ptr %140, ptr %139, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #12
  store i16 3, ptr %6, align 8, !tbaa !15
  %141 = getelementptr inbounds i8, ptr %6, i64 8
  store ptr %5, ptr %141, align 8, !tbaa !18
  %142 = getelementptr inbounds i8, ptr %6, i64 16
  store i8 0, ptr %142, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) @__const.main.valid_sig_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) @__const.main.invalid_sig_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) @__const.main.valid_ecc_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) @__const.main.invalid_ecc_prefs, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull align 8 dereferenceable(40) @__const.main.valid_kem_preferences, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef nonnull align 8 dereferenceable(40) @__const.main.invalid_kem_preferences, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #12
  store i8 33, ptr %13, align 8, !tbaa !20
  %143 = getelementptr inbounds i8, ptr %13, i64 8
  store ptr %4, ptr %143, align 8, !tbaa !22
  %144 = getelementptr inbounds i8, ptr %13, i64 16
  store ptr %11, ptr %144, align 8, !tbaa !23
  %145 = getelementptr inbounds i8, ptr %13, i64 24
  store ptr %7, ptr %145, align 8, !tbaa !24
  %146 = getelementptr inbounds i8, ptr %13, i64 32
  store ptr %7, ptr %146, align 8, !tbaa !25
  %147 = getelementptr inbounds i8, ptr %13, i64 40
  store ptr %9, ptr %147, align 8, !tbaa !26
  %148 = getelementptr inbounds i8, ptr %13, i64 48
  store ptr null, ptr %148, align 8, !tbaa !27
  %149 = getelementptr inbounds i8, ptr %13, i64 56
  store i8 0, ptr %149, align 8, !tbaa !28
  %150 = getelementptr inbounds i8, ptr %13, i64 57
  store i16 0, ptr %150, align 1
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #12
  store i8 32, ptr %14, align 8, !tbaa !20
  %151 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %6, ptr %151, align 8, !tbaa !22
  %152 = getelementptr inbounds i8, ptr %14, i64 16
  store ptr %12, ptr %152, align 8, !tbaa !23
  %153 = getelementptr inbounds i8, ptr %14, i64 24
  store ptr %8, ptr %153, align 8, !tbaa !24
  %154 = getelementptr inbounds i8, ptr %14, i64 32
  store ptr %8, ptr %154, align 8, !tbaa !25
  %155 = getelementptr inbounds i8, ptr %14, i64 40
  store ptr %10, ptr %155, align 8, !tbaa !26
  %156 = getelementptr inbounds i8, ptr %14, i64 48
  store ptr null, ptr %156, align 8, !tbaa !27
  %157 = getelementptr inbounds i8, ptr %14, i64 56
  store i8 0, ptr %157, align 8, !tbaa !28
  %158 = getelementptr inbounds i8, ptr %14, i64 57
  store i16 0, ptr %158, align 1
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %15, i8 0, i64 48, i1 false)
  %159 = load i32, ptr @test_count, align 4, !tbaa !5
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr @test_count, align 4, !tbaa !5
  %161 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull %15) #12
  %162 = call zeroext i1 @s2n_result_is_ok(i32 %161)
  br i1 %162, label %187, label %163

163:                                              ; preds = %135
  %164 = tail call ptr @__errno_location() #13
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %167 = call i32 @s2n_print_stacktrace(ptr noundef %166) #12
  %168 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %169 = trunc nuw i8 %168 to i1
  br i1 %169, label %170, label %174

170:                                              ; preds = %163
  %171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %172 = call i32 @fileno(ptr noundef %171) #12
  %173 = call i32 @isatty(i32 noundef %172) #12
  %.not = icmp eq i32 %173, 0
  br i1 %.not, label %174, label %175

174:                                              ; preds = %170, %163
  br label %175

175:                                              ; preds = %170, %174
  %.str.5.sink267 = phi ptr [ @.str.5, %174 ], [ @.str.2, %170 ]
  store i32 %165, ptr %164, align 4, !tbaa !5
  %176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %177 = load i32, ptr @test_count, align 4, !tbaa !5
  %178 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %179 = load i32, ptr %178, align 4, !tbaa !5
  %180 = call ptr @s2n_strerror(i32 noundef %179, ptr noundef nonnull @.str.4) #12
  %181 = load i32, ptr %178, align 4, !tbaa !5
  %182 = call ptr @s2n_strerror_debug(i32 noundef %181, ptr noundef nonnull @.str.4) #12
  %183 = load i32, ptr %164, align 4, !tbaa !5
  %184 = call ptr @strerror(i32 noundef %183) #12
  %185 = load i32, ptr %164, align 4, !tbaa !5
  %186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %176, ptr noundef nonnull %.str.5.sink267, i32 noundef %177, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef %180, ptr noundef %182, ptr noundef %184, i32 noundef %185) #14
  call void @exit(i32 noundef 1) #15
  unreachable

187:                                              ; preds = %135
  %188 = load i32, ptr @test_count, align 4, !tbaa !5
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr @test_count, align 4, !tbaa !5
  %190 = load i8, ptr %15, align 8, !tbaa !29, !range !13, !noundef !14
  %191 = trunc nuw i8 %190 to i1
  br i1 %191, label %192, label %216

192:                                              ; preds = %187
  %193 = tail call ptr @__errno_location() #13
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %196 = call i32 @s2n_print_stacktrace(ptr noundef %195) #12
  %197 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %198 = trunc nuw i8 %197 to i1
  br i1 %198, label %199, label %203

199:                                              ; preds = %192
  %200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %201 = call i32 @fileno(ptr noundef %200) #12
  %202 = call i32 @isatty(i32 noundef %201) #12
  %.not231 = icmp eq i32 %202, 0
  br i1 %.not231, label %203, label %204

203:                                              ; preds = %199, %192
  br label %204

204:                                              ; preds = %199, %203
  %.str.5.sink278 = phi ptr [ @.str.5, %203 ], [ @.str.2, %199 ]
  store i32 %194, ptr %193, align 4, !tbaa !5
  %205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %206 = load i32, ptr @test_count, align 4, !tbaa !5
  %207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %208 = load i32, ptr %207, align 4, !tbaa !5
  %209 = call ptr @s2n_strerror(i32 noundef %208, ptr noundef nonnull @.str.4) #12
  %210 = load i32, ptr %207, align 4, !tbaa !5
  %211 = call ptr @s2n_strerror_debug(i32 noundef %210, ptr noundef nonnull @.str.4) #12
  %212 = load i32, ptr %193, align 4, !tbaa !5
  %213 = call ptr @strerror(i32 noundef %212) #12
  %214 = load i32, ptr %193, align 4, !tbaa !5
  %215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %205, ptr noundef nonnull %.str.5.sink278, i32 noundef %206, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 177, ptr noundef %209, ptr noundef %211, ptr noundef %213, i32 noundef %214) #14
  call void @exit(i32 noundef 1) #15
  unreachable

216:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %16, i8 0, i64 48, i1 false)
  %217 = add nsw i32 %188, 2
  store i32 %217, ptr @test_count, align 4, !tbaa !5
  %218 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %14, ptr noundef nonnull %16) #12
  %219 = call zeroext i1 @s2n_result_is_ok(i32 %218)
  br i1 %219, label %244, label %220

220:                                              ; preds = %216
  %221 = tail call ptr @__errno_location() #13
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %224 = call i32 @s2n_print_stacktrace(ptr noundef %223) #12
  %225 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %226 = trunc nuw i8 %225 to i1
  br i1 %226, label %227, label %231

227:                                              ; preds = %220
  %228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %229 = call i32 @fileno(ptr noundef %228) #12
  %230 = call i32 @isatty(i32 noundef %229) #12
  %.not172 = icmp eq i32 %230, 0
  br i1 %.not172, label %231, label %232

231:                                              ; preds = %227, %220
  br label %232

232:                                              ; preds = %227, %231
  %.str.5.sink289 = phi ptr [ @.str.5, %231 ], [ @.str.2, %227 ]
  store i32 %222, ptr %221, align 4, !tbaa !5
  %233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %234 = load i32, ptr @test_count, align 4, !tbaa !5
  %235 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = call ptr @s2n_strerror(i32 noundef %236, ptr noundef nonnull @.str.4) #12
  %238 = load i32, ptr %235, align 4, !tbaa !5
  %239 = call ptr @s2n_strerror_debug(i32 noundef %238, ptr noundef nonnull @.str.4) #12
  %240 = load i32, ptr %221, align 4, !tbaa !5
  %241 = call ptr @strerror(i32 noundef %240) #12
  %242 = load i32, ptr %221, align 4, !tbaa !5
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %233, ptr noundef nonnull %.str.5.sink289, i32 noundef %234, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 186, ptr noundef %237, ptr noundef %239, ptr noundef %241, i32 noundef %242) #14
  call void @exit(i32 noundef 1) #15
  unreachable

244:                                              ; preds = %216
  %245 = load i32, ptr @test_count, align 4, !tbaa !5
  %246 = add nsw i32 %245, 1
  store i32 %246, ptr @test_count, align 4, !tbaa !5
  %247 = load i8, ptr %16, align 8, !tbaa !29, !range !13, !noundef !14
  %248 = trunc nuw i8 %247 to i1
  br i1 %248, label %273, label %249

249:                                              ; preds = %244
  %250 = tail call ptr @__errno_location() #13
  %251 = load i32, ptr %250, align 4, !tbaa !5
  %252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %253 = call i32 @s2n_print_stacktrace(ptr noundef %252) #12
  %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 = %249
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = call i32 @fileno(ptr noundef %257) #12
  %259 = call i32 @isatty(i32 noundef %258) #12
  %.not173 = icmp eq i32 %259, 0
  br i1 %.not173, label %260, label %261

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

261:                                              ; preds = %256, %260
  %.str.5.sink300 = phi ptr [ @.str.5, %260 ], [ @.str.2, %256 ]
  store i32 %251, ptr %250, align 4, !tbaa !5
  %262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %263 = load i32, ptr @test_count, align 4, !tbaa !5
  %264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = call ptr @s2n_strerror(i32 noundef %265, ptr noundef nonnull @.str.4) #12
  %267 = load i32, ptr %264, align 4, !tbaa !5
  %268 = call ptr @s2n_strerror_debug(i32 noundef %267, ptr noundef nonnull @.str.4) #12
  %269 = load i32, ptr %250, align 4, !tbaa !5
  %270 = call ptr @strerror(i32 noundef %269) #12
  %271 = load i32, ptr %250, align 4, !tbaa !5
  %272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %262, ptr noundef nonnull %.str.5.sink300, i32 noundef %263, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 187, ptr noundef %266, ptr noundef %268, ptr noundef %270, i32 noundef %271) #14
  call void @exit(i32 noundef 1) #15
  unreachable

273:                                              ; preds = %244
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %17, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %274 = getelementptr inbounds i8, ptr %17, i64 8
  store ptr %6, ptr %274, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %18) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %18, i8 0, i64 48, i1 false)
  %275 = add nsw i32 %245, 2
  store i32 %275, ptr @test_count, align 4, !tbaa !5
  %276 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %17, ptr noundef nonnull %18) #12
  %277 = call zeroext i1 @s2n_result_is_ok(i32 %276)
  br i1 %277, label %302, label %278

278:                                              ; preds = %273
  %279 = tail call ptr @__errno_location() #13
  %280 = load i32, ptr %279, align 4, !tbaa !5
  %281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %282 = call i32 @s2n_print_stacktrace(ptr noundef %281) #12
  %283 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %284 = trunc nuw i8 %283 to i1
  br i1 %284, label %285, label %289

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

289:                                              ; preds = %285, %278
  br label %290

290:                                              ; preds = %285, %289
  %.str.5.sink311 = phi ptr [ @.str.5, %289 ], [ @.str.2, %285 ]
  store i32 %280, ptr %279, align 4, !tbaa !5
  %291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %292 = load i32, ptr @test_count, align 4, !tbaa !5
  %293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %294 = load i32, ptr %293, align 4, !tbaa !5
  %295 = call ptr @s2n_strerror(i32 noundef %294, ptr noundef nonnull @.str.4) #12
  %296 = load i32, ptr %293, align 4, !tbaa !5
  %297 = call ptr @s2n_strerror_debug(i32 noundef %296, ptr noundef nonnull @.str.4) #12
  %298 = load i32, ptr %279, align 4, !tbaa !5
  %299 = call ptr @strerror(i32 noundef %298) #12
  %300 = load i32, ptr %279, align 4, !tbaa !5
  %301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %291, ptr noundef nonnull %.str.5.sink311, i32 noundef %292, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 197, ptr noundef %295, ptr noundef %297, ptr noundef %299, i32 noundef %300) #14
  call void @exit(i32 noundef 1) #15
  unreachable

302:                                              ; preds = %273
  %303 = load i32, ptr @test_count, align 4, !tbaa !5
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr @test_count, align 4, !tbaa !5
  %305 = load i8, ptr %18, align 8, !tbaa !29, !range !13, !noundef !14
  %306 = trunc nuw i8 %305 to i1
  br i1 %306, label %331, label %307

307:                                              ; preds = %302
  %308 = tail call ptr @__errno_location() #13
  %309 = load i32, ptr %308, align 4, !tbaa !5
  %310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %311 = call i32 @s2n_print_stacktrace(ptr noundef %310) #12
  %312 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %313 = trunc nuw i8 %312 to i1
  br i1 %313, label %314, label %318

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

318:                                              ; preds = %314, %307
  br label %319

319:                                              ; preds = %314, %318
  %.str.5.sink322 = phi ptr [ @.str.5, %318 ], [ @.str.2, %314 ]
  store i32 %309, ptr %308, align 4, !tbaa !5
  %320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %321 = load i32, ptr @test_count, align 4, !tbaa !5
  %322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %323 = load i32, ptr %322, align 4, !tbaa !5
  %324 = call ptr @s2n_strerror(i32 noundef %323, ptr noundef nonnull @.str.4) #12
  %325 = load i32, ptr %322, align 4, !tbaa !5
  %326 = call ptr @s2n_strerror_debug(i32 noundef %325, ptr noundef nonnull @.str.4) #12
  %327 = load i32, ptr %308, align 4, !tbaa !5
  %328 = call ptr @strerror(i32 noundef %327) #12
  %329 = load i32, ptr %308, align 4, !tbaa !5
  %330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %320, ptr noundef nonnull %.str.5.sink322, i32 noundef %321, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 198, ptr noundef %324, ptr noundef %326, ptr noundef %328, i32 noundef %329) #14
  call void @exit(i32 noundef 1) #15
  unreachable

331:                                              ; preds = %302
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %19) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %19, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %332 = getelementptr inbounds i8, ptr %19, i64 24
  store ptr %8, ptr %332, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %20, i8 0, i64 48, i1 false)
  %333 = add nsw i32 %303, 2
  store i32 %333, ptr @test_count, align 4, !tbaa !5
  %334 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %20) #12
  %335 = call zeroext i1 @s2n_result_is_ok(i32 %334)
  br i1 %335, label %360, label %336

336:                                              ; preds = %331
  %337 = tail call ptr @__errno_location() #13
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %340 = call i32 @s2n_print_stacktrace(ptr noundef %339) #12
  %341 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %342 = trunc nuw i8 %341 to i1
  br i1 %342, label %343, label %347

343:                                              ; preds = %336
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = call i32 @fileno(ptr noundef %344) #12
  %346 = call i32 @isatty(i32 noundef %345) #12
  %.not176 = icmp eq i32 %346, 0
  br i1 %.not176, label %347, label %348

347:                                              ; preds = %343, %336
  br label %348

348:                                              ; preds = %343, %347
  %.str.5.sink333 = phi ptr [ @.str.5, %347 ], [ @.str.2, %343 ]
  store i32 %338, ptr %337, align 4, !tbaa !5
  %349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %350 = load i32, ptr @test_count, align 4, !tbaa !5
  %351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = call ptr @s2n_strerror(i32 noundef %352, ptr noundef nonnull @.str.4) #12
  %354 = load i32, ptr %351, align 4, !tbaa !5
  %355 = call ptr @s2n_strerror_debug(i32 noundef %354, ptr noundef nonnull @.str.4) #12
  %356 = load i32, ptr %337, align 4, !tbaa !5
  %357 = call ptr @strerror(i32 noundef %356) #12
  %358 = load i32, ptr %337, align 4, !tbaa !5
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %349, ptr noundef nonnull %.str.5.sink333, i32 noundef %350, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 208, ptr noundef %353, ptr noundef %355, ptr noundef %357, i32 noundef %358) #14
  call void @exit(i32 noundef 1) #15
  unreachable

360:                                              ; preds = %331
  %361 = load i32, ptr @test_count, align 4, !tbaa !5
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr @test_count, align 4, !tbaa !5
  %363 = load i8, ptr %20, align 8, !tbaa !29, !range !13, !noundef !14
  %364 = trunc nuw i8 %363 to i1
  br i1 %364, label %389, label %365

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

372:                                              ; preds = %365
  %373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %374 = call i32 @fileno(ptr noundef %373) #12
  %375 = call i32 @isatty(i32 noundef %374) #12
  %.not177 = icmp eq i32 %375, 0
  br i1 %.not177, label %376, label %377

376:                                              ; preds = %372, %365
  br label %377

377:                                              ; preds = %372, %376
  %.str.5.sink344 = phi ptr [ @.str.5, %376 ], [ @.str.2, %372 ]
  store i32 %367, ptr %366, align 4, !tbaa !5
  %378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %379 = load i32, ptr @test_count, align 4, !tbaa !5
  %380 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %381 = load i32, ptr %380, align 4, !tbaa !5
  %382 = call ptr @s2n_strerror(i32 noundef %381, ptr noundef nonnull @.str.4) #12
  %383 = load i32, ptr %380, align 4, !tbaa !5
  %384 = call ptr @s2n_strerror_debug(i32 noundef %383, ptr noundef nonnull @.str.4) #12
  %385 = load i32, ptr %366, align 4, !tbaa !5
  %386 = call ptr @strerror(i32 noundef %385) #12
  %387 = load i32, ptr %366, align 4, !tbaa !5
  %388 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %378, ptr noundef nonnull %.str.5.sink344, i32 noundef %379, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 209, ptr noundef %382, ptr noundef %384, ptr noundef %386, i32 noundef %387) #14
  call void @exit(i32 noundef 1) #15
  unreachable

389:                                              ; preds = %360
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %19) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %21, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %390 = getelementptr inbounds i8, ptr %21, i64 32
  store ptr %8, ptr %390, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %22) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %22, i8 0, i64 48, i1 false)
  %391 = add nsw i32 %361, 2
  store i32 %391, ptr @test_count, align 4, !tbaa !5
  %392 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef nonnull %22) #12
  %393 = call zeroext i1 @s2n_result_is_ok(i32 %392)
  br i1 %393, label %418, label %394

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

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

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

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

418:                                              ; preds = %389
  %419 = load i32, ptr @test_count, align 4, !tbaa !5
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr @test_count, align 4, !tbaa !5
  %421 = load i8, ptr %22, align 8, !tbaa !29, !range !13, !noundef !14
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %447, label %423

423:                                              ; preds = %418
  %424 = tail call ptr @__errno_location() #13
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = call i32 @s2n_print_stacktrace(ptr noundef %426) #12
  %428 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %429 = trunc nuw i8 %428 to i1
  br i1 %429, label %430, label %434

430:                                              ; preds = %423
  %431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %432 = call i32 @fileno(ptr noundef %431) #12
  %433 = call i32 @isatty(i32 noundef %432) #12
  %.not179 = icmp eq i32 %433, 0
  br i1 %.not179, label %434, label %435

434:                                              ; preds = %430, %423
  br label %435

435:                                              ; preds = %430, %434
  %.str.5.sink366 = phi ptr [ @.str.5, %434 ], [ @.str.2, %430 ]
  store i32 %425, ptr %424, align 4, !tbaa !5
  %436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %437 = load i32, ptr @test_count, align 4, !tbaa !5
  %438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %439 = load i32, ptr %438, align 4, !tbaa !5
  %440 = call ptr @s2n_strerror(i32 noundef %439, ptr noundef nonnull @.str.4) #12
  %441 = load i32, ptr %438, align 4, !tbaa !5
  %442 = call ptr @s2n_strerror_debug(i32 noundef %441, ptr noundef nonnull @.str.4) #12
  %443 = load i32, ptr %424, align 4, !tbaa !5
  %444 = call ptr @strerror(i32 noundef %443) #12
  %445 = load i32, ptr %424, align 4, !tbaa !5
  %446 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %436, ptr noundef nonnull %.str.5.sink366, i32 noundef %437, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 220, ptr noundef %440, ptr noundef %442, ptr noundef %444, i32 noundef %445) #14
  call void @exit(i32 noundef 1) #15
  unreachable

447:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %23, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %448 = getelementptr inbounds i8, ptr %23, i64 40
  store ptr %10, ptr %448, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %24, i8 0, i64 48, i1 false)
  %449 = add nsw i32 %419, 2
  store i32 %449, ptr @test_count, align 4, !tbaa !5
  %450 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull %24) #12
  %451 = call zeroext i1 @s2n_result_is_ok(i32 %450)
  br i1 %451, label %476, label %452

452:                                              ; preds = %447
  %453 = tail call ptr @__errno_location() #13
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %456 = call i32 @s2n_print_stacktrace(ptr noundef %455) #12
  %457 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %458 = trunc nuw i8 %457 to i1
  br i1 %458, label %459, label %463

459:                                              ; preds = %452
  %460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %461 = call i32 @fileno(ptr noundef %460) #12
  %462 = call i32 @isatty(i32 noundef %461) #12
  %.not180 = icmp eq i32 %462, 0
  br i1 %.not180, label %463, label %464

463:                                              ; preds = %459, %452
  br label %464

464:                                              ; preds = %459, %463
  %.str.5.sink377 = phi ptr [ @.str.5, %463 ], [ @.str.2, %459 ]
  store i32 %454, ptr %453, align 4, !tbaa !5
  %465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %466 = load i32, ptr @test_count, align 4, !tbaa !5
  %467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = call ptr @s2n_strerror(i32 noundef %468, ptr noundef nonnull @.str.4) #12
  %470 = load i32, ptr %467, align 4, !tbaa !5
  %471 = call ptr @s2n_strerror_debug(i32 noundef %470, ptr noundef nonnull @.str.4) #12
  %472 = load i32, ptr %453, align 4, !tbaa !5
  %473 = call ptr @strerror(i32 noundef %472) #12
  %474 = load i32, ptr %453, align 4, !tbaa !5
  %475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %465, ptr noundef nonnull %.str.5.sink377, i32 noundef %466, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 230, ptr noundef %469, ptr noundef %471, ptr noundef %473, i32 noundef %474) #14
  call void @exit(i32 noundef 1) #15
  unreachable

476:                                              ; preds = %447
  %477 = load i32, ptr @test_count, align 4, !tbaa !5
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr @test_count, align 4, !tbaa !5
  %479 = load i8, ptr %24, align 8, !tbaa !29, !range !13, !noundef !14
  %480 = trunc nuw i8 %479 to i1
  br i1 %480, label %505, label %481

481:                                              ; preds = %476
  %482 = tail call ptr @__errno_location() #13
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %485 = call i32 @s2n_print_stacktrace(ptr noundef %484) #12
  %486 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %487 = trunc nuw i8 %486 to i1
  br i1 %487, label %488, label %492

488:                                              ; preds = %481
  %489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %490 = call i32 @fileno(ptr noundef %489) #12
  %491 = call i32 @isatty(i32 noundef %490) #12
  %.not181 = icmp eq i32 %491, 0
  br i1 %.not181, label %492, label %493

492:                                              ; preds = %488, %481
  br label %493

493:                                              ; preds = %488, %492
  %.str.5.sink388 = phi ptr [ @.str.5, %492 ], [ @.str.2, %488 ]
  store i32 %483, ptr %482, align 4, !tbaa !5
  %494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %495 = load i32, ptr @test_count, align 4, !tbaa !5
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = call ptr @s2n_strerror(i32 noundef %497, ptr noundef nonnull @.str.4) #12
  %499 = load i32, ptr %496, align 4, !tbaa !5
  %500 = call ptr @s2n_strerror_debug(i32 noundef %499, ptr noundef nonnull @.str.4) #12
  %501 = load i32, ptr %482, align 4, !tbaa !5
  %502 = call ptr @strerror(i32 noundef %501) #12
  %503 = load i32, ptr %482, align 4, !tbaa !5
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %494, ptr noundef nonnull %.str.5.sink388, i32 noundef %495, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 231, ptr noundef %498, ptr noundef %500, ptr noundef %502, i32 noundef %503) #14
  call void @exit(i32 noundef 1) #15
  unreachable

505:                                              ; preds = %476
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %25, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %506 = getelementptr inbounds i8, ptr %25, i64 16
  store ptr %12, ptr %506, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %26, i8 0, i64 48, i1 false)
  %507 = add nsw i32 %477, 2
  store i32 %507, ptr @test_count, align 4, !tbaa !5
  %508 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %25, ptr noundef nonnull %26) #12
  %509 = call zeroext i1 @s2n_result_is_ok(i32 %508)
  br i1 %509, label %534, label %510

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

517:                                              ; preds = %510
  %518 = load ptr, ptr @stderr, align 8, !tbaa !9
  %519 = call i32 @fileno(ptr noundef %518) #12
  %520 = call i32 @isatty(i32 noundef %519) #12
  %.not182 = icmp eq i32 %520, 0
  br i1 %.not182, label %521, label %522

521:                                              ; preds = %517, %510
  br label %522

522:                                              ; preds = %517, %521
  %.str.5.sink399 = phi ptr [ @.str.5, %521 ], [ @.str.2, %517 ]
  store i32 %512, ptr %511, align 4, !tbaa !5
  %523 = load ptr, ptr @stderr, align 8, !tbaa !9
  %524 = load i32, ptr @test_count, align 4, !tbaa !5
  %525 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %526 = load i32, ptr %525, align 4, !tbaa !5
  %527 = call ptr @s2n_strerror(i32 noundef %526, ptr noundef nonnull @.str.4) #12
  %528 = load i32, ptr %525, align 4, !tbaa !5
  %529 = call ptr @s2n_strerror_debug(i32 noundef %528, ptr noundef nonnull @.str.4) #12
  %530 = load i32, ptr %511, align 4, !tbaa !5
  %531 = call ptr @strerror(i32 noundef %530) #12
  %532 = load i32, ptr %511, align 4, !tbaa !5
  %533 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %523, ptr noundef nonnull %.str.5.sink399, i32 noundef %524, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 241, ptr noundef %527, ptr noundef %529, ptr noundef %531, i32 noundef %532) #14
  call void @exit(i32 noundef 1) #15
  unreachable

534:                                              ; preds = %505
  %535 = load i32, ptr @test_count, align 4, !tbaa !5
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr @test_count, align 4, !tbaa !5
  %537 = load i8, ptr %26, align 8, !tbaa !29, !range !13, !noundef !14
  %538 = trunc nuw i8 %537 to i1
  br i1 %538, label %563, label %539

539:                                              ; preds = %534
  %540 = tail call ptr @__errno_location() #13
  %541 = load i32, ptr %540, align 4, !tbaa !5
  %542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %543 = call i32 @s2n_print_stacktrace(ptr noundef %542) #12
  %544 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %545 = trunc nuw i8 %544 to i1
  br i1 %545, label %546, label %550

546:                                              ; preds = %539
  %547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %548 = call i32 @fileno(ptr noundef %547) #12
  %549 = call i32 @isatty(i32 noundef %548) #12
  %.not183 = icmp eq i32 %549, 0
  br i1 %.not183, label %550, label %551

550:                                              ; preds = %546, %539
  br label %551

551:                                              ; preds = %546, %550
  %.str.5.sink410 = phi ptr [ @.str.5, %550 ], [ @.str.2, %546 ]
  store i32 %541, ptr %540, align 4, !tbaa !5
  %552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %553 = load i32, ptr @test_count, align 4, !tbaa !5
  %554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %555 = load i32, ptr %554, align 4, !tbaa !5
  %556 = call ptr @s2n_strerror(i32 noundef %555, ptr noundef nonnull @.str.4) #12
  %557 = load i32, ptr %554, align 4, !tbaa !5
  %558 = call ptr @s2n_strerror_debug(i32 noundef %557, ptr noundef nonnull @.str.4) #12
  %559 = load i32, ptr %540, align 4, !tbaa !5
  %560 = call ptr @strerror(i32 noundef %559) #12
  %561 = load i32, ptr %540, align 4, !tbaa !5
  %562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %552, ptr noundef nonnull %.str.5.sink410, i32 noundef %553, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 242, ptr noundef %556, ptr noundef %558, ptr noundef %560, i32 noundef %561) #14
  call void @exit(i32 noundef 1) #15
  unreachable

563:                                              ; preds = %534
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %27, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  store i8 32, ptr %27, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %28, i8 0, i64 48, i1 false)
  %564 = add nsw i32 %535, 2
  store i32 %564, ptr @test_count, align 4, !tbaa !5
  %565 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %27, ptr noundef nonnull %28) #12
  %566 = call zeroext i1 @s2n_result_is_ok(i32 %565)
  br i1 %566, label %591, label %567

567:                                              ; preds = %563
  %568 = tail call ptr @__errno_location() #13
  %569 = load i32, ptr %568, align 4, !tbaa !5
  %570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %571 = call i32 @s2n_print_stacktrace(ptr noundef %570) #12
  %572 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %573 = trunc nuw i8 %572 to i1
  br i1 %573, label %574, label %578

574:                                              ; preds = %567
  %575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %576 = call i32 @fileno(ptr noundef %575) #12
  %577 = call i32 @isatty(i32 noundef %576) #12
  %.not184 = icmp eq i32 %577, 0
  br i1 %.not184, label %578, label %579

578:                                              ; preds = %574, %567
  br label %579

579:                                              ; preds = %574, %578
  %.str.5.sink421 = phi ptr [ @.str.5, %578 ], [ @.str.2, %574 ]
  store i32 %569, ptr %568, align 4, !tbaa !5
  %580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %581 = load i32, ptr @test_count, align 4, !tbaa !5
  %582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = call ptr @s2n_strerror(i32 noundef %583, ptr noundef nonnull @.str.4) #12
  %585 = load i32, ptr %582, align 4, !tbaa !5
  %586 = call ptr @s2n_strerror_debug(i32 noundef %585, ptr noundef nonnull @.str.4) #12
  %587 = load i32, ptr %568, align 4, !tbaa !5
  %588 = call ptr @strerror(i32 noundef %587) #12
  %589 = load i32, ptr %568, align 4, !tbaa !5
  %590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %580, ptr noundef nonnull %.str.5.sink421, i32 noundef %581, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 252, ptr noundef %584, ptr noundef %586, ptr noundef %588, i32 noundef %589) #14
  call void @exit(i32 noundef 1) #15
  unreachable

591:                                              ; preds = %563
  %592 = load i32, ptr @test_count, align 4, !tbaa !5
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr @test_count, align 4, !tbaa !5
  %594 = load i8, ptr %28, align 8, !tbaa !29, !range !13, !noundef !14
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %620, label %596

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

603:                                              ; preds = %596
  %604 = load ptr, ptr @stderr, align 8, !tbaa !9
  %605 = call i32 @fileno(ptr noundef %604) #12
  %606 = call i32 @isatty(i32 noundef %605) #12
  %.not185 = icmp eq i32 %606, 0
  br i1 %.not185, label %607, label %608

607:                                              ; preds = %603, %596
  br label %608

608:                                              ; preds = %603, %607
  %.str.5.sink432 = phi ptr [ @.str.5, %607 ], [ @.str.2, %603 ]
  store i32 %598, ptr %597, align 4, !tbaa !5
  %609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %610 = load i32, ptr @test_count, align 4, !tbaa !5
  %611 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = call ptr @s2n_strerror(i32 noundef %612, ptr noundef nonnull @.str.4) #12
  %614 = load i32, ptr %611, align 4, !tbaa !5
  %615 = call ptr @s2n_strerror_debug(i32 noundef %614, ptr noundef nonnull @.str.4) #12
  %616 = load i32, ptr %597, align 4, !tbaa !5
  %617 = call ptr @strerror(i32 noundef %616) #12
  %618 = load i32, ptr %597, align 4, !tbaa !5
  %619 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %609, ptr noundef nonnull %.str.5.sink432, i32 noundef %610, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 253, ptr noundef %613, ptr noundef %615, ptr noundef %617, i32 noundef %618) #14
  call void @exit(i32 noundef 1) #15
  unreachable

620:                                              ; preds = %591
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %29, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %621 = getelementptr inbounds i8, ptr %29, i64 32
  store ptr null, ptr %621, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, i8 0, i64 48, i1 false)
  %622 = add nsw i32 %592, 2
  store i32 %622, ptr @test_count, align 4, !tbaa !5
  %623 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef nonnull %30) #12
  %624 = call zeroext i1 @s2n_result_is_ok(i32 %623)
  br i1 %624, label %649, label %625

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

632:                                              ; preds = %625
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = call i32 @fileno(ptr noundef %633) #12
  %635 = call i32 @isatty(i32 noundef %634) #12
  %.not186 = icmp eq i32 %635, 0
  br i1 %.not186, label %636, label %637

636:                                              ; preds = %632, %625
  br label %637

637:                                              ; preds = %632, %636
  %.str.5.sink443 = phi ptr [ @.str.5, %636 ], [ @.str.2, %632 ]
  store i32 %627, ptr %626, align 4, !tbaa !5
  %638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %639 = load i32, 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(i32 noundef %641, ptr noundef nonnull @.str.4) #12
  %643 = load i32, ptr %640, align 4, !tbaa !5
  %644 = call ptr @s2n_strerror_debug(i32 noundef %643, ptr noundef nonnull @.str.4) #12
  %645 = load i32, ptr %626, align 4, !tbaa !5
  %646 = call ptr @strerror(i32 noundef %645) #12
  %647 = load i32, ptr %626, align 4, !tbaa !5
  %648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %638, ptr noundef nonnull %.str.5.sink443, i32 noundef %639, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 264, ptr noundef %642, ptr noundef %644, ptr noundef %646, i32 noundef %647) #14
  call void @exit(i32 noundef 1) #15
  unreachable

649:                                              ; preds = %620
  %650 = load i32, ptr @test_count, align 4, !tbaa !5
  %651 = add nsw i32 %650, 1
  store i32 %651, ptr @test_count, align 4, !tbaa !5
  %652 = load i8, ptr %30, align 8, !tbaa !29, !range !13, !noundef !14
  %653 = trunc nuw i8 %652 to i1
  br i1 %653, label %654, label %678

654:                                              ; preds = %649
  %655 = tail call ptr @__errno_location() #13
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %658 = call i32 @s2n_print_stacktrace(ptr noundef %657) #12
  %659 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %660 = trunc nuw i8 %659 to i1
  br i1 %660, label %661, label %665

661:                                              ; preds = %654
  %662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %663 = call i32 @fileno(ptr noundef %662) #12
  %664 = call i32 @isatty(i32 noundef %663) #12
  %.not230 = icmp eq i32 %664, 0
  br i1 %.not230, label %665, label %666

665:                                              ; preds = %661, %654
  br label %666

666:                                              ; preds = %661, %665
  %.str.5.sink454 = phi ptr [ @.str.5, %665 ], [ @.str.2, %661 ]
  store i32 %656, ptr %655, align 4, !tbaa !5
  %667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %668 = load i32, ptr @test_count, align 4, !tbaa !5
  %669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %670 = load i32, ptr %669, align 4, !tbaa !5
  %671 = call ptr @s2n_strerror(i32 noundef %670, ptr noundef nonnull @.str.4) #12
  %672 = load i32, ptr %669, align 4, !tbaa !5
  %673 = call ptr @s2n_strerror_debug(i32 noundef %672, ptr noundef nonnull @.str.4) #12
  %674 = load i32, ptr %655, align 4, !tbaa !5
  %675 = call ptr @strerror(i32 noundef %674) #12
  %676 = load i32, ptr %655, align 4, !tbaa !5
  %677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %667, ptr noundef nonnull %.str.5.sink454, i32 noundef %668, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 265, ptr noundef %671, ptr noundef %673, ptr noundef %675, i32 noundef %676) #14
  call void @exit(i32 noundef 1) #15
  unreachable

678:                                              ; preds = %649
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %31) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %31, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %679 = getelementptr inbounds i8, ptr %31, i64 40
  store ptr %10, ptr %679, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %32, i8 0, i64 48, i1 false)
  %680 = add nsw i32 %650, 2
  store i32 %680, ptr @test_count, align 4, !tbaa !5
  %681 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull %32) #12
  %682 = call zeroext i1 @s2n_result_is_ok(i32 %681)
  br i1 %682, label %707, label %683

683:                                              ; preds = %678
  %684 = tail call ptr @__errno_location() #13
  %685 = load i32, ptr %684, align 4, !tbaa !5
  %686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %687 = call i32 @s2n_print_stacktrace(ptr noundef %686) #12
  %688 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %689 = trunc nuw i8 %688 to i1
  br i1 %689, label %690, label %694

690:                                              ; preds = %683
  %691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %692 = call i32 @fileno(ptr noundef %691) #12
  %693 = call i32 @isatty(i32 noundef %692) #12
  %.not187 = icmp eq i32 %693, 0
  br i1 %.not187, label %694, label %695

694:                                              ; preds = %690, %683
  br label %695

695:                                              ; preds = %690, %694
  %.str.5.sink465 = phi ptr [ @.str.5, %694 ], [ @.str.2, %690 ]
  store i32 %685, ptr %684, align 4, !tbaa !5
  %696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %697 = load i32, ptr @test_count, align 4, !tbaa !5
  %698 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %699 = load i32, ptr %698, align 4, !tbaa !5
  %700 = call ptr @s2n_strerror(i32 noundef %699, ptr noundef nonnull @.str.4) #12
  %701 = load i32, ptr %698, align 4, !tbaa !5
  %702 = call ptr @s2n_strerror_debug(i32 noundef %701, ptr noundef nonnull @.str.4) #12
  %703 = load i32, ptr %684, align 4, !tbaa !5
  %704 = call ptr @strerror(i32 noundef %703) #12
  %705 = load i32, ptr %684, align 4, !tbaa !5
  %706 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %696, ptr noundef nonnull %.str.5.sink465, i32 noundef %697, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 283, ptr noundef %700, ptr noundef %702, ptr noundef %704, i32 noundef %705) #14
  call void @exit(i32 noundef 1) #15
  unreachable

707:                                              ; preds = %678
  %708 = load i32, ptr @test_count, align 4, !tbaa !5
  %709 = add nsw i32 %708, 1
  store i32 %709, ptr @test_count, align 4, !tbaa !5
  %710 = load i8, ptr %32, align 8, !tbaa !29, !range !13, !noundef !14
  %711 = trunc nuw i8 %710 to i1
  br i1 %711, label %736, label %712

712:                                              ; preds = %707
  %713 = tail call ptr @__errno_location() #13
  %714 = load i32, ptr %713, align 4, !tbaa !5
  %715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %716 = call i32 @s2n_print_stacktrace(ptr noundef %715) #12
  %717 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %718 = trunc nuw i8 %717 to i1
  br i1 %718, label %719, label %723

719:                                              ; preds = %712
  %720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %721 = call i32 @fileno(ptr noundef %720) #12
  %722 = call i32 @isatty(i32 noundef %721) #12
  %.not188 = icmp eq i32 %722, 0
  br i1 %.not188, label %723, label %724

723:                                              ; preds = %719, %712
  br label %724

724:                                              ; preds = %719, %723
  %.str.5.sink476 = phi ptr [ @.str.5, %723 ], [ @.str.2, %719 ]
  store i32 %714, ptr %713, align 4, !tbaa !5
  %725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %726 = load i32, ptr @test_count, align 4, !tbaa !5
  %727 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %728 = load i32, ptr %727, align 4, !tbaa !5
  %729 = call ptr @s2n_strerror(i32 noundef %728, ptr noundef nonnull @.str.4) #12
  %730 = load i32, ptr %727, align 4, !tbaa !5
  %731 = call ptr @s2n_strerror_debug(i32 noundef %730, ptr noundef nonnull @.str.4) #12
  %732 = load i32, ptr %713, align 4, !tbaa !5
  %733 = call ptr @strerror(i32 noundef %732) #12
  %734 = load i32, ptr %713, align 4, !tbaa !5
  %735 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %725, ptr noundef nonnull %.str.5.sink476, i32 noundef %726, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 284, ptr noundef %729, ptr noundef %731, ptr noundef %733, i32 noundef %734) #14
  call void @exit(i32 noundef 1) #15
  unreachable

736:                                              ; preds = %707
  %737 = getelementptr inbounds i8, ptr %32, i64 36
  %738 = load i32, ptr %737, align 4, !tbaa !35
  %739 = getelementptr inbounds i8, ptr %32, i64 32
  %740 = load i32, ptr %739, align 8, !tbaa !36
  %741 = add nsw i32 %708, 2
  store i32 %741, ptr @test_count, align 4, !tbaa !5
  %742 = icmp eq i32 %738, %740
  br i1 %742, label %767, label %743

743:                                              ; preds = %736
  %744 = tail call ptr @__errno_location() #13
  %745 = load i32, ptr %744, align 4, !tbaa !5
  %746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %747 = call i32 @s2n_print_stacktrace(ptr noundef %746) #12
  %748 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %749 = trunc nuw i8 %748 to i1
  br i1 %749, label %750, label %754

750:                                              ; preds = %743
  %751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %752 = call i32 @fileno(ptr noundef %751) #12
  %753 = call i32 @isatty(i32 noundef %752) #12
  %.not189 = icmp eq i32 %753, 0
  br i1 %.not189, label %754, label %755

754:                                              ; preds = %750, %743
  br label %755

755:                                              ; preds = %750, %754
  %.str.5.sink487 = phi ptr [ @.str.5, %754 ], [ @.str.2, %750 ]
  store i32 %745, ptr %744, align 4, !tbaa !5
  %756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %757 = load i32, ptr @test_count, align 4, !tbaa !5
  %758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %759 = load i32, ptr %758, align 4, !tbaa !5
  %760 = call ptr @s2n_strerror(i32 noundef %759, ptr noundef nonnull @.str.4) #12
  %761 = load i32, ptr %758, align 4, !tbaa !5
  %762 = call ptr @s2n_strerror_debug(i32 noundef %761, ptr noundef nonnull @.str.4) #12
  %763 = load i32, ptr %744, align 4, !tbaa !5
  %764 = call ptr @strerror(i32 noundef %763) #12
  %765 = load i32, ptr %744, align 4, !tbaa !5
  %766 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %756, ptr noundef nonnull %.str.5.sink487, i32 noundef %757, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 287, ptr noundef %760, ptr noundef %762, ptr noundef %764, i32 noundef %765) #14
  call void @exit(i32 noundef 1) #15
  unreachable

767:                                              ; preds = %736
  %768 = call i32 @s2n_security_rule_result_free(ptr noundef nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %31) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %33, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %769 = getelementptr inbounds i8, ptr %33, i64 40
  store ptr %10, ptr %769, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %34) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %34, i8 0, i64 48, i1 false)
  %770 = load i32, ptr @test_count, align 4, !tbaa !5
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr @test_count, align 4, !tbaa !5
  %772 = call i32 @s2n_security_rule_result_init_output(ptr noundef nonnull %34) #12
  %773 = call zeroext i1 @s2n_result_is_ok(i32 %772)
  br i1 %773, label %798, label %774

774:                                              ; preds = %767
  %775 = tail call ptr @__errno_location() #13
  %776 = load i32, ptr %775, align 4, !tbaa !5
  %777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %778 = call i32 @s2n_print_stacktrace(ptr noundef %777) #12
  %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 = %774
  %782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %783 = call i32 @fileno(ptr noundef %782) #12
  %784 = call i32 @isatty(i32 noundef %783) #12
  %.not190 = icmp eq i32 %784, 0
  br i1 %.not190, label %785, label %786

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

786:                                              ; preds = %781, %785
  %.str.5.sink498 = phi ptr [ @.str.5, %785 ], [ @.str.2, %781 ]
  store i32 %776, ptr %775, align 4, !tbaa !5
  %787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %788 = load i32, ptr @test_count, align 4, !tbaa !5
  %789 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %790 = load i32, ptr %789, align 4, !tbaa !5
  %791 = call ptr @s2n_strerror(i32 noundef %790, ptr noundef nonnull @.str.4) #12
  %792 = load i32, ptr %789, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror_debug(i32 noundef %792, ptr noundef nonnull @.str.4) #12
  %794 = load i32, ptr %775, align 4, !tbaa !5
  %795 = call ptr @strerror(i32 noundef %794) #12
  %796 = load i32, ptr %775, align 4, !tbaa !5
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %787, ptr noundef nonnull %.str.5.sink498, i32 noundef %788, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 299, ptr noundef %791, ptr noundef %793, ptr noundef %795, i32 noundef %796) #14
  call void @exit(i32 noundef 1) #15
  unreachable

798:                                              ; preds = %767
  %799 = load i32, ptr @test_count, align 4, !tbaa !5
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr @test_count, align 4, !tbaa !5
  %801 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %34) #12
  %802 = call zeroext i1 @s2n_result_is_ok(i32 %801)
  br i1 %802, label %827, label %803

803:                                              ; preds = %798
  %804 = tail call ptr @__errno_location() #13
  %805 = load i32, ptr %804, align 4, !tbaa !5
  %806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %807 = call i32 @s2n_print_stacktrace(ptr noundef %806) #12
  %808 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %809 = trunc nuw i8 %808 to i1
  br i1 %809, label %810, label %814

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

814:                                              ; preds = %810, %803
  br label %815

815:                                              ; preds = %810, %814
  %.str.5.sink509 = phi ptr [ @.str.5, %814 ], [ @.str.2, %810 ]
  store i32 %805, ptr %804, align 4, !tbaa !5
  %816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %817 = load i32, ptr @test_count, align 4, !tbaa !5
  %818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %819 = load i32, ptr %818, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror(i32 noundef %819, ptr noundef nonnull @.str.4) #12
  %821 = load i32, ptr %818, align 4, !tbaa !5
  %822 = call ptr @s2n_strerror_debug(i32 noundef %821, ptr noundef nonnull @.str.4) #12
  %823 = load i32, ptr %804, align 4, !tbaa !5
  %824 = call ptr @strerror(i32 noundef %823) #12
  %825 = load i32, ptr %804, align 4, !tbaa !5
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %816, ptr noundef nonnull %.str.5.sink509, i32 noundef %817, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 302, ptr noundef %820, ptr noundef %822, ptr noundef %824, i32 noundef %825) #14
  call void @exit(i32 noundef 1) #15
  unreachable

827:                                              ; preds = %798
  %828 = load i32, ptr @test_count, align 4, !tbaa !5
  %829 = add nsw i32 %828, 1
  store i32 %829, ptr @test_count, align 4, !tbaa !5
  %830 = load i8, ptr %34, align 8, !tbaa !29, !range !13, !noundef !14
  %831 = trunc nuw i8 %830 to i1
  br i1 %831, label %856, label %832

832:                                              ; preds = %827
  %833 = tail call ptr @__errno_location() #13
  %834 = load i32, ptr %833, align 4, !tbaa !5
  %835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %836 = call i32 @s2n_print_stacktrace(ptr noundef %835) #12
  %837 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %838 = trunc nuw i8 %837 to i1
  br i1 %838, label %839, label %843

839:                                              ; preds = %832
  %840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %841 = call i32 @fileno(ptr noundef %840) #12
  %842 = call i32 @isatty(i32 noundef %841) #12
  %.not192 = icmp eq i32 %842, 0
  br i1 %.not192, label %843, label %844

843:                                              ; preds = %839, %832
  br label %844

844:                                              ; preds = %839, %843
  %.str.5.sink520 = phi ptr [ @.str.5, %843 ], [ @.str.2, %839 ]
  store i32 %834, ptr %833, align 4, !tbaa !5
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = load i32, ptr @test_count, align 4, !tbaa !5
  %847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %848 = load i32, ptr %847, align 4, !tbaa !5
  %849 = call ptr @s2n_strerror(i32 noundef %848, ptr noundef nonnull @.str.4) #12
  %850 = load i32, ptr %847, align 4, !tbaa !5
  %851 = call ptr @s2n_strerror_debug(i32 noundef %850, ptr noundef nonnull @.str.4) #12
  %852 = load i32, ptr %833, align 4, !tbaa !5
  %853 = call ptr @strerror(i32 noundef %852) #12
  %854 = load i32, ptr %833, align 4, !tbaa !5
  %855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %845, ptr noundef nonnull %.str.5.sink520, i32 noundef %846, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 303, ptr noundef %849, ptr noundef %851, ptr noundef %853, i32 noundef %854) #14
  call void @exit(i32 noundef 1) #15
  unreachable

856:                                              ; preds = %827
  %857 = getelementptr inbounds i8, ptr %34, i64 36
  %858 = load i32, ptr %857, align 4, !tbaa !35
  %859 = getelementptr inbounds i8, ptr %34, i64 32
  %860 = load i32, ptr %859, align 8, !tbaa !36
  %861 = sub i32 %858, %860
  %862 = add nsw i32 %828, 2
  store i32 %862, ptr @test_count, align 4, !tbaa !5
  %863 = icmp eq i32 %861, 49
  br i1 %863, label %888, label %864

864:                                              ; preds = %856
  %865 = tail call ptr @__errno_location() #13
  %866 = load i32, ptr %865, align 4, !tbaa !5
  %867 = load ptr, ptr @stderr, align 8, !tbaa !9
  %868 = call i32 @s2n_print_stacktrace(ptr noundef %867) #12
  %869 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %870 = trunc nuw i8 %869 to i1
  br i1 %870, label %871, label %875

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

875:                                              ; preds = %871, %864
  br label %876

876:                                              ; preds = %871, %875
  %.str.5.sink531 = phi ptr [ @.str.5, %875 ], [ @.str.2, %871 ]
  store i32 %866, ptr %865, align 4, !tbaa !5
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = load i32, ptr @test_count, align 4, !tbaa !5
  %879 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %880 = load i32, ptr %879, align 4, !tbaa !5
  %881 = call ptr @s2n_strerror(i32 noundef %880, ptr noundef nonnull @.str.4) #12
  %882 = load i32, ptr %879, align 4, !tbaa !5
  %883 = call ptr @s2n_strerror_debug(i32 noundef %882, ptr noundef nonnull @.str.4) #12
  %884 = load i32, ptr %865, align 4, !tbaa !5
  %885 = call ptr @strerror(i32 noundef %884) #12
  %886 = load i32, ptr %865, align 4, !tbaa !5
  %887 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %877, ptr noundef nonnull %.str.5.sink531, i32 noundef %878, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 306, ptr noundef %881, ptr noundef %883, ptr noundef %885, i32 noundef %886) #14
  call void @exit(i32 noundef 1) #15
  unreachable

888:                                              ; preds = %856
  %889 = getelementptr inbounds i8, ptr %34, i64 8
  %890 = call ptr @s2n_stuffer_raw_read(ptr noundef nonnull %889, i32 noundef 49) #12
  %891 = load i32, ptr @test_count, align 4, !tbaa !5
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr @test_count, align 4, !tbaa !5
  %893 = icmp eq ptr %890, null
  br i1 %893, label %894, label %918

894:                                              ; preds = %888
  %895 = tail call ptr @__errno_location() #13
  %896 = load i32, ptr %895, align 4, !tbaa !5
  %897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %898 = call i32 @s2n_print_stacktrace(ptr noundef %897) #12
  %899 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %900 = trunc nuw i8 %899 to i1
  br i1 %900, label %901, label %905

901:                                              ; preds = %894
  %902 = load ptr, ptr @stderr, align 8, !tbaa !9
  %903 = call i32 @fileno(ptr noundef %902) #12
  %904 = call i32 @isatty(i32 noundef %903) #12
  %.not229 = icmp eq i32 %904, 0
  br i1 %.not229, label %905, label %906

905:                                              ; preds = %901, %894
  br label %906

906:                                              ; preds = %901, %905
  %.str.5.sink542 = phi ptr [ @.str.5, %905 ], [ @.str.2, %901 ]
  store i32 %896, ptr %895, align 4, !tbaa !5
  %907 = load ptr, ptr @stderr, align 8, !tbaa !9
  %908 = load i32, ptr @test_count, align 4, !tbaa !5
  %909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %910 = load i32, ptr %909, align 4, !tbaa !5
  %911 = call ptr @s2n_strerror(i32 noundef %910, ptr noundef nonnull @.str.4) #12
  %912 = load i32, ptr %909, align 4, !tbaa !5
  %913 = call ptr @s2n_strerror_debug(i32 noundef %912, ptr noundef nonnull @.str.4) #12
  %914 = load i32, ptr %895, align 4, !tbaa !5
  %915 = call ptr @strerror(i32 noundef %914) #12
  %916 = load i32, ptr %895, align 4, !tbaa !5
  %917 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %907, ptr noundef nonnull %.str.5.sink542, i32 noundef %908, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 308, ptr noundef %911, ptr noundef %913, ptr noundef %915, i32 noundef %916) #14
  call void @exit(i32 noundef 1) #15
  unreachable

918:                                              ; preds = %888
  %919 = add nsw i32 %891, 2
  store i32 %919, ptr @test_count, align 4, !tbaa !5
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(49) @__const.main.expected_output, ptr noundef nonnull dereferenceable(49) %890, i64 49)
  %920 = icmp eq i32 %bcmp, 0
  br i1 %920, label %945, label %921

921:                                              ; preds = %918
  %922 = tail call ptr @__errno_location() #13
  %923 = load i32, ptr %922, align 4, !tbaa !5
  %924 = load ptr, ptr @stderr, align 8, !tbaa !9
  %925 = call i32 @s2n_print_stacktrace(ptr noundef %924) #12
  %926 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %927 = trunc nuw i8 %926 to i1
  br i1 %927, label %928, label %932

928:                                              ; preds = %921
  %929 = load ptr, ptr @stderr, align 8, !tbaa !9
  %930 = call i32 @fileno(ptr noundef %929) #12
  %931 = call i32 @isatty(i32 noundef %930) #12
  %.not194 = icmp eq i32 %931, 0
  br i1 %.not194, label %932, label %933

932:                                              ; preds = %928, %921
  br label %933

933:                                              ; preds = %928, %932
  %.str.5.sink553 = phi ptr [ @.str.5, %932 ], [ @.str.2, %928 ]
  store i32 %923, ptr %922, align 4, !tbaa !5
  %934 = load ptr, ptr @stderr, align 8, !tbaa !9
  %935 = load i32, ptr @test_count, align 4, !tbaa !5
  %936 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %937 = load i32, ptr %936, align 4, !tbaa !5
  %938 = call ptr @s2n_strerror(i32 noundef %937, ptr noundef nonnull @.str.4) #12
  %939 = load i32, ptr %936, align 4, !tbaa !5
  %940 = call ptr @s2n_strerror_debug(i32 noundef %939, ptr noundef nonnull @.str.4) #12
  %941 = load i32, ptr %922, align 4, !tbaa !5
  %942 = call ptr @strerror(i32 noundef %941) #12
  %943 = load i32, ptr %922, align 4, !tbaa !5
  %944 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %934, ptr noundef nonnull %.str.5.sink553, i32 noundef %935, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 309, ptr noundef %938, ptr noundef %940, ptr noundef %942, i32 noundef %943) #14
  call void @exit(i32 noundef 1) #15
  unreachable

945:                                              ; preds = %918
  %946 = call i32 @s2n_security_rule_result_free(ptr noundef nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %35) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %35, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %947 = getelementptr inbounds i8, ptr %35, i64 8
  store ptr %6, ptr %947, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %36) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %36, i8 0, i64 48, i1 false)
  %948 = load i32, ptr @test_count, align 4, !tbaa !5
  %949 = add nsw i32 %948, 1
  store i32 %949, ptr @test_count, align 4, !tbaa !5
  %950 = call i32 @s2n_security_rule_result_init_output(ptr noundef nonnull %36) #12
  %951 = call zeroext i1 @s2n_result_is_ok(i32 %950)
  br i1 %951, label %976, label %952

952:                                              ; preds = %945
  %953 = tail call ptr @__errno_location() #13
  %954 = load i32, ptr %953, align 4, !tbaa !5
  %955 = load ptr, ptr @stderr, align 8, !tbaa !9
  %956 = call i32 @s2n_print_stacktrace(ptr noundef %955) #12
  %957 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %958 = trunc nuw i8 %957 to i1
  br i1 %958, label %959, label %963

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

963:                                              ; preds = %959, %952
  br label %964

964:                                              ; preds = %959, %963
  %.str.5.sink564 = phi ptr [ @.str.5, %963 ], [ @.str.2, %959 ]
  store i32 %954, ptr %953, align 4, !tbaa !5
  %965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %966 = load i32, ptr @test_count, align 4, !tbaa !5
  %967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %968 = load i32, ptr %967, align 4, !tbaa !5
  %969 = call ptr @s2n_strerror(i32 noundef %968, ptr noundef nonnull @.str.4) #12
  %970 = load i32, ptr %967, align 4, !tbaa !5
  %971 = call ptr @s2n_strerror_debug(i32 noundef %970, ptr noundef nonnull @.str.4) #12
  %972 = load i32, ptr %953, align 4, !tbaa !5
  %973 = call ptr @strerror(i32 noundef %972) #12
  %974 = load i32, ptr %953, align 4, !tbaa !5
  %975 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %965, ptr noundef nonnull %.str.5.sink564, i32 noundef %966, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 322, ptr noundef %969, ptr noundef %971, ptr noundef %973, i32 noundef %974) #14
  call void @exit(i32 noundef 1) #15
  unreachable

976:                                              ; preds = %945
  %977 = load i32, ptr @test_count, align 4, !tbaa !5
  %978 = add nsw i32 %977, 1
  store i32 %978, ptr @test_count, align 4, !tbaa !5
  %979 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %35, ptr noundef nonnull %36) #12
  %980 = call zeroext i1 @s2n_result_is_ok(i32 %979)
  br i1 %980, label %1005, label %981

981:                                              ; preds = %976
  %982 = tail call ptr @__errno_location() #13
  %983 = load i32, ptr %982, align 4, !tbaa !5
  %984 = load ptr, ptr @stderr, align 8, !tbaa !9
  %985 = call i32 @s2n_print_stacktrace(ptr noundef %984) #12
  %986 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %987 = trunc nuw i8 %986 to i1
  br i1 %987, label %988, label %992

988:                                              ; preds = %981
  %989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %990 = call i32 @fileno(ptr noundef %989) #12
  %991 = call i32 @isatty(i32 noundef %990) #12
  %.not196 = icmp eq i32 %991, 0
  br i1 %.not196, label %992, label %993

992:                                              ; preds = %988, %981
  br label %993

993:                                              ; preds = %988, %992
  %.str.5.sink575 = phi ptr [ @.str.5, %992 ], [ @.str.2, %988 ]
  store i32 %983, ptr %982, align 4, !tbaa !5
  %994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %995 = load i32, ptr @test_count, align 4, !tbaa !5
  %996 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %997 = load i32, ptr %996, align 4, !tbaa !5
  %998 = call ptr @s2n_strerror(i32 noundef %997, ptr noundef nonnull @.str.4) #12
  %999 = load i32, ptr %996, align 4, !tbaa !5
  %1000 = call ptr @s2n_strerror_debug(i32 noundef %999, ptr noundef nonnull @.str.4) #12
  %1001 = load i32, ptr %982, align 4, !tbaa !5
  %1002 = call ptr @strerror(i32 noundef %1001) #12
  %1003 = load i32, ptr %982, align 4, !tbaa !5
  %1004 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %994, ptr noundef nonnull %.str.5.sink575, i32 noundef %995, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 325, ptr noundef %998, ptr noundef %1000, ptr noundef %1002, i32 noundef %1003) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1005:                                             ; preds = %976
  %1006 = load i32, ptr @test_count, align 4, !tbaa !5
  %1007 = add nsw i32 %1006, 1
  store i32 %1007, ptr @test_count, align 4, !tbaa !5
  %1008 = load i8, ptr %36, align 8, !tbaa !29, !range !13, !noundef !14
  %1009 = trunc nuw i8 %1008 to i1
  br i1 %1009, label %1034, label %1010

1010:                                             ; preds = %1005
  %1011 = tail call ptr @__errno_location() #13
  %1012 = load i32, ptr %1011, align 4, !tbaa !5
  %1013 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1014 = call i32 @s2n_print_stacktrace(ptr noundef %1013) #12
  %1015 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1016 = trunc nuw i8 %1015 to i1
  br i1 %1016, label %1017, label %1021

1017:                                             ; preds = %1010
  %1018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1019 = call i32 @fileno(ptr noundef %1018) #12
  %1020 = call i32 @isatty(i32 noundef %1019) #12
  %.not197 = icmp eq i32 %1020, 0
  br i1 %.not197, label %1021, label %1022

1021:                                             ; preds = %1017, %1010
  br label %1022

1022:                                             ; preds = %1017, %1021
  %.str.5.sink586 = phi ptr [ @.str.5, %1021 ], [ @.str.2, %1017 ]
  store i32 %1012, ptr %1011, align 4, !tbaa !5
  %1023 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1024 = load i32, ptr @test_count, align 4, !tbaa !5
  %1025 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1026 = load i32, ptr %1025, align 4, !tbaa !5
  %1027 = call ptr @s2n_strerror(i32 noundef %1026, ptr noundef nonnull @.str.4) #12
  %1028 = load i32, ptr %1025, align 4, !tbaa !5
  %1029 = call ptr @s2n_strerror_debug(i32 noundef %1028, ptr noundef nonnull @.str.4) #12
  %1030 = load i32, ptr %1011, align 4, !tbaa !5
  %1031 = call ptr @strerror(i32 noundef %1030) #12
  %1032 = load i32, ptr %1011, align 4, !tbaa !5
  %1033 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1023, ptr noundef nonnull %.str.5.sink586, i32 noundef %1024, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 326, ptr noundef %1027, ptr noundef %1029, ptr noundef %1031, i32 noundef %1032) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1034:                                             ; preds = %1005
  %1035 = getelementptr inbounds i8, ptr %36, i64 36
  %1036 = load i32, ptr %1035, align 4, !tbaa !35
  %1037 = getelementptr inbounds i8, ptr %36, i64 32
  %1038 = load i32, ptr %1037, align 8, !tbaa !36
  %1039 = sub i32 %1036, %1038
  %1040 = add nsw i32 %1006, 2
  store i32 %1040, ptr @test_count, align 4, !tbaa !5
  %1041 = icmp eq i32 %1039, 144
  br i1 %1041, label %1066, label %1042

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

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

1053:                                             ; preds = %1049, %1042
  br label %1054

1054:                                             ; preds = %1049, %1053
  %.str.5.sink597 = phi ptr [ @.str.5, %1053 ], [ @.str.2, %1049 ]
  store i32 %1044, ptr %1043, align 4, !tbaa !5
  %1055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1056 = load i32, ptr @test_count, align 4, !tbaa !5
  %1057 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1058 = load i32, ptr %1057, align 4, !tbaa !5
  %1059 = call ptr @s2n_strerror(i32 noundef %1058, ptr noundef nonnull @.str.4) #12
  %1060 = load i32, ptr %1057, align 4, !tbaa !5
  %1061 = call ptr @s2n_strerror_debug(i32 noundef %1060, ptr noundef nonnull @.str.4) #12
  %1062 = load i32, ptr %1043, align 4, !tbaa !5
  %1063 = call ptr @strerror(i32 noundef %1062) #12
  %1064 = load i32, ptr %1043, align 4, !tbaa !5
  %1065 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1055, ptr noundef nonnull %.str.5.sink597, i32 noundef %1056, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 329, ptr noundef %1059, ptr noundef %1061, ptr noundef %1063, i32 noundef %1064) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1066:                                             ; preds = %1034
  %1067 = getelementptr inbounds i8, ptr %36, i64 8
  %1068 = call ptr @s2n_stuffer_raw_read(ptr noundef nonnull %1067, i32 noundef 144) #12
  %1069 = load i32, ptr @test_count, align 4, !tbaa !5
  %1070 = add nsw i32 %1069, 1
  store i32 %1070, ptr @test_count, align 4, !tbaa !5
  %1071 = icmp eq ptr %1068, null
  br i1 %1071, label %1072, label %1096

1072:                                             ; preds = %1066
  %1073 = tail call ptr @__errno_location() #13
  %1074 = load i32, ptr %1073, align 4, !tbaa !5
  %1075 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1076 = call i32 @s2n_print_stacktrace(ptr noundef %1075) #12
  %1077 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1078 = trunc nuw i8 %1077 to i1
  br i1 %1078, label %1079, label %1083

1079:                                             ; preds = %1072
  %1080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1081 = call i32 @fileno(ptr noundef %1080) #12
  %1082 = call i32 @isatty(i32 noundef %1081) #12
  %.not228 = icmp eq i32 %1082, 0
  br i1 %.not228, label %1083, label %1084

1083:                                             ; preds = %1079, %1072
  br label %1084

1084:                                             ; preds = %1079, %1083
  %.str.5.sink608 = phi ptr [ @.str.5, %1083 ], [ @.str.2, %1079 ]
  store i32 %1074, ptr %1073, align 4, !tbaa !5
  %1085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1086 = load i32, ptr @test_count, align 4, !tbaa !5
  %1087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1088 = load i32, ptr %1087, align 4, !tbaa !5
  %1089 = call ptr @s2n_strerror(i32 noundef %1088, ptr noundef nonnull @.str.4) #12
  %1090 = load i32, ptr %1087, align 4, !tbaa !5
  %1091 = call ptr @s2n_strerror_debug(i32 noundef %1090, ptr noundef nonnull @.str.4) #12
  %1092 = load i32, ptr %1073, align 4, !tbaa !5
  %1093 = call ptr @strerror(i32 noundef %1092) #12
  %1094 = load i32, ptr %1073, align 4, !tbaa !5
  %1095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1085, ptr noundef nonnull %.str.5.sink608, i32 noundef %1086, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 331, ptr noundef %1089, ptr noundef %1091, ptr noundef %1093, i32 noundef %1094) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1096:                                             ; preds = %1066
  %1097 = add nsw i32 %1069, 2
  store i32 %1097, ptr @test_count, align 4, !tbaa !5
  %bcmp199 = call i32 @bcmp(ptr noundef nonnull dereferenceable(144) @__const.main.expected_output.19, ptr noundef nonnull dereferenceable(144) %1068, i64 144)
  %1098 = icmp eq i32 %bcmp199, 0
  br i1 %1098, label %1123, label %1099

1099:                                             ; preds = %1096
  %1100 = tail call ptr @__errno_location() #13
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = call i32 @s2n_print_stacktrace(ptr noundef %1102) #12
  %1104 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1105 = trunc nuw i8 %1104 to i1
  br i1 %1105, label %1106, label %1110

1106:                                             ; preds = %1099
  %1107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1108 = call i32 @fileno(ptr noundef %1107) #12
  %1109 = call i32 @isatty(i32 noundef %1108) #12
  %.not200 = icmp eq i32 %1109, 0
  br i1 %.not200, label %1110, label %1111

1110:                                             ; preds = %1106, %1099
  br label %1111

1111:                                             ; preds = %1106, %1110
  %.str.5.sink619 = phi ptr [ @.str.5, %1110 ], [ @.str.2, %1106 ]
  store i32 %1101, ptr %1100, align 4, !tbaa !5
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1115, ptr noundef nonnull @.str.4) #12
  %1117 = load i32, ptr %1114, align 4, !tbaa !5
  %1118 = call ptr @s2n_strerror_debug(i32 noundef %1117, ptr noundef nonnull @.str.4) #12
  %1119 = load i32, ptr %1100, align 4, !tbaa !5
  %1120 = call ptr @strerror(i32 noundef %1119) #12
  %1121 = load i32, ptr %1100, align 4, !tbaa !5
  %1122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1112, ptr noundef nonnull %.str.5.sink619, i32 noundef %1113, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 332, ptr noundef %1116, ptr noundef %1118, ptr noundef %1120, i32 noundef %1121) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1123:                                             ; preds = %1096
  %1124 = call i32 @s2n_security_rule_result_free(ptr noundef nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %35) #12
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %37) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %37, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %1125 = getelementptr inbounds i8, ptr %37, i64 8
  store ptr %6, ptr %1125, align 8, !tbaa !22
  %1126 = getelementptr inbounds i8, ptr %37, i64 40
  store ptr %10, ptr %1126, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %38) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %38, i8 0, i64 48, i1 false)
  %1127 = load i32, ptr @test_count, align 4, !tbaa !5
  %1128 = add nsw i32 %1127, 1
  store i32 %1128, ptr @test_count, align 4, !tbaa !5
  %1129 = call i32 @s2n_security_rule_result_init_output(ptr noundef nonnull %38) #12
  %1130 = call zeroext i1 @s2n_result_is_ok(i32 %1129)
  br i1 %1130, label %1155, label %1131

1131:                                             ; preds = %1123
  %1132 = tail call ptr @__errno_location() #13
  %1133 = load i32, ptr %1132, align 4, !tbaa !5
  %1134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1135 = call i32 @s2n_print_stacktrace(ptr noundef %1134) #12
  %1136 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1137 = trunc nuw i8 %1136 to i1
  br i1 %1137, label %1138, label %1142

1138:                                             ; preds = %1131
  %1139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1140 = call i32 @fileno(ptr noundef %1139) #12
  %1141 = call i32 @isatty(i32 noundef %1140) #12
  %.not201 = icmp eq i32 %1141, 0
  br i1 %.not201, label %1142, label %1143

1142:                                             ; preds = %1138, %1131
  br label %1143

1143:                                             ; preds = %1138, %1142
  %.str.5.sink630 = phi ptr [ @.str.5, %1142 ], [ @.str.2, %1138 ]
  store i32 %1133, ptr %1132, align 4, !tbaa !5
  %1144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1145 = load i32, ptr @test_count, align 4, !tbaa !5
  %1146 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1147 = load i32, ptr %1146, align 4, !tbaa !5
  %1148 = call ptr @s2n_strerror(i32 noundef %1147, ptr noundef nonnull @.str.4) #12
  %1149 = load i32, ptr %1146, align 4, !tbaa !5
  %1150 = call ptr @s2n_strerror_debug(i32 noundef %1149, ptr noundef nonnull @.str.4) #12
  %1151 = load i32, ptr %1132, align 4, !tbaa !5
  %1152 = call ptr @strerror(i32 noundef %1151) #12
  %1153 = load i32, ptr %1132, align 4, !tbaa !5
  %1154 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1144, ptr noundef nonnull %.str.5.sink630, i32 noundef %1145, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 347, ptr noundef %1148, ptr noundef %1150, ptr noundef %1152, i32 noundef %1153) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1155:                                             ; preds = %1123
  %1156 = load i32, ptr @test_count, align 4, !tbaa !5
  %1157 = add nsw i32 %1156, 1
  store i32 %1157, ptr @test_count, align 4, !tbaa !5
  %1158 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull %37, ptr noundef nonnull %38) #12
  %1159 = call zeroext i1 @s2n_result_is_ok(i32 %1158)
  br i1 %1159, label %1184, label %1160

1160:                                             ; preds = %1155
  %1161 = tail call ptr @__errno_location() #13
  %1162 = load i32, ptr %1161, align 4, !tbaa !5
  %1163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1164 = call i32 @s2n_print_stacktrace(ptr noundef %1163) #12
  %1165 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1166 = trunc nuw i8 %1165 to i1
  br i1 %1166, label %1167, label %1171

1167:                                             ; preds = %1160
  %1168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1169 = call i32 @fileno(ptr noundef %1168) #12
  %1170 = call i32 @isatty(i32 noundef %1169) #12
  %.not202 = icmp eq i32 %1170, 0
  br i1 %.not202, label %1171, label %1172

1171:                                             ; preds = %1167, %1160
  br label %1172

1172:                                             ; preds = %1167, %1171
  %.str.5.sink641 = phi ptr [ @.str.5, %1171 ], [ @.str.2, %1167 ]
  store i32 %1162, ptr %1161, align 4, !tbaa !5
  %1173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1174 = load i32, ptr @test_count, align 4, !tbaa !5
  %1175 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1176 = load i32, ptr %1175, align 4, !tbaa !5
  %1177 = call ptr @s2n_strerror(i32 noundef %1176, ptr noundef nonnull @.str.4) #12
  %1178 = load i32, ptr %1175, align 4, !tbaa !5
  %1179 = call ptr @s2n_strerror_debug(i32 noundef %1178, ptr noundef nonnull @.str.4) #12
  %1180 = load i32, ptr %1161, align 4, !tbaa !5
  %1181 = call ptr @strerror(i32 noundef %1180) #12
  %1182 = load i32, ptr %1161, align 4, !tbaa !5
  %1183 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1173, ptr noundef nonnull %.str.5.sink641, i32 noundef %1174, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 350, ptr noundef %1177, ptr noundef %1179, ptr noundef %1181, i32 noundef %1182) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1184:                                             ; preds = %1155
  %1185 = load i32, ptr @test_count, align 4, !tbaa !5
  %1186 = add nsw i32 %1185, 1
  store i32 %1186, ptr @test_count, align 4, !tbaa !5
  %1187 = load i8, ptr %38, align 8, !tbaa !29, !range !13, !noundef !14
  %1188 = trunc nuw i8 %1187 to i1
  br i1 %1188, label %1213, label %1189

1189:                                             ; preds = %1184
  %1190 = tail call ptr @__errno_location() #13
  %1191 = load i32, ptr %1190, align 4, !tbaa !5
  %1192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1193 = call i32 @s2n_print_stacktrace(ptr noundef %1192) #12
  %1194 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1195 = trunc nuw i8 %1194 to i1
  br i1 %1195, label %1196, label %1200

1196:                                             ; preds = %1189
  %1197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1198 = call i32 @fileno(ptr noundef %1197) #12
  %1199 = call i32 @isatty(i32 noundef %1198) #12
  %.not203 = icmp eq i32 %1199, 0
  br i1 %.not203, label %1200, label %1201

1200:                                             ; preds = %1196, %1189
  br label %1201

1201:                                             ; preds = %1196, %1200
  %.str.5.sink652 = phi ptr [ @.str.5, %1200 ], [ @.str.2, %1196 ]
  store i32 %1191, ptr %1190, align 4, !tbaa !5
  %1202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1203 = load i32, ptr @test_count, align 4, !tbaa !5
  %1204 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1205 = load i32, ptr %1204, align 4, !tbaa !5
  %1206 = call ptr @s2n_strerror(i32 noundef %1205, ptr noundef nonnull @.str.4) #12
  %1207 = load i32, ptr %1204, align 4, !tbaa !5
  %1208 = call ptr @s2n_strerror_debug(i32 noundef %1207, ptr noundef nonnull @.str.4) #12
  %1209 = load i32, ptr %1190, align 4, !tbaa !5
  %1210 = call ptr @strerror(i32 noundef %1209) #12
  %1211 = load i32, ptr %1190, align 4, !tbaa !5
  %1212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1202, ptr noundef nonnull %.str.5.sink652, i32 noundef %1203, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 351, ptr noundef %1206, ptr noundef %1208, ptr noundef %1210, i32 noundef %1211) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1213:                                             ; preds = %1184
  %1214 = getelementptr inbounds i8, ptr %38, i64 36
  %1215 = load i32, ptr %1214, align 4, !tbaa !35
  %1216 = getelementptr inbounds i8, ptr %38, i64 32
  %1217 = load i32, ptr %1216, align 8, !tbaa !36
  %1218 = sub i32 %1215, %1217
  %1219 = add nsw i32 %1185, 2
  store i32 %1219, ptr @test_count, align 4, !tbaa !5
  %1220 = icmp eq i32 %1218, 193
  br i1 %1220, label %1245, label %1221

1221:                                             ; preds = %1213
  %1222 = tail call ptr @__errno_location() #13
  %1223 = load i32, ptr %1222, align 4, !tbaa !5
  %1224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1225 = call i32 @s2n_print_stacktrace(ptr noundef %1224) #12
  %1226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1227 = trunc nuw i8 %1226 to i1
  br i1 %1227, label %1228, label %1232

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

1232:                                             ; preds = %1228, %1221
  br label %1233

1233:                                             ; preds = %1228, %1232
  %.str.5.sink663 = phi ptr [ @.str.5, %1232 ], [ @.str.2, %1228 ]
  store i32 %1223, ptr %1222, align 4, !tbaa !5
  %1234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1235 = load i32, ptr @test_count, align 4, !tbaa !5
  %1236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @s2n_strerror(i32 noundef %1237, ptr noundef nonnull @.str.4) #12
  %1239 = load i32, ptr %1236, align 4, !tbaa !5
  %1240 = call ptr @s2n_strerror_debug(i32 noundef %1239, ptr noundef nonnull @.str.4) #12
  %1241 = load i32, ptr %1222, align 4, !tbaa !5
  %1242 = call ptr @strerror(i32 noundef %1241) #12
  %1243 = load i32, ptr %1222, align 4, !tbaa !5
  %1244 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1234, ptr noundef nonnull %.str.5.sink663, i32 noundef %1235, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 354, ptr noundef %1238, ptr noundef %1240, ptr noundef %1242, i32 noundef %1243) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1245:                                             ; preds = %1213
  %1246 = getelementptr inbounds i8, ptr %38, i64 8
  %1247 = call ptr @s2n_stuffer_raw_read(ptr noundef nonnull %1246, i32 noundef 193) #12
  %1248 = load i32, ptr @test_count, align 4, !tbaa !5
  %1249 = add nsw i32 %1248, 1
  store i32 %1249, ptr @test_count, align 4, !tbaa !5
  %1250 = icmp eq ptr %1247, null
  br i1 %1250, label %1251, label %1275

1251:                                             ; preds = %1245
  %1252 = tail call ptr @__errno_location() #13
  %1253 = load i32, ptr %1252, align 4, !tbaa !5
  %1254 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1255 = call i32 @s2n_print_stacktrace(ptr noundef %1254) #12
  %1256 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1257 = trunc nuw i8 %1256 to i1
  br i1 %1257, label %1258, label %1262

1258:                                             ; preds = %1251
  %1259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1260 = call i32 @fileno(ptr noundef %1259) #12
  %1261 = call i32 @isatty(i32 noundef %1260) #12
  %.not227 = icmp eq i32 %1261, 0
  br i1 %.not227, label %1262, label %1263

1262:                                             ; preds = %1258, %1251
  br label %1263

1263:                                             ; preds = %1258, %1262
  %.str.5.sink674 = phi ptr [ @.str.5, %1262 ], [ @.str.2, %1258 ]
  store i32 %1253, ptr %1252, align 4, !tbaa !5
  %1264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1265 = load i32, ptr @test_count, align 4, !tbaa !5
  %1266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1267 = load i32, ptr %1266, align 4, !tbaa !5
  %1268 = call ptr @s2n_strerror(i32 noundef %1267, ptr noundef nonnull @.str.4) #12
  %1269 = load i32, ptr %1266, align 4, !tbaa !5
  %1270 = call ptr @s2n_strerror_debug(i32 noundef %1269, ptr noundef nonnull @.str.4) #12
  %1271 = load i32, ptr %1252, align 4, !tbaa !5
  %1272 = call ptr @strerror(i32 noundef %1271) #12
  %1273 = load i32, ptr %1252, align 4, !tbaa !5
  %1274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1264, ptr noundef nonnull %.str.5.sink674, i32 noundef %1265, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 356, ptr noundef %1268, ptr noundef %1270, ptr noundef %1272, i32 noundef %1273) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1275:                                             ; preds = %1245
  %1276 = add nsw i32 %1248, 2
  store i32 %1276, ptr @test_count, align 4, !tbaa !5
  %bcmp205 = call i32 @bcmp(ptr noundef nonnull dereferenceable(193) @__const.main.expected_output.20, ptr noundef nonnull dereferenceable(193) %1247, i64 193)
  %1277 = icmp eq i32 %bcmp205, 0
  br i1 %1277, label %1302, label %1278

1278:                                             ; preds = %1275
  %1279 = tail call ptr @__errno_location() #13
  %1280 = load i32, ptr %1279, align 4, !tbaa !5
  %1281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1282 = call i32 @s2n_print_stacktrace(ptr noundef %1281) #12
  %1283 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1284 = trunc nuw i8 %1283 to i1
  br i1 %1284, label %1285, label %1289

1285:                                             ; preds = %1278
  %1286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1287 = call i32 @fileno(ptr noundef %1286) #12
  %1288 = call i32 @isatty(i32 noundef %1287) #12
  %.not206 = icmp eq i32 %1288, 0
  br i1 %.not206, label %1289, label %1290

1289:                                             ; preds = %1285, %1278
  br label %1290

1290:                                             ; preds = %1285, %1289
  %.str.5.sink685 = phi ptr [ @.str.5, %1289 ], [ @.str.2, %1285 ]
  store i32 %1280, ptr %1279, align 4, !tbaa !5
  %1291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1292 = load i32, ptr @test_count, align 4, !tbaa !5
  %1293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1294 = load i32, ptr %1293, align 4, !tbaa !5
  %1295 = call ptr @s2n_strerror(i32 noundef %1294, ptr noundef nonnull @.str.4) #12
  %1296 = load i32, ptr %1293, align 4, !tbaa !5
  %1297 = call ptr @s2n_strerror_debug(i32 noundef %1296, ptr noundef nonnull @.str.4) #12
  %1298 = load i32, ptr %1279, align 4, !tbaa !5
  %1299 = call ptr @strerror(i32 noundef %1298) #12
  %1300 = load i32, ptr %1279, align 4, !tbaa !5
  %1301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1291, ptr noundef nonnull %.str.5.sink685, i32 noundef %1292, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 357, ptr noundef %1295, ptr noundef %1297, ptr noundef %1299, i32 noundef %1300) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1302:                                             ; preds = %1275
  %1303 = call i32 @s2n_security_rule_result_free(ptr noundef nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %37) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %39) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %39, i8 0, i64 48, i1 false)
  %1304 = load i32, ptr @test_count, align 4, !tbaa !5
  %1305 = add nsw i32 %1304, 1
  store i32 %1305, ptr @test_count, align 4, !tbaa !5
  %1306 = call i32 @s2n_security_rule_result_init_output(ptr noundef nonnull %39) #12
  %1307 = call zeroext i1 @s2n_result_is_ok(i32 %1306)
  br i1 %1307, label %1332, label %1308

1308:                                             ; preds = %1302
  %1309 = tail call ptr @__errno_location() #13
  %1310 = load i32, ptr %1309, align 4, !tbaa !5
  %1311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1312 = call i32 @s2n_print_stacktrace(ptr noundef %1311) #12
  %1313 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1314 = trunc nuw i8 %1313 to i1
  br i1 %1314, label %1315, label %1319

1315:                                             ; preds = %1308
  %1316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1317 = call i32 @fileno(ptr noundef %1316) #12
  %1318 = call i32 @isatty(i32 noundef %1317) #12
  %.not207 = icmp eq i32 %1318, 0
  br i1 %.not207, label %1319, label %1320

1319:                                             ; preds = %1315, %1308
  br label %1320

1320:                                             ; preds = %1315, %1319
  %.str.5.sink696 = phi ptr [ @.str.5, %1319 ], [ @.str.2, %1315 ]
  store i32 %1310, ptr %1309, align 4, !tbaa !5
  %1321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1322 = load i32, ptr @test_count, align 4, !tbaa !5
  %1323 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = call ptr @s2n_strerror(i32 noundef %1324, ptr noundef nonnull @.str.4) #12
  %1326 = load i32, ptr %1323, align 4, !tbaa !5
  %1327 = call ptr @s2n_strerror_debug(i32 noundef %1326, ptr noundef nonnull @.str.4) #12
  %1328 = load i32, ptr %1309, align 4, !tbaa !5
  %1329 = call ptr @strerror(i32 noundef %1328) #12
  %1330 = load i32, ptr %1309, align 4, !tbaa !5
  %1331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1321, ptr noundef nonnull %.str.5.sink696, i32 noundef %1322, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 368, ptr noundef %1325, ptr noundef %1327, ptr noundef %1329, i32 noundef %1330) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1332:                                             ; preds = %1302
  %1333 = load i32, ptr @test_count, align 4, !tbaa !5
  %1334 = add nsw i32 %1333, 1
  store i32 %1334, ptr @test_count, align 4, !tbaa !5
  %1335 = call i32 @s2n_security_rule_validate_policy(ptr noundef nonnull %3, ptr noundef nonnull @security_policy_test_all, ptr noundef nonnull %39) #12
  %1336 = call zeroext i1 @s2n_result_is_ok(i32 %1335)
  br i1 %1336, label %1361, label %1337

1337:                                             ; preds = %1332
  %1338 = tail call ptr @__errno_location() #13
  %1339 = load i32, ptr %1338, align 4, !tbaa !5
  %1340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1341 = call i32 @s2n_print_stacktrace(ptr noundef %1340) #12
  %1342 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1343 = trunc nuw i8 %1342 to i1
  br i1 %1343, label %1344, label %1348

1344:                                             ; preds = %1337
  %1345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1346 = call i32 @fileno(ptr noundef %1345) #12
  %1347 = call i32 @isatty(i32 noundef %1346) #12
  %.not208 = icmp eq i32 %1347, 0
  br i1 %.not208, label %1348, label %1349

1348:                                             ; preds = %1344, %1337
  br label %1349

1349:                                             ; preds = %1344, %1348
  %.str.5.sink707 = phi ptr [ @.str.5, %1348 ], [ @.str.2, %1344 ]
  store i32 %1339, ptr %1338, align 4, !tbaa !5
  %1350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1351 = load i32, ptr @test_count, align 4, !tbaa !5
  %1352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1353 = load i32, ptr %1352, align 4, !tbaa !5
  %1354 = call ptr @s2n_strerror(i32 noundef %1353, ptr noundef nonnull @.str.4) #12
  %1355 = load i32, ptr %1352, align 4, !tbaa !5
  %1356 = call ptr @s2n_strerror_debug(i32 noundef %1355, ptr noundef nonnull @.str.4) #12
  %1357 = load i32, ptr %1338, align 4, !tbaa !5
  %1358 = call ptr @strerror(i32 noundef %1357) #12
  %1359 = load i32, ptr %1338, align 4, !tbaa !5
  %1360 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1350, ptr noundef nonnull %.str.5.sink707, i32 noundef %1351, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 371, ptr noundef %1354, ptr noundef %1356, ptr noundef %1358, i32 noundef %1359) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1361:                                             ; preds = %1332
  %1362 = load i32, ptr @test_count, align 4, !tbaa !5
  %1363 = add nsw i32 %1362, 1
  store i32 %1363, ptr @test_count, align 4, !tbaa !5
  %1364 = load i8, ptr %39, align 8, !tbaa !29, !range !13, !noundef !14
  %1365 = trunc nuw i8 %1364 to i1
  br i1 %1365, label %1390, label %1366

1366:                                             ; preds = %1361
  %1367 = tail call ptr @__errno_location() #13
  %1368 = load i32, ptr %1367, align 4, !tbaa !5
  %1369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1370 = call i32 @s2n_print_stacktrace(ptr noundef %1369) #12
  %1371 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1372 = trunc nuw i8 %1371 to i1
  br i1 %1372, label %1373, label %1377

1373:                                             ; preds = %1366
  %1374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1375 = call i32 @fileno(ptr noundef %1374) #12
  %1376 = call i32 @isatty(i32 noundef %1375) #12
  %.not209 = icmp eq i32 %1376, 0
  br i1 %.not209, label %1377, label %1378

1377:                                             ; preds = %1373, %1366
  br label %1378

1378:                                             ; preds = %1373, %1377
  %.str.5.sink718 = phi ptr [ @.str.5, %1377 ], [ @.str.2, %1373 ]
  store i32 %1368, ptr %1367, align 4, !tbaa !5
  %1379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1380 = load i32, ptr @test_count, align 4, !tbaa !5
  %1381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1382 = load i32, ptr %1381, align 4, !tbaa !5
  %1383 = call ptr @s2n_strerror(i32 noundef %1382, ptr noundef nonnull @.str.4) #12
  %1384 = load i32, ptr %1381, align 4, !tbaa !5
  %1385 = call ptr @s2n_strerror_debug(i32 noundef %1384, ptr noundef nonnull @.str.4) #12
  %1386 = load i32, ptr %1367, align 4, !tbaa !5
  %1387 = call ptr @strerror(i32 noundef %1386) #12
  %1388 = load i32, ptr %1367, align 4, !tbaa !5
  %1389 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1379, ptr noundef nonnull %.str.5.sink718, i32 noundef %1380, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 372, ptr noundef %1383, ptr noundef %1385, ptr noundef %1387, i32 noundef %1388) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1390:                                             ; preds = %1361
  %1391 = getelementptr inbounds i8, ptr %39, i64 36
  %1392 = load i32, ptr %1391, align 4, !tbaa !35
  %1393 = getelementptr inbounds i8, ptr %39, i64 32
  %1394 = load i32, ptr %1393, align 8, !tbaa !36
  %1395 = sub i32 %1392, %1394
  %1396 = add nsw i32 %1362, 2
  store i32 %1396, ptr @test_count, align 4, !tbaa !5
  %1397 = icmp ugt i32 %1395, 28
  br i1 %1397, label %1422, label %1398

1398:                                             ; preds = %1390
  %1399 = tail call ptr @__errno_location() #13
  %1400 = load i32, ptr %1399, align 4, !tbaa !5
  %1401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1402 = call i32 @s2n_print_stacktrace(ptr noundef %1401) #12
  %1403 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1404 = trunc nuw i8 %1403 to i1
  br i1 %1404, label %1405, label %1409

1405:                                             ; preds = %1398
  %1406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1407 = call i32 @fileno(ptr noundef %1406) #12
  %1408 = call i32 @isatty(i32 noundef %1407) #12
  %.not210 = icmp eq i32 %1408, 0
  br i1 %.not210, label %1409, label %1410

1409:                                             ; preds = %1405, %1398
  br label %1410

1410:                                             ; preds = %1405, %1409
  %.str.5.sink729 = phi ptr [ @.str.5, %1409 ], [ @.str.2, %1405 ]
  store i32 %1400, ptr %1399, align 4, !tbaa !5
  %1411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1412 = load i32, ptr @test_count, align 4, !tbaa !5
  %1413 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1414 = load i32, ptr %1413, align 4, !tbaa !5
  %1415 = call ptr @s2n_strerror(i32 noundef %1414, ptr noundef nonnull @.str.4) #12
  %1416 = load i32, ptr %1413, align 4, !tbaa !5
  %1417 = call ptr @s2n_strerror_debug(i32 noundef %1416, ptr noundef nonnull @.str.4) #12
  %1418 = load i32, ptr %1399, align 4, !tbaa !5
  %1419 = call ptr @strerror(i32 noundef %1418) #12
  %1420 = load i32, ptr %1399, align 4, !tbaa !5
  %1421 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1411, ptr noundef nonnull %.str.5.sink729, i32 noundef %1412, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 375, ptr noundef %1415, ptr noundef %1417, ptr noundef %1419, i32 noundef %1420) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1422:                                             ; preds = %1390
  %1423 = getelementptr inbounds i8, ptr %39, i64 8
  %1424 = call ptr @s2n_stuffer_raw_read(ptr noundef nonnull %1423, i32 noundef 28) #12
  %1425 = load i32, ptr @test_count, align 4, !tbaa !5
  %1426 = add nsw i32 %1425, 1
  store i32 %1426, ptr @test_count, align 4, !tbaa !5
  %1427 = icmp eq ptr %1424, null
  br i1 %1427, label %1428, label %1452

1428:                                             ; preds = %1422
  %1429 = tail call ptr @__errno_location() #13
  %1430 = load i32, ptr %1429, align 4, !tbaa !5
  %1431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1432 = call i32 @s2n_print_stacktrace(ptr noundef %1431) #12
  %1433 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1434 = trunc nuw i8 %1433 to i1
  br i1 %1434, label %1435, label %1439

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

1439:                                             ; preds = %1435, %1428
  br label %1440

1440:                                             ; preds = %1435, %1439
  %.str.5.sink740 = phi ptr [ @.str.5, %1439 ], [ @.str.2, %1435 ]
  store i32 %1430, ptr %1429, align 4, !tbaa !5
  %1441 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1442 = load i32, ptr @test_count, align 4, !tbaa !5
  %1443 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call ptr @s2n_strerror(i32 noundef %1444, ptr noundef nonnull @.str.4) #12
  %1446 = load i32, ptr %1443, align 4, !tbaa !5
  %1447 = call ptr @s2n_strerror_debug(i32 noundef %1446, ptr noundef nonnull @.str.4) #12
  %1448 = load i32, ptr %1429, align 4, !tbaa !5
  %1449 = call ptr @strerror(i32 noundef %1448) #12
  %1450 = load i32, ptr %1429, align 4, !tbaa !5
  %1451 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1441, ptr noundef nonnull %.str.5.sink740, i32 noundef %1442, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 377, ptr noundef %1445, ptr noundef %1447, ptr noundef %1449, i32 noundef %1450) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1452:                                             ; preds = %1422
  %1453 = add nsw i32 %1425, 2
  store i32 %1453, ptr @test_count, align 4, !tbaa !5
  %bcmp211 = call i32 @bcmp(ptr noundef nonnull dereferenceable(28) %1424, ptr noundef nonnull dereferenceable(28) @__const.main.expected_prefix, i64 28)
  %1454 = icmp eq i32 %bcmp211, 0
  br i1 %1454, label %1479, label %1455

1455:                                             ; preds = %1452
  %1456 = tail call ptr @__errno_location() #13
  %1457 = load i32, ptr %1456, align 4, !tbaa !5
  %1458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1459 = call i32 @s2n_print_stacktrace(ptr noundef %1458) #12
  %1460 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1461 = trunc nuw i8 %1460 to i1
  br i1 %1461, label %1462, label %1466

1462:                                             ; preds = %1455
  %1463 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1464 = call i32 @fileno(ptr noundef %1463) #12
  %1465 = call i32 @isatty(i32 noundef %1464) #12
  %.not212 = icmp eq i32 %1465, 0
  br i1 %.not212, label %1466, label %1467

1466:                                             ; preds = %1462, %1455
  br label %1467

1467:                                             ; preds = %1462, %1466
  %.str.5.sink751 = phi ptr [ @.str.5, %1466 ], [ @.str.2, %1462 ]
  store i32 %1457, ptr %1456, align 4, !tbaa !5
  %1468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1469 = load i32, ptr @test_count, align 4, !tbaa !5
  %1470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1471 = load i32, ptr %1470, align 4, !tbaa !5
  %1472 = call ptr @s2n_strerror(i32 noundef %1471, ptr noundef nonnull @.str.4) #12
  %1473 = load i32, ptr %1470, align 4, !tbaa !5
  %1474 = call ptr @s2n_strerror_debug(i32 noundef %1473, ptr noundef nonnull @.str.4) #12
  %1475 = load i32, ptr %1456, align 4, !tbaa !5
  %1476 = call ptr @strerror(i32 noundef %1475) #12
  %1477 = load i32, ptr %1456, align 4, !tbaa !5
  %1478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1468, ptr noundef nonnull %.str.5.sink751, i32 noundef %1469, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 378, ptr noundef %1472, ptr noundef %1474, ptr noundef %1476, i32 noundef %1477) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1479:                                             ; preds = %1452
  %1480 = call i32 @s2n_security_rule_result_free(ptr noundef nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %39) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #12
  store ptr @s2n_rsa_with_aes_128_gcm_sha256, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #12
  store i16 1, ptr %41, align 8, !tbaa !15
  %1481 = getelementptr inbounds i8, ptr %41, i64 8
  store ptr %40, ptr %1481, align 8, !tbaa !18
  %1482 = getelementptr inbounds i8, ptr %41, i64 16
  store i8 0, ptr %1482, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %42, ptr noundef nonnull align 16 dereferenceable(16) @__const.main.forward_secret_suites, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #12
  store i16 2, ptr %43, align 8, !tbaa !15
  %1483 = getelementptr inbounds i8, ptr %43, i64 8
  store ptr %42, ptr %1483, align 8, !tbaa !18
  %1484 = getelementptr inbounds i8, ptr %43, i64 16
  store i8 0, ptr %1484, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %44) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %44, ptr noundef nonnull align 8 dereferenceable(64) %13, i64 64, i1 false), !tbaa.struct !33
  %1485 = getelementptr inbounds i8, ptr %44, i64 57
  store i8 1, ptr %1485, align 1, !tbaa !11
  %1486 = getelementptr inbounds i8, ptr %44, i64 8
  store ptr %43, ptr %1486, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %45) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %45, i8 0, i64 48, i1 false)
  %1487 = load i32, ptr @test_count, align 4, !tbaa !5
  %1488 = add nsw i32 %1487, 1
  store i32 %1488, ptr @test_count, align 4, !tbaa !5
  %1489 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef nonnull %44, ptr noundef nonnull %45) #12
  %1490 = call zeroext i1 @s2n_result_is_ok(i32 %1489)
  br i1 %1490, label %1515, label %1491

1491:                                             ; preds = %1479
  %1492 = tail call ptr @__errno_location() #13
  %1493 = load i32, ptr %1492, align 4, !tbaa !5
  %1494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1495 = call i32 @s2n_print_stacktrace(ptr noundef %1494) #12
  %1496 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1497 = trunc nuw i8 %1496 to i1
  br i1 %1497, label %1498, label %1502

1498:                                             ; preds = %1491
  %1499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1500 = call i32 @fileno(ptr noundef %1499) #12
  %1501 = call i32 @isatty(i32 noundef %1500) #12
  %.not213 = icmp eq i32 %1501, 0
  br i1 %.not213, label %1502, label %1503

1502:                                             ; preds = %1498, %1491
  br label %1503

1503:                                             ; preds = %1498, %1502
  %.str.5.sink762 = phi ptr [ @.str.5, %1502 ], [ @.str.2, %1498 ]
  store i32 %1493, ptr %1492, align 4, !tbaa !5
  %1504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1505 = load i32, ptr @test_count, align 4, !tbaa !5
  %1506 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1507 = load i32, ptr %1506, align 4, !tbaa !5
  %1508 = call ptr @s2n_strerror(i32 noundef %1507, ptr noundef nonnull @.str.4) #12
  %1509 = load i32, ptr %1506, align 4, !tbaa !5
  %1510 = call ptr @s2n_strerror_debug(i32 noundef %1509, ptr noundef nonnull @.str.4) #12
  %1511 = load i32, ptr %1492, align 4, !tbaa !5
  %1512 = call ptr @strerror(i32 noundef %1511) #12
  %1513 = load i32, ptr %1492, align 4, !tbaa !5
  %1514 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1504, ptr noundef nonnull %.str.5.sink762, i32 noundef %1505, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 409, ptr noundef %1508, ptr noundef %1510, ptr noundef %1512, i32 noundef %1513) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1515:                                             ; preds = %1479
  %1516 = load i32, ptr @test_count, align 4, !tbaa !5
  %1517 = add nsw i32 %1516, 1
  store i32 %1517, ptr @test_count, align 4, !tbaa !5
  %1518 = load i8, ptr %45, align 8, !tbaa !29, !range !13, !noundef !14
  %1519 = trunc nuw i8 %1518 to i1
  br i1 %1519, label %1520, label %1544

1520:                                             ; preds = %1515
  %1521 = tail call ptr @__errno_location() #13
  %1522 = load i32, ptr %1521, align 4, !tbaa !5
  %1523 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1524 = call i32 @s2n_print_stacktrace(ptr noundef %1523) #12
  %1525 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1526 = trunc nuw i8 %1525 to i1
  br i1 %1526, label %1527, label %1531

1527:                                             ; preds = %1520
  %1528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1529 = call i32 @fileno(ptr noundef %1528) #12
  %1530 = call i32 @isatty(i32 noundef %1529) #12
  %.not225 = icmp eq i32 %1530, 0
  br i1 %.not225, label %1531, label %1532

1531:                                             ; preds = %1527, %1520
  br label %1532

1532:                                             ; preds = %1527, %1531
  %.str.5.sink773 = phi ptr [ @.str.5, %1531 ], [ @.str.2, %1527 ]
  store i32 %1522, ptr %1521, align 4, !tbaa !5
  %1533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1534 = load i32, ptr @test_count, align 4, !tbaa !5
  %1535 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1536 = load i32, ptr %1535, align 4, !tbaa !5
  %1537 = call ptr @s2n_strerror(i32 noundef %1536, ptr noundef nonnull @.str.4) #12
  %1538 = load i32, ptr %1535, align 4, !tbaa !5
  %1539 = call ptr @s2n_strerror_debug(i32 noundef %1538, ptr noundef nonnull @.str.4) #12
  %1540 = load i32, ptr %1521, align 4, !tbaa !5
  %1541 = call ptr @strerror(i32 noundef %1540) #12
  %1542 = load i32, ptr %1521, align 4, !tbaa !5
  %1543 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1533, ptr noundef nonnull %.str.5.sink773, i32 noundef %1534, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 410, ptr noundef %1537, ptr noundef %1539, ptr noundef %1541, i32 noundef %1542) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1544:                                             ; preds = %1515
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #12
  store i8 1, ptr %1485, align 1, !tbaa !11
  store ptr %41, ptr %1486, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %46) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %46, i8 0, i64 48, i1 false)
  %1545 = add nsw i32 %1516, 2
  store i32 %1545, ptr @test_count, align 4, !tbaa !5
  %1546 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef nonnull %44, ptr noundef nonnull %46) #12
  %1547 = call zeroext i1 @s2n_result_is_ok(i32 %1546)
  br i1 %1547, label %1572, label %1548

1548:                                             ; preds = %1544
  %1549 = tail call ptr @__errno_location() #13
  %1550 = load i32, ptr %1549, align 4, !tbaa !5
  %1551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1552 = call i32 @s2n_print_stacktrace(ptr noundef %1551) #12
  %1553 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1554 = trunc nuw i8 %1553 to i1
  br i1 %1554, label %1555, label %1559

1555:                                             ; preds = %1548
  %1556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1557 = call i32 @fileno(ptr noundef %1556) #12
  %1558 = call i32 @isatty(i32 noundef %1557) #12
  %.not214 = icmp eq i32 %1558, 0
  br i1 %.not214, label %1559, label %1560

1559:                                             ; preds = %1555, %1548
  br label %1560

1560:                                             ; preds = %1555, %1559
  %.str.5.sink784 = phi ptr [ @.str.5, %1559 ], [ @.str.2, %1555 ]
  store i32 %1550, ptr %1549, 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 nonnull @.str.4) #12
  %1566 = load i32, ptr %1563, align 4, !tbaa !5
  %1567 = call ptr @s2n_strerror_debug(i32 noundef %1566, ptr noundef nonnull @.str.4) #12
  %1568 = load i32, ptr %1549, align 4, !tbaa !5
  %1569 = call ptr @strerror(i32 noundef %1568) #12
  %1570 = load i32, ptr %1549, align 4, !tbaa !5
  %1571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1561, ptr noundef nonnull %.str.5.sink784, i32 noundef %1562, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 419, ptr noundef %1565, ptr noundef %1567, ptr noundef %1569, i32 noundef %1570) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1572:                                             ; preds = %1544
  %1573 = load i32, ptr @test_count, align 4, !tbaa !5
  %1574 = add nsw i32 %1573, 1
  store i32 %1574, ptr @test_count, align 4, !tbaa !5
  %1575 = load i8, ptr %46, align 8, !tbaa !29, !range !13, !noundef !14
  %1576 = trunc nuw i8 %1575 to i1
  br i1 %1576, label %1601, label %1577

1577:                                             ; preds = %1572
  %1578 = tail call ptr @__errno_location() #13
  %1579 = load i32, ptr %1578, align 4, !tbaa !5
  %1580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1581 = call i32 @s2n_print_stacktrace(ptr noundef %1580) #12
  %1582 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1583 = trunc nuw i8 %1582 to i1
  br i1 %1583, label %1584, label %1588

1584:                                             ; preds = %1577
  %1585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1586 = call i32 @fileno(ptr noundef %1585) #12
  %1587 = call i32 @isatty(i32 noundef %1586) #12
  %.not215 = icmp eq i32 %1587, 0
  br i1 %.not215, label %1588, label %1589

1588:                                             ; preds = %1584, %1577
  br label %1589

1589:                                             ; preds = %1584, %1588
  %.str.5.sink795 = phi ptr [ @.str.5, %1588 ], [ @.str.2, %1584 ]
  store i32 %1579, ptr %1578, align 4, !tbaa !5
  %1590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1591 = load i32, ptr @test_count, align 4, !tbaa !5
  %1592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1593 = load i32, ptr %1592, align 4, !tbaa !5
  %1594 = call ptr @s2n_strerror(i32 noundef %1593, ptr noundef nonnull @.str.4) #12
  %1595 = load i32, ptr %1592, align 4, !tbaa !5
  %1596 = call ptr @s2n_strerror_debug(i32 noundef %1595, ptr noundef nonnull @.str.4) #12
  %1597 = load i32, ptr %1578, align 4, !tbaa !5
  %1598 = call ptr @strerror(i32 noundef %1597) #12
  %1599 = load i32, ptr %1578, align 4, !tbaa !5
  %1600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1590, ptr noundef nonnull %.str.5.sink795, i32 noundef %1591, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 420, ptr noundef %1594, ptr noundef %1596, ptr noundef %1598, i32 noundef %1599) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1601:                                             ; preds = %1572
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %46) #12
  store i8 0, ptr %1485, align 1, !tbaa !11
  store ptr %43, ptr %1486, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %47) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %47, i8 0, i64 48, i1 false)
  %1602 = add nsw i32 %1573, 2
  store i32 %1602, ptr @test_count, align 4, !tbaa !5
  %1603 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef nonnull %44, ptr noundef nonnull %47) #12
  %1604 = call zeroext i1 @s2n_result_is_ok(i32 %1603)
  br i1 %1604, label %1629, label %1605

1605:                                             ; preds = %1601
  %1606 = tail call ptr @__errno_location() #13
  %1607 = load i32, ptr %1606, align 4, !tbaa !5
  %1608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1609 = call i32 @s2n_print_stacktrace(ptr noundef %1608) #12
  %1610 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1611 = trunc nuw i8 %1610 to i1
  br i1 %1611, label %1612, label %1616

1612:                                             ; preds = %1605
  %1613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1614 = call i32 @fileno(ptr noundef %1613) #12
  %1615 = call i32 @isatty(i32 noundef %1614) #12
  %.not216 = icmp eq i32 %1615, 0
  br i1 %.not216, label %1616, label %1617

1616:                                             ; preds = %1612, %1605
  br label %1617

1617:                                             ; preds = %1612, %1616
  %.str.5.sink806 = phi ptr [ @.str.5, %1616 ], [ @.str.2, %1612 ]
  store i32 %1607, ptr %1606, align 4, !tbaa !5
  %1618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1619 = load i32, ptr @test_count, align 4, !tbaa !5
  %1620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1621 = load i32, ptr %1620, align 4, !tbaa !5
  %1622 = call ptr @s2n_strerror(i32 noundef %1621, ptr noundef nonnull @.str.4) #12
  %1623 = load i32, ptr %1620, align 4, !tbaa !5
  %1624 = call ptr @s2n_strerror_debug(i32 noundef %1623, ptr noundef nonnull @.str.4) #12
  %1625 = load i32, ptr %1606, align 4, !tbaa !5
  %1626 = call ptr @strerror(i32 noundef %1625) #12
  %1627 = load i32, ptr %1606, align 4, !tbaa !5
  %1628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1618, ptr noundef nonnull %.str.5.sink806, i32 noundef %1619, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 429, ptr noundef %1622, ptr noundef %1624, ptr noundef %1626, i32 noundef %1627) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1629:                                             ; preds = %1601
  %1630 = load i32, ptr @test_count, align 4, !tbaa !5
  %1631 = add nsw i32 %1630, 1
  store i32 %1631, ptr @test_count, align 4, !tbaa !5
  %1632 = load i8, ptr %47, align 8, !tbaa !29, !range !13, !noundef !14
  %1633 = trunc nuw i8 %1632 to i1
  br i1 %1633, label %1634, label %1658

1634:                                             ; preds = %1629
  %1635 = tail call ptr @__errno_location() #13
  %1636 = load i32, ptr %1635, align 4, !tbaa !5
  %1637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1638 = call i32 @s2n_print_stacktrace(ptr noundef %1637) #12
  %1639 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1640 = trunc nuw i8 %1639 to i1
  br i1 %1640, label %1641, label %1645

1641:                                             ; preds = %1634
  %1642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1643 = call i32 @fileno(ptr noundef %1642) #12
  %1644 = call i32 @isatty(i32 noundef %1643) #12
  %.not224 = icmp eq i32 %1644, 0
  br i1 %.not224, label %1645, label %1646

1645:                                             ; preds = %1641, %1634
  br label %1646

1646:                                             ; preds = %1641, %1645
  %.str.5.sink817 = phi ptr [ @.str.5, %1645 ], [ @.str.2, %1641 ]
  store i32 %1636, ptr %1635, align 4, !tbaa !5
  %1647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1648 = load i32, ptr @test_count, align 4, !tbaa !5
  %1649 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1650 = load i32, ptr %1649, align 4, !tbaa !5
  %1651 = call ptr @s2n_strerror(i32 noundef %1650, ptr noundef nonnull @.str.4) #12
  %1652 = load i32, ptr %1649, align 4, !tbaa !5
  %1653 = call ptr @s2n_strerror_debug(i32 noundef %1652, ptr noundef nonnull @.str.4) #12
  %1654 = load i32, ptr %1635, align 4, !tbaa !5
  %1655 = call ptr @strerror(i32 noundef %1654) #12
  %1656 = load i32, ptr %1635, align 4, !tbaa !5
  %1657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1647, ptr noundef nonnull %.str.5.sink817, i32 noundef %1648, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 430, ptr noundef %1651, ptr noundef %1653, ptr noundef %1655, i32 noundef %1656) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1658:                                             ; preds = %1629
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %47) #12
  store i8 0, ptr %1485, align 1, !tbaa !11
  store ptr %41, ptr %1486, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %48) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %48, i8 0, i64 48, i1 false)
  %1659 = add nsw i32 %1630, 2
  store i32 %1659, ptr @test_count, align 4, !tbaa !5
  %1660 = call i32 @s2n_security_policy_validate_security_rules(ptr noundef nonnull %44, ptr noundef nonnull %48) #12
  %1661 = call zeroext i1 @s2n_result_is_ok(i32 %1660)
  br i1 %1661, label %1686, label %1662

1662:                                             ; preds = %1658
  %1663 = tail call ptr @__errno_location() #13
  %1664 = load i32, ptr %1663, align 4, !tbaa !5
  %1665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1666 = call i32 @s2n_print_stacktrace(ptr noundef %1665) #12
  %1667 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1668 = trunc nuw i8 %1667 to i1
  br i1 %1668, label %1669, label %1673

1669:                                             ; preds = %1662
  %1670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1671 = call i32 @fileno(ptr noundef %1670) #12
  %1672 = call i32 @isatty(i32 noundef %1671) #12
  %.not217 = icmp eq i32 %1672, 0
  br i1 %.not217, label %1673, label %1674

1673:                                             ; preds = %1669, %1662
  br label %1674

1674:                                             ; preds = %1669, %1673
  %.str.5.sink828 = phi ptr [ @.str.5, %1673 ], [ @.str.2, %1669 ]
  store i32 %1664, ptr %1663, align 4, !tbaa !5
  %1675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1676 = load i32, ptr @test_count, align 4, !tbaa !5
  %1677 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1678 = load i32, ptr %1677, align 4, !tbaa !5
  %1679 = call ptr @s2n_strerror(i32 noundef %1678, ptr noundef nonnull @.str.4) #12
  %1680 = load i32, ptr %1677, align 4, !tbaa !5
  %1681 = call ptr @s2n_strerror_debug(i32 noundef %1680, ptr noundef nonnull @.str.4) #12
  %1682 = load i32, ptr %1663, align 4, !tbaa !5
  %1683 = call ptr @strerror(i32 noundef %1682) #12
  %1684 = load i32, ptr %1663, align 4, !tbaa !5
  %1685 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1675, ptr noundef nonnull %.str.5.sink828, i32 noundef %1676, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 439, ptr noundef %1679, ptr noundef %1681, ptr noundef %1683, i32 noundef %1684) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1686:                                             ; preds = %1658
  %1687 = load i32, ptr @test_count, align 4, !tbaa !5
  %1688 = add nsw i32 %1687, 1
  store i32 %1688, ptr @test_count, align 4, !tbaa !5
  %1689 = load i8, ptr %48, align 8, !tbaa !29, !range !13, !noundef !14
  %1690 = trunc nuw i8 %1689 to i1
  br i1 %1690, label %1691, label %1715

1691:                                             ; preds = %1686
  %1692 = tail call ptr @__errno_location() #13
  %1693 = load i32, ptr %1692, align 4, !tbaa !5
  %1694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1695 = call i32 @s2n_print_stacktrace(ptr noundef %1694) #12
  %1696 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1697 = trunc nuw i8 %1696 to i1
  br i1 %1697, label %1698, label %1702

1698:                                             ; preds = %1691
  %1699 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1700 = call i32 @fileno(ptr noundef %1699) #12
  %1701 = call i32 @isatty(i32 noundef %1700) #12
  %.not223 = icmp eq i32 %1701, 0
  br i1 %.not223, label %1702, label %1703

1702:                                             ; preds = %1698, %1691
  br label %1703

1703:                                             ; preds = %1698, %1702
  %.str.5.sink839 = phi ptr [ @.str.5, %1702 ], [ @.str.2, %1698 ]
  store i32 %1693, ptr %1692, align 4, !tbaa !5
  %1704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1705 = load i32, ptr @test_count, align 4, !tbaa !5
  %1706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1707 = load i32, ptr %1706, align 4, !tbaa !5
  %1708 = call ptr @s2n_strerror(i32 noundef %1707, ptr noundef nonnull @.str.4) #12
  %1709 = load i32, ptr %1706, align 4, !tbaa !5
  %1710 = call ptr @s2n_strerror_debug(i32 noundef %1709, ptr noundef nonnull @.str.4) #12
  %1711 = load i32, ptr %1692, align 4, !tbaa !5
  %1712 = call ptr @strerror(i32 noundef %1711) #12
  %1713 = load i32, ptr %1692, align 4, !tbaa !5
  %1714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1704, ptr noundef nonnull %.str.5.sink839, i32 noundef %1705, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 440, ptr noundef %1708, ptr noundef %1710, ptr noundef %1712, i32 noundef %1713) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1715:                                             ; preds = %1686
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %48) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %44) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  %1716 = call i32 @s2n_cleanup() #12
  %1717 = icmp eq i32 %1716, -1
  br i1 %1717, label %1718, label %1742

1718:                                             ; preds = %1715
  %1719 = tail call ptr @__errno_location() #13
  %1720 = load i32, ptr %1719, align 4, !tbaa !5
  %1721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1722 = call i32 @s2n_print_stacktrace(ptr noundef %1721) #12
  %1723 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1724 = trunc nuw i8 %1723 to i1
  br i1 %1724, label %1725, label %1729

1725:                                             ; preds = %1718
  %1726 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1727 = call i32 @fileno(ptr noundef %1726) #12
  %1728 = call i32 @isatty(i32 noundef %1727) #12
  %.not222 = icmp eq i32 %1728, 0
  br i1 %.not222, label %1729, label %1730

1729:                                             ; preds = %1725, %1718
  br label %1730

1730:                                             ; preds = %1725, %1729
  %.str.5.sink850 = phi ptr [ @.str.5, %1729 ], [ @.str.2, %1725 ]
  store i32 %1720, ptr %1719, align 4, !tbaa !5
  %1731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1732 = load i32, ptr @test_count, align 4, !tbaa !5
  %1733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1734 = load i32, ptr %1733, align 4, !tbaa !5
  %1735 = call ptr @s2n_strerror(i32 noundef %1734, ptr noundef nonnull @.str.4) #12
  %1736 = load i32, ptr %1733, align 4, !tbaa !5
  %1737 = call ptr @s2n_strerror_debug(i32 noundef %1736, ptr noundef nonnull @.str.4) #12
  %1738 = load i32, ptr %1719, align 4, !tbaa !5
  %1739 = call ptr @strerror(i32 noundef %1738) #12
  %1740 = load i32, ptr %1719, align 4, !tbaa !5
  %1741 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1731, ptr noundef nonnull %.str.5.sink850, i32 noundef %1732, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 444, ptr noundef %1735, ptr noundef %1737, ptr noundef %1739, i32 noundef %1740) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1742:                                             ; preds = %1715
  %1743 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %1744 = icmp eq i32 %1743, -1
  br i1 %1744, label %1745, label %1769

1745:                                             ; preds = %1742
  %1746 = tail call ptr @__errno_location() #13
  %1747 = load i32, ptr %1746, align 4, !tbaa !5
  %1748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1749 = call i32 @s2n_print_stacktrace(ptr noundef %1748) #12
  %1750 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1751 = trunc nuw i8 %1750 to i1
  br i1 %1751, label %1752, label %1756

1752:                                             ; preds = %1745
  %1753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1754 = call i32 @fileno(ptr noundef %1753) #12
  %1755 = call i32 @isatty(i32 noundef %1754) #12
  %.not221 = icmp eq i32 %1755, 0
  br i1 %.not221, label %1756, label %1757

1756:                                             ; preds = %1752, %1745
  br label %1757

1757:                                             ; preds = %1752, %1756
  %.str.5.sink861 = phi ptr [ @.str.5, %1756 ], [ @.str.2, %1752 ]
  store i32 %1747, ptr %1746, align 4, !tbaa !5
  %1758 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1759 = load i32, ptr @test_count, align 4, !tbaa !5
  %1760 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1761 = load i32, ptr %1760, align 4, !tbaa !5
  %1762 = call ptr @s2n_strerror(i32 noundef %1761, ptr noundef nonnull @.str.4) #12
  %1763 = load i32, ptr %1760, align 4, !tbaa !5
  %1764 = call ptr @s2n_strerror_debug(i32 noundef %1763, ptr noundef nonnull @.str.4) #12
  %1765 = load i32, ptr %1746, align 4, !tbaa !5
  %1766 = call ptr @strerror(i32 noundef %1765) #12
  %1767 = load i32, ptr %1746, align 4, !tbaa !5
  %1768 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1758, ptr noundef nonnull %.str.5.sink861, i32 noundef %1759, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 444, ptr noundef %1762, ptr noundef %1764, ptr noundef %1766, i32 noundef %1767) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1769:                                             ; preds = %1742
  %1770 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1771 = trunc nuw i8 %1770 to i1
  br i1 %1771, label %1772, label %1783

1772:                                             ; preds = %1769
  %1773 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1774 = call i32 @fileno(ptr noundef %1773) #12
  %1775 = call i32 @isatty(i32 noundef %1774) #12
  %.not218 = icmp eq i32 %1775, 0
  br i1 %.not218, label %1783, label %1776

1776:                                             ; preds = %1772
  %1777 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not220 = icmp eq i32 %1777, 0
  %1778 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not220, label %1781, label %1779

1779:                                             ; preds = %1776
  %1780 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1778, ptr noundef nonnull @.str.27, i32 noundef %1777) #12
  br label %1790

1781:                                             ; preds = %1776
  %1782 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1778, ptr noundef nonnull @.str.28) #12
  br label %1790

1783:                                             ; preds = %1772, %1769
  %1784 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not219 = icmp eq i32 %1784, 0
  %1785 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not219, label %1788, label %1786

1786:                                             ; preds = %1783
  %1787 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1785, ptr noundef nonnull @.str.29, i32 noundef %1784) #12
  br label %1790

1788:                                             ; preds = %1783
  %1789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1785, ptr noundef nonnull @.str.30) #12
  br label %1790

1790:                                             ; preds = %1786, %1788, %1779, %1781
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %3) #12
  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: mustprogress 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: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

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

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

declare i32 @s2n_security_rule_result_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_security_rule_result_init_output(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !17, i64 0}
!16 = !{!"s2n_cipher_preferences", !17, i64 0, !10, i64 8, !12, i64 16}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !10, i64 8}
!19 = !{!16, !12, i64 16}
!20 = !{!21, !7, i64 0}
!21 = !{!"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}
!22 = !{!21, !10, i64 8}
!23 = !{!21, !10, i64 16}
!24 = !{!21, !10, i64 24}
!25 = !{!21, !10, i64 32}
!26 = !{!21, !10, i64 40}
!27 = !{!21, !10, i64 48}
!28 = !{!21, !12, i64 56}
!29 = !{!30, !12, i64 0}
!30 = !{!"s2n_security_rule_result", !12, i64 0, !12, i64 1, !31, i64 8}
!31 = !{!"s2n_stuffer", !32, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!32 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!33 = !{i64 0, i64 1, !34, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 8, !9, i64 32, i64 8, !9, i64 40, i64 8, !9, i64 48, i64 8, !9, i64 56, i64 1, !11, i64 57, i64 2, !34}
!34 = !{!7, !7, i64 0}
!35 = !{!30, !6, i64 36}
!36 = !{!30, !6, i64 32}


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