; LLVM IR from aws/s2n-tls :: tests/unit (s2n_hkdf_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_debug_info = type { ptr, ptr }
%struct.hkdf_test_vector = type { i32, [80 x i8], i32, [80 x i8], i32, [80 x i8], i32, [64 x i8], i32, [82 x i8], i32 }
%struct.s2n_hmac_state = type { i32, i16, i32, i16, i8, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, [128 x i8], [64 x i8] }
%struct.s2n_hash_state = type { ptr, i32, i8, i64, %union.anon }
%union.anon = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { ptr, ptr }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [97 x i8], align 1
@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@.str.25 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [25 x i8], align 1
@tests = external hidden global <{ { i32, <{ [22 x i8], [58 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, <{ [32 x i8], [32 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, [80 x i8], i32, [80 x i8], i32, [80 x i8], i32, <{ [32 x i8], [32 x i8] }>, i32, [82 x i8], i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, <{ [32 x i8], [32 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [11 x i8], [69 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, <{ [20 x i8], [44 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, [80 x i8], i32, [80 x i8], i32, [80 x i8], i32, <{ [20 x i8], [44 x i8] }>, i32, [82 x i8], i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, <{ [20 x i8], [44 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, <{ [20 x i8], [44 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 }, %struct.hkdf_test_vector, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [11 x i8], [69 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 } }>, align 16

; 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 %struct.s2n_hmac_state, align 8
  %7 = alloca [64 x i8], align 16
  %8 = alloca [82 x i8], align 16
  %9 = alloca %struct.s2n_blob, align 8
  %10 = alloca %struct.s2n_blob, align 8
  %11 = alloca %struct.s2n_blob, align 8
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca %struct.s2n_blob, align 8
  %14 = alloca %struct.s2n_blob, align 8
  %15 = alloca %struct.s2n_blob, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i8, align 1
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i64, align 8
  %39 = alloca [10 x i8], align 1
  %40 = alloca i32, align 4
  %41 = alloca %struct.s2n_blob, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i64, align 8
  %46 = alloca [64 x i8], align 16
  %47 = alloca %struct.s2n_blob, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca [5101 x i8], align 16
  %51 = alloca %struct.s2n_blob, align 8
  %52 = alloca i32, align 4
  %53 = alloca %struct.s2n_blob, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = 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
  call void @llvm.lifetime.start.p0(i64 432, ptr %6) #9
  call void @llvm.memset.p0.i64(ptr align 8 %6, i8 0, i64 432, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %7) #9
  call void @llvm.memset.p0.i64(ptr align 16 %7, i8 0, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 82, ptr %8) #9
  call void @llvm.memset.p0.i64(ptr align 16 %8, i8 0, i64 82, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #9
  call void @llvm.memset.p0.i64(ptr align 8 %9, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #9
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #9
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #9
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #9
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #9
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #9
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 24, i1 false)
  br label %65

65:                                               ; preds = %2
  br label %66

66:                                               ; preds = %65
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %67 = load ptr, ptr @stdout, align 8, !tbaa !9
  %68 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef @.str, ptr noundef @.str.1) #9
  %69 = load ptr, ptr @stdout, align 8, !tbaa !9
  %70 = call i32 @fflush(ptr noundef %69)
  br label %71

71:                                               ; preds = %66
  %72 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %73 = icmp eq i32 %72, -1
  br i1 %73, label %74, label %127

74:                                               ; preds = %71
  br label %75

75:                                               ; preds = %74
  br label %76

76:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %77 = call ptr @__errno_location() #10
  %78 = load i32, ptr %77, align 4, !tbaa !5
  store i32 %78, ptr %16, align 4, !tbaa !5
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = call i32 @s2n_print_stacktrace(ptr noundef %79)
  %81 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %82 = trunc i8 %81 to i1
  br i1 %82, label %83, label %105

83:                                               ; preds = %76
  %84 = load ptr, ptr @stderr, align 8, !tbaa !9
  %85 = call i32 @fileno(ptr noundef %84) #9
  %86 = call i32 @isatty(i32 noundef %85) #9
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %105

88:                                               ; preds = %83
  %89 = load i32, ptr %16, align 4, !tbaa !5
  %90 = call ptr @__errno_location() #10
  store i32 %89, ptr %90, align 4, !tbaa !5
  %91 = load ptr, ptr @stderr, align 8, !tbaa !9
  %92 = load i32, ptr @test_count, align 4, !tbaa !5
  %93 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = call ptr @s2n_strerror(i32 noundef %94, ptr noundef @.str.4)
  %96 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call ptr @s2n_strerror_debug(i32 noundef %97, ptr noundef @.str.4)
  %99 = call ptr @__errno_location() #10
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = call ptr @strerror(i32 noundef %100) #9
  %102 = call ptr @__errno_location() #10
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %91, ptr noundef @.str.2, i32 noundef %92, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 417, ptr noundef %95, ptr noundef %98, ptr noundef %101, i32 noundef %103) #9
  br label %122

105:                                              ; preds = %83, %76
  %106 = load i32, ptr %16, align 4, !tbaa !5
  %107 = call ptr @__errno_location() #10
  store i32 %106, ptr %107, align 4, !tbaa !5
  %108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %109 = load i32, ptr @test_count, align 4, !tbaa !5
  %110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = call ptr @s2n_strerror(i32 noundef %111, ptr noundef @.str.4)
  %113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = call ptr @s2n_strerror_debug(i32 noundef %114, ptr noundef @.str.4)
  %116 = call ptr @__errno_location() #10
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = call ptr @strerror(i32 noundef %117) #9
  %119 = call ptr @__errno_location() #10
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %108, ptr noundef @.str.5, i32 noundef %109, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 417, ptr noundef %112, ptr noundef %115, ptr noundef %118, i32 noundef %120) #9
  br label %122

122:                                              ; preds = %105, %88
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %123

123:                                              ; preds = %122
  br label %124

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

125:                                              ; No predecessors!
  br label %126

126:                                              ; preds = %125
  br label %127

127:                                              ; preds = %126, %71
  br label %128

128:                                              ; preds = %127
  br label %129

129:                                              ; preds = %128
  br label %130

130:                                              ; preds = %129
  %131 = load i32, ptr @test_count, align 4, !tbaa !5
  %132 = add nsw i32 %131, 1
  store i32 %132, ptr @test_count, align 4, !tbaa !5
  %133 = call i32 @s2n_enable_atexit()
  %134 = icmp eq i32 %133, -1
  br i1 %134, label %135, label %188

135:                                              ; preds = %130
  br label %136

136:                                              ; preds = %135
  br label %137

137:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %138 = call ptr @__errno_location() #10
  %139 = load i32, ptr %138, align 4, !tbaa !5
  store i32 %139, ptr %17, align 4, !tbaa !5
  %140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %141 = call i32 @s2n_print_stacktrace(ptr noundef %140)
  %142 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %143 = trunc i8 %142 to i1
  br i1 %143, label %144, label %166

144:                                              ; preds = %137
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = call i32 @fileno(ptr noundef %145) #9
  %147 = call i32 @isatty(i32 noundef %146) #9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %149, label %166

149:                                              ; preds = %144
  %150 = load i32, ptr %17, align 4, !tbaa !5
  %151 = call ptr @__errno_location() #10
  store i32 %150, ptr %151, align 4, !tbaa !5
  %152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %153 = load i32, ptr @test_count, align 4, !tbaa !5
  %154 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = call ptr @s2n_strerror(i32 noundef %155, ptr noundef @.str.4)
  %157 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = call ptr @s2n_strerror_debug(i32 noundef %158, ptr noundef @.str.4)
  %160 = call ptr @__errno_location() #10
  %161 = load i32, ptr %160, align 4, !tbaa !5
  %162 = call ptr @strerror(i32 noundef %161) #9
  %163 = call ptr @__errno_location() #10
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %152, ptr noundef @.str.2, i32 noundef %153, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 417, ptr noundef %156, ptr noundef %159, ptr noundef %162, i32 noundef %164) #9
  br label %183

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

183:                                              ; preds = %166, %149
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %184

184:                                              ; preds = %183
  br label %185

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

186:                                              ; No predecessors!
  br label %187

187:                                              ; preds = %186
  br label %188

188:                                              ; preds = %187, %130
  br label %189

189:                                              ; preds = %188
  br label %190

190:                                              ; preds = %189
  br label %191

191:                                              ; preds = %190
  br label %192

192:                                              ; preds = %191
  br label %193

193:                                              ; preds = %192
  %194 = call i32 @s2n_init()
  %195 = icmp eq i32 %194, -1
  br i1 %195, label %196, label %249

196:                                              ; preds = %193
  br label %197

197:                                              ; preds = %196
  br label %198

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

205:                                              ; preds = %198
  %206 = load ptr, ptr @stderr, align 8, !tbaa !9
  %207 = call i32 @fileno(ptr noundef %206) #9
  %208 = call i32 @isatty(i32 noundef %207) #9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %227

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

227:                                              ; preds = %205, %198
  %228 = load i32, ptr %18, align 4, !tbaa !5
  %229 = call ptr @__errno_location() #10
  store i32 %228, ptr %229, align 4, !tbaa !5
  %230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %231 = load i32, ptr @test_count, align 4, !tbaa !5
  %232 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = call ptr @s2n_strerror(i32 noundef %233, ptr noundef @.str.4)
  %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_debug(i32 noundef %236, ptr noundef @.str.4)
  %238 = call ptr @__errno_location() #10
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call ptr @strerror(i32 noundef %239) #9
  %241 = call ptr @__errno_location() #10
  %242 = load i32, ptr %241, align 4, !tbaa !5
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %230, ptr noundef @.str.5, i32 noundef %231, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 417, ptr noundef %234, ptr noundef %237, ptr noundef %240, i32 noundef %242) #9
  br label %244

244:                                              ; preds = %227, %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %245

245:                                              ; preds = %244
  br label %246

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

247:                                              ; No predecessors!
  br label %248

248:                                              ; preds = %247
  br label %249

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

250:                                              ; preds = %249
  br label %251

251:                                              ; preds = %250
  br label %252

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252
  br label %254

254:                                              ; preds = %253
  %255 = load i32, ptr @test_count, align 4, !tbaa !5
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr @test_count, align 4, !tbaa !5
  %257 = call i32 (...) @s2n_disable_tls13_in_test()
  %258 = icmp eq i32 %257, -1
  br i1 %258, label %259, label %312

259:                                              ; preds = %254
  br label %260

260:                                              ; preds = %259
  br label %261

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

268:                                              ; preds = %261
  %269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %270 = call i32 @fileno(ptr noundef %269) #9
  %271 = call i32 @isatty(i32 noundef %270) #9
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %273, label %290

273:                                              ; preds = %268
  %274 = load i32, ptr %19, align 4, !tbaa !5
  %275 = call ptr @__errno_location() #10
  store i32 %274, ptr %275, align 4, !tbaa !5
  %276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %277 = load i32, ptr @test_count, align 4, !tbaa !5
  %278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = call ptr @s2n_strerror(i32 noundef %279, ptr noundef @.str.4)
  %281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = call ptr @s2n_strerror_debug(i32 noundef %282, ptr noundef @.str.4)
  %284 = call ptr @__errno_location() #10
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = call ptr @strerror(i32 noundef %285) #9
  %287 = call ptr @__errno_location() #10
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %276, ptr noundef @.str.2, i32 noundef %277, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 418, ptr noundef %280, ptr noundef %283, ptr noundef %286, i32 noundef %288) #9
  br label %307

290:                                              ; preds = %268, %261
  %291 = load i32, ptr %19, align 4, !tbaa !5
  %292 = call ptr @__errno_location() #10
  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() #10
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = call ptr @strerror(i32 noundef %302) #9
  %304 = call ptr @__errno_location() #10
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %293, ptr noundef @.str.5, i32 noundef %294, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 418, ptr noundef %297, ptr noundef %300, ptr noundef %303, i32 noundef %305) #9
  br label %307

307:                                              ; preds = %290, %273
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %308

308:                                              ; preds = %307
  br label %309

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

310:                                              ; No predecessors!
  br label %311

311:                                              ; preds = %310
  br label %312

312:                                              ; preds = %311, %254
  br label %313

313:                                              ; preds = %312
  br label %314

314:                                              ; preds = %313
  %315 = call zeroext i1 @s2n_is_in_fips_mode()
  br i1 %315, label %316, label %377

316:                                              ; preds = %314
  br label %317

317:                                              ; preds = %316
  %318 = load i32, ptr @test_count, align 4, !tbaa !5
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr @test_count, align 4, !tbaa !5
  %320 = call zeroext i1 (...) @s2n_libcrypto_supports_hkdf()
  br i1 %320, label %374, label %321

321:                                              ; preds = %317
  br label %322

322:                                              ; preds = %321
  br label %323

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

330:                                              ; preds = %323
  %331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %332 = call i32 @fileno(ptr noundef %331) #9
  %333 = call i32 @isatty(i32 noundef %332) #9
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %352

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

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

369:                                              ; preds = %352, %335
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %370

370:                                              ; preds = %369
  br label %371

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

372:                                              ; No predecessors!
  br label %373

373:                                              ; preds = %372
  br label %374

374:                                              ; preds = %373, %317
  br label %375

375:                                              ; preds = %374
  br label %376

376:                                              ; preds = %375
  br label %377

377:                                              ; preds = %376, %314
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr @test_count, align 4, !tbaa !5
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr @test_count, align 4, !tbaa !5
  %381 = call i32 @s2n_hmac_new(ptr noundef %6)
  %382 = icmp eq i32 %381, -1
  br i1 %382, label %383, label %436

383:                                              ; preds = %378
  br label %384

384:                                              ; preds = %383
  br label %385

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

392:                                              ; preds = %385
  %393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %394 = call i32 @fileno(ptr noundef %393) #9
  %395 = call i32 @isatty(i32 noundef %394) #9
  %396 = icmp ne i32 %395, 0
  br i1 %396, label %397, label %414

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

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

431:                                              ; preds = %414, %397
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %432

432:                                              ; preds = %431
  br label %433

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

434:                                              ; No predecessors!
  br label %435

435:                                              ; preds = %434
  br label %436

436:                                              ; preds = %435, %378
  br label %437

437:                                              ; preds = %436
  br label %438

438:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  store i8 0, ptr %22, align 1, !tbaa !15
  br label %439

439:                                              ; preds = %1297, %438
  %440 = load i8, ptr %22, align 1, !tbaa !15
  %441 = zext i8 %440 to i32
  %442 = icmp slt i32 %441, 12
  br i1 %442, label %444, label %443

443:                                              ; preds = %439
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  br label %1300

444:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %445 = load i8, ptr %22, align 1, !tbaa !15
  %446 = zext i8 %445 to i64
  %447 = getelementptr inbounds [12 x %struct.hkdf_test_vector], ptr @tests, i64 0, i64 %446
  store ptr %447, ptr %23, align 8, !tbaa !9
  br label %448

448:                                              ; preds = %444
  %449 = load i32, ptr @test_count, align 4, !tbaa !5
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr @test_count, align 4, !tbaa !5
  %451 = load ptr, ptr %23, align 8, !tbaa !9
  %452 = getelementptr inbounds %struct.hkdf_test_vector, ptr %451, i32 0, i32 1
  %453 = getelementptr inbounds [80 x i8], ptr %452, i64 0, i64 0
  %454 = load ptr, ptr %23, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.hkdf_test_vector, ptr %454, i32 0, i32 2
  %456 = load i32, ptr %455, align 4, !tbaa !16
  %457 = call i32 @s2n_blob_init(ptr noundef %9, ptr noundef %453, i32 noundef %456)
  %458 = icmp eq i32 %457, -1
  br i1 %458, label %459, label %512

459:                                              ; preds = %448
  br label %460

460:                                              ; preds = %459
  br label %461

461:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %462 = call ptr @__errno_location() #10
  %463 = load i32, ptr %462, align 4, !tbaa !5
  store i32 %463, ptr %24, align 4, !tbaa !5
  %464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %465 = call i32 @s2n_print_stacktrace(ptr noundef %464)
  %466 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %467 = trunc i8 %466 to i1
  br i1 %467, label %468, label %490

468:                                              ; preds = %461
  %469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %470 = call i32 @fileno(ptr noundef %469) #9
  %471 = call i32 @isatty(i32 noundef %470) #9
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %490

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

490:                                              ; preds = %468, %461
  %491 = load i32, ptr %24, align 4, !tbaa !5
  %492 = call ptr @__errno_location() #10
  store i32 %491, ptr %492, align 4, !tbaa !5
  %493 = load ptr, ptr @stderr, align 8, !tbaa !9
  %494 = load i32, ptr @test_count, align 4, !tbaa !5
  %495 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %496 = load i32, ptr %495, align 4, !tbaa !5
  %497 = call ptr @s2n_strerror(i32 noundef %496, ptr noundef @.str.4)
  %498 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %499 = load i32, ptr %498, align 4, !tbaa !5
  %500 = call ptr @s2n_strerror_debug(i32 noundef %499, ptr noundef @.str.4)
  %501 = call ptr @__errno_location() #10
  %502 = load i32, ptr %501, align 4, !tbaa !5
  %503 = call ptr @strerror(i32 noundef %502) #9
  %504 = call ptr @__errno_location() #10
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %493, ptr noundef @.str.5, i32 noundef %494, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 430, ptr noundef %497, ptr noundef %500, ptr noundef %503, i32 noundef %505) #9
  br label %507

507:                                              ; preds = %490, %473
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %508

508:                                              ; preds = %507
  br label %509

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

510:                                              ; No predecessors!
  br label %511

511:                                              ; preds = %510
  br label %512

512:                                              ; preds = %511, %448
  br label %513

513:                                              ; preds = %512
  br label %514

514:                                              ; preds = %513
  br label %515

515:                                              ; preds = %514
  %516 = load i32, ptr @test_count, align 4, !tbaa !5
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr @test_count, align 4, !tbaa !5
  %518 = load ptr, ptr %23, align 8, !tbaa !9
  %519 = getelementptr inbounds %struct.hkdf_test_vector, ptr %518, i32 0, i32 3
  %520 = getelementptr inbounds [80 x i8], ptr %519, i64 0, i64 0
  %521 = load ptr, ptr %23, align 8, !tbaa !9
  %522 = getelementptr inbounds %struct.hkdf_test_vector, ptr %521, i32 0, i32 4
  %523 = load i32, ptr %522, align 4, !tbaa !18
  %524 = call i32 @s2n_blob_init(ptr noundef %10, ptr noundef %520, i32 noundef %523)
  %525 = icmp eq i32 %524, -1
  br i1 %525, label %526, label %579

526:                                              ; preds = %515
  br label %527

527:                                              ; preds = %526
  br label %528

528:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %529 = call ptr @__errno_location() #10
  %530 = load i32, ptr %529, align 4, !tbaa !5
  store i32 %530, ptr %25, align 4, !tbaa !5
  %531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %532 = call i32 @s2n_print_stacktrace(ptr noundef %531)
  %533 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %534 = trunc i8 %533 to i1
  br i1 %534, label %535, label %557

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

540:                                              ; preds = %535
  %541 = load i32, ptr %25, align 4, !tbaa !5
  %542 = call ptr @__errno_location() #10
  store i32 %541, ptr %542, align 4, !tbaa !5
  %543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %544 = load i32, ptr @test_count, align 4, !tbaa !5
  %545 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %546 = load i32, ptr %545, align 4, !tbaa !5
  %547 = call ptr @s2n_strerror(i32 noundef %546, ptr noundef @.str.4)
  %548 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %549 = load i32, ptr %548, align 4, !tbaa !5
  %550 = call ptr @s2n_strerror_debug(i32 noundef %549, ptr noundef @.str.4)
  %551 = call ptr @__errno_location() #10
  %552 = load i32, ptr %551, align 4, !tbaa !5
  %553 = call ptr @strerror(i32 noundef %552) #9
  %554 = call ptr @__errno_location() #10
  %555 = load i32, ptr %554, align 4, !tbaa !5
  %556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %543, ptr noundef @.str.2, i32 noundef %544, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 431, ptr noundef %547, ptr noundef %550, ptr noundef %553, i32 noundef %555) #9
  br label %574

557:                                              ; preds = %535, %528
  %558 = load i32, ptr %25, align 4, !tbaa !5
  %559 = call ptr @__errno_location() #10
  store i32 %558, ptr %559, align 4, !tbaa !5
  %560 = load ptr, ptr @stderr, align 8, !tbaa !9
  %561 = load i32, ptr @test_count, align 4, !tbaa !5
  %562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = call ptr @s2n_strerror(i32 noundef %563, ptr noundef @.str.4)
  %565 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %566 = load i32, ptr %565, align 4, !tbaa !5
  %567 = call ptr @s2n_strerror_debug(i32 noundef %566, ptr noundef @.str.4)
  %568 = call ptr @__errno_location() #10
  %569 = load i32, ptr %568, align 4, !tbaa !5
  %570 = call ptr @strerror(i32 noundef %569) #9
  %571 = call ptr @__errno_location() #10
  %572 = load i32, ptr %571, align 4, !tbaa !5
  %573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %560, ptr noundef @.str.5, i32 noundef %561, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 431, ptr noundef %564, ptr noundef %567, ptr noundef %570, i32 noundef %572) #9
  br label %574

574:                                              ; preds = %557, %540
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %575

575:                                              ; preds = %574
  br label %576

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

577:                                              ; No predecessors!
  br label %578

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578, %515
  br label %580

580:                                              ; preds = %579
  br label %581

581:                                              ; preds = %580
  br label %582

582:                                              ; preds = %581
  %583 = load i32, ptr @test_count, align 4, !tbaa !5
  %584 = add nsw i32 %583, 1
  store i32 %584, ptr @test_count, align 4, !tbaa !5
  %585 = load ptr, ptr %23, align 8, !tbaa !9
  %586 = getelementptr inbounds %struct.hkdf_test_vector, ptr %585, i32 0, i32 5
  %587 = getelementptr inbounds [80 x i8], ptr %586, i64 0, i64 0
  %588 = load ptr, ptr %23, align 8, !tbaa !9
  %589 = getelementptr inbounds %struct.hkdf_test_vector, ptr %588, i32 0, i32 6
  %590 = load i32, ptr %589, align 4, !tbaa !19
  %591 = call i32 @s2n_blob_init(ptr noundef %11, ptr noundef %587, i32 noundef %590)
  %592 = icmp eq i32 %591, -1
  br i1 %592, label %593, label %646

593:                                              ; preds = %582
  br label %594

594:                                              ; preds = %593
  br label %595

595:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %596 = call ptr @__errno_location() #10
  %597 = load i32, ptr %596, align 4, !tbaa !5
  store i32 %597, ptr %26, align 4, !tbaa !5
  %598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %599 = call i32 @s2n_print_stacktrace(ptr noundef %598)
  %600 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %601 = trunc i8 %600 to i1
  br i1 %601, label %602, label %624

602:                                              ; preds = %595
  %603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %604 = call i32 @fileno(ptr noundef %603) #9
  %605 = call i32 @isatty(i32 noundef %604) #9
  %606 = icmp ne i32 %605, 0
  br i1 %606, label %607, label %624

607:                                              ; preds = %602
  %608 = load i32, ptr %26, align 4, !tbaa !5
  %609 = call ptr @__errno_location() #10
  store i32 %608, ptr %609, align 4, !tbaa !5
  %610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %611 = load i32, ptr @test_count, align 4, !tbaa !5
  %612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %613 = load i32, ptr %612, align 4, !tbaa !5
  %614 = call ptr @s2n_strerror(i32 noundef %613, ptr noundef @.str.4)
  %615 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %616 = load i32, ptr %615, align 4, !tbaa !5
  %617 = call ptr @s2n_strerror_debug(i32 noundef %616, ptr noundef @.str.4)
  %618 = call ptr @__errno_location() #10
  %619 = load i32, ptr %618, align 4, !tbaa !5
  %620 = call ptr @strerror(i32 noundef %619) #9
  %621 = call ptr @__errno_location() #10
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %623 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %610, ptr noundef @.str.2, i32 noundef %611, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 432, ptr noundef %614, ptr noundef %617, ptr noundef %620, i32 noundef %622) #9
  br label %641

624:                                              ; preds = %602, %595
  %625 = load i32, ptr %26, align 4, !tbaa !5
  %626 = call ptr @__errno_location() #10
  store i32 %625, ptr %626, align 4, !tbaa !5
  %627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %628 = load i32, ptr @test_count, align 4, !tbaa !5
  %629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %630 = load i32, ptr %629, align 4, !tbaa !5
  %631 = call ptr @s2n_strerror(i32 noundef %630, ptr noundef @.str.4)
  %632 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %633 = load i32, ptr %632, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror_debug(i32 noundef %633, ptr noundef @.str.4)
  %635 = call ptr @__errno_location() #10
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @strerror(i32 noundef %636) #9
  %638 = call ptr @__errno_location() #10
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %627, ptr noundef @.str.5, i32 noundef %628, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 432, ptr noundef %631, ptr noundef %634, ptr noundef %637, i32 noundef %639) #9
  br label %641

641:                                              ; preds = %624, %607
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %642

642:                                              ; preds = %641
  br label %643

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

644:                                              ; No predecessors!
  br label %645

645:                                              ; preds = %644
  br label %646

646:                                              ; preds = %645, %582
  br label %647

647:                                              ; preds = %646
  br label %648

648:                                              ; preds = %647
  br label %649

649:                                              ; preds = %648
  %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 ptr, ptr %23, align 8, !tbaa !9
  %653 = getelementptr inbounds %struct.hkdf_test_vector, ptr %652, i32 0, i32 7
  %654 = getelementptr inbounds [64 x i8], ptr %653, i64 0, i64 0
  %655 = load ptr, ptr %23, align 8, !tbaa !9
  %656 = getelementptr inbounds %struct.hkdf_test_vector, ptr %655, i32 0, i32 8
  %657 = load i32, ptr %656, align 4, !tbaa !20
  %658 = call i32 @s2n_blob_init(ptr noundef %12, ptr noundef %654, i32 noundef %657)
  %659 = icmp eq i32 %658, -1
  br i1 %659, label %660, label %713

660:                                              ; preds = %649
  br label %661

661:                                              ; preds = %660
  br label %662

662:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %663 = call ptr @__errno_location() #10
  %664 = load i32, ptr %663, align 4, !tbaa !5
  store i32 %664, ptr %27, align 4, !tbaa !5
  %665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %666 = call i32 @s2n_print_stacktrace(ptr noundef %665)
  %667 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %668 = trunc i8 %667 to i1
  br i1 %668, label %669, label %691

669:                                              ; preds = %662
  %670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %671 = call i32 @fileno(ptr noundef %670) #9
  %672 = call i32 @isatty(i32 noundef %671) #9
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %691

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

691:                                              ; preds = %669, %662
  %692 = load i32, ptr %27, align 4, !tbaa !5
  %693 = call ptr @__errno_location() #10
  store i32 %692, ptr %693, align 4, !tbaa !5
  %694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %695 = load i32, ptr @test_count, align 4, !tbaa !5
  %696 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %698 = call ptr @s2n_strerror(i32 noundef %697, ptr noundef @.str.4)
  %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_debug(i32 noundef %700, ptr noundef @.str.4)
  %702 = call ptr @__errno_location() #10
  %703 = load i32, ptr %702, align 4, !tbaa !5
  %704 = call ptr @strerror(i32 noundef %703) #9
  %705 = call ptr @__errno_location() #10
  %706 = load i32, ptr %705, align 4, !tbaa !5
  %707 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %694, ptr noundef @.str.5, i32 noundef %695, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 433, ptr noundef %698, ptr noundef %701, ptr noundef %704, i32 noundef %706) #9
  br label %708

708:                                              ; preds = %691, %674
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %709

709:                                              ; preds = %708
  br label %710

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

711:                                              ; No predecessors!
  br label %712

712:                                              ; preds = %711
  br label %713

713:                                              ; preds = %712, %649
  br label %714

714:                                              ; preds = %713
  br label %715

715:                                              ; preds = %714
  br label %716

716:                                              ; preds = %715
  %717 = load i32, ptr @test_count, align 4, !tbaa !5
  %718 = add nsw i32 %717, 1
  store i32 %718, ptr @test_count, align 4, !tbaa !5
  %719 = load ptr, ptr %23, align 8, !tbaa !9
  %720 = getelementptr inbounds %struct.hkdf_test_vector, ptr %719, i32 0, i32 9
  %721 = getelementptr inbounds [82 x i8], ptr %720, i64 0, i64 0
  %722 = load ptr, ptr %23, align 8, !tbaa !9
  %723 = getelementptr inbounds %struct.hkdf_test_vector, ptr %722, i32 0, i32 10
  %724 = load i32, ptr %723, align 4, !tbaa !21
  %725 = call i32 @s2n_blob_init(ptr noundef %13, ptr noundef %721, i32 noundef %724)
  %726 = icmp eq i32 %725, -1
  br i1 %726, label %727, label %780

727:                                              ; preds = %716
  br label %728

728:                                              ; preds = %727
  br label %729

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

736:                                              ; preds = %729
  %737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %738 = call i32 @fileno(ptr noundef %737) #9
  %739 = call i32 @isatty(i32 noundef %738) #9
  %740 = icmp ne i32 %739, 0
  br i1 %740, label %741, label %758

741:                                              ; preds = %736
  %742 = load i32, ptr %28, align 4, !tbaa !5
  %743 = call ptr @__errno_location() #10
  store i32 %742, ptr %743, align 4, !tbaa !5
  %744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %745 = load i32, ptr @test_count, align 4, !tbaa !5
  %746 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %747 = load i32, ptr %746, align 4, !tbaa !5
  %748 = call ptr @s2n_strerror(i32 noundef %747, ptr noundef @.str.4)
  %749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %750 = load i32, ptr %749, align 4, !tbaa !5
  %751 = call ptr @s2n_strerror_debug(i32 noundef %750, ptr noundef @.str.4)
  %752 = call ptr @__errno_location() #10
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = call ptr @strerror(i32 noundef %753) #9
  %755 = call ptr @__errno_location() #10
  %756 = load i32, ptr %755, align 4, !tbaa !5
  %757 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %744, ptr noundef @.str.2, i32 noundef %745, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 434, ptr noundef %748, ptr noundef %751, ptr noundef %754, i32 noundef %756) #9
  br label %775

758:                                              ; preds = %736, %729
  %759 = load i32, ptr %28, align 4, !tbaa !5
  %760 = call ptr @__errno_location() #10
  store i32 %759, ptr %760, align 4, !tbaa !5
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = load i32, ptr @test_count, align 4, !tbaa !5
  %763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %764 = load i32, ptr %763, align 4, !tbaa !5
  %765 = call ptr @s2n_strerror(i32 noundef %764, ptr noundef @.str.4)
  %766 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %767 = load i32, ptr %766, align 4, !tbaa !5
  %768 = call ptr @s2n_strerror_debug(i32 noundef %767, ptr noundef @.str.4)
  %769 = call ptr @__errno_location() #10
  %770 = load i32, ptr %769, align 4, !tbaa !5
  %771 = call ptr @strerror(i32 noundef %770) #9
  %772 = call ptr @__errno_location() #10
  %773 = load i32, ptr %772, align 4, !tbaa !5
  %774 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef @.str.5, i32 noundef %762, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 434, ptr noundef %765, ptr noundef %768, ptr noundef %771, i32 noundef %773) #9
  br label %775

775:                                              ; preds = %758, %741
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  br label %776

776:                                              ; preds = %775
  br label %777

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

778:                                              ; No predecessors!
  br label %779

779:                                              ; preds = %778
  br label %780

780:                                              ; preds = %779, %716
  br label %781

781:                                              ; preds = %780
  br label %782

782:                                              ; preds = %781
  br label %783

783:                                              ; preds = %782
  %784 = load i32, ptr @test_count, align 4, !tbaa !5
  %785 = add nsw i32 %784, 1
  store i32 %785, ptr @test_count, align 4, !tbaa !5
  %786 = getelementptr inbounds [64 x i8], ptr %7, i64 0, i64 0
  %787 = call i32 @s2n_blob_init(ptr noundef %14, ptr noundef %786, i32 noundef 64)
  %788 = icmp eq i32 %787, -1
  br i1 %788, label %789, label %842

789:                                              ; preds = %783
  br label %790

790:                                              ; preds = %789
  br label %791

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

798:                                              ; preds = %791
  %799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %800 = call i32 @fileno(ptr noundef %799) #9
  %801 = call i32 @isatty(i32 noundef %800) #9
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %820

803:                                              ; preds = %798
  %804 = load i32, ptr %29, align 4, !tbaa !5
  %805 = call ptr @__errno_location() #10
  store i32 %804, ptr %805, align 4, !tbaa !5
  %806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %807 = load i32, ptr @test_count, align 4, !tbaa !5
  %808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %809 = load i32, ptr %808, align 4, !tbaa !5
  %810 = call ptr @s2n_strerror(i32 noundef %809, ptr noundef @.str.4)
  %811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %812 = load i32, ptr %811, align 4, !tbaa !5
  %813 = call ptr @s2n_strerror_debug(i32 noundef %812, ptr noundef @.str.4)
  %814 = call ptr @__errno_location() #10
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = call ptr @strerror(i32 noundef %815) #9
  %817 = call ptr @__errno_location() #10
  %818 = load i32, ptr %817, align 4, !tbaa !5
  %819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %806, ptr noundef @.str.2, i32 noundef %807, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 435, ptr noundef %810, ptr noundef %813, ptr noundef %816, i32 noundef %818) #9
  br label %837

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

837:                                              ; preds = %820, %803
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %838

838:                                              ; preds = %837
  br label %839

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

840:                                              ; No predecessors!
  br label %841

841:                                              ; preds = %840
  br label %842

842:                                              ; preds = %841, %783
  br label %843

843:                                              ; preds = %842
  br label %844

844:                                              ; preds = %843
  br label %845

845:                                              ; preds = %844
  %846 = load i32, ptr @test_count, align 4, !tbaa !5
  %847 = add nsw i32 %846, 1
  store i32 %847, ptr @test_count, align 4, !tbaa !5
  %848 = getelementptr inbounds [82 x i8], ptr %8, i64 0, i64 0
  %849 = call i32 @s2n_blob_init(ptr noundef %15, ptr noundef %848, i32 noundef 82)
  %850 = icmp eq i32 %849, -1
  br i1 %850, label %851, label %904

851:                                              ; preds = %845
  br label %852

852:                                              ; preds = %851
  br label %853

853:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  %854 = call ptr @__errno_location() #10
  %855 = load i32, ptr %854, align 4, !tbaa !5
  store i32 %855, ptr %30, align 4, !tbaa !5
  %856 = load ptr, ptr @stderr, align 8, !tbaa !9
  %857 = call i32 @s2n_print_stacktrace(ptr noundef %856)
  %858 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %859 = trunc i8 %858 to i1
  br i1 %859, label %860, label %882

860:                                              ; preds = %853
  %861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %862 = call i32 @fileno(ptr noundef %861) #9
  %863 = call i32 @isatty(i32 noundef %862) #9
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %865, label %882

865:                                              ; preds = %860
  %866 = load i32, ptr %30, align 4, !tbaa !5
  %867 = call ptr @__errno_location() #10
  store i32 %866, ptr %867, align 4, !tbaa !5
  %868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %869 = load i32, ptr @test_count, align 4, !tbaa !5
  %870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %871 = load i32, ptr %870, align 4, !tbaa !5
  %872 = call ptr @s2n_strerror(i32 noundef %871, ptr noundef @.str.4)
  %873 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %874 = load i32, ptr %873, align 4, !tbaa !5
  %875 = call ptr @s2n_strerror_debug(i32 noundef %874, ptr noundef @.str.4)
  %876 = call ptr @__errno_location() #10
  %877 = load i32, ptr %876, align 4, !tbaa !5
  %878 = call ptr @strerror(i32 noundef %877) #9
  %879 = call ptr @__errno_location() #10
  %880 = load i32, ptr %879, align 4, !tbaa !5
  %881 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %868, ptr noundef @.str.2, i32 noundef %869, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 436, ptr noundef %872, ptr noundef %875, ptr noundef %878, i32 noundef %880) #9
  br label %899

882:                                              ; preds = %860, %853
  %883 = load i32, ptr %30, align 4, !tbaa !5
  %884 = call ptr @__errno_location() #10
  store i32 %883, ptr %884, align 4, !tbaa !5
  %885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %886 = load i32, ptr @test_count, align 4, !tbaa !5
  %887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %888 = load i32, ptr %887, align 4, !tbaa !5
  %889 = call ptr @s2n_strerror(i32 noundef %888, ptr noundef @.str.4)
  %890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %891 = load i32, ptr %890, align 4, !tbaa !5
  %892 = call ptr @s2n_strerror_debug(i32 noundef %891, ptr noundef @.str.4)
  %893 = call ptr @__errno_location() #10
  %894 = load i32, ptr %893, align 4, !tbaa !5
  %895 = call ptr @strerror(i32 noundef %894) #9
  %896 = call ptr @__errno_location() #10
  %897 = load i32, ptr %896, align 4, !tbaa !5
  %898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %885, ptr noundef @.str.5, i32 noundef %886, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 436, ptr noundef %889, ptr noundef %892, ptr noundef %895, i32 noundef %897) #9
  br label %899

899:                                              ; preds = %882, %865
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  br label %900

900:                                              ; preds = %899
  br label %901

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

902:                                              ; No predecessors!
  br label %903

903:                                              ; preds = %902
  br label %904

904:                                              ; preds = %903, %845
  br label %905

905:                                              ; preds = %904
  br label %906

906:                                              ; preds = %905
  br label %907

907:                                              ; preds = %906
  %908 = load i32, ptr @test_count, align 4, !tbaa !5
  %909 = add nsw i32 %908, 1
  store i32 %909, ptr @test_count, align 4, !tbaa !5
  %910 = load ptr, ptr %23, align 8, !tbaa !9
  %911 = getelementptr inbounds %struct.hkdf_test_vector, ptr %910, i32 0, i32 0
  %912 = load i32, ptr %911, align 4, !tbaa !22
  %913 = call i32 @s2n_hkdf_extract(ptr noundef %6, i32 noundef %912, ptr noundef %10, ptr noundef %9, ptr noundef %14)
  %914 = icmp eq i32 %913, -1
  br i1 %914, label %915, label %968

915:                                              ; preds = %907
  br label %916

916:                                              ; preds = %915
  br label %917

917:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %918 = call ptr @__errno_location() #10
  %919 = load i32, ptr %918, align 4, !tbaa !5
  store i32 %919, ptr %31, align 4, !tbaa !5
  %920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %921 = call i32 @s2n_print_stacktrace(ptr noundef %920)
  %922 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %923 = trunc i8 %922 to i1
  br i1 %923, label %924, label %946

924:                                              ; preds = %917
  %925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %926 = call i32 @fileno(ptr noundef %925) #9
  %927 = call i32 @isatty(i32 noundef %926) #9
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %946

929:                                              ; preds = %924
  %930 = load i32, ptr %31, align 4, !tbaa !5
  %931 = call ptr @__errno_location() #10
  store i32 %930, ptr %931, align 4, !tbaa !5
  %932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %935 = load i32, ptr %934, align 4, !tbaa !5
  %936 = call ptr @s2n_strerror(i32 noundef %935, ptr noundef @.str.4)
  %937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %938 = load i32, ptr %937, align 4, !tbaa !5
  %939 = call ptr @s2n_strerror_debug(i32 noundef %938, ptr noundef @.str.4)
  %940 = call ptr @__errno_location() #10
  %941 = load i32, ptr %940, align 4, !tbaa !5
  %942 = call ptr @strerror(i32 noundef %941) #9
  %943 = call ptr @__errno_location() #10
  %944 = load i32, ptr %943, align 4, !tbaa !5
  %945 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %932, ptr noundef @.str.2, i32 noundef %933, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 438, ptr noundef %936, ptr noundef %939, ptr noundef %942, i32 noundef %944) #9
  br label %963

946:                                              ; preds = %924, %917
  %947 = load i32, ptr %31, align 4, !tbaa !5
  %948 = call ptr @__errno_location() #10
  store i32 %947, ptr %948, align 4, !tbaa !5
  %949 = load ptr, ptr @stderr, align 8, !tbaa !9
  %950 = load i32, ptr @test_count, align 4, !tbaa !5
  %951 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %952 = load i32, ptr %951, align 4, !tbaa !5
  %953 = call ptr @s2n_strerror(i32 noundef %952, ptr noundef @.str.4)
  %954 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %955 = load i32, ptr %954, align 4, !tbaa !5
  %956 = call ptr @s2n_strerror_debug(i32 noundef %955, ptr noundef @.str.4)
  %957 = call ptr @__errno_location() #10
  %958 = load i32, ptr %957, align 4, !tbaa !5
  %959 = call ptr @strerror(i32 noundef %958) #9
  %960 = call ptr @__errno_location() #10
  %961 = load i32, ptr %960, align 4, !tbaa !5
  %962 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %949, ptr noundef @.str.5, i32 noundef %950, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 438, ptr noundef %953, ptr noundef %956, ptr noundef %959, i32 noundef %961) #9
  br label %963

963:                                              ; preds = %946, %929
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %964

964:                                              ; preds = %963
  br label %965

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

966:                                              ; No predecessors!
  br label %967

967:                                              ; preds = %966
  br label %968

968:                                              ; preds = %967, %907
  br label %969

969:                                              ; preds = %968
  br label %970

970:                                              ; preds = %969
  br label %971

971:                                              ; preds = %970
  %972 = load i32, ptr @test_count, align 4, !tbaa !5
  %973 = add nsw i32 %972, 1
  store i32 %973, ptr @test_count, align 4, !tbaa !5
  %974 = getelementptr inbounds [64 x i8], ptr %7, i64 0, i64 0
  %975 = getelementptr inbounds %struct.s2n_blob, ptr %12, i32 0, i32 0
  %976 = load ptr, ptr %975, align 8, !tbaa !23
  %977 = getelementptr inbounds %struct.s2n_blob, ptr %12, i32 0, i32 1
  %978 = load i32, ptr %977, align 8, !tbaa !25
  %979 = zext i32 %978 to i64
  %980 = call i32 @memcmp(ptr noundef %974, ptr noundef %976, i64 noundef %979) #12
  %981 = icmp eq i32 %980, 0
  br i1 %981, label %1035, label %982

982:                                              ; preds = %971
  br label %983

983:                                              ; preds = %982
  br label %984

984:                                              ; preds = %983
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %985 = call ptr @__errno_location() #10
  %986 = load i32, ptr %985, align 4, !tbaa !5
  store i32 %986, ptr %32, align 4, !tbaa !5
  %987 = load ptr, ptr @stderr, align 8, !tbaa !9
  %988 = call i32 @s2n_print_stacktrace(ptr noundef %987)
  %989 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %990 = trunc i8 %989 to i1
  br i1 %990, label %991, label %1013

991:                                              ; preds = %984
  %992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %993 = call i32 @fileno(ptr noundef %992) #9
  %994 = call i32 @isatty(i32 noundef %993) #9
  %995 = icmp ne i32 %994, 0
  br i1 %995, label %996, label %1013

996:                                              ; preds = %991
  %997 = load i32, ptr %32, align 4, !tbaa !5
  %998 = call ptr @__errno_location() #10
  store i32 %997, ptr %998, align 4, !tbaa !5
  %999 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1000 = load i32, ptr @test_count, align 4, !tbaa !5
  %1001 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1002 = load i32, ptr %1001, align 4, !tbaa !5
  %1003 = call ptr @s2n_strerror(i32 noundef %1002, ptr noundef @.str.4)
  %1004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1005 = load i32, ptr %1004, align 4, !tbaa !5
  %1006 = call ptr @s2n_strerror_debug(i32 noundef %1005, ptr noundef @.str.4)
  %1007 = call ptr @__errno_location() #10
  %1008 = load i32, ptr %1007, align 4, !tbaa !5
  %1009 = call ptr @strerror(i32 noundef %1008) #9
  %1010 = call ptr @__errno_location() #10
  %1011 = load i32, ptr %1010, align 4, !tbaa !5
  %1012 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %999, ptr noundef @.str.2, i32 noundef %1000, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 439, ptr noundef %1003, ptr noundef %1006, ptr noundef %1009, i32 noundef %1011) #9
  br label %1030

1013:                                             ; preds = %991, %984
  %1014 = load i32, ptr %32, align 4, !tbaa !5
  %1015 = call ptr @__errno_location() #10
  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() #10
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call ptr @strerror(i32 noundef %1025) #9
  %1027 = call ptr @__errno_location() #10
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  %1029 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1016, ptr noundef @.str.5, i32 noundef %1017, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 439, ptr noundef %1020, ptr noundef %1023, ptr noundef %1026, i32 noundef %1028) #9
  br label %1030

1030:                                             ; preds = %1013, %996
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

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

1033:                                             ; No predecessors!
  br label %1034

1034:                                             ; preds = %1033
  br label %1035

1035:                                             ; preds = %1034, %971
  br label %1036

1036:                                             ; preds = %1035
  br label %1037

1037:                                             ; preds = %1036
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #9
  store i8 0, ptr %33, align 1, !tbaa !15
  br label %1038

1038:                                             ; preds = %1037
  %1039 = load i32, ptr @test_count, align 4, !tbaa !5
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr @test_count, align 4, !tbaa !5
  %1041 = load ptr, ptr %23, align 8, !tbaa !9
  %1042 = getelementptr inbounds %struct.hkdf_test_vector, ptr %1041, i32 0, i32 0
  %1043 = load i32, ptr %1042, align 4, !tbaa !22
  %1044 = call i32 @s2n_hmac_digest_size(i32 noundef %1043, ptr noundef %33)
  %1045 = icmp eq i32 %1044, -1
  br i1 %1045, label %1046, label %1099

1046:                                             ; preds = %1038
  br label %1047

1047:                                             ; preds = %1046
  br label %1048

1048:                                             ; preds = %1047
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %1049 = call ptr @__errno_location() #10
  %1050 = load i32, ptr %1049, align 4, !tbaa !5
  store i32 %1050, ptr %34, align 4, !tbaa !5
  %1051 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1052 = call i32 @s2n_print_stacktrace(ptr noundef %1051)
  %1053 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1055, label %1077

1055:                                             ; preds = %1048
  %1056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1057 = call i32 @fileno(ptr noundef %1056) #9
  %1058 = call i32 @isatty(i32 noundef %1057) #9
  %1059 = icmp ne i32 %1058, 0
  br i1 %1059, label %1060, label %1077

1060:                                             ; preds = %1055
  %1061 = load i32, ptr %34, align 4, !tbaa !5
  %1062 = call ptr @__errno_location() #10
  store i32 %1061, ptr %1062, align 4, !tbaa !5
  %1063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1064 = load i32, ptr @test_count, align 4, !tbaa !5
  %1065 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1066 = load i32, ptr %1065, align 4, !tbaa !5
  %1067 = call ptr @s2n_strerror(i32 noundef %1066, ptr noundef @.str.4)
  %1068 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1069 = load i32, ptr %1068, align 4, !tbaa !5
  %1070 = call ptr @s2n_strerror_debug(i32 noundef %1069, ptr noundef @.str.4)
  %1071 = call ptr @__errno_location() #10
  %1072 = load i32, ptr %1071, align 4, !tbaa !5
  %1073 = call ptr @strerror(i32 noundef %1072) #9
  %1074 = call ptr @__errno_location() #10
  %1075 = load i32, ptr %1074, align 4, !tbaa !5
  %1076 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1063, ptr noundef @.str.2, i32 noundef %1064, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 443, ptr noundef %1067, ptr noundef %1070, ptr noundef %1073, i32 noundef %1075) #9
  br label %1094

1077:                                             ; preds = %1055, %1048
  %1078 = load i32, ptr %34, align 4, !tbaa !5
  %1079 = call ptr @__errno_location() #10
  store i32 %1078, ptr %1079, align 4, !tbaa !5
  %1080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1081 = load i32, ptr @test_count, align 4, !tbaa !5
  %1082 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1083 = load i32, ptr %1082, align 4, !tbaa !5
  %1084 = call ptr @s2n_strerror(i32 noundef %1083, ptr noundef @.str.4)
  %1085 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1086 = load i32, ptr %1085, align 4, !tbaa !5
  %1087 = call ptr @s2n_strerror_debug(i32 noundef %1086, ptr noundef @.str.4)
  %1088 = call ptr @__errno_location() #10
  %1089 = load i32, ptr %1088, align 4, !tbaa !5
  %1090 = call ptr @strerror(i32 noundef %1089) #9
  %1091 = call ptr @__errno_location() #10
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  %1093 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1080, ptr noundef @.str.5, i32 noundef %1081, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 443, ptr noundef %1084, ptr noundef %1087, ptr noundef %1090, i32 noundef %1092) #9
  br label %1094

1094:                                             ; preds = %1077, %1060
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %1095

1095:                                             ; preds = %1094
  br label %1096

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

1097:                                             ; No predecessors!
  br label %1098

1098:                                             ; preds = %1097
  br label %1099

1099:                                             ; preds = %1098, %1038
  br label %1100

1100:                                             ; preds = %1099
  br label %1101

1101:                                             ; preds = %1100
  br label %1102

1102:                                             ; preds = %1101
  %1103 = load i32, ptr @test_count, align 4, !tbaa !5
  %1104 = add nsw i32 %1103, 1
  store i32 %1104, ptr @test_count, align 4, !tbaa !5
  %1105 = getelementptr inbounds %struct.s2n_blob, ptr %14, i32 0, i32 1
  %1106 = load i32, ptr %1105, align 8, !tbaa !25
  %1107 = load i8, ptr %33, align 1, !tbaa !15
  %1108 = zext i8 %1107 to i32
  %1109 = icmp eq i32 %1106, %1108
  br i1 %1109, label %1163, label %1110

1110:                                             ; preds = %1102
  br label %1111

1111:                                             ; preds = %1110
  br label %1112

1112:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %1113 = call ptr @__errno_location() #10
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  store i32 %1114, ptr %35, align 4, !tbaa !5
  %1115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1116 = call i32 @s2n_print_stacktrace(ptr noundef %1115)
  %1117 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1119, label %1141

1119:                                             ; preds = %1112
  %1120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1121 = call i32 @fileno(ptr noundef %1120) #9
  %1122 = call i32 @isatty(i32 noundef %1121) #9
  %1123 = icmp ne i32 %1122, 0
  br i1 %1123, label %1124, label %1141

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

1141:                                             ; preds = %1119, %1112
  %1142 = load i32, ptr %35, align 4, !tbaa !5
  %1143 = call ptr @__errno_location() #10
  store i32 %1142, ptr %1143, 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 @.str.4)
  %1149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1150 = load i32, ptr %1149, align 4, !tbaa !5
  %1151 = call ptr @s2n_strerror_debug(i32 noundef %1150, ptr noundef @.str.4)
  %1152 = call ptr @__errno_location() #10
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  %1154 = call ptr @strerror(i32 noundef %1153) #9
  %1155 = call ptr @__errno_location() #10
  %1156 = load i32, ptr %1155, align 4, !tbaa !5
  %1157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1144, ptr noundef @.str.5, i32 noundef %1145, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 444, ptr noundef %1148, ptr noundef %1151, ptr noundef %1154, i32 noundef %1156) #9
  br label %1158

1158:                                             ; preds = %1141, %1124
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  br label %1159

1159:                                             ; preds = %1158
  br label %1160

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

1161:                                             ; No predecessors!
  br label %1162

1162:                                             ; preds = %1161
  br label %1163

1163:                                             ; preds = %1162, %1102
  br label %1164

1164:                                             ; preds = %1163
  br label %1165

1165:                                             ; preds = %1164
  br label %1166

1166:                                             ; preds = %1165
  %1167 = load i32, ptr @test_count, align 4, !tbaa !5
  %1168 = add nsw i32 %1167, 1
  store i32 %1168, ptr @test_count, align 4, !tbaa !5
  %1169 = load ptr, ptr %23, align 8, !tbaa !9
  %1170 = getelementptr inbounds %struct.hkdf_test_vector, ptr %1169, i32 0, i32 0
  %1171 = load i32, ptr %1170, align 4, !tbaa !22
  %1172 = call i32 @s2n_hkdf(ptr noundef %6, i32 noundef %1171, ptr noundef %10, ptr noundef %9, ptr noundef %11, ptr noundef %15)
  %1173 = icmp eq i32 %1172, -1
  br i1 %1173, label %1174, label %1227

1174:                                             ; preds = %1166
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1175
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %1177 = call ptr @__errno_location() #10
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  store i32 %1178, ptr %36, align 4, !tbaa !5
  %1179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1180 = call i32 @s2n_print_stacktrace(ptr noundef %1179)
  %1181 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1182 = trunc i8 %1181 to i1
  br i1 %1182, label %1183, label %1205

1183:                                             ; preds = %1176
  %1184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1185 = call i32 @fileno(ptr noundef %1184) #9
  %1186 = call i32 @isatty(i32 noundef %1185) #9
  %1187 = icmp ne i32 %1186, 0
  br i1 %1187, label %1188, label %1205

1188:                                             ; preds = %1183
  %1189 = load i32, ptr %36, align 4, !tbaa !5
  %1190 = call ptr @__errno_location() #10
  store i32 %1189, ptr %1190, align 4, !tbaa !5
  %1191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1192 = load i32, ptr @test_count, align 4, !tbaa !5
  %1193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1194 = load i32, ptr %1193, align 4, !tbaa !5
  %1195 = call ptr @s2n_strerror(i32 noundef %1194, ptr noundef @.str.4)
  %1196 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1197 = load i32, ptr %1196, align 4, !tbaa !5
  %1198 = call ptr @s2n_strerror_debug(i32 noundef %1197, ptr noundef @.str.4)
  %1199 = call ptr @__errno_location() #10
  %1200 = load i32, ptr %1199, align 4, !tbaa !5
  %1201 = call ptr @strerror(i32 noundef %1200) #9
  %1202 = call ptr @__errno_location() #10
  %1203 = load i32, ptr %1202, align 4, !tbaa !5
  %1204 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1191, ptr noundef @.str.2, i32 noundef %1192, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 446, ptr noundef %1195, ptr noundef %1198, ptr noundef %1201, i32 noundef %1203) #9
  br label %1222

1205:                                             ; preds = %1183, %1176
  %1206 = load i32, ptr %36, align 4, !tbaa !5
  %1207 = call ptr @__errno_location() #10
  store i32 %1206, ptr %1207, align 4, !tbaa !5
  %1208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1209 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1211, ptr noundef @.str.4)
  %1213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1214 = load i32, ptr %1213, align 4, !tbaa !5
  %1215 = call ptr @s2n_strerror_debug(i32 noundef %1214, ptr noundef @.str.4)
  %1216 = call ptr @__errno_location() #10
  %1217 = load i32, ptr %1216, align 4, !tbaa !5
  %1218 = call ptr @strerror(i32 noundef %1217) #9
  %1219 = call ptr @__errno_location() #10
  %1220 = load i32, ptr %1219, align 4, !tbaa !5
  %1221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1208, ptr noundef @.str.5, i32 noundef %1209, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 446, ptr noundef %1212, ptr noundef %1215, ptr noundef %1218, i32 noundef %1220) #9
  br label %1222

1222:                                             ; preds = %1205, %1188
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %1223

1223:                                             ; preds = %1222
  br label %1224

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

1225:                                             ; No predecessors!
  br label %1226

1226:                                             ; preds = %1225
  br label %1227

1227:                                             ; preds = %1226, %1166
  br label %1228

1228:                                             ; preds = %1227
  br label %1229

1229:                                             ; preds = %1228
  br label %1230

1230:                                             ; preds = %1229
  %1231 = load i32, ptr @test_count, align 4, !tbaa !5
  %1232 = add nsw i32 %1231, 1
  store i32 %1232, ptr @test_count, align 4, !tbaa !5
  %1233 = getelementptr inbounds [82 x i8], ptr %8, i64 0, i64 0
  %1234 = getelementptr inbounds %struct.s2n_blob, ptr %13, i32 0, i32 0
  %1235 = load ptr, ptr %1234, align 8, !tbaa !23
  %1236 = getelementptr inbounds %struct.s2n_blob, ptr %13, i32 0, i32 1
  %1237 = load i32, ptr %1236, align 8, !tbaa !25
  %1238 = zext i32 %1237 to i64
  %1239 = call i32 @memcmp(ptr noundef %1233, ptr noundef %1235, i64 noundef %1238) #12
  %1240 = icmp eq i32 %1239, 0
  br i1 %1240, label %1294, label %1241

1241:                                             ; preds = %1230
  br label %1242

1242:                                             ; preds = %1241
  br label %1243

1243:                                             ; preds = %1242
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  %1244 = call ptr @__errno_location() #10
  %1245 = load i32, ptr %1244, align 4, !tbaa !5
  store i32 %1245, ptr %37, align 4, !tbaa !5
  %1246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1247 = call i32 @s2n_print_stacktrace(ptr noundef %1246)
  %1248 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1249 = trunc i8 %1248 to i1
  br i1 %1249, label %1250, label %1272

1250:                                             ; preds = %1243
  %1251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1252 = call i32 @fileno(ptr noundef %1251) #9
  %1253 = call i32 @isatty(i32 noundef %1252) #9
  %1254 = icmp ne i32 %1253, 0
  br i1 %1254, label %1255, label %1272

1255:                                             ; preds = %1250
  %1256 = load i32, ptr %37, align 4, !tbaa !5
  %1257 = call ptr @__errno_location() #10
  store i32 %1256, ptr %1257, align 4, !tbaa !5
  %1258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1259 = load i32, ptr @test_count, align 4, !tbaa !5
  %1260 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1261 = load i32, ptr %1260, align 4, !tbaa !5
  %1262 = call ptr @s2n_strerror(i32 noundef %1261, ptr noundef @.str.4)
  %1263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  %1265 = call ptr @s2n_strerror_debug(i32 noundef %1264, ptr noundef @.str.4)
  %1266 = call ptr @__errno_location() #10
  %1267 = load i32, ptr %1266, align 4, !tbaa !5
  %1268 = call ptr @strerror(i32 noundef %1267) #9
  %1269 = call ptr @__errno_location() #10
  %1270 = load i32, ptr %1269, align 4, !tbaa !5
  %1271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1258, ptr noundef @.str.2, i32 noundef %1259, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 447, ptr noundef %1262, ptr noundef %1265, ptr noundef %1268, i32 noundef %1270) #9
  br label %1289

1272:                                             ; preds = %1250, %1243
  %1273 = load i32, ptr %37, align 4, !tbaa !5
  %1274 = call ptr @__errno_location() #10
  store i32 %1273, ptr %1274, align 4, !tbaa !5
  %1275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1276 = load i32, ptr @test_count, align 4, !tbaa !5
  %1277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1278 = load i32, ptr %1277, align 4, !tbaa !5
  %1279 = call ptr @s2n_strerror(i32 noundef %1278, ptr noundef @.str.4)
  %1280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1281 = load i32, ptr %1280, align 4, !tbaa !5
  %1282 = call ptr @s2n_strerror_debug(i32 noundef %1281, ptr noundef @.str.4)
  %1283 = call ptr @__errno_location() #10
  %1284 = load i32, ptr %1283, align 4, !tbaa !5
  %1285 = call ptr @strerror(i32 noundef %1284) #9
  %1286 = call ptr @__errno_location() #10
  %1287 = load i32, ptr %1286, align 4, !tbaa !5
  %1288 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1275, ptr noundef @.str.5, i32 noundef %1276, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 447, ptr noundef %1279, ptr noundef %1282, ptr noundef %1285, i32 noundef %1287) #9
  br label %1289

1289:                                             ; preds = %1272, %1255
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %1290

1290:                                             ; preds = %1289
  br label %1291

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

1292:                                             ; No predecessors!
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293, %1230
  br label %1295

1295:                                             ; preds = %1294
  br label %1296

1296:                                             ; preds = %1295
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %1297

1297:                                             ; preds = %1296
  %1298 = load i8, ptr %22, align 1, !tbaa !15
  %1299 = add i8 %1298, 1
  store i8 %1299, ptr %22, align 1, !tbaa !15
  br label %439, !llvm.loop !26

1300:                                             ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  store i64 10, ptr %38, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 10, ptr %39) #9
  call void @llvm.memset.p0.i64(ptr align 1 %39, i8 0, i64 10, i1 false)
  br label %1301

1301:                                             ; preds = %1300
  %1302 = load i64, ptr %38, align 8, !tbaa !28
  %1303 = icmp ule i64 %1302, 10
  br i1 %1303, label %1337, label %1304

1304:                                             ; preds = %1301
  br label %1305

1305:                                             ; preds = %1304
  br label %1306

1306:                                             ; preds = %1305
  %1307 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1308 = getelementptr inbounds %struct.s2n_debug_info, ptr %1307, i32 0, i32 0
  store ptr @.str.24, ptr %1308, align 8, !tbaa !30
  %1309 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1310 = getelementptr inbounds %struct.s2n_debug_info, ptr %1309, i32 0, i32 0
  %1311 = load ptr, ptr %1310, align 8, !tbaa !30
  %1312 = getelementptr inbounds i8, ptr %1311, i64 21
  %1313 = call ptr @strrchr(ptr noundef %1312, i32 noundef 47) #12
  %1314 = icmp ne ptr %1313, null
  br i1 %1314, label %1315, label %1322

1315:                                             ; preds = %1306
  %1316 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1317 = getelementptr inbounds %struct.s2n_debug_info, ptr %1316, i32 0, i32 0
  %1318 = load ptr, ptr %1317, align 8, !tbaa !30
  %1319 = getelementptr inbounds i8, ptr %1318, i64 21
  %1320 = call ptr @strrchr(ptr noundef %1319, i32 noundef 47) #12
  %1321 = getelementptr inbounds i8, ptr %1320, i64 1
  br label %1327

1322:                                             ; preds = %1306
  %1323 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1324 = getelementptr inbounds %struct.s2n_debug_info, ptr %1323, i32 0, i32 0
  %1325 = load ptr, ptr %1324, align 8, !tbaa !30
  %1326 = getelementptr inbounds i8, ptr %1325, i64 21
  br label %1327

1327:                                             ; preds = %1322, %1315
  %1328 = phi ptr [ %1321, %1315 ], [ %1326, %1322 ]
  %1329 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1330 = getelementptr inbounds %struct.s2n_debug_info, ptr %1329, i32 0, i32 1
  store ptr %1328, ptr %1330, align 8, !tbaa !32
  %1331 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1331, align 4, !tbaa !5
  %1332 = call i32 @s2n_calculate_stacktrace()
  br label %1333

1333:                                             ; preds = %1327
  br label %1334

1334:                                             ; preds = %1333
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %40, align 4
  br label %1660

1335:                                             ; No predecessors!
  br label %1336

1336:                                             ; preds = %1335
  br label %1337

1337:                                             ; preds = %1336, %1301
  br label %1338

1338:                                             ; preds = %1337
  br label %1339

1339:                                             ; preds = %1338
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #9
  call void @llvm.memset.p0.i64(ptr align 8 %41, i8 0, i64 24, i1 false)
  br label %1340

1340:                                             ; preds = %1339
  %1341 = getelementptr inbounds [10 x i8], ptr %39, i64 0, i64 0
  %1342 = load i64, ptr %38, align 8, !tbaa !28
  %1343 = trunc i64 %1342 to i32
  %1344 = call i32 @s2n_blob_init(ptr noundef %41, ptr noundef %1341, i32 noundef %1343)
  %1345 = icmp sgt i32 %1344, -1
  br i1 %1345, label %1347, label %1346

1346:                                             ; preds = %1340
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %40, align 4
  br label %1659

1347:                                             ; preds = %1340
  br label %1348

1348:                                             ; preds = %1347
  br label %1349

1349:                                             ; preds = %1348
  br label %1350

1350:                                             ; preds = %1349
  br label %1351

1351:                                             ; preds = %1350
  br label %1352

1352:                                             ; preds = %1351
  %1353 = load i32, ptr @test_count, align 4, !tbaa !5
  %1354 = add nsw i32 %1353, 1
  store i32 %1354, ptr @test_count, align 4, !tbaa !5
  %1355 = call i32 @s2n_hkdf_extract(ptr noundef %6, i32 noundef 6, ptr noundef %10, ptr noundef %9, ptr noundef %41)
  %1356 = icmp eq i32 %1355, -1
  br i1 %1356, label %1410, label %1357

1357:                                             ; preds = %1352
  br label %1358

1358:                                             ; preds = %1357
  br label %1359

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

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

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

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

1405:                                             ; preds = %1388, %1371
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

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

1408:                                             ; No predecessors!
  br label %1409

1409:                                             ; preds = %1408
  br label %1410

1410:                                             ; preds = %1409, %1352
  br label %1411

1411:                                             ; preds = %1410
  br label %1412

1412:                                             ; preds = %1411
  br label %1413

1413:                                             ; preds = %1412
  %1414 = load i32, ptr @test_count, align 4, !tbaa !5
  %1415 = add nsw i32 %1414, 1
  store i32 %1415, 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 = icmp eq i32 %1417, 402653215
  br i1 %1418, label %1472, label %1419

1419:                                             ; preds = %1413
  br label %1420

1420:                                             ; preds = %1419
  br label %1421

1421:                                             ; preds = %1420
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #9
  %1422 = call ptr @__errno_location() #10
  %1423 = load i32, ptr %1422, align 4, !tbaa !5
  store i32 %1423, ptr %43, align 4, !tbaa !5
  %1424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1425 = call i32 @s2n_print_stacktrace(ptr noundef %1424)
  %1426 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1427 = trunc i8 %1426 to i1
  br i1 %1427, label %1428, label %1450

1428:                                             ; preds = %1421
  %1429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1430 = call i32 @fileno(ptr noundef %1429) #9
  %1431 = call i32 @isatty(i32 noundef %1430) #9
  %1432 = icmp ne i32 %1431, 0
  br i1 %1432, label %1433, label %1450

1433:                                             ; preds = %1428
  %1434 = load i32, ptr %43, align 4, !tbaa !5
  %1435 = call ptr @__errno_location() #10
  store i32 %1434, ptr %1435, align 4, !tbaa !5
  %1436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1437 = load i32, ptr @test_count, align 4, !tbaa !5
  %1438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1439 = load i32, ptr %1438, align 4, !tbaa !5
  %1440 = call ptr @s2n_strerror(i32 noundef %1439, ptr noundef @.str.4)
  %1441 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1442 = load i32, ptr %1441, align 4, !tbaa !5
  %1443 = call ptr @s2n_strerror_debug(i32 noundef %1442, ptr noundef @.str.4)
  %1444 = call ptr @__errno_location() #10
  %1445 = load i32, ptr %1444, align 4, !tbaa !5
  %1446 = call ptr @strerror(i32 noundef %1445) #9
  %1447 = call ptr @__errno_location() #10
  %1448 = load i32, ptr %1447, align 4, !tbaa !5
  %1449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1436, ptr noundef @.str.2, i32 noundef %1437, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 454, ptr noundef %1440, ptr noundef %1443, ptr noundef %1446, i32 noundef %1448) #9
  br label %1467

1450:                                             ; preds = %1428, %1421
  %1451 = load i32, ptr %43, align 4, !tbaa !5
  %1452 = call ptr @__errno_location() #10
  store i32 %1451, ptr %1452, align 4, !tbaa !5
  %1453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1454 = load i32, ptr @test_count, align 4, !tbaa !5
  %1455 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1456 = load i32, ptr %1455, align 4, !tbaa !5
  %1457 = call ptr @s2n_strerror(i32 noundef %1456, ptr noundef @.str.4)
  %1458 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1459 = load i32, ptr %1458, align 4, !tbaa !5
  %1460 = call ptr @s2n_strerror_debug(i32 noundef %1459, ptr noundef @.str.4)
  %1461 = call ptr @__errno_location() #10
  %1462 = load i32, ptr %1461, align 4, !tbaa !5
  %1463 = call ptr @strerror(i32 noundef %1462) #9
  %1464 = call ptr @__errno_location() #10
  %1465 = load i32, ptr %1464, align 4, !tbaa !5
  %1466 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1453, ptr noundef @.str.5, i32 noundef %1454, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 454, ptr noundef %1457, ptr noundef %1460, ptr noundef %1463, i32 noundef %1465) #9
  br label %1467

1467:                                             ; preds = %1450, %1433
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

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

1470:                                             ; No predecessors!
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %1471, %1413
  br label %1473

1473:                                             ; preds = %1472
  br label %1474

1474:                                             ; preds = %1473
  br label %1475

1475:                                             ; preds = %1474
  %1476 = load i32, ptr @test_count, align 4, !tbaa !5
  %1477 = add nsw i32 %1476, 1
  store i32 %1477, 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_debug(i32 noundef %1479, ptr noundef @.str.4)
  %1481 = icmp eq ptr %1480, null
  br i1 %1481, label %1482, label %1535

1482:                                             ; preds = %1475
  br label %1483

1483:                                             ; preds = %1482
  br label %1484

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

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

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

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

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

1531:                                             ; preds = %1530
  br label %1532

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

1533:                                             ; No predecessors!
  br label %1534

1534:                                             ; preds = %1533
  br label %1535

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

1536:                                             ; preds = %1535
  br label %1537

1537:                                             ; preds = %1536
  br label %1538

1538:                                             ; preds = %1537
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1539
  %1541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1541, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1542 = call ptr @__errno_location() #10
  store i32 0, ptr %1542, align 4, !tbaa !5
  br label %1543

1543:                                             ; preds = %1540
  br label %1544

1544:                                             ; preds = %1543
  br label %1545

1545:                                             ; preds = %1544
  br label %1546

1546:                                             ; preds = %1545
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  store i64 64, ptr %45, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 64, ptr %46) #9
  call void @llvm.memset.p0.i64(ptr align 16 %46, i8 0, i64 64, i1 false)
  br label %1547

1547:                                             ; preds = %1546
  %1548 = load i64, ptr %45, align 8, !tbaa !28
  %1549 = icmp ule i64 %1548, 64
  br i1 %1549, label %1583, label %1550

1550:                                             ; preds = %1547
  br label %1551

1551:                                             ; preds = %1550
  br label %1552

1552:                                             ; preds = %1551
  %1553 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1554 = getelementptr inbounds %struct.s2n_debug_info, ptr %1553, i32 0, i32 0
  store ptr @.str.28, ptr %1554, align 8, !tbaa !30
  %1555 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1556 = getelementptr inbounds %struct.s2n_debug_info, ptr %1555, i32 0, i32 0
  %1557 = load ptr, ptr %1556, align 8, !tbaa !30
  %1558 = getelementptr inbounds i8, ptr %1557, i64 21
  %1559 = call ptr @strrchr(ptr noundef %1558, i32 noundef 47) #12
  %1560 = icmp ne ptr %1559, null
  br i1 %1560, label %1561, label %1568

1561:                                             ; preds = %1552
  %1562 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1563 = getelementptr inbounds %struct.s2n_debug_info, ptr %1562, i32 0, i32 0
  %1564 = load ptr, ptr %1563, align 8, !tbaa !30
  %1565 = getelementptr inbounds i8, ptr %1564, i64 21
  %1566 = call ptr @strrchr(ptr noundef %1565, i32 noundef 47) #12
  %1567 = getelementptr inbounds i8, ptr %1566, i64 1
  br label %1573

1568:                                             ; preds = %1552
  %1569 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1570 = getelementptr inbounds %struct.s2n_debug_info, ptr %1569, i32 0, i32 0
  %1571 = load ptr, ptr %1570, align 8, !tbaa !30
  %1572 = getelementptr inbounds i8, ptr %1571, i64 21
  br label %1573

1573:                                             ; preds = %1568, %1561
  %1574 = phi ptr [ %1567, %1561 ], [ %1572, %1568 ]
  %1575 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1576 = getelementptr inbounds %struct.s2n_debug_info, ptr %1575, i32 0, i32 1
  store ptr %1574, ptr %1576, align 8, !tbaa !32
  %1577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1577, align 4, !tbaa !5
  %1578 = call i32 @s2n_calculate_stacktrace()
  br label %1579

1579:                                             ; preds = %1573
  br label %1580

1580:                                             ; preds = %1579
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %40, align 4
  br label %1658

1581:                                             ; No predecessors!
  br label %1582

1582:                                             ; preds = %1581
  br label %1583

1583:                                             ; preds = %1582, %1547
  br label %1584

1584:                                             ; preds = %1583
  br label %1585

1585:                                             ; preds = %1584
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #9
  call void @llvm.memset.p0.i64(ptr align 8 %47, i8 0, i64 24, i1 false)
  br label %1586

1586:                                             ; preds = %1585
  %1587 = getelementptr inbounds [64 x i8], ptr %46, i64 0, i64 0
  %1588 = load i64, ptr %45, align 8, !tbaa !28
  %1589 = trunc i64 %1588 to i32
  %1590 = call i32 @s2n_blob_init(ptr noundef %47, ptr noundef %1587, i32 noundef %1589)
  %1591 = icmp sgt i32 %1590, -1
  br i1 %1591, label %1593, label %1592

1592:                                             ; preds = %1586
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %40, align 4
  br label %1657

1593:                                             ; preds = %1586
  br label %1594

1594:                                             ; preds = %1593
  br label %1595

1595:                                             ; preds = %1594
  br label %1596

1596:                                             ; preds = %1595
  %1597 = load i32, ptr @test_count, align 4, !tbaa !5
  %1598 = add nsw i32 %1597, 1
  store i32 %1598, ptr @test_count, align 4, !tbaa !5
  %1599 = call i32 @s2n_hkdf_extract(ptr noundef %6, i32 noundef 6, ptr noundef %10, ptr noundef %9, ptr noundef %47)
  %1600 = icmp eq i32 %1599, -1
  br i1 %1600, label %1601, label %1654

1601:                                             ; preds = %1596
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1602
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %1604 = call ptr @__errno_location() #10
  %1605 = load i32, ptr %1604, align 4, !tbaa !5
  store i32 %1605, ptr %48, align 4, !tbaa !5
  %1606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1607 = call i32 @s2n_print_stacktrace(ptr noundef %1606)
  %1608 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1609 = trunc i8 %1608 to i1
  br i1 %1609, label %1610, label %1632

1610:                                             ; preds = %1603
  %1611 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1612 = call i32 @fileno(ptr noundef %1611) #9
  %1613 = call i32 @isatty(i32 noundef %1612) #9
  %1614 = icmp ne i32 %1613, 0
  br i1 %1614, label %1615, label %1632

1615:                                             ; preds = %1610
  %1616 = load i32, ptr %48, align 4, !tbaa !5
  %1617 = call ptr @__errno_location() #10
  store i32 %1616, ptr %1617, 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 @.str.4)
  %1623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1624 = load i32, ptr %1623, align 4, !tbaa !5
  %1625 = call ptr @s2n_strerror_debug(i32 noundef %1624, ptr noundef @.str.4)
  %1626 = call ptr @__errno_location() #10
  %1627 = load i32, ptr %1626, align 4, !tbaa !5
  %1628 = call ptr @strerror(i32 noundef %1627) #9
  %1629 = call ptr @__errno_location() #10
  %1630 = load i32, ptr %1629, align 4, !tbaa !5
  %1631 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1618, ptr noundef @.str.2, i32 noundef %1619, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 458, ptr noundef %1622, ptr noundef %1625, ptr noundef %1628, i32 noundef %1630) #9
  br label %1649

1632:                                             ; preds = %1610, %1603
  %1633 = load i32, ptr %48, align 4, !tbaa !5
  %1634 = call ptr @__errno_location() #10
  store i32 %1633, ptr %1634, align 4, !tbaa !5
  %1635 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1636 = load i32, ptr @test_count, align 4, !tbaa !5
  %1637 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1638 = load i32, ptr %1637, align 4, !tbaa !5
  %1639 = call ptr @s2n_strerror(i32 noundef %1638, ptr noundef @.str.4)
  %1640 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1641 = load i32, ptr %1640, align 4, !tbaa !5
  %1642 = call ptr @s2n_strerror_debug(i32 noundef %1641, ptr noundef @.str.4)
  %1643 = call ptr @__errno_location() #10
  %1644 = load i32, ptr %1643, align 4, !tbaa !5
  %1645 = call ptr @strerror(i32 noundef %1644) #9
  %1646 = call ptr @__errno_location() #10
  %1647 = load i32, ptr %1646, align 4, !tbaa !5
  %1648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1635, ptr noundef @.str.5, i32 noundef %1636, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 458, ptr noundef %1639, ptr noundef %1642, ptr noundef %1645, i32 noundef %1647) #9
  br label %1649

1649:                                             ; preds = %1632, %1615
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %1650

1650:                                             ; preds = %1649
  br label %1651

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

1652:                                             ; No predecessors!
  br label %1653

1653:                                             ; preds = %1652
  br label %1654

1654:                                             ; preds = %1653, %1596
  br label %1655

1655:                                             ; preds = %1654
  br label %1656

1656:                                             ; preds = %1655
  store i32 0, ptr %40, align 4
  br label %1657

1657:                                             ; preds = %1656, %1592
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #9
  br label %1658

1658:                                             ; preds = %1657, %1580
  call void @llvm.lifetime.end.p0(i64 64, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %1659

1659:                                             ; preds = %1658, %1346
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #9
  br label %1660

1660:                                             ; preds = %1659, %1334
  call void @llvm.lifetime.end.p0(i64 10, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  %1661 = load i32, ptr %40, align 4
  switch i32 %1661, label %2458 [
    i32 0, label %1662
  ]

1662:                                             ; preds = %1660
  %1663 = call zeroext i1 @s2n_libcrypto_is_awslc()
  br i1 %1663, label %1664, label %1727

1664:                                             ; preds = %1662
  %1665 = call zeroext i1 @s2n_is_in_fips_mode()
  br i1 %1665, label %1666, label %1727

1666:                                             ; preds = %1664
  br label %1667

1667:                                             ; preds = %1666
  %1668 = load i32, ptr @test_count, align 4, !tbaa !5
  %1669 = add nsw i32 %1668, 1
  store i32 %1669, ptr @test_count, align 4, !tbaa !5
  %1670 = call zeroext i1 (...) @s2n_libcrypto_supports_hkdf()
  br i1 %1670, label %1724, label %1671

1671:                                             ; preds = %1667
  br label %1672

1672:                                             ; preds = %1671
  br label %1673

1673:                                             ; preds = %1672
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %1674 = call ptr @__errno_location() #10
  %1675 = load i32, ptr %1674, align 4, !tbaa !5
  store i32 %1675, ptr %49, align 4, !tbaa !5
  %1676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1677 = call i32 @s2n_print_stacktrace(ptr noundef %1676)
  %1678 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1679 = trunc i8 %1678 to i1
  br i1 %1679, label %1680, label %1702

1680:                                             ; preds = %1673
  %1681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1682 = call i32 @fileno(ptr noundef %1681) #9
  %1683 = call i32 @isatty(i32 noundef %1682) #9
  %1684 = icmp ne i32 %1683, 0
  br i1 %1684, label %1685, label %1702

1685:                                             ; preds = %1680
  %1686 = load i32, ptr %49, align 4, !tbaa !5
  %1687 = call ptr @__errno_location() #10
  store i32 %1686, ptr %1687, align 4, !tbaa !5
  %1688 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1689 = load i32, ptr @test_count, align 4, !tbaa !5
  %1690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1691 = load i32, ptr %1690, align 4, !tbaa !5
  %1692 = call ptr @s2n_strerror(i32 noundef %1691, ptr noundef @.str.4)
  %1693 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1694 = load i32, ptr %1693, align 4, !tbaa !5
  %1695 = call ptr @s2n_strerror_debug(i32 noundef %1694, ptr noundef @.str.4)
  %1696 = call ptr @__errno_location() #10
  %1697 = load i32, ptr %1696, align 4, !tbaa !5
  %1698 = call ptr @strerror(i32 noundef %1697) #9
  %1699 = call ptr @__errno_location() #10
  %1700 = load i32, ptr %1699, align 4, !tbaa !5
  %1701 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1688, ptr noundef @.str.2, i32 noundef %1689, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 463, ptr noundef %1692, ptr noundef %1695, ptr noundef %1698, i32 noundef %1700) #9
  br label %1719

1702:                                             ; preds = %1680, %1673
  %1703 = load i32, ptr %49, align 4, !tbaa !5
  %1704 = call ptr @__errno_location() #10
  store i32 %1703, ptr %1704, align 4, !tbaa !5
  %1705 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1706 = load i32, ptr @test_count, align 4, !tbaa !5
  %1707 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1708 = load i32, ptr %1707, align 4, !tbaa !5
  %1709 = call ptr @s2n_strerror(i32 noundef %1708, ptr noundef @.str.4)
  %1710 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1711 = load i32, ptr %1710, align 4, !tbaa !5
  %1712 = call ptr @s2n_strerror_debug(i32 noundef %1711, ptr noundef @.str.4)
  %1713 = call ptr @__errno_location() #10
  %1714 = load i32, ptr %1713, align 4, !tbaa !5
  %1715 = call ptr @strerror(i32 noundef %1714) #9
  %1716 = call ptr @__errno_location() #10
  %1717 = load i32, ptr %1716, align 4, !tbaa !5
  %1718 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1705, ptr noundef @.str.5, i32 noundef %1706, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 463, ptr noundef %1709, ptr noundef %1712, ptr noundef %1715, i32 noundef %1717) #9
  br label %1719

1719:                                             ; preds = %1702, %1685
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %1720

1720:                                             ; preds = %1719
  br label %1721

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

1722:                                             ; No predecessors!
  br label %1723

1723:                                             ; preds = %1722
  br label %1724

1724:                                             ; preds = %1723, %1667
  br label %1725

1725:                                             ; preds = %1724
  br label %1726

1726:                                             ; preds = %1725
  br label %1727

1727:                                             ; preds = %1726, %1664, %1662
  call void @llvm.lifetime.start.p0(i64 5101, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #9
  call void @llvm.memset.p0.i64(ptr align 8 %51, i8 0, i64 24, i1 false)
  br label %1728

1728:                                             ; preds = %1727
  %1729 = load i32, ptr @test_count, align 4, !tbaa !5
  %1730 = add nsw i32 %1729, 1
  store i32 %1730, ptr @test_count, align 4, !tbaa !5
  %1731 = getelementptr inbounds [5101 x i8], ptr %50, i64 0, i64 0
  %1732 = call i32 @s2n_blob_init(ptr noundef %51, ptr noundef %1731, i32 noundef 5101)
  %1733 = icmp eq i32 %1732, -1
  br i1 %1733, label %1734, label %1787

1734:                                             ; preds = %1728
  br label %1735

1735:                                             ; preds = %1734
  br label %1736

1736:                                             ; preds = %1735
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %1737 = call ptr @__errno_location() #10
  %1738 = load i32, ptr %1737, align 4, !tbaa !5
  store i32 %1738, ptr %52, align 4, !tbaa !5
  %1739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1740 = call i32 @s2n_print_stacktrace(ptr noundef %1739)
  %1741 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1742 = trunc i8 %1741 to i1
  br i1 %1742, label %1743, label %1765

1743:                                             ; preds = %1736
  %1744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1745 = call i32 @fileno(ptr noundef %1744) #9
  %1746 = call i32 @isatty(i32 noundef %1745) #9
  %1747 = icmp ne i32 %1746, 0
  br i1 %1747, label %1748, label %1765

1748:                                             ; preds = %1743
  %1749 = load i32, ptr %52, align 4, !tbaa !5
  %1750 = call ptr @__errno_location() #10
  store i32 %1749, ptr %1750, align 4, !tbaa !5
  %1751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1752 = load i32, ptr @test_count, align 4, !tbaa !5
  %1753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call ptr @s2n_strerror(i32 noundef %1754, ptr noundef @.str.4)
  %1756 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1757 = load i32, ptr %1756, align 4, !tbaa !5
  %1758 = call ptr @s2n_strerror_debug(i32 noundef %1757, ptr noundef @.str.4)
  %1759 = call ptr @__errno_location() #10
  %1760 = load i32, ptr %1759, align 4, !tbaa !5
  %1761 = call ptr @strerror(i32 noundef %1760) #9
  %1762 = call ptr @__errno_location() #10
  %1763 = load i32, ptr %1762, align 4, !tbaa !5
  %1764 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1751, ptr noundef @.str.2, i32 noundef %1752, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 472, ptr noundef %1755, ptr noundef %1758, ptr noundef %1761, i32 noundef %1763) #9
  br label %1782

1765:                                             ; preds = %1743, %1736
  %1766 = load i32, ptr %52, align 4, !tbaa !5
  %1767 = call ptr @__errno_location() #10
  store i32 %1766, ptr %1767, align 4, !tbaa !5
  %1768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1769 = load i32, ptr @test_count, align 4, !tbaa !5
  %1770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call ptr @s2n_strerror(i32 noundef %1771, ptr noundef @.str.4)
  %1773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1774 = load i32, ptr %1773, align 4, !tbaa !5
  %1775 = call ptr @s2n_strerror_debug(i32 noundef %1774, ptr noundef @.str.4)
  %1776 = call ptr @__errno_location() #10
  %1777 = load i32, ptr %1776, align 4, !tbaa !5
  %1778 = call ptr @strerror(i32 noundef %1777) #9
  %1779 = call ptr @__errno_location() #10
  %1780 = load i32, ptr %1779, align 4, !tbaa !5
  %1781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1768, ptr noundef @.str.5, i32 noundef %1769, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 472, ptr noundef %1772, ptr noundef %1775, ptr noundef %1778, i32 noundef %1780) #9
  br label %1782

1782:                                             ; preds = %1765, %1748
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  br label %1783

1783:                                             ; preds = %1782
  br label %1784

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

1785:                                             ; No predecessors!
  br label %1786

1786:                                             ; preds = %1785
  br label %1787

1787:                                             ; preds = %1786, %1728
  br label %1788

1788:                                             ; preds = %1787
  br label %1789

1789:                                             ; preds = %1788
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #9
  call void @llvm.memset.p0.i64(ptr align 8 %53, i8 0, i64 24, i1 false)
  br label %1790

1790:                                             ; preds = %1789
  %1791 = load i32, ptr @test_count, align 4, !tbaa !5
  %1792 = add nsw i32 %1791, 1
  store i32 %1792, ptr @test_count, align 4, !tbaa !5
  %1793 = getelementptr inbounds [82 x i8], ptr %8, i64 0, i64 0
  %1794 = call i32 @s2n_blob_init(ptr noundef %53, ptr noundef %1793, i32 noundef 0)
  %1795 = icmp eq i32 %1794, -1
  br i1 %1795, label %1796, label %1849

1796:                                             ; preds = %1790
  br label %1797

1797:                                             ; preds = %1796
  br label %1798

1798:                                             ; preds = %1797
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %1799 = call ptr @__errno_location() #10
  %1800 = load i32, ptr %1799, align 4, !tbaa !5
  store i32 %1800, ptr %54, align 4, !tbaa !5
  %1801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1802 = call i32 @s2n_print_stacktrace(ptr noundef %1801)
  %1803 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1804 = trunc i8 %1803 to i1
  br i1 %1804, label %1805, label %1827

1805:                                             ; preds = %1798
  %1806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1807 = call i32 @fileno(ptr noundef %1806) #9
  %1808 = call i32 @isatty(i32 noundef %1807) #9
  %1809 = icmp ne i32 %1808, 0
  br i1 %1809, label %1810, label %1827

1810:                                             ; preds = %1805
  %1811 = load i32, ptr %54, align 4, !tbaa !5
  %1812 = call ptr @__errno_location() #10
  store i32 %1811, ptr %1812, align 4, !tbaa !5
  %1813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1814 = load i32, ptr @test_count, align 4, !tbaa !5
  %1815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  %1817 = call ptr @s2n_strerror(i32 noundef %1816, ptr noundef @.str.4)
  %1818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1819 = load i32, ptr %1818, align 4, !tbaa !5
  %1820 = call ptr @s2n_strerror_debug(i32 noundef %1819, ptr noundef @.str.4)
  %1821 = call ptr @__errno_location() #10
  %1822 = load i32, ptr %1821, align 4, !tbaa !5
  %1823 = call ptr @strerror(i32 noundef %1822) #9
  %1824 = call ptr @__errno_location() #10
  %1825 = load i32, ptr %1824, align 4, !tbaa !5
  %1826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1813, ptr noundef @.str.2, i32 noundef %1814, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 474, ptr noundef %1817, ptr noundef %1820, ptr noundef %1823, i32 noundef %1825) #9
  br label %1844

1827:                                             ; preds = %1805, %1798
  %1828 = load i32, ptr %54, align 4, !tbaa !5
  %1829 = call ptr @__errno_location() #10
  store i32 %1828, ptr %1829, align 4, !tbaa !5
  %1830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1831 = load i32, ptr @test_count, align 4, !tbaa !5
  %1832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = call ptr @s2n_strerror(i32 noundef %1833, ptr noundef @.str.4)
  %1835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call ptr @s2n_strerror_debug(i32 noundef %1836, ptr noundef @.str.4)
  %1838 = call ptr @__errno_location() #10
  %1839 = load i32, ptr %1838, align 4, !tbaa !5
  %1840 = call ptr @strerror(i32 noundef %1839) #9
  %1841 = call ptr @__errno_location() #10
  %1842 = load i32, ptr %1841, align 4, !tbaa !5
  %1843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1830, ptr noundef @.str.5, i32 noundef %1831, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 474, ptr noundef %1834, ptr noundef %1837, ptr noundef %1840, i32 noundef %1842) #9
  br label %1844

1844:                                             ; preds = %1827, %1810
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %1845

1845:                                             ; preds = %1844
  br label %1846

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

1847:                                             ; No predecessors!
  br label %1848

1848:                                             ; preds = %1847
  br label %1849

1849:                                             ; preds = %1848, %1790
  br label %1850

1850:                                             ; preds = %1849
  br label %1851

1851:                                             ; preds = %1850
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 2, ptr %55, align 4, !tbaa !5
  br label %1852

1852:                                             ; preds = %1851
  br label %1853

1853:                                             ; preds = %1852
  %1854 = load i32, ptr @test_count, align 4, !tbaa !5
  %1855 = add nsw i32 %1854, 1
  store i32 %1855, ptr @test_count, align 4, !tbaa !5
  %1856 = load i32, ptr %55, align 4, !tbaa !5
  %1857 = call i32 @s2n_hkdf(ptr noundef %6, i32 noundef %1856, ptr noundef %10, ptr noundef %9, ptr noundef %11, ptr noundef %51)
  %1858 = icmp eq i32 %1857, -1
  br i1 %1858, label %1912, label %1859

1859:                                             ; preds = %1853
  br label %1860

1860:                                             ; preds = %1859
  br label %1861

1861:                                             ; preds = %1860
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  %1862 = call ptr @__errno_location() #10
  %1863 = load i32, ptr %1862, align 4, !tbaa !5
  store i32 %1863, ptr %56, align 4, !tbaa !5
  %1864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1865 = call i32 @s2n_print_stacktrace(ptr noundef %1864)
  %1866 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1867 = trunc i8 %1866 to i1
  br i1 %1867, label %1868, label %1890

1868:                                             ; preds = %1861
  %1869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1870 = call i32 @fileno(ptr noundef %1869) #9
  %1871 = call i32 @isatty(i32 noundef %1870) #9
  %1872 = icmp ne i32 %1871, 0
  br i1 %1872, label %1873, label %1890

1873:                                             ; preds = %1868
  %1874 = load i32, ptr %56, align 4, !tbaa !5
  %1875 = call ptr @__errno_location() #10
  store i32 %1874, ptr %1875, align 4, !tbaa !5
  %1876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1877 = load i32, ptr @test_count, align 4, !tbaa !5
  %1878 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1879 = load i32, ptr %1878, align 4, !tbaa !5
  %1880 = call ptr @s2n_strerror(i32 noundef %1879, ptr noundef @.str.4)
  %1881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1882 = load i32, ptr %1881, align 4, !tbaa !5
  %1883 = call ptr @s2n_strerror_debug(i32 noundef %1882, ptr noundef @.str.4)
  %1884 = call ptr @__errno_location() #10
  %1885 = load i32, ptr %1884, align 4, !tbaa !5
  %1886 = call ptr @strerror(i32 noundef %1885) #9
  %1887 = call ptr @__errno_location() #10
  %1888 = load i32, ptr %1887, align 4, !tbaa !5
  %1889 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1876, ptr noundef @.str.2, i32 noundef %1877, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 478, ptr noundef %1880, ptr noundef %1883, ptr noundef %1886, i32 noundef %1888) #9
  br label %1907

1890:                                             ; preds = %1868, %1861
  %1891 = load i32, ptr %56, align 4, !tbaa !5
  %1892 = call ptr @__errno_location() #10
  store i32 %1891, ptr %1892, align 4, !tbaa !5
  %1893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1894 = load i32, ptr @test_count, align 4, !tbaa !5
  %1895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  %1897 = call ptr @s2n_strerror(i32 noundef %1896, ptr noundef @.str.4)
  %1898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1899 = load i32, ptr %1898, align 4, !tbaa !5
  %1900 = call ptr @s2n_strerror_debug(i32 noundef %1899, ptr noundef @.str.4)
  %1901 = call ptr @__errno_location() #10
  %1902 = load i32, ptr %1901, align 4, !tbaa !5
  %1903 = call ptr @strerror(i32 noundef %1902) #9
  %1904 = call ptr @__errno_location() #10
  %1905 = load i32, ptr %1904, align 4, !tbaa !5
  %1906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1893, ptr noundef @.str.5, i32 noundef %1894, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 478, ptr noundef %1897, ptr noundef %1900, ptr noundef %1903, i32 noundef %1905) #9
  br label %1907

1907:                                             ; preds = %1890, %1873
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %1908

1908:                                             ; preds = %1907
  br label %1909

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

1910:                                             ; No predecessors!
  br label %1911

1911:                                             ; preds = %1910
  br label %1912

1912:                                             ; preds = %1911, %1853
  br label %1913

1913:                                             ; preds = %1912
  br label %1914

1914:                                             ; preds = %1913
  br label %1915

1915:                                             ; preds = %1914
  %1916 = load i32, ptr @test_count, align 4, !tbaa !5
  %1917 = add nsw i32 %1916, 1
  store i32 %1917, ptr @test_count, align 4, !tbaa !5
  %1918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1919 = load i32, ptr %1918, align 4, !tbaa !5
  %1920 = icmp eq i32 %1919, 0
  br i1 %1920, label %1921, label %1974

1921:                                             ; preds = %1915
  br label %1922

1922:                                             ; preds = %1921
  br label %1923

1923:                                             ; preds = %1922
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  %1924 = call ptr @__errno_location() #10
  %1925 = load i32, ptr %1924, align 4, !tbaa !5
  store i32 %1925, ptr %57, align 4, !tbaa !5
  %1926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1927 = call i32 @s2n_print_stacktrace(ptr noundef %1926)
  %1928 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1929 = trunc i8 %1928 to i1
  br i1 %1929, label %1930, label %1952

1930:                                             ; preds = %1923
  %1931 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1932 = call i32 @fileno(ptr noundef %1931) #9
  %1933 = call i32 @isatty(i32 noundef %1932) #9
  %1934 = icmp ne i32 %1933, 0
  br i1 %1934, label %1935, label %1952

1935:                                             ; preds = %1930
  %1936 = load i32, ptr %57, align 4, !tbaa !5
  %1937 = call ptr @__errno_location() #10
  store i32 %1936, ptr %1937, align 4, !tbaa !5
  %1938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1939 = load i32, ptr @test_count, align 4, !tbaa !5
  %1940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1941 = load i32, ptr %1940, align 4, !tbaa !5
  %1942 = call ptr @s2n_strerror(i32 noundef %1941, ptr noundef @.str.4)
  %1943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1944 = load i32, ptr %1943, align 4, !tbaa !5
  %1945 = call ptr @s2n_strerror_debug(i32 noundef %1944, ptr noundef @.str.4)
  %1946 = call ptr @__errno_location() #10
  %1947 = load i32, ptr %1946, align 4, !tbaa !5
  %1948 = call ptr @strerror(i32 noundef %1947) #9
  %1949 = call ptr @__errno_location() #10
  %1950 = load i32, ptr %1949, align 4, !tbaa !5
  %1951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1938, ptr noundef @.str.2, i32 noundef %1939, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 478, ptr noundef %1942, ptr noundef %1945, ptr noundef %1948, i32 noundef %1950) #9
  br label %1969

1952:                                             ; preds = %1930, %1923
  %1953 = load i32, ptr %57, align 4, !tbaa !5
  %1954 = call ptr @__errno_location() #10
  store i32 %1953, ptr %1954, align 4, !tbaa !5
  %1955 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1956 = load i32, ptr @test_count, align 4, !tbaa !5
  %1957 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1958 = load i32, ptr %1957, align 4, !tbaa !5
  %1959 = call ptr @s2n_strerror(i32 noundef %1958, ptr noundef @.str.4)
  %1960 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1961 = load i32, ptr %1960, align 4, !tbaa !5
  %1962 = call ptr @s2n_strerror_debug(i32 noundef %1961, ptr noundef @.str.4)
  %1963 = call ptr @__errno_location() #10
  %1964 = load i32, ptr %1963, align 4, !tbaa !5
  %1965 = call ptr @strerror(i32 noundef %1964) #9
  %1966 = call ptr @__errno_location() #10
  %1967 = load i32, ptr %1966, align 4, !tbaa !5
  %1968 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1955, ptr noundef @.str.5, i32 noundef %1956, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 478, ptr noundef %1959, ptr noundef %1962, ptr noundef %1965, i32 noundef %1967) #9
  br label %1969

1969:                                             ; preds = %1952, %1935
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  br label %1970

1970:                                             ; preds = %1969
  br label %1971

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

1972:                                             ; No predecessors!
  br label %1973

1973:                                             ; preds = %1972
  br label %1974

1974:                                             ; preds = %1973, %1915
  br label %1975

1975:                                             ; preds = %1974
  br label %1976

1976:                                             ; preds = %1975
  br label %1977

1977:                                             ; preds = %1976
  %1978 = load i32, ptr @test_count, align 4, !tbaa !5
  %1979 = add nsw i32 %1978, 1
  store i32 %1979, ptr @test_count, align 4, !tbaa !5
  %1980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1981 = load i32, ptr %1980, align 4, !tbaa !5
  %1982 = call ptr @s2n_strerror_debug(i32 noundef %1981, ptr noundef @.str.4)
  %1983 = icmp eq ptr %1982, null
  br i1 %1983, label %1984, label %2037

1984:                                             ; preds = %1977
  br label %1985

1985:                                             ; preds = %1984
  br label %1986

1986:                                             ; preds = %1985
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  %1987 = call ptr @__errno_location() #10
  %1988 = load i32, ptr %1987, align 4, !tbaa !5
  store i32 %1988, ptr %58, align 4, !tbaa !5
  %1989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1990 = call i32 @s2n_print_stacktrace(ptr noundef %1989)
  %1991 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1992 = trunc i8 %1991 to i1
  br i1 %1992, label %1993, label %2015

1993:                                             ; preds = %1986
  %1994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1995 = call i32 @fileno(ptr noundef %1994) #9
  %1996 = call i32 @isatty(i32 noundef %1995) #9
  %1997 = icmp ne i32 %1996, 0
  br i1 %1997, label %1998, label %2015

1998:                                             ; preds = %1993
  %1999 = load i32, ptr %58, align 4, !tbaa !5
  %2000 = call ptr @__errno_location() #10
  store i32 %1999, ptr %2000, align 4, !tbaa !5
  %2001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2002 = load i32, ptr @test_count, align 4, !tbaa !5
  %2003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2004 = load i32, ptr %2003, align 4, !tbaa !5
  %2005 = call ptr @s2n_strerror(i32 noundef %2004, ptr noundef @.str.4)
  %2006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2007 = load i32, ptr %2006, align 4, !tbaa !5
  %2008 = call ptr @s2n_strerror_debug(i32 noundef %2007, ptr noundef @.str.4)
  %2009 = call ptr @__errno_location() #10
  %2010 = load i32, ptr %2009, align 4, !tbaa !5
  %2011 = call ptr @strerror(i32 noundef %2010) #9
  %2012 = call ptr @__errno_location() #10
  %2013 = load i32, ptr %2012, align 4, !tbaa !5
  %2014 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2001, ptr noundef @.str.2, i32 noundef %2002, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 478, ptr noundef %2005, ptr noundef %2008, ptr noundef %2011, i32 noundef %2013) #9
  br label %2032

2015:                                             ; preds = %1993, %1986
  %2016 = load i32, ptr %58, align 4, !tbaa !5
  %2017 = call ptr @__errno_location() #10
  store i32 %2016, ptr %2017, align 4, !tbaa !5
  %2018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2019 = load i32, ptr @test_count, align 4, !tbaa !5
  %2020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2021 = load i32, ptr %2020, align 4, !tbaa !5
  %2022 = call ptr @s2n_strerror(i32 noundef %2021, ptr noundef @.str.4)
  %2023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2024 = load i32, ptr %2023, align 4, !tbaa !5
  %2025 = call ptr @s2n_strerror_debug(i32 noundef %2024, ptr noundef @.str.4)
  %2026 = call ptr @__errno_location() #10
  %2027 = load i32, ptr %2026, align 4, !tbaa !5
  %2028 = call ptr @strerror(i32 noundef %2027) #9
  %2029 = call ptr @__errno_location() #10
  %2030 = load i32, ptr %2029, align 4, !tbaa !5
  %2031 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2018, ptr noundef @.str.5, i32 noundef %2019, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 478, ptr noundef %2022, ptr noundef %2025, ptr noundef %2028, i32 noundef %2030) #9
  br label %2032

2032:                                             ; preds = %2015, %1998
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %2033

2033:                                             ; preds = %2032
  br label %2034

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

2035:                                             ; No predecessors!
  br label %2036

2036:                                             ; preds = %2035
  br label %2037

2037:                                             ; preds = %2036, %1977
  br label %2038

2038:                                             ; preds = %2037
  br label %2039

2039:                                             ; preds = %2038
  br label %2040

2040:                                             ; preds = %2039
  %2041 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2041, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2042 = call ptr @__errno_location() #10
  store i32 0, ptr %2042, align 4, !tbaa !5
  br label %2043

2043:                                             ; preds = %2040
  br label %2044

2044:                                             ; preds = %2043
  br label %2045

2045:                                             ; preds = %2044
  br label %2046

2046:                                             ; preds = %2045
  br label %2047

2047:                                             ; preds = %2046
  br label %2048

2048:                                             ; preds = %2047
  %2049 = load i32, ptr @test_count, align 4, !tbaa !5
  %2050 = add nsw i32 %2049, 1
  store i32 %2050, ptr @test_count, align 4, !tbaa !5
  %2051 = load i32, ptr %55, align 4, !tbaa !5
  %2052 = call i32 @s2n_hkdf(ptr noundef %6, i32 noundef %2051, ptr noundef %10, ptr noundef %9, ptr noundef %11, ptr noundef %53)
  %2053 = icmp eq i32 %2052, -1
  br i1 %2053, label %2107, label %2054

2054:                                             ; preds = %2048
  br label %2055

2055:                                             ; preds = %2054
  br label %2056

2056:                                             ; preds = %2055
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  %2057 = call ptr @__errno_location() #10
  %2058 = load i32, ptr %2057, align 4, !tbaa !5
  store i32 %2058, ptr %59, align 4, !tbaa !5
  %2059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2060 = call i32 @s2n_print_stacktrace(ptr noundef %2059)
  %2061 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2062 = trunc i8 %2061 to i1
  br i1 %2062, label %2063, label %2085

2063:                                             ; preds = %2056
  %2064 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2065 = call i32 @fileno(ptr noundef %2064) #9
  %2066 = call i32 @isatty(i32 noundef %2065) #9
  %2067 = icmp ne i32 %2066, 0
  br i1 %2067, label %2068, label %2085

2068:                                             ; preds = %2063
  %2069 = load i32, ptr %59, align 4, !tbaa !5
  %2070 = call ptr @__errno_location() #10
  store i32 %2069, ptr %2070, align 4, !tbaa !5
  %2071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2072 = load i32, ptr @test_count, align 4, !tbaa !5
  %2073 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2074 = load i32, ptr %2073, align 4, !tbaa !5
  %2075 = call ptr @s2n_strerror(i32 noundef %2074, ptr noundef @.str.4)
  %2076 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2077 = load i32, ptr %2076, align 4, !tbaa !5
  %2078 = call ptr @s2n_strerror_debug(i32 noundef %2077, ptr noundef @.str.4)
  %2079 = call ptr @__errno_location() #10
  %2080 = load i32, ptr %2079, align 4, !tbaa !5
  %2081 = call ptr @strerror(i32 noundef %2080) #9
  %2082 = call ptr @__errno_location() #10
  %2083 = load i32, ptr %2082, align 4, !tbaa !5
  %2084 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2071, ptr noundef @.str.2, i32 noundef %2072, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 479, ptr noundef %2075, ptr noundef %2078, ptr noundef %2081, i32 noundef %2083) #9
  br label %2102

2085:                                             ; preds = %2063, %2056
  %2086 = load i32, ptr %59, align 4, !tbaa !5
  %2087 = call ptr @__errno_location() #10
  store i32 %2086, ptr %2087, align 4, !tbaa !5
  %2088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2089 = load i32, ptr @test_count, align 4, !tbaa !5
  %2090 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2091 = load i32, ptr %2090, align 4, !tbaa !5
  %2092 = call ptr @s2n_strerror(i32 noundef %2091, ptr noundef @.str.4)
  %2093 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2094 = load i32, ptr %2093, align 4, !tbaa !5
  %2095 = call ptr @s2n_strerror_debug(i32 noundef %2094, ptr noundef @.str.4)
  %2096 = call ptr @__errno_location() #10
  %2097 = load i32, ptr %2096, align 4, !tbaa !5
  %2098 = call ptr @strerror(i32 noundef %2097) #9
  %2099 = call ptr @__errno_location() #10
  %2100 = load i32, ptr %2099, align 4, !tbaa !5
  %2101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2088, ptr noundef @.str.5, i32 noundef %2089, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 479, ptr noundef %2092, ptr noundef %2095, ptr noundef %2098, i32 noundef %2100) #9
  br label %2102

2102:                                             ; preds = %2085, %2068
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  br label %2103

2103:                                             ; preds = %2102
  br label %2104

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

2105:                                             ; No predecessors!
  br label %2106

2106:                                             ; preds = %2105
  br label %2107

2107:                                             ; preds = %2106, %2048
  br label %2108

2108:                                             ; preds = %2107
  br label %2109

2109:                                             ; preds = %2108
  br label %2110

2110:                                             ; preds = %2109
  %2111 = load i32, ptr @test_count, align 4, !tbaa !5
  %2112 = add nsw i32 %2111, 1
  store i32 %2112, ptr @test_count, align 4, !tbaa !5
  %2113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2114 = load i32, ptr %2113, align 4, !tbaa !5
  %2115 = icmp eq i32 %2114, 0
  br i1 %2115, label %2116, label %2169

2116:                                             ; preds = %2110
  br label %2117

2117:                                             ; preds = %2116
  br label %2118

2118:                                             ; preds = %2117
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  %2119 = call ptr @__errno_location() #10
  %2120 = load i32, ptr %2119, align 4, !tbaa !5
  store i32 %2120, ptr %60, align 4, !tbaa !5
  %2121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2122 = call i32 @s2n_print_stacktrace(ptr noundef %2121)
  %2123 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2124 = trunc i8 %2123 to i1
  br i1 %2124, label %2125, label %2147

2125:                                             ; preds = %2118
  %2126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2127 = call i32 @fileno(ptr noundef %2126) #9
  %2128 = call i32 @isatty(i32 noundef %2127) #9
  %2129 = icmp ne i32 %2128, 0
  br i1 %2129, label %2130, label %2147

2130:                                             ; preds = %2125
  %2131 = load i32, ptr %60, align 4, !tbaa !5
  %2132 = call ptr @__errno_location() #10
  store i32 %2131, ptr %2132, align 4, !tbaa !5
  %2133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2134 = load i32, ptr @test_count, align 4, !tbaa !5
  %2135 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2136 = load i32, ptr %2135, align 4, !tbaa !5
  %2137 = call ptr @s2n_strerror(i32 noundef %2136, ptr noundef @.str.4)
  %2138 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2139 = load i32, ptr %2138, align 4, !tbaa !5
  %2140 = call ptr @s2n_strerror_debug(i32 noundef %2139, ptr noundef @.str.4)
  %2141 = call ptr @__errno_location() #10
  %2142 = load i32, ptr %2141, align 4, !tbaa !5
  %2143 = call ptr @strerror(i32 noundef %2142) #9
  %2144 = call ptr @__errno_location() #10
  %2145 = load i32, ptr %2144, align 4, !tbaa !5
  %2146 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2133, ptr noundef @.str.2, i32 noundef %2134, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 479, ptr noundef %2137, ptr noundef %2140, ptr noundef %2143, i32 noundef %2145) #9
  br label %2164

2147:                                             ; preds = %2125, %2118
  %2148 = load i32, ptr %60, align 4, !tbaa !5
  %2149 = call ptr @__errno_location() #10
  store i32 %2148, ptr %2149, align 4, !tbaa !5
  %2150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2151 = load i32, ptr @test_count, align 4, !tbaa !5
  %2152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2153 = load i32, ptr %2152, align 4, !tbaa !5
  %2154 = call ptr @s2n_strerror(i32 noundef %2153, ptr noundef @.str.4)
  %2155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2156 = load i32, ptr %2155, align 4, !tbaa !5
  %2157 = call ptr @s2n_strerror_debug(i32 noundef %2156, ptr noundef @.str.4)
  %2158 = call ptr @__errno_location() #10
  %2159 = load i32, ptr %2158, align 4, !tbaa !5
  %2160 = call ptr @strerror(i32 noundef %2159) #9
  %2161 = call ptr @__errno_location() #10
  %2162 = load i32, ptr %2161, align 4, !tbaa !5
  %2163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2150, ptr noundef @.str.5, i32 noundef %2151, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 479, ptr noundef %2154, ptr noundef %2157, ptr noundef %2160, i32 noundef %2162) #9
  br label %2164

2164:                                             ; preds = %2147, %2130
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  br label %2165

2165:                                             ; preds = %2164
  br label %2166

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

2167:                                             ; No predecessors!
  br label %2168

2168:                                             ; preds = %2167
  br label %2169

2169:                                             ; preds = %2168, %2110
  br label %2170

2170:                                             ; preds = %2169
  br label %2171

2171:                                             ; preds = %2170
  br label %2172

2172:                                             ; preds = %2171
  %2173 = load i32, ptr @test_count, align 4, !tbaa !5
  %2174 = add nsw i32 %2173, 1
  store i32 %2174, ptr @test_count, align 4, !tbaa !5
  %2175 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2176 = load i32, ptr %2175, align 4, !tbaa !5
  %2177 = call ptr @s2n_strerror_debug(i32 noundef %2176, ptr noundef @.str.4)
  %2178 = icmp eq ptr %2177, null
  br i1 %2178, label %2179, label %2232

2179:                                             ; preds = %2172
  br label %2180

2180:                                             ; preds = %2179
  br label %2181

2181:                                             ; preds = %2180
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #9
  %2182 = call ptr @__errno_location() #10
  %2183 = load i32, ptr %2182, align 4, !tbaa !5
  store i32 %2183, ptr %61, align 4, !tbaa !5
  %2184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2185 = call i32 @s2n_print_stacktrace(ptr noundef %2184)
  %2186 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2187 = trunc i8 %2186 to i1
  br i1 %2187, label %2188, label %2210

2188:                                             ; preds = %2181
  %2189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2190 = call i32 @fileno(ptr noundef %2189) #9
  %2191 = call i32 @isatty(i32 noundef %2190) #9
  %2192 = icmp ne i32 %2191, 0
  br i1 %2192, label %2193, label %2210

2193:                                             ; preds = %2188
  %2194 = load i32, ptr %61, align 4, !tbaa !5
  %2195 = call ptr @__errno_location() #10
  store i32 %2194, ptr %2195, align 4, !tbaa !5
  %2196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2197 = load i32, ptr @test_count, align 4, !tbaa !5
  %2198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2199 = load i32, ptr %2198, align 4, !tbaa !5
  %2200 = call ptr @s2n_strerror(i32 noundef %2199, ptr noundef @.str.4)
  %2201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2202 = load i32, ptr %2201, align 4, !tbaa !5
  %2203 = call ptr @s2n_strerror_debug(i32 noundef %2202, ptr noundef @.str.4)
  %2204 = call ptr @__errno_location() #10
  %2205 = load i32, ptr %2204, align 4, !tbaa !5
  %2206 = call ptr @strerror(i32 noundef %2205) #9
  %2207 = call ptr @__errno_location() #10
  %2208 = load i32, ptr %2207, align 4, !tbaa !5
  %2209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2196, ptr noundef @.str.2, i32 noundef %2197, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 479, ptr noundef %2200, ptr noundef %2203, ptr noundef %2206, i32 noundef %2208) #9
  br label %2227

2210:                                             ; preds = %2188, %2181
  %2211 = load i32, ptr %61, align 4, !tbaa !5
  %2212 = call ptr @__errno_location() #10
  store i32 %2211, ptr %2212, align 4, !tbaa !5
  %2213 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2214 = load i32, ptr @test_count, align 4, !tbaa !5
  %2215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2216 = load i32, ptr %2215, align 4, !tbaa !5
  %2217 = call ptr @s2n_strerror(i32 noundef %2216, ptr noundef @.str.4)
  %2218 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2219 = load i32, ptr %2218, align 4, !tbaa !5
  %2220 = call ptr @s2n_strerror_debug(i32 noundef %2219, ptr noundef @.str.4)
  %2221 = call ptr @__errno_location() #10
  %2222 = load i32, ptr %2221, align 4, !tbaa !5
  %2223 = call ptr @strerror(i32 noundef %2222) #9
  %2224 = call ptr @__errno_location() #10
  %2225 = load i32, ptr %2224, align 4, !tbaa !5
  %2226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2213, ptr noundef @.str.5, i32 noundef %2214, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 479, ptr noundef %2217, ptr noundef %2220, ptr noundef %2223, i32 noundef %2225) #9
  br label %2227

2227:                                             ; preds = %2210, %2193
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #9
  br label %2228

2228:                                             ; preds = %2227
  br label %2229

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

2230:                                             ; No predecessors!
  br label %2231

2231:                                             ; preds = %2230
  br label %2232

2232:                                             ; preds = %2231, %2172
  br label %2233

2233:                                             ; preds = %2232
  br label %2234

2234:                                             ; preds = %2233
  br label %2235

2235:                                             ; preds = %2234
  %2236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2236, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2237 = call ptr @__errno_location() #10
  store i32 0, ptr %2237, align 4, !tbaa !5
  br label %2238

2238:                                             ; preds = %2235
  br label %2239

2239:                                             ; preds = %2238
  br label %2240

2240:                                             ; preds = %2239
  br label %2241

2241:                                             ; preds = %2240
  br label %2242

2242:                                             ; preds = %2241
  %2243 = load i32, ptr @test_count, align 4, !tbaa !5
  %2244 = add nsw i32 %2243, 1
  store i32 %2244, ptr @test_count, align 4, !tbaa !5
  %2245 = call i32 @s2n_hmac_free(ptr noundef %6)
  %2246 = icmp eq i32 %2245, -1
  br i1 %2246, label %2247, label %2300

2247:                                             ; preds = %2242
  br label %2248

2248:                                             ; preds = %2247
  br label %2249

2249:                                             ; preds = %2248
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #9
  %2250 = call ptr @__errno_location() #10
  %2251 = load i32, ptr %2250, align 4, !tbaa !5
  store i32 %2251, ptr %62, align 4, !tbaa !5
  %2252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2253 = call i32 @s2n_print_stacktrace(ptr noundef %2252)
  %2254 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2255 = trunc i8 %2254 to i1
  br i1 %2255, label %2256, label %2278

2256:                                             ; preds = %2249
  %2257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2258 = call i32 @fileno(ptr noundef %2257) #9
  %2259 = call i32 @isatty(i32 noundef %2258) #9
  %2260 = icmp ne i32 %2259, 0
  br i1 %2260, label %2261, label %2278

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

2278:                                             ; preds = %2256, %2249
  %2279 = load i32, ptr %62, align 4, !tbaa !5
  %2280 = call ptr @__errno_location() #10
  store i32 %2279, ptr %2280, align 4, !tbaa !5
  %2281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2282 = load i32, ptr @test_count, align 4, !tbaa !5
  %2283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2284 = load i32, ptr %2283, align 4, !tbaa !5
  %2285 = call ptr @s2n_strerror(i32 noundef %2284, ptr noundef @.str.4)
  %2286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2287 = load i32, ptr %2286, align 4, !tbaa !5
  %2288 = call ptr @s2n_strerror_debug(i32 noundef %2287, ptr noundef @.str.4)
  %2289 = call ptr @__errno_location() #10
  %2290 = load i32, ptr %2289, align 4, !tbaa !5
  %2291 = call ptr @strerror(i32 noundef %2290) #9
  %2292 = call ptr @__errno_location() #10
  %2293 = load i32, ptr %2292, align 4, !tbaa !5
  %2294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2281, ptr noundef @.str.5, i32 noundef %2282, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 481, ptr noundef %2285, ptr noundef %2288, ptr noundef %2291, i32 noundef %2293) #9
  br label %2295

2295:                                             ; preds = %2278, %2261
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  br label %2296

2296:                                             ; preds = %2295
  br label %2297

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

2298:                                             ; No predecessors!
  br label %2299

2299:                                             ; preds = %2298
  br label %2300

2300:                                             ; preds = %2299, %2242
  br label %2301

2301:                                             ; preds = %2300
  br label %2302

2302:                                             ; preds = %2301
  br label %2303

2303:                                             ; preds = %2302
  br label %2304

2304:                                             ; preds = %2303
  %2305 = call i32 @s2n_cleanup()
  %2306 = icmp eq i32 %2305, -1
  br i1 %2306, label %2307, label %2360

2307:                                             ; preds = %2304
  br label %2308

2308:                                             ; preds = %2307
  br label %2309

2309:                                             ; preds = %2308
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  %2310 = call ptr @__errno_location() #10
  %2311 = load i32, ptr %2310, align 4, !tbaa !5
  store i32 %2311, ptr %63, align 4, !tbaa !5
  %2312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2313 = call i32 @s2n_print_stacktrace(ptr noundef %2312)
  %2314 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2315 = trunc i8 %2314 to i1
  br i1 %2315, label %2316, label %2338

2316:                                             ; preds = %2309
  %2317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2318 = call i32 @fileno(ptr noundef %2317) #9
  %2319 = call i32 @isatty(i32 noundef %2318) #9
  %2320 = icmp ne i32 %2319, 0
  br i1 %2320, label %2321, label %2338

2321:                                             ; preds = %2316
  %2322 = load i32, ptr %63, align 4, !tbaa !5
  %2323 = call ptr @__errno_location() #10
  store i32 %2322, ptr %2323, align 4, !tbaa !5
  %2324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2325 = load i32, ptr @test_count, align 4, !tbaa !5
  %2326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2327 = load i32, ptr %2326, align 4, !tbaa !5
  %2328 = call ptr @s2n_strerror(i32 noundef %2327, ptr noundef @.str.4)
  %2329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2330 = load i32, ptr %2329, align 4, !tbaa !5
  %2331 = call ptr @s2n_strerror_debug(i32 noundef %2330, ptr noundef @.str.4)
  %2332 = call ptr @__errno_location() #10
  %2333 = load i32, ptr %2332, align 4, !tbaa !5
  %2334 = call ptr @strerror(i32 noundef %2333) #9
  %2335 = call ptr @__errno_location() #10
  %2336 = load i32, ptr %2335, align 4, !tbaa !5
  %2337 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2324, ptr noundef @.str.2, i32 noundef %2325, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 483, ptr noundef %2328, ptr noundef %2331, ptr noundef %2334, i32 noundef %2336) #9
  br label %2355

2338:                                             ; preds = %2316, %2309
  %2339 = load i32, ptr %63, align 4, !tbaa !5
  %2340 = call ptr @__errno_location() #10
  store i32 %2339, ptr %2340, align 4, !tbaa !5
  %2341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2342 = load i32, ptr @test_count, align 4, !tbaa !5
  %2343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2344 = load i32, ptr %2343, align 4, !tbaa !5
  %2345 = call ptr @s2n_strerror(i32 noundef %2344, ptr noundef @.str.4)
  %2346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2347 = load i32, ptr %2346, align 4, !tbaa !5
  %2348 = call ptr @s2n_strerror_debug(i32 noundef %2347, ptr noundef @.str.4)
  %2349 = call ptr @__errno_location() #10
  %2350 = load i32, ptr %2349, align 4, !tbaa !5
  %2351 = call ptr @strerror(i32 noundef %2350) #9
  %2352 = call ptr @__errno_location() #10
  %2353 = load i32, ptr %2352, align 4, !tbaa !5
  %2354 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2341, ptr noundef @.str.5, i32 noundef %2342, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 483, ptr noundef %2345, ptr noundef %2348, ptr noundef %2351, i32 noundef %2353) #9
  br label %2355

2355:                                             ; preds = %2338, %2321
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %2356

2356:                                             ; preds = %2355
  br label %2357

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

2358:                                             ; No predecessors!
  br label %2359

2359:                                             ; preds = %2358
  br label %2360

2360:                                             ; preds = %2359, %2304
  br label %2361

2361:                                             ; preds = %2360
  br label %2362

2362:                                             ; preds = %2361
  br label %2363

2363:                                             ; preds = %2362
  br label %2364

2364:                                             ; preds = %2363
  %2365 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %2366 = icmp eq i32 %2365, -1
  br i1 %2366, label %2367, label %2420

2367:                                             ; preds = %2364
  br label %2368

2368:                                             ; preds = %2367
  br label %2369

2369:                                             ; preds = %2368
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #9
  %2370 = call ptr @__errno_location() #10
  %2371 = load i32, ptr %2370, align 4, !tbaa !5
  store i32 %2371, ptr %64, align 4, !tbaa !5
  %2372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2373 = call i32 @s2n_print_stacktrace(ptr noundef %2372)
  %2374 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2375 = trunc i8 %2374 to i1
  br i1 %2375, label %2376, label %2398

2376:                                             ; preds = %2369
  %2377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2378 = call i32 @fileno(ptr noundef %2377) #9
  %2379 = call i32 @isatty(i32 noundef %2378) #9
  %2380 = icmp ne i32 %2379, 0
  br i1 %2380, label %2381, label %2398

2381:                                             ; preds = %2376
  %2382 = load i32, ptr %64, align 4, !tbaa !5
  %2383 = call ptr @__errno_location() #10
  store i32 %2382, ptr %2383, align 4, !tbaa !5
  %2384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2385 = load i32, ptr @test_count, align 4, !tbaa !5
  %2386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2387 = load i32, ptr %2386, align 4, !tbaa !5
  %2388 = call ptr @s2n_strerror(i32 noundef %2387, ptr noundef @.str.4)
  %2389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2390 = load i32, ptr %2389, align 4, !tbaa !5
  %2391 = call ptr @s2n_strerror_debug(i32 noundef %2390, ptr noundef @.str.4)
  %2392 = call ptr @__errno_location() #10
  %2393 = load i32, ptr %2392, align 4, !tbaa !5
  %2394 = call ptr @strerror(i32 noundef %2393) #9
  %2395 = call ptr @__errno_location() #10
  %2396 = load i32, ptr %2395, align 4, !tbaa !5
  %2397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2384, ptr noundef @.str.2, i32 noundef %2385, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 483, ptr noundef %2388, ptr noundef %2391, ptr noundef %2394, i32 noundef %2396) #9
  br label %2415

2398:                                             ; preds = %2376, %2369
  %2399 = load i32, ptr %64, align 4, !tbaa !5
  %2400 = call ptr @__errno_location() #10
  store i32 %2399, ptr %2400, align 4, !tbaa !5
  %2401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2402 = load i32, ptr @test_count, align 4, !tbaa !5
  %2403 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2404 = load i32, ptr %2403, align 4, !tbaa !5
  %2405 = call ptr @s2n_strerror(i32 noundef %2404, ptr noundef @.str.4)
  %2406 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2407 = load i32, ptr %2406, align 4, !tbaa !5
  %2408 = call ptr @s2n_strerror_debug(i32 noundef %2407, ptr noundef @.str.4)
  %2409 = call ptr @__errno_location() #10
  %2410 = load i32, ptr %2409, align 4, !tbaa !5
  %2411 = call ptr @strerror(i32 noundef %2410) #9
  %2412 = call ptr @__errno_location() #10
  %2413 = load i32, ptr %2412, align 4, !tbaa !5
  %2414 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2401, ptr noundef @.str.5, i32 noundef %2402, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 483, ptr noundef %2405, ptr noundef %2408, ptr noundef %2411, i32 noundef %2413) #9
  br label %2415

2415:                                             ; preds = %2398, %2381
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  br label %2416

2416:                                             ; preds = %2415
  br label %2417

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

2418:                                             ; No predecessors!
  br label %2419

2419:                                             ; preds = %2418
  br label %2420

2420:                                             ; preds = %2419, %2364
  br label %2421

2421:                                             ; preds = %2420
  br label %2422

2422:                                             ; preds = %2421
  %2423 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2424 = trunc i8 %2423 to i1
  br i1 %2424, label %2425, label %2441

2425:                                             ; preds = %2422
  %2426 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2427 = call i32 @fileno(ptr noundef %2426) #9
  %2428 = call i32 @isatty(i32 noundef %2427) #9
  %2429 = icmp ne i32 %2428, 0
  br i1 %2429, label %2430, label %2441

2430:                                             ; preds = %2425
  %2431 = load i32, ptr @test_count, align 4, !tbaa !5
  %2432 = icmp ne i32 %2431, 0
  br i1 %2432, label %2433, label %2437

2433:                                             ; preds = %2430
  %2434 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2435 = load i32, ptr @test_count, align 4, !tbaa !5
  %2436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2434, ptr noundef @.str.38, i32 noundef %2435) #9
  br label %2440

2437:                                             ; preds = %2430
  %2438 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2438, ptr noundef @.str.39) #9
  br label %2440

2440:                                             ; preds = %2437, %2433
  br label %2452

2441:                                             ; preds = %2425, %2422
  %2442 = load i32, ptr @test_count, align 4, !tbaa !5
  %2443 = icmp ne i32 %2442, 0
  br i1 %2443, label %2444, label %2448

2444:                                             ; preds = %2441
  %2445 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2446 = load i32, ptr @test_count, align 4, !tbaa !5
  %2447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2445, ptr noundef @.str.40, i32 noundef %2446) #9
  br label %2451

2448:                                             ; preds = %2441
  %2449 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2450 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2449, ptr noundef @.str.41) #9
  br label %2451

2451:                                             ; preds = %2448, %2444
  br label %2452

2452:                                             ; preds = %2451, %2440
  store i32 0, ptr %3, align 4
  store i32 1, ptr %40, align 4
  br label %2457

2453:                                             ; No predecessors!
  br label %2454

2454:                                             ; preds = %2453
  br label %2455

2455:                                             ; preds = %2454
  br label %2456

2456:                                             ; preds = %2455
  store i32 0, ptr %40, align 4
  br label %2457

2457:                                             ; preds = %2456, %2452
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 5101, ptr %50) #9
  br label %2458

2458:                                             ; preds = %2457, %1660
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 82, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 432, ptr %6) #9
  %2459 = load i32, ptr %40, align 4
  switch i32 %2459, label %2462 [
    i32 0, label %2460
    i32 1, label %2460
  ]

2460:                                             ; preds = %2458, %2458
  %2461 = load i32, ptr %3, align 4
  ret i32 %2461

2462:                                             ; preds = %2458
  unreachable
}

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

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

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

declare i32 @fflush(ptr noundef) #4

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #4

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

; Function Attrs: 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) #4

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

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

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

declare i32 @s2n_enable_atexit() #4

declare i32 @s2n_init() #4

declare i32 @s2n_disable_tls13_in_test(...) #4

declare zeroext i1 @s2n_is_in_fips_mode() #4

declare zeroext i1 @s2n_libcrypto_supports_hkdf(...) #4

declare i32 @s2n_hmac_new(ptr noundef) #4

declare i32 @s2n_blob_init(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @s2n_hkdf_extract(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

declare i32 @s2n_hmac_digest_size(i32 noundef, ptr noundef) #4

declare i32 @s2n_hkdf(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

declare i32 @s2n_calculate_stacktrace() #4

declare void @s2n_debug_info_reset() #4

declare zeroext i1 @s2n_libcrypto_is_awslc() #4

declare i32 @s2n_hmac_free(ptr noundef) #4

declare i32 @s2n_cleanup() #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !6, i64 84}
!17 = !{!"hkdf_test_vector", !6, i64 0, !7, i64 4, !6, i64 84, !7, i64 88, !6, i64 168, !7, i64 172, !6, i64 252, !7, i64 256, !6, i64 320, !7, i64 324, !6, i64 408}
!18 = !{!17, !6, i64 168}
!19 = !{!17, !6, i64 252}
!20 = !{!17, !6, i64 320}
!21 = !{!17, !6, i64 408}
!22 = !{!17, !6, i64 0}
!23 = !{!24, !10, i64 0}
!24 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!25 = !{!24, !6, i64 8}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!29, !29, i64 0}
!29 = !{!"long", !7, i64 0}
!30 = !{!31, !10, i64 0}
!31 = !{!"s2n_debug_info", !10, i64 0, !10, i64 8}
!32 = !{!31, !10, i64 8}


; 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.hkdf_test_vector = type { i32, [80 x i8], i32, [80 x i8], i32, [80 x i8], i32, [64 x i8], i32, [82 x i8], i32 }
%struct.s2n_hmac_state = type { i32, i16, i32, i16, i8, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, [128 x i8], [64 x i8] }
%struct.s2n_hash_state = type { ptr, i32, i8, i64, %union.anon }
%union.anon = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { ptr, ptr }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [25 x i8], align 1
@tests = external hidden global <{ { i32, <{ [22 x i8], [58 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, <{ [32 x i8], [32 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, [80 x i8], i32, [80 x i8], i32, [80 x i8], i32, <{ [32 x i8], [32 x i8] }>, i32, [82 x i8], i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, <{ [32 x i8], [32 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [11 x i8], [69 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, <{ [20 x i8], [44 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, [80 x i8], i32, [80 x i8], i32, [80 x i8], i32, <{ [20 x i8], [44 x i8] }>, i32, [82 x i8], i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, <{ [20 x i8], [44 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, <{ [20 x i8], [44 x i8] }>, i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 }, %struct.hkdf_test_vector, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [11 x i8], [69 x i8] }>, i32, <{ [13 x i8], [67 x i8] }>, i32, <{ [10 x i8], [70 x i8] }>, i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 }, { i32, <{ [22 x i8], [58 x i8] }>, i32, [80 x i8], i32, [80 x i8], i32, [64 x i8], i32, <{ [42 x i8], [40 x i8] }>, i32 } }>, align 16

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca %struct.s2n_hmac_state, align 8
  %4 = alloca [64 x i8], align 16
  %5 = alloca [82 x i8], align 16
  %6 = alloca %struct.s2n_blob, align 8
  %7 = alloca %struct.s2n_blob, align 8
  %8 = alloca %struct.s2n_blob, align 8
  %9 = alloca %struct.s2n_blob, align 8
  %10 = alloca %struct.s2n_blob, align 8
  %11 = alloca %struct.s2n_blob, align 8
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca i8, align 1
  %14 = alloca [10 x i8], align 1
  %15 = alloca %struct.s2n_blob, align 8
  %16 = alloca [64 x i8], align 16
  %17 = alloca %struct.s2n_blob, align 8
  %18 = alloca [5101 x i8], align 16
  %19 = alloca %struct.s2n_blob, align 8
  %20 = alloca %struct.s2n_blob, align 8
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %3) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(432) %3, i8 0, i64 432, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %4, i8 0, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 82, ptr nonnull %5) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(82) %5, i8 0, i64 82, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false)
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %21 = load ptr, ptr @stdout, align 8, !tbaa !9
  %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %21, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #10
  %23 = load ptr, ptr @stdout, align 8, !tbaa !9
  %24 = tail call i32 @fflush(ptr noundef %23)
  %25 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #10
  %26 = icmp eq i32 %25, -1
  br i1 %26, label %27, label %51

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

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

38:                                               ; preds = %34, %27
  br label %39

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

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

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

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

67:                                               ; preds = %63, %56
  br label %68

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

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

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

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

94:                                               ; preds = %90, %83
  br label %95

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

107:                                              ; preds = %80
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr @test_count, align 4, !tbaa !5
  %110 = tail call i32 (...) @s2n_disable_tls13_in_test() #10
  %111 = icmp eq i32 %110, -1
  br i1 %111, label %112, label %136

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

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

123:                                              ; preds = %119, %112
  br label %124

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

136:                                              ; preds = %107
  %137 = tail call zeroext i1 @s2n_is_in_fips_mode() #10
  br i1 %137, label %138, label %166

138:                                              ; preds = %136
  %139 = load i32, ptr @test_count, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr @test_count, align 4, !tbaa !5
  %141 = tail call zeroext i1 (...) @s2n_libcrypto_supports_hkdf() #10
  br i1 %141, label %166, label %142

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

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

153:                                              ; preds = %149, %142
  br label %154

154:                                              ; preds = %149, %153
  %.str.5.sink192 = phi ptr [ @.str.5, %153 ], [ @.str.2, %149 ]
  store i32 %144, ptr %143, align 4, !tbaa !5
  %155 = load ptr, ptr @stderr, align 8, !tbaa !9
  %156 = load i32, ptr @test_count, align 4, !tbaa !5
  %157 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = tail call ptr @s2n_strerror(i32 noundef %158, ptr noundef nonnull @.str.4) #10
  %160 = load i32, ptr %157, align 4, !tbaa !5
  %161 = tail call ptr @s2n_strerror_debug(i32 noundef %160, ptr noundef nonnull @.str.4) #10
  %162 = load i32, ptr %143, align 4, !tbaa !5
  %163 = tail call ptr @strerror(i32 noundef %162) #10
  %164 = load i32, ptr %143, align 4, !tbaa !5
  %165 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %155, ptr noundef nonnull %.str.5.sink192, i32 noundef %156, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 422, ptr noundef %159, ptr noundef %161, ptr noundef %163, i32 noundef %164) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

166:                                              ; preds = %136, %138
  %167 = load i32, ptr @test_count, align 4, !tbaa !5
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr @test_count, align 4, !tbaa !5
  %169 = call i32 @s2n_hmac_new(ptr noundef nonnull %3) #10
  %170 = icmp eq i32 %169, -1
  br i1 %170, label %174, label %.preheader

.preheader:                                       ; preds = %166
  %171 = getelementptr inbounds i8, ptr %9, i64 8
  %172 = getelementptr inbounds i8, ptr %11, i64 8
  %173 = getelementptr inbounds i8, ptr %10, i64 8
  %.pre = load i32, ptr @test_count, align 4, !tbaa !5
  br label %201

174:                                              ; preds = %166
  %175 = tail call ptr @__errno_location() #11
  %176 = load i32, ptr %175, align 4, !tbaa !5
  %177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %178 = call i32 @s2n_print_stacktrace(ptr noundef %177) #10
  %179 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %180 = trunc nuw i8 %179 to i1
  br i1 %180, label %181, label %185

181:                                              ; preds = %174
  %182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %183 = call i32 @fileno(ptr noundef %182) #10
  %184 = call i32 @isatty(i32 noundef %183) #10
  %.not135 = icmp eq i32 %184, 0
  br i1 %.not135, label %185, label %186

185:                                              ; preds = %181, %174
  br label %186

186:                                              ; preds = %181, %185
  %.str.5.sink203 = phi ptr [ @.str.5, %185 ], [ @.str.2, %181 ]
  store i32 %176, ptr %175, align 4, !tbaa !5
  %187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %188 = load i32, ptr @test_count, align 4, !tbaa !5
  %189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %190 = load i32, ptr %189, align 4, !tbaa !5
  %191 = call ptr @s2n_strerror(i32 noundef %190, ptr noundef nonnull @.str.4) #10
  %192 = load i32, ptr %189, align 4, !tbaa !5
  %193 = call ptr @s2n_strerror_debug(i32 noundef %192, ptr noundef nonnull @.str.4) #10
  %194 = load i32, ptr %175, align 4, !tbaa !5
  %195 = call ptr @strerror(i32 noundef %194) #10
  %196 = load i32, ptr %175, align 4, !tbaa !5
  %197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %187, ptr noundef nonnull %.str.5.sink203, i32 noundef %188, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 425, ptr noundef %191, ptr noundef %193, ptr noundef %195, i32 noundef %196) #12
  call void @exit(i32 noundef 1) #13
  unreachable

198:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %14) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %14, i8 0, i64 10, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false)
  %199 = call i32 @s2n_blob_init(ptr noundef nonnull %15, ptr noundef nonnull %14, i32 noundef 10) #10
  %200 = icmp sgt i32 %199, -1
  br i1 %200, label %602, label %.thread

.thread:                                          ; preds = %198
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %14) #10
  br label %1062

201:                                              ; preds = %.preheader, %601
  %202 = phi i32 [ %.pre, %.preheader ], [ %572, %601 ]
  %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %601 ]
  %203 = getelementptr inbounds [12 x %struct.hkdf_test_vector], ptr @tests, i64 0, i64 %indvars.iv
  %204 = add nsw i32 %202, 1
  store i32 %204, ptr @test_count, align 4, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %203, i64 4
  %206 = getelementptr inbounds i8, ptr %203, i64 84
  %207 = load i32, ptr %206, align 4, !tbaa !15
  %208 = call i32 @s2n_blob_init(ptr noundef nonnull %6, ptr noundef nonnull %205, i32 noundef %207) #10
  %209 = icmp eq i32 %208, -1
  br i1 %209, label %210, label %234

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

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

221:                                              ; preds = %217, %210
  br label %222

222:                                              ; preds = %217, %221
  %.str.5.sink214 = phi ptr [ @.str.5, %221 ], [ @.str.2, %217 ]
  store i32 %212, ptr %211, align 4, !tbaa !5
  %223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %224 = load i32, ptr @test_count, align 4, !tbaa !5
  %225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror(i32 noundef %226, ptr noundef nonnull @.str.4) #10
  %228 = load i32, ptr %225, align 4, !tbaa !5
  %229 = call ptr @s2n_strerror_debug(i32 noundef %228, ptr noundef nonnull @.str.4) #10
  %230 = load i32, ptr %211, align 4, !tbaa !5
  %231 = call ptr @strerror(i32 noundef %230) #10
  %232 = load i32, ptr %211, align 4, !tbaa !5
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %223, ptr noundef nonnull %.str.5.sink214, i32 noundef %224, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 430, ptr noundef %227, ptr noundef %229, ptr noundef %231, i32 noundef %232) #12
  call void @exit(i32 noundef 1) #13
  unreachable

234:                                              ; preds = %201
  %235 = load i32, ptr @test_count, align 4, !tbaa !5
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr @test_count, align 4, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %203, i64 88
  %238 = getelementptr inbounds i8, ptr %203, i64 168
  %239 = load i32, ptr %238, align 4, !tbaa !17
  %240 = call i32 @s2n_blob_init(ptr noundef nonnull %7, ptr noundef nonnull %237, i32 noundef %239) #10
  %241 = icmp eq i32 %240, -1
  br i1 %241, label %242, label %266

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

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

253:                                              ; preds = %249, %242
  br label %254

254:                                              ; preds = %249, %253
  %.str.5.sink225 = phi ptr [ @.str.5, %253 ], [ @.str.2, %249 ]
  store i32 %244, ptr %243, align 4, !tbaa !5
  %255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %256 = load i32, ptr @test_count, align 4, !tbaa !5
  %257 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = call ptr @s2n_strerror(i32 noundef %258, ptr noundef nonnull @.str.4) #10
  %260 = load i32, ptr %257, align 4, !tbaa !5
  %261 = call ptr @s2n_strerror_debug(i32 noundef %260, ptr noundef nonnull @.str.4) #10
  %262 = load i32, ptr %243, align 4, !tbaa !5
  %263 = call ptr @strerror(i32 noundef %262) #10
  %264 = load i32, ptr %243, align 4, !tbaa !5
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %255, ptr noundef nonnull %.str.5.sink225, i32 noundef %256, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 431, ptr noundef %259, ptr noundef %261, ptr noundef %263, i32 noundef %264) #12
  call void @exit(i32 noundef 1) #13
  unreachable

266:                                              ; preds = %234
  %267 = load i32, ptr @test_count, align 4, !tbaa !5
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr @test_count, align 4, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %203, i64 172
  %270 = getelementptr inbounds i8, ptr %203, i64 252
  %271 = load i32, ptr %270, align 4, !tbaa !18
  %272 = call i32 @s2n_blob_init(ptr noundef nonnull %8, ptr noundef nonnull %269, i32 noundef %271) #10
  %273 = icmp eq i32 %272, -1
  br i1 %273, label %274, label %298

274:                                              ; preds = %266
  %275 = tail call ptr @__errno_location() #11
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %278 = call i32 @s2n_print_stacktrace(ptr noundef %277) #10
  %279 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %280 = trunc nuw i8 %279 to i1
  br i1 %280, label %281, label %285

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

285:                                              ; preds = %281, %274
  br label %286

286:                                              ; preds = %281, %285
  %.str.5.sink236 = phi ptr [ @.str.5, %285 ], [ @.str.2, %281 ]
  store i32 %276, ptr %275, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = load i32, ptr @test_count, align 4, !tbaa !5
  %289 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %291 = call ptr @s2n_strerror(i32 noundef %290, ptr noundef nonnull @.str.4) #10
  %292 = load i32, ptr %289, align 4, !tbaa !5
  %293 = call ptr @s2n_strerror_debug(i32 noundef %292, ptr noundef nonnull @.str.4) #10
  %294 = load i32, ptr %275, align 4, !tbaa !5
  %295 = call ptr @strerror(i32 noundef %294) #10
  %296 = load i32, ptr %275, align 4, !tbaa !5
  %297 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %287, ptr noundef nonnull %.str.5.sink236, i32 noundef %288, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 432, ptr noundef %291, ptr noundef %293, ptr noundef %295, i32 noundef %296) #12
  call void @exit(i32 noundef 1) #13
  unreachable

298:                                              ; preds = %266
  %299 = load i32, ptr @test_count, align 4, !tbaa !5
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr @test_count, align 4, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %203, i64 256
  %302 = getelementptr inbounds i8, ptr %203, i64 320
  %303 = load i32, ptr %302, align 4, !tbaa !19
  %304 = call i32 @s2n_blob_init(ptr noundef nonnull %9, ptr noundef nonnull %301, i32 noundef %303) #10
  %305 = icmp eq i32 %304, -1
  br i1 %305, label %306, label %330

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

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

317:                                              ; preds = %313, %306
  br label %318

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

330:                                              ; preds = %298
  %331 = load i32, ptr @test_count, align 4, !tbaa !5
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr @test_count, align 4, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %203, i64 324
  %334 = getelementptr inbounds i8, ptr %203, i64 408
  %335 = load i32, ptr %334, align 4, !tbaa !20
  %336 = call i32 @s2n_blob_init(ptr noundef nonnull %10, ptr noundef nonnull %333, i32 noundef %335) #10
  %337 = icmp eq i32 %336, -1
  br i1 %337, label %338, label %362

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

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

349:                                              ; preds = %345, %338
  br label %350

350:                                              ; preds = %345, %349
  %.str.5.sink258 = phi ptr [ @.str.5, %349 ], [ @.str.2, %345 ]
  store i32 %340, ptr %339, align 4, !tbaa !5
  %351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %352 = load i32, ptr @test_count, align 4, !tbaa !5
  %353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = call ptr @s2n_strerror(i32 noundef %354, ptr noundef nonnull @.str.4) #10
  %356 = load i32, ptr %353, align 4, !tbaa !5
  %357 = call ptr @s2n_strerror_debug(i32 noundef %356, ptr noundef nonnull @.str.4) #10
  %358 = load i32, ptr %339, align 4, !tbaa !5
  %359 = call ptr @strerror(i32 noundef %358) #10
  %360 = load i32, ptr %339, align 4, !tbaa !5
  %361 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %351, ptr noundef nonnull %.str.5.sink258, i32 noundef %352, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 434, ptr noundef %355, ptr noundef %357, ptr noundef %359, i32 noundef %360) #12
  call void @exit(i32 noundef 1) #13
  unreachable

362:                                              ; preds = %330
  %363 = load i32, ptr @test_count, align 4, !tbaa !5
  %364 = add nsw i32 %363, 1
  store i32 %364, ptr @test_count, align 4, !tbaa !5
  %365 = call i32 @s2n_blob_init(ptr noundef nonnull %11, ptr noundef nonnull %4, i32 noundef 64) #10
  %366 = icmp eq i32 %365, -1
  br i1 %366, label %367, label %391

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

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

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

379:                                              ; preds = %374, %378
  %.str.5.sink269 = phi ptr [ @.str.5, %378 ], [ @.str.2, %374 ]
  store i32 %369, ptr %368, align 4, !tbaa !5
  %380 = load ptr, ptr @stderr, align 8, !tbaa !9
  %381 = load i32, ptr @test_count, align 4, !tbaa !5
  %382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %383 = load i32, ptr %382, align 4, !tbaa !5
  %384 = call ptr @s2n_strerror(i32 noundef %383, ptr noundef nonnull @.str.4) #10
  %385 = load i32, ptr %382, align 4, !tbaa !5
  %386 = call ptr @s2n_strerror_debug(i32 noundef %385, ptr noundef nonnull @.str.4) #10
  %387 = load i32, ptr %368, align 4, !tbaa !5
  %388 = call ptr @strerror(i32 noundef %387) #10
  %389 = load i32, ptr %368, align 4, !tbaa !5
  %390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %380, ptr noundef nonnull %.str.5.sink269, i32 noundef %381, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 435, ptr noundef %384, ptr noundef %386, ptr noundef %388, i32 noundef %389) #12
  call void @exit(i32 noundef 1) #13
  unreachable

391:                                              ; preds = %362
  %392 = load i32, ptr @test_count, align 4, !tbaa !5
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr @test_count, align 4, !tbaa !5
  %394 = call i32 @s2n_blob_init(ptr noundef nonnull %12, ptr noundef nonnull %5, i32 noundef 82) #10
  %395 = icmp eq i32 %394, -1
  br i1 %395, label %396, label %420

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

403:                                              ; preds = %396
  %404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %405 = call i32 @fileno(ptr noundef %404) #10
  %406 = call i32 @isatty(i32 noundef %405) #10
  %.not128 = icmp eq i32 %406, 0
  br i1 %.not128, label %407, label %408

407:                                              ; preds = %403, %396
  br label %408

408:                                              ; preds = %403, %407
  %.str.5.sink280 = phi ptr [ @.str.5, %407 ], [ @.str.2, %403 ]
  store i32 %398, ptr %397, align 4, !tbaa !5
  %409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %410 = load i32, ptr @test_count, align 4, !tbaa !5
  %411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = call ptr @s2n_strerror(i32 noundef %412, ptr noundef nonnull @.str.4) #10
  %414 = load i32, ptr %411, align 4, !tbaa !5
  %415 = call ptr @s2n_strerror_debug(i32 noundef %414, ptr noundef nonnull @.str.4) #10
  %416 = load i32, ptr %397, align 4, !tbaa !5
  %417 = call ptr @strerror(i32 noundef %416) #10
  %418 = load i32, ptr %397, align 4, !tbaa !5
  %419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %409, ptr noundef nonnull %.str.5.sink280, i32 noundef %410, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 436, ptr noundef %413, ptr noundef %415, ptr noundef %417, i32 noundef %418) #12
  call void @exit(i32 noundef 1) #13
  unreachable

420:                                              ; preds = %391
  %421 = load i32, ptr @test_count, align 4, !tbaa !5
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr @test_count, align 4, !tbaa !5
  %423 = load i32, ptr %203, align 4, !tbaa !21
  %424 = call i32 @s2n_hkdf_extract(ptr noundef nonnull %3, i32 noundef %423, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %11) #10
  %425 = icmp eq i32 %424, -1
  br i1 %425, label %426, label %450

426:                                              ; preds = %420
  %427 = tail call ptr @__errno_location() #11
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %430 = call i32 @s2n_print_stacktrace(ptr noundef %429) #10
  %431 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %432 = trunc nuw i8 %431 to i1
  br i1 %432, label %433, label %437

433:                                              ; preds = %426
  %434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %435 = call i32 @fileno(ptr noundef %434) #10
  %436 = call i32 @isatty(i32 noundef %435) #10
  %.not127 = icmp eq i32 %436, 0
  br i1 %.not127, label %437, label %438

437:                                              ; preds = %433, %426
  br label %438

438:                                              ; preds = %433, %437
  %.str.5.sink291 = phi ptr [ @.str.5, %437 ], [ @.str.2, %433 ]
  store i32 %428, ptr %427, align 4, !tbaa !5
  %439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %440 = load i32, ptr @test_count, align 4, !tbaa !5
  %441 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %442 = load i32, ptr %441, align 4, !tbaa !5
  %443 = call ptr @s2n_strerror(i32 noundef %442, ptr noundef nonnull @.str.4) #10
  %444 = load i32, ptr %441, align 4, !tbaa !5
  %445 = call ptr @s2n_strerror_debug(i32 noundef %444, ptr noundef nonnull @.str.4) #10
  %446 = load i32, ptr %427, align 4, !tbaa !5
  %447 = call ptr @strerror(i32 noundef %446) #10
  %448 = load i32, ptr %427, align 4, !tbaa !5
  %449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %439, ptr noundef nonnull %.str.5.sink291, i32 noundef %440, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 438, ptr noundef %443, ptr noundef %445, ptr noundef %447, i32 noundef %448) #12
  call void @exit(i32 noundef 1) #13
  unreachable

450:                                              ; preds = %420
  %451 = load i32, ptr @test_count, align 4, !tbaa !5
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr @test_count, align 4, !tbaa !5
  %453 = load ptr, ptr %9, align 8, !tbaa !22
  %454 = load i32, ptr %171, align 8, !tbaa !24
  %455 = zext i32 %454 to i64
  %bcmp = call i32 @bcmp(ptr nonnull %4, ptr %453, i64 %455)
  %456 = icmp eq i32 %bcmp, 0
  br i1 %456, label %481, label %457

457:                                              ; preds = %450
  %458 = tail call ptr @__errno_location() #11
  %459 = load i32, ptr %458, align 4, !tbaa !5
  %460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %461 = call i32 @s2n_print_stacktrace(ptr noundef %460) #10
  %462 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %463 = trunc nuw i8 %462 to i1
  br i1 %463, label %464, label %468

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

468:                                              ; preds = %464, %457
  br label %469

469:                                              ; preds = %464, %468
  %.str.5.sink302 = phi ptr [ @.str.5, %468 ], [ @.str.2, %464 ]
  store i32 %459, ptr %458, align 4, !tbaa !5
  %470 = load ptr, ptr @stderr, align 8, !tbaa !9
  %471 = load i32, ptr @test_count, align 4, !tbaa !5
  %472 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = call ptr @s2n_strerror(i32 noundef %473, ptr noundef nonnull @.str.4) #10
  %475 = load i32, ptr %472, align 4, !tbaa !5
  %476 = call ptr @s2n_strerror_debug(i32 noundef %475, ptr noundef nonnull @.str.4) #10
  %477 = load i32, ptr %458, align 4, !tbaa !5
  %478 = call ptr @strerror(i32 noundef %477) #10
  %479 = load i32, ptr %458, align 4, !tbaa !5
  %480 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %470, ptr noundef nonnull %.str.5.sink302, i32 noundef %471, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 439, ptr noundef %474, ptr noundef %476, ptr noundef %478, i32 noundef %479) #12
  call void @exit(i32 noundef 1) #13
  unreachable

481:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #10
  store i8 0, ptr %13, align 1, !tbaa !25
  %482 = add nsw i32 %451, 2
  store i32 %482, ptr @test_count, align 4, !tbaa !5
  %483 = load i32, ptr %203, align 4, !tbaa !21
  %484 = call i32 @s2n_hmac_digest_size(i32 noundef %483, ptr noundef nonnull %13) #10
  %485 = icmp eq i32 %484, -1
  br i1 %485, label %486, label %510

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

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

497:                                              ; preds = %493, %486
  br label %498

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

510:                                              ; preds = %481
  %511 = load i32, ptr @test_count, align 4, !tbaa !5
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr @test_count, align 4, !tbaa !5
  %513 = load i32, ptr %172, align 8, !tbaa !24
  %514 = load i8, ptr %13, align 1, !tbaa !25
  %515 = zext i8 %514 to i32
  %516 = icmp eq i32 %513, %515
  br i1 %516, label %541, label %517

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

524:                                              ; preds = %517
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = call i32 @fileno(ptr noundef %525) #10
  %527 = call i32 @isatty(i32 noundef %526) #10
  %.not122 = icmp eq i32 %527, 0
  br i1 %.not122, label %528, label %529

528:                                              ; preds = %524, %517
  br label %529

529:                                              ; preds = %524, %528
  %.str.5.sink324 = phi ptr [ @.str.5, %528 ], [ @.str.2, %524 ]
  store i32 %519, ptr %518, align 4, !tbaa !5
  %530 = load ptr, ptr @stderr, align 8, !tbaa !9
  %531 = load i32, ptr @test_count, align 4, !tbaa !5
  %532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %533 = load i32, ptr %532, align 4, !tbaa !5
  %534 = call ptr @s2n_strerror(i32 noundef %533, ptr noundef nonnull @.str.4) #10
  %535 = load i32, ptr %532, align 4, !tbaa !5
  %536 = call ptr @s2n_strerror_debug(i32 noundef %535, ptr noundef nonnull @.str.4) #10
  %537 = load i32, ptr %518, align 4, !tbaa !5
  %538 = call ptr @strerror(i32 noundef %537) #10
  %539 = load i32, ptr %518, align 4, !tbaa !5
  %540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %530, ptr noundef nonnull %.str.5.sink324, i32 noundef %531, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 444, ptr noundef %534, ptr noundef %536, ptr noundef %538, i32 noundef %539) #12
  call void @exit(i32 noundef 1) #13
  unreachable

541:                                              ; preds = %510
  %542 = add nsw i32 %511, 2
  store i32 %542, ptr @test_count, align 4, !tbaa !5
  %543 = load i32, ptr %203, align 4, !tbaa !21
  %544 = call i32 @s2n_hkdf(ptr noundef nonnull %3, i32 noundef %543, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %8, ptr noundef nonnull %12) #10
  %545 = icmp eq i32 %544, -1
  br i1 %545, label %546, label %570

546:                                              ; preds = %541
  %547 = tail call ptr @__errno_location() #11
  %548 = load i32, ptr %547, align 4, !tbaa !5
  %549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %550 = call i32 @s2n_print_stacktrace(ptr noundef %549) #10
  %551 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %552 = trunc nuw i8 %551 to i1
  br i1 %552, label %553, label %557

553:                                              ; preds = %546
  %554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %555 = call i32 @fileno(ptr noundef %554) #10
  %556 = call i32 @isatty(i32 noundef %555) #10
  %.not125 = icmp eq i32 %556, 0
  br i1 %.not125, label %557, label %558

557:                                              ; preds = %553, %546
  br label %558

558:                                              ; preds = %553, %557
  %.str.5.sink335 = phi ptr [ @.str.5, %557 ], [ @.str.2, %553 ]
  store i32 %548, ptr %547, align 4, !tbaa !5
  %559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %560 = load i32, ptr @test_count, align 4, !tbaa !5
  %561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %562 = load i32, ptr %561, align 4, !tbaa !5
  %563 = call ptr @s2n_strerror(i32 noundef %562, ptr noundef nonnull @.str.4) #10
  %564 = load i32, ptr %561, align 4, !tbaa !5
  %565 = call ptr @s2n_strerror_debug(i32 noundef %564, ptr noundef nonnull @.str.4) #10
  %566 = load i32, ptr %547, align 4, !tbaa !5
  %567 = call ptr @strerror(i32 noundef %566) #10
  %568 = load i32, ptr %547, align 4, !tbaa !5
  %569 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %559, ptr noundef nonnull %.str.5.sink335, i32 noundef %560, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 446, ptr noundef %563, ptr noundef %565, ptr noundef %567, i32 noundef %568) #12
  call void @exit(i32 noundef 1) #13
  unreachable

570:                                              ; preds = %541
  %571 = load i32, ptr @test_count, align 4, !tbaa !5
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr @test_count, align 4, !tbaa !5
  %573 = load ptr, ptr %10, align 8, !tbaa !22
  %574 = load i32, ptr %173, align 8, !tbaa !24
  %575 = zext i32 %574 to i64
  %bcmp123 = call i32 @bcmp(ptr nonnull %5, ptr %573, i64 %575)
  %576 = icmp eq i32 %bcmp123, 0
  br i1 %576, label %601, label %577

577:                                              ; preds = %570
  %578 = tail call ptr @__errno_location() #11
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %581 = call i32 @s2n_print_stacktrace(ptr noundef %580) #10
  %582 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %583 = trunc nuw i8 %582 to i1
  br i1 %583, label %584, label %588

584:                                              ; preds = %577
  %585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %586 = call i32 @fileno(ptr noundef %585) #10
  %587 = call i32 @isatty(i32 noundef %586) #10
  %.not124 = icmp eq i32 %587, 0
  br i1 %.not124, label %588, label %589

588:                                              ; preds = %584, %577
  br label %589

589:                                              ; preds = %584, %588
  %.str.5.sink346 = phi ptr [ @.str.5, %588 ], [ @.str.2, %584 ]
  store i32 %579, ptr %578, align 4, !tbaa !5
  %590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %591 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %593, ptr noundef nonnull @.str.4) #10
  %595 = load i32, ptr %592, align 4, !tbaa !5
  %596 = call ptr @s2n_strerror_debug(i32 noundef %595, ptr noundef nonnull @.str.4) #10
  %597 = load i32, ptr %578, align 4, !tbaa !5
  %598 = call ptr @strerror(i32 noundef %597) #10
  %599 = load i32, ptr %578, align 4, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %590, ptr noundef nonnull %.str.5.sink346, i32 noundef %591, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 447, ptr noundef %594, ptr noundef %596, ptr noundef %598, i32 noundef %599) #12
  call void @exit(i32 noundef 1) #13
  unreachable

601:                                              ; preds = %570
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 12
  br i1 %exitcond.not, label %198, label %201, !llvm.loop !26

602:                                              ; preds = %198
  %603 = load i32, ptr @test_count, align 4, !tbaa !5
  %604 = add nsw i32 %603, 1
  store i32 %604, ptr @test_count, align 4, !tbaa !5
  %605 = call i32 @s2n_hkdf_extract(ptr noundef nonnull %3, i32 noundef 6, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %15) #10
  %606 = icmp eq i32 %605, -1
  br i1 %606, label %631, label %607

607:                                              ; preds = %602
  %608 = tail call ptr @__errno_location() #11
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %611 = call i32 @s2n_print_stacktrace(ptr noundef %610) #10
  %612 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %613 = trunc nuw i8 %612 to i1
  br i1 %613, label %614, label %618

614:                                              ; preds = %607
  %615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %616 = call i32 @fileno(ptr noundef %615) #10
  %617 = call i32 @isatty(i32 noundef %616) #10
  %.not102 = icmp eq i32 %617, 0
  br i1 %.not102, label %618, label %619

618:                                              ; preds = %614, %607
  br label %619

619:                                              ; preds = %614, %618
  %.str.5.sink357 = phi ptr [ @.str.5, %618 ], [ @.str.2, %614 ]
  store i32 %609, ptr %608, align 4, !tbaa !5
  %620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %621 = load i32, ptr @test_count, align 4, !tbaa !5
  %622 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %623 = load i32, ptr %622, align 4, !tbaa !5
  %624 = call ptr @s2n_strerror(i32 noundef %623, ptr noundef nonnull @.str.4) #10
  %625 = load i32, ptr %622, align 4, !tbaa !5
  %626 = call ptr @s2n_strerror_debug(i32 noundef %625, ptr noundef nonnull @.str.4) #10
  %627 = load i32, ptr %608, align 4, !tbaa !5
  %628 = call ptr @strerror(i32 noundef %627) #10
  %629 = load i32, ptr %608, align 4, !tbaa !5
  %630 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %620, ptr noundef nonnull %.str.5.sink357, i32 noundef %621, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 454, ptr noundef %624, ptr noundef %626, ptr noundef %628, i32 noundef %629) #12
  call void @exit(i32 noundef 1) #13
  unreachable

631:                                              ; preds = %602
  %632 = load i32, ptr @test_count, align 4, !tbaa !5
  %633 = add nsw i32 %632, 1
  store i32 %633, ptr @test_count, align 4, !tbaa !5
  %634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %635 = load i32, ptr %634, align 4, !tbaa !5
  %636 = icmp eq i32 %635, 402653215
  br i1 %636, label %660, label %637

637:                                              ; preds = %631
  %638 = tail call ptr @__errno_location() #11
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = load ptr, ptr @stderr, align 8, !tbaa !9
  %641 = call i32 @s2n_print_stacktrace(ptr noundef %640) #10
  %642 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %643 = trunc nuw i8 %642 to i1
  br i1 %643, label %644, label %648

644:                                              ; preds = %637
  %645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %646 = call i32 @fileno(ptr noundef %645) #10
  %647 = call i32 @isatty(i32 noundef %646) #10
  %.not103 = icmp eq i32 %647, 0
  br i1 %.not103, label %648, label %649

648:                                              ; preds = %644, %637
  br label %649

649:                                              ; preds = %644, %648
  %.str.5.sink368 = phi ptr [ @.str.5, %648 ], [ @.str.2, %644 ]
  store i32 %639, ptr %638, align 4, !tbaa !5
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = load i32, ptr @test_count, align 4, !tbaa !5
  %652 = load i32, ptr %634, align 4, !tbaa !5
  %653 = call ptr @s2n_strerror(i32 noundef %652, ptr noundef nonnull @.str.4) #10
  %654 = load i32, ptr %634, align 4, !tbaa !5
  %655 = call ptr @s2n_strerror_debug(i32 noundef %654, ptr noundef nonnull @.str.4) #10
  %656 = load i32, ptr %638, align 4, !tbaa !5
  %657 = call ptr @strerror(i32 noundef %656) #10
  %658 = load i32, ptr %638, align 4, !tbaa !5
  %659 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %650, ptr noundef nonnull %.str.5.sink368, i32 noundef %651, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 454, ptr noundef %653, ptr noundef %655, ptr noundef %657, i32 noundef %658) #12
  call void @exit(i32 noundef 1) #13
  unreachable

660:                                              ; preds = %631
  %661 = add nsw i32 %632, 2
  store i32 %661, ptr @test_count, align 4, !tbaa !5
  %662 = call ptr @s2n_strerror_debug(i32 noundef 402653215, ptr noundef nonnull @.str.4) #10
  %663 = icmp eq ptr %662, null
  br i1 %663, label %664, label %687

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

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

675:                                              ; preds = %671, %664
  br label %676

676:                                              ; preds = %671, %675
  %.str.5.sink377 = phi ptr [ @.str.5, %675 ], [ @.str.2, %671 ]
  store i32 %666, ptr %665, align 4, !tbaa !5
  %677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %678 = load i32, ptr @test_count, align 4, !tbaa !5
  %679 = load i32, ptr %634, align 4, !tbaa !5
  %680 = call ptr @s2n_strerror(i32 noundef %679, ptr noundef nonnull @.str.4) #10
  %681 = load i32, ptr %634, align 4, !tbaa !5
  %682 = call ptr @s2n_strerror_debug(i32 noundef %681, ptr noundef nonnull @.str.4) #10
  %683 = load i32, ptr %665, align 4, !tbaa !5
  %684 = call ptr @strerror(i32 noundef %683) #10
  %685 = load i32, ptr %665, align 4, !tbaa !5
  %686 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %677, ptr noundef nonnull %.str.5.sink377, i32 noundef %678, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 454, ptr noundef %680, ptr noundef %682, ptr noundef %684, i32 noundef %685) #12
  call void @exit(i32 noundef 1) #13
  unreachable

687:                                              ; preds = %660
  store i32 0, ptr %634, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  %688 = tail call ptr @__errno_location() #11
  store i32 0, ptr %688, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, i8 0, i64 24, i1 false)
  %689 = call i32 @s2n_blob_init(ptr noundef nonnull %17, ptr noundef nonnull %16, i32 noundef 64) #10
  %690 = icmp sgt i32 %689, -1
  br i1 %690, label %691, label %718

691:                                              ; preds = %687
  %692 = load i32, ptr @test_count, align 4, !tbaa !5
  %693 = add nsw i32 %692, 1
  store i32 %693, ptr @test_count, align 4, !tbaa !5
  %694 = call i32 @s2n_hkdf_extract(ptr noundef nonnull %3, i32 noundef 6, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %17) #10
  %695 = icmp eq i32 %694, -1
  br i1 %695, label %696, label %719

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

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

706:                                              ; preds = %702, %696
  br label %707

707:                                              ; preds = %702, %706
  %.str.5.sink386 = phi ptr [ @.str.5, %706 ], [ @.str.2, %702 ]
  store i32 %697, ptr %688, align 4, !tbaa !5
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = load i32, ptr @test_count, align 4, !tbaa !5
  %710 = load i32, ptr %634, align 4, !tbaa !5
  %711 = call ptr @s2n_strerror(i32 noundef %710, ptr noundef nonnull @.str.4) #10
  %712 = load i32, ptr %634, align 4, !tbaa !5
  %713 = call ptr @s2n_strerror_debug(i32 noundef %712, ptr noundef nonnull @.str.4) #10
  %714 = load i32, ptr %688, align 4, !tbaa !5
  %715 = call ptr @strerror(i32 noundef %714) #10
  %716 = load i32, ptr %688, align 4, !tbaa !5
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %708, ptr noundef nonnull %.str.5.sink386, i32 noundef %709, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 458, ptr noundef %711, ptr noundef %713, ptr noundef %715, i32 noundef %716) #12
  call void @exit(i32 noundef 1) #13
  unreachable

718:                                              ; preds = %687
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %14) #10
  br label %1062

719:                                              ; preds = %691
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %14) #10
  %720 = call zeroext i1 @s2n_libcrypto_is_awslc() #10
  br i1 %720, label %721, label %749

721:                                              ; preds = %719
  %722 = call zeroext i1 @s2n_is_in_fips_mode() #10
  br i1 %722, label %723, label %749

723:                                              ; preds = %721
  %724 = load i32, ptr @test_count, align 4, !tbaa !5
  %725 = add nsw i32 %724, 1
  store i32 %725, ptr @test_count, align 4, !tbaa !5
  %726 = call zeroext i1 (...) @s2n_libcrypto_supports_hkdf() #10
  br i1 %726, label %749, label %727

727:                                              ; preds = %723
  %728 = load i32, ptr %688, align 4, !tbaa !5
  %729 = load ptr, ptr @stderr, align 8, !tbaa !9
  %730 = call i32 @s2n_print_stacktrace(ptr noundef %729) #10
  %731 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %732 = trunc nuw i8 %731 to i1
  br i1 %732, label %733, label %737

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

737:                                              ; preds = %733, %727
  br label %738

738:                                              ; preds = %733, %737
  %.str.5.sink395 = phi ptr [ @.str.5, %737 ], [ @.str.2, %733 ]
  store i32 %728, ptr %688, align 4, !tbaa !5
  %739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %740 = load i32, ptr @test_count, align 4, !tbaa !5
  %741 = load i32, ptr %634, align 4, !tbaa !5
  %742 = call ptr @s2n_strerror(i32 noundef %741, ptr noundef nonnull @.str.4) #10
  %743 = load i32, ptr %634, align 4, !tbaa !5
  %744 = call ptr @s2n_strerror_debug(i32 noundef %743, ptr noundef nonnull @.str.4) #10
  %745 = load i32, ptr %688, align 4, !tbaa !5
  %746 = call ptr @strerror(i32 noundef %745) #10
  %747 = load i32, ptr %688, align 4, !tbaa !5
  %748 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %739, ptr noundef nonnull %.str.5.sink395, i32 noundef %740, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 463, ptr noundef %742, ptr noundef %744, ptr noundef %746, i32 noundef %747) #12
  call void @exit(i32 noundef 1) #13
  unreachable

749:                                              ; preds = %723, %721, %719
  call void @llvm.lifetime.start.p0(i64 5101, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, i8 0, i64 24, i1 false)
  %750 = load i32, ptr @test_count, align 4, !tbaa !5
  %751 = add nsw i32 %750, 1
  store i32 %751, ptr @test_count, align 4, !tbaa !5
  %752 = call i32 @s2n_blob_init(ptr noundef nonnull %19, ptr noundef nonnull %18, i32 noundef 5101) #10
  %753 = icmp eq i32 %752, -1
  br i1 %753, label %754, label %776

754:                                              ; preds = %749
  %755 = load i32, ptr %688, align 4, !tbaa !5
  %756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %757 = call i32 @s2n_print_stacktrace(ptr noundef %756) #10
  %758 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %759 = trunc nuw i8 %758 to i1
  br i1 %759, label %760, label %764

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

764:                                              ; preds = %760, %754
  br label %765

765:                                              ; preds = %760, %764
  %.str.5.sink404 = phi ptr [ @.str.5, %764 ], [ @.str.2, %760 ]
  store i32 %755, ptr %688, align 4, !tbaa !5
  %766 = load ptr, ptr @stderr, align 8, !tbaa !9
  %767 = load i32, ptr @test_count, align 4, !tbaa !5
  %768 = load i32, ptr %634, align 4, !tbaa !5
  %769 = call ptr @s2n_strerror(i32 noundef %768, ptr noundef nonnull @.str.4) #10
  %770 = load i32, ptr %634, align 4, !tbaa !5
  %771 = call ptr @s2n_strerror_debug(i32 noundef %770, ptr noundef nonnull @.str.4) #10
  %772 = load i32, ptr %688, align 4, !tbaa !5
  %773 = call ptr @strerror(i32 noundef %772) #10
  %774 = load i32, ptr %688, align 4, !tbaa !5
  %775 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %766, ptr noundef nonnull %.str.5.sink404, i32 noundef %767, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 472, ptr noundef %769, ptr noundef %771, ptr noundef %773, i32 noundef %774) #12
  call void @exit(i32 noundef 1) #13
  unreachable

776:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %20, i8 0, i64 24, i1 false)
  %777 = load i32, ptr @test_count, align 4, !tbaa !5
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr @test_count, align 4, !tbaa !5
  %779 = call i32 @s2n_blob_init(ptr noundef nonnull %20, ptr noundef nonnull %5, i32 noundef 0) #10
  %780 = icmp eq i32 %779, -1
  br i1 %780, label %781, label %803

781:                                              ; preds = %776
  %782 = load i32, ptr %688, align 4, !tbaa !5
  %783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %784 = call i32 @s2n_print_stacktrace(ptr noundef %783) #10
  %785 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %786 = trunc nuw i8 %785 to i1
  br i1 %786, label %787, label %791

787:                                              ; preds = %781
  %788 = load ptr, ptr @stderr, align 8, !tbaa !9
  %789 = call i32 @fileno(ptr noundef %788) #10
  %790 = call i32 @isatty(i32 noundef %789) #10
  %.not117 = icmp eq i32 %790, 0
  br i1 %.not117, label %791, label %792

791:                                              ; preds = %787, %781
  br label %792

792:                                              ; preds = %787, %791
  %.str.5.sink413 = phi ptr [ @.str.5, %791 ], [ @.str.2, %787 ]
  store i32 %782, ptr %688, align 4, !tbaa !5
  %793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %794 = load i32, ptr @test_count, align 4, !tbaa !5
  %795 = load i32, ptr %634, align 4, !tbaa !5
  %796 = call ptr @s2n_strerror(i32 noundef %795, ptr noundef nonnull @.str.4) #10
  %797 = load i32, ptr %634, align 4, !tbaa !5
  %798 = call ptr @s2n_strerror_debug(i32 noundef %797, ptr noundef nonnull @.str.4) #10
  %799 = load i32, ptr %688, align 4, !tbaa !5
  %800 = call ptr @strerror(i32 noundef %799) #10
  %801 = load i32, ptr %688, align 4, !tbaa !5
  %802 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %793, ptr noundef nonnull %.str.5.sink413, i32 noundef %794, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 474, ptr noundef %796, ptr noundef %798, ptr noundef %800, i32 noundef %801) #12
  call void @exit(i32 noundef 1) #13
  unreachable

803:                                              ; preds = %776
  %804 = load i32, ptr @test_count, align 4, !tbaa !5
  %805 = add nsw i32 %804, 1
  store i32 %805, ptr @test_count, align 4, !tbaa !5
  %806 = call i32 @s2n_hkdf(ptr noundef nonnull %3, i32 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %8, ptr noundef nonnull %19) #10
  %807 = icmp eq i32 %806, -1
  br i1 %807, label %830, label %808

808:                                              ; preds = %803
  %809 = load i32, ptr %688, align 4, !tbaa !5
  %810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %811 = call i32 @s2n_print_stacktrace(ptr noundef %810) #10
  %812 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %813 = trunc nuw i8 %812 to i1
  br i1 %813, label %814, label %818

814:                                              ; preds = %808
  %815 = load ptr, ptr @stderr, align 8, !tbaa !9
  %816 = call i32 @fileno(ptr noundef %815) #10
  %817 = call i32 @isatty(i32 noundef %816) #10
  %.not105 = icmp eq i32 %817, 0
  br i1 %.not105, label %818, label %819

818:                                              ; preds = %814, %808
  br label %819

819:                                              ; preds = %814, %818
  %.str.5.sink422 = phi ptr [ @.str.5, %818 ], [ @.str.2, %814 ]
  store i32 %809, ptr %688, align 4, !tbaa !5
  %820 = load ptr, ptr @stderr, align 8, !tbaa !9
  %821 = load i32, ptr @test_count, align 4, !tbaa !5
  %822 = load i32, ptr %634, align 4, !tbaa !5
  %823 = call ptr @s2n_strerror(i32 noundef %822, ptr noundef nonnull @.str.4) #10
  %824 = load i32, ptr %634, align 4, !tbaa !5
  %825 = call ptr @s2n_strerror_debug(i32 noundef %824, ptr noundef nonnull @.str.4) #10
  %826 = load i32, ptr %688, align 4, !tbaa !5
  %827 = call ptr @strerror(i32 noundef %826) #10
  %828 = load i32, ptr %688, align 4, !tbaa !5
  %829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef nonnull %.str.5.sink422, i32 noundef %821, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 478, ptr noundef %823, ptr noundef %825, ptr noundef %827, i32 noundef %828) #12
  call void @exit(i32 noundef 1) #13
  unreachable

830:                                              ; preds = %803
  %831 = load i32, ptr @test_count, align 4, !tbaa !5
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr @test_count, align 4, !tbaa !5
  %833 = load i32, ptr %634, align 4, !tbaa !5
  %834 = icmp eq i32 %833, 0
  br i1 %834, label %835, label %857

835:                                              ; preds = %830
  %836 = load i32, ptr %688, align 4, !tbaa !5
  %837 = load ptr, ptr @stderr, align 8, !tbaa !9
  %838 = call i32 @s2n_print_stacktrace(ptr noundef %837) #10
  %839 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %840 = trunc nuw i8 %839 to i1
  br i1 %840, label %841, label %845

841:                                              ; preds = %835
  %842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %843 = call i32 @fileno(ptr noundef %842) #10
  %844 = call i32 @isatty(i32 noundef %843) #10
  %.not116 = icmp eq i32 %844, 0
  br i1 %.not116, label %845, label %846

845:                                              ; preds = %841, %835
  br label %846

846:                                              ; preds = %841, %845
  %.str.5.sink431 = phi ptr [ @.str.5, %845 ], [ @.str.2, %841 ]
  store i32 %836, ptr %688, align 4, !tbaa !5
  %847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %848 = load i32, ptr @test_count, align 4, !tbaa !5
  %849 = load i32, ptr %634, align 4, !tbaa !5
  %850 = call ptr @s2n_strerror(i32 noundef %849, ptr noundef nonnull @.str.4) #10
  %851 = load i32, ptr %634, align 4, !tbaa !5
  %852 = call ptr @s2n_strerror_debug(i32 noundef %851, ptr noundef nonnull @.str.4) #10
  %853 = load i32, ptr %688, align 4, !tbaa !5
  %854 = call ptr @strerror(i32 noundef %853) #10
  %855 = load i32, ptr %688, align 4, !tbaa !5
  %856 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %847, ptr noundef nonnull %.str.5.sink431, i32 noundef %848, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 478, ptr noundef %850, ptr noundef %852, ptr noundef %854, i32 noundef %855) #12
  call void @exit(i32 noundef 1) #13
  unreachable

857:                                              ; preds = %830
  %858 = add nsw i32 %831, 2
  store i32 %858, ptr @test_count, align 4, !tbaa !5
  %859 = call ptr @s2n_strerror_debug(i32 noundef %833, ptr noundef nonnull @.str.4) #10
  %860 = icmp eq ptr %859, null
  br i1 %860, label %861, label %883

861:                                              ; preds = %857
  %862 = load i32, ptr %688, align 4, !tbaa !5
  %863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %864 = call i32 @s2n_print_stacktrace(ptr noundef %863) #10
  %865 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %866 = trunc nuw i8 %865 to i1
  br i1 %866, label %867, label %871

867:                                              ; preds = %861
  %868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %869 = call i32 @fileno(ptr noundef %868) #10
  %870 = call i32 @isatty(i32 noundef %869) #10
  %.not115 = icmp eq i32 %870, 0
  br i1 %.not115, label %871, label %872

871:                                              ; preds = %867, %861
  br label %872

872:                                              ; preds = %867, %871
  %.str.5.sink440 = phi ptr [ @.str.5, %871 ], [ @.str.2, %867 ]
  store i32 %862, ptr %688, align 4, !tbaa !5
  %873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %874 = load i32, ptr @test_count, align 4, !tbaa !5
  %875 = load i32, ptr %634, align 4, !tbaa !5
  %876 = call ptr @s2n_strerror(i32 noundef %875, ptr noundef nonnull @.str.4) #10
  %877 = load i32, ptr %634, align 4, !tbaa !5
  %878 = call ptr @s2n_strerror_debug(i32 noundef %877, ptr noundef nonnull @.str.4) #10
  %879 = load i32, ptr %688, align 4, !tbaa !5
  %880 = call ptr @strerror(i32 noundef %879) #10
  %881 = load i32, ptr %688, align 4, !tbaa !5
  %882 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %873, ptr noundef nonnull %.str.5.sink440, i32 noundef %874, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 478, ptr noundef %876, ptr noundef %878, ptr noundef %880, i32 noundef %881) #12
  call void @exit(i32 noundef 1) #13
  unreachable

883:                                              ; preds = %857
  store i32 0, ptr %634, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %688, align 4, !tbaa !5
  %884 = load i32, ptr @test_count, align 4, !tbaa !5
  %885 = add nsw i32 %884, 1
  store i32 %885, ptr @test_count, align 4, !tbaa !5
  %886 = call i32 @s2n_hkdf(ptr noundef nonnull %3, i32 noundef 2, ptr noundef nonnull %7, ptr noundef nonnull %6, ptr noundef nonnull %8, ptr noundef nonnull %20) #10
  %887 = icmp eq i32 %886, -1
  br i1 %887, label %910, label %888

888:                                              ; preds = %883
  %889 = load i32, ptr %688, align 4, !tbaa !5
  %890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %891 = call i32 @s2n_print_stacktrace(ptr noundef %890) #10
  %892 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %893 = trunc nuw i8 %892 to i1
  br i1 %893, label %894, label %898

894:                                              ; preds = %888
  %895 = load ptr, ptr @stderr, align 8, !tbaa !9
  %896 = call i32 @fileno(ptr noundef %895) #10
  %897 = call i32 @isatty(i32 noundef %896) #10
  %.not106 = icmp eq i32 %897, 0
  br i1 %.not106, label %898, label %899

898:                                              ; preds = %894, %888
  br label %899

899:                                              ; preds = %894, %898
  %.str.5.sink449 = phi ptr [ @.str.5, %898 ], [ @.str.2, %894 ]
  store i32 %889, ptr %688, align 4, !tbaa !5
  %900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %901 = load i32, ptr @test_count, align 4, !tbaa !5
  %902 = load i32, ptr %634, align 4, !tbaa !5
  %903 = call ptr @s2n_strerror(i32 noundef %902, ptr noundef nonnull @.str.4) #10
  %904 = load i32, ptr %634, align 4, !tbaa !5
  %905 = call ptr @s2n_strerror_debug(i32 noundef %904, ptr noundef nonnull @.str.4) #10
  %906 = load i32, ptr %688, align 4, !tbaa !5
  %907 = call ptr @strerror(i32 noundef %906) #10
  %908 = load i32, ptr %688, align 4, !tbaa !5
  %909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %900, ptr noundef nonnull %.str.5.sink449, i32 noundef %901, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 479, ptr noundef %903, ptr noundef %905, ptr noundef %907, i32 noundef %908) #12
  call void @exit(i32 noundef 1) #13
  unreachable

910:                                              ; preds = %883
  %911 = load i32, ptr @test_count, align 4, !tbaa !5
  %912 = add nsw i32 %911, 1
  store i32 %912, ptr @test_count, align 4, !tbaa !5
  %913 = load i32, ptr %634, align 4, !tbaa !5
  %914 = icmp eq i32 %913, 0
  br i1 %914, label %915, label %937

915:                                              ; preds = %910
  %916 = load i32, ptr %688, align 4, !tbaa !5
  %917 = load ptr, ptr @stderr, align 8, !tbaa !9
  %918 = call i32 @s2n_print_stacktrace(ptr noundef %917) #10
  %919 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %920 = trunc nuw i8 %919 to i1
  br i1 %920, label %921, label %925

921:                                              ; preds = %915
  %922 = load ptr, ptr @stderr, align 8, !tbaa !9
  %923 = call i32 @fileno(ptr noundef %922) #10
  %924 = call i32 @isatty(i32 noundef %923) #10
  %.not114 = icmp eq i32 %924, 0
  br i1 %.not114, label %925, label %926

925:                                              ; preds = %921, %915
  br label %926

926:                                              ; preds = %921, %925
  %.str.5.sink458 = phi ptr [ @.str.5, %925 ], [ @.str.2, %921 ]
  store i32 %916, ptr %688, align 4, !tbaa !5
  %927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %928 = load i32, ptr @test_count, align 4, !tbaa !5
  %929 = load i32, ptr %634, align 4, !tbaa !5
  %930 = call ptr @s2n_strerror(i32 noundef %929, ptr noundef nonnull @.str.4) #10
  %931 = load i32, ptr %634, align 4, !tbaa !5
  %932 = call ptr @s2n_strerror_debug(i32 noundef %931, ptr noundef nonnull @.str.4) #10
  %933 = load i32, ptr %688, align 4, !tbaa !5
  %934 = call ptr @strerror(i32 noundef %933) #10
  %935 = load i32, ptr %688, align 4, !tbaa !5
  %936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %927, ptr noundef nonnull %.str.5.sink458, i32 noundef %928, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 479, ptr noundef %930, ptr noundef %932, ptr noundef %934, i32 noundef %935) #12
  call void @exit(i32 noundef 1) #13
  unreachable

937:                                              ; preds = %910
  %938 = add nsw i32 %911, 2
  store i32 %938, ptr @test_count, align 4, !tbaa !5
  %939 = call ptr @s2n_strerror_debug(i32 noundef %913, ptr noundef nonnull @.str.4) #10
  %940 = icmp eq ptr %939, null
  br i1 %940, label %941, label %963

941:                                              ; preds = %937
  %942 = load i32, ptr %688, align 4, !tbaa !5
  %943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %944 = call i32 @s2n_print_stacktrace(ptr noundef %943) #10
  %945 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %946 = trunc nuw i8 %945 to i1
  br i1 %946, label %947, label %951

947:                                              ; preds = %941
  %948 = load ptr, ptr @stderr, align 8, !tbaa !9
  %949 = call i32 @fileno(ptr noundef %948) #10
  %950 = call i32 @isatty(i32 noundef %949) #10
  %.not113 = icmp eq i32 %950, 0
  br i1 %.not113, label %951, label %952

951:                                              ; preds = %947, %941
  br label %952

952:                                              ; preds = %947, %951
  %.str.5.sink467 = phi ptr [ @.str.5, %951 ], [ @.str.2, %947 ]
  store i32 %942, ptr %688, align 4, !tbaa !5
  %953 = load ptr, ptr @stderr, align 8, !tbaa !9
  %954 = load i32, ptr @test_count, align 4, !tbaa !5
  %955 = load i32, ptr %634, align 4, !tbaa !5
  %956 = call ptr @s2n_strerror(i32 noundef %955, ptr noundef nonnull @.str.4) #10
  %957 = load i32, ptr %634, align 4, !tbaa !5
  %958 = call ptr @s2n_strerror_debug(i32 noundef %957, ptr noundef nonnull @.str.4) #10
  %959 = load i32, ptr %688, align 4, !tbaa !5
  %960 = call ptr @strerror(i32 noundef %959) #10
  %961 = load i32, ptr %688, align 4, !tbaa !5
  %962 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %953, ptr noundef nonnull %.str.5.sink467, i32 noundef %954, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 479, ptr noundef %956, ptr noundef %958, ptr noundef %960, i32 noundef %961) #12
  call void @exit(i32 noundef 1) #13
  unreachable

963:                                              ; preds = %937
  store i32 0, ptr %634, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #10
  store i32 0, ptr %688, align 4, !tbaa !5
  %964 = load i32, ptr @test_count, align 4, !tbaa !5
  %965 = add nsw i32 %964, 1
  store i32 %965, ptr @test_count, align 4, !tbaa !5
  %966 = call i32 @s2n_hmac_free(ptr noundef nonnull %3) #10
  %967 = icmp eq i32 %966, -1
  br i1 %967, label %968, label %990

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

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

978:                                              ; preds = %974, %968
  br label %979

979:                                              ; preds = %974, %978
  %.str.5.sink476 = phi ptr [ @.str.5, %978 ], [ @.str.2, %974 ]
  store i32 %969, ptr %688, align 4, !tbaa !5
  %980 = load ptr, ptr @stderr, align 8, !tbaa !9
  %981 = load i32, ptr @test_count, align 4, !tbaa !5
  %982 = load i32, ptr %634, align 4, !tbaa !5
  %983 = call ptr @s2n_strerror(i32 noundef %982, ptr noundef nonnull @.str.4) #10
  %984 = load i32, ptr %634, align 4, !tbaa !5
  %985 = call ptr @s2n_strerror_debug(i32 noundef %984, ptr noundef nonnull @.str.4) #10
  %986 = load i32, ptr %688, align 4, !tbaa !5
  %987 = call ptr @strerror(i32 noundef %986) #10
  %988 = load i32, ptr %688, align 4, !tbaa !5
  %989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %980, ptr noundef nonnull %.str.5.sink476, i32 noundef %981, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 481, ptr noundef %983, ptr noundef %985, ptr noundef %987, i32 noundef %988) #12
  call void @exit(i32 noundef 1) #13
  unreachable

990:                                              ; preds = %963
  %991 = call i32 @s2n_cleanup() #10
  %992 = icmp eq i32 %991, -1
  br i1 %992, label %993, label %1015

993:                                              ; preds = %990
  %994 = load i32, ptr %688, align 4, !tbaa !5
  %995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %996 = call i32 @s2n_print_stacktrace(ptr noundef %995) #10
  %997 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %998 = trunc nuw i8 %997 to i1
  br i1 %998, label %999, label %1003

999:                                              ; preds = %993
  %1000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1001 = call i32 @fileno(ptr noundef %1000) #10
  %1002 = call i32 @isatty(i32 noundef %1001) #10
  %.not111 = icmp eq i32 %1002, 0
  br i1 %.not111, label %1003, label %1004

1003:                                             ; preds = %999, %993
  br label %1004

1004:                                             ; preds = %999, %1003
  %.str.5.sink485 = phi ptr [ @.str.5, %1003 ], [ @.str.2, %999 ]
  store i32 %994, ptr %688, align 4, !tbaa !5
  %1005 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1006 = load i32, ptr @test_count, align 4, !tbaa !5
  %1007 = load i32, ptr %634, align 4, !tbaa !5
  %1008 = call ptr @s2n_strerror(i32 noundef %1007, ptr noundef nonnull @.str.4) #10
  %1009 = load i32, ptr %634, align 4, !tbaa !5
  %1010 = call ptr @s2n_strerror_debug(i32 noundef %1009, ptr noundef nonnull @.str.4) #10
  %1011 = load i32, ptr %688, align 4, !tbaa !5
  %1012 = call ptr @strerror(i32 noundef %1011) #10
  %1013 = load i32, ptr %688, align 4, !tbaa !5
  %1014 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1005, ptr noundef nonnull %.str.5.sink485, i32 noundef %1006, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 483, ptr noundef %1008, ptr noundef %1010, ptr noundef %1012, i32 noundef %1013) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1015:                                             ; preds = %990
  %1016 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %1017 = icmp eq i32 %1016, -1
  br i1 %1017, label %1018, label %1040

1018:                                             ; preds = %1015
  %1019 = load i32, ptr %688, align 4, !tbaa !5
  %1020 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1021 = call i32 @s2n_print_stacktrace(ptr noundef %1020) #10
  %1022 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1023 = trunc nuw i8 %1022 to i1
  br i1 %1023, label %1024, label %1028

1024:                                             ; preds = %1018
  %1025 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1026 = call i32 @fileno(ptr noundef %1025) #10
  %1027 = call i32 @isatty(i32 noundef %1026) #10
  %.not110 = icmp eq i32 %1027, 0
  br i1 %.not110, label %1028, label %1029

1028:                                             ; preds = %1024, %1018
  br label %1029

1029:                                             ; preds = %1024, %1028
  %.str.5.sink494 = phi ptr [ @.str.5, %1028 ], [ @.str.2, %1024 ]
  store i32 %1019, ptr %688, align 4, !tbaa !5
  %1030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1031 = load i32, ptr @test_count, align 4, !tbaa !5
  %1032 = load i32, ptr %634, align 4, !tbaa !5
  %1033 = call ptr @s2n_strerror(i32 noundef %1032, ptr noundef nonnull @.str.4) #10
  %1034 = load i32, ptr %634, align 4, !tbaa !5
  %1035 = call ptr @s2n_strerror_debug(i32 noundef %1034, ptr noundef nonnull @.str.4) #10
  %1036 = load i32, ptr %688, align 4, !tbaa !5
  %1037 = call ptr @strerror(i32 noundef %1036) #10
  %1038 = load i32, ptr %688, align 4, !tbaa !5
  %1039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1030, ptr noundef nonnull %.str.5.sink494, i32 noundef %1031, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 483, ptr noundef %1033, ptr noundef %1035, ptr noundef %1037, i32 noundef %1038) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1040:                                             ; preds = %1015
  %1041 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1042 = trunc nuw i8 %1041 to i1
  br i1 %1042, label %1043, label %1054

1043:                                             ; preds = %1040
  %1044 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1045 = call i32 @fileno(ptr noundef %1044) #10
  %1046 = call i32 @isatty(i32 noundef %1045) #10
  %.not107 = icmp eq i32 %1046, 0
  br i1 %.not107, label %1054, label %1047

1047:                                             ; preds = %1043
  %1048 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not109 = icmp eq i32 %1048, 0
  %1049 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not109, label %1052, label %1050

1050:                                             ; preds = %1047
  %1051 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1049, ptr noundef nonnull @.str.38, i32 noundef %1048) #10
  br label %1061

1052:                                             ; preds = %1047
  %1053 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1049, ptr noundef nonnull @.str.39) #10
  br label %1061

1054:                                             ; preds = %1043, %1040
  %1055 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not108 = icmp eq i32 %1055, 0
  %1056 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not108, label %1059, label %1057

1057:                                             ; preds = %1054
  %1058 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1056, ptr noundef nonnull @.str.40, i32 noundef %1055) #10
  br label %1061

1059:                                             ; preds = %1054
  %1060 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1056, ptr noundef nonnull @.str.41) #10
  br label %1061

1061:                                             ; preds = %1057, %1059, %1050, %1052
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 5101, ptr nonnull %18) #10
  br label %1062

1062:                                             ; preds = %718, %.thread, %1061
  %.4 = phi i32 [ 0, %1061 ], [ -1, %718 ], [ -1, %.thread ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 82, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %3) #10
  ret i32 %.4
}

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

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #4

declare i32 @s2n_init() local_unnamed_addr #4

declare i32 @s2n_disable_tls13_in_test(...) local_unnamed_addr #4

declare zeroext i1 @s2n_is_in_fips_mode() local_unnamed_addr #4

declare zeroext i1 @s2n_libcrypto_supports_hkdf(...) local_unnamed_addr #4

declare i32 @s2n_hmac_new(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_blob_init(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare i32 @s2n_hkdf_extract(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_hmac_digest_size(i32 noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_hkdf(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @s2n_debug_info_reset() local_unnamed_addr #4

declare zeroext i1 @s2n_libcrypto_is_awslc() local_unnamed_addr #4

declare i32 @s2n_hmac_free(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #4

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { "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 = { 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 #6 = { 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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 #9 = { nofree nounwind willreturn memory(argmem: read) }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(none) }
attributes #12 = { cold nounwind }
attributes #13 = { 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, !6, i64 84}
!16 = !{!"hkdf_test_vector", !6, i64 0, !7, i64 4, !6, i64 84, !7, i64 88, !6, i64 168, !7, i64 172, !6, i64 252, !7, i64 256, !6, i64 320, !7, i64 324, !6, i64 408}
!17 = !{!16, !6, i64 168}
!18 = !{!16, !6, i64 252}
!19 = !{!16, !6, i64 320}
!20 = !{!16, !6, i64 408}
!21 = !{!16, !6, i64 0}
!22 = !{!23, !10, i64 0}
!23 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!24 = !{!23, !6, i64 8}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}


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