; LLVM IR from aws/s2n-tls :: tests/unit (s2n_fingerprint_ja4_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.anon = type { [2 x i8], i8, ptr }
%struct.anon.0 = type { i8, ptr }
%struct.anon.1 = type { [4 x i8], i64, ptr }
%struct.s2n_result = type { i32 }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_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 [83 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 [55 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [147 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [163 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@__const.main.test_cases = external hidden unnamed_addr constant [10 x %struct.anon], align 16
@.str.24 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [69 x i8], align 1
@__const.main.count_test_cases = external hidden unnamed_addr constant [6 x %struct.anon.0], align 16
@.str.37 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [80 x i8], align 1
@__const.main._client_hello_bytes_message = external hidden unnamed_addr constant [49 x i8], align 16
@__const.main.client_hello_bytes = external hidden unnamed_addr constant [53 x i8], align 16
@.str.41 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [77 x i8], align 1
@__const.main._client_hello_bytes_message.47 = external hidden unnamed_addr constant [59 x i8], align 16
@__const.main.client_hello_bytes.48 = external hidden unnamed_addr constant [63 x i8], align 16
@.str.49 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [54 x i8], align 1
@__const.main._client_hello_bytes_message.52 = external hidden unnamed_addr constant [55 x i8], align 16
@__const.main.client_hello_bytes.53 = external hidden unnamed_addr constant [59 x i8], align 16
@.str.54 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main._client_hello_bytes_message.57 = external hidden unnamed_addr constant [63 x i8], align 16
@__const.main.client_hello_bytes.58 = external hidden unnamed_addr constant [67 x i8], align 16
@.str.59 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main._client_hello_bytes_message.60 = external hidden unnamed_addr constant [51 x i8], align 16
@__const.main.client_hello_bytes.61 = external hidden unnamed_addr constant [55 x i8], align 16
@.str.62 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main.test_cases.69 = external hidden unnamed_addr constant [5 x %struct.anon.1], align 16
@__const.main.client_hello_bytes.70 = external hidden unnamed_addr constant [58 x i8], align 16
@.str.71 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main.client_hello_bytes.76 = external hidden unnamed_addr constant [53 x i8], align 16
@__const.main.client_hello_bytes.77 = external hidden unnamed_addr constant [54 x i8], align 16
@__const.main._client_hello_bytes_message.78 = external hidden unnamed_addr constant [71 x i8], align 16
@__const.main.client_hello_bytes.79 = external hidden unnamed_addr constant [75 x i8], align 16
@__const.main.expected = external hidden unnamed_addr constant [75 x i8], align 16
@.str.80 = external hidden unnamed_addr constant [146 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [75 x i8], align 1
@__const.main.expected.84 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.main.expected.85 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [88 x i8], align 1
@__const.main.expected.88 = external hidden unnamed_addr constant [60 x i8], align 16
@__const.main._bytes_message = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.bytes = external hidden unnamed_addr constant [69 x i8], align 16
@.str.89 = external hidden unnamed_addr constant [119 x i8], align 1
@__const.main._bytes_message.90 = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.bytes.91 = external hidden unnamed_addr constant [69 x i8], align 16
@__const.main._bytes_message.92 = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.bytes.93 = external hidden unnamed_addr constant [69 x i8], align 16
@__const.main._client_hello_bytes_message.94 = external hidden unnamed_addr constant [125 x i8], align 16
@__const.main.client_hello_bytes.95 = external hidden unnamed_addr constant [129 x i8], align 16
@__const.main.expected_raw_extensions = external hidden unnamed_addr constant [70 x i8], align 16
@__const.main.sni_str = external hidden unnamed_addr constant [5 x i8], align 1
@__const.main.alpn_str = external hidden unnamed_addr constant [5 x i8], align 1
@__const.main.extensions = external hidden unnamed_addr constant [80 x i8], align 16
@.str.96 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [75 x i8], align 1
@__const.main.expected.103 = external hidden unnamed_addr constant [110 x i8], align 16
@__const.main.expected.104 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [39 x i8], align 1
@__const.main.expected.111 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.main.client_hello_bytes.112 = external hidden unnamed_addr constant [59 x i8], align 16
@.str.113 = external hidden unnamed_addr constant [145 x i8], align 1
@__const.main.packet_bytes = external hidden unnamed_addr constant <{ [390 x i8], [122 x i8] }>, align 16
@.str.114 = external hidden unnamed_addr constant [135 x i8], align 1
@__const.main.expected.115 = external hidden unnamed_addr constant [37 x i8], align 16
@.str.116 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca [43 x i8], align 16
  %10 = alloca [47 x i8], align 16
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca [47 x i8], align 16
  %14 = alloca [51 x i8], align 16
  %15 = alloca [200 x i8], align 16
  %16 = alloca i32, align 4
  %17 = alloca %struct.s2n_result, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca [200 x i8], align 16
  %22 = alloca i32, align 4
  %23 = alloca %struct.s2n_result, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca [47 x i8], align 16
  %28 = alloca [51 x i8], align 16
  %29 = alloca [200 x i8], align 16
  %30 = alloca i32, align 4
  %31 = alloca %struct.s2n_result, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca [200 x i8], align 16
  %36 = alloca i32, align 4
  %37 = alloca %struct.s2n_result, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca [10 x %struct.anon], align 16
  %42 = alloca i64, align 8
  %43 = alloca %struct.s2n_client_hello, align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca [200 x i8], align 16
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca [50 x i8], align 16
  %53 = alloca [54 x i8], align 16
  %54 = alloca [200 x i8], align 16
  %55 = alloca i32, align 4
  %56 = alloca %struct.s2n_result, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca [43 x i8], align 16
  %62 = alloca [47 x i8], align 16
  %63 = alloca [200 x i8], align 16
  %64 = alloca i32, align 4
  %65 = alloca %struct.s2n_result, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca [56 x i8], align 16
  %71 = alloca [60 x i8], align 16
  %72 = alloca i32, align 4
  %73 = alloca [200 x i8], align 16
  %74 = alloca i32, align 4
  %75 = alloca %struct.s2n_result, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca [6 x %struct.anon.0], align 16
  %81 = alloca i64, align 8
  %82 = alloca [200 x i8], align 16
  %83 = alloca i32, align 4
  %84 = alloca %struct.s2n_result, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca [49 x i8], align 16
  %90 = alloca [53 x i8], align 16
  %91 = alloca [200 x i8], align 16
  %92 = alloca i32, align 4
  %93 = alloca %struct.s2n_result, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i64, align 8
  %99 = alloca [200 x i8], align 16
  %100 = alloca i32, align 4
  %101 = alloca %struct.s2n_result, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca [59 x i8], align 16
  %107 = alloca [63 x i8], align 16
  %108 = alloca [200 x i8], align 16
  %109 = alloca i32, align 4
  %110 = alloca %struct.s2n_result, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca [51 x i8], align 16
  %116 = alloca [55 x i8], align 16
  %117 = alloca [200 x i8], align 16
  %118 = alloca i32, align 4
  %119 = alloca %struct.s2n_result, align 4
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca [55 x i8], align 16
  %125 = alloca [59 x i8], align 16
  %126 = alloca [200 x i8], align 16
  %127 = alloca i32, align 4
  %128 = alloca %struct.s2n_result, align 4
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca [63 x i8], align 16
  %134 = alloca [67 x i8], align 16
  %135 = alloca [200 x i8], align 16
  %136 = alloca i32, align 4
  %137 = alloca %struct.s2n_result, align 4
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca i32, align 4
  %142 = alloca [51 x i8], align 16
  %143 = alloca [55 x i8], align 16
  %144 = alloca [200 x i8], align 16
  %145 = alloca i32, align 4
  %146 = alloca %struct.s2n_result, align 4
  %147 = alloca i32, align 4
  %148 = alloca i32, align 4
  %149 = alloca i32, align 4
  %150 = alloca i32, align 4
  %151 = alloca [5 x %struct.anon.1], align 16
  %152 = alloca [54 x i8], align 16
  %153 = alloca [58 x i8], align 16
  %154 = alloca i64, align 8
  %155 = alloca i64, align 8
  %156 = alloca ptr, align 8
  %157 = alloca ptr, align 8
  %158 = alloca i64, align 8
  %159 = alloca i64, align 8
  %160 = alloca i32, align 4
  %161 = alloca [200 x i8], align 16
  %162 = alloca i32, align 4
  %163 = alloca %struct.s2n_result, align 4
  %164 = alloca i32, align 4
  %165 = alloca i32, align 4
  %166 = alloca i32, align 4
  %167 = alloca i32, align 4
  %168 = alloca [200 x i8], align 16
  %169 = alloca i32, align 4
  %170 = alloca %struct.s2n_result, align 4
  %171 = alloca i32, align 4
  %172 = alloca i32, align 4
  %173 = alloca i32, align 4
  %174 = alloca i32, align 4
  %175 = alloca [49 x i8], align 16
  %176 = alloca [53 x i8], align 16
  %177 = alloca [200 x i8], align 16
  %178 = alloca i32, align 4
  %179 = alloca %struct.s2n_result, align 4
  %180 = alloca i32, align 4
  %181 = alloca i32, align 4
  %182 = alloca i32, align 4
  %183 = alloca i32, align 4
  %184 = alloca [50 x i8], align 16
  %185 = alloca [54 x i8], align 16
  %186 = alloca [200 x i8], align 16
  %187 = alloca i32, align 4
  %188 = alloca %struct.s2n_result, align 4
  %189 = alloca i32, align 4
  %190 = alloca i32, align 4
  %191 = alloca i32, align 4
  %192 = alloca i32, align 4
  %193 = alloca [71 x i8], align 16
  %194 = alloca [75 x i8], align 16
  %195 = alloca [75 x i8], align 16
  %196 = alloca [200 x i8], align 16
  %197 = alloca i32, align 4
  %198 = alloca %struct.s2n_result, align 4
  %199 = alloca i32, align 4
  %200 = alloca i32, align 4
  %201 = alloca ptr, align 8
  %202 = alloca i32, align 4
  %203 = alloca i32, align 4
  %204 = alloca [13 x i8], align 1
  %205 = alloca [200 x i8], align 16
  %206 = alloca i32, align 4
  %207 = alloca %struct.s2n_result, align 4
  %208 = alloca i32, align 4
  %209 = alloca i32, align 4
  %210 = alloca ptr, align 8
  %211 = alloca i32, align 4
  %212 = alloca i32, align 4
  %213 = alloca [13 x i8], align 1
  %214 = alloca [200 x i8], align 16
  %215 = alloca i32, align 4
  %216 = alloca ptr, align 8
  %217 = alloca i32, align 4
  %218 = alloca ptr, align 8
  %219 = alloca i32, align 4
  %220 = alloca i32, align 4
  %221 = alloca i32, align 4
  %222 = alloca i32, align 4
  %223 = alloca ptr, align 8
  %224 = alloca i32, align 4
  %225 = alloca i32, align 4
  %226 = alloca [60 x i8], align 16
  %227 = alloca [65 x i8], align 16
  %228 = alloca [69 x i8], align 16
  %229 = alloca [200 x i8], align 16
  %230 = alloca i32, align 4
  %231 = alloca %struct.s2n_result, align 4
  %232 = alloca i32, align 4
  %233 = alloca i32, align 4
  %234 = alloca ptr, align 8
  %235 = alloca i32, align 4
  %236 = alloca i32, align 4
  %237 = alloca [65 x i8], align 16
  %238 = alloca [69 x i8], align 16
  %239 = alloca [200 x i8], align 16
  %240 = alloca i32, align 4
  %241 = alloca %struct.s2n_result, align 4
  %242 = alloca i32, align 4
  %243 = alloca i32, align 4
  %244 = alloca ptr, align 8
  %245 = alloca i32, align 4
  %246 = alloca i32, align 4
  %247 = alloca [65 x i8], align 16
  %248 = alloca [69 x i8], align 16
  %249 = alloca [200 x i8], align 16
  %250 = alloca i32, align 4
  %251 = alloca %struct.s2n_result, align 4
  %252 = alloca i32, align 4
  %253 = alloca i32, align 4
  %254 = alloca ptr, align 8
  %255 = alloca i32, align 4
  %256 = alloca i32, align 4
  %257 = alloca [125 x i8], align 16
  %258 = alloca [129 x i8], align 16
  %259 = alloca [70 x i8], align 16
  %260 = alloca [5 x i8], align 1
  %261 = alloca [5 x i8], align 1
  %262 = alloca [80 x i8], align 16
  %263 = alloca i32, align 4
  %264 = alloca i32, align 4
  %265 = alloca i32, align 4
  %266 = alloca i32, align 4
  %267 = alloca ptr, align 8
  %268 = alloca [200 x i8], align 16
  %269 = alloca i32, align 4
  %270 = alloca %struct.s2n_result, align 4
  %271 = alloca i32, align 4
  %272 = alloca i32, align 4
  %273 = alloca ptr, align 8
  %274 = alloca i32, align 4
  %275 = alloca i32, align 4
  %276 = alloca [110 x i8], align 16
  %277 = alloca [200 x i8], align 16
  %278 = alloca i32, align 4
  %279 = alloca %struct.s2n_result, align 4
  %280 = alloca i32, align 4
  %281 = alloca i32, align 4
  %282 = alloca ptr, align 8
  %283 = alloca i32, align 4
  %284 = alloca i32, align 4
  %285 = alloca [13 x i8], align 1
  %286 = alloca [200 x i8], align 16
  %287 = alloca i32, align 4
  %288 = alloca %struct.s2n_result, align 4
  %289 = alloca i32, align 4
  %290 = alloca i32, align 4
  %291 = alloca ptr, align 8
  %292 = alloca i32, align 4
  %293 = alloca i32, align 4
  %294 = alloca [47 x i8], align 16
  %295 = alloca [51 x i8], align 16
  %296 = alloca [200 x i8], align 16
  %297 = alloca i32, align 4
  %298 = alloca %struct.s2n_result, align 4
  %299 = alloca i32, align 4
  %300 = alloca i32, align 4
  %301 = alloca i32, align 4
  %302 = alloca [43 x i8], align 16
  %303 = alloca [47 x i8], align 16
  %304 = alloca [200 x i8], align 16
  %305 = alloca i32, align 4
  %306 = alloca %struct.s2n_result, align 4
  %307 = alloca i32, align 4
  %308 = alloca i32, align 4
  %309 = alloca i32, align 4
  %310 = alloca i64, align 8
  %311 = alloca i64, align 8
  %312 = alloca i32, align 4
  %313 = alloca [13 x i8], align 1
  %314 = alloca [200 x i8], align 16
  %315 = alloca i32, align 4
  %316 = alloca %struct.s2n_result, align 4
  %317 = alloca i32, align 4
  %318 = alloca i32, align 4
  %319 = alloca ptr, align 8
  %320 = alloca i32, align 4
  %321 = alloca i32, align 4
  %322 = alloca [55 x i8], align 16
  %323 = alloca [59 x i8], align 16
  %324 = alloca [200 x i8], align 16
  %325 = alloca i32, align 4
  %326 = alloca %struct.s2n_result, align 4
  %327 = alloca i32, align 4
  %328 = alloca [512 x i8], align 16
  %329 = alloca [200 x i8], align 16
  %330 = alloca i32, align 4
  %331 = alloca %struct.s2n_result, align 4
  %332 = alloca i32, align 4
  %333 = alloca [37 x i8], align 16
  %334 = alloca i32, align 4
  %335 = alloca i32, align 4
  %336 = alloca i32, align 4
  %337 = alloca i32, align 4
  %338 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %2
  br label %340

340:                                              ; preds = %339
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %341 = load ptr, ptr @stdout, align 8, !tbaa !9
  %342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %341, ptr noundef @.str, ptr noundef @.str.1) #11
  %343 = load ptr, ptr @stdout, align 8, !tbaa !9
  %344 = call i32 @fflush(ptr noundef %343)
  br label %345

345:                                              ; preds = %340
  %346 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %347 = icmp eq i32 %346, -1
  br i1 %347, label %348, label %399

348:                                              ; preds = %345
  br label %349

349:                                              ; preds = %348
  br label %350

350:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  %351 = call ptr @__errno_location() #12
  %352 = load i32, ptr %351, align 4, !tbaa !5
  store i32 %352, ptr %6, align 4, !tbaa !5
  %353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %354 = call i32 @s2n_print_stacktrace(ptr noundef %353)
  %355 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %356 = trunc i8 %355 to i1
  br i1 %356, label %357, label %379

357:                                              ; preds = %350
  %358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %359 = call i32 @fileno(ptr noundef %358) #11
  %360 = call i32 @isatty(i32 noundef %359) #11
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %379

362:                                              ; preds = %357
  %363 = load i32, ptr %6, align 4, !tbaa !5
  %364 = call ptr @__errno_location() #12
  store i32 %363, ptr %364, align 4, !tbaa !5
  %365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %366 = load i32, ptr @test_count, align 4, !tbaa !5
  %367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = call ptr @s2n_strerror(i32 noundef %368, ptr noundef @.str.4)
  %370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = call ptr @s2n_strerror_debug(i32 noundef %371, ptr noundef @.str.4)
  %373 = call ptr @__errno_location() #12
  %374 = load i32, ptr %373, align 4, !tbaa !5
  %375 = call ptr @strerror(i32 noundef %374) #11
  %376 = call ptr @__errno_location() #12
  %377 = load i32, ptr %376, align 4, !tbaa !5
  %378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %365, ptr noundef @.str.2, i32 noundef %366, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 226, ptr noundef %369, ptr noundef %372, ptr noundef %375, i32 noundef %377) #11
  br label %396

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

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

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

398:                                              ; No predecessors!
  br label %399

399:                                              ; preds = %398, %345
  br label %400

400:                                              ; preds = %399
  br label %401

401:                                              ; preds = %400
  %402 = load i32, ptr @test_count, align 4, !tbaa !5
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr @test_count, align 4, !tbaa !5
  %404 = call i32 @s2n_enable_atexit()
  %405 = icmp eq i32 %404, -1
  br i1 %405, label %406, label %457

406:                                              ; preds = %401
  br label %407

407:                                              ; preds = %406
  br label %408

408:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  %409 = call ptr @__errno_location() #12
  %410 = load i32, ptr %409, align 4, !tbaa !5
  store i32 %410, ptr %7, align 4, !tbaa !5
  %411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %412 = call i32 @s2n_print_stacktrace(ptr noundef %411)
  %413 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %414 = trunc i8 %413 to i1
  br i1 %414, label %415, label %437

415:                                              ; preds = %408
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = call i32 @fileno(ptr noundef %416) #11
  %418 = call i32 @isatty(i32 noundef %417) #11
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %437

420:                                              ; preds = %415
  %421 = load i32, ptr %7, align 4, !tbaa !5
  %422 = call ptr @__errno_location() #12
  store i32 %421, ptr %422, align 4, !tbaa !5
  %423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %424 = load i32, ptr @test_count, align 4, !tbaa !5
  %425 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %426 = load i32, ptr %425, align 4, !tbaa !5
  %427 = call ptr @s2n_strerror(i32 noundef %426, ptr noundef @.str.4)
  %428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %429 = load i32, ptr %428, align 4, !tbaa !5
  %430 = call ptr @s2n_strerror_debug(i32 noundef %429, ptr noundef @.str.4)
  %431 = call ptr @__errno_location() #12
  %432 = load i32, ptr %431, align 4, !tbaa !5
  %433 = call ptr @strerror(i32 noundef %432) #11
  %434 = call ptr @__errno_location() #12
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %423, ptr noundef @.str.2, i32 noundef %424, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 226, ptr noundef %427, ptr noundef %430, ptr noundef %433, i32 noundef %435) #11
  br label %454

437:                                              ; preds = %415, %408
  %438 = load i32, ptr %7, align 4, !tbaa !5
  %439 = call ptr @__errno_location() #12
  store i32 %438, ptr %439, align 4, !tbaa !5
  %440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %441 = load i32, ptr @test_count, align 4, !tbaa !5
  %442 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = call ptr @s2n_strerror(i32 noundef %443, ptr noundef @.str.4)
  %445 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = call ptr @s2n_strerror_debug(i32 noundef %446, ptr noundef @.str.4)
  %448 = call ptr @__errno_location() #12
  %449 = load i32, ptr %448, align 4, !tbaa !5
  %450 = call ptr @strerror(i32 noundef %449) #11
  %451 = call ptr @__errno_location() #12
  %452 = load i32, ptr %451, align 4, !tbaa !5
  %453 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %440, ptr noundef @.str.5, i32 noundef %441, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 226, ptr noundef %444, ptr noundef %447, ptr noundef %450, i32 noundef %452) #11
  br label %454

454:                                              ; preds = %437, %420
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %455

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

456:                                              ; No predecessors!
  br label %457

457:                                              ; preds = %456, %401
  br label %458

458:                                              ; preds = %457
  br label %459

459:                                              ; preds = %458
  br label %460

460:                                              ; preds = %459
  %461 = call i32 @s2n_init()
  %462 = icmp eq i32 %461, -1
  br i1 %462, label %463, label %514

463:                                              ; preds = %460
  br label %464

464:                                              ; preds = %463
  br label %465

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

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

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

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

511:                                              ; preds = %494, %477
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %512

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

513:                                              ; No predecessors!
  br label %514

514:                                              ; preds = %513, %460
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 43, ptr %9) #11
  call void @llvm.memset.p0.i64(ptr align 16 %9, i8 0, i64 43, i1 false)
  %517 = getelementptr inbounds [43 x i8], ptr %9, i32 0, i32 36
  store i8 2, ptr %517, align 4
  %518 = getelementptr inbounds [43 x i8], ptr %9, i32 0, i32 39
  store i8 1, ptr %518, align 1
  br label %519

519:                                              ; preds = %516
  %520 = load i32, ptr @test_count, align 4, !tbaa !5
  %521 = add nsw i32 %520, 1
  store i32 %521, ptr @test_count, align 4, !tbaa !5
  br label %522

522:                                              ; preds = %519
  br label %523

523:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 47, ptr %10) #11
  call void @llvm.memset.p0.i64(ptr align 16 %10, i8 0, i64 47, i1 false)
  %524 = getelementptr inbounds [47 x i8], ptr %10, i32 0, i32 0
  store i8 1, ptr %524, align 16
  %525 = getelementptr inbounds [47 x i8], ptr %10, i32 0, i32 3
  store i8 43, ptr %525, align 1
  %526 = getelementptr inbounds [47 x i8], ptr %10, i32 0, i32 40
  store i8 2, ptr %526, align 8
  %527 = getelementptr inbounds [47 x i8], ptr %10, i32 0, i32 43
  store i8 1, ptr %527, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  store ptr null, ptr %11, align 8, !tbaa !9
  %528 = getelementptr inbounds [47 x i8], ptr %10, i64 0, i64 0
  %529 = call ptr @s2n_client_hello_parse_message(ptr noundef %528, i32 noundef 47)
  store ptr %529, ptr %11, align 8, !tbaa !9
  br label %530

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

535:                                              ; preds = %530
  br label %536

536:                                              ; preds = %535
  br label %537

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

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

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

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

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

584:                                              ; preds = %583
  br label %585

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

586:                                              ; No predecessors!
  br label %587

587:                                              ; preds = %586
  br label %588

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

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 47, ptr %13) #11
  call void @llvm.memset.p0.i64(ptr align 16 %13, i8 0, i64 47, i1 false)
  %591 = getelementptr inbounds [47 x i8], ptr %13, i32 0, i32 36
  store i8 2, ptr %591, align 4
  %592 = getelementptr inbounds [47 x i8], ptr %13, i32 0, i32 39
  store i8 1, ptr %592, align 1
  %593 = getelementptr inbounds [47 x i8], ptr %13, i32 0, i32 42
  store i8 4, ptr %593, align 2
  %594 = getelementptr inbounds [47 x i8], ptr %13, i32 0, i32 44
  store i8 57, ptr %594, align 4
  br label %595

595:                                              ; preds = %590
  %596 = load i32, ptr @test_count, align 4, !tbaa !5
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr @test_count, align 4, !tbaa !5
  br label %598

598:                                              ; preds = %595
  br label %599

599:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 51, ptr %14) #11
  call void @llvm.memset.p0.i64(ptr align 16 %14, i8 0, i64 51, i1 false)
  %600 = getelementptr inbounds [51 x i8], ptr %14, i32 0, i32 0
  store i8 1, ptr %600, align 16
  %601 = getelementptr inbounds [51 x i8], ptr %14, i32 0, i32 3
  store i8 47, ptr %601, align 1
  %602 = getelementptr inbounds [51 x i8], ptr %14, i32 0, i32 40
  store i8 2, ptr %602, align 8
  %603 = getelementptr inbounds [51 x i8], ptr %14, i32 0, i32 43
  store i8 1, ptr %603, align 1
  %604 = getelementptr inbounds [51 x i8], ptr %14, i32 0, i32 46
  store i8 4, ptr %604, align 2
  %605 = getelementptr inbounds [51 x i8], ptr %14, i32 0, i32 48
  store i8 57, ptr %605, align 16
  call void @llvm.lifetime.start.p0(i64 200, ptr %15) #11
  call void @llvm.memset.p0.i64(ptr align 16 %15, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %606

606:                                              ; preds = %599
  %607 = load i32, ptr @test_count, align 4, !tbaa !5
  %608 = add nsw i32 %607, 1
  store i32 %608, ptr @test_count, align 4, !tbaa !5
  %609 = getelementptr inbounds [51 x i8], ptr %14, i64 0, i64 0
  %610 = getelementptr inbounds [200 x i8], ptr %15, i64 0, i64 0
  %611 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %609, i64 noundef 51, i64 noundef 200, ptr noundef %610, ptr noundef %16)
  %612 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  store i32 %611, ptr %612, align 4
  %613 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  %614 = load i32, ptr %613, align 4
  %615 = call zeroext i1 @s2n_result_is_ok(i32 %614)
  br i1 %615, label %669, label %616

616:                                              ; preds = %606
  br label %617

617:                                              ; preds = %616
  br label %618

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

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

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

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

664:                                              ; preds = %647, %630
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %665

665:                                              ; preds = %664
  br label %666

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

667:                                              ; No predecessors!
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668, %606
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  %673 = load i32, ptr @test_count, align 4, !tbaa !5
  %674 = add nsw i32 %673, 1
  store i32 %674, ptr @test_count, align 4, !tbaa !5
  %675 = load i32, ptr %16, align 4, !tbaa !5
  %676 = icmp ugt i32 %675, 0
  br i1 %676, label %730, label %677

677:                                              ; preds = %672
  br label %678

678:                                              ; preds = %677
  br label %679

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

686:                                              ; preds = %679
  %687 = load ptr, ptr @stderr, align 8, !tbaa !9
  %688 = call i32 @fileno(ptr noundef %687) #11
  %689 = call i32 @isatty(i32 noundef %688) #11
  %690 = icmp ne i32 %689, 0
  br i1 %690, label %691, label %708

691:                                              ; preds = %686
  %692 = load i32, ptr %19, align 4, !tbaa !5
  %693 = call ptr @__errno_location() #12
  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() #12
  %703 = load i32, ptr %702, align 4, !tbaa !5
  %704 = call ptr @strerror(i32 noundef %703) #11
  %705 = call ptr @__errno_location() #12
  %706 = load i32, ptr %705, align 4, !tbaa !5
  %707 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %694, ptr noundef @.str.2, i32 noundef %695, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 264, ptr noundef %698, ptr noundef %701, ptr noundef %704, i32 noundef %706) #11
  br label %725

708:                                              ; preds = %686, %679
  %709 = load i32, ptr %19, align 4, !tbaa !5
  %710 = call ptr @__errno_location() #12
  store i32 %709, ptr %710, align 4, !tbaa !5
  %711 = load ptr, ptr @stderr, align 8, !tbaa !9
  %712 = load i32, ptr @test_count, align 4, !tbaa !5
  %713 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %714 = load i32, ptr %713, align 4, !tbaa !5
  %715 = call ptr @s2n_strerror(i32 noundef %714, ptr noundef @.str.4)
  %716 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %717 = load i32, ptr %716, align 4, !tbaa !5
  %718 = call ptr @s2n_strerror_debug(i32 noundef %717, ptr noundef @.str.4)
  %719 = call ptr @__errno_location() #12
  %720 = load i32, ptr %719, align 4, !tbaa !5
  %721 = call ptr @strerror(i32 noundef %720) #11
  %722 = call ptr @__errno_location() #12
  %723 = load i32, ptr %722, align 4, !tbaa !5
  %724 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %711, ptr noundef @.str.5, i32 noundef %712, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 264, ptr noundef %715, ptr noundef %718, ptr noundef %721, i32 noundef %723) #11
  br label %725

725:                                              ; preds = %708, %691
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %726

726:                                              ; preds = %725
  br label %727

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

728:                                              ; No predecessors!
  br label %729

729:                                              ; preds = %728
  br label %730

730:                                              ; preds = %729, %672
  br label %731

731:                                              ; preds = %730
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732
  %734 = load i32, ptr @test_count, align 4, !tbaa !5
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr @test_count, align 4, !tbaa !5
  %736 = getelementptr inbounds [200 x i8], ptr %15, i64 0, i64 0
  %737 = load i8, ptr %736, align 16, !tbaa !15
  %738 = zext i8 %737 to i32
  %739 = icmp eq i32 %738, 113
  br i1 %739, label %793, label %740

740:                                              ; preds = %733
  br label %741

741:                                              ; preds = %740
  br label %742

742:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %743 = call ptr @__errno_location() #12
  %744 = load i32, ptr %743, align 4, !tbaa !5
  store i32 %744, ptr %20, align 4, !tbaa !5
  %745 = load ptr, ptr @stderr, align 8, !tbaa !9
  %746 = call i32 @s2n_print_stacktrace(ptr noundef %745)
  %747 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %748 = trunc i8 %747 to i1
  br i1 %748, label %749, label %771

749:                                              ; preds = %742
  %750 = load ptr, ptr @stderr, align 8, !tbaa !9
  %751 = call i32 @fileno(ptr noundef %750) #11
  %752 = call i32 @isatty(i32 noundef %751) #11
  %753 = icmp ne i32 %752, 0
  br i1 %753, label %754, label %771

754:                                              ; preds = %749
  %755 = load i32, ptr %20, align 4, !tbaa !5
  %756 = call ptr @__errno_location() #12
  store i32 %755, ptr %756, align 4, !tbaa !5
  %757 = load ptr, ptr @stderr, align 8, !tbaa !9
  %758 = load i32, ptr @test_count, align 4, !tbaa !5
  %759 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %760 = load i32, ptr %759, align 4, !tbaa !5
  %761 = call ptr @s2n_strerror(i32 noundef %760, ptr noundef @.str.4)
  %762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %763 = load i32, ptr %762, align 4, !tbaa !5
  %764 = call ptr @s2n_strerror_debug(i32 noundef %763, ptr noundef @.str.4)
  %765 = call ptr @__errno_location() #12
  %766 = load i32, ptr %765, align 4, !tbaa !5
  %767 = call ptr @strerror(i32 noundef %766) #11
  %768 = call ptr @__errno_location() #12
  %769 = load i32, ptr %768, align 4, !tbaa !5
  %770 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %757, ptr noundef @.str.2, i32 noundef %758, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 265, ptr noundef %761, ptr noundef %764, ptr noundef %767, i32 noundef %769) #11
  br label %788

771:                                              ; preds = %749, %742
  %772 = load i32, ptr %20, align 4, !tbaa !5
  %773 = call ptr @__errno_location() #12
  store i32 %772, ptr %773, align 4, !tbaa !5
  %774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %775 = load i32, ptr @test_count, align 4, !tbaa !5
  %776 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %777 = load i32, ptr %776, align 4, !tbaa !5
  %778 = call ptr @s2n_strerror(i32 noundef %777, ptr noundef @.str.4)
  %779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %780 = load i32, ptr %779, align 4, !tbaa !5
  %781 = call ptr @s2n_strerror_debug(i32 noundef %780, ptr noundef @.str.4)
  %782 = call ptr @__errno_location() #12
  %783 = load i32, ptr %782, align 4, !tbaa !5
  %784 = call ptr @strerror(i32 noundef %783) #11
  %785 = call ptr @__errno_location() #12
  %786 = load i32, ptr %785, align 4, !tbaa !5
  %787 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %774, ptr noundef @.str.5, i32 noundef %775, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 265, ptr noundef %778, ptr noundef %781, ptr noundef %784, i32 noundef %786) #11
  br label %788

788:                                              ; preds = %771, %754
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %789

789:                                              ; preds = %788
  br label %790

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

791:                                              ; No predecessors!
  br label %792

792:                                              ; preds = %791
  br label %793

793:                                              ; preds = %792, %733
  br label %794

794:                                              ; preds = %793
  br label %795

795:                                              ; preds = %794
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 51, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 47, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 200, ptr %21) #11
  call void @llvm.memset.p0.i64(ptr align 16 %21, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %796

796:                                              ; preds = %795
  %797 = load i32, ptr @test_count, align 4, !tbaa !5
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr @test_count, align 4, !tbaa !5
  %799 = getelementptr inbounds [47 x i8], ptr %10, i64 0, i64 0
  %800 = getelementptr inbounds [200 x i8], ptr %21, i64 0, i64 0
  %801 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %799, i64 noundef 47, i64 noundef 200, ptr noundef %800, ptr noundef %22)
  %802 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  store i32 %801, ptr %802, align 4
  %803 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  %804 = load i32, ptr %803, align 4
  %805 = call zeroext i1 @s2n_result_is_ok(i32 %804)
  br i1 %805, label %859, label %806

806:                                              ; preds = %796
  br label %807

807:                                              ; preds = %806
  br label %808

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

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

820:                                              ; preds = %815
  %821 = load i32, ptr %24, align 4, !tbaa !5
  %822 = call ptr @__errno_location() #12
  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() #12
  %832 = load i32, ptr %831, align 4, !tbaa !5
  %833 = call ptr @strerror(i32 noundef %832) #11
  %834 = call ptr @__errno_location() #12
  %835 = load i32, ptr %834, align 4, !tbaa !5
  %836 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %823, ptr noundef @.str.2, i32 noundef %824, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 274, ptr noundef %827, ptr noundef %830, ptr noundef %833, i32 noundef %835) #11
  br label %854

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

854:                                              ; preds = %837, %820
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %855

855:                                              ; preds = %854
  br label %856

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

857:                                              ; No predecessors!
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858, %796
  br label %860

860:                                              ; preds = %859
  br label %861

861:                                              ; preds = %860
  br label %862

862:                                              ; preds = %861
  %863 = load i32, ptr @test_count, align 4, !tbaa !5
  %864 = add nsw i32 %863, 1
  store i32 %864, ptr @test_count, align 4, !tbaa !5
  %865 = load i32, ptr %22, align 4, !tbaa !5
  %866 = icmp ugt i32 %865, 0
  br i1 %866, label %920, label %867

867:                                              ; preds = %862
  br label %868

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  %870 = call ptr @__errno_location() #12
  %871 = load i32, ptr %870, align 4, !tbaa !5
  store i32 %871, ptr %25, align 4, !tbaa !5
  %872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %873 = call i32 @s2n_print_stacktrace(ptr noundef %872)
  %874 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %875 = trunc i8 %874 to i1
  br i1 %875, label %876, label %898

876:                                              ; preds = %869
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @fileno(ptr noundef %877) #11
  %879 = call i32 @isatty(i32 noundef %878) #11
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %898

881:                                              ; preds = %876
  %882 = load i32, ptr %25, align 4, !tbaa !5
  %883 = call ptr @__errno_location() #12
  store i32 %882, ptr %883, align 4, !tbaa !5
  %884 = load ptr, ptr @stderr, align 8, !tbaa !9
  %885 = load i32, ptr @test_count, align 4, !tbaa !5
  %886 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %887 = load i32, ptr %886, align 4, !tbaa !5
  %888 = call ptr @s2n_strerror(i32 noundef %887, ptr noundef @.str.4)
  %889 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %890 = load i32, ptr %889, align 4, !tbaa !5
  %891 = call ptr @s2n_strerror_debug(i32 noundef %890, ptr noundef @.str.4)
  %892 = call ptr @__errno_location() #12
  %893 = load i32, ptr %892, align 4, !tbaa !5
  %894 = call ptr @strerror(i32 noundef %893) #11
  %895 = call ptr @__errno_location() #12
  %896 = load i32, ptr %895, align 4, !tbaa !5
  %897 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %884, ptr noundef @.str.2, i32 noundef %885, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 276, ptr noundef %888, ptr noundef %891, ptr noundef %894, i32 noundef %896) #11
  br label %915

898:                                              ; preds = %876, %869
  %899 = load i32, ptr %25, align 4, !tbaa !5
  %900 = call ptr @__errno_location() #12
  store i32 %899, ptr %900, align 4, !tbaa !5
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = load i32, ptr @test_count, align 4, !tbaa !5
  %903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %904 = load i32, ptr %903, align 4, !tbaa !5
  %905 = call ptr @s2n_strerror(i32 noundef %904, ptr noundef @.str.4)
  %906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %907 = load i32, ptr %906, align 4, !tbaa !5
  %908 = call ptr @s2n_strerror_debug(i32 noundef %907, ptr noundef @.str.4)
  %909 = call ptr @__errno_location() #12
  %910 = load i32, ptr %909, align 4, !tbaa !5
  %911 = call ptr @strerror(i32 noundef %910) #11
  %912 = call ptr @__errno_location() #12
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %901, ptr noundef @.str.5, i32 noundef %902, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 276, ptr noundef %905, ptr noundef %908, ptr noundef %911, i32 noundef %913) #11
  br label %915

915:                                              ; preds = %898, %881
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %916

916:                                              ; preds = %915
  br label %917

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

918:                                              ; No predecessors!
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919, %862
  br label %921

921:                                              ; preds = %920
  br label %922

922:                                              ; preds = %921
  br label %923

923:                                              ; preds = %922
  %924 = load i32, ptr @test_count, align 4, !tbaa !5
  %925 = add nsw i32 %924, 1
  store i32 %925, ptr @test_count, align 4, !tbaa !5
  %926 = getelementptr inbounds [200 x i8], ptr %21, i64 0, i64 0
  %927 = load i8, ptr %926, align 16, !tbaa !15
  %928 = zext i8 %927 to i32
  %929 = icmp eq i32 %928, 116
  br i1 %929, label %983, label %930

930:                                              ; preds = %923
  br label %931

931:                                              ; preds = %930
  br label %932

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

939:                                              ; preds = %932
  %940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %941 = call i32 @fileno(ptr noundef %940) #11
  %942 = call i32 @isatty(i32 noundef %941) #11
  %943 = icmp ne i32 %942, 0
  br i1 %943, label %944, label %961

944:                                              ; preds = %939
  %945 = load i32, ptr %26, align 4, !tbaa !5
  %946 = call ptr @__errno_location() #12
  store i32 %945, ptr %946, align 4, !tbaa !5
  %947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %948 = load i32, ptr @test_count, align 4, !tbaa !5
  %949 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %950 = load i32, ptr %949, align 4, !tbaa !5
  %951 = call ptr @s2n_strerror(i32 noundef %950, ptr noundef @.str.4)
  %952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %953 = load i32, ptr %952, align 4, !tbaa !5
  %954 = call ptr @s2n_strerror_debug(i32 noundef %953, ptr noundef @.str.4)
  %955 = call ptr @__errno_location() #12
  %956 = load i32, ptr %955, align 4, !tbaa !5
  %957 = call ptr @strerror(i32 noundef %956) #11
  %958 = call ptr @__errno_location() #12
  %959 = load i32, ptr %958, align 4, !tbaa !5
  %960 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %947, ptr noundef @.str.2, i32 noundef %948, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 277, ptr noundef %951, ptr noundef %954, ptr noundef %957, i32 noundef %959) #11
  br label %978

961:                                              ; preds = %939, %932
  %962 = load i32, ptr %26, align 4, !tbaa !5
  %963 = call ptr @__errno_location() #12
  store i32 %962, ptr %963, align 4, !tbaa !5
  %964 = load ptr, ptr @stderr, align 8, !tbaa !9
  %965 = load i32, ptr @test_count, align 4, !tbaa !5
  %966 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %967 = load i32, ptr %966, align 4, !tbaa !5
  %968 = call ptr @s2n_strerror(i32 noundef %967, ptr noundef @.str.4)
  %969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call ptr @s2n_strerror_debug(i32 noundef %970, ptr noundef @.str.4)
  %972 = call ptr @__errno_location() #12
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call ptr @strerror(i32 noundef %973) #11
  %975 = call ptr @__errno_location() #12
  %976 = load i32, ptr %975, align 4, !tbaa !5
  %977 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %964, ptr noundef @.str.5, i32 noundef %965, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 277, ptr noundef %968, ptr noundef %971, ptr noundef %974, i32 noundef %976) #11
  br label %978

978:                                              ; preds = %961, %944
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  br label %979

979:                                              ; preds = %978
  br label %980

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

981:                                              ; No predecessors!
  br label %982

982:                                              ; preds = %981
  br label %983

983:                                              ; preds = %982, %923
  br label %984

984:                                              ; preds = %983
  br label %985

985:                                              ; preds = %984
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 47, ptr %27) #11
  call void @llvm.memset.p0.i64(ptr align 16 %27, i8 0, i64 47, i1 false)
  %986 = getelementptr inbounds [47 x i8], ptr %27, i32 0, i32 36
  store i8 2, ptr %986, align 4
  %987 = getelementptr inbounds [47 x i8], ptr %27, i32 0, i32 39
  store i8 1, ptr %987, align 1
  %988 = getelementptr inbounds [47 x i8], ptr %27, i32 0, i32 42
  store i8 4, ptr %988, align 2
  br label %989

989:                                              ; preds = %985
  %990 = load i32, ptr @test_count, align 4, !tbaa !5
  %991 = add nsw i32 %990, 1
  store i32 %991, ptr @test_count, align 4, !tbaa !5
  br label %992

992:                                              ; preds = %989
  br label %993

993:                                              ; preds = %992
  call void @llvm.lifetime.start.p0(i64 51, ptr %28) #11
  call void @llvm.memset.p0.i64(ptr align 16 %28, i8 0, i64 51, i1 false)
  %994 = getelementptr inbounds [51 x i8], ptr %28, i32 0, i32 0
  store i8 1, ptr %994, align 16
  %995 = getelementptr inbounds [51 x i8], ptr %28, i32 0, i32 3
  store i8 47, ptr %995, align 1
  %996 = getelementptr inbounds [51 x i8], ptr %28, i32 0, i32 40
  store i8 2, ptr %996, align 8
  %997 = getelementptr inbounds [51 x i8], ptr %28, i32 0, i32 43
  store i8 1, ptr %997, align 1
  %998 = getelementptr inbounds [51 x i8], ptr %28, i32 0, i32 46
  store i8 4, ptr %998, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr %29) #11
  call void @llvm.memset.p0.i64(ptr align 16 %29, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  store i32 0, ptr %30, align 4, !tbaa !5
  br label %999

999:                                              ; preds = %993
  %1000 = load i32, ptr @test_count, align 4, !tbaa !5
  %1001 = add nsw i32 %1000, 1
  store i32 %1001, ptr @test_count, align 4, !tbaa !5
  %1002 = getelementptr inbounds [51 x i8], ptr %28, i64 0, i64 0
  %1003 = getelementptr inbounds [200 x i8], ptr %29, i64 0, i64 0
  %1004 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %1002, i64 noundef 51, i64 noundef 200, ptr noundef %1003, ptr noundef %30)
  %1005 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %1004, ptr %1005, align 4
  %1006 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  %1007 = load i32, ptr %1006, align 4
  %1008 = call zeroext i1 @s2n_result_is_ok(i32 %1007)
  br i1 %1008, label %1062, label %1009

1009:                                             ; preds = %999
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  %1012 = call ptr @__errno_location() #12
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  store i32 %1013, ptr %32, align 4, !tbaa !5
  %1014 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1015 = call i32 @s2n_print_stacktrace(ptr noundef %1014)
  %1016 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1017 = trunc i8 %1016 to i1
  br i1 %1017, label %1018, label %1040

1018:                                             ; preds = %1011
  %1019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1020 = call i32 @fileno(ptr noundef %1019) #11
  %1021 = call i32 @isatty(i32 noundef %1020) #11
  %1022 = icmp ne i32 %1021, 0
  br i1 %1022, label %1023, label %1040

1023:                                             ; preds = %1018
  %1024 = load i32, ptr %32, align 4, !tbaa !5
  %1025 = call ptr @__errno_location() #12
  store i32 %1024, ptr %1025, align 4, !tbaa !5
  %1026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1027 = load i32, ptr @test_count, align 4, !tbaa !5
  %1028 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1029 = load i32, ptr %1028, align 4, !tbaa !5
  %1030 = call ptr @s2n_strerror(i32 noundef %1029, ptr noundef @.str.4)
  %1031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1032 = load i32, ptr %1031, align 4, !tbaa !5
  %1033 = call ptr @s2n_strerror_debug(i32 noundef %1032, ptr noundef @.str.4)
  %1034 = call ptr @__errno_location() #12
  %1035 = load i32, ptr %1034, align 4, !tbaa !5
  %1036 = call ptr @strerror(i32 noundef %1035) #11
  %1037 = call ptr @__errno_location() #12
  %1038 = load i32, ptr %1037, align 4, !tbaa !5
  %1039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1026, ptr noundef @.str.2, i32 noundef %1027, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 299, ptr noundef %1030, ptr noundef %1033, ptr noundef %1036, i32 noundef %1038) #11
  br label %1057

1040:                                             ; preds = %1018, %1011
  %1041 = load i32, ptr %32, align 4, !tbaa !5
  %1042 = call ptr @__errno_location() #12
  store i32 %1041, ptr %1042, align 4, !tbaa !5
  %1043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1044 = load i32, ptr @test_count, align 4, !tbaa !5
  %1045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1046 = load i32, ptr %1045, align 4, !tbaa !5
  %1047 = call ptr @s2n_strerror(i32 noundef %1046, ptr noundef @.str.4)
  %1048 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = call ptr @s2n_strerror_debug(i32 noundef %1049, ptr noundef @.str.4)
  %1051 = call ptr @__errno_location() #12
  %1052 = load i32, ptr %1051, align 4, !tbaa !5
  %1053 = call ptr @strerror(i32 noundef %1052) #11
  %1054 = call ptr @__errno_location() #12
  %1055 = load i32, ptr %1054, align 4, !tbaa !5
  %1056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1043, ptr noundef @.str.5, i32 noundef %1044, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 299, ptr noundef %1047, ptr noundef %1050, ptr noundef %1053, i32 noundef %1055) #11
  br label %1057

1057:                                             ; preds = %1040, %1023
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %1058

1058:                                             ; preds = %1057
  br label %1059

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

1060:                                             ; No predecessors!
  br label %1061

1061:                                             ; preds = %1060
  br label %1062

1062:                                             ; preds = %1061, %999
  br label %1063

1063:                                             ; preds = %1062
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064
  %1066 = load i32, ptr @test_count, align 4, !tbaa !5
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr @test_count, align 4, !tbaa !5
  %1068 = load i32, ptr %30, align 4, !tbaa !5
  %1069 = icmp ugt i32 %1068, 3
  br i1 %1069, label %1123, label %1070

1070:                                             ; preds = %1065
  br label %1071

1071:                                             ; preds = %1070
  br label %1072

1072:                                             ; preds = %1071
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  %1073 = call ptr @__errno_location() #12
  %1074 = load i32, ptr %1073, align 4, !tbaa !5
  store i32 %1074, ptr %33, align 4, !tbaa !5
  %1075 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1076 = call i32 @s2n_print_stacktrace(ptr noundef %1075)
  %1077 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1078 = trunc i8 %1077 to i1
  br i1 %1078, label %1079, label %1101

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

1084:                                             ; preds = %1079
  %1085 = load i32, ptr %33, align 4, !tbaa !5
  %1086 = call ptr @__errno_location() #12
  store i32 %1085, ptr %1086, align 4, !tbaa !5
  %1087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1088 = load i32, ptr @test_count, align 4, !tbaa !5
  %1089 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1090 = load i32, ptr %1089, align 4, !tbaa !5
  %1091 = call ptr @s2n_strerror(i32 noundef %1090, ptr noundef @.str.4)
  %1092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1093 = load i32, ptr %1092, align 4, !tbaa !5
  %1094 = call ptr @s2n_strerror_debug(i32 noundef %1093, ptr noundef @.str.4)
  %1095 = call ptr @__errno_location() #12
  %1096 = load i32, ptr %1095, align 4, !tbaa !5
  %1097 = call ptr @strerror(i32 noundef %1096) #11
  %1098 = call ptr @__errno_location() #12
  %1099 = load i32, ptr %1098, align 4, !tbaa !5
  %1100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1087, ptr noundef @.str.2, i32 noundef %1088, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 301, ptr noundef %1091, ptr noundef %1094, ptr noundef %1097, i32 noundef %1099) #11
  br label %1118

1101:                                             ; preds = %1079, %1072
  %1102 = load i32, ptr %33, align 4, !tbaa !5
  %1103 = call ptr @__errno_location() #12
  store i32 %1102, ptr %1103, align 4, !tbaa !5
  %1104 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1105 = load i32, ptr @test_count, align 4, !tbaa !5
  %1106 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1107 = load i32, ptr %1106, align 4, !tbaa !5
  %1108 = call ptr @s2n_strerror(i32 noundef %1107, ptr noundef @.str.4)
  %1109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1110 = load i32, ptr %1109, align 4, !tbaa !5
  %1111 = call ptr @s2n_strerror_debug(i32 noundef %1110, ptr noundef @.str.4)
  %1112 = call ptr @__errno_location() #12
  %1113 = load i32, ptr %1112, align 4, !tbaa !5
  %1114 = call ptr @strerror(i32 noundef %1113) #11
  %1115 = call ptr @__errno_location() #12
  %1116 = load i32, ptr %1115, align 4, !tbaa !5
  %1117 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1104, ptr noundef @.str.5, i32 noundef %1105, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 301, ptr noundef %1108, ptr noundef %1111, ptr noundef %1114, i32 noundef %1116) #11
  br label %1118

1118:                                             ; preds = %1101, %1084
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %1119

1119:                                             ; preds = %1118
  br label %1120

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

1121:                                             ; No predecessors!
  br label %1122

1122:                                             ; preds = %1121
  br label %1123

1123:                                             ; preds = %1122, %1065
  br label %1124

1124:                                             ; preds = %1123
  br label %1125

1125:                                             ; preds = %1124
  br label %1126

1126:                                             ; preds = %1125
  %1127 = load i32, ptr @test_count, align 4, !tbaa !5
  %1128 = add nsw i32 %1127, 1
  store i32 %1128, ptr @test_count, align 4, !tbaa !5
  %1129 = getelementptr inbounds [200 x i8], ptr %29, i64 0, i64 3
  %1130 = load i8, ptr %1129, align 1, !tbaa !15
  %1131 = zext i8 %1130 to i32
  %1132 = icmp eq i32 %1131, 100
  br i1 %1132, label %1186, label %1133

1133:                                             ; preds = %1126
  br label %1134

1134:                                             ; preds = %1133
  br label %1135

1135:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  %1136 = call ptr @__errno_location() #12
  %1137 = load i32, ptr %1136, align 4, !tbaa !5
  store i32 %1137, ptr %34, align 4, !tbaa !5
  %1138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1139 = call i32 @s2n_print_stacktrace(ptr noundef %1138)
  %1140 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1141 = trunc i8 %1140 to i1
  br i1 %1141, label %1142, label %1164

1142:                                             ; preds = %1135
  %1143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1144 = call i32 @fileno(ptr noundef %1143) #11
  %1145 = call i32 @isatty(i32 noundef %1144) #11
  %1146 = icmp ne i32 %1145, 0
  br i1 %1146, label %1147, label %1164

1147:                                             ; preds = %1142
  %1148 = load i32, ptr %34, align 4, !tbaa !5
  %1149 = call ptr @__errno_location() #12
  store i32 %1148, ptr %1149, align 4, !tbaa !5
  %1150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1151 = load i32, ptr @test_count, align 4, !tbaa !5
  %1152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  %1154 = call ptr @s2n_strerror(i32 noundef %1153, ptr noundef @.str.4)
  %1155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1156 = load i32, ptr %1155, align 4, !tbaa !5
  %1157 = call ptr @s2n_strerror_debug(i32 noundef %1156, ptr noundef @.str.4)
  %1158 = call ptr @__errno_location() #12
  %1159 = load i32, ptr %1158, align 4, !tbaa !5
  %1160 = call ptr @strerror(i32 noundef %1159) #11
  %1161 = call ptr @__errno_location() #12
  %1162 = load i32, ptr %1161, align 4, !tbaa !5
  %1163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1150, ptr noundef @.str.2, i32 noundef %1151, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 302, ptr noundef %1154, ptr noundef %1157, ptr noundef %1160, i32 noundef %1162) #11
  br label %1181

1164:                                             ; preds = %1142, %1135
  %1165 = load i32, ptr %34, align 4, !tbaa !5
  %1166 = call ptr @__errno_location() #12
  store i32 %1165, ptr %1166, align 4, !tbaa !5
  %1167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1168 = load i32, ptr @test_count, align 4, !tbaa !5
  %1169 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1170 = load i32, ptr %1169, align 4, !tbaa !5
  %1171 = call ptr @s2n_strerror(i32 noundef %1170, ptr noundef @.str.4)
  %1172 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1173 = load i32, ptr %1172, align 4, !tbaa !5
  %1174 = call ptr @s2n_strerror_debug(i32 noundef %1173, ptr noundef @.str.4)
  %1175 = call ptr @__errno_location() #12
  %1176 = load i32, ptr %1175, align 4, !tbaa !5
  %1177 = call ptr @strerror(i32 noundef %1176) #11
  %1178 = call ptr @__errno_location() #12
  %1179 = load i32, ptr %1178, align 4, !tbaa !5
  %1180 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1167, ptr noundef @.str.5, i32 noundef %1168, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 302, ptr noundef %1171, ptr noundef %1174, ptr noundef %1177, i32 noundef %1179) #11
  br label %1181

1181:                                             ; preds = %1164, %1147
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %1182

1182:                                             ; preds = %1181
  br label %1183

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

1184:                                             ; No predecessors!
  br label %1185

1185:                                             ; preds = %1184
  br label %1186

1186:                                             ; preds = %1185, %1126
  br label %1187

1187:                                             ; preds = %1186
  br label %1188

1188:                                             ; preds = %1187
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 51, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 47, ptr %27) #11
  call void @llvm.lifetime.start.p0(i64 200, ptr %35) #11
  call void @llvm.memset.p0.i64(ptr align 16 %35, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  store i32 0, ptr %36, align 4, !tbaa !5
  br label %1189

1189:                                             ; preds = %1188
  %1190 = load i32, ptr @test_count, align 4, !tbaa !5
  %1191 = add nsw i32 %1190, 1
  store i32 %1191, ptr @test_count, align 4, !tbaa !5
  %1192 = getelementptr inbounds [47 x i8], ptr %10, i64 0, i64 0
  %1193 = getelementptr inbounds [200 x i8], ptr %35, i64 0, i64 0
  %1194 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %1192, i64 noundef 47, i64 noundef 200, ptr noundef %1193, ptr noundef %36)
  %1195 = getelementptr inbounds %struct.s2n_result, ptr %37, i32 0, i32 0
  store i32 %1194, ptr %1195, align 4
  %1196 = getelementptr inbounds %struct.s2n_result, ptr %37, i32 0, i32 0
  %1197 = load i32, ptr %1196, align 4
  %1198 = call zeroext i1 @s2n_result_is_ok(i32 %1197)
  br i1 %1198, label %1252, label %1199

1199:                                             ; preds = %1189
  br label %1200

1200:                                             ; preds = %1199
  br label %1201

1201:                                             ; preds = %1200
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  %1202 = call ptr @__errno_location() #12
  %1203 = load i32, ptr %1202, align 4, !tbaa !5
  store i32 %1203, ptr %38, align 4, !tbaa !5
  %1204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1205 = call i32 @s2n_print_stacktrace(ptr noundef %1204)
  %1206 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1207 = trunc i8 %1206 to i1
  br i1 %1207, label %1208, label %1230

1208:                                             ; preds = %1201
  %1209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1210 = call i32 @fileno(ptr noundef %1209) #11
  %1211 = call i32 @isatty(i32 noundef %1210) #11
  %1212 = icmp ne i32 %1211, 0
  br i1 %1212, label %1213, label %1230

1213:                                             ; preds = %1208
  %1214 = load i32, ptr %38, align 4, !tbaa !5
  %1215 = call ptr @__errno_location() #12
  store i32 %1214, ptr %1215, align 4, !tbaa !5
  %1216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1217 = load i32, ptr @test_count, align 4, !tbaa !5
  %1218 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1219 = load i32, ptr %1218, align 4, !tbaa !5
  %1220 = call ptr @s2n_strerror(i32 noundef %1219, ptr noundef @.str.4)
  %1221 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1222 = load i32, ptr %1221, align 4, !tbaa !5
  %1223 = call ptr @s2n_strerror_debug(i32 noundef %1222, ptr noundef @.str.4)
  %1224 = call ptr @__errno_location() #12
  %1225 = load i32, ptr %1224, align 4, !tbaa !5
  %1226 = call ptr @strerror(i32 noundef %1225) #11
  %1227 = call ptr @__errno_location() #12
  %1228 = load i32, ptr %1227, align 4, !tbaa !5
  %1229 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1216, ptr noundef @.str.2, i32 noundef %1217, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 311, ptr noundef %1220, ptr noundef %1223, ptr noundef %1226, i32 noundef %1228) #11
  br label %1247

1230:                                             ; preds = %1208, %1201
  %1231 = load i32, ptr %38, align 4, !tbaa !5
  %1232 = call ptr @__errno_location() #12
  store i32 %1231, ptr %1232, align 4, !tbaa !5
  %1233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1234 = load i32, ptr @test_count, align 4, !tbaa !5
  %1235 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1236 = load i32, ptr %1235, align 4, !tbaa !5
  %1237 = call ptr @s2n_strerror(i32 noundef %1236, ptr noundef @.str.4)
  %1238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1239 = load i32, ptr %1238, align 4, !tbaa !5
  %1240 = call ptr @s2n_strerror_debug(i32 noundef %1239, ptr noundef @.str.4)
  %1241 = call ptr @__errno_location() #12
  %1242 = load i32, ptr %1241, align 4, !tbaa !5
  %1243 = call ptr @strerror(i32 noundef %1242) #11
  %1244 = call ptr @__errno_location() #12
  %1245 = load i32, ptr %1244, align 4, !tbaa !5
  %1246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1233, ptr noundef @.str.5, i32 noundef %1234, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 311, ptr noundef %1237, ptr noundef %1240, ptr noundef %1243, i32 noundef %1245) #11
  br label %1247

1247:                                             ; preds = %1230, %1213
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %1248

1248:                                             ; preds = %1247
  br label %1249

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

1250:                                             ; No predecessors!
  br label %1251

1251:                                             ; preds = %1250
  br label %1252

1252:                                             ; preds = %1251, %1189
  br label %1253

1253:                                             ; preds = %1252
  br label %1254

1254:                                             ; preds = %1253
  br label %1255

1255:                                             ; preds = %1254
  %1256 = load i32, ptr @test_count, align 4, !tbaa !5
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr @test_count, align 4, !tbaa !5
  %1258 = load i32, ptr %36, align 4, !tbaa !5
  %1259 = icmp ugt i32 %1258, 3
  br i1 %1259, label %1313, label %1260

1260:                                             ; preds = %1255
  br label %1261

1261:                                             ; preds = %1260
  br label %1262

1262:                                             ; preds = %1261
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #11
  %1263 = call ptr @__errno_location() #12
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  store i32 %1264, ptr %39, align 4, !tbaa !5
  %1265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1266 = call i32 @s2n_print_stacktrace(ptr noundef %1265)
  %1267 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1268 = trunc i8 %1267 to i1
  br i1 %1268, label %1269, label %1291

1269:                                             ; preds = %1262
  %1270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1271 = call i32 @fileno(ptr noundef %1270) #11
  %1272 = call i32 @isatty(i32 noundef %1271) #11
  %1273 = icmp ne i32 %1272, 0
  br i1 %1273, label %1274, label %1291

1274:                                             ; preds = %1269
  %1275 = load i32, ptr %39, align 4, !tbaa !5
  %1276 = call ptr @__errno_location() #12
  store i32 %1275, ptr %1276, align 4, !tbaa !5
  %1277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1278 = load i32, ptr @test_count, align 4, !tbaa !5
  %1279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1280 = load i32, ptr %1279, align 4, !tbaa !5
  %1281 = call ptr @s2n_strerror(i32 noundef %1280, ptr noundef @.str.4)
  %1282 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1283 = load i32, ptr %1282, align 4, !tbaa !5
  %1284 = call ptr @s2n_strerror_debug(i32 noundef %1283, ptr noundef @.str.4)
  %1285 = call ptr @__errno_location() #12
  %1286 = load i32, ptr %1285, align 4, !tbaa !5
  %1287 = call ptr @strerror(i32 noundef %1286) #11
  %1288 = call ptr @__errno_location() #12
  %1289 = load i32, ptr %1288, align 4, !tbaa !5
  %1290 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1277, ptr noundef @.str.2, i32 noundef %1278, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 313, ptr noundef %1281, ptr noundef %1284, ptr noundef %1287, i32 noundef %1289) #11
  br label %1308

1291:                                             ; preds = %1269, %1262
  %1292 = load i32, ptr %39, align 4, !tbaa !5
  %1293 = call ptr @__errno_location() #12
  store i32 %1292, ptr %1293, align 4, !tbaa !5
  %1294 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1295 = load i32, ptr @test_count, align 4, !tbaa !5
  %1296 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1297 = load i32, ptr %1296, align 4, !tbaa !5
  %1298 = call ptr @s2n_strerror(i32 noundef %1297, ptr noundef @.str.4)
  %1299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1300 = load i32, ptr %1299, align 4, !tbaa !5
  %1301 = call ptr @s2n_strerror_debug(i32 noundef %1300, ptr noundef @.str.4)
  %1302 = call ptr @__errno_location() #12
  %1303 = load i32, ptr %1302, align 4, !tbaa !5
  %1304 = call ptr @strerror(i32 noundef %1303) #11
  %1305 = call ptr @__errno_location() #12
  %1306 = load i32, ptr %1305, align 4, !tbaa !5
  %1307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1294, ptr noundef @.str.5, i32 noundef %1295, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 313, ptr noundef %1298, ptr noundef %1301, ptr noundef %1304, i32 noundef %1306) #11
  br label %1308

1308:                                             ; preds = %1291, %1274
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  br label %1309

1309:                                             ; preds = %1308
  br label %1310

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

1311:                                             ; No predecessors!
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312, %1255
  br label %1314

1314:                                             ; preds = %1313
  br label %1315

1315:                                             ; preds = %1314
  br label %1316

1316:                                             ; preds = %1315
  %1317 = load i32, ptr @test_count, align 4, !tbaa !5
  %1318 = add nsw i32 %1317, 1
  store i32 %1318, ptr @test_count, align 4, !tbaa !5
  %1319 = getelementptr inbounds [200 x i8], ptr %35, i64 0, i64 3
  %1320 = load i8, ptr %1319, align 1, !tbaa !15
  %1321 = zext i8 %1320 to i32
  %1322 = icmp eq i32 %1321, 105
  br i1 %1322, label %1376, label %1323

1323:                                             ; preds = %1316
  br label %1324

1324:                                             ; preds = %1323
  br label %1325

1325:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  %1326 = call ptr @__errno_location() #12
  %1327 = load i32, ptr %1326, align 4, !tbaa !5
  store i32 %1327, ptr %40, align 4, !tbaa !5
  %1328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1329 = call i32 @s2n_print_stacktrace(ptr noundef %1328)
  %1330 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1331 = trunc i8 %1330 to i1
  br i1 %1331, label %1332, label %1354

1332:                                             ; preds = %1325
  %1333 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1334 = call i32 @fileno(ptr noundef %1333) #11
  %1335 = call i32 @isatty(i32 noundef %1334) #11
  %1336 = icmp ne i32 %1335, 0
  br i1 %1336, label %1337, label %1354

1337:                                             ; preds = %1332
  %1338 = load i32, ptr %40, align 4, !tbaa !5
  %1339 = call ptr @__errno_location() #12
  store i32 %1338, ptr %1339, align 4, !tbaa !5
  %1340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1341 = load i32, ptr @test_count, align 4, !tbaa !5
  %1342 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1343 = load i32, ptr %1342, align 4, !tbaa !5
  %1344 = call ptr @s2n_strerror(i32 noundef %1343, ptr noundef @.str.4)
  %1345 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1346 = load i32, ptr %1345, align 4, !tbaa !5
  %1347 = call ptr @s2n_strerror_debug(i32 noundef %1346, ptr noundef @.str.4)
  %1348 = call ptr @__errno_location() #12
  %1349 = load i32, ptr %1348, align 4, !tbaa !5
  %1350 = call ptr @strerror(i32 noundef %1349) #11
  %1351 = call ptr @__errno_location() #12
  %1352 = load i32, ptr %1351, align 4, !tbaa !5
  %1353 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1340, ptr noundef @.str.2, i32 noundef %1341, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 314, ptr noundef %1344, ptr noundef %1347, ptr noundef %1350, i32 noundef %1352) #11
  br label %1371

1354:                                             ; preds = %1332, %1325
  %1355 = load i32, ptr %40, align 4, !tbaa !5
  %1356 = call ptr @__errno_location() #12
  store i32 %1355, ptr %1356, align 4, !tbaa !5
  %1357 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1358 = load i32, ptr @test_count, align 4, !tbaa !5
  %1359 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1360 = load i32, ptr %1359, align 4, !tbaa !5
  %1361 = call ptr @s2n_strerror(i32 noundef %1360, ptr noundef @.str.4)
  %1362 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1363 = load i32, ptr %1362, align 4, !tbaa !5
  %1364 = call ptr @s2n_strerror_debug(i32 noundef %1363, ptr noundef @.str.4)
  %1365 = call ptr @__errno_location() #12
  %1366 = load i32, ptr %1365, align 4, !tbaa !5
  %1367 = call ptr @strerror(i32 noundef %1366) #11
  %1368 = call ptr @__errno_location() #12
  %1369 = load i32, ptr %1368, align 4, !tbaa !5
  %1370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1357, ptr noundef @.str.5, i32 noundef %1358, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 314, ptr noundef %1361, ptr noundef %1364, ptr noundef %1367, i32 noundef %1369) #11
  br label %1371

1371:                                             ; preds = %1354, %1337
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %1372

1372:                                             ; preds = %1371
  br label %1373

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

1374:                                             ; No predecessors!
  br label %1375

1375:                                             ; preds = %1374
  br label %1376

1376:                                             ; preds = %1375, %1316
  br label %1377

1377:                                             ; preds = %1376
  br label %1378

1378:                                             ; preds = %1377
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %35) #11
  call void @llvm.lifetime.start.p0(i64 160, ptr %41) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %41, ptr align 16 @__const.main.test_cases, i64 160, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  store i64 0, ptr %42, align 8, !tbaa !16
  br label %1379

1379:                                             ; preds = %2504, %1378
  %1380 = load i64, ptr %42, align 8, !tbaa !16
  %1381 = icmp ult i64 %1380, 10
  br i1 %1381, label %1383, label %1382

1382:                                             ; preds = %1379
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  br label %2507

1383:                                             ; preds = %1379
  %1384 = load i64, ptr %42, align 8, !tbaa !16
  %1385 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1384
  %1386 = getelementptr inbounds %struct.anon, ptr %1385, i32 0, i32 2
  %1387 = load ptr, ptr %1386, align 8, !tbaa !18
  %1388 = call i32 @strcmp(ptr noundef %1387, ptr noundef @.str.23) #14
  %1389 = icmp ne i32 %1388, 0
  br i1 %1389, label %1390, label %1729

1390:                                             ; preds = %1383
  call void @llvm.lifetime.start.p0(i64 808, ptr %43) #11
  %1391 = load ptr, ptr %11, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %43, ptr align 8 %1391, i64 808, i1 false), !tbaa.struct !20
  %1392 = getelementptr inbounds %struct.s2n_client_hello, ptr %43, i32 0, i32 5
  store i8 0, ptr %1392, align 8, !tbaa !23
  %1393 = load i64, ptr %42, align 8, !tbaa !16
  %1394 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1393
  %1395 = getelementptr inbounds %struct.anon, ptr %1394, i32 0, i32 1
  %1396 = load i8, ptr %1395, align 2, !tbaa !27
  %1397 = getelementptr inbounds %struct.s2n_client_hello, ptr %43, i32 0, i32 6
  store i8 %1396, ptr %1397, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  store ptr null, ptr %44, align 8, !tbaa !9
  %1398 = call ptr @s2n_fingerprint_new(i32 noundef 1)
  store ptr %1398, ptr %44, align 8, !tbaa !9
  br label %1399

1399:                                             ; preds = %1390
  %1400 = load i32, ptr @test_count, align 4, !tbaa !5
  %1401 = add nsw i32 %1400, 1
  store i32 %1401, ptr @test_count, align 4, !tbaa !5
  %1402 = load ptr, ptr %44, align 8, !tbaa !9
  %1403 = icmp eq ptr %1402, null
  br i1 %1403, label %1404, label %1457

1404:                                             ; preds = %1399
  br label %1405

1405:                                             ; preds = %1404
  br label %1406

1406:                                             ; preds = %1405
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  %1407 = call ptr @__errno_location() #12
  %1408 = load i32, ptr %1407, align 4, !tbaa !5
  store i32 %1408, ptr %45, align 4, !tbaa !5
  %1409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1410 = call i32 @s2n_print_stacktrace(ptr noundef %1409)
  %1411 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1412 = trunc i8 %1411 to i1
  br i1 %1412, label %1413, label %1435

1413:                                             ; preds = %1406
  %1414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1415 = call i32 @fileno(ptr noundef %1414) #11
  %1416 = call i32 @isatty(i32 noundef %1415) #11
  %1417 = icmp ne i32 %1416, 0
  br i1 %1417, label %1418, label %1435

1418:                                             ; preds = %1413
  %1419 = load i32, ptr %45, align 4, !tbaa !5
  %1420 = call ptr @__errno_location() #12
  store i32 %1419, ptr %1420, align 4, !tbaa !5
  %1421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1422 = load i32, ptr @test_count, align 4, !tbaa !5
  %1423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1424 = load i32, ptr %1423, align 4, !tbaa !5
  %1425 = call ptr @s2n_strerror(i32 noundef %1424, ptr noundef @.str.4)
  %1426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1427 = load i32, ptr %1426, align 4, !tbaa !5
  %1428 = call ptr @s2n_strerror_debug(i32 noundef %1427, ptr noundef @.str.4)
  %1429 = call ptr @__errno_location() #12
  %1430 = load i32, ptr %1429, align 4, !tbaa !5
  %1431 = call ptr @strerror(i32 noundef %1430) #11
  %1432 = call ptr @__errno_location() #12
  %1433 = load i32, ptr %1432, align 4, !tbaa !5
  %1434 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1421, ptr noundef @.str.2, i32 noundef %1422, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 367, ptr noundef %1425, ptr noundef %1428, ptr noundef %1431, i32 noundef %1433) #11
  br label %1452

1435:                                             ; preds = %1413, %1406
  %1436 = load i32, ptr %45, align 4, !tbaa !5
  %1437 = call ptr @__errno_location() #12
  store i32 %1436, ptr %1437, align 4, !tbaa !5
  %1438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1439 = load i32, ptr @test_count, align 4, !tbaa !5
  %1440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call ptr @s2n_strerror(i32 noundef %1441, ptr noundef @.str.4)
  %1443 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call ptr @s2n_strerror_debug(i32 noundef %1444, ptr noundef @.str.4)
  %1446 = call ptr @__errno_location() #12
  %1447 = load i32, ptr %1446, align 4, !tbaa !5
  %1448 = call ptr @strerror(i32 noundef %1447) #11
  %1449 = call ptr @__errno_location() #12
  %1450 = load i32, ptr %1449, align 4, !tbaa !5
  %1451 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1438, ptr noundef @.str.5, i32 noundef %1439, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 367, ptr noundef %1442, ptr noundef %1445, ptr noundef %1448, i32 noundef %1450) #11
  br label %1452

1452:                                             ; preds = %1435, %1418
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  br label %1453

1453:                                             ; preds = %1452
  br label %1454

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

1455:                                             ; No predecessors!
  br label %1456

1456:                                             ; preds = %1455
  br label %1457

1457:                                             ; preds = %1456, %1399
  br label %1458

1458:                                             ; preds = %1457
  br label %1459

1459:                                             ; preds = %1458
  br label %1460

1460:                                             ; preds = %1459
  %1461 = load i32, ptr @test_count, align 4, !tbaa !5
  %1462 = add nsw i32 %1461, 1
  store i32 %1462, ptr @test_count, align 4, !tbaa !5
  %1463 = load ptr, ptr %44, align 8, !tbaa !9
  %1464 = call i32 @s2n_fingerprint_set_client_hello(ptr noundef %1463, ptr noundef %43)
  %1465 = icmp eq i32 %1464, -1
  br i1 %1465, label %1466, label %1519

1466:                                             ; preds = %1460
  br label %1467

1467:                                             ; preds = %1466
  br label %1468

1468:                                             ; preds = %1467
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  %1469 = call ptr @__errno_location() #12
  %1470 = load i32, ptr %1469, align 4, !tbaa !5
  store i32 %1470, ptr %46, align 4, !tbaa !5
  %1471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1472 = call i32 @s2n_print_stacktrace(ptr noundef %1471)
  %1473 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1474 = trunc i8 %1473 to i1
  br i1 %1474, label %1475, label %1497

1475:                                             ; preds = %1468
  %1476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1477 = call i32 @fileno(ptr noundef %1476) #11
  %1478 = call i32 @isatty(i32 noundef %1477) #11
  %1479 = icmp ne i32 %1478, 0
  br i1 %1479, label %1480, label %1497

1480:                                             ; preds = %1475
  %1481 = load i32, ptr %46, align 4, !tbaa !5
  %1482 = call ptr @__errno_location() #12
  store i32 %1481, ptr %1482, align 4, !tbaa !5
  %1483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1484 = load i32, ptr @test_count, align 4, !tbaa !5
  %1485 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1486 = load i32, ptr %1485, align 4, !tbaa !5
  %1487 = call ptr @s2n_strerror(i32 noundef %1486, ptr noundef @.str.4)
  %1488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1489 = load i32, ptr %1488, align 4, !tbaa !5
  %1490 = call ptr @s2n_strerror_debug(i32 noundef %1489, ptr noundef @.str.4)
  %1491 = call ptr @__errno_location() #12
  %1492 = load i32, ptr %1491, align 4, !tbaa !5
  %1493 = call ptr @strerror(i32 noundef %1492) #11
  %1494 = call ptr @__errno_location() #12
  %1495 = load i32, ptr %1494, align 4, !tbaa !5
  %1496 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1483, ptr noundef @.str.2, i32 noundef %1484, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 369, ptr noundef %1487, ptr noundef %1490, ptr noundef %1493, i32 noundef %1495) #11
  br label %1514

1497:                                             ; preds = %1475, %1468
  %1498 = load i32, ptr %46, align 4, !tbaa !5
  %1499 = call ptr @__errno_location() #12
  store i32 %1498, ptr %1499, align 4, !tbaa !5
  %1500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1501 = load i32, ptr @test_count, align 4, !tbaa !5
  %1502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1503 = load i32, ptr %1502, align 4, !tbaa !5
  %1504 = call ptr @s2n_strerror(i32 noundef %1503, ptr noundef @.str.4)
  %1505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1506 = load i32, ptr %1505, align 4, !tbaa !5
  %1507 = call ptr @s2n_strerror_debug(i32 noundef %1506, ptr noundef @.str.4)
  %1508 = call ptr @__errno_location() #12
  %1509 = load i32, ptr %1508, align 4, !tbaa !5
  %1510 = call ptr @strerror(i32 noundef %1509) #11
  %1511 = call ptr @__errno_location() #12
  %1512 = load i32, ptr %1511, align 4, !tbaa !5
  %1513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1500, ptr noundef @.str.5, i32 noundef %1501, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 369, ptr noundef %1504, ptr noundef %1507, ptr noundef %1510, i32 noundef %1512) #11
  br label %1514

1514:                                             ; preds = %1497, %1480
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  br label %1515

1515:                                             ; preds = %1514
  br label %1516

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

1517:                                             ; No predecessors!
  br label %1518

1518:                                             ; preds = %1517
  br label %1519

1519:                                             ; preds = %1518, %1460
  br label %1520

1520:                                             ; preds = %1519
  br label %1521

1521:                                             ; preds = %1520
  call void @llvm.lifetime.start.p0(i64 200, ptr %47) #11
  call void @llvm.memset.p0.i64(ptr align 16 %47, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  store i32 0, ptr %48, align 4, !tbaa !5
  br label %1522

1522:                                             ; preds = %1521
  %1523 = load i32, ptr @test_count, align 4, !tbaa !5
  %1524 = add nsw i32 %1523, 1
  store i32 %1524, ptr @test_count, align 4, !tbaa !5
  %1525 = load ptr, ptr %44, align 8, !tbaa !9
  %1526 = getelementptr inbounds [200 x i8], ptr %47, i64 0, i64 0
  %1527 = call i32 @s2n_fingerprint_get_hash(ptr noundef %1525, i32 noundef 200, ptr noundef %1526, ptr noundef %48)
  %1528 = icmp eq i32 %1527, -1
  br i1 %1528, label %1529, label %1582

1529:                                             ; preds = %1522
  br label %1530

1530:                                             ; preds = %1529
  br label %1531

1531:                                             ; preds = %1530
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  %1532 = call ptr @__errno_location() #12
  %1533 = load i32, ptr %1532, align 4, !tbaa !5
  store i32 %1533, ptr %49, align 4, !tbaa !5
  %1534 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1535 = call i32 @s2n_print_stacktrace(ptr noundef %1534)
  %1536 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1537 = trunc i8 %1536 to i1
  br i1 %1537, label %1538, label %1560

1538:                                             ; preds = %1531
  %1539 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1540 = call i32 @fileno(ptr noundef %1539) #11
  %1541 = call i32 @isatty(i32 noundef %1540) #11
  %1542 = icmp ne i32 %1541, 0
  br i1 %1542, label %1543, label %1560

1543:                                             ; preds = %1538
  %1544 = load i32, ptr %49, align 4, !tbaa !5
  %1545 = call ptr @__errno_location() #12
  store i32 %1544, ptr %1545, align 4, !tbaa !5
  %1546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1547 = load i32, ptr @test_count, align 4, !tbaa !5
  %1548 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1549 = load i32, ptr %1548, align 4, !tbaa !5
  %1550 = call ptr @s2n_strerror(i32 noundef %1549, ptr noundef @.str.4)
  %1551 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1552 = load i32, ptr %1551, align 4, !tbaa !5
  %1553 = call ptr @s2n_strerror_debug(i32 noundef %1552, ptr noundef @.str.4)
  %1554 = call ptr @__errno_location() #12
  %1555 = load i32, ptr %1554, align 4, !tbaa !5
  %1556 = call ptr @strerror(i32 noundef %1555) #11
  %1557 = call ptr @__errno_location() #12
  %1558 = load i32, ptr %1557, align 4, !tbaa !5
  %1559 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1546, ptr noundef @.str.2, i32 noundef %1547, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 374, ptr noundef %1550, ptr noundef %1553, ptr noundef %1556, i32 noundef %1558) #11
  br label %1577

1560:                                             ; preds = %1538, %1531
  %1561 = load i32, ptr %49, align 4, !tbaa !5
  %1562 = call ptr @__errno_location() #12
  store i32 %1561, ptr %1562, align 4, !tbaa !5
  %1563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1564 = load i32, ptr @test_count, align 4, !tbaa !5
  %1565 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1566 = load i32, ptr %1565, align 4, !tbaa !5
  %1567 = call ptr @s2n_strerror(i32 noundef %1566, ptr noundef @.str.4)
  %1568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1569 = load i32, ptr %1568, align 4, !tbaa !5
  %1570 = call ptr @s2n_strerror_debug(i32 noundef %1569, ptr noundef @.str.4)
  %1571 = call ptr @__errno_location() #12
  %1572 = load i32, ptr %1571, align 4, !tbaa !5
  %1573 = call ptr @strerror(i32 noundef %1572) #11
  %1574 = call ptr @__errno_location() #12
  %1575 = load i32, ptr %1574, align 4, !tbaa !5
  %1576 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1563, ptr noundef @.str.5, i32 noundef %1564, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 374, ptr noundef %1567, ptr noundef %1570, ptr noundef %1573, i32 noundef %1575) #11
  br label %1577

1577:                                             ; preds = %1560, %1543
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1578

1578:                                             ; preds = %1577
  br label %1579

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

1580:                                             ; No predecessors!
  br label %1581

1581:                                             ; preds = %1580
  br label %1582

1582:                                             ; preds = %1581, %1522
  br label %1583

1583:                                             ; preds = %1582
  br label %1584

1584:                                             ; preds = %1583
  br label %1585

1585:                                             ; preds = %1584
  %1586 = load i32, ptr @test_count, align 4, !tbaa !5
  %1587 = add nsw i32 %1586, 1
  store i32 %1587, ptr @test_count, align 4, !tbaa !5
  %1588 = load i32, ptr %48, align 4, !tbaa !5
  %1589 = icmp ugt i32 %1588, 2
  br i1 %1589, label %1643, label %1590

1590:                                             ; preds = %1585
  br label %1591

1591:                                             ; preds = %1590
  br label %1592

1592:                                             ; preds = %1591
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  %1593 = call ptr @__errno_location() #12
  %1594 = load i32, ptr %1593, align 4, !tbaa !5
  store i32 %1594, ptr %50, align 4, !tbaa !5
  %1595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1596 = call i32 @s2n_print_stacktrace(ptr noundef %1595)
  %1597 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1598 = trunc i8 %1597 to i1
  br i1 %1598, label %1599, label %1621

1599:                                             ; preds = %1592
  %1600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1601 = call i32 @fileno(ptr noundef %1600) #11
  %1602 = call i32 @isatty(i32 noundef %1601) #11
  %1603 = icmp ne i32 %1602, 0
  br i1 %1603, label %1604, label %1621

1604:                                             ; preds = %1599
  %1605 = load i32, ptr %50, align 4, !tbaa !5
  %1606 = call ptr @__errno_location() #12
  store i32 %1605, ptr %1606, align 4, !tbaa !5
  %1607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1608 = load i32, ptr @test_count, align 4, !tbaa !5
  %1609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1610 = load i32, ptr %1609, align 4, !tbaa !5
  %1611 = call ptr @s2n_strerror(i32 noundef %1610, ptr noundef @.str.4)
  %1612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1613 = load i32, ptr %1612, align 4, !tbaa !5
  %1614 = call ptr @s2n_strerror_debug(i32 noundef %1613, ptr noundef @.str.4)
  %1615 = call ptr @__errno_location() #12
  %1616 = load i32, ptr %1615, align 4, !tbaa !5
  %1617 = call ptr @strerror(i32 noundef %1616) #11
  %1618 = call ptr @__errno_location() #12
  %1619 = load i32, ptr %1618, align 4, !tbaa !5
  %1620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1607, ptr noundef @.str.2, i32 noundef %1608, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 376, ptr noundef %1611, ptr noundef %1614, ptr noundef %1617, i32 noundef %1619) #11
  br label %1638

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

1638:                                             ; preds = %1621, %1604
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1639

1639:                                             ; preds = %1638
  br label %1640

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

1641:                                             ; No predecessors!
  br label %1642

1642:                                             ; preds = %1641
  br label %1643

1643:                                             ; preds = %1642, %1585
  br label %1644

1644:                                             ; preds = %1643
  br label %1645

1645:                                             ; preds = %1644
  br label %1646

1646:                                             ; preds = %1645
  %1647 = load i32, ptr @test_count, align 4, !tbaa !5
  %1648 = add nsw i32 %1647, 1
  store i32 %1648, ptr @test_count, align 4, !tbaa !5
  %1649 = getelementptr inbounds [200 x i8], ptr %47, i64 0, i64 1
  %1650 = load i8, ptr %1649, align 1, !tbaa !15
  %1651 = zext i8 %1650 to i32
  %1652 = load i64, ptr %42, align 8, !tbaa !16
  %1653 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1652
  %1654 = getelementptr inbounds %struct.anon, ptr %1653, i32 0, i32 2
  %1655 = load ptr, ptr %1654, align 8, !tbaa !18
  %1656 = getelementptr inbounds i8, ptr %1655, i64 0
  %1657 = load i8, ptr %1656, align 1, !tbaa !15
  %1658 = sext i8 %1657 to i32
  %1659 = icmp eq i32 %1651, %1658
  br i1 %1659, label %1660, label %1725

1660:                                             ; preds = %1646
  %1661 = getelementptr inbounds [200 x i8], ptr %47, i64 0, i64 2
  %1662 = load i8, ptr %1661, align 2, !tbaa !15
  %1663 = zext i8 %1662 to i32
  %1664 = load i64, ptr %42, align 8, !tbaa !16
  %1665 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1664
  %1666 = getelementptr inbounds %struct.anon, ptr %1665, i32 0, i32 2
  %1667 = load ptr, ptr %1666, align 8, !tbaa !18
  %1668 = getelementptr inbounds i8, ptr %1667, i64 1
  %1669 = load i8, ptr %1668, align 1, !tbaa !15
  %1670 = sext i8 %1669 to i32
  %1671 = icmp eq i32 %1663, %1670
  br i1 %1671, label %1672, label %1725

1672:                                             ; preds = %1660
  br label %1673

1673:                                             ; preds = %1672
  br label %1674

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

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

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

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

1720:                                             ; preds = %1703, %1686
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  br label %1721

1721:                                             ; preds = %1720
  br label %1722

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

1723:                                             ; No predecessors!
  br label %1724

1724:                                             ; preds = %1723
  br label %1725

1725:                                             ; preds = %1724, %1660, %1646
  br label %1726

1726:                                             ; preds = %1725
  br label %1727

1727:                                             ; preds = %1726
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %47) #11
  %1728 = call i32 @s2n_fingerprint_free(ptr noundef %44)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 808, ptr %43) #11
  br label %1729

1729:                                             ; preds = %1727, %1383
  call void @llvm.lifetime.start.p0(i64 50, ptr %52) #11
  call void @llvm.memset.p0.i64(ptr align 16 %52, i8 0, i64 50, i1 false)
  %1730 = getelementptr inbounds i8, ptr %52, i64 1
  %1731 = getelementptr inbounds i8, ptr %52, i64 2
  %1732 = getelementptr inbounds i8, ptr %52, i64 3
  %1733 = getelementptr inbounds i8, ptr %52, i64 4
  %1734 = getelementptr inbounds i8, ptr %52, i64 5
  %1735 = getelementptr inbounds i8, ptr %52, i64 6
  %1736 = getelementptr inbounds i8, ptr %52, i64 7
  %1737 = getelementptr inbounds i8, ptr %52, i64 8
  %1738 = getelementptr inbounds i8, ptr %52, i64 9
  %1739 = getelementptr inbounds i8, ptr %52, i64 10
  %1740 = getelementptr inbounds i8, ptr %52, i64 11
  %1741 = getelementptr inbounds i8, ptr %52, i64 12
  %1742 = getelementptr inbounds i8, ptr %52, i64 13
  %1743 = getelementptr inbounds i8, ptr %52, i64 14
  %1744 = getelementptr inbounds i8, ptr %52, i64 15
  %1745 = getelementptr inbounds i8, ptr %52, i64 16
  %1746 = getelementptr inbounds i8, ptr %52, i64 17
  %1747 = getelementptr inbounds i8, ptr %52, i64 18
  %1748 = getelementptr inbounds i8, ptr %52, i64 19
  %1749 = getelementptr inbounds i8, ptr %52, i64 20
  %1750 = getelementptr inbounds i8, ptr %52, i64 21
  %1751 = getelementptr inbounds i8, ptr %52, i64 22
  %1752 = getelementptr inbounds i8, ptr %52, i64 23
  %1753 = getelementptr inbounds i8, ptr %52, i64 24
  %1754 = getelementptr inbounds i8, ptr %52, i64 25
  %1755 = getelementptr inbounds i8, ptr %52, i64 26
  %1756 = getelementptr inbounds i8, ptr %52, i64 27
  %1757 = getelementptr inbounds i8, ptr %52, i64 28
  %1758 = getelementptr inbounds i8, ptr %52, i64 29
  %1759 = getelementptr inbounds i8, ptr %52, i64 30
  %1760 = getelementptr inbounds i8, ptr %52, i64 31
  %1761 = getelementptr inbounds i8, ptr %52, i64 32
  %1762 = getelementptr inbounds i8, ptr %52, i64 33
  %1763 = getelementptr inbounds i8, ptr %52, i64 34
  %1764 = getelementptr inbounds i8, ptr %52, i64 35
  %1765 = getelementptr inbounds i8, ptr %52, i64 36
  store i8 2, ptr %1765, align 1, !tbaa !15
  %1766 = getelementptr inbounds i8, ptr %52, i64 37
  %1767 = getelementptr inbounds i8, ptr %52, i64 38
  %1768 = getelementptr inbounds i8, ptr %52, i64 39
  store i8 1, ptr %1768, align 1, !tbaa !15
  %1769 = getelementptr inbounds i8, ptr %52, i64 40
  %1770 = getelementptr inbounds i8, ptr %52, i64 41
  %1771 = getelementptr inbounds i8, ptr %52, i64 42
  store i8 7, ptr %1771, align 1, !tbaa !15
  %1772 = getelementptr inbounds i8, ptr %52, i64 43
  %1773 = getelementptr inbounds i8, ptr %52, i64 44
  store i8 43, ptr %1773, align 1, !tbaa !15
  %1774 = getelementptr inbounds i8, ptr %52, i64 45
  %1775 = getelementptr inbounds i8, ptr %52, i64 46
  store i8 3, ptr %1775, align 1, !tbaa !15
  %1776 = getelementptr inbounds i8, ptr %52, i64 47
  store i8 2, ptr %1776, align 1, !tbaa !15
  %1777 = getelementptr inbounds i8, ptr %52, i64 48
  %1778 = load i64, ptr %42, align 8, !tbaa !16
  %1779 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1778
  %1780 = getelementptr inbounds %struct.anon, ptr %1779, i32 0, i32 0
  %1781 = getelementptr inbounds [2 x i8], ptr %1780, i64 0, i64 0
  %1782 = load i8, ptr %1781, align 16, !tbaa !15
  store i8 %1782, ptr %1777, align 1, !tbaa !15
  %1783 = getelementptr inbounds i8, ptr %52, i64 49
  %1784 = load i64, ptr %42, align 8, !tbaa !16
  %1785 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1784
  %1786 = getelementptr inbounds %struct.anon, ptr %1785, i32 0, i32 0
  %1787 = getelementptr inbounds [2 x i8], ptr %1786, i64 0, i64 1
  %1788 = load i8, ptr %1787, align 1, !tbaa !15
  store i8 %1788, ptr %1783, align 1, !tbaa !15
  br label %1789

1789:                                             ; preds = %1729
  %1790 = load i32, ptr @test_count, align 4, !tbaa !5
  %1791 = add nsw i32 %1790, 1
  store i32 %1791, ptr @test_count, align 4, !tbaa !5
  br label %1792

1792:                                             ; preds = %1789
  br label %1793

1793:                                             ; preds = %1792
  call void @llvm.lifetime.start.p0(i64 54, ptr %53) #11
  call void @llvm.memset.p0.i64(ptr align 16 %53, i8 0, i64 54, i1 false)
  store i8 1, ptr %53, align 1, !tbaa !15
  %1794 = getelementptr inbounds i8, ptr %53, i64 1
  %1795 = getelementptr inbounds i8, ptr %53, i64 2
  %1796 = getelementptr inbounds i8, ptr %53, i64 3
  store i8 50, ptr %1796, align 1, !tbaa !15
  %1797 = getelementptr inbounds i8, ptr %53, i64 4
  %1798 = getelementptr inbounds i8, ptr %53, i64 5
  %1799 = getelementptr inbounds i8, ptr %53, i64 6
  %1800 = getelementptr inbounds i8, ptr %53, i64 7
  %1801 = getelementptr inbounds i8, ptr %53, i64 8
  %1802 = getelementptr inbounds i8, ptr %53, i64 9
  %1803 = getelementptr inbounds i8, ptr %53, i64 10
  %1804 = getelementptr inbounds i8, ptr %53, i64 11
  %1805 = getelementptr inbounds i8, ptr %53, i64 12
  %1806 = getelementptr inbounds i8, ptr %53, i64 13
  %1807 = getelementptr inbounds i8, ptr %53, i64 14
  %1808 = getelementptr inbounds i8, ptr %53, i64 15
  %1809 = getelementptr inbounds i8, ptr %53, i64 16
  %1810 = getelementptr inbounds i8, ptr %53, i64 17
  %1811 = getelementptr inbounds i8, ptr %53, i64 18
  %1812 = getelementptr inbounds i8, ptr %53, i64 19
  %1813 = getelementptr inbounds i8, ptr %53, i64 20
  %1814 = getelementptr inbounds i8, ptr %53, i64 21
  %1815 = getelementptr inbounds i8, ptr %53, i64 22
  %1816 = getelementptr inbounds i8, ptr %53, i64 23
  %1817 = getelementptr inbounds i8, ptr %53, i64 24
  %1818 = getelementptr inbounds i8, ptr %53, i64 25
  %1819 = getelementptr inbounds i8, ptr %53, i64 26
  %1820 = getelementptr inbounds i8, ptr %53, i64 27
  %1821 = getelementptr inbounds i8, ptr %53, i64 28
  %1822 = getelementptr inbounds i8, ptr %53, i64 29
  %1823 = getelementptr inbounds i8, ptr %53, i64 30
  %1824 = getelementptr inbounds i8, ptr %53, i64 31
  %1825 = getelementptr inbounds i8, ptr %53, i64 32
  %1826 = getelementptr inbounds i8, ptr %53, i64 33
  %1827 = getelementptr inbounds i8, ptr %53, i64 34
  %1828 = getelementptr inbounds i8, ptr %53, i64 35
  %1829 = getelementptr inbounds i8, ptr %53, i64 36
  %1830 = getelementptr inbounds i8, ptr %53, i64 37
  %1831 = getelementptr inbounds i8, ptr %53, i64 38
  %1832 = getelementptr inbounds i8, ptr %53, i64 39
  %1833 = getelementptr inbounds i8, ptr %53, i64 40
  store i8 2, ptr %1833, align 1, !tbaa !15
  %1834 = getelementptr inbounds i8, ptr %53, i64 41
  %1835 = getelementptr inbounds i8, ptr %53, i64 42
  %1836 = getelementptr inbounds i8, ptr %53, i64 43
  store i8 1, ptr %1836, align 1, !tbaa !15
  %1837 = getelementptr inbounds i8, ptr %53, i64 44
  %1838 = getelementptr inbounds i8, ptr %53, i64 45
  %1839 = getelementptr inbounds i8, ptr %53, i64 46
  store i8 7, ptr %1839, align 1, !tbaa !15
  %1840 = getelementptr inbounds i8, ptr %53, i64 47
  %1841 = getelementptr inbounds i8, ptr %53, i64 48
  store i8 43, ptr %1841, align 1, !tbaa !15
  %1842 = getelementptr inbounds i8, ptr %53, i64 49
  %1843 = getelementptr inbounds i8, ptr %53, i64 50
  store i8 3, ptr %1843, align 1, !tbaa !15
  %1844 = getelementptr inbounds i8, ptr %53, i64 51
  store i8 2, ptr %1844, align 1, !tbaa !15
  %1845 = getelementptr inbounds i8, ptr %53, i64 52
  %1846 = load i64, ptr %42, align 8, !tbaa !16
  %1847 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1846
  %1848 = getelementptr inbounds %struct.anon, ptr %1847, i32 0, i32 0
  %1849 = getelementptr inbounds [2 x i8], ptr %1848, i64 0, i64 0
  %1850 = load i8, ptr %1849, align 16, !tbaa !15
  store i8 %1850, ptr %1845, align 1, !tbaa !15
  %1851 = getelementptr inbounds i8, ptr %53, i64 53
  %1852 = load i64, ptr %42, align 8, !tbaa !16
  %1853 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1852
  %1854 = getelementptr inbounds %struct.anon, ptr %1853, i32 0, i32 0
  %1855 = getelementptr inbounds [2 x i8], ptr %1854, i64 0, i64 1
  %1856 = load i8, ptr %1855, align 1, !tbaa !15
  store i8 %1856, ptr %1851, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 200, ptr %54) #11
  call void @llvm.memset.p0.i64(ptr align 16 %54, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #11
  store i32 0, ptr %55, align 4, !tbaa !5
  br label %1857

1857:                                             ; preds = %1793
  %1858 = load i32, ptr @test_count, align 4, !tbaa !5
  %1859 = add nsw i32 %1858, 1
  store i32 %1859, ptr @test_count, align 4, !tbaa !5
  %1860 = getelementptr inbounds [54 x i8], ptr %53, i64 0, i64 0
  %1861 = getelementptr inbounds [200 x i8], ptr %54, i64 0, i64 0
  %1862 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %1860, i64 noundef 54, i64 noundef 200, ptr noundef %1861, ptr noundef %55)
  %1863 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  store i32 %1862, ptr %1863, align 4
  %1864 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  %1865 = load i32, ptr %1864, align 4
  %1866 = call zeroext i1 @s2n_result_is_ok(i32 %1865)
  br i1 %1866, label %1920, label %1867

1867:                                             ; preds = %1857
  br label %1868

1868:                                             ; preds = %1867
  br label %1869

1869:                                             ; preds = %1868
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  %1870 = call ptr @__errno_location() #12
  %1871 = load i32, ptr %1870, align 4, !tbaa !5
  store i32 %1871, ptr %57, align 4, !tbaa !5
  %1872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1873 = call i32 @s2n_print_stacktrace(ptr noundef %1872)
  %1874 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1875 = trunc i8 %1874 to i1
  br i1 %1875, label %1876, label %1898

1876:                                             ; preds = %1869
  %1877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1878 = call i32 @fileno(ptr noundef %1877) #11
  %1879 = call i32 @isatty(i32 noundef %1878) #11
  %1880 = icmp ne i32 %1879, 0
  br i1 %1880, label %1881, label %1898

1881:                                             ; preds = %1876
  %1882 = load i32, ptr %57, align 4, !tbaa !5
  %1883 = call ptr @__errno_location() #12
  store i32 %1882, ptr %1883, align 4, !tbaa !5
  %1884 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1885 = load i32, ptr @test_count, align 4, !tbaa !5
  %1886 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1887 = load i32, ptr %1886, align 4, !tbaa !5
  %1888 = call ptr @s2n_strerror(i32 noundef %1887, ptr noundef @.str.4)
  %1889 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1890 = load i32, ptr %1889, align 4, !tbaa !5
  %1891 = call ptr @s2n_strerror_debug(i32 noundef %1890, ptr noundef @.str.4)
  %1892 = call ptr @__errno_location() #12
  %1893 = load i32, ptr %1892, align 4, !tbaa !5
  %1894 = call ptr @strerror(i32 noundef %1893) #11
  %1895 = call ptr @__errno_location() #12
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  %1897 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1884, ptr noundef @.str.2, i32 noundef %1885, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 404, ptr noundef %1888, ptr noundef %1891, ptr noundef %1894, i32 noundef %1896) #11
  br label %1915

1898:                                             ; preds = %1876, %1869
  %1899 = load i32, ptr %57, align 4, !tbaa !5
  %1900 = call ptr @__errno_location() #12
  store i32 %1899, ptr %1900, align 4, !tbaa !5
  %1901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1902 = load i32, ptr @test_count, align 4, !tbaa !5
  %1903 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1904 = load i32, ptr %1903, align 4, !tbaa !5
  %1905 = call ptr @s2n_strerror(i32 noundef %1904, ptr noundef @.str.4)
  %1906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1907 = load i32, ptr %1906, align 4, !tbaa !5
  %1908 = call ptr @s2n_strerror_debug(i32 noundef %1907, ptr noundef @.str.4)
  %1909 = call ptr @__errno_location() #12
  %1910 = load i32, ptr %1909, align 4, !tbaa !5
  %1911 = call ptr @strerror(i32 noundef %1910) #11
  %1912 = call ptr @__errno_location() #12
  %1913 = load i32, ptr %1912, align 4, !tbaa !5
  %1914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1901, ptr noundef @.str.5, i32 noundef %1902, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 404, ptr noundef %1905, ptr noundef %1908, ptr noundef %1911, i32 noundef %1913) #11
  br label %1915

1915:                                             ; preds = %1898, %1881
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %1916

1916:                                             ; preds = %1915
  br label %1917

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

1918:                                             ; No predecessors!
  br label %1919

1919:                                             ; preds = %1918
  br label %1920

1920:                                             ; preds = %1919, %1857
  br label %1921

1921:                                             ; preds = %1920
  br label %1922

1922:                                             ; preds = %1921
  br label %1923

1923:                                             ; preds = %1922
  %1924 = load i32, ptr @test_count, align 4, !tbaa !5
  %1925 = add nsw i32 %1924, 1
  store i32 %1925, ptr @test_count, align 4, !tbaa !5
  %1926 = load i32, ptr %55, align 4, !tbaa !5
  %1927 = icmp ugt i32 %1926, 2
  br i1 %1927, label %1981, label %1928

1928:                                             ; preds = %1923
  br label %1929

1929:                                             ; preds = %1928
  br label %1930

1930:                                             ; preds = %1929
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #11
  %1931 = call ptr @__errno_location() #12
  %1932 = load i32, ptr %1931, align 4, !tbaa !5
  store i32 %1932, ptr %58, align 4, !tbaa !5
  %1933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1934 = call i32 @s2n_print_stacktrace(ptr noundef %1933)
  %1935 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1936 = trunc i8 %1935 to i1
  br i1 %1936, label %1937, label %1959

1937:                                             ; preds = %1930
  %1938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1939 = call i32 @fileno(ptr noundef %1938) #11
  %1940 = call i32 @isatty(i32 noundef %1939) #11
  %1941 = icmp ne i32 %1940, 0
  br i1 %1941, label %1942, label %1959

1942:                                             ; preds = %1937
  %1943 = load i32, ptr %58, align 4, !tbaa !5
  %1944 = call ptr @__errno_location() #12
  store i32 %1943, ptr %1944, align 4, !tbaa !5
  %1945 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1946 = load i32, ptr @test_count, align 4, !tbaa !5
  %1947 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1948 = load i32, ptr %1947, align 4, !tbaa !5
  %1949 = call ptr @s2n_strerror(i32 noundef %1948, ptr noundef @.str.4)
  %1950 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1951 = load i32, ptr %1950, align 4, !tbaa !5
  %1952 = call ptr @s2n_strerror_debug(i32 noundef %1951, ptr noundef @.str.4)
  %1953 = call ptr @__errno_location() #12
  %1954 = load i32, ptr %1953, align 4, !tbaa !5
  %1955 = call ptr @strerror(i32 noundef %1954) #11
  %1956 = call ptr @__errno_location() #12
  %1957 = load i32, ptr %1956, align 4, !tbaa !5
  %1958 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1945, ptr noundef @.str.2, i32 noundef %1946, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 406, ptr noundef %1949, ptr noundef %1952, ptr noundef %1955, i32 noundef %1957) #11
  br label %1976

1959:                                             ; preds = %1937, %1930
  %1960 = load i32, ptr %58, align 4, !tbaa !5
  %1961 = call ptr @__errno_location() #12
  store i32 %1960, ptr %1961, align 4, !tbaa !5
  %1962 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1963 = load i32, ptr @test_count, align 4, !tbaa !5
  %1964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1965 = load i32, ptr %1964, align 4, !tbaa !5
  %1966 = call ptr @s2n_strerror(i32 noundef %1965, ptr noundef @.str.4)
  %1967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1968 = load i32, ptr %1967, align 4, !tbaa !5
  %1969 = call ptr @s2n_strerror_debug(i32 noundef %1968, ptr noundef @.str.4)
  %1970 = call ptr @__errno_location() #12
  %1971 = load i32, ptr %1970, align 4, !tbaa !5
  %1972 = call ptr @strerror(i32 noundef %1971) #11
  %1973 = call ptr @__errno_location() #12
  %1974 = load i32, ptr %1973, align 4, !tbaa !5
  %1975 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1962, ptr noundef @.str.5, i32 noundef %1963, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 406, ptr noundef %1966, ptr noundef %1969, ptr noundef %1972, i32 noundef %1974) #11
  br label %1976

1976:                                             ; preds = %1959, %1942
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  br label %1977

1977:                                             ; preds = %1976
  br label %1978

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

1979:                                             ; No predecessors!
  br label %1980

1980:                                             ; preds = %1979
  br label %1981

1981:                                             ; preds = %1980, %1923
  br label %1982

1982:                                             ; preds = %1981
  br label %1983

1983:                                             ; preds = %1982
  br label %1984

1984:                                             ; preds = %1983
  %1985 = load i32, ptr @test_count, align 4, !tbaa !5
  %1986 = add nsw i32 %1985, 1
  store i32 %1986, ptr @test_count, align 4, !tbaa !5
  %1987 = getelementptr inbounds [200 x i8], ptr %54, i64 0, i64 1
  %1988 = load i8, ptr %1987, align 1, !tbaa !15
  %1989 = zext i8 %1988 to i32
  %1990 = load i64, ptr %42, align 8, !tbaa !16
  %1991 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %1990
  %1992 = getelementptr inbounds %struct.anon, ptr %1991, i32 0, i32 2
  %1993 = load ptr, ptr %1992, align 8, !tbaa !18
  %1994 = getelementptr inbounds i8, ptr %1993, i64 0
  %1995 = load i8, ptr %1994, align 1, !tbaa !15
  %1996 = sext i8 %1995 to i32
  %1997 = icmp eq i32 %1989, %1996
  br i1 %1997, label %2051, label %1998

1998:                                             ; preds = %1984
  br label %1999

1999:                                             ; preds = %1998
  br label %2000

2000:                                             ; preds = %1999
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #11
  %2001 = call ptr @__errno_location() #12
  %2002 = load i32, ptr %2001, align 4, !tbaa !5
  store i32 %2002, ptr %59, align 4, !tbaa !5
  %2003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2004 = call i32 @s2n_print_stacktrace(ptr noundef %2003)
  %2005 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2006 = trunc i8 %2005 to i1
  br i1 %2006, label %2007, label %2029

2007:                                             ; preds = %2000
  %2008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2009 = call i32 @fileno(ptr noundef %2008) #11
  %2010 = call i32 @isatty(i32 noundef %2009) #11
  %2011 = icmp ne i32 %2010, 0
  br i1 %2011, label %2012, label %2029

2012:                                             ; preds = %2007
  %2013 = load i32, ptr %59, align 4, !tbaa !5
  %2014 = call ptr @__errno_location() #12
  store i32 %2013, ptr %2014, align 4, !tbaa !5
  %2015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2016 = load i32, ptr @test_count, align 4, !tbaa !5
  %2017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2018 = load i32, ptr %2017, align 4, !tbaa !5
  %2019 = call ptr @s2n_strerror(i32 noundef %2018, ptr noundef @.str.4)
  %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_debug(i32 noundef %2021, ptr noundef @.str.4)
  %2023 = call ptr @__errno_location() #12
  %2024 = load i32, ptr %2023, align 4, !tbaa !5
  %2025 = call ptr @strerror(i32 noundef %2024) #11
  %2026 = call ptr @__errno_location() #12
  %2027 = load i32, ptr %2026, align 4, !tbaa !5
  %2028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2015, ptr noundef @.str.2, i32 noundef %2016, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 407, ptr noundef %2019, ptr noundef %2022, ptr noundef %2025, i32 noundef %2027) #11
  br label %2046

2029:                                             ; preds = %2007, %2000
  %2030 = load i32, ptr %59, align 4, !tbaa !5
  %2031 = call ptr @__errno_location() #12
  store i32 %2030, ptr %2031, align 4, !tbaa !5
  %2032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2033 = load i32, ptr @test_count, align 4, !tbaa !5
  %2034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2035 = load i32, ptr %2034, align 4, !tbaa !5
  %2036 = call ptr @s2n_strerror(i32 noundef %2035, ptr noundef @.str.4)
  %2037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2038 = load i32, ptr %2037, align 4, !tbaa !5
  %2039 = call ptr @s2n_strerror_debug(i32 noundef %2038, ptr noundef @.str.4)
  %2040 = call ptr @__errno_location() #12
  %2041 = load i32, ptr %2040, align 4, !tbaa !5
  %2042 = call ptr @strerror(i32 noundef %2041) #11
  %2043 = call ptr @__errno_location() #12
  %2044 = load i32, ptr %2043, align 4, !tbaa !5
  %2045 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2032, ptr noundef @.str.5, i32 noundef %2033, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 407, ptr noundef %2036, ptr noundef %2039, ptr noundef %2042, i32 noundef %2044) #11
  br label %2046

2046:                                             ; preds = %2029, %2012
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #11
  br label %2047

2047:                                             ; preds = %2046
  br label %2048

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

2049:                                             ; No predecessors!
  br label %2050

2050:                                             ; preds = %2049
  br label %2051

2051:                                             ; preds = %2050, %1984
  br label %2052

2052:                                             ; preds = %2051
  br label %2053

2053:                                             ; preds = %2052
  br label %2054

2054:                                             ; preds = %2053
  %2055 = load i32, ptr @test_count, align 4, !tbaa !5
  %2056 = add nsw i32 %2055, 1
  store i32 %2056, ptr @test_count, align 4, !tbaa !5
  %2057 = getelementptr inbounds [200 x i8], ptr %54, i64 0, i64 2
  %2058 = load i8, ptr %2057, align 2, !tbaa !15
  %2059 = zext i8 %2058 to i32
  %2060 = load i64, ptr %42, align 8, !tbaa !16
  %2061 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2060
  %2062 = getelementptr inbounds %struct.anon, ptr %2061, i32 0, i32 2
  %2063 = load ptr, ptr %2062, align 8, !tbaa !18
  %2064 = getelementptr inbounds i8, ptr %2063, i64 1
  %2065 = load i8, ptr %2064, align 1, !tbaa !15
  %2066 = sext i8 %2065 to i32
  %2067 = icmp eq i32 %2059, %2066
  br i1 %2067, label %2121, label %2068

2068:                                             ; preds = %2054
  br label %2069

2069:                                             ; preds = %2068
  br label %2070

2070:                                             ; preds = %2069
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #11
  %2071 = call ptr @__errno_location() #12
  %2072 = load i32, ptr %2071, align 4, !tbaa !5
  store i32 %2072, ptr %60, align 4, !tbaa !5
  %2073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2074 = call i32 @s2n_print_stacktrace(ptr noundef %2073)
  %2075 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2076 = trunc i8 %2075 to i1
  br i1 %2076, label %2077, label %2099

2077:                                             ; preds = %2070
  %2078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2079 = call i32 @fileno(ptr noundef %2078) #11
  %2080 = call i32 @isatty(i32 noundef %2079) #11
  %2081 = icmp ne i32 %2080, 0
  br i1 %2081, label %2082, label %2099

2082:                                             ; preds = %2077
  %2083 = load i32, ptr %60, align 4, !tbaa !5
  %2084 = call ptr @__errno_location() #12
  store i32 %2083, ptr %2084, align 4, !tbaa !5
  %2085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2086 = load i32, ptr @test_count, align 4, !tbaa !5
  %2087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2088 = load i32, ptr %2087, align 4, !tbaa !5
  %2089 = call ptr @s2n_strerror(i32 noundef %2088, ptr noundef @.str.4)
  %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_debug(i32 noundef %2091, ptr noundef @.str.4)
  %2093 = call ptr @__errno_location() #12
  %2094 = load i32, ptr %2093, align 4, !tbaa !5
  %2095 = call ptr @strerror(i32 noundef %2094) #11
  %2096 = call ptr @__errno_location() #12
  %2097 = load i32, ptr %2096, align 4, !tbaa !5
  %2098 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2085, ptr noundef @.str.2, i32 noundef %2086, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 408, ptr noundef %2089, ptr noundef %2092, ptr noundef %2095, i32 noundef %2097) #11
  br label %2116

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

2116:                                             ; preds = %2099, %2082
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  br label %2117

2117:                                             ; preds = %2116
  br label %2118

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

2119:                                             ; No predecessors!
  br label %2120

2120:                                             ; preds = %2119
  br label %2121

2121:                                             ; preds = %2120, %2054
  br label %2122

2122:                                             ; preds = %2121
  br label %2123

2123:                                             ; preds = %2122
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 54, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 50, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 43, ptr %61) #11
  call void @llvm.memset.p0.i64(ptr align 16 %61, i8 0, i64 43, i1 false)
  %2124 = load i64, ptr %42, align 8, !tbaa !16
  %2125 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2124
  %2126 = getelementptr inbounds %struct.anon, ptr %2125, i32 0, i32 0
  %2127 = getelementptr inbounds [2 x i8], ptr %2126, i64 0, i64 0
  %2128 = load i8, ptr %2127, align 16, !tbaa !15
  store i8 %2128, ptr %61, align 1, !tbaa !15
  %2129 = getelementptr inbounds i8, ptr %61, i64 1
  %2130 = load i64, ptr %42, align 8, !tbaa !16
  %2131 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2130
  %2132 = getelementptr inbounds %struct.anon, ptr %2131, i32 0, i32 0
  %2133 = getelementptr inbounds [2 x i8], ptr %2132, i64 0, i64 1
  %2134 = load i8, ptr %2133, align 1, !tbaa !15
  store i8 %2134, ptr %2129, align 1, !tbaa !15
  %2135 = getelementptr inbounds i8, ptr %61, i64 2
  %2136 = getelementptr inbounds i8, ptr %61, i64 3
  %2137 = getelementptr inbounds i8, ptr %61, i64 4
  %2138 = getelementptr inbounds i8, ptr %61, i64 5
  %2139 = getelementptr inbounds i8, ptr %61, i64 6
  %2140 = getelementptr inbounds i8, ptr %61, i64 7
  %2141 = getelementptr inbounds i8, ptr %61, i64 8
  %2142 = getelementptr inbounds i8, ptr %61, i64 9
  %2143 = getelementptr inbounds i8, ptr %61, i64 10
  %2144 = getelementptr inbounds i8, ptr %61, i64 11
  %2145 = getelementptr inbounds i8, ptr %61, i64 12
  %2146 = getelementptr inbounds i8, ptr %61, i64 13
  %2147 = getelementptr inbounds i8, ptr %61, i64 14
  %2148 = getelementptr inbounds i8, ptr %61, i64 15
  %2149 = getelementptr inbounds i8, ptr %61, i64 16
  %2150 = getelementptr inbounds i8, ptr %61, i64 17
  %2151 = getelementptr inbounds i8, ptr %61, i64 18
  %2152 = getelementptr inbounds i8, ptr %61, i64 19
  %2153 = getelementptr inbounds i8, ptr %61, i64 20
  %2154 = getelementptr inbounds i8, ptr %61, i64 21
  %2155 = getelementptr inbounds i8, ptr %61, i64 22
  %2156 = getelementptr inbounds i8, ptr %61, i64 23
  %2157 = getelementptr inbounds i8, ptr %61, i64 24
  %2158 = getelementptr inbounds i8, ptr %61, i64 25
  %2159 = getelementptr inbounds i8, ptr %61, i64 26
  %2160 = getelementptr inbounds i8, ptr %61, i64 27
  %2161 = getelementptr inbounds i8, ptr %61, i64 28
  %2162 = getelementptr inbounds i8, ptr %61, i64 29
  %2163 = getelementptr inbounds i8, ptr %61, i64 30
  %2164 = getelementptr inbounds i8, ptr %61, i64 31
  %2165 = getelementptr inbounds i8, ptr %61, i64 32
  %2166 = getelementptr inbounds i8, ptr %61, i64 33
  %2167 = getelementptr inbounds i8, ptr %61, i64 34
  %2168 = getelementptr inbounds i8, ptr %61, i64 35
  %2169 = getelementptr inbounds i8, ptr %61, i64 36
  store i8 2, ptr %2169, align 1, !tbaa !15
  %2170 = getelementptr inbounds i8, ptr %61, i64 37
  %2171 = getelementptr inbounds i8, ptr %61, i64 38
  %2172 = getelementptr inbounds i8, ptr %61, i64 39
  store i8 1, ptr %2172, align 1, !tbaa !15
  %2173 = getelementptr inbounds i8, ptr %61, i64 40
  %2174 = getelementptr inbounds i8, ptr %61, i64 41
  %2175 = getelementptr inbounds i8, ptr %61, i64 42
  br label %2176

2176:                                             ; preds = %2123
  %2177 = load i32, ptr @test_count, align 4, !tbaa !5
  %2178 = add nsw i32 %2177, 1
  store i32 %2178, ptr @test_count, align 4, !tbaa !5
  br label %2179

2179:                                             ; preds = %2176
  br label %2180

2180:                                             ; preds = %2179
  call void @llvm.lifetime.start.p0(i64 47, ptr %62) #11
  call void @llvm.memset.p0.i64(ptr align 16 %62, i8 0, i64 47, i1 false)
  store i8 1, ptr %62, align 1, !tbaa !15
  %2181 = getelementptr inbounds i8, ptr %62, i64 1
  %2182 = getelementptr inbounds i8, ptr %62, i64 2
  %2183 = getelementptr inbounds i8, ptr %62, i64 3
  store i8 43, ptr %2183, align 1, !tbaa !15
  %2184 = getelementptr inbounds i8, ptr %62, i64 4
  %2185 = load i64, ptr %42, align 8, !tbaa !16
  %2186 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2185
  %2187 = getelementptr inbounds %struct.anon, ptr %2186, i32 0, i32 0
  %2188 = getelementptr inbounds [2 x i8], ptr %2187, i64 0, i64 0
  %2189 = load i8, ptr %2188, align 16, !tbaa !15
  store i8 %2189, ptr %2184, align 1, !tbaa !15
  %2190 = getelementptr inbounds i8, ptr %62, i64 5
  %2191 = load i64, ptr %42, align 8, !tbaa !16
  %2192 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2191
  %2193 = getelementptr inbounds %struct.anon, ptr %2192, i32 0, i32 0
  %2194 = getelementptr inbounds [2 x i8], ptr %2193, i64 0, i64 1
  %2195 = load i8, ptr %2194, align 1, !tbaa !15
  store i8 %2195, ptr %2190, align 1, !tbaa !15
  %2196 = getelementptr inbounds i8, ptr %62, i64 6
  %2197 = getelementptr inbounds i8, ptr %62, i64 7
  %2198 = getelementptr inbounds i8, ptr %62, i64 8
  %2199 = getelementptr inbounds i8, ptr %62, i64 9
  %2200 = getelementptr inbounds i8, ptr %62, i64 10
  %2201 = getelementptr inbounds i8, ptr %62, i64 11
  %2202 = getelementptr inbounds i8, ptr %62, i64 12
  %2203 = getelementptr inbounds i8, ptr %62, i64 13
  %2204 = getelementptr inbounds i8, ptr %62, i64 14
  %2205 = getelementptr inbounds i8, ptr %62, i64 15
  %2206 = getelementptr inbounds i8, ptr %62, i64 16
  %2207 = getelementptr inbounds i8, ptr %62, i64 17
  %2208 = getelementptr inbounds i8, ptr %62, i64 18
  %2209 = getelementptr inbounds i8, ptr %62, i64 19
  %2210 = getelementptr inbounds i8, ptr %62, i64 20
  %2211 = getelementptr inbounds i8, ptr %62, i64 21
  %2212 = getelementptr inbounds i8, ptr %62, i64 22
  %2213 = getelementptr inbounds i8, ptr %62, i64 23
  %2214 = getelementptr inbounds i8, ptr %62, i64 24
  %2215 = getelementptr inbounds i8, ptr %62, i64 25
  %2216 = getelementptr inbounds i8, ptr %62, i64 26
  %2217 = getelementptr inbounds i8, ptr %62, i64 27
  %2218 = getelementptr inbounds i8, ptr %62, i64 28
  %2219 = getelementptr inbounds i8, ptr %62, i64 29
  %2220 = getelementptr inbounds i8, ptr %62, i64 30
  %2221 = getelementptr inbounds i8, ptr %62, i64 31
  %2222 = getelementptr inbounds i8, ptr %62, i64 32
  %2223 = getelementptr inbounds i8, ptr %62, i64 33
  %2224 = getelementptr inbounds i8, ptr %62, i64 34
  %2225 = getelementptr inbounds i8, ptr %62, i64 35
  %2226 = getelementptr inbounds i8, ptr %62, i64 36
  %2227 = getelementptr inbounds i8, ptr %62, i64 37
  %2228 = getelementptr inbounds i8, ptr %62, i64 38
  %2229 = getelementptr inbounds i8, ptr %62, i64 39
  %2230 = getelementptr inbounds i8, ptr %62, i64 40
  store i8 2, ptr %2230, align 1, !tbaa !15
  %2231 = getelementptr inbounds i8, ptr %62, i64 41
  %2232 = getelementptr inbounds i8, ptr %62, i64 42
  %2233 = getelementptr inbounds i8, ptr %62, i64 43
  store i8 1, ptr %2233, align 1, !tbaa !15
  %2234 = getelementptr inbounds i8, ptr %62, i64 44
  %2235 = getelementptr inbounds i8, ptr %62, i64 45
  %2236 = getelementptr inbounds i8, ptr %62, i64 46
  call void @llvm.lifetime.start.p0(i64 200, ptr %63) #11
  call void @llvm.memset.p0.i64(ptr align 16 %63, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  store i32 0, ptr %64, align 4, !tbaa !5
  br label %2237

2237:                                             ; preds = %2180
  %2238 = load i32, ptr @test_count, align 4, !tbaa !5
  %2239 = add nsw i32 %2238, 1
  store i32 %2239, ptr @test_count, align 4, !tbaa !5
  %2240 = getelementptr inbounds [47 x i8], ptr %62, i64 0, i64 0
  %2241 = getelementptr inbounds [200 x i8], ptr %63, i64 0, i64 0
  %2242 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %2240, i64 noundef 47, i64 noundef 200, ptr noundef %2241, ptr noundef %64)
  %2243 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  store i32 %2242, ptr %2243, align 4
  %2244 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  %2245 = load i32, ptr %2244, align 4
  %2246 = call zeroext i1 @s2n_result_is_ok(i32 %2245)
  br i1 %2246, label %2300, label %2247

2247:                                             ; preds = %2237
  br label %2248

2248:                                             ; preds = %2247
  br label %2249

2249:                                             ; preds = %2248
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #11
  %2250 = call ptr @__errno_location() #12
  %2251 = load i32, ptr %2250, align 4, !tbaa !5
  store i32 %2251, ptr %66, 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) #11
  %2259 = call i32 @isatty(i32 noundef %2258) #11
  %2260 = icmp ne i32 %2259, 0
  br i1 %2260, label %2261, label %2278

2261:                                             ; preds = %2256
  %2262 = load i32, ptr %66, align 4, !tbaa !5
  %2263 = call ptr @__errno_location() #12
  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() #12
  %2273 = load i32, ptr %2272, align 4, !tbaa !5
  %2274 = call ptr @strerror(i32 noundef %2273) #11
  %2275 = call ptr @__errno_location() #12
  %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.9, ptr noundef @.str.1, i32 noundef 431, ptr noundef %2268, ptr noundef %2271, ptr noundef %2274, i32 noundef %2276) #11
  br label %2295

2278:                                             ; preds = %2256, %2249
  %2279 = load i32, ptr %66, align 4, !tbaa !5
  %2280 = call ptr @__errno_location() #12
  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() #12
  %2290 = load i32, ptr %2289, align 4, !tbaa !5
  %2291 = call ptr @strerror(i32 noundef %2290) #11
  %2292 = call ptr @__errno_location() #12
  %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.9, ptr noundef @.str.1, i32 noundef 431, ptr noundef %2285, ptr noundef %2288, ptr noundef %2291, i32 noundef %2293) #11
  br label %2295

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

2296:                                             ; preds = %2295
  br label %2297

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

2298:                                             ; No predecessors!
  br label %2299

2299:                                             ; preds = %2298
  br label %2300

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

2301:                                             ; preds = %2300
  br label %2302

2302:                                             ; preds = %2301
  br label %2303

2303:                                             ; preds = %2302
  %2304 = load i32, ptr @test_count, align 4, !tbaa !5
  %2305 = add nsw i32 %2304, 1
  store i32 %2305, ptr @test_count, align 4, !tbaa !5
  %2306 = load i32, ptr %64, align 4, !tbaa !5
  %2307 = icmp ugt i32 %2306, 2
  br i1 %2307, label %2361, label %2308

2308:                                             ; preds = %2303
  br label %2309

2309:                                             ; preds = %2308
  br label %2310

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

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

2322:                                             ; preds = %2317
  %2323 = load i32, ptr %67, align 4, !tbaa !5
  %2324 = call ptr @__errno_location() #12
  store i32 %2323, ptr %2324, align 4, !tbaa !5
  %2325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2326 = load i32, ptr @test_count, align 4, !tbaa !5
  %2327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2328 = load i32, ptr %2327, align 4, !tbaa !5
  %2329 = call ptr @s2n_strerror(i32 noundef %2328, ptr noundef @.str.4)
  %2330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2331 = load i32, ptr %2330, align 4, !tbaa !5
  %2332 = call ptr @s2n_strerror_debug(i32 noundef %2331, ptr noundef @.str.4)
  %2333 = call ptr @__errno_location() #12
  %2334 = load i32, ptr %2333, align 4, !tbaa !5
  %2335 = call ptr @strerror(i32 noundef %2334) #11
  %2336 = call ptr @__errno_location() #12
  %2337 = load i32, ptr %2336, align 4, !tbaa !5
  %2338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2325, ptr noundef @.str.2, i32 noundef %2326, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 433, ptr noundef %2329, ptr noundef %2332, ptr noundef %2335, i32 noundef %2337) #11
  br label %2356

2339:                                             ; preds = %2317, %2310
  %2340 = load i32, ptr %67, align 4, !tbaa !5
  %2341 = call ptr @__errno_location() #12
  store i32 %2340, ptr %2341, align 4, !tbaa !5
  %2342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2343 = load i32, ptr @test_count, align 4, !tbaa !5
  %2344 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2345 = load i32, ptr %2344, align 4, !tbaa !5
  %2346 = call ptr @s2n_strerror(i32 noundef %2345, ptr noundef @.str.4)
  %2347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2348 = load i32, ptr %2347, align 4, !tbaa !5
  %2349 = call ptr @s2n_strerror_debug(i32 noundef %2348, ptr noundef @.str.4)
  %2350 = call ptr @__errno_location() #12
  %2351 = load i32, ptr %2350, align 4, !tbaa !5
  %2352 = call ptr @strerror(i32 noundef %2351) #11
  %2353 = call ptr @__errno_location() #12
  %2354 = load i32, ptr %2353, align 4, !tbaa !5
  %2355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2342, ptr noundef @.str.5, i32 noundef %2343, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 433, ptr noundef %2346, ptr noundef %2349, ptr noundef %2352, i32 noundef %2354) #11
  br label %2356

2356:                                             ; preds = %2339, %2322
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  br label %2357

2357:                                             ; preds = %2356
  br label %2358

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

2359:                                             ; No predecessors!
  br label %2360

2360:                                             ; preds = %2359
  br label %2361

2361:                                             ; preds = %2360, %2303
  br label %2362

2362:                                             ; preds = %2361
  br label %2363

2363:                                             ; preds = %2362
  br label %2364

2364:                                             ; preds = %2363
  %2365 = load i32, ptr @test_count, align 4, !tbaa !5
  %2366 = add nsw i32 %2365, 1
  store i32 %2366, ptr @test_count, align 4, !tbaa !5
  %2367 = getelementptr inbounds [200 x i8], ptr %63, i64 0, i64 1
  %2368 = load i8, ptr %2367, align 1, !tbaa !15
  %2369 = zext i8 %2368 to i32
  %2370 = load i64, ptr %42, align 8, !tbaa !16
  %2371 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2370
  %2372 = getelementptr inbounds %struct.anon, ptr %2371, i32 0, i32 2
  %2373 = load ptr, ptr %2372, align 8, !tbaa !18
  %2374 = getelementptr inbounds i8, ptr %2373, i64 0
  %2375 = load i8, ptr %2374, align 1, !tbaa !15
  %2376 = sext i8 %2375 to i32
  %2377 = icmp eq i32 %2369, %2376
  br i1 %2377, label %2431, label %2378

2378:                                             ; preds = %2364
  br label %2379

2379:                                             ; preds = %2378
  br label %2380

2380:                                             ; preds = %2379
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #11
  %2381 = call ptr @__errno_location() #12
  %2382 = load i32, ptr %2381, align 4, !tbaa !5
  store i32 %2382, ptr %68, align 4, !tbaa !5
  %2383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2384 = call i32 @s2n_print_stacktrace(ptr noundef %2383)
  %2385 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2386 = trunc i8 %2385 to i1
  br i1 %2386, label %2387, label %2409

2387:                                             ; preds = %2380
  %2388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2389 = call i32 @fileno(ptr noundef %2388) #11
  %2390 = call i32 @isatty(i32 noundef %2389) #11
  %2391 = icmp ne i32 %2390, 0
  br i1 %2391, label %2392, label %2409

2392:                                             ; preds = %2387
  %2393 = load i32, ptr %68, align 4, !tbaa !5
  %2394 = call ptr @__errno_location() #12
  store i32 %2393, ptr %2394, align 4, !tbaa !5
  %2395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2396 = load i32, ptr @test_count, align 4, !tbaa !5
  %2397 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2398 = load i32, ptr %2397, align 4, !tbaa !5
  %2399 = call ptr @s2n_strerror(i32 noundef %2398, ptr noundef @.str.4)
  %2400 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2401 = load i32, ptr %2400, align 4, !tbaa !5
  %2402 = call ptr @s2n_strerror_debug(i32 noundef %2401, ptr noundef @.str.4)
  %2403 = call ptr @__errno_location() #12
  %2404 = load i32, ptr %2403, align 4, !tbaa !5
  %2405 = call ptr @strerror(i32 noundef %2404) #11
  %2406 = call ptr @__errno_location() #12
  %2407 = load i32, ptr %2406, align 4, !tbaa !5
  %2408 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2395, ptr noundef @.str.2, i32 noundef %2396, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 434, ptr noundef %2399, ptr noundef %2402, ptr noundef %2405, i32 noundef %2407) #11
  br label %2426

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

2426:                                             ; preds = %2409, %2392
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #11
  br label %2427

2427:                                             ; preds = %2426
  br label %2428

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

2429:                                             ; No predecessors!
  br label %2430

2430:                                             ; preds = %2429
  br label %2431

2431:                                             ; preds = %2430, %2364
  br label %2432

2432:                                             ; preds = %2431
  br label %2433

2433:                                             ; preds = %2432
  br label %2434

2434:                                             ; preds = %2433
  %2435 = load i32, ptr @test_count, align 4, !tbaa !5
  %2436 = add nsw i32 %2435, 1
  store i32 %2436, ptr @test_count, align 4, !tbaa !5
  %2437 = getelementptr inbounds [200 x i8], ptr %63, i64 0, i64 2
  %2438 = load i8, ptr %2437, align 2, !tbaa !15
  %2439 = zext i8 %2438 to i32
  %2440 = load i64, ptr %42, align 8, !tbaa !16
  %2441 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 %2440
  %2442 = getelementptr inbounds %struct.anon, ptr %2441, i32 0, i32 2
  %2443 = load ptr, ptr %2442, align 8, !tbaa !18
  %2444 = getelementptr inbounds i8, ptr %2443, i64 1
  %2445 = load i8, ptr %2444, align 1, !tbaa !15
  %2446 = sext i8 %2445 to i32
  %2447 = icmp eq i32 %2439, %2446
  br i1 %2447, label %2501, label %2448

2448:                                             ; preds = %2434
  br label %2449

2449:                                             ; preds = %2448
  br label %2450

2450:                                             ; preds = %2449
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #11
  %2451 = call ptr @__errno_location() #12
  %2452 = load i32, ptr %2451, align 4, !tbaa !5
  store i32 %2452, ptr %69, align 4, !tbaa !5
  %2453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2454 = call i32 @s2n_print_stacktrace(ptr noundef %2453)
  %2455 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2456 = trunc i8 %2455 to i1
  br i1 %2456, label %2457, label %2479

2457:                                             ; preds = %2450
  %2458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2459 = call i32 @fileno(ptr noundef %2458) #11
  %2460 = call i32 @isatty(i32 noundef %2459) #11
  %2461 = icmp ne i32 %2460, 0
  br i1 %2461, label %2462, label %2479

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

2479:                                             ; preds = %2457, %2450
  %2480 = load i32, ptr %69, align 4, !tbaa !5
  %2481 = call ptr @__errno_location() #12
  store i32 %2480, ptr %2481, align 4, !tbaa !5
  %2482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2483 = load i32, ptr @test_count, align 4, !tbaa !5
  %2484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2485 = load i32, ptr %2484, align 4, !tbaa !5
  %2486 = call ptr @s2n_strerror(i32 noundef %2485, ptr noundef @.str.4)
  %2487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2488 = load i32, ptr %2487, align 4, !tbaa !5
  %2489 = call ptr @s2n_strerror_debug(i32 noundef %2488, ptr noundef @.str.4)
  %2490 = call ptr @__errno_location() #12
  %2491 = load i32, ptr %2490, align 4, !tbaa !5
  %2492 = call ptr @strerror(i32 noundef %2491) #11
  %2493 = call ptr @__errno_location() #12
  %2494 = load i32, ptr %2493, align 4, !tbaa !5
  %2495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2482, ptr noundef @.str.5, i32 noundef %2483, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 435, ptr noundef %2486, ptr noundef %2489, ptr noundef %2492, i32 noundef %2494) #11
  br label %2496

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

2497:                                             ; preds = %2496
  br label %2498

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

2499:                                             ; No predecessors!
  br label %2500

2500:                                             ; preds = %2499
  br label %2501

2501:                                             ; preds = %2500, %2434
  br label %2502

2502:                                             ; preds = %2501
  br label %2503

2503:                                             ; preds = %2502
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 47, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 43, ptr %61) #11
  br label %2504

2504:                                             ; preds = %2503
  %2505 = load i64, ptr %42, align 8, !tbaa !16
  %2506 = add i64 %2505, 1
  store i64 %2506, ptr %42, align 8, !tbaa !16
  br label %1379, !llvm.loop !29

2507:                                             ; preds = %1382
  call void @llvm.lifetime.start.p0(i64 56, ptr %70) #11
  call void @llvm.memset.p0.i64(ptr align 16 %70, i8 0, i64 56, i1 false)
  %2508 = getelementptr inbounds i8, ptr %70, i64 1
  %2509 = getelementptr inbounds i8, ptr %70, i64 2
  %2510 = getelementptr inbounds i8, ptr %70, i64 3
  %2511 = getelementptr inbounds i8, ptr %70, i64 4
  %2512 = getelementptr inbounds i8, ptr %70, i64 5
  %2513 = getelementptr inbounds i8, ptr %70, i64 6
  %2514 = getelementptr inbounds i8, ptr %70, i64 7
  %2515 = getelementptr inbounds i8, ptr %70, i64 8
  %2516 = getelementptr inbounds i8, ptr %70, i64 9
  %2517 = getelementptr inbounds i8, ptr %70, i64 10
  %2518 = getelementptr inbounds i8, ptr %70, i64 11
  %2519 = getelementptr inbounds i8, ptr %70, i64 12
  %2520 = getelementptr inbounds i8, ptr %70, i64 13
  %2521 = getelementptr inbounds i8, ptr %70, i64 14
  %2522 = getelementptr inbounds i8, ptr %70, i64 15
  %2523 = getelementptr inbounds i8, ptr %70, i64 16
  %2524 = getelementptr inbounds i8, ptr %70, i64 17
  %2525 = getelementptr inbounds i8, ptr %70, i64 18
  %2526 = getelementptr inbounds i8, ptr %70, i64 19
  %2527 = getelementptr inbounds i8, ptr %70, i64 20
  %2528 = getelementptr inbounds i8, ptr %70, i64 21
  %2529 = getelementptr inbounds i8, ptr %70, i64 22
  %2530 = getelementptr inbounds i8, ptr %70, i64 23
  %2531 = getelementptr inbounds i8, ptr %70, i64 24
  %2532 = getelementptr inbounds i8, ptr %70, i64 25
  %2533 = getelementptr inbounds i8, ptr %70, i64 26
  %2534 = getelementptr inbounds i8, ptr %70, i64 27
  %2535 = getelementptr inbounds i8, ptr %70, i64 28
  %2536 = getelementptr inbounds i8, ptr %70, i64 29
  %2537 = getelementptr inbounds i8, ptr %70, i64 30
  %2538 = getelementptr inbounds i8, ptr %70, i64 31
  %2539 = getelementptr inbounds i8, ptr %70, i64 32
  %2540 = getelementptr inbounds i8, ptr %70, i64 33
  %2541 = getelementptr inbounds i8, ptr %70, i64 34
  %2542 = getelementptr inbounds i8, ptr %70, i64 35
  %2543 = getelementptr inbounds i8, ptr %70, i64 36
  store i8 2, ptr %2543, align 1, !tbaa !15
  %2544 = getelementptr inbounds i8, ptr %70, i64 37
  %2545 = getelementptr inbounds i8, ptr %70, i64 38
  %2546 = getelementptr inbounds i8, ptr %70, i64 39
  store i8 1, ptr %2546, align 1, !tbaa !15
  %2547 = getelementptr inbounds i8, ptr %70, i64 40
  %2548 = getelementptr inbounds i8, ptr %70, i64 41
  %2549 = getelementptr inbounds i8, ptr %70, i64 42
  store i8 13, ptr %2549, align 1, !tbaa !15
  %2550 = getelementptr inbounds i8, ptr %70, i64 43
  %2551 = getelementptr inbounds i8, ptr %70, i64 44
  store i8 43, ptr %2551, align 1, !tbaa !15
  %2552 = getelementptr inbounds i8, ptr %70, i64 45
  %2553 = getelementptr inbounds i8, ptr %70, i64 46
  store i8 9, ptr %2553, align 1, !tbaa !15
  %2554 = getelementptr inbounds i8, ptr %70, i64 47
  store i8 8, ptr %2554, align 1, !tbaa !15
  %2555 = getelementptr inbounds i8, ptr %70, i64 48
  store i8 10, ptr %2555, align 1, !tbaa !15
  %2556 = getelementptr inbounds i8, ptr %70, i64 49
  store i8 10, ptr %2556, align 1, !tbaa !15
  %2557 = getelementptr inbounds i8, ptr %70, i64 50
  store i8 -86, ptr %2557, align 1, !tbaa !15
  %2558 = getelementptr inbounds i8, ptr %70, i64 51
  store i8 -86, ptr %2558, align 1, !tbaa !15
  %2559 = getelementptr inbounds i8, ptr %70, i64 52
  store i8 -6, ptr %2559, align 1, !tbaa !15
  %2560 = getelementptr inbounds i8, ptr %70, i64 53
  store i8 -6, ptr %2560, align 1, !tbaa !15
  %2561 = getelementptr inbounds i8, ptr %70, i64 54
  %2562 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2563 = getelementptr inbounds %struct.anon, ptr %2562, i32 0, i32 0
  %2564 = getelementptr inbounds [2 x i8], ptr %2563, i64 0, i64 0
  %2565 = load i8, ptr %2564, align 16, !tbaa !15
  store i8 %2565, ptr %2561, align 1, !tbaa !15
  %2566 = getelementptr inbounds i8, ptr %70, i64 55
  %2567 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2568 = getelementptr inbounds %struct.anon, ptr %2567, i32 0, i32 0
  %2569 = getelementptr inbounds [2 x i8], ptr %2568, i64 0, i64 1
  %2570 = load i8, ptr %2569, align 1, !tbaa !15
  store i8 %2570, ptr %2566, align 1, !tbaa !15
  br label %2571

2571:                                             ; preds = %2507
  %2572 = load i32, ptr @test_count, align 4, !tbaa !5
  %2573 = add nsw i32 %2572, 1
  store i32 %2573, ptr @test_count, align 4, !tbaa !5
  br label %2574

2574:                                             ; preds = %2571
  br label %2575

2575:                                             ; preds = %2574
  call void @llvm.lifetime.start.p0(i64 60, ptr %71) #11
  store i8 1, ptr %71, align 1, !tbaa !15
  %2576 = getelementptr inbounds i8, ptr %71, i64 1
  store i8 0, ptr %2576, align 1, !tbaa !15
  %2577 = getelementptr inbounds i8, ptr %71, i64 2
  store i8 0, ptr %2577, align 1, !tbaa !15
  %2578 = getelementptr inbounds i8, ptr %71, i64 3
  store i8 56, ptr %2578, align 1, !tbaa !15
  %2579 = getelementptr inbounds i8, ptr %71, i64 4
  store i8 0, ptr %2579, align 1, !tbaa !15
  %2580 = getelementptr inbounds i8, ptr %71, i64 5
  store i8 0, ptr %2580, align 1, !tbaa !15
  %2581 = getelementptr inbounds i8, ptr %71, i64 6
  store i8 0, ptr %2581, align 1, !tbaa !15
  %2582 = getelementptr inbounds i8, ptr %71, i64 7
  store i8 0, ptr %2582, align 1, !tbaa !15
  %2583 = getelementptr inbounds i8, ptr %71, i64 8
  store i8 0, ptr %2583, align 1, !tbaa !15
  %2584 = getelementptr inbounds i8, ptr %71, i64 9
  store i8 0, ptr %2584, align 1, !tbaa !15
  %2585 = getelementptr inbounds i8, ptr %71, i64 10
  store i8 0, ptr %2585, align 1, !tbaa !15
  %2586 = getelementptr inbounds i8, ptr %71, i64 11
  store i8 0, ptr %2586, align 1, !tbaa !15
  %2587 = getelementptr inbounds i8, ptr %71, i64 12
  store i8 0, ptr %2587, align 1, !tbaa !15
  %2588 = getelementptr inbounds i8, ptr %71, i64 13
  store i8 0, ptr %2588, align 1, !tbaa !15
  %2589 = getelementptr inbounds i8, ptr %71, i64 14
  store i8 0, ptr %2589, align 1, !tbaa !15
  %2590 = getelementptr inbounds i8, ptr %71, i64 15
  store i8 0, ptr %2590, align 1, !tbaa !15
  %2591 = getelementptr inbounds i8, ptr %71, i64 16
  store i8 0, ptr %2591, align 1, !tbaa !15
  %2592 = getelementptr inbounds i8, ptr %71, i64 17
  store i8 0, ptr %2592, align 1, !tbaa !15
  %2593 = getelementptr inbounds i8, ptr %71, i64 18
  store i8 0, ptr %2593, align 1, !tbaa !15
  %2594 = getelementptr inbounds i8, ptr %71, i64 19
  store i8 0, ptr %2594, align 1, !tbaa !15
  %2595 = getelementptr inbounds i8, ptr %71, i64 20
  store i8 0, ptr %2595, align 1, !tbaa !15
  %2596 = getelementptr inbounds i8, ptr %71, i64 21
  store i8 0, ptr %2596, align 1, !tbaa !15
  %2597 = getelementptr inbounds i8, ptr %71, i64 22
  store i8 0, ptr %2597, align 1, !tbaa !15
  %2598 = getelementptr inbounds i8, ptr %71, i64 23
  store i8 0, ptr %2598, align 1, !tbaa !15
  %2599 = getelementptr inbounds i8, ptr %71, i64 24
  store i8 0, ptr %2599, align 1, !tbaa !15
  %2600 = getelementptr inbounds i8, ptr %71, i64 25
  store i8 0, ptr %2600, align 1, !tbaa !15
  %2601 = getelementptr inbounds i8, ptr %71, i64 26
  store i8 0, ptr %2601, align 1, !tbaa !15
  %2602 = getelementptr inbounds i8, ptr %71, i64 27
  store i8 0, ptr %2602, align 1, !tbaa !15
  %2603 = getelementptr inbounds i8, ptr %71, i64 28
  store i8 0, ptr %2603, align 1, !tbaa !15
  %2604 = getelementptr inbounds i8, ptr %71, i64 29
  store i8 0, ptr %2604, align 1, !tbaa !15
  %2605 = getelementptr inbounds i8, ptr %71, i64 30
  store i8 0, ptr %2605, align 1, !tbaa !15
  %2606 = getelementptr inbounds i8, ptr %71, i64 31
  store i8 0, ptr %2606, align 1, !tbaa !15
  %2607 = getelementptr inbounds i8, ptr %71, i64 32
  store i8 0, ptr %2607, align 1, !tbaa !15
  %2608 = getelementptr inbounds i8, ptr %71, i64 33
  store i8 0, ptr %2608, align 1, !tbaa !15
  %2609 = getelementptr inbounds i8, ptr %71, i64 34
  store i8 0, ptr %2609, align 1, !tbaa !15
  %2610 = getelementptr inbounds i8, ptr %71, i64 35
  store i8 0, ptr %2610, align 1, !tbaa !15
  %2611 = getelementptr inbounds i8, ptr %71, i64 36
  store i8 0, ptr %2611, align 1, !tbaa !15
  %2612 = getelementptr inbounds i8, ptr %71, i64 37
  store i8 0, ptr %2612, align 1, !tbaa !15
  %2613 = getelementptr inbounds i8, ptr %71, i64 38
  store i8 0, ptr %2613, align 1, !tbaa !15
  %2614 = getelementptr inbounds i8, ptr %71, i64 39
  store i8 0, ptr %2614, align 1, !tbaa !15
  %2615 = getelementptr inbounds i8, ptr %71, i64 40
  store i8 2, ptr %2615, align 1, !tbaa !15
  %2616 = getelementptr inbounds i8, ptr %71, i64 41
  store i8 0, ptr %2616, align 1, !tbaa !15
  %2617 = getelementptr inbounds i8, ptr %71, i64 42
  store i8 0, ptr %2617, align 1, !tbaa !15
  %2618 = getelementptr inbounds i8, ptr %71, i64 43
  store i8 1, ptr %2618, align 1, !tbaa !15
  %2619 = getelementptr inbounds i8, ptr %71, i64 44
  store i8 0, ptr %2619, align 1, !tbaa !15
  %2620 = getelementptr inbounds i8, ptr %71, i64 45
  store i8 0, ptr %2620, align 1, !tbaa !15
  %2621 = getelementptr inbounds i8, ptr %71, i64 46
  store i8 13, ptr %2621, align 1, !tbaa !15
  %2622 = getelementptr inbounds i8, ptr %71, i64 47
  store i8 0, ptr %2622, align 1, !tbaa !15
  %2623 = getelementptr inbounds i8, ptr %71, i64 48
  store i8 43, ptr %2623, align 1, !tbaa !15
  %2624 = getelementptr inbounds i8, ptr %71, i64 49
  store i8 0, ptr %2624, align 1, !tbaa !15
  %2625 = getelementptr inbounds i8, ptr %71, i64 50
  store i8 9, ptr %2625, align 1, !tbaa !15
  %2626 = getelementptr inbounds i8, ptr %71, i64 51
  store i8 8, ptr %2626, align 1, !tbaa !15
  %2627 = getelementptr inbounds i8, ptr %71, i64 52
  store i8 10, ptr %2627, align 1, !tbaa !15
  %2628 = getelementptr inbounds i8, ptr %71, i64 53
  store i8 10, ptr %2628, align 1, !tbaa !15
  %2629 = getelementptr inbounds i8, ptr %71, i64 54
  store i8 -86, ptr %2629, align 1, !tbaa !15
  %2630 = getelementptr inbounds i8, ptr %71, i64 55
  store i8 -86, ptr %2630, align 1, !tbaa !15
  %2631 = getelementptr inbounds i8, ptr %71, i64 56
  store i8 -6, ptr %2631, align 1, !tbaa !15
  %2632 = getelementptr inbounds i8, ptr %71, i64 57
  store i8 -6, ptr %2632, align 1, !tbaa !15
  %2633 = getelementptr inbounds i8, ptr %71, i64 58
  %2634 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2635 = getelementptr inbounds %struct.anon, ptr %2634, i32 0, i32 0
  %2636 = getelementptr inbounds [2 x i8], ptr %2635, i64 0, i64 0
  %2637 = load i8, ptr %2636, align 16, !tbaa !15
  store i8 %2637, ptr %2633, align 1, !tbaa !15
  %2638 = getelementptr inbounds i8, ptr %71, i64 59
  %2639 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2640 = getelementptr inbounds %struct.anon, ptr %2639, i32 0, i32 0
  %2641 = getelementptr inbounds [2 x i8], ptr %2640, i64 0, i64 1
  %2642 = load i8, ptr %2641, align 1, !tbaa !15
  store i8 %2642, ptr %2638, align 1, !tbaa !15
  br label %2643

2643:                                             ; preds = %2575
  %2644 = load i32, ptr @test_count, align 4, !tbaa !5
  %2645 = add nsw i32 %2644, 1
  store i32 %2645, ptr @test_count, align 4, !tbaa !5
  %2646 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2647 = getelementptr inbounds %struct.anon, ptr %2646, i32 0, i32 0
  %2648 = getelementptr inbounds [2 x i8], ptr %2647, i64 0, i64 0
  %2649 = load i8, ptr %2648, align 16, !tbaa !15
  %2650 = zext i8 %2649 to i32
  %2651 = icmp slt i32 %2650, 10
  br i1 %2651, label %2705, label %2652

2652:                                             ; preds = %2643
  br label %2653

2653:                                             ; preds = %2652
  br label %2654

2654:                                             ; preds = %2653
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #11
  %2655 = call ptr @__errno_location() #12
  %2656 = load i32, ptr %2655, align 4, !tbaa !5
  store i32 %2656, ptr %72, align 4, !tbaa !5
  %2657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2658 = call i32 @s2n_print_stacktrace(ptr noundef %2657)
  %2659 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2660 = trunc i8 %2659 to i1
  br i1 %2660, label %2661, label %2683

2661:                                             ; preds = %2654
  %2662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2663 = call i32 @fileno(ptr noundef %2662) #11
  %2664 = call i32 @isatty(i32 noundef %2663) #11
  %2665 = icmp ne i32 %2664, 0
  br i1 %2665, label %2666, label %2683

2666:                                             ; preds = %2661
  %2667 = load i32, ptr %72, align 4, !tbaa !5
  %2668 = call ptr @__errno_location() #12
  store i32 %2667, ptr %2668, align 4, !tbaa !5
  %2669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2670 = load i32, ptr @test_count, align 4, !tbaa !5
  %2671 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2672 = load i32, ptr %2671, align 4, !tbaa !5
  %2673 = call ptr @s2n_strerror(i32 noundef %2672, ptr noundef @.str.4)
  %2674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2675 = load i32, ptr %2674, align 4, !tbaa !5
  %2676 = call ptr @s2n_strerror_debug(i32 noundef %2675, ptr noundef @.str.4)
  %2677 = call ptr @__errno_location() #12
  %2678 = load i32, ptr %2677, align 4, !tbaa !5
  %2679 = call ptr @strerror(i32 noundef %2678) #11
  %2680 = call ptr @__errno_location() #12
  %2681 = load i32, ptr %2680, align 4, !tbaa !5
  %2682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2669, ptr noundef @.str.2, i32 noundef %2670, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 465, ptr noundef %2673, ptr noundef %2676, ptr noundef %2679, i32 noundef %2681) #11
  br label %2700

2683:                                             ; preds = %2661, %2654
  %2684 = load i32, ptr %72, align 4, !tbaa !5
  %2685 = call ptr @__errno_location() #12
  store i32 %2684, ptr %2685, align 4, !tbaa !5
  %2686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2687 = load i32, ptr @test_count, align 4, !tbaa !5
  %2688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2689 = load i32, ptr %2688, align 4, !tbaa !5
  %2690 = call ptr @s2n_strerror(i32 noundef %2689, ptr noundef @.str.4)
  %2691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2692 = load i32, ptr %2691, align 4, !tbaa !5
  %2693 = call ptr @s2n_strerror_debug(i32 noundef %2692, ptr noundef @.str.4)
  %2694 = call ptr @__errno_location() #12
  %2695 = load i32, ptr %2694, align 4, !tbaa !5
  %2696 = call ptr @strerror(i32 noundef %2695) #11
  %2697 = call ptr @__errno_location() #12
  %2698 = load i32, ptr %2697, align 4, !tbaa !5
  %2699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2686, ptr noundef @.str.5, i32 noundef %2687, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 465, ptr noundef %2690, ptr noundef %2693, ptr noundef %2696, i32 noundef %2698) #11
  br label %2700

2700:                                             ; preds = %2683, %2666
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #11
  br label %2701

2701:                                             ; preds = %2700
  br label %2702

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

2703:                                             ; No predecessors!
  br label %2704

2704:                                             ; preds = %2703
  br label %2705

2705:                                             ; preds = %2704, %2643
  br label %2706

2706:                                             ; preds = %2705
  br label %2707

2707:                                             ; preds = %2706
  call void @llvm.lifetime.start.p0(i64 200, ptr %73) #11
  call void @llvm.memset.p0.i64(ptr align 16 %73, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #11
  store i32 0, ptr %74, align 4, !tbaa !5
  br label %2708

2708:                                             ; preds = %2707
  %2709 = load i32, ptr @test_count, align 4, !tbaa !5
  %2710 = add nsw i32 %2709, 1
  store i32 %2710, ptr @test_count, align 4, !tbaa !5
  %2711 = getelementptr inbounds [60 x i8], ptr %71, i64 0, i64 0
  %2712 = getelementptr inbounds [200 x i8], ptr %73, i64 0, i64 0
  %2713 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %2711, i64 noundef 60, i64 noundef 200, ptr noundef %2712, ptr noundef %74)
  %2714 = getelementptr inbounds %struct.s2n_result, ptr %75, i32 0, i32 0
  store i32 %2713, ptr %2714, align 4
  %2715 = getelementptr inbounds %struct.s2n_result, ptr %75, i32 0, i32 0
  %2716 = load i32, ptr %2715, align 4
  %2717 = call zeroext i1 @s2n_result_is_ok(i32 %2716)
  br i1 %2717, label %2771, label %2718

2718:                                             ; preds = %2708
  br label %2719

2719:                                             ; preds = %2718
  br label %2720

2720:                                             ; preds = %2719
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  %2721 = call ptr @__errno_location() #12
  %2722 = load i32, ptr %2721, align 4, !tbaa !5
  store i32 %2722, ptr %76, align 4, !tbaa !5
  %2723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2724 = call i32 @s2n_print_stacktrace(ptr noundef %2723)
  %2725 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2726 = trunc i8 %2725 to i1
  br i1 %2726, label %2727, label %2749

2727:                                             ; preds = %2720
  %2728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2729 = call i32 @fileno(ptr noundef %2728) #11
  %2730 = call i32 @isatty(i32 noundef %2729) #11
  %2731 = icmp ne i32 %2730, 0
  br i1 %2731, label %2732, label %2749

2732:                                             ; preds = %2727
  %2733 = load i32, ptr %76, align 4, !tbaa !5
  %2734 = call ptr @__errno_location() #12
  store i32 %2733, ptr %2734, align 4, !tbaa !5
  %2735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2736 = load i32, ptr @test_count, align 4, !tbaa !5
  %2737 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2738 = load i32, ptr %2737, align 4, !tbaa !5
  %2739 = call ptr @s2n_strerror(i32 noundef %2738, ptr noundef @.str.4)
  %2740 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2741 = load i32, ptr %2740, align 4, !tbaa !5
  %2742 = call ptr @s2n_strerror_debug(i32 noundef %2741, ptr noundef @.str.4)
  %2743 = call ptr @__errno_location() #12
  %2744 = load i32, ptr %2743, align 4, !tbaa !5
  %2745 = call ptr @strerror(i32 noundef %2744) #11
  %2746 = call ptr @__errno_location() #12
  %2747 = load i32, ptr %2746, align 4, !tbaa !5
  %2748 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2735, ptr noundef @.str.2, i32 noundef %2736, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 471, ptr noundef %2739, ptr noundef %2742, ptr noundef %2745, i32 noundef %2747) #11
  br label %2766

2749:                                             ; preds = %2727, %2720
  %2750 = load i32, ptr %76, align 4, !tbaa !5
  %2751 = call ptr @__errno_location() #12
  store i32 %2750, ptr %2751, align 4, !tbaa !5
  %2752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2753 = load i32, ptr @test_count, align 4, !tbaa !5
  %2754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2755 = load i32, ptr %2754, align 4, !tbaa !5
  %2756 = call ptr @s2n_strerror(i32 noundef %2755, ptr noundef @.str.4)
  %2757 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2758 = load i32, ptr %2757, align 4, !tbaa !5
  %2759 = call ptr @s2n_strerror_debug(i32 noundef %2758, ptr noundef @.str.4)
  %2760 = call ptr @__errno_location() #12
  %2761 = load i32, ptr %2760, align 4, !tbaa !5
  %2762 = call ptr @strerror(i32 noundef %2761) #11
  %2763 = call ptr @__errno_location() #12
  %2764 = load i32, ptr %2763, align 4, !tbaa !5
  %2765 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2752, ptr noundef @.str.5, i32 noundef %2753, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 471, ptr noundef %2756, ptr noundef %2759, ptr noundef %2762, i32 noundef %2764) #11
  br label %2766

2766:                                             ; preds = %2749, %2732
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  br label %2767

2767:                                             ; preds = %2766
  br label %2768

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

2769:                                             ; No predecessors!
  br label %2770

2770:                                             ; preds = %2769
  br label %2771

2771:                                             ; preds = %2770, %2708
  br label %2772

2772:                                             ; preds = %2771
  br label %2773

2773:                                             ; preds = %2772
  br label %2774

2774:                                             ; preds = %2773
  %2775 = load i32, ptr @test_count, align 4, !tbaa !5
  %2776 = add nsw i32 %2775, 1
  store i32 %2776, ptr @test_count, align 4, !tbaa !5
  %2777 = load i32, ptr %74, align 4, !tbaa !5
  %2778 = icmp ugt i32 %2777, 2
  br i1 %2778, label %2832, label %2779

2779:                                             ; preds = %2774
  br label %2780

2780:                                             ; preds = %2779
  br label %2781

2781:                                             ; preds = %2780
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #11
  %2782 = call ptr @__errno_location() #12
  %2783 = load i32, ptr %2782, align 4, !tbaa !5
  store i32 %2783, ptr %77, align 4, !tbaa !5
  %2784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2785 = call i32 @s2n_print_stacktrace(ptr noundef %2784)
  %2786 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2787 = trunc i8 %2786 to i1
  br i1 %2787, label %2788, label %2810

2788:                                             ; preds = %2781
  %2789 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2790 = call i32 @fileno(ptr noundef %2789) #11
  %2791 = call i32 @isatty(i32 noundef %2790) #11
  %2792 = icmp ne i32 %2791, 0
  br i1 %2792, label %2793, label %2810

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

2810:                                             ; preds = %2788, %2781
  %2811 = load i32, ptr %77, align 4, !tbaa !5
  %2812 = call ptr @__errno_location() #12
  store i32 %2811, ptr %2812, align 4, !tbaa !5
  %2813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2814 = load i32, ptr @test_count, align 4, !tbaa !5
  %2815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2816 = load i32, ptr %2815, align 4, !tbaa !5
  %2817 = call ptr @s2n_strerror(i32 noundef %2816, ptr noundef @.str.4)
  %2818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2819 = load i32, ptr %2818, align 4, !tbaa !5
  %2820 = call ptr @s2n_strerror_debug(i32 noundef %2819, ptr noundef @.str.4)
  %2821 = call ptr @__errno_location() #12
  %2822 = load i32, ptr %2821, align 4, !tbaa !5
  %2823 = call ptr @strerror(i32 noundef %2822) #11
  %2824 = call ptr @__errno_location() #12
  %2825 = load i32, ptr %2824, align 4, !tbaa !5
  %2826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2813, ptr noundef @.str.5, i32 noundef %2814, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 473, ptr noundef %2817, ptr noundef %2820, ptr noundef %2823, i32 noundef %2825) #11
  br label %2827

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

2828:                                             ; preds = %2827
  br label %2829

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

2830:                                             ; No predecessors!
  br label %2831

2831:                                             ; preds = %2830
  br label %2832

2832:                                             ; preds = %2831, %2774
  br label %2833

2833:                                             ; preds = %2832
  br label %2834

2834:                                             ; preds = %2833
  br label %2835

2835:                                             ; preds = %2834
  %2836 = load i32, ptr @test_count, align 4, !tbaa !5
  %2837 = add nsw i32 %2836, 1
  store i32 %2837, ptr @test_count, align 4, !tbaa !5
  %2838 = getelementptr inbounds [200 x i8], ptr %73, i64 0, i64 1
  %2839 = load i8, ptr %2838, align 1, !tbaa !15
  %2840 = zext i8 %2839 to i32
  %2841 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2842 = getelementptr inbounds %struct.anon, ptr %2841, i32 0, i32 2
  %2843 = load ptr, ptr %2842, align 8, !tbaa !18
  %2844 = getelementptr inbounds i8, ptr %2843, i64 0
  %2845 = load i8, ptr %2844, align 1, !tbaa !15
  %2846 = sext i8 %2845 to i32
  %2847 = icmp eq i32 %2840, %2846
  br i1 %2847, label %2901, label %2848

2848:                                             ; preds = %2835
  br label %2849

2849:                                             ; preds = %2848
  br label %2850

2850:                                             ; preds = %2849
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #11
  %2851 = call ptr @__errno_location() #12
  %2852 = load i32, ptr %2851, align 4, !tbaa !5
  store i32 %2852, ptr %78, align 4, !tbaa !5
  %2853 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2854 = call i32 @s2n_print_stacktrace(ptr noundef %2853)
  %2855 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2856 = trunc i8 %2855 to i1
  br i1 %2856, label %2857, label %2879

2857:                                             ; preds = %2850
  %2858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2859 = call i32 @fileno(ptr noundef %2858) #11
  %2860 = call i32 @isatty(i32 noundef %2859) #11
  %2861 = icmp ne i32 %2860, 0
  br i1 %2861, label %2862, label %2879

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

2879:                                             ; preds = %2857, %2850
  %2880 = load i32, ptr %78, align 4, !tbaa !5
  %2881 = call ptr @__errno_location() #12
  store i32 %2880, ptr %2881, align 4, !tbaa !5
  %2882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2883 = load i32, ptr @test_count, align 4, !tbaa !5
  %2884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2885 = load i32, ptr %2884, align 4, !tbaa !5
  %2886 = call ptr @s2n_strerror(i32 noundef %2885, ptr noundef @.str.4)
  %2887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2888 = load i32, ptr %2887, align 4, !tbaa !5
  %2889 = call ptr @s2n_strerror_debug(i32 noundef %2888, ptr noundef @.str.4)
  %2890 = call ptr @__errno_location() #12
  %2891 = load i32, ptr %2890, align 4, !tbaa !5
  %2892 = call ptr @strerror(i32 noundef %2891) #11
  %2893 = call ptr @__errno_location() #12
  %2894 = load i32, ptr %2893, align 4, !tbaa !5
  %2895 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2882, ptr noundef @.str.5, i32 noundef %2883, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 474, ptr noundef %2886, ptr noundef %2889, ptr noundef %2892, i32 noundef %2894) #11
  br label %2896

2896:                                             ; preds = %2879, %2862
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #11
  br label %2897

2897:                                             ; preds = %2896
  br label %2898

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

2899:                                             ; No predecessors!
  br label %2900

2900:                                             ; preds = %2899
  br label %2901

2901:                                             ; preds = %2900, %2835
  br label %2902

2902:                                             ; preds = %2901
  br label %2903

2903:                                             ; preds = %2902
  br label %2904

2904:                                             ; preds = %2903
  %2905 = load i32, ptr @test_count, align 4, !tbaa !5
  %2906 = add nsw i32 %2905, 1
  store i32 %2906, ptr @test_count, align 4, !tbaa !5
  %2907 = getelementptr inbounds [200 x i8], ptr %73, i64 0, i64 2
  %2908 = load i8, ptr %2907, align 2, !tbaa !15
  %2909 = zext i8 %2908 to i32
  %2910 = getelementptr inbounds [10 x %struct.anon], ptr %41, i64 0, i64 0
  %2911 = getelementptr inbounds %struct.anon, ptr %2910, i32 0, i32 2
  %2912 = load ptr, ptr %2911, align 8, !tbaa !18
  %2913 = getelementptr inbounds i8, ptr %2912, i64 1
  %2914 = load i8, ptr %2913, align 1, !tbaa !15
  %2915 = sext i8 %2914 to i32
  %2916 = icmp eq i32 %2909, %2915
  br i1 %2916, label %2970, label %2917

2917:                                             ; preds = %2904
  br label %2918

2918:                                             ; preds = %2917
  br label %2919

2919:                                             ; preds = %2918
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #11
  %2920 = call ptr @__errno_location() #12
  %2921 = load i32, ptr %2920, align 4, !tbaa !5
  store i32 %2921, ptr %79, align 4, !tbaa !5
  %2922 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2923 = call i32 @s2n_print_stacktrace(ptr noundef %2922)
  %2924 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2925 = trunc i8 %2924 to i1
  br i1 %2925, label %2926, label %2948

2926:                                             ; preds = %2919
  %2927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2928 = call i32 @fileno(ptr noundef %2927) #11
  %2929 = call i32 @isatty(i32 noundef %2928) #11
  %2930 = icmp ne i32 %2929, 0
  br i1 %2930, label %2931, label %2948

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

2948:                                             ; preds = %2926, %2919
  %2949 = load i32, ptr %79, align 4, !tbaa !5
  %2950 = call ptr @__errno_location() #12
  store i32 %2949, ptr %2950, align 4, !tbaa !5
  %2951 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2952 = load i32, ptr @test_count, align 4, !tbaa !5
  %2953 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2954 = load i32, ptr %2953, align 4, !tbaa !5
  %2955 = call ptr @s2n_strerror(i32 noundef %2954, ptr noundef @.str.4)
  %2956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2957 = load i32, ptr %2956, align 4, !tbaa !5
  %2958 = call ptr @s2n_strerror_debug(i32 noundef %2957, ptr noundef @.str.4)
  %2959 = call ptr @__errno_location() #12
  %2960 = load i32, ptr %2959, align 4, !tbaa !5
  %2961 = call ptr @strerror(i32 noundef %2960) #11
  %2962 = call ptr @__errno_location() #12
  %2963 = load i32, ptr %2962, align 4, !tbaa !5
  %2964 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2951, ptr noundef @.str.5, i32 noundef %2952, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 475, ptr noundef %2955, ptr noundef %2958, ptr noundef %2961, i32 noundef %2963) #11
  br label %2965

2965:                                             ; preds = %2948, %2931
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #11
  br label %2966

2966:                                             ; preds = %2965
  br label %2967

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

2968:                                             ; No predecessors!
  br label %2969

2969:                                             ; preds = %2968
  br label %2970

2970:                                             ; preds = %2969, %2904
  br label %2971

2971:                                             ; preds = %2970
  br label %2972

2972:                                             ; preds = %2971
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 60, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr %41) #11
  call void @llvm.lifetime.start.p0(i64 96, ptr %80) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %80, ptr align 16 @__const.main.count_test_cases, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #11
  store i64 0, ptr %81, align 8, !tbaa !16
  br label %2973

2973:                                             ; preds = %3249, %2972
  %2974 = load i64, ptr %81, align 8, !tbaa !16
  %2975 = icmp ult i64 %2974, 6
  br i1 %2975, label %2977, label %2976

2976:                                             ; preds = %2973
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #11
  br label %3252

2977:                                             ; preds = %2973
  call void @llvm.lifetime.start.p0(i64 200, ptr %82) #11
  call void @llvm.memset.p0.i64(ptr align 16 %82, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #11
  store i32 0, ptr %83, align 4, !tbaa !5
  br label %2978

2978:                                             ; preds = %2977
  %2979 = load i32, ptr @test_count, align 4, !tbaa !5
  %2980 = add nsw i32 %2979, 1
  store i32 %2980, ptr @test_count, align 4, !tbaa !5
  %2981 = load i64, ptr %81, align 8, !tbaa !16
  %2982 = getelementptr inbounds [6 x %struct.anon.0], ptr %80, i64 0, i64 %2981
  %2983 = getelementptr inbounds %struct.anon.0, ptr %2982, i32 0, i32 0
  %2984 = load i8, ptr %2983, align 16, !tbaa !31
  %2985 = zext i8 %2984 to i16
  %2986 = getelementptr inbounds [200 x i8], ptr %82, i64 0, i64 0
  %2987 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %2985, i64 noundef 200, ptr noundef %2986, ptr noundef %83)
  %2988 = getelementptr inbounds %struct.s2n_result, ptr %84, i32 0, i32 0
  store i32 %2987, ptr %2988, align 4
  %2989 = getelementptr inbounds %struct.s2n_result, ptr %84, i32 0, i32 0
  %2990 = load i32, ptr %2989, align 4
  %2991 = call zeroext i1 @s2n_result_is_ok(i32 %2990)
  br i1 %2991, label %3045, label %2992

2992:                                             ; preds = %2978
  br label %2993

2993:                                             ; preds = %2992
  br label %2994

2994:                                             ; preds = %2993
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #11
  %2995 = call ptr @__errno_location() #12
  %2996 = load i32, ptr %2995, align 4, !tbaa !5
  store i32 %2996, ptr %85, align 4, !tbaa !5
  %2997 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2998 = call i32 @s2n_print_stacktrace(ptr noundef %2997)
  %2999 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3000 = trunc i8 %2999 to i1
  br i1 %3000, label %3001, label %3023

3001:                                             ; preds = %2994
  %3002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3003 = call i32 @fileno(ptr noundef %3002) #11
  %3004 = call i32 @isatty(i32 noundef %3003) #11
  %3005 = icmp ne i32 %3004, 0
  br i1 %3005, label %3006, label %3023

3006:                                             ; preds = %3001
  %3007 = load i32, ptr %85, align 4, !tbaa !5
  %3008 = call ptr @__errno_location() #12
  store i32 %3007, ptr %3008, align 4, !tbaa !5
  %3009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3010 = load i32, ptr @test_count, align 4, !tbaa !5
  %3011 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3012 = load i32, ptr %3011, align 4, !tbaa !5
  %3013 = call ptr @s2n_strerror(i32 noundef %3012, ptr noundef @.str.4)
  %3014 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3015 = load i32, ptr %3014, align 4, !tbaa !5
  %3016 = call ptr @s2n_strerror_debug(i32 noundef %3015, ptr noundef @.str.4)
  %3017 = call ptr @__errno_location() #12
  %3018 = load i32, ptr %3017, align 4, !tbaa !5
  %3019 = call ptr @strerror(i32 noundef %3018) #11
  %3020 = call ptr @__errno_location() #12
  %3021 = load i32, ptr %3020, align 4, !tbaa !5
  %3022 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3009, ptr noundef @.str.2, i32 noundef %3010, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 515, ptr noundef %3013, ptr noundef %3016, ptr noundef %3019, i32 noundef %3021) #11
  br label %3040

3023:                                             ; preds = %3001, %2994
  %3024 = load i32, ptr %85, align 4, !tbaa !5
  %3025 = call ptr @__errno_location() #12
  store i32 %3024, ptr %3025, align 4, !tbaa !5
  %3026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3027 = load i32, ptr @test_count, align 4, !tbaa !5
  %3028 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3029 = load i32, ptr %3028, align 4, !tbaa !5
  %3030 = call ptr @s2n_strerror(i32 noundef %3029, ptr noundef @.str.4)
  %3031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3032 = load i32, ptr %3031, align 4, !tbaa !5
  %3033 = call ptr @s2n_strerror_debug(i32 noundef %3032, ptr noundef @.str.4)
  %3034 = call ptr @__errno_location() #12
  %3035 = load i32, ptr %3034, align 4, !tbaa !5
  %3036 = call ptr @strerror(i32 noundef %3035) #11
  %3037 = call ptr @__errno_location() #12
  %3038 = load i32, ptr %3037, align 4, !tbaa !5
  %3039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3026, ptr noundef @.str.5, i32 noundef %3027, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 515, ptr noundef %3030, ptr noundef %3033, ptr noundef %3036, i32 noundef %3038) #11
  br label %3040

3040:                                             ; preds = %3023, %3006
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #11
  br label %3041

3041:                                             ; preds = %3040
  br label %3042

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

3043:                                             ; No predecessors!
  br label %3044

3044:                                             ; preds = %3043
  br label %3045

3045:                                             ; preds = %3044, %2978
  br label %3046

3046:                                             ; preds = %3045
  br label %3047

3047:                                             ; preds = %3046
  br label %3048

3048:                                             ; preds = %3047
  %3049 = load i32, ptr @test_count, align 4, !tbaa !5
  %3050 = add nsw i32 %3049, 1
  store i32 %3050, ptr @test_count, align 4, !tbaa !5
  %3051 = load i32, ptr %83, align 4, !tbaa !5
  %3052 = icmp ugt i32 %3051, 5
  br i1 %3052, label %3106, label %3053

3053:                                             ; preds = %3048
  br label %3054

3054:                                             ; preds = %3053
  br label %3055

3055:                                             ; preds = %3054
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #11
  %3056 = call ptr @__errno_location() #12
  %3057 = load i32, ptr %3056, align 4, !tbaa !5
  store i32 %3057, ptr %86, align 4, !tbaa !5
  %3058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3059 = call i32 @s2n_print_stacktrace(ptr noundef %3058)
  %3060 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3061 = trunc i8 %3060 to i1
  br i1 %3061, label %3062, label %3084

3062:                                             ; preds = %3055
  %3063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3064 = call i32 @fileno(ptr noundef %3063) #11
  %3065 = call i32 @isatty(i32 noundef %3064) #11
  %3066 = icmp ne i32 %3065, 0
  br i1 %3066, label %3067, label %3084

3067:                                             ; preds = %3062
  %3068 = load i32, ptr %86, align 4, !tbaa !5
  %3069 = call ptr @__errno_location() #12
  store i32 %3068, ptr %3069, align 4, !tbaa !5
  %3070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3071 = load i32, ptr @test_count, align 4, !tbaa !5
  %3072 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3073 = load i32, ptr %3072, align 4, !tbaa !5
  %3074 = call ptr @s2n_strerror(i32 noundef %3073, ptr noundef @.str.4)
  %3075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3076 = load i32, ptr %3075, align 4, !tbaa !5
  %3077 = call ptr @s2n_strerror_debug(i32 noundef %3076, ptr noundef @.str.4)
  %3078 = call ptr @__errno_location() #12
  %3079 = load i32, ptr %3078, align 4, !tbaa !5
  %3080 = call ptr @strerror(i32 noundef %3079) #11
  %3081 = call ptr @__errno_location() #12
  %3082 = load i32, ptr %3081, align 4, !tbaa !5
  %3083 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3070, ptr noundef @.str.2, i32 noundef %3071, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 517, ptr noundef %3074, ptr noundef %3077, ptr noundef %3080, i32 noundef %3082) #11
  br label %3101

3084:                                             ; preds = %3062, %3055
  %3085 = load i32, ptr %86, align 4, !tbaa !5
  %3086 = call ptr @__errno_location() #12
  store i32 %3085, ptr %3086, align 4, !tbaa !5
  %3087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3088 = load i32, ptr @test_count, align 4, !tbaa !5
  %3089 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3090 = load i32, ptr %3089, align 4, !tbaa !5
  %3091 = call ptr @s2n_strerror(i32 noundef %3090, ptr noundef @.str.4)
  %3092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3093 = load i32, ptr %3092, align 4, !tbaa !5
  %3094 = call ptr @s2n_strerror_debug(i32 noundef %3093, ptr noundef @.str.4)
  %3095 = call ptr @__errno_location() #12
  %3096 = load i32, ptr %3095, align 4, !tbaa !5
  %3097 = call ptr @strerror(i32 noundef %3096) #11
  %3098 = call ptr @__errno_location() #12
  %3099 = load i32, ptr %3098, align 4, !tbaa !5
  %3100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3087, ptr noundef @.str.5, i32 noundef %3088, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 517, ptr noundef %3091, ptr noundef %3094, ptr noundef %3097, i32 noundef %3099) #11
  br label %3101

3101:                                             ; preds = %3084, %3067
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %3102

3102:                                             ; preds = %3101
  br label %3103

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

3104:                                             ; No predecessors!
  br label %3105

3105:                                             ; preds = %3104
  br label %3106

3106:                                             ; preds = %3105, %3048
  br label %3107

3107:                                             ; preds = %3106
  br label %3108

3108:                                             ; preds = %3107
  br label %3109

3109:                                             ; preds = %3108
  %3110 = load i32, ptr @test_count, align 4, !tbaa !5
  %3111 = add nsw i32 %3110, 1
  store i32 %3111, ptr @test_count, align 4, !tbaa !5
  %3112 = getelementptr inbounds [200 x i8], ptr %82, i64 0, i64 4
  %3113 = load i8, ptr %3112, align 4, !tbaa !15
  %3114 = zext i8 %3113 to i32
  %3115 = load i64, ptr %81, align 8, !tbaa !16
  %3116 = getelementptr inbounds [6 x %struct.anon.0], ptr %80, i64 0, i64 %3115
  %3117 = getelementptr inbounds %struct.anon.0, ptr %3116, i32 0, i32 1
  %3118 = load ptr, ptr %3117, align 8, !tbaa !33
  %3119 = getelementptr inbounds i8, ptr %3118, i64 0
  %3120 = load i8, ptr %3119, align 1, !tbaa !15
  %3121 = sext i8 %3120 to i32
  %3122 = icmp eq i32 %3114, %3121
  br i1 %3122, label %3176, label %3123

3123:                                             ; preds = %3109
  br label %3124

3124:                                             ; preds = %3123
  br label %3125

3125:                                             ; preds = %3124
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #11
  %3126 = call ptr @__errno_location() #12
  %3127 = load i32, ptr %3126, align 4, !tbaa !5
  store i32 %3127, ptr %87, align 4, !tbaa !5
  %3128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3129 = call i32 @s2n_print_stacktrace(ptr noundef %3128)
  %3130 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3131 = trunc i8 %3130 to i1
  br i1 %3131, label %3132, label %3154

3132:                                             ; preds = %3125
  %3133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3134 = call i32 @fileno(ptr noundef %3133) #11
  %3135 = call i32 @isatty(i32 noundef %3134) #11
  %3136 = icmp ne i32 %3135, 0
  br i1 %3136, label %3137, label %3154

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

3154:                                             ; preds = %3132, %3125
  %3155 = load i32, ptr %87, align 4, !tbaa !5
  %3156 = call ptr @__errno_location() #12
  store i32 %3155, ptr %3156, align 4, !tbaa !5
  %3157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3158 = load i32, ptr @test_count, align 4, !tbaa !5
  %3159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3160 = load i32, ptr %3159, align 4, !tbaa !5
  %3161 = call ptr @s2n_strerror(i32 noundef %3160, ptr noundef @.str.4)
  %3162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3163 = load i32, ptr %3162, align 4, !tbaa !5
  %3164 = call ptr @s2n_strerror_debug(i32 noundef %3163, ptr noundef @.str.4)
  %3165 = call ptr @__errno_location() #12
  %3166 = load i32, ptr %3165, align 4, !tbaa !5
  %3167 = call ptr @strerror(i32 noundef %3166) #11
  %3168 = call ptr @__errno_location() #12
  %3169 = load i32, ptr %3168, align 4, !tbaa !5
  %3170 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3157, ptr noundef @.str.5, i32 noundef %3158, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 518, ptr noundef %3161, ptr noundef %3164, ptr noundef %3167, i32 noundef %3169) #11
  br label %3171

3171:                                             ; preds = %3154, %3137
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  br label %3172

3172:                                             ; preds = %3171
  br label %3173

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

3174:                                             ; No predecessors!
  br label %3175

3175:                                             ; preds = %3174
  br label %3176

3176:                                             ; preds = %3175, %3109
  br label %3177

3177:                                             ; preds = %3176
  br label %3178

3178:                                             ; preds = %3177
  br label %3179

3179:                                             ; preds = %3178
  %3180 = load i32, ptr @test_count, align 4, !tbaa !5
  %3181 = add nsw i32 %3180, 1
  store i32 %3181, ptr @test_count, align 4, !tbaa !5
  %3182 = getelementptr inbounds [200 x i8], ptr %82, i64 0, i64 5
  %3183 = load i8, ptr %3182, align 1, !tbaa !15
  %3184 = zext i8 %3183 to i32
  %3185 = load i64, ptr %81, align 8, !tbaa !16
  %3186 = getelementptr inbounds [6 x %struct.anon.0], ptr %80, i64 0, i64 %3185
  %3187 = getelementptr inbounds %struct.anon.0, ptr %3186, i32 0, i32 1
  %3188 = load ptr, ptr %3187, align 8, !tbaa !33
  %3189 = getelementptr inbounds i8, ptr %3188, i64 1
  %3190 = load i8, ptr %3189, align 1, !tbaa !15
  %3191 = sext i8 %3190 to i32
  %3192 = icmp eq i32 %3184, %3191
  br i1 %3192, label %3246, label %3193

3193:                                             ; preds = %3179
  br label %3194

3194:                                             ; preds = %3193
  br label %3195

3195:                                             ; preds = %3194
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #11
  %3196 = call ptr @__errno_location() #12
  %3197 = load i32, ptr %3196, align 4, !tbaa !5
  store i32 %3197, ptr %88, align 4, !tbaa !5
  %3198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3199 = call i32 @s2n_print_stacktrace(ptr noundef %3198)
  %3200 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3201 = trunc i8 %3200 to i1
  br i1 %3201, label %3202, label %3224

3202:                                             ; preds = %3195
  %3203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3204 = call i32 @fileno(ptr noundef %3203) #11
  %3205 = call i32 @isatty(i32 noundef %3204) #11
  %3206 = icmp ne i32 %3205, 0
  br i1 %3206, label %3207, label %3224

3207:                                             ; preds = %3202
  %3208 = load i32, ptr %88, align 4, !tbaa !5
  %3209 = call ptr @__errno_location() #12
  store i32 %3208, ptr %3209, align 4, !tbaa !5
  %3210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3211 = load i32, ptr @test_count, align 4, !tbaa !5
  %3212 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3213 = load i32, ptr %3212, align 4, !tbaa !5
  %3214 = call ptr @s2n_strerror(i32 noundef %3213, ptr noundef @.str.4)
  %3215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3216 = load i32, ptr %3215, align 4, !tbaa !5
  %3217 = call ptr @s2n_strerror_debug(i32 noundef %3216, ptr noundef @.str.4)
  %3218 = call ptr @__errno_location() #12
  %3219 = load i32, ptr %3218, align 4, !tbaa !5
  %3220 = call ptr @strerror(i32 noundef %3219) #11
  %3221 = call ptr @__errno_location() #12
  %3222 = load i32, ptr %3221, align 4, !tbaa !5
  %3223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3210, ptr noundef @.str.2, i32 noundef %3211, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 519, ptr noundef %3214, ptr noundef %3217, ptr noundef %3220, i32 noundef %3222) #11
  br label %3241

3224:                                             ; preds = %3202, %3195
  %3225 = load i32, ptr %88, align 4, !tbaa !5
  %3226 = call ptr @__errno_location() #12
  store i32 %3225, ptr %3226, align 4, !tbaa !5
  %3227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3228 = load i32, ptr @test_count, align 4, !tbaa !5
  %3229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3230 = load i32, ptr %3229, align 4, !tbaa !5
  %3231 = call ptr @s2n_strerror(i32 noundef %3230, ptr noundef @.str.4)
  %3232 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3233 = load i32, ptr %3232, align 4, !tbaa !5
  %3234 = call ptr @s2n_strerror_debug(i32 noundef %3233, ptr noundef @.str.4)
  %3235 = call ptr @__errno_location() #12
  %3236 = load i32, ptr %3235, align 4, !tbaa !5
  %3237 = call ptr @strerror(i32 noundef %3236) #11
  %3238 = call ptr @__errno_location() #12
  %3239 = load i32, ptr %3238, align 4, !tbaa !5
  %3240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3227, ptr noundef @.str.5, i32 noundef %3228, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 519, ptr noundef %3231, ptr noundef %3234, ptr noundef %3237, i32 noundef %3239) #11
  br label %3241

3241:                                             ; preds = %3224, %3207
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #11
  br label %3242

3242:                                             ; preds = %3241
  br label %3243

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

3244:                                             ; No predecessors!
  br label %3245

3245:                                             ; preds = %3244
  br label %3246

3246:                                             ; preds = %3245, %3179
  br label %3247

3247:                                             ; preds = %3246
  br label %3248

3248:                                             ; preds = %3247
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %82) #11
  br label %3249

3249:                                             ; preds = %3248
  %3250 = load i64, ptr %81, align 8, !tbaa !16
  %3251 = add i64 %3250, 1
  store i64 %3251, ptr %81, align 8, !tbaa !16
  br label %2973, !llvm.loop !34

3252:                                             ; preds = %2976
  call void @llvm.lifetime.start.p0(i64 49, ptr %89) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %89, ptr align 16 @__const.main._client_hello_bytes_message, i64 49, i1 false)
  br label %3253

3253:                                             ; preds = %3252
  %3254 = load i32, ptr @test_count, align 4, !tbaa !5
  %3255 = add nsw i32 %3254, 1
  store i32 %3255, ptr @test_count, align 4, !tbaa !5
  br label %3256

3256:                                             ; preds = %3253
  br label %3257

3257:                                             ; preds = %3256
  call void @llvm.lifetime.start.p0(i64 53, ptr %90) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %90, ptr align 16 @__const.main.client_hello_bytes, i64 53, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %91) #11
  call void @llvm.memset.p0.i64(ptr align 16 %91, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #11
  store i32 0, ptr %92, align 4, !tbaa !5
  br label %3258

3258:                                             ; preds = %3257
  %3259 = load i32, ptr @test_count, align 4, !tbaa !5
  %3260 = add nsw i32 %3259, 1
  store i32 %3260, ptr @test_count, align 4, !tbaa !5
  %3261 = getelementptr inbounds [53 x i8], ptr %90, i64 0, i64 0
  %3262 = getelementptr inbounds [200 x i8], ptr %91, i64 0, i64 0
  %3263 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %3261, i64 noundef 53, i64 noundef 200, ptr noundef %3262, ptr noundef %92)
  %3264 = getelementptr inbounds %struct.s2n_result, ptr %93, i32 0, i32 0
  store i32 %3263, ptr %3264, align 4
  %3265 = getelementptr inbounds %struct.s2n_result, ptr %93, i32 0, i32 0
  %3266 = load i32, ptr %3265, align 4
  %3267 = call zeroext i1 @s2n_result_is_ok(i32 %3266)
  br i1 %3267, label %3321, label %3268

3268:                                             ; preds = %3258
  br label %3269

3269:                                             ; preds = %3268
  br label %3270

3270:                                             ; preds = %3269
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #11
  %3271 = call ptr @__errno_location() #12
  %3272 = load i32, ptr %3271, align 4, !tbaa !5
  store i32 %3272, ptr %94, align 4, !tbaa !5
  %3273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3274 = call i32 @s2n_print_stacktrace(ptr noundef %3273)
  %3275 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3276 = trunc i8 %3275 to i1
  br i1 %3276, label %3277, label %3299

3277:                                             ; preds = %3270
  %3278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3279 = call i32 @fileno(ptr noundef %3278) #11
  %3280 = call i32 @isatty(i32 noundef %3279) #11
  %3281 = icmp ne i32 %3280, 0
  br i1 %3281, label %3282, label %3299

3282:                                             ; preds = %3277
  %3283 = load i32, ptr %94, align 4, !tbaa !5
  %3284 = call ptr @__errno_location() #12
  store i32 %3283, ptr %3284, align 4, !tbaa !5
  %3285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3286 = load i32, ptr @test_count, align 4, !tbaa !5
  %3287 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3288 = load i32, ptr %3287, align 4, !tbaa !5
  %3289 = call ptr @s2n_strerror(i32 noundef %3288, ptr noundef @.str.4)
  %3290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3291 = load i32, ptr %3290, align 4, !tbaa !5
  %3292 = call ptr @s2n_strerror_debug(i32 noundef %3291, ptr noundef @.str.4)
  %3293 = call ptr @__errno_location() #12
  %3294 = load i32, ptr %3293, align 4, !tbaa !5
  %3295 = call ptr @strerror(i32 noundef %3294) #11
  %3296 = call ptr @__errno_location() #12
  %3297 = load i32, ptr %3296, align 4, !tbaa !5
  %3298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3285, ptr noundef @.str.2, i32 noundef %3286, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 548, ptr noundef %3289, ptr noundef %3292, ptr noundef %3295, i32 noundef %3297) #11
  br label %3316

3299:                                             ; preds = %3277, %3270
  %3300 = load i32, ptr %94, align 4, !tbaa !5
  %3301 = call ptr @__errno_location() #12
  store i32 %3300, ptr %3301, align 4, !tbaa !5
  %3302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3303 = load i32, ptr @test_count, align 4, !tbaa !5
  %3304 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3305 = load i32, ptr %3304, align 4, !tbaa !5
  %3306 = call ptr @s2n_strerror(i32 noundef %3305, ptr noundef @.str.4)
  %3307 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3308 = load i32, ptr %3307, align 4, !tbaa !5
  %3309 = call ptr @s2n_strerror_debug(i32 noundef %3308, ptr noundef @.str.4)
  %3310 = call ptr @__errno_location() #12
  %3311 = load i32, ptr %3310, align 4, !tbaa !5
  %3312 = call ptr @strerror(i32 noundef %3311) #11
  %3313 = call ptr @__errno_location() #12
  %3314 = load i32, ptr %3313, align 4, !tbaa !5
  %3315 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3302, ptr noundef @.str.5, i32 noundef %3303, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 548, ptr noundef %3306, ptr noundef %3309, ptr noundef %3312, i32 noundef %3314) #11
  br label %3316

3316:                                             ; preds = %3299, %3282
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #11
  br label %3317

3317:                                             ; preds = %3316
  br label %3318

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

3319:                                             ; No predecessors!
  br label %3320

3320:                                             ; preds = %3319
  br label %3321

3321:                                             ; preds = %3320, %3258
  br label %3322

3322:                                             ; preds = %3321
  br label %3323

3323:                                             ; preds = %3322
  br label %3324

3324:                                             ; preds = %3323
  %3325 = load i32, ptr @test_count, align 4, !tbaa !5
  %3326 = add nsw i32 %3325, 1
  store i32 %3326, ptr @test_count, align 4, !tbaa !5
  %3327 = load i32, ptr %92, align 4, !tbaa !5
  %3328 = icmp ugt i32 %3327, 5
  br i1 %3328, label %3382, label %3329

3329:                                             ; preds = %3324
  br label %3330

3330:                                             ; preds = %3329
  br label %3331

3331:                                             ; preds = %3330
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #11
  %3332 = call ptr @__errno_location() #12
  %3333 = load i32, ptr %3332, align 4, !tbaa !5
  store i32 %3333, ptr %95, align 4, !tbaa !5
  %3334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3335 = call i32 @s2n_print_stacktrace(ptr noundef %3334)
  %3336 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3337 = trunc i8 %3336 to i1
  br i1 %3337, label %3338, label %3360

3338:                                             ; preds = %3331
  %3339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3340 = call i32 @fileno(ptr noundef %3339) #11
  %3341 = call i32 @isatty(i32 noundef %3340) #11
  %3342 = icmp ne i32 %3341, 0
  br i1 %3342, label %3343, label %3360

3343:                                             ; preds = %3338
  %3344 = load i32, ptr %95, align 4, !tbaa !5
  %3345 = call ptr @__errno_location() #12
  store i32 %3344, ptr %3345, align 4, !tbaa !5
  %3346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3347 = load i32, ptr @test_count, align 4, !tbaa !5
  %3348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3349 = load i32, ptr %3348, align 4, !tbaa !5
  %3350 = call ptr @s2n_strerror(i32 noundef %3349, ptr noundef @.str.4)
  %3351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3352 = load i32, ptr %3351, align 4, !tbaa !5
  %3353 = call ptr @s2n_strerror_debug(i32 noundef %3352, ptr noundef @.str.4)
  %3354 = call ptr @__errno_location() #12
  %3355 = load i32, ptr %3354, align 4, !tbaa !5
  %3356 = call ptr @strerror(i32 noundef %3355) #11
  %3357 = call ptr @__errno_location() #12
  %3358 = load i32, ptr %3357, align 4, !tbaa !5
  %3359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3346, ptr noundef @.str.2, i32 noundef %3347, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 550, ptr noundef %3350, ptr noundef %3353, ptr noundef %3356, i32 noundef %3358) #11
  br label %3377

3360:                                             ; preds = %3338, %3331
  %3361 = load i32, ptr %95, align 4, !tbaa !5
  %3362 = call ptr @__errno_location() #12
  store i32 %3361, ptr %3362, align 4, !tbaa !5
  %3363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3364 = load i32, ptr @test_count, align 4, !tbaa !5
  %3365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3366 = load i32, ptr %3365, align 4, !tbaa !5
  %3367 = call ptr @s2n_strerror(i32 noundef %3366, ptr noundef @.str.4)
  %3368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3369 = load i32, ptr %3368, align 4, !tbaa !5
  %3370 = call ptr @s2n_strerror_debug(i32 noundef %3369, ptr noundef @.str.4)
  %3371 = call ptr @__errno_location() #12
  %3372 = load i32, ptr %3371, align 4, !tbaa !5
  %3373 = call ptr @strerror(i32 noundef %3372) #11
  %3374 = call ptr @__errno_location() #12
  %3375 = load i32, ptr %3374, align 4, !tbaa !5
  %3376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3363, ptr noundef @.str.5, i32 noundef %3364, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 550, ptr noundef %3367, ptr noundef %3370, ptr noundef %3373, i32 noundef %3375) #11
  br label %3377

3377:                                             ; preds = %3360, %3343
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #11
  br label %3378

3378:                                             ; preds = %3377
  br label %3379

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

3380:                                             ; No predecessors!
  br label %3381

3381:                                             ; preds = %3380
  br label %3382

3382:                                             ; preds = %3381, %3324
  br label %3383

3383:                                             ; preds = %3382
  br label %3384

3384:                                             ; preds = %3383
  br label %3385

3385:                                             ; preds = %3384
  %3386 = load i32, ptr @test_count, align 4, !tbaa !5
  %3387 = add nsw i32 %3386, 1
  store i32 %3387, ptr @test_count, align 4, !tbaa !5
  %3388 = getelementptr inbounds [200 x i8], ptr %91, i64 0, i64 4
  %3389 = load i8, ptr %3388, align 4, !tbaa !15
  %3390 = zext i8 %3389 to i32
  %3391 = icmp eq i32 %3390, 48
  br i1 %3391, label %3445, label %3392

3392:                                             ; preds = %3385
  br label %3393

3393:                                             ; preds = %3392
  br label %3394

3394:                                             ; preds = %3393
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #11
  %3395 = call ptr @__errno_location() #12
  %3396 = load i32, ptr %3395, align 4, !tbaa !5
  store i32 %3396, ptr %96, align 4, !tbaa !5
  %3397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3398 = call i32 @s2n_print_stacktrace(ptr noundef %3397)
  %3399 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3400 = trunc i8 %3399 to i1
  br i1 %3400, label %3401, label %3423

3401:                                             ; preds = %3394
  %3402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3403 = call i32 @fileno(ptr noundef %3402) #11
  %3404 = call i32 @isatty(i32 noundef %3403) #11
  %3405 = icmp ne i32 %3404, 0
  br i1 %3405, label %3406, label %3423

3406:                                             ; preds = %3401
  %3407 = load i32, ptr %96, align 4, !tbaa !5
  %3408 = call ptr @__errno_location() #12
  store i32 %3407, ptr %3408, align 4, !tbaa !5
  %3409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3410 = load i32, ptr @test_count, align 4, !tbaa !5
  %3411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3412 = load i32, ptr %3411, align 4, !tbaa !5
  %3413 = call ptr @s2n_strerror(i32 noundef %3412, ptr noundef @.str.4)
  %3414 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3415 = load i32, ptr %3414, align 4, !tbaa !5
  %3416 = call ptr @s2n_strerror_debug(i32 noundef %3415, ptr noundef @.str.4)
  %3417 = call ptr @__errno_location() #12
  %3418 = load i32, ptr %3417, align 4, !tbaa !5
  %3419 = call ptr @strerror(i32 noundef %3418) #11
  %3420 = call ptr @__errno_location() #12
  %3421 = load i32, ptr %3420, align 4, !tbaa !5
  %3422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3409, ptr noundef @.str.2, i32 noundef %3410, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 551, ptr noundef %3413, ptr noundef %3416, ptr noundef %3419, i32 noundef %3421) #11
  br label %3440

3423:                                             ; preds = %3401, %3394
  %3424 = load i32, ptr %96, align 4, !tbaa !5
  %3425 = call ptr @__errno_location() #12
  store i32 %3424, ptr %3425, align 4, !tbaa !5
  %3426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3427 = load i32, ptr @test_count, align 4, !tbaa !5
  %3428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3429 = load i32, ptr %3428, align 4, !tbaa !5
  %3430 = call ptr @s2n_strerror(i32 noundef %3429, ptr noundef @.str.4)
  %3431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3432 = load i32, ptr %3431, align 4, !tbaa !5
  %3433 = call ptr @s2n_strerror_debug(i32 noundef %3432, ptr noundef @.str.4)
  %3434 = call ptr @__errno_location() #12
  %3435 = load i32, ptr %3434, align 4, !tbaa !5
  %3436 = call ptr @strerror(i32 noundef %3435) #11
  %3437 = call ptr @__errno_location() #12
  %3438 = load i32, ptr %3437, align 4, !tbaa !5
  %3439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3426, ptr noundef @.str.5, i32 noundef %3427, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 551, ptr noundef %3430, ptr noundef %3433, ptr noundef %3436, i32 noundef %3438) #11
  br label %3440

3440:                                             ; preds = %3423, %3406
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #11
  br label %3441

3441:                                             ; preds = %3440
  br label %3442

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

3443:                                             ; No predecessors!
  br label %3444

3444:                                             ; preds = %3443
  br label %3445

3445:                                             ; preds = %3444, %3385
  br label %3446

3446:                                             ; preds = %3445
  br label %3447

3447:                                             ; preds = %3446
  br label %3448

3448:                                             ; preds = %3447
  %3449 = load i32, ptr @test_count, align 4, !tbaa !5
  %3450 = add nsw i32 %3449, 1
  store i32 %3450, ptr @test_count, align 4, !tbaa !5
  %3451 = getelementptr inbounds [200 x i8], ptr %91, i64 0, i64 5
  %3452 = load i8, ptr %3451, align 1, !tbaa !15
  %3453 = zext i8 %3452 to i32
  %3454 = icmp eq i32 %3453, 49
  br i1 %3454, label %3508, label %3455

3455:                                             ; preds = %3448
  br label %3456

3456:                                             ; preds = %3455
  br label %3457

3457:                                             ; preds = %3456
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #11
  %3458 = call ptr @__errno_location() #12
  %3459 = load i32, ptr %3458, align 4, !tbaa !5
  store i32 %3459, ptr %97, align 4, !tbaa !5
  %3460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3461 = call i32 @s2n_print_stacktrace(ptr noundef %3460)
  %3462 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3463 = trunc i8 %3462 to i1
  br i1 %3463, label %3464, label %3486

3464:                                             ; preds = %3457
  %3465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3466 = call i32 @fileno(ptr noundef %3465) #11
  %3467 = call i32 @isatty(i32 noundef %3466) #11
  %3468 = icmp ne i32 %3467, 0
  br i1 %3468, label %3469, label %3486

3469:                                             ; preds = %3464
  %3470 = load i32, ptr %97, align 4, !tbaa !5
  %3471 = call ptr @__errno_location() #12
  store i32 %3470, ptr %3471, align 4, !tbaa !5
  %3472 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3473 = load i32, ptr @test_count, align 4, !tbaa !5
  %3474 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3475 = load i32, ptr %3474, align 4, !tbaa !5
  %3476 = call ptr @s2n_strerror(i32 noundef %3475, ptr noundef @.str.4)
  %3477 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3478 = load i32, ptr %3477, align 4, !tbaa !5
  %3479 = call ptr @s2n_strerror_debug(i32 noundef %3478, ptr noundef @.str.4)
  %3480 = call ptr @__errno_location() #12
  %3481 = load i32, ptr %3480, align 4, !tbaa !5
  %3482 = call ptr @strerror(i32 noundef %3481) #11
  %3483 = call ptr @__errno_location() #12
  %3484 = load i32, ptr %3483, align 4, !tbaa !5
  %3485 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3472, ptr noundef @.str.2, i32 noundef %3473, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 552, ptr noundef %3476, ptr noundef %3479, ptr noundef %3482, i32 noundef %3484) #11
  br label %3503

3486:                                             ; preds = %3464, %3457
  %3487 = load i32, ptr %97, align 4, !tbaa !5
  %3488 = call ptr @__errno_location() #12
  store i32 %3487, ptr %3488, align 4, !tbaa !5
  %3489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3490 = load i32, ptr @test_count, align 4, !tbaa !5
  %3491 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3492 = load i32, ptr %3491, align 4, !tbaa !5
  %3493 = call ptr @s2n_strerror(i32 noundef %3492, ptr noundef @.str.4)
  %3494 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3495 = load i32, ptr %3494, align 4, !tbaa !5
  %3496 = call ptr @s2n_strerror_debug(i32 noundef %3495, ptr noundef @.str.4)
  %3497 = call ptr @__errno_location() #12
  %3498 = load i32, ptr %3497, align 4, !tbaa !5
  %3499 = call ptr @strerror(i32 noundef %3498) #11
  %3500 = call ptr @__errno_location() #12
  %3501 = load i32, ptr %3500, align 4, !tbaa !5
  %3502 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3489, ptr noundef @.str.5, i32 noundef %3490, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 552, ptr noundef %3493, ptr noundef %3496, ptr noundef %3499, i32 noundef %3501) #11
  br label %3503

3503:                                             ; preds = %3486, %3469
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #11
  br label %3504

3504:                                             ; preds = %3503
  br label %3505

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

3506:                                             ; No predecessors!
  br label %3507

3507:                                             ; preds = %3506
  br label %3508

3508:                                             ; preds = %3507, %3448
  br label %3509

3509:                                             ; preds = %3508
  br label %3510

3510:                                             ; preds = %3509
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %91) #11
  call void @llvm.lifetime.end.p0(i64 53, ptr %90) #11
  call void @llvm.lifetime.end.p0(i64 49, ptr %89) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #11
  store i64 0, ptr %98, align 8, !tbaa !16
  br label %3511

3511:                                             ; preds = %3787, %3510
  %3512 = load i64, ptr %98, align 8, !tbaa !16
  %3513 = icmp ult i64 %3512, 6
  br i1 %3513, label %3515, label %3514

3514:                                             ; preds = %3511
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #11
  br label %3790

3515:                                             ; preds = %3511
  call void @llvm.lifetime.start.p0(i64 200, ptr %99) #11
  call void @llvm.memset.p0.i64(ptr align 16 %99, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #11
  store i32 0, ptr %100, align 4, !tbaa !5
  br label %3516

3516:                                             ; preds = %3515
  %3517 = load i32, ptr @test_count, align 4, !tbaa !5
  %3518 = add nsw i32 %3517, 1
  store i32 %3518, ptr @test_count, align 4, !tbaa !5
  %3519 = load i64, ptr %98, align 8, !tbaa !16
  %3520 = getelementptr inbounds [6 x %struct.anon.0], ptr %80, i64 0, i64 %3519
  %3521 = getelementptr inbounds %struct.anon.0, ptr %3520, i32 0, i32 0
  %3522 = load i8, ptr %3521, align 16, !tbaa !31
  %3523 = zext i8 %3522 to i16
  %3524 = getelementptr inbounds [200 x i8], ptr %99, i64 0, i64 0
  %3525 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %3523, i64 noundef 200, ptr noundef %3524, ptr noundef %100)
  %3526 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  store i32 %3525, ptr %3526, align 4
  %3527 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  %3528 = load i32, ptr %3527, align 4
  %3529 = call zeroext i1 @s2n_result_is_ok(i32 %3528)
  br i1 %3529, label %3583, label %3530

3530:                                             ; preds = %3516
  br label %3531

3531:                                             ; preds = %3530
  br label %3532

3532:                                             ; preds = %3531
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #11
  %3533 = call ptr @__errno_location() #12
  %3534 = load i32, ptr %3533, align 4, !tbaa !5
  store i32 %3534, ptr %102, align 4, !tbaa !5
  %3535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3536 = call i32 @s2n_print_stacktrace(ptr noundef %3535)
  %3537 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3538 = trunc i8 %3537 to i1
  br i1 %3538, label %3539, label %3561

3539:                                             ; preds = %3532
  %3540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3541 = call i32 @fileno(ptr noundef %3540) #11
  %3542 = call i32 @isatty(i32 noundef %3541) #11
  %3543 = icmp ne i32 %3542, 0
  br i1 %3543, label %3544, label %3561

3544:                                             ; preds = %3539
  %3545 = load i32, ptr %102, align 4, !tbaa !5
  %3546 = call ptr @__errno_location() #12
  store i32 %3545, ptr %3546, align 4, !tbaa !5
  %3547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3548 = load i32, ptr @test_count, align 4, !tbaa !5
  %3549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3550 = load i32, ptr %3549, align 4, !tbaa !5
  %3551 = call ptr @s2n_strerror(i32 noundef %3550, ptr noundef @.str.4)
  %3552 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3553 = load i32, ptr %3552, align 4, !tbaa !5
  %3554 = call ptr @s2n_strerror_debug(i32 noundef %3553, ptr noundef @.str.4)
  %3555 = call ptr @__errno_location() #12
  %3556 = load i32, ptr %3555, align 4, !tbaa !5
  %3557 = call ptr @strerror(i32 noundef %3556) #11
  %3558 = call ptr @__errno_location() #12
  %3559 = load i32, ptr %3558, align 4, !tbaa !5
  %3560 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3547, ptr noundef @.str.2, i32 noundef %3548, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 568, ptr noundef %3551, ptr noundef %3554, ptr noundef %3557, i32 noundef %3559) #11
  br label %3578

3561:                                             ; preds = %3539, %3532
  %3562 = load i32, ptr %102, align 4, !tbaa !5
  %3563 = call ptr @__errno_location() #12
  store i32 %3562, ptr %3563, align 4, !tbaa !5
  %3564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3565 = load i32, ptr @test_count, align 4, !tbaa !5
  %3566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3567 = load i32, ptr %3566, align 4, !tbaa !5
  %3568 = call ptr @s2n_strerror(i32 noundef %3567, ptr noundef @.str.4)
  %3569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3570 = load i32, ptr %3569, align 4, !tbaa !5
  %3571 = call ptr @s2n_strerror_debug(i32 noundef %3570, ptr noundef @.str.4)
  %3572 = call ptr @__errno_location() #12
  %3573 = load i32, ptr %3572, align 4, !tbaa !5
  %3574 = call ptr @strerror(i32 noundef %3573) #11
  %3575 = call ptr @__errno_location() #12
  %3576 = load i32, ptr %3575, align 4, !tbaa !5
  %3577 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3564, ptr noundef @.str.5, i32 noundef %3565, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 568, ptr noundef %3568, ptr noundef %3571, ptr noundef %3574, i32 noundef %3576) #11
  br label %3578

3578:                                             ; preds = %3561, %3544
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #11
  br label %3579

3579:                                             ; preds = %3578
  br label %3580

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

3581:                                             ; No predecessors!
  br label %3582

3582:                                             ; preds = %3581
  br label %3583

3583:                                             ; preds = %3582, %3516
  br label %3584

3584:                                             ; preds = %3583
  br label %3585

3585:                                             ; preds = %3584
  br label %3586

3586:                                             ; preds = %3585
  %3587 = load i32, ptr @test_count, align 4, !tbaa !5
  %3588 = add nsw i32 %3587, 1
  store i32 %3588, ptr @test_count, align 4, !tbaa !5
  %3589 = load i32, ptr %100, align 4, !tbaa !5
  %3590 = icmp ugt i32 %3589, 7
  br i1 %3590, label %3644, label %3591

3591:                                             ; preds = %3586
  br label %3592

3592:                                             ; preds = %3591
  br label %3593

3593:                                             ; preds = %3592
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #11
  %3594 = call ptr @__errno_location() #12
  %3595 = load i32, ptr %3594, align 4, !tbaa !5
  store i32 %3595, ptr %103, align 4, !tbaa !5
  %3596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3597 = call i32 @s2n_print_stacktrace(ptr noundef %3596)
  %3598 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3599 = trunc i8 %3598 to i1
  br i1 %3599, label %3600, label %3622

3600:                                             ; preds = %3593
  %3601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3602 = call i32 @fileno(ptr noundef %3601) #11
  %3603 = call i32 @isatty(i32 noundef %3602) #11
  %3604 = icmp ne i32 %3603, 0
  br i1 %3604, label %3605, label %3622

3605:                                             ; preds = %3600
  %3606 = load i32, ptr %103, align 4, !tbaa !5
  %3607 = call ptr @__errno_location() #12
  store i32 %3606, ptr %3607, align 4, !tbaa !5
  %3608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3609 = load i32, ptr @test_count, align 4, !tbaa !5
  %3610 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3611 = load i32, ptr %3610, align 4, !tbaa !5
  %3612 = call ptr @s2n_strerror(i32 noundef %3611, ptr noundef @.str.4)
  %3613 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3614 = load i32, ptr %3613, align 4, !tbaa !5
  %3615 = call ptr @s2n_strerror_debug(i32 noundef %3614, ptr noundef @.str.4)
  %3616 = call ptr @__errno_location() #12
  %3617 = load i32, ptr %3616, align 4, !tbaa !5
  %3618 = call ptr @strerror(i32 noundef %3617) #11
  %3619 = call ptr @__errno_location() #12
  %3620 = load i32, ptr %3619, align 4, !tbaa !5
  %3621 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3608, ptr noundef @.str.2, i32 noundef %3609, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 570, ptr noundef %3612, ptr noundef %3615, ptr noundef %3618, i32 noundef %3620) #11
  br label %3639

3622:                                             ; preds = %3600, %3593
  %3623 = load i32, ptr %103, align 4, !tbaa !5
  %3624 = call ptr @__errno_location() #12
  store i32 %3623, ptr %3624, align 4, !tbaa !5
  %3625 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3626 = load i32, ptr @test_count, align 4, !tbaa !5
  %3627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3628 = load i32, ptr %3627, align 4, !tbaa !5
  %3629 = call ptr @s2n_strerror(i32 noundef %3628, ptr noundef @.str.4)
  %3630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3631 = load i32, ptr %3630, align 4, !tbaa !5
  %3632 = call ptr @s2n_strerror_debug(i32 noundef %3631, ptr noundef @.str.4)
  %3633 = call ptr @__errno_location() #12
  %3634 = load i32, ptr %3633, align 4, !tbaa !5
  %3635 = call ptr @strerror(i32 noundef %3634) #11
  %3636 = call ptr @__errno_location() #12
  %3637 = load i32, ptr %3636, align 4, !tbaa !5
  %3638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3625, ptr noundef @.str.5, i32 noundef %3626, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 570, ptr noundef %3629, ptr noundef %3632, ptr noundef %3635, i32 noundef %3637) #11
  br label %3639

3639:                                             ; preds = %3622, %3605
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #11
  br label %3640

3640:                                             ; preds = %3639
  br label %3641

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

3642:                                             ; No predecessors!
  br label %3643

3643:                                             ; preds = %3642
  br label %3644

3644:                                             ; preds = %3643, %3586
  br label %3645

3645:                                             ; preds = %3644
  br label %3646

3646:                                             ; preds = %3645
  br label %3647

3647:                                             ; preds = %3646
  %3648 = load i32, ptr @test_count, align 4, !tbaa !5
  %3649 = add nsw i32 %3648, 1
  store i32 %3649, ptr @test_count, align 4, !tbaa !5
  %3650 = getelementptr inbounds [200 x i8], ptr %99, i64 0, i64 6
  %3651 = load i8, ptr %3650, align 2, !tbaa !15
  %3652 = zext i8 %3651 to i32
  %3653 = load i64, ptr %98, align 8, !tbaa !16
  %3654 = getelementptr inbounds [6 x %struct.anon.0], ptr %80, i64 0, i64 %3653
  %3655 = getelementptr inbounds %struct.anon.0, ptr %3654, i32 0, i32 1
  %3656 = load ptr, ptr %3655, align 8, !tbaa !33
  %3657 = getelementptr inbounds i8, ptr %3656, i64 0
  %3658 = load i8, ptr %3657, align 1, !tbaa !15
  %3659 = sext i8 %3658 to i32
  %3660 = icmp eq i32 %3652, %3659
  br i1 %3660, label %3714, label %3661

3661:                                             ; preds = %3647
  br label %3662

3662:                                             ; preds = %3661
  br label %3663

3663:                                             ; preds = %3662
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #11
  %3664 = call ptr @__errno_location() #12
  %3665 = load i32, ptr %3664, align 4, !tbaa !5
  store i32 %3665, ptr %104, align 4, !tbaa !5
  %3666 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3667 = call i32 @s2n_print_stacktrace(ptr noundef %3666)
  %3668 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3669 = trunc i8 %3668 to i1
  br i1 %3669, label %3670, label %3692

3670:                                             ; preds = %3663
  %3671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3672 = call i32 @fileno(ptr noundef %3671) #11
  %3673 = call i32 @isatty(i32 noundef %3672) #11
  %3674 = icmp ne i32 %3673, 0
  br i1 %3674, label %3675, label %3692

3675:                                             ; preds = %3670
  %3676 = load i32, ptr %104, align 4, !tbaa !5
  %3677 = call ptr @__errno_location() #12
  store i32 %3676, ptr %3677, align 4, !tbaa !5
  %3678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3679 = load i32, ptr @test_count, align 4, !tbaa !5
  %3680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3681 = load i32, ptr %3680, align 4, !tbaa !5
  %3682 = call ptr @s2n_strerror(i32 noundef %3681, ptr noundef @.str.4)
  %3683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3684 = load i32, ptr %3683, align 4, !tbaa !5
  %3685 = call ptr @s2n_strerror_debug(i32 noundef %3684, ptr noundef @.str.4)
  %3686 = call ptr @__errno_location() #12
  %3687 = load i32, ptr %3686, align 4, !tbaa !5
  %3688 = call ptr @strerror(i32 noundef %3687) #11
  %3689 = call ptr @__errno_location() #12
  %3690 = load i32, ptr %3689, align 4, !tbaa !5
  %3691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3678, ptr noundef @.str.2, i32 noundef %3679, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 571, ptr noundef %3682, ptr noundef %3685, ptr noundef %3688, i32 noundef %3690) #11
  br label %3709

3692:                                             ; preds = %3670, %3663
  %3693 = load i32, ptr %104, align 4, !tbaa !5
  %3694 = call ptr @__errno_location() #12
  store i32 %3693, ptr %3694, align 4, !tbaa !5
  %3695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3696 = load i32, ptr @test_count, align 4, !tbaa !5
  %3697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3698 = load i32, ptr %3697, align 4, !tbaa !5
  %3699 = call ptr @s2n_strerror(i32 noundef %3698, ptr noundef @.str.4)
  %3700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3701 = load i32, ptr %3700, align 4, !tbaa !5
  %3702 = call ptr @s2n_strerror_debug(i32 noundef %3701, ptr noundef @.str.4)
  %3703 = call ptr @__errno_location() #12
  %3704 = load i32, ptr %3703, align 4, !tbaa !5
  %3705 = call ptr @strerror(i32 noundef %3704) #11
  %3706 = call ptr @__errno_location() #12
  %3707 = load i32, ptr %3706, align 4, !tbaa !5
  %3708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3695, ptr noundef @.str.5, i32 noundef %3696, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 571, ptr noundef %3699, ptr noundef %3702, ptr noundef %3705, i32 noundef %3707) #11
  br label %3709

3709:                                             ; preds = %3692, %3675
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #11
  br label %3710

3710:                                             ; preds = %3709
  br label %3711

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

3712:                                             ; No predecessors!
  br label %3713

3713:                                             ; preds = %3712
  br label %3714

3714:                                             ; preds = %3713, %3647
  br label %3715

3715:                                             ; preds = %3714
  br label %3716

3716:                                             ; preds = %3715
  br label %3717

3717:                                             ; preds = %3716
  %3718 = load i32, ptr @test_count, align 4, !tbaa !5
  %3719 = add nsw i32 %3718, 1
  store i32 %3719, ptr @test_count, align 4, !tbaa !5
  %3720 = getelementptr inbounds [200 x i8], ptr %99, i64 0, i64 7
  %3721 = load i8, ptr %3720, align 1, !tbaa !15
  %3722 = zext i8 %3721 to i32
  %3723 = load i64, ptr %98, align 8, !tbaa !16
  %3724 = getelementptr inbounds [6 x %struct.anon.0], ptr %80, i64 0, i64 %3723
  %3725 = getelementptr inbounds %struct.anon.0, ptr %3724, i32 0, i32 1
  %3726 = load ptr, ptr %3725, align 8, !tbaa !33
  %3727 = getelementptr inbounds i8, ptr %3726, i64 1
  %3728 = load i8, ptr %3727, align 1, !tbaa !15
  %3729 = sext i8 %3728 to i32
  %3730 = icmp eq i32 %3722, %3729
  br i1 %3730, label %3784, label %3731

3731:                                             ; preds = %3717
  br label %3732

3732:                                             ; preds = %3731
  br label %3733

3733:                                             ; preds = %3732
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #11
  %3734 = call ptr @__errno_location() #12
  %3735 = load i32, ptr %3734, align 4, !tbaa !5
  store i32 %3735, ptr %105, align 4, !tbaa !5
  %3736 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3737 = call i32 @s2n_print_stacktrace(ptr noundef %3736)
  %3738 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3739 = trunc i8 %3738 to i1
  br i1 %3739, label %3740, label %3762

3740:                                             ; preds = %3733
  %3741 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3742 = call i32 @fileno(ptr noundef %3741) #11
  %3743 = call i32 @isatty(i32 noundef %3742) #11
  %3744 = icmp ne i32 %3743, 0
  br i1 %3744, label %3745, label %3762

3745:                                             ; preds = %3740
  %3746 = load i32, ptr %105, align 4, !tbaa !5
  %3747 = call ptr @__errno_location() #12
  store i32 %3746, ptr %3747, align 4, !tbaa !5
  %3748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3749 = load i32, ptr @test_count, align 4, !tbaa !5
  %3750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3751 = load i32, ptr %3750, align 4, !tbaa !5
  %3752 = call ptr @s2n_strerror(i32 noundef %3751, ptr noundef @.str.4)
  %3753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3754 = load i32, ptr %3753, align 4, !tbaa !5
  %3755 = call ptr @s2n_strerror_debug(i32 noundef %3754, ptr noundef @.str.4)
  %3756 = call ptr @__errno_location() #12
  %3757 = load i32, ptr %3756, align 4, !tbaa !5
  %3758 = call ptr @strerror(i32 noundef %3757) #11
  %3759 = call ptr @__errno_location() #12
  %3760 = load i32, ptr %3759, align 4, !tbaa !5
  %3761 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3748, ptr noundef @.str.2, i32 noundef %3749, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 572, ptr noundef %3752, ptr noundef %3755, ptr noundef %3758, i32 noundef %3760) #11
  br label %3779

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

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

3780:                                             ; preds = %3779
  br label %3781

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

3782:                                             ; No predecessors!
  br label %3783

3783:                                             ; preds = %3782
  br label %3784

3784:                                             ; preds = %3783, %3717
  br label %3785

3785:                                             ; preds = %3784
  br label %3786

3786:                                             ; preds = %3785
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %99) #11
  br label %3787

3787:                                             ; preds = %3786
  %3788 = load i64, ptr %98, align 8, !tbaa !16
  %3789 = add i64 %3788, 1
  store i64 %3789, ptr %98, align 8, !tbaa !16
  br label %3511, !llvm.loop !35

3790:                                             ; preds = %3514
  call void @llvm.lifetime.start.p0(i64 59, ptr %106) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %106, ptr align 16 @__const.main._client_hello_bytes_message.47, i64 59, i1 false)
  br label %3791

3791:                                             ; preds = %3790
  %3792 = load i32, ptr @test_count, align 4, !tbaa !5
  %3793 = add nsw i32 %3792, 1
  store i32 %3793, ptr @test_count, align 4, !tbaa !5
  br label %3794

3794:                                             ; preds = %3791
  br label %3795

3795:                                             ; preds = %3794
  call void @llvm.lifetime.start.p0(i64 63, ptr %107) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %107, ptr align 16 @__const.main.client_hello_bytes.48, i64 63, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %108) #11
  call void @llvm.memset.p0.i64(ptr align 16 %108, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #11
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %3796

3796:                                             ; preds = %3795
  %3797 = load i32, ptr @test_count, align 4, !tbaa !5
  %3798 = add nsw i32 %3797, 1
  store i32 %3798, ptr @test_count, align 4, !tbaa !5
  %3799 = getelementptr inbounds [63 x i8], ptr %107, i64 0, i64 0
  %3800 = getelementptr inbounds [200 x i8], ptr %108, i64 0, i64 0
  %3801 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %3799, i64 noundef 63, i64 noundef 200, ptr noundef %3800, ptr noundef %109)
  %3802 = getelementptr inbounds %struct.s2n_result, ptr %110, i32 0, i32 0
  store i32 %3801, ptr %3802, align 4
  %3803 = getelementptr inbounds %struct.s2n_result, ptr %110, i32 0, i32 0
  %3804 = load i32, ptr %3803, align 4
  %3805 = call zeroext i1 @s2n_result_is_ok(i32 %3804)
  br i1 %3805, label %3859, label %3806

3806:                                             ; preds = %3796
  br label %3807

3807:                                             ; preds = %3806
  br label %3808

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

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

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

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

3854:                                             ; preds = %3837, %3820
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #11
  br label %3855

3855:                                             ; preds = %3854
  br label %3856

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

3857:                                             ; No predecessors!
  br label %3858

3858:                                             ; preds = %3857
  br label %3859

3859:                                             ; preds = %3858, %3796
  br label %3860

3860:                                             ; preds = %3859
  br label %3861

3861:                                             ; preds = %3860
  br label %3862

3862:                                             ; preds = %3861
  %3863 = load i32, ptr @test_count, align 4, !tbaa !5
  %3864 = add nsw i32 %3863, 1
  store i32 %3864, ptr @test_count, align 4, !tbaa !5
  %3865 = load i32, ptr %109, align 4, !tbaa !5
  %3866 = icmp ugt i32 %3865, 7
  br i1 %3866, label %3920, label %3867

3867:                                             ; preds = %3862
  br label %3868

3868:                                             ; preds = %3867
  br label %3869

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

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

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

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

3915:                                             ; preds = %3898, %3881
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #11
  br label %3916

3916:                                             ; preds = %3915
  br label %3917

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

3918:                                             ; No predecessors!
  br label %3919

3919:                                             ; preds = %3918
  br label %3920

3920:                                             ; preds = %3919, %3862
  br label %3921

3921:                                             ; preds = %3920
  br label %3922

3922:                                             ; preds = %3921
  br label %3923

3923:                                             ; preds = %3922
  %3924 = load i32, ptr @test_count, align 4, !tbaa !5
  %3925 = add nsw i32 %3924, 1
  store i32 %3925, ptr @test_count, align 4, !tbaa !5
  %3926 = getelementptr inbounds [200 x i8], ptr %108, i64 0, i64 6
  %3927 = load i8, ptr %3926, align 2, !tbaa !15
  %3928 = zext i8 %3927 to i32
  %3929 = icmp eq i32 %3928, 48
  br i1 %3929, label %3983, label %3930

3930:                                             ; preds = %3923
  br label %3931

3931:                                             ; preds = %3930
  br label %3932

3932:                                             ; preds = %3931
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #11
  %3933 = call ptr @__errno_location() #12
  %3934 = load i32, ptr %3933, align 4, !tbaa !5
  store i32 %3934, ptr %113, align 4, !tbaa !5
  %3935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3936 = call i32 @s2n_print_stacktrace(ptr noundef %3935)
  %3937 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3938 = trunc i8 %3937 to i1
  br i1 %3938, label %3939, label %3961

3939:                                             ; preds = %3932
  %3940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3941 = call i32 @fileno(ptr noundef %3940) #11
  %3942 = call i32 @isatty(i32 noundef %3941) #11
  %3943 = icmp ne i32 %3942, 0
  br i1 %3943, label %3944, label %3961

3944:                                             ; preds = %3939
  %3945 = load i32, ptr %113, align 4, !tbaa !5
  %3946 = call ptr @__errno_location() #12
  store i32 %3945, ptr %3946, align 4, !tbaa !5
  %3947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3948 = load i32, ptr @test_count, align 4, !tbaa !5
  %3949 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3950 = load i32, ptr %3949, align 4, !tbaa !5
  %3951 = call ptr @s2n_strerror(i32 noundef %3950, ptr noundef @.str.4)
  %3952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3953 = load i32, ptr %3952, align 4, !tbaa !5
  %3954 = call ptr @s2n_strerror_debug(i32 noundef %3953, ptr noundef @.str.4)
  %3955 = call ptr @__errno_location() #12
  %3956 = load i32, ptr %3955, align 4, !tbaa !5
  %3957 = call ptr @strerror(i32 noundef %3956) #11
  %3958 = call ptr @__errno_location() #12
  %3959 = load i32, ptr %3958, align 4, !tbaa !5
  %3960 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3947, ptr noundef @.str.2, i32 noundef %3948, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 604, ptr noundef %3951, ptr noundef %3954, ptr noundef %3957, i32 noundef %3959) #11
  br label %3978

3961:                                             ; preds = %3939, %3932
  %3962 = load i32, ptr %113, align 4, !tbaa !5
  %3963 = call ptr @__errno_location() #12
  store i32 %3962, ptr %3963, align 4, !tbaa !5
  %3964 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3965 = load i32, ptr @test_count, align 4, !tbaa !5
  %3966 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3967 = load i32, ptr %3966, align 4, !tbaa !5
  %3968 = call ptr @s2n_strerror(i32 noundef %3967, ptr noundef @.str.4)
  %3969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3970 = load i32, ptr %3969, align 4, !tbaa !5
  %3971 = call ptr @s2n_strerror_debug(i32 noundef %3970, ptr noundef @.str.4)
  %3972 = call ptr @__errno_location() #12
  %3973 = load i32, ptr %3972, align 4, !tbaa !5
  %3974 = call ptr @strerror(i32 noundef %3973) #11
  %3975 = call ptr @__errno_location() #12
  %3976 = load i32, ptr %3975, align 4, !tbaa !5
  %3977 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3964, ptr noundef @.str.5, i32 noundef %3965, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 604, ptr noundef %3968, ptr noundef %3971, ptr noundef %3974, i32 noundef %3976) #11
  br label %3978

3978:                                             ; preds = %3961, %3944
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #11
  br label %3979

3979:                                             ; preds = %3978
  br label %3980

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

3981:                                             ; No predecessors!
  br label %3982

3982:                                             ; preds = %3981
  br label %3983

3983:                                             ; preds = %3982, %3923
  br label %3984

3984:                                             ; preds = %3983
  br label %3985

3985:                                             ; preds = %3984
  br label %3986

3986:                                             ; preds = %3985
  %3987 = load i32, ptr @test_count, align 4, !tbaa !5
  %3988 = add nsw i32 %3987, 1
  store i32 %3988, ptr @test_count, align 4, !tbaa !5
  %3989 = getelementptr inbounds [200 x i8], ptr %108, i64 0, i64 7
  %3990 = load i8, ptr %3989, align 1, !tbaa !15
  %3991 = zext i8 %3990 to i32
  %3992 = icmp eq i32 %3991, 49
  br i1 %3992, label %4046, label %3993

3993:                                             ; preds = %3986
  br label %3994

3994:                                             ; preds = %3993
  br label %3995

3995:                                             ; preds = %3994
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #11
  %3996 = call ptr @__errno_location() #12
  %3997 = load i32, ptr %3996, align 4, !tbaa !5
  store i32 %3997, ptr %114, align 4, !tbaa !5
  %3998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3999 = call i32 @s2n_print_stacktrace(ptr noundef %3998)
  %4000 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4001 = trunc i8 %4000 to i1
  br i1 %4001, label %4002, label %4024

4002:                                             ; preds = %3995
  %4003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4004 = call i32 @fileno(ptr noundef %4003) #11
  %4005 = call i32 @isatty(i32 noundef %4004) #11
  %4006 = icmp ne i32 %4005, 0
  br i1 %4006, label %4007, label %4024

4007:                                             ; preds = %4002
  %4008 = load i32, ptr %114, align 4, !tbaa !5
  %4009 = call ptr @__errno_location() #12
  store i32 %4008, ptr %4009, align 4, !tbaa !5
  %4010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4011 = load i32, ptr @test_count, align 4, !tbaa !5
  %4012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4013 = load i32, ptr %4012, align 4, !tbaa !5
  %4014 = call ptr @s2n_strerror(i32 noundef %4013, ptr noundef @.str.4)
  %4015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4016 = load i32, ptr %4015, align 4, !tbaa !5
  %4017 = call ptr @s2n_strerror_debug(i32 noundef %4016, ptr noundef @.str.4)
  %4018 = call ptr @__errno_location() #12
  %4019 = load i32, ptr %4018, align 4, !tbaa !5
  %4020 = call ptr @strerror(i32 noundef %4019) #11
  %4021 = call ptr @__errno_location() #12
  %4022 = load i32, ptr %4021, align 4, !tbaa !5
  %4023 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4010, ptr noundef @.str.2, i32 noundef %4011, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 605, ptr noundef %4014, ptr noundef %4017, ptr noundef %4020, i32 noundef %4022) #11
  br label %4041

4024:                                             ; preds = %4002, %3995
  %4025 = load i32, ptr %114, align 4, !tbaa !5
  %4026 = call ptr @__errno_location() #12
  store i32 %4025, ptr %4026, align 4, !tbaa !5
  %4027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4028 = load i32, ptr @test_count, align 4, !tbaa !5
  %4029 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4030 = load i32, ptr %4029, align 4, !tbaa !5
  %4031 = call ptr @s2n_strerror(i32 noundef %4030, ptr noundef @.str.4)
  %4032 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4033 = load i32, ptr %4032, align 4, !tbaa !5
  %4034 = call ptr @s2n_strerror_debug(i32 noundef %4033, ptr noundef @.str.4)
  %4035 = call ptr @__errno_location() #12
  %4036 = load i32, ptr %4035, align 4, !tbaa !5
  %4037 = call ptr @strerror(i32 noundef %4036) #11
  %4038 = call ptr @__errno_location() #12
  %4039 = load i32, ptr %4038, align 4, !tbaa !5
  %4040 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4027, ptr noundef @.str.5, i32 noundef %4028, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 605, ptr noundef %4031, ptr noundef %4034, ptr noundef %4037, i32 noundef %4039) #11
  br label %4041

4041:                                             ; preds = %4024, %4007
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #11
  br label %4042

4042:                                             ; preds = %4041
  br label %4043

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

4044:                                             ; No predecessors!
  br label %4045

4045:                                             ; preds = %4044
  br label %4046

4046:                                             ; preds = %4045, %3986
  br label %4047

4047:                                             ; preds = %4046
  br label %4048

4048:                                             ; preds = %4047
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %108) #11
  call void @llvm.lifetime.end.p0(i64 63, ptr %107) #11
  call void @llvm.lifetime.end.p0(i64 59, ptr %106) #11
  call void @llvm.lifetime.start.p0(i64 51, ptr %115) #11
  call void @llvm.memset.p0.i64(ptr align 16 %115, i8 0, i64 51, i1 false)
  %4049 = getelementptr inbounds [51 x i8], ptr %115, i32 0, i32 36
  store i8 2, ptr %4049, align 4
  %4050 = getelementptr inbounds [51 x i8], ptr %115, i32 0, i32 39
  store i8 1, ptr %4050, align 1
  %4051 = getelementptr inbounds [51 x i8], ptr %115, i32 0, i32 42
  store i8 8, ptr %4051, align 2
  %4052 = getelementptr inbounds [51 x i8], ptr %115, i32 0, i32 48
  store i8 16, ptr %4052, align 16
  br label %4053

4053:                                             ; preds = %4048
  %4054 = load i32, ptr @test_count, align 4, !tbaa !5
  %4055 = add nsw i32 %4054, 1
  store i32 %4055, ptr @test_count, align 4, !tbaa !5
  br label %4056

4056:                                             ; preds = %4053
  br label %4057

4057:                                             ; preds = %4056
  call void @llvm.lifetime.start.p0(i64 55, ptr %116) #11
  call void @llvm.memset.p0.i64(ptr align 16 %116, i8 0, i64 55, i1 false)
  %4058 = getelementptr inbounds [55 x i8], ptr %116, i32 0, i32 0
  store i8 1, ptr %4058, align 16
  %4059 = getelementptr inbounds [55 x i8], ptr %116, i32 0, i32 3
  store i8 51, ptr %4059, align 1
  %4060 = getelementptr inbounds [55 x i8], ptr %116, i32 0, i32 40
  store i8 2, ptr %4060, align 8
  %4061 = getelementptr inbounds [55 x i8], ptr %116, i32 0, i32 43
  store i8 1, ptr %4061, align 1
  %4062 = getelementptr inbounds [55 x i8], ptr %116, i32 0, i32 46
  store i8 8, ptr %4062, align 2
  %4063 = getelementptr inbounds [55 x i8], ptr %116, i32 0, i32 52
  store i8 16, ptr %4063, align 4
  call void @llvm.lifetime.start.p0(i64 200, ptr %117) #11
  call void @llvm.memset.p0.i64(ptr align 16 %117, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #11
  store i32 0, ptr %118, align 4, !tbaa !5
  br label %4064

4064:                                             ; preds = %4057
  %4065 = load i32, ptr @test_count, align 4, !tbaa !5
  %4066 = add nsw i32 %4065, 1
  store i32 %4066, ptr @test_count, align 4, !tbaa !5
  %4067 = getelementptr inbounds [55 x i8], ptr %116, i64 0, i64 0
  %4068 = getelementptr inbounds [200 x i8], ptr %117, i64 0, i64 0
  %4069 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %4067, i64 noundef 55, i64 noundef 200, ptr noundef %4068, ptr noundef %118)
  %4070 = getelementptr inbounds %struct.s2n_result, ptr %119, i32 0, i32 0
  store i32 %4069, ptr %4070, align 4
  %4071 = getelementptr inbounds %struct.s2n_result, ptr %119, i32 0, i32 0
  %4072 = load i32, ptr %4071, align 4
  %4073 = call zeroext i1 @s2n_result_is_ok(i32 %4072)
  br i1 %4073, label %4127, label %4074

4074:                                             ; preds = %4064
  br label %4075

4075:                                             ; preds = %4074
  br label %4076

4076:                                             ; preds = %4075
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #11
  %4077 = call ptr @__errno_location() #12
  %4078 = load i32, ptr %4077, align 4, !tbaa !5
  store i32 %4078, ptr %120, align 4, !tbaa !5
  %4079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4080 = call i32 @s2n_print_stacktrace(ptr noundef %4079)
  %4081 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4082 = trunc i8 %4081 to i1
  br i1 %4082, label %4083, label %4105

4083:                                             ; preds = %4076
  %4084 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4085 = call i32 @fileno(ptr noundef %4084) #11
  %4086 = call i32 @isatty(i32 noundef %4085) #11
  %4087 = icmp ne i32 %4086, 0
  br i1 %4087, label %4088, label %4105

4088:                                             ; preds = %4083
  %4089 = load i32, ptr %120, align 4, !tbaa !5
  %4090 = call ptr @__errno_location() #12
  store i32 %4089, ptr %4090, align 4, !tbaa !5
  %4091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4092 = load i32, ptr @test_count, align 4, !tbaa !5
  %4093 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4094 = load i32, ptr %4093, align 4, !tbaa !5
  %4095 = call ptr @s2n_strerror(i32 noundef %4094, ptr noundef @.str.4)
  %4096 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4097 = load i32, ptr %4096, align 4, !tbaa !5
  %4098 = call ptr @s2n_strerror_debug(i32 noundef %4097, ptr noundef @.str.4)
  %4099 = call ptr @__errno_location() #12
  %4100 = load i32, ptr %4099, align 4, !tbaa !5
  %4101 = call ptr @strerror(i32 noundef %4100) #11
  %4102 = call ptr @__errno_location() #12
  %4103 = load i32, ptr %4102, align 4, !tbaa !5
  %4104 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4091, ptr noundef @.str.2, i32 noundef %4092, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 630, ptr noundef %4095, ptr noundef %4098, ptr noundef %4101, i32 noundef %4103) #11
  br label %4122

4105:                                             ; preds = %4083, %4076
  %4106 = load i32, ptr %120, align 4, !tbaa !5
  %4107 = call ptr @__errno_location() #12
  store i32 %4106, ptr %4107, align 4, !tbaa !5
  %4108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4109 = load i32, ptr @test_count, align 4, !tbaa !5
  %4110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4111 = load i32, ptr %4110, align 4, !tbaa !5
  %4112 = call ptr @s2n_strerror(i32 noundef %4111, ptr noundef @.str.4)
  %4113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4114 = load i32, ptr %4113, align 4, !tbaa !5
  %4115 = call ptr @s2n_strerror_debug(i32 noundef %4114, ptr noundef @.str.4)
  %4116 = call ptr @__errno_location() #12
  %4117 = load i32, ptr %4116, align 4, !tbaa !5
  %4118 = call ptr @strerror(i32 noundef %4117) #11
  %4119 = call ptr @__errno_location() #12
  %4120 = load i32, ptr %4119, align 4, !tbaa !5
  %4121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4108, ptr noundef @.str.5, i32 noundef %4109, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 630, ptr noundef %4112, ptr noundef %4115, ptr noundef %4118, i32 noundef %4120) #11
  br label %4122

4122:                                             ; preds = %4105, %4088
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #11
  br label %4123

4123:                                             ; preds = %4122
  br label %4124

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

4125:                                             ; No predecessors!
  br label %4126

4126:                                             ; preds = %4125
  br label %4127

4127:                                             ; preds = %4126, %4064
  br label %4128

4128:                                             ; preds = %4127
  br label %4129

4129:                                             ; preds = %4128
  br label %4130

4130:                                             ; preds = %4129
  %4131 = load i32, ptr @test_count, align 4, !tbaa !5
  %4132 = add nsw i32 %4131, 1
  store i32 %4132, ptr @test_count, align 4, !tbaa !5
  %4133 = load i32, ptr %118, align 4, !tbaa !5
  %4134 = icmp ugt i32 %4133, 7
  br i1 %4134, label %4188, label %4135

4135:                                             ; preds = %4130
  br label %4136

4136:                                             ; preds = %4135
  br label %4137

4137:                                             ; preds = %4136
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #11
  %4138 = call ptr @__errno_location() #12
  %4139 = load i32, ptr %4138, align 4, !tbaa !5
  store i32 %4139, ptr %121, align 4, !tbaa !5
  %4140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4141 = call i32 @s2n_print_stacktrace(ptr noundef %4140)
  %4142 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4143 = trunc i8 %4142 to i1
  br i1 %4143, label %4144, label %4166

4144:                                             ; preds = %4137
  %4145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4146 = call i32 @fileno(ptr noundef %4145) #11
  %4147 = call i32 @isatty(i32 noundef %4146) #11
  %4148 = icmp ne i32 %4147, 0
  br i1 %4148, label %4149, label %4166

4149:                                             ; preds = %4144
  %4150 = load i32, ptr %121, align 4, !tbaa !5
  %4151 = call ptr @__errno_location() #12
  store i32 %4150, ptr %4151, align 4, !tbaa !5
  %4152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4153 = load i32, ptr @test_count, align 4, !tbaa !5
  %4154 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4155 = load i32, ptr %4154, align 4, !tbaa !5
  %4156 = call ptr @s2n_strerror(i32 noundef %4155, ptr noundef @.str.4)
  %4157 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4158 = load i32, ptr %4157, align 4, !tbaa !5
  %4159 = call ptr @s2n_strerror_debug(i32 noundef %4158, ptr noundef @.str.4)
  %4160 = call ptr @__errno_location() #12
  %4161 = load i32, ptr %4160, align 4, !tbaa !5
  %4162 = call ptr @strerror(i32 noundef %4161) #11
  %4163 = call ptr @__errno_location() #12
  %4164 = load i32, ptr %4163, align 4, !tbaa !5
  %4165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4152, ptr noundef @.str.2, i32 noundef %4153, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 632, ptr noundef %4156, ptr noundef %4159, ptr noundef %4162, i32 noundef %4164) #11
  br label %4183

4166:                                             ; preds = %4144, %4137
  %4167 = load i32, ptr %121, align 4, !tbaa !5
  %4168 = call ptr @__errno_location() #12
  store i32 %4167, ptr %4168, align 4, !tbaa !5
  %4169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4170 = load i32, ptr @test_count, align 4, !tbaa !5
  %4171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4172 = load i32, ptr %4171, align 4, !tbaa !5
  %4173 = call ptr @s2n_strerror(i32 noundef %4172, ptr noundef @.str.4)
  %4174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4175 = load i32, ptr %4174, align 4, !tbaa !5
  %4176 = call ptr @s2n_strerror_debug(i32 noundef %4175, ptr noundef @.str.4)
  %4177 = call ptr @__errno_location() #12
  %4178 = load i32, ptr %4177, align 4, !tbaa !5
  %4179 = call ptr @strerror(i32 noundef %4178) #11
  %4180 = call ptr @__errno_location() #12
  %4181 = load i32, ptr %4180, align 4, !tbaa !5
  %4182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4169, ptr noundef @.str.5, i32 noundef %4170, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 632, ptr noundef %4173, ptr noundef %4176, ptr noundef %4179, i32 noundef %4181) #11
  br label %4183

4183:                                             ; preds = %4166, %4149
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #11
  br label %4184

4184:                                             ; preds = %4183
  br label %4185

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

4186:                                             ; No predecessors!
  br label %4187

4187:                                             ; preds = %4186
  br label %4188

4188:                                             ; preds = %4187, %4130
  br label %4189

4189:                                             ; preds = %4188
  br label %4190

4190:                                             ; preds = %4189
  br label %4191

4191:                                             ; preds = %4190
  %4192 = load i32, ptr @test_count, align 4, !tbaa !5
  %4193 = add nsw i32 %4192, 1
  store i32 %4193, ptr @test_count, align 4, !tbaa !5
  %4194 = getelementptr inbounds [200 x i8], ptr %117, i64 0, i64 6
  %4195 = load i8, ptr %4194, align 2, !tbaa !15
  %4196 = zext i8 %4195 to i32
  %4197 = icmp eq i32 %4196, 48
  br i1 %4197, label %4251, label %4198

4198:                                             ; preds = %4191
  br label %4199

4199:                                             ; preds = %4198
  br label %4200

4200:                                             ; preds = %4199
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #11
  %4201 = call ptr @__errno_location() #12
  %4202 = load i32, ptr %4201, align 4, !tbaa !5
  store i32 %4202, ptr %122, align 4, !tbaa !5
  %4203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4204 = call i32 @s2n_print_stacktrace(ptr noundef %4203)
  %4205 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4206 = trunc i8 %4205 to i1
  br i1 %4206, label %4207, label %4229

4207:                                             ; preds = %4200
  %4208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4209 = call i32 @fileno(ptr noundef %4208) #11
  %4210 = call i32 @isatty(i32 noundef %4209) #11
  %4211 = icmp ne i32 %4210, 0
  br i1 %4211, label %4212, label %4229

4212:                                             ; preds = %4207
  %4213 = load i32, ptr %122, align 4, !tbaa !5
  %4214 = call ptr @__errno_location() #12
  store i32 %4213, ptr %4214, align 4, !tbaa !5
  %4215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4216 = load i32, ptr @test_count, align 4, !tbaa !5
  %4217 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4218 = load i32, ptr %4217, align 4, !tbaa !5
  %4219 = call ptr @s2n_strerror(i32 noundef %4218, ptr noundef @.str.4)
  %4220 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4221 = load i32, ptr %4220, align 4, !tbaa !5
  %4222 = call ptr @s2n_strerror_debug(i32 noundef %4221, ptr noundef @.str.4)
  %4223 = call ptr @__errno_location() #12
  %4224 = load i32, ptr %4223, align 4, !tbaa !5
  %4225 = call ptr @strerror(i32 noundef %4224) #11
  %4226 = call ptr @__errno_location() #12
  %4227 = load i32, ptr %4226, align 4, !tbaa !5
  %4228 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4215, ptr noundef @.str.2, i32 noundef %4216, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 633, ptr noundef %4219, ptr noundef %4222, ptr noundef %4225, i32 noundef %4227) #11
  br label %4246

4229:                                             ; preds = %4207, %4200
  %4230 = load i32, ptr %122, align 4, !tbaa !5
  %4231 = call ptr @__errno_location() #12
  store i32 %4230, ptr %4231, align 4, !tbaa !5
  %4232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4233 = load i32, ptr @test_count, align 4, !tbaa !5
  %4234 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4235 = load i32, ptr %4234, align 4, !tbaa !5
  %4236 = call ptr @s2n_strerror(i32 noundef %4235, ptr noundef @.str.4)
  %4237 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4238 = load i32, ptr %4237, align 4, !tbaa !5
  %4239 = call ptr @s2n_strerror_debug(i32 noundef %4238, ptr noundef @.str.4)
  %4240 = call ptr @__errno_location() #12
  %4241 = load i32, ptr %4240, align 4, !tbaa !5
  %4242 = call ptr @strerror(i32 noundef %4241) #11
  %4243 = call ptr @__errno_location() #12
  %4244 = load i32, ptr %4243, align 4, !tbaa !5
  %4245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4232, ptr noundef @.str.5, i32 noundef %4233, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 633, ptr noundef %4236, ptr noundef %4239, ptr noundef %4242, i32 noundef %4244) #11
  br label %4246

4246:                                             ; preds = %4229, %4212
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #11
  br label %4247

4247:                                             ; preds = %4246
  br label %4248

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

4249:                                             ; No predecessors!
  br label %4250

4250:                                             ; preds = %4249
  br label %4251

4251:                                             ; preds = %4250, %4191
  br label %4252

4252:                                             ; preds = %4251
  br label %4253

4253:                                             ; preds = %4252
  br label %4254

4254:                                             ; preds = %4253
  %4255 = load i32, ptr @test_count, align 4, !tbaa !5
  %4256 = add nsw i32 %4255, 1
  store i32 %4256, ptr @test_count, align 4, !tbaa !5
  %4257 = getelementptr inbounds [200 x i8], ptr %117, i64 0, i64 7
  %4258 = load i8, ptr %4257, align 1, !tbaa !15
  %4259 = zext i8 %4258 to i32
  %4260 = icmp eq i32 %4259, 50
  br i1 %4260, label %4314, label %4261

4261:                                             ; preds = %4254
  br label %4262

4262:                                             ; preds = %4261
  br label %4263

4263:                                             ; preds = %4262
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #11
  %4264 = call ptr @__errno_location() #12
  %4265 = load i32, ptr %4264, align 4, !tbaa !5
  store i32 %4265, ptr %123, align 4, !tbaa !5
  %4266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4267 = call i32 @s2n_print_stacktrace(ptr noundef %4266)
  %4268 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4269 = trunc i8 %4268 to i1
  br i1 %4269, label %4270, label %4292

4270:                                             ; preds = %4263
  %4271 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4272 = call i32 @fileno(ptr noundef %4271) #11
  %4273 = call i32 @isatty(i32 noundef %4272) #11
  %4274 = icmp ne i32 %4273, 0
  br i1 %4274, label %4275, label %4292

4275:                                             ; preds = %4270
  %4276 = load i32, ptr %123, align 4, !tbaa !5
  %4277 = call ptr @__errno_location() #12
  store i32 %4276, ptr %4277, align 4, !tbaa !5
  %4278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4279 = load i32, ptr @test_count, align 4, !tbaa !5
  %4280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4281 = load i32, ptr %4280, align 4, !tbaa !5
  %4282 = call ptr @s2n_strerror(i32 noundef %4281, ptr noundef @.str.4)
  %4283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4284 = load i32, ptr %4283, align 4, !tbaa !5
  %4285 = call ptr @s2n_strerror_debug(i32 noundef %4284, ptr noundef @.str.4)
  %4286 = call ptr @__errno_location() #12
  %4287 = load i32, ptr %4286, align 4, !tbaa !5
  %4288 = call ptr @strerror(i32 noundef %4287) #11
  %4289 = call ptr @__errno_location() #12
  %4290 = load i32, ptr %4289, align 4, !tbaa !5
  %4291 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4278, ptr noundef @.str.2, i32 noundef %4279, ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 634, ptr noundef %4282, ptr noundef %4285, ptr noundef %4288, i32 noundef %4290) #11
  br label %4309

4292:                                             ; preds = %4270, %4263
  %4293 = load i32, ptr %123, align 4, !tbaa !5
  %4294 = call ptr @__errno_location() #12
  store i32 %4293, ptr %4294, align 4, !tbaa !5
  %4295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4296 = load i32, ptr @test_count, align 4, !tbaa !5
  %4297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4298 = load i32, ptr %4297, align 4, !tbaa !5
  %4299 = call ptr @s2n_strerror(i32 noundef %4298, ptr noundef @.str.4)
  %4300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4301 = load i32, ptr %4300, align 4, !tbaa !5
  %4302 = call ptr @s2n_strerror_debug(i32 noundef %4301, ptr noundef @.str.4)
  %4303 = call ptr @__errno_location() #12
  %4304 = load i32, ptr %4303, align 4, !tbaa !5
  %4305 = call ptr @strerror(i32 noundef %4304) #11
  %4306 = call ptr @__errno_location() #12
  %4307 = load i32, ptr %4306, align 4, !tbaa !5
  %4308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4295, ptr noundef @.str.5, i32 noundef %4296, ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 634, ptr noundef %4299, ptr noundef %4302, ptr noundef %4305, i32 noundef %4307) #11
  br label %4309

4309:                                             ; preds = %4292, %4275
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #11
  br label %4310

4310:                                             ; preds = %4309
  br label %4311

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

4312:                                             ; No predecessors!
  br label %4313

4313:                                             ; preds = %4312
  br label %4314

4314:                                             ; preds = %4313, %4254
  br label %4315

4315:                                             ; preds = %4314
  br label %4316

4316:                                             ; preds = %4315
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %117) #11
  call void @llvm.lifetime.end.p0(i64 55, ptr %116) #11
  call void @llvm.lifetime.end.p0(i64 51, ptr %115) #11
  call void @llvm.lifetime.start.p0(i64 55, ptr %124) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %124, ptr align 16 @__const.main._client_hello_bytes_message.52, i64 55, i1 false)
  br label %4317

4317:                                             ; preds = %4316
  %4318 = load i32, ptr @test_count, align 4, !tbaa !5
  %4319 = add nsw i32 %4318, 1
  store i32 %4319, ptr @test_count, align 4, !tbaa !5
  br label %4320

4320:                                             ; preds = %4317
  br label %4321

4321:                                             ; preds = %4320
  call void @llvm.lifetime.start.p0(i64 59, ptr %125) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %125, ptr align 16 @__const.main.client_hello_bytes.53, i64 59, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %126) #11
  call void @llvm.memset.p0.i64(ptr align 16 %126, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #11
  store i32 0, ptr %127, align 4, !tbaa !5
  br label %4322

4322:                                             ; preds = %4321
  %4323 = load i32, ptr @test_count, align 4, !tbaa !5
  %4324 = add nsw i32 %4323, 1
  store i32 %4324, ptr @test_count, align 4, !tbaa !5
  %4325 = getelementptr inbounds [59 x i8], ptr %125, i64 0, i64 0
  %4326 = getelementptr inbounds [200 x i8], ptr %126, i64 0, i64 0
  %4327 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %4325, i64 noundef 59, i64 noundef 200, ptr noundef %4326, ptr noundef %127)
  %4328 = getelementptr inbounds %struct.s2n_result, ptr %128, i32 0, i32 0
  store i32 %4327, ptr %4328, align 4
  %4329 = getelementptr inbounds %struct.s2n_result, ptr %128, i32 0, i32 0
  %4330 = load i32, ptr %4329, align 4
  %4331 = call zeroext i1 @s2n_result_is_ok(i32 %4330)
  br i1 %4331, label %4385, label %4332

4332:                                             ; preds = %4322
  br label %4333

4333:                                             ; preds = %4332
  br label %4334

4334:                                             ; preds = %4333
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #11
  %4335 = call ptr @__errno_location() #12
  %4336 = load i32, ptr %4335, align 4, !tbaa !5
  store i32 %4336, ptr %129, align 4, !tbaa !5
  %4337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4338 = call i32 @s2n_print_stacktrace(ptr noundef %4337)
  %4339 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4340 = trunc i8 %4339 to i1
  br i1 %4340, label %4341, label %4363

4341:                                             ; preds = %4334
  %4342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4343 = call i32 @fileno(ptr noundef %4342) #11
  %4344 = call i32 @isatty(i32 noundef %4343) #11
  %4345 = icmp ne i32 %4344, 0
  br i1 %4345, label %4346, label %4363

4346:                                             ; preds = %4341
  %4347 = load i32, ptr %129, align 4, !tbaa !5
  %4348 = call ptr @__errno_location() #12
  store i32 %4347, ptr %4348, align 4, !tbaa !5
  %4349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4350 = load i32, ptr @test_count, align 4, !tbaa !5
  %4351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4352 = load i32, ptr %4351, align 4, !tbaa !5
  %4353 = call ptr @s2n_strerror(i32 noundef %4352, ptr noundef @.str.4)
  %4354 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4355 = load i32, ptr %4354, align 4, !tbaa !5
  %4356 = call ptr @s2n_strerror_debug(i32 noundef %4355, ptr noundef @.str.4)
  %4357 = call ptr @__errno_location() #12
  %4358 = load i32, ptr %4357, align 4, !tbaa !5
  %4359 = call ptr @strerror(i32 noundef %4358) #11
  %4360 = call ptr @__errno_location() #12
  %4361 = load i32, ptr %4360, align 4, !tbaa !5
  %4362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4349, ptr noundef @.str.2, i32 noundef %4350, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 673, ptr noundef %4353, ptr noundef %4356, ptr noundef %4359, i32 noundef %4361) #11
  br label %4380

4363:                                             ; preds = %4341, %4334
  %4364 = load i32, ptr %129, align 4, !tbaa !5
  %4365 = call ptr @__errno_location() #12
  store i32 %4364, ptr %4365, align 4, !tbaa !5
  %4366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4367 = load i32, ptr @test_count, align 4, !tbaa !5
  %4368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4369 = load i32, ptr %4368, align 4, !tbaa !5
  %4370 = call ptr @s2n_strerror(i32 noundef %4369, ptr noundef @.str.4)
  %4371 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4372 = load i32, ptr %4371, align 4, !tbaa !5
  %4373 = call ptr @s2n_strerror_debug(i32 noundef %4372, ptr noundef @.str.4)
  %4374 = call ptr @__errno_location() #12
  %4375 = load i32, ptr %4374, align 4, !tbaa !5
  %4376 = call ptr @strerror(i32 noundef %4375) #11
  %4377 = call ptr @__errno_location() #12
  %4378 = load i32, ptr %4377, align 4, !tbaa !5
  %4379 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4366, ptr noundef @.str.5, i32 noundef %4367, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 673, ptr noundef %4370, ptr noundef %4373, ptr noundef %4376, i32 noundef %4378) #11
  br label %4380

4380:                                             ; preds = %4363, %4346
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #11
  br label %4381

4381:                                             ; preds = %4380
  br label %4382

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

4383:                                             ; No predecessors!
  br label %4384

4384:                                             ; preds = %4383
  br label %4385

4385:                                             ; preds = %4384, %4322
  br label %4386

4386:                                             ; preds = %4385
  br label %4387

4387:                                             ; preds = %4386
  br label %4388

4388:                                             ; preds = %4387
  %4389 = load i32, ptr @test_count, align 4, !tbaa !5
  %4390 = add nsw i32 %4389, 1
  store i32 %4390, ptr @test_count, align 4, !tbaa !5
  %4391 = load i32, ptr %127, align 4, !tbaa !5
  %4392 = icmp ugt i32 %4391, 9
  br i1 %4392, label %4446, label %4393

4393:                                             ; preds = %4388
  br label %4394

4394:                                             ; preds = %4393
  br label %4395

4395:                                             ; preds = %4394
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #11
  %4396 = call ptr @__errno_location() #12
  %4397 = load i32, ptr %4396, align 4, !tbaa !5
  store i32 %4397, ptr %130, align 4, !tbaa !5
  %4398 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4399 = call i32 @s2n_print_stacktrace(ptr noundef %4398)
  %4400 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4401 = trunc i8 %4400 to i1
  br i1 %4401, label %4402, label %4424

4402:                                             ; preds = %4395
  %4403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4404 = call i32 @fileno(ptr noundef %4403) #11
  %4405 = call i32 @isatty(i32 noundef %4404) #11
  %4406 = icmp ne i32 %4405, 0
  br i1 %4406, label %4407, label %4424

4407:                                             ; preds = %4402
  %4408 = load i32, ptr %130, align 4, !tbaa !5
  %4409 = call ptr @__errno_location() #12
  store i32 %4408, ptr %4409, align 4, !tbaa !5
  %4410 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4411 = load i32, ptr @test_count, align 4, !tbaa !5
  %4412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4413 = load i32, ptr %4412, align 4, !tbaa !5
  %4414 = call ptr @s2n_strerror(i32 noundef %4413, ptr noundef @.str.4)
  %4415 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4416 = load i32, ptr %4415, align 4, !tbaa !5
  %4417 = call ptr @s2n_strerror_debug(i32 noundef %4416, ptr noundef @.str.4)
  %4418 = call ptr @__errno_location() #12
  %4419 = load i32, ptr %4418, align 4, !tbaa !5
  %4420 = call ptr @strerror(i32 noundef %4419) #11
  %4421 = call ptr @__errno_location() #12
  %4422 = load i32, ptr %4421, align 4, !tbaa !5
  %4423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4410, ptr noundef @.str.2, i32 noundef %4411, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 675, ptr noundef %4414, ptr noundef %4417, ptr noundef %4420, i32 noundef %4422) #11
  br label %4441

4424:                                             ; preds = %4402, %4395
  %4425 = load i32, ptr %130, align 4, !tbaa !5
  %4426 = call ptr @__errno_location() #12
  store i32 %4425, ptr %4426, align 4, !tbaa !5
  %4427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4428 = load i32, ptr @test_count, align 4, !tbaa !5
  %4429 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4430 = load i32, ptr %4429, align 4, !tbaa !5
  %4431 = call ptr @s2n_strerror(i32 noundef %4430, ptr noundef @.str.4)
  %4432 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4433 = load i32, ptr %4432, align 4, !tbaa !5
  %4434 = call ptr @s2n_strerror_debug(i32 noundef %4433, ptr noundef @.str.4)
  %4435 = call ptr @__errno_location() #12
  %4436 = load i32, ptr %4435, align 4, !tbaa !5
  %4437 = call ptr @strerror(i32 noundef %4436) #11
  %4438 = call ptr @__errno_location() #12
  %4439 = load i32, ptr %4438, align 4, !tbaa !5
  %4440 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4427, ptr noundef @.str.5, i32 noundef %4428, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 675, ptr noundef %4431, ptr noundef %4434, ptr noundef %4437, i32 noundef %4439) #11
  br label %4441

4441:                                             ; preds = %4424, %4407
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #11
  br label %4442

4442:                                             ; preds = %4441
  br label %4443

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

4444:                                             ; No predecessors!
  br label %4445

4445:                                             ; preds = %4444
  br label %4446

4446:                                             ; preds = %4445, %4388
  br label %4447

4447:                                             ; preds = %4446
  br label %4448

4448:                                             ; preds = %4447
  br label %4449

4449:                                             ; preds = %4448
  %4450 = load i32, ptr @test_count, align 4, !tbaa !5
  %4451 = add nsw i32 %4450, 1
  store i32 %4451, ptr @test_count, align 4, !tbaa !5
  %4452 = getelementptr inbounds [200 x i8], ptr %126, i64 0, i64 8
  %4453 = load i8, ptr %4452, align 8, !tbaa !15
  %4454 = zext i8 %4453 to i32
  %4455 = icmp eq i32 %4454, 104
  br i1 %4455, label %4509, label %4456

4456:                                             ; preds = %4449
  br label %4457

4457:                                             ; preds = %4456
  br label %4458

4458:                                             ; preds = %4457
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #11
  %4459 = call ptr @__errno_location() #12
  %4460 = load i32, ptr %4459, align 4, !tbaa !5
  store i32 %4460, ptr %131, align 4, !tbaa !5
  %4461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4462 = call i32 @s2n_print_stacktrace(ptr noundef %4461)
  %4463 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4464 = trunc i8 %4463 to i1
  br i1 %4464, label %4465, label %4487

4465:                                             ; preds = %4458
  %4466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4467 = call i32 @fileno(ptr noundef %4466) #11
  %4468 = call i32 @isatty(i32 noundef %4467) #11
  %4469 = icmp ne i32 %4468, 0
  br i1 %4469, label %4470, label %4487

4470:                                             ; preds = %4465
  %4471 = load i32, ptr %131, align 4, !tbaa !5
  %4472 = call ptr @__errno_location() #12
  store i32 %4471, ptr %4472, align 4, !tbaa !5
  %4473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4474 = load i32, ptr @test_count, align 4, !tbaa !5
  %4475 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4476 = load i32, ptr %4475, align 4, !tbaa !5
  %4477 = call ptr @s2n_strerror(i32 noundef %4476, ptr noundef @.str.4)
  %4478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4479 = load i32, ptr %4478, align 4, !tbaa !5
  %4480 = call ptr @s2n_strerror_debug(i32 noundef %4479, ptr noundef @.str.4)
  %4481 = call ptr @__errno_location() #12
  %4482 = load i32, ptr %4481, align 4, !tbaa !5
  %4483 = call ptr @strerror(i32 noundef %4482) #11
  %4484 = call ptr @__errno_location() #12
  %4485 = load i32, ptr %4484, align 4, !tbaa !5
  %4486 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4473, ptr noundef @.str.2, i32 noundef %4474, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 676, ptr noundef %4477, ptr noundef %4480, ptr noundef %4483, i32 noundef %4485) #11
  br label %4504

4487:                                             ; preds = %4465, %4458
  %4488 = load i32, ptr %131, align 4, !tbaa !5
  %4489 = call ptr @__errno_location() #12
  store i32 %4488, ptr %4489, align 4, !tbaa !5
  %4490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4491 = load i32, ptr @test_count, align 4, !tbaa !5
  %4492 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4493 = load i32, ptr %4492, align 4, !tbaa !5
  %4494 = call ptr @s2n_strerror(i32 noundef %4493, ptr noundef @.str.4)
  %4495 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4496 = load i32, ptr %4495, align 4, !tbaa !5
  %4497 = call ptr @s2n_strerror_debug(i32 noundef %4496, ptr noundef @.str.4)
  %4498 = call ptr @__errno_location() #12
  %4499 = load i32, ptr %4498, align 4, !tbaa !5
  %4500 = call ptr @strerror(i32 noundef %4499) #11
  %4501 = call ptr @__errno_location() #12
  %4502 = load i32, ptr %4501, align 4, !tbaa !5
  %4503 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4490, ptr noundef @.str.5, i32 noundef %4491, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 676, ptr noundef %4494, ptr noundef %4497, ptr noundef %4500, i32 noundef %4502) #11
  br label %4504

4504:                                             ; preds = %4487, %4470
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #11
  br label %4505

4505:                                             ; preds = %4504
  br label %4506

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

4507:                                             ; No predecessors!
  br label %4508

4508:                                             ; preds = %4507
  br label %4509

4509:                                             ; preds = %4508, %4449
  br label %4510

4510:                                             ; preds = %4509
  br label %4511

4511:                                             ; preds = %4510
  br label %4512

4512:                                             ; preds = %4511
  %4513 = load i32, ptr @test_count, align 4, !tbaa !5
  %4514 = add nsw i32 %4513, 1
  store i32 %4514, ptr @test_count, align 4, !tbaa !5
  %4515 = getelementptr inbounds [200 x i8], ptr %126, i64 0, i64 9
  %4516 = load i8, ptr %4515, align 1, !tbaa !15
  %4517 = zext i8 %4516 to i32
  %4518 = icmp eq i32 %4517, 50
  br i1 %4518, label %4572, label %4519

4519:                                             ; preds = %4512
  br label %4520

4520:                                             ; preds = %4519
  br label %4521

4521:                                             ; preds = %4520
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #11
  %4522 = call ptr @__errno_location() #12
  %4523 = load i32, ptr %4522, align 4, !tbaa !5
  store i32 %4523, ptr %132, align 4, !tbaa !5
  %4524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4525 = call i32 @s2n_print_stacktrace(ptr noundef %4524)
  %4526 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4527 = trunc i8 %4526 to i1
  br i1 %4527, label %4528, label %4550

4528:                                             ; preds = %4521
  %4529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4530 = call i32 @fileno(ptr noundef %4529) #11
  %4531 = call i32 @isatty(i32 noundef %4530) #11
  %4532 = icmp ne i32 %4531, 0
  br i1 %4532, label %4533, label %4550

4533:                                             ; preds = %4528
  %4534 = load i32, ptr %132, align 4, !tbaa !5
  %4535 = call ptr @__errno_location() #12
  store i32 %4534, ptr %4535, align 4, !tbaa !5
  %4536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4537 = load i32, ptr @test_count, align 4, !tbaa !5
  %4538 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4539 = load i32, ptr %4538, align 4, !tbaa !5
  %4540 = call ptr @s2n_strerror(i32 noundef %4539, ptr noundef @.str.4)
  %4541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4542 = load i32, ptr %4541, align 4, !tbaa !5
  %4543 = call ptr @s2n_strerror_debug(i32 noundef %4542, ptr noundef @.str.4)
  %4544 = call ptr @__errno_location() #12
  %4545 = load i32, ptr %4544, align 4, !tbaa !5
  %4546 = call ptr @strerror(i32 noundef %4545) #11
  %4547 = call ptr @__errno_location() #12
  %4548 = load i32, ptr %4547, align 4, !tbaa !5
  %4549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4536, ptr noundef @.str.2, i32 noundef %4537, ptr noundef @.str.56, ptr noundef @.str.1, i32 noundef 677, ptr noundef %4540, ptr noundef %4543, ptr noundef %4546, i32 noundef %4548) #11
  br label %4567

4550:                                             ; preds = %4528, %4521
  %4551 = load i32, ptr %132, align 4, !tbaa !5
  %4552 = call ptr @__errno_location() #12
  store i32 %4551, ptr %4552, align 4, !tbaa !5
  %4553 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4554 = load i32, ptr @test_count, align 4, !tbaa !5
  %4555 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4556 = load i32, ptr %4555, align 4, !tbaa !5
  %4557 = call ptr @s2n_strerror(i32 noundef %4556, ptr noundef @.str.4)
  %4558 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4559 = load i32, ptr %4558, align 4, !tbaa !5
  %4560 = call ptr @s2n_strerror_debug(i32 noundef %4559, ptr noundef @.str.4)
  %4561 = call ptr @__errno_location() #12
  %4562 = load i32, ptr %4561, align 4, !tbaa !5
  %4563 = call ptr @strerror(i32 noundef %4562) #11
  %4564 = call ptr @__errno_location() #12
  %4565 = load i32, ptr %4564, align 4, !tbaa !5
  %4566 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4553, ptr noundef @.str.5, i32 noundef %4554, ptr noundef @.str.56, ptr noundef @.str.1, i32 noundef 677, ptr noundef %4557, ptr noundef %4560, ptr noundef %4563, i32 noundef %4565) #11
  br label %4567

4567:                                             ; preds = %4550, %4533
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #11
  br label %4568

4568:                                             ; preds = %4567
  br label %4569

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

4570:                                             ; No predecessors!
  br label %4571

4571:                                             ; preds = %4570
  br label %4572

4572:                                             ; preds = %4571, %4512
  br label %4573

4573:                                             ; preds = %4572
  br label %4574

4574:                                             ; preds = %4573
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %126) #11
  call void @llvm.lifetime.end.p0(i64 59, ptr %125) #11
  call void @llvm.lifetime.end.p0(i64 55, ptr %124) #11
  call void @llvm.lifetime.start.p0(i64 63, ptr %133) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %133, ptr align 16 @__const.main._client_hello_bytes_message.57, i64 63, i1 false)
  br label %4575

4575:                                             ; preds = %4574
  %4576 = load i32, ptr @test_count, align 4, !tbaa !5
  %4577 = add nsw i32 %4576, 1
  store i32 %4577, ptr @test_count, align 4, !tbaa !5
  br label %4578

4578:                                             ; preds = %4575
  br label %4579

4579:                                             ; preds = %4578
  call void @llvm.lifetime.start.p0(i64 67, ptr %134) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %134, ptr align 16 @__const.main.client_hello_bytes.58, i64 67, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %135) #11
  call void @llvm.memset.p0.i64(ptr align 16 %135, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #11
  store i32 0, ptr %136, align 4, !tbaa !5
  br label %4580

4580:                                             ; preds = %4579
  %4581 = load i32, ptr @test_count, align 4, !tbaa !5
  %4582 = add nsw i32 %4581, 1
  store i32 %4582, ptr @test_count, align 4, !tbaa !5
  %4583 = getelementptr inbounds [67 x i8], ptr %134, i64 0, i64 0
  %4584 = getelementptr inbounds [200 x i8], ptr %135, i64 0, i64 0
  %4585 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %4583, i64 noundef 67, i64 noundef 200, ptr noundef %4584, ptr noundef %136)
  %4586 = getelementptr inbounds %struct.s2n_result, ptr %137, i32 0, i32 0
  store i32 %4585, ptr %4586, align 4
  %4587 = getelementptr inbounds %struct.s2n_result, ptr %137, i32 0, i32 0
  %4588 = load i32, ptr %4587, align 4
  %4589 = call zeroext i1 @s2n_result_is_ok(i32 %4588)
  br i1 %4589, label %4643, label %4590

4590:                                             ; preds = %4580
  br label %4591

4591:                                             ; preds = %4590
  br label %4592

4592:                                             ; preds = %4591
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #11
  %4593 = call ptr @__errno_location() #12
  %4594 = load i32, ptr %4593, align 4, !tbaa !5
  store i32 %4594, ptr %138, align 4, !tbaa !5
  %4595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4596 = call i32 @s2n_print_stacktrace(ptr noundef %4595)
  %4597 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4598 = trunc i8 %4597 to i1
  br i1 %4598, label %4599, label %4621

4599:                                             ; preds = %4592
  %4600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4601 = call i32 @fileno(ptr noundef %4600) #11
  %4602 = call i32 @isatty(i32 noundef %4601) #11
  %4603 = icmp ne i32 %4602, 0
  br i1 %4603, label %4604, label %4621

4604:                                             ; preds = %4599
  %4605 = load i32, ptr %138, align 4, !tbaa !5
  %4606 = call ptr @__errno_location() #12
  store i32 %4605, ptr %4606, align 4, !tbaa !5
  %4607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4608 = load i32, ptr @test_count, align 4, !tbaa !5
  %4609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4610 = load i32, ptr %4609, align 4, !tbaa !5
  %4611 = call ptr @s2n_strerror(i32 noundef %4610, ptr noundef @.str.4)
  %4612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4613 = load i32, ptr %4612, align 4, !tbaa !5
  %4614 = call ptr @s2n_strerror_debug(i32 noundef %4613, ptr noundef @.str.4)
  %4615 = call ptr @__errno_location() #12
  %4616 = load i32, ptr %4615, align 4, !tbaa !5
  %4617 = call ptr @strerror(i32 noundef %4616) #11
  %4618 = call ptr @__errno_location() #12
  %4619 = load i32, ptr %4618, align 4, !tbaa !5
  %4620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4607, ptr noundef @.str.2, i32 noundef %4608, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 705, ptr noundef %4611, ptr noundef %4614, ptr noundef %4617, i32 noundef %4619) #11
  br label %4638

4621:                                             ; preds = %4599, %4592
  %4622 = load i32, ptr %138, align 4, !tbaa !5
  %4623 = call ptr @__errno_location() #12
  store i32 %4622, ptr %4623, align 4, !tbaa !5
  %4624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4625 = load i32, ptr @test_count, align 4, !tbaa !5
  %4626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4627 = load i32, ptr %4626, align 4, !tbaa !5
  %4628 = call ptr @s2n_strerror(i32 noundef %4627, ptr noundef @.str.4)
  %4629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4630 = load i32, ptr %4629, align 4, !tbaa !5
  %4631 = call ptr @s2n_strerror_debug(i32 noundef %4630, ptr noundef @.str.4)
  %4632 = call ptr @__errno_location() #12
  %4633 = load i32, ptr %4632, align 4, !tbaa !5
  %4634 = call ptr @strerror(i32 noundef %4633) #11
  %4635 = call ptr @__errno_location() #12
  %4636 = load i32, ptr %4635, align 4, !tbaa !5
  %4637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4624, ptr noundef @.str.5, i32 noundef %4625, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 705, ptr noundef %4628, ptr noundef %4631, ptr noundef %4634, i32 noundef %4636) #11
  br label %4638

4638:                                             ; preds = %4621, %4604
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #11
  br label %4639

4639:                                             ; preds = %4638
  br label %4640

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

4641:                                             ; No predecessors!
  br label %4642

4642:                                             ; preds = %4641
  br label %4643

4643:                                             ; preds = %4642, %4580
  br label %4644

4644:                                             ; preds = %4643
  br label %4645

4645:                                             ; preds = %4644
  br label %4646

4646:                                             ; preds = %4645
  %4647 = load i32, ptr @test_count, align 4, !tbaa !5
  %4648 = add nsw i32 %4647, 1
  store i32 %4648, ptr @test_count, align 4, !tbaa !5
  %4649 = load i32, ptr %136, align 4, !tbaa !5
  %4650 = icmp ugt i32 %4649, 9
  br i1 %4650, label %4704, label %4651

4651:                                             ; preds = %4646
  br label %4652

4652:                                             ; preds = %4651
  br label %4653

4653:                                             ; preds = %4652
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #11
  %4654 = call ptr @__errno_location() #12
  %4655 = load i32, ptr %4654, align 4, !tbaa !5
  store i32 %4655, ptr %139, align 4, !tbaa !5
  %4656 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4657 = call i32 @s2n_print_stacktrace(ptr noundef %4656)
  %4658 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4659 = trunc i8 %4658 to i1
  br i1 %4659, label %4660, label %4682

4660:                                             ; preds = %4653
  %4661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4662 = call i32 @fileno(ptr noundef %4661) #11
  %4663 = call i32 @isatty(i32 noundef %4662) #11
  %4664 = icmp ne i32 %4663, 0
  br i1 %4664, label %4665, label %4682

4665:                                             ; preds = %4660
  %4666 = load i32, ptr %139, align 4, !tbaa !5
  %4667 = call ptr @__errno_location() #12
  store i32 %4666, ptr %4667, align 4, !tbaa !5
  %4668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4669 = load i32, ptr @test_count, align 4, !tbaa !5
  %4670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4671 = load i32, ptr %4670, align 4, !tbaa !5
  %4672 = call ptr @s2n_strerror(i32 noundef %4671, ptr noundef @.str.4)
  %4673 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4674 = load i32, ptr %4673, align 4, !tbaa !5
  %4675 = call ptr @s2n_strerror_debug(i32 noundef %4674, ptr noundef @.str.4)
  %4676 = call ptr @__errno_location() #12
  %4677 = load i32, ptr %4676, align 4, !tbaa !5
  %4678 = call ptr @strerror(i32 noundef %4677) #11
  %4679 = call ptr @__errno_location() #12
  %4680 = load i32, ptr %4679, align 4, !tbaa !5
  %4681 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4668, ptr noundef @.str.2, i32 noundef %4669, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 707, ptr noundef %4672, ptr noundef %4675, ptr noundef %4678, i32 noundef %4680) #11
  br label %4699

4682:                                             ; preds = %4660, %4653
  %4683 = load i32, ptr %139, align 4, !tbaa !5
  %4684 = call ptr @__errno_location() #12
  store i32 %4683, ptr %4684, align 4, !tbaa !5
  %4685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4686 = load i32, ptr @test_count, align 4, !tbaa !5
  %4687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4688 = load i32, ptr %4687, align 4, !tbaa !5
  %4689 = call ptr @s2n_strerror(i32 noundef %4688, ptr noundef @.str.4)
  %4690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4691 = load i32, ptr %4690, align 4, !tbaa !5
  %4692 = call ptr @s2n_strerror_debug(i32 noundef %4691, ptr noundef @.str.4)
  %4693 = call ptr @__errno_location() #12
  %4694 = load i32, ptr %4693, align 4, !tbaa !5
  %4695 = call ptr @strerror(i32 noundef %4694) #11
  %4696 = call ptr @__errno_location() #12
  %4697 = load i32, ptr %4696, align 4, !tbaa !5
  %4698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4685, ptr noundef @.str.5, i32 noundef %4686, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 707, ptr noundef %4689, ptr noundef %4692, ptr noundef %4695, i32 noundef %4697) #11
  br label %4699

4699:                                             ; preds = %4682, %4665
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #11
  br label %4700

4700:                                             ; preds = %4699
  br label %4701

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

4702:                                             ; No predecessors!
  br label %4703

4703:                                             ; preds = %4702
  br label %4704

4704:                                             ; preds = %4703, %4646
  br label %4705

4705:                                             ; preds = %4704
  br label %4706

4706:                                             ; preds = %4705
  br label %4707

4707:                                             ; preds = %4706
  %4708 = load i32, ptr @test_count, align 4, !tbaa !5
  %4709 = add nsw i32 %4708, 1
  store i32 %4709, ptr @test_count, align 4, !tbaa !5
  %4710 = getelementptr inbounds [200 x i8], ptr %135, i64 0, i64 8
  %4711 = load i8, ptr %4710, align 8, !tbaa !15
  %4712 = zext i8 %4711 to i32
  %4713 = icmp eq i32 %4712, 104
  br i1 %4713, label %4767, label %4714

4714:                                             ; preds = %4707
  br label %4715

4715:                                             ; preds = %4714
  br label %4716

4716:                                             ; preds = %4715
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #11
  %4717 = call ptr @__errno_location() #12
  %4718 = load i32, ptr %4717, align 4, !tbaa !5
  store i32 %4718, ptr %140, align 4, !tbaa !5
  %4719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4720 = call i32 @s2n_print_stacktrace(ptr noundef %4719)
  %4721 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4722 = trunc i8 %4721 to i1
  br i1 %4722, label %4723, label %4745

4723:                                             ; preds = %4716
  %4724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4725 = call i32 @fileno(ptr noundef %4724) #11
  %4726 = call i32 @isatty(i32 noundef %4725) #11
  %4727 = icmp ne i32 %4726, 0
  br i1 %4727, label %4728, label %4745

4728:                                             ; preds = %4723
  %4729 = load i32, ptr %140, align 4, !tbaa !5
  %4730 = call ptr @__errno_location() #12
  store i32 %4729, ptr %4730, align 4, !tbaa !5
  %4731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4732 = load i32, ptr @test_count, align 4, !tbaa !5
  %4733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4734 = load i32, ptr %4733, align 4, !tbaa !5
  %4735 = call ptr @s2n_strerror(i32 noundef %4734, ptr noundef @.str.4)
  %4736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4737 = load i32, ptr %4736, align 4, !tbaa !5
  %4738 = call ptr @s2n_strerror_debug(i32 noundef %4737, ptr noundef @.str.4)
  %4739 = call ptr @__errno_location() #12
  %4740 = load i32, ptr %4739, align 4, !tbaa !5
  %4741 = call ptr @strerror(i32 noundef %4740) #11
  %4742 = call ptr @__errno_location() #12
  %4743 = load i32, ptr %4742, align 4, !tbaa !5
  %4744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4731, ptr noundef @.str.2, i32 noundef %4732, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 708, ptr noundef %4735, ptr noundef %4738, ptr noundef %4741, i32 noundef %4743) #11
  br label %4762

4745:                                             ; preds = %4723, %4716
  %4746 = load i32, ptr %140, align 4, !tbaa !5
  %4747 = call ptr @__errno_location() #12
  store i32 %4746, ptr %4747, align 4, !tbaa !5
  %4748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4749 = load i32, ptr @test_count, align 4, !tbaa !5
  %4750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4751 = load i32, ptr %4750, align 4, !tbaa !5
  %4752 = call ptr @s2n_strerror(i32 noundef %4751, ptr noundef @.str.4)
  %4753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4754 = load i32, ptr %4753, align 4, !tbaa !5
  %4755 = call ptr @s2n_strerror_debug(i32 noundef %4754, ptr noundef @.str.4)
  %4756 = call ptr @__errno_location() #12
  %4757 = load i32, ptr %4756, align 4, !tbaa !5
  %4758 = call ptr @strerror(i32 noundef %4757) #11
  %4759 = call ptr @__errno_location() #12
  %4760 = load i32, ptr %4759, align 4, !tbaa !5
  %4761 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4748, ptr noundef @.str.5, i32 noundef %4749, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 708, ptr noundef %4752, ptr noundef %4755, ptr noundef %4758, i32 noundef %4760) #11
  br label %4762

4762:                                             ; preds = %4745, %4728
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #11
  br label %4763

4763:                                             ; preds = %4762
  br label %4764

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

4765:                                             ; No predecessors!
  br label %4766

4766:                                             ; preds = %4765
  br label %4767

4767:                                             ; preds = %4766, %4707
  br label %4768

4768:                                             ; preds = %4767
  br label %4769

4769:                                             ; preds = %4768
  br label %4770

4770:                                             ; preds = %4769
  %4771 = load i32, ptr @test_count, align 4, !tbaa !5
  %4772 = add nsw i32 %4771, 1
  store i32 %4772, ptr @test_count, align 4, !tbaa !5
  %4773 = getelementptr inbounds [200 x i8], ptr %135, i64 0, i64 9
  %4774 = load i8, ptr %4773, align 1, !tbaa !15
  %4775 = zext i8 %4774 to i32
  %4776 = icmp eq i32 %4775, 49
  br i1 %4776, label %4830, label %4777

4777:                                             ; preds = %4770
  br label %4778

4778:                                             ; preds = %4777
  br label %4779

4779:                                             ; preds = %4778
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #11
  %4780 = call ptr @__errno_location() #12
  %4781 = load i32, ptr %4780, align 4, !tbaa !5
  store i32 %4781, ptr %141, align 4, !tbaa !5
  %4782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4783 = call i32 @s2n_print_stacktrace(ptr noundef %4782)
  %4784 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4785 = trunc i8 %4784 to i1
  br i1 %4785, label %4786, label %4808

4786:                                             ; preds = %4779
  %4787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4788 = call i32 @fileno(ptr noundef %4787) #11
  %4789 = call i32 @isatty(i32 noundef %4788) #11
  %4790 = icmp ne i32 %4789, 0
  br i1 %4790, label %4791, label %4808

4791:                                             ; preds = %4786
  %4792 = load i32, ptr %141, align 4, !tbaa !5
  %4793 = call ptr @__errno_location() #12
  store i32 %4792, ptr %4793, align 4, !tbaa !5
  %4794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4795 = load i32, ptr @test_count, align 4, !tbaa !5
  %4796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4797 = load i32, ptr %4796, align 4, !tbaa !5
  %4798 = call ptr @s2n_strerror(i32 noundef %4797, ptr noundef @.str.4)
  %4799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4800 = load i32, ptr %4799, align 4, !tbaa !5
  %4801 = call ptr @s2n_strerror_debug(i32 noundef %4800, ptr noundef @.str.4)
  %4802 = call ptr @__errno_location() #12
  %4803 = load i32, ptr %4802, align 4, !tbaa !5
  %4804 = call ptr @strerror(i32 noundef %4803) #11
  %4805 = call ptr @__errno_location() #12
  %4806 = load i32, ptr %4805, align 4, !tbaa !5
  %4807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4794, ptr noundef @.str.2, i32 noundef %4795, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 709, ptr noundef %4798, ptr noundef %4801, ptr noundef %4804, i32 noundef %4806) #11
  br label %4825

4808:                                             ; preds = %4786, %4779
  %4809 = load i32, ptr %141, align 4, !tbaa !5
  %4810 = call ptr @__errno_location() #12
  store i32 %4809, ptr %4810, align 4, !tbaa !5
  %4811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4812 = load i32, ptr @test_count, align 4, !tbaa !5
  %4813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4814 = load i32, ptr %4813, align 4, !tbaa !5
  %4815 = call ptr @s2n_strerror(i32 noundef %4814, ptr noundef @.str.4)
  %4816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4817 = load i32, ptr %4816, align 4, !tbaa !5
  %4818 = call ptr @s2n_strerror_debug(i32 noundef %4817, ptr noundef @.str.4)
  %4819 = call ptr @__errno_location() #12
  %4820 = load i32, ptr %4819, align 4, !tbaa !5
  %4821 = call ptr @strerror(i32 noundef %4820) #11
  %4822 = call ptr @__errno_location() #12
  %4823 = load i32, ptr %4822, align 4, !tbaa !5
  %4824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4811, ptr noundef @.str.5, i32 noundef %4812, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 709, ptr noundef %4815, ptr noundef %4818, ptr noundef %4821, i32 noundef %4823) #11
  br label %4825

4825:                                             ; preds = %4808, %4791
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #11
  br label %4826

4826:                                             ; preds = %4825
  br label %4827

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

4828:                                             ; No predecessors!
  br label %4829

4829:                                             ; preds = %4828
  br label %4830

4830:                                             ; preds = %4829, %4770
  br label %4831

4831:                                             ; preds = %4830
  br label %4832

4832:                                             ; preds = %4831
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %135) #11
  call void @llvm.lifetime.end.p0(i64 67, ptr %134) #11
  call void @llvm.lifetime.end.p0(i64 63, ptr %133) #11
  call void @llvm.lifetime.start.p0(i64 51, ptr %142) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %142, ptr align 16 @__const.main._client_hello_bytes_message.60, i64 51, i1 false)
  br label %4833

4833:                                             ; preds = %4832
  %4834 = load i32, ptr @test_count, align 4, !tbaa !5
  %4835 = add nsw i32 %4834, 1
  store i32 %4835, ptr @test_count, align 4, !tbaa !5
  br label %4836

4836:                                             ; preds = %4833
  br label %4837

4837:                                             ; preds = %4836
  call void @llvm.lifetime.start.p0(i64 55, ptr %143) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %143, ptr align 16 @__const.main.client_hello_bytes.61, i64 55, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %144) #11
  call void @llvm.memset.p0.i64(ptr align 16 %144, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #11
  store i32 0, ptr %145, align 4, !tbaa !5
  br label %4838

4838:                                             ; preds = %4837
  %4839 = load i32, ptr @test_count, align 4, !tbaa !5
  %4840 = add nsw i32 %4839, 1
  store i32 %4840, ptr @test_count, align 4, !tbaa !5
  %4841 = getelementptr inbounds [55 x i8], ptr %143, i64 0, i64 0
  %4842 = getelementptr inbounds [200 x i8], ptr %144, i64 0, i64 0
  %4843 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %4841, i64 noundef 55, i64 noundef 200, ptr noundef %4842, ptr noundef %145)
  %4844 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  store i32 %4843, ptr %4844, align 4
  %4845 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  %4846 = load i32, ptr %4845, align 4
  %4847 = call zeroext i1 @s2n_result_is_ok(i32 %4846)
  br i1 %4847, label %4901, label %4848

4848:                                             ; preds = %4838
  br label %4849

4849:                                             ; preds = %4848
  br label %4850

4850:                                             ; preds = %4849
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #11
  %4851 = call ptr @__errno_location() #12
  %4852 = load i32, ptr %4851, align 4, !tbaa !5
  store i32 %4852, ptr %147, align 4, !tbaa !5
  %4853 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4854 = call i32 @s2n_print_stacktrace(ptr noundef %4853)
  %4855 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4856 = trunc i8 %4855 to i1
  br i1 %4856, label %4857, label %4879

4857:                                             ; preds = %4850
  %4858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4859 = call i32 @fileno(ptr noundef %4858) #11
  %4860 = call i32 @isatty(i32 noundef %4859) #11
  %4861 = icmp ne i32 %4860, 0
  br i1 %4861, label %4862, label %4879

4862:                                             ; preds = %4857
  %4863 = load i32, ptr %147, align 4, !tbaa !5
  %4864 = call ptr @__errno_location() #12
  store i32 %4863, ptr %4864, align 4, !tbaa !5
  %4865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4866 = load i32, ptr @test_count, align 4, !tbaa !5
  %4867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4868 = load i32, ptr %4867, align 4, !tbaa !5
  %4869 = call ptr @s2n_strerror(i32 noundef %4868, ptr noundef @.str.4)
  %4870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4871 = load i32, ptr %4870, align 4, !tbaa !5
  %4872 = call ptr @s2n_strerror_debug(i32 noundef %4871, ptr noundef @.str.4)
  %4873 = call ptr @__errno_location() #12
  %4874 = load i32, ptr %4873, align 4, !tbaa !5
  %4875 = call ptr @strerror(i32 noundef %4874) #11
  %4876 = call ptr @__errno_location() #12
  %4877 = load i32, ptr %4876, align 4, !tbaa !5
  %4878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4865, ptr noundef @.str.2, i32 noundef %4866, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 737, ptr noundef %4869, ptr noundef %4872, ptr noundef %4875, i32 noundef %4877) #11
  br label %4896

4879:                                             ; preds = %4857, %4850
  %4880 = load i32, ptr %147, align 4, !tbaa !5
  %4881 = call ptr @__errno_location() #12
  store i32 %4880, ptr %4881, align 4, !tbaa !5
  %4882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4883 = load i32, ptr @test_count, align 4, !tbaa !5
  %4884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4885 = load i32, ptr %4884, align 4, !tbaa !5
  %4886 = call ptr @s2n_strerror(i32 noundef %4885, ptr noundef @.str.4)
  %4887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4888 = load i32, ptr %4887, align 4, !tbaa !5
  %4889 = call ptr @s2n_strerror_debug(i32 noundef %4888, ptr noundef @.str.4)
  %4890 = call ptr @__errno_location() #12
  %4891 = load i32, ptr %4890, align 4, !tbaa !5
  %4892 = call ptr @strerror(i32 noundef %4891) #11
  %4893 = call ptr @__errno_location() #12
  %4894 = load i32, ptr %4893, align 4, !tbaa !5
  %4895 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4882, ptr noundef @.str.5, i32 noundef %4883, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 737, ptr noundef %4886, ptr noundef %4889, ptr noundef %4892, i32 noundef %4894) #11
  br label %4896

4896:                                             ; preds = %4879, %4862
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #11
  br label %4897

4897:                                             ; preds = %4896
  br label %4898

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

4899:                                             ; No predecessors!
  br label %4900

4900:                                             ; preds = %4899
  br label %4901

4901:                                             ; preds = %4900, %4838
  br label %4902

4902:                                             ; preds = %4901
  br label %4903

4903:                                             ; preds = %4902
  br label %4904

4904:                                             ; preds = %4903
  %4905 = load i32, ptr @test_count, align 4, !tbaa !5
  %4906 = add nsw i32 %4905, 1
  store i32 %4906, ptr @test_count, align 4, !tbaa !5
  %4907 = load i32, ptr %145, align 4, !tbaa !5
  %4908 = icmp ugt i32 %4907, 9
  br i1 %4908, label %4962, label %4909

4909:                                             ; preds = %4904
  br label %4910

4910:                                             ; preds = %4909
  br label %4911

4911:                                             ; preds = %4910
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #11
  %4912 = call ptr @__errno_location() #12
  %4913 = load i32, ptr %4912, align 4, !tbaa !5
  store i32 %4913, ptr %148, align 4, !tbaa !5
  %4914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4915 = call i32 @s2n_print_stacktrace(ptr noundef %4914)
  %4916 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4917 = trunc i8 %4916 to i1
  br i1 %4917, label %4918, label %4940

4918:                                             ; preds = %4911
  %4919 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4920 = call i32 @fileno(ptr noundef %4919) #11
  %4921 = call i32 @isatty(i32 noundef %4920) #11
  %4922 = icmp ne i32 %4921, 0
  br i1 %4922, label %4923, label %4940

4923:                                             ; preds = %4918
  %4924 = load i32, ptr %148, align 4, !tbaa !5
  %4925 = call ptr @__errno_location() #12
  store i32 %4924, ptr %4925, align 4, !tbaa !5
  %4926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4927 = load i32, ptr @test_count, align 4, !tbaa !5
  %4928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4929 = load i32, ptr %4928, align 4, !tbaa !5
  %4930 = call ptr @s2n_strerror(i32 noundef %4929, ptr noundef @.str.4)
  %4931 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4932 = load i32, ptr %4931, align 4, !tbaa !5
  %4933 = call ptr @s2n_strerror_debug(i32 noundef %4932, ptr noundef @.str.4)
  %4934 = call ptr @__errno_location() #12
  %4935 = load i32, ptr %4934, align 4, !tbaa !5
  %4936 = call ptr @strerror(i32 noundef %4935) #11
  %4937 = call ptr @__errno_location() #12
  %4938 = load i32, ptr %4937, align 4, !tbaa !5
  %4939 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4926, ptr noundef @.str.2, i32 noundef %4927, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 739, ptr noundef %4930, ptr noundef %4933, ptr noundef %4936, i32 noundef %4938) #11
  br label %4957

4940:                                             ; preds = %4918, %4911
  %4941 = load i32, ptr %148, align 4, !tbaa !5
  %4942 = call ptr @__errno_location() #12
  store i32 %4941, ptr %4942, align 4, !tbaa !5
  %4943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4944 = load i32, ptr @test_count, align 4, !tbaa !5
  %4945 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4946 = load i32, ptr %4945, align 4, !tbaa !5
  %4947 = call ptr @s2n_strerror(i32 noundef %4946, ptr noundef @.str.4)
  %4948 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4949 = load i32, ptr %4948, align 4, !tbaa !5
  %4950 = call ptr @s2n_strerror_debug(i32 noundef %4949, ptr noundef @.str.4)
  %4951 = call ptr @__errno_location() #12
  %4952 = load i32, ptr %4951, align 4, !tbaa !5
  %4953 = call ptr @strerror(i32 noundef %4952) #11
  %4954 = call ptr @__errno_location() #12
  %4955 = load i32, ptr %4954, align 4, !tbaa !5
  %4956 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4943, ptr noundef @.str.5, i32 noundef %4944, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 739, ptr noundef %4947, ptr noundef %4950, ptr noundef %4953, i32 noundef %4955) #11
  br label %4957

4957:                                             ; preds = %4940, %4923
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #11
  br label %4958

4958:                                             ; preds = %4957
  br label %4959

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

4960:                                             ; No predecessors!
  br label %4961

4961:                                             ; preds = %4960
  br label %4962

4962:                                             ; preds = %4961, %4904
  br label %4963

4963:                                             ; preds = %4962
  br label %4964

4964:                                             ; preds = %4963
  br label %4965

4965:                                             ; preds = %4964
  %4966 = load i32, ptr @test_count, align 4, !tbaa !5
  %4967 = add nsw i32 %4966, 1
  store i32 %4967, ptr @test_count, align 4, !tbaa !5
  %4968 = getelementptr inbounds [200 x i8], ptr %144, i64 0, i64 8
  %4969 = load i8, ptr %4968, align 8, !tbaa !15
  %4970 = zext i8 %4969 to i32
  %4971 = icmp eq i32 %4970, 113
  br i1 %4971, label %5025, label %4972

4972:                                             ; preds = %4965
  br label %4973

4973:                                             ; preds = %4972
  br label %4974

4974:                                             ; preds = %4973
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #11
  %4975 = call ptr @__errno_location() #12
  %4976 = load i32, ptr %4975, align 4, !tbaa !5
  store i32 %4976, ptr %149, align 4, !tbaa !5
  %4977 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4978 = call i32 @s2n_print_stacktrace(ptr noundef %4977)
  %4979 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4980 = trunc i8 %4979 to i1
  br i1 %4980, label %4981, label %5003

4981:                                             ; preds = %4974
  %4982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4983 = call i32 @fileno(ptr noundef %4982) #11
  %4984 = call i32 @isatty(i32 noundef %4983) #11
  %4985 = icmp ne i32 %4984, 0
  br i1 %4985, label %4986, label %5003

4986:                                             ; preds = %4981
  %4987 = load i32, ptr %149, align 4, !tbaa !5
  %4988 = call ptr @__errno_location() #12
  store i32 %4987, ptr %4988, align 4, !tbaa !5
  %4989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4990 = load i32, ptr @test_count, align 4, !tbaa !5
  %4991 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4992 = load i32, ptr %4991, align 4, !tbaa !5
  %4993 = call ptr @s2n_strerror(i32 noundef %4992, ptr noundef @.str.4)
  %4994 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4995 = load i32, ptr %4994, align 4, !tbaa !5
  %4996 = call ptr @s2n_strerror_debug(i32 noundef %4995, ptr noundef @.str.4)
  %4997 = call ptr @__errno_location() #12
  %4998 = load i32, ptr %4997, align 4, !tbaa !5
  %4999 = call ptr @strerror(i32 noundef %4998) #11
  %5000 = call ptr @__errno_location() #12
  %5001 = load i32, ptr %5000, align 4, !tbaa !5
  %5002 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4989, ptr noundef @.str.2, i32 noundef %4990, ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 740, ptr noundef %4993, ptr noundef %4996, ptr noundef %4999, i32 noundef %5001) #11
  br label %5020

5003:                                             ; preds = %4981, %4974
  %5004 = load i32, ptr %149, align 4, !tbaa !5
  %5005 = call ptr @__errno_location() #12
  store i32 %5004, ptr %5005, align 4, !tbaa !5
  %5006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5007 = load i32, ptr @test_count, align 4, !tbaa !5
  %5008 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5009 = load i32, ptr %5008, align 4, !tbaa !5
  %5010 = call ptr @s2n_strerror(i32 noundef %5009, ptr noundef @.str.4)
  %5011 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5012 = load i32, ptr %5011, align 4, !tbaa !5
  %5013 = call ptr @s2n_strerror_debug(i32 noundef %5012, ptr noundef @.str.4)
  %5014 = call ptr @__errno_location() #12
  %5015 = load i32, ptr %5014, align 4, !tbaa !5
  %5016 = call ptr @strerror(i32 noundef %5015) #11
  %5017 = call ptr @__errno_location() #12
  %5018 = load i32, ptr %5017, align 4, !tbaa !5
  %5019 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5006, ptr noundef @.str.5, i32 noundef %5007, ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 740, ptr noundef %5010, ptr noundef %5013, ptr noundef %5016, i32 noundef %5018) #11
  br label %5020

5020:                                             ; preds = %5003, %4986
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #11
  br label %5021

5021:                                             ; preds = %5020
  br label %5022

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

5023:                                             ; No predecessors!
  br label %5024

5024:                                             ; preds = %5023
  br label %5025

5025:                                             ; preds = %5024, %4965
  br label %5026

5026:                                             ; preds = %5025
  br label %5027

5027:                                             ; preds = %5026
  br label %5028

5028:                                             ; preds = %5027
  %5029 = load i32, ptr @test_count, align 4, !tbaa !5
  %5030 = add nsw i32 %5029, 1
  store i32 %5030, ptr @test_count, align 4, !tbaa !5
  %5031 = getelementptr inbounds [200 x i8], ptr %144, i64 0, i64 9
  %5032 = load i8, ptr %5031, align 1, !tbaa !15
  %5033 = zext i8 %5032 to i32
  %5034 = icmp eq i32 %5033, 113
  br i1 %5034, label %5088, label %5035

5035:                                             ; preds = %5028
  br label %5036

5036:                                             ; preds = %5035
  br label %5037

5037:                                             ; preds = %5036
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #11
  %5038 = call ptr @__errno_location() #12
  %5039 = load i32, ptr %5038, align 4, !tbaa !5
  store i32 %5039, ptr %150, align 4, !tbaa !5
  %5040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5041 = call i32 @s2n_print_stacktrace(ptr noundef %5040)
  %5042 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5043 = trunc i8 %5042 to i1
  br i1 %5043, label %5044, label %5066

5044:                                             ; preds = %5037
  %5045 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5046 = call i32 @fileno(ptr noundef %5045) #11
  %5047 = call i32 @isatty(i32 noundef %5046) #11
  %5048 = icmp ne i32 %5047, 0
  br i1 %5048, label %5049, label %5066

5049:                                             ; preds = %5044
  %5050 = load i32, ptr %150, align 4, !tbaa !5
  %5051 = call ptr @__errno_location() #12
  store i32 %5050, ptr %5051, align 4, !tbaa !5
  %5052 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5053 = load i32, ptr @test_count, align 4, !tbaa !5
  %5054 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5055 = load i32, ptr %5054, align 4, !tbaa !5
  %5056 = call ptr @s2n_strerror(i32 noundef %5055, ptr noundef @.str.4)
  %5057 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5058 = load i32, ptr %5057, align 4, !tbaa !5
  %5059 = call ptr @s2n_strerror_debug(i32 noundef %5058, ptr noundef @.str.4)
  %5060 = call ptr @__errno_location() #12
  %5061 = load i32, ptr %5060, align 4, !tbaa !5
  %5062 = call ptr @strerror(i32 noundef %5061) #11
  %5063 = call ptr @__errno_location() #12
  %5064 = load i32, ptr %5063, align 4, !tbaa !5
  %5065 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5052, ptr noundef @.str.2, i32 noundef %5053, ptr noundef @.str.63, ptr noundef @.str.1, i32 noundef 741, ptr noundef %5056, ptr noundef %5059, ptr noundef %5062, i32 noundef %5064) #11
  br label %5083

5066:                                             ; preds = %5044, %5037
  %5067 = load i32, ptr %150, align 4, !tbaa !5
  %5068 = call ptr @__errno_location() #12
  store i32 %5067, ptr %5068, align 4, !tbaa !5
  %5069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5070 = load i32, ptr @test_count, align 4, !tbaa !5
  %5071 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5072 = load i32, ptr %5071, align 4, !tbaa !5
  %5073 = call ptr @s2n_strerror(i32 noundef %5072, ptr noundef @.str.4)
  %5074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5075 = load i32, ptr %5074, align 4, !tbaa !5
  %5076 = call ptr @s2n_strerror_debug(i32 noundef %5075, ptr noundef @.str.4)
  %5077 = call ptr @__errno_location() #12
  %5078 = load i32, ptr %5077, align 4, !tbaa !5
  %5079 = call ptr @strerror(i32 noundef %5078) #11
  %5080 = call ptr @__errno_location() #12
  %5081 = load i32, ptr %5080, align 4, !tbaa !5
  %5082 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5069, ptr noundef @.str.5, i32 noundef %5070, ptr noundef @.str.63, ptr noundef @.str.1, i32 noundef 741, ptr noundef %5073, ptr noundef %5076, ptr noundef %5079, i32 noundef %5081) #11
  br label %5083

5083:                                             ; preds = %5066, %5049
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #11
  br label %5084

5084:                                             ; preds = %5083
  br label %5085

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

5086:                                             ; No predecessors!
  br label %5087

5087:                                             ; preds = %5086
  br label %5088

5088:                                             ; preds = %5087, %5028
  br label %5089

5089:                                             ; preds = %5088
  br label %5090

5090:                                             ; preds = %5089
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %144) #11
  call void @llvm.lifetime.end.p0(i64 55, ptr %143) #11
  call void @llvm.lifetime.end.p0(i64 51, ptr %142) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr %151) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %151, ptr align 16 @__const.main.test_cases.69, i64 120, i1 false)
  call void @llvm.lifetime.start.p0(i64 54, ptr %152) #11
  call void @llvm.memset.p0.i64(ptr align 16 %152, i8 0, i64 54, i1 false)
  %5091 = getelementptr inbounds [54 x i8], ptr %152, i32 0, i32 36
  store i8 2, ptr %5091, align 4
  %5092 = getelementptr inbounds [54 x i8], ptr %152, i32 0, i32 39
  store i8 1, ptr %5092, align 1
  %5093 = getelementptr inbounds [54 x i8], ptr %152, i32 0, i32 42
  store i8 11, ptr %5093, align 2
  %5094 = getelementptr inbounds [54 x i8], ptr %152, i32 0, i32 44
  store i8 16, ptr %5094, align 4
  %5095 = getelementptr inbounds [54 x i8], ptr %152, i32 0, i32 46
  store i8 7, ptr %5095, align 2
  %5096 = getelementptr inbounds [54 x i8], ptr %152, i32 0, i32 48
  store i8 5, ptr %5096, align 16
  br label %5097

5097:                                             ; preds = %5090
  %5098 = load i32, ptr @test_count, align 4, !tbaa !5
  %5099 = add nsw i32 %5098, 1
  store i32 %5099, ptr @test_count, align 4, !tbaa !5
  br label %5100

5100:                                             ; preds = %5097
  br label %5101

5101:                                             ; preds = %5100
  call void @llvm.lifetime.start.p0(i64 58, ptr %153) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %153, ptr align 16 @__const.main.client_hello_bytes.70, i64 58, i1 false)
  br label %5102

5102:                                             ; preds = %5101
  %5103 = load i32, ptr @test_count, align 4, !tbaa !5
  %5104 = add nsw i32 %5103, 1
  store i32 %5104, ptr @test_count, align 4, !tbaa !5
  br label %5105

5105:                                             ; preds = %5102
  br label %5106

5106:                                             ; preds = %5105
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #11
  store i64 4, ptr %154, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #11
  store i64 54, ptr %155, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #11
  %5107 = getelementptr inbounds [58 x i8], ptr %153, i64 0, i64 0
  %5108 = getelementptr inbounds i8, ptr %5107, i64 54
  store ptr %5108, ptr %156, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #11
  %5109 = load ptr, ptr %156, align 8, !tbaa !9
  %5110 = getelementptr inbounds i8, ptr %5109, i64 -1
  store ptr %5110, ptr %157, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #11
  store i64 0, ptr %158, align 8, !tbaa !16
  br label %5111

5111:                                             ; preds = %5457, %5106
  %5112 = load i64, ptr %158, align 8, !tbaa !16
  %5113 = icmp ult i64 %5112, 5
  br i1 %5113, label %5115, label %5114

5114:                                             ; preds = %5111
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #11
  br label %5460

5115:                                             ; preds = %5111
  %5116 = load i64, ptr %158, align 8, !tbaa !16
  %5117 = getelementptr inbounds [5 x %struct.anon.1], ptr %151, i64 0, i64 %5116
  %5118 = getelementptr inbounds %struct.anon.1, ptr %5117, i32 0, i32 1
  %5119 = load i64, ptr %5118, align 8, !tbaa !36
  %5120 = trunc i64 %5119 to i8
  %5121 = load ptr, ptr %157, align 8, !tbaa !9
  store i8 %5120, ptr %5121, align 1, !tbaa !15
  br label %5122

5122:                                             ; preds = %5115
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #11
  store i64 4, ptr %159, align 8, !tbaa !16
  %5123 = load i64, ptr %159, align 8, !tbaa !16
  %5124 = icmp ne i64 %5123, 0
  br i1 %5124, label %5125, label %5187

5125:                                             ; preds = %5122
  %5126 = load ptr, ptr %156, align 8, !tbaa !9
  %5127 = load i64, ptr %158, align 8, !tbaa !16
  %5128 = getelementptr inbounds [5 x %struct.anon.1], ptr %151, i64 0, i64 %5127
  %5129 = getelementptr inbounds %struct.anon.1, ptr %5128, i32 0, i32 0
  %5130 = getelementptr inbounds [4 x i8], ptr %5129, i64 0, i64 0
  %5131 = load i64, ptr %159, align 8, !tbaa !16
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %5126, ptr align 8 %5130, i64 %5131, i1 false)
  %5132 = icmp eq ptr %5126, null
  br i1 %5132, label %5133, label %5186

5133:                                             ; preds = %5125
  br label %5134

5134:                                             ; preds = %5133
  br label %5135

5135:                                             ; preds = %5134
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #11
  %5136 = call ptr @__errno_location() #12
  %5137 = load i32, ptr %5136, align 4, !tbaa !5
  store i32 %5137, ptr %160, align 4, !tbaa !5
  %5138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5139 = call i32 @s2n_print_stacktrace(ptr noundef %5138)
  %5140 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5141 = trunc i8 %5140 to i1
  br i1 %5141, label %5142, label %5164

5142:                                             ; preds = %5135
  %5143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5144 = call i32 @fileno(ptr noundef %5143) #11
  %5145 = call i32 @isatty(i32 noundef %5144) #11
  %5146 = icmp ne i32 %5145, 0
  br i1 %5146, label %5147, label %5164

5147:                                             ; preds = %5142
  %5148 = load i32, ptr %160, align 4, !tbaa !5
  %5149 = call ptr @__errno_location() #12
  store i32 %5148, ptr %5149, align 4, !tbaa !5
  %5150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5151 = load i32, ptr @test_count, align 4, !tbaa !5
  %5152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5153 = load i32, ptr %5152, align 4, !tbaa !5
  %5154 = call ptr @s2n_strerror(i32 noundef %5153, ptr noundef @.str.4)
  %5155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5156 = load i32, ptr %5155, align 4, !tbaa !5
  %5157 = call ptr @s2n_strerror_debug(i32 noundef %5156, ptr noundef @.str.4)
  %5158 = call ptr @__errno_location() #12
  %5159 = load i32, ptr %5158, align 4, !tbaa !5
  %5160 = call ptr @strerror(i32 noundef %5159) #11
  %5161 = call ptr @__errno_location() #12
  %5162 = load i32, ptr %5161, align 4, !tbaa !5
  %5163 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5150, ptr noundef @.str.2, i32 noundef %5151, ptr noundef @.str.71, ptr noundef @.str.1, i32 noundef 808, ptr noundef %5154, ptr noundef %5157, ptr noundef %5160, i32 noundef %5162) #11
  br label %5181

5164:                                             ; preds = %5142, %5135
  %5165 = load i32, ptr %160, align 4, !tbaa !5
  %5166 = call ptr @__errno_location() #12
  store i32 %5165, ptr %5166, align 4, !tbaa !5
  %5167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5168 = load i32, ptr @test_count, align 4, !tbaa !5
  %5169 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5170 = load i32, ptr %5169, align 4, !tbaa !5
  %5171 = call ptr @s2n_strerror(i32 noundef %5170, ptr noundef @.str.4)
  %5172 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5173 = load i32, ptr %5172, align 4, !tbaa !5
  %5174 = call ptr @s2n_strerror_debug(i32 noundef %5173, ptr noundef @.str.4)
  %5175 = call ptr @__errno_location() #12
  %5176 = load i32, ptr %5175, align 4, !tbaa !5
  %5177 = call ptr @strerror(i32 noundef %5176) #11
  %5178 = call ptr @__errno_location() #12
  %5179 = load i32, ptr %5178, align 4, !tbaa !5
  %5180 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5167, ptr noundef @.str.5, i32 noundef %5168, ptr noundef @.str.71, ptr noundef @.str.1, i32 noundef 808, ptr noundef %5171, ptr noundef %5174, ptr noundef %5177, i32 noundef %5179) #11
  br label %5181

5181:                                             ; preds = %5164, %5147
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #11
  br label %5182

5182:                                             ; preds = %5181
  br label %5183

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

5184:                                             ; No predecessors!
  br label %5185

5185:                                             ; preds = %5184
  br label %5186

5186:                                             ; preds = %5185, %5125
  br label %5187

5187:                                             ; preds = %5186, %5122
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #11
  br label %5188

5188:                                             ; preds = %5187
  br label %5189

5189:                                             ; preds = %5188
  call void @llvm.lifetime.start.p0(i64 200, ptr %161) #11
  call void @llvm.memset.p0.i64(ptr align 16 %161, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #11
  store i32 0, ptr %162, align 4, !tbaa !5
  br label %5190

5190:                                             ; preds = %5189
  %5191 = load i32, ptr @test_count, align 4, !tbaa !5
  %5192 = add nsw i32 %5191, 1
  store i32 %5192, ptr @test_count, align 4, !tbaa !5
  %5193 = getelementptr inbounds [58 x i8], ptr %153, i64 0, i64 0
  %5194 = getelementptr inbounds [200 x i8], ptr %161, i64 0, i64 0
  %5195 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %5193, i64 noundef 58, i64 noundef 200, ptr noundef %5194, ptr noundef %162)
  %5196 = getelementptr inbounds %struct.s2n_result, ptr %163, i32 0, i32 0
  store i32 %5195, ptr %5196, align 4
  %5197 = getelementptr inbounds %struct.s2n_result, ptr %163, i32 0, i32 0
  %5198 = load i32, ptr %5197, align 4
  %5199 = call zeroext i1 @s2n_result_is_ok(i32 %5198)
  br i1 %5199, label %5253, label %5200

5200:                                             ; preds = %5190
  br label %5201

5201:                                             ; preds = %5200
  br label %5202

5202:                                             ; preds = %5201
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #11
  %5203 = call ptr @__errno_location() #12
  %5204 = load i32, ptr %5203, align 4, !tbaa !5
  store i32 %5204, ptr %164, align 4, !tbaa !5
  %5205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5206 = call i32 @s2n_print_stacktrace(ptr noundef %5205)
  %5207 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5208 = trunc i8 %5207 to i1
  br i1 %5208, label %5209, label %5231

5209:                                             ; preds = %5202
  %5210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5211 = call i32 @fileno(ptr noundef %5210) #11
  %5212 = call i32 @isatty(i32 noundef %5211) #11
  %5213 = icmp ne i32 %5212, 0
  br i1 %5213, label %5214, label %5231

5214:                                             ; preds = %5209
  %5215 = load i32, ptr %164, align 4, !tbaa !5
  %5216 = call ptr @__errno_location() #12
  store i32 %5215, ptr %5216, align 4, !tbaa !5
  %5217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5218 = load i32, ptr @test_count, align 4, !tbaa !5
  %5219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5220 = load i32, ptr %5219, align 4, !tbaa !5
  %5221 = call ptr @s2n_strerror(i32 noundef %5220, ptr noundef @.str.4)
  %5222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5223 = load i32, ptr %5222, align 4, !tbaa !5
  %5224 = call ptr @s2n_strerror_debug(i32 noundef %5223, ptr noundef @.str.4)
  %5225 = call ptr @__errno_location() #12
  %5226 = load i32, ptr %5225, align 4, !tbaa !5
  %5227 = call ptr @strerror(i32 noundef %5226) #11
  %5228 = call ptr @__errno_location() #12
  %5229 = load i32, ptr %5228, align 4, !tbaa !5
  %5230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5217, ptr noundef @.str.2, i32 noundef %5218, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 814, ptr noundef %5221, ptr noundef %5224, ptr noundef %5227, i32 noundef %5229) #11
  br label %5248

5231:                                             ; preds = %5209, %5202
  %5232 = load i32, ptr %164, align 4, !tbaa !5
  %5233 = call ptr @__errno_location() #12
  store i32 %5232, ptr %5233, align 4, !tbaa !5
  %5234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5235 = load i32, ptr @test_count, align 4, !tbaa !5
  %5236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5237 = load i32, ptr %5236, align 4, !tbaa !5
  %5238 = call ptr @s2n_strerror(i32 noundef %5237, ptr noundef @.str.4)
  %5239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5240 = load i32, ptr %5239, align 4, !tbaa !5
  %5241 = call ptr @s2n_strerror_debug(i32 noundef %5240, ptr noundef @.str.4)
  %5242 = call ptr @__errno_location() #12
  %5243 = load i32, ptr %5242, align 4, !tbaa !5
  %5244 = call ptr @strerror(i32 noundef %5243) #11
  %5245 = call ptr @__errno_location() #12
  %5246 = load i32, ptr %5245, align 4, !tbaa !5
  %5247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5234, ptr noundef @.str.5, i32 noundef %5235, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 814, ptr noundef %5238, ptr noundef %5241, ptr noundef %5244, i32 noundef %5246) #11
  br label %5248

5248:                                             ; preds = %5231, %5214
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #11
  br label %5249

5249:                                             ; preds = %5248
  br label %5250

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

5251:                                             ; No predecessors!
  br label %5252

5252:                                             ; preds = %5251
  br label %5253

5253:                                             ; preds = %5252, %5190
  br label %5254

5254:                                             ; preds = %5253
  br label %5255

5255:                                             ; preds = %5254
  br label %5256

5256:                                             ; preds = %5255
  %5257 = load i32, ptr @test_count, align 4, !tbaa !5
  %5258 = add nsw i32 %5257, 1
  store i32 %5258, ptr @test_count, align 4, !tbaa !5
  %5259 = load i32, ptr %162, align 4, !tbaa !5
  %5260 = icmp ugt i32 %5259, 9
  br i1 %5260, label %5314, label %5261

5261:                                             ; preds = %5256
  br label %5262

5262:                                             ; preds = %5261
  br label %5263

5263:                                             ; preds = %5262
  call void @llvm.lifetime.start.p0(i64 4, ptr %165) #11
  %5264 = call ptr @__errno_location() #12
  %5265 = load i32, ptr %5264, align 4, !tbaa !5
  store i32 %5265, ptr %165, align 4, !tbaa !5
  %5266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5267 = call i32 @s2n_print_stacktrace(ptr noundef %5266)
  %5268 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5269 = trunc i8 %5268 to i1
  br i1 %5269, label %5270, label %5292

5270:                                             ; preds = %5263
  %5271 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5272 = call i32 @fileno(ptr noundef %5271) #11
  %5273 = call i32 @isatty(i32 noundef %5272) #11
  %5274 = icmp ne i32 %5273, 0
  br i1 %5274, label %5275, label %5292

5275:                                             ; preds = %5270
  %5276 = load i32, ptr %165, align 4, !tbaa !5
  %5277 = call ptr @__errno_location() #12
  store i32 %5276, ptr %5277, align 4, !tbaa !5
  %5278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5279 = load i32, ptr @test_count, align 4, !tbaa !5
  %5280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5281 = load i32, ptr %5280, align 4, !tbaa !5
  %5282 = call ptr @s2n_strerror(i32 noundef %5281, ptr noundef @.str.4)
  %5283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5284 = load i32, ptr %5283, align 4, !tbaa !5
  %5285 = call ptr @s2n_strerror_debug(i32 noundef %5284, ptr noundef @.str.4)
  %5286 = call ptr @__errno_location() #12
  %5287 = load i32, ptr %5286, align 4, !tbaa !5
  %5288 = call ptr @strerror(i32 noundef %5287) #11
  %5289 = call ptr @__errno_location() #12
  %5290 = load i32, ptr %5289, align 4, !tbaa !5
  %5291 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5278, ptr noundef @.str.2, i32 noundef %5279, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 816, ptr noundef %5282, ptr noundef %5285, ptr noundef %5288, i32 noundef %5290) #11
  br label %5309

5292:                                             ; preds = %5270, %5263
  %5293 = load i32, ptr %165, align 4, !tbaa !5
  %5294 = call ptr @__errno_location() #12
  store i32 %5293, ptr %5294, align 4, !tbaa !5
  %5295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5296 = load i32, ptr @test_count, align 4, !tbaa !5
  %5297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5298 = load i32, ptr %5297, align 4, !tbaa !5
  %5299 = call ptr @s2n_strerror(i32 noundef %5298, ptr noundef @.str.4)
  %5300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5301 = load i32, ptr %5300, align 4, !tbaa !5
  %5302 = call ptr @s2n_strerror_debug(i32 noundef %5301, ptr noundef @.str.4)
  %5303 = call ptr @__errno_location() #12
  %5304 = load i32, ptr %5303, align 4, !tbaa !5
  %5305 = call ptr @strerror(i32 noundef %5304) #11
  %5306 = call ptr @__errno_location() #12
  %5307 = load i32, ptr %5306, align 4, !tbaa !5
  %5308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5295, ptr noundef @.str.5, i32 noundef %5296, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 816, ptr noundef %5299, ptr noundef %5302, ptr noundef %5305, i32 noundef %5307) #11
  br label %5309

5309:                                             ; preds = %5292, %5275
  call void @llvm.lifetime.end.p0(i64 4, ptr %165) #11
  br label %5310

5310:                                             ; preds = %5309
  br label %5311

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

5312:                                             ; No predecessors!
  br label %5313

5313:                                             ; preds = %5312
  br label %5314

5314:                                             ; preds = %5313, %5256
  br label %5315

5315:                                             ; preds = %5314
  br label %5316

5316:                                             ; preds = %5315
  br label %5317

5317:                                             ; preds = %5316
  %5318 = load i32, ptr @test_count, align 4, !tbaa !5
  %5319 = add nsw i32 %5318, 1
  store i32 %5319, ptr @test_count, align 4, !tbaa !5
  %5320 = getelementptr inbounds [200 x i8], ptr %161, i64 0, i64 8
  %5321 = load i8, ptr %5320, align 8, !tbaa !15
  %5322 = zext i8 %5321 to i32
  %5323 = load i64, ptr %158, align 8, !tbaa !16
  %5324 = getelementptr inbounds [5 x %struct.anon.1], ptr %151, i64 0, i64 %5323
  %5325 = getelementptr inbounds %struct.anon.1, ptr %5324, i32 0, i32 2
  %5326 = load ptr, ptr %5325, align 8, !tbaa !38
  %5327 = getelementptr inbounds i8, ptr %5326, i64 0
  %5328 = load i8, ptr %5327, align 1, !tbaa !15
  %5329 = sext i8 %5328 to i32
  %5330 = icmp eq i32 %5322, %5329
  br i1 %5330, label %5384, label %5331

5331:                                             ; preds = %5317
  br label %5332

5332:                                             ; preds = %5331
  br label %5333

5333:                                             ; preds = %5332
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #11
  %5334 = call ptr @__errno_location() #12
  %5335 = load i32, ptr %5334, align 4, !tbaa !5
  store i32 %5335, ptr %166, align 4, !tbaa !5
  %5336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5337 = call i32 @s2n_print_stacktrace(ptr noundef %5336)
  %5338 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5339 = trunc i8 %5338 to i1
  br i1 %5339, label %5340, label %5362

5340:                                             ; preds = %5333
  %5341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5342 = call i32 @fileno(ptr noundef %5341) #11
  %5343 = call i32 @isatty(i32 noundef %5342) #11
  %5344 = icmp ne i32 %5343, 0
  br i1 %5344, label %5345, label %5362

5345:                                             ; preds = %5340
  %5346 = load i32, ptr %166, align 4, !tbaa !5
  %5347 = call ptr @__errno_location() #12
  store i32 %5346, ptr %5347, align 4, !tbaa !5
  %5348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5349 = load i32, ptr @test_count, align 4, !tbaa !5
  %5350 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5351 = load i32, ptr %5350, align 4, !tbaa !5
  %5352 = call ptr @s2n_strerror(i32 noundef %5351, ptr noundef @.str.4)
  %5353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5354 = load i32, ptr %5353, align 4, !tbaa !5
  %5355 = call ptr @s2n_strerror_debug(i32 noundef %5354, ptr noundef @.str.4)
  %5356 = call ptr @__errno_location() #12
  %5357 = load i32, ptr %5356, align 4, !tbaa !5
  %5358 = call ptr @strerror(i32 noundef %5357) #11
  %5359 = call ptr @__errno_location() #12
  %5360 = load i32, ptr %5359, align 4, !tbaa !5
  %5361 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5348, ptr noundef @.str.2, i32 noundef %5349, ptr noundef @.str.72, ptr noundef @.str.1, i32 noundef 817, ptr noundef %5352, ptr noundef %5355, ptr noundef %5358, i32 noundef %5360) #11
  br label %5379

5362:                                             ; preds = %5340, %5333
  %5363 = load i32, ptr %166, align 4, !tbaa !5
  %5364 = call ptr @__errno_location() #12
  store i32 %5363, ptr %5364, align 4, !tbaa !5
  %5365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5366 = load i32, ptr @test_count, align 4, !tbaa !5
  %5367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5368 = load i32, ptr %5367, align 4, !tbaa !5
  %5369 = call ptr @s2n_strerror(i32 noundef %5368, ptr noundef @.str.4)
  %5370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5371 = load i32, ptr %5370, align 4, !tbaa !5
  %5372 = call ptr @s2n_strerror_debug(i32 noundef %5371, ptr noundef @.str.4)
  %5373 = call ptr @__errno_location() #12
  %5374 = load i32, ptr %5373, align 4, !tbaa !5
  %5375 = call ptr @strerror(i32 noundef %5374) #11
  %5376 = call ptr @__errno_location() #12
  %5377 = load i32, ptr %5376, align 4, !tbaa !5
  %5378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5365, ptr noundef @.str.5, i32 noundef %5366, ptr noundef @.str.72, ptr noundef @.str.1, i32 noundef 817, ptr noundef %5369, ptr noundef %5372, ptr noundef %5375, i32 noundef %5377) #11
  br label %5379

5379:                                             ; preds = %5362, %5345
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #11
  br label %5380

5380:                                             ; preds = %5379
  br label %5381

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

5382:                                             ; No predecessors!
  br label %5383

5383:                                             ; preds = %5382
  br label %5384

5384:                                             ; preds = %5383, %5317
  br label %5385

5385:                                             ; preds = %5384
  br label %5386

5386:                                             ; preds = %5385
  br label %5387

5387:                                             ; preds = %5386
  %5388 = load i32, ptr @test_count, align 4, !tbaa !5
  %5389 = add nsw i32 %5388, 1
  store i32 %5389, ptr @test_count, align 4, !tbaa !5
  %5390 = getelementptr inbounds [200 x i8], ptr %161, i64 0, i64 9
  %5391 = load i8, ptr %5390, align 1, !tbaa !15
  %5392 = zext i8 %5391 to i32
  %5393 = load i64, ptr %158, align 8, !tbaa !16
  %5394 = getelementptr inbounds [5 x %struct.anon.1], ptr %151, i64 0, i64 %5393
  %5395 = getelementptr inbounds %struct.anon.1, ptr %5394, i32 0, i32 2
  %5396 = load ptr, ptr %5395, align 8, !tbaa !38
  %5397 = getelementptr inbounds i8, ptr %5396, i64 1
  %5398 = load i8, ptr %5397, align 1, !tbaa !15
  %5399 = sext i8 %5398 to i32
  %5400 = icmp eq i32 %5392, %5399
  br i1 %5400, label %5454, label %5401

5401:                                             ; preds = %5387
  br label %5402

5402:                                             ; preds = %5401
  br label %5403

5403:                                             ; preds = %5402
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #11
  %5404 = call ptr @__errno_location() #12
  %5405 = load i32, ptr %5404, align 4, !tbaa !5
  store i32 %5405, ptr %167, align 4, !tbaa !5
  %5406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5407 = call i32 @s2n_print_stacktrace(ptr noundef %5406)
  %5408 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5409 = trunc i8 %5408 to i1
  br i1 %5409, label %5410, label %5432

5410:                                             ; preds = %5403
  %5411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5412 = call i32 @fileno(ptr noundef %5411) #11
  %5413 = call i32 @isatty(i32 noundef %5412) #11
  %5414 = icmp ne i32 %5413, 0
  br i1 %5414, label %5415, label %5432

5415:                                             ; preds = %5410
  %5416 = load i32, ptr %167, align 4, !tbaa !5
  %5417 = call ptr @__errno_location() #12
  store i32 %5416, ptr %5417, align 4, !tbaa !5
  %5418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5419 = load i32, ptr @test_count, align 4, !tbaa !5
  %5420 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5421 = load i32, ptr %5420, align 4, !tbaa !5
  %5422 = call ptr @s2n_strerror(i32 noundef %5421, ptr noundef @.str.4)
  %5423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5424 = load i32, ptr %5423, align 4, !tbaa !5
  %5425 = call ptr @s2n_strerror_debug(i32 noundef %5424, ptr noundef @.str.4)
  %5426 = call ptr @__errno_location() #12
  %5427 = load i32, ptr %5426, align 4, !tbaa !5
  %5428 = call ptr @strerror(i32 noundef %5427) #11
  %5429 = call ptr @__errno_location() #12
  %5430 = load i32, ptr %5429, align 4, !tbaa !5
  %5431 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5418, ptr noundef @.str.2, i32 noundef %5419, ptr noundef @.str.73, ptr noundef @.str.1, i32 noundef 818, ptr noundef %5422, ptr noundef %5425, ptr noundef %5428, i32 noundef %5430) #11
  br label %5449

5432:                                             ; preds = %5410, %5403
  %5433 = load i32, ptr %167, align 4, !tbaa !5
  %5434 = call ptr @__errno_location() #12
  store i32 %5433, ptr %5434, align 4, !tbaa !5
  %5435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5436 = load i32, ptr @test_count, align 4, !tbaa !5
  %5437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5438 = load i32, ptr %5437, align 4, !tbaa !5
  %5439 = call ptr @s2n_strerror(i32 noundef %5438, ptr noundef @.str.4)
  %5440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5441 = load i32, ptr %5440, align 4, !tbaa !5
  %5442 = call ptr @s2n_strerror_debug(i32 noundef %5441, ptr noundef @.str.4)
  %5443 = call ptr @__errno_location() #12
  %5444 = load i32, ptr %5443, align 4, !tbaa !5
  %5445 = call ptr @strerror(i32 noundef %5444) #11
  %5446 = call ptr @__errno_location() #12
  %5447 = load i32, ptr %5446, align 4, !tbaa !5
  %5448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5435, ptr noundef @.str.5, i32 noundef %5436, ptr noundef @.str.73, ptr noundef @.str.1, i32 noundef 818, ptr noundef %5439, ptr noundef %5442, ptr noundef %5445, i32 noundef %5447) #11
  br label %5449

5449:                                             ; preds = %5432, %5415
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #11
  br label %5450

5450:                                             ; preds = %5449
  br label %5451

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

5452:                                             ; No predecessors!
  br label %5453

5453:                                             ; preds = %5452
  br label %5454

5454:                                             ; preds = %5453, %5387
  br label %5455

5455:                                             ; preds = %5454
  br label %5456

5456:                                             ; preds = %5455
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %161) #11
  br label %5457

5457:                                             ; preds = %5456
  %5458 = load i64, ptr %158, align 8, !tbaa !16
  %5459 = add i64 %5458, 1
  store i64 %5459, ptr %158, align 8, !tbaa !16
  br label %5111, !llvm.loop !39

5460:                                             ; preds = %5114
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #11
  call void @llvm.lifetime.end.p0(i64 58, ptr %153) #11
  call void @llvm.lifetime.end.p0(i64 54, ptr %152) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr %151) #11
  call void @llvm.lifetime.start.p0(i64 200, ptr %168) #11
  call void @llvm.memset.p0.i64(ptr align 16 %168, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %169) #11
  store i32 0, ptr %169, align 4, !tbaa !5
  br label %5461

5461:                                             ; preds = %5460
  %5462 = load i32, ptr @test_count, align 4, !tbaa !5
  %5463 = add nsw i32 %5462, 1
  store i32 %5463, ptr @test_count, align 4, !tbaa !5
  %5464 = getelementptr inbounds [47 x i8], ptr %10, i64 0, i64 0
  %5465 = getelementptr inbounds [200 x i8], ptr %168, i64 0, i64 0
  %5466 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %5464, i64 noundef 47, i64 noundef 200, ptr noundef %5465, ptr noundef %169)
  %5467 = getelementptr inbounds %struct.s2n_result, ptr %170, i32 0, i32 0
  store i32 %5466, ptr %5467, align 4
  %5468 = getelementptr inbounds %struct.s2n_result, ptr %170, i32 0, i32 0
  %5469 = load i32, ptr %5468, align 4
  %5470 = call zeroext i1 @s2n_result_is_ok(i32 %5469)
  br i1 %5470, label %5524, label %5471

5471:                                             ; preds = %5461
  br label %5472

5472:                                             ; preds = %5471
  br label %5473

5473:                                             ; preds = %5472
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #11
  %5474 = call ptr @__errno_location() #12
  %5475 = load i32, ptr %5474, align 4, !tbaa !5
  store i32 %5475, ptr %171, align 4, !tbaa !5
  %5476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5477 = call i32 @s2n_print_stacktrace(ptr noundef %5476)
  %5478 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5479 = trunc i8 %5478 to i1
  br i1 %5479, label %5480, label %5502

5480:                                             ; preds = %5473
  %5481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5482 = call i32 @fileno(ptr noundef %5481) #11
  %5483 = call i32 @isatty(i32 noundef %5482) #11
  %5484 = icmp ne i32 %5483, 0
  br i1 %5484, label %5485, label %5502

5485:                                             ; preds = %5480
  %5486 = load i32, ptr %171, align 4, !tbaa !5
  %5487 = call ptr @__errno_location() #12
  store i32 %5486, ptr %5487, align 4, !tbaa !5
  %5488 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5489 = load i32, ptr @test_count, align 4, !tbaa !5
  %5490 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5491 = load i32, ptr %5490, align 4, !tbaa !5
  %5492 = call ptr @s2n_strerror(i32 noundef %5491, ptr noundef @.str.4)
  %5493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5494 = load i32, ptr %5493, align 4, !tbaa !5
  %5495 = call ptr @s2n_strerror_debug(i32 noundef %5494, ptr noundef @.str.4)
  %5496 = call ptr @__errno_location() #12
  %5497 = load i32, ptr %5496, align 4, !tbaa !5
  %5498 = call ptr @strerror(i32 noundef %5497) #11
  %5499 = call ptr @__errno_location() #12
  %5500 = load i32, ptr %5499, align 4, !tbaa !5
  %5501 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5488, ptr noundef @.str.2, i32 noundef %5489, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 836, ptr noundef %5492, ptr noundef %5495, ptr noundef %5498, i32 noundef %5500) #11
  br label %5519

5502:                                             ; preds = %5480, %5473
  %5503 = load i32, ptr %171, align 4, !tbaa !5
  %5504 = call ptr @__errno_location() #12
  store i32 %5503, ptr %5504, align 4, !tbaa !5
  %5505 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5506 = load i32, ptr @test_count, align 4, !tbaa !5
  %5507 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5508 = load i32, ptr %5507, align 4, !tbaa !5
  %5509 = call ptr @s2n_strerror(i32 noundef %5508, ptr noundef @.str.4)
  %5510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5511 = load i32, ptr %5510, align 4, !tbaa !5
  %5512 = call ptr @s2n_strerror_debug(i32 noundef %5511, ptr noundef @.str.4)
  %5513 = call ptr @__errno_location() #12
  %5514 = load i32, ptr %5513, align 4, !tbaa !5
  %5515 = call ptr @strerror(i32 noundef %5514) #11
  %5516 = call ptr @__errno_location() #12
  %5517 = load i32, ptr %5516, align 4, !tbaa !5
  %5518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5505, ptr noundef @.str.5, i32 noundef %5506, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 836, ptr noundef %5509, ptr noundef %5512, ptr noundef %5515, i32 noundef %5517) #11
  br label %5519

5519:                                             ; preds = %5502, %5485
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #11
  br label %5520

5520:                                             ; preds = %5519
  br label %5521

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

5522:                                             ; No predecessors!
  br label %5523

5523:                                             ; preds = %5522
  br label %5524

5524:                                             ; preds = %5523, %5461
  br label %5525

5525:                                             ; preds = %5524
  br label %5526

5526:                                             ; preds = %5525
  br label %5527

5527:                                             ; preds = %5526
  %5528 = load i32, ptr @test_count, align 4, !tbaa !5
  %5529 = add nsw i32 %5528, 1
  store i32 %5529, ptr @test_count, align 4, !tbaa !5
  %5530 = load i32, ptr %169, align 4, !tbaa !5
  %5531 = icmp ugt i32 %5530, 9
  br i1 %5531, label %5585, label %5532

5532:                                             ; preds = %5527
  br label %5533

5533:                                             ; preds = %5532
  br label %5534

5534:                                             ; preds = %5533
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #11
  %5535 = call ptr @__errno_location() #12
  %5536 = load i32, ptr %5535, align 4, !tbaa !5
  store i32 %5536, ptr %172, align 4, !tbaa !5
  %5537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5538 = call i32 @s2n_print_stacktrace(ptr noundef %5537)
  %5539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5540 = trunc i8 %5539 to i1
  br i1 %5540, label %5541, label %5563

5541:                                             ; preds = %5534
  %5542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5543 = call i32 @fileno(ptr noundef %5542) #11
  %5544 = call i32 @isatty(i32 noundef %5543) #11
  %5545 = icmp ne i32 %5544, 0
  br i1 %5545, label %5546, label %5563

5546:                                             ; preds = %5541
  %5547 = load i32, ptr %172, align 4, !tbaa !5
  %5548 = call ptr @__errno_location() #12
  store i32 %5547, ptr %5548, align 4, !tbaa !5
  %5549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5550 = load i32, ptr @test_count, align 4, !tbaa !5
  %5551 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5552 = load i32, ptr %5551, align 4, !tbaa !5
  %5553 = call ptr @s2n_strerror(i32 noundef %5552, ptr noundef @.str.4)
  %5554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5555 = load i32, ptr %5554, align 4, !tbaa !5
  %5556 = call ptr @s2n_strerror_debug(i32 noundef %5555, ptr noundef @.str.4)
  %5557 = call ptr @__errno_location() #12
  %5558 = load i32, ptr %5557, align 4, !tbaa !5
  %5559 = call ptr @strerror(i32 noundef %5558) #11
  %5560 = call ptr @__errno_location() #12
  %5561 = load i32, ptr %5560, align 4, !tbaa !5
  %5562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5549, ptr noundef @.str.2, i32 noundef %5550, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 838, ptr noundef %5553, ptr noundef %5556, ptr noundef %5559, i32 noundef %5561) #11
  br label %5580

5563:                                             ; preds = %5541, %5534
  %5564 = load i32, ptr %172, align 4, !tbaa !5
  %5565 = call ptr @__errno_location() #12
  store i32 %5564, ptr %5565, align 4, !tbaa !5
  %5566 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5567 = load i32, ptr @test_count, align 4, !tbaa !5
  %5568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5569 = load i32, ptr %5568, align 4, !tbaa !5
  %5570 = call ptr @s2n_strerror(i32 noundef %5569, ptr noundef @.str.4)
  %5571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5572 = load i32, ptr %5571, align 4, !tbaa !5
  %5573 = call ptr @s2n_strerror_debug(i32 noundef %5572, ptr noundef @.str.4)
  %5574 = call ptr @__errno_location() #12
  %5575 = load i32, ptr %5574, align 4, !tbaa !5
  %5576 = call ptr @strerror(i32 noundef %5575) #11
  %5577 = call ptr @__errno_location() #12
  %5578 = load i32, ptr %5577, align 4, !tbaa !5
  %5579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5566, ptr noundef @.str.5, i32 noundef %5567, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 838, ptr noundef %5570, ptr noundef %5573, ptr noundef %5576, i32 noundef %5578) #11
  br label %5580

5580:                                             ; preds = %5563, %5546
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #11
  br label %5581

5581:                                             ; preds = %5580
  br label %5582

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

5583:                                             ; No predecessors!
  br label %5584

5584:                                             ; preds = %5583
  br label %5585

5585:                                             ; preds = %5584, %5527
  br label %5586

5586:                                             ; preds = %5585
  br label %5587

5587:                                             ; preds = %5586
  br label %5588

5588:                                             ; preds = %5587
  %5589 = load i32, ptr @test_count, align 4, !tbaa !5
  %5590 = add nsw i32 %5589, 1
  store i32 %5590, ptr @test_count, align 4, !tbaa !5
  %5591 = getelementptr inbounds [200 x i8], ptr %168, i64 0, i64 8
  %5592 = load i8, ptr %5591, align 8, !tbaa !15
  %5593 = zext i8 %5592 to i32
  %5594 = icmp eq i32 %5593, 48
  br i1 %5594, label %5648, label %5595

5595:                                             ; preds = %5588
  br label %5596

5596:                                             ; preds = %5595
  br label %5597

5597:                                             ; preds = %5596
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #11
  %5598 = call ptr @__errno_location() #12
  %5599 = load i32, ptr %5598, align 4, !tbaa !5
  store i32 %5599, ptr %173, align 4, !tbaa !5
  %5600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5601 = call i32 @s2n_print_stacktrace(ptr noundef %5600)
  %5602 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5603 = trunc i8 %5602 to i1
  br i1 %5603, label %5604, label %5626

5604:                                             ; preds = %5597
  %5605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5606 = call i32 @fileno(ptr noundef %5605) #11
  %5607 = call i32 @isatty(i32 noundef %5606) #11
  %5608 = icmp ne i32 %5607, 0
  br i1 %5608, label %5609, label %5626

5609:                                             ; preds = %5604
  %5610 = load i32, ptr %173, align 4, !tbaa !5
  %5611 = call ptr @__errno_location() #12
  store i32 %5610, ptr %5611, align 4, !tbaa !5
  %5612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5613 = load i32, ptr @test_count, align 4, !tbaa !5
  %5614 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5615 = load i32, ptr %5614, align 4, !tbaa !5
  %5616 = call ptr @s2n_strerror(i32 noundef %5615, ptr noundef @.str.4)
  %5617 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5618 = load i32, ptr %5617, align 4, !tbaa !5
  %5619 = call ptr @s2n_strerror_debug(i32 noundef %5618, ptr noundef @.str.4)
  %5620 = call ptr @__errno_location() #12
  %5621 = load i32, ptr %5620, align 4, !tbaa !5
  %5622 = call ptr @strerror(i32 noundef %5621) #11
  %5623 = call ptr @__errno_location() #12
  %5624 = load i32, ptr %5623, align 4, !tbaa !5
  %5625 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5612, ptr noundef @.str.2, i32 noundef %5613, ptr noundef @.str.74, ptr noundef @.str.1, i32 noundef 839, ptr noundef %5616, ptr noundef %5619, ptr noundef %5622, i32 noundef %5624) #11
  br label %5643

5626:                                             ; preds = %5604, %5597
  %5627 = load i32, ptr %173, align 4, !tbaa !5
  %5628 = call ptr @__errno_location() #12
  store i32 %5627, ptr %5628, align 4, !tbaa !5
  %5629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5630 = load i32, ptr @test_count, align 4, !tbaa !5
  %5631 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5632 = load i32, ptr %5631, align 4, !tbaa !5
  %5633 = call ptr @s2n_strerror(i32 noundef %5632, ptr noundef @.str.4)
  %5634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5635 = load i32, ptr %5634, align 4, !tbaa !5
  %5636 = call ptr @s2n_strerror_debug(i32 noundef %5635, ptr noundef @.str.4)
  %5637 = call ptr @__errno_location() #12
  %5638 = load i32, ptr %5637, align 4, !tbaa !5
  %5639 = call ptr @strerror(i32 noundef %5638) #11
  %5640 = call ptr @__errno_location() #12
  %5641 = load i32, ptr %5640, align 4, !tbaa !5
  %5642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5629, ptr noundef @.str.5, i32 noundef %5630, ptr noundef @.str.74, ptr noundef @.str.1, i32 noundef 839, ptr noundef %5633, ptr noundef %5636, ptr noundef %5639, i32 noundef %5641) #11
  br label %5643

5643:                                             ; preds = %5626, %5609
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #11
  br label %5644

5644:                                             ; preds = %5643
  br label %5645

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

5646:                                             ; No predecessors!
  br label %5647

5647:                                             ; preds = %5646
  br label %5648

5648:                                             ; preds = %5647, %5588
  br label %5649

5649:                                             ; preds = %5648
  br label %5650

5650:                                             ; preds = %5649
  br label %5651

5651:                                             ; preds = %5650
  %5652 = load i32, ptr @test_count, align 4, !tbaa !5
  %5653 = add nsw i32 %5652, 1
  store i32 %5653, ptr @test_count, align 4, !tbaa !5
  %5654 = getelementptr inbounds [200 x i8], ptr %168, i64 0, i64 9
  %5655 = load i8, ptr %5654, align 1, !tbaa !15
  %5656 = zext i8 %5655 to i32
  %5657 = icmp eq i32 %5656, 48
  br i1 %5657, label %5711, label %5658

5658:                                             ; preds = %5651
  br label %5659

5659:                                             ; preds = %5658
  br label %5660

5660:                                             ; preds = %5659
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #11
  %5661 = call ptr @__errno_location() #12
  %5662 = load i32, ptr %5661, align 4, !tbaa !5
  store i32 %5662, ptr %174, align 4, !tbaa !5
  %5663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5664 = call i32 @s2n_print_stacktrace(ptr noundef %5663)
  %5665 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5666 = trunc i8 %5665 to i1
  br i1 %5666, label %5667, label %5689

5667:                                             ; preds = %5660
  %5668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5669 = call i32 @fileno(ptr noundef %5668) #11
  %5670 = call i32 @isatty(i32 noundef %5669) #11
  %5671 = icmp ne i32 %5670, 0
  br i1 %5671, label %5672, label %5689

5672:                                             ; preds = %5667
  %5673 = load i32, ptr %174, align 4, !tbaa !5
  %5674 = call ptr @__errno_location() #12
  store i32 %5673, ptr %5674, align 4, !tbaa !5
  %5675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5676 = load i32, ptr @test_count, align 4, !tbaa !5
  %5677 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5678 = load i32, ptr %5677, align 4, !tbaa !5
  %5679 = call ptr @s2n_strerror(i32 noundef %5678, ptr noundef @.str.4)
  %5680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5681 = load i32, ptr %5680, align 4, !tbaa !5
  %5682 = call ptr @s2n_strerror_debug(i32 noundef %5681, ptr noundef @.str.4)
  %5683 = call ptr @__errno_location() #12
  %5684 = load i32, ptr %5683, align 4, !tbaa !5
  %5685 = call ptr @strerror(i32 noundef %5684) #11
  %5686 = call ptr @__errno_location() #12
  %5687 = load i32, ptr %5686, align 4, !tbaa !5
  %5688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5675, ptr noundef @.str.2, i32 noundef %5676, ptr noundef @.str.75, ptr noundef @.str.1, i32 noundef 840, ptr noundef %5679, ptr noundef %5682, ptr noundef %5685, i32 noundef %5687) #11
  br label %5706

5689:                                             ; preds = %5667, %5660
  %5690 = load i32, ptr %174, align 4, !tbaa !5
  %5691 = call ptr @__errno_location() #12
  store i32 %5690, ptr %5691, align 4, !tbaa !5
  %5692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5693 = load i32, ptr @test_count, align 4, !tbaa !5
  %5694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5695 = load i32, ptr %5694, align 4, !tbaa !5
  %5696 = call ptr @s2n_strerror(i32 noundef %5695, ptr noundef @.str.4)
  %5697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5698 = load i32, ptr %5697, align 4, !tbaa !5
  %5699 = call ptr @s2n_strerror_debug(i32 noundef %5698, ptr noundef @.str.4)
  %5700 = call ptr @__errno_location() #12
  %5701 = load i32, ptr %5700, align 4, !tbaa !5
  %5702 = call ptr @strerror(i32 noundef %5701) #11
  %5703 = call ptr @__errno_location() #12
  %5704 = load i32, ptr %5703, align 4, !tbaa !5
  %5705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5692, ptr noundef @.str.5, i32 noundef %5693, ptr noundef @.str.75, ptr noundef @.str.1, i32 noundef 840, ptr noundef %5696, ptr noundef %5699, ptr noundef %5702, i32 noundef %5704) #11
  br label %5706

5706:                                             ; preds = %5689, %5672
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #11
  br label %5707

5707:                                             ; preds = %5706
  br label %5708

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

5709:                                             ; No predecessors!
  br label %5710

5710:                                             ; preds = %5709
  br label %5711

5711:                                             ; preds = %5710, %5651
  br label %5712

5712:                                             ; preds = %5711
  br label %5713

5713:                                             ; preds = %5712
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %168) #11
  call void @llvm.lifetime.start.p0(i64 49, ptr %175) #11
  call void @llvm.memset.p0.i64(ptr align 16 %175, i8 0, i64 49, i1 false)
  %5714 = getelementptr inbounds [49 x i8], ptr %175, i32 0, i32 36
  store i8 2, ptr %5714, align 4
  %5715 = getelementptr inbounds [49 x i8], ptr %175, i32 0, i32 39
  store i8 1, ptr %5715, align 1
  %5716 = getelementptr inbounds [49 x i8], ptr %175, i32 0, i32 42
  store i8 6, ptr %5716, align 2
  %5717 = getelementptr inbounds [49 x i8], ptr %175, i32 0, i32 44
  store i8 16, ptr %5717, align 4
  %5718 = getelementptr inbounds [49 x i8], ptr %175, i32 0, i32 46
  store i8 2, ptr %5718, align 2
  br label %5719

5719:                                             ; preds = %5713
  %5720 = load i32, ptr @test_count, align 4, !tbaa !5
  %5721 = add nsw i32 %5720, 1
  store i32 %5721, ptr @test_count, align 4, !tbaa !5
  br label %5722

5722:                                             ; preds = %5719
  br label %5723

5723:                                             ; preds = %5722
  call void @llvm.lifetime.start.p0(i64 53, ptr %176) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %176, ptr align 16 @__const.main.client_hello_bytes.76, i64 53, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %177) #11
  call void @llvm.memset.p0.i64(ptr align 16 %177, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #11
  store i32 0, ptr %178, align 4, !tbaa !5
  br label %5724

5724:                                             ; preds = %5723
  %5725 = load i32, ptr @test_count, align 4, !tbaa !5
  %5726 = add nsw i32 %5725, 1
  store i32 %5726, ptr @test_count, align 4, !tbaa !5
  %5727 = getelementptr inbounds [53 x i8], ptr %176, i64 0, i64 0
  %5728 = getelementptr inbounds [200 x i8], ptr %177, i64 0, i64 0
  %5729 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %5727, i64 noundef 53, i64 noundef 200, ptr noundef %5728, ptr noundef %178)
  %5730 = getelementptr inbounds %struct.s2n_result, ptr %179, i32 0, i32 0
  store i32 %5729, ptr %5730, align 4
  %5731 = getelementptr inbounds %struct.s2n_result, ptr %179, i32 0, i32 0
  %5732 = load i32, ptr %5731, align 4
  %5733 = call zeroext i1 @s2n_result_is_ok(i32 %5732)
  br i1 %5733, label %5787, label %5734

5734:                                             ; preds = %5724
  br label %5735

5735:                                             ; preds = %5734
  br label %5736

5736:                                             ; preds = %5735
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #11
  %5737 = call ptr @__errno_location() #12
  %5738 = load i32, ptr %5737, align 4, !tbaa !5
  store i32 %5738, ptr %180, align 4, !tbaa !5
  %5739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5740 = call i32 @s2n_print_stacktrace(ptr noundef %5739)
  %5741 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5742 = trunc i8 %5741 to i1
  br i1 %5742, label %5743, label %5765

5743:                                             ; preds = %5736
  %5744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5745 = call i32 @fileno(ptr noundef %5744) #11
  %5746 = call i32 @isatty(i32 noundef %5745) #11
  %5747 = icmp ne i32 %5746, 0
  br i1 %5747, label %5748, label %5765

5748:                                             ; preds = %5743
  %5749 = load i32, ptr %180, align 4, !tbaa !5
  %5750 = call ptr @__errno_location() #12
  store i32 %5749, ptr %5750, align 4, !tbaa !5
  %5751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5752 = load i32, ptr @test_count, align 4, !tbaa !5
  %5753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5754 = load i32, ptr %5753, align 4, !tbaa !5
  %5755 = call ptr @s2n_strerror(i32 noundef %5754, ptr noundef @.str.4)
  %5756 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5757 = load i32, ptr %5756, align 4, !tbaa !5
  %5758 = call ptr @s2n_strerror_debug(i32 noundef %5757, ptr noundef @.str.4)
  %5759 = call ptr @__errno_location() #12
  %5760 = load i32, ptr %5759, align 4, !tbaa !5
  %5761 = call ptr @strerror(i32 noundef %5760) #11
  %5762 = call ptr @__errno_location() #12
  %5763 = load i32, ptr %5762, align 4, !tbaa !5
  %5764 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5751, ptr noundef @.str.2, i32 noundef %5752, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 860, ptr noundef %5755, ptr noundef %5758, ptr noundef %5761, i32 noundef %5763) #11
  br label %5782

5765:                                             ; preds = %5743, %5736
  %5766 = load i32, ptr %180, align 4, !tbaa !5
  %5767 = call ptr @__errno_location() #12
  store i32 %5766, ptr %5767, align 4, !tbaa !5
  %5768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5769 = load i32, ptr @test_count, align 4, !tbaa !5
  %5770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5771 = load i32, ptr %5770, align 4, !tbaa !5
  %5772 = call ptr @s2n_strerror(i32 noundef %5771, ptr noundef @.str.4)
  %5773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5774 = load i32, ptr %5773, align 4, !tbaa !5
  %5775 = call ptr @s2n_strerror_debug(i32 noundef %5774, ptr noundef @.str.4)
  %5776 = call ptr @__errno_location() #12
  %5777 = load i32, ptr %5776, align 4, !tbaa !5
  %5778 = call ptr @strerror(i32 noundef %5777) #11
  %5779 = call ptr @__errno_location() #12
  %5780 = load i32, ptr %5779, align 4, !tbaa !5
  %5781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5768, ptr noundef @.str.5, i32 noundef %5769, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 860, ptr noundef %5772, ptr noundef %5775, ptr noundef %5778, i32 noundef %5780) #11
  br label %5782

5782:                                             ; preds = %5765, %5748
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #11
  br label %5783

5783:                                             ; preds = %5782
  br label %5784

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

5785:                                             ; No predecessors!
  br label %5786

5786:                                             ; preds = %5785
  br label %5787

5787:                                             ; preds = %5786, %5724
  br label %5788

5788:                                             ; preds = %5787
  br label %5789

5789:                                             ; preds = %5788
  br label %5790

5790:                                             ; preds = %5789
  %5791 = load i32, ptr @test_count, align 4, !tbaa !5
  %5792 = add nsw i32 %5791, 1
  store i32 %5792, ptr @test_count, align 4, !tbaa !5
  %5793 = load i32, ptr %178, align 4, !tbaa !5
  %5794 = icmp ugt i32 %5793, 9
  br i1 %5794, label %5848, label %5795

5795:                                             ; preds = %5790
  br label %5796

5796:                                             ; preds = %5795
  br label %5797

5797:                                             ; preds = %5796
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #11
  %5798 = call ptr @__errno_location() #12
  %5799 = load i32, ptr %5798, align 4, !tbaa !5
  store i32 %5799, ptr %181, align 4, !tbaa !5
  %5800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5801 = call i32 @s2n_print_stacktrace(ptr noundef %5800)
  %5802 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5803 = trunc i8 %5802 to i1
  br i1 %5803, label %5804, label %5826

5804:                                             ; preds = %5797
  %5805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5806 = call i32 @fileno(ptr noundef %5805) #11
  %5807 = call i32 @isatty(i32 noundef %5806) #11
  %5808 = icmp ne i32 %5807, 0
  br i1 %5808, label %5809, label %5826

5809:                                             ; preds = %5804
  %5810 = load i32, ptr %181, align 4, !tbaa !5
  %5811 = call ptr @__errno_location() #12
  store i32 %5810, ptr %5811, align 4, !tbaa !5
  %5812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5813 = load i32, ptr @test_count, align 4, !tbaa !5
  %5814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5815 = load i32, ptr %5814, align 4, !tbaa !5
  %5816 = call ptr @s2n_strerror(i32 noundef %5815, ptr noundef @.str.4)
  %5817 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5818 = load i32, ptr %5817, align 4, !tbaa !5
  %5819 = call ptr @s2n_strerror_debug(i32 noundef %5818, ptr noundef @.str.4)
  %5820 = call ptr @__errno_location() #12
  %5821 = load i32, ptr %5820, align 4, !tbaa !5
  %5822 = call ptr @strerror(i32 noundef %5821) #11
  %5823 = call ptr @__errno_location() #12
  %5824 = load i32, ptr %5823, align 4, !tbaa !5
  %5825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5812, ptr noundef @.str.2, i32 noundef %5813, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 862, ptr noundef %5816, ptr noundef %5819, ptr noundef %5822, i32 noundef %5824) #11
  br label %5843

5826:                                             ; preds = %5804, %5797
  %5827 = load i32, ptr %181, align 4, !tbaa !5
  %5828 = call ptr @__errno_location() #12
  store i32 %5827, ptr %5828, align 4, !tbaa !5
  %5829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5830 = load i32, ptr @test_count, align 4, !tbaa !5
  %5831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5832 = load i32, ptr %5831, align 4, !tbaa !5
  %5833 = call ptr @s2n_strerror(i32 noundef %5832, ptr noundef @.str.4)
  %5834 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5835 = load i32, ptr %5834, align 4, !tbaa !5
  %5836 = call ptr @s2n_strerror_debug(i32 noundef %5835, ptr noundef @.str.4)
  %5837 = call ptr @__errno_location() #12
  %5838 = load i32, ptr %5837, align 4, !tbaa !5
  %5839 = call ptr @strerror(i32 noundef %5838) #11
  %5840 = call ptr @__errno_location() #12
  %5841 = load i32, ptr %5840, align 4, !tbaa !5
  %5842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5829, ptr noundef @.str.5, i32 noundef %5830, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 862, ptr noundef %5833, ptr noundef %5836, ptr noundef %5839, i32 noundef %5841) #11
  br label %5843

5843:                                             ; preds = %5826, %5809
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #11
  br label %5844

5844:                                             ; preds = %5843
  br label %5845

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

5846:                                             ; No predecessors!
  br label %5847

5847:                                             ; preds = %5846
  br label %5848

5848:                                             ; preds = %5847, %5790
  br label %5849

5849:                                             ; preds = %5848
  br label %5850

5850:                                             ; preds = %5849
  br label %5851

5851:                                             ; preds = %5850
  %5852 = load i32, ptr @test_count, align 4, !tbaa !5
  %5853 = add nsw i32 %5852, 1
  store i32 %5853, ptr @test_count, align 4, !tbaa !5
  %5854 = getelementptr inbounds [200 x i8], ptr %177, i64 0, i64 8
  %5855 = load i8, ptr %5854, align 8, !tbaa !15
  %5856 = zext i8 %5855 to i32
  %5857 = icmp eq i32 %5856, 48
  br i1 %5857, label %5911, label %5858

5858:                                             ; preds = %5851
  br label %5859

5859:                                             ; preds = %5858
  br label %5860

5860:                                             ; preds = %5859
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #11
  %5861 = call ptr @__errno_location() #12
  %5862 = load i32, ptr %5861, align 4, !tbaa !5
  store i32 %5862, ptr %182, align 4, !tbaa !5
  %5863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5864 = call i32 @s2n_print_stacktrace(ptr noundef %5863)
  %5865 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5866 = trunc i8 %5865 to i1
  br i1 %5866, label %5867, label %5889

5867:                                             ; preds = %5860
  %5868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5869 = call i32 @fileno(ptr noundef %5868) #11
  %5870 = call i32 @isatty(i32 noundef %5869) #11
  %5871 = icmp ne i32 %5870, 0
  br i1 %5871, label %5872, label %5889

5872:                                             ; preds = %5867
  %5873 = load i32, ptr %182, align 4, !tbaa !5
  %5874 = call ptr @__errno_location() #12
  store i32 %5873, ptr %5874, align 4, !tbaa !5
  %5875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5876 = load i32, ptr @test_count, align 4, !tbaa !5
  %5877 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5878 = load i32, ptr %5877, align 4, !tbaa !5
  %5879 = call ptr @s2n_strerror(i32 noundef %5878, ptr noundef @.str.4)
  %5880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5881 = load i32, ptr %5880, align 4, !tbaa !5
  %5882 = call ptr @s2n_strerror_debug(i32 noundef %5881, ptr noundef @.str.4)
  %5883 = call ptr @__errno_location() #12
  %5884 = load i32, ptr %5883, align 4, !tbaa !5
  %5885 = call ptr @strerror(i32 noundef %5884) #11
  %5886 = call ptr @__errno_location() #12
  %5887 = load i32, ptr %5886, align 4, !tbaa !5
  %5888 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5875, ptr noundef @.str.2, i32 noundef %5876, ptr noundef @.str.74, ptr noundef @.str.1, i32 noundef 863, ptr noundef %5879, ptr noundef %5882, ptr noundef %5885, i32 noundef %5887) #11
  br label %5906

5889:                                             ; preds = %5867, %5860
  %5890 = load i32, ptr %182, align 4, !tbaa !5
  %5891 = call ptr @__errno_location() #12
  store i32 %5890, ptr %5891, align 4, !tbaa !5
  %5892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5893 = load i32, ptr @test_count, align 4, !tbaa !5
  %5894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5895 = load i32, ptr %5894, align 4, !tbaa !5
  %5896 = call ptr @s2n_strerror(i32 noundef %5895, ptr noundef @.str.4)
  %5897 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5898 = load i32, ptr %5897, align 4, !tbaa !5
  %5899 = call ptr @s2n_strerror_debug(i32 noundef %5898, ptr noundef @.str.4)
  %5900 = call ptr @__errno_location() #12
  %5901 = load i32, ptr %5900, align 4, !tbaa !5
  %5902 = call ptr @strerror(i32 noundef %5901) #11
  %5903 = call ptr @__errno_location() #12
  %5904 = load i32, ptr %5903, align 4, !tbaa !5
  %5905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5892, ptr noundef @.str.5, i32 noundef %5893, ptr noundef @.str.74, ptr noundef @.str.1, i32 noundef 863, ptr noundef %5896, ptr noundef %5899, ptr noundef %5902, i32 noundef %5904) #11
  br label %5906

5906:                                             ; preds = %5889, %5872
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #11
  br label %5907

5907:                                             ; preds = %5906
  br label %5908

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

5909:                                             ; No predecessors!
  br label %5910

5910:                                             ; preds = %5909
  br label %5911

5911:                                             ; preds = %5910, %5851
  br label %5912

5912:                                             ; preds = %5911
  br label %5913

5913:                                             ; preds = %5912
  br label %5914

5914:                                             ; preds = %5913
  %5915 = load i32, ptr @test_count, align 4, !tbaa !5
  %5916 = add nsw i32 %5915, 1
  store i32 %5916, ptr @test_count, align 4, !tbaa !5
  %5917 = getelementptr inbounds [200 x i8], ptr %177, i64 0, i64 9
  %5918 = load i8, ptr %5917, align 1, !tbaa !15
  %5919 = zext i8 %5918 to i32
  %5920 = icmp eq i32 %5919, 48
  br i1 %5920, label %5974, label %5921

5921:                                             ; preds = %5914
  br label %5922

5922:                                             ; preds = %5921
  br label %5923

5923:                                             ; preds = %5922
  call void @llvm.lifetime.start.p0(i64 4, ptr %183) #11
  %5924 = call ptr @__errno_location() #12
  %5925 = load i32, ptr %5924, align 4, !tbaa !5
  store i32 %5925, ptr %183, align 4, !tbaa !5
  %5926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5927 = call i32 @s2n_print_stacktrace(ptr noundef %5926)
  %5928 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5929 = trunc i8 %5928 to i1
  br i1 %5929, label %5930, label %5952

5930:                                             ; preds = %5923
  %5931 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5932 = call i32 @fileno(ptr noundef %5931) #11
  %5933 = call i32 @isatty(i32 noundef %5932) #11
  %5934 = icmp ne i32 %5933, 0
  br i1 %5934, label %5935, label %5952

5935:                                             ; preds = %5930
  %5936 = load i32, ptr %183, align 4, !tbaa !5
  %5937 = call ptr @__errno_location() #12
  store i32 %5936, ptr %5937, align 4, !tbaa !5
  %5938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5939 = load i32, ptr @test_count, align 4, !tbaa !5
  %5940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5941 = load i32, ptr %5940, align 4, !tbaa !5
  %5942 = call ptr @s2n_strerror(i32 noundef %5941, ptr noundef @.str.4)
  %5943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5944 = load i32, ptr %5943, align 4, !tbaa !5
  %5945 = call ptr @s2n_strerror_debug(i32 noundef %5944, ptr noundef @.str.4)
  %5946 = call ptr @__errno_location() #12
  %5947 = load i32, ptr %5946, align 4, !tbaa !5
  %5948 = call ptr @strerror(i32 noundef %5947) #11
  %5949 = call ptr @__errno_location() #12
  %5950 = load i32, ptr %5949, align 4, !tbaa !5
  %5951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5938, ptr noundef @.str.2, i32 noundef %5939, ptr noundef @.str.75, ptr noundef @.str.1, i32 noundef 864, ptr noundef %5942, ptr noundef %5945, ptr noundef %5948, i32 noundef %5950) #11
  br label %5969

5952:                                             ; preds = %5930, %5923
  %5953 = load i32, ptr %183, align 4, !tbaa !5
  %5954 = call ptr @__errno_location() #12
  store i32 %5953, ptr %5954, align 4, !tbaa !5
  %5955 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5956 = load i32, ptr @test_count, align 4, !tbaa !5
  %5957 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5958 = load i32, ptr %5957, align 4, !tbaa !5
  %5959 = call ptr @s2n_strerror(i32 noundef %5958, ptr noundef @.str.4)
  %5960 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5961 = load i32, ptr %5960, align 4, !tbaa !5
  %5962 = call ptr @s2n_strerror_debug(i32 noundef %5961, ptr noundef @.str.4)
  %5963 = call ptr @__errno_location() #12
  %5964 = load i32, ptr %5963, align 4, !tbaa !5
  %5965 = call ptr @strerror(i32 noundef %5964) #11
  %5966 = call ptr @__errno_location() #12
  %5967 = load i32, ptr %5966, align 4, !tbaa !5
  %5968 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5955, ptr noundef @.str.5, i32 noundef %5956, ptr noundef @.str.75, ptr noundef @.str.1, i32 noundef 864, ptr noundef %5959, ptr noundef %5962, ptr noundef %5965, i32 noundef %5967) #11
  br label %5969

5969:                                             ; preds = %5952, %5935
  call void @llvm.lifetime.end.p0(i64 4, ptr %183) #11
  br label %5970

5970:                                             ; preds = %5969
  br label %5971

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

5972:                                             ; No predecessors!
  br label %5973

5973:                                             ; preds = %5972
  br label %5974

5974:                                             ; preds = %5973, %5914
  br label %5975

5975:                                             ; preds = %5974
  br label %5976

5976:                                             ; preds = %5975
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %177) #11
  call void @llvm.lifetime.end.p0(i64 53, ptr %176) #11
  call void @llvm.lifetime.end.p0(i64 49, ptr %175) #11
  call void @llvm.lifetime.start.p0(i64 50, ptr %184) #11
  call void @llvm.memset.p0.i64(ptr align 16 %184, i8 0, i64 50, i1 false)
  %5977 = getelementptr inbounds [50 x i8], ptr %184, i32 0, i32 36
  store i8 2, ptr %5977, align 4
  %5978 = getelementptr inbounds [50 x i8], ptr %184, i32 0, i32 39
  store i8 1, ptr %5978, align 1
  %5979 = getelementptr inbounds [50 x i8], ptr %184, i32 0, i32 42
  store i8 7, ptr %5979, align 2
  %5980 = getelementptr inbounds [50 x i8], ptr %184, i32 0, i32 44
  store i8 16, ptr %5980, align 4
  %5981 = getelementptr inbounds [50 x i8], ptr %184, i32 0, i32 46
  store i8 3, ptr %5981, align 2
  %5982 = getelementptr inbounds [50 x i8], ptr %184, i32 0, i32 48
  store i8 1, ptr %5982, align 16
  br label %5983

5983:                                             ; preds = %5976
  %5984 = load i32, ptr @test_count, align 4, !tbaa !5
  %5985 = add nsw i32 %5984, 1
  store i32 %5985, ptr @test_count, align 4, !tbaa !5
  br label %5986

5986:                                             ; preds = %5983
  br label %5987

5987:                                             ; preds = %5986
  call void @llvm.lifetime.start.p0(i64 54, ptr %185) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %185, ptr align 16 @__const.main.client_hello_bytes.77, i64 54, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %186) #11
  call void @llvm.memset.p0.i64(ptr align 16 %186, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #11
  store i32 0, ptr %187, align 4, !tbaa !5
  br label %5988

5988:                                             ; preds = %5987
  %5989 = load i32, ptr @test_count, align 4, !tbaa !5
  %5990 = add nsw i32 %5989, 1
  store i32 %5990, ptr @test_count, align 4, !tbaa !5
  %5991 = getelementptr inbounds [54 x i8], ptr %185, i64 0, i64 0
  %5992 = getelementptr inbounds [200 x i8], ptr %186, i64 0, i64 0
  %5993 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %5991, i64 noundef 54, i64 noundef 200, ptr noundef %5992, ptr noundef %187)
  %5994 = getelementptr inbounds %struct.s2n_result, ptr %188, i32 0, i32 0
  store i32 %5993, ptr %5994, align 4
  %5995 = getelementptr inbounds %struct.s2n_result, ptr %188, i32 0, i32 0
  %5996 = load i32, ptr %5995, align 4
  %5997 = call zeroext i1 @s2n_result_is_ok(i32 %5996)
  br i1 %5997, label %6051, label %5998

5998:                                             ; preds = %5988
  br label %5999

5999:                                             ; preds = %5998
  br label %6000

6000:                                             ; preds = %5999
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #11
  %6001 = call ptr @__errno_location() #12
  %6002 = load i32, ptr %6001, align 4, !tbaa !5
  store i32 %6002, ptr %189, align 4, !tbaa !5
  %6003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6004 = call i32 @s2n_print_stacktrace(ptr noundef %6003)
  %6005 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6006 = trunc i8 %6005 to i1
  br i1 %6006, label %6007, label %6029

6007:                                             ; preds = %6000
  %6008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6009 = call i32 @fileno(ptr noundef %6008) #11
  %6010 = call i32 @isatty(i32 noundef %6009) #11
  %6011 = icmp ne i32 %6010, 0
  br i1 %6011, label %6012, label %6029

6012:                                             ; preds = %6007
  %6013 = load i32, ptr %189, align 4, !tbaa !5
  %6014 = call ptr @__errno_location() #12
  store i32 %6013, ptr %6014, align 4, !tbaa !5
  %6015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6016 = load i32, ptr @test_count, align 4, !tbaa !5
  %6017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6018 = load i32, ptr %6017, align 4, !tbaa !5
  %6019 = call ptr @s2n_strerror(i32 noundef %6018, ptr noundef @.str.4)
  %6020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6021 = load i32, ptr %6020, align 4, !tbaa !5
  %6022 = call ptr @s2n_strerror_debug(i32 noundef %6021, ptr noundef @.str.4)
  %6023 = call ptr @__errno_location() #12
  %6024 = load i32, ptr %6023, align 4, !tbaa !5
  %6025 = call ptr @strerror(i32 noundef %6024) #11
  %6026 = call ptr @__errno_location() #12
  %6027 = load i32, ptr %6026, align 4, !tbaa !5
  %6028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6015, ptr noundef @.str.2, i32 noundef %6016, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 885, ptr noundef %6019, ptr noundef %6022, ptr noundef %6025, i32 noundef %6027) #11
  br label %6046

6029:                                             ; preds = %6007, %6000
  %6030 = load i32, ptr %189, align 4, !tbaa !5
  %6031 = call ptr @__errno_location() #12
  store i32 %6030, ptr %6031, align 4, !tbaa !5
  %6032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6033 = load i32, ptr @test_count, align 4, !tbaa !5
  %6034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6035 = load i32, ptr %6034, align 4, !tbaa !5
  %6036 = call ptr @s2n_strerror(i32 noundef %6035, ptr noundef @.str.4)
  %6037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6038 = load i32, ptr %6037, align 4, !tbaa !5
  %6039 = call ptr @s2n_strerror_debug(i32 noundef %6038, ptr noundef @.str.4)
  %6040 = call ptr @__errno_location() #12
  %6041 = load i32, ptr %6040, align 4, !tbaa !5
  %6042 = call ptr @strerror(i32 noundef %6041) #11
  %6043 = call ptr @__errno_location() #12
  %6044 = load i32, ptr %6043, align 4, !tbaa !5
  %6045 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6032, ptr noundef @.str.5, i32 noundef %6033, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 885, ptr noundef %6036, ptr noundef %6039, ptr noundef %6042, i32 noundef %6044) #11
  br label %6046

6046:                                             ; preds = %6029, %6012
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #11
  br label %6047

6047:                                             ; preds = %6046
  br label %6048

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

6049:                                             ; No predecessors!
  br label %6050

6050:                                             ; preds = %6049
  br label %6051

6051:                                             ; preds = %6050, %5988
  br label %6052

6052:                                             ; preds = %6051
  br label %6053

6053:                                             ; preds = %6052
  br label %6054

6054:                                             ; preds = %6053
  %6055 = load i32, ptr @test_count, align 4, !tbaa !5
  %6056 = add nsw i32 %6055, 1
  store i32 %6056, ptr @test_count, align 4, !tbaa !5
  %6057 = load i32, ptr %187, align 4, !tbaa !5
  %6058 = icmp ugt i32 %6057, 9
  br i1 %6058, label %6112, label %6059

6059:                                             ; preds = %6054
  br label %6060

6060:                                             ; preds = %6059
  br label %6061

6061:                                             ; preds = %6060
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #11
  %6062 = call ptr @__errno_location() #12
  %6063 = load i32, ptr %6062, align 4, !tbaa !5
  store i32 %6063, ptr %190, align 4, !tbaa !5
  %6064 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6065 = call i32 @s2n_print_stacktrace(ptr noundef %6064)
  %6066 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6067 = trunc i8 %6066 to i1
  br i1 %6067, label %6068, label %6090

6068:                                             ; preds = %6061
  %6069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6070 = call i32 @fileno(ptr noundef %6069) #11
  %6071 = call i32 @isatty(i32 noundef %6070) #11
  %6072 = icmp ne i32 %6071, 0
  br i1 %6072, label %6073, label %6090

6073:                                             ; preds = %6068
  %6074 = load i32, ptr %190, align 4, !tbaa !5
  %6075 = call ptr @__errno_location() #12
  store i32 %6074, ptr %6075, align 4, !tbaa !5
  %6076 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6077 = load i32, ptr @test_count, align 4, !tbaa !5
  %6078 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6079 = load i32, ptr %6078, align 4, !tbaa !5
  %6080 = call ptr @s2n_strerror(i32 noundef %6079, ptr noundef @.str.4)
  %6081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6082 = load i32, ptr %6081, align 4, !tbaa !5
  %6083 = call ptr @s2n_strerror_debug(i32 noundef %6082, ptr noundef @.str.4)
  %6084 = call ptr @__errno_location() #12
  %6085 = load i32, ptr %6084, align 4, !tbaa !5
  %6086 = call ptr @strerror(i32 noundef %6085) #11
  %6087 = call ptr @__errno_location() #12
  %6088 = load i32, ptr %6087, align 4, !tbaa !5
  %6089 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6076, ptr noundef @.str.2, i32 noundef %6077, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 887, ptr noundef %6080, ptr noundef %6083, ptr noundef %6086, i32 noundef %6088) #11
  br label %6107

6090:                                             ; preds = %6068, %6061
  %6091 = load i32, ptr %190, align 4, !tbaa !5
  %6092 = call ptr @__errno_location() #12
  store i32 %6091, ptr %6092, align 4, !tbaa !5
  %6093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6094 = load i32, ptr @test_count, align 4, !tbaa !5
  %6095 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6096 = load i32, ptr %6095, align 4, !tbaa !5
  %6097 = call ptr @s2n_strerror(i32 noundef %6096, ptr noundef @.str.4)
  %6098 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6099 = load i32, ptr %6098, align 4, !tbaa !5
  %6100 = call ptr @s2n_strerror_debug(i32 noundef %6099, ptr noundef @.str.4)
  %6101 = call ptr @__errno_location() #12
  %6102 = load i32, ptr %6101, align 4, !tbaa !5
  %6103 = call ptr @strerror(i32 noundef %6102) #11
  %6104 = call ptr @__errno_location() #12
  %6105 = load i32, ptr %6104, align 4, !tbaa !5
  %6106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6093, ptr noundef @.str.5, i32 noundef %6094, ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 887, ptr noundef %6097, ptr noundef %6100, ptr noundef %6103, i32 noundef %6105) #11
  br label %6107

6107:                                             ; preds = %6090, %6073
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #11
  br label %6108

6108:                                             ; preds = %6107
  br label %6109

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

6110:                                             ; No predecessors!
  br label %6111

6111:                                             ; preds = %6110
  br label %6112

6112:                                             ; preds = %6111, %6054
  br label %6113

6113:                                             ; preds = %6112
  br label %6114

6114:                                             ; preds = %6113
  br label %6115

6115:                                             ; preds = %6114
  %6116 = load i32, ptr @test_count, align 4, !tbaa !5
  %6117 = add nsw i32 %6116, 1
  store i32 %6117, ptr @test_count, align 4, !tbaa !5
  %6118 = getelementptr inbounds [200 x i8], ptr %186, i64 0, i64 8
  %6119 = load i8, ptr %6118, align 8, !tbaa !15
  %6120 = zext i8 %6119 to i32
  %6121 = icmp eq i32 %6120, 48
  br i1 %6121, label %6175, label %6122

6122:                                             ; preds = %6115
  br label %6123

6123:                                             ; preds = %6122
  br label %6124

6124:                                             ; preds = %6123
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #11
  %6125 = call ptr @__errno_location() #12
  %6126 = load i32, ptr %6125, align 4, !tbaa !5
  store i32 %6126, ptr %191, align 4, !tbaa !5
  %6127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6128 = call i32 @s2n_print_stacktrace(ptr noundef %6127)
  %6129 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6130 = trunc i8 %6129 to i1
  br i1 %6130, label %6131, label %6153

6131:                                             ; preds = %6124
  %6132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6133 = call i32 @fileno(ptr noundef %6132) #11
  %6134 = call i32 @isatty(i32 noundef %6133) #11
  %6135 = icmp ne i32 %6134, 0
  br i1 %6135, label %6136, label %6153

6136:                                             ; preds = %6131
  %6137 = load i32, ptr %191, align 4, !tbaa !5
  %6138 = call ptr @__errno_location() #12
  store i32 %6137, ptr %6138, align 4, !tbaa !5
  %6139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6140 = load i32, ptr @test_count, align 4, !tbaa !5
  %6141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6142 = load i32, ptr %6141, align 4, !tbaa !5
  %6143 = call ptr @s2n_strerror(i32 noundef %6142, ptr noundef @.str.4)
  %6144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6145 = load i32, ptr %6144, align 4, !tbaa !5
  %6146 = call ptr @s2n_strerror_debug(i32 noundef %6145, ptr noundef @.str.4)
  %6147 = call ptr @__errno_location() #12
  %6148 = load i32, ptr %6147, align 4, !tbaa !5
  %6149 = call ptr @strerror(i32 noundef %6148) #11
  %6150 = call ptr @__errno_location() #12
  %6151 = load i32, ptr %6150, align 4, !tbaa !5
  %6152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6139, ptr noundef @.str.2, i32 noundef %6140, ptr noundef @.str.74, ptr noundef @.str.1, i32 noundef 888, ptr noundef %6143, ptr noundef %6146, ptr noundef %6149, i32 noundef %6151) #11
  br label %6170

6153:                                             ; preds = %6131, %6124
  %6154 = load i32, ptr %191, align 4, !tbaa !5
  %6155 = call ptr @__errno_location() #12
  store i32 %6154, ptr %6155, align 4, !tbaa !5
  %6156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6157 = load i32, ptr @test_count, align 4, !tbaa !5
  %6158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6159 = load i32, ptr %6158, align 4, !tbaa !5
  %6160 = call ptr @s2n_strerror(i32 noundef %6159, ptr noundef @.str.4)
  %6161 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6162 = load i32, ptr %6161, align 4, !tbaa !5
  %6163 = call ptr @s2n_strerror_debug(i32 noundef %6162, ptr noundef @.str.4)
  %6164 = call ptr @__errno_location() #12
  %6165 = load i32, ptr %6164, align 4, !tbaa !5
  %6166 = call ptr @strerror(i32 noundef %6165) #11
  %6167 = call ptr @__errno_location() #12
  %6168 = load i32, ptr %6167, align 4, !tbaa !5
  %6169 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6156, ptr noundef @.str.5, i32 noundef %6157, ptr noundef @.str.74, ptr noundef @.str.1, i32 noundef 888, ptr noundef %6160, ptr noundef %6163, ptr noundef %6166, i32 noundef %6168) #11
  br label %6170

6170:                                             ; preds = %6153, %6136
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #11
  br label %6171

6171:                                             ; preds = %6170
  br label %6172

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

6173:                                             ; No predecessors!
  br label %6174

6174:                                             ; preds = %6173
  br label %6175

6175:                                             ; preds = %6174, %6115
  br label %6176

6176:                                             ; preds = %6175
  br label %6177

6177:                                             ; preds = %6176
  br label %6178

6178:                                             ; preds = %6177
  %6179 = load i32, ptr @test_count, align 4, !tbaa !5
  %6180 = add nsw i32 %6179, 1
  store i32 %6180, ptr @test_count, align 4, !tbaa !5
  %6181 = getelementptr inbounds [200 x i8], ptr %186, i64 0, i64 9
  %6182 = load i8, ptr %6181, align 1, !tbaa !15
  %6183 = zext i8 %6182 to i32
  %6184 = icmp eq i32 %6183, 48
  br i1 %6184, label %6238, label %6185

6185:                                             ; preds = %6178
  br label %6186

6186:                                             ; preds = %6185
  br label %6187

6187:                                             ; preds = %6186
  call void @llvm.lifetime.start.p0(i64 4, ptr %192) #11
  %6188 = call ptr @__errno_location() #12
  %6189 = load i32, ptr %6188, align 4, !tbaa !5
  store i32 %6189, ptr %192, align 4, !tbaa !5
  %6190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6191 = call i32 @s2n_print_stacktrace(ptr noundef %6190)
  %6192 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6193 = trunc i8 %6192 to i1
  br i1 %6193, label %6194, label %6216

6194:                                             ; preds = %6187
  %6195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6196 = call i32 @fileno(ptr noundef %6195) #11
  %6197 = call i32 @isatty(i32 noundef %6196) #11
  %6198 = icmp ne i32 %6197, 0
  br i1 %6198, label %6199, label %6216

6199:                                             ; preds = %6194
  %6200 = load i32, ptr %192, align 4, !tbaa !5
  %6201 = call ptr @__errno_location() #12
  store i32 %6200, ptr %6201, align 4, !tbaa !5
  %6202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6203 = load i32, ptr @test_count, align 4, !tbaa !5
  %6204 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6205 = load i32, ptr %6204, align 4, !tbaa !5
  %6206 = call ptr @s2n_strerror(i32 noundef %6205, ptr noundef @.str.4)
  %6207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6208 = load i32, ptr %6207, align 4, !tbaa !5
  %6209 = call ptr @s2n_strerror_debug(i32 noundef %6208, ptr noundef @.str.4)
  %6210 = call ptr @__errno_location() #12
  %6211 = load i32, ptr %6210, align 4, !tbaa !5
  %6212 = call ptr @strerror(i32 noundef %6211) #11
  %6213 = call ptr @__errno_location() #12
  %6214 = load i32, ptr %6213, align 4, !tbaa !5
  %6215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6202, ptr noundef @.str.2, i32 noundef %6203, ptr noundef @.str.75, ptr noundef @.str.1, i32 noundef 889, ptr noundef %6206, ptr noundef %6209, ptr noundef %6212, i32 noundef %6214) #11
  br label %6233

6216:                                             ; preds = %6194, %6187
  %6217 = load i32, ptr %192, align 4, !tbaa !5
  %6218 = call ptr @__errno_location() #12
  store i32 %6217, ptr %6218, align 4, !tbaa !5
  %6219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6220 = load i32, ptr @test_count, align 4, !tbaa !5
  %6221 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6222 = load i32, ptr %6221, align 4, !tbaa !5
  %6223 = call ptr @s2n_strerror(i32 noundef %6222, ptr noundef @.str.4)
  %6224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6225 = load i32, ptr %6224, align 4, !tbaa !5
  %6226 = call ptr @s2n_strerror_debug(i32 noundef %6225, ptr noundef @.str.4)
  %6227 = call ptr @__errno_location() #12
  %6228 = load i32, ptr %6227, align 4, !tbaa !5
  %6229 = call ptr @strerror(i32 noundef %6228) #11
  %6230 = call ptr @__errno_location() #12
  %6231 = load i32, ptr %6230, align 4, !tbaa !5
  %6232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6219, ptr noundef @.str.5, i32 noundef %6220, ptr noundef @.str.75, ptr noundef @.str.1, i32 noundef 889, ptr noundef %6223, ptr noundef %6226, ptr noundef %6229, i32 noundef %6231) #11
  br label %6233

6233:                                             ; preds = %6216, %6199
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #11
  br label %6234

6234:                                             ; preds = %6233
  br label %6235

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

6236:                                             ; No predecessors!
  br label %6237

6237:                                             ; preds = %6236
  br label %6238

6238:                                             ; preds = %6237, %6178
  br label %6239

6239:                                             ; preds = %6238
  br label %6240

6240:                                             ; preds = %6239
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %186) #11
  call void @llvm.lifetime.end.p0(i64 54, ptr %185) #11
  call void @llvm.lifetime.end.p0(i64 50, ptr %184) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr %80) #11
  call void @llvm.lifetime.start.p0(i64 71, ptr %193) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %193, ptr align 16 @__const.main._client_hello_bytes_message.78, i64 71, i1 false)
  br label %6241

6241:                                             ; preds = %6240
  %6242 = load i32, ptr @test_count, align 4, !tbaa !5
  %6243 = add nsw i32 %6242, 1
  store i32 %6243, ptr @test_count, align 4, !tbaa !5
  br label %6244

6244:                                             ; preds = %6241
  br label %6245

6245:                                             ; preds = %6244
  call void @llvm.lifetime.start.p0(i64 75, ptr %194) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %194, ptr align 16 @__const.main.client_hello_bytes.79, i64 75, i1 false)
  call void @llvm.lifetime.start.p0(i64 75, ptr %195) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %195, ptr align 16 @__const.main.expected, i64 75, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %196) #11
  call void @llvm.memset.p0.i64(ptr align 16 %196, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %197) #11
  store i32 0, ptr %197, align 4, !tbaa !5
  br label %6246

6246:                                             ; preds = %6245
  %6247 = load i32, ptr @test_count, align 4, !tbaa !5
  %6248 = add nsw i32 %6247, 1
  store i32 %6248, ptr @test_count, align 4, !tbaa !5
  %6249 = getelementptr inbounds [75 x i8], ptr %194, i64 0, i64 0
  %6250 = getelementptr inbounds [200 x i8], ptr %196, i64 0, i64 0
  %6251 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %6249, i64 noundef 75, i64 noundef 200, ptr noundef %6250, ptr noundef %197)
  %6252 = getelementptr inbounds %struct.s2n_result, ptr %198, i32 0, i32 0
  store i32 %6251, ptr %6252, align 4
  %6253 = getelementptr inbounds %struct.s2n_result, ptr %198, i32 0, i32 0
  %6254 = load i32, ptr %6253, align 4
  %6255 = call zeroext i1 @s2n_result_is_ok(i32 %6254)
  br i1 %6255, label %6309, label %6256

6256:                                             ; preds = %6246
  br label %6257

6257:                                             ; preds = %6256
  br label %6258

6258:                                             ; preds = %6257
  call void @llvm.lifetime.start.p0(i64 4, ptr %199) #11
  %6259 = call ptr @__errno_location() #12
  %6260 = load i32, ptr %6259, align 4, !tbaa !5
  store i32 %6260, ptr %199, align 4, !tbaa !5
  %6261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6262 = call i32 @s2n_print_stacktrace(ptr noundef %6261)
  %6263 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6264 = trunc i8 %6263 to i1
  br i1 %6264, label %6265, label %6287

6265:                                             ; preds = %6258
  %6266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6267 = call i32 @fileno(ptr noundef %6266) #11
  %6268 = call i32 @isatty(i32 noundef %6267) #11
  %6269 = icmp ne i32 %6268, 0
  br i1 %6269, label %6270, label %6287

6270:                                             ; preds = %6265
  %6271 = load i32, ptr %199, align 4, !tbaa !5
  %6272 = call ptr @__errno_location() #12
  store i32 %6271, ptr %6272, align 4, !tbaa !5
  %6273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6274 = load i32, ptr @test_count, align 4, !tbaa !5
  %6275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6276 = load i32, ptr %6275, align 4, !tbaa !5
  %6277 = call ptr @s2n_strerror(i32 noundef %6276, ptr noundef @.str.4)
  %6278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6279 = load i32, ptr %6278, align 4, !tbaa !5
  %6280 = call ptr @s2n_strerror_debug(i32 noundef %6279, ptr noundef @.str.4)
  %6281 = call ptr @__errno_location() #12
  %6282 = load i32, ptr %6281, align 4, !tbaa !5
  %6283 = call ptr @strerror(i32 noundef %6282) #11
  %6284 = call ptr @__errno_location() #12
  %6285 = load i32, ptr %6284, align 4, !tbaa !5
  %6286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6273, ptr noundef @.str.2, i32 noundef %6274, ptr noundef @.str.80, ptr noundef @.str.1, i32 noundef 951, ptr noundef %6277, ptr noundef %6280, ptr noundef %6283, i32 noundef %6285) #11
  br label %6304

6287:                                             ; preds = %6265, %6258
  %6288 = load i32, ptr %199, align 4, !tbaa !5
  %6289 = call ptr @__errno_location() #12
  store i32 %6288, ptr %6289, align 4, !tbaa !5
  %6290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6291 = load i32, ptr @test_count, align 4, !tbaa !5
  %6292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6293 = load i32, ptr %6292, align 4, !tbaa !5
  %6294 = call ptr @s2n_strerror(i32 noundef %6293, ptr noundef @.str.4)
  %6295 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6296 = load i32, ptr %6295, align 4, !tbaa !5
  %6297 = call ptr @s2n_strerror_debug(i32 noundef %6296, ptr noundef @.str.4)
  %6298 = call ptr @__errno_location() #12
  %6299 = load i32, ptr %6298, align 4, !tbaa !5
  %6300 = call ptr @strerror(i32 noundef %6299) #11
  %6301 = call ptr @__errno_location() #12
  %6302 = load i32, ptr %6301, align 4, !tbaa !5
  %6303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6290, ptr noundef @.str.5, i32 noundef %6291, ptr noundef @.str.80, ptr noundef @.str.1, i32 noundef 951, ptr noundef %6294, ptr noundef %6297, ptr noundef %6300, i32 noundef %6302) #11
  br label %6304

6304:                                             ; preds = %6287, %6270
  call void @llvm.lifetime.end.p0(i64 4, ptr %199) #11
  br label %6305

6305:                                             ; preds = %6304
  br label %6306

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

6307:                                             ; No predecessors!
  br label %6308

6308:                                             ; preds = %6307
  br label %6309

6309:                                             ; preds = %6308, %6246
  br label %6310

6310:                                             ; preds = %6309
  br label %6311

6311:                                             ; preds = %6310
  br label %6312

6312:                                             ; preds = %6311
  %6313 = load i32, ptr @test_count, align 4, !tbaa !5
  %6314 = add nsw i32 %6313, 1
  store i32 %6314, ptr @test_count, align 4, !tbaa !5
  %6315 = load i32, ptr %197, align 4, !tbaa !5
  %6316 = icmp ugt i32 %6315, 11
  br i1 %6316, label %6370, label %6317

6317:                                             ; preds = %6312
  br label %6318

6318:                                             ; preds = %6317
  br label %6319

6319:                                             ; preds = %6318
  call void @llvm.lifetime.start.p0(i64 4, ptr %200) #11
  %6320 = call ptr @__errno_location() #12
  %6321 = load i32, ptr %6320, align 4, !tbaa !5
  store i32 %6321, ptr %200, align 4, !tbaa !5
  %6322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6323 = call i32 @s2n_print_stacktrace(ptr noundef %6322)
  %6324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6325 = trunc i8 %6324 to i1
  br i1 %6325, label %6326, label %6348

6326:                                             ; preds = %6319
  %6327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6328 = call i32 @fileno(ptr noundef %6327) #11
  %6329 = call i32 @isatty(i32 noundef %6328) #11
  %6330 = icmp ne i32 %6329, 0
  br i1 %6330, label %6331, label %6348

6331:                                             ; preds = %6326
  %6332 = load i32, ptr %200, align 4, !tbaa !5
  %6333 = call ptr @__errno_location() #12
  store i32 %6332, ptr %6333, align 4, !tbaa !5
  %6334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6335 = load i32, ptr @test_count, align 4, !tbaa !5
  %6336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6337 = load i32, ptr %6336, align 4, !tbaa !5
  %6338 = call ptr @s2n_strerror(i32 noundef %6337, ptr noundef @.str.4)
  %6339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6340 = load i32, ptr %6339, align 4, !tbaa !5
  %6341 = call ptr @s2n_strerror_debug(i32 noundef %6340, ptr noundef @.str.4)
  %6342 = call ptr @__errno_location() #12
  %6343 = load i32, ptr %6342, align 4, !tbaa !5
  %6344 = call ptr @strerror(i32 noundef %6343) #11
  %6345 = call ptr @__errno_location() #12
  %6346 = load i32, ptr %6345, align 4, !tbaa !5
  %6347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6334, ptr noundef @.str.2, i32 noundef %6335, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 953, ptr noundef %6338, ptr noundef %6341, ptr noundef %6344, i32 noundef %6346) #11
  br label %6365

6348:                                             ; preds = %6326, %6319
  %6349 = load i32, ptr %200, align 4, !tbaa !5
  %6350 = call ptr @__errno_location() #12
  store i32 %6349, ptr %6350, align 4, !tbaa !5
  %6351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6352 = load i32, ptr @test_count, align 4, !tbaa !5
  %6353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6354 = load i32, ptr %6353, align 4, !tbaa !5
  %6355 = call ptr @s2n_strerror(i32 noundef %6354, ptr noundef @.str.4)
  %6356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6357 = load i32, ptr %6356, align 4, !tbaa !5
  %6358 = call ptr @s2n_strerror_debug(i32 noundef %6357, ptr noundef @.str.4)
  %6359 = call ptr @__errno_location() #12
  %6360 = load i32, ptr %6359, align 4, !tbaa !5
  %6361 = call ptr @strerror(i32 noundef %6360) #11
  %6362 = call ptr @__errno_location() #12
  %6363 = load i32, ptr %6362, align 4, !tbaa !5
  %6364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6351, ptr noundef @.str.5, i32 noundef %6352, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 953, ptr noundef %6355, ptr noundef %6358, ptr noundef %6361, i32 noundef %6363) #11
  br label %6365

6365:                                             ; preds = %6348, %6331
  call void @llvm.lifetime.end.p0(i64 4, ptr %200) #11
  br label %6366

6366:                                             ; preds = %6365
  br label %6367

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

6368:                                             ; No predecessors!
  br label %6369

6369:                                             ; preds = %6368
  br label %6370

6370:                                             ; preds = %6369, %6312
  br label %6371

6371:                                             ; preds = %6370
  br label %6372

6372:                                             ; preds = %6371
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #11
  %6373 = getelementptr inbounds [200 x i8], ptr %196, i64 0, i64 11
  store ptr %6373, ptr %201, align 8, !tbaa !9
  br label %6374

6374:                                             ; preds = %6372
  %6375 = load i32, ptr @test_count, align 4, !tbaa !5
  %6376 = add nsw i32 %6375, 1
  store i32 %6376, ptr @test_count, align 4, !tbaa !5
  %6377 = load i32, ptr %197, align 4, !tbaa !5
  %6378 = zext i32 %6377 to i64
  %6379 = icmp uge i64 %6378, 85
  br i1 %6379, label %6433, label %6380

6380:                                             ; preds = %6374
  br label %6381

6381:                                             ; preds = %6380
  br label %6382

6382:                                             ; preds = %6381
  call void @llvm.lifetime.start.p0(i64 4, ptr %202) #11
  %6383 = call ptr @__errno_location() #12
  %6384 = load i32, ptr %6383, align 4, !tbaa !5
  store i32 %6384, ptr %202, align 4, !tbaa !5
  %6385 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6386 = call i32 @s2n_print_stacktrace(ptr noundef %6385)
  %6387 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6388 = trunc i8 %6387 to i1
  br i1 %6388, label %6389, label %6411

6389:                                             ; preds = %6382
  %6390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6391 = call i32 @fileno(ptr noundef %6390) #11
  %6392 = call i32 @isatty(i32 noundef %6391) #11
  %6393 = icmp ne i32 %6392, 0
  br i1 %6393, label %6394, label %6411

6394:                                             ; preds = %6389
  %6395 = load i32, ptr %202, align 4, !tbaa !5
  %6396 = call ptr @__errno_location() #12
  store i32 %6395, ptr %6396, align 4, !tbaa !5
  %6397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6398 = load i32, ptr @test_count, align 4, !tbaa !5
  %6399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6400 = load i32, ptr %6399, align 4, !tbaa !5
  %6401 = call ptr @s2n_strerror(i32 noundef %6400, ptr noundef @.str.4)
  %6402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6403 = load i32, ptr %6402, align 4, !tbaa !5
  %6404 = call ptr @s2n_strerror_debug(i32 noundef %6403, ptr noundef @.str.4)
  %6405 = call ptr @__errno_location() #12
  %6406 = load i32, ptr %6405, align 4, !tbaa !5
  %6407 = call ptr @strerror(i32 noundef %6406) #11
  %6408 = call ptr @__errno_location() #12
  %6409 = load i32, ptr %6408, align 4, !tbaa !5
  %6410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6397, ptr noundef @.str.2, i32 noundef %6398, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 955, ptr noundef %6401, ptr noundef %6404, ptr noundef %6407, i32 noundef %6409) #11
  br label %6428

6411:                                             ; preds = %6389, %6382
  %6412 = load i32, ptr %202, align 4, !tbaa !5
  %6413 = call ptr @__errno_location() #12
  store i32 %6412, ptr %6413, align 4, !tbaa !5
  %6414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6415 = load i32, ptr @test_count, align 4, !tbaa !5
  %6416 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6417 = load i32, ptr %6416, align 4, !tbaa !5
  %6418 = call ptr @s2n_strerror(i32 noundef %6417, ptr noundef @.str.4)
  %6419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6420 = load i32, ptr %6419, align 4, !tbaa !5
  %6421 = call ptr @s2n_strerror_debug(i32 noundef %6420, ptr noundef @.str.4)
  %6422 = call ptr @__errno_location() #12
  %6423 = load i32, ptr %6422, align 4, !tbaa !5
  %6424 = call ptr @strerror(i32 noundef %6423) #11
  %6425 = call ptr @__errno_location() #12
  %6426 = load i32, ptr %6425, align 4, !tbaa !5
  %6427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6414, ptr noundef @.str.5, i32 noundef %6415, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 955, ptr noundef %6418, ptr noundef %6421, ptr noundef %6424, i32 noundef %6426) #11
  br label %6428

6428:                                             ; preds = %6411, %6394
  call void @llvm.lifetime.end.p0(i64 4, ptr %202) #11
  br label %6429

6429:                                             ; preds = %6428
  br label %6430

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

6431:                                             ; No predecessors!
  br label %6432

6432:                                             ; preds = %6431
  br label %6433

6433:                                             ; preds = %6432, %6374
  br label %6434

6434:                                             ; preds = %6433
  br label %6435

6435:                                             ; preds = %6434
  br label %6436

6436:                                             ; preds = %6435
  br label %6437

6437:                                             ; preds = %6436
  %6438 = load i32, ptr @test_count, align 4, !tbaa !5
  %6439 = add nsw i32 %6438, 1
  store i32 %6439, ptr @test_count, align 4, !tbaa !5
  %6440 = load ptr, ptr %201, align 8, !tbaa !9
  %6441 = getelementptr inbounds [75 x i8], ptr %195, i64 0, i64 0
  %6442 = call i32 @memcmp(ptr noundef %6440, ptr noundef %6441, i64 noundef 74) #14
  %6443 = icmp eq i32 %6442, 0
  br i1 %6443, label %6497, label %6444

6444:                                             ; preds = %6437
  br label %6445

6445:                                             ; preds = %6444
  br label %6446

6446:                                             ; preds = %6445
  call void @llvm.lifetime.start.p0(i64 4, ptr %203) #11
  %6447 = call ptr @__errno_location() #12
  %6448 = load i32, ptr %6447, align 4, !tbaa !5
  store i32 %6448, ptr %203, align 4, !tbaa !5
  %6449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6450 = call i32 @s2n_print_stacktrace(ptr noundef %6449)
  %6451 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6452 = trunc i8 %6451 to i1
  br i1 %6452, label %6453, label %6475

6453:                                             ; preds = %6446
  %6454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6455 = call i32 @fileno(ptr noundef %6454) #11
  %6456 = call i32 @isatty(i32 noundef %6455) #11
  %6457 = icmp ne i32 %6456, 0
  br i1 %6457, label %6458, label %6475

6458:                                             ; preds = %6453
  %6459 = load i32, ptr %203, align 4, !tbaa !5
  %6460 = call ptr @__errno_location() #12
  store i32 %6459, ptr %6460, align 4, !tbaa !5
  %6461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6462 = load i32, ptr @test_count, align 4, !tbaa !5
  %6463 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6464 = load i32, ptr %6463, align 4, !tbaa !5
  %6465 = call ptr @s2n_strerror(i32 noundef %6464, ptr noundef @.str.4)
  %6466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6467 = load i32, ptr %6466, align 4, !tbaa !5
  %6468 = call ptr @s2n_strerror_debug(i32 noundef %6467, ptr noundef @.str.4)
  %6469 = call ptr @__errno_location() #12
  %6470 = load i32, ptr %6469, align 4, !tbaa !5
  %6471 = call ptr @strerror(i32 noundef %6470) #11
  %6472 = call ptr @__errno_location() #12
  %6473 = load i32, ptr %6472, align 4, !tbaa !5
  %6474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6461, ptr noundef @.str.2, i32 noundef %6462, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 956, ptr noundef %6465, ptr noundef %6468, ptr noundef %6471, i32 noundef %6473) #11
  br label %6492

6475:                                             ; preds = %6453, %6446
  %6476 = load i32, ptr %203, align 4, !tbaa !5
  %6477 = call ptr @__errno_location() #12
  store i32 %6476, ptr %6477, align 4, !tbaa !5
  %6478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6479 = load i32, ptr @test_count, align 4, !tbaa !5
  %6480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6481 = load i32, ptr %6480, align 4, !tbaa !5
  %6482 = call ptr @s2n_strerror(i32 noundef %6481, ptr noundef @.str.4)
  %6483 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6484 = load i32, ptr %6483, align 4, !tbaa !5
  %6485 = call ptr @s2n_strerror_debug(i32 noundef %6484, ptr noundef @.str.4)
  %6486 = call ptr @__errno_location() #12
  %6487 = load i32, ptr %6486, align 4, !tbaa !5
  %6488 = call ptr @strerror(i32 noundef %6487) #11
  %6489 = call ptr @__errno_location() #12
  %6490 = load i32, ptr %6489, align 4, !tbaa !5
  %6491 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6478, ptr noundef @.str.5, i32 noundef %6479, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 956, ptr noundef %6482, ptr noundef %6485, ptr noundef %6488, i32 noundef %6490) #11
  br label %6492

6492:                                             ; preds = %6475, %6458
  call void @llvm.lifetime.end.p0(i64 4, ptr %203) #11
  br label %6493

6493:                                             ; preds = %6492
  br label %6494

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

6495:                                             ; No predecessors!
  br label %6496

6496:                                             ; preds = %6495
  br label %6497

6497:                                             ; preds = %6496, %6437
  br label %6498

6498:                                             ; preds = %6497
  br label %6499

6499:                                             ; preds = %6498
  br label %6500

6500:                                             ; preds = %6499
  br label %6501

6501:                                             ; preds = %6500
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %196) #11
  call void @llvm.lifetime.end.p0(i64 75, ptr %195) #11
  call void @llvm.lifetime.start.p0(i64 13, ptr %204) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %204, ptr align 1 @__const.main.expected.84, i64 13, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %205) #11
  call void @llvm.memset.p0.i64(ptr align 16 %205, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %206) #11
  store i32 0, ptr %206, align 4, !tbaa !5
  br label %6502

6502:                                             ; preds = %6501
  %6503 = load i32, ptr @test_count, align 4, !tbaa !5
  %6504 = add nsw i32 %6503, 1
  store i32 %6504, ptr @test_count, align 4, !tbaa !5
  %6505 = getelementptr inbounds [75 x i8], ptr %194, i64 0, i64 0
  %6506 = getelementptr inbounds [200 x i8], ptr %205, i64 0, i64 0
  %6507 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %6505, i64 noundef 75, i64 noundef 200, ptr noundef %6506, ptr noundef %206)
  %6508 = getelementptr inbounds %struct.s2n_result, ptr %207, i32 0, i32 0
  store i32 %6507, ptr %6508, align 4
  %6509 = getelementptr inbounds %struct.s2n_result, ptr %207, i32 0, i32 0
  %6510 = load i32, ptr %6509, align 4
  %6511 = call zeroext i1 @s2n_result_is_ok(i32 %6510)
  br i1 %6511, label %6565, label %6512

6512:                                             ; preds = %6502
  br label %6513

6513:                                             ; preds = %6512
  br label %6514

6514:                                             ; preds = %6513
  call void @llvm.lifetime.start.p0(i64 4, ptr %208) #11
  %6515 = call ptr @__errno_location() #12
  %6516 = load i32, ptr %6515, align 4, !tbaa !5
  store i32 %6516, ptr %208, align 4, !tbaa !5
  %6517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6518 = call i32 @s2n_print_stacktrace(ptr noundef %6517)
  %6519 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6520 = trunc i8 %6519 to i1
  br i1 %6520, label %6521, label %6543

6521:                                             ; preds = %6514
  %6522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6523 = call i32 @fileno(ptr noundef %6522) #11
  %6524 = call i32 @isatty(i32 noundef %6523) #11
  %6525 = icmp ne i32 %6524, 0
  br i1 %6525, label %6526, label %6543

6526:                                             ; preds = %6521
  %6527 = load i32, ptr %208, align 4, !tbaa !5
  %6528 = call ptr @__errno_location() #12
  store i32 %6527, ptr %6528, align 4, !tbaa !5
  %6529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6530 = load i32, ptr @test_count, align 4, !tbaa !5
  %6531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6532 = load i32, ptr %6531, align 4, !tbaa !5
  %6533 = call ptr @s2n_strerror(i32 noundef %6532, ptr noundef @.str.4)
  %6534 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6535 = load i32, ptr %6534, align 4, !tbaa !5
  %6536 = call ptr @s2n_strerror_debug(i32 noundef %6535, ptr noundef @.str.4)
  %6537 = call ptr @__errno_location() #12
  %6538 = load i32, ptr %6537, align 4, !tbaa !5
  %6539 = call ptr @strerror(i32 noundef %6538) #11
  %6540 = call ptr @__errno_location() #12
  %6541 = load i32, ptr %6540, align 4, !tbaa !5
  %6542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6529, ptr noundef @.str.2, i32 noundef %6530, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 979, ptr noundef %6533, ptr noundef %6536, ptr noundef %6539, i32 noundef %6541) #11
  br label %6560

6543:                                             ; preds = %6521, %6514
  %6544 = load i32, ptr %208, align 4, !tbaa !5
  %6545 = call ptr @__errno_location() #12
  store i32 %6544, ptr %6545, align 4, !tbaa !5
  %6546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6547 = load i32, ptr @test_count, align 4, !tbaa !5
  %6548 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6549 = load i32, ptr %6548, align 4, !tbaa !5
  %6550 = call ptr @s2n_strerror(i32 noundef %6549, ptr noundef @.str.4)
  %6551 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6552 = load i32, ptr %6551, align 4, !tbaa !5
  %6553 = call ptr @s2n_strerror_debug(i32 noundef %6552, ptr noundef @.str.4)
  %6554 = call ptr @__errno_location() #12
  %6555 = load i32, ptr %6554, align 4, !tbaa !5
  %6556 = call ptr @strerror(i32 noundef %6555) #11
  %6557 = call ptr @__errno_location() #12
  %6558 = load i32, ptr %6557, align 4, !tbaa !5
  %6559 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6546, ptr noundef @.str.5, i32 noundef %6547, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 979, ptr noundef %6550, ptr noundef %6553, ptr noundef %6556, i32 noundef %6558) #11
  br label %6560

6560:                                             ; preds = %6543, %6526
  call void @llvm.lifetime.end.p0(i64 4, ptr %208) #11
  br label %6561

6561:                                             ; preds = %6560
  br label %6562

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

6563:                                             ; No predecessors!
  br label %6564

6564:                                             ; preds = %6563
  br label %6565

6565:                                             ; preds = %6564, %6502
  br label %6566

6566:                                             ; preds = %6565
  br label %6567

6567:                                             ; preds = %6566
  br label %6568

6568:                                             ; preds = %6567
  %6569 = load i32, ptr @test_count, align 4, !tbaa !5
  %6570 = add nsw i32 %6569, 1
  store i32 %6570, ptr @test_count, align 4, !tbaa !5
  %6571 = load i32, ptr %206, align 4, !tbaa !5
  %6572 = icmp ugt i32 %6571, 11
  br i1 %6572, label %6626, label %6573

6573:                                             ; preds = %6568
  br label %6574

6574:                                             ; preds = %6573
  br label %6575

6575:                                             ; preds = %6574
  call void @llvm.lifetime.start.p0(i64 4, ptr %209) #11
  %6576 = call ptr @__errno_location() #12
  %6577 = load i32, ptr %6576, align 4, !tbaa !5
  store i32 %6577, ptr %209, align 4, !tbaa !5
  %6578 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6579 = call i32 @s2n_print_stacktrace(ptr noundef %6578)
  %6580 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6581 = trunc i8 %6580 to i1
  br i1 %6581, label %6582, label %6604

6582:                                             ; preds = %6575
  %6583 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6584 = call i32 @fileno(ptr noundef %6583) #11
  %6585 = call i32 @isatty(i32 noundef %6584) #11
  %6586 = icmp ne i32 %6585, 0
  br i1 %6586, label %6587, label %6604

6587:                                             ; preds = %6582
  %6588 = load i32, ptr %209, align 4, !tbaa !5
  %6589 = call ptr @__errno_location() #12
  store i32 %6588, ptr %6589, align 4, !tbaa !5
  %6590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6591 = load i32, ptr @test_count, align 4, !tbaa !5
  %6592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6593 = load i32, ptr %6592, align 4, !tbaa !5
  %6594 = call ptr @s2n_strerror(i32 noundef %6593, ptr noundef @.str.4)
  %6595 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6596 = load i32, ptr %6595, align 4, !tbaa !5
  %6597 = call ptr @s2n_strerror_debug(i32 noundef %6596, ptr noundef @.str.4)
  %6598 = call ptr @__errno_location() #12
  %6599 = load i32, ptr %6598, align 4, !tbaa !5
  %6600 = call ptr @strerror(i32 noundef %6599) #11
  %6601 = call ptr @__errno_location() #12
  %6602 = load i32, ptr %6601, align 4, !tbaa !5
  %6603 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6590, ptr noundef @.str.2, i32 noundef %6591, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 981, ptr noundef %6594, ptr noundef %6597, ptr noundef %6600, i32 noundef %6602) #11
  br label %6621

6604:                                             ; preds = %6582, %6575
  %6605 = load i32, ptr %209, align 4, !tbaa !5
  %6606 = call ptr @__errno_location() #12
  store i32 %6605, ptr %6606, align 4, !tbaa !5
  %6607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6608 = load i32, ptr @test_count, align 4, !tbaa !5
  %6609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6610 = load i32, ptr %6609, align 4, !tbaa !5
  %6611 = call ptr @s2n_strerror(i32 noundef %6610, ptr noundef @.str.4)
  %6612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6613 = load i32, ptr %6612, align 4, !tbaa !5
  %6614 = call ptr @s2n_strerror_debug(i32 noundef %6613, ptr noundef @.str.4)
  %6615 = call ptr @__errno_location() #12
  %6616 = load i32, ptr %6615, align 4, !tbaa !5
  %6617 = call ptr @strerror(i32 noundef %6616) #11
  %6618 = call ptr @__errno_location() #12
  %6619 = load i32, ptr %6618, align 4, !tbaa !5
  %6620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6607, ptr noundef @.str.5, i32 noundef %6608, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 981, ptr noundef %6611, ptr noundef %6614, ptr noundef %6617, i32 noundef %6619) #11
  br label %6621

6621:                                             ; preds = %6604, %6587
  call void @llvm.lifetime.end.p0(i64 4, ptr %209) #11
  br label %6622

6622:                                             ; preds = %6621
  br label %6623

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

6624:                                             ; No predecessors!
  br label %6625

6625:                                             ; preds = %6624
  br label %6626

6626:                                             ; preds = %6625, %6568
  br label %6627

6627:                                             ; preds = %6626
  br label %6628

6628:                                             ; preds = %6627
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #11
  %6629 = getelementptr inbounds [200 x i8], ptr %205, i64 0, i64 11
  store ptr %6629, ptr %210, align 8, !tbaa !9
  br label %6630

6630:                                             ; preds = %6628
  %6631 = load i32, ptr @test_count, align 4, !tbaa !5
  %6632 = add nsw i32 %6631, 1
  store i32 %6632, ptr @test_count, align 4, !tbaa !5
  %6633 = load i32, ptr %206, align 4, !tbaa !5
  %6634 = zext i32 %6633 to i64
  %6635 = icmp uge i64 %6634, 23
  br i1 %6635, label %6689, label %6636

6636:                                             ; preds = %6630
  br label %6637

6637:                                             ; preds = %6636
  br label %6638

6638:                                             ; preds = %6637
  call void @llvm.lifetime.start.p0(i64 4, ptr %211) #11
  %6639 = call ptr @__errno_location() #12
  %6640 = load i32, ptr %6639, align 4, !tbaa !5
  store i32 %6640, ptr %211, align 4, !tbaa !5
  %6641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6642 = call i32 @s2n_print_stacktrace(ptr noundef %6641)
  %6643 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6644 = trunc i8 %6643 to i1
  br i1 %6644, label %6645, label %6667

6645:                                             ; preds = %6638
  %6646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6647 = call i32 @fileno(ptr noundef %6646) #11
  %6648 = call i32 @isatty(i32 noundef %6647) #11
  %6649 = icmp ne i32 %6648, 0
  br i1 %6649, label %6650, label %6667

6650:                                             ; preds = %6645
  %6651 = load i32, ptr %211, align 4, !tbaa !5
  %6652 = call ptr @__errno_location() #12
  store i32 %6651, ptr %6652, align 4, !tbaa !5
  %6653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6654 = load i32, ptr @test_count, align 4, !tbaa !5
  %6655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6656 = load i32, ptr %6655, align 4, !tbaa !5
  %6657 = call ptr @s2n_strerror(i32 noundef %6656, ptr noundef @.str.4)
  %6658 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6659 = load i32, ptr %6658, align 4, !tbaa !5
  %6660 = call ptr @s2n_strerror_debug(i32 noundef %6659, ptr noundef @.str.4)
  %6661 = call ptr @__errno_location() #12
  %6662 = load i32, ptr %6661, align 4, !tbaa !5
  %6663 = call ptr @strerror(i32 noundef %6662) #11
  %6664 = call ptr @__errno_location() #12
  %6665 = load i32, ptr %6664, align 4, !tbaa !5
  %6666 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6653, ptr noundef @.str.2, i32 noundef %6654, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 983, ptr noundef %6657, ptr noundef %6660, ptr noundef %6663, i32 noundef %6665) #11
  br label %6684

6667:                                             ; preds = %6645, %6638
  %6668 = load i32, ptr %211, align 4, !tbaa !5
  %6669 = call ptr @__errno_location() #12
  store i32 %6668, ptr %6669, align 4, !tbaa !5
  %6670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6671 = load i32, ptr @test_count, align 4, !tbaa !5
  %6672 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6673 = load i32, ptr %6672, align 4, !tbaa !5
  %6674 = call ptr @s2n_strerror(i32 noundef %6673, ptr noundef @.str.4)
  %6675 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6676 = load i32, ptr %6675, align 4, !tbaa !5
  %6677 = call ptr @s2n_strerror_debug(i32 noundef %6676, ptr noundef @.str.4)
  %6678 = call ptr @__errno_location() #12
  %6679 = load i32, ptr %6678, align 4, !tbaa !5
  %6680 = call ptr @strerror(i32 noundef %6679) #11
  %6681 = call ptr @__errno_location() #12
  %6682 = load i32, ptr %6681, align 4, !tbaa !5
  %6683 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6670, ptr noundef @.str.5, i32 noundef %6671, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 983, ptr noundef %6674, ptr noundef %6677, ptr noundef %6680, i32 noundef %6682) #11
  br label %6684

6684:                                             ; preds = %6667, %6650
  call void @llvm.lifetime.end.p0(i64 4, ptr %211) #11
  br label %6685

6685:                                             ; preds = %6684
  br label %6686

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

6687:                                             ; No predecessors!
  br label %6688

6688:                                             ; preds = %6687
  br label %6689

6689:                                             ; preds = %6688, %6630
  br label %6690

6690:                                             ; preds = %6689
  br label %6691

6691:                                             ; preds = %6690
  br label %6692

6692:                                             ; preds = %6691
  br label %6693

6693:                                             ; preds = %6692
  %6694 = load i32, ptr @test_count, align 4, !tbaa !5
  %6695 = add nsw i32 %6694, 1
  store i32 %6695, ptr @test_count, align 4, !tbaa !5
  %6696 = load ptr, ptr %210, align 8, !tbaa !9
  %6697 = getelementptr inbounds [13 x i8], ptr %204, i64 0, i64 0
  %6698 = call i32 @memcmp(ptr noundef %6696, ptr noundef %6697, i64 noundef 12) #14
  %6699 = icmp eq i32 %6698, 0
  br i1 %6699, label %6753, label %6700

6700:                                             ; preds = %6693
  br label %6701

6701:                                             ; preds = %6700
  br label %6702

6702:                                             ; preds = %6701
  call void @llvm.lifetime.start.p0(i64 4, ptr %212) #11
  %6703 = call ptr @__errno_location() #12
  %6704 = load i32, ptr %6703, align 4, !tbaa !5
  store i32 %6704, ptr %212, align 4, !tbaa !5
  %6705 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6706 = call i32 @s2n_print_stacktrace(ptr noundef %6705)
  %6707 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6708 = trunc i8 %6707 to i1
  br i1 %6708, label %6709, label %6731

6709:                                             ; preds = %6702
  %6710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6711 = call i32 @fileno(ptr noundef %6710) #11
  %6712 = call i32 @isatty(i32 noundef %6711) #11
  %6713 = icmp ne i32 %6712, 0
  br i1 %6713, label %6714, label %6731

6714:                                             ; preds = %6709
  %6715 = load i32, ptr %212, align 4, !tbaa !5
  %6716 = call ptr @__errno_location() #12
  store i32 %6715, ptr %6716, align 4, !tbaa !5
  %6717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6718 = load i32, ptr @test_count, align 4, !tbaa !5
  %6719 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6720 = load i32, ptr %6719, align 4, !tbaa !5
  %6721 = call ptr @s2n_strerror(i32 noundef %6720, ptr noundef @.str.4)
  %6722 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6723 = load i32, ptr %6722, align 4, !tbaa !5
  %6724 = call ptr @s2n_strerror_debug(i32 noundef %6723, ptr noundef @.str.4)
  %6725 = call ptr @__errno_location() #12
  %6726 = load i32, ptr %6725, align 4, !tbaa !5
  %6727 = call ptr @strerror(i32 noundef %6726) #11
  %6728 = call ptr @__errno_location() #12
  %6729 = load i32, ptr %6728, align 4, !tbaa !5
  %6730 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6717, ptr noundef @.str.2, i32 noundef %6718, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 984, ptr noundef %6721, ptr noundef %6724, ptr noundef %6727, i32 noundef %6729) #11
  br label %6748

6731:                                             ; preds = %6709, %6702
  %6732 = load i32, ptr %212, align 4, !tbaa !5
  %6733 = call ptr @__errno_location() #12
  store i32 %6732, ptr %6733, align 4, !tbaa !5
  %6734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6735 = load i32, ptr @test_count, align 4, !tbaa !5
  %6736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6737 = load i32, ptr %6736, align 4, !tbaa !5
  %6738 = call ptr @s2n_strerror(i32 noundef %6737, ptr noundef @.str.4)
  %6739 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6740 = load i32, ptr %6739, align 4, !tbaa !5
  %6741 = call ptr @s2n_strerror_debug(i32 noundef %6740, ptr noundef @.str.4)
  %6742 = call ptr @__errno_location() #12
  %6743 = load i32, ptr %6742, align 4, !tbaa !5
  %6744 = call ptr @strerror(i32 noundef %6743) #11
  %6745 = call ptr @__errno_location() #12
  %6746 = load i32, ptr %6745, align 4, !tbaa !5
  %6747 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6734, ptr noundef @.str.5, i32 noundef %6735, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 984, ptr noundef %6738, ptr noundef %6741, ptr noundef %6744, i32 noundef %6746) #11
  br label %6748

6748:                                             ; preds = %6731, %6714
  call void @llvm.lifetime.end.p0(i64 4, ptr %212) #11
  br label %6749

6749:                                             ; preds = %6748
  br label %6750

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

6751:                                             ; No predecessors!
  br label %6752

6752:                                             ; preds = %6751
  br label %6753

6753:                                             ; preds = %6752, %6693
  br label %6754

6754:                                             ; preds = %6753
  br label %6755

6755:                                             ; preds = %6754
  br label %6756

6756:                                             ; preds = %6755
  br label %6757

6757:                                             ; preds = %6756
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %206) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %205) #11
  call void @llvm.lifetime.end.p0(i64 13, ptr %204) #11
  call void @llvm.lifetime.start.p0(i64 13, ptr %213) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %213, ptr align 1 @__const.main.expected.85, i64 13, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %214) #11
  call void @llvm.memset.p0.i64(ptr align 16 %214, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %215) #11
  store i32 0, ptr %215, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #11
  store ptr null, ptr %216, align 8, !tbaa !9
  %6758 = getelementptr inbounds [75 x i8], ptr %194, i64 0, i64 0
  %6759 = call ptr @s2n_client_hello_parse_message(ptr noundef %6758, i32 noundef 75)
  store ptr %6759, ptr %216, align 8, !tbaa !9
  br label %6760

6760:                                             ; preds = %6757
  %6761 = load i32, ptr @test_count, align 4, !tbaa !5
  %6762 = add nsw i32 %6761, 1
  store i32 %6762, ptr @test_count, align 4, !tbaa !5
  %6763 = load ptr, ptr %216, align 8, !tbaa !9
  %6764 = icmp eq ptr %6763, null
  br i1 %6764, label %6765, label %6818

6765:                                             ; preds = %6760
  br label %6766

6766:                                             ; preds = %6765
  br label %6767

6767:                                             ; preds = %6766
  call void @llvm.lifetime.start.p0(i64 4, ptr %217) #11
  %6768 = call ptr @__errno_location() #12
  %6769 = load i32, ptr %6768, align 4, !tbaa !5
  store i32 %6769, ptr %217, align 4, !tbaa !5
  %6770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6771 = call i32 @s2n_print_stacktrace(ptr noundef %6770)
  %6772 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6773 = trunc i8 %6772 to i1
  br i1 %6773, label %6774, label %6796

6774:                                             ; preds = %6767
  %6775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6776 = call i32 @fileno(ptr noundef %6775) #11
  %6777 = call i32 @isatty(i32 noundef %6776) #11
  %6778 = icmp ne i32 %6777, 0
  br i1 %6778, label %6779, label %6796

6779:                                             ; preds = %6774
  %6780 = load i32, ptr %217, align 4, !tbaa !5
  %6781 = call ptr @__errno_location() #12
  store i32 %6780, ptr %6781, align 4, !tbaa !5
  %6782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6783 = load i32, ptr @test_count, align 4, !tbaa !5
  %6784 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6785 = load i32, ptr %6784, align 4, !tbaa !5
  %6786 = call ptr @s2n_strerror(i32 noundef %6785, ptr noundef @.str.4)
  %6787 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6788 = load i32, ptr %6787, align 4, !tbaa !5
  %6789 = call ptr @s2n_strerror_debug(i32 noundef %6788, ptr noundef @.str.4)
  %6790 = call ptr @__errno_location() #12
  %6791 = load i32, ptr %6790, align 4, !tbaa !5
  %6792 = call ptr @strerror(i32 noundef %6791) #11
  %6793 = call ptr @__errno_location() #12
  %6794 = load i32, ptr %6793, align 4, !tbaa !5
  %6795 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6782, ptr noundef @.str.2, i32 noundef %6783, ptr noundef @.str.86, ptr noundef @.str.1, i32 noundef 1014, ptr noundef %6786, ptr noundef %6789, ptr noundef %6792, i32 noundef %6794) #11
  br label %6813

6796:                                             ; preds = %6774, %6767
  %6797 = load i32, ptr %217, align 4, !tbaa !5
  %6798 = call ptr @__errno_location() #12
  store i32 %6797, ptr %6798, align 4, !tbaa !5
  %6799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6800 = load i32, ptr @test_count, align 4, !tbaa !5
  %6801 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6802 = load i32, ptr %6801, align 4, !tbaa !5
  %6803 = call ptr @s2n_strerror(i32 noundef %6802, ptr noundef @.str.4)
  %6804 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6805 = load i32, ptr %6804, align 4, !tbaa !5
  %6806 = call ptr @s2n_strerror_debug(i32 noundef %6805, ptr noundef @.str.4)
  %6807 = call ptr @__errno_location() #12
  %6808 = load i32, ptr %6807, align 4, !tbaa !5
  %6809 = call ptr @strerror(i32 noundef %6808) #11
  %6810 = call ptr @__errno_location() #12
  %6811 = load i32, ptr %6810, align 4, !tbaa !5
  %6812 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6799, ptr noundef @.str.5, i32 noundef %6800, ptr noundef @.str.86, ptr noundef @.str.1, i32 noundef 1014, ptr noundef %6803, ptr noundef %6806, ptr noundef %6809, i32 noundef %6811) #11
  br label %6813

6813:                                             ; preds = %6796, %6779
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #11
  br label %6814

6814:                                             ; preds = %6813
  br label %6815

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

6816:                                             ; No predecessors!
  br label %6817

6817:                                             ; preds = %6816
  br label %6818

6818:                                             ; preds = %6817, %6760
  br label %6819

6819:                                             ; preds = %6818
  br label %6820

6820:                                             ; preds = %6819
  %6821 = load ptr, ptr %216, align 8, !tbaa !9
  %6822 = getelementptr inbounds %struct.s2n_client_hello, ptr %6821, i32 0, i32 2
  %6823 = getelementptr inbounds %struct.s2n_blob, ptr %6822, i32 0, i32 1
  store i32 0, ptr %6823, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #11
  store ptr null, ptr %218, align 8, !tbaa !9
  %6824 = call ptr @s2n_fingerprint_new(i32 noundef 1)
  store ptr %6824, ptr %218, align 8, !tbaa !9
  br label %6825

6825:                                             ; preds = %6820
  %6826 = load i32, ptr @test_count, align 4, !tbaa !5
  %6827 = add nsw i32 %6826, 1
  store i32 %6827, ptr @test_count, align 4, !tbaa !5
  %6828 = load ptr, ptr %218, align 8, !tbaa !9
  %6829 = icmp eq ptr %6828, null
  br i1 %6829, label %6830, label %6883

6830:                                             ; preds = %6825
  br label %6831

6831:                                             ; preds = %6830
  br label %6832

6832:                                             ; preds = %6831
  call void @llvm.lifetime.start.p0(i64 4, ptr %219) #11
  %6833 = call ptr @__errno_location() #12
  %6834 = load i32, ptr %6833, align 4, !tbaa !5
  store i32 %6834, ptr %219, align 4, !tbaa !5
  %6835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6836 = call i32 @s2n_print_stacktrace(ptr noundef %6835)
  %6837 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6838 = trunc i8 %6837 to i1
  br i1 %6838, label %6839, label %6861

6839:                                             ; preds = %6832
  %6840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6841 = call i32 @fileno(ptr noundef %6840) #11
  %6842 = call i32 @isatty(i32 noundef %6841) #11
  %6843 = icmp ne i32 %6842, 0
  br i1 %6843, label %6844, label %6861

6844:                                             ; preds = %6839
  %6845 = load i32, ptr %219, align 4, !tbaa !5
  %6846 = call ptr @__errno_location() #12
  store i32 %6845, ptr %6846, align 4, !tbaa !5
  %6847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6848 = load i32, ptr @test_count, align 4, !tbaa !5
  %6849 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6850 = load i32, ptr %6849, align 4, !tbaa !5
  %6851 = call ptr @s2n_strerror(i32 noundef %6850, ptr noundef @.str.4)
  %6852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6853 = load i32, ptr %6852, align 4, !tbaa !5
  %6854 = call ptr @s2n_strerror_debug(i32 noundef %6853, ptr noundef @.str.4)
  %6855 = call ptr @__errno_location() #12
  %6856 = load i32, ptr %6855, align 4, !tbaa !5
  %6857 = call ptr @strerror(i32 noundef %6856) #11
  %6858 = call ptr @__errno_location() #12
  %6859 = load i32, ptr %6858, align 4, !tbaa !5
  %6860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6847, ptr noundef @.str.2, i32 noundef %6848, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 1023, ptr noundef %6851, ptr noundef %6854, ptr noundef %6857, i32 noundef %6859) #11
  br label %6878

6861:                                             ; preds = %6839, %6832
  %6862 = load i32, ptr %219, align 4, !tbaa !5
  %6863 = call ptr @__errno_location() #12
  store i32 %6862, ptr %6863, align 4, !tbaa !5
  %6864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6865 = load i32, ptr @test_count, align 4, !tbaa !5
  %6866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6867 = load i32, ptr %6866, align 4, !tbaa !5
  %6868 = call ptr @s2n_strerror(i32 noundef %6867, ptr noundef @.str.4)
  %6869 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6870 = load i32, ptr %6869, align 4, !tbaa !5
  %6871 = call ptr @s2n_strerror_debug(i32 noundef %6870, ptr noundef @.str.4)
  %6872 = call ptr @__errno_location() #12
  %6873 = load i32, ptr %6872, align 4, !tbaa !5
  %6874 = call ptr @strerror(i32 noundef %6873) #11
  %6875 = call ptr @__errno_location() #12
  %6876 = load i32, ptr %6875, align 4, !tbaa !5
  %6877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6864, ptr noundef @.str.5, i32 noundef %6865, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 1023, ptr noundef %6868, ptr noundef %6871, ptr noundef %6874, i32 noundef %6876) #11
  br label %6878

6878:                                             ; preds = %6861, %6844
  call void @llvm.lifetime.end.p0(i64 4, ptr %219) #11
  br label %6879

6879:                                             ; preds = %6878
  br label %6880

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

6881:                                             ; No predecessors!
  br label %6882

6882:                                             ; preds = %6881
  br label %6883

6883:                                             ; preds = %6882, %6825
  br label %6884

6884:                                             ; preds = %6883
  br label %6885

6885:                                             ; preds = %6884
  br label %6886

6886:                                             ; preds = %6885
  %6887 = load i32, ptr @test_count, align 4, !tbaa !5
  %6888 = add nsw i32 %6887, 1
  store i32 %6888, ptr @test_count, align 4, !tbaa !5
  %6889 = load ptr, ptr %218, align 8, !tbaa !9
  %6890 = load ptr, ptr %216, align 8, !tbaa !9
  %6891 = call i32 @s2n_fingerprint_set_client_hello(ptr noundef %6889, ptr noundef %6890)
  %6892 = icmp eq i32 %6891, -1
  br i1 %6892, label %6893, label %6946

6893:                                             ; preds = %6886
  br label %6894

6894:                                             ; preds = %6893
  br label %6895

6895:                                             ; preds = %6894
  call void @llvm.lifetime.start.p0(i64 4, ptr %220) #11
  %6896 = call ptr @__errno_location() #12
  %6897 = load i32, ptr %6896, align 4, !tbaa !5
  store i32 %6897, ptr %220, align 4, !tbaa !5
  %6898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6899 = call i32 @s2n_print_stacktrace(ptr noundef %6898)
  %6900 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6901 = trunc i8 %6900 to i1
  br i1 %6901, label %6902, label %6924

6902:                                             ; preds = %6895
  %6903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6904 = call i32 @fileno(ptr noundef %6903) #11
  %6905 = call i32 @isatty(i32 noundef %6904) #11
  %6906 = icmp ne i32 %6905, 0
  br i1 %6906, label %6907, label %6924

6907:                                             ; preds = %6902
  %6908 = load i32, ptr %220, align 4, !tbaa !5
  %6909 = call ptr @__errno_location() #12
  store i32 %6908, ptr %6909, align 4, !tbaa !5
  %6910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6911 = load i32, ptr @test_count, align 4, !tbaa !5
  %6912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6913 = load i32, ptr %6912, align 4, !tbaa !5
  %6914 = call ptr @s2n_strerror(i32 noundef %6913, ptr noundef @.str.4)
  %6915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6916 = load i32, ptr %6915, align 4, !tbaa !5
  %6917 = call ptr @s2n_strerror_debug(i32 noundef %6916, ptr noundef @.str.4)
  %6918 = call ptr @__errno_location() #12
  %6919 = load i32, ptr %6918, align 4, !tbaa !5
  %6920 = call ptr @strerror(i32 noundef %6919) #11
  %6921 = call ptr @__errno_location() #12
  %6922 = load i32, ptr %6921, align 4, !tbaa !5
  %6923 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6910, ptr noundef @.str.2, i32 noundef %6911, ptr noundef @.str.87, ptr noundef @.str.1, i32 noundef 1024, ptr noundef %6914, ptr noundef %6917, ptr noundef %6920, i32 noundef %6922) #11
  br label %6941

6924:                                             ; preds = %6902, %6895
  %6925 = load i32, ptr %220, align 4, !tbaa !5
  %6926 = call ptr @__errno_location() #12
  store i32 %6925, ptr %6926, align 4, !tbaa !5
  %6927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6928 = load i32, ptr @test_count, align 4, !tbaa !5
  %6929 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6930 = load i32, ptr %6929, align 4, !tbaa !5
  %6931 = call ptr @s2n_strerror(i32 noundef %6930, ptr noundef @.str.4)
  %6932 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6933 = load i32, ptr %6932, align 4, !tbaa !5
  %6934 = call ptr @s2n_strerror_debug(i32 noundef %6933, ptr noundef @.str.4)
  %6935 = call ptr @__errno_location() #12
  %6936 = load i32, ptr %6935, align 4, !tbaa !5
  %6937 = call ptr @strerror(i32 noundef %6936) #11
  %6938 = call ptr @__errno_location() #12
  %6939 = load i32, ptr %6938, align 4, !tbaa !5
  %6940 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6927, ptr noundef @.str.5, i32 noundef %6928, ptr noundef @.str.87, ptr noundef @.str.1, i32 noundef 1024, ptr noundef %6931, ptr noundef %6934, ptr noundef %6937, i32 noundef %6939) #11
  br label %6941

6941:                                             ; preds = %6924, %6907
  call void @llvm.lifetime.end.p0(i64 4, ptr %220) #11
  br label %6942

6942:                                             ; preds = %6941
  br label %6943

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

6944:                                             ; No predecessors!
  br label %6945

6945:                                             ; preds = %6944
  br label %6946

6946:                                             ; preds = %6945, %6886
  br label %6947

6947:                                             ; preds = %6946
  br label %6948

6948:                                             ; preds = %6947
  br label %6949

6949:                                             ; preds = %6948
  %6950 = load i32, ptr @test_count, align 4, !tbaa !5
  %6951 = add nsw i32 %6950, 1
  store i32 %6951, ptr @test_count, align 4, !tbaa !5
  %6952 = load ptr, ptr %218, align 8, !tbaa !9
  %6953 = getelementptr inbounds [200 x i8], ptr %214, i64 0, i64 0
  %6954 = call i32 @s2n_fingerprint_get_hash(ptr noundef %6952, i32 noundef 200, ptr noundef %6953, ptr noundef %215)
  %6955 = icmp eq i32 %6954, -1
  br i1 %6955, label %6956, label %7009

6956:                                             ; preds = %6949
  br label %6957

6957:                                             ; preds = %6956
  br label %6958

6958:                                             ; preds = %6957
  call void @llvm.lifetime.start.p0(i64 4, ptr %221) #11
  %6959 = call ptr @__errno_location() #12
  %6960 = load i32, ptr %6959, align 4, !tbaa !5
  store i32 %6960, ptr %221, align 4, !tbaa !5
  %6961 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6962 = call i32 @s2n_print_stacktrace(ptr noundef %6961)
  %6963 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6964 = trunc i8 %6963 to i1
  br i1 %6964, label %6965, label %6987

6965:                                             ; preds = %6958
  %6966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6967 = call i32 @fileno(ptr noundef %6966) #11
  %6968 = call i32 @isatty(i32 noundef %6967) #11
  %6969 = icmp ne i32 %6968, 0
  br i1 %6969, label %6970, label %6987

6970:                                             ; preds = %6965
  %6971 = load i32, ptr %221, align 4, !tbaa !5
  %6972 = call ptr @__errno_location() #12
  store i32 %6971, ptr %6972, align 4, !tbaa !5
  %6973 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6974 = load i32, ptr @test_count, align 4, !tbaa !5
  %6975 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6976 = load i32, ptr %6975, align 4, !tbaa !5
  %6977 = call ptr @s2n_strerror(i32 noundef %6976, ptr noundef @.str.4)
  %6978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6979 = load i32, ptr %6978, align 4, !tbaa !5
  %6980 = call ptr @s2n_strerror_debug(i32 noundef %6979, ptr noundef @.str.4)
  %6981 = call ptr @__errno_location() #12
  %6982 = load i32, ptr %6981, align 4, !tbaa !5
  %6983 = call ptr @strerror(i32 noundef %6982) #11
  %6984 = call ptr @__errno_location() #12
  %6985 = load i32, ptr %6984, align 4, !tbaa !5
  %6986 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6973, ptr noundef @.str.2, i32 noundef %6974, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 1026, ptr noundef %6977, ptr noundef %6980, ptr noundef %6983, i32 noundef %6985) #11
  br label %7004

6987:                                             ; preds = %6965, %6958
  %6988 = load i32, ptr %221, align 4, !tbaa !5
  %6989 = call ptr @__errno_location() #12
  store i32 %6988, ptr %6989, align 4, !tbaa !5
  %6990 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6991 = load i32, ptr @test_count, align 4, !tbaa !5
  %6992 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6993 = load i32, ptr %6992, align 4, !tbaa !5
  %6994 = call ptr @s2n_strerror(i32 noundef %6993, ptr noundef @.str.4)
  %6995 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6996 = load i32, ptr %6995, align 4, !tbaa !5
  %6997 = call ptr @s2n_strerror_debug(i32 noundef %6996, ptr noundef @.str.4)
  %6998 = call ptr @__errno_location() #12
  %6999 = load i32, ptr %6998, align 4, !tbaa !5
  %7000 = call ptr @strerror(i32 noundef %6999) #11
  %7001 = call ptr @__errno_location() #12
  %7002 = load i32, ptr %7001, align 4, !tbaa !5
  %7003 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6990, ptr noundef @.str.5, i32 noundef %6991, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 1026, ptr noundef %6994, ptr noundef %6997, ptr noundef %7000, i32 noundef %7002) #11
  br label %7004

7004:                                             ; preds = %6987, %6970
  call void @llvm.lifetime.end.p0(i64 4, ptr %221) #11
  br label %7005

7005:                                             ; preds = %7004
  br label %7006

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

7007:                                             ; No predecessors!
  br label %7008

7008:                                             ; preds = %7007
  br label %7009

7009:                                             ; preds = %7008, %6949
  br label %7010

7010:                                             ; preds = %7009
  br label %7011

7011:                                             ; preds = %7010
  br label %7012

7012:                                             ; preds = %7011
  %7013 = load i32, ptr @test_count, align 4, !tbaa !5
  %7014 = add nsw i32 %7013, 1
  store i32 %7014, ptr @test_count, align 4, !tbaa !5
  %7015 = load i32, ptr %215, align 4, !tbaa !5
  %7016 = icmp ugt i32 %7015, 11
  br i1 %7016, label %7070, label %7017

7017:                                             ; preds = %7012
  br label %7018

7018:                                             ; preds = %7017
  br label %7019

7019:                                             ; preds = %7018
  call void @llvm.lifetime.start.p0(i64 4, ptr %222) #11
  %7020 = call ptr @__errno_location() #12
  %7021 = load i32, ptr %7020, align 4, !tbaa !5
  store i32 %7021, ptr %222, align 4, !tbaa !5
  %7022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7023 = call i32 @s2n_print_stacktrace(ptr noundef %7022)
  %7024 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7025 = trunc i8 %7024 to i1
  br i1 %7025, label %7026, label %7048

7026:                                             ; preds = %7019
  %7027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7028 = call i32 @fileno(ptr noundef %7027) #11
  %7029 = call i32 @isatty(i32 noundef %7028) #11
  %7030 = icmp ne i32 %7029, 0
  br i1 %7030, label %7031, label %7048

7031:                                             ; preds = %7026
  %7032 = load i32, ptr %222, align 4, !tbaa !5
  %7033 = call ptr @__errno_location() #12
  store i32 %7032, ptr %7033, align 4, !tbaa !5
  %7034 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7035 = load i32, ptr @test_count, align 4, !tbaa !5
  %7036 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7037 = load i32, ptr %7036, align 4, !tbaa !5
  %7038 = call ptr @s2n_strerror(i32 noundef %7037, ptr noundef @.str.4)
  %7039 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7040 = load i32, ptr %7039, align 4, !tbaa !5
  %7041 = call ptr @s2n_strerror_debug(i32 noundef %7040, ptr noundef @.str.4)
  %7042 = call ptr @__errno_location() #12
  %7043 = load i32, ptr %7042, align 4, !tbaa !5
  %7044 = call ptr @strerror(i32 noundef %7043) #11
  %7045 = call ptr @__errno_location() #12
  %7046 = load i32, ptr %7045, align 4, !tbaa !5
  %7047 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7034, ptr noundef @.str.2, i32 noundef %7035, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1028, ptr noundef %7038, ptr noundef %7041, ptr noundef %7044, i32 noundef %7046) #11
  br label %7065

7048:                                             ; preds = %7026, %7019
  %7049 = load i32, ptr %222, align 4, !tbaa !5
  %7050 = call ptr @__errno_location() #12
  store i32 %7049, ptr %7050, align 4, !tbaa !5
  %7051 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7052 = load i32, ptr @test_count, align 4, !tbaa !5
  %7053 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7054 = load i32, ptr %7053, align 4, !tbaa !5
  %7055 = call ptr @s2n_strerror(i32 noundef %7054, ptr noundef @.str.4)
  %7056 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7057 = load i32, ptr %7056, align 4, !tbaa !5
  %7058 = call ptr @s2n_strerror_debug(i32 noundef %7057, ptr noundef @.str.4)
  %7059 = call ptr @__errno_location() #12
  %7060 = load i32, ptr %7059, align 4, !tbaa !5
  %7061 = call ptr @strerror(i32 noundef %7060) #11
  %7062 = call ptr @__errno_location() #12
  %7063 = load i32, ptr %7062, align 4, !tbaa !5
  %7064 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7051, ptr noundef @.str.5, i32 noundef %7052, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1028, ptr noundef %7055, ptr noundef %7058, ptr noundef %7061, i32 noundef %7063) #11
  br label %7065

7065:                                             ; preds = %7048, %7031
  call void @llvm.lifetime.end.p0(i64 4, ptr %222) #11
  br label %7066

7066:                                             ; preds = %7065
  br label %7067

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

7068:                                             ; No predecessors!
  br label %7069

7069:                                             ; preds = %7068
  br label %7070

7070:                                             ; preds = %7069, %7012
  br label %7071

7071:                                             ; preds = %7070
  br label %7072

7072:                                             ; preds = %7071
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #11
  %7073 = getelementptr inbounds [200 x i8], ptr %214, i64 0, i64 11
  store ptr %7073, ptr %223, align 8, !tbaa !9
  br label %7074

7074:                                             ; preds = %7072
  %7075 = load i32, ptr @test_count, align 4, !tbaa !5
  %7076 = add nsw i32 %7075, 1
  store i32 %7076, ptr @test_count, align 4, !tbaa !5
  %7077 = load i32, ptr %215, align 4, !tbaa !5
  %7078 = zext i32 %7077 to i64
  %7079 = icmp uge i64 %7078, 23
  br i1 %7079, label %7133, label %7080

7080:                                             ; preds = %7074
  br label %7081

7081:                                             ; preds = %7080
  br label %7082

7082:                                             ; preds = %7081
  call void @llvm.lifetime.start.p0(i64 4, ptr %224) #11
  %7083 = call ptr @__errno_location() #12
  %7084 = load i32, ptr %7083, align 4, !tbaa !5
  store i32 %7084, ptr %224, align 4, !tbaa !5
  %7085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7086 = call i32 @s2n_print_stacktrace(ptr noundef %7085)
  %7087 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7088 = trunc i8 %7087 to i1
  br i1 %7088, label %7089, label %7111

7089:                                             ; preds = %7082
  %7090 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7091 = call i32 @fileno(ptr noundef %7090) #11
  %7092 = call i32 @isatty(i32 noundef %7091) #11
  %7093 = icmp ne i32 %7092, 0
  br i1 %7093, label %7094, label %7111

7094:                                             ; preds = %7089
  %7095 = load i32, ptr %224, align 4, !tbaa !5
  %7096 = call ptr @__errno_location() #12
  store i32 %7095, ptr %7096, align 4, !tbaa !5
  %7097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7098 = load i32, ptr @test_count, align 4, !tbaa !5
  %7099 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7100 = load i32, ptr %7099, align 4, !tbaa !5
  %7101 = call ptr @s2n_strerror(i32 noundef %7100, ptr noundef @.str.4)
  %7102 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7103 = load i32, ptr %7102, align 4, !tbaa !5
  %7104 = call ptr @s2n_strerror_debug(i32 noundef %7103, ptr noundef @.str.4)
  %7105 = call ptr @__errno_location() #12
  %7106 = load i32, ptr %7105, align 4, !tbaa !5
  %7107 = call ptr @strerror(i32 noundef %7106) #11
  %7108 = call ptr @__errno_location() #12
  %7109 = load i32, ptr %7108, align 4, !tbaa !5
  %7110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7097, ptr noundef @.str.2, i32 noundef %7098, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1030, ptr noundef %7101, ptr noundef %7104, ptr noundef %7107, i32 noundef %7109) #11
  br label %7128

7111:                                             ; preds = %7089, %7082
  %7112 = load i32, ptr %224, align 4, !tbaa !5
  %7113 = call ptr @__errno_location() #12
  store i32 %7112, ptr %7113, align 4, !tbaa !5
  %7114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7115 = load i32, ptr @test_count, align 4, !tbaa !5
  %7116 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7117 = load i32, ptr %7116, align 4, !tbaa !5
  %7118 = call ptr @s2n_strerror(i32 noundef %7117, ptr noundef @.str.4)
  %7119 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7120 = load i32, ptr %7119, align 4, !tbaa !5
  %7121 = call ptr @s2n_strerror_debug(i32 noundef %7120, ptr noundef @.str.4)
  %7122 = call ptr @__errno_location() #12
  %7123 = load i32, ptr %7122, align 4, !tbaa !5
  %7124 = call ptr @strerror(i32 noundef %7123) #11
  %7125 = call ptr @__errno_location() #12
  %7126 = load i32, ptr %7125, align 4, !tbaa !5
  %7127 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7114, ptr noundef @.str.5, i32 noundef %7115, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1030, ptr noundef %7118, ptr noundef %7121, ptr noundef %7124, i32 noundef %7126) #11
  br label %7128

7128:                                             ; preds = %7111, %7094
  call void @llvm.lifetime.end.p0(i64 4, ptr %224) #11
  br label %7129

7129:                                             ; preds = %7128
  br label %7130

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

7131:                                             ; No predecessors!
  br label %7132

7132:                                             ; preds = %7131
  br label %7133

7133:                                             ; preds = %7132, %7074
  br label %7134

7134:                                             ; preds = %7133
  br label %7135

7135:                                             ; preds = %7134
  br label %7136

7136:                                             ; preds = %7135
  br label %7137

7137:                                             ; preds = %7136
  %7138 = load i32, ptr @test_count, align 4, !tbaa !5
  %7139 = add nsw i32 %7138, 1
  store i32 %7139, ptr @test_count, align 4, !tbaa !5
  %7140 = load ptr, ptr %223, align 8, !tbaa !9
  %7141 = getelementptr inbounds [13 x i8], ptr %213, i64 0, i64 0
  %7142 = call i32 @memcmp(ptr noundef %7140, ptr noundef %7141, i64 noundef 12) #14
  %7143 = icmp eq i32 %7142, 0
  br i1 %7143, label %7197, label %7144

7144:                                             ; preds = %7137
  br label %7145

7145:                                             ; preds = %7144
  br label %7146

7146:                                             ; preds = %7145
  call void @llvm.lifetime.start.p0(i64 4, ptr %225) #11
  %7147 = call ptr @__errno_location() #12
  %7148 = load i32, ptr %7147, align 4, !tbaa !5
  store i32 %7148, ptr %225, align 4, !tbaa !5
  %7149 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7150 = call i32 @s2n_print_stacktrace(ptr noundef %7149)
  %7151 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7152 = trunc i8 %7151 to i1
  br i1 %7152, label %7153, label %7175

7153:                                             ; preds = %7146
  %7154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7155 = call i32 @fileno(ptr noundef %7154) #11
  %7156 = call i32 @isatty(i32 noundef %7155) #11
  %7157 = icmp ne i32 %7156, 0
  br i1 %7157, label %7158, label %7175

7158:                                             ; preds = %7153
  %7159 = load i32, ptr %225, align 4, !tbaa !5
  %7160 = call ptr @__errno_location() #12
  store i32 %7159, ptr %7160, align 4, !tbaa !5
  %7161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7162 = load i32, ptr @test_count, align 4, !tbaa !5
  %7163 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7164 = load i32, ptr %7163, align 4, !tbaa !5
  %7165 = call ptr @s2n_strerror(i32 noundef %7164, ptr noundef @.str.4)
  %7166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7167 = load i32, ptr %7166, align 4, !tbaa !5
  %7168 = call ptr @s2n_strerror_debug(i32 noundef %7167, ptr noundef @.str.4)
  %7169 = call ptr @__errno_location() #12
  %7170 = load i32, ptr %7169, align 4, !tbaa !5
  %7171 = call ptr @strerror(i32 noundef %7170) #11
  %7172 = call ptr @__errno_location() #12
  %7173 = load i32, ptr %7172, align 4, !tbaa !5
  %7174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7161, ptr noundef @.str.2, i32 noundef %7162, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1031, ptr noundef %7165, ptr noundef %7168, ptr noundef %7171, i32 noundef %7173) #11
  br label %7192

7175:                                             ; preds = %7153, %7146
  %7176 = load i32, ptr %225, align 4, !tbaa !5
  %7177 = call ptr @__errno_location() #12
  store i32 %7176, ptr %7177, align 4, !tbaa !5
  %7178 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7179 = load i32, ptr @test_count, align 4, !tbaa !5
  %7180 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7181 = load i32, ptr %7180, align 4, !tbaa !5
  %7182 = call ptr @s2n_strerror(i32 noundef %7181, ptr noundef @.str.4)
  %7183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7184 = load i32, ptr %7183, align 4, !tbaa !5
  %7185 = call ptr @s2n_strerror_debug(i32 noundef %7184, ptr noundef @.str.4)
  %7186 = call ptr @__errno_location() #12
  %7187 = load i32, ptr %7186, align 4, !tbaa !5
  %7188 = call ptr @strerror(i32 noundef %7187) #11
  %7189 = call ptr @__errno_location() #12
  %7190 = load i32, ptr %7189, align 4, !tbaa !5
  %7191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7178, ptr noundef @.str.5, i32 noundef %7179, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1031, ptr noundef %7182, ptr noundef %7185, ptr noundef %7188, i32 noundef %7190) #11
  br label %7192

7192:                                             ; preds = %7175, %7158
  call void @llvm.lifetime.end.p0(i64 4, ptr %225) #11
  br label %7193

7193:                                             ; preds = %7192
  br label %7194

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

7195:                                             ; No predecessors!
  br label %7196

7196:                                             ; preds = %7195
  br label %7197

7197:                                             ; preds = %7196, %7137
  br label %7198

7198:                                             ; preds = %7197
  br label %7199

7199:                                             ; preds = %7198
  br label %7200

7200:                                             ; preds = %7199
  br label %7201

7201:                                             ; preds = %7200
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #11
  %7202 = call i32 @s2n_fingerprint_free(ptr noundef %218)
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #11
  %7203 = call i32 @s2n_client_hello_free(ptr noundef %216)
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %215) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %214) #11
  call void @llvm.lifetime.end.p0(i64 13, ptr %213) #11
  call void @llvm.lifetime.start.p0(i64 60, ptr %226) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %226, ptr align 16 @__const.main.expected.88, i64 60, i1 false)
  call void @llvm.lifetime.start.p0(i64 65, ptr %227) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %227, ptr align 16 @__const.main._bytes_message, i64 65, i1 false)
  br label %7204

7204:                                             ; preds = %7201
  %7205 = load i32, ptr @test_count, align 4, !tbaa !5
  %7206 = add nsw i32 %7205, 1
  store i32 %7206, ptr @test_count, align 4, !tbaa !5
  br label %7207

7207:                                             ; preds = %7204
  br label %7208

7208:                                             ; preds = %7207
  call void @llvm.lifetime.start.p0(i64 69, ptr %228) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %228, ptr align 16 @__const.main.bytes, i64 69, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %229) #11
  call void @llvm.memset.p0.i64(ptr align 16 %229, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %230) #11
  store i32 0, ptr %230, align 4, !tbaa !5
  br label %7209

7209:                                             ; preds = %7208
  %7210 = load i32, ptr @test_count, align 4, !tbaa !5
  %7211 = add nsw i32 %7210, 1
  store i32 %7211, ptr @test_count, align 4, !tbaa !5
  %7212 = getelementptr inbounds [69 x i8], ptr %228, i64 0, i64 0
  %7213 = getelementptr inbounds [200 x i8], ptr %229, i64 0, i64 0
  %7214 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %7212, i64 noundef 69, i64 noundef 200, ptr noundef %7213, ptr noundef %230)
  %7215 = getelementptr inbounds %struct.s2n_result, ptr %231, i32 0, i32 0
  store i32 %7214, ptr %7215, align 4
  %7216 = getelementptr inbounds %struct.s2n_result, ptr %231, i32 0, i32 0
  %7217 = load i32, ptr %7216, align 4
  %7218 = call zeroext i1 @s2n_result_is_ok(i32 %7217)
  br i1 %7218, label %7272, label %7219

7219:                                             ; preds = %7209
  br label %7220

7220:                                             ; preds = %7219
  br label %7221

7221:                                             ; preds = %7220
  call void @llvm.lifetime.start.p0(i64 4, ptr %232) #11
  %7222 = call ptr @__errno_location() #12
  %7223 = load i32, ptr %7222, align 4, !tbaa !5
  store i32 %7223, ptr %232, align 4, !tbaa !5
  %7224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7225 = call i32 @s2n_print_stacktrace(ptr noundef %7224)
  %7226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7227 = trunc i8 %7226 to i1
  br i1 %7227, label %7228, label %7250

7228:                                             ; preds = %7221
  %7229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7230 = call i32 @fileno(ptr noundef %7229) #11
  %7231 = call i32 @isatty(i32 noundef %7230) #11
  %7232 = icmp ne i32 %7231, 0
  br i1 %7232, label %7233, label %7250

7233:                                             ; preds = %7228
  %7234 = load i32, ptr %232, align 4, !tbaa !5
  %7235 = call ptr @__errno_location() #12
  store i32 %7234, ptr %7235, align 4, !tbaa !5
  %7236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7237 = load i32, ptr @test_count, align 4, !tbaa !5
  %7238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7239 = load i32, ptr %7238, align 4, !tbaa !5
  %7240 = call ptr @s2n_strerror(i32 noundef %7239, ptr noundef @.str.4)
  %7241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7242 = load i32, ptr %7241, align 4, !tbaa !5
  %7243 = call ptr @s2n_strerror_debug(i32 noundef %7242, ptr noundef @.str.4)
  %7244 = call ptr @__errno_location() #12
  %7245 = load i32, ptr %7244, align 4, !tbaa !5
  %7246 = call ptr @strerror(i32 noundef %7245) #11
  %7247 = call ptr @__errno_location() #12
  %7248 = load i32, ptr %7247, align 4, !tbaa !5
  %7249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7236, ptr noundef @.str.2, i32 noundef %7237, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1065, ptr noundef %7240, ptr noundef %7243, ptr noundef %7246, i32 noundef %7248) #11
  br label %7267

7250:                                             ; preds = %7228, %7221
  %7251 = load i32, ptr %232, align 4, !tbaa !5
  %7252 = call ptr @__errno_location() #12
  store i32 %7251, ptr %7252, align 4, !tbaa !5
  %7253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7254 = load i32, ptr @test_count, align 4, !tbaa !5
  %7255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7256 = load i32, ptr %7255, align 4, !tbaa !5
  %7257 = call ptr @s2n_strerror(i32 noundef %7256, ptr noundef @.str.4)
  %7258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7259 = load i32, ptr %7258, align 4, !tbaa !5
  %7260 = call ptr @s2n_strerror_debug(i32 noundef %7259, ptr noundef @.str.4)
  %7261 = call ptr @__errno_location() #12
  %7262 = load i32, ptr %7261, align 4, !tbaa !5
  %7263 = call ptr @strerror(i32 noundef %7262) #11
  %7264 = call ptr @__errno_location() #12
  %7265 = load i32, ptr %7264, align 4, !tbaa !5
  %7266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7253, ptr noundef @.str.5, i32 noundef %7254, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1065, ptr noundef %7257, ptr noundef %7260, ptr noundef %7263, i32 noundef %7265) #11
  br label %7267

7267:                                             ; preds = %7250, %7233
  call void @llvm.lifetime.end.p0(i64 4, ptr %232) #11
  br label %7268

7268:                                             ; preds = %7267
  br label %7269

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

7270:                                             ; No predecessors!
  br label %7271

7271:                                             ; preds = %7270
  br label %7272

7272:                                             ; preds = %7271, %7209
  br label %7273

7273:                                             ; preds = %7272
  br label %7274

7274:                                             ; preds = %7273
  br label %7275

7275:                                             ; preds = %7274
  %7276 = load i32, ptr @test_count, align 4, !tbaa !5
  %7277 = add nsw i32 %7276, 1
  store i32 %7277, ptr @test_count, align 4, !tbaa !5
  %7278 = load i32, ptr %230, align 4, !tbaa !5
  %7279 = icmp ugt i32 %7278, 11
  br i1 %7279, label %7333, label %7280

7280:                                             ; preds = %7275
  br label %7281

7281:                                             ; preds = %7280
  br label %7282

7282:                                             ; preds = %7281
  call void @llvm.lifetime.start.p0(i64 4, ptr %233) #11
  %7283 = call ptr @__errno_location() #12
  %7284 = load i32, ptr %7283, align 4, !tbaa !5
  store i32 %7284, ptr %233, align 4, !tbaa !5
  %7285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7286 = call i32 @s2n_print_stacktrace(ptr noundef %7285)
  %7287 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7288 = trunc i8 %7287 to i1
  br i1 %7288, label %7289, label %7311

7289:                                             ; preds = %7282
  %7290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7291 = call i32 @fileno(ptr noundef %7290) #11
  %7292 = call i32 @isatty(i32 noundef %7291) #11
  %7293 = icmp ne i32 %7292, 0
  br i1 %7293, label %7294, label %7311

7294:                                             ; preds = %7289
  %7295 = load i32, ptr %233, align 4, !tbaa !5
  %7296 = call ptr @__errno_location() #12
  store i32 %7295, ptr %7296, align 4, !tbaa !5
  %7297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7298 = load i32, ptr @test_count, align 4, !tbaa !5
  %7299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7300 = load i32, ptr %7299, align 4, !tbaa !5
  %7301 = call ptr @s2n_strerror(i32 noundef %7300, ptr noundef @.str.4)
  %7302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7303 = load i32, ptr %7302, align 4, !tbaa !5
  %7304 = call ptr @s2n_strerror_debug(i32 noundef %7303, ptr noundef @.str.4)
  %7305 = call ptr @__errno_location() #12
  %7306 = load i32, ptr %7305, align 4, !tbaa !5
  %7307 = call ptr @strerror(i32 noundef %7306) #11
  %7308 = call ptr @__errno_location() #12
  %7309 = load i32, ptr %7308, align 4, !tbaa !5
  %7310 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7297, ptr noundef @.str.2, i32 noundef %7298, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1067, ptr noundef %7301, ptr noundef %7304, ptr noundef %7307, i32 noundef %7309) #11
  br label %7328

7311:                                             ; preds = %7289, %7282
  %7312 = load i32, ptr %233, align 4, !tbaa !5
  %7313 = call ptr @__errno_location() #12
  store i32 %7312, ptr %7313, align 4, !tbaa !5
  %7314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7315 = load i32, ptr @test_count, align 4, !tbaa !5
  %7316 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7317 = load i32, ptr %7316, align 4, !tbaa !5
  %7318 = call ptr @s2n_strerror(i32 noundef %7317, ptr noundef @.str.4)
  %7319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7320 = load i32, ptr %7319, align 4, !tbaa !5
  %7321 = call ptr @s2n_strerror_debug(i32 noundef %7320, ptr noundef @.str.4)
  %7322 = call ptr @__errno_location() #12
  %7323 = load i32, ptr %7322, align 4, !tbaa !5
  %7324 = call ptr @strerror(i32 noundef %7323) #11
  %7325 = call ptr @__errno_location() #12
  %7326 = load i32, ptr %7325, align 4, !tbaa !5
  %7327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7314, ptr noundef @.str.5, i32 noundef %7315, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1067, ptr noundef %7318, ptr noundef %7321, ptr noundef %7324, i32 noundef %7326) #11
  br label %7328

7328:                                             ; preds = %7311, %7294
  call void @llvm.lifetime.end.p0(i64 4, ptr %233) #11
  br label %7329

7329:                                             ; preds = %7328
  br label %7330

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

7331:                                             ; No predecessors!
  br label %7332

7332:                                             ; preds = %7331
  br label %7333

7333:                                             ; preds = %7332, %7275
  br label %7334

7334:                                             ; preds = %7333
  br label %7335

7335:                                             ; preds = %7334
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #11
  %7336 = getelementptr inbounds [200 x i8], ptr %229, i64 0, i64 11
  store ptr %7336, ptr %234, align 8, !tbaa !9
  br label %7337

7337:                                             ; preds = %7335
  %7338 = load i32, ptr @test_count, align 4, !tbaa !5
  %7339 = add nsw i32 %7338, 1
  store i32 %7339, ptr @test_count, align 4, !tbaa !5
  %7340 = load i32, ptr %230, align 4, !tbaa !5
  %7341 = zext i32 %7340 to i64
  %7342 = icmp uge i64 %7341, 70
  br i1 %7342, label %7396, label %7343

7343:                                             ; preds = %7337
  br label %7344

7344:                                             ; preds = %7343
  br label %7345

7345:                                             ; preds = %7344
  call void @llvm.lifetime.start.p0(i64 4, ptr %235) #11
  %7346 = call ptr @__errno_location() #12
  %7347 = load i32, ptr %7346, align 4, !tbaa !5
  store i32 %7347, ptr %235, align 4, !tbaa !5
  %7348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7349 = call i32 @s2n_print_stacktrace(ptr noundef %7348)
  %7350 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7351 = trunc i8 %7350 to i1
  br i1 %7351, label %7352, label %7374

7352:                                             ; preds = %7345
  %7353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7354 = call i32 @fileno(ptr noundef %7353) #11
  %7355 = call i32 @isatty(i32 noundef %7354) #11
  %7356 = icmp ne i32 %7355, 0
  br i1 %7356, label %7357, label %7374

7357:                                             ; preds = %7352
  %7358 = load i32, ptr %235, align 4, !tbaa !5
  %7359 = call ptr @__errno_location() #12
  store i32 %7358, ptr %7359, align 4, !tbaa !5
  %7360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7361 = load i32, ptr @test_count, align 4, !tbaa !5
  %7362 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7363 = load i32, ptr %7362, align 4, !tbaa !5
  %7364 = call ptr @s2n_strerror(i32 noundef %7363, ptr noundef @.str.4)
  %7365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7366 = load i32, ptr %7365, align 4, !tbaa !5
  %7367 = call ptr @s2n_strerror_debug(i32 noundef %7366, ptr noundef @.str.4)
  %7368 = call ptr @__errno_location() #12
  %7369 = load i32, ptr %7368, align 4, !tbaa !5
  %7370 = call ptr @strerror(i32 noundef %7369) #11
  %7371 = call ptr @__errno_location() #12
  %7372 = load i32, ptr %7371, align 4, !tbaa !5
  %7373 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7360, ptr noundef @.str.2, i32 noundef %7361, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1069, ptr noundef %7364, ptr noundef %7367, ptr noundef %7370, i32 noundef %7372) #11
  br label %7391

7374:                                             ; preds = %7352, %7345
  %7375 = load i32, ptr %235, align 4, !tbaa !5
  %7376 = call ptr @__errno_location() #12
  store i32 %7375, ptr %7376, align 4, !tbaa !5
  %7377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7378 = load i32, ptr @test_count, align 4, !tbaa !5
  %7379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7380 = load i32, ptr %7379, align 4, !tbaa !5
  %7381 = call ptr @s2n_strerror(i32 noundef %7380, ptr noundef @.str.4)
  %7382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7383 = load i32, ptr %7382, align 4, !tbaa !5
  %7384 = call ptr @s2n_strerror_debug(i32 noundef %7383, ptr noundef @.str.4)
  %7385 = call ptr @__errno_location() #12
  %7386 = load i32, ptr %7385, align 4, !tbaa !5
  %7387 = call ptr @strerror(i32 noundef %7386) #11
  %7388 = call ptr @__errno_location() #12
  %7389 = load i32, ptr %7388, align 4, !tbaa !5
  %7390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7377, ptr noundef @.str.5, i32 noundef %7378, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1069, ptr noundef %7381, ptr noundef %7384, ptr noundef %7387, i32 noundef %7389) #11
  br label %7391

7391:                                             ; preds = %7374, %7357
  call void @llvm.lifetime.end.p0(i64 4, ptr %235) #11
  br label %7392

7392:                                             ; preds = %7391
  br label %7393

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

7394:                                             ; No predecessors!
  br label %7395

7395:                                             ; preds = %7394
  br label %7396

7396:                                             ; preds = %7395, %7337
  br label %7397

7397:                                             ; preds = %7396
  br label %7398

7398:                                             ; preds = %7397
  br label %7399

7399:                                             ; preds = %7398
  br label %7400

7400:                                             ; preds = %7399
  %7401 = load i32, ptr @test_count, align 4, !tbaa !5
  %7402 = add nsw i32 %7401, 1
  store i32 %7402, ptr @test_count, align 4, !tbaa !5
  %7403 = load ptr, ptr %234, align 8, !tbaa !9
  %7404 = getelementptr inbounds [60 x i8], ptr %226, i64 0, i64 0
  %7405 = call i32 @memcmp(ptr noundef %7403, ptr noundef %7404, i64 noundef 59) #14
  %7406 = icmp eq i32 %7405, 0
  br i1 %7406, label %7460, label %7407

7407:                                             ; preds = %7400
  br label %7408

7408:                                             ; preds = %7407
  br label %7409

7409:                                             ; preds = %7408
  call void @llvm.lifetime.start.p0(i64 4, ptr %236) #11
  %7410 = call ptr @__errno_location() #12
  %7411 = load i32, ptr %7410, align 4, !tbaa !5
  store i32 %7411, ptr %236, align 4, !tbaa !5
  %7412 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7413 = call i32 @s2n_print_stacktrace(ptr noundef %7412)
  %7414 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7415 = trunc i8 %7414 to i1
  br i1 %7415, label %7416, label %7438

7416:                                             ; preds = %7409
  %7417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7418 = call i32 @fileno(ptr noundef %7417) #11
  %7419 = call i32 @isatty(i32 noundef %7418) #11
  %7420 = icmp ne i32 %7419, 0
  br i1 %7420, label %7421, label %7438

7421:                                             ; preds = %7416
  %7422 = load i32, ptr %236, align 4, !tbaa !5
  %7423 = call ptr @__errno_location() #12
  store i32 %7422, ptr %7423, align 4, !tbaa !5
  %7424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7425 = load i32, ptr @test_count, align 4, !tbaa !5
  %7426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7427 = load i32, ptr %7426, align 4, !tbaa !5
  %7428 = call ptr @s2n_strerror(i32 noundef %7427, ptr noundef @.str.4)
  %7429 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7430 = load i32, ptr %7429, align 4, !tbaa !5
  %7431 = call ptr @s2n_strerror_debug(i32 noundef %7430, ptr noundef @.str.4)
  %7432 = call ptr @__errno_location() #12
  %7433 = load i32, ptr %7432, align 4, !tbaa !5
  %7434 = call ptr @strerror(i32 noundef %7433) #11
  %7435 = call ptr @__errno_location() #12
  %7436 = load i32, ptr %7435, align 4, !tbaa !5
  %7437 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7424, ptr noundef @.str.2, i32 noundef %7425, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1070, ptr noundef %7428, ptr noundef %7431, ptr noundef %7434, i32 noundef %7436) #11
  br label %7455

7438:                                             ; preds = %7416, %7409
  %7439 = load i32, ptr %236, align 4, !tbaa !5
  %7440 = call ptr @__errno_location() #12
  store i32 %7439, ptr %7440, align 4, !tbaa !5
  %7441 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7442 = load i32, ptr @test_count, align 4, !tbaa !5
  %7443 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7444 = load i32, ptr %7443, align 4, !tbaa !5
  %7445 = call ptr @s2n_strerror(i32 noundef %7444, ptr noundef @.str.4)
  %7446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7447 = load i32, ptr %7446, align 4, !tbaa !5
  %7448 = call ptr @s2n_strerror_debug(i32 noundef %7447, ptr noundef @.str.4)
  %7449 = call ptr @__errno_location() #12
  %7450 = load i32, ptr %7449, align 4, !tbaa !5
  %7451 = call ptr @strerror(i32 noundef %7450) #11
  %7452 = call ptr @__errno_location() #12
  %7453 = load i32, ptr %7452, align 4, !tbaa !5
  %7454 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7441, ptr noundef @.str.5, i32 noundef %7442, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1070, ptr noundef %7445, ptr noundef %7448, ptr noundef %7451, i32 noundef %7453) #11
  br label %7455

7455:                                             ; preds = %7438, %7421
  call void @llvm.lifetime.end.p0(i64 4, ptr %236) #11
  br label %7456

7456:                                             ; preds = %7455
  br label %7457

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

7458:                                             ; No predecessors!
  br label %7459

7459:                                             ; preds = %7458
  br label %7460

7460:                                             ; preds = %7459, %7400
  br label %7461

7461:                                             ; preds = %7460
  br label %7462

7462:                                             ; preds = %7461
  br label %7463

7463:                                             ; preds = %7462
  br label %7464

7464:                                             ; preds = %7463
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %230) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %229) #11
  call void @llvm.lifetime.end.p0(i64 69, ptr %228) #11
  call void @llvm.lifetime.end.p0(i64 65, ptr %227) #11
  call void @llvm.lifetime.start.p0(i64 65, ptr %237) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %237, ptr align 16 @__const.main._bytes_message.90, i64 65, i1 false)
  br label %7465

7465:                                             ; preds = %7464
  %7466 = load i32, ptr @test_count, align 4, !tbaa !5
  %7467 = add nsw i32 %7466, 1
  store i32 %7467, ptr @test_count, align 4, !tbaa !5
  br label %7468

7468:                                             ; preds = %7465
  br label %7469

7469:                                             ; preds = %7468
  call void @llvm.lifetime.start.p0(i64 69, ptr %238) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %238, ptr align 16 @__const.main.bytes.91, i64 69, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %239) #11
  call void @llvm.memset.p0.i64(ptr align 16 %239, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %240) #11
  store i32 0, ptr %240, align 4, !tbaa !5
  br label %7470

7470:                                             ; preds = %7469
  %7471 = load i32, ptr @test_count, align 4, !tbaa !5
  %7472 = add nsw i32 %7471, 1
  store i32 %7472, ptr @test_count, align 4, !tbaa !5
  %7473 = getelementptr inbounds [69 x i8], ptr %238, i64 0, i64 0
  %7474 = getelementptr inbounds [200 x i8], ptr %239, i64 0, i64 0
  %7475 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %7473, i64 noundef 69, i64 noundef 200, ptr noundef %7474, ptr noundef %240)
  %7476 = getelementptr inbounds %struct.s2n_result, ptr %241, i32 0, i32 0
  store i32 %7475, ptr %7476, align 4
  %7477 = getelementptr inbounds %struct.s2n_result, ptr %241, i32 0, i32 0
  %7478 = load i32, ptr %7477, align 4
  %7479 = call zeroext i1 @s2n_result_is_ok(i32 %7478)
  br i1 %7479, label %7533, label %7480

7480:                                             ; preds = %7470
  br label %7481

7481:                                             ; preds = %7480
  br label %7482

7482:                                             ; preds = %7481
  call void @llvm.lifetime.start.p0(i64 4, ptr %242) #11
  %7483 = call ptr @__errno_location() #12
  %7484 = load i32, ptr %7483, align 4, !tbaa !5
  store i32 %7484, ptr %242, align 4, !tbaa !5
  %7485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7486 = call i32 @s2n_print_stacktrace(ptr noundef %7485)
  %7487 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7488 = trunc i8 %7487 to i1
  br i1 %7488, label %7489, label %7511

7489:                                             ; preds = %7482
  %7490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7491 = call i32 @fileno(ptr noundef %7490) #11
  %7492 = call i32 @isatty(i32 noundef %7491) #11
  %7493 = icmp ne i32 %7492, 0
  br i1 %7493, label %7494, label %7511

7494:                                             ; preds = %7489
  %7495 = load i32, ptr %242, align 4, !tbaa !5
  %7496 = call ptr @__errno_location() #12
  store i32 %7495, ptr %7496, align 4, !tbaa !5
  %7497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7498 = load i32, ptr @test_count, align 4, !tbaa !5
  %7499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7500 = load i32, ptr %7499, align 4, !tbaa !5
  %7501 = call ptr @s2n_strerror(i32 noundef %7500, ptr noundef @.str.4)
  %7502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7503 = load i32, ptr %7502, align 4, !tbaa !5
  %7504 = call ptr @s2n_strerror_debug(i32 noundef %7503, ptr noundef @.str.4)
  %7505 = call ptr @__errno_location() #12
  %7506 = load i32, ptr %7505, align 4, !tbaa !5
  %7507 = call ptr @strerror(i32 noundef %7506) #11
  %7508 = call ptr @__errno_location() #12
  %7509 = load i32, ptr %7508, align 4, !tbaa !5
  %7510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7497, ptr noundef @.str.2, i32 noundef %7498, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1091, ptr noundef %7501, ptr noundef %7504, ptr noundef %7507, i32 noundef %7509) #11
  br label %7528

7511:                                             ; preds = %7489, %7482
  %7512 = load i32, ptr %242, align 4, !tbaa !5
  %7513 = call ptr @__errno_location() #12
  store i32 %7512, ptr %7513, align 4, !tbaa !5
  %7514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7515 = load i32, ptr @test_count, align 4, !tbaa !5
  %7516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7517 = load i32, ptr %7516, align 4, !tbaa !5
  %7518 = call ptr @s2n_strerror(i32 noundef %7517, ptr noundef @.str.4)
  %7519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7520 = load i32, ptr %7519, align 4, !tbaa !5
  %7521 = call ptr @s2n_strerror_debug(i32 noundef %7520, ptr noundef @.str.4)
  %7522 = call ptr @__errno_location() #12
  %7523 = load i32, ptr %7522, align 4, !tbaa !5
  %7524 = call ptr @strerror(i32 noundef %7523) #11
  %7525 = call ptr @__errno_location() #12
  %7526 = load i32, ptr %7525, align 4, !tbaa !5
  %7527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7514, ptr noundef @.str.5, i32 noundef %7515, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1091, ptr noundef %7518, ptr noundef %7521, ptr noundef %7524, i32 noundef %7526) #11
  br label %7528

7528:                                             ; preds = %7511, %7494
  call void @llvm.lifetime.end.p0(i64 4, ptr %242) #11
  br label %7529

7529:                                             ; preds = %7528
  br label %7530

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

7531:                                             ; No predecessors!
  br label %7532

7532:                                             ; preds = %7531
  br label %7533

7533:                                             ; preds = %7532, %7470
  br label %7534

7534:                                             ; preds = %7533
  br label %7535

7535:                                             ; preds = %7534
  br label %7536

7536:                                             ; preds = %7535
  %7537 = load i32, ptr @test_count, align 4, !tbaa !5
  %7538 = add nsw i32 %7537, 1
  store i32 %7538, ptr @test_count, align 4, !tbaa !5
  %7539 = load i32, ptr %240, align 4, !tbaa !5
  %7540 = icmp ugt i32 %7539, 11
  br i1 %7540, label %7594, label %7541

7541:                                             ; preds = %7536
  br label %7542

7542:                                             ; preds = %7541
  br label %7543

7543:                                             ; preds = %7542
  call void @llvm.lifetime.start.p0(i64 4, ptr %243) #11
  %7544 = call ptr @__errno_location() #12
  %7545 = load i32, ptr %7544, align 4, !tbaa !5
  store i32 %7545, ptr %243, align 4, !tbaa !5
  %7546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7547 = call i32 @s2n_print_stacktrace(ptr noundef %7546)
  %7548 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7549 = trunc i8 %7548 to i1
  br i1 %7549, label %7550, label %7572

7550:                                             ; preds = %7543
  %7551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7552 = call i32 @fileno(ptr noundef %7551) #11
  %7553 = call i32 @isatty(i32 noundef %7552) #11
  %7554 = icmp ne i32 %7553, 0
  br i1 %7554, label %7555, label %7572

7555:                                             ; preds = %7550
  %7556 = load i32, ptr %243, align 4, !tbaa !5
  %7557 = call ptr @__errno_location() #12
  store i32 %7556, ptr %7557, align 4, !tbaa !5
  %7558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7559 = load i32, ptr @test_count, align 4, !tbaa !5
  %7560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7561 = load i32, ptr %7560, align 4, !tbaa !5
  %7562 = call ptr @s2n_strerror(i32 noundef %7561, ptr noundef @.str.4)
  %7563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7564 = load i32, ptr %7563, align 4, !tbaa !5
  %7565 = call ptr @s2n_strerror_debug(i32 noundef %7564, ptr noundef @.str.4)
  %7566 = call ptr @__errno_location() #12
  %7567 = load i32, ptr %7566, align 4, !tbaa !5
  %7568 = call ptr @strerror(i32 noundef %7567) #11
  %7569 = call ptr @__errno_location() #12
  %7570 = load i32, ptr %7569, align 4, !tbaa !5
  %7571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7558, ptr noundef @.str.2, i32 noundef %7559, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1093, ptr noundef %7562, ptr noundef %7565, ptr noundef %7568, i32 noundef %7570) #11
  br label %7589

7572:                                             ; preds = %7550, %7543
  %7573 = load i32, ptr %243, align 4, !tbaa !5
  %7574 = call ptr @__errno_location() #12
  store i32 %7573, ptr %7574, align 4, !tbaa !5
  %7575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7576 = load i32, ptr @test_count, align 4, !tbaa !5
  %7577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7578 = load i32, ptr %7577, align 4, !tbaa !5
  %7579 = call ptr @s2n_strerror(i32 noundef %7578, ptr noundef @.str.4)
  %7580 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7581 = load i32, ptr %7580, align 4, !tbaa !5
  %7582 = call ptr @s2n_strerror_debug(i32 noundef %7581, ptr noundef @.str.4)
  %7583 = call ptr @__errno_location() #12
  %7584 = load i32, ptr %7583, align 4, !tbaa !5
  %7585 = call ptr @strerror(i32 noundef %7584) #11
  %7586 = call ptr @__errno_location() #12
  %7587 = load i32, ptr %7586, align 4, !tbaa !5
  %7588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7575, ptr noundef @.str.5, i32 noundef %7576, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1093, ptr noundef %7579, ptr noundef %7582, ptr noundef %7585, i32 noundef %7587) #11
  br label %7589

7589:                                             ; preds = %7572, %7555
  call void @llvm.lifetime.end.p0(i64 4, ptr %243) #11
  br label %7590

7590:                                             ; preds = %7589
  br label %7591

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

7592:                                             ; No predecessors!
  br label %7593

7593:                                             ; preds = %7592
  br label %7594

7594:                                             ; preds = %7593, %7536
  br label %7595

7595:                                             ; preds = %7594
  br label %7596

7596:                                             ; preds = %7595
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #11
  %7597 = getelementptr inbounds [200 x i8], ptr %239, i64 0, i64 11
  store ptr %7597, ptr %244, align 8, !tbaa !9
  br label %7598

7598:                                             ; preds = %7596
  %7599 = load i32, ptr @test_count, align 4, !tbaa !5
  %7600 = add nsw i32 %7599, 1
  store i32 %7600, ptr @test_count, align 4, !tbaa !5
  %7601 = load i32, ptr %240, align 4, !tbaa !5
  %7602 = zext i32 %7601 to i64
  %7603 = icmp uge i64 %7602, 70
  br i1 %7603, label %7657, label %7604

7604:                                             ; preds = %7598
  br label %7605

7605:                                             ; preds = %7604
  br label %7606

7606:                                             ; preds = %7605
  call void @llvm.lifetime.start.p0(i64 4, ptr %245) #11
  %7607 = call ptr @__errno_location() #12
  %7608 = load i32, ptr %7607, align 4, !tbaa !5
  store i32 %7608, ptr %245, align 4, !tbaa !5
  %7609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7610 = call i32 @s2n_print_stacktrace(ptr noundef %7609)
  %7611 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7612 = trunc i8 %7611 to i1
  br i1 %7612, label %7613, label %7635

7613:                                             ; preds = %7606
  %7614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7615 = call i32 @fileno(ptr noundef %7614) #11
  %7616 = call i32 @isatty(i32 noundef %7615) #11
  %7617 = icmp ne i32 %7616, 0
  br i1 %7617, label %7618, label %7635

7618:                                             ; preds = %7613
  %7619 = load i32, ptr %245, align 4, !tbaa !5
  %7620 = call ptr @__errno_location() #12
  store i32 %7619, ptr %7620, align 4, !tbaa !5
  %7621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7622 = load i32, ptr @test_count, align 4, !tbaa !5
  %7623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7624 = load i32, ptr %7623, align 4, !tbaa !5
  %7625 = call ptr @s2n_strerror(i32 noundef %7624, ptr noundef @.str.4)
  %7626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7627 = load i32, ptr %7626, align 4, !tbaa !5
  %7628 = call ptr @s2n_strerror_debug(i32 noundef %7627, ptr noundef @.str.4)
  %7629 = call ptr @__errno_location() #12
  %7630 = load i32, ptr %7629, align 4, !tbaa !5
  %7631 = call ptr @strerror(i32 noundef %7630) #11
  %7632 = call ptr @__errno_location() #12
  %7633 = load i32, ptr %7632, align 4, !tbaa !5
  %7634 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7621, ptr noundef @.str.2, i32 noundef %7622, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1095, ptr noundef %7625, ptr noundef %7628, ptr noundef %7631, i32 noundef %7633) #11
  br label %7652

7635:                                             ; preds = %7613, %7606
  %7636 = load i32, ptr %245, align 4, !tbaa !5
  %7637 = call ptr @__errno_location() #12
  store i32 %7636, ptr %7637, align 4, !tbaa !5
  %7638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7639 = load i32, ptr @test_count, align 4, !tbaa !5
  %7640 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7641 = load i32, ptr %7640, align 4, !tbaa !5
  %7642 = call ptr @s2n_strerror(i32 noundef %7641, ptr noundef @.str.4)
  %7643 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7644 = load i32, ptr %7643, align 4, !tbaa !5
  %7645 = call ptr @s2n_strerror_debug(i32 noundef %7644, ptr noundef @.str.4)
  %7646 = call ptr @__errno_location() #12
  %7647 = load i32, ptr %7646, align 4, !tbaa !5
  %7648 = call ptr @strerror(i32 noundef %7647) #11
  %7649 = call ptr @__errno_location() #12
  %7650 = load i32, ptr %7649, align 4, !tbaa !5
  %7651 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7638, ptr noundef @.str.5, i32 noundef %7639, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1095, ptr noundef %7642, ptr noundef %7645, ptr noundef %7648, i32 noundef %7650) #11
  br label %7652

7652:                                             ; preds = %7635, %7618
  call void @llvm.lifetime.end.p0(i64 4, ptr %245) #11
  br label %7653

7653:                                             ; preds = %7652
  br label %7654

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

7655:                                             ; No predecessors!
  br label %7656

7656:                                             ; preds = %7655
  br label %7657

7657:                                             ; preds = %7656, %7598
  br label %7658

7658:                                             ; preds = %7657
  br label %7659

7659:                                             ; preds = %7658
  br label %7660

7660:                                             ; preds = %7659
  br label %7661

7661:                                             ; preds = %7660
  %7662 = load i32, ptr @test_count, align 4, !tbaa !5
  %7663 = add nsw i32 %7662, 1
  store i32 %7663, ptr @test_count, align 4, !tbaa !5
  %7664 = load ptr, ptr %244, align 8, !tbaa !9
  %7665 = getelementptr inbounds [60 x i8], ptr %226, i64 0, i64 0
  %7666 = call i32 @memcmp(ptr noundef %7664, ptr noundef %7665, i64 noundef 59) #14
  %7667 = icmp eq i32 %7666, 0
  br i1 %7667, label %7721, label %7668

7668:                                             ; preds = %7661
  br label %7669

7669:                                             ; preds = %7668
  br label %7670

7670:                                             ; preds = %7669
  call void @llvm.lifetime.start.p0(i64 4, ptr %246) #11
  %7671 = call ptr @__errno_location() #12
  %7672 = load i32, ptr %7671, align 4, !tbaa !5
  store i32 %7672, ptr %246, align 4, !tbaa !5
  %7673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7674 = call i32 @s2n_print_stacktrace(ptr noundef %7673)
  %7675 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7676 = trunc i8 %7675 to i1
  br i1 %7676, label %7677, label %7699

7677:                                             ; preds = %7670
  %7678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7679 = call i32 @fileno(ptr noundef %7678) #11
  %7680 = call i32 @isatty(i32 noundef %7679) #11
  %7681 = icmp ne i32 %7680, 0
  br i1 %7681, label %7682, label %7699

7682:                                             ; preds = %7677
  %7683 = load i32, ptr %246, align 4, !tbaa !5
  %7684 = call ptr @__errno_location() #12
  store i32 %7683, ptr %7684, align 4, !tbaa !5
  %7685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7686 = load i32, ptr @test_count, align 4, !tbaa !5
  %7687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7688 = load i32, ptr %7687, align 4, !tbaa !5
  %7689 = call ptr @s2n_strerror(i32 noundef %7688, ptr noundef @.str.4)
  %7690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7691 = load i32, ptr %7690, align 4, !tbaa !5
  %7692 = call ptr @s2n_strerror_debug(i32 noundef %7691, ptr noundef @.str.4)
  %7693 = call ptr @__errno_location() #12
  %7694 = load i32, ptr %7693, align 4, !tbaa !5
  %7695 = call ptr @strerror(i32 noundef %7694) #11
  %7696 = call ptr @__errno_location() #12
  %7697 = load i32, ptr %7696, align 4, !tbaa !5
  %7698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7685, ptr noundef @.str.2, i32 noundef %7686, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1096, ptr noundef %7689, ptr noundef %7692, ptr noundef %7695, i32 noundef %7697) #11
  br label %7716

7699:                                             ; preds = %7677, %7670
  %7700 = load i32, ptr %246, align 4, !tbaa !5
  %7701 = call ptr @__errno_location() #12
  store i32 %7700, ptr %7701, align 4, !tbaa !5
  %7702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7703 = load i32, ptr @test_count, align 4, !tbaa !5
  %7704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7705 = load i32, ptr %7704, align 4, !tbaa !5
  %7706 = call ptr @s2n_strerror(i32 noundef %7705, ptr noundef @.str.4)
  %7707 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7708 = load i32, ptr %7707, align 4, !tbaa !5
  %7709 = call ptr @s2n_strerror_debug(i32 noundef %7708, ptr noundef @.str.4)
  %7710 = call ptr @__errno_location() #12
  %7711 = load i32, ptr %7710, align 4, !tbaa !5
  %7712 = call ptr @strerror(i32 noundef %7711) #11
  %7713 = call ptr @__errno_location() #12
  %7714 = load i32, ptr %7713, align 4, !tbaa !5
  %7715 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7702, ptr noundef @.str.5, i32 noundef %7703, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1096, ptr noundef %7706, ptr noundef %7709, ptr noundef %7712, i32 noundef %7714) #11
  br label %7716

7716:                                             ; preds = %7699, %7682
  call void @llvm.lifetime.end.p0(i64 4, ptr %246) #11
  br label %7717

7717:                                             ; preds = %7716
  br label %7718

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

7719:                                             ; No predecessors!
  br label %7720

7720:                                             ; preds = %7719
  br label %7721

7721:                                             ; preds = %7720, %7661
  br label %7722

7722:                                             ; preds = %7721
  br label %7723

7723:                                             ; preds = %7722
  br label %7724

7724:                                             ; preds = %7723
  br label %7725

7725:                                             ; preds = %7724
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %240) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %239) #11
  call void @llvm.lifetime.end.p0(i64 69, ptr %238) #11
  call void @llvm.lifetime.end.p0(i64 65, ptr %237) #11
  call void @llvm.lifetime.start.p0(i64 65, ptr %247) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %247, ptr align 16 @__const.main._bytes_message.92, i64 65, i1 false)
  br label %7726

7726:                                             ; preds = %7725
  %7727 = load i32, ptr @test_count, align 4, !tbaa !5
  %7728 = add nsw i32 %7727, 1
  store i32 %7728, ptr @test_count, align 4, !tbaa !5
  br label %7729

7729:                                             ; preds = %7726
  br label %7730

7730:                                             ; preds = %7729
  call void @llvm.lifetime.start.p0(i64 69, ptr %248) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %248, ptr align 16 @__const.main.bytes.93, i64 69, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %249) #11
  call void @llvm.memset.p0.i64(ptr align 16 %249, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %250) #11
  store i32 0, ptr %250, align 4, !tbaa !5
  br label %7731

7731:                                             ; preds = %7730
  %7732 = load i32, ptr @test_count, align 4, !tbaa !5
  %7733 = add nsw i32 %7732, 1
  store i32 %7733, ptr @test_count, align 4, !tbaa !5
  %7734 = getelementptr inbounds [69 x i8], ptr %248, i64 0, i64 0
  %7735 = getelementptr inbounds [200 x i8], ptr %249, i64 0, i64 0
  %7736 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %7734, i64 noundef 69, i64 noundef 200, ptr noundef %7735, ptr noundef %250)
  %7737 = getelementptr inbounds %struct.s2n_result, ptr %251, i32 0, i32 0
  store i32 %7736, ptr %7737, align 4
  %7738 = getelementptr inbounds %struct.s2n_result, ptr %251, i32 0, i32 0
  %7739 = load i32, ptr %7738, align 4
  %7740 = call zeroext i1 @s2n_result_is_ok(i32 %7739)
  br i1 %7740, label %7794, label %7741

7741:                                             ; preds = %7731
  br label %7742

7742:                                             ; preds = %7741
  br label %7743

7743:                                             ; preds = %7742
  call void @llvm.lifetime.start.p0(i64 4, ptr %252) #11
  %7744 = call ptr @__errno_location() #12
  %7745 = load i32, ptr %7744, align 4, !tbaa !5
  store i32 %7745, ptr %252, align 4, !tbaa !5
  %7746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7747 = call i32 @s2n_print_stacktrace(ptr noundef %7746)
  %7748 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7749 = trunc i8 %7748 to i1
  br i1 %7749, label %7750, label %7772

7750:                                             ; preds = %7743
  %7751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7752 = call i32 @fileno(ptr noundef %7751) #11
  %7753 = call i32 @isatty(i32 noundef %7752) #11
  %7754 = icmp ne i32 %7753, 0
  br i1 %7754, label %7755, label %7772

7755:                                             ; preds = %7750
  %7756 = load i32, ptr %252, align 4, !tbaa !5
  %7757 = call ptr @__errno_location() #12
  store i32 %7756, ptr %7757, align 4, !tbaa !5
  %7758 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7759 = load i32, ptr @test_count, align 4, !tbaa !5
  %7760 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7761 = load i32, ptr %7760, align 4, !tbaa !5
  %7762 = call ptr @s2n_strerror(i32 noundef %7761, ptr noundef @.str.4)
  %7763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7764 = load i32, ptr %7763, align 4, !tbaa !5
  %7765 = call ptr @s2n_strerror_debug(i32 noundef %7764, ptr noundef @.str.4)
  %7766 = call ptr @__errno_location() #12
  %7767 = load i32, ptr %7766, align 4, !tbaa !5
  %7768 = call ptr @strerror(i32 noundef %7767) #11
  %7769 = call ptr @__errno_location() #12
  %7770 = load i32, ptr %7769, align 4, !tbaa !5
  %7771 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7758, ptr noundef @.str.2, i32 noundef %7759, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1117, ptr noundef %7762, ptr noundef %7765, ptr noundef %7768, i32 noundef %7770) #11
  br label %7789

7772:                                             ; preds = %7750, %7743
  %7773 = load i32, ptr %252, align 4, !tbaa !5
  %7774 = call ptr @__errno_location() #12
  store i32 %7773, ptr %7774, align 4, !tbaa !5
  %7775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7776 = load i32, ptr @test_count, align 4, !tbaa !5
  %7777 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7778 = load i32, ptr %7777, align 4, !tbaa !5
  %7779 = call ptr @s2n_strerror(i32 noundef %7778, ptr noundef @.str.4)
  %7780 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7781 = load i32, ptr %7780, align 4, !tbaa !5
  %7782 = call ptr @s2n_strerror_debug(i32 noundef %7781, ptr noundef @.str.4)
  %7783 = call ptr @__errno_location() #12
  %7784 = load i32, ptr %7783, align 4, !tbaa !5
  %7785 = call ptr @strerror(i32 noundef %7784) #11
  %7786 = call ptr @__errno_location() #12
  %7787 = load i32, ptr %7786, align 4, !tbaa !5
  %7788 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7775, ptr noundef @.str.5, i32 noundef %7776, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1117, ptr noundef %7779, ptr noundef %7782, ptr noundef %7785, i32 noundef %7787) #11
  br label %7789

7789:                                             ; preds = %7772, %7755
  call void @llvm.lifetime.end.p0(i64 4, ptr %252) #11
  br label %7790

7790:                                             ; preds = %7789
  br label %7791

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

7792:                                             ; No predecessors!
  br label %7793

7793:                                             ; preds = %7792
  br label %7794

7794:                                             ; preds = %7793, %7731
  br label %7795

7795:                                             ; preds = %7794
  br label %7796

7796:                                             ; preds = %7795
  br label %7797

7797:                                             ; preds = %7796
  %7798 = load i32, ptr @test_count, align 4, !tbaa !5
  %7799 = add nsw i32 %7798, 1
  store i32 %7799, ptr @test_count, align 4, !tbaa !5
  %7800 = load i32, ptr %250, align 4, !tbaa !5
  %7801 = icmp ugt i32 %7800, 11
  br i1 %7801, label %7855, label %7802

7802:                                             ; preds = %7797
  br label %7803

7803:                                             ; preds = %7802
  br label %7804

7804:                                             ; preds = %7803
  call void @llvm.lifetime.start.p0(i64 4, ptr %253) #11
  %7805 = call ptr @__errno_location() #12
  %7806 = load i32, ptr %7805, align 4, !tbaa !5
  store i32 %7806, ptr %253, align 4, !tbaa !5
  %7807 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7808 = call i32 @s2n_print_stacktrace(ptr noundef %7807)
  %7809 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7810 = trunc i8 %7809 to i1
  br i1 %7810, label %7811, label %7833

7811:                                             ; preds = %7804
  %7812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7813 = call i32 @fileno(ptr noundef %7812) #11
  %7814 = call i32 @isatty(i32 noundef %7813) #11
  %7815 = icmp ne i32 %7814, 0
  br i1 %7815, label %7816, label %7833

7816:                                             ; preds = %7811
  %7817 = load i32, ptr %253, align 4, !tbaa !5
  %7818 = call ptr @__errno_location() #12
  store i32 %7817, ptr %7818, align 4, !tbaa !5
  %7819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7820 = load i32, ptr @test_count, align 4, !tbaa !5
  %7821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7822 = load i32, ptr %7821, align 4, !tbaa !5
  %7823 = call ptr @s2n_strerror(i32 noundef %7822, ptr noundef @.str.4)
  %7824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7825 = load i32, ptr %7824, align 4, !tbaa !5
  %7826 = call ptr @s2n_strerror_debug(i32 noundef %7825, ptr noundef @.str.4)
  %7827 = call ptr @__errno_location() #12
  %7828 = load i32, ptr %7827, align 4, !tbaa !5
  %7829 = call ptr @strerror(i32 noundef %7828) #11
  %7830 = call ptr @__errno_location() #12
  %7831 = load i32, ptr %7830, align 4, !tbaa !5
  %7832 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7819, ptr noundef @.str.2, i32 noundef %7820, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1119, ptr noundef %7823, ptr noundef %7826, ptr noundef %7829, i32 noundef %7831) #11
  br label %7850

7833:                                             ; preds = %7811, %7804
  %7834 = load i32, ptr %253, align 4, !tbaa !5
  %7835 = call ptr @__errno_location() #12
  store i32 %7834, ptr %7835, align 4, !tbaa !5
  %7836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7837 = load i32, ptr @test_count, align 4, !tbaa !5
  %7838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7839 = load i32, ptr %7838, align 4, !tbaa !5
  %7840 = call ptr @s2n_strerror(i32 noundef %7839, ptr noundef @.str.4)
  %7841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7842 = load i32, ptr %7841, align 4, !tbaa !5
  %7843 = call ptr @s2n_strerror_debug(i32 noundef %7842, ptr noundef @.str.4)
  %7844 = call ptr @__errno_location() #12
  %7845 = load i32, ptr %7844, align 4, !tbaa !5
  %7846 = call ptr @strerror(i32 noundef %7845) #11
  %7847 = call ptr @__errno_location() #12
  %7848 = load i32, ptr %7847, align 4, !tbaa !5
  %7849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7836, ptr noundef @.str.5, i32 noundef %7837, ptr noundef @.str.81, ptr noundef @.str.1, i32 noundef 1119, ptr noundef %7840, ptr noundef %7843, ptr noundef %7846, i32 noundef %7848) #11
  br label %7850

7850:                                             ; preds = %7833, %7816
  call void @llvm.lifetime.end.p0(i64 4, ptr %253) #11
  br label %7851

7851:                                             ; preds = %7850
  br label %7852

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

7853:                                             ; No predecessors!
  br label %7854

7854:                                             ; preds = %7853
  br label %7855

7855:                                             ; preds = %7854, %7797
  br label %7856

7856:                                             ; preds = %7855
  br label %7857

7857:                                             ; preds = %7856
  call void @llvm.lifetime.start.p0(i64 8, ptr %254) #11
  %7858 = getelementptr inbounds [200 x i8], ptr %249, i64 0, i64 11
  store ptr %7858, ptr %254, align 8, !tbaa !9
  br label %7859

7859:                                             ; preds = %7857
  %7860 = load i32, ptr @test_count, align 4, !tbaa !5
  %7861 = add nsw i32 %7860, 1
  store i32 %7861, ptr @test_count, align 4, !tbaa !5
  %7862 = load i32, ptr %250, align 4, !tbaa !5
  %7863 = zext i32 %7862 to i64
  %7864 = icmp uge i64 %7863, 70
  br i1 %7864, label %7918, label %7865

7865:                                             ; preds = %7859
  br label %7866

7866:                                             ; preds = %7865
  br label %7867

7867:                                             ; preds = %7866
  call void @llvm.lifetime.start.p0(i64 4, ptr %255) #11
  %7868 = call ptr @__errno_location() #12
  %7869 = load i32, ptr %7868, align 4, !tbaa !5
  store i32 %7869, ptr %255, align 4, !tbaa !5
  %7870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7871 = call i32 @s2n_print_stacktrace(ptr noundef %7870)
  %7872 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7873 = trunc i8 %7872 to i1
  br i1 %7873, label %7874, label %7896

7874:                                             ; preds = %7867
  %7875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7876 = call i32 @fileno(ptr noundef %7875) #11
  %7877 = call i32 @isatty(i32 noundef %7876) #11
  %7878 = icmp ne i32 %7877, 0
  br i1 %7878, label %7879, label %7896

7879:                                             ; preds = %7874
  %7880 = load i32, ptr %255, align 4, !tbaa !5
  %7881 = call ptr @__errno_location() #12
  store i32 %7880, ptr %7881, align 4, !tbaa !5
  %7882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7883 = load i32, ptr @test_count, align 4, !tbaa !5
  %7884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7885 = load i32, ptr %7884, align 4, !tbaa !5
  %7886 = call ptr @s2n_strerror(i32 noundef %7885, ptr noundef @.str.4)
  %7887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7888 = load i32, ptr %7887, align 4, !tbaa !5
  %7889 = call ptr @s2n_strerror_debug(i32 noundef %7888, ptr noundef @.str.4)
  %7890 = call ptr @__errno_location() #12
  %7891 = load i32, ptr %7890, align 4, !tbaa !5
  %7892 = call ptr @strerror(i32 noundef %7891) #11
  %7893 = call ptr @__errno_location() #12
  %7894 = load i32, ptr %7893, align 4, !tbaa !5
  %7895 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7882, ptr noundef @.str.2, i32 noundef %7883, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1121, ptr noundef %7886, ptr noundef %7889, ptr noundef %7892, i32 noundef %7894) #11
  br label %7913

7896:                                             ; preds = %7874, %7867
  %7897 = load i32, ptr %255, align 4, !tbaa !5
  %7898 = call ptr @__errno_location() #12
  store i32 %7897, ptr %7898, align 4, !tbaa !5
  %7899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7900 = load i32, ptr @test_count, align 4, !tbaa !5
  %7901 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7902 = load i32, ptr %7901, align 4, !tbaa !5
  %7903 = call ptr @s2n_strerror(i32 noundef %7902, ptr noundef @.str.4)
  %7904 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7905 = load i32, ptr %7904, align 4, !tbaa !5
  %7906 = call ptr @s2n_strerror_debug(i32 noundef %7905, ptr noundef @.str.4)
  %7907 = call ptr @__errno_location() #12
  %7908 = load i32, ptr %7907, align 4, !tbaa !5
  %7909 = call ptr @strerror(i32 noundef %7908) #11
  %7910 = call ptr @__errno_location() #12
  %7911 = load i32, ptr %7910, align 4, !tbaa !5
  %7912 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7899, ptr noundef @.str.5, i32 noundef %7900, ptr noundef @.str.82, ptr noundef @.str.1, i32 noundef 1121, ptr noundef %7903, ptr noundef %7906, ptr noundef %7909, i32 noundef %7911) #11
  br label %7913

7913:                                             ; preds = %7896, %7879
  call void @llvm.lifetime.end.p0(i64 4, ptr %255) #11
  br label %7914

7914:                                             ; preds = %7913
  br label %7915

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

7916:                                             ; No predecessors!
  br label %7917

7917:                                             ; preds = %7916
  br label %7918

7918:                                             ; preds = %7917, %7859
  br label %7919

7919:                                             ; preds = %7918
  br label %7920

7920:                                             ; preds = %7919
  br label %7921

7921:                                             ; preds = %7920
  br label %7922

7922:                                             ; preds = %7921
  %7923 = load i32, ptr @test_count, align 4, !tbaa !5
  %7924 = add nsw i32 %7923, 1
  store i32 %7924, ptr @test_count, align 4, !tbaa !5
  %7925 = load ptr, ptr %254, align 8, !tbaa !9
  %7926 = getelementptr inbounds [60 x i8], ptr %226, i64 0, i64 0
  %7927 = call i32 @memcmp(ptr noundef %7925, ptr noundef %7926, i64 noundef 59) #14
  %7928 = icmp eq i32 %7927, 0
  br i1 %7928, label %7982, label %7929

7929:                                             ; preds = %7922
  br label %7930

7930:                                             ; preds = %7929
  br label %7931

7931:                                             ; preds = %7930
  call void @llvm.lifetime.start.p0(i64 4, ptr %256) #11
  %7932 = call ptr @__errno_location() #12
  %7933 = load i32, ptr %7932, align 4, !tbaa !5
  store i32 %7933, ptr %256, align 4, !tbaa !5
  %7934 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7935 = call i32 @s2n_print_stacktrace(ptr noundef %7934)
  %7936 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7937 = trunc i8 %7936 to i1
  br i1 %7937, label %7938, label %7960

7938:                                             ; preds = %7931
  %7939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7940 = call i32 @fileno(ptr noundef %7939) #11
  %7941 = call i32 @isatty(i32 noundef %7940) #11
  %7942 = icmp ne i32 %7941, 0
  br i1 %7942, label %7943, label %7960

7943:                                             ; preds = %7938
  %7944 = load i32, ptr %256, align 4, !tbaa !5
  %7945 = call ptr @__errno_location() #12
  store i32 %7944, ptr %7945, align 4, !tbaa !5
  %7946 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7947 = load i32, ptr @test_count, align 4, !tbaa !5
  %7948 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7949 = load i32, ptr %7948, align 4, !tbaa !5
  %7950 = call ptr @s2n_strerror(i32 noundef %7949, ptr noundef @.str.4)
  %7951 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7952 = load i32, ptr %7951, align 4, !tbaa !5
  %7953 = call ptr @s2n_strerror_debug(i32 noundef %7952, ptr noundef @.str.4)
  %7954 = call ptr @__errno_location() #12
  %7955 = load i32, ptr %7954, align 4, !tbaa !5
  %7956 = call ptr @strerror(i32 noundef %7955) #11
  %7957 = call ptr @__errno_location() #12
  %7958 = load i32, ptr %7957, align 4, !tbaa !5
  %7959 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7946, ptr noundef @.str.2, i32 noundef %7947, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1122, ptr noundef %7950, ptr noundef %7953, ptr noundef %7956, i32 noundef %7958) #11
  br label %7977

7960:                                             ; preds = %7938, %7931
  %7961 = load i32, ptr %256, align 4, !tbaa !5
  %7962 = call ptr @__errno_location() #12
  store i32 %7961, ptr %7962, align 4, !tbaa !5
  %7963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7964 = load i32, ptr @test_count, align 4, !tbaa !5
  %7965 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7966 = load i32, ptr %7965, align 4, !tbaa !5
  %7967 = call ptr @s2n_strerror(i32 noundef %7966, ptr noundef @.str.4)
  %7968 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7969 = load i32, ptr %7968, align 4, !tbaa !5
  %7970 = call ptr @s2n_strerror_debug(i32 noundef %7969, ptr noundef @.str.4)
  %7971 = call ptr @__errno_location() #12
  %7972 = load i32, ptr %7971, align 4, !tbaa !5
  %7973 = call ptr @strerror(i32 noundef %7972) #11
  %7974 = call ptr @__errno_location() #12
  %7975 = load i32, ptr %7974, align 4, !tbaa !5
  %7976 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7963, ptr noundef @.str.5, i32 noundef %7964, ptr noundef @.str.83, ptr noundef @.str.1, i32 noundef 1122, ptr noundef %7967, ptr noundef %7970, ptr noundef %7973, i32 noundef %7975) #11
  br label %7977

7977:                                             ; preds = %7960, %7943
  call void @llvm.lifetime.end.p0(i64 4, ptr %256) #11
  br label %7978

7978:                                             ; preds = %7977
  br label %7979

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

7980:                                             ; No predecessors!
  br label %7981

7981:                                             ; preds = %7980
  br label %7982

7982:                                             ; preds = %7981, %7922
  br label %7983

7983:                                             ; preds = %7982
  br label %7984

7984:                                             ; preds = %7983
  br label %7985

7985:                                             ; preds = %7984
  br label %7986

7986:                                             ; preds = %7985
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %250) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %249) #11
  call void @llvm.lifetime.end.p0(i64 69, ptr %248) #11
  call void @llvm.lifetime.end.p0(i64 65, ptr %247) #11
  call void @llvm.lifetime.end.p0(i64 60, ptr %226) #11
  call void @llvm.lifetime.end.p0(i64 75, ptr %194) #11
  call void @llvm.lifetime.end.p0(i64 71, ptr %193) #11
  call void @llvm.lifetime.start.p0(i64 125, ptr %257) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %257, ptr align 16 @__const.main._client_hello_bytes_message.94, i64 125, i1 false)
  br label %7987

7987:                                             ; preds = %7986
  %7988 = load i32, ptr @test_count, align 4, !tbaa !5
  %7989 = add nsw i32 %7988, 1
  store i32 %7989, ptr @test_count, align 4, !tbaa !5
  br label %7990

7990:                                             ; preds = %7987
  br label %7991

7991:                                             ; preds = %7990
  call void @llvm.lifetime.start.p0(i64 129, ptr %258) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %258, ptr align 16 @__const.main.client_hello_bytes.95, i64 129, i1 false)
  call void @llvm.lifetime.start.p0(i64 70, ptr %259) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %259, ptr align 16 @__const.main.expected_raw_extensions, i64 70, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %260) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %260, ptr align 1 @__const.main.sni_str, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 5, ptr %261) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %261, ptr align 1 @__const.main.alpn_str, i64 5, i1 false)
  call void @llvm.lifetime.start.p0(i64 80, ptr %262) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %262, ptr align 16 @__const.main.extensions, i64 80, i1 false)
  br label %7992

7992:                                             ; preds = %7991
  %7993 = load i32, ptr @test_count, align 4, !tbaa !5
  %7994 = add nsw i32 %7993, 1
  store i32 %7994, ptr @test_count, align 4, !tbaa !5
  %7995 = getelementptr inbounds [80 x i8], ptr %262, i64 0, i64 0
  %7996 = getelementptr inbounds [5 x i8], ptr %260, i64 0, i64 0
  %7997 = call ptr @strstr(ptr noundef %7995, ptr noundef %7996) #14
  %7998 = icmp eq ptr %7997, null
  br i1 %7998, label %7999, label %8052

7999:                                             ; preds = %7992
  br label %8000

8000:                                             ; preds = %7999
  br label %8001

8001:                                             ; preds = %8000
  call void @llvm.lifetime.start.p0(i64 4, ptr %263) #11
  %8002 = call ptr @__errno_location() #12
  %8003 = load i32, ptr %8002, align 4, !tbaa !5
  store i32 %8003, ptr %263, align 4, !tbaa !5
  %8004 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8005 = call i32 @s2n_print_stacktrace(ptr noundef %8004)
  %8006 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8007 = trunc i8 %8006 to i1
  br i1 %8007, label %8008, label %8030

8008:                                             ; preds = %8001
  %8009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8010 = call i32 @fileno(ptr noundef %8009) #11
  %8011 = call i32 @isatty(i32 noundef %8010) #11
  %8012 = icmp ne i32 %8011, 0
  br i1 %8012, label %8013, label %8030

8013:                                             ; preds = %8008
  %8014 = load i32, ptr %263, align 4, !tbaa !5
  %8015 = call ptr @__errno_location() #12
  store i32 %8014, ptr %8015, align 4, !tbaa !5
  %8016 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8017 = load i32, ptr @test_count, align 4, !tbaa !5
  %8018 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8019 = load i32, ptr %8018, align 4, !tbaa !5
  %8020 = call ptr @s2n_strerror(i32 noundef %8019, ptr noundef @.str.4)
  %8021 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8022 = load i32, ptr %8021, align 4, !tbaa !5
  %8023 = call ptr @s2n_strerror_debug(i32 noundef %8022, ptr noundef @.str.4)
  %8024 = call ptr @__errno_location() #12
  %8025 = load i32, ptr %8024, align 4, !tbaa !5
  %8026 = call ptr @strerror(i32 noundef %8025) #11
  %8027 = call ptr @__errno_location() #12
  %8028 = load i32, ptr %8027, align 4, !tbaa !5
  %8029 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8016, ptr noundef @.str.2, i32 noundef %8017, ptr noundef @.str.96, ptr noundef @.str.1, i32 noundef 1219, ptr noundef %8020, ptr noundef %8023, ptr noundef %8026, i32 noundef %8028) #11
  br label %8047

8030:                                             ; preds = %8008, %8001
  %8031 = load i32, ptr %263, align 4, !tbaa !5
  %8032 = call ptr @__errno_location() #12
  store i32 %8031, ptr %8032, align 4, !tbaa !5
  %8033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8034 = load i32, ptr @test_count, align 4, !tbaa !5
  %8035 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8036 = load i32, ptr %8035, align 4, !tbaa !5
  %8037 = call ptr @s2n_strerror(i32 noundef %8036, ptr noundef @.str.4)
  %8038 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8039 = load i32, ptr %8038, align 4, !tbaa !5
  %8040 = call ptr @s2n_strerror_debug(i32 noundef %8039, ptr noundef @.str.4)
  %8041 = call ptr @__errno_location() #12
  %8042 = load i32, ptr %8041, align 4, !tbaa !5
  %8043 = call ptr @strerror(i32 noundef %8042) #11
  %8044 = call ptr @__errno_location() #12
  %8045 = load i32, ptr %8044, align 4, !tbaa !5
  %8046 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8033, ptr noundef @.str.5, i32 noundef %8034, ptr noundef @.str.96, ptr noundef @.str.1, i32 noundef 1219, ptr noundef %8037, ptr noundef %8040, ptr noundef %8043, i32 noundef %8045) #11
  br label %8047

8047:                                             ; preds = %8030, %8013
  call void @llvm.lifetime.end.p0(i64 4, ptr %263) #11
  br label %8048

8048:                                             ; preds = %8047
  br label %8049

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

8050:                                             ; No predecessors!
  br label %8051

8051:                                             ; preds = %8050
  br label %8052

8052:                                             ; preds = %8051, %7992
  br label %8053

8053:                                             ; preds = %8052
  br label %8054

8054:                                             ; preds = %8053
  br label %8055

8055:                                             ; preds = %8054
  %8056 = load i32, ptr @test_count, align 4, !tbaa !5
  %8057 = add nsw i32 %8056, 1
  store i32 %8057, ptr @test_count, align 4, !tbaa !5
  %8058 = getelementptr inbounds [80 x i8], ptr %262, i64 0, i64 0
  %8059 = getelementptr inbounds [5 x i8], ptr %261, i64 0, i64 0
  %8060 = call ptr @strstr(ptr noundef %8058, ptr noundef %8059) #14
  %8061 = icmp eq ptr %8060, null
  br i1 %8061, label %8062, label %8115

8062:                                             ; preds = %8055
  br label %8063

8063:                                             ; preds = %8062
  br label %8064

8064:                                             ; preds = %8063
  call void @llvm.lifetime.start.p0(i64 4, ptr %264) #11
  %8065 = call ptr @__errno_location() #12
  %8066 = load i32, ptr %8065, align 4, !tbaa !5
  store i32 %8066, ptr %264, align 4, !tbaa !5
  %8067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8068 = call i32 @s2n_print_stacktrace(ptr noundef %8067)
  %8069 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8070 = trunc i8 %8069 to i1
  br i1 %8070, label %8071, label %8093

8071:                                             ; preds = %8064
  %8072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8073 = call i32 @fileno(ptr noundef %8072) #11
  %8074 = call i32 @isatty(i32 noundef %8073) #11
  %8075 = icmp ne i32 %8074, 0
  br i1 %8075, label %8076, label %8093

8076:                                             ; preds = %8071
  %8077 = load i32, ptr %264, align 4, !tbaa !5
  %8078 = call ptr @__errno_location() #12
  store i32 %8077, ptr %8078, align 4, !tbaa !5
  %8079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8080 = load i32, ptr @test_count, align 4, !tbaa !5
  %8081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8082 = load i32, ptr %8081, align 4, !tbaa !5
  %8083 = call ptr @s2n_strerror(i32 noundef %8082, ptr noundef @.str.4)
  %8084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8085 = load i32, ptr %8084, align 4, !tbaa !5
  %8086 = call ptr @s2n_strerror_debug(i32 noundef %8085, ptr noundef @.str.4)
  %8087 = call ptr @__errno_location() #12
  %8088 = load i32, ptr %8087, align 4, !tbaa !5
  %8089 = call ptr @strerror(i32 noundef %8088) #11
  %8090 = call ptr @__errno_location() #12
  %8091 = load i32, ptr %8090, align 4, !tbaa !5
  %8092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8079, ptr noundef @.str.2, i32 noundef %8080, ptr noundef @.str.97, ptr noundef @.str.1, i32 noundef 1220, ptr noundef %8083, ptr noundef %8086, ptr noundef %8089, i32 noundef %8091) #11
  br label %8110

8093:                                             ; preds = %8071, %8064
  %8094 = load i32, ptr %264, align 4, !tbaa !5
  %8095 = call ptr @__errno_location() #12
  store i32 %8094, ptr %8095, align 4, !tbaa !5
  %8096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8097 = load i32, ptr @test_count, align 4, !tbaa !5
  %8098 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8099 = load i32, ptr %8098, align 4, !tbaa !5
  %8100 = call ptr @s2n_strerror(i32 noundef %8099, ptr noundef @.str.4)
  %8101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8102 = load i32, ptr %8101, align 4, !tbaa !5
  %8103 = call ptr @s2n_strerror_debug(i32 noundef %8102, ptr noundef @.str.4)
  %8104 = call ptr @__errno_location() #12
  %8105 = load i32, ptr %8104, align 4, !tbaa !5
  %8106 = call ptr @strerror(i32 noundef %8105) #11
  %8107 = call ptr @__errno_location() #12
  %8108 = load i32, ptr %8107, align 4, !tbaa !5
  %8109 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8096, ptr noundef @.str.5, i32 noundef %8097, ptr noundef @.str.97, ptr noundef @.str.1, i32 noundef 1220, ptr noundef %8100, ptr noundef %8103, ptr noundef %8106, i32 noundef %8108) #11
  br label %8110

8110:                                             ; preds = %8093, %8076
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #11
  br label %8111

8111:                                             ; preds = %8110
  br label %8112

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

8113:                                             ; No predecessors!
  br label %8114

8114:                                             ; preds = %8113
  br label %8115

8115:                                             ; preds = %8114, %8055
  br label %8116

8116:                                             ; preds = %8115
  br label %8117

8117:                                             ; preds = %8116
  br label %8118

8118:                                             ; preds = %8117
  %8119 = load i32, ptr @test_count, align 4, !tbaa !5
  %8120 = add nsw i32 %8119, 1
  store i32 %8120, ptr @test_count, align 4, !tbaa !5
  %8121 = getelementptr inbounds [70 x i8], ptr %259, i64 0, i64 0
  %8122 = getelementptr inbounds [5 x i8], ptr %260, i64 0, i64 0
  %8123 = call ptr @strstr(ptr noundef %8121, ptr noundef %8122) #14
  %8124 = icmp eq ptr %8123, null
  br i1 %8124, label %8178, label %8125

8125:                                             ; preds = %8118
  br label %8126

8126:                                             ; preds = %8125
  br label %8127

8127:                                             ; preds = %8126
  call void @llvm.lifetime.start.p0(i64 4, ptr %265) #11
  %8128 = call ptr @__errno_location() #12
  %8129 = load i32, ptr %8128, align 4, !tbaa !5
  store i32 %8129, ptr %265, align 4, !tbaa !5
  %8130 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8131 = call i32 @s2n_print_stacktrace(ptr noundef %8130)
  %8132 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8133 = trunc i8 %8132 to i1
  br i1 %8133, label %8134, label %8156

8134:                                             ; preds = %8127
  %8135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8136 = call i32 @fileno(ptr noundef %8135) #11
  %8137 = call i32 @isatty(i32 noundef %8136) #11
  %8138 = icmp ne i32 %8137, 0
  br i1 %8138, label %8139, label %8156

8139:                                             ; preds = %8134
  %8140 = load i32, ptr %265, align 4, !tbaa !5
  %8141 = call ptr @__errno_location() #12
  store i32 %8140, ptr %8141, align 4, !tbaa !5
  %8142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8143 = load i32, ptr @test_count, align 4, !tbaa !5
  %8144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8145 = load i32, ptr %8144, align 4, !tbaa !5
  %8146 = call ptr @s2n_strerror(i32 noundef %8145, ptr noundef @.str.4)
  %8147 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8148 = load i32, ptr %8147, align 4, !tbaa !5
  %8149 = call ptr @s2n_strerror_debug(i32 noundef %8148, ptr noundef @.str.4)
  %8150 = call ptr @__errno_location() #12
  %8151 = load i32, ptr %8150, align 4, !tbaa !5
  %8152 = call ptr @strerror(i32 noundef %8151) #11
  %8153 = call ptr @__errno_location() #12
  %8154 = load i32, ptr %8153, align 4, !tbaa !5
  %8155 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8142, ptr noundef @.str.2, i32 noundef %8143, ptr noundef @.str.98, ptr noundef @.str.1, i32 noundef 1228, ptr noundef %8146, ptr noundef %8149, ptr noundef %8152, i32 noundef %8154) #11
  br label %8173

8156:                                             ; preds = %8134, %8127
  %8157 = load i32, ptr %265, align 4, !tbaa !5
  %8158 = call ptr @__errno_location() #12
  store i32 %8157, ptr %8158, align 4, !tbaa !5
  %8159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8160 = load i32, ptr @test_count, align 4, !tbaa !5
  %8161 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8162 = load i32, ptr %8161, align 4, !tbaa !5
  %8163 = call ptr @s2n_strerror(i32 noundef %8162, ptr noundef @.str.4)
  %8164 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8165 = load i32, ptr %8164, align 4, !tbaa !5
  %8166 = call ptr @s2n_strerror_debug(i32 noundef %8165, ptr noundef @.str.4)
  %8167 = call ptr @__errno_location() #12
  %8168 = load i32, ptr %8167, align 4, !tbaa !5
  %8169 = call ptr @strerror(i32 noundef %8168) #11
  %8170 = call ptr @__errno_location() #12
  %8171 = load i32, ptr %8170, align 4, !tbaa !5
  %8172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8159, ptr noundef @.str.5, i32 noundef %8160, ptr noundef @.str.98, ptr noundef @.str.1, i32 noundef 1228, ptr noundef %8163, ptr noundef %8166, ptr noundef %8169, i32 noundef %8171) #11
  br label %8173

8173:                                             ; preds = %8156, %8139
  call void @llvm.lifetime.end.p0(i64 4, ptr %265) #11
  br label %8174

8174:                                             ; preds = %8173
  br label %8175

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

8176:                                             ; No predecessors!
  br label %8177

8177:                                             ; preds = %8176
  br label %8178

8178:                                             ; preds = %8177, %8118
  br label %8179

8179:                                             ; preds = %8178
  br label %8180

8180:                                             ; preds = %8179
  br label %8181

8181:                                             ; preds = %8180
  %8182 = load i32, ptr @test_count, align 4, !tbaa !5
  %8183 = add nsw i32 %8182, 1
  store i32 %8183, ptr @test_count, align 4, !tbaa !5
  %8184 = getelementptr inbounds [70 x i8], ptr %259, i64 0, i64 0
  %8185 = getelementptr inbounds [5 x i8], ptr %261, i64 0, i64 0
  %8186 = call ptr @strstr(ptr noundef %8184, ptr noundef %8185) #14
  %8187 = icmp eq ptr %8186, null
  br i1 %8187, label %8241, label %8188

8188:                                             ; preds = %8181
  br label %8189

8189:                                             ; preds = %8188
  br label %8190

8190:                                             ; preds = %8189
  call void @llvm.lifetime.start.p0(i64 4, ptr %266) #11
  %8191 = call ptr @__errno_location() #12
  %8192 = load i32, ptr %8191, align 4, !tbaa !5
  store i32 %8192, ptr %266, align 4, !tbaa !5
  %8193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8194 = call i32 @s2n_print_stacktrace(ptr noundef %8193)
  %8195 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8196 = trunc i8 %8195 to i1
  br i1 %8196, label %8197, label %8219

8197:                                             ; preds = %8190
  %8198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8199 = call i32 @fileno(ptr noundef %8198) #11
  %8200 = call i32 @isatty(i32 noundef %8199) #11
  %8201 = icmp ne i32 %8200, 0
  br i1 %8201, label %8202, label %8219

8202:                                             ; preds = %8197
  %8203 = load i32, ptr %266, align 4, !tbaa !5
  %8204 = call ptr @__errno_location() #12
  store i32 %8203, ptr %8204, align 4, !tbaa !5
  %8205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8206 = load i32, ptr @test_count, align 4, !tbaa !5
  %8207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8208 = load i32, ptr %8207, align 4, !tbaa !5
  %8209 = call ptr @s2n_strerror(i32 noundef %8208, ptr noundef @.str.4)
  %8210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8211 = load i32, ptr %8210, align 4, !tbaa !5
  %8212 = call ptr @s2n_strerror_debug(i32 noundef %8211, ptr noundef @.str.4)
  %8213 = call ptr @__errno_location() #12
  %8214 = load i32, ptr %8213, align 4, !tbaa !5
  %8215 = call ptr @strerror(i32 noundef %8214) #11
  %8216 = call ptr @__errno_location() #12
  %8217 = load i32, ptr %8216, align 4, !tbaa !5
  %8218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8205, ptr noundef @.str.2, i32 noundef %8206, ptr noundef @.str.99, ptr noundef @.str.1, i32 noundef 1229, ptr noundef %8209, ptr noundef %8212, ptr noundef %8215, i32 noundef %8217) #11
  br label %8236

8219:                                             ; preds = %8197, %8190
  %8220 = load i32, ptr %266, align 4, !tbaa !5
  %8221 = call ptr @__errno_location() #12
  store i32 %8220, ptr %8221, align 4, !tbaa !5
  %8222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8223 = load i32, ptr @test_count, align 4, !tbaa !5
  %8224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8225 = load i32, ptr %8224, align 4, !tbaa !5
  %8226 = call ptr @s2n_strerror(i32 noundef %8225, ptr noundef @.str.4)
  %8227 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8228 = load i32, ptr %8227, align 4, !tbaa !5
  %8229 = call ptr @s2n_strerror_debug(i32 noundef %8228, ptr noundef @.str.4)
  %8230 = call ptr @__errno_location() #12
  %8231 = load i32, ptr %8230, align 4, !tbaa !5
  %8232 = call ptr @strerror(i32 noundef %8231) #11
  %8233 = call ptr @__errno_location() #12
  %8234 = load i32, ptr %8233, align 4, !tbaa !5
  %8235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8222, ptr noundef @.str.5, i32 noundef %8223, ptr noundef @.str.99, ptr noundef @.str.1, i32 noundef 1229, ptr noundef %8226, ptr noundef %8229, ptr noundef %8232, i32 noundef %8234) #11
  br label %8236

8236:                                             ; preds = %8219, %8202
  call void @llvm.lifetime.end.p0(i64 4, ptr %266) #11
  br label %8237

8237:                                             ; preds = %8236
  br label %8238

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

8239:                                             ; No predecessors!
  br label %8240

8240:                                             ; preds = %8239
  br label %8241

8241:                                             ; preds = %8240, %8181
  br label %8242

8242:                                             ; preds = %8241
  br label %8243

8243:                                             ; preds = %8242
  call void @llvm.lifetime.end.p0(i64 80, ptr %262) #11
  call void @llvm.lifetime.end.p0(i64 5, ptr %261) #11
  call void @llvm.lifetime.end.p0(i64 5, ptr %260) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #11
  %8244 = getelementptr inbounds [70 x i8], ptr %259, i64 0, i64 0
  store ptr %8244, ptr %267, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 200, ptr %268) #11
  call void @llvm.memset.p0.i64(ptr align 16 %268, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %269) #11
  store i32 0, ptr %269, align 4, !tbaa !5
  br label %8245

8245:                                             ; preds = %8243
  %8246 = load i32, ptr @test_count, align 4, !tbaa !5
  %8247 = add nsw i32 %8246, 1
  store i32 %8247, ptr @test_count, align 4, !tbaa !5
  %8248 = getelementptr inbounds [129 x i8], ptr %258, i64 0, i64 0
  %8249 = getelementptr inbounds [200 x i8], ptr %268, i64 0, i64 0
  %8250 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %8248, i64 noundef 129, i64 noundef 200, ptr noundef %8249, ptr noundef %269)
  %8251 = getelementptr inbounds %struct.s2n_result, ptr %270, i32 0, i32 0
  store i32 %8250, ptr %8251, align 4
  %8252 = getelementptr inbounds %struct.s2n_result, ptr %270, i32 0, i32 0
  %8253 = load i32, ptr %8252, align 4
  %8254 = call zeroext i1 @s2n_result_is_ok(i32 %8253)
  br i1 %8254, label %8308, label %8255

8255:                                             ; preds = %8245
  br label %8256

8256:                                             ; preds = %8255
  br label %8257

8257:                                             ; preds = %8256
  call void @llvm.lifetime.start.p0(i64 4, ptr %271) #11
  %8258 = call ptr @__errno_location() #12
  %8259 = load i32, ptr %8258, align 4, !tbaa !5
  store i32 %8259, ptr %271, align 4, !tbaa !5
  %8260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8261 = call i32 @s2n_print_stacktrace(ptr noundef %8260)
  %8262 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8263 = trunc i8 %8262 to i1
  br i1 %8263, label %8264, label %8286

8264:                                             ; preds = %8257
  %8265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8266 = call i32 @fileno(ptr noundef %8265) #11
  %8267 = call i32 @isatty(i32 noundef %8266) #11
  %8268 = icmp ne i32 %8267, 0
  br i1 %8268, label %8269, label %8286

8269:                                             ; preds = %8264
  %8270 = load i32, ptr %271, align 4, !tbaa !5
  %8271 = call ptr @__errno_location() #12
  store i32 %8270, ptr %8271, align 4, !tbaa !5
  %8272 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8273 = load i32, ptr @test_count, align 4, !tbaa !5
  %8274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8275 = load i32, ptr %8274, align 4, !tbaa !5
  %8276 = call ptr @s2n_strerror(i32 noundef %8275, ptr noundef @.str.4)
  %8277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8278 = load i32, ptr %8277, align 4, !tbaa !5
  %8279 = call ptr @s2n_strerror_debug(i32 noundef %8278, ptr noundef @.str.4)
  %8280 = call ptr @__errno_location() #12
  %8281 = load i32, ptr %8280, align 4, !tbaa !5
  %8282 = call ptr @strerror(i32 noundef %8281) #11
  %8283 = call ptr @__errno_location() #12
  %8284 = load i32, ptr %8283, align 4, !tbaa !5
  %8285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8272, ptr noundef @.str.2, i32 noundef %8273, ptr noundef @.str.80, ptr noundef @.str.1, i32 noundef 1246, ptr noundef %8276, ptr noundef %8279, ptr noundef %8282, i32 noundef %8284) #11
  br label %8303

8286:                                             ; preds = %8264, %8257
  %8287 = load i32, ptr %271, align 4, !tbaa !5
  %8288 = call ptr @__errno_location() #12
  store i32 %8287, ptr %8288, align 4, !tbaa !5
  %8289 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8290 = load i32, ptr @test_count, align 4, !tbaa !5
  %8291 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8292 = load i32, ptr %8291, align 4, !tbaa !5
  %8293 = call ptr @s2n_strerror(i32 noundef %8292, ptr noundef @.str.4)
  %8294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8295 = load i32, ptr %8294, align 4, !tbaa !5
  %8296 = call ptr @s2n_strerror_debug(i32 noundef %8295, ptr noundef @.str.4)
  %8297 = call ptr @__errno_location() #12
  %8298 = load i32, ptr %8297, align 4, !tbaa !5
  %8299 = call ptr @strerror(i32 noundef %8298) #11
  %8300 = call ptr @__errno_location() #12
  %8301 = load i32, ptr %8300, align 4, !tbaa !5
  %8302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8289, ptr noundef @.str.5, i32 noundef %8290, ptr noundef @.str.80, ptr noundef @.str.1, i32 noundef 1246, ptr noundef %8293, ptr noundef %8296, ptr noundef %8299, i32 noundef %8301) #11
  br label %8303

8303:                                             ; preds = %8286, %8269
  call void @llvm.lifetime.end.p0(i64 4, ptr %271) #11
  br label %8304

8304:                                             ; preds = %8303
  br label %8305

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

8306:                                             ; No predecessors!
  br label %8307

8307:                                             ; preds = %8306
  br label %8308

8308:                                             ; preds = %8307, %8245
  br label %8309

8309:                                             ; preds = %8308
  br label %8310

8310:                                             ; preds = %8309
  br label %8311

8311:                                             ; preds = %8310
  %8312 = load i32, ptr @test_count, align 4, !tbaa !5
  %8313 = add nsw i32 %8312, 1
  store i32 %8313, ptr @test_count, align 4, !tbaa !5
  %8314 = load i32, ptr %269, align 4, !tbaa !5
  %8315 = icmp ugt i32 %8314, 16
  br i1 %8315, label %8369, label %8316

8316:                                             ; preds = %8311
  br label %8317

8317:                                             ; preds = %8316
  br label %8318

8318:                                             ; preds = %8317
  call void @llvm.lifetime.start.p0(i64 4, ptr %272) #11
  %8319 = call ptr @__errno_location() #12
  %8320 = load i32, ptr %8319, align 4, !tbaa !5
  store i32 %8320, ptr %272, align 4, !tbaa !5
  %8321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8322 = call i32 @s2n_print_stacktrace(ptr noundef %8321)
  %8323 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8324 = trunc i8 %8323 to i1
  br i1 %8324, label %8325, label %8347

8325:                                             ; preds = %8318
  %8326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8327 = call i32 @fileno(ptr noundef %8326) #11
  %8328 = call i32 @isatty(i32 noundef %8327) #11
  %8329 = icmp ne i32 %8328, 0
  br i1 %8329, label %8330, label %8347

8330:                                             ; preds = %8325
  %8331 = load i32, ptr %272, align 4, !tbaa !5
  %8332 = call ptr @__errno_location() #12
  store i32 %8331, ptr %8332, align 4, !tbaa !5
  %8333 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8334 = load i32, ptr @test_count, align 4, !tbaa !5
  %8335 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8336 = load i32, ptr %8335, align 4, !tbaa !5
  %8337 = call ptr @s2n_strerror(i32 noundef %8336, ptr noundef @.str.4)
  %8338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8339 = load i32, ptr %8338, align 4, !tbaa !5
  %8340 = call ptr @s2n_strerror_debug(i32 noundef %8339, ptr noundef @.str.4)
  %8341 = call ptr @__errno_location() #12
  %8342 = load i32, ptr %8341, align 4, !tbaa !5
  %8343 = call ptr @strerror(i32 noundef %8342) #11
  %8344 = call ptr @__errno_location() #12
  %8345 = load i32, ptr %8344, align 4, !tbaa !5
  %8346 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8333, ptr noundef @.str.2, i32 noundef %8334, ptr noundef @.str.100, ptr noundef @.str.1, i32 noundef 1248, ptr noundef %8337, ptr noundef %8340, ptr noundef %8343, i32 noundef %8345) #11
  br label %8364

8347:                                             ; preds = %8325, %8318
  %8348 = load i32, ptr %272, align 4, !tbaa !5
  %8349 = call ptr @__errno_location() #12
  store i32 %8348, ptr %8349, align 4, !tbaa !5
  %8350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8351 = load i32, ptr @test_count, align 4, !tbaa !5
  %8352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8353 = load i32, ptr %8352, align 4, !tbaa !5
  %8354 = call ptr @s2n_strerror(i32 noundef %8353, ptr noundef @.str.4)
  %8355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8356 = load i32, ptr %8355, align 4, !tbaa !5
  %8357 = call ptr @s2n_strerror_debug(i32 noundef %8356, ptr noundef @.str.4)
  %8358 = call ptr @__errno_location() #12
  %8359 = load i32, ptr %8358, align 4, !tbaa !5
  %8360 = call ptr @strerror(i32 noundef %8359) #11
  %8361 = call ptr @__errno_location() #12
  %8362 = load i32, ptr %8361, align 4, !tbaa !5
  %8363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8350, ptr noundef @.str.5, i32 noundef %8351, ptr noundef @.str.100, ptr noundef @.str.1, i32 noundef 1248, ptr noundef %8354, ptr noundef %8357, ptr noundef %8360, i32 noundef %8362) #11
  br label %8364

8364:                                             ; preds = %8347, %8330
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #11
  br label %8365

8365:                                             ; preds = %8364
  br label %8366

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

8367:                                             ; No predecessors!
  br label %8368

8368:                                             ; preds = %8367
  br label %8369

8369:                                             ; preds = %8368, %8311
  br label %8370

8370:                                             ; preds = %8369
  br label %8371

8371:                                             ; preds = %8370
  call void @llvm.lifetime.start.p0(i64 8, ptr %273) #11
  %8372 = getelementptr inbounds [200 x i8], ptr %268, i64 0, i64 16
  store ptr %8372, ptr %273, align 8, !tbaa !9
  br label %8373

8373:                                             ; preds = %8371
  %8374 = load i32, ptr @test_count, align 4, !tbaa !5
  %8375 = add nsw i32 %8374, 1
  store i32 %8375, ptr @test_count, align 4, !tbaa !5
  %8376 = load i32, ptr %269, align 4, !tbaa !5
  %8377 = zext i32 %8376 to i64
  %8378 = load ptr, ptr %267, align 8, !tbaa !9
  %8379 = call i64 @strlen(ptr noundef %8378) #14
  %8380 = add i64 16, %8379
  %8381 = icmp uge i64 %8377, %8380
  br i1 %8381, label %8435, label %8382

8382:                                             ; preds = %8373
  br label %8383

8383:                                             ; preds = %8382
  br label %8384

8384:                                             ; preds = %8383
  call void @llvm.lifetime.start.p0(i64 4, ptr %274) #11
  %8385 = call ptr @__errno_location() #12
  %8386 = load i32, ptr %8385, align 4, !tbaa !5
  store i32 %8386, ptr %274, align 4, !tbaa !5
  %8387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8388 = call i32 @s2n_print_stacktrace(ptr noundef %8387)
  %8389 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8390 = trunc i8 %8389 to i1
  br i1 %8390, label %8391, label %8413

8391:                                             ; preds = %8384
  %8392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8393 = call i32 @fileno(ptr noundef %8392) #11
  %8394 = call i32 @isatty(i32 noundef %8393) #11
  %8395 = icmp ne i32 %8394, 0
  br i1 %8395, label %8396, label %8413

8396:                                             ; preds = %8391
  %8397 = load i32, ptr %274, align 4, !tbaa !5
  %8398 = call ptr @__errno_location() #12
  store i32 %8397, ptr %8398, align 4, !tbaa !5
  %8399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8400 = load i32, ptr @test_count, align 4, !tbaa !5
  %8401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8402 = load i32, ptr %8401, align 4, !tbaa !5
  %8403 = call ptr @s2n_strerror(i32 noundef %8402, ptr noundef @.str.4)
  %8404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8405 = load i32, ptr %8404, align 4, !tbaa !5
  %8406 = call ptr @s2n_strerror_debug(i32 noundef %8405, ptr noundef @.str.4)
  %8407 = call ptr @__errno_location() #12
  %8408 = load i32, ptr %8407, align 4, !tbaa !5
  %8409 = call ptr @strerror(i32 noundef %8408) #11
  %8410 = call ptr @__errno_location() #12
  %8411 = load i32, ptr %8410, align 4, !tbaa !5
  %8412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8399, ptr noundef @.str.2, i32 noundef %8400, ptr noundef @.str.101, ptr noundef @.str.1, i32 noundef 1250, ptr noundef %8403, ptr noundef %8406, ptr noundef %8409, i32 noundef %8411) #11
  br label %8430

8413:                                             ; preds = %8391, %8384
  %8414 = load i32, ptr %274, align 4, !tbaa !5
  %8415 = call ptr @__errno_location() #12
  store i32 %8414, ptr %8415, align 4, !tbaa !5
  %8416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8417 = load i32, ptr @test_count, align 4, !tbaa !5
  %8418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8419 = load i32, ptr %8418, align 4, !tbaa !5
  %8420 = call ptr @s2n_strerror(i32 noundef %8419, ptr noundef @.str.4)
  %8421 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8422 = load i32, ptr %8421, align 4, !tbaa !5
  %8423 = call ptr @s2n_strerror_debug(i32 noundef %8422, ptr noundef @.str.4)
  %8424 = call ptr @__errno_location() #12
  %8425 = load i32, ptr %8424, align 4, !tbaa !5
  %8426 = call ptr @strerror(i32 noundef %8425) #11
  %8427 = call ptr @__errno_location() #12
  %8428 = load i32, ptr %8427, align 4, !tbaa !5
  %8429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8416, ptr noundef @.str.5, i32 noundef %8417, ptr noundef @.str.101, ptr noundef @.str.1, i32 noundef 1250, ptr noundef %8420, ptr noundef %8423, ptr noundef %8426, i32 noundef %8428) #11
  br label %8430

8430:                                             ; preds = %8413, %8396
  call void @llvm.lifetime.end.p0(i64 4, ptr %274) #11
  br label %8431

8431:                                             ; preds = %8430
  br label %8432

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

8433:                                             ; No predecessors!
  br label %8434

8434:                                             ; preds = %8433
  br label %8435

8435:                                             ; preds = %8434, %8373
  br label %8436

8436:                                             ; preds = %8435
  br label %8437

8437:                                             ; preds = %8436
  br label %8438

8438:                                             ; preds = %8437
  %8439 = load ptr, ptr %267, align 8, !tbaa !9
  %8440 = call i64 @strlen(ptr noundef %8439) #14
  %8441 = icmp ne i64 %8440, 0
  br i1 %8441, label %8442, label %8508

8442:                                             ; preds = %8438
  br label %8443

8443:                                             ; preds = %8442
  %8444 = load i32, ptr @test_count, align 4, !tbaa !5
  %8445 = add nsw i32 %8444, 1
  store i32 %8445, ptr @test_count, align 4, !tbaa !5
  %8446 = load ptr, ptr %273, align 8, !tbaa !9
  %8447 = load ptr, ptr %267, align 8, !tbaa !9
  %8448 = load ptr, ptr %267, align 8, !tbaa !9
  %8449 = call i64 @strlen(ptr noundef %8448) #14
  %8450 = call i32 @memcmp(ptr noundef %8446, ptr noundef %8447, i64 noundef %8449) #14
  %8451 = icmp eq i32 %8450, 0
  br i1 %8451, label %8505, label %8452

8452:                                             ; preds = %8443
  br label %8453

8453:                                             ; preds = %8452
  br label %8454

8454:                                             ; preds = %8453
  call void @llvm.lifetime.start.p0(i64 4, ptr %275) #11
  %8455 = call ptr @__errno_location() #12
  %8456 = load i32, ptr %8455, align 4, !tbaa !5
  store i32 %8456, ptr %275, align 4, !tbaa !5
  %8457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8458 = call i32 @s2n_print_stacktrace(ptr noundef %8457)
  %8459 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8460 = trunc i8 %8459 to i1
  br i1 %8460, label %8461, label %8483

8461:                                             ; preds = %8454
  %8462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8463 = call i32 @fileno(ptr noundef %8462) #11
  %8464 = call i32 @isatty(i32 noundef %8463) #11
  %8465 = icmp ne i32 %8464, 0
  br i1 %8465, label %8466, label %8483

8466:                                             ; preds = %8461
  %8467 = load i32, ptr %275, align 4, !tbaa !5
  %8468 = call ptr @__errno_location() #12
  store i32 %8467, ptr %8468, align 4, !tbaa !5
  %8469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8470 = load i32, ptr @test_count, align 4, !tbaa !5
  %8471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8472 = load i32, ptr %8471, align 4, !tbaa !5
  %8473 = call ptr @s2n_strerror(i32 noundef %8472, ptr noundef @.str.4)
  %8474 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8475 = load i32, ptr %8474, align 4, !tbaa !5
  %8476 = call ptr @s2n_strerror_debug(i32 noundef %8475, ptr noundef @.str.4)
  %8477 = call ptr @__errno_location() #12
  %8478 = load i32, ptr %8477, align 4, !tbaa !5
  %8479 = call ptr @strerror(i32 noundef %8478) #11
  %8480 = call ptr @__errno_location() #12
  %8481 = load i32, ptr %8480, align 4, !tbaa !5
  %8482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8469, ptr noundef @.str.2, i32 noundef %8470, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1251, ptr noundef %8473, ptr noundef %8476, ptr noundef %8479, i32 noundef %8481) #11
  br label %8500

8483:                                             ; preds = %8461, %8454
  %8484 = load i32, ptr %275, align 4, !tbaa !5
  %8485 = call ptr @__errno_location() #12
  store i32 %8484, ptr %8485, align 4, !tbaa !5
  %8486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8487 = load i32, ptr @test_count, align 4, !tbaa !5
  %8488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8489 = load i32, ptr %8488, align 4, !tbaa !5
  %8490 = call ptr @s2n_strerror(i32 noundef %8489, ptr noundef @.str.4)
  %8491 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8492 = load i32, ptr %8491, align 4, !tbaa !5
  %8493 = call ptr @s2n_strerror_debug(i32 noundef %8492, ptr noundef @.str.4)
  %8494 = call ptr @__errno_location() #12
  %8495 = load i32, ptr %8494, align 4, !tbaa !5
  %8496 = call ptr @strerror(i32 noundef %8495) #11
  %8497 = call ptr @__errno_location() #12
  %8498 = load i32, ptr %8497, align 4, !tbaa !5
  %8499 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8486, ptr noundef @.str.5, i32 noundef %8487, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1251, ptr noundef %8490, ptr noundef %8493, ptr noundef %8496, i32 noundef %8498) #11
  br label %8500

8500:                                             ; preds = %8483, %8466
  call void @llvm.lifetime.end.p0(i64 4, ptr %275) #11
  br label %8501

8501:                                             ; preds = %8500
  br label %8502

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

8503:                                             ; No predecessors!
  br label %8504

8504:                                             ; preds = %8503
  br label %8505

8505:                                             ; preds = %8504, %8443
  br label %8506

8506:                                             ; preds = %8505
  br label %8507

8507:                                             ; preds = %8506
  br label %8508

8508:                                             ; preds = %8507, %8438
  br label %8509

8509:                                             ; preds = %8508
  br label %8510

8510:                                             ; preds = %8509
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %269) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %268) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #11
  call void @llvm.lifetime.start.p0(i64 110, ptr %276) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %276, ptr align 16 @__const.main.expected.103, i64 110, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %277) #11
  call void @llvm.memset.p0.i64(ptr align 16 %277, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %278) #11
  store i32 0, ptr %278, align 4, !tbaa !5
  br label %8511

8511:                                             ; preds = %8510
  %8512 = load i32, ptr @test_count, align 4, !tbaa !5
  %8513 = add nsw i32 %8512, 1
  store i32 %8513, ptr @test_count, align 4, !tbaa !5
  %8514 = getelementptr inbounds [129 x i8], ptr %258, i64 0, i64 0
  %8515 = getelementptr inbounds [200 x i8], ptr %277, i64 0, i64 0
  %8516 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %8514, i64 noundef 129, i64 noundef 200, ptr noundef %8515, ptr noundef %278)
  %8517 = getelementptr inbounds %struct.s2n_result, ptr %279, i32 0, i32 0
  store i32 %8516, ptr %8517, align 4
  %8518 = getelementptr inbounds %struct.s2n_result, ptr %279, i32 0, i32 0
  %8519 = load i32, ptr %8518, align 4
  %8520 = call zeroext i1 @s2n_result_is_ok(i32 %8519)
  br i1 %8520, label %8574, label %8521

8521:                                             ; preds = %8511
  br label %8522

8522:                                             ; preds = %8521
  br label %8523

8523:                                             ; preds = %8522
  call void @llvm.lifetime.start.p0(i64 4, ptr %280) #11
  %8524 = call ptr @__errno_location() #12
  %8525 = load i32, ptr %8524, align 4, !tbaa !5
  store i32 %8525, ptr %280, align 4, !tbaa !5
  %8526 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8527 = call i32 @s2n_print_stacktrace(ptr noundef %8526)
  %8528 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8529 = trunc i8 %8528 to i1
  br i1 %8529, label %8530, label %8552

8530:                                             ; preds = %8523
  %8531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8532 = call i32 @fileno(ptr noundef %8531) #11
  %8533 = call i32 @isatty(i32 noundef %8532) #11
  %8534 = icmp ne i32 %8533, 0
  br i1 %8534, label %8535, label %8552

8535:                                             ; preds = %8530
  %8536 = load i32, ptr %280, align 4, !tbaa !5
  %8537 = call ptr @__errno_location() #12
  store i32 %8536, ptr %8537, align 4, !tbaa !5
  %8538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8539 = load i32, ptr @test_count, align 4, !tbaa !5
  %8540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8541 = load i32, ptr %8540, align 4, !tbaa !5
  %8542 = call ptr @s2n_strerror(i32 noundef %8541, ptr noundef @.str.4)
  %8543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8544 = load i32, ptr %8543, align 4, !tbaa !5
  %8545 = call ptr @s2n_strerror_debug(i32 noundef %8544, ptr noundef @.str.4)
  %8546 = call ptr @__errno_location() #12
  %8547 = load i32, ptr %8546, align 4, !tbaa !5
  %8548 = call ptr @strerror(i32 noundef %8547) #11
  %8549 = call ptr @__errno_location() #12
  %8550 = load i32, ptr %8549, align 4, !tbaa !5
  %8551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8538, ptr noundef @.str.2, i32 noundef %8539, ptr noundef @.str.80, ptr noundef @.str.1, i32 noundef 1280, ptr noundef %8542, ptr noundef %8545, ptr noundef %8548, i32 noundef %8550) #11
  br label %8569

8552:                                             ; preds = %8530, %8523
  %8553 = load i32, ptr %280, align 4, !tbaa !5
  %8554 = call ptr @__errno_location() #12
  store i32 %8553, ptr %8554, align 4, !tbaa !5
  %8555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8556 = load i32, ptr @test_count, align 4, !tbaa !5
  %8557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8558 = load i32, ptr %8557, align 4, !tbaa !5
  %8559 = call ptr @s2n_strerror(i32 noundef %8558, ptr noundef @.str.4)
  %8560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8561 = load i32, ptr %8560, align 4, !tbaa !5
  %8562 = call ptr @s2n_strerror_debug(i32 noundef %8561, ptr noundef @.str.4)
  %8563 = call ptr @__errno_location() #12
  %8564 = load i32, ptr %8563, align 4, !tbaa !5
  %8565 = call ptr @strerror(i32 noundef %8564) #11
  %8566 = call ptr @__errno_location() #12
  %8567 = load i32, ptr %8566, align 4, !tbaa !5
  %8568 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8555, ptr noundef @.str.5, i32 noundef %8556, ptr noundef @.str.80, ptr noundef @.str.1, i32 noundef 1280, ptr noundef %8559, ptr noundef %8562, ptr noundef %8565, i32 noundef %8567) #11
  br label %8569

8569:                                             ; preds = %8552, %8535
  call void @llvm.lifetime.end.p0(i64 4, ptr %280) #11
  br label %8570

8570:                                             ; preds = %8569
  br label %8571

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

8572:                                             ; No predecessors!
  br label %8573

8573:                                             ; preds = %8572
  br label %8574

8574:                                             ; preds = %8573, %8511
  br label %8575

8575:                                             ; preds = %8574
  br label %8576

8576:                                             ; preds = %8575
  br label %8577

8577:                                             ; preds = %8576
  %8578 = load i32, ptr @test_count, align 4, !tbaa !5
  %8579 = add nsw i32 %8578, 1
  store i32 %8579, ptr @test_count, align 4, !tbaa !5
  %8580 = load i32, ptr %278, align 4, !tbaa !5
  %8581 = icmp ugt i32 %8580, 16
  br i1 %8581, label %8635, label %8582

8582:                                             ; preds = %8577
  br label %8583

8583:                                             ; preds = %8582
  br label %8584

8584:                                             ; preds = %8583
  call void @llvm.lifetime.start.p0(i64 4, ptr %281) #11
  %8585 = call ptr @__errno_location() #12
  %8586 = load i32, ptr %8585, align 4, !tbaa !5
  store i32 %8586, ptr %281, align 4, !tbaa !5
  %8587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8588 = call i32 @s2n_print_stacktrace(ptr noundef %8587)
  %8589 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8590 = trunc i8 %8589 to i1
  br i1 %8590, label %8591, label %8613

8591:                                             ; preds = %8584
  %8592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8593 = call i32 @fileno(ptr noundef %8592) #11
  %8594 = call i32 @isatty(i32 noundef %8593) #11
  %8595 = icmp ne i32 %8594, 0
  br i1 %8595, label %8596, label %8613

8596:                                             ; preds = %8591
  %8597 = load i32, ptr %281, align 4, !tbaa !5
  %8598 = call ptr @__errno_location() #12
  store i32 %8597, ptr %8598, align 4, !tbaa !5
  %8599 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8600 = load i32, ptr @test_count, align 4, !tbaa !5
  %8601 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8602 = load i32, ptr %8601, align 4, !tbaa !5
  %8603 = call ptr @s2n_strerror(i32 noundef %8602, ptr noundef @.str.4)
  %8604 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8605 = load i32, ptr %8604, align 4, !tbaa !5
  %8606 = call ptr @s2n_strerror_debug(i32 noundef %8605, ptr noundef @.str.4)
  %8607 = call ptr @__errno_location() #12
  %8608 = load i32, ptr %8607, align 4, !tbaa !5
  %8609 = call ptr @strerror(i32 noundef %8608) #11
  %8610 = call ptr @__errno_location() #12
  %8611 = load i32, ptr %8610, align 4, !tbaa !5
  %8612 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8599, ptr noundef @.str.2, i32 noundef %8600, ptr noundef @.str.100, ptr noundef @.str.1, i32 noundef 1282, ptr noundef %8603, ptr noundef %8606, ptr noundef %8609, i32 noundef %8611) #11
  br label %8630

8613:                                             ; preds = %8591, %8584
  %8614 = load i32, ptr %281, align 4, !tbaa !5
  %8615 = call ptr @__errno_location() #12
  store i32 %8614, ptr %8615, align 4, !tbaa !5
  %8616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8617 = load i32, ptr @test_count, align 4, !tbaa !5
  %8618 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8619 = load i32, ptr %8618, align 4, !tbaa !5
  %8620 = call ptr @s2n_strerror(i32 noundef %8619, ptr noundef @.str.4)
  %8621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8622 = load i32, ptr %8621, align 4, !tbaa !5
  %8623 = call ptr @s2n_strerror_debug(i32 noundef %8622, ptr noundef @.str.4)
  %8624 = call ptr @__errno_location() #12
  %8625 = load i32, ptr %8624, align 4, !tbaa !5
  %8626 = call ptr @strerror(i32 noundef %8625) #11
  %8627 = call ptr @__errno_location() #12
  %8628 = load i32, ptr %8627, align 4, !tbaa !5
  %8629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8616, ptr noundef @.str.5, i32 noundef %8617, ptr noundef @.str.100, ptr noundef @.str.1, i32 noundef 1282, ptr noundef %8620, ptr noundef %8623, ptr noundef %8626, i32 noundef %8628) #11
  br label %8630

8630:                                             ; preds = %8613, %8596
  call void @llvm.lifetime.end.p0(i64 4, ptr %281) #11
  br label %8631

8631:                                             ; preds = %8630
  br label %8632

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

8633:                                             ; No predecessors!
  br label %8634

8634:                                             ; preds = %8633
  br label %8635

8635:                                             ; preds = %8634, %8577
  br label %8636

8636:                                             ; preds = %8635
  br label %8637

8637:                                             ; preds = %8636
  call void @llvm.lifetime.start.p0(i64 8, ptr %282) #11
  %8638 = getelementptr inbounds [200 x i8], ptr %277, i64 0, i64 16
  store ptr %8638, ptr %282, align 8, !tbaa !9
  br label %8639

8639:                                             ; preds = %8637
  %8640 = load i32, ptr @test_count, align 4, !tbaa !5
  %8641 = add nsw i32 %8640, 1
  store i32 %8641, ptr @test_count, align 4, !tbaa !5
  %8642 = load i32, ptr %278, align 4, !tbaa !5
  %8643 = zext i32 %8642 to i64
  %8644 = icmp uge i64 %8643, 125
  br i1 %8644, label %8698, label %8645

8645:                                             ; preds = %8639
  br label %8646

8646:                                             ; preds = %8645
  br label %8647

8647:                                             ; preds = %8646
  call void @llvm.lifetime.start.p0(i64 4, ptr %283) #11
  %8648 = call ptr @__errno_location() #12
  %8649 = load i32, ptr %8648, align 4, !tbaa !5
  store i32 %8649, ptr %283, align 4, !tbaa !5
  %8650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8651 = call i32 @s2n_print_stacktrace(ptr noundef %8650)
  %8652 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8653 = trunc i8 %8652 to i1
  br i1 %8653, label %8654, label %8676

8654:                                             ; preds = %8647
  %8655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8656 = call i32 @fileno(ptr noundef %8655) #11
  %8657 = call i32 @isatty(i32 noundef %8656) #11
  %8658 = icmp ne i32 %8657, 0
  br i1 %8658, label %8659, label %8676

8659:                                             ; preds = %8654
  %8660 = load i32, ptr %283, align 4, !tbaa !5
  %8661 = call ptr @__errno_location() #12
  store i32 %8660, ptr %8661, align 4, !tbaa !5
  %8662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8663 = load i32, ptr @test_count, align 4, !tbaa !5
  %8664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8665 = load i32, ptr %8664, align 4, !tbaa !5
  %8666 = call ptr @s2n_strerror(i32 noundef %8665, ptr noundef @.str.4)
  %8667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8668 = load i32, ptr %8667, align 4, !tbaa !5
  %8669 = call ptr @s2n_strerror_debug(i32 noundef %8668, ptr noundef @.str.4)
  %8670 = call ptr @__errno_location() #12
  %8671 = load i32, ptr %8670, align 4, !tbaa !5
  %8672 = call ptr @strerror(i32 noundef %8671) #11
  %8673 = call ptr @__errno_location() #12
  %8674 = load i32, ptr %8673, align 4, !tbaa !5
  %8675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8662, ptr noundef @.str.2, i32 noundef %8663, ptr noundef @.str.101, ptr noundef @.str.1, i32 noundef 1284, ptr noundef %8666, ptr noundef %8669, ptr noundef %8672, i32 noundef %8674) #11
  br label %8693

8676:                                             ; preds = %8654, %8647
  %8677 = load i32, ptr %283, align 4, !tbaa !5
  %8678 = call ptr @__errno_location() #12
  store i32 %8677, ptr %8678, align 4, !tbaa !5
  %8679 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8680 = load i32, ptr @test_count, align 4, !tbaa !5
  %8681 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8682 = load i32, ptr %8681, align 4, !tbaa !5
  %8683 = call ptr @s2n_strerror(i32 noundef %8682, ptr noundef @.str.4)
  %8684 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8685 = load i32, ptr %8684, align 4, !tbaa !5
  %8686 = call ptr @s2n_strerror_debug(i32 noundef %8685, ptr noundef @.str.4)
  %8687 = call ptr @__errno_location() #12
  %8688 = load i32, ptr %8687, align 4, !tbaa !5
  %8689 = call ptr @strerror(i32 noundef %8688) #11
  %8690 = call ptr @__errno_location() #12
  %8691 = load i32, ptr %8690, align 4, !tbaa !5
  %8692 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8679, ptr noundef @.str.5, i32 noundef %8680, ptr noundef @.str.101, ptr noundef @.str.1, i32 noundef 1284, ptr noundef %8683, ptr noundef %8686, ptr noundef %8689, i32 noundef %8691) #11
  br label %8693

8693:                                             ; preds = %8676, %8659
  call void @llvm.lifetime.end.p0(i64 4, ptr %283) #11
  br label %8694

8694:                                             ; preds = %8693
  br label %8695

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

8696:                                             ; No predecessors!
  br label %8697

8697:                                             ; preds = %8696
  br label %8698

8698:                                             ; preds = %8697, %8639
  br label %8699

8699:                                             ; preds = %8698
  br label %8700

8700:                                             ; preds = %8699
  br label %8701

8701:                                             ; preds = %8700
  br label %8702

8702:                                             ; preds = %8701
  %8703 = load i32, ptr @test_count, align 4, !tbaa !5
  %8704 = add nsw i32 %8703, 1
  store i32 %8704, ptr @test_count, align 4, !tbaa !5
  %8705 = load ptr, ptr %282, align 8, !tbaa !9
  %8706 = getelementptr inbounds [110 x i8], ptr %276, i64 0, i64 0
  %8707 = call i32 @memcmp(ptr noundef %8705, ptr noundef %8706, i64 noundef 109) #14
  %8708 = icmp eq i32 %8707, 0
  br i1 %8708, label %8762, label %8709

8709:                                             ; preds = %8702
  br label %8710

8710:                                             ; preds = %8709
  br label %8711

8711:                                             ; preds = %8710
  call void @llvm.lifetime.start.p0(i64 4, ptr %284) #11
  %8712 = call ptr @__errno_location() #12
  %8713 = load i32, ptr %8712, align 4, !tbaa !5
  store i32 %8713, ptr %284, align 4, !tbaa !5
  %8714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8715 = call i32 @s2n_print_stacktrace(ptr noundef %8714)
  %8716 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8717 = trunc i8 %8716 to i1
  br i1 %8717, label %8718, label %8740

8718:                                             ; preds = %8711
  %8719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8720 = call i32 @fileno(ptr noundef %8719) #11
  %8721 = call i32 @isatty(i32 noundef %8720) #11
  %8722 = icmp ne i32 %8721, 0
  br i1 %8722, label %8723, label %8740

8723:                                             ; preds = %8718
  %8724 = load i32, ptr %284, align 4, !tbaa !5
  %8725 = call ptr @__errno_location() #12
  store i32 %8724, ptr %8725, align 4, !tbaa !5
  %8726 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8727 = load i32, ptr @test_count, align 4, !tbaa !5
  %8728 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8729 = load i32, ptr %8728, align 4, !tbaa !5
  %8730 = call ptr @s2n_strerror(i32 noundef %8729, ptr noundef @.str.4)
  %8731 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8732 = load i32, ptr %8731, align 4, !tbaa !5
  %8733 = call ptr @s2n_strerror_debug(i32 noundef %8732, ptr noundef @.str.4)
  %8734 = call ptr @__errno_location() #12
  %8735 = load i32, ptr %8734, align 4, !tbaa !5
  %8736 = call ptr @strerror(i32 noundef %8735) #11
  %8737 = call ptr @__errno_location() #12
  %8738 = load i32, ptr %8737, align 4, !tbaa !5
  %8739 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8726, ptr noundef @.str.2, i32 noundef %8727, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1285, ptr noundef %8730, ptr noundef %8733, ptr noundef %8736, i32 noundef %8738) #11
  br label %8757

8740:                                             ; preds = %8718, %8711
  %8741 = load i32, ptr %284, align 4, !tbaa !5
  %8742 = call ptr @__errno_location() #12
  store i32 %8741, ptr %8742, align 4, !tbaa !5
  %8743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8744 = load i32, ptr @test_count, align 4, !tbaa !5
  %8745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8746 = load i32, ptr %8745, align 4, !tbaa !5
  %8747 = call ptr @s2n_strerror(i32 noundef %8746, ptr noundef @.str.4)
  %8748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8749 = load i32, ptr %8748, align 4, !tbaa !5
  %8750 = call ptr @s2n_strerror_debug(i32 noundef %8749, ptr noundef @.str.4)
  %8751 = call ptr @__errno_location() #12
  %8752 = load i32, ptr %8751, align 4, !tbaa !5
  %8753 = call ptr @strerror(i32 noundef %8752) #11
  %8754 = call ptr @__errno_location() #12
  %8755 = load i32, ptr %8754, align 4, !tbaa !5
  %8756 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8743, ptr noundef @.str.5, i32 noundef %8744, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1285, ptr noundef %8747, ptr noundef %8750, ptr noundef %8753, i32 noundef %8755) #11
  br label %8757

8757:                                             ; preds = %8740, %8723
  call void @llvm.lifetime.end.p0(i64 4, ptr %284) #11
  br label %8758

8758:                                             ; preds = %8757
  br label %8759

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

8760:                                             ; No predecessors!
  br label %8761

8761:                                             ; preds = %8760
  br label %8762

8762:                                             ; preds = %8761, %8702
  br label %8763

8763:                                             ; preds = %8762
  br label %8764

8764:                                             ; preds = %8763
  br label %8765

8765:                                             ; preds = %8764
  br label %8766

8766:                                             ; preds = %8765
  call void @llvm.lifetime.end.p0(i64 8, ptr %282) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %278) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %277) #11
  call void @llvm.lifetime.end.p0(i64 110, ptr %276) #11
  call void @llvm.lifetime.start.p0(i64 13, ptr %285) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %285, ptr align 1 @__const.main.expected.104, i64 13, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %286) #11
  call void @llvm.memset.p0.i64(ptr align 16 %286, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %287) #11
  store i32 0, ptr %287, align 4, !tbaa !5
  br label %8767

8767:                                             ; preds = %8766
  %8768 = load i32, ptr @test_count, align 4, !tbaa !5
  %8769 = add nsw i32 %8768, 1
  store i32 %8769, ptr @test_count, align 4, !tbaa !5
  %8770 = getelementptr inbounds [129 x i8], ptr %258, i64 0, i64 0
  %8771 = getelementptr inbounds [200 x i8], ptr %286, i64 0, i64 0
  %8772 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %8770, i64 noundef 129, i64 noundef 200, ptr noundef %8771, ptr noundef %287)
  %8773 = getelementptr inbounds %struct.s2n_result, ptr %288, i32 0, i32 0
  store i32 %8772, ptr %8773, align 4
  %8774 = getelementptr inbounds %struct.s2n_result, ptr %288, i32 0, i32 0
  %8775 = load i32, ptr %8774, align 4
  %8776 = call zeroext i1 @s2n_result_is_ok(i32 %8775)
  br i1 %8776, label %8830, label %8777

8777:                                             ; preds = %8767
  br label %8778

8778:                                             ; preds = %8777
  br label %8779

8779:                                             ; preds = %8778
  call void @llvm.lifetime.start.p0(i64 4, ptr %289) #11
  %8780 = call ptr @__errno_location() #12
  %8781 = load i32, ptr %8780, align 4, !tbaa !5
  store i32 %8781, ptr %289, align 4, !tbaa !5
  %8782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8783 = call i32 @s2n_print_stacktrace(ptr noundef %8782)
  %8784 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8785 = trunc i8 %8784 to i1
  br i1 %8785, label %8786, label %8808

8786:                                             ; preds = %8779
  %8787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8788 = call i32 @fileno(ptr noundef %8787) #11
  %8789 = call i32 @isatty(i32 noundef %8788) #11
  %8790 = icmp ne i32 %8789, 0
  br i1 %8790, label %8791, label %8808

8791:                                             ; preds = %8786
  %8792 = load i32, ptr %289, align 4, !tbaa !5
  %8793 = call ptr @__errno_location() #12
  store i32 %8792, ptr %8793, align 4, !tbaa !5
  %8794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8795 = load i32, ptr @test_count, align 4, !tbaa !5
  %8796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8797 = load i32, ptr %8796, align 4, !tbaa !5
  %8798 = call ptr @s2n_strerror(i32 noundef %8797, ptr noundef @.str.4)
  %8799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8800 = load i32, ptr %8799, align 4, !tbaa !5
  %8801 = call ptr @s2n_strerror_debug(i32 noundef %8800, ptr noundef @.str.4)
  %8802 = call ptr @__errno_location() #12
  %8803 = load i32, ptr %8802, align 4, !tbaa !5
  %8804 = call ptr @strerror(i32 noundef %8803) #11
  %8805 = call ptr @__errno_location() #12
  %8806 = load i32, ptr %8805, align 4, !tbaa !5
  %8807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8794, ptr noundef @.str.2, i32 noundef %8795, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 1316, ptr noundef %8798, ptr noundef %8801, ptr noundef %8804, i32 noundef %8806) #11
  br label %8825

8808:                                             ; preds = %8786, %8779
  %8809 = load i32, ptr %289, align 4, !tbaa !5
  %8810 = call ptr @__errno_location() #12
  store i32 %8809, ptr %8810, align 4, !tbaa !5
  %8811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8812 = load i32, ptr @test_count, align 4, !tbaa !5
  %8813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8814 = load i32, ptr %8813, align 4, !tbaa !5
  %8815 = call ptr @s2n_strerror(i32 noundef %8814, ptr noundef @.str.4)
  %8816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8817 = load i32, ptr %8816, align 4, !tbaa !5
  %8818 = call ptr @s2n_strerror_debug(i32 noundef %8817, ptr noundef @.str.4)
  %8819 = call ptr @__errno_location() #12
  %8820 = load i32, ptr %8819, align 4, !tbaa !5
  %8821 = call ptr @strerror(i32 noundef %8820) #11
  %8822 = call ptr @__errno_location() #12
  %8823 = load i32, ptr %8822, align 4, !tbaa !5
  %8824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8811, ptr noundef @.str.5, i32 noundef %8812, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 1316, ptr noundef %8815, ptr noundef %8818, ptr noundef %8821, i32 noundef %8823) #11
  br label %8825

8825:                                             ; preds = %8808, %8791
  call void @llvm.lifetime.end.p0(i64 4, ptr %289) #11
  br label %8826

8826:                                             ; preds = %8825
  br label %8827

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

8828:                                             ; No predecessors!
  br label %8829

8829:                                             ; preds = %8828
  br label %8830

8830:                                             ; preds = %8829, %8767
  br label %8831

8831:                                             ; preds = %8830
  br label %8832

8832:                                             ; preds = %8831
  br label %8833

8833:                                             ; preds = %8832
  %8834 = load i32, ptr @test_count, align 4, !tbaa !5
  %8835 = add nsw i32 %8834, 1
  store i32 %8835, ptr @test_count, align 4, !tbaa !5
  %8836 = load i32, ptr %287, align 4, !tbaa !5
  %8837 = icmp ugt i32 %8836, 24
  br i1 %8837, label %8891, label %8838

8838:                                             ; preds = %8833
  br label %8839

8839:                                             ; preds = %8838
  br label %8840

8840:                                             ; preds = %8839
  call void @llvm.lifetime.start.p0(i64 4, ptr %290) #11
  %8841 = call ptr @__errno_location() #12
  %8842 = load i32, ptr %8841, align 4, !tbaa !5
  store i32 %8842, ptr %290, align 4, !tbaa !5
  %8843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8844 = call i32 @s2n_print_stacktrace(ptr noundef %8843)
  %8845 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8846 = trunc i8 %8845 to i1
  br i1 %8846, label %8847, label %8869

8847:                                             ; preds = %8840
  %8848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8849 = call i32 @fileno(ptr noundef %8848) #11
  %8850 = call i32 @isatty(i32 noundef %8849) #11
  %8851 = icmp ne i32 %8850, 0
  br i1 %8851, label %8852, label %8869

8852:                                             ; preds = %8847
  %8853 = load i32, ptr %290, align 4, !tbaa !5
  %8854 = call ptr @__errno_location() #12
  store i32 %8853, ptr %8854, align 4, !tbaa !5
  %8855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8856 = load i32, ptr @test_count, align 4, !tbaa !5
  %8857 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8858 = load i32, ptr %8857, align 4, !tbaa !5
  %8859 = call ptr @s2n_strerror(i32 noundef %8858, ptr noundef @.str.4)
  %8860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8861 = load i32, ptr %8860, align 4, !tbaa !5
  %8862 = call ptr @s2n_strerror_debug(i32 noundef %8861, ptr noundef @.str.4)
  %8863 = call ptr @__errno_location() #12
  %8864 = load i32, ptr %8863, align 4, !tbaa !5
  %8865 = call ptr @strerror(i32 noundef %8864) #11
  %8866 = call ptr @__errno_location() #12
  %8867 = load i32, ptr %8866, align 4, !tbaa !5
  %8868 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8855, ptr noundef @.str.2, i32 noundef %8856, ptr noundef @.str.105, ptr noundef @.str.1, i32 noundef 1318, ptr noundef %8859, ptr noundef %8862, ptr noundef %8865, i32 noundef %8867) #11
  br label %8886

8869:                                             ; preds = %8847, %8840
  %8870 = load i32, ptr %290, align 4, !tbaa !5
  %8871 = call ptr @__errno_location() #12
  store i32 %8870, ptr %8871, align 4, !tbaa !5
  %8872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8873 = load i32, ptr @test_count, align 4, !tbaa !5
  %8874 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8875 = load i32, ptr %8874, align 4, !tbaa !5
  %8876 = call ptr @s2n_strerror(i32 noundef %8875, ptr noundef @.str.4)
  %8877 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8878 = load i32, ptr %8877, align 4, !tbaa !5
  %8879 = call ptr @s2n_strerror_debug(i32 noundef %8878, ptr noundef @.str.4)
  %8880 = call ptr @__errno_location() #12
  %8881 = load i32, ptr %8880, align 4, !tbaa !5
  %8882 = call ptr @strerror(i32 noundef %8881) #11
  %8883 = call ptr @__errno_location() #12
  %8884 = load i32, ptr %8883, align 4, !tbaa !5
  %8885 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8872, ptr noundef @.str.5, i32 noundef %8873, ptr noundef @.str.105, ptr noundef @.str.1, i32 noundef 1318, ptr noundef %8876, ptr noundef %8879, ptr noundef %8882, i32 noundef %8884) #11
  br label %8886

8886:                                             ; preds = %8869, %8852
  call void @llvm.lifetime.end.p0(i64 4, ptr %290) #11
  br label %8887

8887:                                             ; preds = %8886
  br label %8888

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

8889:                                             ; No predecessors!
  br label %8890

8890:                                             ; preds = %8889
  br label %8891

8891:                                             ; preds = %8890, %8833
  br label %8892

8892:                                             ; preds = %8891
  br label %8893

8893:                                             ; preds = %8892
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #11
  %8894 = getelementptr inbounds [200 x i8], ptr %286, i64 0, i64 24
  store ptr %8894, ptr %291, align 8, !tbaa !9
  br label %8895

8895:                                             ; preds = %8893
  %8896 = load i32, ptr @test_count, align 4, !tbaa !5
  %8897 = add nsw i32 %8896, 1
  store i32 %8897, ptr @test_count, align 4, !tbaa !5
  %8898 = load i32, ptr %287, align 4, !tbaa !5
  %8899 = zext i32 %8898 to i64
  %8900 = icmp uge i64 %8899, 36
  br i1 %8900, label %8954, label %8901

8901:                                             ; preds = %8895
  br label %8902

8902:                                             ; preds = %8901
  br label %8903

8903:                                             ; preds = %8902
  call void @llvm.lifetime.start.p0(i64 4, ptr %292) #11
  %8904 = call ptr @__errno_location() #12
  %8905 = load i32, ptr %8904, align 4, !tbaa !5
  store i32 %8905, ptr %292, align 4, !tbaa !5
  %8906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8907 = call i32 @s2n_print_stacktrace(ptr noundef %8906)
  %8908 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8909 = trunc i8 %8908 to i1
  br i1 %8909, label %8910, label %8932

8910:                                             ; preds = %8903
  %8911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8912 = call i32 @fileno(ptr noundef %8911) #11
  %8913 = call i32 @isatty(i32 noundef %8912) #11
  %8914 = icmp ne i32 %8913, 0
  br i1 %8914, label %8915, label %8932

8915:                                             ; preds = %8910
  %8916 = load i32, ptr %292, align 4, !tbaa !5
  %8917 = call ptr @__errno_location() #12
  store i32 %8916, ptr %8917, align 4, !tbaa !5
  %8918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8919 = load i32, ptr @test_count, align 4, !tbaa !5
  %8920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8921 = load i32, ptr %8920, align 4, !tbaa !5
  %8922 = call ptr @s2n_strerror(i32 noundef %8921, ptr noundef @.str.4)
  %8923 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8924 = load i32, ptr %8923, align 4, !tbaa !5
  %8925 = call ptr @s2n_strerror_debug(i32 noundef %8924, ptr noundef @.str.4)
  %8926 = call ptr @__errno_location() #12
  %8927 = load i32, ptr %8926, align 4, !tbaa !5
  %8928 = call ptr @strerror(i32 noundef %8927) #11
  %8929 = call ptr @__errno_location() #12
  %8930 = load i32, ptr %8929, align 4, !tbaa !5
  %8931 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8918, ptr noundef @.str.2, i32 noundef %8919, ptr noundef @.str.106, ptr noundef @.str.1, i32 noundef 1320, ptr noundef %8922, ptr noundef %8925, ptr noundef %8928, i32 noundef %8930) #11
  br label %8949

8932:                                             ; preds = %8910, %8903
  %8933 = load i32, ptr %292, align 4, !tbaa !5
  %8934 = call ptr @__errno_location() #12
  store i32 %8933, ptr %8934, align 4, !tbaa !5
  %8935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8936 = load i32, ptr @test_count, align 4, !tbaa !5
  %8937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8938 = load i32, ptr %8937, align 4, !tbaa !5
  %8939 = call ptr @s2n_strerror(i32 noundef %8938, ptr noundef @.str.4)
  %8940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8941 = load i32, ptr %8940, align 4, !tbaa !5
  %8942 = call ptr @s2n_strerror_debug(i32 noundef %8941, ptr noundef @.str.4)
  %8943 = call ptr @__errno_location() #12
  %8944 = load i32, ptr %8943, align 4, !tbaa !5
  %8945 = call ptr @strerror(i32 noundef %8944) #11
  %8946 = call ptr @__errno_location() #12
  %8947 = load i32, ptr %8946, align 4, !tbaa !5
  %8948 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8935, ptr noundef @.str.5, i32 noundef %8936, ptr noundef @.str.106, ptr noundef @.str.1, i32 noundef 1320, ptr noundef %8939, ptr noundef %8942, ptr noundef %8945, i32 noundef %8947) #11
  br label %8949

8949:                                             ; preds = %8932, %8915
  call void @llvm.lifetime.end.p0(i64 4, ptr %292) #11
  br label %8950

8950:                                             ; preds = %8949
  br label %8951

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

8952:                                             ; No predecessors!
  br label %8953

8953:                                             ; preds = %8952
  br label %8954

8954:                                             ; preds = %8953, %8895
  br label %8955

8955:                                             ; preds = %8954
  br label %8956

8956:                                             ; preds = %8955
  br label %8957

8957:                                             ; preds = %8956
  br label %8958

8958:                                             ; preds = %8957
  %8959 = load i32, ptr @test_count, align 4, !tbaa !5
  %8960 = add nsw i32 %8959, 1
  store i32 %8960, ptr @test_count, align 4, !tbaa !5
  %8961 = load ptr, ptr %291, align 8, !tbaa !9
  %8962 = getelementptr inbounds [13 x i8], ptr %285, i64 0, i64 0
  %8963 = call i32 @memcmp(ptr noundef %8961, ptr noundef %8962, i64 noundef 12) #14
  %8964 = icmp eq i32 %8963, 0
  br i1 %8964, label %9018, label %8965

8965:                                             ; preds = %8958
  br label %8966

8966:                                             ; preds = %8965
  br label %8967

8967:                                             ; preds = %8966
  call void @llvm.lifetime.start.p0(i64 4, ptr %293) #11
  %8968 = call ptr @__errno_location() #12
  %8969 = load i32, ptr %8968, align 4, !tbaa !5
  store i32 %8969, ptr %293, align 4, !tbaa !5
  %8970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8971 = call i32 @s2n_print_stacktrace(ptr noundef %8970)
  %8972 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8973 = trunc i8 %8972 to i1
  br i1 %8973, label %8974, label %8996

8974:                                             ; preds = %8967
  %8975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8976 = call i32 @fileno(ptr noundef %8975) #11
  %8977 = call i32 @isatty(i32 noundef %8976) #11
  %8978 = icmp ne i32 %8977, 0
  br i1 %8978, label %8979, label %8996

8979:                                             ; preds = %8974
  %8980 = load i32, ptr %293, align 4, !tbaa !5
  %8981 = call ptr @__errno_location() #12
  store i32 %8980, ptr %8981, align 4, !tbaa !5
  %8982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8983 = load i32, ptr @test_count, align 4, !tbaa !5
  %8984 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8985 = load i32, ptr %8984, align 4, !tbaa !5
  %8986 = call ptr @s2n_strerror(i32 noundef %8985, ptr noundef @.str.4)
  %8987 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8988 = load i32, ptr %8987, align 4, !tbaa !5
  %8989 = call ptr @s2n_strerror_debug(i32 noundef %8988, ptr noundef @.str.4)
  %8990 = call ptr @__errno_location() #12
  %8991 = load i32, ptr %8990, align 4, !tbaa !5
  %8992 = call ptr @strerror(i32 noundef %8991) #11
  %8993 = call ptr @__errno_location() #12
  %8994 = load i32, ptr %8993, align 4, !tbaa !5
  %8995 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8982, ptr noundef @.str.2, i32 noundef %8983, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1321, ptr noundef %8986, ptr noundef %8989, ptr noundef %8992, i32 noundef %8994) #11
  br label %9013

8996:                                             ; preds = %8974, %8967
  %8997 = load i32, ptr %293, align 4, !tbaa !5
  %8998 = call ptr @__errno_location() #12
  store i32 %8997, ptr %8998, align 4, !tbaa !5
  %8999 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9000 = load i32, ptr @test_count, align 4, !tbaa !5
  %9001 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9002 = load i32, ptr %9001, align 4, !tbaa !5
  %9003 = call ptr @s2n_strerror(i32 noundef %9002, ptr noundef @.str.4)
  %9004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9005 = load i32, ptr %9004, align 4, !tbaa !5
  %9006 = call ptr @s2n_strerror_debug(i32 noundef %9005, ptr noundef @.str.4)
  %9007 = call ptr @__errno_location() #12
  %9008 = load i32, ptr %9007, align 4, !tbaa !5
  %9009 = call ptr @strerror(i32 noundef %9008) #11
  %9010 = call ptr @__errno_location() #12
  %9011 = load i32, ptr %9010, align 4, !tbaa !5
  %9012 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8999, ptr noundef @.str.5, i32 noundef %9000, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1321, ptr noundef %9003, ptr noundef %9006, ptr noundef %9009, i32 noundef %9011) #11
  br label %9013

9013:                                             ; preds = %8996, %8979
  call void @llvm.lifetime.end.p0(i64 4, ptr %293) #11
  br label %9014

9014:                                             ; preds = %9013
  br label %9015

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

9016:                                             ; No predecessors!
  br label %9017

9017:                                             ; preds = %9016
  br label %9018

9018:                                             ; preds = %9017, %8958
  br label %9019

9019:                                             ; preds = %9018
  br label %9020

9020:                                             ; preds = %9019
  br label %9021

9021:                                             ; preds = %9020
  br label %9022

9022:                                             ; preds = %9021
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %287) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %286) #11
  call void @llvm.lifetime.end.p0(i64 13, ptr %285) #11
  call void @llvm.lifetime.start.p0(i64 47, ptr %294) #11
  call void @llvm.memset.p0.i64(ptr align 16 %294, i8 0, i64 47, i1 false)
  %9023 = getelementptr inbounds [47 x i8], ptr %294, i32 0, i32 36
  store i8 2, ptr %9023, align 4
  %9024 = getelementptr inbounds [47 x i8], ptr %294, i32 0, i32 39
  store i8 1, ptr %9024, align 1
  %9025 = getelementptr inbounds [47 x i8], ptr %294, i32 0, i32 42
  store i8 4, ptr %9025, align 2
  %9026 = getelementptr inbounds [47 x i8], ptr %294, i32 0, i32 44
  store i8 1, ptr %9026, align 4
  br label %9027

9027:                                             ; preds = %9022
  %9028 = load i32, ptr @test_count, align 4, !tbaa !5
  %9029 = add nsw i32 %9028, 1
  store i32 %9029, ptr @test_count, align 4, !tbaa !5
  br label %9030

9030:                                             ; preds = %9027
  br label %9031

9031:                                             ; preds = %9030
  call void @llvm.lifetime.start.p0(i64 51, ptr %295) #11
  call void @llvm.memset.p0.i64(ptr align 16 %295, i8 0, i64 51, i1 false)
  %9032 = getelementptr inbounds [51 x i8], ptr %295, i32 0, i32 0
  store i8 1, ptr %9032, align 16
  %9033 = getelementptr inbounds [51 x i8], ptr %295, i32 0, i32 3
  store i8 47, ptr %9033, align 1
  %9034 = getelementptr inbounds [51 x i8], ptr %295, i32 0, i32 40
  store i8 2, ptr %9034, align 8
  %9035 = getelementptr inbounds [51 x i8], ptr %295, i32 0, i32 43
  store i8 1, ptr %9035, align 1
  %9036 = getelementptr inbounds [51 x i8], ptr %295, i32 0, i32 46
  store i8 4, ptr %9036, align 2
  %9037 = getelementptr inbounds [51 x i8], ptr %295, i32 0, i32 48
  store i8 1, ptr %9037, align 16
  call void @llvm.lifetime.start.p0(i64 200, ptr %296) #11
  call void @llvm.memset.p0.i64(ptr align 16 %296, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %297) #11
  store i32 0, ptr %297, align 4, !tbaa !5
  br label %9038

9038:                                             ; preds = %9031
  %9039 = load i32, ptr @test_count, align 4, !tbaa !5
  %9040 = add nsw i32 %9039, 1
  store i32 %9040, ptr @test_count, align 4, !tbaa !5
  %9041 = getelementptr inbounds [51 x i8], ptr %295, i64 0, i64 0
  %9042 = getelementptr inbounds [200 x i8], ptr %296, i64 0, i64 0
  %9043 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %9041, i64 noundef 51, i64 noundef 200, ptr noundef %9042, ptr noundef %297)
  %9044 = getelementptr inbounds %struct.s2n_result, ptr %298, i32 0, i32 0
  store i32 %9043, ptr %9044, align 4
  %9045 = getelementptr inbounds %struct.s2n_result, ptr %298, i32 0, i32 0
  %9046 = load i32, ptr %9045, align 4
  %9047 = call zeroext i1 @s2n_result_is_ok(i32 %9046)
  br i1 %9047, label %9101, label %9048

9048:                                             ; preds = %9038
  br label %9049

9049:                                             ; preds = %9048
  br label %9050

9050:                                             ; preds = %9049
  call void @llvm.lifetime.start.p0(i64 4, ptr %299) #11
  %9051 = call ptr @__errno_location() #12
  %9052 = load i32, ptr %9051, align 4, !tbaa !5
  store i32 %9052, ptr %299, align 4, !tbaa !5
  %9053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9054 = call i32 @s2n_print_stacktrace(ptr noundef %9053)
  %9055 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9056 = trunc i8 %9055 to i1
  br i1 %9056, label %9057, label %9079

9057:                                             ; preds = %9050
  %9058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9059 = call i32 @fileno(ptr noundef %9058) #11
  %9060 = call i32 @isatty(i32 noundef %9059) #11
  %9061 = icmp ne i32 %9060, 0
  br i1 %9061, label %9062, label %9079

9062:                                             ; preds = %9057
  %9063 = load i32, ptr %299, align 4, !tbaa !5
  %9064 = call ptr @__errno_location() #12
  store i32 %9063, ptr %9064, align 4, !tbaa !5
  %9065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9066 = load i32, ptr @test_count, align 4, !tbaa !5
  %9067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9068 = load i32, ptr %9067, align 4, !tbaa !5
  %9069 = call ptr @s2n_strerror(i32 noundef %9068, ptr noundef @.str.4)
  %9070 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9071 = load i32, ptr %9070, align 4, !tbaa !5
  %9072 = call ptr @s2n_strerror_debug(i32 noundef %9071, ptr noundef @.str.4)
  %9073 = call ptr @__errno_location() #12
  %9074 = load i32, ptr %9073, align 4, !tbaa !5
  %9075 = call ptr @strerror(i32 noundef %9074) #11
  %9076 = call ptr @__errno_location() #12
  %9077 = load i32, ptr %9076, align 4, !tbaa !5
  %9078 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9065, ptr noundef @.str.2, i32 noundef %9066, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1346, ptr noundef %9069, ptr noundef %9072, ptr noundef %9075, i32 noundef %9077) #11
  br label %9096

9079:                                             ; preds = %9057, %9050
  %9080 = load i32, ptr %299, align 4, !tbaa !5
  %9081 = call ptr @__errno_location() #12
  store i32 %9080, ptr %9081, align 4, !tbaa !5
  %9082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9083 = load i32, ptr @test_count, align 4, !tbaa !5
  %9084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9085 = load i32, ptr %9084, align 4, !tbaa !5
  %9086 = call ptr @s2n_strerror(i32 noundef %9085, ptr noundef @.str.4)
  %9087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9088 = load i32, ptr %9087, align 4, !tbaa !5
  %9089 = call ptr @s2n_strerror_debug(i32 noundef %9088, ptr noundef @.str.4)
  %9090 = call ptr @__errno_location() #12
  %9091 = load i32, ptr %9090, align 4, !tbaa !5
  %9092 = call ptr @strerror(i32 noundef %9091) #11
  %9093 = call ptr @__errno_location() #12
  %9094 = load i32, ptr %9093, align 4, !tbaa !5
  %9095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9082, ptr noundef @.str.5, i32 noundef %9083, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1346, ptr noundef %9086, ptr noundef %9089, ptr noundef %9092, i32 noundef %9094) #11
  br label %9096

9096:                                             ; preds = %9079, %9062
  call void @llvm.lifetime.end.p0(i64 4, ptr %299) #11
  br label %9097

9097:                                             ; preds = %9096
  br label %9098

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

9099:                                             ; No predecessors!
  br label %9100

9100:                                             ; preds = %9099
  br label %9101

9101:                                             ; preds = %9100, %9038
  br label %9102

9102:                                             ; preds = %9101
  br label %9103

9103:                                             ; preds = %9102
  br label %9104

9104:                                             ; preds = %9103
  %9105 = load i32, ptr @test_count, align 4, !tbaa !5
  %9106 = add nsw i32 %9105, 1
  store i32 %9106, ptr @test_count, align 4, !tbaa !5
  %9107 = load i32, ptr %297, align 4, !tbaa !5
  %9108 = icmp ugt i32 %9107, 1
  br i1 %9108, label %9162, label %9109

9109:                                             ; preds = %9104
  br label %9110

9110:                                             ; preds = %9109
  br label %9111

9111:                                             ; preds = %9110
  call void @llvm.lifetime.start.p0(i64 4, ptr %300) #11
  %9112 = call ptr @__errno_location() #12
  %9113 = load i32, ptr %9112, align 4, !tbaa !5
  store i32 %9113, ptr %300, align 4, !tbaa !5
  %9114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9115 = call i32 @s2n_print_stacktrace(ptr noundef %9114)
  %9116 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9117 = trunc i8 %9116 to i1
  br i1 %9117, label %9118, label %9140

9118:                                             ; preds = %9111
  %9119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9120 = call i32 @fileno(ptr noundef %9119) #11
  %9121 = call i32 @isatty(i32 noundef %9120) #11
  %9122 = icmp ne i32 %9121, 0
  br i1 %9122, label %9123, label %9140

9123:                                             ; preds = %9118
  %9124 = load i32, ptr %300, align 4, !tbaa !5
  %9125 = call ptr @__errno_location() #12
  store i32 %9124, ptr %9125, align 4, !tbaa !5
  %9126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9127 = load i32, ptr @test_count, align 4, !tbaa !5
  %9128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9129 = load i32, ptr %9128, align 4, !tbaa !5
  %9130 = call ptr @s2n_strerror(i32 noundef %9129, ptr noundef @.str.4)
  %9131 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9132 = load i32, ptr %9131, align 4, !tbaa !5
  %9133 = call ptr @s2n_strerror_debug(i32 noundef %9132, ptr noundef @.str.4)
  %9134 = call ptr @__errno_location() #12
  %9135 = load i32, ptr %9134, align 4, !tbaa !5
  %9136 = call ptr @strerror(i32 noundef %9135) #11
  %9137 = call ptr @__errno_location() #12
  %9138 = load i32, ptr %9137, align 4, !tbaa !5
  %9139 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9126, ptr noundef @.str.2, i32 noundef %9127, ptr noundef @.str.107, ptr noundef @.str.1, i32 noundef 1349, ptr noundef %9130, ptr noundef %9133, ptr noundef %9136, i32 noundef %9138) #11
  br label %9157

9140:                                             ; preds = %9118, %9111
  %9141 = load i32, ptr %300, align 4, !tbaa !5
  %9142 = call ptr @__errno_location() #12
  store i32 %9141, ptr %9142, align 4, !tbaa !5
  %9143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9144 = load i32, ptr @test_count, align 4, !tbaa !5
  %9145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9146 = load i32, ptr %9145, align 4, !tbaa !5
  %9147 = call ptr @s2n_strerror(i32 noundef %9146, ptr noundef @.str.4)
  %9148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9149 = load i32, ptr %9148, align 4, !tbaa !5
  %9150 = call ptr @s2n_strerror_debug(i32 noundef %9149, ptr noundef @.str.4)
  %9151 = call ptr @__errno_location() #12
  %9152 = load i32, ptr %9151, align 4, !tbaa !5
  %9153 = call ptr @strerror(i32 noundef %9152) #11
  %9154 = call ptr @__errno_location() #12
  %9155 = load i32, ptr %9154, align 4, !tbaa !5
  %9156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9143, ptr noundef @.str.5, i32 noundef %9144, ptr noundef @.str.107, ptr noundef @.str.1, i32 noundef 1349, ptr noundef %9147, ptr noundef %9150, ptr noundef %9153, i32 noundef %9155) #11
  br label %9157

9157:                                             ; preds = %9140, %9123
  call void @llvm.lifetime.end.p0(i64 4, ptr %300) #11
  br label %9158

9158:                                             ; preds = %9157
  br label %9159

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

9160:                                             ; No predecessors!
  br label %9161

9161:                                             ; preds = %9160
  br label %9162

9162:                                             ; preds = %9161, %9104
  br label %9163

9163:                                             ; preds = %9162
  br label %9164

9164:                                             ; preds = %9163
  br label %9165

9165:                                             ; preds = %9164
  %9166 = load i32, ptr @test_count, align 4, !tbaa !5
  %9167 = add nsw i32 %9166, 1
  store i32 %9167, ptr @test_count, align 4, !tbaa !5
  %9168 = load i32, ptr %297, align 4, !tbaa !5
  %9169 = sub i32 %9168, 1
  %9170 = zext i32 %9169 to i64
  %9171 = getelementptr inbounds [200 x i8], ptr %296, i64 0, i64 %9170
  %9172 = load i8, ptr %9171, align 1, !tbaa !15
  %9173 = zext i8 %9172 to i32
  %9174 = icmp eq i32 %9173, 95
  br i1 %9174, label %9175, label %9228

9175:                                             ; preds = %9165
  br label %9176

9176:                                             ; preds = %9175
  br label %9177

9177:                                             ; preds = %9176
  call void @llvm.lifetime.start.p0(i64 4, ptr %301) #11
  %9178 = call ptr @__errno_location() #12
  %9179 = load i32, ptr %9178, align 4, !tbaa !5
  store i32 %9179, ptr %301, align 4, !tbaa !5
  %9180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9181 = call i32 @s2n_print_stacktrace(ptr noundef %9180)
  %9182 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9183 = trunc i8 %9182 to i1
  br i1 %9183, label %9184, label %9206

9184:                                             ; preds = %9177
  %9185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9186 = call i32 @fileno(ptr noundef %9185) #11
  %9187 = call i32 @isatty(i32 noundef %9186) #11
  %9188 = icmp ne i32 %9187, 0
  br i1 %9188, label %9189, label %9206

9189:                                             ; preds = %9184
  %9190 = load i32, ptr %301, align 4, !tbaa !5
  %9191 = call ptr @__errno_location() #12
  store i32 %9190, ptr %9191, align 4, !tbaa !5
  %9192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9193 = load i32, ptr @test_count, align 4, !tbaa !5
  %9194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9195 = load i32, ptr %9194, align 4, !tbaa !5
  %9196 = call ptr @s2n_strerror(i32 noundef %9195, ptr noundef @.str.4)
  %9197 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9198 = load i32, ptr %9197, align 4, !tbaa !5
  %9199 = call ptr @s2n_strerror_debug(i32 noundef %9198, ptr noundef @.str.4)
  %9200 = call ptr @__errno_location() #12
  %9201 = load i32, ptr %9200, align 4, !tbaa !5
  %9202 = call ptr @strerror(i32 noundef %9201) #11
  %9203 = call ptr @__errno_location() #12
  %9204 = load i32, ptr %9203, align 4, !tbaa !5
  %9205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9192, ptr noundef @.str.2, i32 noundef %9193, ptr noundef @.str.108, ptr noundef @.str.1, i32 noundef 1350, ptr noundef %9196, ptr noundef %9199, ptr noundef %9202, i32 noundef %9204) #11
  br label %9223

9206:                                             ; preds = %9184, %9177
  %9207 = load i32, ptr %301, align 4, !tbaa !5
  %9208 = call ptr @__errno_location() #12
  store i32 %9207, ptr %9208, align 4, !tbaa !5
  %9209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9210 = load i32, ptr @test_count, align 4, !tbaa !5
  %9211 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9212 = load i32, ptr %9211, align 4, !tbaa !5
  %9213 = call ptr @s2n_strerror(i32 noundef %9212, ptr noundef @.str.4)
  %9214 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9215 = load i32, ptr %9214, align 4, !tbaa !5
  %9216 = call ptr @s2n_strerror_debug(i32 noundef %9215, ptr noundef @.str.4)
  %9217 = call ptr @__errno_location() #12
  %9218 = load i32, ptr %9217, align 4, !tbaa !5
  %9219 = call ptr @strerror(i32 noundef %9218) #11
  %9220 = call ptr @__errno_location() #12
  %9221 = load i32, ptr %9220, align 4, !tbaa !5
  %9222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9209, ptr noundef @.str.5, i32 noundef %9210, ptr noundef @.str.108, ptr noundef @.str.1, i32 noundef 1350, ptr noundef %9213, ptr noundef %9216, ptr noundef %9219, i32 noundef %9221) #11
  br label %9223

9223:                                             ; preds = %9206, %9189
  call void @llvm.lifetime.end.p0(i64 4, ptr %301) #11
  br label %9224

9224:                                             ; preds = %9223
  br label %9225

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

9226:                                             ; No predecessors!
  br label %9227

9227:                                             ; preds = %9226
  br label %9228

9228:                                             ; preds = %9227, %9165
  br label %9229

9229:                                             ; preds = %9228
  br label %9230

9230:                                             ; preds = %9229
  call void @llvm.lifetime.end.p0(i64 4, ptr %297) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %296) #11
  call void @llvm.lifetime.end.p0(i64 51, ptr %295) #11
  call void @llvm.lifetime.end.p0(i64 47, ptr %294) #11
  call void @llvm.lifetime.start.p0(i64 43, ptr %302) #11
  call void @llvm.memset.p0.i64(ptr align 16 %302, i8 0, i64 43, i1 false)
  %9231 = getelementptr inbounds [43 x i8], ptr %302, i32 0, i32 36
  store i8 2, ptr %9231, align 4
  %9232 = getelementptr inbounds [43 x i8], ptr %302, i32 0, i32 39
  store i8 1, ptr %9232, align 1
  br label %9233

9233:                                             ; preds = %9230
  %9234 = load i32, ptr @test_count, align 4, !tbaa !5
  %9235 = add nsw i32 %9234, 1
  store i32 %9235, ptr @test_count, align 4, !tbaa !5
  br label %9236

9236:                                             ; preds = %9233
  br label %9237

9237:                                             ; preds = %9236
  call void @llvm.lifetime.start.p0(i64 47, ptr %303) #11
  call void @llvm.memset.p0.i64(ptr align 16 %303, i8 0, i64 47, i1 false)
  %9238 = getelementptr inbounds [47 x i8], ptr %303, i32 0, i32 0
  store i8 1, ptr %9238, align 16
  %9239 = getelementptr inbounds [47 x i8], ptr %303, i32 0, i32 3
  store i8 43, ptr %9239, align 1
  %9240 = getelementptr inbounds [47 x i8], ptr %303, i32 0, i32 40
  store i8 2, ptr %9240, align 8
  %9241 = getelementptr inbounds [47 x i8], ptr %303, i32 0, i32 43
  store i8 1, ptr %9241, align 1
  call void @llvm.lifetime.start.p0(i64 200, ptr %304) #11
  call void @llvm.memset.p0.i64(ptr align 16 %304, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %305) #11
  store i32 0, ptr %305, align 4, !tbaa !5
  br label %9242

9242:                                             ; preds = %9237
  %9243 = load i32, ptr @test_count, align 4, !tbaa !5
  %9244 = add nsw i32 %9243, 1
  store i32 %9244, ptr @test_count, align 4, !tbaa !5
  %9245 = getelementptr inbounds [47 x i8], ptr %303, i64 0, i64 0
  %9246 = getelementptr inbounds [200 x i8], ptr %304, i64 0, i64 0
  %9247 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %9245, i64 noundef 47, i64 noundef 200, ptr noundef %9246, ptr noundef %305)
  %9248 = getelementptr inbounds %struct.s2n_result, ptr %306, i32 0, i32 0
  store i32 %9247, ptr %9248, align 4
  %9249 = getelementptr inbounds %struct.s2n_result, ptr %306, i32 0, i32 0
  %9250 = load i32, ptr %9249, align 4
  %9251 = call zeroext i1 @s2n_result_is_ok(i32 %9250)
  br i1 %9251, label %9305, label %9252

9252:                                             ; preds = %9242
  br label %9253

9253:                                             ; preds = %9252
  br label %9254

9254:                                             ; preds = %9253
  call void @llvm.lifetime.start.p0(i64 4, ptr %307) #11
  %9255 = call ptr @__errno_location() #12
  %9256 = load i32, ptr %9255, align 4, !tbaa !5
  store i32 %9256, ptr %307, align 4, !tbaa !5
  %9257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9258 = call i32 @s2n_print_stacktrace(ptr noundef %9257)
  %9259 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9260 = trunc i8 %9259 to i1
  br i1 %9260, label %9261, label %9283

9261:                                             ; preds = %9254
  %9262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9263 = call i32 @fileno(ptr noundef %9262) #11
  %9264 = call i32 @isatty(i32 noundef %9263) #11
  %9265 = icmp ne i32 %9264, 0
  br i1 %9265, label %9266, label %9283

9266:                                             ; preds = %9261
  %9267 = load i32, ptr %307, align 4, !tbaa !5
  %9268 = call ptr @__errno_location() #12
  store i32 %9267, ptr %9268, align 4, !tbaa !5
  %9269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9270 = load i32, ptr @test_count, align 4, !tbaa !5
  %9271 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9272 = load i32, ptr %9271, align 4, !tbaa !5
  %9273 = call ptr @s2n_strerror(i32 noundef %9272, ptr noundef @.str.4)
  %9274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9275 = load i32, ptr %9274, align 4, !tbaa !5
  %9276 = call ptr @s2n_strerror_debug(i32 noundef %9275, ptr noundef @.str.4)
  %9277 = call ptr @__errno_location() #12
  %9278 = load i32, ptr %9277, align 4, !tbaa !5
  %9279 = call ptr @strerror(i32 noundef %9278) #11
  %9280 = call ptr @__errno_location() #12
  %9281 = load i32, ptr %9280, align 4, !tbaa !5
  %9282 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9269, ptr noundef @.str.2, i32 noundef %9270, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1365, ptr noundef %9273, ptr noundef %9276, ptr noundef %9279, i32 noundef %9281) #11
  br label %9300

9283:                                             ; preds = %9261, %9254
  %9284 = load i32, ptr %307, align 4, !tbaa !5
  %9285 = call ptr @__errno_location() #12
  store i32 %9284, ptr %9285, align 4, !tbaa !5
  %9286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9287 = load i32, ptr @test_count, align 4, !tbaa !5
  %9288 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9289 = load i32, ptr %9288, align 4, !tbaa !5
  %9290 = call ptr @s2n_strerror(i32 noundef %9289, ptr noundef @.str.4)
  %9291 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9292 = load i32, ptr %9291, align 4, !tbaa !5
  %9293 = call ptr @s2n_strerror_debug(i32 noundef %9292, ptr noundef @.str.4)
  %9294 = call ptr @__errno_location() #12
  %9295 = load i32, ptr %9294, align 4, !tbaa !5
  %9296 = call ptr @strerror(i32 noundef %9295) #11
  %9297 = call ptr @__errno_location() #12
  %9298 = load i32, ptr %9297, align 4, !tbaa !5
  %9299 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9286, ptr noundef @.str.5, i32 noundef %9287, ptr noundef @.str.89, ptr noundef @.str.1, i32 noundef 1365, ptr noundef %9290, ptr noundef %9293, ptr noundef %9296, i32 noundef %9298) #11
  br label %9300

9300:                                             ; preds = %9283, %9266
  call void @llvm.lifetime.end.p0(i64 4, ptr %307) #11
  br label %9301

9301:                                             ; preds = %9300
  br label %9302

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

9303:                                             ; No predecessors!
  br label %9304

9304:                                             ; preds = %9303
  br label %9305

9305:                                             ; preds = %9304, %9242
  br label %9306

9306:                                             ; preds = %9305
  br label %9307

9307:                                             ; preds = %9306
  br label %9308

9308:                                             ; preds = %9307
  %9309 = load i32, ptr @test_count, align 4, !tbaa !5
  %9310 = add nsw i32 %9309, 1
  store i32 %9310, ptr @test_count, align 4, !tbaa !5
  %9311 = load i32, ptr %305, align 4, !tbaa !5
  %9312 = icmp ugt i32 %9311, 1
  br i1 %9312, label %9366, label %9313

9313:                                             ; preds = %9308
  br label %9314

9314:                                             ; preds = %9313
  br label %9315

9315:                                             ; preds = %9314
  call void @llvm.lifetime.start.p0(i64 4, ptr %308) #11
  %9316 = call ptr @__errno_location() #12
  %9317 = load i32, ptr %9316, align 4, !tbaa !5
  store i32 %9317, ptr %308, align 4, !tbaa !5
  %9318 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9319 = call i32 @s2n_print_stacktrace(ptr noundef %9318)
  %9320 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9321 = trunc i8 %9320 to i1
  br i1 %9321, label %9322, label %9344

9322:                                             ; preds = %9315
  %9323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9324 = call i32 @fileno(ptr noundef %9323) #11
  %9325 = call i32 @isatty(i32 noundef %9324) #11
  %9326 = icmp ne i32 %9325, 0
  br i1 %9326, label %9327, label %9344

9327:                                             ; preds = %9322
  %9328 = load i32, ptr %308, align 4, !tbaa !5
  %9329 = call ptr @__errno_location() #12
  store i32 %9328, ptr %9329, align 4, !tbaa !5
  %9330 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9331 = load i32, ptr @test_count, align 4, !tbaa !5
  %9332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9333 = load i32, ptr %9332, align 4, !tbaa !5
  %9334 = call ptr @s2n_strerror(i32 noundef %9333, ptr noundef @.str.4)
  %9335 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9336 = load i32, ptr %9335, align 4, !tbaa !5
  %9337 = call ptr @s2n_strerror_debug(i32 noundef %9336, ptr noundef @.str.4)
  %9338 = call ptr @__errno_location() #12
  %9339 = load i32, ptr %9338, align 4, !tbaa !5
  %9340 = call ptr @strerror(i32 noundef %9339) #11
  %9341 = call ptr @__errno_location() #12
  %9342 = load i32, ptr %9341, align 4, !tbaa !5
  %9343 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9330, ptr noundef @.str.2, i32 noundef %9331, ptr noundef @.str.107, ptr noundef @.str.1, i32 noundef 1368, ptr noundef %9334, ptr noundef %9337, ptr noundef %9340, i32 noundef %9342) #11
  br label %9361

9344:                                             ; preds = %9322, %9315
  %9345 = load i32, ptr %308, align 4, !tbaa !5
  %9346 = call ptr @__errno_location() #12
  store i32 %9345, ptr %9346, align 4, !tbaa !5
  %9347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9348 = load i32, ptr @test_count, align 4, !tbaa !5
  %9349 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9350 = load i32, ptr %9349, align 4, !tbaa !5
  %9351 = call ptr @s2n_strerror(i32 noundef %9350, ptr noundef @.str.4)
  %9352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9353 = load i32, ptr %9352, align 4, !tbaa !5
  %9354 = call ptr @s2n_strerror_debug(i32 noundef %9353, ptr noundef @.str.4)
  %9355 = call ptr @__errno_location() #12
  %9356 = load i32, ptr %9355, align 4, !tbaa !5
  %9357 = call ptr @strerror(i32 noundef %9356) #11
  %9358 = call ptr @__errno_location() #12
  %9359 = load i32, ptr %9358, align 4, !tbaa !5
  %9360 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9347, ptr noundef @.str.5, i32 noundef %9348, ptr noundef @.str.107, ptr noundef @.str.1, i32 noundef 1368, ptr noundef %9351, ptr noundef %9354, ptr noundef %9357, i32 noundef %9359) #11
  br label %9361

9361:                                             ; preds = %9344, %9327
  call void @llvm.lifetime.end.p0(i64 4, ptr %308) #11
  br label %9362

9362:                                             ; preds = %9361
  br label %9363

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

9364:                                             ; No predecessors!
  br label %9365

9365:                                             ; preds = %9364
  br label %9366

9366:                                             ; preds = %9365, %9308
  br label %9367

9367:                                             ; preds = %9366
  br label %9368

9368:                                             ; preds = %9367
  br label %9369

9369:                                             ; preds = %9368
  %9370 = load i32, ptr @test_count, align 4, !tbaa !5
  %9371 = add nsw i32 %9370, 1
  store i32 %9371, ptr @test_count, align 4, !tbaa !5
  %9372 = load i32, ptr %305, align 4, !tbaa !5
  %9373 = sub i32 %9372, 1
  %9374 = zext i32 %9373 to i64
  %9375 = getelementptr inbounds [200 x i8], ptr %304, i64 0, i64 %9374
  %9376 = load i8, ptr %9375, align 1, !tbaa !15
  %9377 = zext i8 %9376 to i32
  %9378 = icmp eq i32 %9377, 95
  br i1 %9378, label %9432, label %9379

9379:                                             ; preds = %9369
  br label %9380

9380:                                             ; preds = %9379
  br label %9381

9381:                                             ; preds = %9380
  call void @llvm.lifetime.start.p0(i64 4, ptr %309) #11
  %9382 = call ptr @__errno_location() #12
  %9383 = load i32, ptr %9382, align 4, !tbaa !5
  store i32 %9383, ptr %309, align 4, !tbaa !5
  %9384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9385 = call i32 @s2n_print_stacktrace(ptr noundef %9384)
  %9386 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9387 = trunc i8 %9386 to i1
  br i1 %9387, label %9388, label %9410

9388:                                             ; preds = %9381
  %9389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9390 = call i32 @fileno(ptr noundef %9389) #11
  %9391 = call i32 @isatty(i32 noundef %9390) #11
  %9392 = icmp ne i32 %9391, 0
  br i1 %9392, label %9393, label %9410

9393:                                             ; preds = %9388
  %9394 = load i32, ptr %309, align 4, !tbaa !5
  %9395 = call ptr @__errno_location() #12
  store i32 %9394, ptr %9395, align 4, !tbaa !5
  %9396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9397 = load i32, ptr @test_count, align 4, !tbaa !5
  %9398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9399 = load i32, ptr %9398, align 4, !tbaa !5
  %9400 = call ptr @s2n_strerror(i32 noundef %9399, ptr noundef @.str.4)
  %9401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9402 = load i32, ptr %9401, align 4, !tbaa !5
  %9403 = call ptr @s2n_strerror_debug(i32 noundef %9402, ptr noundef @.str.4)
  %9404 = call ptr @__errno_location() #12
  %9405 = load i32, ptr %9404, align 4, !tbaa !5
  %9406 = call ptr @strerror(i32 noundef %9405) #11
  %9407 = call ptr @__errno_location() #12
  %9408 = load i32, ptr %9407, align 4, !tbaa !5
  %9409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9396, ptr noundef @.str.2, i32 noundef %9397, ptr noundef @.str.109, ptr noundef @.str.1, i32 noundef 1369, ptr noundef %9400, ptr noundef %9403, ptr noundef %9406, i32 noundef %9408) #11
  br label %9427

9410:                                             ; preds = %9388, %9381
  %9411 = load i32, ptr %309, align 4, !tbaa !5
  %9412 = call ptr @__errno_location() #12
  store i32 %9411, ptr %9412, align 4, !tbaa !5
  %9413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9414 = load i32, ptr @test_count, align 4, !tbaa !5
  %9415 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9416 = load i32, ptr %9415, align 4, !tbaa !5
  %9417 = call ptr @s2n_strerror(i32 noundef %9416, ptr noundef @.str.4)
  %9418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9419 = load i32, ptr %9418, align 4, !tbaa !5
  %9420 = call ptr @s2n_strerror_debug(i32 noundef %9419, ptr noundef @.str.4)
  %9421 = call ptr @__errno_location() #12
  %9422 = load i32, ptr %9421, align 4, !tbaa !5
  %9423 = call ptr @strerror(i32 noundef %9422) #11
  %9424 = call ptr @__errno_location() #12
  %9425 = load i32, ptr %9424, align 4, !tbaa !5
  %9426 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9413, ptr noundef @.str.5, i32 noundef %9414, ptr noundef @.str.109, ptr noundef @.str.1, i32 noundef 1369, ptr noundef %9417, ptr noundef %9420, ptr noundef %9423, i32 noundef %9425) #11
  br label %9427

9427:                                             ; preds = %9410, %9393
  call void @llvm.lifetime.end.p0(i64 4, ptr %309) #11
  br label %9428

9428:                                             ; preds = %9427
  br label %9429

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

9430:                                             ; No predecessors!
  br label %9431

9431:                                             ; preds = %9430
  br label %9432

9432:                                             ; preds = %9431, %9369
  br label %9433

9433:                                             ; preds = %9432
  br label %9434

9434:                                             ; preds = %9433
  call void @llvm.lifetime.start.p0(i64 8, ptr %310) #11
  store i64 0, ptr %310, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %311) #11
  store i64 0, ptr %311, align 8, !tbaa !16
  br label %9435

9435:                                             ; preds = %9451, %9434
  %9436 = load i64, ptr %311, align 8, !tbaa !16
  %9437 = load i32, ptr %305, align 4, !tbaa !5
  %9438 = zext i32 %9437 to i64
  %9439 = icmp ult i64 %9436, %9438
  br i1 %9439, label %9441, label %9440

9440:                                             ; preds = %9435
  call void @llvm.lifetime.end.p0(i64 8, ptr %311) #11
  br label %9454

9441:                                             ; preds = %9435
  %9442 = load i64, ptr %311, align 8, !tbaa !16
  %9443 = getelementptr inbounds [200 x i8], ptr %304, i64 0, i64 %9442
  %9444 = load i8, ptr %9443, align 1, !tbaa !15
  %9445 = zext i8 %9444 to i32
  %9446 = icmp eq i32 %9445, 95
  br i1 %9446, label %9447, label %9450

9447:                                             ; preds = %9441
  %9448 = load i64, ptr %310, align 8, !tbaa !16
  %9449 = add i64 %9448, 1
  store i64 %9449, ptr %310, align 8, !tbaa !16
  br label %9450

9450:                                             ; preds = %9447, %9441
  br label %9451

9451:                                             ; preds = %9450
  %9452 = load i64, ptr %311, align 8, !tbaa !16
  %9453 = add i64 %9452, 1
  store i64 %9453, ptr %311, align 8, !tbaa !16
  br label %9435, !llvm.loop !41

9454:                                             ; preds = %9440
  br label %9455

9455:                                             ; preds = %9454
  %9456 = load i32, ptr @test_count, align 4, !tbaa !5
  %9457 = add nsw i32 %9456, 1
  store i32 %9457, ptr @test_count, align 4, !tbaa !5
  %9458 = load i64, ptr %310, align 8, !tbaa !16
  %9459 = icmp eq i64 %9458, 2
  br i1 %9459, label %9513, label %9460

9460:                                             ; preds = %9455
  br label %9461

9461:                                             ; preds = %9460
  br label %9462

9462:                                             ; preds = %9461
  call void @llvm.lifetime.start.p0(i64 4, ptr %312) #11
  %9463 = call ptr @__errno_location() #12
  %9464 = load i32, ptr %9463, align 4, !tbaa !5
  store i32 %9464, ptr %312, align 4, !tbaa !5
  %9465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9466 = call i32 @s2n_print_stacktrace(ptr noundef %9465)
  %9467 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9468 = trunc i8 %9467 to i1
  br i1 %9468, label %9469, label %9491

9469:                                             ; preds = %9462
  %9470 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9471 = call i32 @fileno(ptr noundef %9470) #11
  %9472 = call i32 @isatty(i32 noundef %9471) #11
  %9473 = icmp ne i32 %9472, 0
  br i1 %9473, label %9474, label %9491

9474:                                             ; preds = %9469
  %9475 = load i32, ptr %312, align 4, !tbaa !5
  %9476 = call ptr @__errno_location() #12
  store i32 %9475, ptr %9476, align 4, !tbaa !5
  %9477 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9478 = load i32, ptr @test_count, align 4, !tbaa !5
  %9479 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9480 = load i32, ptr %9479, align 4, !tbaa !5
  %9481 = call ptr @s2n_strerror(i32 noundef %9480, ptr noundef @.str.4)
  %9482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9483 = load i32, ptr %9482, align 4, !tbaa !5
  %9484 = call ptr @s2n_strerror_debug(i32 noundef %9483, ptr noundef @.str.4)
  %9485 = call ptr @__errno_location() #12
  %9486 = load i32, ptr %9485, align 4, !tbaa !5
  %9487 = call ptr @strerror(i32 noundef %9486) #11
  %9488 = call ptr @__errno_location() #12
  %9489 = load i32, ptr %9488, align 4, !tbaa !5
  %9490 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9477, ptr noundef @.str.2, i32 noundef %9478, ptr noundef @.str.110, ptr noundef @.str.1, i32 noundef 1381, ptr noundef %9481, ptr noundef %9484, ptr noundef %9487, i32 noundef %9489) #11
  br label %9508

9491:                                             ; preds = %9469, %9462
  %9492 = load i32, ptr %312, align 4, !tbaa !5
  %9493 = call ptr @__errno_location() #12
  store i32 %9492, ptr %9493, align 4, !tbaa !5
  %9494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9495 = load i32, ptr @test_count, align 4, !tbaa !5
  %9496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9497 = load i32, ptr %9496, align 4, !tbaa !5
  %9498 = call ptr @s2n_strerror(i32 noundef %9497, ptr noundef @.str.4)
  %9499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9500 = load i32, ptr %9499, align 4, !tbaa !5
  %9501 = call ptr @s2n_strerror_debug(i32 noundef %9500, ptr noundef @.str.4)
  %9502 = call ptr @__errno_location() #12
  %9503 = load i32, ptr %9502, align 4, !tbaa !5
  %9504 = call ptr @strerror(i32 noundef %9503) #11
  %9505 = call ptr @__errno_location() #12
  %9506 = load i32, ptr %9505, align 4, !tbaa !5
  %9507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9494, ptr noundef @.str.5, i32 noundef %9495, ptr noundef @.str.110, ptr noundef @.str.1, i32 noundef 1381, ptr noundef %9498, ptr noundef %9501, ptr noundef %9504, i32 noundef %9506) #11
  br label %9508

9508:                                             ; preds = %9491, %9474
  call void @llvm.lifetime.end.p0(i64 4, ptr %312) #11
  br label %9509

9509:                                             ; preds = %9508
  br label %9510

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

9511:                                             ; No predecessors!
  br label %9512

9512:                                             ; preds = %9511
  br label %9513

9513:                                             ; preds = %9512, %9455
  br label %9514

9514:                                             ; preds = %9513
  br label %9515

9515:                                             ; preds = %9514
  call void @llvm.lifetime.end.p0(i64 8, ptr %310) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %305) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %304) #11
  call void @llvm.lifetime.end.p0(i64 47, ptr %303) #11
  call void @llvm.lifetime.end.p0(i64 43, ptr %302) #11
  call void @llvm.lifetime.start.p0(i64 13, ptr %313) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %313, ptr align 1 @__const.main.expected.111, i64 13, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %314) #11
  call void @llvm.memset.p0.i64(ptr align 16 %314, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %315) #11
  store i32 0, ptr %315, align 4, !tbaa !5
  br label %9516

9516:                                             ; preds = %9515
  %9517 = load i32, ptr @test_count, align 4, !tbaa !5
  %9518 = add nsw i32 %9517, 1
  store i32 %9518, ptr @test_count, align 4, !tbaa !5
  %9519 = getelementptr inbounds [47 x i8], ptr %10, i64 0, i64 0
  %9520 = getelementptr inbounds [200 x i8], ptr %314, i64 0, i64 0
  %9521 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %9519, i64 noundef 47, i64 noundef 200, ptr noundef %9520, ptr noundef %315)
  %9522 = getelementptr inbounds %struct.s2n_result, ptr %316, i32 0, i32 0
  store i32 %9521, ptr %9522, align 4
  %9523 = getelementptr inbounds %struct.s2n_result, ptr %316, i32 0, i32 0
  %9524 = load i32, ptr %9523, align 4
  %9525 = call zeroext i1 @s2n_result_is_ok(i32 %9524)
  br i1 %9525, label %9579, label %9526

9526:                                             ; preds = %9516
  br label %9527

9527:                                             ; preds = %9526
  br label %9528

9528:                                             ; preds = %9527
  call void @llvm.lifetime.start.p0(i64 4, ptr %317) #11
  %9529 = call ptr @__errno_location() #12
  %9530 = load i32, ptr %9529, align 4, !tbaa !5
  store i32 %9530, ptr %317, align 4, !tbaa !5
  %9531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9532 = call i32 @s2n_print_stacktrace(ptr noundef %9531)
  %9533 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9534 = trunc i8 %9533 to i1
  br i1 %9534, label %9535, label %9557

9535:                                             ; preds = %9528
  %9536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9537 = call i32 @fileno(ptr noundef %9536) #11
  %9538 = call i32 @isatty(i32 noundef %9537) #11
  %9539 = icmp ne i32 %9538, 0
  br i1 %9539, label %9540, label %9557

9540:                                             ; preds = %9535
  %9541 = load i32, ptr %317, align 4, !tbaa !5
  %9542 = call ptr @__errno_location() #12
  store i32 %9541, ptr %9542, align 4, !tbaa !5
  %9543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9544 = load i32, ptr @test_count, align 4, !tbaa !5
  %9545 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9546 = load i32, ptr %9545, align 4, !tbaa !5
  %9547 = call ptr @s2n_strerror(i32 noundef %9546, ptr noundef @.str.4)
  %9548 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9549 = load i32, ptr %9548, align 4, !tbaa !5
  %9550 = call ptr @s2n_strerror_debug(i32 noundef %9549, ptr noundef @.str.4)
  %9551 = call ptr @__errno_location() #12
  %9552 = load i32, ptr %9551, align 4, !tbaa !5
  %9553 = call ptr @strerror(i32 noundef %9552) #11
  %9554 = call ptr @__errno_location() #12
  %9555 = load i32, ptr %9554, align 4, !tbaa !5
  %9556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9543, ptr noundef @.str.2, i32 noundef %9544, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 1399, ptr noundef %9547, ptr noundef %9550, ptr noundef %9553, i32 noundef %9555) #11
  br label %9574

9557:                                             ; preds = %9535, %9528
  %9558 = load i32, ptr %317, align 4, !tbaa !5
  %9559 = call ptr @__errno_location() #12
  store i32 %9558, ptr %9559, align 4, !tbaa !5
  %9560 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9561 = load i32, ptr @test_count, align 4, !tbaa !5
  %9562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9563 = load i32, ptr %9562, align 4, !tbaa !5
  %9564 = call ptr @s2n_strerror(i32 noundef %9563, ptr noundef @.str.4)
  %9565 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9566 = load i32, ptr %9565, align 4, !tbaa !5
  %9567 = call ptr @s2n_strerror_debug(i32 noundef %9566, ptr noundef @.str.4)
  %9568 = call ptr @__errno_location() #12
  %9569 = load i32, ptr %9568, align 4, !tbaa !5
  %9570 = call ptr @strerror(i32 noundef %9569) #11
  %9571 = call ptr @__errno_location() #12
  %9572 = load i32, ptr %9571, align 4, !tbaa !5
  %9573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9560, ptr noundef @.str.5, i32 noundef %9561, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 1399, ptr noundef %9564, ptr noundef %9567, ptr noundef %9570, i32 noundef %9572) #11
  br label %9574

9574:                                             ; preds = %9557, %9540
  call void @llvm.lifetime.end.p0(i64 4, ptr %317) #11
  br label %9575

9575:                                             ; preds = %9574
  br label %9576

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

9577:                                             ; No predecessors!
  br label %9578

9578:                                             ; preds = %9577
  br label %9579

9579:                                             ; preds = %9578, %9516
  br label %9580

9580:                                             ; preds = %9579
  br label %9581

9581:                                             ; preds = %9580
  br label %9582

9582:                                             ; preds = %9581
  %9583 = load i32, ptr @test_count, align 4, !tbaa !5
  %9584 = add nsw i32 %9583, 1
  store i32 %9584, ptr @test_count, align 4, !tbaa !5
  %9585 = load i32, ptr %315, align 4, !tbaa !5
  %9586 = icmp ugt i32 %9585, 24
  br i1 %9586, label %9640, label %9587

9587:                                             ; preds = %9582
  br label %9588

9588:                                             ; preds = %9587
  br label %9589

9589:                                             ; preds = %9588
  call void @llvm.lifetime.start.p0(i64 4, ptr %318) #11
  %9590 = call ptr @__errno_location() #12
  %9591 = load i32, ptr %9590, align 4, !tbaa !5
  store i32 %9591, ptr %318, align 4, !tbaa !5
  %9592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9593 = call i32 @s2n_print_stacktrace(ptr noundef %9592)
  %9594 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9595 = trunc i8 %9594 to i1
  br i1 %9595, label %9596, label %9618

9596:                                             ; preds = %9589
  %9597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9598 = call i32 @fileno(ptr noundef %9597) #11
  %9599 = call i32 @isatty(i32 noundef %9598) #11
  %9600 = icmp ne i32 %9599, 0
  br i1 %9600, label %9601, label %9618

9601:                                             ; preds = %9596
  %9602 = load i32, ptr %318, align 4, !tbaa !5
  %9603 = call ptr @__errno_location() #12
  store i32 %9602, ptr %9603, align 4, !tbaa !5
  %9604 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9605 = load i32, ptr @test_count, align 4, !tbaa !5
  %9606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9607 = load i32, ptr %9606, align 4, !tbaa !5
  %9608 = call ptr @s2n_strerror(i32 noundef %9607, ptr noundef @.str.4)
  %9609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9610 = load i32, ptr %9609, align 4, !tbaa !5
  %9611 = call ptr @s2n_strerror_debug(i32 noundef %9610, ptr noundef @.str.4)
  %9612 = call ptr @__errno_location() #12
  %9613 = load i32, ptr %9612, align 4, !tbaa !5
  %9614 = call ptr @strerror(i32 noundef %9613) #11
  %9615 = call ptr @__errno_location() #12
  %9616 = load i32, ptr %9615, align 4, !tbaa !5
  %9617 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9604, ptr noundef @.str.2, i32 noundef %9605, ptr noundef @.str.105, ptr noundef @.str.1, i32 noundef 1401, ptr noundef %9608, ptr noundef %9611, ptr noundef %9614, i32 noundef %9616) #11
  br label %9635

9618:                                             ; preds = %9596, %9589
  %9619 = load i32, ptr %318, align 4, !tbaa !5
  %9620 = call ptr @__errno_location() #12
  store i32 %9619, ptr %9620, align 4, !tbaa !5
  %9621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9622 = load i32, ptr @test_count, align 4, !tbaa !5
  %9623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9624 = load i32, ptr %9623, align 4, !tbaa !5
  %9625 = call ptr @s2n_strerror(i32 noundef %9624, ptr noundef @.str.4)
  %9626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9627 = load i32, ptr %9626, align 4, !tbaa !5
  %9628 = call ptr @s2n_strerror_debug(i32 noundef %9627, ptr noundef @.str.4)
  %9629 = call ptr @__errno_location() #12
  %9630 = load i32, ptr %9629, align 4, !tbaa !5
  %9631 = call ptr @strerror(i32 noundef %9630) #11
  %9632 = call ptr @__errno_location() #12
  %9633 = load i32, ptr %9632, align 4, !tbaa !5
  %9634 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9621, ptr noundef @.str.5, i32 noundef %9622, ptr noundef @.str.105, ptr noundef @.str.1, i32 noundef 1401, ptr noundef %9625, ptr noundef %9628, ptr noundef %9631, i32 noundef %9633) #11
  br label %9635

9635:                                             ; preds = %9618, %9601
  call void @llvm.lifetime.end.p0(i64 4, ptr %318) #11
  br label %9636

9636:                                             ; preds = %9635
  br label %9637

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

9638:                                             ; No predecessors!
  br label %9639

9639:                                             ; preds = %9638
  br label %9640

9640:                                             ; preds = %9639, %9582
  br label %9641

9641:                                             ; preds = %9640
  br label %9642

9642:                                             ; preds = %9641
  call void @llvm.lifetime.start.p0(i64 8, ptr %319) #11
  %9643 = getelementptr inbounds [200 x i8], ptr %314, i64 0, i64 24
  store ptr %9643, ptr %319, align 8, !tbaa !9
  br label %9644

9644:                                             ; preds = %9642
  %9645 = load i32, ptr @test_count, align 4, !tbaa !5
  %9646 = add nsw i32 %9645, 1
  store i32 %9646, ptr @test_count, align 4, !tbaa !5
  %9647 = load i32, ptr %315, align 4, !tbaa !5
  %9648 = zext i32 %9647 to i64
  %9649 = icmp uge i64 %9648, 36
  br i1 %9649, label %9703, label %9650

9650:                                             ; preds = %9644
  br label %9651

9651:                                             ; preds = %9650
  br label %9652

9652:                                             ; preds = %9651
  call void @llvm.lifetime.start.p0(i64 4, ptr %320) #11
  %9653 = call ptr @__errno_location() #12
  %9654 = load i32, ptr %9653, align 4, !tbaa !5
  store i32 %9654, ptr %320, align 4, !tbaa !5
  %9655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9656 = call i32 @s2n_print_stacktrace(ptr noundef %9655)
  %9657 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9658 = trunc i8 %9657 to i1
  br i1 %9658, label %9659, label %9681

9659:                                             ; preds = %9652
  %9660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9661 = call i32 @fileno(ptr noundef %9660) #11
  %9662 = call i32 @isatty(i32 noundef %9661) #11
  %9663 = icmp ne i32 %9662, 0
  br i1 %9663, label %9664, label %9681

9664:                                             ; preds = %9659
  %9665 = load i32, ptr %320, align 4, !tbaa !5
  %9666 = call ptr @__errno_location() #12
  store i32 %9665, ptr %9666, align 4, !tbaa !5
  %9667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9668 = load i32, ptr @test_count, align 4, !tbaa !5
  %9669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9670 = load i32, ptr %9669, align 4, !tbaa !5
  %9671 = call ptr @s2n_strerror(i32 noundef %9670, ptr noundef @.str.4)
  %9672 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9673 = load i32, ptr %9672, align 4, !tbaa !5
  %9674 = call ptr @s2n_strerror_debug(i32 noundef %9673, ptr noundef @.str.4)
  %9675 = call ptr @__errno_location() #12
  %9676 = load i32, ptr %9675, align 4, !tbaa !5
  %9677 = call ptr @strerror(i32 noundef %9676) #11
  %9678 = call ptr @__errno_location() #12
  %9679 = load i32, ptr %9678, align 4, !tbaa !5
  %9680 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9667, ptr noundef @.str.2, i32 noundef %9668, ptr noundef @.str.106, ptr noundef @.str.1, i32 noundef 1403, ptr noundef %9671, ptr noundef %9674, ptr noundef %9677, i32 noundef %9679) #11
  br label %9698

9681:                                             ; preds = %9659, %9652
  %9682 = load i32, ptr %320, align 4, !tbaa !5
  %9683 = call ptr @__errno_location() #12
  store i32 %9682, ptr %9683, align 4, !tbaa !5
  %9684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9685 = load i32, ptr @test_count, align 4, !tbaa !5
  %9686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9687 = load i32, ptr %9686, align 4, !tbaa !5
  %9688 = call ptr @s2n_strerror(i32 noundef %9687, ptr noundef @.str.4)
  %9689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9690 = load i32, ptr %9689, align 4, !tbaa !5
  %9691 = call ptr @s2n_strerror_debug(i32 noundef %9690, ptr noundef @.str.4)
  %9692 = call ptr @__errno_location() #12
  %9693 = load i32, ptr %9692, align 4, !tbaa !5
  %9694 = call ptr @strerror(i32 noundef %9693) #11
  %9695 = call ptr @__errno_location() #12
  %9696 = load i32, ptr %9695, align 4, !tbaa !5
  %9697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9684, ptr noundef @.str.5, i32 noundef %9685, ptr noundef @.str.106, ptr noundef @.str.1, i32 noundef 1403, ptr noundef %9688, ptr noundef %9691, ptr noundef %9694, i32 noundef %9696) #11
  br label %9698

9698:                                             ; preds = %9681, %9664
  call void @llvm.lifetime.end.p0(i64 4, ptr %320) #11
  br label %9699

9699:                                             ; preds = %9698
  br label %9700

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

9701:                                             ; No predecessors!
  br label %9702

9702:                                             ; preds = %9701
  br label %9703

9703:                                             ; preds = %9702, %9644
  br label %9704

9704:                                             ; preds = %9703
  br label %9705

9705:                                             ; preds = %9704
  br label %9706

9706:                                             ; preds = %9705
  br label %9707

9707:                                             ; preds = %9706
  %9708 = load i32, ptr @test_count, align 4, !tbaa !5
  %9709 = add nsw i32 %9708, 1
  store i32 %9709, ptr @test_count, align 4, !tbaa !5
  %9710 = load ptr, ptr %319, align 8, !tbaa !9
  %9711 = getelementptr inbounds [13 x i8], ptr %313, i64 0, i64 0
  %9712 = call i32 @memcmp(ptr noundef %9710, ptr noundef %9711, i64 noundef 12) #14
  %9713 = icmp eq i32 %9712, 0
  br i1 %9713, label %9767, label %9714

9714:                                             ; preds = %9707
  br label %9715

9715:                                             ; preds = %9714
  br label %9716

9716:                                             ; preds = %9715
  call void @llvm.lifetime.start.p0(i64 4, ptr %321) #11
  %9717 = call ptr @__errno_location() #12
  %9718 = load i32, ptr %9717, align 4, !tbaa !5
  store i32 %9718, ptr %321, align 4, !tbaa !5
  %9719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9720 = call i32 @s2n_print_stacktrace(ptr noundef %9719)
  %9721 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9722 = trunc i8 %9721 to i1
  br i1 %9722, label %9723, label %9745

9723:                                             ; preds = %9716
  %9724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9725 = call i32 @fileno(ptr noundef %9724) #11
  %9726 = call i32 @isatty(i32 noundef %9725) #11
  %9727 = icmp ne i32 %9726, 0
  br i1 %9727, label %9728, label %9745

9728:                                             ; preds = %9723
  %9729 = load i32, ptr %321, align 4, !tbaa !5
  %9730 = call ptr @__errno_location() #12
  store i32 %9729, ptr %9730, align 4, !tbaa !5
  %9731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9732 = load i32, ptr @test_count, align 4, !tbaa !5
  %9733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9734 = load i32, ptr %9733, align 4, !tbaa !5
  %9735 = call ptr @s2n_strerror(i32 noundef %9734, ptr noundef @.str.4)
  %9736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9737 = load i32, ptr %9736, align 4, !tbaa !5
  %9738 = call ptr @s2n_strerror_debug(i32 noundef %9737, ptr noundef @.str.4)
  %9739 = call ptr @__errno_location() #12
  %9740 = load i32, ptr %9739, align 4, !tbaa !5
  %9741 = call ptr @strerror(i32 noundef %9740) #11
  %9742 = call ptr @__errno_location() #12
  %9743 = load i32, ptr %9742, align 4, !tbaa !5
  %9744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9731, ptr noundef @.str.2, i32 noundef %9732, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1404, ptr noundef %9735, ptr noundef %9738, ptr noundef %9741, i32 noundef %9743) #11
  br label %9762

9745:                                             ; preds = %9723, %9716
  %9746 = load i32, ptr %321, align 4, !tbaa !5
  %9747 = call ptr @__errno_location() #12
  store i32 %9746, ptr %9747, align 4, !tbaa !5
  %9748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9749 = load i32, ptr @test_count, align 4, !tbaa !5
  %9750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9751 = load i32, ptr %9750, align 4, !tbaa !5
  %9752 = call ptr @s2n_strerror(i32 noundef %9751, ptr noundef @.str.4)
  %9753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9754 = load i32, ptr %9753, align 4, !tbaa !5
  %9755 = call ptr @s2n_strerror_debug(i32 noundef %9754, ptr noundef @.str.4)
  %9756 = call ptr @__errno_location() #12
  %9757 = load i32, ptr %9756, align 4, !tbaa !5
  %9758 = call ptr @strerror(i32 noundef %9757) #11
  %9759 = call ptr @__errno_location() #12
  %9760 = load i32, ptr %9759, align 4, !tbaa !5
  %9761 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9748, ptr noundef @.str.5, i32 noundef %9749, ptr noundef @.str.102, ptr noundef @.str.1, i32 noundef 1404, ptr noundef %9752, ptr noundef %9755, ptr noundef %9758, i32 noundef %9760) #11
  br label %9762

9762:                                             ; preds = %9745, %9728
  call void @llvm.lifetime.end.p0(i64 4, ptr %321) #11
  br label %9763

9763:                                             ; preds = %9762
  br label %9764

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

9765:                                             ; No predecessors!
  br label %9766

9766:                                             ; preds = %9765
  br label %9767

9767:                                             ; preds = %9766, %9707
  br label %9768

9768:                                             ; preds = %9767
  br label %9769

9769:                                             ; preds = %9768
  br label %9770

9770:                                             ; preds = %9769
  br label %9771

9771:                                             ; preds = %9770
  call void @llvm.lifetime.end.p0(i64 8, ptr %319) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %315) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %314) #11
  call void @llvm.lifetime.end.p0(i64 13, ptr %313) #11
  call void @llvm.lifetime.end.p0(i64 70, ptr %259) #11
  call void @llvm.lifetime.end.p0(i64 129, ptr %258) #11
  call void @llvm.lifetime.end.p0(i64 125, ptr %257) #11
  call void @llvm.lifetime.start.p0(i64 55, ptr %322) #11
  call void @llvm.memset.p0.i64(ptr align 16 %322, i8 0, i64 55, i1 false)
  %9772 = getelementptr inbounds [55 x i8], ptr %322, i32 0, i32 36
  store i8 2, ptr %9772, align 4
  %9773 = getelementptr inbounds [55 x i8], ptr %322, i32 0, i32 39
  store i8 1, ptr %9773, align 1
  %9774 = getelementptr inbounds [55 x i8], ptr %322, i32 0, i32 42
  store i8 12, ptr %9774, align 2
  %9775 = getelementptr inbounds [55 x i8], ptr %322, i32 0, i32 44
  store i8 13, ptr %9775, align 4
  %9776 = getelementptr inbounds [55 x i8], ptr %322, i32 0, i32 48
  store i8 16, ptr %9776, align 16
  %9777 = getelementptr inbounds [55 x i8], ptr %322, i32 0, i32 52
  store i8 43, ptr %9777, align 4
  br label %9778

9778:                                             ; preds = %9771
  %9779 = load i32, ptr @test_count, align 4, !tbaa !5
  %9780 = add nsw i32 %9779, 1
  store i32 %9780, ptr @test_count, align 4, !tbaa !5
  br label %9781

9781:                                             ; preds = %9778
  br label %9782

9782:                                             ; preds = %9781
  call void @llvm.lifetime.start.p0(i64 59, ptr %323) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %323, ptr align 16 @__const.main.client_hello_bytes.112, i64 59, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %324) #11
  call void @llvm.memset.p0.i64(ptr align 16 %324, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %325) #11
  store i32 0, ptr %325, align 4, !tbaa !5
  br label %9783

9783:                                             ; preds = %9782
  %9784 = load i32, ptr @test_count, align 4, !tbaa !5
  %9785 = add nsw i32 %9784, 1
  store i32 %9785, ptr @test_count, align 4, !tbaa !5
  %9786 = getelementptr inbounds [59 x i8], ptr %323, i64 0, i64 0
  %9787 = getelementptr inbounds [200 x i8], ptr %324, i64 0, i64 0
  %9788 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef %9786, i64 noundef 59, i64 noundef 200, ptr noundef %9787, ptr noundef %325)
  %9789 = getelementptr inbounds %struct.s2n_result, ptr %326, i32 0, i32 0
  store i32 %9788, ptr %9789, align 4
  %9790 = getelementptr inbounds %struct.s2n_result, ptr %326, i32 0, i32 0
  %9791 = load i32, ptr %9790, align 4
  %9792 = call zeroext i1 @s2n_result_is_ok(i32 %9791)
  br i1 %9792, label %9846, label %9793

9793:                                             ; preds = %9783
  br label %9794

9794:                                             ; preds = %9793
  br label %9795

9795:                                             ; preds = %9794
  call void @llvm.lifetime.start.p0(i64 4, ptr %327) #11
  %9796 = call ptr @__errno_location() #12
  %9797 = load i32, ptr %9796, align 4, !tbaa !5
  store i32 %9797, ptr %327, align 4, !tbaa !5
  %9798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9799 = call i32 @s2n_print_stacktrace(ptr noundef %9798)
  %9800 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9801 = trunc i8 %9800 to i1
  br i1 %9801, label %9802, label %9824

9802:                                             ; preds = %9795
  %9803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9804 = call i32 @fileno(ptr noundef %9803) #11
  %9805 = call i32 @isatty(i32 noundef %9804) #11
  %9806 = icmp ne i32 %9805, 0
  br i1 %9806, label %9807, label %9824

9807:                                             ; preds = %9802
  %9808 = load i32, ptr %327, align 4, !tbaa !5
  %9809 = call ptr @__errno_location() #12
  store i32 %9808, ptr %9809, align 4, !tbaa !5
  %9810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9811 = load i32, ptr @test_count, align 4, !tbaa !5
  %9812 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9813 = load i32, ptr %9812, align 4, !tbaa !5
  %9814 = call ptr @s2n_strerror(i32 noundef %9813, ptr noundef @.str.4)
  %9815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9816 = load i32, ptr %9815, align 4, !tbaa !5
  %9817 = call ptr @s2n_strerror_debug(i32 noundef %9816, ptr noundef @.str.4)
  %9818 = call ptr @__errno_location() #12
  %9819 = load i32, ptr %9818, align 4, !tbaa !5
  %9820 = call ptr @strerror(i32 noundef %9819) #11
  %9821 = call ptr @__errno_location() #12
  %9822 = load i32, ptr %9821, align 4, !tbaa !5
  %9823 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9810, ptr noundef @.str.2, i32 noundef %9811, ptr noundef @.str.113, ptr noundef @.str.1, i32 noundef 1431, ptr noundef %9814, ptr noundef %9817, ptr noundef %9820, i32 noundef %9822) #11
  br label %9841

9824:                                             ; preds = %9802, %9795
  %9825 = load i32, ptr %327, align 4, !tbaa !5
  %9826 = call ptr @__errno_location() #12
  store i32 %9825, ptr %9826, align 4, !tbaa !5
  %9827 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9828 = load i32, ptr @test_count, align 4, !tbaa !5
  %9829 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9830 = load i32, ptr %9829, align 4, !tbaa !5
  %9831 = call ptr @s2n_strerror(i32 noundef %9830, ptr noundef @.str.4)
  %9832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9833 = load i32, ptr %9832, align 4, !tbaa !5
  %9834 = call ptr @s2n_strerror_debug(i32 noundef %9833, ptr noundef @.str.4)
  %9835 = call ptr @__errno_location() #12
  %9836 = load i32, ptr %9835, align 4, !tbaa !5
  %9837 = call ptr @strerror(i32 noundef %9836) #11
  %9838 = call ptr @__errno_location() #12
  %9839 = load i32, ptr %9838, align 4, !tbaa !5
  %9840 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9827, ptr noundef @.str.5, i32 noundef %9828, ptr noundef @.str.113, ptr noundef @.str.1, i32 noundef 1431, ptr noundef %9831, ptr noundef %9834, ptr noundef %9837, i32 noundef %9839) #11
  br label %9841

9841:                                             ; preds = %9824, %9807
  call void @llvm.lifetime.end.p0(i64 4, ptr %327) #11
  br label %9842

9842:                                             ; preds = %9841
  br label %9843

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

9844:                                             ; No predecessors!
  br label %9845

9845:                                             ; preds = %9844
  br label %9846

9846:                                             ; preds = %9845, %9783
  br label %9847

9847:                                             ; preds = %9846
  br label %9848

9848:                                             ; preds = %9847
  call void @llvm.lifetime.end.p0(i64 4, ptr %325) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %324) #11
  call void @llvm.lifetime.end.p0(i64 59, ptr %323) #11
  call void @llvm.lifetime.end.p0(i64 55, ptr %322) #11
  call void @llvm.lifetime.start.p0(i64 512, ptr %328) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %328, ptr align 16 @__const.main.packet_bytes, i64 512, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr %329) #11
  call void @llvm.memset.p0.i64(ptr align 16 %329, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %330) #11
  store i32 0, ptr %330, align 4, !tbaa !5
  br label %9849

9849:                                             ; preds = %9848
  %9850 = load i32, ptr @test_count, align 4, !tbaa !5
  %9851 = add nsw i32 %9850, 1
  store i32 %9851, ptr @test_count, align 4, !tbaa !5
  %9852 = getelementptr inbounds [512 x i8], ptr %328, i64 0, i64 0
  %9853 = getelementptr inbounds [200 x i8], ptr %329, i64 0, i64 0
  %9854 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef %9852, i64 noundef 512, i64 noundef 200, ptr noundef %9853, ptr noundef %330)
  %9855 = getelementptr inbounds %struct.s2n_result, ptr %331, i32 0, i32 0
  store i32 %9854, ptr %9855, align 4
  %9856 = getelementptr inbounds %struct.s2n_result, ptr %331, i32 0, i32 0
  %9857 = load i32, ptr %9856, align 4
  %9858 = call zeroext i1 @s2n_result_is_ok(i32 %9857)
  br i1 %9858, label %9912, label %9859

9859:                                             ; preds = %9849
  br label %9860

9860:                                             ; preds = %9859
  br label %9861

9861:                                             ; preds = %9860
  call void @llvm.lifetime.start.p0(i64 4, ptr %332) #11
  %9862 = call ptr @__errno_location() #12
  %9863 = load i32, ptr %9862, align 4, !tbaa !5
  store i32 %9863, ptr %332, align 4, !tbaa !5
  %9864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9865 = call i32 @s2n_print_stacktrace(ptr noundef %9864)
  %9866 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9867 = trunc i8 %9866 to i1
  br i1 %9867, label %9868, label %9890

9868:                                             ; preds = %9861
  %9869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9870 = call i32 @fileno(ptr noundef %9869) #11
  %9871 = call i32 @isatty(i32 noundef %9870) #11
  %9872 = icmp ne i32 %9871, 0
  br i1 %9872, label %9873, label %9890

9873:                                             ; preds = %9868
  %9874 = load i32, ptr %332, align 4, !tbaa !5
  %9875 = call ptr @__errno_location() #12
  store i32 %9874, ptr %9875, align 4, !tbaa !5
  %9876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9877 = load i32, ptr @test_count, align 4, !tbaa !5
  %9878 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9879 = load i32, ptr %9878, align 4, !tbaa !5
  %9880 = call ptr @s2n_strerror(i32 noundef %9879, ptr noundef @.str.4)
  %9881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9882 = load i32, ptr %9881, align 4, !tbaa !5
  %9883 = call ptr @s2n_strerror_debug(i32 noundef %9882, ptr noundef @.str.4)
  %9884 = call ptr @__errno_location() #12
  %9885 = load i32, ptr %9884, align 4, !tbaa !5
  %9886 = call ptr @strerror(i32 noundef %9885) #11
  %9887 = call ptr @__errno_location() #12
  %9888 = load i32, ptr %9887, align 4, !tbaa !5
  %9889 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9876, ptr noundef @.str.2, i32 noundef %9877, ptr noundef @.str.114, ptr noundef @.str.1, i32 noundef 1511, ptr noundef %9880, ptr noundef %9883, ptr noundef %9886, i32 noundef %9888) #11
  br label %9907

9890:                                             ; preds = %9868, %9861
  %9891 = load i32, ptr %332, align 4, !tbaa !5
  %9892 = call ptr @__errno_location() #12
  store i32 %9891, ptr %9892, align 4, !tbaa !5
  %9893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9894 = load i32, ptr @test_count, align 4, !tbaa !5
  %9895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9896 = load i32, ptr %9895, align 4, !tbaa !5
  %9897 = call ptr @s2n_strerror(i32 noundef %9896, ptr noundef @.str.4)
  %9898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9899 = load i32, ptr %9898, align 4, !tbaa !5
  %9900 = call ptr @s2n_strerror_debug(i32 noundef %9899, ptr noundef @.str.4)
  %9901 = call ptr @__errno_location() #12
  %9902 = load i32, ptr %9901, align 4, !tbaa !5
  %9903 = call ptr @strerror(i32 noundef %9902) #11
  %9904 = call ptr @__errno_location() #12
  %9905 = load i32, ptr %9904, align 4, !tbaa !5
  %9906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9893, ptr noundef @.str.5, i32 noundef %9894, ptr noundef @.str.114, ptr noundef @.str.1, i32 noundef 1511, ptr noundef %9897, ptr noundef %9900, ptr noundef %9903, i32 noundef %9905) #11
  br label %9907

9907:                                             ; preds = %9890, %9873
  call void @llvm.lifetime.end.p0(i64 4, ptr %332) #11
  br label %9908

9908:                                             ; preds = %9907
  br label %9909

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

9910:                                             ; No predecessors!
  br label %9911

9911:                                             ; preds = %9910
  br label %9912

9912:                                             ; preds = %9911, %9849
  br label %9913

9913:                                             ; preds = %9912
  br label %9914

9914:                                             ; preds = %9913
  call void @llvm.lifetime.start.p0(i64 37, ptr %333) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %333, ptr align 16 @__const.main.expected.115, i64 37, i1 false)
  br label %9915

9915:                                             ; preds = %9914
  %9916 = load i32, ptr @test_count, align 4, !tbaa !5
  %9917 = add nsw i32 %9916, 1
  store i32 %9917, ptr @test_count, align 4, !tbaa !5
  %9918 = load i32, ptr %330, align 4, !tbaa !5
  %9919 = zext i32 %9918 to i64
  %9920 = icmp eq i64 36, %9919
  br i1 %9920, label %9974, label %9921

9921:                                             ; preds = %9915
  br label %9922

9922:                                             ; preds = %9921
  br label %9923

9923:                                             ; preds = %9922
  call void @llvm.lifetime.start.p0(i64 4, ptr %334) #11
  %9924 = call ptr @__errno_location() #12
  %9925 = load i32, ptr %9924, align 4, !tbaa !5
  store i32 %9925, ptr %334, align 4, !tbaa !5
  %9926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9927 = call i32 @s2n_print_stacktrace(ptr noundef %9926)
  %9928 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9929 = trunc i8 %9928 to i1
  br i1 %9929, label %9930, label %9952

9930:                                             ; preds = %9923
  %9931 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9932 = call i32 @fileno(ptr noundef %9931) #11
  %9933 = call i32 @isatty(i32 noundef %9932) #11
  %9934 = icmp ne i32 %9933, 0
  br i1 %9934, label %9935, label %9952

9935:                                             ; preds = %9930
  %9936 = load i32, ptr %334, align 4, !tbaa !5
  %9937 = call ptr @__errno_location() #12
  store i32 %9936, ptr %9937, align 4, !tbaa !5
  %9938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9939 = load i32, ptr @test_count, align 4, !tbaa !5
  %9940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9941 = load i32, ptr %9940, align 4, !tbaa !5
  %9942 = call ptr @s2n_strerror(i32 noundef %9941, ptr noundef @.str.4)
  %9943 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9944 = load i32, ptr %9943, align 4, !tbaa !5
  %9945 = call ptr @s2n_strerror_debug(i32 noundef %9944, ptr noundef @.str.4)
  %9946 = call ptr @__errno_location() #12
  %9947 = load i32, ptr %9946, align 4, !tbaa !5
  %9948 = call ptr @strerror(i32 noundef %9947) #11
  %9949 = call ptr @__errno_location() #12
  %9950 = load i32, ptr %9949, align 4, !tbaa !5
  %9951 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9938, ptr noundef @.str.2, i32 noundef %9939, ptr noundef @.str.116, ptr noundef @.str.1, i32 noundef 1514, ptr noundef %9942, ptr noundef %9945, ptr noundef %9948, i32 noundef %9950) #11
  br label %9969

9952:                                             ; preds = %9930, %9923
  %9953 = load i32, ptr %334, align 4, !tbaa !5
  %9954 = call ptr @__errno_location() #12
  store i32 %9953, ptr %9954, align 4, !tbaa !5
  %9955 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9956 = load i32, ptr @test_count, align 4, !tbaa !5
  %9957 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9958 = load i32, ptr %9957, align 4, !tbaa !5
  %9959 = call ptr @s2n_strerror(i32 noundef %9958, ptr noundef @.str.4)
  %9960 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %9961 = load i32, ptr %9960, align 4, !tbaa !5
  %9962 = call ptr @s2n_strerror_debug(i32 noundef %9961, ptr noundef @.str.4)
  %9963 = call ptr @__errno_location() #12
  %9964 = load i32, ptr %9963, align 4, !tbaa !5
  %9965 = call ptr @strerror(i32 noundef %9964) #11
  %9966 = call ptr @__errno_location() #12
  %9967 = load i32, ptr %9966, align 4, !tbaa !5
  %9968 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9955, ptr noundef @.str.5, i32 noundef %9956, ptr noundef @.str.116, ptr noundef @.str.1, i32 noundef 1514, ptr noundef %9959, ptr noundef %9962, ptr noundef %9965, i32 noundef %9967) #11
  br label %9969

9969:                                             ; preds = %9952, %9935
  call void @llvm.lifetime.end.p0(i64 4, ptr %334) #11
  br label %9970

9970:                                             ; preds = %9969
  br label %9971

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

9972:                                             ; No predecessors!
  br label %9973

9973:                                             ; preds = %9972
  br label %9974

9974:                                             ; preds = %9973, %9915
  br label %9975

9975:                                             ; preds = %9974
  br label %9976

9976:                                             ; preds = %9975
  br label %9977

9977:                                             ; preds = %9976
  %9978 = load i32, ptr %330, align 4, !tbaa !5
  %9979 = icmp ne i32 %9978, 0
  br i1 %9979, label %9980, label %10046

9980:                                             ; preds = %9977
  br label %9981

9981:                                             ; preds = %9980
  %9982 = load i32, ptr @test_count, align 4, !tbaa !5
  %9983 = add nsw i32 %9982, 1
  store i32 %9983, ptr @test_count, align 4, !tbaa !5
  %9984 = getelementptr inbounds [37 x i8], ptr %333, i64 0, i64 0
  %9985 = getelementptr inbounds [200 x i8], ptr %329, i64 0, i64 0
  %9986 = load i32, ptr %330, align 4, !tbaa !5
  %9987 = zext i32 %9986 to i64
  %9988 = call i32 @memcmp(ptr noundef %9984, ptr noundef %9985, i64 noundef %9987) #14
  %9989 = icmp eq i32 %9988, 0
  br i1 %9989, label %10043, label %9990

9990:                                             ; preds = %9981
  br label %9991

9991:                                             ; preds = %9990
  br label %9992

9992:                                             ; preds = %9991
  call void @llvm.lifetime.start.p0(i64 4, ptr %335) #11
  %9993 = call ptr @__errno_location() #12
  %9994 = load i32, ptr %9993, align 4, !tbaa !5
  store i32 %9994, ptr %335, align 4, !tbaa !5
  %9995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %9996 = call i32 @s2n_print_stacktrace(ptr noundef %9995)
  %9997 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %9998 = trunc i8 %9997 to i1
  br i1 %9998, label %9999, label %10021

9999:                                             ; preds = %9992
  %10000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10001 = call i32 @fileno(ptr noundef %10000) #11
  %10002 = call i32 @isatty(i32 noundef %10001) #11
  %10003 = icmp ne i32 %10002, 0
  br i1 %10003, label %10004, label %10021

10004:                                            ; preds = %9999
  %10005 = load i32, ptr %335, align 4, !tbaa !5
  %10006 = call ptr @__errno_location() #12
  store i32 %10005, ptr %10006, align 4, !tbaa !5
  %10007 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10008 = load i32, ptr @test_count, align 4, !tbaa !5
  %10009 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10010 = load i32, ptr %10009, align 4, !tbaa !5
  %10011 = call ptr @s2n_strerror(i32 noundef %10010, ptr noundef @.str.4)
  %10012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10013 = load i32, ptr %10012, align 4, !tbaa !5
  %10014 = call ptr @s2n_strerror_debug(i32 noundef %10013, ptr noundef @.str.4)
  %10015 = call ptr @__errno_location() #12
  %10016 = load i32, ptr %10015, align 4, !tbaa !5
  %10017 = call ptr @strerror(i32 noundef %10016) #11
  %10018 = call ptr @__errno_location() #12
  %10019 = load i32, ptr %10018, align 4, !tbaa !5
  %10020 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10007, ptr noundef @.str.2, i32 noundef %10008, ptr noundef @.str.117, ptr noundef @.str.1, i32 noundef 1515, ptr noundef %10011, ptr noundef %10014, ptr noundef %10017, i32 noundef %10019) #11
  br label %10038

10021:                                            ; preds = %9999, %9992
  %10022 = load i32, ptr %335, align 4, !tbaa !5
  %10023 = call ptr @__errno_location() #12
  store i32 %10022, ptr %10023, align 4, !tbaa !5
  %10024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10025 = load i32, ptr @test_count, align 4, !tbaa !5
  %10026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10027 = load i32, ptr %10026, align 4, !tbaa !5
  %10028 = call ptr @s2n_strerror(i32 noundef %10027, ptr noundef @.str.4)
  %10029 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10030 = load i32, ptr %10029, align 4, !tbaa !5
  %10031 = call ptr @s2n_strerror_debug(i32 noundef %10030, ptr noundef @.str.4)
  %10032 = call ptr @__errno_location() #12
  %10033 = load i32, ptr %10032, align 4, !tbaa !5
  %10034 = call ptr @strerror(i32 noundef %10033) #11
  %10035 = call ptr @__errno_location() #12
  %10036 = load i32, ptr %10035, align 4, !tbaa !5
  %10037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10024, ptr noundef @.str.5, i32 noundef %10025, ptr noundef @.str.117, ptr noundef @.str.1, i32 noundef 1515, ptr noundef %10028, ptr noundef %10031, ptr noundef %10034, i32 noundef %10036) #11
  br label %10038

10038:                                            ; preds = %10021, %10004
  call void @llvm.lifetime.end.p0(i64 4, ptr %335) #11
  br label %10039

10039:                                            ; preds = %10038
  br label %10040

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

10041:                                            ; No predecessors!
  br label %10042

10042:                                            ; preds = %10041
  br label %10043

10043:                                            ; preds = %10042, %9981
  br label %10044

10044:                                            ; preds = %10043
  br label %10045

10045:                                            ; preds = %10044
  br label %10046

10046:                                            ; preds = %10045, %9977
  br label %10047

10047:                                            ; preds = %10046
  br label %10048

10048:                                            ; preds = %10047
  call void @llvm.lifetime.end.p0(i64 37, ptr %333) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %330) #11
  call void @llvm.lifetime.end.p0(i64 200, ptr %329) #11
  call void @llvm.lifetime.end.p0(i64 512, ptr %328) #11
  br label %10049

10049:                                            ; preds = %10048
  br label %10050

10050:                                            ; preds = %10049
  %10051 = call i32 @s2n_cleanup()
  %10052 = icmp eq i32 %10051, -1
  br i1 %10052, label %10053, label %10106

10053:                                            ; preds = %10050
  br label %10054

10054:                                            ; preds = %10053
  br label %10055

10055:                                            ; preds = %10054
  call void @llvm.lifetime.start.p0(i64 4, ptr %336) #11
  %10056 = call ptr @__errno_location() #12
  %10057 = load i32, ptr %10056, align 4, !tbaa !5
  store i32 %10057, ptr %336, align 4, !tbaa !5
  %10058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10059 = call i32 @s2n_print_stacktrace(ptr noundef %10058)
  %10060 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10061 = trunc i8 %10060 to i1
  br i1 %10061, label %10062, label %10084

10062:                                            ; preds = %10055
  %10063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10064 = call i32 @fileno(ptr noundef %10063) #11
  %10065 = call i32 @isatty(i32 noundef %10064) #11
  %10066 = icmp ne i32 %10065, 0
  br i1 %10066, label %10067, label %10084

10067:                                            ; preds = %10062
  %10068 = load i32, ptr %336, align 4, !tbaa !5
  %10069 = call ptr @__errno_location() #12
  store i32 %10068, ptr %10069, align 4, !tbaa !5
  %10070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10071 = load i32, ptr @test_count, align 4, !tbaa !5
  %10072 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10073 = load i32, ptr %10072, align 4, !tbaa !5
  %10074 = call ptr @s2n_strerror(i32 noundef %10073, ptr noundef @.str.4)
  %10075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10076 = load i32, ptr %10075, align 4, !tbaa !5
  %10077 = call ptr @s2n_strerror_debug(i32 noundef %10076, ptr noundef @.str.4)
  %10078 = call ptr @__errno_location() #12
  %10079 = load i32, ptr %10078, align 4, !tbaa !5
  %10080 = call ptr @strerror(i32 noundef %10079) #11
  %10081 = call ptr @__errno_location() #12
  %10082 = load i32, ptr %10081, align 4, !tbaa !5
  %10083 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10070, ptr noundef @.str.2, i32 noundef %10071, ptr noundef @.str.118, ptr noundef @.str.1, i32 noundef 1519, ptr noundef %10074, ptr noundef %10077, ptr noundef %10080, i32 noundef %10082) #11
  br label %10101

10084:                                            ; preds = %10062, %10055
  %10085 = load i32, ptr %336, align 4, !tbaa !5
  %10086 = call ptr @__errno_location() #12
  store i32 %10085, ptr %10086, align 4, !tbaa !5
  %10087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10088 = load i32, ptr @test_count, align 4, !tbaa !5
  %10089 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10090 = load i32, ptr %10089, align 4, !tbaa !5
  %10091 = call ptr @s2n_strerror(i32 noundef %10090, ptr noundef @.str.4)
  %10092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10093 = load i32, ptr %10092, align 4, !tbaa !5
  %10094 = call ptr @s2n_strerror_debug(i32 noundef %10093, ptr noundef @.str.4)
  %10095 = call ptr @__errno_location() #12
  %10096 = load i32, ptr %10095, align 4, !tbaa !5
  %10097 = call ptr @strerror(i32 noundef %10096) #11
  %10098 = call ptr @__errno_location() #12
  %10099 = load i32, ptr %10098, align 4, !tbaa !5
  %10100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10087, ptr noundef @.str.5, i32 noundef %10088, ptr noundef @.str.118, ptr noundef @.str.1, i32 noundef 1519, ptr noundef %10091, ptr noundef %10094, ptr noundef %10097, i32 noundef %10099) #11
  br label %10101

10101:                                            ; preds = %10084, %10067
  call void @llvm.lifetime.end.p0(i64 4, ptr %336) #11
  br label %10102

10102:                                            ; preds = %10101
  br label %10103

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

10104:                                            ; No predecessors!
  br label %10105

10105:                                            ; preds = %10104
  br label %10106

10106:                                            ; preds = %10105, %10050
  br label %10107

10107:                                            ; preds = %10106
  br label %10108

10108:                                            ; preds = %10107
  br label %10109

10109:                                            ; preds = %10108
  br label %10110

10110:                                            ; preds = %10109
  %10111 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %10112 = icmp eq i32 %10111, -1
  br i1 %10112, label %10113, label %10166

10113:                                            ; preds = %10110
  br label %10114

10114:                                            ; preds = %10113
  br label %10115

10115:                                            ; preds = %10114
  call void @llvm.lifetime.start.p0(i64 4, ptr %337) #11
  %10116 = call ptr @__errno_location() #12
  %10117 = load i32, ptr %10116, align 4, !tbaa !5
  store i32 %10117, ptr %337, align 4, !tbaa !5
  %10118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10119 = call i32 @s2n_print_stacktrace(ptr noundef %10118)
  %10120 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10121 = trunc i8 %10120 to i1
  br i1 %10121, label %10122, label %10144

10122:                                            ; preds = %10115
  %10123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10124 = call i32 @fileno(ptr noundef %10123) #11
  %10125 = call i32 @isatty(i32 noundef %10124) #11
  %10126 = icmp ne i32 %10125, 0
  br i1 %10126, label %10127, label %10144

10127:                                            ; preds = %10122
  %10128 = load i32, ptr %337, align 4, !tbaa !5
  %10129 = call ptr @__errno_location() #12
  store i32 %10128, ptr %10129, align 4, !tbaa !5
  %10130 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10131 = load i32, ptr @test_count, align 4, !tbaa !5
  %10132 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10133 = load i32, ptr %10132, align 4, !tbaa !5
  %10134 = call ptr @s2n_strerror(i32 noundef %10133, ptr noundef @.str.4)
  %10135 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10136 = load i32, ptr %10135, align 4, !tbaa !5
  %10137 = call ptr @s2n_strerror_debug(i32 noundef %10136, ptr noundef @.str.4)
  %10138 = call ptr @__errno_location() #12
  %10139 = load i32, ptr %10138, align 4, !tbaa !5
  %10140 = call ptr @strerror(i32 noundef %10139) #11
  %10141 = call ptr @__errno_location() #12
  %10142 = load i32, ptr %10141, align 4, !tbaa !5
  %10143 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10130, ptr noundef @.str.2, i32 noundef %10131, ptr noundef @.str.119, ptr noundef @.str.1, i32 noundef 1519, ptr noundef %10134, ptr noundef %10137, ptr noundef %10140, i32 noundef %10142) #11
  br label %10161

10144:                                            ; preds = %10122, %10115
  %10145 = load i32, ptr %337, align 4, !tbaa !5
  %10146 = call ptr @__errno_location() #12
  store i32 %10145, ptr %10146, align 4, !tbaa !5
  %10147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %10148 = load i32, ptr @test_count, align 4, !tbaa !5
  %10149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10150 = load i32, ptr %10149, align 4, !tbaa !5
  %10151 = call ptr @s2n_strerror(i32 noundef %10150, ptr noundef @.str.4)
  %10152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %10153 = load i32, ptr %10152, align 4, !tbaa !5
  %10154 = call ptr @s2n_strerror_debug(i32 noundef %10153, ptr noundef @.str.4)
  %10155 = call ptr @__errno_location() #12
  %10156 = load i32, ptr %10155, align 4, !tbaa !5
  %10157 = call ptr @strerror(i32 noundef %10156) #11
  %10158 = call ptr @__errno_location() #12
  %10159 = load i32, ptr %10158, align 4, !tbaa !5
  %10160 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10147, ptr noundef @.str.5, i32 noundef %10148, ptr noundef @.str.119, ptr noundef @.str.1, i32 noundef 1519, ptr noundef %10151, ptr noundef %10154, ptr noundef %10157, i32 noundef %10159) #11
  br label %10161

10161:                                            ; preds = %10144, %10127
  call void @llvm.lifetime.end.p0(i64 4, ptr %337) #11
  br label %10162

10162:                                            ; preds = %10161
  br label %10163

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

10164:                                            ; No predecessors!
  br label %10165

10165:                                            ; preds = %10164
  br label %10166

10166:                                            ; preds = %10165, %10110
  br label %10167

10167:                                            ; preds = %10166
  br label %10168

10168:                                            ; preds = %10167
  %10169 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %10170 = trunc i8 %10169 to i1
  br i1 %10170, label %10171, label %10187

10171:                                            ; preds = %10168
  %10172 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10173 = call i32 @fileno(ptr noundef %10172) #11
  %10174 = call i32 @isatty(i32 noundef %10173) #11
  %10175 = icmp ne i32 %10174, 0
  br i1 %10175, label %10176, label %10187

10176:                                            ; preds = %10171
  %10177 = load i32, ptr @test_count, align 4, !tbaa !5
  %10178 = icmp ne i32 %10177, 0
  br i1 %10178, label %10179, label %10183

10179:                                            ; preds = %10176
  %10180 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10181 = load i32, ptr @test_count, align 4, !tbaa !5
  %10182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10180, ptr noundef @.str.120, i32 noundef %10181) #11
  br label %10186

10183:                                            ; preds = %10176
  %10184 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10184, ptr noundef @.str.121) #11
  br label %10186

10186:                                            ; preds = %10183, %10179
  br label %10198

10187:                                            ; preds = %10171, %10168
  %10188 = load i32, ptr @test_count, align 4, !tbaa !5
  %10189 = icmp ne i32 %10188, 0
  br i1 %10189, label %10190, label %10194

10190:                                            ; preds = %10187
  %10191 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10192 = load i32, ptr @test_count, align 4, !tbaa !5
  %10193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10191, ptr noundef @.str.122, i32 noundef %10192) #11
  br label %10197

10194:                                            ; preds = %10187
  %10195 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %10195, ptr noundef @.str.123) #11
  br label %10197

10197:                                            ; preds = %10194, %10190
  br label %10198

10198:                                            ; preds = %10197, %10186
  store i32 0, ptr %3, align 4
  store i32 1, ptr %338, align 4
  br label %10203

10199:                                            ; No predecessors!
  br label %10200

10200:                                            ; preds = %10199
  br label %10201

10201:                                            ; preds = %10200
  br label %10202

10202:                                            ; preds = %10201
  store i32 0, ptr %338, align 4
  br label %10203

10203:                                            ; preds = %10202, %10198
  %10204 = call i32 @s2n_client_hello_free(ptr noundef %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 47, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 43, ptr %9) #11
  %10205 = load i32, ptr %338, align 4
  switch i32 %10205, label %10208 [
    i32 0, label %10206
    i32 1, label %10206
  ]

10206:                                            ; preds = %10203, %10203
  %10207 = load i32, ptr %3, align 4
  ret i32 %10207

10208:                                            ; preds = %10203
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

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

declare i32 @s2n_client_hello_free(ptr noundef) #2

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

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

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

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

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

declare i32 @s2n_fingerprint_free(ptr noundef) #2

declare ptr @s2n_fingerprint_new(i32 noundef) #2

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

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

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

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

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

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

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

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

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

declare i32 @s2n_cleanup() #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!19, !10, i64 8}
!19 = !{!"", !7, i64 0, !7, i64 2, !10, i64 8}
!20 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 1, !15, i64 24, i64 672, !15, i64 696, i64 8, !9, i64 704, i64 4, !5, i64 708, i64 4, !5, i64 712, i64 1, !15, i64 720, i64 2, !21, i64 728, i64 8, !9, i64 736, i64 4, !5, i64 740, i64 4, !5, i64 744, i64 1, !15, i64 752, i64 8, !9, i64 760, i64 4, !5, i64 764, i64 4, !5, i64 768, i64 1, !15, i64 776, i64 8, !9, i64 784, i64 4, !5, i64 788, i64 4, !5, i64 792, i64 1, !15, i64 800, i64 1, !15, i64 801, i64 1, !15, i64 802, i64 1, !15}
!21 = !{!22, !22, i64 0}
!22 = !{!"short", !7, i64 0}
!23 = !{!24, !7, i64 800}
!24 = !{!"s2n_client_hello", !25, i64 0, !26, i64 24, !25, i64 728, !25, i64 752, !25, i64 776, !7, i64 800, !7, i64 801, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802}
!25 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!26 = !{!"", !7, i64 0, !25, i64 672, !22, i64 696}
!27 = !{!19, !7, i64 2}
!28 = !{!24, !7, i64 801}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!32, !7, i64 0}
!32 = !{!"", !7, i64 0, !10, i64 8}
!33 = !{!32, !10, i64 8}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}
!36 = !{!37, !17, i64 8}
!37 = !{!"", !7, i64 0, !17, i64 8, !10, i64 16}
!38 = !{!37, !10, i64 16}
!39 = distinct !{!39, !30}
!40 = !{!24, !6, i64 736}
!41 = distinct !{!41, !30}


; 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.anon = type { [2 x i8], i8, ptr }
%struct.anon.0 = type { i8, ptr }
%struct.anon.1 = type { [4 x i8], i64, ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_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 [83 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 [55 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [147 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [163 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@__const.main.test_cases = external hidden unnamed_addr constant [10 x %struct.anon], align 16
@.str.24 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [69 x i8], align 1
@__const.main.count_test_cases = external hidden unnamed_addr constant [6 x %struct.anon.0], align 16
@.str.37 = external hidden unnamed_addr constant [131 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [80 x i8], align 1
@__const.main.client_hello_bytes = external hidden unnamed_addr constant [53 x i8], align 16
@.str.41 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [77 x i8], align 1
@__const.main.client_hello_bytes.48 = external hidden unnamed_addr constant [63 x i8], align 16
@.str.49 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [54 x i8], align 1
@__const.main.client_hello_bytes.53 = external hidden unnamed_addr constant [59 x i8], align 16
@.str.54 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main.client_hello_bytes.58 = external hidden unnamed_addr constant [67 x i8], align 16
@.str.59 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main.client_hello_bytes.61 = external hidden unnamed_addr constant [55 x i8], align 16
@.str.62 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main.test_cases.69 = external hidden unnamed_addr constant [5 x %struct.anon.1], align 16
@__const.main.client_hello_bytes.70 = external hidden unnamed_addr constant [58 x i8], align 16
@.str.72 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [52 x i8], align 1
@__const.main.client_hello_bytes.76 = external hidden unnamed_addr constant [53 x i8], align 16
@__const.main.client_hello_bytes.77 = external hidden unnamed_addr constant [54 x i8], align 16
@__const.main.client_hello_bytes.79 = external hidden unnamed_addr constant [75 x i8], align 16
@__const.main.expected = external hidden unnamed_addr constant [75 x i8], align 16
@.str.80 = external hidden unnamed_addr constant [146 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [75 x i8], align 1
@__const.main.expected.84 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.main.expected.85 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [88 x i8], align 1
@__const.main.expected.88 = external hidden unnamed_addr constant [60 x i8], align 16
@__const.main.bytes = external hidden unnamed_addr constant [69 x i8], align 16
@.str.89 = external hidden unnamed_addr constant [119 x i8], align 1
@__const.main.bytes.91 = external hidden unnamed_addr constant [69 x i8], align 16
@__const.main.bytes.93 = external hidden unnamed_addr constant [69 x i8], align 16
@__const.main.client_hello_bytes.95 = external hidden unnamed_addr constant [129 x i8], align 16
@__const.main.expected_raw_extensions = external hidden unnamed_addr constant [70 x i8], align 16
@__const.main.sni_str = external hidden unnamed_addr constant [5 x i8], align 1
@__const.main.alpn_str = external hidden unnamed_addr constant [5 x i8], align 1
@__const.main.extensions = external hidden unnamed_addr constant [80 x i8], align 16
@.str.96 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [75 x i8], align 1
@__const.main.expected.103 = external hidden unnamed_addr constant [110 x i8], align 16
@__const.main.expected.104 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [39 x i8], align 1
@__const.main.expected.111 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.main.client_hello_bytes.112 = external hidden unnamed_addr constant [59 x i8], align 16
@.str.113 = external hidden unnamed_addr constant [145 x i8], align 1
@__const.main.packet_bytes = external hidden unnamed_addr constant <{ [390 x i8], [122 x i8] }>, align 16
@.str.114 = external hidden unnamed_addr constant [135 x i8], align 1
@__const.main.expected.115 = external hidden unnamed_addr constant [37 x i8], align 16
@.str.116 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca [47 x i8], align 16
  %4 = alloca ptr, align 8
  %5 = alloca [51 x i8], align 16
  %6 = alloca [200 x i8], align 16
  %7 = alloca i32, align 4
  %8 = alloca [200 x i8], align 16
  %9 = alloca i32, align 4
  %10 = alloca [51 x i8], align 16
  %11 = alloca [200 x i8], align 16
  %12 = alloca i32, align 4
  %13 = alloca [200 x i8], align 16
  %14 = alloca i32, align 4
  %15 = alloca %struct.s2n_client_hello, align 8
  %16 = alloca ptr, align 8
  %17 = alloca [200 x i8], align 16
  %18 = alloca i32, align 4
  %19 = alloca [54 x i8], align 16
  %20 = alloca [200 x i8], align 16
  %21 = alloca i32, align 4
  %22 = alloca [47 x i8], align 16
  %23 = alloca [200 x i8], align 16
  %24 = alloca i32, align 4
  %25 = alloca [60 x i8], align 16
  %26 = alloca [200 x i8], align 16
  %27 = alloca i32, align 4
  %28 = alloca [200 x i8], align 16
  %29 = alloca i32, align 4
  %30 = alloca [53 x i8], align 16
  %31 = alloca [200 x i8], align 16
  %32 = alloca i32, align 4
  %33 = alloca [200 x i8], align 16
  %34 = alloca i32, align 4
  %35 = alloca [63 x i8], align 16
  %36 = alloca [200 x i8], align 16
  %37 = alloca i32, align 4
  %38 = alloca [55 x i8], align 16
  %39 = alloca [200 x i8], align 16
  %40 = alloca i32, align 4
  %41 = alloca [59 x i8], align 16
  %42 = alloca [200 x i8], align 16
  %43 = alloca i32, align 4
  %44 = alloca [67 x i8], align 16
  %45 = alloca [200 x i8], align 16
  %46 = alloca i32, align 4
  %47 = alloca [55 x i8], align 16
  %48 = alloca [200 x i8], align 16
  %49 = alloca i32, align 4
  %50 = alloca [58 x i8], align 16
  %51 = alloca [200 x i8], align 16
  %52 = alloca i32, align 4
  %53 = alloca [200 x i8], align 16
  %54 = alloca i32, align 4
  %55 = alloca [53 x i8], align 16
  %56 = alloca [200 x i8], align 16
  %57 = alloca i32, align 4
  %58 = alloca [54 x i8], align 16
  %59 = alloca [200 x i8], align 16
  %60 = alloca i32, align 4
  %61 = alloca [75 x i8], align 16
  %62 = alloca [200 x i8], align 16
  %63 = alloca i32, align 4
  %64 = alloca [200 x i8], align 16
  %65 = alloca i32, align 4
  %66 = alloca [200 x i8], align 16
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca [69 x i8], align 16
  %71 = alloca [200 x i8], align 16
  %72 = alloca i32, align 4
  %73 = alloca [69 x i8], align 16
  %74 = alloca [200 x i8], align 16
  %75 = alloca i32, align 4
  %76 = alloca [69 x i8], align 16
  %77 = alloca [200 x i8], align 16
  %78 = alloca i32, align 4
  %79 = alloca [129 x i8], align 16
  %80 = alloca [70 x i8], align 16
  %81 = alloca [80 x i8], align 16
  %82 = alloca [200 x i8], align 16
  %83 = alloca i32, align 4
  %84 = alloca [200 x i8], align 16
  %85 = alloca i32, align 4
  %86 = alloca [200 x i8], align 16
  %87 = alloca i32, align 4
  %88 = alloca [51 x i8], align 16
  %89 = alloca [200 x i8], align 16
  %90 = alloca i32, align 4
  %91 = alloca [47 x i8], align 16
  %92 = alloca [200 x i8], align 16
  %93 = alloca i32, align 4
  %94 = alloca [200 x i8], align 16
  %95 = alloca i32, align 4
  %96 = alloca [59 x i8], align 16
  %97 = alloca [200 x i8], align 16
  %98 = alloca i32, align 4
  %99 = alloca [512 x i8], align 16
  %100 = alloca [200 x i8], align 16
  %101 = alloca i32, align 4
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %102 = load ptr, ptr @stdout, align 8, !tbaa !9
  %103 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %102, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #14
  %104 = load ptr, ptr @stdout, align 8, !tbaa !9
  %105 = tail call i32 @fflush(ptr noundef %104)
  %106 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #14
  %107 = icmp eq i32 %106, -1
  br i1 %107, label %108, label %132

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

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

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

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

132:                                              ; preds = %2
  %133 = load i32, ptr @test_count, align 4, !tbaa !5
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr @test_count, align 4, !tbaa !5
  %135 = tail call i32 @s2n_enable_atexit() #14
  %136 = icmp eq i32 %135, -1
  br i1 %136, label %137, label %161

137:                                              ; preds = %132
  %138 = tail call ptr @__errno_location() #15
  %139 = load i32, ptr %138, align 4, !tbaa !5
  %140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %141 = tail call i32 @s2n_print_stacktrace(ptr noundef %140) #14
  %142 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %143 = trunc nuw i8 %142 to i1
  br i1 %143, label %144, label %148

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

148:                                              ; preds = %144, %137
  br label %149

149:                                              ; preds = %144, %148
  %.str.5.sink685 = phi ptr [ @.str.5, %148 ], [ @.str.2, %144 ]
  store i32 %139, ptr %138, align 4, !tbaa !5
  %150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %151 = load i32, ptr @test_count, align 4, !tbaa !5
  %152 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %153 = load i32, ptr %152, align 4, !tbaa !5
  %154 = tail call ptr @s2n_strerror(i32 noundef %153, ptr noundef nonnull @.str.4) #14
  %155 = load i32, ptr %152, align 4, !tbaa !5
  %156 = tail call ptr @s2n_strerror_debug(i32 noundef %155, ptr noundef nonnull @.str.4) #14
  %157 = load i32, ptr %138, align 4, !tbaa !5
  %158 = tail call ptr @strerror(i32 noundef %157) #14
  %159 = load i32, ptr %138, align 4, !tbaa !5
  %160 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %150, ptr noundef nonnull %.str.5.sink685, i32 noundef %151, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 226, ptr noundef %154, ptr noundef %156, ptr noundef %158, i32 noundef %159) #16
  tail call void @exit(i32 noundef 1) #17
  unreachable

161:                                              ; preds = %132
  %162 = tail call i32 @s2n_init() #14
  %163 = icmp eq i32 %162, -1
  br i1 %163, label %164, label %188

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

171:                                              ; preds = %164
  %172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %173 = tail call i32 @fileno(ptr noundef %172) #14
  %174 = tail call i32 @isatty(i32 noundef %173) #14
  %.not658 = icmp eq i32 %174, 0
  br i1 %.not658, label %175, label %176

175:                                              ; preds = %171, %164
  br label %176

176:                                              ; preds = %171, %175
  %.str.5.sink696 = phi ptr [ @.str.5, %175 ], [ @.str.2, %171 ]
  store i32 %166, ptr %165, align 4, !tbaa !5
  %177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %178 = load i32, ptr @test_count, align 4, !tbaa !5
  %179 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %180 = load i32, ptr %179, align 4, !tbaa !5
  %181 = tail call ptr @s2n_strerror(i32 noundef %180, ptr noundef nonnull @.str.4) #14
  %182 = load i32, ptr %179, align 4, !tbaa !5
  %183 = tail call ptr @s2n_strerror_debug(i32 noundef %182, ptr noundef nonnull @.str.4) #14
  %184 = load i32, ptr %165, align 4, !tbaa !5
  %185 = tail call ptr @strerror(i32 noundef %184) #14
  %186 = load i32, ptr %165, align 4, !tbaa !5
  %187 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %177, ptr noundef nonnull %.str.5.sink696, i32 noundef %178, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 226, ptr noundef %181, ptr noundef %183, ptr noundef %185, i32 noundef %186) #16
  tail call void @exit(i32 noundef 1) #17
  unreachable

188:                                              ; preds = %161
  %189 = load i32, ptr @test_count, align 4, !tbaa !5
  %190 = add nsw i32 %189, 1
  store i32 %190, ptr @test_count, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 47, ptr nonnull %3) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(47) %3, i8 0, i64 47, i1 false)
  store i8 1, ptr %3, align 16
  %191 = getelementptr inbounds i8, ptr %3, i64 3
  store i8 43, ptr %191, align 1
  %192 = getelementptr inbounds i8, ptr %3, i64 40
  store i8 2, ptr %192, align 8
  %193 = getelementptr inbounds i8, ptr %3, i64 43
  store i8 1, ptr %193, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #14
  %194 = call ptr @s2n_client_hello_parse_message(ptr noundef nonnull %3, i32 noundef 47) #14
  store ptr %194, ptr %4, align 8, !tbaa !9
  %195 = load i32, ptr @test_count, align 4, !tbaa !5
  %196 = add nsw i32 %195, 1
  store i32 %196, ptr @test_count, align 4, !tbaa !5
  %197 = icmp eq ptr %194, null
  br i1 %197, label %198, label %222

198:                                              ; preds = %188
  %199 = tail call ptr @__errno_location() #15
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %202 = call i32 @s2n_print_stacktrace(ptr noundef %201) #14
  %203 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %204 = trunc nuw i8 %203 to i1
  br i1 %204, label %205, label %209

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

209:                                              ; preds = %205, %198
  br label %210

210:                                              ; preds = %205, %209
  %.str.5.sink707 = phi ptr [ @.str.5, %209 ], [ @.str.2, %205 ]
  store i32 %200, ptr %199, align 4, !tbaa !5
  %211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %212 = load i32, ptr @test_count, align 4, !tbaa !5
  %213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %214 = load i32, ptr %213, align 4, !tbaa !5
  %215 = call ptr @s2n_strerror(i32 noundef %214, ptr noundef nonnull @.str.4) #14
  %216 = load i32, ptr %213, align 4, !tbaa !5
  %217 = call ptr @s2n_strerror_debug(i32 noundef %216, ptr noundef nonnull @.str.4) #14
  %218 = load i32, ptr %199, align 4, !tbaa !5
  %219 = call ptr @strerror(i32 noundef %218) #14
  %220 = load i32, ptr %199, align 4, !tbaa !5
  %221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %211, ptr noundef nonnull %.str.5.sink707, i32 noundef %212, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 237, ptr noundef %215, ptr noundef %217, ptr noundef %219, i32 noundef %220) #16
  call void @exit(i32 noundef 1) #17
  unreachable

222:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 51, ptr nonnull %5) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(51) %5, i8 0, i64 51, i1 false)
  store i8 1, ptr %5, align 16
  %223 = getelementptr inbounds i8, ptr %5, i64 3
  store i8 47, ptr %223, align 1
  %224 = getelementptr inbounds i8, ptr %5, i64 40
  store i8 2, ptr %224, align 8
  %225 = getelementptr inbounds i8, ptr %5, i64 43
  store i8 1, ptr %225, align 1
  %226 = getelementptr inbounds i8, ptr %5, i64 46
  store i8 4, ptr %226, align 2
  %227 = getelementptr inbounds i8, ptr %5, i64 48
  store i8 57, ptr %227, align 16
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %6) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %6, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #14
  store i32 0, ptr %7, align 4, !tbaa !5
  %228 = add nsw i32 %195, 3
  store i32 %228, ptr @test_count, align 4, !tbaa !5
  %229 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %5, i64 noundef 51, i64 noundef 200, ptr noundef nonnull %6, ptr noundef nonnull %7)
  %230 = call zeroext i1 @s2n_result_is_ok(i32 %229)
  br i1 %230, label %255, label %231

231:                                              ; preds = %222
  %232 = tail call ptr @__errno_location() #15
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %235 = call i32 @s2n_print_stacktrace(ptr noundef %234) #14
  %236 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %238, label %242

238:                                              ; preds = %231
  %239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %240 = call i32 @fileno(ptr noundef %239) #14
  %241 = call i32 @isatty(i32 noundef %240) #14
  %.not = icmp eq i32 %241, 0
  br i1 %.not, label %242, label %243

242:                                              ; preds = %238, %231
  br label %243

243:                                              ; preds = %238, %242
  %.str.5.sink718 = phi ptr [ @.str.5, %242 ], [ @.str.2, %238 ]
  store i32 %233, ptr %232, align 4, !tbaa !5
  %244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %245 = load i32, ptr @test_count, align 4, !tbaa !5
  %246 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %247 = load i32, ptr %246, align 4, !tbaa !5
  %248 = call ptr @s2n_strerror(i32 noundef %247, ptr noundef nonnull @.str.4) #14
  %249 = load i32, ptr %246, align 4, !tbaa !5
  %250 = call ptr @s2n_strerror_debug(i32 noundef %249, ptr noundef nonnull @.str.4) #14
  %251 = load i32, ptr %232, align 4, !tbaa !5
  %252 = call ptr @strerror(i32 noundef %251) #14
  %253 = load i32, ptr %232, align 4, !tbaa !5
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %244, ptr noundef nonnull %.str.5.sink718, i32 noundef %245, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 262, ptr noundef %248, ptr noundef %250, ptr noundef %252, i32 noundef %253) #16
  call void @exit(i32 noundef 1) #17
  unreachable

255:                                              ; preds = %222
  %256 = load i32, ptr @test_count, align 4, !tbaa !5
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr @test_count, align 4, !tbaa !5
  %258 = load i32, ptr %7, align 4, !tbaa !5
  %.not502 = icmp eq i32 %258, 0
  br i1 %.not502, label %259, label %283

259:                                              ; preds = %255
  %260 = tail call ptr @__errno_location() #15
  %261 = load i32, ptr %260, align 4, !tbaa !5
  %262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %263 = call i32 @s2n_print_stacktrace(ptr noundef %262) #14
  %264 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %265 = trunc nuw i8 %264 to i1
  br i1 %265, label %266, label %270

266:                                              ; preds = %259
  %267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %268 = call i32 @fileno(ptr noundef %267) #14
  %269 = call i32 @isatty(i32 noundef %268) #14
  %.not503 = icmp eq i32 %269, 0
  br i1 %.not503, label %270, label %271

270:                                              ; preds = %266, %259
  br label %271

271:                                              ; preds = %266, %270
  %.str.5.sink729 = phi ptr [ @.str.5, %270 ], [ @.str.2, %266 ]
  store i32 %261, ptr %260, align 4, !tbaa !5
  %272 = load ptr, ptr @stderr, align 8, !tbaa !9
  %273 = load i32, ptr @test_count, align 4, !tbaa !5
  %274 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = call ptr @s2n_strerror(i32 noundef %275, ptr noundef nonnull @.str.4) #14
  %277 = load i32, ptr %274, align 4, !tbaa !5
  %278 = call ptr @s2n_strerror_debug(i32 noundef %277, ptr noundef nonnull @.str.4) #14
  %279 = load i32, ptr %260, align 4, !tbaa !5
  %280 = call ptr @strerror(i32 noundef %279) #14
  %281 = load i32, ptr %260, align 4, !tbaa !5
  %282 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %272, ptr noundef nonnull %.str.5.sink729, i32 noundef %273, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 264, ptr noundef %276, ptr noundef %278, ptr noundef %280, i32 noundef %281) #16
  call void @exit(i32 noundef 1) #17
  unreachable

283:                                              ; preds = %255
  %284 = add nsw i32 %256, 2
  store i32 %284, ptr @test_count, align 4, !tbaa !5
  %285 = load i8, ptr %6, align 16, !tbaa !15
  %286 = icmp eq i8 %285, 113
  br i1 %286, label %311, label %287

287:                                              ; preds = %283
  %288 = tail call ptr @__errno_location() #15
  %289 = load i32, ptr %288, align 4, !tbaa !5
  %290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %291 = call i32 @s2n_print_stacktrace(ptr noundef %290) #14
  %292 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %293 = trunc nuw i8 %292 to i1
  br i1 %293, label %294, label %298

294:                                              ; preds = %287
  %295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %296 = call i32 @fileno(ptr noundef %295) #14
  %297 = call i32 @isatty(i32 noundef %296) #14
  %.not504 = icmp eq i32 %297, 0
  br i1 %.not504, label %298, label %299

298:                                              ; preds = %294, %287
  br label %299

299:                                              ; preds = %294, %298
  %.str.5.sink740 = phi ptr [ @.str.5, %298 ], [ @.str.2, %294 ]
  store i32 %289, ptr %288, align 4, !tbaa !5
  %300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %301 = load i32, ptr @test_count, align 4, !tbaa !5
  %302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %303 = load i32, ptr %302, align 4, !tbaa !5
  %304 = call ptr @s2n_strerror(i32 noundef %303, ptr noundef nonnull @.str.4) #14
  %305 = load i32, ptr %302, align 4, !tbaa !5
  %306 = call ptr @s2n_strerror_debug(i32 noundef %305, ptr noundef nonnull @.str.4) #14
  %307 = load i32, ptr %288, align 4, !tbaa !5
  %308 = call ptr @strerror(i32 noundef %307) #14
  %309 = load i32, ptr %288, align 4, !tbaa !5
  %310 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %300, ptr noundef nonnull %.str.5.sink740, i32 noundef %301, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 265, ptr noundef %304, ptr noundef %306, ptr noundef %308, i32 noundef %309) #16
  call void @exit(i32 noundef 1) #17
  unreachable

311:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %6) #14
  call void @llvm.lifetime.end.p0(i64 51, ptr nonnull %5) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %8) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %8, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #14
  store i32 0, ptr %9, align 4, !tbaa !5
  %312 = add nsw i32 %256, 3
  store i32 %312, ptr @test_count, align 4, !tbaa !5
  %313 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %3, i64 noundef 47, i64 noundef 200, ptr noundef nonnull %8, ptr noundef nonnull %9)
  %314 = call zeroext i1 @s2n_result_is_ok(i32 %313)
  br i1 %314, label %339, label %315

315:                                              ; preds = %311
  %316 = tail call ptr @__errno_location() #15
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = load ptr, ptr @stderr, align 8, !tbaa !9
  %319 = call i32 @s2n_print_stacktrace(ptr noundef %318) #14
  %320 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %321 = trunc nuw i8 %320 to i1
  br i1 %321, label %322, label %326

322:                                              ; preds = %315
  %323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %324 = call i32 @fileno(ptr noundef %323) #14
  %325 = call i32 @isatty(i32 noundef %324) #14
  %.not505 = icmp eq i32 %325, 0
  br i1 %.not505, label %326, label %327

326:                                              ; preds = %322, %315
  br label %327

327:                                              ; preds = %322, %326
  %.str.5.sink751 = phi ptr [ @.str.5, %326 ], [ @.str.2, %322 ]
  store i32 %317, ptr %316, align 4, !tbaa !5
  %328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %329 = load i32, ptr @test_count, align 4, !tbaa !5
  %330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %331 = load i32, ptr %330, align 4, !tbaa !5
  %332 = call ptr @s2n_strerror(i32 noundef %331, ptr noundef nonnull @.str.4) #14
  %333 = load i32, ptr %330, align 4, !tbaa !5
  %334 = call ptr @s2n_strerror_debug(i32 noundef %333, ptr noundef nonnull @.str.4) #14
  %335 = load i32, ptr %316, align 4, !tbaa !5
  %336 = call ptr @strerror(i32 noundef %335) #14
  %337 = load i32, ptr %316, align 4, !tbaa !5
  %338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %328, ptr noundef nonnull %.str.5.sink751, i32 noundef %329, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 274, ptr noundef %332, ptr noundef %334, ptr noundef %336, i32 noundef %337) #16
  call void @exit(i32 noundef 1) #17
  unreachable

339:                                              ; preds = %311
  %340 = load i32, ptr @test_count, align 4, !tbaa !5
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr @test_count, align 4, !tbaa !5
  %342 = load i32, ptr %9, align 4, !tbaa !5
  %.not506 = icmp eq i32 %342, 0
  br i1 %.not506, label %343, label %367

343:                                              ; preds = %339
  %344 = tail call ptr @__errno_location() #15
  %345 = load i32, ptr %344, align 4, !tbaa !5
  %346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %347 = call i32 @s2n_print_stacktrace(ptr noundef %346) #14
  %348 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %349 = trunc nuw i8 %348 to i1
  br i1 %349, label %350, label %354

350:                                              ; preds = %343
  %351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %352 = call i32 @fileno(ptr noundef %351) #14
  %353 = call i32 @isatty(i32 noundef %352) #14
  %.not507 = icmp eq i32 %353, 0
  br i1 %.not507, label %354, label %355

354:                                              ; preds = %350, %343
  br label %355

355:                                              ; preds = %350, %354
  %.str.5.sink762 = phi ptr [ @.str.5, %354 ], [ @.str.2, %350 ]
  store i32 %345, ptr %344, align 4, !tbaa !5
  %356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %357 = load i32, ptr @test_count, align 4, !tbaa !5
  %358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %359 = load i32, ptr %358, align 4, !tbaa !5
  %360 = call ptr @s2n_strerror(i32 noundef %359, ptr noundef nonnull @.str.4) #14
  %361 = load i32, ptr %358, align 4, !tbaa !5
  %362 = call ptr @s2n_strerror_debug(i32 noundef %361, ptr noundef nonnull @.str.4) #14
  %363 = load i32, ptr %344, align 4, !tbaa !5
  %364 = call ptr @strerror(i32 noundef %363) #14
  %365 = load i32, ptr %344, align 4, !tbaa !5
  %366 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %356, ptr noundef nonnull %.str.5.sink762, i32 noundef %357, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 276, ptr noundef %360, ptr noundef %362, ptr noundef %364, i32 noundef %365) #16
  call void @exit(i32 noundef 1) #17
  unreachable

367:                                              ; preds = %339
  %368 = add nsw i32 %340, 2
  store i32 %368, ptr @test_count, align 4, !tbaa !5
  %369 = load i8, ptr %8, align 16, !tbaa !15
  %370 = icmp eq i8 %369, 116
  br i1 %370, label %395, label %371

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

378:                                              ; preds = %371
  %379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %380 = call i32 @fileno(ptr noundef %379) #14
  %381 = call i32 @isatty(i32 noundef %380) #14
  %.not508 = icmp eq i32 %381, 0
  br i1 %.not508, label %382, label %383

382:                                              ; preds = %378, %371
  br label %383

383:                                              ; preds = %378, %382
  %.str.5.sink773 = phi ptr [ @.str.5, %382 ], [ @.str.2, %378 ]
  store i32 %373, ptr %372, align 4, !tbaa !5
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = call ptr @s2n_strerror(i32 noundef %387, ptr noundef nonnull @.str.4) #14
  %389 = load i32, ptr %386, align 4, !tbaa !5
  %390 = call ptr @s2n_strerror_debug(i32 noundef %389, ptr noundef nonnull @.str.4) #14
  %391 = load i32, ptr %372, align 4, !tbaa !5
  %392 = call ptr @strerror(i32 noundef %391) #14
  %393 = load i32, ptr %372, align 4, !tbaa !5
  %394 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %384, ptr noundef nonnull %.str.5.sink773, i32 noundef %385, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 277, ptr noundef %388, ptr noundef %390, ptr noundef %392, i32 noundef %393) #16
  call void @exit(i32 noundef 1) #17
  unreachable

395:                                              ; preds = %367
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %8) #14
  call void @llvm.lifetime.start.p0(i64 51, ptr nonnull %10) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(51) %10, i8 0, i64 51, i1 false)
  store i8 1, ptr %10, align 16
  %396 = getelementptr inbounds i8, ptr %10, i64 3
  store i8 47, ptr %396, align 1
  %397 = getelementptr inbounds i8, ptr %10, i64 40
  store i8 2, ptr %397, align 8
  %398 = getelementptr inbounds i8, ptr %10, i64 43
  store i8 1, ptr %398, align 1
  %399 = getelementptr inbounds i8, ptr %10, i64 46
  store i8 4, ptr %399, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %11) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %11, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #14
  store i32 0, ptr %12, align 4, !tbaa !5
  %400 = add nsw i32 %340, 4
  store i32 %400, ptr @test_count, align 4, !tbaa !5
  %401 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %10, i64 noundef 51, i64 noundef 200, ptr noundef nonnull %11, ptr noundef nonnull %12)
  %402 = call zeroext i1 @s2n_result_is_ok(i32 %401)
  br i1 %402, label %427, label %403

403:                                              ; preds = %395
  %404 = tail call ptr @__errno_location() #15
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %407 = call i32 @s2n_print_stacktrace(ptr noundef %406) #14
  %408 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %409 = trunc nuw i8 %408 to i1
  br i1 %409, label %410, label %414

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

414:                                              ; preds = %410, %403
  br label %415

415:                                              ; preds = %410, %414
  %.str.5.sink784 = phi ptr [ @.str.5, %414 ], [ @.str.2, %410 ]
  store i32 %405, ptr %404, align 4, !tbaa !5
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = load i32, ptr @test_count, align 4, !tbaa !5
  %418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = call ptr @s2n_strerror(i32 noundef %419, ptr noundef nonnull @.str.4) #14
  %421 = load i32, ptr %418, align 4, !tbaa !5
  %422 = call ptr @s2n_strerror_debug(i32 noundef %421, ptr noundef nonnull @.str.4) #14
  %423 = load i32, ptr %404, align 4, !tbaa !5
  %424 = call ptr @strerror(i32 noundef %423) #14
  %425 = load i32, ptr %404, align 4, !tbaa !5
  %426 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %416, ptr noundef nonnull %.str.5.sink784, i32 noundef %417, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 299, ptr noundef %420, ptr noundef %422, ptr noundef %424, i32 noundef %425) #16
  call void @exit(i32 noundef 1) #17
  unreachable

427:                                              ; preds = %395
  %428 = load i32, ptr @test_count, align 4, !tbaa !5
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr @test_count, align 4, !tbaa !5
  %430 = load i32, ptr %12, align 4, !tbaa !5
  %431 = icmp ugt i32 %430, 3
  br i1 %431, label %456, label %432

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

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

443:                                              ; preds = %439, %432
  br label %444

444:                                              ; preds = %439, %443
  %.str.5.sink795 = phi ptr [ @.str.5, %443 ], [ @.str.2, %439 ]
  store i32 %434, ptr %433, align 4, !tbaa !5
  %445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %446 = load i32, ptr @test_count, align 4, !tbaa !5
  %447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %448 = load i32, ptr %447, align 4, !tbaa !5
  %449 = call ptr @s2n_strerror(i32 noundef %448, ptr noundef nonnull @.str.4) #14
  %450 = load i32, ptr %447, align 4, !tbaa !5
  %451 = call ptr @s2n_strerror_debug(i32 noundef %450, ptr noundef nonnull @.str.4) #14
  %452 = load i32, ptr %433, align 4, !tbaa !5
  %453 = call ptr @strerror(i32 noundef %452) #14
  %454 = load i32, ptr %433, align 4, !tbaa !5
  %455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %445, ptr noundef nonnull %.str.5.sink795, i32 noundef %446, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 301, ptr noundef %449, ptr noundef %451, ptr noundef %453, i32 noundef %454) #16
  call void @exit(i32 noundef 1) #17
  unreachable

456:                                              ; preds = %427
  %457 = add nsw i32 %428, 2
  store i32 %457, ptr @test_count, align 4, !tbaa !5
  %458 = getelementptr inbounds i8, ptr %11, i64 3
  %459 = load i8, ptr %458, align 1, !tbaa !15
  %460 = icmp eq i8 %459, 100
  br i1 %460, label %485, label %461

461:                                              ; preds = %456
  %462 = tail call ptr @__errno_location() #15
  %463 = load i32, ptr %462, align 4, !tbaa !5
  %464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %465 = call i32 @s2n_print_stacktrace(ptr noundef %464) #14
  %466 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %467 = trunc nuw i8 %466 to i1
  br i1 %467, label %468, label %472

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

472:                                              ; preds = %468, %461
  br label %473

473:                                              ; preds = %468, %472
  %.str.5.sink806 = phi ptr [ @.str.5, %472 ], [ @.str.2, %468 ]
  store i32 %463, ptr %462, align 4, !tbaa !5
  %474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %475 = load i32, ptr @test_count, align 4, !tbaa !5
  %476 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = call ptr @s2n_strerror(i32 noundef %477, ptr noundef nonnull @.str.4) #14
  %479 = load i32, ptr %476, align 4, !tbaa !5
  %480 = call ptr @s2n_strerror_debug(i32 noundef %479, ptr noundef nonnull @.str.4) #14
  %481 = load i32, ptr %462, align 4, !tbaa !5
  %482 = call ptr @strerror(i32 noundef %481) #14
  %483 = load i32, ptr %462, align 4, !tbaa !5
  %484 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %474, ptr noundef nonnull %.str.5.sink806, i32 noundef %475, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 302, ptr noundef %478, ptr noundef %480, ptr noundef %482, i32 noundef %483) #16
  call void @exit(i32 noundef 1) #17
  unreachable

485:                                              ; preds = %456
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 51, ptr nonnull %10) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %13) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %13, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #14
  store i32 0, ptr %14, align 4, !tbaa !5
  %486 = add nsw i32 %428, 3
  store i32 %486, ptr @test_count, align 4, !tbaa !5
  %487 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %3, i64 noundef 47, i64 noundef 200, ptr noundef nonnull %13, ptr noundef nonnull %14)
  %488 = call zeroext i1 @s2n_result_is_ok(i32 %487)
  br i1 %488, label %513, label %489

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

496:                                              ; preds = %489
  %497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %498 = call i32 @fileno(ptr noundef %497) #14
  %499 = call i32 @isatty(i32 noundef %498) #14
  %.not512 = icmp eq i32 %499, 0
  br i1 %.not512, label %500, label %501

500:                                              ; preds = %496, %489
  br label %501

501:                                              ; preds = %496, %500
  %.str.5.sink817 = phi ptr [ @.str.5, %500 ], [ @.str.2, %496 ]
  store i32 %491, ptr %490, align 4, !tbaa !5
  %502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %503 = load i32, ptr @test_count, align 4, !tbaa !5
  %504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = call ptr @s2n_strerror(i32 noundef %505, ptr noundef nonnull @.str.4) #14
  %507 = load i32, ptr %504, align 4, !tbaa !5
  %508 = call ptr @s2n_strerror_debug(i32 noundef %507, ptr noundef nonnull @.str.4) #14
  %509 = load i32, ptr %490, align 4, !tbaa !5
  %510 = call ptr @strerror(i32 noundef %509) #14
  %511 = load i32, ptr %490, align 4, !tbaa !5
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %502, ptr noundef nonnull %.str.5.sink817, i32 noundef %503, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 311, ptr noundef %506, ptr noundef %508, ptr noundef %510, i32 noundef %511) #16
  call void @exit(i32 noundef 1) #17
  unreachable

513:                                              ; preds = %485
  %514 = load i32, ptr @test_count, align 4, !tbaa !5
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr @test_count, align 4, !tbaa !5
  %516 = load i32, ptr %14, align 4, !tbaa !5
  %517 = icmp ugt i32 %516, 3
  br i1 %517, label %542, label %518

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

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

529:                                              ; preds = %525, %518
  br label %530

530:                                              ; preds = %525, %529
  %.str.5.sink828 = phi ptr [ @.str.5, %529 ], [ @.str.2, %525 ]
  store i32 %520, ptr %519, align 4, !tbaa !5
  %531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %532 = load i32, ptr @test_count, align 4, !tbaa !5
  %533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %534 = load i32, ptr %533, align 4, !tbaa !5
  %535 = call ptr @s2n_strerror(i32 noundef %534, ptr noundef nonnull @.str.4) #14
  %536 = load i32, ptr %533, align 4, !tbaa !5
  %537 = call ptr @s2n_strerror_debug(i32 noundef %536, ptr noundef nonnull @.str.4) #14
  %538 = load i32, ptr %519, align 4, !tbaa !5
  %539 = call ptr @strerror(i32 noundef %538) #14
  %540 = load i32, ptr %519, align 4, !tbaa !5
  %541 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %531, ptr noundef nonnull %.str.5.sink828, i32 noundef %532, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 313, ptr noundef %535, ptr noundef %537, ptr noundef %539, i32 noundef %540) #16
  call void @exit(i32 noundef 1) #17
  unreachable

542:                                              ; preds = %513
  %543 = add nsw i32 %514, 2
  store i32 %543, ptr @test_count, align 4, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %13, i64 3
  %545 = load i8, ptr %544, align 1, !tbaa !15
  %546 = icmp eq i8 %545, 105
  br i1 %546, label %571, label %547

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

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

558:                                              ; preds = %554, %547
  br label %559

559:                                              ; preds = %554, %558
  %.str.5.sink839 = phi ptr [ @.str.5, %558 ], [ @.str.2, %554 ]
  store i32 %549, ptr %548, 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 nonnull @.str.4) #14
  %565 = load i32, ptr %562, align 4, !tbaa !5
  %566 = call ptr @s2n_strerror_debug(i32 noundef %565, ptr noundef nonnull @.str.4) #14
  %567 = load i32, ptr %548, align 4, !tbaa !5
  %568 = call ptr @strerror(i32 noundef %567) #14
  %569 = load i32, ptr %548, align 4, !tbaa !5
  %570 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %560, ptr noundef nonnull %.str.5.sink839, i32 noundef %561, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 314, ptr noundef %564, ptr noundef %566, ptr noundef %568, i32 noundef %569) #16
  call void @exit(i32 noundef 1) #17
  unreachable

571:                                              ; preds = %542
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %13) #14
  %572 = getelementptr inbounds i8, ptr %15, i64 800
  %573 = getelementptr inbounds i8, ptr %15, i64 801
  %574 = getelementptr inbounds i8, ptr %17, i64 1
  %575 = getelementptr inbounds i8, ptr %17, i64 2
  %576 = getelementptr inbounds i8, ptr %19, i64 3
  %577 = getelementptr inbounds i8, ptr %19, i64 40
  %578 = getelementptr inbounds i8, ptr %19, i64 43
  %579 = getelementptr inbounds i8, ptr %19, i64 46
  %580 = getelementptr inbounds i8, ptr %19, i64 48
  %581 = getelementptr inbounds i8, ptr %19, i64 50
  %582 = getelementptr inbounds i8, ptr %19, i64 51
  %583 = getelementptr inbounds i8, ptr %19, i64 52
  %584 = getelementptr inbounds i8, ptr %19, i64 53
  %585 = getelementptr inbounds i8, ptr %20, i64 1
  %586 = getelementptr inbounds i8, ptr %20, i64 2
  %587 = getelementptr inbounds i8, ptr %22, i64 3
  %588 = getelementptr inbounds i8, ptr %22, i64 4
  %589 = getelementptr inbounds i8, ptr %22, i64 5
  %590 = getelementptr inbounds i8, ptr %22, i64 40
  %591 = getelementptr inbounds i8, ptr %22, i64 43
  %592 = getelementptr inbounds i8, ptr %23, i64 1
  %593 = getelementptr inbounds i8, ptr %23, i64 2
  br label %605

594:                                              ; preds = %1012
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %25) #14
  store <4 x i8> <i8 1, i8 0, i8 0, i8 56>, ptr %25, align 16, !tbaa !15
  %595 = getelementptr inbounds i8, ptr %25, i64 4
  %596 = getelementptr inbounds i8, ptr %25, i64 40
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %595, i8 0, i64 36, i1 false)
  store <16 x i8> <i8 2, i8 0, i8 0, i8 1, i8 0, i8 0, i8 13, i8 0, i8 43, i8 0, i8 9, i8 8, i8 10, i8 10, i8 -86, i8 -86>, ptr %596, align 8, !tbaa !15
  %597 = getelementptr inbounds i8, ptr %25, i64 56
  store i8 -6, ptr %597, align 8, !tbaa !15
  %598 = getelementptr inbounds i8, ptr %25, i64 57
  store i8 -6, ptr %598, align 1, !tbaa !15
  %599 = getelementptr inbounds i8, ptr %25, i64 58
  %600 = load i8, ptr @__const.main.test_cases, align 16, !tbaa !15
  store i8 %600, ptr %599, align 2, !tbaa !15
  %601 = getelementptr inbounds i8, ptr %25, i64 59
  %602 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases, i64 1), align 1, !tbaa !15
  store i8 %602, ptr %601, align 1, !tbaa !15
  %603 = add nsw i32 %922, 5
  store i32 %603, ptr @test_count, align 4, !tbaa !5
  %604 = icmp ult i8 %600, 10
  br i1 %604, label %1038, label %1014

605:                                              ; preds = %571, %1012
  %606 = phi i32 [ %543, %571 ], [ %982, %1012 ]
  %.0661 = phi i64 [ 0, %571 ], [ %1013, %1012 ]
  %607 = getelementptr inbounds [10 x %struct.anon], ptr @__const.main.test_cases, i64 0, i64 %.0661
  %608 = getelementptr inbounds i8, ptr %607, i64 8
  %609 = load ptr, ptr %608, align 8, !tbaa !16
  %610 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %609, ptr noundef nonnull dereferenceable(1) @.str.23) #18
  %.not643 = icmp eq i32 %610, 0
  br i1 %.not643, label %769, label %611

611:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 808, ptr nonnull %15) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(808) %15, ptr noundef nonnull align 8 dereferenceable(808) %194, i64 808, i1 false), !tbaa.struct !18
  store i8 0, ptr %572, align 8, !tbaa !21
  %612 = getelementptr inbounds i8, ptr %607, i64 2
  %613 = load i8, ptr %612, align 2, !tbaa !25
  store i8 %613, ptr %573, align 1, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  store ptr null, ptr %16, align 8, !tbaa !9
  %614 = call ptr @s2n_fingerprint_new(i32 noundef 1) #14
  store ptr %614, ptr %16, align 8, !tbaa !9
  %615 = load i32, ptr @test_count, align 4, !tbaa !5
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr @test_count, align 4, !tbaa !5
  %617 = icmp eq ptr %614, null
  br i1 %617, label %618, label %642

618:                                              ; preds = %611
  %619 = tail call ptr @__errno_location() #15
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %622 = call i32 @s2n_print_stacktrace(ptr noundef %621) #14
  %623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %624 = trunc nuw i8 %623 to i1
  br i1 %624, label %625, label %629

625:                                              ; preds = %618
  %626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %627 = call i32 @fileno(ptr noundef %626) #14
  %628 = call i32 @isatty(i32 noundef %627) #14
  %.not656 = icmp eq i32 %628, 0
  br i1 %.not656, label %629, label %630

629:                                              ; preds = %625, %618
  br label %630

630:                                              ; preds = %625, %629
  %.str.5.sink850 = phi ptr [ @.str.5, %629 ], [ @.str.2, %625 ]
  store i32 %620, ptr %619, align 4, !tbaa !5
  %631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %632 = load i32, ptr @test_count, align 4, !tbaa !5
  %633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = call ptr @s2n_strerror(i32 noundef %634, ptr noundef nonnull @.str.4) #14
  %636 = load i32, ptr %633, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror_debug(i32 noundef %636, ptr noundef nonnull @.str.4) #14
  %638 = load i32, ptr %619, align 4, !tbaa !5
  %639 = call ptr @strerror(i32 noundef %638) #14
  %640 = load i32, ptr %619, align 4, !tbaa !5
  %641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %631, ptr noundef nonnull %.str.5.sink850, i32 noundef %632, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 367, ptr noundef %635, ptr noundef %637, ptr noundef %639, i32 noundef %640) #16
  call void @exit(i32 noundef 1) #17
  unreachable

642:                                              ; preds = %611
  %643 = add nsw i32 %615, 2
  store i32 %643, ptr @test_count, align 4, !tbaa !5
  %644 = call i32 @s2n_fingerprint_set_client_hello(ptr noundef nonnull %614, ptr noundef nonnull %15) #14
  %645 = icmp eq i32 %644, -1
  br i1 %645, label %646, label %670

646:                                              ; preds = %642
  %647 = tail call ptr @__errno_location() #15
  %648 = load i32, ptr %647, align 4, !tbaa !5
  %649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %650 = call i32 @s2n_print_stacktrace(ptr noundef %649) #14
  %651 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %652 = trunc nuw i8 %651 to i1
  br i1 %652, label %653, label %657

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

657:                                              ; preds = %653, %646
  br label %658

658:                                              ; preds = %653, %657
  %.str.5.sink861 = phi ptr [ @.str.5, %657 ], [ @.str.2, %653 ]
  store i32 %648, ptr %647, align 4, !tbaa !5
  %659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %660 = load i32, ptr @test_count, align 4, !tbaa !5
  %661 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %662 = load i32, ptr %661, align 4, !tbaa !5
  %663 = call ptr @s2n_strerror(i32 noundef %662, ptr noundef nonnull @.str.4) #14
  %664 = load i32, ptr %661, align 4, !tbaa !5
  %665 = call ptr @s2n_strerror_debug(i32 noundef %664, ptr noundef nonnull @.str.4) #14
  %666 = load i32, ptr %647, align 4, !tbaa !5
  %667 = call ptr @strerror(i32 noundef %666) #14
  %668 = load i32, ptr %647, align 4, !tbaa !5
  %669 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %659, ptr noundef nonnull %.str.5.sink861, i32 noundef %660, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 369, ptr noundef %663, ptr noundef %665, ptr noundef %667, i32 noundef %668) #16
  call void @exit(i32 noundef 1) #17
  unreachable

670:                                              ; preds = %642
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %17) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %17, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #14
  store i32 0, ptr %18, align 4, !tbaa !5
  %671 = load i32, ptr @test_count, align 4, !tbaa !5
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr @test_count, align 4, !tbaa !5
  %673 = load ptr, ptr %16, align 8, !tbaa !9
  %674 = call i32 @s2n_fingerprint_get_hash(ptr noundef %673, i32 noundef 200, ptr noundef nonnull %17, ptr noundef nonnull %18) #14
  %675 = icmp eq i32 %674, -1
  br i1 %675, label %676, label %700

676:                                              ; preds = %670
  %677 = tail call ptr @__errno_location() #15
  %678 = load i32, ptr %677, align 4, !tbaa !5
  %679 = load ptr, ptr @stderr, align 8, !tbaa !9
  %680 = call i32 @s2n_print_stacktrace(ptr noundef %679) #14
  %681 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %682 = trunc nuw i8 %681 to i1
  br i1 %682, label %683, label %687

683:                                              ; preds = %676
  %684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %685 = call i32 @fileno(ptr noundef %684) #14
  %686 = call i32 @isatty(i32 noundef %685) #14
  %.not654 = icmp eq i32 %686, 0
  br i1 %.not654, label %687, label %688

687:                                              ; preds = %683, %676
  br label %688

688:                                              ; preds = %683, %687
  %.str.5.sink872 = phi ptr [ @.str.5, %687 ], [ @.str.2, %683 ]
  store i32 %678, ptr %677, align 4, !tbaa !5
  %689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %690 = load i32, ptr @test_count, align 4, !tbaa !5
  %691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %692 = load i32, ptr %691, align 4, !tbaa !5
  %693 = call ptr @s2n_strerror(i32 noundef %692, ptr noundef nonnull @.str.4) #14
  %694 = load i32, ptr %691, align 4, !tbaa !5
  %695 = call ptr @s2n_strerror_debug(i32 noundef %694, ptr noundef nonnull @.str.4) #14
  %696 = load i32, ptr %677, align 4, !tbaa !5
  %697 = call ptr @strerror(i32 noundef %696) #14
  %698 = load i32, ptr %677, align 4, !tbaa !5
  %699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %689, ptr noundef nonnull %.str.5.sink872, i32 noundef %690, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 374, ptr noundef %693, ptr noundef %695, ptr noundef %697, i32 noundef %698) #16
  call void @exit(i32 noundef 1) #17
  unreachable

700:                                              ; preds = %670
  %701 = load i32, ptr @test_count, align 4, !tbaa !5
  %702 = add nsw i32 %701, 1
  store i32 %702, ptr @test_count, align 4, !tbaa !5
  %703 = load i32, ptr %18, align 4, !tbaa !5
  %704 = icmp ugt i32 %703, 2
  br i1 %704, label %729, label %705

705:                                              ; preds = %700
  %706 = tail call ptr @__errno_location() #15
  %707 = load i32, ptr %706, align 4, !tbaa !5
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = call i32 @s2n_print_stacktrace(ptr noundef %708) #14
  %710 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %711 = trunc nuw i8 %710 to i1
  br i1 %711, label %712, label %716

712:                                              ; preds = %705
  %713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %714 = call i32 @fileno(ptr noundef %713) #14
  %715 = call i32 @isatty(i32 noundef %714) #14
  %.not644 = icmp eq i32 %715, 0
  br i1 %.not644, label %716, label %717

716:                                              ; preds = %712, %705
  br label %717

717:                                              ; preds = %712, %716
  %.str.5.sink883 = phi ptr [ @.str.5, %716 ], [ @.str.2, %712 ]
  store i32 %707, ptr %706, align 4, !tbaa !5
  %718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %719 = load i32, ptr @test_count, align 4, !tbaa !5
  %720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %721 = load i32, ptr %720, align 4, !tbaa !5
  %722 = call ptr @s2n_strerror(i32 noundef %721, ptr noundef nonnull @.str.4) #14
  %723 = load i32, ptr %720, align 4, !tbaa !5
  %724 = call ptr @s2n_strerror_debug(i32 noundef %723, ptr noundef nonnull @.str.4) #14
  %725 = load i32, ptr %706, align 4, !tbaa !5
  %726 = call ptr @strerror(i32 noundef %725) #14
  %727 = load i32, ptr %706, align 4, !tbaa !5
  %728 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %718, ptr noundef nonnull %.str.5.sink883, i32 noundef %719, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 376, ptr noundef %722, ptr noundef %724, ptr noundef %726, i32 noundef %727) #16
  call void @exit(i32 noundef 1) #17
  unreachable

729:                                              ; preds = %700
  %730 = add nsw i32 %701, 2
  store i32 %730, ptr @test_count, align 4, !tbaa !5
  %731 = load i8, ptr %574, align 1, !tbaa !15
  %732 = zext i8 %731 to i32
  %733 = load i8, ptr %609, align 1, !tbaa !15
  %734 = sext i8 %733 to i32
  %735 = icmp eq i32 %732, %734
  br i1 %735, label %736, label %767

736:                                              ; preds = %729
  %737 = load i8, ptr %575, align 2, !tbaa !15
  %738 = zext i8 %737 to i32
  %739 = getelementptr inbounds i8, ptr %609, i64 1
  %740 = load i8, ptr %739, align 1, !tbaa !15
  %741 = sext i8 %740 to i32
  %742 = icmp eq i32 %738, %741
  br i1 %742, label %743, label %767

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

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

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

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

767:                                              ; preds = %736, %729
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %17) #14
  %768 = call i32 @s2n_fingerprint_free(ptr noundef nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 808, ptr nonnull %15) #14
  %.pre = load i32, ptr @test_count, align 4, !tbaa !5
  br label %769

769:                                              ; preds = %767, %605
  %770 = phi i32 [ %.pre, %767 ], [ %606, %605 ]
  %771 = getelementptr inbounds i8, ptr %607, i64 1
  call void @llvm.lifetime.start.p0(i64 54, ptr nonnull %19) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(54) %19, i8 0, i64 54, i1 false)
  store i8 1, ptr %19, align 16, !tbaa !15
  store i8 50, ptr %576, align 1, !tbaa !15
  store i8 2, ptr %577, align 8, !tbaa !15
  store i8 1, ptr %578, align 1, !tbaa !15
  store i8 7, ptr %579, align 2, !tbaa !15
  store i8 43, ptr %580, align 16, !tbaa !15
  store i8 3, ptr %581, align 2, !tbaa !15
  store i8 2, ptr %582, align 1, !tbaa !15
  %772 = load i8, ptr %607, align 16, !tbaa !15
  store i8 %772, ptr %583, align 4, !tbaa !15
  %773 = load i8, ptr %771, align 1, !tbaa !15
  store i8 %773, ptr %584, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %20) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %20, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  store i32 0, ptr %21, align 4, !tbaa !5
  %774 = add nsw i32 %770, 2
  store i32 %774, ptr @test_count, align 4, !tbaa !5
  %775 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %19, i64 noundef 54, i64 noundef 200, ptr noundef nonnull %20, ptr noundef nonnull %21)
  %776 = call zeroext i1 @s2n_result_is_ok(i32 %775)
  br i1 %776, label %801, label %777

777:                                              ; preds = %769
  %778 = tail call ptr @__errno_location() #15
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %781 = call i32 @s2n_print_stacktrace(ptr noundef %780) #14
  %782 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %783 = trunc nuw i8 %782 to i1
  br i1 %783, label %784, label %788

784:                                              ; preds = %777
  %785 = load ptr, ptr @stderr, align 8, !tbaa !9
  %786 = call i32 @fileno(ptr noundef %785) #14
  %787 = call i32 @isatty(i32 noundef %786) #14
  %.not645 = icmp eq i32 %787, 0
  br i1 %.not645, label %788, label %789

788:                                              ; preds = %784, %777
  br label %789

789:                                              ; preds = %784, %788
  %.str.5.sink905 = phi ptr [ @.str.5, %788 ], [ @.str.2, %784 ]
  store i32 %779, ptr %778, align 4, !tbaa !5
  %790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %791 = load i32, ptr @test_count, align 4, !tbaa !5
  %792 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %793 = load i32, ptr %792, align 4, !tbaa !5
  %794 = call ptr @s2n_strerror(i32 noundef %793, ptr noundef nonnull @.str.4) #14
  %795 = load i32, ptr %792, align 4, !tbaa !5
  %796 = call ptr @s2n_strerror_debug(i32 noundef %795, ptr noundef nonnull @.str.4) #14
  %797 = load i32, ptr %778, align 4, !tbaa !5
  %798 = call ptr @strerror(i32 noundef %797) #14
  %799 = load i32, ptr %778, align 4, !tbaa !5
  %800 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %790, ptr noundef nonnull %.str.5.sink905, i32 noundef %791, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 404, ptr noundef %794, ptr noundef %796, ptr noundef %798, i32 noundef %799) #16
  call void @exit(i32 noundef 1) #17
  unreachable

801:                                              ; preds = %769
  %802 = load i32, ptr @test_count, align 4, !tbaa !5
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr @test_count, align 4, !tbaa !5
  %804 = load i32, ptr %21, align 4, !tbaa !5
  %805 = icmp ugt i32 %804, 2
  br i1 %805, label %830, label %806

806:                                              ; preds = %801
  %807 = tail call ptr @__errno_location() #15
  %808 = load i32, ptr %807, align 4, !tbaa !5
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = call i32 @s2n_print_stacktrace(ptr noundef %809) #14
  %811 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %812 = trunc nuw i8 %811 to i1
  br i1 %812, label %813, label %817

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

817:                                              ; preds = %813, %806
  br label %818

818:                                              ; preds = %813, %817
  %.str.5.sink916 = phi ptr [ @.str.5, %817 ], [ @.str.2, %813 ]
  store i32 %808, ptr %807, align 4, !tbaa !5
  %819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %820 = load i32, ptr @test_count, align 4, !tbaa !5
  %821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %823 = call ptr @s2n_strerror(i32 noundef %822, ptr noundef nonnull @.str.4) #14
  %824 = load i32, ptr %821, align 4, !tbaa !5
  %825 = call ptr @s2n_strerror_debug(i32 noundef %824, ptr noundef nonnull @.str.4) #14
  %826 = load i32, ptr %807, align 4, !tbaa !5
  %827 = call ptr @strerror(i32 noundef %826) #14
  %828 = load i32, ptr %807, align 4, !tbaa !5
  %829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %819, ptr noundef nonnull %.str.5.sink916, i32 noundef %820, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 406, ptr noundef %823, ptr noundef %825, ptr noundef %827, i32 noundef %828) #16
  call void @exit(i32 noundef 1) #17
  unreachable

830:                                              ; preds = %801
  %831 = add nsw i32 %802, 2
  store i32 %831, ptr @test_count, align 4, !tbaa !5
  %832 = load i8, ptr %585, align 1, !tbaa !15
  %833 = zext i8 %832 to i32
  %834 = load i8, ptr %609, align 1, !tbaa !15
  %835 = sext i8 %834 to i32
  %836 = icmp eq i32 %833, %835
  br i1 %836, label %861, label %837

837:                                              ; preds = %830
  %838 = tail call ptr @__errno_location() #15
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %841 = call i32 @s2n_print_stacktrace(ptr noundef %840) #14
  %842 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %843 = trunc nuw i8 %842 to i1
  br i1 %843, label %844, label %848

844:                                              ; preds = %837
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = call i32 @fileno(ptr noundef %845) #14
  %847 = call i32 @isatty(i32 noundef %846) #14
  %.not647 = icmp eq i32 %847, 0
  br i1 %.not647, label %848, label %849

848:                                              ; preds = %844, %837
  br label %849

849:                                              ; preds = %844, %848
  %.str.5.sink927 = phi ptr [ @.str.5, %848 ], [ @.str.2, %844 ]
  store i32 %839, ptr %838, align 4, !tbaa !5
  %850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %851 = load i32, ptr @test_count, align 4, !tbaa !5
  %852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %853 = load i32, ptr %852, align 4, !tbaa !5
  %854 = call ptr @s2n_strerror(i32 noundef %853, ptr noundef nonnull @.str.4) #14
  %855 = load i32, ptr %852, align 4, !tbaa !5
  %856 = call ptr @s2n_strerror_debug(i32 noundef %855, ptr noundef nonnull @.str.4) #14
  %857 = load i32, ptr %838, align 4, !tbaa !5
  %858 = call ptr @strerror(i32 noundef %857) #14
  %859 = load i32, ptr %838, align 4, !tbaa !5
  %860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %850, ptr noundef nonnull %.str.5.sink927, i32 noundef %851, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 407, ptr noundef %854, ptr noundef %856, ptr noundef %858, i32 noundef %859) #16
  call void @exit(i32 noundef 1) #17
  unreachable

861:                                              ; preds = %830
  %862 = add nsw i32 %802, 3
  store i32 %862, ptr @test_count, align 4, !tbaa !5
  %863 = load i8, ptr %586, align 2, !tbaa !15
  %864 = zext i8 %863 to i32
  %865 = getelementptr inbounds i8, ptr %609, i64 1
  %866 = load i8, ptr %865, align 1, !tbaa !15
  %867 = sext i8 %866 to i32
  %868 = icmp eq i32 %864, %867
  br i1 %868, label %893, label %869

869:                                              ; preds = %861
  %870 = tail call ptr @__errno_location() #15
  %871 = load i32, ptr %870, align 4, !tbaa !5
  %872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %873 = call i32 @s2n_print_stacktrace(ptr noundef %872) #14
  %874 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %875 = trunc nuw i8 %874 to i1
  br i1 %875, label %876, label %880

876:                                              ; preds = %869
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @fileno(ptr noundef %877) #14
  %879 = call i32 @isatty(i32 noundef %878) #14
  %.not648 = icmp eq i32 %879, 0
  br i1 %.not648, label %880, label %881

880:                                              ; preds = %876, %869
  br label %881

881:                                              ; preds = %876, %880
  %.str.5.sink938 = phi ptr [ @.str.5, %880 ], [ @.str.2, %876 ]
  store i32 %871, ptr %870, align 4, !tbaa !5
  %882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %883 = load i32, ptr @test_count, align 4, !tbaa !5
  %884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %885 = load i32, ptr %884, align 4, !tbaa !5
  %886 = call ptr @s2n_strerror(i32 noundef %885, ptr noundef nonnull @.str.4) #14
  %887 = load i32, ptr %884, align 4, !tbaa !5
  %888 = call ptr @s2n_strerror_debug(i32 noundef %887, ptr noundef nonnull @.str.4) #14
  %889 = load i32, ptr %870, align 4, !tbaa !5
  %890 = call ptr @strerror(i32 noundef %889) #14
  %891 = load i32, ptr %870, align 4, !tbaa !5
  %892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef nonnull %.str.5.sink938, i32 noundef %883, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 408, ptr noundef %886, ptr noundef %888, ptr noundef %890, i32 noundef %891) #16
  call void @exit(i32 noundef 1) #17
  unreachable

893:                                              ; preds = %861
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %20) #14
  call void @llvm.lifetime.end.p0(i64 54, ptr nonnull %19) #14
  call void @llvm.lifetime.start.p0(i64 47, ptr nonnull %22) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(47) %22, i8 0, i64 47, i1 false)
  store i8 1, ptr %22, align 16, !tbaa !15
  store i8 43, ptr %587, align 1, !tbaa !15
  store i8 %772, ptr %588, align 4, !tbaa !15
  store i8 %773, ptr %589, align 1, !tbaa !15
  store i8 2, ptr %590, align 8, !tbaa !15
  store i8 1, ptr %591, align 1, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %23) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %23, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #14
  store i32 0, ptr %24, align 4, !tbaa !5
  %894 = add nsw i32 %802, 5
  store i32 %894, ptr @test_count, align 4, !tbaa !5
  %895 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %22, i64 noundef 47, i64 noundef 200, ptr noundef nonnull %23, ptr noundef nonnull %24)
  %896 = call zeroext i1 @s2n_result_is_ok(i32 %895)
  br i1 %896, label %921, label %897

897:                                              ; preds = %893
  %898 = tail call ptr @__errno_location() #15
  %899 = load i32, ptr %898, align 4, !tbaa !5
  %900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %901 = call i32 @s2n_print_stacktrace(ptr noundef %900) #14
  %902 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %903 = trunc nuw i8 %902 to i1
  br i1 %903, label %904, label %908

904:                                              ; preds = %897
  %905 = load ptr, ptr @stderr, align 8, !tbaa !9
  %906 = call i32 @fileno(ptr noundef %905) #14
  %907 = call i32 @isatty(i32 noundef %906) #14
  %.not649 = icmp eq i32 %907, 0
  br i1 %.not649, label %908, label %909

908:                                              ; preds = %904, %897
  br label %909

909:                                              ; preds = %904, %908
  %.str.5.sink949 = phi ptr [ @.str.5, %908 ], [ @.str.2, %904 ]
  store i32 %899, ptr %898, align 4, !tbaa !5
  %910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %911 = load i32, ptr @test_count, align 4, !tbaa !5
  %912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call ptr @s2n_strerror(i32 noundef %913, ptr noundef nonnull @.str.4) #14
  %915 = load i32, ptr %912, align 4, !tbaa !5
  %916 = call ptr @s2n_strerror_debug(i32 noundef %915, ptr noundef nonnull @.str.4) #14
  %917 = load i32, ptr %898, align 4, !tbaa !5
  %918 = call ptr @strerror(i32 noundef %917) #14
  %919 = load i32, ptr %898, align 4, !tbaa !5
  %920 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %910, ptr noundef nonnull %.str.5.sink949, i32 noundef %911, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 431, ptr noundef %914, ptr noundef %916, ptr noundef %918, i32 noundef %919) #16
  call void @exit(i32 noundef 1) #17
  unreachable

921:                                              ; preds = %893
  %922 = load i32, ptr @test_count, align 4, !tbaa !5
  %923 = add nsw i32 %922, 1
  store i32 %923, ptr @test_count, align 4, !tbaa !5
  %924 = load i32, ptr %24, align 4, !tbaa !5
  %925 = icmp ugt i32 %924, 2
  br i1 %925, label %950, label %926

926:                                              ; preds = %921
  %927 = tail call ptr @__errno_location() #15
  %928 = load i32, ptr %927, align 4, !tbaa !5
  %929 = load ptr, ptr @stderr, align 8, !tbaa !9
  %930 = call i32 @s2n_print_stacktrace(ptr noundef %929) #14
  %931 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %932 = trunc nuw i8 %931 to i1
  br i1 %932, label %933, label %937

933:                                              ; preds = %926
  %934 = load ptr, ptr @stderr, align 8, !tbaa !9
  %935 = call i32 @fileno(ptr noundef %934) #14
  %936 = call i32 @isatty(i32 noundef %935) #14
  %.not650 = icmp eq i32 %936, 0
  br i1 %.not650, label %937, label %938

937:                                              ; preds = %933, %926
  br label %938

938:                                              ; preds = %933, %937
  %.str.5.sink960 = phi ptr [ @.str.5, %937 ], [ @.str.2, %933 ]
  store i32 %928, ptr %927, align 4, !tbaa !5
  %939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %940 = load i32, ptr @test_count, align 4, !tbaa !5
  %941 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %942 = load i32, ptr %941, align 4, !tbaa !5
  %943 = call ptr @s2n_strerror(i32 noundef %942, ptr noundef nonnull @.str.4) #14
  %944 = load i32, ptr %941, align 4, !tbaa !5
  %945 = call ptr @s2n_strerror_debug(i32 noundef %944, ptr noundef nonnull @.str.4) #14
  %946 = load i32, ptr %927, align 4, !tbaa !5
  %947 = call ptr @strerror(i32 noundef %946) #14
  %948 = load i32, ptr %927, align 4, !tbaa !5
  %949 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %939, ptr noundef nonnull %.str.5.sink960, i32 noundef %940, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 433, ptr noundef %943, ptr noundef %945, ptr noundef %947, i32 noundef %948) #16
  call void @exit(i32 noundef 1) #17
  unreachable

950:                                              ; preds = %921
  %951 = add nsw i32 %922, 2
  store i32 %951, ptr @test_count, align 4, !tbaa !5
  %952 = load i8, ptr %592, align 1, !tbaa !15
  %953 = zext i8 %952 to i32
  %954 = load i8, ptr %609, align 1, !tbaa !15
  %955 = sext i8 %954 to i32
  %956 = icmp eq i32 %953, %955
  br i1 %956, label %981, label %957

957:                                              ; preds = %950
  %958 = tail call ptr @__errno_location() #15
  %959 = load i32, ptr %958, align 4, !tbaa !5
  %960 = load ptr, ptr @stderr, align 8, !tbaa !9
  %961 = call i32 @s2n_print_stacktrace(ptr noundef %960) #14
  %962 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %963 = trunc nuw i8 %962 to i1
  br i1 %963, label %964, label %968

964:                                              ; preds = %957
  %965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %966 = call i32 @fileno(ptr noundef %965) #14
  %967 = call i32 @isatty(i32 noundef %966) #14
  %.not651 = icmp eq i32 %967, 0
  br i1 %.not651, label %968, label %969

968:                                              ; preds = %964, %957
  br label %969

969:                                              ; preds = %964, %968
  %.str.5.sink971 = phi ptr [ @.str.5, %968 ], [ @.str.2, %964 ]
  store i32 %959, ptr %958, align 4, !tbaa !5
  %970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %971 = load i32, ptr @test_count, align 4, !tbaa !5
  %972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call ptr @s2n_strerror(i32 noundef %973, ptr noundef nonnull @.str.4) #14
  %975 = load i32, ptr %972, align 4, !tbaa !5
  %976 = call ptr @s2n_strerror_debug(i32 noundef %975, ptr noundef nonnull @.str.4) #14
  %977 = load i32, ptr %958, align 4, !tbaa !5
  %978 = call ptr @strerror(i32 noundef %977) #14
  %979 = load i32, ptr %958, align 4, !tbaa !5
  %980 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %970, ptr noundef nonnull %.str.5.sink971, i32 noundef %971, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 434, ptr noundef %974, ptr noundef %976, ptr noundef %978, i32 noundef %979) #16
  call void @exit(i32 noundef 1) #17
  unreachable

981:                                              ; preds = %950
  %982 = add nsw i32 %922, 3
  store i32 %982, ptr @test_count, align 4, !tbaa !5
  %983 = load i8, ptr %593, align 2, !tbaa !15
  %984 = zext i8 %983 to i32
  %985 = load i8, ptr %865, align 1, !tbaa !15
  %986 = sext i8 %985 to i32
  %987 = icmp eq i32 %984, %986
  br i1 %987, label %1012, label %988

988:                                              ; preds = %981
  %989 = tail call ptr @__errno_location() #15
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %992 = call i32 @s2n_print_stacktrace(ptr noundef %991) #14
  %993 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %994 = trunc nuw i8 %993 to i1
  br i1 %994, label %995, label %999

995:                                              ; preds = %988
  %996 = load ptr, ptr @stderr, align 8, !tbaa !9
  %997 = call i32 @fileno(ptr noundef %996) #14
  %998 = call i32 @isatty(i32 noundef %997) #14
  %.not652 = icmp eq i32 %998, 0
  br i1 %.not652, label %999, label %1000

999:                                              ; preds = %995, %988
  br label %1000

1000:                                             ; preds = %995, %999
  %.str.5.sink982 = phi ptr [ @.str.5, %999 ], [ @.str.2, %995 ]
  store i32 %990, ptr %989, align 4, !tbaa !5
  %1001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1002 = load i32, ptr @test_count, align 4, !tbaa !5
  %1003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call ptr @s2n_strerror(i32 noundef %1004, ptr noundef nonnull @.str.4) #14
  %1006 = load i32, ptr %1003, align 4, !tbaa !5
  %1007 = call ptr @s2n_strerror_debug(i32 noundef %1006, ptr noundef nonnull @.str.4) #14
  %1008 = load i32, ptr %989, align 4, !tbaa !5
  %1009 = call ptr @strerror(i32 noundef %1008) #14
  %1010 = load i32, ptr %989, align 4, !tbaa !5
  %1011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1001, ptr noundef nonnull %.str.5.sink982, i32 noundef %1002, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 435, ptr noundef %1005, ptr noundef %1007, ptr noundef %1009, i32 noundef %1010) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1012:                                             ; preds = %981
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %23) #14
  call void @llvm.lifetime.end.p0(i64 47, ptr nonnull %22) #14
  %1013 = add nuw nsw i64 %.0661, 1
  %exitcond.not = icmp eq i64 %1013, 10
  br i1 %exitcond.not, label %594, label %605, !llvm.loop !27

1014:                                             ; preds = %594
  %1015 = tail call ptr @__errno_location() #15
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = call i32 @s2n_print_stacktrace(ptr noundef %1017) #14
  %1019 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1020 = trunc nuw i8 %1019 to i1
  br i1 %1020, label %1021, label %1025

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

1025:                                             ; preds = %1021, %1014
  br label %1026

1026:                                             ; preds = %1021, %1025
  %.str.5.sink993 = phi ptr [ @.str.5, %1025 ], [ @.str.2, %1021 ]
  store i32 %1016, ptr %1015, align 4, !tbaa !5
  %1027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1028 = load i32, ptr @test_count, align 4, !tbaa !5
  %1029 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1030 = load i32, ptr %1029, align 4, !tbaa !5
  %1031 = call ptr @s2n_strerror(i32 noundef %1030, ptr noundef nonnull @.str.4) #14
  %1032 = load i32, ptr %1029, align 4, !tbaa !5
  %1033 = call ptr @s2n_strerror_debug(i32 noundef %1032, ptr noundef nonnull @.str.4) #14
  %1034 = load i32, ptr %1015, align 4, !tbaa !5
  %1035 = call ptr @strerror(i32 noundef %1034) #14
  %1036 = load i32, ptr %1015, align 4, !tbaa !5
  %1037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1027, ptr noundef nonnull %.str.5.sink993, i32 noundef %1028, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 465, ptr noundef %1031, ptr noundef %1033, ptr noundef %1035, i32 noundef %1036) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1038:                                             ; preds = %594
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %26) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %26, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #14
  store i32 0, ptr %27, align 4, !tbaa !5
  %1039 = add nsw i32 %922, 6
  store i32 %1039, ptr @test_count, align 4, !tbaa !5
  %1040 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %25, i64 noundef 60, i64 noundef 200, ptr noundef nonnull %26, ptr noundef nonnull %27)
  %1041 = call zeroext i1 @s2n_result_is_ok(i32 %1040)
  br i1 %1041, label %1066, label %1042

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

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

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

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

1066:                                             ; preds = %1038
  %1067 = load i32, ptr @test_count, align 4, !tbaa !5
  %1068 = add nsw i32 %1067, 1
  store i32 %1068, ptr @test_count, align 4, !tbaa !5
  %1069 = load i32, ptr %27, align 4, !tbaa !5
  %1070 = icmp ugt i32 %1069, 2
  br i1 %1070, label %1095, label %1071

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

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

1082:                                             ; preds = %1078, %1071
  br label %1083

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

1095:                                             ; preds = %1066
  %1096 = add nsw i32 %1067, 2
  store i32 %1096, ptr @test_count, align 4, !tbaa !5
  %1097 = getelementptr inbounds i8, ptr %26, i64 1
  %1098 = load i8, ptr %1097, align 1, !tbaa !15
  %1099 = zext i8 %1098 to i32
  %1100 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases, i64 8), align 8, !tbaa !16
  %1101 = load i8, ptr %1100, align 1, !tbaa !15
  %1102 = sext i8 %1101 to i32
  %1103 = icmp eq i32 %1099, %1102
  br i1 %1103, label %1128, label %1104

1104:                                             ; preds = %1095
  %1105 = tail call ptr @__errno_location() #15
  %1106 = load i32, ptr %1105, align 4, !tbaa !5
  %1107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1108 = call i32 @s2n_print_stacktrace(ptr noundef %1107) #14
  %1109 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1110 = trunc nuw i8 %1109 to i1
  br i1 %1110, label %1111, label %1115

1111:                                             ; preds = %1104
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = call i32 @fileno(ptr noundef %1112) #14
  %1114 = call i32 @isatty(i32 noundef %1113) #14
  %.not518 = icmp eq i32 %1114, 0
  br i1 %.not518, label %1115, label %1116

1115:                                             ; preds = %1111, %1104
  br label %1116

1116:                                             ; preds = %1111, %1115
  %.str.5.sink1026 = phi ptr [ @.str.5, %1115 ], [ @.str.2, %1111 ]
  store i32 %1106, ptr %1105, align 4, !tbaa !5
  %1117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1118 = load i32, ptr @test_count, align 4, !tbaa !5
  %1119 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1120 = load i32, ptr %1119, align 4, !tbaa !5
  %1121 = call ptr @s2n_strerror(i32 noundef %1120, ptr noundef nonnull @.str.4) #14
  %1122 = load i32, ptr %1119, align 4, !tbaa !5
  %1123 = call ptr @s2n_strerror_debug(i32 noundef %1122, ptr noundef nonnull @.str.4) #14
  %1124 = load i32, ptr %1105, align 4, !tbaa !5
  %1125 = call ptr @strerror(i32 noundef %1124) #14
  %1126 = load i32, ptr %1105, align 4, !tbaa !5
  %1127 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1117, ptr noundef nonnull %.str.5.sink1026, i32 noundef %1118, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 474, ptr noundef %1121, ptr noundef %1123, ptr noundef %1125, i32 noundef %1126) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1128:                                             ; preds = %1095
  %1129 = add nsw i32 %1067, 3
  store i32 %1129, ptr @test_count, align 4, !tbaa !5
  %1130 = getelementptr inbounds i8, ptr %26, i64 2
  %1131 = load i8, ptr %1130, align 2, !tbaa !15
  %1132 = zext i8 %1131 to i32
  %1133 = getelementptr inbounds i8, ptr %1100, i64 1
  %1134 = load i8, ptr %1133, align 1, !tbaa !15
  %1135 = sext i8 %1134 to i32
  %1136 = icmp eq i32 %1132, %1135
  br i1 %1136, label %1161, label %1137

1137:                                             ; preds = %1128
  %1138 = tail call ptr @__errno_location() #15
  %1139 = load i32, ptr %1138, align 4, !tbaa !5
  %1140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1141 = call i32 @s2n_print_stacktrace(ptr noundef %1140) #14
  %1142 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1143 = trunc nuw i8 %1142 to i1
  br i1 %1143, label %1144, label %1148

1144:                                             ; preds = %1137
  %1145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1146 = call i32 @fileno(ptr noundef %1145) #14
  %1147 = call i32 @isatty(i32 noundef %1146) #14
  %.not519 = icmp eq i32 %1147, 0
  br i1 %.not519, label %1148, label %1149

1148:                                             ; preds = %1144, %1137
  br label %1149

1149:                                             ; preds = %1144, %1148
  %.str.5.sink1037 = phi ptr [ @.str.5, %1148 ], [ @.str.2, %1144 ]
  store i32 %1139, ptr %1138, align 4, !tbaa !5
  %1150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1151 = load i32, ptr @test_count, align 4, !tbaa !5
  %1152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  %1154 = call ptr @s2n_strerror(i32 noundef %1153, ptr noundef nonnull @.str.4) #14
  %1155 = load i32, ptr %1152, align 4, !tbaa !5
  %1156 = call ptr @s2n_strerror_debug(i32 noundef %1155, ptr noundef nonnull @.str.4) #14
  %1157 = load i32, ptr %1138, align 4, !tbaa !5
  %1158 = call ptr @strerror(i32 noundef %1157) #14
  %1159 = load i32, ptr %1138, align 4, !tbaa !5
  %1160 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1150, ptr noundef nonnull %.str.5.sink1037, i32 noundef %1151, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 475, ptr noundef %1154, ptr noundef %1156, ptr noundef %1158, i32 noundef %1159) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1161:                                             ; preds = %1128
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %25) #14
  %1162 = getelementptr inbounds i8, ptr %28, i64 4
  %1163 = getelementptr inbounds i8, ptr %28, i64 5
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %28, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 0, ptr %29, align 4, !tbaa !5
  %1164 = add nsw i32 %1067, 4
  store i32 %1164, ptr @test_count, align 4, !tbaa !5
  %1165 = load i8, ptr @__const.main.count_test_cases, align 16, !tbaa !29
  %1166 = zext i8 %1165 to i16
  %1167 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %1166, i64 noundef 200, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %1168 = call zeroext i1 @s2n_result_is_ok(i32 %1167)
  br i1 %1168, label %1193, label %1169

1169:                                             ; preds = %1394, %1367, %1340, %1313, %1286, %1161
  %1170 = tail call ptr @__errno_location() #15
  %1171 = load i32, ptr %1170, align 4, !tbaa !5
  %1172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1173 = call i32 @s2n_print_stacktrace(ptr noundef %1172) #14
  %1174 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1175 = trunc nuw i8 %1174 to i1
  br i1 %1175, label %1176, label %1180

1176:                                             ; preds = %1169
  %1177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1178 = call i32 @fileno(ptr noundef %1177) #14
  %1179 = call i32 @isatty(i32 noundef %1178) #14
  %.not639 = icmp eq i32 %1179, 0
  br i1 %.not639, label %1180, label %1181

1180:                                             ; preds = %1176, %1169
  br label %1181

1181:                                             ; preds = %1176, %1180
  %.str.5.sink1048 = phi ptr [ @.str.5, %1180 ], [ @.str.2, %1176 ]
  store i32 %1171, ptr %1170, align 4, !tbaa !5
  %1182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1183 = load i32, ptr @test_count, align 4, !tbaa !5
  %1184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1185 = load i32, ptr %1184, align 4, !tbaa !5
  %1186 = call ptr @s2n_strerror(i32 noundef %1185, ptr noundef nonnull @.str.4) #14
  %1187 = load i32, ptr %1184, align 4, !tbaa !5
  %1188 = call ptr @s2n_strerror_debug(i32 noundef %1187, ptr noundef nonnull @.str.4) #14
  %1189 = load i32, ptr %1170, align 4, !tbaa !5
  %1190 = call ptr @strerror(i32 noundef %1189) #14
  %1191 = load i32, ptr %1170, align 4, !tbaa !5
  %1192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1182, ptr noundef nonnull %.str.5.sink1048, i32 noundef %1183, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 515, ptr noundef %1186, ptr noundef %1188, ptr noundef %1190, i32 noundef %1191) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1193:                                             ; preds = %1161
  %1194 = load i32, ptr @test_count, align 4, !tbaa !5
  %1195 = add nsw i32 %1194, 1
  store i32 %1195, ptr @test_count, align 4, !tbaa !5
  %1196 = load i32, ptr %29, align 4, !tbaa !5
  %1197 = icmp ugt i32 %1196, 5
  br i1 %1197, label %1222, label %1198

1198:                                             ; preds = %1400, %1373, %1346, %1319, %1292, %1193
  %1199 = tail call ptr @__errno_location() #15
  %1200 = load i32, ptr %1199, align 4, !tbaa !5
  %1201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1202 = call i32 @s2n_print_stacktrace(ptr noundef %1201) #14
  %1203 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1204 = trunc nuw i8 %1203 to i1
  br i1 %1204, label %1205, label %1209

1205:                                             ; preds = %1198
  %1206 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1207 = call i32 @fileno(ptr noundef %1206) #14
  %1208 = call i32 @isatty(i32 noundef %1207) #14
  %.not640 = icmp eq i32 %1208, 0
  br i1 %.not640, label %1209, label %1210

1209:                                             ; preds = %1205, %1198
  br label %1210

1210:                                             ; preds = %1205, %1209
  %.str.5.sink1059 = phi ptr [ @.str.5, %1209 ], [ @.str.2, %1205 ]
  store i32 %1200, ptr %1199, align 4, !tbaa !5
  %1211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1212 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1214, ptr noundef nonnull @.str.4) #14
  %1216 = load i32, ptr %1213, align 4, !tbaa !5
  %1217 = call ptr @s2n_strerror_debug(i32 noundef %1216, ptr noundef nonnull @.str.4) #14
  %1218 = load i32, ptr %1199, align 4, !tbaa !5
  %1219 = call ptr @strerror(i32 noundef %1218) #14
  %1220 = load i32, ptr %1199, align 4, !tbaa !5
  %1221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1211, ptr noundef nonnull %.str.5.sink1059, i32 noundef %1212, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 517, ptr noundef %1215, ptr noundef %1217, ptr noundef %1219, i32 noundef %1220) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1222:                                             ; preds = %1193
  %1223 = add nsw i32 %1194, 2
  store i32 %1223, ptr @test_count, align 4, !tbaa !5
  %1224 = load i8, ptr %1162, align 4, !tbaa !15
  %1225 = zext i8 %1224 to i32
  %1226 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 8), align 8, !tbaa !31
  %1227 = load i8, ptr %1226, align 1, !tbaa !15
  %1228 = sext i8 %1227 to i32
  %1229 = icmp eq i32 %1225, %1228
  br i1 %1229, label %1254, label %1230

1230:                                             ; preds = %1405, %1378, %1351, %1324, %1297, %1222
  %1231 = tail call ptr @__errno_location() #15
  %1232 = load i32, ptr %1231, align 4, !tbaa !5
  %1233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1234 = call i32 @s2n_print_stacktrace(ptr noundef %1233) #14
  %1235 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1236 = trunc nuw i8 %1235 to i1
  br i1 %1236, label %1237, label %1241

1237:                                             ; preds = %1230
  %1238 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1239 = call i32 @fileno(ptr noundef %1238) #14
  %1240 = call i32 @isatty(i32 noundef %1239) #14
  %.not641 = icmp eq i32 %1240, 0
  br i1 %.not641, label %1241, label %1242

1241:                                             ; preds = %1237, %1230
  br label %1242

1242:                                             ; preds = %1237, %1241
  %.str.5.sink1070 = phi ptr [ @.str.5, %1241 ], [ @.str.2, %1237 ]
  store i32 %1232, ptr %1231, align 4, !tbaa !5
  %1243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1244 = load i32, ptr @test_count, align 4, !tbaa !5
  %1245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1246 = load i32, ptr %1245, align 4, !tbaa !5
  %1247 = call ptr @s2n_strerror(i32 noundef %1246, ptr noundef nonnull @.str.4) #14
  %1248 = load i32, ptr %1245, align 4, !tbaa !5
  %1249 = call ptr @s2n_strerror_debug(i32 noundef %1248, ptr noundef nonnull @.str.4) #14
  %1250 = load i32, ptr %1231, align 4, !tbaa !5
  %1251 = call ptr @strerror(i32 noundef %1250) #14
  %1252 = load i32, ptr %1231, align 4, !tbaa !5
  %1253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1243, ptr noundef nonnull %.str.5.sink1070, i32 noundef %1244, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 518, ptr noundef %1247, ptr noundef %1249, ptr noundef %1251, i32 noundef %1252) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1254:                                             ; preds = %1222
  %1255 = add nsw i32 %1194, 3
  store i32 %1255, ptr @test_count, align 4, !tbaa !5
  %1256 = load i8, ptr %1163, align 1, !tbaa !15
  %1257 = zext i8 %1256 to i32
  %1258 = getelementptr inbounds i8, ptr %1226, i64 1
  %1259 = load i8, ptr %1258, align 1, !tbaa !15
  %1260 = sext i8 %1259 to i32
  %1261 = icmp eq i32 %1257, %1260
  br i1 %1261, label %1286, label %1262

1262:                                             ; preds = %1413, %1386, %1359, %1332, %1305, %1254
  %1263 = tail call ptr @__errno_location() #15
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  %1265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1266 = call i32 @s2n_print_stacktrace(ptr noundef %1265) #14
  %1267 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1268 = trunc nuw i8 %1267 to i1
  br i1 %1268, label %1269, label %1273

1269:                                             ; preds = %1262
  %1270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1271 = call i32 @fileno(ptr noundef %1270) #14
  %1272 = call i32 @isatty(i32 noundef %1271) #14
  %.not642 = icmp eq i32 %1272, 0
  br i1 %.not642, label %1273, label %1274

1273:                                             ; preds = %1269, %1262
  br label %1274

1274:                                             ; preds = %1269, %1273
  %.str.5.sink1081 = phi ptr [ @.str.5, %1273 ], [ @.str.2, %1269 ]
  store i32 %1264, ptr %1263, 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 nonnull @.str.4) #14
  %1280 = load i32, ptr %1277, align 4, !tbaa !5
  %1281 = call ptr @s2n_strerror_debug(i32 noundef %1280, ptr noundef nonnull @.str.4) #14
  %1282 = load i32, ptr %1263, align 4, !tbaa !5
  %1283 = call ptr @strerror(i32 noundef %1282) #14
  %1284 = load i32, ptr %1263, align 4, !tbaa !5
  %1285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1275, ptr noundef nonnull %.str.5.sink1081, i32 noundef %1276, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 519, ptr noundef %1279, ptr noundef %1281, ptr noundef %1283, i32 noundef %1284) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1286:                                             ; preds = %1254
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %28, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 0, ptr %29, align 4, !tbaa !5
  %1287 = add nsw i32 %1194, 4
  store i32 %1287, ptr @test_count, align 4, !tbaa !5
  %1288 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 16), align 16, !tbaa !29
  %1289 = zext i8 %1288 to i16
  %1290 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %1289, i64 noundef 200, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %1291 = call zeroext i1 @s2n_result_is_ok(i32 %1290)
  br i1 %1291, label %1292, label %1169

1292:                                             ; preds = %1286
  %1293 = load i32, ptr @test_count, align 4, !tbaa !5
  %1294 = add nsw i32 %1293, 1
  store i32 %1294, ptr @test_count, align 4, !tbaa !5
  %1295 = load i32, ptr %29, align 4, !tbaa !5
  %1296 = icmp ugt i32 %1295, 5
  br i1 %1296, label %1297, label %1198

1297:                                             ; preds = %1292
  %1298 = add nsw i32 %1293, 2
  store i32 %1298, ptr @test_count, align 4, !tbaa !5
  %1299 = load i8, ptr %1162, align 4, !tbaa !15
  %1300 = zext i8 %1299 to i32
  %1301 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 24), align 8, !tbaa !31
  %1302 = load i8, ptr %1301, align 1, !tbaa !15
  %1303 = sext i8 %1302 to i32
  %1304 = icmp eq i32 %1300, %1303
  br i1 %1304, label %1305, label %1230

1305:                                             ; preds = %1297
  %1306 = add nsw i32 %1293, 3
  store i32 %1306, ptr @test_count, align 4, !tbaa !5
  %1307 = load i8, ptr %1163, align 1, !tbaa !15
  %1308 = zext i8 %1307 to i32
  %1309 = getelementptr inbounds i8, ptr %1301, i64 1
  %1310 = load i8, ptr %1309, align 1, !tbaa !15
  %1311 = sext i8 %1310 to i32
  %1312 = icmp eq i32 %1308, %1311
  br i1 %1312, label %1313, label %1262

1313:                                             ; preds = %1305
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %28, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 0, ptr %29, align 4, !tbaa !5
  %1314 = add nsw i32 %1293, 4
  store i32 %1314, ptr @test_count, align 4, !tbaa !5
  %1315 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 32), align 16, !tbaa !29
  %1316 = zext i8 %1315 to i16
  %1317 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %1316, i64 noundef 200, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %1318 = call zeroext i1 @s2n_result_is_ok(i32 %1317)
  br i1 %1318, label %1319, label %1169

1319:                                             ; preds = %1313
  %1320 = load i32, ptr @test_count, align 4, !tbaa !5
  %1321 = add nsw i32 %1320, 1
  store i32 %1321, ptr @test_count, align 4, !tbaa !5
  %1322 = load i32, ptr %29, align 4, !tbaa !5
  %1323 = icmp ugt i32 %1322, 5
  br i1 %1323, label %1324, label %1198

1324:                                             ; preds = %1319
  %1325 = add nsw i32 %1320, 2
  store i32 %1325, ptr @test_count, align 4, !tbaa !5
  %1326 = load i8, ptr %1162, align 4, !tbaa !15
  %1327 = zext i8 %1326 to i32
  %1328 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 40), align 8, !tbaa !31
  %1329 = load i8, ptr %1328, align 1, !tbaa !15
  %1330 = sext i8 %1329 to i32
  %1331 = icmp eq i32 %1327, %1330
  br i1 %1331, label %1332, label %1230

1332:                                             ; preds = %1324
  %1333 = add nsw i32 %1320, 3
  store i32 %1333, ptr @test_count, align 4, !tbaa !5
  %1334 = load i8, ptr %1163, align 1, !tbaa !15
  %1335 = zext i8 %1334 to i32
  %1336 = getelementptr inbounds i8, ptr %1328, i64 1
  %1337 = load i8, ptr %1336, align 1, !tbaa !15
  %1338 = sext i8 %1337 to i32
  %1339 = icmp eq i32 %1335, %1338
  br i1 %1339, label %1340, label %1262

1340:                                             ; preds = %1332
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %28, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 0, ptr %29, align 4, !tbaa !5
  %1341 = add nsw i32 %1320, 4
  store i32 %1341, ptr @test_count, align 4, !tbaa !5
  %1342 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 48), align 16, !tbaa !29
  %1343 = zext i8 %1342 to i16
  %1344 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %1343, i64 noundef 200, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %1345 = call zeroext i1 @s2n_result_is_ok(i32 %1344)
  br i1 %1345, label %1346, label %1169

1346:                                             ; preds = %1340
  %1347 = load i32, ptr @test_count, align 4, !tbaa !5
  %1348 = add nsw i32 %1347, 1
  store i32 %1348, ptr @test_count, align 4, !tbaa !5
  %1349 = load i32, ptr %29, align 4, !tbaa !5
  %1350 = icmp ugt i32 %1349, 5
  br i1 %1350, label %1351, label %1198

1351:                                             ; preds = %1346
  %1352 = add nsw i32 %1347, 2
  store i32 %1352, ptr @test_count, align 4, !tbaa !5
  %1353 = load i8, ptr %1162, align 4, !tbaa !15
  %1354 = zext i8 %1353 to i32
  %1355 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 56), align 8, !tbaa !31
  %1356 = load i8, ptr %1355, align 1, !tbaa !15
  %1357 = sext i8 %1356 to i32
  %1358 = icmp eq i32 %1354, %1357
  br i1 %1358, label %1359, label %1230

1359:                                             ; preds = %1351
  %1360 = add nsw i32 %1347, 3
  store i32 %1360, ptr @test_count, align 4, !tbaa !5
  %1361 = load i8, ptr %1163, align 1, !tbaa !15
  %1362 = zext i8 %1361 to i32
  %1363 = getelementptr inbounds i8, ptr %1355, i64 1
  %1364 = load i8, ptr %1363, align 1, !tbaa !15
  %1365 = sext i8 %1364 to i32
  %1366 = icmp eq i32 %1362, %1365
  br i1 %1366, label %1367, label %1262

1367:                                             ; preds = %1359
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %28, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 0, ptr %29, align 4, !tbaa !5
  %1368 = add nsw i32 %1347, 4
  store i32 %1368, ptr @test_count, align 4, !tbaa !5
  %1369 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 64), align 16, !tbaa !29
  %1370 = zext i8 %1369 to i16
  %1371 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %1370, i64 noundef 200, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %1372 = call zeroext i1 @s2n_result_is_ok(i32 %1371)
  br i1 %1372, label %1373, label %1169

1373:                                             ; preds = %1367
  %1374 = load i32, ptr @test_count, align 4, !tbaa !5
  %1375 = add nsw i32 %1374, 1
  store i32 %1375, ptr @test_count, align 4, !tbaa !5
  %1376 = load i32, ptr %29, align 4, !tbaa !5
  %1377 = icmp ugt i32 %1376, 5
  br i1 %1377, label %1378, label %1198

1378:                                             ; preds = %1373
  %1379 = add nsw i32 %1374, 2
  store i32 %1379, ptr @test_count, align 4, !tbaa !5
  %1380 = load i8, ptr %1162, align 4, !tbaa !15
  %1381 = zext i8 %1380 to i32
  %1382 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 72), align 8, !tbaa !31
  %1383 = load i8, ptr %1382, align 1, !tbaa !15
  %1384 = sext i8 %1383 to i32
  %1385 = icmp eq i32 %1381, %1384
  br i1 %1385, label %1386, label %1230

1386:                                             ; preds = %1378
  %1387 = add nsw i32 %1374, 3
  store i32 %1387, ptr @test_count, align 4, !tbaa !5
  %1388 = load i8, ptr %1163, align 1, !tbaa !15
  %1389 = zext i8 %1388 to i32
  %1390 = getelementptr inbounds i8, ptr %1382, i64 1
  %1391 = load i8, ptr %1390, align 1, !tbaa !15
  %1392 = sext i8 %1391 to i32
  %1393 = icmp eq i32 %1389, %1392
  br i1 %1393, label %1394, label %1262

1394:                                             ; preds = %1386
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %28, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 0, ptr %29, align 4, !tbaa !5
  %1395 = add nsw i32 %1374, 4
  store i32 %1395, ptr @test_count, align 4, !tbaa !5
  %1396 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 80), align 16, !tbaa !29
  %1397 = zext i8 %1396 to i16
  %1398 = call i32 @s2n_test_ja4_hash_from_cipher_count(i16 noundef zeroext %1397, i64 noundef 200, ptr noundef nonnull %28, ptr noundef nonnull %29)
  %1399 = call zeroext i1 @s2n_result_is_ok(i32 %1398)
  br i1 %1399, label %1400, label %1169

1400:                                             ; preds = %1394
  %1401 = load i32, ptr @test_count, align 4, !tbaa !5
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr @test_count, align 4, !tbaa !5
  %1403 = load i32, ptr %29, align 4, !tbaa !5
  %1404 = icmp ugt i32 %1403, 5
  br i1 %1404, label %1405, label %1198

1405:                                             ; preds = %1400
  %1406 = add nsw i32 %1401, 2
  store i32 %1406, ptr @test_count, align 4, !tbaa !5
  %1407 = load i8, ptr %1162, align 4, !tbaa !15
  %1408 = zext i8 %1407 to i32
  %1409 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.count_test_cases, i64 88), align 8, !tbaa !31
  %1410 = load i8, ptr %1409, align 1, !tbaa !15
  %1411 = sext i8 %1410 to i32
  %1412 = icmp eq i32 %1408, %1411
  br i1 %1412, label %1413, label %1230

1413:                                             ; preds = %1405
  %1414 = add nsw i32 %1401, 3
  store i32 %1414, ptr @test_count, align 4, !tbaa !5
  %1415 = load i8, ptr %1163, align 1, !tbaa !15
  %1416 = zext i8 %1415 to i32
  %1417 = getelementptr inbounds i8, ptr %1409, i64 1
  %1418 = load i8, ptr %1417, align 1, !tbaa !15
  %1419 = sext i8 %1418 to i32
  %1420 = icmp eq i32 %1416, %1419
  br i1 %1420, label %1421, label %1262

1421:                                             ; preds = %1413
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 53, ptr nonnull %30) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(53) %30, ptr noundef nonnull align 16 dereferenceable(53) @__const.main.client_hello_bytes, i64 53, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %31) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %31, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #14
  store i32 0, ptr %32, align 4, !tbaa !5
  %1422 = add nsw i32 %1401, 5
  store i32 %1422, ptr @test_count, align 4, !tbaa !5
  %1423 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %30, i64 noundef 53, i64 noundef 200, ptr noundef nonnull %31, ptr noundef nonnull %32)
  %1424 = call zeroext i1 @s2n_result_is_ok(i32 %1423)
  br i1 %1424, label %1449, label %1425

1425:                                             ; preds = %1421
  %1426 = tail call ptr @__errno_location() #15
  %1427 = load i32, ptr %1426, align 4, !tbaa !5
  %1428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1429 = call i32 @s2n_print_stacktrace(ptr noundef %1428) #14
  %1430 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1431 = trunc nuw i8 %1430 to i1
  br i1 %1431, label %1432, label %1436

1432:                                             ; preds = %1425
  %1433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1434 = call i32 @fileno(ptr noundef %1433) #14
  %1435 = call i32 @isatty(i32 noundef %1434) #14
  %.not520 = icmp eq i32 %1435, 0
  br i1 %.not520, label %1436, label %1437

1436:                                             ; preds = %1432, %1425
  br label %1437

1437:                                             ; preds = %1432, %1436
  %.str.5.sink1092 = phi ptr [ @.str.5, %1436 ], [ @.str.2, %1432 ]
  store i32 %1427, ptr %1426, align 4, !tbaa !5
  %1438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1439 = load i32, ptr @test_count, align 4, !tbaa !5
  %1440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call ptr @s2n_strerror(i32 noundef %1441, ptr noundef nonnull @.str.4) #14
  %1443 = load i32, ptr %1440, align 4, !tbaa !5
  %1444 = call ptr @s2n_strerror_debug(i32 noundef %1443, ptr noundef nonnull @.str.4) #14
  %1445 = load i32, ptr %1426, align 4, !tbaa !5
  %1446 = call ptr @strerror(i32 noundef %1445) #14
  %1447 = load i32, ptr %1426, align 4, !tbaa !5
  %1448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1438, ptr noundef nonnull %.str.5.sink1092, i32 noundef %1439, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 548, ptr noundef %1442, ptr noundef %1444, ptr noundef %1446, i32 noundef %1447) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1449:                                             ; preds = %1421
  %1450 = load i32, ptr @test_count, align 4, !tbaa !5
  %1451 = add nsw i32 %1450, 1
  store i32 %1451, ptr @test_count, align 4, !tbaa !5
  %1452 = load i32, ptr %32, align 4, !tbaa !5
  %1453 = icmp ugt i32 %1452, 5
  br i1 %1453, label %1478, label %1454

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

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

1465:                                             ; preds = %1461, %1454
  br label %1466

1466:                                             ; preds = %1461, %1465
  %.str.5.sink1103 = phi ptr [ @.str.5, %1465 ], [ @.str.2, %1461 ]
  store i32 %1456, ptr %1455, align 4, !tbaa !5
  %1467 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1468 = load i32, ptr @test_count, align 4, !tbaa !5
  %1469 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1470 = load i32, ptr %1469, align 4, !tbaa !5
  %1471 = call ptr @s2n_strerror(i32 noundef %1470, ptr noundef nonnull @.str.4) #14
  %1472 = load i32, ptr %1469, align 4, !tbaa !5
  %1473 = call ptr @s2n_strerror_debug(i32 noundef %1472, ptr noundef nonnull @.str.4) #14
  %1474 = load i32, ptr %1455, align 4, !tbaa !5
  %1475 = call ptr @strerror(i32 noundef %1474) #14
  %1476 = load i32, ptr %1455, align 4, !tbaa !5
  %1477 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1467, ptr noundef nonnull %.str.5.sink1103, i32 noundef %1468, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 550, ptr noundef %1471, ptr noundef %1473, ptr noundef %1475, i32 noundef %1476) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1478:                                             ; preds = %1449
  %1479 = add nsw i32 %1450, 2
  store i32 %1479, ptr @test_count, align 4, !tbaa !5
  %1480 = getelementptr inbounds i8, ptr %31, i64 4
  %1481 = load i8, ptr %1480, align 4, !tbaa !15
  %1482 = icmp eq i8 %1481, 48
  br i1 %1482, label %1507, label %1483

1483:                                             ; preds = %1478
  %1484 = tail call ptr @__errno_location() #15
  %1485 = load i32, ptr %1484, align 4, !tbaa !5
  %1486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1487 = call i32 @s2n_print_stacktrace(ptr noundef %1486) #14
  %1488 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1489 = trunc nuw i8 %1488 to i1
  br i1 %1489, label %1490, label %1494

1490:                                             ; preds = %1483
  %1491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1492 = call i32 @fileno(ptr noundef %1491) #14
  %1493 = call i32 @isatty(i32 noundef %1492) #14
  %.not522 = icmp eq i32 %1493, 0
  br i1 %.not522, label %1494, label %1495

1494:                                             ; preds = %1490, %1483
  br label %1495

1495:                                             ; preds = %1490, %1494
  %.str.5.sink1114 = phi ptr [ @.str.5, %1494 ], [ @.str.2, %1490 ]
  store i32 %1485, ptr %1484, align 4, !tbaa !5
  %1496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1497 = load i32, ptr @test_count, align 4, !tbaa !5
  %1498 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1499 = load i32, ptr %1498, align 4, !tbaa !5
  %1500 = call ptr @s2n_strerror(i32 noundef %1499, ptr noundef nonnull @.str.4) #14
  %1501 = load i32, ptr %1498, align 4, !tbaa !5
  %1502 = call ptr @s2n_strerror_debug(i32 noundef %1501, ptr noundef nonnull @.str.4) #14
  %1503 = load i32, ptr %1484, align 4, !tbaa !5
  %1504 = call ptr @strerror(i32 noundef %1503) #14
  %1505 = load i32, ptr %1484, align 4, !tbaa !5
  %1506 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1496, ptr noundef nonnull %.str.5.sink1114, i32 noundef %1497, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.1, i32 noundef 551, ptr noundef %1500, ptr noundef %1502, ptr noundef %1504, i32 noundef %1505) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1507:                                             ; preds = %1478
  %1508 = add nsw i32 %1450, 3
  store i32 %1508, ptr @test_count, align 4, !tbaa !5
  %1509 = getelementptr inbounds i8, ptr %31, i64 5
  %1510 = load i8, ptr %1509, align 1, !tbaa !15
  %1511 = icmp eq i8 %1510, 49
  br i1 %1511, label %1536, label %1512

1512:                                             ; preds = %1507
  %1513 = tail call ptr @__errno_location() #15
  %1514 = load i32, ptr %1513, align 4, !tbaa !5
  %1515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1516 = call i32 @s2n_print_stacktrace(ptr noundef %1515) #14
  %1517 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1518 = trunc nuw i8 %1517 to i1
  br i1 %1518, label %1519, label %1523

1519:                                             ; preds = %1512
  %1520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1521 = call i32 @fileno(ptr noundef %1520) #14
  %1522 = call i32 @isatty(i32 noundef %1521) #14
  %.not523 = icmp eq i32 %1522, 0
  br i1 %.not523, label %1523, label %1524

1523:                                             ; preds = %1519, %1512
  br label %1524

1524:                                             ; preds = %1519, %1523
  %.str.5.sink1125 = phi ptr [ @.str.5, %1523 ], [ @.str.2, %1519 ]
  store i32 %1514, ptr %1513, align 4, !tbaa !5
  %1525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1526 = load i32, ptr @test_count, align 4, !tbaa !5
  %1527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1528 = load i32, ptr %1527, align 4, !tbaa !5
  %1529 = call ptr @s2n_strerror(i32 noundef %1528, ptr noundef nonnull @.str.4) #14
  %1530 = load i32, ptr %1527, align 4, !tbaa !5
  %1531 = call ptr @s2n_strerror_debug(i32 noundef %1530, ptr noundef nonnull @.str.4) #14
  %1532 = load i32, ptr %1513, align 4, !tbaa !5
  %1533 = call ptr @strerror(i32 noundef %1532) #14
  %1534 = load i32, ptr %1513, align 4, !tbaa !5
  %1535 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1525, ptr noundef nonnull %.str.5.sink1125, i32 noundef %1526, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.1, i32 noundef 552, ptr noundef %1529, ptr noundef %1531, ptr noundef %1533, i32 noundef %1534) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1536:                                             ; preds = %1507
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %31) #14
  call void @llvm.lifetime.end.p0(i64 53, ptr nonnull %30) #14
  %1537 = getelementptr inbounds i8, ptr %33, i64 6
  %1538 = getelementptr inbounds i8, ptr %33, i64 7
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %33, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #14
  store i32 0, ptr %34, align 4, !tbaa !5
  %1539 = add nsw i32 %1450, 4
  store i32 %1539, ptr @test_count, align 4, !tbaa !5
  %1540 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %1166, i64 noundef 200, ptr noundef nonnull %33, ptr noundef nonnull %34)
  %1541 = call zeroext i1 @s2n_result_is_ok(i32 %1540)
  br i1 %1541, label %1566, label %1542

1542:                                             ; preds = %1749, %1726, %1703, %1680, %1657, %1536
  %1543 = tail call ptr @__errno_location() #15
  %1544 = load i32, ptr %1543, align 4, !tbaa !5
  %1545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1546 = call i32 @s2n_print_stacktrace(ptr noundef %1545) #14
  %1547 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1548 = trunc nuw i8 %1547 to i1
  br i1 %1548, label %1549, label %1553

1549:                                             ; preds = %1542
  %1550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1551 = call i32 @fileno(ptr noundef %1550) #14
  %1552 = call i32 @isatty(i32 noundef %1551) #14
  %.not635 = icmp eq i32 %1552, 0
  br i1 %.not635, label %1553, label %1554

1553:                                             ; preds = %1549, %1542
  br label %1554

1554:                                             ; preds = %1549, %1553
  %.str.5.sink1136 = phi ptr [ @.str.5, %1553 ], [ @.str.2, %1549 ]
  store i32 %1544, ptr %1543, align 4, !tbaa !5
  %1555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1556 = load i32, ptr @test_count, align 4, !tbaa !5
  %1557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1558 = load i32, ptr %1557, align 4, !tbaa !5
  %1559 = call ptr @s2n_strerror(i32 noundef %1558, ptr noundef nonnull @.str.4) #14
  %1560 = load i32, ptr %1557, align 4, !tbaa !5
  %1561 = call ptr @s2n_strerror_debug(i32 noundef %1560, ptr noundef nonnull @.str.4) #14
  %1562 = load i32, ptr %1543, align 4, !tbaa !5
  %1563 = call ptr @strerror(i32 noundef %1562) #14
  %1564 = load i32, ptr %1543, align 4, !tbaa !5
  %1565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1555, ptr noundef nonnull %.str.5.sink1136, i32 noundef %1556, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 568, ptr noundef %1559, ptr noundef %1561, ptr noundef %1563, i32 noundef %1564) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1566:                                             ; preds = %1536
  %1567 = load i32, ptr @test_count, align 4, !tbaa !5
  %1568 = add nsw i32 %1567, 1
  store i32 %1568, ptr @test_count, align 4, !tbaa !5
  %1569 = load i32, ptr %34, align 4, !tbaa !5
  %1570 = icmp ugt i32 %1569, 7
  br i1 %1570, label %1595, label %1571

1571:                                             ; preds = %1753, %1730, %1707, %1684, %1661, %1566
  %1572 = tail call ptr @__errno_location() #15
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  %1574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1575 = call i32 @s2n_print_stacktrace(ptr noundef %1574) #14
  %1576 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1577 = trunc nuw i8 %1576 to i1
  br i1 %1577, label %1578, label %1582

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

1582:                                             ; preds = %1578, %1571
  br label %1583

1583:                                             ; preds = %1578, %1582
  %.str.5.sink1147 = phi ptr [ @.str.5, %1582 ], [ @.str.2, %1578 ]
  store i32 %1573, ptr %1572, align 4, !tbaa !5
  %1584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1585 = load i32, ptr @test_count, align 4, !tbaa !5
  %1586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1587 = load i32, ptr %1586, align 4, !tbaa !5
  %1588 = call ptr @s2n_strerror(i32 noundef %1587, ptr noundef nonnull @.str.4) #14
  %1589 = load i32, ptr %1586, align 4, !tbaa !5
  %1590 = call ptr @s2n_strerror_debug(i32 noundef %1589, ptr noundef nonnull @.str.4) #14
  %1591 = load i32, ptr %1572, align 4, !tbaa !5
  %1592 = call ptr @strerror(i32 noundef %1591) #14
  %1593 = load i32, ptr %1572, align 4, !tbaa !5
  %1594 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1584, ptr noundef nonnull %.str.5.sink1147, i32 noundef %1585, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 570, ptr noundef %1588, ptr noundef %1590, ptr noundef %1592, i32 noundef %1593) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1595:                                             ; preds = %1566
  %1596 = add nsw i32 %1567, 2
  store i32 %1596, ptr @test_count, align 4, !tbaa !5
  %1597 = load i8, ptr %1537, align 2, !tbaa !15
  %1598 = zext i8 %1597 to i32
  %1599 = load i8, ptr %1226, align 1, !tbaa !15
  %1600 = sext i8 %1599 to i32
  %1601 = icmp eq i32 %1598, %1600
  br i1 %1601, label %1626, label %1602

1602:                                             ; preds = %1758, %1735, %1712, %1689, %1666, %1595
  %1603 = tail call ptr @__errno_location() #15
  %1604 = load i32, ptr %1603, align 4, !tbaa !5
  %1605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1606 = call i32 @s2n_print_stacktrace(ptr noundef %1605) #14
  %1607 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1608 = trunc nuw i8 %1607 to i1
  br i1 %1608, label %1609, label %1613

1609:                                             ; preds = %1602
  %1610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1611 = call i32 @fileno(ptr noundef %1610) #14
  %1612 = call i32 @isatty(i32 noundef %1611) #14
  %.not637 = icmp eq i32 %1612, 0
  br i1 %.not637, label %1613, label %1614

1613:                                             ; preds = %1609, %1602
  br label %1614

1614:                                             ; preds = %1609, %1613
  %.str.5.sink1158 = phi ptr [ @.str.5, %1613 ], [ @.str.2, %1609 ]
  store i32 %1604, ptr %1603, align 4, !tbaa !5
  %1615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1616 = load i32, ptr @test_count, align 4, !tbaa !5
  %1617 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1618 = load i32, ptr %1617, align 4, !tbaa !5
  %1619 = call ptr @s2n_strerror(i32 noundef %1618, ptr noundef nonnull @.str.4) #14
  %1620 = load i32, ptr %1617, align 4, !tbaa !5
  %1621 = call ptr @s2n_strerror_debug(i32 noundef %1620, ptr noundef nonnull @.str.4) #14
  %1622 = load i32, ptr %1603, align 4, !tbaa !5
  %1623 = call ptr @strerror(i32 noundef %1622) #14
  %1624 = load i32, ptr %1603, align 4, !tbaa !5
  %1625 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1615, ptr noundef nonnull %.str.5.sink1158, i32 noundef %1616, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 571, ptr noundef %1619, ptr noundef %1621, ptr noundef %1623, i32 noundef %1624) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1626:                                             ; preds = %1595
  %1627 = add nsw i32 %1567, 3
  store i32 %1627, ptr @test_count, align 4, !tbaa !5
  %1628 = load i8, ptr %1538, align 1, !tbaa !15
  %1629 = zext i8 %1628 to i32
  %1630 = load i8, ptr %1258, align 1, !tbaa !15
  %1631 = sext i8 %1630 to i32
  %1632 = icmp eq i32 %1629, %1631
  br i1 %1632, label %1657, label %1633

1633:                                             ; preds = %1765, %1742, %1719, %1696, %1673, %1626
  %1634 = tail call ptr @__errno_location() #15
  %1635 = load i32, ptr %1634, align 4, !tbaa !5
  %1636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1637 = call i32 @s2n_print_stacktrace(ptr noundef %1636) #14
  %1638 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1639 = trunc nuw i8 %1638 to i1
  br i1 %1639, label %1640, label %1644

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

1644:                                             ; preds = %1640, %1633
  br label %1645

1645:                                             ; preds = %1640, %1644
  %.str.5.sink1169 = phi ptr [ @.str.5, %1644 ], [ @.str.2, %1640 ]
  store i32 %1635, ptr %1634, align 4, !tbaa !5
  %1646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1647 = load i32, ptr @test_count, align 4, !tbaa !5
  %1648 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1649 = load i32, ptr %1648, align 4, !tbaa !5
  %1650 = call ptr @s2n_strerror(i32 noundef %1649, ptr noundef nonnull @.str.4) #14
  %1651 = load i32, ptr %1648, align 4, !tbaa !5
  %1652 = call ptr @s2n_strerror_debug(i32 noundef %1651, ptr noundef nonnull @.str.4) #14
  %1653 = load i32, ptr %1634, align 4, !tbaa !5
  %1654 = call ptr @strerror(i32 noundef %1653) #14
  %1655 = load i32, ptr %1634, align 4, !tbaa !5
  %1656 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1646, ptr noundef nonnull %.str.5.sink1169, i32 noundef %1647, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.1, i32 noundef 572, ptr noundef %1650, ptr noundef %1652, ptr noundef %1654, i32 noundef %1655) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1657:                                             ; preds = %1626
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %33, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #14
  store i32 0, ptr %34, align 4, !tbaa !5
  %1658 = add nsw i32 %1567, 4
  store i32 %1658, ptr @test_count, align 4, !tbaa !5
  %1659 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %1289, i64 noundef 200, ptr noundef nonnull %33, ptr noundef nonnull %34)
  %1660 = call zeroext i1 @s2n_result_is_ok(i32 %1659)
  br i1 %1660, label %1661, label %1542

1661:                                             ; preds = %1657
  %1662 = load i32, ptr @test_count, align 4, !tbaa !5
  %1663 = add nsw i32 %1662, 1
  store i32 %1663, ptr @test_count, align 4, !tbaa !5
  %1664 = load i32, ptr %34, align 4, !tbaa !5
  %1665 = icmp ugt i32 %1664, 7
  br i1 %1665, label %1666, label %1571

1666:                                             ; preds = %1661
  %1667 = add nsw i32 %1662, 2
  store i32 %1667, ptr @test_count, align 4, !tbaa !5
  %1668 = load i8, ptr %1537, align 2, !tbaa !15
  %1669 = zext i8 %1668 to i32
  %1670 = load i8, ptr %1301, align 1, !tbaa !15
  %1671 = sext i8 %1670 to i32
  %1672 = icmp eq i32 %1669, %1671
  br i1 %1672, label %1673, label %1602

1673:                                             ; preds = %1666
  %1674 = add nsw i32 %1662, 3
  store i32 %1674, ptr @test_count, align 4, !tbaa !5
  %1675 = load i8, ptr %1538, align 1, !tbaa !15
  %1676 = zext i8 %1675 to i32
  %1677 = load i8, ptr %1309, align 1, !tbaa !15
  %1678 = sext i8 %1677 to i32
  %1679 = icmp eq i32 %1676, %1678
  br i1 %1679, label %1680, label %1633

1680:                                             ; preds = %1673
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %33, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #14
  store i32 0, ptr %34, align 4, !tbaa !5
  %1681 = add nsw i32 %1662, 4
  store i32 %1681, ptr @test_count, align 4, !tbaa !5
  %1682 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %1316, i64 noundef 200, ptr noundef nonnull %33, ptr noundef nonnull %34)
  %1683 = call zeroext i1 @s2n_result_is_ok(i32 %1682)
  br i1 %1683, label %1684, label %1542

1684:                                             ; preds = %1680
  %1685 = load i32, ptr @test_count, align 4, !tbaa !5
  %1686 = add nsw i32 %1685, 1
  store i32 %1686, ptr @test_count, align 4, !tbaa !5
  %1687 = load i32, ptr %34, align 4, !tbaa !5
  %1688 = icmp ugt i32 %1687, 7
  br i1 %1688, label %1689, label %1571

1689:                                             ; preds = %1684
  %1690 = add nsw i32 %1685, 2
  store i32 %1690, ptr @test_count, align 4, !tbaa !5
  %1691 = load i8, ptr %1537, align 2, !tbaa !15
  %1692 = zext i8 %1691 to i32
  %1693 = load i8, ptr %1328, align 1, !tbaa !15
  %1694 = sext i8 %1693 to i32
  %1695 = icmp eq i32 %1692, %1694
  br i1 %1695, label %1696, label %1602

1696:                                             ; preds = %1689
  %1697 = add nsw i32 %1685, 3
  store i32 %1697, ptr @test_count, align 4, !tbaa !5
  %1698 = load i8, ptr %1538, align 1, !tbaa !15
  %1699 = zext i8 %1698 to i32
  %1700 = load i8, ptr %1336, align 1, !tbaa !15
  %1701 = sext i8 %1700 to i32
  %1702 = icmp eq i32 %1699, %1701
  br i1 %1702, label %1703, label %1633

1703:                                             ; preds = %1696
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %33, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #14
  store i32 0, ptr %34, align 4, !tbaa !5
  %1704 = add nsw i32 %1685, 4
  store i32 %1704, ptr @test_count, align 4, !tbaa !5
  %1705 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %1343, i64 noundef 200, ptr noundef nonnull %33, ptr noundef nonnull %34)
  %1706 = call zeroext i1 @s2n_result_is_ok(i32 %1705)
  br i1 %1706, label %1707, label %1542

1707:                                             ; preds = %1703
  %1708 = load i32, ptr @test_count, align 4, !tbaa !5
  %1709 = add nsw i32 %1708, 1
  store i32 %1709, ptr @test_count, align 4, !tbaa !5
  %1710 = load i32, ptr %34, align 4, !tbaa !5
  %1711 = icmp ugt i32 %1710, 7
  br i1 %1711, label %1712, label %1571

1712:                                             ; preds = %1707
  %1713 = add nsw i32 %1708, 2
  store i32 %1713, ptr @test_count, align 4, !tbaa !5
  %1714 = load i8, ptr %1537, align 2, !tbaa !15
  %1715 = zext i8 %1714 to i32
  %1716 = load i8, ptr %1355, align 1, !tbaa !15
  %1717 = sext i8 %1716 to i32
  %1718 = icmp eq i32 %1715, %1717
  br i1 %1718, label %1719, label %1602

1719:                                             ; preds = %1712
  %1720 = add nsw i32 %1708, 3
  store i32 %1720, ptr @test_count, align 4, !tbaa !5
  %1721 = load i8, ptr %1538, align 1, !tbaa !15
  %1722 = zext i8 %1721 to i32
  %1723 = load i8, ptr %1363, align 1, !tbaa !15
  %1724 = sext i8 %1723 to i32
  %1725 = icmp eq i32 %1722, %1724
  br i1 %1725, label %1726, label %1633

1726:                                             ; preds = %1719
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %33, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #14
  store i32 0, ptr %34, align 4, !tbaa !5
  %1727 = add nsw i32 %1708, 4
  store i32 %1727, ptr @test_count, align 4, !tbaa !5
  %1728 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %1370, i64 noundef 200, ptr noundef nonnull %33, ptr noundef nonnull %34)
  %1729 = call zeroext i1 @s2n_result_is_ok(i32 %1728)
  br i1 %1729, label %1730, label %1542

1730:                                             ; preds = %1726
  %1731 = load i32, ptr @test_count, align 4, !tbaa !5
  %1732 = add nsw i32 %1731, 1
  store i32 %1732, ptr @test_count, align 4, !tbaa !5
  %1733 = load i32, ptr %34, align 4, !tbaa !5
  %1734 = icmp ugt i32 %1733, 7
  br i1 %1734, label %1735, label %1571

1735:                                             ; preds = %1730
  %1736 = add nsw i32 %1731, 2
  store i32 %1736, ptr @test_count, align 4, !tbaa !5
  %1737 = load i8, ptr %1537, align 2, !tbaa !15
  %1738 = zext i8 %1737 to i32
  %1739 = load i8, ptr %1382, align 1, !tbaa !15
  %1740 = sext i8 %1739 to i32
  %1741 = icmp eq i32 %1738, %1740
  br i1 %1741, label %1742, label %1602

1742:                                             ; preds = %1735
  %1743 = add nsw i32 %1731, 3
  store i32 %1743, ptr @test_count, align 4, !tbaa !5
  %1744 = load i8, ptr %1538, align 1, !tbaa !15
  %1745 = zext i8 %1744 to i32
  %1746 = load i8, ptr %1390, align 1, !tbaa !15
  %1747 = sext i8 %1746 to i32
  %1748 = icmp eq i32 %1745, %1747
  br i1 %1748, label %1749, label %1633

1749:                                             ; preds = %1742
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %33, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #14
  store i32 0, ptr %34, align 4, !tbaa !5
  %1750 = add nsw i32 %1731, 4
  store i32 %1750, ptr @test_count, align 4, !tbaa !5
  %1751 = call i32 @s2n_test_ja4_hash_from_extension_count(i16 noundef zeroext %1397, i64 noundef 200, ptr noundef nonnull %33, ptr noundef nonnull %34)
  %1752 = call zeroext i1 @s2n_result_is_ok(i32 %1751)
  br i1 %1752, label %1753, label %1542

1753:                                             ; preds = %1749
  %1754 = load i32, ptr @test_count, align 4, !tbaa !5
  %1755 = add nsw i32 %1754, 1
  store i32 %1755, ptr @test_count, align 4, !tbaa !5
  %1756 = load i32, ptr %34, align 4, !tbaa !5
  %1757 = icmp ugt i32 %1756, 7
  br i1 %1757, label %1758, label %1571

1758:                                             ; preds = %1753
  %1759 = add nsw i32 %1754, 2
  store i32 %1759, ptr @test_count, align 4, !tbaa !5
  %1760 = load i8, ptr %1537, align 2, !tbaa !15
  %1761 = zext i8 %1760 to i32
  %1762 = load i8, ptr %1409, align 1, !tbaa !15
  %1763 = sext i8 %1762 to i32
  %1764 = icmp eq i32 %1761, %1763
  br i1 %1764, label %1765, label %1602

1765:                                             ; preds = %1758
  %1766 = add nsw i32 %1754, 3
  store i32 %1766, ptr @test_count, align 4, !tbaa !5
  %1767 = load i8, ptr %1538, align 1, !tbaa !15
  %1768 = zext i8 %1767 to i32
  %1769 = load i8, ptr %1417, align 1, !tbaa !15
  %1770 = sext i8 %1769 to i32
  %1771 = icmp eq i32 %1768, %1770
  br i1 %1771, label %1772, label %1633

1772:                                             ; preds = %1765
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 63, ptr nonnull %35) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(63) %35, ptr noundef nonnull align 16 dereferenceable(63) @__const.main.client_hello_bytes.48, i64 63, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %36) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %36, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #14
  store i32 0, ptr %37, align 4, !tbaa !5
  %1773 = add nsw i32 %1754, 5
  store i32 %1773, ptr @test_count, align 4, !tbaa !5
  %1774 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %35, i64 noundef 63, i64 noundef 200, ptr noundef nonnull %36, ptr noundef nonnull %37)
  %1775 = call zeroext i1 @s2n_result_is_ok(i32 %1774)
  br i1 %1775, label %1800, label %1776

1776:                                             ; preds = %1772
  %1777 = tail call ptr @__errno_location() #15
  %1778 = load i32, ptr %1777, align 4, !tbaa !5
  %1779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1780 = call i32 @s2n_print_stacktrace(ptr noundef %1779) #14
  %1781 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1782 = trunc nuw i8 %1781 to i1
  br i1 %1782, label %1783, label %1787

1783:                                             ; preds = %1776
  %1784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1785 = call i32 @fileno(ptr noundef %1784) #14
  %1786 = call i32 @isatty(i32 noundef %1785) #14
  %.not524 = icmp eq i32 %1786, 0
  br i1 %.not524, label %1787, label %1788

1787:                                             ; preds = %1783, %1776
  br label %1788

1788:                                             ; preds = %1783, %1787
  %.str.5.sink1180 = phi ptr [ @.str.5, %1787 ], [ @.str.2, %1783 ]
  store i32 %1778, ptr %1777, align 4, !tbaa !5
  %1789 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1790 = load i32, ptr @test_count, align 4, !tbaa !5
  %1791 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1792 = load i32, ptr %1791, align 4, !tbaa !5
  %1793 = call ptr @s2n_strerror(i32 noundef %1792, ptr noundef nonnull @.str.4) #14
  %1794 = load i32, ptr %1791, align 4, !tbaa !5
  %1795 = call ptr @s2n_strerror_debug(i32 noundef %1794, ptr noundef nonnull @.str.4) #14
  %1796 = load i32, ptr %1777, align 4, !tbaa !5
  %1797 = call ptr @strerror(i32 noundef %1796) #14
  %1798 = load i32, ptr %1777, align 4, !tbaa !5
  %1799 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1789, ptr noundef nonnull %.str.5.sink1180, i32 noundef %1790, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 601, ptr noundef %1793, ptr noundef %1795, ptr noundef %1797, i32 noundef %1798) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1800:                                             ; preds = %1772
  %1801 = load i32, ptr @test_count, align 4, !tbaa !5
  %1802 = add nsw i32 %1801, 1
  store i32 %1802, ptr @test_count, align 4, !tbaa !5
  %1803 = load i32, ptr %37, align 4, !tbaa !5
  %1804 = icmp ugt i32 %1803, 7
  br i1 %1804, label %1829, label %1805

1805:                                             ; preds = %1800
  %1806 = tail call ptr @__errno_location() #15
  %1807 = load i32, ptr %1806, align 4, !tbaa !5
  %1808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1809 = call i32 @s2n_print_stacktrace(ptr noundef %1808) #14
  %1810 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1811 = trunc nuw i8 %1810 to i1
  br i1 %1811, label %1812, label %1816

1812:                                             ; preds = %1805
  %1813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1814 = call i32 @fileno(ptr noundef %1813) #14
  %1815 = call i32 @isatty(i32 noundef %1814) #14
  %.not525 = icmp eq i32 %1815, 0
  br i1 %.not525, label %1816, label %1817

1816:                                             ; preds = %1812, %1805
  br label %1817

1817:                                             ; preds = %1812, %1816
  %.str.5.sink1191 = phi ptr [ @.str.5, %1816 ], [ @.str.2, %1812 ]
  store i32 %1807, ptr %1806, align 4, !tbaa !5
  %1818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1819 = load i32, ptr @test_count, align 4, !tbaa !5
  %1820 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1821 = load i32, ptr %1820, align 4, !tbaa !5
  %1822 = call ptr @s2n_strerror(i32 noundef %1821, ptr noundef nonnull @.str.4) #14
  %1823 = load i32, ptr %1820, align 4, !tbaa !5
  %1824 = call ptr @s2n_strerror_debug(i32 noundef %1823, ptr noundef nonnull @.str.4) #14
  %1825 = load i32, ptr %1806, align 4, !tbaa !5
  %1826 = call ptr @strerror(i32 noundef %1825) #14
  %1827 = load i32, ptr %1806, align 4, !tbaa !5
  %1828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1818, ptr noundef nonnull %.str.5.sink1191, i32 noundef %1819, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 603, ptr noundef %1822, ptr noundef %1824, ptr noundef %1826, i32 noundef %1827) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1829:                                             ; preds = %1800
  %1830 = add nsw i32 %1801, 2
  store i32 %1830, ptr @test_count, align 4, !tbaa !5
  %1831 = getelementptr inbounds i8, ptr %36, i64 6
  %1832 = load i8, ptr %1831, align 2, !tbaa !15
  %1833 = icmp eq i8 %1832, 48
  br i1 %1833, label %1858, label %1834

1834:                                             ; preds = %1829
  %1835 = tail call ptr @__errno_location() #15
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1838 = call i32 @s2n_print_stacktrace(ptr noundef %1837) #14
  %1839 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1840 = trunc nuw i8 %1839 to i1
  br i1 %1840, label %1841, label %1845

1841:                                             ; preds = %1834
  %1842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1843 = call i32 @fileno(ptr noundef %1842) #14
  %1844 = call i32 @isatty(i32 noundef %1843) #14
  %.not526 = icmp eq i32 %1844, 0
  br i1 %.not526, label %1845, label %1846

1845:                                             ; preds = %1841, %1834
  br label %1846

1846:                                             ; preds = %1841, %1845
  %.str.5.sink1202 = phi ptr [ @.str.5, %1845 ], [ @.str.2, %1841 ]
  store i32 %1836, ptr %1835, align 4, !tbaa !5
  %1847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1848 = load i32, ptr @test_count, align 4, !tbaa !5
  %1849 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1850 = load i32, ptr %1849, align 4, !tbaa !5
  %1851 = call ptr @s2n_strerror(i32 noundef %1850, ptr noundef nonnull @.str.4) #14
  %1852 = load i32, ptr %1849, align 4, !tbaa !5
  %1853 = call ptr @s2n_strerror_debug(i32 noundef %1852, ptr noundef nonnull @.str.4) #14
  %1854 = load i32, ptr %1835, align 4, !tbaa !5
  %1855 = call ptr @strerror(i32 noundef %1854) #14
  %1856 = load i32, ptr %1835, align 4, !tbaa !5
  %1857 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1847, ptr noundef nonnull %.str.5.sink1202, i32 noundef %1848, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.1, i32 noundef 604, ptr noundef %1851, ptr noundef %1853, ptr noundef %1855, i32 noundef %1856) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1858:                                             ; preds = %1829
  %1859 = add nsw i32 %1801, 3
  store i32 %1859, ptr @test_count, align 4, !tbaa !5
  %1860 = getelementptr inbounds i8, ptr %36, i64 7
  %1861 = load i8, ptr %1860, align 1, !tbaa !15
  %1862 = icmp eq i8 %1861, 49
  br i1 %1862, label %1887, label %1863

1863:                                             ; preds = %1858
  %1864 = tail call ptr @__errno_location() #15
  %1865 = load i32, ptr %1864, align 4, !tbaa !5
  %1866 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1867 = call i32 @s2n_print_stacktrace(ptr noundef %1866) #14
  %1868 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1869 = trunc nuw i8 %1868 to i1
  br i1 %1869, label %1870, label %1874

1870:                                             ; preds = %1863
  %1871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1872 = call i32 @fileno(ptr noundef %1871) #14
  %1873 = call i32 @isatty(i32 noundef %1872) #14
  %.not527 = icmp eq i32 %1873, 0
  br i1 %.not527, label %1874, label %1875

1874:                                             ; preds = %1870, %1863
  br label %1875

1875:                                             ; preds = %1870, %1874
  %.str.5.sink1213 = phi ptr [ @.str.5, %1874 ], [ @.str.2, %1870 ]
  store i32 %1865, ptr %1864, 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 nonnull @.str.4) #14
  %1881 = load i32, ptr %1878, align 4, !tbaa !5
  %1882 = call ptr @s2n_strerror_debug(i32 noundef %1881, ptr noundef nonnull @.str.4) #14
  %1883 = load i32, ptr %1864, align 4, !tbaa !5
  %1884 = call ptr @strerror(i32 noundef %1883) #14
  %1885 = load i32, ptr %1864, align 4, !tbaa !5
  %1886 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1876, ptr noundef nonnull %.str.5.sink1213, i32 noundef %1877, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 605, ptr noundef %1880, ptr noundef %1882, ptr noundef %1884, i32 noundef %1885) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1887:                                             ; preds = %1858
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 63, ptr nonnull %35) #14
  call void @llvm.lifetime.start.p0(i64 55, ptr nonnull %38) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(55) %38, i8 0, i64 55, i1 false)
  store i8 1, ptr %38, align 16
  %1888 = getelementptr inbounds i8, ptr %38, i64 3
  store i8 51, ptr %1888, align 1
  %1889 = getelementptr inbounds i8, ptr %38, i64 40
  store i8 2, ptr %1889, align 8
  %1890 = getelementptr inbounds i8, ptr %38, i64 43
  store i8 1, ptr %1890, align 1
  %1891 = getelementptr inbounds i8, ptr %38, i64 46
  store i8 8, ptr %1891, align 2
  %1892 = getelementptr inbounds i8, ptr %38, i64 52
  store i8 16, ptr %1892, align 4
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %39) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %39, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #14
  store i32 0, ptr %40, align 4, !tbaa !5
  %1893 = add nsw i32 %1801, 5
  store i32 %1893, ptr @test_count, align 4, !tbaa !5
  %1894 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %38, i64 noundef 55, i64 noundef 200, ptr noundef nonnull %39, ptr noundef nonnull %40)
  %1895 = call zeroext i1 @s2n_result_is_ok(i32 %1894)
  br i1 %1895, label %1920, label %1896

1896:                                             ; preds = %1887
  %1897 = tail call ptr @__errno_location() #15
  %1898 = load i32, ptr %1897, align 4, !tbaa !5
  %1899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1900 = call i32 @s2n_print_stacktrace(ptr noundef %1899) #14
  %1901 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1902 = trunc nuw i8 %1901 to i1
  br i1 %1902, label %1903, label %1907

1903:                                             ; preds = %1896
  %1904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1905 = call i32 @fileno(ptr noundef %1904) #14
  %1906 = call i32 @isatty(i32 noundef %1905) #14
  %.not528 = icmp eq i32 %1906, 0
  br i1 %.not528, label %1907, label %1908

1907:                                             ; preds = %1903, %1896
  br label %1908

1908:                                             ; preds = %1903, %1907
  %.str.5.sink1224 = phi ptr [ @.str.5, %1907 ], [ @.str.2, %1903 ]
  store i32 %1898, ptr %1897, align 4, !tbaa !5
  %1909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1910 = load i32, ptr @test_count, align 4, !tbaa !5
  %1911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1912 = load i32, ptr %1911, align 4, !tbaa !5
  %1913 = call ptr @s2n_strerror(i32 noundef %1912, ptr noundef nonnull @.str.4) #14
  %1914 = load i32, ptr %1911, align 4, !tbaa !5
  %1915 = call ptr @s2n_strerror_debug(i32 noundef %1914, ptr noundef nonnull @.str.4) #14
  %1916 = load i32, ptr %1897, align 4, !tbaa !5
  %1917 = call ptr @strerror(i32 noundef %1916) #14
  %1918 = load i32, ptr %1897, align 4, !tbaa !5
  %1919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1909, ptr noundef nonnull %.str.5.sink1224, i32 noundef %1910, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 630, ptr noundef %1913, ptr noundef %1915, ptr noundef %1917, i32 noundef %1918) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1920:                                             ; preds = %1887
  %1921 = load i32, ptr @test_count, align 4, !tbaa !5
  %1922 = add nsw i32 %1921, 1
  store i32 %1922, ptr @test_count, align 4, !tbaa !5
  %1923 = load i32, ptr %40, align 4, !tbaa !5
  %1924 = icmp ugt i32 %1923, 7
  br i1 %1924, label %1949, label %1925

1925:                                             ; preds = %1920
  %1926 = tail call ptr @__errno_location() #15
  %1927 = load i32, ptr %1926, align 4, !tbaa !5
  %1928 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1929 = call i32 @s2n_print_stacktrace(ptr noundef %1928) #14
  %1930 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1931 = trunc nuw i8 %1930 to i1
  br i1 %1931, label %1932, label %1936

1932:                                             ; preds = %1925
  %1933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1934 = call i32 @fileno(ptr noundef %1933) #14
  %1935 = call i32 @isatty(i32 noundef %1934) #14
  %.not529 = icmp eq i32 %1935, 0
  br i1 %.not529, label %1936, label %1937

1936:                                             ; preds = %1932, %1925
  br label %1937

1937:                                             ; preds = %1932, %1936
  %.str.5.sink1235 = phi ptr [ @.str.5, %1936 ], [ @.str.2, %1932 ]
  store i32 %1927, ptr %1926, 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 nonnull @.str.4) #14
  %1943 = load i32, ptr %1940, align 4, !tbaa !5
  %1944 = call ptr @s2n_strerror_debug(i32 noundef %1943, ptr noundef nonnull @.str.4) #14
  %1945 = load i32, ptr %1926, align 4, !tbaa !5
  %1946 = call ptr @strerror(i32 noundef %1945) #14
  %1947 = load i32, ptr %1926, align 4, !tbaa !5
  %1948 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1938, ptr noundef nonnull %.str.5.sink1235, i32 noundef %1939, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 632, ptr noundef %1942, ptr noundef %1944, ptr noundef %1946, i32 noundef %1947) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1949:                                             ; preds = %1920
  %1950 = add nsw i32 %1921, 2
  store i32 %1950, ptr @test_count, align 4, !tbaa !5
  %1951 = getelementptr inbounds i8, ptr %39, i64 6
  %1952 = load i8, ptr %1951, align 2, !tbaa !15
  %1953 = icmp eq i8 %1952, 48
  br i1 %1953, label %1978, label %1954

1954:                                             ; preds = %1949
  %1955 = tail call ptr @__errno_location() #15
  %1956 = load i32, ptr %1955, align 4, !tbaa !5
  %1957 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1958 = call i32 @s2n_print_stacktrace(ptr noundef %1957) #14
  %1959 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1960 = trunc nuw i8 %1959 to i1
  br i1 %1960, label %1961, label %1965

1961:                                             ; preds = %1954
  %1962 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1963 = call i32 @fileno(ptr noundef %1962) #14
  %1964 = call i32 @isatty(i32 noundef %1963) #14
  %.not530 = icmp eq i32 %1964, 0
  br i1 %.not530, label %1965, label %1966

1965:                                             ; preds = %1961, %1954
  br label %1966

1966:                                             ; preds = %1961, %1965
  %.str.5.sink1246 = phi ptr [ @.str.5, %1965 ], [ @.str.2, %1961 ]
  store i32 %1956, ptr %1955, align 4, !tbaa !5
  %1967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1968 = load i32, ptr @test_count, align 4, !tbaa !5
  %1969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1970 = load i32, ptr %1969, align 4, !tbaa !5
  %1971 = call ptr @s2n_strerror(i32 noundef %1970, ptr noundef nonnull @.str.4) #14
  %1972 = load i32, ptr %1969, align 4, !tbaa !5
  %1973 = call ptr @s2n_strerror_debug(i32 noundef %1972, ptr noundef nonnull @.str.4) #14
  %1974 = load i32, ptr %1955, align 4, !tbaa !5
  %1975 = call ptr @strerror(i32 noundef %1974) #14
  %1976 = load i32, ptr %1955, align 4, !tbaa !5
  %1977 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1967, ptr noundef nonnull %.str.5.sink1246, i32 noundef %1968, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.1, i32 noundef 633, ptr noundef %1971, ptr noundef %1973, ptr noundef %1975, i32 noundef %1976) #16
  call void @exit(i32 noundef 1) #17
  unreachable

1978:                                             ; preds = %1949
  %1979 = add nsw i32 %1921, 3
  store i32 %1979, ptr @test_count, align 4, !tbaa !5
  %1980 = getelementptr inbounds i8, ptr %39, i64 7
  %1981 = load i8, ptr %1980, align 1, !tbaa !15
  %1982 = icmp eq i8 %1981, 50
  br i1 %1982, label %2007, label %1983

1983:                                             ; preds = %1978
  %1984 = tail call ptr @__errno_location() #15
  %1985 = load i32, ptr %1984, align 4, !tbaa !5
  %1986 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1987 = call i32 @s2n_print_stacktrace(ptr noundef %1986) #14
  %1988 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1989 = trunc nuw i8 %1988 to i1
  br i1 %1989, label %1990, label %1994

1990:                                             ; preds = %1983
  %1991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1992 = call i32 @fileno(ptr noundef %1991) #14
  %1993 = call i32 @isatty(i32 noundef %1992) #14
  %.not531 = icmp eq i32 %1993, 0
  br i1 %.not531, label %1994, label %1995

1994:                                             ; preds = %1990, %1983
  br label %1995

1995:                                             ; preds = %1990, %1994
  %.str.5.sink1257 = phi ptr [ @.str.5, %1994 ], [ @.str.2, %1990 ]
  store i32 %1985, ptr %1984, align 4, !tbaa !5
  %1996 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1997 = load i32, ptr @test_count, align 4, !tbaa !5
  %1998 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1999 = load i32, ptr %1998, align 4, !tbaa !5
  %2000 = call ptr @s2n_strerror(i32 noundef %1999, ptr noundef nonnull @.str.4) #14
  %2001 = load i32, ptr %1998, align 4, !tbaa !5
  %2002 = call ptr @s2n_strerror_debug(i32 noundef %2001, ptr noundef nonnull @.str.4) #14
  %2003 = load i32, ptr %1984, align 4, !tbaa !5
  %2004 = call ptr @strerror(i32 noundef %2003) #14
  %2005 = load i32, ptr %1984, align 4, !tbaa !5
  %2006 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1996, ptr noundef nonnull %.str.5.sink1257, i32 noundef %1997, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.1, i32 noundef 634, ptr noundef %2000, ptr noundef %2002, ptr noundef %2004, i32 noundef %2005) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2007:                                             ; preds = %1978
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %39) #14
  call void @llvm.lifetime.end.p0(i64 55, ptr nonnull %38) #14
  call void @llvm.lifetime.start.p0(i64 59, ptr nonnull %41) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(59) %41, ptr noundef nonnull align 16 dereferenceable(59) @__const.main.client_hello_bytes.53, i64 59, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %42) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %42, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #14
  store i32 0, ptr %43, align 4, !tbaa !5
  %2008 = add nsw i32 %1921, 5
  store i32 %2008, ptr @test_count, align 4, !tbaa !5
  %2009 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %41, i64 noundef 59, i64 noundef 200, ptr noundef nonnull %42, ptr noundef nonnull %43)
  %2010 = call zeroext i1 @s2n_result_is_ok(i32 %2009)
  br i1 %2010, label %2035, label %2011

2011:                                             ; preds = %2007
  %2012 = tail call ptr @__errno_location() #15
  %2013 = load i32, ptr %2012, align 4, !tbaa !5
  %2014 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2015 = call i32 @s2n_print_stacktrace(ptr noundef %2014) #14
  %2016 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2017 = trunc nuw i8 %2016 to i1
  br i1 %2017, label %2018, label %2022

2018:                                             ; preds = %2011
  %2019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2020 = call i32 @fileno(ptr noundef %2019) #14
  %2021 = call i32 @isatty(i32 noundef %2020) #14
  %.not532 = icmp eq i32 %2021, 0
  br i1 %.not532, label %2022, label %2023

2022:                                             ; preds = %2018, %2011
  br label %2023

2023:                                             ; preds = %2018, %2022
  %.str.5.sink1268 = phi ptr [ @.str.5, %2022 ], [ @.str.2, %2018 ]
  store i32 %2013, ptr %2012, align 4, !tbaa !5
  %2024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2025 = load i32, ptr @test_count, align 4, !tbaa !5
  %2026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2027 = load i32, ptr %2026, align 4, !tbaa !5
  %2028 = call ptr @s2n_strerror(i32 noundef %2027, ptr noundef nonnull @.str.4) #14
  %2029 = load i32, ptr %2026, align 4, !tbaa !5
  %2030 = call ptr @s2n_strerror_debug(i32 noundef %2029, ptr noundef nonnull @.str.4) #14
  %2031 = load i32, ptr %2012, align 4, !tbaa !5
  %2032 = call ptr @strerror(i32 noundef %2031) #14
  %2033 = load i32, ptr %2012, align 4, !tbaa !5
  %2034 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2024, ptr noundef nonnull %.str.5.sink1268, i32 noundef %2025, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 673, ptr noundef %2028, ptr noundef %2030, ptr noundef %2032, i32 noundef %2033) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2035:                                             ; preds = %2007
  %2036 = load i32, ptr @test_count, align 4, !tbaa !5
  %2037 = add nsw i32 %2036, 1
  store i32 %2037, ptr @test_count, align 4, !tbaa !5
  %2038 = load i32, ptr %43, align 4, !tbaa !5
  %2039 = icmp ugt i32 %2038, 9
  br i1 %2039, label %2064, label %2040

2040:                                             ; preds = %2035
  %2041 = tail call ptr @__errno_location() #15
  %2042 = load i32, ptr %2041, align 4, !tbaa !5
  %2043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2044 = call i32 @s2n_print_stacktrace(ptr noundef %2043) #14
  %2045 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2046 = trunc nuw i8 %2045 to i1
  br i1 %2046, label %2047, label %2051

2047:                                             ; preds = %2040
  %2048 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2049 = call i32 @fileno(ptr noundef %2048) #14
  %2050 = call i32 @isatty(i32 noundef %2049) #14
  %.not533 = icmp eq i32 %2050, 0
  br i1 %.not533, label %2051, label %2052

2051:                                             ; preds = %2047, %2040
  br label %2052

2052:                                             ; preds = %2047, %2051
  %.str.5.sink1279 = phi ptr [ @.str.5, %2051 ], [ @.str.2, %2047 ]
  store i32 %2042, ptr %2041, align 4, !tbaa !5
  %2053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2054 = load i32, ptr @test_count, align 4, !tbaa !5
  %2055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2056 = load i32, ptr %2055, align 4, !tbaa !5
  %2057 = call ptr @s2n_strerror(i32 noundef %2056, ptr noundef nonnull @.str.4) #14
  %2058 = load i32, ptr %2055, align 4, !tbaa !5
  %2059 = call ptr @s2n_strerror_debug(i32 noundef %2058, ptr noundef nonnull @.str.4) #14
  %2060 = load i32, ptr %2041, align 4, !tbaa !5
  %2061 = call ptr @strerror(i32 noundef %2060) #14
  %2062 = load i32, ptr %2041, align 4, !tbaa !5
  %2063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2053, ptr noundef nonnull %.str.5.sink1279, i32 noundef %2054, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 675, ptr noundef %2057, ptr noundef %2059, ptr noundef %2061, i32 noundef %2062) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2064:                                             ; preds = %2035
  %2065 = add nsw i32 %2036, 2
  store i32 %2065, ptr @test_count, align 4, !tbaa !5
  %2066 = getelementptr inbounds i8, ptr %42, i64 8
  %2067 = load i8, ptr %2066, align 8, !tbaa !15
  %2068 = icmp eq i8 %2067, 104
  br i1 %2068, label %2093, label %2069

2069:                                             ; preds = %2064
  %2070 = tail call ptr @__errno_location() #15
  %2071 = load i32, ptr %2070, align 4, !tbaa !5
  %2072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2073 = call i32 @s2n_print_stacktrace(ptr noundef %2072) #14
  %2074 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2075 = trunc nuw i8 %2074 to i1
  br i1 %2075, label %2076, label %2080

2076:                                             ; preds = %2069
  %2077 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2078 = call i32 @fileno(ptr noundef %2077) #14
  %2079 = call i32 @isatty(i32 noundef %2078) #14
  %.not534 = icmp eq i32 %2079, 0
  br i1 %.not534, label %2080, label %2081

2080:                                             ; preds = %2076, %2069
  br label %2081

2081:                                             ; preds = %2076, %2080
  %.str.5.sink1290 = phi ptr [ @.str.5, %2080 ], [ @.str.2, %2076 ]
  store i32 %2071, ptr %2070, align 4, !tbaa !5
  %2082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2083 = load i32, ptr @test_count, align 4, !tbaa !5
  %2084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2085 = load i32, ptr %2084, align 4, !tbaa !5
  %2086 = call ptr @s2n_strerror(i32 noundef %2085, ptr noundef nonnull @.str.4) #14
  %2087 = load i32, ptr %2084, align 4, !tbaa !5
  %2088 = call ptr @s2n_strerror_debug(i32 noundef %2087, ptr noundef nonnull @.str.4) #14
  %2089 = load i32, ptr %2070, align 4, !tbaa !5
  %2090 = call ptr @strerror(i32 noundef %2089) #14
  %2091 = load i32, ptr %2070, align 4, !tbaa !5
  %2092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2082, ptr noundef nonnull %.str.5.sink1290, i32 noundef %2083, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 676, ptr noundef %2086, ptr noundef %2088, ptr noundef %2090, i32 noundef %2091) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2093:                                             ; preds = %2064
  %2094 = add nsw i32 %2036, 3
  store i32 %2094, ptr @test_count, align 4, !tbaa !5
  %2095 = getelementptr inbounds i8, ptr %42, i64 9
  %2096 = load i8, ptr %2095, align 1, !tbaa !15
  %2097 = icmp eq i8 %2096, 50
  br i1 %2097, label %2122, label %2098

2098:                                             ; preds = %2093
  %2099 = tail call ptr @__errno_location() #15
  %2100 = load i32, ptr %2099, align 4, !tbaa !5
  %2101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2102 = call i32 @s2n_print_stacktrace(ptr noundef %2101) #14
  %2103 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2104 = trunc nuw i8 %2103 to i1
  br i1 %2104, label %2105, label %2109

2105:                                             ; preds = %2098
  %2106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2107 = call i32 @fileno(ptr noundef %2106) #14
  %2108 = call i32 @isatty(i32 noundef %2107) #14
  %.not535 = icmp eq i32 %2108, 0
  br i1 %.not535, label %2109, label %2110

2109:                                             ; preds = %2105, %2098
  br label %2110

2110:                                             ; preds = %2105, %2109
  %.str.5.sink1301 = phi ptr [ @.str.5, %2109 ], [ @.str.2, %2105 ]
  store i32 %2100, ptr %2099, align 4, !tbaa !5
  %2111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2112 = load i32, 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 = call ptr @s2n_strerror(i32 noundef %2114, ptr noundef nonnull @.str.4) #14
  %2116 = load i32, ptr %2113, align 4, !tbaa !5
  %2117 = call ptr @s2n_strerror_debug(i32 noundef %2116, ptr noundef nonnull @.str.4) #14
  %2118 = load i32, ptr %2099, align 4, !tbaa !5
  %2119 = call ptr @strerror(i32 noundef %2118) #14
  %2120 = load i32, ptr %2099, align 4, !tbaa !5
  %2121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2111, ptr noundef nonnull %.str.5.sink1301, i32 noundef %2112, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 677, ptr noundef %2115, ptr noundef %2117, ptr noundef %2119, i32 noundef %2120) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2122:                                             ; preds = %2093
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %42) #14
  call void @llvm.lifetime.end.p0(i64 59, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 67, ptr nonnull %44) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(67) %44, ptr noundef nonnull align 16 dereferenceable(67) @__const.main.client_hello_bytes.58, i64 67, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %45) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %45, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #14
  store i32 0, ptr %46, align 4, !tbaa !5
  %2123 = add nsw i32 %2036, 5
  store i32 %2123, ptr @test_count, align 4, !tbaa !5
  %2124 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %44, i64 noundef 67, i64 noundef 200, ptr noundef nonnull %45, ptr noundef nonnull %46)
  %2125 = call zeroext i1 @s2n_result_is_ok(i32 %2124)
  br i1 %2125, label %2150, label %2126

2126:                                             ; preds = %2122
  %2127 = tail call ptr @__errno_location() #15
  %2128 = load i32, ptr %2127, align 4, !tbaa !5
  %2129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2130 = call i32 @s2n_print_stacktrace(ptr noundef %2129) #14
  %2131 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2132 = trunc nuw i8 %2131 to i1
  br i1 %2132, label %2133, label %2137

2133:                                             ; preds = %2126
  %2134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2135 = call i32 @fileno(ptr noundef %2134) #14
  %2136 = call i32 @isatty(i32 noundef %2135) #14
  %.not536 = icmp eq i32 %2136, 0
  br i1 %.not536, label %2137, label %2138

2137:                                             ; preds = %2133, %2126
  br label %2138

2138:                                             ; preds = %2133, %2137
  %.str.5.sink1312 = phi ptr [ @.str.5, %2137 ], [ @.str.2, %2133 ]
  store i32 %2128, ptr %2127, align 4, !tbaa !5
  %2139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2140 = load i32, ptr @test_count, align 4, !tbaa !5
  %2141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2142 = load i32, ptr %2141, align 4, !tbaa !5
  %2143 = call ptr @s2n_strerror(i32 noundef %2142, ptr noundef nonnull @.str.4) #14
  %2144 = load i32, ptr %2141, align 4, !tbaa !5
  %2145 = call ptr @s2n_strerror_debug(i32 noundef %2144, ptr noundef nonnull @.str.4) #14
  %2146 = load i32, ptr %2127, align 4, !tbaa !5
  %2147 = call ptr @strerror(i32 noundef %2146) #14
  %2148 = load i32, ptr %2127, align 4, !tbaa !5
  %2149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2139, ptr noundef nonnull %.str.5.sink1312, i32 noundef %2140, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 705, ptr noundef %2143, ptr noundef %2145, ptr noundef %2147, i32 noundef %2148) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2150:                                             ; preds = %2122
  %2151 = load i32, ptr @test_count, align 4, !tbaa !5
  %2152 = add nsw i32 %2151, 1
  store i32 %2152, ptr @test_count, align 4, !tbaa !5
  %2153 = load i32, ptr %46, align 4, !tbaa !5
  %2154 = icmp ugt i32 %2153, 9
  br i1 %2154, label %2179, label %2155

2155:                                             ; preds = %2150
  %2156 = tail call ptr @__errno_location() #15
  %2157 = load i32, ptr %2156, align 4, !tbaa !5
  %2158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2159 = call i32 @s2n_print_stacktrace(ptr noundef %2158) #14
  %2160 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2161 = trunc nuw i8 %2160 to i1
  br i1 %2161, label %2162, label %2166

2162:                                             ; preds = %2155
  %2163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2164 = call i32 @fileno(ptr noundef %2163) #14
  %2165 = call i32 @isatty(i32 noundef %2164) #14
  %.not537 = icmp eq i32 %2165, 0
  br i1 %.not537, label %2166, label %2167

2166:                                             ; preds = %2162, %2155
  br label %2167

2167:                                             ; preds = %2162, %2166
  %.str.5.sink1323 = phi ptr [ @.str.5, %2166 ], [ @.str.2, %2162 ]
  store i32 %2157, ptr %2156, align 4, !tbaa !5
  %2168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2169 = load i32, ptr @test_count, align 4, !tbaa !5
  %2170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2171 = load i32, ptr %2170, align 4, !tbaa !5
  %2172 = call ptr @s2n_strerror(i32 noundef %2171, ptr noundef nonnull @.str.4) #14
  %2173 = load i32, ptr %2170, align 4, !tbaa !5
  %2174 = call ptr @s2n_strerror_debug(i32 noundef %2173, ptr noundef nonnull @.str.4) #14
  %2175 = load i32, ptr %2156, align 4, !tbaa !5
  %2176 = call ptr @strerror(i32 noundef %2175) #14
  %2177 = load i32, ptr %2156, align 4, !tbaa !5
  %2178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2168, ptr noundef nonnull %.str.5.sink1323, i32 noundef %2169, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 707, ptr noundef %2172, ptr noundef %2174, ptr noundef %2176, i32 noundef %2177) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2179:                                             ; preds = %2150
  %2180 = add nsw i32 %2151, 2
  store i32 %2180, ptr @test_count, align 4, !tbaa !5
  %2181 = getelementptr inbounds i8, ptr %45, i64 8
  %2182 = load i8, ptr %2181, align 8, !tbaa !15
  %2183 = icmp eq i8 %2182, 104
  br i1 %2183, label %2208, label %2184

2184:                                             ; preds = %2179
  %2185 = tail call ptr @__errno_location() #15
  %2186 = load i32, ptr %2185, align 4, !tbaa !5
  %2187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2188 = call i32 @s2n_print_stacktrace(ptr noundef %2187) #14
  %2189 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2190 = trunc nuw i8 %2189 to i1
  br i1 %2190, label %2191, label %2195

2191:                                             ; preds = %2184
  %2192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2193 = call i32 @fileno(ptr noundef %2192) #14
  %2194 = call i32 @isatty(i32 noundef %2193) #14
  %.not538 = icmp eq i32 %2194, 0
  br i1 %.not538, label %2195, label %2196

2195:                                             ; preds = %2191, %2184
  br label %2196

2196:                                             ; preds = %2191, %2195
  %.str.5.sink1334 = phi ptr [ @.str.5, %2195 ], [ @.str.2, %2191 ]
  store i32 %2186, ptr %2185, align 4, !tbaa !5
  %2197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2198 = load i32, ptr @test_count, align 4, !tbaa !5
  %2199 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2200 = load i32, ptr %2199, align 4, !tbaa !5
  %2201 = call ptr @s2n_strerror(i32 noundef %2200, ptr noundef nonnull @.str.4) #14
  %2202 = load i32, ptr %2199, align 4, !tbaa !5
  %2203 = call ptr @s2n_strerror_debug(i32 noundef %2202, ptr noundef nonnull @.str.4) #14
  %2204 = load i32, ptr %2185, align 4, !tbaa !5
  %2205 = call ptr @strerror(i32 noundef %2204) #14
  %2206 = load i32, ptr %2185, align 4, !tbaa !5
  %2207 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2197, ptr noundef nonnull %.str.5.sink1334, i32 noundef %2198, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 708, ptr noundef %2201, ptr noundef %2203, ptr noundef %2205, i32 noundef %2206) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2208:                                             ; preds = %2179
  %2209 = add nsw i32 %2151, 3
  store i32 %2209, ptr @test_count, align 4, !tbaa !5
  %2210 = getelementptr inbounds i8, ptr %45, i64 9
  %2211 = load i8, ptr %2210, align 1, !tbaa !15
  %2212 = icmp eq i8 %2211, 49
  br i1 %2212, label %2237, label %2213

2213:                                             ; preds = %2208
  %2214 = tail call ptr @__errno_location() #15
  %2215 = load i32, ptr %2214, align 4, !tbaa !5
  %2216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2217 = call i32 @s2n_print_stacktrace(ptr noundef %2216) #14
  %2218 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2219 = trunc nuw i8 %2218 to i1
  br i1 %2219, label %2220, label %2224

2220:                                             ; preds = %2213
  %2221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2222 = call i32 @fileno(ptr noundef %2221) #14
  %2223 = call i32 @isatty(i32 noundef %2222) #14
  %.not539 = icmp eq i32 %2223, 0
  br i1 %.not539, label %2224, label %2225

2224:                                             ; preds = %2220, %2213
  br label %2225

2225:                                             ; preds = %2220, %2224
  %.str.5.sink1345 = phi ptr [ @.str.5, %2224 ], [ @.str.2, %2220 ]
  store i32 %2215, ptr %2214, align 4, !tbaa !5
  %2226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2227 = load i32, ptr @test_count, align 4, !tbaa !5
  %2228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2229 = load i32, ptr %2228, align 4, !tbaa !5
  %2230 = call ptr @s2n_strerror(i32 noundef %2229, ptr noundef nonnull @.str.4) #14
  %2231 = load i32, ptr %2228, align 4, !tbaa !5
  %2232 = call ptr @s2n_strerror_debug(i32 noundef %2231, ptr noundef nonnull @.str.4) #14
  %2233 = load i32, ptr %2214, align 4, !tbaa !5
  %2234 = call ptr @strerror(i32 noundef %2233) #14
  %2235 = load i32, ptr %2214, align 4, !tbaa !5
  %2236 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2226, ptr noundef nonnull %.str.5.sink1345, i32 noundef %2227, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 709, ptr noundef %2230, ptr noundef %2232, ptr noundef %2234, i32 noundef %2235) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2237:                                             ; preds = %2208
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %45) #14
  call void @llvm.lifetime.end.p0(i64 67, ptr nonnull %44) #14
  call void @llvm.lifetime.start.p0(i64 55, ptr nonnull %47) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(55) %47, ptr noundef nonnull align 16 dereferenceable(55) @__const.main.client_hello_bytes.61, i64 55, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %48) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %48, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #14
  store i32 0, ptr %49, align 4, !tbaa !5
  %2238 = add nsw i32 %2151, 5
  store i32 %2238, ptr @test_count, align 4, !tbaa !5
  %2239 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %47, i64 noundef 55, i64 noundef 200, ptr noundef nonnull %48, ptr noundef nonnull %49)
  %2240 = call zeroext i1 @s2n_result_is_ok(i32 %2239)
  br i1 %2240, label %2265, label %2241

2241:                                             ; preds = %2237
  %2242 = tail call ptr @__errno_location() #15
  %2243 = load i32, ptr %2242, align 4, !tbaa !5
  %2244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2245 = call i32 @s2n_print_stacktrace(ptr noundef %2244) #14
  %2246 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2247 = trunc nuw i8 %2246 to i1
  br i1 %2247, label %2248, label %2252

2248:                                             ; preds = %2241
  %2249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2250 = call i32 @fileno(ptr noundef %2249) #14
  %2251 = call i32 @isatty(i32 noundef %2250) #14
  %.not540 = icmp eq i32 %2251, 0
  br i1 %.not540, label %2252, label %2253

2252:                                             ; preds = %2248, %2241
  br label %2253

2253:                                             ; preds = %2248, %2252
  %.str.5.sink1356 = phi ptr [ @.str.5, %2252 ], [ @.str.2, %2248 ]
  store i32 %2243, ptr %2242, align 4, !tbaa !5
  %2254 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2255 = load i32, ptr @test_count, align 4, !tbaa !5
  %2256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2257 = load i32, ptr %2256, align 4, !tbaa !5
  %2258 = call ptr @s2n_strerror(i32 noundef %2257, ptr noundef nonnull @.str.4) #14
  %2259 = load i32, ptr %2256, align 4, !tbaa !5
  %2260 = call ptr @s2n_strerror_debug(i32 noundef %2259, ptr noundef nonnull @.str.4) #14
  %2261 = load i32, ptr %2242, align 4, !tbaa !5
  %2262 = call ptr @strerror(i32 noundef %2261) #14
  %2263 = load i32, ptr %2242, align 4, !tbaa !5
  %2264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2254, ptr noundef nonnull %.str.5.sink1356, i32 noundef %2255, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 737, ptr noundef %2258, ptr noundef %2260, ptr noundef %2262, i32 noundef %2263) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2265:                                             ; preds = %2237
  %2266 = load i32, ptr @test_count, align 4, !tbaa !5
  %2267 = add nsw i32 %2266, 1
  store i32 %2267, ptr @test_count, align 4, !tbaa !5
  %2268 = load i32, ptr %49, align 4, !tbaa !5
  %2269 = icmp ugt i32 %2268, 9
  br i1 %2269, label %2294, label %2270

2270:                                             ; preds = %2265
  %2271 = tail call ptr @__errno_location() #15
  %2272 = load i32, ptr %2271, align 4, !tbaa !5
  %2273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2274 = call i32 @s2n_print_stacktrace(ptr noundef %2273) #14
  %2275 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2276 = trunc nuw i8 %2275 to i1
  br i1 %2276, label %2277, label %2281

2277:                                             ; preds = %2270
  %2278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2279 = call i32 @fileno(ptr noundef %2278) #14
  %2280 = call i32 @isatty(i32 noundef %2279) #14
  %.not541 = icmp eq i32 %2280, 0
  br i1 %.not541, label %2281, label %2282

2281:                                             ; preds = %2277, %2270
  br label %2282

2282:                                             ; preds = %2277, %2281
  %.str.5.sink1367 = phi ptr [ @.str.5, %2281 ], [ @.str.2, %2277 ]
  store i32 %2272, ptr %2271, align 4, !tbaa !5
  %2283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2284 = load i32, ptr @test_count, align 4, !tbaa !5
  %2285 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2286 = load i32, ptr %2285, align 4, !tbaa !5
  %2287 = call ptr @s2n_strerror(i32 noundef %2286, ptr noundef nonnull @.str.4) #14
  %2288 = load i32, ptr %2285, align 4, !tbaa !5
  %2289 = call ptr @s2n_strerror_debug(i32 noundef %2288, ptr noundef nonnull @.str.4) #14
  %2290 = load i32, ptr %2271, align 4, !tbaa !5
  %2291 = call ptr @strerror(i32 noundef %2290) #14
  %2292 = load i32, ptr %2271, align 4, !tbaa !5
  %2293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2283, ptr noundef nonnull %.str.5.sink1367, i32 noundef %2284, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 739, ptr noundef %2287, ptr noundef %2289, ptr noundef %2291, i32 noundef %2292) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2294:                                             ; preds = %2265
  %2295 = add nsw i32 %2266, 2
  store i32 %2295, ptr @test_count, align 4, !tbaa !5
  %2296 = getelementptr inbounds i8, ptr %48, i64 8
  %2297 = load i8, ptr %2296, align 8, !tbaa !15
  %2298 = icmp eq i8 %2297, 113
  br i1 %2298, label %2323, label %2299

2299:                                             ; preds = %2294
  %2300 = tail call ptr @__errno_location() #15
  %2301 = load i32, ptr %2300, align 4, !tbaa !5
  %2302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2303 = call i32 @s2n_print_stacktrace(ptr noundef %2302) #14
  %2304 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2305 = trunc nuw i8 %2304 to i1
  br i1 %2305, label %2306, label %2310

2306:                                             ; preds = %2299
  %2307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2308 = call i32 @fileno(ptr noundef %2307) #14
  %2309 = call i32 @isatty(i32 noundef %2308) #14
  %.not542 = icmp eq i32 %2309, 0
  br i1 %.not542, label %2310, label %2311

2310:                                             ; preds = %2306, %2299
  br label %2311

2311:                                             ; preds = %2306, %2310
  %.str.5.sink1378 = phi ptr [ @.str.5, %2310 ], [ @.str.2, %2306 ]
  store i32 %2301, ptr %2300, align 4, !tbaa !5
  %2312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2313 = load i32, ptr @test_count, align 4, !tbaa !5
  %2314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2315 = load i32, ptr %2314, align 4, !tbaa !5
  %2316 = call ptr @s2n_strerror(i32 noundef %2315, ptr noundef nonnull @.str.4) #14
  %2317 = load i32, ptr %2314, align 4, !tbaa !5
  %2318 = call ptr @s2n_strerror_debug(i32 noundef %2317, ptr noundef nonnull @.str.4) #14
  %2319 = load i32, ptr %2300, align 4, !tbaa !5
  %2320 = call ptr @strerror(i32 noundef %2319) #14
  %2321 = load i32, ptr %2300, align 4, !tbaa !5
  %2322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2312, ptr noundef nonnull %.str.5.sink1378, i32 noundef %2313, ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.1, i32 noundef 740, ptr noundef %2316, ptr noundef %2318, ptr noundef %2320, i32 noundef %2321) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2323:                                             ; preds = %2294
  %2324 = add nsw i32 %2266, 3
  store i32 %2324, ptr @test_count, align 4, !tbaa !5
  %2325 = getelementptr inbounds i8, ptr %48, i64 9
  %2326 = load i8, ptr %2325, align 1, !tbaa !15
  %2327 = icmp eq i8 %2326, 113
  br i1 %2327, label %2352, label %2328

2328:                                             ; preds = %2323
  %2329 = tail call ptr @__errno_location() #15
  %2330 = load i32, ptr %2329, align 4, !tbaa !5
  %2331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2332 = call i32 @s2n_print_stacktrace(ptr noundef %2331) #14
  %2333 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2334 = trunc nuw i8 %2333 to i1
  br i1 %2334, label %2335, label %2339

2335:                                             ; preds = %2328
  %2336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2337 = call i32 @fileno(ptr noundef %2336) #14
  %2338 = call i32 @isatty(i32 noundef %2337) #14
  %.not543 = icmp eq i32 %2338, 0
  br i1 %.not543, label %2339, label %2340

2339:                                             ; preds = %2335, %2328
  br label %2340

2340:                                             ; preds = %2335, %2339
  %.str.5.sink1389 = phi ptr [ @.str.5, %2339 ], [ @.str.2, %2335 ]
  store i32 %2330, ptr %2329, 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 nonnull @.str.4) #14
  %2346 = load i32, ptr %2343, align 4, !tbaa !5
  %2347 = call ptr @s2n_strerror_debug(i32 noundef %2346, ptr noundef nonnull @.str.4) #14
  %2348 = load i32, ptr %2329, align 4, !tbaa !5
  %2349 = call ptr @strerror(i32 noundef %2348) #14
  %2350 = load i32, ptr %2329, align 4, !tbaa !5
  %2351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2341, ptr noundef nonnull %.str.5.sink1389, i32 noundef %2342, ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.1, i32 noundef 741, ptr noundef %2345, ptr noundef %2347, ptr noundef %2349, i32 noundef %2350) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2352:                                             ; preds = %2323
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %48) #14
  call void @llvm.lifetime.end.p0(i64 55, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 58, ptr nonnull %50) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(58) %50, ptr noundef nonnull align 16 dereferenceable(58) @__const.main.client_hello_bytes.70, i64 58, i1 false)
  %2353 = getelementptr inbounds i8, ptr %50, i64 54
  %2354 = getelementptr inbounds i8, ptr %50, i64 53
  %2355 = getelementptr inbounds i8, ptr %51, i64 8
  %2356 = getelementptr inbounds i8, ptr %51, i64 9
  %2357 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 8), align 8, !tbaa !32
  %2358 = trunc i64 %2357 to i8
  store i8 %2358, ptr %2354, align 1, !tbaa !15
  %2359 = load i32, ptr @__const.main.test_cases.69, align 16
  store i32 %2359, ptr %2353, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %51) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %51, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #14
  store i32 0, ptr %52, align 4, !tbaa !5
  %2360 = add nsw i32 %2266, 6
  store i32 %2360, ptr @test_count, align 4, !tbaa !5
  %2361 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %50, i64 noundef 58, i64 noundef 200, ptr noundef nonnull %51, ptr noundef nonnull %52)
  %2362 = call zeroext i1 @s2n_result_is_ok(i32 %2361)
  br i1 %2362, label %2387, label %2363

2363:                                             ; preds = %2564, %2536, %2508, %2480, %2352
  %2364 = tail call ptr @__errno_location() #15
  %2365 = load i32, ptr %2364, align 4, !tbaa !5
  %2366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2367 = call i32 @s2n_print_stacktrace(ptr noundef %2366) #14
  %2368 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2369 = trunc nuw i8 %2368 to i1
  br i1 %2369, label %2370, label %2374

2370:                                             ; preds = %2363
  %2371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2372 = call i32 @fileno(ptr noundef %2371) #14
  %2373 = call i32 @isatty(i32 noundef %2372) #14
  %.not631 = icmp eq i32 %2373, 0
  br i1 %.not631, label %2374, label %2375

2374:                                             ; preds = %2370, %2363
  br label %2375

2375:                                             ; preds = %2370, %2374
  %.str.5.sink1400 = phi ptr [ @.str.5, %2374 ], [ @.str.2, %2370 ]
  store i32 %2365, ptr %2364, align 4, !tbaa !5
  %2376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2377 = load i32, ptr @test_count, align 4, !tbaa !5
  %2378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2379 = load i32, ptr %2378, align 4, !tbaa !5
  %2380 = call ptr @s2n_strerror(i32 noundef %2379, ptr noundef nonnull @.str.4) #14
  %2381 = load i32, ptr %2378, align 4, !tbaa !5
  %2382 = call ptr @s2n_strerror_debug(i32 noundef %2381, ptr noundef nonnull @.str.4) #14
  %2383 = load i32, ptr %2364, align 4, !tbaa !5
  %2384 = call ptr @strerror(i32 noundef %2383) #14
  %2385 = load i32, ptr %2364, align 4, !tbaa !5
  %2386 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2376, ptr noundef nonnull %.str.5.sink1400, i32 noundef %2377, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 814, ptr noundef %2380, ptr noundef %2382, ptr noundef %2384, i32 noundef %2385) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2387:                                             ; preds = %2352
  %2388 = load i32, ptr @test_count, align 4, !tbaa !5
  %2389 = add nsw i32 %2388, 1
  store i32 %2389, ptr @test_count, align 4, !tbaa !5
  %2390 = load i32, ptr %52, align 4, !tbaa !5
  %2391 = icmp ugt i32 %2390, 9
  br i1 %2391, label %2416, label %2392

2392:                                             ; preds = %2571, %2543, %2515, %2487, %2387
  %2393 = tail call ptr @__errno_location() #15
  %2394 = load i32, ptr %2393, align 4, !tbaa !5
  %2395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2396 = call i32 @s2n_print_stacktrace(ptr noundef %2395) #14
  %2397 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2398 = trunc nuw i8 %2397 to i1
  br i1 %2398, label %2399, label %2403

2399:                                             ; preds = %2392
  %2400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2401 = call i32 @fileno(ptr noundef %2400) #14
  %2402 = call i32 @isatty(i32 noundef %2401) #14
  %.not632 = icmp eq i32 %2402, 0
  br i1 %.not632, label %2403, label %2404

2403:                                             ; preds = %2399, %2392
  br label %2404

2404:                                             ; preds = %2399, %2403
  %.str.5.sink1411 = phi ptr [ @.str.5, %2403 ], [ @.str.2, %2399 ]
  store i32 %2394, ptr %2393, align 4, !tbaa !5
  %2405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2406 = load i32, ptr @test_count, align 4, !tbaa !5
  %2407 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2408 = load i32, ptr %2407, align 4, !tbaa !5
  %2409 = call ptr @s2n_strerror(i32 noundef %2408, ptr noundef nonnull @.str.4) #14
  %2410 = load i32, ptr %2407, align 4, !tbaa !5
  %2411 = call ptr @s2n_strerror_debug(i32 noundef %2410, ptr noundef nonnull @.str.4) #14
  %2412 = load i32, ptr %2393, align 4, !tbaa !5
  %2413 = call ptr @strerror(i32 noundef %2412) #14
  %2414 = load i32, ptr %2393, align 4, !tbaa !5
  %2415 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2405, ptr noundef nonnull %.str.5.sink1411, i32 noundef %2406, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 816, ptr noundef %2409, ptr noundef %2411, ptr noundef %2413, i32 noundef %2414) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2416:                                             ; preds = %2387
  %2417 = add nsw i32 %2388, 2
  store i32 %2417, ptr @test_count, align 4, !tbaa !5
  %2418 = load i8, ptr %2355, align 8, !tbaa !15
  %2419 = zext i8 %2418 to i32
  %2420 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 16), align 16, !tbaa !35
  %2421 = load i8, ptr %2420, align 1, !tbaa !15
  %2422 = sext i8 %2421 to i32
  %2423 = icmp eq i32 %2419, %2422
  br i1 %2423, label %2448, label %2424

2424:                                             ; preds = %2576, %2548, %2520, %2492, %2416
  %2425 = tail call ptr @__errno_location() #15
  %2426 = load i32, ptr %2425, align 4, !tbaa !5
  %2427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2428 = call i32 @s2n_print_stacktrace(ptr noundef %2427) #14
  %2429 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2430 = trunc nuw i8 %2429 to i1
  br i1 %2430, label %2431, label %2435

2431:                                             ; preds = %2424
  %2432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2433 = call i32 @fileno(ptr noundef %2432) #14
  %2434 = call i32 @isatty(i32 noundef %2433) #14
  %.not633 = icmp eq i32 %2434, 0
  br i1 %.not633, label %2435, label %2436

2435:                                             ; preds = %2431, %2424
  br label %2436

2436:                                             ; preds = %2431, %2435
  %.str.5.sink1422 = phi ptr [ @.str.5, %2435 ], [ @.str.2, %2431 ]
  store i32 %2426, ptr %2425, align 4, !tbaa !5
  %2437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2438 = load i32, ptr @test_count, align 4, !tbaa !5
  %2439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2440 = load i32, ptr %2439, align 4, !tbaa !5
  %2441 = call ptr @s2n_strerror(i32 noundef %2440, ptr noundef nonnull @.str.4) #14
  %2442 = load i32, ptr %2439, align 4, !tbaa !5
  %2443 = call ptr @s2n_strerror_debug(i32 noundef %2442, ptr noundef nonnull @.str.4) #14
  %2444 = load i32, ptr %2425, align 4, !tbaa !5
  %2445 = call ptr @strerror(i32 noundef %2444) #14
  %2446 = load i32, ptr %2425, align 4, !tbaa !5
  %2447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2437, ptr noundef nonnull %.str.5.sink1422, i32 noundef %2438, ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.1, i32 noundef 817, ptr noundef %2441, ptr noundef %2443, ptr noundef %2445, i32 noundef %2446) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2448:                                             ; preds = %2416
  %2449 = add nsw i32 %2388, 3
  store i32 %2449, ptr @test_count, align 4, !tbaa !5
  %2450 = load i8, ptr %2356, align 1, !tbaa !15
  %2451 = zext i8 %2450 to i32
  %2452 = getelementptr inbounds i8, ptr %2420, i64 1
  %2453 = load i8, ptr %2452, align 1, !tbaa !15
  %2454 = sext i8 %2453 to i32
  %2455 = icmp eq i32 %2451, %2454
  br i1 %2455, label %2480, label %2456

2456:                                             ; preds = %2584, %2556, %2528, %2500, %2448
  %2457 = tail call ptr @__errno_location() #15
  %2458 = load i32, ptr %2457, align 4, !tbaa !5
  %2459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2460 = call i32 @s2n_print_stacktrace(ptr noundef %2459) #14
  %2461 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2462 = trunc nuw i8 %2461 to i1
  br i1 %2462, label %2463, label %2467

2463:                                             ; preds = %2456
  %2464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2465 = call i32 @fileno(ptr noundef %2464) #14
  %2466 = call i32 @isatty(i32 noundef %2465) #14
  %.not634 = icmp eq i32 %2466, 0
  br i1 %.not634, label %2467, label %2468

2467:                                             ; preds = %2463, %2456
  br label %2468

2468:                                             ; preds = %2463, %2467
  %.str.5.sink1433 = phi ptr [ @.str.5, %2467 ], [ @.str.2, %2463 ]
  store i32 %2458, ptr %2457, align 4, !tbaa !5
  %2469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2470 = load i32, ptr @test_count, align 4, !tbaa !5
  %2471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2472 = load i32, ptr %2471, align 4, !tbaa !5
  %2473 = call ptr @s2n_strerror(i32 noundef %2472, ptr noundef nonnull @.str.4) #14
  %2474 = load i32, ptr %2471, align 4, !tbaa !5
  %2475 = call ptr @s2n_strerror_debug(i32 noundef %2474, ptr noundef nonnull @.str.4) #14
  %2476 = load i32, ptr %2457, align 4, !tbaa !5
  %2477 = call ptr @strerror(i32 noundef %2476) #14
  %2478 = load i32, ptr %2457, align 4, !tbaa !5
  %2479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2469, ptr noundef nonnull %.str.5.sink1433, i32 noundef %2470, ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.1, i32 noundef 818, ptr noundef %2473, ptr noundef %2475, ptr noundef %2477, i32 noundef %2478) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2480:                                             ; preds = %2448
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %51) #14
  %2481 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 32), align 16, !tbaa !32
  %2482 = trunc i64 %2481 to i8
  store i8 %2482, ptr %2354, align 1, !tbaa !15
  %2483 = load i32, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 24), align 8
  store i32 %2483, ptr %2353, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %51) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %51, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #14
  store i32 0, ptr %52, align 4, !tbaa !5
  %2484 = add nsw i32 %2388, 4
  store i32 %2484, ptr @test_count, align 4, !tbaa !5
  %2485 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %50, i64 noundef 58, i64 noundef 200, ptr noundef nonnull %51, ptr noundef nonnull %52)
  %2486 = call zeroext i1 @s2n_result_is_ok(i32 %2485)
  br i1 %2486, label %2487, label %2363

2487:                                             ; preds = %2480
  %2488 = load i32, ptr @test_count, align 4, !tbaa !5
  %2489 = add nsw i32 %2488, 1
  store i32 %2489, ptr @test_count, align 4, !tbaa !5
  %2490 = load i32, ptr %52, align 4, !tbaa !5
  %2491 = icmp ugt i32 %2490, 9
  br i1 %2491, label %2492, label %2392

2492:                                             ; preds = %2487
  %2493 = add nsw i32 %2488, 2
  store i32 %2493, ptr @test_count, align 4, !tbaa !5
  %2494 = load i8, ptr %2355, align 8, !tbaa !15
  %2495 = zext i8 %2494 to i32
  %2496 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 40), align 8, !tbaa !35
  %2497 = load i8, ptr %2496, align 1, !tbaa !15
  %2498 = sext i8 %2497 to i32
  %2499 = icmp eq i32 %2495, %2498
  br i1 %2499, label %2500, label %2424

2500:                                             ; preds = %2492
  %2501 = add nsw i32 %2488, 3
  store i32 %2501, ptr @test_count, align 4, !tbaa !5
  %2502 = load i8, ptr %2356, align 1, !tbaa !15
  %2503 = zext i8 %2502 to i32
  %2504 = getelementptr inbounds i8, ptr %2496, i64 1
  %2505 = load i8, ptr %2504, align 1, !tbaa !15
  %2506 = sext i8 %2505 to i32
  %2507 = icmp eq i32 %2503, %2506
  br i1 %2507, label %2508, label %2456

2508:                                             ; preds = %2500
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %51) #14
  %2509 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 56), align 8, !tbaa !32
  %2510 = trunc i64 %2509 to i8
  store i8 %2510, ptr %2354, align 1, !tbaa !15
  %2511 = load i32, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 48), align 16
  store i32 %2511, ptr %2353, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %51) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %51, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #14
  store i32 0, ptr %52, align 4, !tbaa !5
  %2512 = add nsw i32 %2488, 4
  store i32 %2512, ptr @test_count, align 4, !tbaa !5
  %2513 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %50, i64 noundef 58, i64 noundef 200, ptr noundef nonnull %51, ptr noundef nonnull %52)
  %2514 = call zeroext i1 @s2n_result_is_ok(i32 %2513)
  br i1 %2514, label %2515, label %2363

2515:                                             ; preds = %2508
  %2516 = load i32, ptr @test_count, align 4, !tbaa !5
  %2517 = add nsw i32 %2516, 1
  store i32 %2517, ptr @test_count, align 4, !tbaa !5
  %2518 = load i32, ptr %52, align 4, !tbaa !5
  %2519 = icmp ugt i32 %2518, 9
  br i1 %2519, label %2520, label %2392

2520:                                             ; preds = %2515
  %2521 = add nsw i32 %2516, 2
  store i32 %2521, ptr @test_count, align 4, !tbaa !5
  %2522 = load i8, ptr %2355, align 8, !tbaa !15
  %2523 = zext i8 %2522 to i32
  %2524 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 64), align 16, !tbaa !35
  %2525 = load i8, ptr %2524, align 1, !tbaa !15
  %2526 = sext i8 %2525 to i32
  %2527 = icmp eq i32 %2523, %2526
  br i1 %2527, label %2528, label %2424

2528:                                             ; preds = %2520
  %2529 = add nsw i32 %2516, 3
  store i32 %2529, ptr @test_count, align 4, !tbaa !5
  %2530 = load i8, ptr %2356, align 1, !tbaa !15
  %2531 = zext i8 %2530 to i32
  %2532 = getelementptr inbounds i8, ptr %2524, i64 1
  %2533 = load i8, ptr %2532, align 1, !tbaa !15
  %2534 = sext i8 %2533 to i32
  %2535 = icmp eq i32 %2531, %2534
  br i1 %2535, label %2536, label %2456

2536:                                             ; preds = %2528
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %51) #14
  %2537 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 80), align 16, !tbaa !32
  %2538 = trunc i64 %2537 to i8
  store i8 %2538, ptr %2354, align 1, !tbaa !15
  %2539 = load i32, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 72), align 8
  store i32 %2539, ptr %2353, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %51) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %51, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #14
  store i32 0, ptr %52, align 4, !tbaa !5
  %2540 = add nsw i32 %2516, 4
  store i32 %2540, ptr @test_count, align 4, !tbaa !5
  %2541 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %50, i64 noundef 58, i64 noundef 200, ptr noundef nonnull %51, ptr noundef nonnull %52)
  %2542 = call zeroext i1 @s2n_result_is_ok(i32 %2541)
  br i1 %2542, label %2543, label %2363

2543:                                             ; preds = %2536
  %2544 = load i32, ptr @test_count, align 4, !tbaa !5
  %2545 = add nsw i32 %2544, 1
  store i32 %2545, ptr @test_count, align 4, !tbaa !5
  %2546 = load i32, ptr %52, align 4, !tbaa !5
  %2547 = icmp ugt i32 %2546, 9
  br i1 %2547, label %2548, label %2392

2548:                                             ; preds = %2543
  %2549 = add nsw i32 %2544, 2
  store i32 %2549, ptr @test_count, align 4, !tbaa !5
  %2550 = load i8, ptr %2355, align 8, !tbaa !15
  %2551 = zext i8 %2550 to i32
  %2552 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 88), align 8, !tbaa !35
  %2553 = load i8, ptr %2552, align 1, !tbaa !15
  %2554 = sext i8 %2553 to i32
  %2555 = icmp eq i32 %2551, %2554
  br i1 %2555, label %2556, label %2424

2556:                                             ; preds = %2548
  %2557 = add nsw i32 %2544, 3
  store i32 %2557, ptr @test_count, align 4, !tbaa !5
  %2558 = load i8, ptr %2356, align 1, !tbaa !15
  %2559 = zext i8 %2558 to i32
  %2560 = getelementptr inbounds i8, ptr %2552, i64 1
  %2561 = load i8, ptr %2560, align 1, !tbaa !15
  %2562 = sext i8 %2561 to i32
  %2563 = icmp eq i32 %2559, %2562
  br i1 %2563, label %2564, label %2456

2564:                                             ; preds = %2556
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %51) #14
  %2565 = load i64, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 104), align 8, !tbaa !32
  %2566 = trunc i64 %2565 to i8
  store i8 %2566, ptr %2354, align 1, !tbaa !15
  %2567 = load i32, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 96), align 16
  store i32 %2567, ptr %2353, align 2
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %51) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %51, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #14
  store i32 0, ptr %52, align 4, !tbaa !5
  %2568 = add nsw i32 %2544, 4
  store i32 %2568, ptr @test_count, align 4, !tbaa !5
  %2569 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %50, i64 noundef 58, i64 noundef 200, ptr noundef nonnull %51, ptr noundef nonnull %52)
  %2570 = call zeroext i1 @s2n_result_is_ok(i32 %2569)
  br i1 %2570, label %2571, label %2363

2571:                                             ; preds = %2564
  %2572 = load i32, ptr @test_count, align 4, !tbaa !5
  %2573 = add nsw i32 %2572, 1
  store i32 %2573, ptr @test_count, align 4, !tbaa !5
  %2574 = load i32, ptr %52, align 4, !tbaa !5
  %2575 = icmp ugt i32 %2574, 9
  br i1 %2575, label %2576, label %2392

2576:                                             ; preds = %2571
  %2577 = add nsw i32 %2572, 2
  store i32 %2577, ptr @test_count, align 4, !tbaa !5
  %2578 = load i8, ptr %2355, align 8, !tbaa !15
  %2579 = zext i8 %2578 to i32
  %2580 = load ptr, ptr getelementptr inbounds (i8, ptr @__const.main.test_cases.69, i64 112), align 16, !tbaa !35
  %2581 = load i8, ptr %2580, align 1, !tbaa !15
  %2582 = sext i8 %2581 to i32
  %2583 = icmp eq i32 %2579, %2582
  br i1 %2583, label %2584, label %2424

2584:                                             ; preds = %2576
  %2585 = add nsw i32 %2572, 3
  store i32 %2585, ptr @test_count, align 4, !tbaa !5
  %2586 = load i8, ptr %2356, align 1, !tbaa !15
  %2587 = zext i8 %2586 to i32
  %2588 = getelementptr inbounds i8, ptr %2580, i64 1
  %2589 = load i8, ptr %2588, align 1, !tbaa !15
  %2590 = sext i8 %2589 to i32
  %2591 = icmp eq i32 %2587, %2590
  br i1 %2591, label %2592, label %2456

2592:                                             ; preds = %2584
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %51) #14
  call void @llvm.lifetime.end.p0(i64 58, ptr nonnull %50) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %53) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %53, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #14
  store i32 0, ptr %54, align 4, !tbaa !5
  %2593 = add nsw i32 %2572, 4
  store i32 %2593, ptr @test_count, align 4, !tbaa !5
  %2594 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %3, i64 noundef 47, i64 noundef 200, ptr noundef nonnull %53, ptr noundef nonnull %54)
  %2595 = call zeroext i1 @s2n_result_is_ok(i32 %2594)
  br i1 %2595, label %2620, label %2596

2596:                                             ; preds = %2592
  %2597 = tail call ptr @__errno_location() #15
  %2598 = load i32, ptr %2597, align 4, !tbaa !5
  %2599 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2600 = call i32 @s2n_print_stacktrace(ptr noundef %2599) #14
  %2601 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2602 = trunc nuw i8 %2601 to i1
  br i1 %2602, label %2603, label %2607

2603:                                             ; preds = %2596
  %2604 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2605 = call i32 @fileno(ptr noundef %2604) #14
  %2606 = call i32 @isatty(i32 noundef %2605) #14
  %.not544 = icmp eq i32 %2606, 0
  br i1 %.not544, label %2607, label %2608

2607:                                             ; preds = %2603, %2596
  br label %2608

2608:                                             ; preds = %2603, %2607
  %.str.5.sink1444 = phi ptr [ @.str.5, %2607 ], [ @.str.2, %2603 ]
  store i32 %2598, ptr %2597, align 4, !tbaa !5
  %2609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2610 = load i32, ptr @test_count, align 4, !tbaa !5
  %2611 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2612 = load i32, ptr %2611, align 4, !tbaa !5
  %2613 = call ptr @s2n_strerror(i32 noundef %2612, ptr noundef nonnull @.str.4) #14
  %2614 = load i32, ptr %2611, align 4, !tbaa !5
  %2615 = call ptr @s2n_strerror_debug(i32 noundef %2614, ptr noundef nonnull @.str.4) #14
  %2616 = load i32, ptr %2597, align 4, !tbaa !5
  %2617 = call ptr @strerror(i32 noundef %2616) #14
  %2618 = load i32, ptr %2597, align 4, !tbaa !5
  %2619 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2609, ptr noundef nonnull %.str.5.sink1444, i32 noundef %2610, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 836, ptr noundef %2613, ptr noundef %2615, ptr noundef %2617, i32 noundef %2618) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2620:                                             ; preds = %2592
  %2621 = load i32, ptr @test_count, align 4, !tbaa !5
  %2622 = add nsw i32 %2621, 1
  store i32 %2622, ptr @test_count, align 4, !tbaa !5
  %2623 = load i32, ptr %54, align 4, !tbaa !5
  %2624 = icmp ugt i32 %2623, 9
  br i1 %2624, label %2649, label %2625

2625:                                             ; preds = %2620
  %2626 = tail call ptr @__errno_location() #15
  %2627 = load i32, ptr %2626, align 4, !tbaa !5
  %2628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2629 = call i32 @s2n_print_stacktrace(ptr noundef %2628) #14
  %2630 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2631 = trunc nuw i8 %2630 to i1
  br i1 %2631, label %2632, label %2636

2632:                                             ; preds = %2625
  %2633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2634 = call i32 @fileno(ptr noundef %2633) #14
  %2635 = call i32 @isatty(i32 noundef %2634) #14
  %.not545 = icmp eq i32 %2635, 0
  br i1 %.not545, label %2636, label %2637

2636:                                             ; preds = %2632, %2625
  br label %2637

2637:                                             ; preds = %2632, %2636
  %.str.5.sink1455 = phi ptr [ @.str.5, %2636 ], [ @.str.2, %2632 ]
  store i32 %2627, ptr %2626, align 4, !tbaa !5
  %2638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2639 = load i32, ptr @test_count, align 4, !tbaa !5
  %2640 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2641 = load i32, ptr %2640, align 4, !tbaa !5
  %2642 = call ptr @s2n_strerror(i32 noundef %2641, ptr noundef nonnull @.str.4) #14
  %2643 = load i32, ptr %2640, align 4, !tbaa !5
  %2644 = call ptr @s2n_strerror_debug(i32 noundef %2643, ptr noundef nonnull @.str.4) #14
  %2645 = load i32, ptr %2626, align 4, !tbaa !5
  %2646 = call ptr @strerror(i32 noundef %2645) #14
  %2647 = load i32, ptr %2626, align 4, !tbaa !5
  %2648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2638, ptr noundef nonnull %.str.5.sink1455, i32 noundef %2639, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 838, ptr noundef %2642, ptr noundef %2644, ptr noundef %2646, i32 noundef %2647) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2649:                                             ; preds = %2620
  %2650 = add nsw i32 %2621, 2
  store i32 %2650, ptr @test_count, align 4, !tbaa !5
  %2651 = getelementptr inbounds i8, ptr %53, i64 8
  %2652 = load i8, ptr %2651, align 8, !tbaa !15
  %2653 = icmp eq i8 %2652, 48
  br i1 %2653, label %2678, label %2654

2654:                                             ; preds = %2649
  %2655 = tail call ptr @__errno_location() #15
  %2656 = load i32, ptr %2655, align 4, !tbaa !5
  %2657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2658 = call i32 @s2n_print_stacktrace(ptr noundef %2657) #14
  %2659 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2660 = trunc nuw i8 %2659 to i1
  br i1 %2660, label %2661, label %2665

2661:                                             ; preds = %2654
  %2662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2663 = call i32 @fileno(ptr noundef %2662) #14
  %2664 = call i32 @isatty(i32 noundef %2663) #14
  %.not546 = icmp eq i32 %2664, 0
  br i1 %.not546, label %2665, label %2666

2665:                                             ; preds = %2661, %2654
  br label %2666

2666:                                             ; preds = %2661, %2665
  %.str.5.sink1466 = phi ptr [ @.str.5, %2665 ], [ @.str.2, %2661 ]
  store i32 %2656, ptr %2655, align 4, !tbaa !5
  %2667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2668 = load i32, ptr @test_count, align 4, !tbaa !5
  %2669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2670 = load i32, ptr %2669, align 4, !tbaa !5
  %2671 = call ptr @s2n_strerror(i32 noundef %2670, ptr noundef nonnull @.str.4) #14
  %2672 = load i32, ptr %2669, align 4, !tbaa !5
  %2673 = call ptr @s2n_strerror_debug(i32 noundef %2672, ptr noundef nonnull @.str.4) #14
  %2674 = load i32, ptr %2655, align 4, !tbaa !5
  %2675 = call ptr @strerror(i32 noundef %2674) #14
  %2676 = load i32, ptr %2655, align 4, !tbaa !5
  %2677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2667, ptr noundef nonnull %.str.5.sink1466, i32 noundef %2668, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.1, i32 noundef 839, ptr noundef %2671, ptr noundef %2673, ptr noundef %2675, i32 noundef %2676) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2678:                                             ; preds = %2649
  %2679 = add nsw i32 %2621, 3
  store i32 %2679, ptr @test_count, align 4, !tbaa !5
  %2680 = getelementptr inbounds i8, ptr %53, i64 9
  %2681 = load i8, ptr %2680, align 1, !tbaa !15
  %2682 = icmp eq i8 %2681, 48
  br i1 %2682, label %2707, label %2683

2683:                                             ; preds = %2678
  %2684 = tail call ptr @__errno_location() #15
  %2685 = load i32, ptr %2684, align 4, !tbaa !5
  %2686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2687 = call i32 @s2n_print_stacktrace(ptr noundef %2686) #14
  %2688 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2689 = trunc nuw i8 %2688 to i1
  br i1 %2689, label %2690, label %2694

2690:                                             ; preds = %2683
  %2691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2692 = call i32 @fileno(ptr noundef %2691) #14
  %2693 = call i32 @isatty(i32 noundef %2692) #14
  %.not547 = icmp eq i32 %2693, 0
  br i1 %.not547, label %2694, label %2695

2694:                                             ; preds = %2690, %2683
  br label %2695

2695:                                             ; preds = %2690, %2694
  %.str.5.sink1477 = phi ptr [ @.str.5, %2694 ], [ @.str.2, %2690 ]
  store i32 %2685, ptr %2684, align 4, !tbaa !5
  %2696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2697 = load i32, ptr @test_count, align 4, !tbaa !5
  %2698 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2699 = load i32, ptr %2698, align 4, !tbaa !5
  %2700 = call ptr @s2n_strerror(i32 noundef %2699, ptr noundef nonnull @.str.4) #14
  %2701 = load i32, ptr %2698, align 4, !tbaa !5
  %2702 = call ptr @s2n_strerror_debug(i32 noundef %2701, ptr noundef nonnull @.str.4) #14
  %2703 = load i32, ptr %2684, align 4, !tbaa !5
  %2704 = call ptr @strerror(i32 noundef %2703) #14
  %2705 = load i32, ptr %2684, align 4, !tbaa !5
  %2706 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2696, ptr noundef nonnull %.str.5.sink1477, i32 noundef %2697, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.1, i32 noundef 840, ptr noundef %2700, ptr noundef %2702, ptr noundef %2704, i32 noundef %2705) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2707:                                             ; preds = %2678
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %53) #14
  call void @llvm.lifetime.start.p0(i64 53, ptr nonnull %55) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(53) %55, ptr noundef nonnull align 16 dereferenceable(53) @__const.main.client_hello_bytes.76, i64 53, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %56) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %56, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #14
  store i32 0, ptr %57, align 4, !tbaa !5
  %2708 = add nsw i32 %2621, 5
  store i32 %2708, ptr @test_count, align 4, !tbaa !5
  %2709 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %55, i64 noundef 53, i64 noundef 200, ptr noundef nonnull %56, ptr noundef nonnull %57)
  %2710 = call zeroext i1 @s2n_result_is_ok(i32 %2709)
  br i1 %2710, label %2735, label %2711

2711:                                             ; preds = %2707
  %2712 = tail call ptr @__errno_location() #15
  %2713 = load i32, ptr %2712, align 4, !tbaa !5
  %2714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2715 = call i32 @s2n_print_stacktrace(ptr noundef %2714) #14
  %2716 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2717 = trunc nuw i8 %2716 to i1
  br i1 %2717, label %2718, label %2722

2718:                                             ; preds = %2711
  %2719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2720 = call i32 @fileno(ptr noundef %2719) #14
  %2721 = call i32 @isatty(i32 noundef %2720) #14
  %.not548 = icmp eq i32 %2721, 0
  br i1 %.not548, label %2722, label %2723

2722:                                             ; preds = %2718, %2711
  br label %2723

2723:                                             ; preds = %2718, %2722
  %.str.5.sink1488 = phi ptr [ @.str.5, %2722 ], [ @.str.2, %2718 ]
  store i32 %2713, ptr %2712, align 4, !tbaa !5
  %2724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2725 = load i32, ptr @test_count, align 4, !tbaa !5
  %2726 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2727 = load i32, ptr %2726, align 4, !tbaa !5
  %2728 = call ptr @s2n_strerror(i32 noundef %2727, ptr noundef nonnull @.str.4) #14
  %2729 = load i32, ptr %2726, align 4, !tbaa !5
  %2730 = call ptr @s2n_strerror_debug(i32 noundef %2729, ptr noundef nonnull @.str.4) #14
  %2731 = load i32, ptr %2712, align 4, !tbaa !5
  %2732 = call ptr @strerror(i32 noundef %2731) #14
  %2733 = load i32, ptr %2712, align 4, !tbaa !5
  %2734 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2724, ptr noundef nonnull %.str.5.sink1488, i32 noundef %2725, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 860, ptr noundef %2728, ptr noundef %2730, ptr noundef %2732, i32 noundef %2733) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2735:                                             ; preds = %2707
  %2736 = load i32, ptr @test_count, align 4, !tbaa !5
  %2737 = add nsw i32 %2736, 1
  store i32 %2737, ptr @test_count, align 4, !tbaa !5
  %2738 = load i32, ptr %57, align 4, !tbaa !5
  %2739 = icmp ugt i32 %2738, 9
  br i1 %2739, label %2764, label %2740

2740:                                             ; preds = %2735
  %2741 = tail call ptr @__errno_location() #15
  %2742 = load i32, ptr %2741, align 4, !tbaa !5
  %2743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2744 = call i32 @s2n_print_stacktrace(ptr noundef %2743) #14
  %2745 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2746 = trunc nuw i8 %2745 to i1
  br i1 %2746, label %2747, label %2751

2747:                                             ; preds = %2740
  %2748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2749 = call i32 @fileno(ptr noundef %2748) #14
  %2750 = call i32 @isatty(i32 noundef %2749) #14
  %.not549 = icmp eq i32 %2750, 0
  br i1 %.not549, label %2751, label %2752

2751:                                             ; preds = %2747, %2740
  br label %2752

2752:                                             ; preds = %2747, %2751
  %.str.5.sink1499 = phi ptr [ @.str.5, %2751 ], [ @.str.2, %2747 ]
  store i32 %2742, ptr %2741, align 4, !tbaa !5
  %2753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2754 = load i32, ptr @test_count, align 4, !tbaa !5
  %2755 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2756 = load i32, ptr %2755, align 4, !tbaa !5
  %2757 = call ptr @s2n_strerror(i32 noundef %2756, ptr noundef nonnull @.str.4) #14
  %2758 = load i32, ptr %2755, align 4, !tbaa !5
  %2759 = call ptr @s2n_strerror_debug(i32 noundef %2758, ptr noundef nonnull @.str.4) #14
  %2760 = load i32, ptr %2741, align 4, !tbaa !5
  %2761 = call ptr @strerror(i32 noundef %2760) #14
  %2762 = load i32, ptr %2741, align 4, !tbaa !5
  %2763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2753, ptr noundef nonnull %.str.5.sink1499, i32 noundef %2754, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 862, ptr noundef %2757, ptr noundef %2759, ptr noundef %2761, i32 noundef %2762) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2764:                                             ; preds = %2735
  %2765 = add nsw i32 %2736, 2
  store i32 %2765, ptr @test_count, align 4, !tbaa !5
  %2766 = getelementptr inbounds i8, ptr %56, i64 8
  %2767 = load i8, ptr %2766, align 8, !tbaa !15
  %2768 = icmp eq i8 %2767, 48
  br i1 %2768, label %2793, label %2769

2769:                                             ; preds = %2764
  %2770 = tail call ptr @__errno_location() #15
  %2771 = load i32, ptr %2770, align 4, !tbaa !5
  %2772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2773 = call i32 @s2n_print_stacktrace(ptr noundef %2772) #14
  %2774 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2775 = trunc nuw i8 %2774 to i1
  br i1 %2775, label %2776, label %2780

2776:                                             ; preds = %2769
  %2777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2778 = call i32 @fileno(ptr noundef %2777) #14
  %2779 = call i32 @isatty(i32 noundef %2778) #14
  %.not550 = icmp eq i32 %2779, 0
  br i1 %.not550, label %2780, label %2781

2780:                                             ; preds = %2776, %2769
  br label %2781

2781:                                             ; preds = %2776, %2780
  %.str.5.sink1510 = phi ptr [ @.str.5, %2780 ], [ @.str.2, %2776 ]
  store i32 %2771, ptr %2770, align 4, !tbaa !5
  %2782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2783 = load i32, ptr @test_count, align 4, !tbaa !5
  %2784 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2785 = load i32, ptr %2784, align 4, !tbaa !5
  %2786 = call ptr @s2n_strerror(i32 noundef %2785, ptr noundef nonnull @.str.4) #14
  %2787 = load i32, ptr %2784, align 4, !tbaa !5
  %2788 = call ptr @s2n_strerror_debug(i32 noundef %2787, ptr noundef nonnull @.str.4) #14
  %2789 = load i32, ptr %2770, align 4, !tbaa !5
  %2790 = call ptr @strerror(i32 noundef %2789) #14
  %2791 = load i32, ptr %2770, align 4, !tbaa !5
  %2792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2782, ptr noundef nonnull %.str.5.sink1510, i32 noundef %2783, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.1, i32 noundef 863, ptr noundef %2786, ptr noundef %2788, ptr noundef %2790, i32 noundef %2791) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2793:                                             ; preds = %2764
  %2794 = add nsw i32 %2736, 3
  store i32 %2794, ptr @test_count, align 4, !tbaa !5
  %2795 = getelementptr inbounds i8, ptr %56, i64 9
  %2796 = load i8, ptr %2795, align 1, !tbaa !15
  %2797 = icmp eq i8 %2796, 48
  br i1 %2797, label %2822, label %2798

2798:                                             ; preds = %2793
  %2799 = tail call ptr @__errno_location() #15
  %2800 = load i32, ptr %2799, align 4, !tbaa !5
  %2801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2802 = call i32 @s2n_print_stacktrace(ptr noundef %2801) #14
  %2803 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2804 = trunc nuw i8 %2803 to i1
  br i1 %2804, label %2805, label %2809

2805:                                             ; preds = %2798
  %2806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2807 = call i32 @fileno(ptr noundef %2806) #14
  %2808 = call i32 @isatty(i32 noundef %2807) #14
  %.not551 = icmp eq i32 %2808, 0
  br i1 %.not551, label %2809, label %2810

2809:                                             ; preds = %2805, %2798
  br label %2810

2810:                                             ; preds = %2805, %2809
  %.str.5.sink1521 = phi ptr [ @.str.5, %2809 ], [ @.str.2, %2805 ]
  store i32 %2800, ptr %2799, align 4, !tbaa !5
  %2811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2812 = load i32, ptr @test_count, align 4, !tbaa !5
  %2813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2814 = load i32, ptr %2813, align 4, !tbaa !5
  %2815 = call ptr @s2n_strerror(i32 noundef %2814, ptr noundef nonnull @.str.4) #14
  %2816 = load i32, ptr %2813, align 4, !tbaa !5
  %2817 = call ptr @s2n_strerror_debug(i32 noundef %2816, ptr noundef nonnull @.str.4) #14
  %2818 = load i32, ptr %2799, align 4, !tbaa !5
  %2819 = call ptr @strerror(i32 noundef %2818) #14
  %2820 = load i32, ptr %2799, align 4, !tbaa !5
  %2821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2811, ptr noundef nonnull %.str.5.sink1521, i32 noundef %2812, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.1, i32 noundef 864, ptr noundef %2815, ptr noundef %2817, ptr noundef %2819, i32 noundef %2820) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2822:                                             ; preds = %2793
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %56) #14
  call void @llvm.lifetime.end.p0(i64 53, ptr nonnull %55) #14
  call void @llvm.lifetime.start.p0(i64 54, ptr nonnull %58) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(54) %58, ptr noundef nonnull align 16 dereferenceable(54) @__const.main.client_hello_bytes.77, i64 54, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %59) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %59, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #14
  store i32 0, ptr %60, align 4, !tbaa !5
  %2823 = add nsw i32 %2736, 5
  store i32 %2823, ptr @test_count, align 4, !tbaa !5
  %2824 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %58, i64 noundef 54, i64 noundef 200, ptr noundef nonnull %59, ptr noundef nonnull %60)
  %2825 = call zeroext i1 @s2n_result_is_ok(i32 %2824)
  br i1 %2825, label %2850, label %2826

2826:                                             ; preds = %2822
  %2827 = tail call ptr @__errno_location() #15
  %2828 = load i32, ptr %2827, align 4, !tbaa !5
  %2829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2830 = call i32 @s2n_print_stacktrace(ptr noundef %2829) #14
  %2831 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2832 = trunc nuw i8 %2831 to i1
  br i1 %2832, label %2833, label %2837

2833:                                             ; preds = %2826
  %2834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2835 = call i32 @fileno(ptr noundef %2834) #14
  %2836 = call i32 @isatty(i32 noundef %2835) #14
  %.not552 = icmp eq i32 %2836, 0
  br i1 %.not552, label %2837, label %2838

2837:                                             ; preds = %2833, %2826
  br label %2838

2838:                                             ; preds = %2833, %2837
  %.str.5.sink1532 = phi ptr [ @.str.5, %2837 ], [ @.str.2, %2833 ]
  store i32 %2828, ptr %2827, align 4, !tbaa !5
  %2839 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2840 = load i32, ptr @test_count, align 4, !tbaa !5
  %2841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2842 = load i32, ptr %2841, align 4, !tbaa !5
  %2843 = call ptr @s2n_strerror(i32 noundef %2842, ptr noundef nonnull @.str.4) #14
  %2844 = load i32, ptr %2841, align 4, !tbaa !5
  %2845 = call ptr @s2n_strerror_debug(i32 noundef %2844, ptr noundef nonnull @.str.4) #14
  %2846 = load i32, ptr %2827, align 4, !tbaa !5
  %2847 = call ptr @strerror(i32 noundef %2846) #14
  %2848 = load i32, ptr %2827, align 4, !tbaa !5
  %2849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2839, ptr noundef nonnull %.str.5.sink1532, i32 noundef %2840, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 885, ptr noundef %2843, ptr noundef %2845, ptr noundef %2847, i32 noundef %2848) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2850:                                             ; preds = %2822
  %2851 = load i32, ptr @test_count, align 4, !tbaa !5
  %2852 = add nsw i32 %2851, 1
  store i32 %2852, ptr @test_count, align 4, !tbaa !5
  %2853 = load i32, ptr %60, align 4, !tbaa !5
  %2854 = icmp ugt i32 %2853, 9
  br i1 %2854, label %2879, label %2855

2855:                                             ; preds = %2850
  %2856 = tail call ptr @__errno_location() #15
  %2857 = load i32, ptr %2856, align 4, !tbaa !5
  %2858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2859 = call i32 @s2n_print_stacktrace(ptr noundef %2858) #14
  %2860 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2861 = trunc nuw i8 %2860 to i1
  br i1 %2861, label %2862, label %2866

2862:                                             ; preds = %2855
  %2863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2864 = call i32 @fileno(ptr noundef %2863) #14
  %2865 = call i32 @isatty(i32 noundef %2864) #14
  %.not553 = icmp eq i32 %2865, 0
  br i1 %.not553, label %2866, label %2867

2866:                                             ; preds = %2862, %2855
  br label %2867

2867:                                             ; preds = %2862, %2866
  %.str.5.sink1543 = phi ptr [ @.str.5, %2866 ], [ @.str.2, %2862 ]
  store i32 %2857, ptr %2856, align 4, !tbaa !5
  %2868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2869 = load i32, ptr @test_count, align 4, !tbaa !5
  %2870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2871 = load i32, ptr %2870, align 4, !tbaa !5
  %2872 = call ptr @s2n_strerror(i32 noundef %2871, ptr noundef nonnull @.str.4) #14
  %2873 = load i32, ptr %2870, align 4, !tbaa !5
  %2874 = call ptr @s2n_strerror_debug(i32 noundef %2873, ptr noundef nonnull @.str.4) #14
  %2875 = load i32, ptr %2856, align 4, !tbaa !5
  %2876 = call ptr @strerror(i32 noundef %2875) #14
  %2877 = load i32, ptr %2856, align 4, !tbaa !5
  %2878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2868, ptr noundef nonnull %.str.5.sink1543, i32 noundef %2869, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 887, ptr noundef %2872, ptr noundef %2874, ptr noundef %2876, i32 noundef %2877) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2879:                                             ; preds = %2850
  %2880 = add nsw i32 %2851, 2
  store i32 %2880, ptr @test_count, align 4, !tbaa !5
  %2881 = getelementptr inbounds i8, ptr %59, i64 8
  %2882 = load i8, ptr %2881, align 8, !tbaa !15
  %2883 = icmp eq i8 %2882, 48
  br i1 %2883, label %2908, label %2884

2884:                                             ; preds = %2879
  %2885 = tail call ptr @__errno_location() #15
  %2886 = load i32, ptr %2885, align 4, !tbaa !5
  %2887 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2888 = call i32 @s2n_print_stacktrace(ptr noundef %2887) #14
  %2889 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2890 = trunc nuw i8 %2889 to i1
  br i1 %2890, label %2891, label %2895

2891:                                             ; preds = %2884
  %2892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2893 = call i32 @fileno(ptr noundef %2892) #14
  %2894 = call i32 @isatty(i32 noundef %2893) #14
  %.not554 = icmp eq i32 %2894, 0
  br i1 %.not554, label %2895, label %2896

2895:                                             ; preds = %2891, %2884
  br label %2896

2896:                                             ; preds = %2891, %2895
  %.str.5.sink1554 = phi ptr [ @.str.5, %2895 ], [ @.str.2, %2891 ]
  store i32 %2886, ptr %2885, align 4, !tbaa !5
  %2897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2898 = load i32, ptr @test_count, align 4, !tbaa !5
  %2899 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2900 = load i32, ptr %2899, align 4, !tbaa !5
  %2901 = call ptr @s2n_strerror(i32 noundef %2900, ptr noundef nonnull @.str.4) #14
  %2902 = load i32, ptr %2899, align 4, !tbaa !5
  %2903 = call ptr @s2n_strerror_debug(i32 noundef %2902, ptr noundef nonnull @.str.4) #14
  %2904 = load i32, ptr %2885, align 4, !tbaa !5
  %2905 = call ptr @strerror(i32 noundef %2904) #14
  %2906 = load i32, ptr %2885, align 4, !tbaa !5
  %2907 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2897, ptr noundef nonnull %.str.5.sink1554, i32 noundef %2898, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.1, i32 noundef 888, ptr noundef %2901, ptr noundef %2903, ptr noundef %2905, i32 noundef %2906) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2908:                                             ; preds = %2879
  %2909 = add nsw i32 %2851, 3
  store i32 %2909, ptr @test_count, align 4, !tbaa !5
  %2910 = getelementptr inbounds i8, ptr %59, i64 9
  %2911 = load i8, ptr %2910, align 1, !tbaa !15
  %2912 = icmp eq i8 %2911, 48
  br i1 %2912, label %2937, label %2913

2913:                                             ; preds = %2908
  %2914 = tail call ptr @__errno_location() #15
  %2915 = load i32, ptr %2914, align 4, !tbaa !5
  %2916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2917 = call i32 @s2n_print_stacktrace(ptr noundef %2916) #14
  %2918 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2919 = trunc nuw i8 %2918 to i1
  br i1 %2919, label %2920, label %2924

2920:                                             ; preds = %2913
  %2921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2922 = call i32 @fileno(ptr noundef %2921) #14
  %2923 = call i32 @isatty(i32 noundef %2922) #14
  %.not555 = icmp eq i32 %2923, 0
  br i1 %.not555, label %2924, label %2925

2924:                                             ; preds = %2920, %2913
  br label %2925

2925:                                             ; preds = %2920, %2924
  %.str.5.sink1565 = phi ptr [ @.str.5, %2924 ], [ @.str.2, %2920 ]
  store i32 %2915, ptr %2914, align 4, !tbaa !5
  %2926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2927 = load i32, ptr @test_count, align 4, !tbaa !5
  %2928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2929 = load i32, ptr %2928, align 4, !tbaa !5
  %2930 = call ptr @s2n_strerror(i32 noundef %2929, ptr noundef nonnull @.str.4) #14
  %2931 = load i32, ptr %2928, align 4, !tbaa !5
  %2932 = call ptr @s2n_strerror_debug(i32 noundef %2931, ptr noundef nonnull @.str.4) #14
  %2933 = load i32, ptr %2914, align 4, !tbaa !5
  %2934 = call ptr @strerror(i32 noundef %2933) #14
  %2935 = load i32, ptr %2914, align 4, !tbaa !5
  %2936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2926, ptr noundef nonnull %.str.5.sink1565, i32 noundef %2927, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.1, i32 noundef 889, ptr noundef %2930, ptr noundef %2932, ptr noundef %2934, i32 noundef %2935) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2937:                                             ; preds = %2908
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %59) #14
  call void @llvm.lifetime.end.p0(i64 54, ptr nonnull %58) #14
  call void @llvm.lifetime.start.p0(i64 75, ptr nonnull %61) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(75) %61, ptr noundef nonnull align 16 dereferenceable(75) @__const.main.client_hello_bytes.79, i64 75, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %62) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %62, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #14
  store i32 0, ptr %63, align 4, !tbaa !5
  %2938 = add nsw i32 %2851, 5
  store i32 %2938, ptr @test_count, align 4, !tbaa !5
  %2939 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %61, i64 noundef 75, i64 noundef 200, ptr noundef nonnull %62, ptr noundef nonnull %63)
  %2940 = call zeroext i1 @s2n_result_is_ok(i32 %2939)
  br i1 %2940, label %2965, label %2941

2941:                                             ; preds = %2937
  %2942 = tail call ptr @__errno_location() #15
  %2943 = load i32, ptr %2942, align 4, !tbaa !5
  %2944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2945 = call i32 @s2n_print_stacktrace(ptr noundef %2944) #14
  %2946 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2947 = trunc nuw i8 %2946 to i1
  br i1 %2947, label %2948, label %2952

2948:                                             ; preds = %2941
  %2949 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2950 = call i32 @fileno(ptr noundef %2949) #14
  %2951 = call i32 @isatty(i32 noundef %2950) #14
  %.not556 = icmp eq i32 %2951, 0
  br i1 %.not556, label %2952, label %2953

2952:                                             ; preds = %2948, %2941
  br label %2953

2953:                                             ; preds = %2948, %2952
  %.str.5.sink1576 = phi ptr [ @.str.5, %2952 ], [ @.str.2, %2948 ]
  store i32 %2943, ptr %2942, align 4, !tbaa !5
  %2954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2955 = load i32, ptr @test_count, align 4, !tbaa !5
  %2956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2957 = load i32, ptr %2956, align 4, !tbaa !5
  %2958 = call ptr @s2n_strerror(i32 noundef %2957, ptr noundef nonnull @.str.4) #14
  %2959 = load i32, ptr %2956, align 4, !tbaa !5
  %2960 = call ptr @s2n_strerror_debug(i32 noundef %2959, ptr noundef nonnull @.str.4) #14
  %2961 = load i32, ptr %2942, align 4, !tbaa !5
  %2962 = call ptr @strerror(i32 noundef %2961) #14
  %2963 = load i32, ptr %2942, align 4, !tbaa !5
  %2964 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2954, ptr noundef nonnull %.str.5.sink1576, i32 noundef %2955, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.1, i32 noundef 951, ptr noundef %2958, ptr noundef %2960, ptr noundef %2962, i32 noundef %2963) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2965:                                             ; preds = %2937
  %2966 = load i32, ptr @test_count, align 4, !tbaa !5
  %2967 = add nsw i32 %2966, 1
  store i32 %2967, ptr @test_count, align 4, !tbaa !5
  %2968 = load i32, ptr %63, align 4, !tbaa !5
  %2969 = icmp ugt i32 %2968, 11
  br i1 %2969, label %2994, label %2970

2970:                                             ; preds = %2965
  %2971 = tail call ptr @__errno_location() #15
  %2972 = load i32, ptr %2971, align 4, !tbaa !5
  %2973 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2974 = call i32 @s2n_print_stacktrace(ptr noundef %2973) #14
  %2975 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2976 = trunc nuw i8 %2975 to i1
  br i1 %2976, label %2977, label %2981

2977:                                             ; preds = %2970
  %2978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2979 = call i32 @fileno(ptr noundef %2978) #14
  %2980 = call i32 @isatty(i32 noundef %2979) #14
  %.not557 = icmp eq i32 %2980, 0
  br i1 %.not557, label %2981, label %2982

2981:                                             ; preds = %2977, %2970
  br label %2982

2982:                                             ; preds = %2977, %2981
  %.str.5.sink1587 = phi ptr [ @.str.5, %2981 ], [ @.str.2, %2977 ]
  store i32 %2972, ptr %2971, align 4, !tbaa !5
  %2983 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2984 = load i32, ptr @test_count, align 4, !tbaa !5
  %2985 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2986 = load i32, ptr %2985, align 4, !tbaa !5
  %2987 = call ptr @s2n_strerror(i32 noundef %2986, ptr noundef nonnull @.str.4) #14
  %2988 = load i32, ptr %2985, align 4, !tbaa !5
  %2989 = call ptr @s2n_strerror_debug(i32 noundef %2988, ptr noundef nonnull @.str.4) #14
  %2990 = load i32, ptr %2971, align 4, !tbaa !5
  %2991 = call ptr @strerror(i32 noundef %2990) #14
  %2992 = load i32, ptr %2971, align 4, !tbaa !5
  %2993 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2983, ptr noundef nonnull %.str.5.sink1587, i32 noundef %2984, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.1, i32 noundef 953, ptr noundef %2987, ptr noundef %2989, ptr noundef %2991, i32 noundef %2992) #16
  call void @exit(i32 noundef 1) #17
  unreachable

2994:                                             ; preds = %2965
  %2995 = add nsw i32 %2966, 2
  store i32 %2995, ptr @test_count, align 4, !tbaa !5
  %2996 = icmp ugt i32 %2968, 84
  br i1 %2996, label %3021, label %2997

2997:                                             ; preds = %2994
  %2998 = tail call ptr @__errno_location() #15
  %2999 = load i32, ptr %2998, align 4, !tbaa !5
  %3000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3001 = call i32 @s2n_print_stacktrace(ptr noundef %3000) #14
  %3002 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3003 = trunc nuw i8 %3002 to i1
  br i1 %3003, label %3004, label %3008

3004:                                             ; preds = %2997
  %3005 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3006 = call i32 @fileno(ptr noundef %3005) #14
  %3007 = call i32 @isatty(i32 noundef %3006) #14
  %.not558 = icmp eq i32 %3007, 0
  br i1 %.not558, label %3008, label %3009

3008:                                             ; preds = %3004, %2997
  br label %3009

3009:                                             ; preds = %3004, %3008
  %.str.5.sink1598 = phi ptr [ @.str.5, %3008 ], [ @.str.2, %3004 ]
  store i32 %2999, ptr %2998, align 4, !tbaa !5
  %3010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3011 = load i32, ptr @test_count, align 4, !tbaa !5
  %3012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3013 = load i32, ptr %3012, align 4, !tbaa !5
  %3014 = call ptr @s2n_strerror(i32 noundef %3013, ptr noundef nonnull @.str.4) #14
  %3015 = load i32, ptr %3012, align 4, !tbaa !5
  %3016 = call ptr @s2n_strerror_debug(i32 noundef %3015, ptr noundef nonnull @.str.4) #14
  %3017 = load i32, ptr %2998, align 4, !tbaa !5
  %3018 = call ptr @strerror(i32 noundef %3017) #14
  %3019 = load i32, ptr %2998, align 4, !tbaa !5
  %3020 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3010, ptr noundef nonnull %.str.5.sink1598, i32 noundef %3011, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.1, i32 noundef 955, ptr noundef %3014, ptr noundef %3016, ptr noundef %3018, i32 noundef %3019) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3021:                                             ; preds = %2994
  %3022 = getelementptr inbounds i8, ptr %62, i64 11
  %3023 = add nsw i32 %2966, 3
  store i32 %3023, ptr @test_count, align 4, !tbaa !5
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(74) %3022, ptr noundef nonnull dereferenceable(74) @__const.main.expected, i64 74)
  %3024 = icmp eq i32 %bcmp, 0
  br i1 %3024, label %3049, label %3025

3025:                                             ; preds = %3021
  %3026 = tail call ptr @__errno_location() #15
  %3027 = load i32, ptr %3026, align 4, !tbaa !5
  %3028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3029 = call i32 @s2n_print_stacktrace(ptr noundef %3028) #14
  %3030 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3031 = trunc nuw i8 %3030 to i1
  br i1 %3031, label %3032, label %3036

3032:                                             ; preds = %3025
  %3033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3034 = call i32 @fileno(ptr noundef %3033) #14
  %3035 = call i32 @isatty(i32 noundef %3034) #14
  %.not559 = icmp eq i32 %3035, 0
  br i1 %.not559, label %3036, label %3037

3036:                                             ; preds = %3032, %3025
  br label %3037

3037:                                             ; preds = %3032, %3036
  %.str.5.sink1609 = phi ptr [ @.str.5, %3036 ], [ @.str.2, %3032 ]
  store i32 %3027, ptr %3026, align 4, !tbaa !5
  %3038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3039 = load i32, ptr @test_count, align 4, !tbaa !5
  %3040 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3041 = load i32, ptr %3040, align 4, !tbaa !5
  %3042 = call ptr @s2n_strerror(i32 noundef %3041, ptr noundef nonnull @.str.4) #14
  %3043 = load i32, ptr %3040, align 4, !tbaa !5
  %3044 = call ptr @s2n_strerror_debug(i32 noundef %3043, ptr noundef nonnull @.str.4) #14
  %3045 = load i32, ptr %3026, align 4, !tbaa !5
  %3046 = call ptr @strerror(i32 noundef %3045) #14
  %3047 = load i32, ptr %3026, align 4, !tbaa !5
  %3048 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3038, ptr noundef nonnull %.str.5.sink1609, i32 noundef %3039, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.1, i32 noundef 956, ptr noundef %3042, ptr noundef %3044, ptr noundef %3046, i32 noundef %3047) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3049:                                             ; preds = %3021
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %62) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %64) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %64, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #14
  store i32 0, ptr %65, align 4, !tbaa !5
  %3050 = add nsw i32 %2966, 4
  store i32 %3050, ptr @test_count, align 4, !tbaa !5
  %3051 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %61, i64 noundef 75, i64 noundef 200, ptr noundef nonnull %64, ptr noundef nonnull %65)
  %3052 = call zeroext i1 @s2n_result_is_ok(i32 %3051)
  br i1 %3052, label %3077, label %3053

3053:                                             ; preds = %3049
  %3054 = tail call ptr @__errno_location() #15
  %3055 = load i32, ptr %3054, align 4, !tbaa !5
  %3056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3057 = call i32 @s2n_print_stacktrace(ptr noundef %3056) #14
  %3058 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3059 = trunc nuw i8 %3058 to i1
  br i1 %3059, label %3060, label %3064

3060:                                             ; preds = %3053
  %3061 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3062 = call i32 @fileno(ptr noundef %3061) #14
  %3063 = call i32 @isatty(i32 noundef %3062) #14
  %.not560 = icmp eq i32 %3063, 0
  br i1 %.not560, label %3064, label %3065

3064:                                             ; preds = %3060, %3053
  br label %3065

3065:                                             ; preds = %3060, %3064
  %.str.5.sink1620 = phi ptr [ @.str.5, %3064 ], [ @.str.2, %3060 ]
  store i32 %3055, ptr %3054, align 4, !tbaa !5
  %3066 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3067 = load i32, ptr @test_count, align 4, !tbaa !5
  %3068 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3069 = load i32, ptr %3068, align 4, !tbaa !5
  %3070 = call ptr @s2n_strerror(i32 noundef %3069, ptr noundef nonnull @.str.4) #14
  %3071 = load i32, ptr %3068, align 4, !tbaa !5
  %3072 = call ptr @s2n_strerror_debug(i32 noundef %3071, ptr noundef nonnull @.str.4) #14
  %3073 = load i32, ptr %3054, align 4, !tbaa !5
  %3074 = call ptr @strerror(i32 noundef %3073) #14
  %3075 = load i32, ptr %3054, align 4, !tbaa !5
  %3076 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3066, ptr noundef nonnull %.str.5.sink1620, i32 noundef %3067, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 979, ptr noundef %3070, ptr noundef %3072, ptr noundef %3074, i32 noundef %3075) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3077:                                             ; preds = %3049
  %3078 = load i32, ptr @test_count, align 4, !tbaa !5
  %3079 = add nsw i32 %3078, 1
  store i32 %3079, ptr @test_count, align 4, !tbaa !5
  %3080 = load i32, ptr %65, align 4, !tbaa !5
  %3081 = icmp ugt i32 %3080, 11
  br i1 %3081, label %3106, label %3082

3082:                                             ; preds = %3077
  %3083 = tail call ptr @__errno_location() #15
  %3084 = load i32, ptr %3083, align 4, !tbaa !5
  %3085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3086 = call i32 @s2n_print_stacktrace(ptr noundef %3085) #14
  %3087 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3088 = trunc nuw i8 %3087 to i1
  br i1 %3088, label %3089, label %3093

3089:                                             ; preds = %3082
  %3090 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3091 = call i32 @fileno(ptr noundef %3090) #14
  %3092 = call i32 @isatty(i32 noundef %3091) #14
  %.not561 = icmp eq i32 %3092, 0
  br i1 %.not561, label %3093, label %3094

3093:                                             ; preds = %3089, %3082
  br label %3094

3094:                                             ; preds = %3089, %3093
  %.str.5.sink1631 = phi ptr [ @.str.5, %3093 ], [ @.str.2, %3089 ]
  store i32 %3084, ptr %3083, align 4, !tbaa !5
  %3095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3096 = load i32, ptr @test_count, align 4, !tbaa !5
  %3097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3098 = load i32, ptr %3097, align 4, !tbaa !5
  %3099 = call ptr @s2n_strerror(i32 noundef %3098, ptr noundef nonnull @.str.4) #14
  %3100 = load i32, ptr %3097, align 4, !tbaa !5
  %3101 = call ptr @s2n_strerror_debug(i32 noundef %3100, ptr noundef nonnull @.str.4) #14
  %3102 = load i32, ptr %3083, align 4, !tbaa !5
  %3103 = call ptr @strerror(i32 noundef %3102) #14
  %3104 = load i32, ptr %3083, align 4, !tbaa !5
  %3105 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3095, ptr noundef nonnull %.str.5.sink1631, i32 noundef %3096, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.1, i32 noundef 981, ptr noundef %3099, ptr noundef %3101, ptr noundef %3103, i32 noundef %3104) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3106:                                             ; preds = %3077
  %3107 = add nsw i32 %3078, 2
  store i32 %3107, ptr @test_count, align 4, !tbaa !5
  %3108 = icmp ugt i32 %3080, 22
  br i1 %3108, label %3133, label %3109

3109:                                             ; preds = %3106
  %3110 = tail call ptr @__errno_location() #15
  %3111 = load i32, ptr %3110, align 4, !tbaa !5
  %3112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3113 = call i32 @s2n_print_stacktrace(ptr noundef %3112) #14
  %3114 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3115 = trunc nuw i8 %3114 to i1
  br i1 %3115, label %3116, label %3120

3116:                                             ; preds = %3109
  %3117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3118 = call i32 @fileno(ptr noundef %3117) #14
  %3119 = call i32 @isatty(i32 noundef %3118) #14
  %.not562 = icmp eq i32 %3119, 0
  br i1 %.not562, label %3120, label %3121

3120:                                             ; preds = %3116, %3109
  br label %3121

3121:                                             ; preds = %3116, %3120
  %.str.5.sink1642 = phi ptr [ @.str.5, %3120 ], [ @.str.2, %3116 ]
  store i32 %3111, ptr %3110, align 4, !tbaa !5
  %3122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3123 = load i32, ptr @test_count, align 4, !tbaa !5
  %3124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3125 = load i32, ptr %3124, align 4, !tbaa !5
  %3126 = call ptr @s2n_strerror(i32 noundef %3125, ptr noundef nonnull @.str.4) #14
  %3127 = load i32, ptr %3124, align 4, !tbaa !5
  %3128 = call ptr @s2n_strerror_debug(i32 noundef %3127, ptr noundef nonnull @.str.4) #14
  %3129 = load i32, ptr %3110, align 4, !tbaa !5
  %3130 = call ptr @strerror(i32 noundef %3129) #14
  %3131 = load i32, ptr %3110, align 4, !tbaa !5
  %3132 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3122, ptr noundef nonnull %.str.5.sink1642, i32 noundef %3123, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.1, i32 noundef 983, ptr noundef %3126, ptr noundef %3128, ptr noundef %3130, i32 noundef %3131) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3133:                                             ; preds = %3106
  %3134 = getelementptr inbounds i8, ptr %64, i64 11
  %3135 = add nsw i32 %3078, 3
  store i32 %3135, ptr @test_count, align 4, !tbaa !5
  %bcmp563 = call i32 @bcmp(ptr noundef nonnull dereferenceable(12) %3134, ptr noundef nonnull dereferenceable(12) @__const.main.expected.84, i64 12)
  %3136 = icmp eq i32 %bcmp563, 0
  br i1 %3136, label %3161, label %3137

3137:                                             ; preds = %3133
  %3138 = tail call ptr @__errno_location() #15
  %3139 = load i32, ptr %3138, align 4, !tbaa !5
  %3140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3141 = call i32 @s2n_print_stacktrace(ptr noundef %3140) #14
  %3142 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3143 = trunc nuw i8 %3142 to i1
  br i1 %3143, label %3144, label %3148

3144:                                             ; preds = %3137
  %3145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3146 = call i32 @fileno(ptr noundef %3145) #14
  %3147 = call i32 @isatty(i32 noundef %3146) #14
  %.not564 = icmp eq i32 %3147, 0
  br i1 %.not564, label %3148, label %3149

3148:                                             ; preds = %3144, %3137
  br label %3149

3149:                                             ; preds = %3144, %3148
  %.str.5.sink1653 = phi ptr [ @.str.5, %3148 ], [ @.str.2, %3144 ]
  store i32 %3139, ptr %3138, align 4, !tbaa !5
  %3150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3151 = load i32, ptr @test_count, align 4, !tbaa !5
  %3152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3153 = load i32, ptr %3152, align 4, !tbaa !5
  %3154 = call ptr @s2n_strerror(i32 noundef %3153, ptr noundef nonnull @.str.4) #14
  %3155 = load i32, ptr %3152, align 4, !tbaa !5
  %3156 = call ptr @s2n_strerror_debug(i32 noundef %3155, ptr noundef nonnull @.str.4) #14
  %3157 = load i32, ptr %3138, align 4, !tbaa !5
  %3158 = call ptr @strerror(i32 noundef %3157) #14
  %3159 = load i32, ptr %3138, align 4, !tbaa !5
  %3160 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3150, ptr noundef nonnull %.str.5.sink1653, i32 noundef %3151, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.1, i32 noundef 984, ptr noundef %3154, ptr noundef %3156, ptr noundef %3158, i32 noundef %3159) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3161:                                             ; preds = %3133
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %64) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %66) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %66, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %67) #14
  store i32 0, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #14
  store ptr null, ptr %68, align 8, !tbaa !9
  %3162 = call ptr @s2n_client_hello_parse_message(ptr noundef nonnull %61, i32 noundef 75) #14
  store ptr %3162, ptr %68, align 8, !tbaa !9
  %3163 = load i32, ptr @test_count, align 4, !tbaa !5
  %3164 = add nsw i32 %3163, 1
  store i32 %3164, ptr @test_count, align 4, !tbaa !5
  %3165 = icmp eq ptr %3162, null
  br i1 %3165, label %3166, label %3190

3166:                                             ; preds = %3161
  %3167 = tail call ptr @__errno_location() #15
  %3168 = load i32, ptr %3167, align 4, !tbaa !5
  %3169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3170 = call i32 @s2n_print_stacktrace(ptr noundef %3169) #14
  %3171 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3172 = trunc nuw i8 %3171 to i1
  br i1 %3172, label %3173, label %3177

3173:                                             ; preds = %3166
  %3174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3175 = call i32 @fileno(ptr noundef %3174) #14
  %3176 = call i32 @isatty(i32 noundef %3175) #14
  %.not630 = icmp eq i32 %3176, 0
  br i1 %.not630, label %3177, label %3178

3177:                                             ; preds = %3173, %3166
  br label %3178

3178:                                             ; preds = %3173, %3177
  %.str.5.sink1664 = phi ptr [ @.str.5, %3177 ], [ @.str.2, %3173 ]
  store i32 %3168, ptr %3167, align 4, !tbaa !5
  %3179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3180 = load i32, ptr @test_count, align 4, !tbaa !5
  %3181 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3182 = load i32, ptr %3181, align 4, !tbaa !5
  %3183 = call ptr @s2n_strerror(i32 noundef %3182, ptr noundef nonnull @.str.4) #14
  %3184 = load i32, ptr %3181, align 4, !tbaa !5
  %3185 = call ptr @s2n_strerror_debug(i32 noundef %3184, ptr noundef nonnull @.str.4) #14
  %3186 = load i32, ptr %3167, align 4, !tbaa !5
  %3187 = call ptr @strerror(i32 noundef %3186) #14
  %3188 = load i32, ptr %3167, align 4, !tbaa !5
  %3189 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3179, ptr noundef nonnull %.str.5.sink1664, i32 noundef %3180, ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.1, i32 noundef 1014, ptr noundef %3183, ptr noundef %3185, ptr noundef %3187, i32 noundef %3188) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3190:                                             ; preds = %3161
  %3191 = getelementptr inbounds i8, ptr %3162, i64 736
  store i32 0, ptr %3191, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #14
  store ptr null, ptr %69, align 8, !tbaa !9
  %3192 = call ptr @s2n_fingerprint_new(i32 noundef 1) #14
  store ptr %3192, ptr %69, align 8, !tbaa !9
  %3193 = load i32, ptr @test_count, align 4, !tbaa !5
  %3194 = add nsw i32 %3193, 1
  store i32 %3194, ptr @test_count, align 4, !tbaa !5
  %3195 = icmp eq ptr %3192, null
  br i1 %3195, label %3196, label %3220

3196:                                             ; preds = %3190
  %3197 = tail call ptr @__errno_location() #15
  %3198 = load i32, ptr %3197, align 4, !tbaa !5
  %3199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3200 = call i32 @s2n_print_stacktrace(ptr noundef %3199) #14
  %3201 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3202 = trunc nuw i8 %3201 to i1
  br i1 %3202, label %3203, label %3207

3203:                                             ; preds = %3196
  %3204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3205 = call i32 @fileno(ptr noundef %3204) #14
  %3206 = call i32 @isatty(i32 noundef %3205) #14
  %.not629 = icmp eq i32 %3206, 0
  br i1 %.not629, label %3207, label %3208

3207:                                             ; preds = %3203, %3196
  br label %3208

3208:                                             ; preds = %3203, %3207
  %.str.5.sink1675 = phi ptr [ @.str.5, %3207 ], [ @.str.2, %3203 ]
  store i32 %3198, ptr %3197, align 4, !tbaa !5
  %3209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3210 = load i32, ptr @test_count, align 4, !tbaa !5
  %3211 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3212 = load i32, ptr %3211, align 4, !tbaa !5
  %3213 = call ptr @s2n_strerror(i32 noundef %3212, ptr noundef nonnull @.str.4) #14
  %3214 = load i32, ptr %3211, align 4, !tbaa !5
  %3215 = call ptr @s2n_strerror_debug(i32 noundef %3214, ptr noundef nonnull @.str.4) #14
  %3216 = load i32, ptr %3197, align 4, !tbaa !5
  %3217 = call ptr @strerror(i32 noundef %3216) #14
  %3218 = load i32, ptr %3197, align 4, !tbaa !5
  %3219 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3209, ptr noundef nonnull %.str.5.sink1675, i32 noundef %3210, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 1023, ptr noundef %3213, ptr noundef %3215, ptr noundef %3217, i32 noundef %3218) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3220:                                             ; preds = %3190
  %3221 = add nsw i32 %3193, 2
  store i32 %3221, ptr @test_count, align 4, !tbaa !5
  %3222 = load ptr, ptr %68, align 8, !tbaa !9
  %3223 = call i32 @s2n_fingerprint_set_client_hello(ptr noundef nonnull %3192, ptr noundef %3222) #14
  %3224 = icmp eq i32 %3223, -1
  br i1 %3224, label %3225, label %3249

3225:                                             ; preds = %3220
  %3226 = tail call ptr @__errno_location() #15
  %3227 = load i32, ptr %3226, align 4, !tbaa !5
  %3228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3229 = call i32 @s2n_print_stacktrace(ptr noundef %3228) #14
  %3230 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3231 = trunc nuw i8 %3230 to i1
  br i1 %3231, label %3232, label %3236

3232:                                             ; preds = %3225
  %3233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3234 = call i32 @fileno(ptr noundef %3233) #14
  %3235 = call i32 @isatty(i32 noundef %3234) #14
  %.not628 = icmp eq i32 %3235, 0
  br i1 %.not628, label %3236, label %3237

3236:                                             ; preds = %3232, %3225
  br label %3237

3237:                                             ; preds = %3232, %3236
  %.str.5.sink1686 = phi ptr [ @.str.5, %3236 ], [ @.str.2, %3232 ]
  store i32 %3227, ptr %3226, align 4, !tbaa !5
  %3238 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3239 = load i32, ptr @test_count, align 4, !tbaa !5
  %3240 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3241 = load i32, ptr %3240, align 4, !tbaa !5
  %3242 = call ptr @s2n_strerror(i32 noundef %3241, ptr noundef nonnull @.str.4) #14
  %3243 = load i32, ptr %3240, align 4, !tbaa !5
  %3244 = call ptr @s2n_strerror_debug(i32 noundef %3243, ptr noundef nonnull @.str.4) #14
  %3245 = load i32, ptr %3226, align 4, !tbaa !5
  %3246 = call ptr @strerror(i32 noundef %3245) #14
  %3247 = load i32, ptr %3226, align 4, !tbaa !5
  %3248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3238, ptr noundef nonnull %.str.5.sink1686, i32 noundef %3239, ptr noundef nonnull @.str.87, ptr noundef nonnull @.str.1, i32 noundef 1024, ptr noundef %3242, ptr noundef %3244, ptr noundef %3246, i32 noundef %3247) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3249:                                             ; preds = %3220
  %3250 = load i32, ptr @test_count, align 4, !tbaa !5
  %3251 = add nsw i32 %3250, 1
  store i32 %3251, ptr @test_count, align 4, !tbaa !5
  %3252 = load ptr, ptr %69, align 8, !tbaa !9
  %3253 = call i32 @s2n_fingerprint_get_hash(ptr noundef %3252, i32 noundef 200, ptr noundef nonnull %66, ptr noundef nonnull %67) #14
  %3254 = icmp eq i32 %3253, -1
  br i1 %3254, label %3255, label %3279

3255:                                             ; preds = %3249
  %3256 = tail call ptr @__errno_location() #15
  %3257 = load i32, ptr %3256, align 4, !tbaa !5
  %3258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3259 = call i32 @s2n_print_stacktrace(ptr noundef %3258) #14
  %3260 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3261 = trunc nuw i8 %3260 to i1
  br i1 %3261, label %3262, label %3266

3262:                                             ; preds = %3255
  %3263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3264 = call i32 @fileno(ptr noundef %3263) #14
  %3265 = call i32 @isatty(i32 noundef %3264) #14
  %.not627 = icmp eq i32 %3265, 0
  br i1 %.not627, label %3266, label %3267

3266:                                             ; preds = %3262, %3255
  br label %3267

3267:                                             ; preds = %3262, %3266
  %.str.5.sink1697 = phi ptr [ @.str.5, %3266 ], [ @.str.2, %3262 ]
  store i32 %3257, ptr %3256, align 4, !tbaa !5
  %3268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3269 = load i32, ptr @test_count, align 4, !tbaa !5
  %3270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3271 = load i32, ptr %3270, align 4, !tbaa !5
  %3272 = call ptr @s2n_strerror(i32 noundef %3271, ptr noundef nonnull @.str.4) #14
  %3273 = load i32, ptr %3270, align 4, !tbaa !5
  %3274 = call ptr @s2n_strerror_debug(i32 noundef %3273, ptr noundef nonnull @.str.4) #14
  %3275 = load i32, ptr %3256, align 4, !tbaa !5
  %3276 = call ptr @strerror(i32 noundef %3275) #14
  %3277 = load i32, ptr %3256, align 4, !tbaa !5
  %3278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3268, ptr noundef nonnull %.str.5.sink1697, i32 noundef %3269, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 1026, ptr noundef %3272, ptr noundef %3274, ptr noundef %3276, i32 noundef %3277) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3279:                                             ; preds = %3249
  %3280 = load i32, ptr @test_count, align 4, !tbaa !5
  %3281 = add nsw i32 %3280, 1
  store i32 %3281, ptr @test_count, align 4, !tbaa !5
  %3282 = load i32, ptr %67, align 4, !tbaa !5
  %3283 = icmp ugt i32 %3282, 11
  br i1 %3283, label %3308, label %3284

3284:                                             ; preds = %3279
  %3285 = tail call ptr @__errno_location() #15
  %3286 = load i32, ptr %3285, align 4, !tbaa !5
  %3287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3288 = call i32 @s2n_print_stacktrace(ptr noundef %3287) #14
  %3289 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3290 = trunc nuw i8 %3289 to i1
  br i1 %3290, label %3291, label %3295

3291:                                             ; preds = %3284
  %3292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3293 = call i32 @fileno(ptr noundef %3292) #14
  %3294 = call i32 @isatty(i32 noundef %3293) #14
  %.not565 = icmp eq i32 %3294, 0
  br i1 %.not565, label %3295, label %3296

3295:                                             ; preds = %3291, %3284
  br label %3296

3296:                                             ; preds = %3291, %3295
  %.str.5.sink1708 = phi ptr [ @.str.5, %3295 ], [ @.str.2, %3291 ]
  store i32 %3286, ptr %3285, align 4, !tbaa !5
  %3297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3298 = load i32, ptr @test_count, align 4, !tbaa !5
  %3299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3300 = load i32, ptr %3299, align 4, !tbaa !5
  %3301 = call ptr @s2n_strerror(i32 noundef %3300, ptr noundef nonnull @.str.4) #14
  %3302 = load i32, ptr %3299, align 4, !tbaa !5
  %3303 = call ptr @s2n_strerror_debug(i32 noundef %3302, ptr noundef nonnull @.str.4) #14
  %3304 = load i32, ptr %3285, align 4, !tbaa !5
  %3305 = call ptr @strerror(i32 noundef %3304) #14
  %3306 = load i32, ptr %3285, align 4, !tbaa !5
  %3307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3297, ptr noundef nonnull %.str.5.sink1708, i32 noundef %3298, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.1, i32 noundef 1028, ptr noundef %3301, ptr noundef %3303, ptr noundef %3305, i32 noundef %3306) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3308:                                             ; preds = %3279
  %3309 = add nsw i32 %3280, 2
  store i32 %3309, ptr @test_count, align 4, !tbaa !5
  %3310 = icmp ugt i32 %3282, 22
  br i1 %3310, label %3335, label %3311

3311:                                             ; preds = %3308
  %3312 = tail call ptr @__errno_location() #15
  %3313 = load i32, ptr %3312, align 4, !tbaa !5
  %3314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3315 = call i32 @s2n_print_stacktrace(ptr noundef %3314) #14
  %3316 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3317 = trunc nuw i8 %3316 to i1
  br i1 %3317, label %3318, label %3322

3318:                                             ; preds = %3311
  %3319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3320 = call i32 @fileno(ptr noundef %3319) #14
  %3321 = call i32 @isatty(i32 noundef %3320) #14
  %.not566 = icmp eq i32 %3321, 0
  br i1 %.not566, label %3322, label %3323

3322:                                             ; preds = %3318, %3311
  br label %3323

3323:                                             ; preds = %3318, %3322
  %.str.5.sink1719 = phi ptr [ @.str.5, %3322 ], [ @.str.2, %3318 ]
  store i32 %3313, ptr %3312, align 4, !tbaa !5
  %3324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3325 = load i32, ptr @test_count, align 4, !tbaa !5
  %3326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3327 = load i32, ptr %3326, align 4, !tbaa !5
  %3328 = call ptr @s2n_strerror(i32 noundef %3327, ptr noundef nonnull @.str.4) #14
  %3329 = load i32, ptr %3326, align 4, !tbaa !5
  %3330 = call ptr @s2n_strerror_debug(i32 noundef %3329, ptr noundef nonnull @.str.4) #14
  %3331 = load i32, ptr %3312, align 4, !tbaa !5
  %3332 = call ptr @strerror(i32 noundef %3331) #14
  %3333 = load i32, ptr %3312, align 4, !tbaa !5
  %3334 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3324, ptr noundef nonnull %.str.5.sink1719, i32 noundef %3325, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.1, i32 noundef 1030, ptr noundef %3328, ptr noundef %3330, ptr noundef %3332, i32 noundef %3333) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3335:                                             ; preds = %3308
  %3336 = getelementptr inbounds i8, ptr %66, i64 11
  %3337 = add nsw i32 %3280, 3
  store i32 %3337, ptr @test_count, align 4, !tbaa !5
  %bcmp567 = call i32 @bcmp(ptr noundef nonnull dereferenceable(12) %3336, ptr noundef nonnull dereferenceable(12) @__const.main.expected.85, i64 12)
  %3338 = icmp eq i32 %bcmp567, 0
  br i1 %3338, label %3363, label %3339

3339:                                             ; preds = %3335
  %3340 = tail call ptr @__errno_location() #15
  %3341 = load i32, ptr %3340, align 4, !tbaa !5
  %3342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3343 = call i32 @s2n_print_stacktrace(ptr noundef %3342) #14
  %3344 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3345 = trunc nuw i8 %3344 to i1
  br i1 %3345, label %3346, label %3350

3346:                                             ; preds = %3339
  %3347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3348 = call i32 @fileno(ptr noundef %3347) #14
  %3349 = call i32 @isatty(i32 noundef %3348) #14
  %.not568 = icmp eq i32 %3349, 0
  br i1 %.not568, label %3350, label %3351

3350:                                             ; preds = %3346, %3339
  br label %3351

3351:                                             ; preds = %3346, %3350
  %.str.5.sink1730 = phi ptr [ @.str.5, %3350 ], [ @.str.2, %3346 ]
  store i32 %3341, ptr %3340, align 4, !tbaa !5
  %3352 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3353 = load i32, ptr @test_count, align 4, !tbaa !5
  %3354 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3355 = load i32, ptr %3354, align 4, !tbaa !5
  %3356 = call ptr @s2n_strerror(i32 noundef %3355, ptr noundef nonnull @.str.4) #14
  %3357 = load i32, ptr %3354, align 4, !tbaa !5
  %3358 = call ptr @s2n_strerror_debug(i32 noundef %3357, ptr noundef nonnull @.str.4) #14
  %3359 = load i32, ptr %3340, align 4, !tbaa !5
  %3360 = call ptr @strerror(i32 noundef %3359) #14
  %3361 = load i32, ptr %3340, align 4, !tbaa !5
  %3362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3352, ptr noundef nonnull %.str.5.sink1730, i32 noundef %3353, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.1, i32 noundef 1031, ptr noundef %3356, ptr noundef %3358, ptr noundef %3360, i32 noundef %3361) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3363:                                             ; preds = %3335
  %3364 = call i32 @s2n_fingerprint_free(ptr noundef nonnull %69) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #14
  %3365 = call i32 @s2n_client_hello_free(ptr noundef nonnull %68) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %66) #14
  %3366 = load i32, ptr @test_count, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 69, ptr nonnull %70) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(69) %70, ptr noundef nonnull align 16 dereferenceable(69) @__const.main.bytes, i64 69, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %71) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %71, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %72) #14
  store i32 0, ptr %72, align 4, !tbaa !5
  %3367 = add nsw i32 %3366, 2
  store i32 %3367, ptr @test_count, align 4, !tbaa !5
  %3368 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %70, i64 noundef 69, i64 noundef 200, ptr noundef nonnull %71, ptr noundef nonnull %72)
  %3369 = call zeroext i1 @s2n_result_is_ok(i32 %3368)
  br i1 %3369, label %3394, label %3370

3370:                                             ; preds = %3363
  %3371 = tail call ptr @__errno_location() #15
  %3372 = load i32, ptr %3371, align 4, !tbaa !5
  %3373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3374 = call i32 @s2n_print_stacktrace(ptr noundef %3373) #14
  %3375 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3376 = trunc nuw i8 %3375 to i1
  br i1 %3376, label %3377, label %3381

3377:                                             ; preds = %3370
  %3378 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3379 = call i32 @fileno(ptr noundef %3378) #14
  %3380 = call i32 @isatty(i32 noundef %3379) #14
  %.not569 = icmp eq i32 %3380, 0
  br i1 %.not569, label %3381, label %3382

3381:                                             ; preds = %3377, %3370
  br label %3382

3382:                                             ; preds = %3377, %3381
  %.str.5.sink1741 = phi ptr [ @.str.5, %3381 ], [ @.str.2, %3377 ]
  store i32 %3372, ptr %3371, align 4, !tbaa !5
  %3383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3384 = load i32, ptr @test_count, align 4, !tbaa !5
  %3385 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3386 = load i32, ptr %3385, align 4, !tbaa !5
  %3387 = call ptr @s2n_strerror(i32 noundef %3386, ptr noundef nonnull @.str.4) #14
  %3388 = load i32, ptr %3385, align 4, !tbaa !5
  %3389 = call ptr @s2n_strerror_debug(i32 noundef %3388, ptr noundef nonnull @.str.4) #14
  %3390 = load i32, ptr %3371, align 4, !tbaa !5
  %3391 = call ptr @strerror(i32 noundef %3390) #14
  %3392 = load i32, ptr %3371, align 4, !tbaa !5
  %3393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3383, ptr noundef nonnull %.str.5.sink1741, i32 noundef %3384, ptr noundef nonnull @.str.89, ptr noundef nonnull @.str.1, i32 noundef 1065, ptr noundef %3387, ptr noundef %3389, ptr noundef %3391, i32 noundef %3392) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3394:                                             ; preds = %3363
  %3395 = load i32, ptr @test_count, align 4, !tbaa !5
  %3396 = add nsw i32 %3395, 1
  store i32 %3396, ptr @test_count, align 4, !tbaa !5
  %3397 = load i32, ptr %72, align 4, !tbaa !5
  %3398 = icmp ugt i32 %3397, 11
  br i1 %3398, label %3423, label %3399

3399:                                             ; preds = %3394
  %3400 = tail call ptr @__errno_location() #15
  %3401 = load i32, ptr %3400, align 4, !tbaa !5
  %3402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3403 = call i32 @s2n_print_stacktrace(ptr noundef %3402) #14
  %3404 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3405 = trunc nuw i8 %3404 to i1
  br i1 %3405, label %3406, label %3410

3406:                                             ; preds = %3399
  %3407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3408 = call i32 @fileno(ptr noundef %3407) #14
  %3409 = call i32 @isatty(i32 noundef %3408) #14
  %.not570 = icmp eq i32 %3409, 0
  br i1 %.not570, label %3410, label %3411

3410:                                             ; preds = %3406, %3399
  br label %3411

3411:                                             ; preds = %3406, %3410
  %.str.5.sink1752 = phi ptr [ @.str.5, %3410 ], [ @.str.2, %3406 ]
  store i32 %3401, ptr %3400, align 4, !tbaa !5
  %3412 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3413 = load i32, ptr @test_count, align 4, !tbaa !5
  %3414 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3415 = load i32, ptr %3414, align 4, !tbaa !5
  %3416 = call ptr @s2n_strerror(i32 noundef %3415, ptr noundef nonnull @.str.4) #14
  %3417 = load i32, ptr %3414, align 4, !tbaa !5
  %3418 = call ptr @s2n_strerror_debug(i32 noundef %3417, ptr noundef nonnull @.str.4) #14
  %3419 = load i32, ptr %3400, align 4, !tbaa !5
  %3420 = call ptr @strerror(i32 noundef %3419) #14
  %3421 = load i32, ptr %3400, align 4, !tbaa !5
  %3422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3412, ptr noundef nonnull %.str.5.sink1752, i32 noundef %3413, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.1, i32 noundef 1067, ptr noundef %3416, ptr noundef %3418, ptr noundef %3420, i32 noundef %3421) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3423:                                             ; preds = %3394
  %3424 = add nsw i32 %3395, 2
  store i32 %3424, ptr @test_count, align 4, !tbaa !5
  %3425 = icmp ugt i32 %3397, 69
  br i1 %3425, label %3450, label %3426

3426:                                             ; preds = %3423
  %3427 = tail call ptr @__errno_location() #15
  %3428 = load i32, ptr %3427, align 4, !tbaa !5
  %3429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3430 = call i32 @s2n_print_stacktrace(ptr noundef %3429) #14
  %3431 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3432 = trunc nuw i8 %3431 to i1
  br i1 %3432, label %3433, label %3437

3433:                                             ; preds = %3426
  %3434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3435 = call i32 @fileno(ptr noundef %3434) #14
  %3436 = call i32 @isatty(i32 noundef %3435) #14
  %.not571 = icmp eq i32 %3436, 0
  br i1 %.not571, label %3437, label %3438

3437:                                             ; preds = %3433, %3426
  br label %3438

3438:                                             ; preds = %3433, %3437
  %.str.5.sink1763 = phi ptr [ @.str.5, %3437 ], [ @.str.2, %3433 ]
  store i32 %3428, ptr %3427, align 4, !tbaa !5
  %3439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3440 = load i32, ptr @test_count, align 4, !tbaa !5
  %3441 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3442 = load i32, ptr %3441, align 4, !tbaa !5
  %3443 = call ptr @s2n_strerror(i32 noundef %3442, ptr noundef nonnull @.str.4) #14
  %3444 = load i32, ptr %3441, align 4, !tbaa !5
  %3445 = call ptr @s2n_strerror_debug(i32 noundef %3444, ptr noundef nonnull @.str.4) #14
  %3446 = load i32, ptr %3427, align 4, !tbaa !5
  %3447 = call ptr @strerror(i32 noundef %3446) #14
  %3448 = load i32, ptr %3427, align 4, !tbaa !5
  %3449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3439, ptr noundef nonnull %.str.5.sink1763, i32 noundef %3440, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.1, i32 noundef 1069, ptr noundef %3443, ptr noundef %3445, ptr noundef %3447, i32 noundef %3448) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3450:                                             ; preds = %3423
  %3451 = getelementptr inbounds i8, ptr %71, i64 11
  %3452 = add nsw i32 %3395, 3
  store i32 %3452, ptr @test_count, align 4, !tbaa !5
  %bcmp572 = call i32 @bcmp(ptr noundef nonnull dereferenceable(59) %3451, ptr noundef nonnull dereferenceable(59) @__const.main.expected.88, i64 59)
  %3453 = icmp eq i32 %bcmp572, 0
  br i1 %3453, label %3478, label %3454

3454:                                             ; preds = %3450
  %3455 = tail call ptr @__errno_location() #15
  %3456 = load i32, ptr %3455, align 4, !tbaa !5
  %3457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3458 = call i32 @s2n_print_stacktrace(ptr noundef %3457) #14
  %3459 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3460 = trunc nuw i8 %3459 to i1
  br i1 %3460, label %3461, label %3465

3461:                                             ; preds = %3454
  %3462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3463 = call i32 @fileno(ptr noundef %3462) #14
  %3464 = call i32 @isatty(i32 noundef %3463) #14
  %.not573 = icmp eq i32 %3464, 0
  br i1 %.not573, label %3465, label %3466

3465:                                             ; preds = %3461, %3454
  br label %3466

3466:                                             ; preds = %3461, %3465
  %.str.5.sink1774 = phi ptr [ @.str.5, %3465 ], [ @.str.2, %3461 ]
  store i32 %3456, ptr %3455, align 4, !tbaa !5
  %3467 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3468 = load i32, ptr @test_count, align 4, !tbaa !5
  %3469 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3470 = load i32, ptr %3469, align 4, !tbaa !5
  %3471 = call ptr @s2n_strerror(i32 noundef %3470, ptr noundef nonnull @.str.4) #14
  %3472 = load i32, ptr %3469, align 4, !tbaa !5
  %3473 = call ptr @s2n_strerror_debug(i32 noundef %3472, ptr noundef nonnull @.str.4) #14
  %3474 = load i32, ptr %3455, align 4, !tbaa !5
  %3475 = call ptr @strerror(i32 noundef %3474) #14
  %3476 = load i32, ptr %3455, align 4, !tbaa !5
  %3477 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3467, ptr noundef nonnull %.str.5.sink1774, i32 noundef %3468, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.1, i32 noundef 1070, ptr noundef %3471, ptr noundef %3473, ptr noundef %3475, i32 noundef %3476) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3478:                                             ; preds = %3450
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %72) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %71) #14
  call void @llvm.lifetime.end.p0(i64 69, ptr nonnull %70) #14
  call void @llvm.lifetime.start.p0(i64 69, ptr nonnull %73) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(69) %73, ptr noundef nonnull align 16 dereferenceable(69) @__const.main.bytes.91, i64 69, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %74) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %74, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %75) #14
  store i32 0, ptr %75, align 4, !tbaa !5
  %3479 = add nsw i32 %3395, 5
  store i32 %3479, ptr @test_count, align 4, !tbaa !5
  %3480 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %73, i64 noundef 69, i64 noundef 200, ptr noundef nonnull %74, ptr noundef nonnull %75)
  %3481 = call zeroext i1 @s2n_result_is_ok(i32 %3480)
  br i1 %3481, label %3506, label %3482

3482:                                             ; preds = %3478
  %3483 = tail call ptr @__errno_location() #15
  %3484 = load i32, ptr %3483, align 4, !tbaa !5
  %3485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3486 = call i32 @s2n_print_stacktrace(ptr noundef %3485) #14
  %3487 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3488 = trunc nuw i8 %3487 to i1
  br i1 %3488, label %3489, label %3493

3489:                                             ; preds = %3482
  %3490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3491 = call i32 @fileno(ptr noundef %3490) #14
  %3492 = call i32 @isatty(i32 noundef %3491) #14
  %.not574 = icmp eq i32 %3492, 0
  br i1 %.not574, label %3493, label %3494

3493:                                             ; preds = %3489, %3482
  br label %3494

3494:                                             ; preds = %3489, %3493
  %.str.5.sink1785 = phi ptr [ @.str.5, %3493 ], [ @.str.2, %3489 ]
  store i32 %3484, ptr %3483, align 4, !tbaa !5
  %3495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3496 = load i32, ptr @test_count, align 4, !tbaa !5
  %3497 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3498 = load i32, ptr %3497, align 4, !tbaa !5
  %3499 = call ptr @s2n_strerror(i32 noundef %3498, ptr noundef nonnull @.str.4) #14
  %3500 = load i32, ptr %3497, align 4, !tbaa !5
  %3501 = call ptr @s2n_strerror_debug(i32 noundef %3500, ptr noundef nonnull @.str.4) #14
  %3502 = load i32, ptr %3483, align 4, !tbaa !5
  %3503 = call ptr @strerror(i32 noundef %3502) #14
  %3504 = load i32, ptr %3483, align 4, !tbaa !5
  %3505 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3495, ptr noundef nonnull %.str.5.sink1785, i32 noundef %3496, ptr noundef nonnull @.str.89, ptr noundef nonnull @.str.1, i32 noundef 1091, ptr noundef %3499, ptr noundef %3501, ptr noundef %3503, i32 noundef %3504) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3506:                                             ; preds = %3478
  %3507 = load i32, ptr @test_count, align 4, !tbaa !5
  %3508 = add nsw i32 %3507, 1
  store i32 %3508, ptr @test_count, align 4, !tbaa !5
  %3509 = load i32, ptr %75, align 4, !tbaa !5
  %3510 = icmp ugt i32 %3509, 11
  br i1 %3510, label %3535, label %3511

3511:                                             ; preds = %3506
  %3512 = tail call ptr @__errno_location() #15
  %3513 = load i32, ptr %3512, align 4, !tbaa !5
  %3514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3515 = call i32 @s2n_print_stacktrace(ptr noundef %3514) #14
  %3516 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3517 = trunc nuw i8 %3516 to i1
  br i1 %3517, label %3518, label %3522

3518:                                             ; preds = %3511
  %3519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3520 = call i32 @fileno(ptr noundef %3519) #14
  %3521 = call i32 @isatty(i32 noundef %3520) #14
  %.not575 = icmp eq i32 %3521, 0
  br i1 %.not575, label %3522, label %3523

3522:                                             ; preds = %3518, %3511
  br label %3523

3523:                                             ; preds = %3518, %3522
  %.str.5.sink1796 = phi ptr [ @.str.5, %3522 ], [ @.str.2, %3518 ]
  store i32 %3513, ptr %3512, align 4, !tbaa !5
  %3524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3525 = load i32, ptr @test_count, align 4, !tbaa !5
  %3526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3527 = load i32, ptr %3526, align 4, !tbaa !5
  %3528 = call ptr @s2n_strerror(i32 noundef %3527, ptr noundef nonnull @.str.4) #14
  %3529 = load i32, ptr %3526, align 4, !tbaa !5
  %3530 = call ptr @s2n_strerror_debug(i32 noundef %3529, ptr noundef nonnull @.str.4) #14
  %3531 = load i32, ptr %3512, align 4, !tbaa !5
  %3532 = call ptr @strerror(i32 noundef %3531) #14
  %3533 = load i32, ptr %3512, align 4, !tbaa !5
  %3534 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3524, ptr noundef nonnull %.str.5.sink1796, i32 noundef %3525, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.1, i32 noundef 1093, ptr noundef %3528, ptr noundef %3530, ptr noundef %3532, i32 noundef %3533) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3535:                                             ; preds = %3506
  %3536 = add nsw i32 %3507, 2
  store i32 %3536, ptr @test_count, align 4, !tbaa !5
  %3537 = icmp ugt i32 %3509, 69
  br i1 %3537, label %3562, label %3538

3538:                                             ; preds = %3535
  %3539 = tail call ptr @__errno_location() #15
  %3540 = load i32, ptr %3539, align 4, !tbaa !5
  %3541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3542 = call i32 @s2n_print_stacktrace(ptr noundef %3541) #14
  %3543 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3544 = trunc nuw i8 %3543 to i1
  br i1 %3544, label %3545, label %3549

3545:                                             ; preds = %3538
  %3546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3547 = call i32 @fileno(ptr noundef %3546) #14
  %3548 = call i32 @isatty(i32 noundef %3547) #14
  %.not576 = icmp eq i32 %3548, 0
  br i1 %.not576, label %3549, label %3550

3549:                                             ; preds = %3545, %3538
  br label %3550

3550:                                             ; preds = %3545, %3549
  %.str.5.sink1807 = phi ptr [ @.str.5, %3549 ], [ @.str.2, %3545 ]
  store i32 %3540, ptr %3539, align 4, !tbaa !5
  %3551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3552 = load i32, ptr @test_count, align 4, !tbaa !5
  %3553 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3554 = load i32, ptr %3553, align 4, !tbaa !5
  %3555 = call ptr @s2n_strerror(i32 noundef %3554, ptr noundef nonnull @.str.4) #14
  %3556 = load i32, ptr %3553, align 4, !tbaa !5
  %3557 = call ptr @s2n_strerror_debug(i32 noundef %3556, ptr noundef nonnull @.str.4) #14
  %3558 = load i32, ptr %3539, align 4, !tbaa !5
  %3559 = call ptr @strerror(i32 noundef %3558) #14
  %3560 = load i32, ptr %3539, align 4, !tbaa !5
  %3561 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3551, ptr noundef nonnull %.str.5.sink1807, i32 noundef %3552, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.1, i32 noundef 1095, ptr noundef %3555, ptr noundef %3557, ptr noundef %3559, i32 noundef %3560) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3562:                                             ; preds = %3535
  %3563 = getelementptr inbounds i8, ptr %74, i64 11
  %3564 = add nsw i32 %3507, 3
  store i32 %3564, ptr @test_count, align 4, !tbaa !5
  %bcmp577 = call i32 @bcmp(ptr noundef nonnull dereferenceable(59) %3563, ptr noundef nonnull dereferenceable(59) @__const.main.expected.88, i64 59)
  %3565 = icmp eq i32 %bcmp577, 0
  br i1 %3565, label %3590, label %3566

3566:                                             ; preds = %3562
  %3567 = tail call ptr @__errno_location() #15
  %3568 = load i32, ptr %3567, align 4, !tbaa !5
  %3569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3570 = call i32 @s2n_print_stacktrace(ptr noundef %3569) #14
  %3571 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3572 = trunc nuw i8 %3571 to i1
  br i1 %3572, label %3573, label %3577

3573:                                             ; preds = %3566
  %3574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3575 = call i32 @fileno(ptr noundef %3574) #14
  %3576 = call i32 @isatty(i32 noundef %3575) #14
  %.not578 = icmp eq i32 %3576, 0
  br i1 %.not578, label %3577, label %3578

3577:                                             ; preds = %3573, %3566
  br label %3578

3578:                                             ; preds = %3573, %3577
  %.str.5.sink1818 = phi ptr [ @.str.5, %3577 ], [ @.str.2, %3573 ]
  store i32 %3568, ptr %3567, align 4, !tbaa !5
  %3579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3580 = load i32, ptr @test_count, align 4, !tbaa !5
  %3581 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3582 = load i32, ptr %3581, align 4, !tbaa !5
  %3583 = call ptr @s2n_strerror(i32 noundef %3582, ptr noundef nonnull @.str.4) #14
  %3584 = load i32, ptr %3581, align 4, !tbaa !5
  %3585 = call ptr @s2n_strerror_debug(i32 noundef %3584, ptr noundef nonnull @.str.4) #14
  %3586 = load i32, ptr %3567, align 4, !tbaa !5
  %3587 = call ptr @strerror(i32 noundef %3586) #14
  %3588 = load i32, ptr %3567, align 4, !tbaa !5
  %3589 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3579, ptr noundef nonnull %.str.5.sink1818, i32 noundef %3580, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.1, i32 noundef 1096, ptr noundef %3583, ptr noundef %3585, ptr noundef %3587, i32 noundef %3588) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3590:                                             ; preds = %3562
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %74) #14
  call void @llvm.lifetime.end.p0(i64 69, ptr nonnull %73) #14
  call void @llvm.lifetime.start.p0(i64 69, ptr nonnull %76) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(69) %76, ptr noundef nonnull align 16 dereferenceable(69) @__const.main.bytes.93, i64 69, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %77) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %77, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %78) #14
  store i32 0, ptr %78, align 4, !tbaa !5
  %3591 = add nsw i32 %3507, 5
  store i32 %3591, ptr @test_count, align 4, !tbaa !5
  %3592 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %76, i64 noundef 69, i64 noundef 200, ptr noundef nonnull %77, ptr noundef nonnull %78)
  %3593 = call zeroext i1 @s2n_result_is_ok(i32 %3592)
  br i1 %3593, label %3618, label %3594

3594:                                             ; preds = %3590
  %3595 = tail call ptr @__errno_location() #15
  %3596 = load i32, ptr %3595, align 4, !tbaa !5
  %3597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3598 = call i32 @s2n_print_stacktrace(ptr noundef %3597) #14
  %3599 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3600 = trunc nuw i8 %3599 to i1
  br i1 %3600, label %3601, label %3605

3601:                                             ; preds = %3594
  %3602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3603 = call i32 @fileno(ptr noundef %3602) #14
  %3604 = call i32 @isatty(i32 noundef %3603) #14
  %.not579 = icmp eq i32 %3604, 0
  br i1 %.not579, label %3605, label %3606

3605:                                             ; preds = %3601, %3594
  br label %3606

3606:                                             ; preds = %3601, %3605
  %.str.5.sink1829 = phi ptr [ @.str.5, %3605 ], [ @.str.2, %3601 ]
  store i32 %3596, ptr %3595, align 4, !tbaa !5
  %3607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3608 = load i32, ptr @test_count, align 4, !tbaa !5
  %3609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3610 = load i32, ptr %3609, align 4, !tbaa !5
  %3611 = call ptr @s2n_strerror(i32 noundef %3610, ptr noundef nonnull @.str.4) #14
  %3612 = load i32, ptr %3609, align 4, !tbaa !5
  %3613 = call ptr @s2n_strerror_debug(i32 noundef %3612, ptr noundef nonnull @.str.4) #14
  %3614 = load i32, ptr %3595, align 4, !tbaa !5
  %3615 = call ptr @strerror(i32 noundef %3614) #14
  %3616 = load i32, ptr %3595, align 4, !tbaa !5
  %3617 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3607, ptr noundef nonnull %.str.5.sink1829, i32 noundef %3608, ptr noundef nonnull @.str.89, ptr noundef nonnull @.str.1, i32 noundef 1117, ptr noundef %3611, ptr noundef %3613, ptr noundef %3615, i32 noundef %3616) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3618:                                             ; preds = %3590
  %3619 = load i32, ptr @test_count, align 4, !tbaa !5
  %3620 = add nsw i32 %3619, 1
  store i32 %3620, ptr @test_count, align 4, !tbaa !5
  %3621 = load i32, ptr %78, align 4, !tbaa !5
  %3622 = icmp ugt i32 %3621, 11
  br i1 %3622, label %3647, label %3623

3623:                                             ; preds = %3618
  %3624 = tail call ptr @__errno_location() #15
  %3625 = load i32, ptr %3624, align 4, !tbaa !5
  %3626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3627 = call i32 @s2n_print_stacktrace(ptr noundef %3626) #14
  %3628 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3629 = trunc nuw i8 %3628 to i1
  br i1 %3629, label %3630, label %3634

3630:                                             ; preds = %3623
  %3631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3632 = call i32 @fileno(ptr noundef %3631) #14
  %3633 = call i32 @isatty(i32 noundef %3632) #14
  %.not580 = icmp eq i32 %3633, 0
  br i1 %.not580, label %3634, label %3635

3634:                                             ; preds = %3630, %3623
  br label %3635

3635:                                             ; preds = %3630, %3634
  %.str.5.sink1840 = phi ptr [ @.str.5, %3634 ], [ @.str.2, %3630 ]
  store i32 %3625, ptr %3624, align 4, !tbaa !5
  %3636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3637 = load i32, ptr @test_count, align 4, !tbaa !5
  %3638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3639 = load i32, ptr %3638, align 4, !tbaa !5
  %3640 = call ptr @s2n_strerror(i32 noundef %3639, ptr noundef nonnull @.str.4) #14
  %3641 = load i32, ptr %3638, align 4, !tbaa !5
  %3642 = call ptr @s2n_strerror_debug(i32 noundef %3641, ptr noundef nonnull @.str.4) #14
  %3643 = load i32, ptr %3624, align 4, !tbaa !5
  %3644 = call ptr @strerror(i32 noundef %3643) #14
  %3645 = load i32, ptr %3624, align 4, !tbaa !5
  %3646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3636, ptr noundef nonnull %.str.5.sink1840, i32 noundef %3637, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.1, i32 noundef 1119, ptr noundef %3640, ptr noundef %3642, ptr noundef %3644, i32 noundef %3645) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3647:                                             ; preds = %3618
  %3648 = add nsw i32 %3619, 2
  store i32 %3648, ptr @test_count, align 4, !tbaa !5
  %3649 = icmp ugt i32 %3621, 69
  br i1 %3649, label %3674, label %3650

3650:                                             ; preds = %3647
  %3651 = tail call ptr @__errno_location() #15
  %3652 = load i32, ptr %3651, align 4, !tbaa !5
  %3653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3654 = call i32 @s2n_print_stacktrace(ptr noundef %3653) #14
  %3655 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3656 = trunc nuw i8 %3655 to i1
  br i1 %3656, label %3657, label %3661

3657:                                             ; preds = %3650
  %3658 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3659 = call i32 @fileno(ptr noundef %3658) #14
  %3660 = call i32 @isatty(i32 noundef %3659) #14
  %.not581 = icmp eq i32 %3660, 0
  br i1 %.not581, label %3661, label %3662

3661:                                             ; preds = %3657, %3650
  br label %3662

3662:                                             ; preds = %3657, %3661
  %.str.5.sink1851 = phi ptr [ @.str.5, %3661 ], [ @.str.2, %3657 ]
  store i32 %3652, ptr %3651, align 4, !tbaa !5
  %3663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3664 = load i32, ptr @test_count, align 4, !tbaa !5
  %3665 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3666 = load i32, ptr %3665, align 4, !tbaa !5
  %3667 = call ptr @s2n_strerror(i32 noundef %3666, ptr noundef nonnull @.str.4) #14
  %3668 = load i32, ptr %3665, align 4, !tbaa !5
  %3669 = call ptr @s2n_strerror_debug(i32 noundef %3668, ptr noundef nonnull @.str.4) #14
  %3670 = load i32, ptr %3651, align 4, !tbaa !5
  %3671 = call ptr @strerror(i32 noundef %3670) #14
  %3672 = load i32, ptr %3651, align 4, !tbaa !5
  %3673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3663, ptr noundef nonnull %.str.5.sink1851, i32 noundef %3664, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.1, i32 noundef 1121, ptr noundef %3667, ptr noundef %3669, ptr noundef %3671, i32 noundef %3672) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3674:                                             ; preds = %3647
  %3675 = getelementptr inbounds i8, ptr %77, i64 11
  %3676 = add nsw i32 %3619, 3
  store i32 %3676, ptr @test_count, align 4, !tbaa !5
  %bcmp582 = call i32 @bcmp(ptr noundef nonnull dereferenceable(59) %3675, ptr noundef nonnull dereferenceable(59) @__const.main.expected.88, i64 59)
  %3677 = icmp eq i32 %bcmp582, 0
  br i1 %3677, label %3702, label %3678

3678:                                             ; preds = %3674
  %3679 = tail call ptr @__errno_location() #15
  %3680 = load i32, ptr %3679, align 4, !tbaa !5
  %3681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3682 = call i32 @s2n_print_stacktrace(ptr noundef %3681) #14
  %3683 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3684 = trunc nuw i8 %3683 to i1
  br i1 %3684, label %3685, label %3689

3685:                                             ; preds = %3678
  %3686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3687 = call i32 @fileno(ptr noundef %3686) #14
  %3688 = call i32 @isatty(i32 noundef %3687) #14
  %.not583 = icmp eq i32 %3688, 0
  br i1 %.not583, label %3689, label %3690

3689:                                             ; preds = %3685, %3678
  br label %3690

3690:                                             ; preds = %3685, %3689
  %.str.5.sink1862 = phi ptr [ @.str.5, %3689 ], [ @.str.2, %3685 ]
  store i32 %3680, ptr %3679, align 4, !tbaa !5
  %3691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3692 = load i32, ptr @test_count, align 4, !tbaa !5
  %3693 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3694 = load i32, ptr %3693, align 4, !tbaa !5
  %3695 = call ptr @s2n_strerror(i32 noundef %3694, ptr noundef nonnull @.str.4) #14
  %3696 = load i32, ptr %3693, align 4, !tbaa !5
  %3697 = call ptr @s2n_strerror_debug(i32 noundef %3696, ptr noundef nonnull @.str.4) #14
  %3698 = load i32, ptr %3679, align 4, !tbaa !5
  %3699 = call ptr @strerror(i32 noundef %3698) #14
  %3700 = load i32, ptr %3679, align 4, !tbaa !5
  %3701 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3691, ptr noundef nonnull %.str.5.sink1862, i32 noundef %3692, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.1, i32 noundef 1122, ptr noundef %3695, ptr noundef %3697, ptr noundef %3699, i32 noundef %3700) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3702:                                             ; preds = %3674
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %77) #14
  call void @llvm.lifetime.end.p0(i64 69, ptr nonnull %76) #14
  call void @llvm.lifetime.end.p0(i64 75, ptr nonnull %61) #14
  call void @llvm.lifetime.start.p0(i64 129, ptr nonnull %79) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(129) %79, ptr noundef nonnull align 16 dereferenceable(129) @__const.main.client_hello_bytes.95, i64 129, i1 false)
  call void @llvm.lifetime.start.p0(i64 70, ptr nonnull %80) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(70) %80, ptr noundef nonnull align 16 dereferenceable(70) @__const.main.expected_raw_extensions, i64 70, i1 false)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %81) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %81, ptr noundef nonnull align 16 dereferenceable(80) @__const.main.extensions, i64 80, i1 false)
  %3703 = add nsw i32 %3619, 5
  store i32 %3703, ptr @test_count, align 4, !tbaa !5
  %3704 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %81, ptr noundef nonnull dereferenceable(1) @__const.main.sni_str) #18
  %3705 = icmp eq ptr %3704, null
  br i1 %3705, label %3706, label %3730

3706:                                             ; preds = %3702
  %3707 = tail call ptr @__errno_location() #15
  %3708 = load i32, ptr %3707, align 4, !tbaa !5
  %3709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3710 = call i32 @s2n_print_stacktrace(ptr noundef %3709) #14
  %3711 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3712 = trunc nuw i8 %3711 to i1
  br i1 %3712, label %3713, label %3717

3713:                                             ; preds = %3706
  %3714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3715 = call i32 @fileno(ptr noundef %3714) #14
  %3716 = call i32 @isatty(i32 noundef %3715) #14
  %.not626 = icmp eq i32 %3716, 0
  br i1 %.not626, label %3717, label %3718

3717:                                             ; preds = %3713, %3706
  br label %3718

3718:                                             ; preds = %3713, %3717
  %.str.5.sink1873 = phi ptr [ @.str.5, %3717 ], [ @.str.2, %3713 ]
  store i32 %3708, ptr %3707, align 4, !tbaa !5
  %3719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3720 = load i32, ptr @test_count, align 4, !tbaa !5
  %3721 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3722 = load i32, ptr %3721, align 4, !tbaa !5
  %3723 = call ptr @s2n_strerror(i32 noundef %3722, ptr noundef nonnull @.str.4) #14
  %3724 = load i32, ptr %3721, align 4, !tbaa !5
  %3725 = call ptr @s2n_strerror_debug(i32 noundef %3724, ptr noundef nonnull @.str.4) #14
  %3726 = load i32, ptr %3707, align 4, !tbaa !5
  %3727 = call ptr @strerror(i32 noundef %3726) #14
  %3728 = load i32, ptr %3707, align 4, !tbaa !5
  %3729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3719, ptr noundef nonnull %.str.5.sink1873, i32 noundef %3720, ptr noundef nonnull @.str.96, ptr noundef nonnull @.str.1, i32 noundef 1219, ptr noundef %3723, ptr noundef %3725, ptr noundef %3727, i32 noundef %3728) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3730:                                             ; preds = %3702
  %3731 = add nsw i32 %3619, 6
  store i32 %3731, ptr @test_count, align 4, !tbaa !5
  %3732 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %81, ptr noundef nonnull dereferenceable(1) @__const.main.alpn_str) #18
  %3733 = icmp eq ptr %3732, null
  br i1 %3733, label %3734, label %3758

3734:                                             ; preds = %3730
  %3735 = tail call ptr @__errno_location() #15
  %3736 = load i32, ptr %3735, align 4, !tbaa !5
  %3737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3738 = call i32 @s2n_print_stacktrace(ptr noundef %3737) #14
  %3739 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3740 = trunc nuw i8 %3739 to i1
  br i1 %3740, label %3741, label %3745

3741:                                             ; preds = %3734
  %3742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3743 = call i32 @fileno(ptr noundef %3742) #14
  %3744 = call i32 @isatty(i32 noundef %3743) #14
  %.not625 = icmp eq i32 %3744, 0
  br i1 %.not625, label %3745, label %3746

3745:                                             ; preds = %3741, %3734
  br label %3746

3746:                                             ; preds = %3741, %3745
  %.str.5.sink1884 = phi ptr [ @.str.5, %3745 ], [ @.str.2, %3741 ]
  store i32 %3736, ptr %3735, align 4, !tbaa !5
  %3747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3748 = load i32, ptr @test_count, align 4, !tbaa !5
  %3749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3750 = load i32, ptr %3749, align 4, !tbaa !5
  %3751 = call ptr @s2n_strerror(i32 noundef %3750, ptr noundef nonnull @.str.4) #14
  %3752 = load i32, ptr %3749, align 4, !tbaa !5
  %3753 = call ptr @s2n_strerror_debug(i32 noundef %3752, ptr noundef nonnull @.str.4) #14
  %3754 = load i32, ptr %3735, align 4, !tbaa !5
  %3755 = call ptr @strerror(i32 noundef %3754) #14
  %3756 = load i32, ptr %3735, align 4, !tbaa !5
  %3757 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3747, ptr noundef nonnull %.str.5.sink1884, i32 noundef %3748, ptr noundef nonnull @.str.97, ptr noundef nonnull @.str.1, i32 noundef 1220, ptr noundef %3751, ptr noundef %3753, ptr noundef %3755, i32 noundef %3756) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3758:                                             ; preds = %3730
  %3759 = add nsw i32 %3619, 7
  store i32 %3759, ptr @test_count, align 4, !tbaa !5
  %3760 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %80, ptr noundef nonnull dereferenceable(1) @__const.main.sni_str) #18
  %3761 = icmp eq ptr %3760, null
  br i1 %3761, label %3786, label %3762

3762:                                             ; preds = %3758
  %3763 = tail call ptr @__errno_location() #15
  %3764 = load i32, ptr %3763, align 4, !tbaa !5
  %3765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3766 = call i32 @s2n_print_stacktrace(ptr noundef %3765) #14
  %3767 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3768 = trunc nuw i8 %3767 to i1
  br i1 %3768, label %3769, label %3773

3769:                                             ; preds = %3762
  %3770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3771 = call i32 @fileno(ptr noundef %3770) #14
  %3772 = call i32 @isatty(i32 noundef %3771) #14
  %.not584 = icmp eq i32 %3772, 0
  br i1 %.not584, label %3773, label %3774

3773:                                             ; preds = %3769, %3762
  br label %3774

3774:                                             ; preds = %3769, %3773
  %.str.5.sink1895 = phi ptr [ @.str.5, %3773 ], [ @.str.2, %3769 ]
  store i32 %3764, ptr %3763, align 4, !tbaa !5
  %3775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3776 = load i32, ptr @test_count, align 4, !tbaa !5
  %3777 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3778 = load i32, ptr %3777, align 4, !tbaa !5
  %3779 = call ptr @s2n_strerror(i32 noundef %3778, ptr noundef nonnull @.str.4) #14
  %3780 = load i32, ptr %3777, align 4, !tbaa !5
  %3781 = call ptr @s2n_strerror_debug(i32 noundef %3780, ptr noundef nonnull @.str.4) #14
  %3782 = load i32, ptr %3763, align 4, !tbaa !5
  %3783 = call ptr @strerror(i32 noundef %3782) #14
  %3784 = load i32, ptr %3763, align 4, !tbaa !5
  %3785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3775, ptr noundef nonnull %.str.5.sink1895, i32 noundef %3776, ptr noundef nonnull @.str.98, ptr noundef nonnull @.str.1, i32 noundef 1228, ptr noundef %3779, ptr noundef %3781, ptr noundef %3783, i32 noundef %3784) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3786:                                             ; preds = %3758
  %3787 = add nsw i32 %3619, 8
  store i32 %3787, ptr @test_count, align 4, !tbaa !5
  %3788 = call ptr @strstr(ptr noundef nonnull dereferenceable(1) %80, ptr noundef nonnull dereferenceable(1) @__const.main.alpn_str) #18
  %3789 = icmp eq ptr %3788, null
  br i1 %3789, label %3814, label %3790

3790:                                             ; preds = %3786
  %3791 = tail call ptr @__errno_location() #15
  %3792 = load i32, ptr %3791, align 4, !tbaa !5
  %3793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3794 = call i32 @s2n_print_stacktrace(ptr noundef %3793) #14
  %3795 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3796 = trunc nuw i8 %3795 to i1
  br i1 %3796, label %3797, label %3801

3797:                                             ; preds = %3790
  %3798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3799 = call i32 @fileno(ptr noundef %3798) #14
  %3800 = call i32 @isatty(i32 noundef %3799) #14
  %.not585 = icmp eq i32 %3800, 0
  br i1 %.not585, label %3801, label %3802

3801:                                             ; preds = %3797, %3790
  br label %3802

3802:                                             ; preds = %3797, %3801
  %.str.5.sink1906 = phi ptr [ @.str.5, %3801 ], [ @.str.2, %3797 ]
  store i32 %3792, ptr %3791, align 4, !tbaa !5
  %3803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3804 = load i32, ptr @test_count, align 4, !tbaa !5
  %3805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3806 = load i32, ptr %3805, align 4, !tbaa !5
  %3807 = call ptr @s2n_strerror(i32 noundef %3806, ptr noundef nonnull @.str.4) #14
  %3808 = load i32, ptr %3805, align 4, !tbaa !5
  %3809 = call ptr @s2n_strerror_debug(i32 noundef %3808, ptr noundef nonnull @.str.4) #14
  %3810 = load i32, ptr %3791, align 4, !tbaa !5
  %3811 = call ptr @strerror(i32 noundef %3810) #14
  %3812 = load i32, ptr %3791, align 4, !tbaa !5
  %3813 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3803, ptr noundef nonnull %.str.5.sink1906, i32 noundef %3804, ptr noundef nonnull @.str.99, ptr noundef nonnull @.str.1, i32 noundef 1229, ptr noundef %3807, ptr noundef %3809, ptr noundef %3811, i32 noundef %3812) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3814:                                             ; preds = %3786
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %81) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %82) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %82, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #14
  store i32 0, ptr %83, align 4, !tbaa !5
  %3815 = add nsw i32 %3619, 9
  store i32 %3815, ptr @test_count, align 4, !tbaa !5
  %3816 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %79, i64 noundef 129, i64 noundef 200, ptr noundef nonnull %82, ptr noundef nonnull %83)
  %3817 = call zeroext i1 @s2n_result_is_ok(i32 %3816)
  br i1 %3817, label %3842, label %3818

3818:                                             ; preds = %3814
  %3819 = tail call ptr @__errno_location() #15
  %3820 = load i32, ptr %3819, align 4, !tbaa !5
  %3821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3822 = call i32 @s2n_print_stacktrace(ptr noundef %3821) #14
  %3823 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3824 = trunc nuw i8 %3823 to i1
  br i1 %3824, label %3825, label %3829

3825:                                             ; preds = %3818
  %3826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3827 = call i32 @fileno(ptr noundef %3826) #14
  %3828 = call i32 @isatty(i32 noundef %3827) #14
  %.not586 = icmp eq i32 %3828, 0
  br i1 %.not586, label %3829, label %3830

3829:                                             ; preds = %3825, %3818
  br label %3830

3830:                                             ; preds = %3825, %3829
  %.str.5.sink1917 = phi ptr [ @.str.5, %3829 ], [ @.str.2, %3825 ]
  store i32 %3820, ptr %3819, align 4, !tbaa !5
  %3831 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3832 = load i32, ptr @test_count, align 4, !tbaa !5
  %3833 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3834 = load i32, ptr %3833, align 4, !tbaa !5
  %3835 = call ptr @s2n_strerror(i32 noundef %3834, ptr noundef nonnull @.str.4) #14
  %3836 = load i32, ptr %3833, align 4, !tbaa !5
  %3837 = call ptr @s2n_strerror_debug(i32 noundef %3836, ptr noundef nonnull @.str.4) #14
  %3838 = load i32, ptr %3819, align 4, !tbaa !5
  %3839 = call ptr @strerror(i32 noundef %3838) #14
  %3840 = load i32, ptr %3819, align 4, !tbaa !5
  %3841 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3831, ptr noundef nonnull %.str.5.sink1917, i32 noundef %3832, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.1, i32 noundef 1246, ptr noundef %3835, ptr noundef %3837, ptr noundef %3839, i32 noundef %3840) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3842:                                             ; preds = %3814
  %3843 = load i32, ptr @test_count, align 4, !tbaa !5
  %3844 = add nsw i32 %3843, 1
  store i32 %3844, ptr @test_count, align 4, !tbaa !5
  %3845 = load i32, ptr %83, align 4, !tbaa !5
  %3846 = icmp ugt i32 %3845, 16
  br i1 %3846, label %3871, label %3847

3847:                                             ; preds = %3842
  %3848 = tail call ptr @__errno_location() #15
  %3849 = load i32, ptr %3848, align 4, !tbaa !5
  %3850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3851 = call i32 @s2n_print_stacktrace(ptr noundef %3850) #14
  %3852 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3853 = trunc nuw i8 %3852 to i1
  br i1 %3853, label %3854, label %3858

3854:                                             ; preds = %3847
  %3855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3856 = call i32 @fileno(ptr noundef %3855) #14
  %3857 = call i32 @isatty(i32 noundef %3856) #14
  %.not587 = icmp eq i32 %3857, 0
  br i1 %.not587, label %3858, label %3859

3858:                                             ; preds = %3854, %3847
  br label %3859

3859:                                             ; preds = %3854, %3858
  %.str.5.sink1928 = phi ptr [ @.str.5, %3858 ], [ @.str.2, %3854 ]
  store i32 %3849, ptr %3848, align 4, !tbaa !5
  %3860 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3861 = load i32, ptr @test_count, align 4, !tbaa !5
  %3862 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3863 = load i32, ptr %3862, align 4, !tbaa !5
  %3864 = call ptr @s2n_strerror(i32 noundef %3863, ptr noundef nonnull @.str.4) #14
  %3865 = load i32, ptr %3862, align 4, !tbaa !5
  %3866 = call ptr @s2n_strerror_debug(i32 noundef %3865, ptr noundef nonnull @.str.4) #14
  %3867 = load i32, ptr %3848, align 4, !tbaa !5
  %3868 = call ptr @strerror(i32 noundef %3867) #14
  %3869 = load i32, ptr %3848, align 4, !tbaa !5
  %3870 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3860, ptr noundef nonnull %.str.5.sink1928, i32 noundef %3861, ptr noundef nonnull @.str.100, ptr noundef nonnull @.str.1, i32 noundef 1248, ptr noundef %3864, ptr noundef %3866, ptr noundef %3868, i32 noundef %3869) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3871:                                             ; preds = %3842
  %3872 = getelementptr inbounds i8, ptr %82, i64 16
  %3873 = add nsw i32 %3843, 2
  store i32 %3873, ptr @test_count, align 4, !tbaa !5
  %3874 = zext i32 %3845 to i64
  %3875 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %80) #18
  %3876 = add i64 %3875, 16
  %.not588 = icmp ugt i64 %3876, %3874
  br i1 %.not588, label %3877, label %3901

3877:                                             ; preds = %3871
  %3878 = tail call ptr @__errno_location() #15
  %3879 = load i32, ptr %3878, align 4, !tbaa !5
  %3880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3881 = call i32 @s2n_print_stacktrace(ptr noundef %3880) #14
  %3882 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3883 = trunc nuw i8 %3882 to i1
  br i1 %3883, label %3884, label %3888

3884:                                             ; preds = %3877
  %3885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3886 = call i32 @fileno(ptr noundef %3885) #14
  %3887 = call i32 @isatty(i32 noundef %3886) #14
  %.not589 = icmp eq i32 %3887, 0
  br i1 %.not589, label %3888, label %3889

3888:                                             ; preds = %3884, %3877
  br label %3889

3889:                                             ; preds = %3884, %3888
  %.str.5.sink1939 = phi ptr [ @.str.5, %3888 ], [ @.str.2, %3884 ]
  store i32 %3879, ptr %3878, align 4, !tbaa !5
  %3890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3891 = load i32, ptr @test_count, align 4, !tbaa !5
  %3892 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3893 = load i32, ptr %3892, align 4, !tbaa !5
  %3894 = call ptr @s2n_strerror(i32 noundef %3893, ptr noundef nonnull @.str.4) #14
  %3895 = load i32, ptr %3892, align 4, !tbaa !5
  %3896 = call ptr @s2n_strerror_debug(i32 noundef %3895, ptr noundef nonnull @.str.4) #14
  %3897 = load i32, ptr %3878, align 4, !tbaa !5
  %3898 = call ptr @strerror(i32 noundef %3897) #14
  %3899 = load i32, ptr %3878, align 4, !tbaa !5
  %3900 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3890, ptr noundef nonnull %.str.5.sink1939, i32 noundef %3891, ptr noundef nonnull @.str.101, ptr noundef nonnull @.str.1, i32 noundef 1250, ptr noundef %3894, ptr noundef %3896, ptr noundef %3898, i32 noundef %3899) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3901:                                             ; preds = %3871
  %.not590 = icmp eq i64 %3875, 0
  br i1 %.not590, label %3929, label %3902

3902:                                             ; preds = %3901
  %3903 = add nsw i32 %3843, 3
  store i32 %3903, ptr @test_count, align 4, !tbaa !5
  %bcmp591 = call i32 @bcmp(ptr nonnull %3872, ptr nonnull %80, i64 %3875)
  %3904 = icmp eq i32 %bcmp591, 0
  br i1 %3904, label %3929, label %3905

3905:                                             ; preds = %3902
  %3906 = tail call ptr @__errno_location() #15
  %3907 = load i32, ptr %3906, align 4, !tbaa !5
  %3908 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3909 = call i32 @s2n_print_stacktrace(ptr noundef %3908) #14
  %3910 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3911 = trunc nuw i8 %3910 to i1
  br i1 %3911, label %3912, label %3916

3912:                                             ; preds = %3905
  %3913 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3914 = call i32 @fileno(ptr noundef %3913) #14
  %3915 = call i32 @isatty(i32 noundef %3914) #14
  %.not592 = icmp eq i32 %3915, 0
  br i1 %.not592, label %3916, label %3917

3916:                                             ; preds = %3912, %3905
  br label %3917

3917:                                             ; preds = %3912, %3916
  %.str.5.sink1950 = phi ptr [ @.str.5, %3916 ], [ @.str.2, %3912 ]
  store i32 %3907, ptr %3906, align 4, !tbaa !5
  %3918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3919 = load i32, ptr @test_count, align 4, !tbaa !5
  %3920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3921 = load i32, ptr %3920, align 4, !tbaa !5
  %3922 = call ptr @s2n_strerror(i32 noundef %3921, ptr noundef nonnull @.str.4) #14
  %3923 = load i32, ptr %3920, align 4, !tbaa !5
  %3924 = call ptr @s2n_strerror_debug(i32 noundef %3923, ptr noundef nonnull @.str.4) #14
  %3925 = load i32, ptr %3906, align 4, !tbaa !5
  %3926 = call ptr @strerror(i32 noundef %3925) #14
  %3927 = load i32, ptr %3906, align 4, !tbaa !5
  %3928 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3918, ptr noundef nonnull %.str.5.sink1950, i32 noundef %3919, ptr noundef nonnull @.str.102, ptr noundef nonnull @.str.1, i32 noundef 1251, ptr noundef %3922, ptr noundef %3924, ptr noundef %3926, i32 noundef %3927) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3929:                                             ; preds = %3902, %3901
  %3930 = phi i32 [ %3903, %3902 ], [ %3873, %3901 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %82) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %84) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %84, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %85) #14
  store i32 0, ptr %85, align 4, !tbaa !5
  %3931 = add nsw i32 %3930, 1
  store i32 %3931, ptr @test_count, align 4, !tbaa !5
  %3932 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %79, i64 noundef 129, i64 noundef 200, ptr noundef nonnull %84, ptr noundef nonnull %85)
  %3933 = call zeroext i1 @s2n_result_is_ok(i32 %3932)
  br i1 %3933, label %3958, label %3934

3934:                                             ; preds = %3929
  %3935 = tail call ptr @__errno_location() #15
  %3936 = load i32, ptr %3935, align 4, !tbaa !5
  %3937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3938 = call i32 @s2n_print_stacktrace(ptr noundef %3937) #14
  %3939 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3940 = trunc nuw i8 %3939 to i1
  br i1 %3940, label %3941, label %3945

3941:                                             ; preds = %3934
  %3942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3943 = call i32 @fileno(ptr noundef %3942) #14
  %3944 = call i32 @isatty(i32 noundef %3943) #14
  %.not593 = icmp eq i32 %3944, 0
  br i1 %.not593, label %3945, label %3946

3945:                                             ; preds = %3941, %3934
  br label %3946

3946:                                             ; preds = %3941, %3945
  %.str.5.sink1961 = phi ptr [ @.str.5, %3945 ], [ @.str.2, %3941 ]
  store i32 %3936, ptr %3935, align 4, !tbaa !5
  %3947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3948 = load i32, ptr @test_count, align 4, !tbaa !5
  %3949 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3950 = load i32, ptr %3949, align 4, !tbaa !5
  %3951 = call ptr @s2n_strerror(i32 noundef %3950, ptr noundef nonnull @.str.4) #14
  %3952 = load i32, ptr %3949, align 4, !tbaa !5
  %3953 = call ptr @s2n_strerror_debug(i32 noundef %3952, ptr noundef nonnull @.str.4) #14
  %3954 = load i32, ptr %3935, align 4, !tbaa !5
  %3955 = call ptr @strerror(i32 noundef %3954) #14
  %3956 = load i32, ptr %3935, align 4, !tbaa !5
  %3957 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3947, ptr noundef nonnull %.str.5.sink1961, i32 noundef %3948, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.1, i32 noundef 1280, ptr noundef %3951, ptr noundef %3953, ptr noundef %3955, i32 noundef %3956) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3958:                                             ; preds = %3929
  %3959 = load i32, ptr @test_count, align 4, !tbaa !5
  %3960 = add nsw i32 %3959, 1
  store i32 %3960, ptr @test_count, align 4, !tbaa !5
  %3961 = load i32, ptr %85, align 4, !tbaa !5
  %3962 = icmp ugt i32 %3961, 16
  br i1 %3962, label %3987, label %3963

3963:                                             ; preds = %3958
  %3964 = tail call ptr @__errno_location() #15
  %3965 = load i32, ptr %3964, align 4, !tbaa !5
  %3966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3967 = call i32 @s2n_print_stacktrace(ptr noundef %3966) #14
  %3968 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3969 = trunc nuw i8 %3968 to i1
  br i1 %3969, label %3970, label %3974

3970:                                             ; preds = %3963
  %3971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3972 = call i32 @fileno(ptr noundef %3971) #14
  %3973 = call i32 @isatty(i32 noundef %3972) #14
  %.not594 = icmp eq i32 %3973, 0
  br i1 %.not594, label %3974, label %3975

3974:                                             ; preds = %3970, %3963
  br label %3975

3975:                                             ; preds = %3970, %3974
  %.str.5.sink1972 = phi ptr [ @.str.5, %3974 ], [ @.str.2, %3970 ]
  store i32 %3965, ptr %3964, align 4, !tbaa !5
  %3976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3977 = load i32, ptr @test_count, align 4, !tbaa !5
  %3978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3979 = load i32, ptr %3978, align 4, !tbaa !5
  %3980 = call ptr @s2n_strerror(i32 noundef %3979, ptr noundef nonnull @.str.4) #14
  %3981 = load i32, ptr %3978, align 4, !tbaa !5
  %3982 = call ptr @s2n_strerror_debug(i32 noundef %3981, ptr noundef nonnull @.str.4) #14
  %3983 = load i32, ptr %3964, align 4, !tbaa !5
  %3984 = call ptr @strerror(i32 noundef %3983) #14
  %3985 = load i32, ptr %3964, align 4, !tbaa !5
  %3986 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3976, ptr noundef nonnull %.str.5.sink1972, i32 noundef %3977, ptr noundef nonnull @.str.100, ptr noundef nonnull @.str.1, i32 noundef 1282, ptr noundef %3980, ptr noundef %3982, ptr noundef %3984, i32 noundef %3985) #16
  call void @exit(i32 noundef 1) #17
  unreachable

3987:                                             ; preds = %3958
  %3988 = add nsw i32 %3959, 2
  store i32 %3988, ptr @test_count, align 4, !tbaa !5
  %3989 = icmp ugt i32 %3961, 124
  br i1 %3989, label %4014, label %3990

3990:                                             ; preds = %3987
  %3991 = tail call ptr @__errno_location() #15
  %3992 = load i32, ptr %3991, align 4, !tbaa !5
  %3993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3994 = call i32 @s2n_print_stacktrace(ptr noundef %3993) #14
  %3995 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3996 = trunc nuw i8 %3995 to i1
  br i1 %3996, label %3997, label %4001

3997:                                             ; preds = %3990
  %3998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3999 = call i32 @fileno(ptr noundef %3998) #14
  %4000 = call i32 @isatty(i32 noundef %3999) #14
  %.not595 = icmp eq i32 %4000, 0
  br i1 %.not595, label %4001, label %4002

4001:                                             ; preds = %3997, %3990
  br label %4002

4002:                                             ; preds = %3997, %4001
  %.str.5.sink1983 = phi ptr [ @.str.5, %4001 ], [ @.str.2, %3997 ]
  store i32 %3992, ptr %3991, align 4, !tbaa !5
  %4003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4004 = load i32, ptr @test_count, align 4, !tbaa !5
  %4005 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4006 = load i32, ptr %4005, align 4, !tbaa !5
  %4007 = call ptr @s2n_strerror(i32 noundef %4006, ptr noundef nonnull @.str.4) #14
  %4008 = load i32, ptr %4005, align 4, !tbaa !5
  %4009 = call ptr @s2n_strerror_debug(i32 noundef %4008, ptr noundef nonnull @.str.4) #14
  %4010 = load i32, ptr %3991, align 4, !tbaa !5
  %4011 = call ptr @strerror(i32 noundef %4010) #14
  %4012 = load i32, ptr %3991, align 4, !tbaa !5
  %4013 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4003, ptr noundef nonnull %.str.5.sink1983, i32 noundef %4004, ptr noundef nonnull @.str.101, ptr noundef nonnull @.str.1, i32 noundef 1284, ptr noundef %4007, ptr noundef %4009, ptr noundef %4011, i32 noundef %4012) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4014:                                             ; preds = %3987
  %4015 = getelementptr inbounds i8, ptr %84, i64 16
  %4016 = add nsw i32 %3959, 3
  store i32 %4016, ptr @test_count, align 4, !tbaa !5
  %bcmp596 = call i32 @bcmp(ptr noundef nonnull dereferenceable(109) %4015, ptr noundef nonnull dereferenceable(109) @__const.main.expected.103, i64 109)
  %4017 = icmp eq i32 %bcmp596, 0
  br i1 %4017, label %4042, label %4018

4018:                                             ; preds = %4014
  %4019 = tail call ptr @__errno_location() #15
  %4020 = load i32, ptr %4019, align 4, !tbaa !5
  %4021 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4022 = call i32 @s2n_print_stacktrace(ptr noundef %4021) #14
  %4023 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4024 = trunc nuw i8 %4023 to i1
  br i1 %4024, label %4025, label %4029

4025:                                             ; preds = %4018
  %4026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4027 = call i32 @fileno(ptr noundef %4026) #14
  %4028 = call i32 @isatty(i32 noundef %4027) #14
  %.not597 = icmp eq i32 %4028, 0
  br i1 %.not597, label %4029, label %4030

4029:                                             ; preds = %4025, %4018
  br label %4030

4030:                                             ; preds = %4025, %4029
  %.str.5.sink1994 = phi ptr [ @.str.5, %4029 ], [ @.str.2, %4025 ]
  store i32 %4020, ptr %4019, align 4, !tbaa !5
  %4031 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4032 = load i32, ptr @test_count, align 4, !tbaa !5
  %4033 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4034 = load i32, ptr %4033, align 4, !tbaa !5
  %4035 = call ptr @s2n_strerror(i32 noundef %4034, ptr noundef nonnull @.str.4) #14
  %4036 = load i32, ptr %4033, align 4, !tbaa !5
  %4037 = call ptr @s2n_strerror_debug(i32 noundef %4036, ptr noundef nonnull @.str.4) #14
  %4038 = load i32, ptr %4019, align 4, !tbaa !5
  %4039 = call ptr @strerror(i32 noundef %4038) #14
  %4040 = load i32, ptr %4019, align 4, !tbaa !5
  %4041 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4031, ptr noundef nonnull %.str.5.sink1994, i32 noundef %4032, ptr noundef nonnull @.str.102, ptr noundef nonnull @.str.1, i32 noundef 1285, ptr noundef %4035, ptr noundef %4037, ptr noundef %4039, i32 noundef %4040) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4042:                                             ; preds = %4014
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %84) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %86) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %86, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %87) #14
  store i32 0, ptr %87, align 4, !tbaa !5
  %4043 = add nsw i32 %3959, 4
  store i32 %4043, ptr @test_count, align 4, !tbaa !5
  %4044 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %79, i64 noundef 129, i64 noundef 200, ptr noundef nonnull %86, ptr noundef nonnull %87)
  %4045 = call zeroext i1 @s2n_result_is_ok(i32 %4044)
  br i1 %4045, label %4070, label %4046

4046:                                             ; preds = %4042
  %4047 = tail call ptr @__errno_location() #15
  %4048 = load i32, ptr %4047, align 4, !tbaa !5
  %4049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4050 = call i32 @s2n_print_stacktrace(ptr noundef %4049) #14
  %4051 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4052 = trunc nuw i8 %4051 to i1
  br i1 %4052, label %4053, label %4057

4053:                                             ; preds = %4046
  %4054 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4055 = call i32 @fileno(ptr noundef %4054) #14
  %4056 = call i32 @isatty(i32 noundef %4055) #14
  %.not598 = icmp eq i32 %4056, 0
  br i1 %.not598, label %4057, label %4058

4057:                                             ; preds = %4053, %4046
  br label %4058

4058:                                             ; preds = %4053, %4057
  %.str.5.sink2005 = phi ptr [ @.str.5, %4057 ], [ @.str.2, %4053 ]
  store i32 %4048, ptr %4047, align 4, !tbaa !5
  %4059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4060 = load i32, ptr @test_count, align 4, !tbaa !5
  %4061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4062 = load i32, ptr %4061, align 4, !tbaa !5
  %4063 = call ptr @s2n_strerror(i32 noundef %4062, ptr noundef nonnull @.str.4) #14
  %4064 = load i32, ptr %4061, align 4, !tbaa !5
  %4065 = call ptr @s2n_strerror_debug(i32 noundef %4064, ptr noundef nonnull @.str.4) #14
  %4066 = load i32, ptr %4047, align 4, !tbaa !5
  %4067 = call ptr @strerror(i32 noundef %4066) #14
  %4068 = load i32, ptr %4047, align 4, !tbaa !5
  %4069 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4059, ptr noundef nonnull %.str.5.sink2005, i32 noundef %4060, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 1316, ptr noundef %4063, ptr noundef %4065, ptr noundef %4067, i32 noundef %4068) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4070:                                             ; preds = %4042
  %4071 = load i32, ptr @test_count, align 4, !tbaa !5
  %4072 = add nsw i32 %4071, 1
  store i32 %4072, ptr @test_count, align 4, !tbaa !5
  %4073 = load i32, ptr %87, align 4, !tbaa !5
  %4074 = icmp ugt i32 %4073, 24
  br i1 %4074, label %4099, label %4075

4075:                                             ; preds = %4070
  %4076 = tail call ptr @__errno_location() #15
  %4077 = load i32, ptr %4076, align 4, !tbaa !5
  %4078 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4079 = call i32 @s2n_print_stacktrace(ptr noundef %4078) #14
  %4080 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4081 = trunc nuw i8 %4080 to i1
  br i1 %4081, label %4082, label %4086

4082:                                             ; preds = %4075
  %4083 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4084 = call i32 @fileno(ptr noundef %4083) #14
  %4085 = call i32 @isatty(i32 noundef %4084) #14
  %.not599 = icmp eq i32 %4085, 0
  br i1 %.not599, label %4086, label %4087

4086:                                             ; preds = %4082, %4075
  br label %4087

4087:                                             ; preds = %4082, %4086
  %.str.5.sink2016 = phi ptr [ @.str.5, %4086 ], [ @.str.2, %4082 ]
  store i32 %4077, ptr %4076, align 4, !tbaa !5
  %4088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4089 = load i32, ptr @test_count, align 4, !tbaa !5
  %4090 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4091 = load i32, ptr %4090, align 4, !tbaa !5
  %4092 = call ptr @s2n_strerror(i32 noundef %4091, ptr noundef nonnull @.str.4) #14
  %4093 = load i32, ptr %4090, align 4, !tbaa !5
  %4094 = call ptr @s2n_strerror_debug(i32 noundef %4093, ptr noundef nonnull @.str.4) #14
  %4095 = load i32, ptr %4076, align 4, !tbaa !5
  %4096 = call ptr @strerror(i32 noundef %4095) #14
  %4097 = load i32, ptr %4076, align 4, !tbaa !5
  %4098 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4088, ptr noundef nonnull %.str.5.sink2016, i32 noundef %4089, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.1, i32 noundef 1318, ptr noundef %4092, ptr noundef %4094, ptr noundef %4096, i32 noundef %4097) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4099:                                             ; preds = %4070
  %4100 = add nsw i32 %4071, 2
  store i32 %4100, ptr @test_count, align 4, !tbaa !5
  %4101 = icmp ugt i32 %4073, 35
  br i1 %4101, label %4126, label %4102

4102:                                             ; preds = %4099
  %4103 = tail call ptr @__errno_location() #15
  %4104 = load i32, ptr %4103, align 4, !tbaa !5
  %4105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4106 = call i32 @s2n_print_stacktrace(ptr noundef %4105) #14
  %4107 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4108 = trunc nuw i8 %4107 to i1
  br i1 %4108, label %4109, label %4113

4109:                                             ; preds = %4102
  %4110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4111 = call i32 @fileno(ptr noundef %4110) #14
  %4112 = call i32 @isatty(i32 noundef %4111) #14
  %.not600 = icmp eq i32 %4112, 0
  br i1 %.not600, label %4113, label %4114

4113:                                             ; preds = %4109, %4102
  br label %4114

4114:                                             ; preds = %4109, %4113
  %.str.5.sink2027 = phi ptr [ @.str.5, %4113 ], [ @.str.2, %4109 ]
  store i32 %4104, ptr %4103, align 4, !tbaa !5
  %4115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4116 = load i32, ptr @test_count, align 4, !tbaa !5
  %4117 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4118 = load i32, ptr %4117, align 4, !tbaa !5
  %4119 = call ptr @s2n_strerror(i32 noundef %4118, ptr noundef nonnull @.str.4) #14
  %4120 = load i32, ptr %4117, align 4, !tbaa !5
  %4121 = call ptr @s2n_strerror_debug(i32 noundef %4120, ptr noundef nonnull @.str.4) #14
  %4122 = load i32, ptr %4103, align 4, !tbaa !5
  %4123 = call ptr @strerror(i32 noundef %4122) #14
  %4124 = load i32, ptr %4103, align 4, !tbaa !5
  %4125 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4115, ptr noundef nonnull %.str.5.sink2027, i32 noundef %4116, ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.1, i32 noundef 1320, ptr noundef %4119, ptr noundef %4121, ptr noundef %4123, i32 noundef %4124) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4126:                                             ; preds = %4099
  %4127 = getelementptr inbounds i8, ptr %86, i64 24
  %4128 = add nsw i32 %4071, 3
  store i32 %4128, ptr @test_count, align 4, !tbaa !5
  %bcmp601 = call i32 @bcmp(ptr noundef nonnull dereferenceable(12) %4127, ptr noundef nonnull dereferenceable(12) @__const.main.expected.104, i64 12)
  %4129 = icmp eq i32 %bcmp601, 0
  br i1 %4129, label %4154, label %4130

4130:                                             ; preds = %4126
  %4131 = tail call ptr @__errno_location() #15
  %4132 = load i32, ptr %4131, align 4, !tbaa !5
  %4133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4134 = call i32 @s2n_print_stacktrace(ptr noundef %4133) #14
  %4135 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4136 = trunc nuw i8 %4135 to i1
  br i1 %4136, label %4137, label %4141

4137:                                             ; preds = %4130
  %4138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4139 = call i32 @fileno(ptr noundef %4138) #14
  %4140 = call i32 @isatty(i32 noundef %4139) #14
  %.not602 = icmp eq i32 %4140, 0
  br i1 %.not602, label %4141, label %4142

4141:                                             ; preds = %4137, %4130
  br label %4142

4142:                                             ; preds = %4137, %4141
  %.str.5.sink2038 = phi ptr [ @.str.5, %4141 ], [ @.str.2, %4137 ]
  store i32 %4132, ptr %4131, align 4, !tbaa !5
  %4143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4144 = load i32, ptr @test_count, align 4, !tbaa !5
  %4145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4146 = load i32, ptr %4145, align 4, !tbaa !5
  %4147 = call ptr @s2n_strerror(i32 noundef %4146, ptr noundef nonnull @.str.4) #14
  %4148 = load i32, ptr %4145, align 4, !tbaa !5
  %4149 = call ptr @s2n_strerror_debug(i32 noundef %4148, ptr noundef nonnull @.str.4) #14
  %4150 = load i32, ptr %4131, align 4, !tbaa !5
  %4151 = call ptr @strerror(i32 noundef %4150) #14
  %4152 = load i32, ptr %4131, align 4, !tbaa !5
  %4153 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4143, ptr noundef nonnull %.str.5.sink2038, i32 noundef %4144, ptr noundef nonnull @.str.102, ptr noundef nonnull @.str.1, i32 noundef 1321, ptr noundef %4147, ptr noundef %4149, ptr noundef %4151, i32 noundef %4152) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4154:                                             ; preds = %4126
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %86) #14
  call void @llvm.lifetime.start.p0(i64 51, ptr nonnull %88) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(51) %88, i8 0, i64 51, i1 false)
  store i8 1, ptr %88, align 16
  %4155 = getelementptr inbounds i8, ptr %88, i64 3
  store i8 47, ptr %4155, align 1
  %4156 = getelementptr inbounds i8, ptr %88, i64 40
  store i8 2, ptr %4156, align 8
  %4157 = getelementptr inbounds i8, ptr %88, i64 43
  store i8 1, ptr %4157, align 1
  %4158 = getelementptr inbounds i8, ptr %88, i64 46
  store i8 4, ptr %4158, align 2
  %4159 = getelementptr inbounds i8, ptr %88, i64 48
  store i8 1, ptr %4159, align 16
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %89) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %89, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %90) #14
  store i32 0, ptr %90, align 4, !tbaa !5
  %4160 = add nsw i32 %4071, 5
  store i32 %4160, ptr @test_count, align 4, !tbaa !5
  %4161 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %88, i64 noundef 51, i64 noundef 200, ptr noundef nonnull %89, ptr noundef nonnull %90)
  %4162 = call zeroext i1 @s2n_result_is_ok(i32 %4161)
  br i1 %4162, label %4187, label %4163

4163:                                             ; preds = %4154
  %4164 = tail call ptr @__errno_location() #15
  %4165 = load i32, ptr %4164, align 4, !tbaa !5
  %4166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4167 = call i32 @s2n_print_stacktrace(ptr noundef %4166) #14
  %4168 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4169 = trunc nuw i8 %4168 to i1
  br i1 %4169, label %4170, label %4174

4170:                                             ; preds = %4163
  %4171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4172 = call i32 @fileno(ptr noundef %4171) #14
  %4173 = call i32 @isatty(i32 noundef %4172) #14
  %.not603 = icmp eq i32 %4173, 0
  br i1 %.not603, label %4174, label %4175

4174:                                             ; preds = %4170, %4163
  br label %4175

4175:                                             ; preds = %4170, %4174
  %.str.5.sink2049 = phi ptr [ @.str.5, %4174 ], [ @.str.2, %4170 ]
  store i32 %4165, ptr %4164, align 4, !tbaa !5
  %4176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4177 = load i32, ptr @test_count, align 4, !tbaa !5
  %4178 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4179 = load i32, ptr %4178, align 4, !tbaa !5
  %4180 = call ptr @s2n_strerror(i32 noundef %4179, ptr noundef nonnull @.str.4) #14
  %4181 = load i32, ptr %4178, align 4, !tbaa !5
  %4182 = call ptr @s2n_strerror_debug(i32 noundef %4181, ptr noundef nonnull @.str.4) #14
  %4183 = load i32, ptr %4164, align 4, !tbaa !5
  %4184 = call ptr @strerror(i32 noundef %4183) #14
  %4185 = load i32, ptr %4164, align 4, !tbaa !5
  %4186 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4176, ptr noundef nonnull %.str.5.sink2049, i32 noundef %4177, ptr noundef nonnull @.str.89, ptr noundef nonnull @.str.1, i32 noundef 1346, ptr noundef %4180, ptr noundef %4182, ptr noundef %4184, i32 noundef %4185) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4187:                                             ; preds = %4154
  %4188 = load i32, ptr @test_count, align 4, !tbaa !5
  %4189 = add nsw i32 %4188, 1
  store i32 %4189, ptr @test_count, align 4, !tbaa !5
  %4190 = load i32, ptr %90, align 4, !tbaa !5
  %4191 = icmp ugt i32 %4190, 1
  br i1 %4191, label %4216, label %4192

4192:                                             ; preds = %4187
  %4193 = tail call ptr @__errno_location() #15
  %4194 = load i32, ptr %4193, align 4, !tbaa !5
  %4195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4196 = call i32 @s2n_print_stacktrace(ptr noundef %4195) #14
  %4197 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4198 = trunc nuw i8 %4197 to i1
  br i1 %4198, label %4199, label %4203

4199:                                             ; preds = %4192
  %4200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4201 = call i32 @fileno(ptr noundef %4200) #14
  %4202 = call i32 @isatty(i32 noundef %4201) #14
  %.not604 = icmp eq i32 %4202, 0
  br i1 %.not604, label %4203, label %4204

4203:                                             ; preds = %4199, %4192
  br label %4204

4204:                                             ; preds = %4199, %4203
  %.str.5.sink2060 = phi ptr [ @.str.5, %4203 ], [ @.str.2, %4199 ]
  store i32 %4194, ptr %4193, align 4, !tbaa !5
  %4205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4206 = load i32, ptr @test_count, align 4, !tbaa !5
  %4207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4208 = load i32, ptr %4207, align 4, !tbaa !5
  %4209 = call ptr @s2n_strerror(i32 noundef %4208, ptr noundef nonnull @.str.4) #14
  %4210 = load i32, ptr %4207, align 4, !tbaa !5
  %4211 = call ptr @s2n_strerror_debug(i32 noundef %4210, ptr noundef nonnull @.str.4) #14
  %4212 = load i32, ptr %4193, align 4, !tbaa !5
  %4213 = call ptr @strerror(i32 noundef %4212) #14
  %4214 = load i32, ptr %4193, align 4, !tbaa !5
  %4215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4205, ptr noundef nonnull %.str.5.sink2060, i32 noundef %4206, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.1, i32 noundef 1349, ptr noundef %4209, ptr noundef %4211, ptr noundef %4213, i32 noundef %4214) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4216:                                             ; preds = %4187
  %4217 = add nsw i32 %4188, 2
  store i32 %4217, ptr @test_count, align 4, !tbaa !5
  %4218 = add i32 %4190, -1
  %4219 = zext i32 %4218 to i64
  %4220 = getelementptr inbounds [200 x i8], ptr %89, i64 0, i64 %4219
  %4221 = load i8, ptr %4220, align 1, !tbaa !15
  %4222 = icmp eq i8 %4221, 95
  br i1 %4222, label %4223, label %4247

4223:                                             ; preds = %4216
  %4224 = tail call ptr @__errno_location() #15
  %4225 = load i32, ptr %4224, align 4, !tbaa !5
  %4226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4227 = call i32 @s2n_print_stacktrace(ptr noundef %4226) #14
  %4228 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4229 = trunc nuw i8 %4228 to i1
  br i1 %4229, label %4230, label %4234

4230:                                             ; preds = %4223
  %4231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4232 = call i32 @fileno(ptr noundef %4231) #14
  %4233 = call i32 @isatty(i32 noundef %4232) #14
  %.not624 = icmp eq i32 %4233, 0
  br i1 %.not624, label %4234, label %4235

4234:                                             ; preds = %4230, %4223
  br label %4235

4235:                                             ; preds = %4230, %4234
  %.str.5.sink2071 = phi ptr [ @.str.5, %4234 ], [ @.str.2, %4230 ]
  store i32 %4225, ptr %4224, align 4, !tbaa !5
  %4236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4237 = load i32, ptr @test_count, align 4, !tbaa !5
  %4238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4239 = load i32, ptr %4238, align 4, !tbaa !5
  %4240 = call ptr @s2n_strerror(i32 noundef %4239, ptr noundef nonnull @.str.4) #14
  %4241 = load i32, ptr %4238, align 4, !tbaa !5
  %4242 = call ptr @s2n_strerror_debug(i32 noundef %4241, ptr noundef nonnull @.str.4) #14
  %4243 = load i32, ptr %4224, align 4, !tbaa !5
  %4244 = call ptr @strerror(i32 noundef %4243) #14
  %4245 = load i32, ptr %4224, align 4, !tbaa !5
  %4246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4236, ptr noundef nonnull %.str.5.sink2071, i32 noundef %4237, ptr noundef nonnull @.str.108, ptr noundef nonnull @.str.1, i32 noundef 1350, ptr noundef %4240, ptr noundef %4242, ptr noundef %4244, i32 noundef %4245) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4247:                                             ; preds = %4216
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %90) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %89) #14
  call void @llvm.lifetime.end.p0(i64 51, ptr nonnull %88) #14
  call void @llvm.lifetime.start.p0(i64 47, ptr nonnull %91) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(47) %91, i8 0, i64 47, i1 false)
  store i8 1, ptr %91, align 16
  %4248 = getelementptr inbounds i8, ptr %91, i64 3
  store i8 43, ptr %4248, align 1
  %4249 = getelementptr inbounds i8, ptr %91, i64 40
  store i8 2, ptr %4249, align 8
  %4250 = getelementptr inbounds i8, ptr %91, i64 43
  store i8 1, ptr %4250, align 1
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %92) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %92, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %93) #14
  store i32 0, ptr %93, align 4, !tbaa !5
  %4251 = add nsw i32 %4188, 4
  store i32 %4251, ptr @test_count, align 4, !tbaa !5
  %4252 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %91, i64 noundef 47, i64 noundef 200, ptr noundef nonnull %92, ptr noundef nonnull %93)
  %4253 = call zeroext i1 @s2n_result_is_ok(i32 %4252)
  br i1 %4253, label %4278, label %4254

4254:                                             ; preds = %4247
  %4255 = tail call ptr @__errno_location() #15
  %4256 = load i32, ptr %4255, align 4, !tbaa !5
  %4257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4258 = call i32 @s2n_print_stacktrace(ptr noundef %4257) #14
  %4259 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4260 = trunc nuw i8 %4259 to i1
  br i1 %4260, label %4261, label %4265

4261:                                             ; preds = %4254
  %4262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4263 = call i32 @fileno(ptr noundef %4262) #14
  %4264 = call i32 @isatty(i32 noundef %4263) #14
  %.not605 = icmp eq i32 %4264, 0
  br i1 %.not605, label %4265, label %4266

4265:                                             ; preds = %4261, %4254
  br label %4266

4266:                                             ; preds = %4261, %4265
  %.str.5.sink2082 = phi ptr [ @.str.5, %4265 ], [ @.str.2, %4261 ]
  store i32 %4256, ptr %4255, align 4, !tbaa !5
  %4267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4268 = load i32, ptr @test_count, align 4, !tbaa !5
  %4269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4270 = load i32, ptr %4269, align 4, !tbaa !5
  %4271 = call ptr @s2n_strerror(i32 noundef %4270, ptr noundef nonnull @.str.4) #14
  %4272 = load i32, ptr %4269, align 4, !tbaa !5
  %4273 = call ptr @s2n_strerror_debug(i32 noundef %4272, ptr noundef nonnull @.str.4) #14
  %4274 = load i32, ptr %4255, align 4, !tbaa !5
  %4275 = call ptr @strerror(i32 noundef %4274) #14
  %4276 = load i32, ptr %4255, align 4, !tbaa !5
  %4277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4267, ptr noundef nonnull %.str.5.sink2082, i32 noundef %4268, ptr noundef nonnull @.str.89, ptr noundef nonnull @.str.1, i32 noundef 1365, ptr noundef %4271, ptr noundef %4273, ptr noundef %4275, i32 noundef %4276) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4278:                                             ; preds = %4247
  %4279 = load i32, ptr @test_count, align 4, !tbaa !5
  %4280 = add nsw i32 %4279, 1
  store i32 %4280, ptr @test_count, align 4, !tbaa !5
  %4281 = load i32, ptr %93, align 4, !tbaa !5
  %4282 = icmp ugt i32 %4281, 1
  br i1 %4282, label %4307, label %4283

4283:                                             ; preds = %4278
  %4284 = tail call ptr @__errno_location() #15
  %4285 = load i32, ptr %4284, align 4, !tbaa !5
  %4286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4287 = call i32 @s2n_print_stacktrace(ptr noundef %4286) #14
  %4288 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4289 = trunc nuw i8 %4288 to i1
  br i1 %4289, label %4290, label %4294

4290:                                             ; preds = %4283
  %4291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4292 = call i32 @fileno(ptr noundef %4291) #14
  %4293 = call i32 @isatty(i32 noundef %4292) #14
  %.not606 = icmp eq i32 %4293, 0
  br i1 %.not606, label %4294, label %4295

4294:                                             ; preds = %4290, %4283
  br label %4295

4295:                                             ; preds = %4290, %4294
  %.str.5.sink2093 = phi ptr [ @.str.5, %4294 ], [ @.str.2, %4290 ]
  store i32 %4285, ptr %4284, align 4, !tbaa !5
  %4296 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4297 = load i32, ptr @test_count, align 4, !tbaa !5
  %4298 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4299 = load i32, ptr %4298, align 4, !tbaa !5
  %4300 = call ptr @s2n_strerror(i32 noundef %4299, ptr noundef nonnull @.str.4) #14
  %4301 = load i32, ptr %4298, align 4, !tbaa !5
  %4302 = call ptr @s2n_strerror_debug(i32 noundef %4301, ptr noundef nonnull @.str.4) #14
  %4303 = load i32, ptr %4284, align 4, !tbaa !5
  %4304 = call ptr @strerror(i32 noundef %4303) #14
  %4305 = load i32, ptr %4284, align 4, !tbaa !5
  %4306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4296, ptr noundef nonnull %.str.5.sink2093, i32 noundef %4297, ptr noundef nonnull @.str.107, ptr noundef nonnull @.str.1, i32 noundef 1368, ptr noundef %4300, ptr noundef %4302, ptr noundef %4304, i32 noundef %4305) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4307:                                             ; preds = %4278
  %4308 = add nsw i32 %4279, 2
  store i32 %4308, ptr @test_count, align 4, !tbaa !5
  %4309 = add i32 %4281, -1
  %4310 = zext i32 %4309 to i64
  %4311 = getelementptr inbounds [200 x i8], ptr %92, i64 0, i64 %4310
  %4312 = load i8, ptr %4311, align 1, !tbaa !15
  %4313 = icmp eq i8 %4312, 95
  br i1 %4313, label %.lr.ph.preheader, label %4325

.lr.ph.preheader:                                 ; preds = %4307
  %4314 = zext i32 %4281 to i64
  %min.iters.check = icmp ult i32 %4281, 4
  br i1 %min.iters.check, label %.lr.ph.preheader2241, label %vector.ph

.lr.ph.preheader2241:                             ; preds = %middle.block, %.lr.ph.preheader
  %.0494666.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  %.0495665.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %4324, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %4314, 4294967292
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %4321, %vector.body ]
  %vec.phi2239 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %4322, %vector.body ]
  %4315 = getelementptr inbounds [200 x i8], ptr %92, i64 0, i64 %index
  %4316 = getelementptr inbounds i8, ptr %4315, i64 2
  %wide.load = load <2 x i8>, ptr %4315, align 4, !tbaa !15
  %wide.load2240 = load <2 x i8>, ptr %4316, align 2, !tbaa !15
  %4317 = icmp eq <2 x i8> %wide.load, <i8 95, i8 95>
  %4318 = icmp eq <2 x i8> %wide.load2240, <i8 95, i8 95>
  %4319 = zext <2 x i1> %4317 to <2 x i64>
  %4320 = zext <2 x i1> %4318 to <2 x i64>
  %4321 = add <2 x i64> %vec.phi, %4319
  %4322 = add <2 x i64> %vec.phi2239, %4320
  %index.next = add nuw i64 %index, 4
  %4323 = icmp eq i64 %index.next, %n.vec
  br i1 %4323, label %middle.block, label %vector.body, !llvm.loop !37

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %4322, %4321
  %4324 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %n.vec, %4314
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader2241

4325:                                             ; preds = %4307
  %4326 = tail call ptr @__errno_location() #15
  %4327 = load i32, ptr %4326, align 4, !tbaa !5
  %4328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4329 = call i32 @s2n_print_stacktrace(ptr noundef %4328) #14
  %4330 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4331 = trunc nuw i8 %4330 to i1
  br i1 %4331, label %4332, label %4336

4332:                                             ; preds = %4325
  %4333 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4334 = call i32 @fileno(ptr noundef %4333) #14
  %4335 = call i32 @isatty(i32 noundef %4334) #14
  %.not607 = icmp eq i32 %4335, 0
  br i1 %.not607, label %4336, label %4337

4336:                                             ; preds = %4332, %4325
  br label %4337

4337:                                             ; preds = %4332, %4336
  %.str.5.sink2104 = phi ptr [ @.str.5, %4336 ], [ @.str.2, %4332 ]
  store i32 %4327, ptr %4326, align 4, !tbaa !5
  %4338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4339 = load i32, ptr @test_count, align 4, !tbaa !5
  %4340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4341 = load i32, ptr %4340, align 4, !tbaa !5
  %4342 = call ptr @s2n_strerror(i32 noundef %4341, ptr noundef nonnull @.str.4) #14
  %4343 = load i32, ptr %4340, align 4, !tbaa !5
  %4344 = call ptr @s2n_strerror_debug(i32 noundef %4343, ptr noundef nonnull @.str.4) #14
  %4345 = load i32, ptr %4326, align 4, !tbaa !5
  %4346 = call ptr @strerror(i32 noundef %4345) #14
  %4347 = load i32, ptr %4326, align 4, !tbaa !5
  %4348 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4338, ptr noundef nonnull %.str.5.sink2104, i32 noundef %4339, ptr noundef nonnull @.str.109, ptr noundef nonnull @.str.1, i32 noundef 1369, ptr noundef %4342, ptr noundef %4344, ptr noundef %4346, i32 noundef %4347) #16
  call void @exit(i32 noundef 1) #17
  unreachable

._crit_edge:                                      ; preds = %.lr.ph, %middle.block
  %spec.select.lcssa = phi i64 [ %4324, %middle.block ], [ %spec.select, %.lr.ph ]
  %4349 = add nsw i32 %4279, 3
  store i32 %4349, ptr @test_count, align 4, !tbaa !5
  %4350 = icmp eq i64 %spec.select.lcssa, 2
  br i1 %4350, label %4380, label %4356

.lr.ph:                                           ; preds = %.lr.ph.preheader2241, %.lr.ph
  %.0494666 = phi i64 [ %4355, %.lr.ph ], [ %.0494666.ph, %.lr.ph.preheader2241 ]
  %.0495665 = phi i64 [ %spec.select, %.lr.ph ], [ %.0495665.ph, %.lr.ph.preheader2241 ]
  %4351 = getelementptr inbounds [200 x i8], ptr %92, i64 0, i64 %.0494666
  %4352 = load i8, ptr %4351, align 1, !tbaa !15
  %4353 = icmp eq i8 %4352, 95
  %4354 = zext i1 %4353 to i64
  %spec.select = add i64 %.0495665, %4354
  %4355 = add nuw nsw i64 %.0494666, 1
  %exitcond671.not = icmp eq i64 %4355, %4314
  br i1 %exitcond671.not, label %._crit_edge, label %.lr.ph, !llvm.loop !40

4356:                                             ; preds = %._crit_edge
  %4357 = tail call ptr @__errno_location() #15
  %4358 = load i32, ptr %4357, align 4, !tbaa !5
  %4359 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4360 = call i32 @s2n_print_stacktrace(ptr noundef %4359) #14
  %4361 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4362 = trunc nuw i8 %4361 to i1
  br i1 %4362, label %4363, label %4367

4363:                                             ; preds = %4356
  %4364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4365 = call i32 @fileno(ptr noundef %4364) #14
  %4366 = call i32 @isatty(i32 noundef %4365) #14
  %.not608 = icmp eq i32 %4366, 0
  br i1 %.not608, label %4367, label %4368

4367:                                             ; preds = %4363, %4356
  br label %4368

4368:                                             ; preds = %4363, %4367
  %.str.5.sink2115 = phi ptr [ @.str.5, %4367 ], [ @.str.2, %4363 ]
  store i32 %4358, ptr %4357, align 4, !tbaa !5
  %4369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4370 = load i32, ptr @test_count, align 4, !tbaa !5
  %4371 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4372 = load i32, ptr %4371, align 4, !tbaa !5
  %4373 = call ptr @s2n_strerror(i32 noundef %4372, ptr noundef nonnull @.str.4) #14
  %4374 = load i32, ptr %4371, align 4, !tbaa !5
  %4375 = call ptr @s2n_strerror_debug(i32 noundef %4374, ptr noundef nonnull @.str.4) #14
  %4376 = load i32, ptr %4357, align 4, !tbaa !5
  %4377 = call ptr @strerror(i32 noundef %4376) #14
  %4378 = load i32, ptr %4357, align 4, !tbaa !5
  %4379 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4369, ptr noundef nonnull %.str.5.sink2115, i32 noundef %4370, ptr noundef nonnull @.str.110, ptr noundef nonnull @.str.1, i32 noundef 1381, ptr noundef %4373, ptr noundef %4375, ptr noundef %4377, i32 noundef %4378) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4380:                                             ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %93) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %92) #14
  call void @llvm.lifetime.end.p0(i64 47, ptr nonnull %91) #14
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %94) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %94, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %95) #14
  store i32 0, ptr %95, align 4, !tbaa !5
  %4381 = add nsw i32 %4279, 4
  store i32 %4381, ptr @test_count, align 4, !tbaa !5
  %4382 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %3, i64 noundef 47, i64 noundef 200, ptr noundef nonnull %94, ptr noundef nonnull %95)
  %4383 = call zeroext i1 @s2n_result_is_ok(i32 %4382)
  br i1 %4383, label %4408, label %4384

4384:                                             ; preds = %4380
  %4385 = tail call ptr @__errno_location() #15
  %4386 = load i32, ptr %4385, align 4, !tbaa !5
  %4387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4388 = call i32 @s2n_print_stacktrace(ptr noundef %4387) #14
  %4389 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4390 = trunc nuw i8 %4389 to i1
  br i1 %4390, label %4391, label %4395

4391:                                             ; preds = %4384
  %4392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4393 = call i32 @fileno(ptr noundef %4392) #14
  %4394 = call i32 @isatty(i32 noundef %4393) #14
  %.not609 = icmp eq i32 %4394, 0
  br i1 %.not609, label %4395, label %4396

4395:                                             ; preds = %4391, %4384
  br label %4396

4396:                                             ; preds = %4391, %4395
  %.str.5.sink2126 = phi ptr [ @.str.5, %4395 ], [ @.str.2, %4391 ]
  store i32 %4386, ptr %4385, align 4, !tbaa !5
  %4397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4398 = load i32, ptr @test_count, align 4, !tbaa !5
  %4399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4400 = load i32, ptr %4399, align 4, !tbaa !5
  %4401 = call ptr @s2n_strerror(i32 noundef %4400, ptr noundef nonnull @.str.4) #14
  %4402 = load i32, ptr %4399, align 4, !tbaa !5
  %4403 = call ptr @s2n_strerror_debug(i32 noundef %4402, ptr noundef nonnull @.str.4) #14
  %4404 = load i32, ptr %4385, align 4, !tbaa !5
  %4405 = call ptr @strerror(i32 noundef %4404) #14
  %4406 = load i32, ptr %4385, align 4, !tbaa !5
  %4407 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4397, ptr noundef nonnull %.str.5.sink2126, i32 noundef %4398, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 1399, ptr noundef %4401, ptr noundef %4403, ptr noundef %4405, i32 noundef %4406) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4408:                                             ; preds = %4380
  %4409 = load i32, ptr @test_count, align 4, !tbaa !5
  %4410 = add nsw i32 %4409, 1
  store i32 %4410, ptr @test_count, align 4, !tbaa !5
  %4411 = load i32, ptr %95, align 4, !tbaa !5
  %4412 = icmp ugt i32 %4411, 24
  br i1 %4412, label %4437, label %4413

4413:                                             ; preds = %4408
  %4414 = tail call ptr @__errno_location() #15
  %4415 = load i32, ptr %4414, align 4, !tbaa !5
  %4416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4417 = call i32 @s2n_print_stacktrace(ptr noundef %4416) #14
  %4418 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4419 = trunc nuw i8 %4418 to i1
  br i1 %4419, label %4420, label %4424

4420:                                             ; preds = %4413
  %4421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4422 = call i32 @fileno(ptr noundef %4421) #14
  %4423 = call i32 @isatty(i32 noundef %4422) #14
  %.not610 = icmp eq i32 %4423, 0
  br i1 %.not610, label %4424, label %4425

4424:                                             ; preds = %4420, %4413
  br label %4425

4425:                                             ; preds = %4420, %4424
  %.str.5.sink2137 = phi ptr [ @.str.5, %4424 ], [ @.str.2, %4420 ]
  store i32 %4415, ptr %4414, align 4, !tbaa !5
  %4426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4427 = load i32, ptr @test_count, align 4, !tbaa !5
  %4428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4429 = load i32, ptr %4428, align 4, !tbaa !5
  %4430 = call ptr @s2n_strerror(i32 noundef %4429, ptr noundef nonnull @.str.4) #14
  %4431 = load i32, ptr %4428, align 4, !tbaa !5
  %4432 = call ptr @s2n_strerror_debug(i32 noundef %4431, ptr noundef nonnull @.str.4) #14
  %4433 = load i32, ptr %4414, align 4, !tbaa !5
  %4434 = call ptr @strerror(i32 noundef %4433) #14
  %4435 = load i32, ptr %4414, align 4, !tbaa !5
  %4436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4426, ptr noundef nonnull %.str.5.sink2137, i32 noundef %4427, ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.1, i32 noundef 1401, ptr noundef %4430, ptr noundef %4432, ptr noundef %4434, i32 noundef %4435) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4437:                                             ; preds = %4408
  %4438 = add nsw i32 %4409, 2
  store i32 %4438, ptr @test_count, align 4, !tbaa !5
  %4439 = icmp ugt i32 %4411, 35
  br i1 %4439, label %4464, label %4440

4440:                                             ; preds = %4437
  %4441 = tail call ptr @__errno_location() #15
  %4442 = load i32, ptr %4441, align 4, !tbaa !5
  %4443 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4444 = call i32 @s2n_print_stacktrace(ptr noundef %4443) #14
  %4445 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4446 = trunc nuw i8 %4445 to i1
  br i1 %4446, label %4447, label %4451

4447:                                             ; preds = %4440
  %4448 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4449 = call i32 @fileno(ptr noundef %4448) #14
  %4450 = call i32 @isatty(i32 noundef %4449) #14
  %.not611 = icmp eq i32 %4450, 0
  br i1 %.not611, label %4451, label %4452

4451:                                             ; preds = %4447, %4440
  br label %4452

4452:                                             ; preds = %4447, %4451
  %.str.5.sink2148 = phi ptr [ @.str.5, %4451 ], [ @.str.2, %4447 ]
  store i32 %4442, ptr %4441, align 4, !tbaa !5
  %4453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4454 = load i32, ptr @test_count, align 4, !tbaa !5
  %4455 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4456 = load i32, ptr %4455, align 4, !tbaa !5
  %4457 = call ptr @s2n_strerror(i32 noundef %4456, ptr noundef nonnull @.str.4) #14
  %4458 = load i32, ptr %4455, align 4, !tbaa !5
  %4459 = call ptr @s2n_strerror_debug(i32 noundef %4458, ptr noundef nonnull @.str.4) #14
  %4460 = load i32, ptr %4441, align 4, !tbaa !5
  %4461 = call ptr @strerror(i32 noundef %4460) #14
  %4462 = load i32, ptr %4441, align 4, !tbaa !5
  %4463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4453, ptr noundef nonnull %.str.5.sink2148, i32 noundef %4454, ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.1, i32 noundef 1403, ptr noundef %4457, ptr noundef %4459, ptr noundef %4461, i32 noundef %4462) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4464:                                             ; preds = %4437
  %4465 = getelementptr inbounds i8, ptr %94, i64 24
  %4466 = add nsw i32 %4409, 3
  store i32 %4466, ptr @test_count, align 4, !tbaa !5
  %bcmp612 = call i32 @bcmp(ptr noundef nonnull dereferenceable(12) %4465, ptr noundef nonnull dereferenceable(12) @__const.main.expected.111, i64 12)
  %4467 = icmp eq i32 %bcmp612, 0
  br i1 %4467, label %4492, label %4468

4468:                                             ; preds = %4464
  %4469 = tail call ptr @__errno_location() #15
  %4470 = load i32, ptr %4469, align 4, !tbaa !5
  %4471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4472 = call i32 @s2n_print_stacktrace(ptr noundef %4471) #14
  %4473 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4474 = trunc nuw i8 %4473 to i1
  br i1 %4474, label %4475, label %4479

4475:                                             ; preds = %4468
  %4476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4477 = call i32 @fileno(ptr noundef %4476) #14
  %4478 = call i32 @isatty(i32 noundef %4477) #14
  %.not613 = icmp eq i32 %4478, 0
  br i1 %.not613, label %4479, label %4480

4479:                                             ; preds = %4475, %4468
  br label %4480

4480:                                             ; preds = %4475, %4479
  %.str.5.sink2159 = phi ptr [ @.str.5, %4479 ], [ @.str.2, %4475 ]
  store i32 %4470, ptr %4469, align 4, !tbaa !5
  %4481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4482 = load i32, ptr @test_count, align 4, !tbaa !5
  %4483 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4484 = load i32, ptr %4483, align 4, !tbaa !5
  %4485 = call ptr @s2n_strerror(i32 noundef %4484, ptr noundef nonnull @.str.4) #14
  %4486 = load i32, ptr %4483, align 4, !tbaa !5
  %4487 = call ptr @s2n_strerror_debug(i32 noundef %4486, ptr noundef nonnull @.str.4) #14
  %4488 = load i32, ptr %4469, align 4, !tbaa !5
  %4489 = call ptr @strerror(i32 noundef %4488) #14
  %4490 = load i32, ptr %4469, align 4, !tbaa !5
  %4491 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4481, ptr noundef nonnull %.str.5.sink2159, i32 noundef %4482, ptr noundef nonnull @.str.102, ptr noundef nonnull @.str.1, i32 noundef 1404, ptr noundef %4485, ptr noundef %4487, ptr noundef %4489, i32 noundef %4490) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4492:                                             ; preds = %4464
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %95) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %94) #14
  call void @llvm.lifetime.end.p0(i64 70, ptr nonnull %80) #14
  call void @llvm.lifetime.end.p0(i64 129, ptr nonnull %79) #14
  call void @llvm.lifetime.start.p0(i64 59, ptr nonnull %96) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(59) %96, ptr noundef nonnull align 16 dereferenceable(59) @__const.main.client_hello_bytes.112, i64 59, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %97) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %97, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %98) #14
  store i32 0, ptr %98, align 4, !tbaa !5
  %4493 = add nsw i32 %4409, 5
  store i32 %4493, ptr @test_count, align 4, !tbaa !5
  %4494 = call i32 @s2n_test_ja4_raw_from_bytes(ptr noundef nonnull %96, i64 noundef 59, i64 noundef 200, ptr noundef nonnull %97, ptr noundef nonnull %98)
  %4495 = call zeroext i1 @s2n_result_is_ok(i32 %4494)
  br i1 %4495, label %4520, label %4496

4496:                                             ; preds = %4492
  %4497 = tail call ptr @__errno_location() #15
  %4498 = load i32, ptr %4497, align 4, !tbaa !5
  %4499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4500 = call i32 @s2n_print_stacktrace(ptr noundef %4499) #14
  %4501 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4502 = trunc nuw i8 %4501 to i1
  br i1 %4502, label %4503, label %4507

4503:                                             ; preds = %4496
  %4504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4505 = call i32 @fileno(ptr noundef %4504) #14
  %4506 = call i32 @isatty(i32 noundef %4505) #14
  %.not614 = icmp eq i32 %4506, 0
  br i1 %.not614, label %4507, label %4508

4507:                                             ; preds = %4503, %4496
  br label %4508

4508:                                             ; preds = %4503, %4507
  %.str.5.sink2170 = phi ptr [ @.str.5, %4507 ], [ @.str.2, %4503 ]
  store i32 %4498, ptr %4497, align 4, !tbaa !5
  %4509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4510 = load i32, ptr @test_count, align 4, !tbaa !5
  %4511 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4512 = load i32, ptr %4511, align 4, !tbaa !5
  %4513 = call ptr @s2n_strerror(i32 noundef %4512, ptr noundef nonnull @.str.4) #14
  %4514 = load i32, ptr %4511, align 4, !tbaa !5
  %4515 = call ptr @s2n_strerror_debug(i32 noundef %4514, ptr noundef nonnull @.str.4) #14
  %4516 = load i32, ptr %4497, align 4, !tbaa !5
  %4517 = call ptr @strerror(i32 noundef %4516) #14
  %4518 = load i32, ptr %4497, align 4, !tbaa !5
  %4519 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4509, ptr noundef nonnull %.str.5.sink2170, i32 noundef %4510, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.1, i32 noundef 1431, ptr noundef %4513, ptr noundef %4515, ptr noundef %4517, i32 noundef %4518) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4520:                                             ; preds = %4492
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %98) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %97) #14
  call void @llvm.lifetime.end.p0(i64 59, ptr nonnull %96) #14
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %99) #14
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %99, ptr noundef nonnull align 16 dereferenceable(512) @__const.main.packet_bytes, i64 512, i1 false)
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %100) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(200) %100, i8 0, i64 200, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %101) #14
  store i32 0, ptr %101, align 4, !tbaa !5
  %4521 = load i32, ptr @test_count, align 4, !tbaa !5
  %4522 = add nsw i32 %4521, 1
  store i32 %4522, ptr @test_count, align 4, !tbaa !5
  %4523 = call i32 @s2n_test_ja4_hash_from_bytes(ptr noundef nonnull %99, i64 noundef 512, i64 noundef 200, ptr noundef nonnull %100, ptr noundef nonnull %101)
  %4524 = call zeroext i1 @s2n_result_is_ok(i32 %4523)
  br i1 %4524, label %4549, label %4525

4525:                                             ; preds = %4520
  %4526 = tail call ptr @__errno_location() #15
  %4527 = load i32, ptr %4526, align 4, !tbaa !5
  %4528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4529 = call i32 @s2n_print_stacktrace(ptr noundef %4528) #14
  %4530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4531 = trunc nuw i8 %4530 to i1
  br i1 %4531, label %4532, label %4536

4532:                                             ; preds = %4525
  %4533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4534 = call i32 @fileno(ptr noundef %4533) #14
  %4535 = call i32 @isatty(i32 noundef %4534) #14
  %.not615 = icmp eq i32 %4535, 0
  br i1 %.not615, label %4536, label %4537

4536:                                             ; preds = %4532, %4525
  br label %4537

4537:                                             ; preds = %4532, %4536
  %.str.5.sink2181 = phi ptr [ @.str.5, %4536 ], [ @.str.2, %4532 ]
  store i32 %4527, ptr %4526, align 4, !tbaa !5
  %4538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4539 = load i32, ptr @test_count, align 4, !tbaa !5
  %4540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4541 = load i32, ptr %4540, align 4, !tbaa !5
  %4542 = call ptr @s2n_strerror(i32 noundef %4541, ptr noundef nonnull @.str.4) #14
  %4543 = load i32, ptr %4540, align 4, !tbaa !5
  %4544 = call ptr @s2n_strerror_debug(i32 noundef %4543, ptr noundef nonnull @.str.4) #14
  %4545 = load i32, ptr %4526, align 4, !tbaa !5
  %4546 = call ptr @strerror(i32 noundef %4545) #14
  %4547 = load i32, ptr %4526, align 4, !tbaa !5
  %4548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4538, ptr noundef nonnull %.str.5.sink2181, i32 noundef %4539, ptr noundef nonnull @.str.114, ptr noundef nonnull @.str.1, i32 noundef 1511, ptr noundef %4542, ptr noundef %4544, ptr noundef %4546, i32 noundef %4547) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4549:                                             ; preds = %4520
  %4550 = load i32, ptr @test_count, align 4, !tbaa !5
  %4551 = add nsw i32 %4550, 1
  store i32 %4551, ptr @test_count, align 4, !tbaa !5
  %4552 = load i32, ptr %101, align 4, !tbaa !5
  %4553 = icmp eq i32 %4552, 36
  br i1 %4553, label %4578, label %4554

4554:                                             ; preds = %4549
  %4555 = tail call ptr @__errno_location() #15
  %4556 = load i32, ptr %4555, align 4, !tbaa !5
  %4557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4558 = call i32 @s2n_print_stacktrace(ptr noundef %4557) #14
  %4559 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4560 = trunc nuw i8 %4559 to i1
  br i1 %4560, label %4561, label %4565

4561:                                             ; preds = %4554
  %4562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4563 = call i32 @fileno(ptr noundef %4562) #14
  %4564 = call i32 @isatty(i32 noundef %4563) #14
  %.not616 = icmp eq i32 %4564, 0
  br i1 %.not616, label %4565, label %4566

4565:                                             ; preds = %4561, %4554
  br label %4566

4566:                                             ; preds = %4561, %4565
  %.str.5.sink2192 = phi ptr [ @.str.5, %4565 ], [ @.str.2, %4561 ]
  store i32 %4556, ptr %4555, align 4, !tbaa !5
  %4567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4568 = load i32, ptr @test_count, align 4, !tbaa !5
  %4569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4570 = load i32, ptr %4569, align 4, !tbaa !5
  %4571 = call ptr @s2n_strerror(i32 noundef %4570, ptr noundef nonnull @.str.4) #14
  %4572 = load i32, ptr %4569, align 4, !tbaa !5
  %4573 = call ptr @s2n_strerror_debug(i32 noundef %4572, ptr noundef nonnull @.str.4) #14
  %4574 = load i32, ptr %4555, align 4, !tbaa !5
  %4575 = call ptr @strerror(i32 noundef %4574) #14
  %4576 = load i32, ptr %4555, align 4, !tbaa !5
  %4577 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4567, ptr noundef nonnull %.str.5.sink2192, i32 noundef %4568, ptr noundef nonnull @.str.116, ptr noundef nonnull @.str.1, i32 noundef 1514, ptr noundef %4571, ptr noundef %4573, ptr noundef %4575, i32 noundef %4576) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4578:                                             ; preds = %4549
  %4579 = add nsw i32 %4550, 2
  store i32 %4579, ptr @test_count, align 4, !tbaa !5
  %bcmp617 = call i32 @bcmp(ptr noundef nonnull dereferenceable(36) @__const.main.expected.115, ptr noundef nonnull dereferenceable(36) %100, i64 36)
  %4580 = icmp eq i32 %bcmp617, 0
  br i1 %4580, label %4605, label %4581

4581:                                             ; preds = %4578
  %4582 = tail call ptr @__errno_location() #15
  %4583 = load i32, ptr %4582, align 4, !tbaa !5
  %4584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4585 = call i32 @s2n_print_stacktrace(ptr noundef %4584) #14
  %4586 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4587 = trunc nuw i8 %4586 to i1
  br i1 %4587, label %4588, label %4592

4588:                                             ; preds = %4581
  %4589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4590 = call i32 @fileno(ptr noundef %4589) #14
  %4591 = call i32 @isatty(i32 noundef %4590) #14
  %.not618 = icmp eq i32 %4591, 0
  br i1 %.not618, label %4592, label %4593

4592:                                             ; preds = %4588, %4581
  br label %4593

4593:                                             ; preds = %4588, %4592
  %.str.5.sink2203 = phi ptr [ @.str.5, %4592 ], [ @.str.2, %4588 ]
  store i32 %4583, ptr %4582, align 4, !tbaa !5
  %4594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4595 = load i32, ptr @test_count, align 4, !tbaa !5
  %4596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4597 = load i32, ptr %4596, align 4, !tbaa !5
  %4598 = call ptr @s2n_strerror(i32 noundef %4597, ptr noundef nonnull @.str.4) #14
  %4599 = load i32, ptr %4596, align 4, !tbaa !5
  %4600 = call ptr @s2n_strerror_debug(i32 noundef %4599, ptr noundef nonnull @.str.4) #14
  %4601 = load i32, ptr %4582, align 4, !tbaa !5
  %4602 = call ptr @strerror(i32 noundef %4601) #14
  %4603 = load i32, ptr %4582, align 4, !tbaa !5
  %4604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4594, ptr noundef nonnull %.str.5.sink2203, i32 noundef %4595, ptr noundef nonnull @.str.117, ptr noundef nonnull @.str.1, i32 noundef 1515, ptr noundef %4598, ptr noundef %4600, ptr noundef %4602, i32 noundef %4603) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4605:                                             ; preds = %4578
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %101) #14
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %100) #14
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %99) #14
  %4606 = call i32 @s2n_cleanup() #14
  %4607 = icmp eq i32 %4606, -1
  br i1 %4607, label %4608, label %4632

4608:                                             ; preds = %4605
  %4609 = tail call ptr @__errno_location() #15
  %4610 = load i32, ptr %4609, align 4, !tbaa !5
  %4611 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4612 = call i32 @s2n_print_stacktrace(ptr noundef %4611) #14
  %4613 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4614 = trunc nuw i8 %4613 to i1
  br i1 %4614, label %4615, label %4619

4615:                                             ; preds = %4608
  %4616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4617 = call i32 @fileno(ptr noundef %4616) #14
  %4618 = call i32 @isatty(i32 noundef %4617) #14
  %.not623 = icmp eq i32 %4618, 0
  br i1 %.not623, label %4619, label %4620

4619:                                             ; preds = %4615, %4608
  br label %4620

4620:                                             ; preds = %4615, %4619
  %.str.5.sink2214 = phi ptr [ @.str.5, %4619 ], [ @.str.2, %4615 ]
  store i32 %4610, ptr %4609, align 4, !tbaa !5
  %4621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4622 = load i32, ptr @test_count, align 4, !tbaa !5
  %4623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4624 = load i32, ptr %4623, align 4, !tbaa !5
  %4625 = call ptr @s2n_strerror(i32 noundef %4624, ptr noundef nonnull @.str.4) #14
  %4626 = load i32, ptr %4623, align 4, !tbaa !5
  %4627 = call ptr @s2n_strerror_debug(i32 noundef %4626, ptr noundef nonnull @.str.4) #14
  %4628 = load i32, ptr %4609, align 4, !tbaa !5
  %4629 = call ptr @strerror(i32 noundef %4628) #14
  %4630 = load i32, ptr %4609, align 4, !tbaa !5
  %4631 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4621, ptr noundef nonnull %.str.5.sink2214, i32 noundef %4622, ptr noundef nonnull @.str.118, ptr noundef nonnull @.str.1, i32 noundef 1519, ptr noundef %4625, ptr noundef %4627, ptr noundef %4629, i32 noundef %4630) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4632:                                             ; preds = %4605
  %4633 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #14
  %4634 = icmp eq i32 %4633, -1
  br i1 %4634, label %4635, label %4659

4635:                                             ; preds = %4632
  %4636 = tail call ptr @__errno_location() #15
  %4637 = load i32, ptr %4636, align 4, !tbaa !5
  %4638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4639 = call i32 @s2n_print_stacktrace(ptr noundef %4638) #14
  %4640 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4641 = trunc nuw i8 %4640 to i1
  br i1 %4641, label %4642, label %4646

4642:                                             ; preds = %4635
  %4643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4644 = call i32 @fileno(ptr noundef %4643) #14
  %4645 = call i32 @isatty(i32 noundef %4644) #14
  %.not622 = icmp eq i32 %4645, 0
  br i1 %.not622, label %4646, label %4647

4646:                                             ; preds = %4642, %4635
  br label %4647

4647:                                             ; preds = %4642, %4646
  %.str.5.sink2225 = phi ptr [ @.str.5, %4646 ], [ @.str.2, %4642 ]
  store i32 %4637, ptr %4636, align 4, !tbaa !5
  %4648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4649 = load i32, ptr @test_count, align 4, !tbaa !5
  %4650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4651 = load i32, ptr %4650, align 4, !tbaa !5
  %4652 = call ptr @s2n_strerror(i32 noundef %4651, ptr noundef nonnull @.str.4) #14
  %4653 = load i32, ptr %4650, align 4, !tbaa !5
  %4654 = call ptr @s2n_strerror_debug(i32 noundef %4653, ptr noundef nonnull @.str.4) #14
  %4655 = load i32, ptr %4636, align 4, !tbaa !5
  %4656 = call ptr @strerror(i32 noundef %4655) #14
  %4657 = load i32, ptr %4636, align 4, !tbaa !5
  %4658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4648, ptr noundef nonnull %.str.5.sink2225, i32 noundef %4649, ptr noundef nonnull @.str.119, ptr noundef nonnull @.str.1, i32 noundef 1519, ptr noundef %4652, ptr noundef %4654, ptr noundef %4656, i32 noundef %4657) #16
  call void @exit(i32 noundef 1) #17
  unreachable

4659:                                             ; preds = %4632
  %4660 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4661 = trunc nuw i8 %4660 to i1
  br i1 %4661, label %4662, label %4673

4662:                                             ; preds = %4659
  %4663 = load ptr, ptr @stdout, align 8, !tbaa !9
  %4664 = call i32 @fileno(ptr noundef %4663) #14
  %4665 = call i32 @isatty(i32 noundef %4664) #14
  %.not619 = icmp eq i32 %4665, 0
  br i1 %.not619, label %4673, label %4666

4666:                                             ; preds = %4662
  %4667 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not621 = icmp eq i32 %4667, 0
  %4668 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not621, label %4671, label %4669

4669:                                             ; preds = %4666
  %4670 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4668, ptr noundef nonnull @.str.120, i32 noundef %4667) #14
  br label %4680

4671:                                             ; preds = %4666
  %4672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4668, ptr noundef nonnull @.str.121) #14
  br label %4680

4673:                                             ; preds = %4662, %4659
  %4674 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not620 = icmp eq i32 %4674, 0
  %4675 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not620, label %4678, label %4676

4676:                                             ; preds = %4673
  %4677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4675, ptr noundef nonnull @.str.122, i32 noundef %4674) #14
  br label %4680

4678:                                             ; preds = %4673
  %4679 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4675, ptr noundef nonnull @.str.123) #14
  br label %4680

4680:                                             ; preds = %4676, %4678, %4669, %4671
  %4681 = call i32 @s2n_client_hello_free(ptr noundef nonnull %4) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  call void @llvm.lifetime.end.p0(i64 47, ptr nonnull %3) #14
  ret i32 0
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare i32 @s2n_client_hello_free(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @s2n_fingerprint_free(ptr noundef) local_unnamed_addr #2

declare ptr @s2n_fingerprint_new(i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #11

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #13

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #11 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #12 = { nofree nounwind willreturn memory(argmem: read) }
attributes #13 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #14 = { nounwind }
attributes #15 = { nounwind willreturn memory(none) }
attributes #16 = { cold nounwind }
attributes #17 = { noreturn nounwind }
attributes #18 = { 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, !10, i64 8}
!17 = !{!"", !7, i64 0, !7, i64 2, !10, i64 8}
!18 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 1, !15, i64 24, i64 672, !15, i64 696, i64 8, !9, i64 704, i64 4, !5, i64 708, i64 4, !5, i64 712, i64 1, !15, i64 720, i64 2, !19, i64 728, i64 8, !9, i64 736, i64 4, !5, i64 740, i64 4, !5, i64 744, i64 1, !15, i64 752, i64 8, !9, i64 760, i64 4, !5, i64 764, i64 4, !5, i64 768, i64 1, !15, i64 776, i64 8, !9, i64 784, i64 4, !5, i64 788, i64 4, !5, i64 792, i64 1, !15, i64 800, i64 1, !15, i64 801, i64 1, !15, i64 802, i64 1, !15}
!19 = !{!20, !20, i64 0}
!20 = !{!"short", !7, i64 0}
!21 = !{!22, !7, i64 800}
!22 = !{!"s2n_client_hello", !23, i64 0, !24, i64 24, !23, i64 728, !23, i64 752, !23, i64 776, !7, i64 800, !7, i64 801, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802}
!23 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!24 = !{!"", !7, i64 0, !23, i64 672, !20, i64 696}
!25 = !{!17, !7, i64 2}
!26 = !{!22, !7, i64 801}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!30, !7, i64 0}
!30 = !{!"", !7, i64 0, !10, i64 8}
!31 = !{!30, !10, i64 8}
!32 = !{!33, !34, i64 8}
!33 = !{!"", !7, i64 0, !34, i64 8, !10, i64 16}
!34 = !{!"long", !7, i64 0}
!35 = !{!33, !10, i64 16}
!36 = !{!22, !6, i64 736}
!37 = distinct !{!37, !28, !38, !39}
!38 = !{!"llvm.loop.isvectorized", i32 1}
!39 = !{!"llvm.loop.unroll.runtime.disable"}
!40 = distinct !{!40, !28, !39, !38}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass