; LLVM IR from aws/s2n-tls :: tests/unit (s2n_self_talk_alpn_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 { i32, ptr, ptr }
%struct.s2n_test_io_stuffer_pair = type { %struct.s2n_stuffer, %struct.s2n_stuffer }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { i32 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@__const.main.protocols = external hidden unnamed_addr constant [3 x ptr], align 16
@__const.main.mismatch_protocols = external hidden unnamed_addr constant [1 x ptr], align 8
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [82 x i8], align 1
@stderr = external global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [200 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [148 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [106 x i8], align 1
@__const.main.data_send = external hidden unnamed_addr constant [8 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.43 = 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 [3 x ptr], align 16
  %7 = alloca [1 x ptr], align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca [4 x %struct.anon], align 16
  %19 = alloca i64, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %struct.s2n_test_io_stuffer_pair, align 8
  %31 = alloca %struct.s2n_result, align 4
  %32 = alloca i32, align 4
  %33 = alloca %struct.s2n_result, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca [8 x i8], align 1
  %40 = alloca [8 x i8], align 1
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %struct.s2n_result, align 4
  %45 = alloca %struct.s2n_result, align 4
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca %struct.s2n_result, align 4
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca %struct.s2n_test_io_stuffer_pair, align 8
  %60 = alloca %struct.s2n_result, align 4
  %61 = alloca i32, align 4
  %62 = alloca %struct.s2n_result, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca %struct.s2n_result, align 4
  %67 = alloca %struct.s2n_result, align 4
  %68 = alloca %struct.s2n_result, align 4
  %69 = alloca %struct.s2n_result, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca %struct.s2n_result, align 4
  %74 = alloca %struct.s2n_result, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %6, ptr align 16 @__const.main.protocols, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 @__const.main.mismatch_protocols, i64 8, i1 false)
  br label %75

75:                                               ; preds = %2
  br label %76

76:                                               ; preds = %75
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %77 = load ptr, ptr @stdout, align 8, !tbaa !9
  %78 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef @.str.4, ptr noundef @.str.5) #11
  %79 = load ptr, ptr @stdout, align 8, !tbaa !9
  %80 = call i32 @fflush(ptr noundef %79)
  br label %81

81:                                               ; preds = %76
  %82 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %83 = icmp eq i32 %82, -1
  br i1 %83, label %84, label %137

84:                                               ; preds = %81
  br label %85

85:                                               ; preds = %84
  br label %86

86:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #11
  %87 = call ptr @__errno_location() #12
  %88 = load i32, ptr %87, align 4, !tbaa !5
  store i32 %88, ptr %8, align 4, !tbaa !5
  %89 = load ptr, ptr @stderr, align 8, !tbaa !9
  %90 = call i32 @s2n_print_stacktrace(ptr noundef %89)
  %91 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %92 = trunc i8 %91 to i1
  br i1 %92, label %93, label %115

93:                                               ; preds = %86
  %94 = load ptr, ptr @stderr, align 8, !tbaa !9
  %95 = call i32 @fileno(ptr noundef %94) #11
  %96 = call i32 @isatty(i32 noundef %95) #11
  %97 = icmp ne i32 %96, 0
  br i1 %97, label %98, label %115

98:                                               ; preds = %93
  %99 = load i32, ptr %8, align 4, !tbaa !5
  %100 = call ptr @__errno_location() #12
  store i32 %99, ptr %100, align 4, !tbaa !5
  %101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %102 = load i32, ptr @test_count, align 4, !tbaa !5
  %103 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %104 = load i32, ptr %103, align 4, !tbaa !5
  %105 = call ptr @s2n_strerror(i32 noundef %104, ptr noundef @.str.8)
  %106 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %107 = load i32, ptr %106, align 4, !tbaa !5
  %108 = call ptr @s2n_strerror_debug(i32 noundef %107, ptr noundef @.str.8)
  %109 = call ptr @__errno_location() #12
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = call ptr @strerror(i32 noundef %110) #11
  %112 = call ptr @__errno_location() #12
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %101, ptr noundef @.str.6, i32 noundef %102, ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 30, ptr noundef %105, ptr noundef %108, ptr noundef %111, i32 noundef %113) #11
  br label %132

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

132:                                              ; preds = %115, %98
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %133

133:                                              ; preds = %132
  br label %134

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

135:                                              ; No predecessors!
  br label %136

136:                                              ; preds = %135
  br label %137

137:                                              ; preds = %136, %81
  br label %138

138:                                              ; preds = %137
  br label %139

139:                                              ; preds = %138
  br label %140

140:                                              ; preds = %139
  %141 = load i32, ptr @test_count, align 4, !tbaa !5
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr @test_count, align 4, !tbaa !5
  %143 = call i32 @s2n_enable_atexit()
  %144 = icmp eq i32 %143, -1
  br i1 %144, label %145, label %198

145:                                              ; preds = %140
  br label %146

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  %148 = call ptr @__errno_location() #12
  %149 = load i32, ptr %148, align 4, !tbaa !5
  store i32 %149, ptr %9, align 4, !tbaa !5
  %150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %151 = call i32 @s2n_print_stacktrace(ptr noundef %150)
  %152 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %153 = trunc i8 %152 to i1
  br i1 %153, label %154, label %176

154:                                              ; preds = %147
  %155 = load ptr, ptr @stderr, align 8, !tbaa !9
  %156 = call i32 @fileno(ptr noundef %155) #11
  %157 = call i32 @isatty(i32 noundef %156) #11
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %176

159:                                              ; preds = %154
  %160 = load i32, ptr %9, align 4, !tbaa !5
  %161 = call ptr @__errno_location() #12
  store i32 %160, ptr %161, align 4, !tbaa !5
  %162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %163 = load i32, ptr @test_count, align 4, !tbaa !5
  %164 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = call ptr @s2n_strerror(i32 noundef %165, ptr noundef @.str.8)
  %167 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %168 = load i32, ptr %167, align 4, !tbaa !5
  %169 = call ptr @s2n_strerror_debug(i32 noundef %168, ptr noundef @.str.8)
  %170 = call ptr @__errno_location() #12
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = call ptr @strerror(i32 noundef %171) #11
  %173 = call ptr @__errno_location() #12
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef @.str.6, i32 noundef %163, ptr noundef @.str.10, ptr noundef @.str.5, i32 noundef 30, ptr noundef %166, ptr noundef %169, ptr noundef %172, i32 noundef %174) #11
  br label %193

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

193:                                              ; preds = %176, %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %194

194:                                              ; preds = %193
  br label %195

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

196:                                              ; No predecessors!
  br label %197

197:                                              ; preds = %196
  br label %198

198:                                              ; preds = %197, %140
  br label %199

199:                                              ; preds = %198
  br label %200

200:                                              ; preds = %199
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  br label %203

203:                                              ; preds = %202
  %204 = call i32 @s2n_init()
  %205 = icmp eq i32 %204, -1
  br i1 %205, label %206, label %259

206:                                              ; preds = %203
  br label %207

207:                                              ; preds = %206
  br label %208

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  %209 = call ptr @__errno_location() #12
  %210 = load i32, ptr %209, align 4, !tbaa !5
  store i32 %210, ptr %10, align 4, !tbaa !5
  %211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %212 = call i32 @s2n_print_stacktrace(ptr noundef %211)
  %213 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %214 = trunc i8 %213 to i1
  br i1 %214, label %215, label %237

215:                                              ; preds = %208
  %216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %217 = call i32 @fileno(ptr noundef %216) #11
  %218 = call i32 @isatty(i32 noundef %217) #11
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %237

220:                                              ; preds = %215
  %221 = load i32, ptr %10, align 4, !tbaa !5
  %222 = call ptr @__errno_location() #12
  store i32 %221, ptr %222, align 4, !tbaa !5
  %223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %224 = load i32, ptr @test_count, align 4, !tbaa !5
  %225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror(i32 noundef %226, ptr noundef @.str.8)
  %228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = call ptr @s2n_strerror_debug(i32 noundef %229, ptr noundef @.str.8)
  %231 = call ptr @__errno_location() #12
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call ptr @strerror(i32 noundef %232) #11
  %234 = call ptr @__errno_location() #12
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %223, ptr noundef @.str.6, i32 noundef %224, ptr noundef @.str.11, ptr noundef @.str.5, i32 noundef 30, ptr noundef %227, ptr noundef %230, ptr noundef %233, i32 noundef %235) #11
  br label %254

237:                                              ; preds = %215, %208
  %238 = load i32, ptr %10, align 4, !tbaa !5
  %239 = call ptr @__errno_location() #12
  store i32 %238, ptr %239, align 4, !tbaa !5
  %240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %241 = load i32, ptr @test_count, align 4, !tbaa !5
  %242 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = call ptr @s2n_strerror(i32 noundef %243, ptr noundef @.str.8)
  %245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %246 = load i32, ptr %245, align 4, !tbaa !5
  %247 = call ptr @s2n_strerror_debug(i32 noundef %246, ptr noundef @.str.8)
  %248 = call ptr @__errno_location() #12
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = call ptr @strerror(i32 noundef %249) #11
  %251 = call ptr @__errno_location() #12
  %252 = load i32, ptr %251, align 4, !tbaa !5
  %253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef @.str.9, i32 noundef %241, ptr noundef @.str.11, ptr noundef @.str.5, i32 noundef 30, ptr noundef %244, ptr noundef %247, ptr noundef %250, i32 noundef %252) #11
  br label %254

254:                                              ; preds = %237, %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  br label %255

255:                                              ; preds = %254
  br label %256

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

257:                                              ; No predecessors!
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258, %203
  br label %260

260:                                              ; preds = %259
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  br label %263

263:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  %264 = call ptr @s2n_config_new()
  store ptr %264, ptr %11, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %263
  %266 = load i32, ptr @test_count, align 4, !tbaa !5
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr @test_count, align 4, !tbaa !5
  %268 = load ptr, ptr %11, align 8, !tbaa !9
  %269 = icmp eq ptr %268, null
  br i1 %269, label %270, label %323

270:                                              ; preds = %265
  br label %271

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  %273 = call ptr @__errno_location() #12
  %274 = load i32, ptr %273, align 4, !tbaa !5
  store i32 %274, ptr %12, align 4, !tbaa !5
  %275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %276 = call i32 @s2n_print_stacktrace(ptr noundef %275)
  %277 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %278 = trunc i8 %277 to i1
  br i1 %278, label %279, label %301

279:                                              ; preds = %272
  %280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %281 = call i32 @fileno(ptr noundef %280) #11
  %282 = call i32 @isatty(i32 noundef %281) #11
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %301

284:                                              ; preds = %279
  %285 = load i32, ptr %12, align 4, !tbaa !5
  %286 = call ptr @__errno_location() #12
  store i32 %285, ptr %286, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = load i32, ptr @test_count, align 4, !tbaa !5
  %289 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %291 = call ptr @s2n_strerror(i32 noundef %290, ptr noundef @.str.8)
  %292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %293 = load i32, ptr %292, align 4, !tbaa !5
  %294 = call ptr @s2n_strerror_debug(i32 noundef %293, ptr noundef @.str.8)
  %295 = call ptr @__errno_location() #12
  %296 = load i32, ptr %295, align 4, !tbaa !5
  %297 = call ptr @strerror(i32 noundef %296) #11
  %298 = call ptr @__errno_location() #12
  %299 = load i32, ptr %298, align 4, !tbaa !5
  %300 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %287, ptr noundef @.str.6, i32 noundef %288, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 33, ptr noundef %291, ptr noundef %294, ptr noundef %297, i32 noundef %299) #11
  br label %318

301:                                              ; preds = %279, %272
  %302 = load i32, ptr %12, align 4, !tbaa !5
  %303 = call ptr @__errno_location() #12
  store i32 %302, ptr %303, align 4, !tbaa !5
  %304 = load ptr, ptr @stderr, align 8, !tbaa !9
  %305 = load i32, ptr @test_count, align 4, !tbaa !5
  %306 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %307 = load i32, ptr %306, align 4, !tbaa !5
  %308 = call ptr @s2n_strerror(i32 noundef %307, ptr noundef @.str.8)
  %309 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %311 = call ptr @s2n_strerror_debug(i32 noundef %310, ptr noundef @.str.8)
  %312 = call ptr @__errno_location() #12
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = call ptr @strerror(i32 noundef %313) #11
  %315 = call ptr @__errno_location() #12
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %317 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %304, ptr noundef @.str.9, i32 noundef %305, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 33, ptr noundef %308, ptr noundef %311, ptr noundef %314, i32 noundef %316) #11
  br label %318

318:                                              ; preds = %301, %284
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  br label %319

319:                                              ; preds = %318
  br label %320

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

321:                                              ; No predecessors!
  br label %322

322:                                              ; preds = %321
  br label %323

323:                                              ; preds = %322, %265
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  %327 = load i32, ptr @test_count, align 4, !tbaa !5
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr @test_count, align 4, !tbaa !5
  %329 = load ptr, ptr %11, align 8, !tbaa !9
  %330 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 0
  %331 = call i32 @s2n_config_set_protocol_preferences(ptr noundef %329, ptr noundef %330, i32 noundef 3)
  %332 = icmp eq i32 %331, -1
  br i1 %332, label %333, label %386

333:                                              ; preds = %326
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  %336 = call ptr @__errno_location() #12
  %337 = load i32, ptr %336, align 4, !tbaa !5
  store i32 %337, ptr %13, align 4, !tbaa !5
  %338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %339 = call i32 @s2n_print_stacktrace(ptr noundef %338)
  %340 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %341 = trunc i8 %340 to i1
  br i1 %341, label %342, label %364

342:                                              ; preds = %335
  %343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %344 = call i32 @fileno(ptr noundef %343) #11
  %345 = call i32 @isatty(i32 noundef %344) #11
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %364

347:                                              ; preds = %342
  %348 = load i32, ptr %13, align 4, !tbaa !5
  %349 = call ptr @__errno_location() #12
  store i32 %348, ptr %349, align 4, !tbaa !5
  %350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %351 = load i32, ptr @test_count, align 4, !tbaa !5
  %352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %353 = load i32, ptr %352, align 4, !tbaa !5
  %354 = call ptr @s2n_strerror(i32 noundef %353, ptr noundef @.str.8)
  %355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %356 = load i32, ptr %355, align 4, !tbaa !5
  %357 = call ptr @s2n_strerror_debug(i32 noundef %356, ptr noundef @.str.8)
  %358 = call ptr @__errno_location() #12
  %359 = load i32, ptr %358, align 4, !tbaa !5
  %360 = call ptr @strerror(i32 noundef %359) #11
  %361 = call ptr @__errno_location() #12
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %350, ptr noundef @.str.6, i32 noundef %351, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 35, ptr noundef %354, ptr noundef %357, ptr noundef %360, i32 noundef %362) #11
  br label %381

364:                                              ; preds = %342, %335
  %365 = load i32, ptr %13, align 4, !tbaa !5
  %366 = call ptr @__errno_location() #12
  store i32 %365, ptr %366, align 4, !tbaa !5
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = load i32, ptr @test_count, align 4, !tbaa !5
  %369 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %370 = load i32, ptr %369, align 4, !tbaa !5
  %371 = call ptr @s2n_strerror(i32 noundef %370, ptr noundef @.str.8)
  %372 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %373 = load i32, ptr %372, align 4, !tbaa !5
  %374 = call ptr @s2n_strerror_debug(i32 noundef %373, ptr noundef @.str.8)
  %375 = call ptr @__errno_location() #12
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = call ptr @strerror(i32 noundef %376) #11
  %378 = call ptr @__errno_location() #12
  %379 = load i32, ptr %378, align 4, !tbaa !5
  %380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %367, ptr noundef @.str.9, i32 noundef %368, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 35, ptr noundef %371, ptr noundef %374, ptr noundef %377, i32 noundef %379) #11
  br label %381

381:                                              ; preds = %364, %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  br label %382

382:                                              ; preds = %381
  br label %383

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

384:                                              ; No predecessors!
  br label %385

385:                                              ; preds = %384
  br label %386

386:                                              ; preds = %385, %326
  br label %387

387:                                              ; preds = %386
  br label %388

388:                                              ; preds = %387
  br label %389

389:                                              ; preds = %388
  %390 = load i32, ptr @test_count, align 4, !tbaa !5
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr @test_count, align 4, !tbaa !5
  %392 = load ptr, ptr %11, align 8, !tbaa !9
  %393 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %392, ptr noundef @.str.14)
  %394 = icmp eq i32 %393, -1
  br i1 %394, label %395, label %448

395:                                              ; preds = %389
  br label %396

396:                                              ; preds = %395
  br label %397

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  %398 = call ptr @__errno_location() #12
  %399 = load i32, ptr %398, align 4, !tbaa !5
  store i32 %399, ptr %14, align 4, !tbaa !5
  %400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %401 = call i32 @s2n_print_stacktrace(ptr noundef %400)
  %402 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %403 = trunc i8 %402 to i1
  br i1 %403, label %404, label %426

404:                                              ; preds = %397
  %405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %406 = call i32 @fileno(ptr noundef %405) #11
  %407 = call i32 @isatty(i32 noundef %406) #11
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %426

409:                                              ; preds = %404
  %410 = load i32, ptr %14, align 4, !tbaa !5
  %411 = call ptr @__errno_location() #12
  store i32 %410, ptr %411, align 4, !tbaa !5
  %412 = load ptr, ptr @stderr, align 8, !tbaa !9
  %413 = load i32, ptr @test_count, align 4, !tbaa !5
  %414 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = call ptr @s2n_strerror(i32 noundef %415, ptr noundef @.str.8)
  %417 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = call ptr @s2n_strerror_debug(i32 noundef %418, ptr noundef @.str.8)
  %420 = call ptr @__errno_location() #12
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = call ptr @strerror(i32 noundef %421) #11
  %423 = call ptr @__errno_location() #12
  %424 = load i32, ptr %423, align 4, !tbaa !5
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %412, ptr noundef @.str.6, i32 noundef %413, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 36, ptr noundef %416, ptr noundef %419, ptr noundef %422, i32 noundef %424) #11
  br label %443

426:                                              ; preds = %404, %397
  %427 = load i32, ptr %14, align 4, !tbaa !5
  %428 = call ptr @__errno_location() #12
  store i32 %427, ptr %428, align 4, !tbaa !5
  %429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %430 = load i32, ptr @test_count, align 4, !tbaa !5
  %431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %432 = load i32, ptr %431, align 4, !tbaa !5
  %433 = call ptr @s2n_strerror(i32 noundef %432, ptr noundef @.str.8)
  %434 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = call ptr @s2n_strerror_debug(i32 noundef %435, ptr noundef @.str.8)
  %437 = call ptr @__errno_location() #12
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = call ptr @strerror(i32 noundef %438) #11
  %440 = call ptr @__errno_location() #12
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef @.str.9, i32 noundef %430, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 36, ptr noundef %433, ptr noundef %436, ptr noundef %439, i32 noundef %441) #11
  br label %443

443:                                              ; preds = %426, %409
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %444

444:                                              ; preds = %443
  br label %445

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

446:                                              ; No predecessors!
  br label %447

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447, %389
  br label %449

449:                                              ; preds = %448
  br label %450

450:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  store ptr null, ptr %15, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %450
  %452 = load i32, ptr @test_count, align 4, !tbaa !5
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr @test_count, align 4, !tbaa !5
  %454 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %15, ptr noundef @.str.16, ptr noundef @.str.17)
  %455 = icmp eq i32 %454, -1
  br i1 %455, label %456, label %509

456:                                              ; preds = %451
  br label %457

457:                                              ; preds = %456
  br label %458

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

465:                                              ; preds = %458
  %466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %467 = call i32 @fileno(ptr noundef %466) #11
  %468 = call i32 @isatty(i32 noundef %467) #11
  %469 = icmp ne i32 %468, 0
  br i1 %469, label %470, label %487

470:                                              ; preds = %465
  %471 = load i32, ptr %16, align 4, !tbaa !5
  %472 = call ptr @__errno_location() #12
  store i32 %471, ptr %472, align 4, !tbaa !5
  %473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %474 = load i32, ptr @test_count, align 4, !tbaa !5
  %475 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %476 = load i32, ptr %475, align 4, !tbaa !5
  %477 = call ptr @s2n_strerror(i32 noundef %476, ptr noundef @.str.8)
  %478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %479 = load i32, ptr %478, align 4, !tbaa !5
  %480 = call ptr @s2n_strerror_debug(i32 noundef %479, ptr noundef @.str.8)
  %481 = call ptr @__errno_location() #12
  %482 = load i32, ptr %481, align 4, !tbaa !5
  %483 = call ptr @strerror(i32 noundef %482) #11
  %484 = call ptr @__errno_location() #12
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %486 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %473, ptr noundef @.str.6, i32 noundef %474, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 41, ptr noundef %477, ptr noundef %480, ptr noundef %483, i32 noundef %485) #11
  br label %504

487:                                              ; preds = %465, %458
  %488 = load i32, ptr %16, align 4, !tbaa !5
  %489 = call ptr @__errno_location() #12
  store i32 %488, ptr %489, align 4, !tbaa !5
  %490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %491 = load i32, ptr @test_count, align 4, !tbaa !5
  %492 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %493 = load i32, ptr %492, align 4, !tbaa !5
  %494 = call ptr @s2n_strerror(i32 noundef %493, ptr noundef @.str.8)
  %495 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %496 = load i32, ptr %495, align 4, !tbaa !5
  %497 = call ptr @s2n_strerror_debug(i32 noundef %496, ptr noundef @.str.8)
  %498 = call ptr @__errno_location() #12
  %499 = load i32, ptr %498, align 4, !tbaa !5
  %500 = call ptr @strerror(i32 noundef %499) #11
  %501 = call ptr @__errno_location() #12
  %502 = load i32, ptr %501, align 4, !tbaa !5
  %503 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %490, ptr noundef @.str.9, i32 noundef %491, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 41, ptr noundef %494, ptr noundef %497, ptr noundef %500, i32 noundef %502) #11
  br label %504

504:                                              ; preds = %487, %470
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  br label %505

505:                                              ; preds = %504
  br label %506

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

507:                                              ; No predecessors!
  br label %508

508:                                              ; preds = %507
  br label %509

509:                                              ; preds = %508, %451
  br label %510

510:                                              ; preds = %509
  br label %511

511:                                              ; preds = %510
  br label %512

512:                                              ; preds = %511
  %513 = load i32, ptr @test_count, align 4, !tbaa !5
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr @test_count, align 4, !tbaa !5
  %515 = load ptr, ptr %11, align 8, !tbaa !9
  %516 = load ptr, ptr %15, align 8, !tbaa !9
  %517 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %515, ptr noundef %516)
  %518 = icmp eq i32 %517, -1
  br i1 %518, label %519, label %572

519:                                              ; preds = %512
  br label %520

520:                                              ; preds = %519
  br label %521

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

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

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

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

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

568:                                              ; preds = %567
  br label %569

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

570:                                              ; No predecessors!
  br label %571

571:                                              ; preds = %570
  br label %572

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

573:                                              ; preds = %572
  br label %574

574:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 96, ptr %18) #11
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 24, i1 false)
  %575 = getelementptr inbounds %struct.anon, ptr %18, i32 0, i32 0
  %576 = getelementptr inbounds %struct.anon, ptr %18, i32 0, i32 1
  %577 = getelementptr inbounds %struct.anon, ptr %18, i32 0, i32 2
  %578 = getelementptr inbounds %struct.anon, ptr %18, i64 1
  %579 = getelementptr inbounds %struct.anon, ptr %578, i32 0, i32 0
  store i32 3, ptr %579, align 8, !tbaa !15
  %580 = getelementptr inbounds %struct.anon, ptr %578, i32 0, i32 1
  %581 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 0
  store ptr %581, ptr %580, align 8, !tbaa !17
  %582 = getelementptr inbounds %struct.anon, ptr %578, i32 0, i32 2
  %583 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 0
  %584 = load ptr, ptr %583, align 16, !tbaa !9
  store ptr %584, ptr %582, align 8, !tbaa !18
  %585 = getelementptr inbounds %struct.anon, ptr %18, i64 2
  %586 = getelementptr inbounds %struct.anon, ptr %585, i32 0, i32 0
  store i32 1, ptr %586, align 8, !tbaa !15
  %587 = getelementptr inbounds %struct.anon, ptr %585, i32 0, i32 1
  %588 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 1
  store ptr %588, ptr %587, align 8, !tbaa !17
  %589 = getelementptr inbounds %struct.anon, ptr %585, i32 0, i32 2
  %590 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 1
  %591 = load ptr, ptr %590, align 8, !tbaa !9
  store ptr %591, ptr %589, align 8, !tbaa !18
  %592 = getelementptr inbounds %struct.anon, ptr %18, i64 3
  %593 = getelementptr inbounds %struct.anon, ptr %592, i32 0, i32 0
  store i32 1, ptr %593, align 8, !tbaa !15
  %594 = getelementptr inbounds %struct.anon, ptr %592, i32 0, i32 1
  %595 = getelementptr inbounds [1 x ptr], ptr %7, i64 0, i64 0
  store ptr %595, ptr %594, align 8, !tbaa !17
  %596 = getelementptr inbounds %struct.anon, ptr %592, i32 0, i32 2
  store ptr null, ptr %596, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  store i64 0, ptr %19, align 8, !tbaa !19
  br label %597

597:                                              ; preds = %1576, %574
  %598 = load i64, ptr %19, align 8, !tbaa !19
  %599 = icmp ult i64 %598, 4
  br i1 %599, label %601, label %600

600:                                              ; preds = %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  br label %1579

601:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  %602 = call ptr @s2n_config_new()
  store ptr %602, ptr %20, align 8, !tbaa !9
  br label %603

603:                                              ; preds = %601
  %604 = load i32, ptr @test_count, align 4, !tbaa !5
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr @test_count, align 4, !tbaa !5
  %606 = load ptr, ptr %20, align 8, !tbaa !9
  %607 = icmp eq ptr %606, null
  br i1 %607, label %608, label %661

608:                                              ; preds = %603
  br label %609

609:                                              ; preds = %608
  br label %610

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

617:                                              ; preds = %610
  %618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %619 = call i32 @fileno(ptr noundef %618) #11
  %620 = call i32 @isatty(i32 noundef %619) #11
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %622, label %639

622:                                              ; preds = %617
  %623 = load i32, ptr %21, align 4, !tbaa !5
  %624 = call ptr @__errno_location() #12
  store i32 %623, ptr %624, align 4, !tbaa !5
  %625 = load ptr, ptr @stderr, align 8, !tbaa !9
  %626 = load i32, ptr @test_count, align 4, !tbaa !5
  %627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %628 = load i32, ptr %627, align 4, !tbaa !5
  %629 = call ptr @s2n_strerror(i32 noundef %628, ptr noundef @.str.8)
  %630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = call ptr @s2n_strerror_debug(i32 noundef %631, ptr noundef @.str.8)
  %633 = call ptr @__errno_location() #12
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = call ptr @strerror(i32 noundef %634) #11
  %636 = call ptr @__errno_location() #12
  %637 = load i32, ptr %636, align 4, !tbaa !5
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %625, ptr noundef @.str.6, i32 noundef %626, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 77, ptr noundef %629, ptr noundef %632, ptr noundef %635, i32 noundef %637) #11
  br label %656

639:                                              ; preds = %617, %610
  %640 = load i32, ptr %21, align 4, !tbaa !5
  %641 = call ptr @__errno_location() #12
  store i32 %640, ptr %641, align 4, !tbaa !5
  %642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %643 = load i32, ptr @test_count, align 4, !tbaa !5
  %644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = call ptr @s2n_strerror(i32 noundef %645, ptr noundef @.str.8)
  %647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %648 = load i32, ptr %647, align 4, !tbaa !5
  %649 = call ptr @s2n_strerror_debug(i32 noundef %648, ptr noundef @.str.8)
  %650 = call ptr @__errno_location() #12
  %651 = load i32, ptr %650, align 4, !tbaa !5
  %652 = call ptr @strerror(i32 noundef %651) #11
  %653 = call ptr @__errno_location() #12
  %654 = load i32, ptr %653, align 4, !tbaa !5
  %655 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %642, ptr noundef @.str.9, i32 noundef %643, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 77, ptr noundef %646, ptr noundef %649, ptr noundef %652, i32 noundef %654) #11
  br label %656

656:                                              ; preds = %639, %622
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  br label %657

657:                                              ; preds = %656
  br label %658

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

659:                                              ; No predecessors!
  br label %660

660:                                              ; preds = %659
  br label %661

661:                                              ; preds = %660, %603
  br label %662

662:                                              ; preds = %661
  br label %663

663:                                              ; preds = %662
  br label %664

664:                                              ; preds = %663
  %665 = load i32, ptr @test_count, align 4, !tbaa !5
  %666 = add nsw i32 %665, 1
  store i32 %666, ptr @test_count, align 4, !tbaa !5
  %667 = load ptr, ptr %20, align 8, !tbaa !9
  %668 = load i64, ptr %19, align 8, !tbaa !19
  %669 = getelementptr inbounds [4 x %struct.anon], ptr %18, i64 0, i64 %668
  %670 = getelementptr inbounds %struct.anon, ptr %669, i32 0, i32 1
  %671 = load ptr, ptr %670, align 8, !tbaa !17
  %672 = load i64, ptr %19, align 8, !tbaa !19
  %673 = getelementptr inbounds [4 x %struct.anon], ptr %18, i64 0, i64 %672
  %674 = getelementptr inbounds %struct.anon, ptr %673, i32 0, i32 0
  %675 = load i32, ptr %674, align 8, !tbaa !15
  %676 = call i32 @s2n_config_set_protocol_preferences(ptr noundef %667, ptr noundef %671, i32 noundef %675)
  %677 = icmp eq i32 %676, -1
  br i1 %677, label %678, label %731

678:                                              ; preds = %664
  br label %679

679:                                              ; preds = %678
  br label %680

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

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

692:                                              ; preds = %687
  %693 = load i32, ptr %22, align 4, !tbaa !5
  %694 = call ptr @__errno_location() #12
  store i32 %693, ptr %694, align 4, !tbaa !5
  %695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %696 = load i32, ptr @test_count, align 4, !tbaa !5
  %697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %698 = load i32, ptr %697, align 4, !tbaa !5
  %699 = call ptr @s2n_strerror(i32 noundef %698, ptr noundef @.str.8)
  %700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %701 = load i32, ptr %700, align 4, !tbaa !5
  %702 = call ptr @s2n_strerror_debug(i32 noundef %701, ptr noundef @.str.8)
  %703 = call ptr @__errno_location() #12
  %704 = load i32, ptr %703, align 4, !tbaa !5
  %705 = call ptr @strerror(i32 noundef %704) #11
  %706 = call ptr @__errno_location() #12
  %707 = load i32, ptr %706, align 4, !tbaa !5
  %708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %695, ptr noundef @.str.6, i32 noundef %696, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 79, ptr noundef %699, ptr noundef %702, ptr noundef %705, i32 noundef %707) #11
  br label %726

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

726:                                              ; preds = %709, %692
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  br label %727

727:                                              ; preds = %726
  br label %728

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

729:                                              ; No predecessors!
  br label %730

730:                                              ; preds = %729
  br label %731

731:                                              ; preds = %730, %664
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = add nsw i32 %735, 1
  store i32 %736, ptr @test_count, align 4, !tbaa !5
  %737 = load ptr, ptr %20, align 8, !tbaa !9
  %738 = call i32 @s2n_config_disable_x509_verification(ptr noundef %737)
  %739 = icmp eq i32 %738, -1
  br i1 %739, label %740, label %793

740:                                              ; preds = %734
  br label %741

741:                                              ; preds = %740
  br label %742

742:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  %743 = call ptr @__errno_location() #12
  %744 = load i32, ptr %743, align 4, !tbaa !5
  store i32 %744, ptr %23, 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 %23, 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.8)
  %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.8)
  %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.6, i32 noundef %758, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 80, ptr noundef %761, ptr noundef %764, ptr noundef %767, i32 noundef %769) #11
  br label %788

771:                                              ; preds = %749, %742
  %772 = load i32, ptr %23, 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.8)
  %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.8)
  %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.9, i32 noundef %775, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 80, 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 %23) #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, %734
  br label %794

794:                                              ; preds = %793
  br label %795

795:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %796 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %796, ptr %24, align 8, !tbaa !9
  br label %797

797:                                              ; preds = %795
  %798 = load i32, ptr @test_count, align 4, !tbaa !5
  %799 = add nsw i32 %798, 1
  store i32 %799, ptr @test_count, align 4, !tbaa !5
  %800 = load ptr, ptr %24, align 8, !tbaa !9
  %801 = icmp eq ptr %800, null
  br i1 %801, label %802, label %855

802:                                              ; preds = %797
  br label %803

803:                                              ; preds = %802
  br label %804

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

811:                                              ; preds = %804
  %812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %813 = call i32 @fileno(ptr noundef %812) #11
  %814 = call i32 @isatty(i32 noundef %813) #11
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %833

816:                                              ; preds = %811
  %817 = load i32, ptr %25, align 4, !tbaa !5
  %818 = call ptr @__errno_location() #12
  store i32 %817, ptr %818, 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 @.str.8)
  %824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = call ptr @s2n_strerror_debug(i32 noundef %825, ptr noundef @.str.8)
  %827 = call ptr @__errno_location() #12
  %828 = load i32, ptr %827, align 4, !tbaa !5
  %829 = call ptr @strerror(i32 noundef %828) #11
  %830 = call ptr @__errno_location() #12
  %831 = load i32, ptr %830, align 4, !tbaa !5
  %832 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %819, ptr noundef @.str.6, i32 noundef %820, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 84, ptr noundef %823, ptr noundef %826, ptr noundef %829, i32 noundef %831) #11
  br label %850

833:                                              ; preds = %811, %804
  %834 = load i32, ptr %25, align 4, !tbaa !5
  %835 = call ptr @__errno_location() #12
  store i32 %834, ptr %835, align 4, !tbaa !5
  %836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %837 = load i32, ptr @test_count, align 4, !tbaa !5
  %838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = call ptr @s2n_strerror(i32 noundef %839, ptr noundef @.str.8)
  %841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %842 = load i32, ptr %841, align 4, !tbaa !5
  %843 = call ptr @s2n_strerror_debug(i32 noundef %842, ptr noundef @.str.8)
  %844 = call ptr @__errno_location() #12
  %845 = load i32, ptr %844, align 4, !tbaa !5
  %846 = call ptr @strerror(i32 noundef %845) #11
  %847 = call ptr @__errno_location() #12
  %848 = load i32, ptr %847, align 4, !tbaa !5
  %849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %836, ptr noundef @.str.9, i32 noundef %837, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 84, ptr noundef %840, ptr noundef %843, ptr noundef %846, i32 noundef %848) #11
  br label %850

850:                                              ; preds = %833, %816
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %851

851:                                              ; preds = %850
  br label %852

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

853:                                              ; No predecessors!
  br label %854

854:                                              ; preds = %853
  br label %855

855:                                              ; preds = %854, %797
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856
  br label %858

858:                                              ; preds = %857
  %859 = load i32, ptr @test_count, align 4, !tbaa !5
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr @test_count, align 4, !tbaa !5
  %861 = load ptr, ptr %24, align 8, !tbaa !9
  %862 = load ptr, ptr %20, align 8, !tbaa !9
  %863 = call i32 @s2n_connection_set_config(ptr noundef %861, ptr noundef %862)
  %864 = icmp eq i32 %863, -1
  br i1 %864, label %865, label %918

865:                                              ; preds = %858
  br label %866

866:                                              ; preds = %865
  br label %867

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

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

879:                                              ; preds = %874
  %880 = load i32, ptr %26, align 4, !tbaa !5
  %881 = call ptr @__errno_location() #12
  store i32 %880, ptr %881, 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 @.str.8)
  %887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %888 = load i32, ptr %887, align 4, !tbaa !5
  %889 = call ptr @s2n_strerror_debug(i32 noundef %888, ptr noundef @.str.8)
  %890 = call ptr @__errno_location() #12
  %891 = load i32, ptr %890, align 4, !tbaa !5
  %892 = call ptr @strerror(i32 noundef %891) #11
  %893 = call ptr @__errno_location() #12
  %894 = load i32, ptr %893, align 4, !tbaa !5
  %895 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef @.str.6, i32 noundef %883, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 85, ptr noundef %886, ptr noundef %889, ptr noundef %892, i32 noundef %894) #11
  br label %913

896:                                              ; preds = %874, %867
  %897 = load i32, ptr %26, align 4, !tbaa !5
  %898 = call ptr @__errno_location() #12
  store i32 %897, ptr %898, align 4, !tbaa !5
  %899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %900 = load i32, ptr @test_count, align 4, !tbaa !5
  %901 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %902 = load i32, ptr %901, align 4, !tbaa !5
  %903 = call ptr @s2n_strerror(i32 noundef %902, ptr noundef @.str.8)
  %904 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %905 = load i32, ptr %904, align 4, !tbaa !5
  %906 = call ptr @s2n_strerror_debug(i32 noundef %905, ptr noundef @.str.8)
  %907 = call ptr @__errno_location() #12
  %908 = load i32, ptr %907, align 4, !tbaa !5
  %909 = call ptr @strerror(i32 noundef %908) #11
  %910 = call ptr @__errno_location() #12
  %911 = load i32, ptr %910, align 4, !tbaa !5
  %912 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %899, ptr noundef @.str.9, i32 noundef %900, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 85, ptr noundef %903, ptr noundef %906, ptr noundef %909, i32 noundef %911) #11
  br label %913

913:                                              ; preds = %896, %879
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  br label %914

914:                                              ; preds = %913
  br label %915

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

916:                                              ; No predecessors!
  br label %917

917:                                              ; preds = %916
  br label %918

918:                                              ; preds = %917, %858
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %921 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %921, ptr %27, align 8, !tbaa !9
  br label %922

922:                                              ; preds = %920
  %923 = load i32, ptr @test_count, align 4, !tbaa !5
  %924 = add nsw i32 %923, 1
  store i32 %924, ptr @test_count, align 4, !tbaa !5
  %925 = load ptr, ptr %27, align 8, !tbaa !9
  %926 = icmp eq ptr %925, null
  br i1 %926, label %927, label %980

927:                                              ; preds = %922
  br label %928

928:                                              ; preds = %927
  br label %929

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

936:                                              ; preds = %929
  %937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %938 = call i32 @fileno(ptr noundef %937) #11
  %939 = call i32 @isatty(i32 noundef %938) #11
  %940 = icmp ne i32 %939, 0
  br i1 %940, label %941, label %958

941:                                              ; preds = %936
  %942 = load i32, ptr %28, align 4, !tbaa !5
  %943 = call ptr @__errno_location() #12
  store i32 %942, ptr %943, align 4, !tbaa !5
  %944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %945 = load i32, ptr @test_count, align 4, !tbaa !5
  %946 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %947 = load i32, ptr %946, align 4, !tbaa !5
  %948 = call ptr @s2n_strerror(i32 noundef %947, ptr noundef @.str.8)
  %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_debug(i32 noundef %950, ptr noundef @.str.8)
  %952 = call ptr @__errno_location() #12
  %953 = load i32, ptr %952, align 4, !tbaa !5
  %954 = call ptr @strerror(i32 noundef %953) #11
  %955 = call ptr @__errno_location() #12
  %956 = load i32, ptr %955, align 4, !tbaa !5
  %957 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %944, ptr noundef @.str.6, i32 noundef %945, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 89, ptr noundef %948, ptr noundef %951, ptr noundef %954, i32 noundef %956) #11
  br label %975

958:                                              ; preds = %936, %929
  %959 = load i32, ptr %28, align 4, !tbaa !5
  %960 = call ptr @__errno_location() #12
  store i32 %959, ptr %960, align 4, !tbaa !5
  %961 = load ptr, ptr @stderr, align 8, !tbaa !9
  %962 = load i32, ptr @test_count, align 4, !tbaa !5
  %963 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %964 = load i32, ptr %963, align 4, !tbaa !5
  %965 = call ptr @s2n_strerror(i32 noundef %964, ptr noundef @.str.8)
  %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_debug(i32 noundef %967, ptr noundef @.str.8)
  %969 = call ptr @__errno_location() #12
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call ptr @strerror(i32 noundef %970) #11
  %972 = call ptr @__errno_location() #12
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %961, ptr noundef @.str.9, i32 noundef %962, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 89, ptr noundef %965, ptr noundef %968, ptr noundef %971, i32 noundef %973) #11
  br label %975

975:                                              ; preds = %958, %941
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %976

976:                                              ; preds = %975
  br label %977

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

978:                                              ; No predecessors!
  br label %979

979:                                              ; preds = %978
  br label %980

980:                                              ; preds = %979, %922
  br label %981

981:                                              ; preds = %980
  br label %982

982:                                              ; preds = %981
  br label %983

983:                                              ; preds = %982
  %984 = load i32, ptr @test_count, align 4, !tbaa !5
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr @test_count, align 4, !tbaa !5
  %986 = load ptr, ptr %27, align 8, !tbaa !9
  %987 = load ptr, ptr %11, align 8, !tbaa !9
  %988 = call i32 @s2n_connection_set_config(ptr noundef %986, ptr noundef %987)
  %989 = icmp eq i32 %988, -1
  br i1 %989, label %990, label %1043

990:                                              ; preds = %983
  br label %991

991:                                              ; preds = %990
  br label %992

992:                                              ; preds = %991
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #11
  %993 = call ptr @__errno_location() #12
  %994 = load i32, ptr %993, align 4, !tbaa !5
  store i32 %994, ptr %29, align 4, !tbaa !5
  %995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %996 = call i32 @s2n_print_stacktrace(ptr noundef %995)
  %997 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %998 = trunc i8 %997 to i1
  br i1 %998, label %999, label %1021

999:                                              ; preds = %992
  %1000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1001 = call i32 @fileno(ptr noundef %1000) #11
  %1002 = call i32 @isatty(i32 noundef %1001) #11
  %1003 = icmp ne i32 %1002, 0
  br i1 %1003, label %1004, label %1021

1004:                                             ; preds = %999
  %1005 = load i32, ptr %29, align 4, !tbaa !5
  %1006 = call ptr @__errno_location() #12
  store i32 %1005, ptr %1006, align 4, !tbaa !5
  %1007 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1008 = load i32, ptr @test_count, align 4, !tbaa !5
  %1009 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1010 = load i32, ptr %1009, align 4, !tbaa !5
  %1011 = call ptr @s2n_strerror(i32 noundef %1010, ptr noundef @.str.8)
  %1012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  %1014 = call ptr @s2n_strerror_debug(i32 noundef %1013, ptr noundef @.str.8)
  %1015 = call ptr @__errno_location() #12
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  %1017 = call ptr @strerror(i32 noundef %1016) #11
  %1018 = call ptr @__errno_location() #12
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1007, ptr noundef @.str.6, i32 noundef %1008, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 90, ptr noundef %1011, ptr noundef %1014, ptr noundef %1017, i32 noundef %1019) #11
  br label %1038

1021:                                             ; preds = %999, %992
  %1022 = load i32, ptr %29, align 4, !tbaa !5
  %1023 = call ptr @__errno_location() #12
  store i32 %1022, ptr %1023, align 4, !tbaa !5
  %1024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1025 = load i32, ptr @test_count, align 4, !tbaa !5
  %1026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  %1028 = call ptr @s2n_strerror(i32 noundef %1027, ptr noundef @.str.8)
  %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_debug(i32 noundef %1030, ptr noundef @.str.8)
  %1032 = call ptr @__errno_location() #12
  %1033 = load i32, ptr %1032, align 4, !tbaa !5
  %1034 = call ptr @strerror(i32 noundef %1033) #11
  %1035 = call ptr @__errno_location() #12
  %1036 = load i32, ptr %1035, align 4, !tbaa !5
  %1037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1024, ptr noundef @.str.9, i32 noundef %1025, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 90, ptr noundef %1028, ptr noundef %1031, ptr noundef %1034, i32 noundef %1036) #11
  br label %1038

1038:                                             ; preds = %1021, %1004
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  br label %1039

1039:                                             ; preds = %1038
  br label %1040

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

1041:                                             ; No predecessors!
  br label %1042

1042:                                             ; preds = %1041
  br label %1043

1043:                                             ; preds = %1042, %983
  br label %1044

1044:                                             ; preds = %1043
  br label %1045

1045:                                             ; preds = %1044
  call void @llvm.lifetime.start.p0(i64 80, ptr %30) #11
  call void @llvm.memset.p0.i64(ptr align 8 %30, i8 0, i64 80, i1 false)
  br label %1046

1046:                                             ; preds = %1045
  %1047 = load i32, ptr @test_count, align 4, !tbaa !5
  %1048 = add nsw i32 %1047, 1
  store i32 %1048, ptr @test_count, align 4, !tbaa !5
  %1049 = call i32 @s2n_io_stuffer_pair_init(ptr noundef %30)
  %1050 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %1049, ptr %1050, align 4
  %1051 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  %1052 = load i32, ptr %1051, align 4
  %1053 = call zeroext i1 @s2n_result_is_ok(i32 %1052)
  br i1 %1053, label %1107, label %1054

1054:                                             ; preds = %1046
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

1056:                                             ; preds = %1055
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  %1057 = call ptr @__errno_location() #12
  %1058 = load i32, ptr %1057, align 4, !tbaa !5
  store i32 %1058, ptr %32, align 4, !tbaa !5
  %1059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1060 = call i32 @s2n_print_stacktrace(ptr noundef %1059)
  %1061 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1062 = trunc i8 %1061 to i1
  br i1 %1062, label %1063, label %1085

1063:                                             ; preds = %1056
  %1064 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1065 = call i32 @fileno(ptr noundef %1064) #11
  %1066 = call i32 @isatty(i32 noundef %1065) #11
  %1067 = icmp ne i32 %1066, 0
  br i1 %1067, label %1068, label %1085

1068:                                             ; preds = %1063
  %1069 = load i32, ptr %32, align 4, !tbaa !5
  %1070 = call ptr @__errno_location() #12
  store i32 %1069, ptr %1070, align 4, !tbaa !5
  %1071 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1072 = load i32, ptr @test_count, align 4, !tbaa !5
  %1073 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1074 = load i32, ptr %1073, align 4, !tbaa !5
  %1075 = call ptr @s2n_strerror(i32 noundef %1074, ptr noundef @.str.8)
  %1076 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1077 = load i32, ptr %1076, align 4, !tbaa !5
  %1078 = call ptr @s2n_strerror_debug(i32 noundef %1077, ptr noundef @.str.8)
  %1079 = call ptr @__errno_location() #12
  %1080 = load i32, ptr %1079, align 4, !tbaa !5
  %1081 = call ptr @strerror(i32 noundef %1080) #11
  %1082 = call ptr @__errno_location() #12
  %1083 = load i32, ptr %1082, align 4, !tbaa !5
  %1084 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1071, ptr noundef @.str.6, i32 noundef %1072, ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 93, ptr noundef %1075, ptr noundef %1078, ptr noundef %1081, i32 noundef %1083) #11
  br label %1102

1085:                                             ; preds = %1063, %1056
  %1086 = load i32, ptr %32, align 4, !tbaa !5
  %1087 = call ptr @__errno_location() #12
  store i32 %1086, ptr %1087, align 4, !tbaa !5
  %1088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1089 = load i32, ptr @test_count, align 4, !tbaa !5
  %1090 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1091 = load i32, ptr %1090, align 4, !tbaa !5
  %1092 = call ptr @s2n_strerror(i32 noundef %1091, ptr noundef @.str.8)
  %1093 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1094 = load i32, ptr %1093, align 4, !tbaa !5
  %1095 = call ptr @s2n_strerror_debug(i32 noundef %1094, ptr noundef @.str.8)
  %1096 = call ptr @__errno_location() #12
  %1097 = load i32, ptr %1096, align 4, !tbaa !5
  %1098 = call ptr @strerror(i32 noundef %1097) #11
  %1099 = call ptr @__errno_location() #12
  %1100 = load i32, ptr %1099, align 4, !tbaa !5
  %1101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1088, ptr noundef @.str.9, i32 noundef %1089, ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 93, ptr noundef %1092, ptr noundef %1095, ptr noundef %1098, i32 noundef %1100) #11
  br label %1102

1102:                                             ; preds = %1085, %1068
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %1103

1103:                                             ; preds = %1102
  br label %1104

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

1105:                                             ; No predecessors!
  br label %1106

1106:                                             ; preds = %1105
  br label %1107

1107:                                             ; preds = %1106, %1046
  br label %1108

1108:                                             ; preds = %1107
  br label %1109

1109:                                             ; preds = %1108
  br label %1110

1110:                                             ; preds = %1109
  %1111 = load i32, ptr @test_count, align 4, !tbaa !5
  %1112 = add nsw i32 %1111, 1
  store i32 %1112, ptr @test_count, align 4, !tbaa !5
  %1113 = load ptr, ptr %24, align 8, !tbaa !9
  %1114 = load ptr, ptr %27, align 8, !tbaa !9
  %1115 = call i32 @s2n_connections_set_io_stuffer_pair(ptr noundef %1113, ptr noundef %1114, ptr noundef %30)
  %1116 = getelementptr inbounds %struct.s2n_result, ptr %33, i32 0, i32 0
  store i32 %1115, ptr %1116, align 4
  %1117 = getelementptr inbounds %struct.s2n_result, ptr %33, i32 0, i32 0
  %1118 = load i32, ptr %1117, align 4
  %1119 = call zeroext i1 @s2n_result_is_ok(i32 %1118)
  br i1 %1119, label %1173, label %1120

1120:                                             ; preds = %1110
  br label %1121

1121:                                             ; preds = %1120
  br label %1122

1122:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  %1123 = call ptr @__errno_location() #12
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  store i32 %1124, ptr %34, align 4, !tbaa !5
  %1125 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1126 = call i32 @s2n_print_stacktrace(ptr noundef %1125)
  %1127 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1128 = trunc i8 %1127 to i1
  br i1 %1128, label %1129, label %1151

1129:                                             ; preds = %1122
  %1130 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1131 = call i32 @fileno(ptr noundef %1130) #11
  %1132 = call i32 @isatty(i32 noundef %1131) #11
  %1133 = icmp ne i32 %1132, 0
  br i1 %1133, label %1134, label %1151

1134:                                             ; preds = %1129
  %1135 = load i32, ptr %34, align 4, !tbaa !5
  %1136 = call ptr @__errno_location() #12
  store i32 %1135, ptr %1136, align 4, !tbaa !5
  %1137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1138 = load i32, ptr @test_count, align 4, !tbaa !5
  %1139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1140 = load i32, ptr %1139, align 4, !tbaa !5
  %1141 = call ptr @s2n_strerror(i32 noundef %1140, ptr noundef @.str.8)
  %1142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1143 = load i32, ptr %1142, align 4, !tbaa !5
  %1144 = call ptr @s2n_strerror_debug(i32 noundef %1143, ptr noundef @.str.8)
  %1145 = call ptr @__errno_location() #12
  %1146 = load i32, ptr %1145, align 4, !tbaa !5
  %1147 = call ptr @strerror(i32 noundef %1146) #11
  %1148 = call ptr @__errno_location() #12
  %1149 = load i32, ptr %1148, align 4, !tbaa !5
  %1150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1137, ptr noundef @.str.6, i32 noundef %1138, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 94, ptr noundef %1141, ptr noundef %1144, ptr noundef %1147, i32 noundef %1149) #11
  br label %1168

1151:                                             ; preds = %1129, %1122
  %1152 = load i32, ptr %34, align 4, !tbaa !5
  %1153 = call ptr @__errno_location() #12
  store i32 %1152, ptr %1153, align 4, !tbaa !5
  %1154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1155 = load i32, ptr @test_count, align 4, !tbaa !5
  %1156 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1157 = load i32, ptr %1156, align 4, !tbaa !5
  %1158 = call ptr @s2n_strerror(i32 noundef %1157, ptr noundef @.str.8)
  %1159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1160 = load i32, ptr %1159, align 4, !tbaa !5
  %1161 = call ptr @s2n_strerror_debug(i32 noundef %1160, ptr noundef @.str.8)
  %1162 = call ptr @__errno_location() #12
  %1163 = load i32, ptr %1162, align 4, !tbaa !5
  %1164 = call ptr @strerror(i32 noundef %1163) #11
  %1165 = call ptr @__errno_location() #12
  %1166 = load i32, ptr %1165, align 4, !tbaa !5
  %1167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1154, ptr noundef @.str.9, i32 noundef %1155, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 94, ptr noundef %1158, ptr noundef %1161, ptr noundef %1164, i32 noundef %1166) #11
  br label %1168

1168:                                             ; preds = %1151, %1134
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %1169

1169:                                             ; preds = %1168
  br label %1170

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

1171:                                             ; No predecessors!
  br label %1172

1172:                                             ; preds = %1171
  br label %1173

1173:                                             ; preds = %1172, %1110
  br label %1174

1174:                                             ; preds = %1173
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1175
  %1177 = load i32, ptr @test_count, align 4, !tbaa !5
  %1178 = add nsw i32 %1177, 1
  store i32 %1178, ptr @test_count, align 4, !tbaa !5
  %1179 = load ptr, ptr %27, align 8, !tbaa !9
  %1180 = load ptr, ptr %24, align 8, !tbaa !9
  %1181 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %1179, ptr noundef %1180)
  %1182 = icmp eq i32 %1181, -1
  br i1 %1182, label %1183, label %1236

1183:                                             ; preds = %1176
  br label %1184

1184:                                             ; preds = %1183
  br label %1185

1185:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  %1186 = call ptr @__errno_location() #12
  %1187 = load i32, ptr %1186, align 4, !tbaa !5
  store i32 %1187, ptr %35, align 4, !tbaa !5
  %1188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1189 = call i32 @s2n_print_stacktrace(ptr noundef %1188)
  %1190 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1191 = trunc i8 %1190 to i1
  br i1 %1191, label %1192, label %1214

1192:                                             ; preds = %1185
  %1193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1194 = call i32 @fileno(ptr noundef %1193) #11
  %1195 = call i32 @isatty(i32 noundef %1194) #11
  %1196 = icmp ne i32 %1195, 0
  br i1 %1196, label %1197, label %1214

1197:                                             ; preds = %1192
  %1198 = load i32, ptr %35, align 4, !tbaa !5
  %1199 = call ptr @__errno_location() #12
  store i32 %1198, ptr %1199, align 4, !tbaa !5
  %1200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1201 = load i32, ptr @test_count, align 4, !tbaa !5
  %1202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1203 = load i32, ptr %1202, align 4, !tbaa !5
  %1204 = call ptr @s2n_strerror(i32 noundef %1203, ptr noundef @.str.8)
  %1205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1206 = load i32, ptr %1205, align 4, !tbaa !5
  %1207 = call ptr @s2n_strerror_debug(i32 noundef %1206, ptr noundef @.str.8)
  %1208 = call ptr @__errno_location() #12
  %1209 = load i32, ptr %1208, align 4, !tbaa !5
  %1210 = call ptr @strerror(i32 noundef %1209) #11
  %1211 = call ptr @__errno_location() #12
  %1212 = load i32, ptr %1211, align 4, !tbaa !5
  %1213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1200, ptr noundef @.str.6, i32 noundef %1201, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 96, ptr noundef %1204, ptr noundef %1207, ptr noundef %1210, i32 noundef %1212) #11
  br label %1231

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

1231:                                             ; preds = %1214, %1197
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %1232

1232:                                             ; preds = %1231
  br label %1233

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

1234:                                             ; No predecessors!
  br label %1235

1235:                                             ; preds = %1234
  br label %1236

1236:                                             ; preds = %1235, %1176
  br label %1237

1237:                                             ; preds = %1236
  br label %1238

1238:                                             ; preds = %1237
  %1239 = load i64, ptr %19, align 8, !tbaa !19
  %1240 = getelementptr inbounds [4 x %struct.anon], ptr %18, i64 0, i64 %1239
  %1241 = getelementptr inbounds %struct.anon, ptr %1240, i32 0, i32 2
  %1242 = load ptr, ptr %1241, align 8, !tbaa !18
  %1243 = icmp eq ptr %1242, null
  br i1 %1243, label %1244, label %1307

1244:                                             ; preds = %1238
  br label %1245

1245:                                             ; preds = %1244
  %1246 = load i32, ptr @test_count, align 4, !tbaa !5
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr @test_count, align 4, !tbaa !5
  %1248 = load ptr, ptr %27, align 8, !tbaa !9
  %1249 = call ptr @s2n_get_application_protocol(ptr noundef %1248)
  %1250 = icmp eq ptr %1249, null
  br i1 %1250, label %1304, label %1251

1251:                                             ; preds = %1245
  br label %1252

1252:                                             ; preds = %1251
  br label %1253

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

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

1265:                                             ; preds = %1260
  %1266 = load i32, ptr %36, align 4, !tbaa !5
  %1267 = call ptr @__errno_location() #12
  store i32 %1266, ptr %1267, align 4, !tbaa !5
  %1268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1269 = load i32, ptr @test_count, align 4, !tbaa !5
  %1270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1271 = load i32, ptr %1270, align 4, !tbaa !5
  %1272 = call ptr @s2n_strerror(i32 noundef %1271, ptr noundef @.str.8)
  %1273 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1274 = load i32, ptr %1273, align 4, !tbaa !5
  %1275 = call ptr @s2n_strerror_debug(i32 noundef %1274, ptr noundef @.str.8)
  %1276 = call ptr @__errno_location() #12
  %1277 = load i32, ptr %1276, align 4, !tbaa !5
  %1278 = call ptr @strerror(i32 noundef %1277) #11
  %1279 = call ptr @__errno_location() #12
  %1280 = load i32, ptr %1279, align 4, !tbaa !5
  %1281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1268, ptr noundef @.str.6, i32 noundef %1269, ptr noundef @.str.30, ptr noundef @.str.5, i32 noundef 99, ptr noundef %1272, ptr noundef %1275, ptr noundef %1278, i32 noundef %1280) #11
  br label %1299

1282:                                             ; preds = %1260, %1253
  %1283 = load i32, ptr %36, align 4, !tbaa !5
  %1284 = call ptr @__errno_location() #12
  store i32 %1283, ptr %1284, align 4, !tbaa !5
  %1285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1286 = load i32, ptr @test_count, align 4, !tbaa !5
  %1287 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1288 = load i32, ptr %1287, align 4, !tbaa !5
  %1289 = call ptr @s2n_strerror(i32 noundef %1288, ptr noundef @.str.8)
  %1290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1291 = load i32, ptr %1290, align 4, !tbaa !5
  %1292 = call ptr @s2n_strerror_debug(i32 noundef %1291, ptr noundef @.str.8)
  %1293 = call ptr @__errno_location() #12
  %1294 = load i32, ptr %1293, align 4, !tbaa !5
  %1295 = call ptr @strerror(i32 noundef %1294) #11
  %1296 = call ptr @__errno_location() #12
  %1297 = load i32, ptr %1296, align 4, !tbaa !5
  %1298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1285, ptr noundef @.str.9, i32 noundef %1286, ptr noundef @.str.30, ptr noundef @.str.5, i32 noundef 99, ptr noundef %1289, ptr noundef %1292, ptr noundef %1295, i32 noundef %1297) #11
  br label %1299

1299:                                             ; preds = %1282, %1265
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %1300

1300:                                             ; preds = %1299
  br label %1301

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

1302:                                             ; No predecessors!
  br label %1303

1303:                                             ; preds = %1302
  br label %1304

1304:                                             ; preds = %1303, %1245
  br label %1305

1305:                                             ; preds = %1304
  br label %1306

1306:                                             ; preds = %1305
  br label %1375

1307:                                             ; preds = %1238
  br label %1308

1308:                                             ; preds = %1307
  %1309 = load i32, ptr @test_count, align 4, !tbaa !5
  %1310 = add nsw i32 %1309, 1
  store i32 %1310, ptr @test_count, align 4, !tbaa !5
  %1311 = load ptr, ptr %27, align 8, !tbaa !9
  %1312 = call ptr @s2n_get_application_protocol(ptr noundef %1311)
  %1313 = load i64, ptr %19, align 8, !tbaa !19
  %1314 = getelementptr inbounds [4 x %struct.anon], ptr %18, i64 0, i64 %1313
  %1315 = getelementptr inbounds %struct.anon, ptr %1314, i32 0, i32 2
  %1316 = load ptr, ptr %1315, align 8, !tbaa !18
  %1317 = call i32 @strcmp(ptr noundef %1312, ptr noundef %1316) #14
  %1318 = icmp eq i32 %1317, 0
  br i1 %1318, label %1372, label %1319

1319:                                             ; preds = %1308
  br label %1320

1320:                                             ; preds = %1319
  br label %1321

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

1328:                                             ; preds = %1321
  %1329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1330 = call i32 @fileno(ptr noundef %1329) #11
  %1331 = call i32 @isatty(i32 noundef %1330) #11
  %1332 = icmp ne i32 %1331, 0
  br i1 %1332, label %1333, label %1350

1333:                                             ; preds = %1328
  %1334 = load i32, ptr %37, align 4, !tbaa !5
  %1335 = call ptr @__errno_location() #12
  store i32 %1334, ptr %1335, align 4, !tbaa !5
  %1336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1337 = load i32, ptr @test_count, align 4, !tbaa !5
  %1338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1339 = load i32, ptr %1338, align 4, !tbaa !5
  %1340 = call ptr @s2n_strerror(i32 noundef %1339, ptr noundef @.str.8)
  %1341 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1342 = load i32, ptr %1341, align 4, !tbaa !5
  %1343 = call ptr @s2n_strerror_debug(i32 noundef %1342, ptr noundef @.str.8)
  %1344 = call ptr @__errno_location() #12
  %1345 = load i32, ptr %1344, align 4, !tbaa !5
  %1346 = call ptr @strerror(i32 noundef %1345) #11
  %1347 = call ptr @__errno_location() #12
  %1348 = load i32, ptr %1347, align 4, !tbaa !5
  %1349 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1336, ptr noundef @.str.6, i32 noundef %1337, ptr noundef @.str.31, ptr noundef @.str.5, i32 noundef 102, ptr noundef %1340, ptr noundef %1343, ptr noundef %1346, i32 noundef %1348) #11
  br label %1367

1350:                                             ; preds = %1328, %1321
  %1351 = load i32, ptr %37, align 4, !tbaa !5
  %1352 = call ptr @__errno_location() #12
  store i32 %1351, ptr %1352, align 4, !tbaa !5
  %1353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1354 = load i32, ptr @test_count, align 4, !tbaa !5
  %1355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1356 = load i32, ptr %1355, align 4, !tbaa !5
  %1357 = call ptr @s2n_strerror(i32 noundef %1356, ptr noundef @.str.8)
  %1358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1359 = load i32, ptr %1358, align 4, !tbaa !5
  %1360 = call ptr @s2n_strerror_debug(i32 noundef %1359, ptr noundef @.str.8)
  %1361 = call ptr @__errno_location() #12
  %1362 = load i32, ptr %1361, align 4, !tbaa !5
  %1363 = call ptr @strerror(i32 noundef %1362) #11
  %1364 = call ptr @__errno_location() #12
  %1365 = load i32, ptr %1364, align 4, !tbaa !5
  %1366 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1353, ptr noundef @.str.9, i32 noundef %1354, ptr noundef @.str.31, ptr noundef @.str.5, i32 noundef 102, ptr noundef %1357, ptr noundef %1360, ptr noundef %1363, i32 noundef %1365) #11
  br label %1367

1367:                                             ; preds = %1350, %1333
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %1368

1368:                                             ; preds = %1367
  br label %1369

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

1370:                                             ; No predecessors!
  br label %1371

1371:                                             ; preds = %1370
  br label %1372

1372:                                             ; preds = %1371, %1308
  br label %1373

1373:                                             ; preds = %1372
  br label %1374

1374:                                             ; preds = %1373
  br label %1375

1375:                                             ; preds = %1374, %1306
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  store i32 0, ptr %38, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %39, ptr align 1 @__const.main.data_send, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  call void @llvm.memset.p0.i64(ptr align 1 %40, i8 0, i64 8, i1 false)
  br label %1376

1376:                                             ; preds = %1375
  %1377 = load i32, ptr @test_count, align 4, !tbaa !5
  %1378 = add nsw i32 %1377, 1
  store i32 %1378, ptr @test_count, align 4, !tbaa !5
  %1379 = load ptr, ptr %24, align 8, !tbaa !9
  %1380 = getelementptr inbounds [8 x i8], ptr %39, i64 0, i64 0
  %1381 = call i64 @s2n_send(ptr noundef %1379, ptr noundef %1380, i64 noundef 8, ptr noundef %38)
  %1382 = icmp eq i64 %1381, 8
  br i1 %1382, label %1436, label %1383

1383:                                             ; preds = %1376
  br label %1384

1384:                                             ; preds = %1383
  br label %1385

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

1392:                                             ; preds = %1385
  %1393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1394 = call i32 @fileno(ptr noundef %1393) #11
  %1395 = call i32 @isatty(i32 noundef %1394) #11
  %1396 = icmp ne i32 %1395, 0
  br i1 %1396, label %1397, label %1414

1397:                                             ; preds = %1392
  %1398 = load i32, ptr %41, align 4, !tbaa !5
  %1399 = call ptr @__errno_location() #12
  store i32 %1398, ptr %1399, align 4, !tbaa !5
  %1400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1401 = load i32, ptr @test_count, align 4, !tbaa !5
  %1402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1403 = load i32, ptr %1402, align 4, !tbaa !5
  %1404 = call ptr @s2n_strerror(i32 noundef %1403, ptr noundef @.str.8)
  %1405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1406 = load i32, ptr %1405, align 4, !tbaa !5
  %1407 = call ptr @s2n_strerror_debug(i32 noundef %1406, ptr noundef @.str.8)
  %1408 = call ptr @__errno_location() #12
  %1409 = load i32, ptr %1408, align 4, !tbaa !5
  %1410 = call ptr @strerror(i32 noundef %1409) #11
  %1411 = call ptr @__errno_location() #12
  %1412 = load i32, ptr %1411, align 4, !tbaa !5
  %1413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1400, ptr noundef @.str.6, i32 noundef %1401, ptr noundef @.str.32, ptr noundef @.str.5, i32 noundef 109, ptr noundef %1404, ptr noundef %1407, ptr noundef %1410, i32 noundef %1412) #11
  br label %1431

1414:                                             ; preds = %1392, %1385
  %1415 = load i32, ptr %41, align 4, !tbaa !5
  %1416 = call ptr @__errno_location() #12
  store i32 %1415, ptr %1416, align 4, !tbaa !5
  %1417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1418 = load i32, ptr @test_count, align 4, !tbaa !5
  %1419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1420 = load i32, ptr %1419, align 4, !tbaa !5
  %1421 = call ptr @s2n_strerror(i32 noundef %1420, ptr noundef @.str.8)
  %1422 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1423 = load i32, ptr %1422, align 4, !tbaa !5
  %1424 = call ptr @s2n_strerror_debug(i32 noundef %1423, ptr noundef @.str.8)
  %1425 = call ptr @__errno_location() #12
  %1426 = load i32, ptr %1425, align 4, !tbaa !5
  %1427 = call ptr @strerror(i32 noundef %1426) #11
  %1428 = call ptr @__errno_location() #12
  %1429 = load i32, ptr %1428, align 4, !tbaa !5
  %1430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1417, ptr noundef @.str.9, i32 noundef %1418, ptr noundef @.str.32, ptr noundef @.str.5, i32 noundef 109, ptr noundef %1421, ptr noundef %1424, ptr noundef %1427, i32 noundef %1429) #11
  br label %1431

1431:                                             ; preds = %1414, %1397
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  br label %1432

1432:                                             ; preds = %1431
  br label %1433

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

1434:                                             ; No predecessors!
  br label %1435

1435:                                             ; preds = %1434
  br label %1436

1436:                                             ; preds = %1435, %1376
  br label %1437

1437:                                             ; preds = %1436
  br label %1438

1438:                                             ; preds = %1437
  br label %1439

1439:                                             ; preds = %1438
  %1440 = load i32, ptr @test_count, align 4, !tbaa !5
  %1441 = add nsw i32 %1440, 1
  store i32 %1441, ptr @test_count, align 4, !tbaa !5
  %1442 = load ptr, ptr %27, align 8, !tbaa !9
  %1443 = getelementptr inbounds [8 x i8], ptr %40, i64 0, i64 0
  %1444 = call i64 @s2n_recv(ptr noundef %1442, ptr noundef %1443, i64 noundef 8, ptr noundef %38)
  %1445 = icmp eq i64 %1444, 8
  br i1 %1445, label %1499, label %1446

1446:                                             ; preds = %1439
  br label %1447

1447:                                             ; preds = %1446
  br label %1448

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

1455:                                             ; preds = %1448
  %1456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1457 = call i32 @fileno(ptr noundef %1456) #11
  %1458 = call i32 @isatty(i32 noundef %1457) #11
  %1459 = icmp ne i32 %1458, 0
  br i1 %1459, label %1460, label %1477

1460:                                             ; preds = %1455
  %1461 = load i32, ptr %42, align 4, !tbaa !5
  %1462 = call ptr @__errno_location() #12
  store i32 %1461, ptr %1462, align 4, !tbaa !5
  %1463 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1464 = load i32, ptr @test_count, align 4, !tbaa !5
  %1465 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1466 = load i32, ptr %1465, align 4, !tbaa !5
  %1467 = call ptr @s2n_strerror(i32 noundef %1466, ptr noundef @.str.8)
  %1468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1469 = load i32, ptr %1468, align 4, !tbaa !5
  %1470 = call ptr @s2n_strerror_debug(i32 noundef %1469, ptr noundef @.str.8)
  %1471 = call ptr @__errno_location() #12
  %1472 = load i32, ptr %1471, align 4, !tbaa !5
  %1473 = call ptr @strerror(i32 noundef %1472) #11
  %1474 = call ptr @__errno_location() #12
  %1475 = load i32, ptr %1474, align 4, !tbaa !5
  %1476 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1463, ptr noundef @.str.6, i32 noundef %1464, ptr noundef @.str.33, ptr noundef @.str.5, i32 noundef 110, ptr noundef %1467, ptr noundef %1470, ptr noundef %1473, i32 noundef %1475) #11
  br label %1494

1477:                                             ; preds = %1455, %1448
  %1478 = load i32, ptr %42, align 4, !tbaa !5
  %1479 = call ptr @__errno_location() #12
  store i32 %1478, ptr %1479, align 4, !tbaa !5
  %1480 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1481 = load i32, ptr @test_count, align 4, !tbaa !5
  %1482 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1483 = load i32, ptr %1482, align 4, !tbaa !5
  %1484 = call ptr @s2n_strerror(i32 noundef %1483, ptr noundef @.str.8)
  %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_debug(i32 noundef %1486, ptr noundef @.str.8)
  %1488 = call ptr @__errno_location() #12
  %1489 = load i32, ptr %1488, align 4, !tbaa !5
  %1490 = call ptr @strerror(i32 noundef %1489) #11
  %1491 = call ptr @__errno_location() #12
  %1492 = load i32, ptr %1491, align 4, !tbaa !5
  %1493 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1480, ptr noundef @.str.9, i32 noundef %1481, ptr noundef @.str.33, ptr noundef @.str.5, i32 noundef 110, ptr noundef %1484, ptr noundef %1487, ptr noundef %1490, i32 noundef %1492) #11
  br label %1494

1494:                                             ; preds = %1477, %1460
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  br label %1495

1495:                                             ; preds = %1494
  br label %1496

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

1497:                                             ; No predecessors!
  br label %1498

1498:                                             ; preds = %1497
  br label %1499

1499:                                             ; preds = %1498, %1439
  br label %1500

1500:                                             ; preds = %1499
  br label %1501

1501:                                             ; preds = %1500
  br label %1502

1502:                                             ; preds = %1501
  br label %1503

1503:                                             ; preds = %1502
  %1504 = load i32, ptr @test_count, align 4, !tbaa !5
  %1505 = add nsw i32 %1504, 1
  store i32 %1505, ptr @test_count, align 4, !tbaa !5
  %1506 = getelementptr inbounds [8 x i8], ptr %39, i64 0, i64 0
  %1507 = getelementptr inbounds [8 x i8], ptr %40, i64 0, i64 0
  %1508 = call i32 @memcmp(ptr noundef %1506, ptr noundef %1507, i64 noundef 8) #14
  %1509 = icmp eq i32 %1508, 0
  br i1 %1509, label %1563, label %1510

1510:                                             ; preds = %1503
  br label %1511

1511:                                             ; preds = %1510
  br label %1512

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

1519:                                             ; preds = %1512
  %1520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1521 = call i32 @fileno(ptr noundef %1520) #11
  %1522 = call i32 @isatty(i32 noundef %1521) #11
  %1523 = icmp ne i32 %1522, 0
  br i1 %1523, label %1524, label %1541

1524:                                             ; preds = %1519
  %1525 = load i32, ptr %43, align 4, !tbaa !5
  %1526 = call ptr @__errno_location() #12
  store i32 %1525, ptr %1526, align 4, !tbaa !5
  %1527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1528 = load i32, ptr @test_count, align 4, !tbaa !5
  %1529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1530 = load i32, ptr %1529, align 4, !tbaa !5
  %1531 = call ptr @s2n_strerror(i32 noundef %1530, ptr noundef @.str.8)
  %1532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1533 = load i32, ptr %1532, align 4, !tbaa !5
  %1534 = call ptr @s2n_strerror_debug(i32 noundef %1533, ptr noundef @.str.8)
  %1535 = call ptr @__errno_location() #12
  %1536 = load i32, ptr %1535, align 4, !tbaa !5
  %1537 = call ptr @strerror(i32 noundef %1536) #11
  %1538 = call ptr @__errno_location() #12
  %1539 = load i32, ptr %1538, align 4, !tbaa !5
  %1540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1527, ptr noundef @.str.6, i32 noundef %1528, ptr noundef @.str.34, ptr noundef @.str.5, i32 noundef 111, ptr noundef %1531, ptr noundef %1534, ptr noundef %1537, i32 noundef %1539) #11
  br label %1558

1541:                                             ; preds = %1519, %1512
  %1542 = load i32, ptr %43, align 4, !tbaa !5
  %1543 = call ptr @__errno_location() #12
  store i32 %1542, ptr %1543, align 4, !tbaa !5
  %1544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1545 = load i32, ptr @test_count, align 4, !tbaa !5
  %1546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1547 = load i32, ptr %1546, align 4, !tbaa !5
  %1548 = call ptr @s2n_strerror(i32 noundef %1547, ptr noundef @.str.8)
  %1549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1550 = load i32, ptr %1549, align 4, !tbaa !5
  %1551 = call ptr @s2n_strerror_debug(i32 noundef %1550, ptr noundef @.str.8)
  %1552 = call ptr @__errno_location() #12
  %1553 = load i32, ptr %1552, align 4, !tbaa !5
  %1554 = call ptr @strerror(i32 noundef %1553) #11
  %1555 = call ptr @__errno_location() #12
  %1556 = load i32, ptr %1555, align 4, !tbaa !5
  %1557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1544, ptr noundef @.str.9, i32 noundef %1545, ptr noundef @.str.34, ptr noundef @.str.5, i32 noundef 111, ptr noundef %1548, ptr noundef %1551, ptr noundef %1554, i32 noundef %1556) #11
  br label %1558

1558:                                             ; preds = %1541, %1524
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %1559

1559:                                             ; preds = %1558
  br label %1560

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

1561:                                             ; No predecessors!
  br label %1562

1562:                                             ; preds = %1561
  br label %1563

1563:                                             ; preds = %1562, %1503
  br label %1564

1564:                                             ; preds = %1563
  br label %1565

1565:                                             ; preds = %1564
  br label %1566

1566:                                             ; preds = %1565
  br label %1567

1567:                                             ; preds = %1566
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  %1568 = call i32 @s2n_io_stuffer_pair_free(ptr noundef %30)
  %1569 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  store i32 %1568, ptr %1569, align 4
  call void @llvm.lifetime.end.p0(i64 80, ptr %30) #11
  %1570 = call i32 @s2n_connection_ptr_free(ptr noundef %27)
  %1571 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  store i32 %1570, ptr %1571, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  %1572 = call i32 @s2n_connection_ptr_free(ptr noundef %24)
  %1573 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %1572, ptr %1573, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  %1574 = call i32 @s2n_config_ptr_free(ptr noundef %20)
  %1575 = getelementptr inbounds %struct.s2n_result, ptr %47, i32 0, i32 0
  store i32 %1574, ptr %1575, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  br label %1576

1576:                                             ; preds = %1567
  %1577 = load i64, ptr %19, align 8, !tbaa !19
  %1578 = add i64 %1577, 1
  store i64 %1578, ptr %19, align 8, !tbaa !19
  br label %597, !llvm.loop !21

1579:                                             ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %1580 = call ptr @s2n_config_new()
  store ptr %1580, ptr %48, align 8, !tbaa !9
  br label %1581

1581:                                             ; preds = %1579
  %1582 = load i32, ptr @test_count, align 4, !tbaa !5
  %1583 = add nsw i32 %1582, 1
  store i32 %1583, ptr @test_count, align 4, !tbaa !5
  %1584 = load ptr, ptr %48, align 8, !tbaa !9
  %1585 = icmp eq ptr %1584, null
  br i1 %1585, label %1586, label %1639

1586:                                             ; preds = %1581
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

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

1595:                                             ; preds = %1588
  %1596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1597 = call i32 @fileno(ptr noundef %1596) #11
  %1598 = call i32 @isatty(i32 noundef %1597) #11
  %1599 = icmp ne i32 %1598, 0
  br i1 %1599, label %1600, label %1617

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

1617:                                             ; preds = %1595, %1588
  %1618 = load i32, ptr %49, align 4, !tbaa !5
  %1619 = call ptr @__errno_location() #12
  store i32 %1618, ptr %1619, align 4, !tbaa !5
  %1620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1621 = load i32, ptr @test_count, align 4, !tbaa !5
  %1622 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1623 = load i32, ptr %1622, align 4, !tbaa !5
  %1624 = call ptr @s2n_strerror(i32 noundef %1623, ptr noundef @.str.8)
  %1625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1626 = load i32, ptr %1625, align 4, !tbaa !5
  %1627 = call ptr @s2n_strerror_debug(i32 noundef %1626, ptr noundef @.str.8)
  %1628 = call ptr @__errno_location() #12
  %1629 = load i32, ptr %1628, align 4, !tbaa !5
  %1630 = call ptr @strerror(i32 noundef %1629) #11
  %1631 = call ptr @__errno_location() #12
  %1632 = load i32, ptr %1631, align 4, !tbaa !5
  %1633 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1620, ptr noundef @.str.9, i32 noundef %1621, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 117, ptr noundef %1624, ptr noundef %1627, ptr noundef %1630, i32 noundef %1632) #11
  br label %1634

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

1635:                                             ; preds = %1634
  br label %1636

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

1637:                                             ; No predecessors!
  br label %1638

1638:                                             ; preds = %1637
  br label %1639

1639:                                             ; preds = %1638, %1581
  br label %1640

1640:                                             ; preds = %1639
  br label %1641

1641:                                             ; preds = %1640
  br label %1642

1642:                                             ; preds = %1641
  %1643 = load i32, ptr @test_count, align 4, !tbaa !5
  %1644 = add nsw i32 %1643, 1
  store i32 %1644, ptr @test_count, align 4, !tbaa !5
  %1645 = load ptr, ptr %48, align 8, !tbaa !9
  %1646 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 0
  %1647 = call i32 @s2n_config_set_protocol_preferences(ptr noundef %1645, ptr noundef %1646, i32 noundef 3)
  %1648 = icmp eq i32 %1647, -1
  br i1 %1648, label %1649, label %1702

1649:                                             ; preds = %1642
  br label %1650

1650:                                             ; preds = %1649
  br label %1651

1651:                                             ; preds = %1650
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  %1652 = call ptr @__errno_location() #12
  %1653 = load i32, ptr %1652, align 4, !tbaa !5
  store i32 %1653, ptr %50, align 4, !tbaa !5
  %1654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1655 = call i32 @s2n_print_stacktrace(ptr noundef %1654)
  %1656 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1657 = trunc i8 %1656 to i1
  br i1 %1657, label %1658, label %1680

1658:                                             ; preds = %1651
  %1659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1660 = call i32 @fileno(ptr noundef %1659) #11
  %1661 = call i32 @isatty(i32 noundef %1660) #11
  %1662 = icmp ne i32 %1661, 0
  br i1 %1662, label %1663, label %1680

1663:                                             ; preds = %1658
  %1664 = load i32, ptr %50, align 4, !tbaa !5
  %1665 = call ptr @__errno_location() #12
  store i32 %1664, ptr %1665, align 4, !tbaa !5
  %1666 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1667 = load i32, ptr @test_count, align 4, !tbaa !5
  %1668 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1669 = load i32, ptr %1668, align 4, !tbaa !5
  %1670 = call ptr @s2n_strerror(i32 noundef %1669, ptr noundef @.str.8)
  %1671 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1672 = load i32, ptr %1671, align 4, !tbaa !5
  %1673 = call ptr @s2n_strerror_debug(i32 noundef %1672, ptr noundef @.str.8)
  %1674 = call ptr @__errno_location() #12
  %1675 = load i32, ptr %1674, align 4, !tbaa !5
  %1676 = call ptr @strerror(i32 noundef %1675) #11
  %1677 = call ptr @__errno_location() #12
  %1678 = load i32, ptr %1677, align 4, !tbaa !5
  %1679 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1666, ptr noundef @.str.6, i32 noundef %1667, ptr noundef @.str.35, ptr noundef @.str.5, i32 noundef 119, ptr noundef %1670, ptr noundef %1673, ptr noundef %1676, i32 noundef %1678) #11
  br label %1697

1680:                                             ; preds = %1658, %1651
  %1681 = load i32, ptr %50, align 4, !tbaa !5
  %1682 = call ptr @__errno_location() #12
  store i32 %1681, ptr %1682, align 4, !tbaa !5
  %1683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1684 = load i32, ptr @test_count, align 4, !tbaa !5
  %1685 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1686 = load i32, ptr %1685, align 4, !tbaa !5
  %1687 = call ptr @s2n_strerror(i32 noundef %1686, ptr noundef @.str.8)
  %1688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1689 = load i32, ptr %1688, align 4, !tbaa !5
  %1690 = call ptr @s2n_strerror_debug(i32 noundef %1689, ptr noundef @.str.8)
  %1691 = call ptr @__errno_location() #12
  %1692 = load i32, ptr %1691, align 4, !tbaa !5
  %1693 = call ptr @strerror(i32 noundef %1692) #11
  %1694 = call ptr @__errno_location() #12
  %1695 = load i32, ptr %1694, align 4, !tbaa !5
  %1696 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1683, ptr noundef @.str.9, i32 noundef %1684, ptr noundef @.str.35, ptr noundef @.str.5, i32 noundef 119, ptr noundef %1687, ptr noundef %1690, ptr noundef %1693, i32 noundef %1695) #11
  br label %1697

1697:                                             ; preds = %1680, %1663
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1698

1698:                                             ; preds = %1697
  br label %1699

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

1700:                                             ; No predecessors!
  br label %1701

1701:                                             ; preds = %1700
  br label %1702

1702:                                             ; preds = %1701, %1642
  br label %1703

1703:                                             ; preds = %1702
  br label %1704

1704:                                             ; preds = %1703
  br label %1705

1705:                                             ; preds = %1704
  %1706 = load i32, ptr @test_count, align 4, !tbaa !5
  %1707 = add nsw i32 %1706, 1
  store i32 %1707, ptr @test_count, align 4, !tbaa !5
  %1708 = load ptr, ptr %48, align 8, !tbaa !9
  %1709 = call i32 @s2n_config_disable_x509_verification(ptr noundef %1708)
  %1710 = icmp eq i32 %1709, -1
  br i1 %1710, label %1711, label %1764

1711:                                             ; preds = %1705
  br label %1712

1712:                                             ; preds = %1711
  br label %1713

1713:                                             ; preds = %1712
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  %1714 = call ptr @__errno_location() #12
  %1715 = load i32, ptr %1714, align 4, !tbaa !5
  store i32 %1715, ptr %51, align 4, !tbaa !5
  %1716 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1717 = call i32 @s2n_print_stacktrace(ptr noundef %1716)
  %1718 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1719 = trunc i8 %1718 to i1
  br i1 %1719, label %1720, label %1742

1720:                                             ; preds = %1713
  %1721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1722 = call i32 @fileno(ptr noundef %1721) #11
  %1723 = call i32 @isatty(i32 noundef %1722) #11
  %1724 = icmp ne i32 %1723, 0
  br i1 %1724, label %1725, label %1742

1725:                                             ; preds = %1720
  %1726 = load i32, ptr %51, align 4, !tbaa !5
  %1727 = call ptr @__errno_location() #12
  store i32 %1726, ptr %1727, align 4, !tbaa !5
  %1728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1729 = load i32, ptr @test_count, align 4, !tbaa !5
  %1730 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1731 = load i32, ptr %1730, align 4, !tbaa !5
  %1732 = call ptr @s2n_strerror(i32 noundef %1731, ptr noundef @.str.8)
  %1733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1734 = load i32, ptr %1733, align 4, !tbaa !5
  %1735 = call ptr @s2n_strerror_debug(i32 noundef %1734, ptr noundef @.str.8)
  %1736 = call ptr @__errno_location() #12
  %1737 = load i32, ptr %1736, align 4, !tbaa !5
  %1738 = call ptr @strerror(i32 noundef %1737) #11
  %1739 = call ptr @__errno_location() #12
  %1740 = load i32, ptr %1739, align 4, !tbaa !5
  %1741 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1728, ptr noundef @.str.6, i32 noundef %1729, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 120, ptr noundef %1732, ptr noundef %1735, ptr noundef %1738, i32 noundef %1740) #11
  br label %1759

1742:                                             ; preds = %1720, %1713
  %1743 = load i32, ptr %51, align 4, !tbaa !5
  %1744 = call ptr @__errno_location() #12
  store i32 %1743, ptr %1744, align 4, !tbaa !5
  %1745 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1746 = load i32, ptr @test_count, align 4, !tbaa !5
  %1747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1748 = load i32, ptr %1747, align 4, !tbaa !5
  %1749 = call ptr @s2n_strerror(i32 noundef %1748, ptr noundef @.str.8)
  %1750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1751 = load i32, ptr %1750, align 4, !tbaa !5
  %1752 = call ptr @s2n_strerror_debug(i32 noundef %1751, ptr noundef @.str.8)
  %1753 = call ptr @__errno_location() #12
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call ptr @strerror(i32 noundef %1754) #11
  %1756 = call ptr @__errno_location() #12
  %1757 = load i32, ptr %1756, align 4, !tbaa !5
  %1758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1745, ptr noundef @.str.9, i32 noundef %1746, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 120, ptr noundef %1749, ptr noundef %1752, ptr noundef %1755, i32 noundef %1757) #11
  br label %1759

1759:                                             ; preds = %1742, %1725
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  br label %1760

1760:                                             ; preds = %1759
  br label %1761

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

1762:                                             ; No predecessors!
  br label %1763

1763:                                             ; preds = %1762
  br label %1764

1764:                                             ; preds = %1763, %1705
  br label %1765

1765:                                             ; preds = %1764
  br label %1766

1766:                                             ; preds = %1765
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %1767 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1767, ptr %52, align 8, !tbaa !9
  br label %1768

1768:                                             ; preds = %1766
  %1769 = load i32, ptr @test_count, align 4, !tbaa !5
  %1770 = add nsw i32 %1769, 1
  store i32 %1770, ptr @test_count, align 4, !tbaa !5
  %1771 = load ptr, ptr %52, align 8, !tbaa !9
  %1772 = icmp eq ptr %1771, null
  br i1 %1772, label %1773, label %1826

1773:                                             ; preds = %1768
  br label %1774

1774:                                             ; preds = %1773
  br label %1775

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

1782:                                             ; preds = %1775
  %1783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1784 = call i32 @fileno(ptr noundef %1783) #11
  %1785 = call i32 @isatty(i32 noundef %1784) #11
  %1786 = icmp ne i32 %1785, 0
  br i1 %1786, label %1787, label %1804

1787:                                             ; preds = %1782
  %1788 = load i32, ptr %53, align 4, !tbaa !5
  %1789 = call ptr @__errno_location() #12
  store i32 %1788, ptr %1789, align 4, !tbaa !5
  %1790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1791 = load i32, ptr @test_count, align 4, !tbaa !5
  %1792 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1793 = load i32, ptr %1792, align 4, !tbaa !5
  %1794 = call ptr @s2n_strerror(i32 noundef %1793, ptr noundef @.str.8)
  %1795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1796 = load i32, ptr %1795, align 4, !tbaa !5
  %1797 = call ptr @s2n_strerror_debug(i32 noundef %1796, ptr noundef @.str.8)
  %1798 = call ptr @__errno_location() #12
  %1799 = load i32, ptr %1798, align 4, !tbaa !5
  %1800 = call ptr @strerror(i32 noundef %1799) #11
  %1801 = call ptr @__errno_location() #12
  %1802 = load i32, ptr %1801, align 4, !tbaa !5
  %1803 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1790, ptr noundef @.str.6, i32 noundef %1791, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 124, ptr noundef %1794, ptr noundef %1797, ptr noundef %1800, i32 noundef %1802) #11
  br label %1821

1804:                                             ; preds = %1782, %1775
  %1805 = load i32, ptr %53, align 4, !tbaa !5
  %1806 = call ptr @__errno_location() #12
  store i32 %1805, ptr %1806, align 4, !tbaa !5
  %1807 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1808 = load i32, ptr @test_count, align 4, !tbaa !5
  %1809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1810 = load i32, ptr %1809, align 4, !tbaa !5
  %1811 = call ptr @s2n_strerror(i32 noundef %1810, ptr noundef @.str.8)
  %1812 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1813 = load i32, ptr %1812, align 4, !tbaa !5
  %1814 = call ptr @s2n_strerror_debug(i32 noundef %1813, ptr noundef @.str.8)
  %1815 = call ptr @__errno_location() #12
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  %1817 = call ptr @strerror(i32 noundef %1816) #11
  %1818 = call ptr @__errno_location() #12
  %1819 = load i32, ptr %1818, align 4, !tbaa !5
  %1820 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1807, ptr noundef @.str.9, i32 noundef %1808, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 124, ptr noundef %1811, ptr noundef %1814, ptr noundef %1817, i32 noundef %1819) #11
  br label %1821

1821:                                             ; preds = %1804, %1787
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %1822

1822:                                             ; preds = %1821
  br label %1823

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

1824:                                             ; No predecessors!
  br label %1825

1825:                                             ; preds = %1824
  br label %1826

1826:                                             ; preds = %1825, %1768
  br label %1827

1827:                                             ; preds = %1826
  br label %1828

1828:                                             ; preds = %1827
  br label %1829

1829:                                             ; preds = %1828
  %1830 = load i32, ptr @test_count, align 4, !tbaa !5
  %1831 = add nsw i32 %1830, 1
  store i32 %1831, ptr @test_count, align 4, !tbaa !5
  %1832 = load ptr, ptr %52, align 8, !tbaa !9
  %1833 = load ptr, ptr %48, align 8, !tbaa !9
  %1834 = call i32 @s2n_connection_set_config(ptr noundef %1832, ptr noundef %1833)
  %1835 = icmp eq i32 %1834, -1
  br i1 %1835, label %1836, label %1889

1836:                                             ; preds = %1829
  br label %1837

1837:                                             ; preds = %1836
  br label %1838

1838:                                             ; preds = %1837
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #11
  %1839 = call ptr @__errno_location() #12
  %1840 = load i32, ptr %1839, align 4, !tbaa !5
  store i32 %1840, ptr %54, align 4, !tbaa !5
  %1841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1842 = call i32 @s2n_print_stacktrace(ptr noundef %1841)
  %1843 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1844 = trunc i8 %1843 to i1
  br i1 %1844, label %1845, label %1867

1845:                                             ; preds = %1838
  %1846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1847 = call i32 @fileno(ptr noundef %1846) #11
  %1848 = call i32 @isatty(i32 noundef %1847) #11
  %1849 = icmp ne i32 %1848, 0
  br i1 %1849, label %1850, label %1867

1850:                                             ; preds = %1845
  %1851 = load i32, ptr %54, align 4, !tbaa !5
  %1852 = call ptr @__errno_location() #12
  store i32 %1851, ptr %1852, align 4, !tbaa !5
  %1853 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1854 = load i32, ptr @test_count, align 4, !tbaa !5
  %1855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1856 = load i32, ptr %1855, align 4, !tbaa !5
  %1857 = call ptr @s2n_strerror(i32 noundef %1856, ptr noundef @.str.8)
  %1858 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1859 = load i32, ptr %1858, align 4, !tbaa !5
  %1860 = call ptr @s2n_strerror_debug(i32 noundef %1859, ptr noundef @.str.8)
  %1861 = call ptr @__errno_location() #12
  %1862 = load i32, ptr %1861, align 4, !tbaa !5
  %1863 = call ptr @strerror(i32 noundef %1862) #11
  %1864 = call ptr @__errno_location() #12
  %1865 = load i32, ptr %1864, align 4, !tbaa !5
  %1866 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1853, ptr noundef @.str.6, i32 noundef %1854, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 125, ptr noundef %1857, ptr noundef %1860, ptr noundef %1863, i32 noundef %1865) #11
  br label %1884

1867:                                             ; preds = %1845, %1838
  %1868 = load i32, ptr %54, align 4, !tbaa !5
  %1869 = call ptr @__errno_location() #12
  store i32 %1868, ptr %1869, align 4, !tbaa !5
  %1870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1871 = load i32, ptr @test_count, align 4, !tbaa !5
  %1872 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1873 = load i32, ptr %1872, align 4, !tbaa !5
  %1874 = call ptr @s2n_strerror(i32 noundef %1873, ptr noundef @.str.8)
  %1875 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1876 = load i32, ptr %1875, align 4, !tbaa !5
  %1877 = call ptr @s2n_strerror_debug(i32 noundef %1876, ptr noundef @.str.8)
  %1878 = call ptr @__errno_location() #12
  %1879 = load i32, ptr %1878, align 4, !tbaa !5
  %1880 = call ptr @strerror(i32 noundef %1879) #11
  %1881 = call ptr @__errno_location() #12
  %1882 = load i32, ptr %1881, align 4, !tbaa !5
  %1883 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1870, ptr noundef @.str.9, i32 noundef %1871, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 125, ptr noundef %1874, ptr noundef %1877, ptr noundef %1880, i32 noundef %1882) #11
  br label %1884

1884:                                             ; preds = %1867, %1850
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #11
  br label %1885

1885:                                             ; preds = %1884
  br label %1886

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

1887:                                             ; No predecessors!
  br label %1888

1888:                                             ; preds = %1887
  br label %1889

1889:                                             ; preds = %1888, %1829
  br label %1890

1890:                                             ; preds = %1889
  br label %1891

1891:                                             ; preds = %1890
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  %1892 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %1892, ptr %55, align 8, !tbaa !9
  br label %1893

1893:                                             ; preds = %1891
  %1894 = load i32, ptr @test_count, align 4, !tbaa !5
  %1895 = add nsw i32 %1894, 1
  store i32 %1895, ptr @test_count, align 4, !tbaa !5
  %1896 = load ptr, ptr %55, align 8, !tbaa !9
  %1897 = icmp eq ptr %1896, null
  br i1 %1897, label %1898, label %1951

1898:                                             ; preds = %1893
  br label %1899

1899:                                             ; preds = %1898
  br label %1900

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

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

1912:                                             ; preds = %1907
  %1913 = load i32, ptr %56, align 4, !tbaa !5
  %1914 = call ptr @__errno_location() #12
  store i32 %1913, ptr %1914, align 4, !tbaa !5
  %1915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1916 = load i32, ptr @test_count, align 4, !tbaa !5
  %1917 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1918 = load i32, ptr %1917, align 4, !tbaa !5
  %1919 = call ptr @s2n_strerror(i32 noundef %1918, ptr noundef @.str.8)
  %1920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1921 = load i32, ptr %1920, align 4, !tbaa !5
  %1922 = call ptr @s2n_strerror_debug(i32 noundef %1921, ptr noundef @.str.8)
  %1923 = call ptr @__errno_location() #12
  %1924 = load i32, ptr %1923, align 4, !tbaa !5
  %1925 = call ptr @strerror(i32 noundef %1924) #11
  %1926 = call ptr @__errno_location() #12
  %1927 = load i32, ptr %1926, align 4, !tbaa !5
  %1928 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1915, ptr noundef @.str.6, i32 noundef %1916, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 129, ptr noundef %1919, ptr noundef %1922, ptr noundef %1925, i32 noundef %1927) #11
  br label %1946

1929:                                             ; preds = %1907, %1900
  %1930 = load i32, ptr %56, align 4, !tbaa !5
  %1931 = call ptr @__errno_location() #12
  store i32 %1930, ptr %1931, align 4, !tbaa !5
  %1932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1933 = load i32, ptr @test_count, align 4, !tbaa !5
  %1934 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1935 = load i32, ptr %1934, align 4, !tbaa !5
  %1936 = call ptr @s2n_strerror(i32 noundef %1935, ptr noundef @.str.8)
  %1937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1938 = load i32, ptr %1937, align 4, !tbaa !5
  %1939 = call ptr @s2n_strerror_debug(i32 noundef %1938, ptr noundef @.str.8)
  %1940 = call ptr @__errno_location() #12
  %1941 = load i32, ptr %1940, align 4, !tbaa !5
  %1942 = call ptr @strerror(i32 noundef %1941) #11
  %1943 = call ptr @__errno_location() #12
  %1944 = load i32, ptr %1943, align 4, !tbaa !5
  %1945 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1932, ptr noundef @.str.9, i32 noundef %1933, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 129, ptr noundef %1936, ptr noundef %1939, ptr noundef %1942, i32 noundef %1944) #11
  br label %1946

1946:                                             ; preds = %1929, %1912
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %1947

1947:                                             ; preds = %1946
  br label %1948

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

1949:                                             ; No predecessors!
  br label %1950

1950:                                             ; preds = %1949
  br label %1951

1951:                                             ; preds = %1950, %1893
  br label %1952

1952:                                             ; preds = %1951
  br label %1953

1953:                                             ; preds = %1952
  br label %1954

1954:                                             ; preds = %1953
  %1955 = load i32, ptr @test_count, align 4, !tbaa !5
  %1956 = add nsw i32 %1955, 1
  store i32 %1956, ptr @test_count, align 4, !tbaa !5
  %1957 = load ptr, ptr %55, align 8, !tbaa !9
  %1958 = load ptr, ptr %11, align 8, !tbaa !9
  %1959 = call i32 @s2n_connection_set_config(ptr noundef %1957, ptr noundef %1958)
  %1960 = icmp eq i32 %1959, -1
  br i1 %1960, label %1961, label %2014

1961:                                             ; preds = %1954
  br label %1962

1962:                                             ; preds = %1961
  br label %1963

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

1970:                                             ; preds = %1963
  %1971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1972 = call i32 @fileno(ptr noundef %1971) #11
  %1973 = call i32 @isatty(i32 noundef %1972) #11
  %1974 = icmp ne i32 %1973, 0
  br i1 %1974, label %1975, label %1992

1975:                                             ; preds = %1970
  %1976 = load i32, ptr %57, align 4, !tbaa !5
  %1977 = call ptr @__errno_location() #12
  store i32 %1976, ptr %1977, align 4, !tbaa !5
  %1978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1979 = load i32, ptr @test_count, align 4, !tbaa !5
  %1980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1981 = load i32, ptr %1980, align 4, !tbaa !5
  %1982 = call ptr @s2n_strerror(i32 noundef %1981, ptr noundef @.str.8)
  %1983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1984 = load i32, ptr %1983, align 4, !tbaa !5
  %1985 = call ptr @s2n_strerror_debug(i32 noundef %1984, ptr noundef @.str.8)
  %1986 = call ptr @__errno_location() #12
  %1987 = load i32, ptr %1986, align 4, !tbaa !5
  %1988 = call ptr @strerror(i32 noundef %1987) #11
  %1989 = call ptr @__errno_location() #12
  %1990 = load i32, ptr %1989, align 4, !tbaa !5
  %1991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1978, ptr noundef @.str.6, i32 noundef %1979, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 130, ptr noundef %1982, ptr noundef %1985, ptr noundef %1988, i32 noundef %1990) #11
  br label %2009

1992:                                             ; preds = %1970, %1963
  %1993 = load i32, ptr %57, align 4, !tbaa !5
  %1994 = call ptr @__errno_location() #12
  store i32 %1993, ptr %1994, align 4, !tbaa !5
  %1995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1996 = load i32, ptr @test_count, align 4, !tbaa !5
  %1997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1998 = load i32, ptr %1997, align 4, !tbaa !5
  %1999 = call ptr @s2n_strerror(i32 noundef %1998, ptr noundef @.str.8)
  %2000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2001 = load i32, ptr %2000, align 4, !tbaa !5
  %2002 = call ptr @s2n_strerror_debug(i32 noundef %2001, ptr noundef @.str.8)
  %2003 = call ptr @__errno_location() #12
  %2004 = load i32, ptr %2003, align 4, !tbaa !5
  %2005 = call ptr @strerror(i32 noundef %2004) #11
  %2006 = call ptr @__errno_location() #12
  %2007 = load i32, ptr %2006, align 4, !tbaa !5
  %2008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1995, ptr noundef @.str.9, i32 noundef %1996, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 130, ptr noundef %1999, ptr noundef %2002, ptr noundef %2005, i32 noundef %2007) #11
  br label %2009

2009:                                             ; preds = %1992, %1975
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %2010

2010:                                             ; preds = %2009
  br label %2011

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

2012:                                             ; No predecessors!
  br label %2013

2013:                                             ; preds = %2012
  br label %2014

2014:                                             ; preds = %2013, %1954
  br label %2015

2015:                                             ; preds = %2014
  br label %2016

2016:                                             ; preds = %2015
  br label %2017

2017:                                             ; preds = %2016
  %2018 = load i32, ptr @test_count, align 4, !tbaa !5
  %2019 = add nsw i32 %2018, 1
  store i32 %2019, ptr @test_count, align 4, !tbaa !5
  %2020 = load ptr, ptr %55, align 8, !tbaa !9
  %2021 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 2
  %2022 = call i32 @s2n_connection_set_protocol_preferences(ptr noundef %2020, ptr noundef %2021, i32 noundef 1)
  %2023 = icmp eq i32 %2022, -1
  br i1 %2023, label %2024, label %2077

2024:                                             ; preds = %2017
  br label %2025

2025:                                             ; preds = %2024
  br label %2026

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

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

2038:                                             ; preds = %2033
  %2039 = load i32, ptr %58, align 4, !tbaa !5
  %2040 = call ptr @__errno_location() #12
  store i32 %2039, ptr %2040, align 4, !tbaa !5
  %2041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2042 = load i32, ptr @test_count, align 4, !tbaa !5
  %2043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2044 = load i32, ptr %2043, align 4, !tbaa !5
  %2045 = call ptr @s2n_strerror(i32 noundef %2044, ptr noundef @.str.8)
  %2046 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2047 = load i32, ptr %2046, align 4, !tbaa !5
  %2048 = call ptr @s2n_strerror_debug(i32 noundef %2047, ptr noundef @.str.8)
  %2049 = call ptr @__errno_location() #12
  %2050 = load i32, ptr %2049, align 4, !tbaa !5
  %2051 = call ptr @strerror(i32 noundef %2050) #11
  %2052 = call ptr @__errno_location() #12
  %2053 = load i32, ptr %2052, align 4, !tbaa !5
  %2054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2041, ptr noundef @.str.6, i32 noundef %2042, ptr noundef @.str.36, ptr noundef @.str.5, i32 noundef 133, ptr noundef %2045, ptr noundef %2048, ptr noundef %2051, i32 noundef %2053) #11
  br label %2072

2055:                                             ; preds = %2033, %2026
  %2056 = load i32, ptr %58, align 4, !tbaa !5
  %2057 = call ptr @__errno_location() #12
  store i32 %2056, ptr %2057, align 4, !tbaa !5
  %2058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2059 = load i32, ptr @test_count, align 4, !tbaa !5
  %2060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2061 = load i32, ptr %2060, align 4, !tbaa !5
  %2062 = call ptr @s2n_strerror(i32 noundef %2061, ptr noundef @.str.8)
  %2063 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2064 = load i32, ptr %2063, align 4, !tbaa !5
  %2065 = call ptr @s2n_strerror_debug(i32 noundef %2064, ptr noundef @.str.8)
  %2066 = call ptr @__errno_location() #12
  %2067 = load i32, ptr %2066, align 4, !tbaa !5
  %2068 = call ptr @strerror(i32 noundef %2067) #11
  %2069 = call ptr @__errno_location() #12
  %2070 = load i32, ptr %2069, align 4, !tbaa !5
  %2071 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2058, ptr noundef @.str.9, i32 noundef %2059, ptr noundef @.str.36, ptr noundef @.str.5, i32 noundef 133, ptr noundef %2062, ptr noundef %2065, ptr noundef %2068, i32 noundef %2070) #11
  br label %2072

2072:                                             ; preds = %2055, %2038
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  br label %2073

2073:                                             ; preds = %2072
  br label %2074

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

2075:                                             ; No predecessors!
  br label %2076

2076:                                             ; preds = %2075
  br label %2077

2077:                                             ; preds = %2076, %2017
  br label %2078

2078:                                             ; preds = %2077
  br label %2079

2079:                                             ; preds = %2078
  call void @llvm.lifetime.start.p0(i64 80, ptr %59) #11
  call void @llvm.memset.p0.i64(ptr align 8 %59, i8 0, i64 80, i1 false)
  br label %2080

2080:                                             ; preds = %2079
  %2081 = load i32, ptr @test_count, align 4, !tbaa !5
  %2082 = add nsw i32 %2081, 1
  store i32 %2082, ptr @test_count, align 4, !tbaa !5
  %2083 = call i32 @s2n_io_stuffer_pair_init(ptr noundef %59)
  %2084 = getelementptr inbounds %struct.s2n_result, ptr %60, i32 0, i32 0
  store i32 %2083, ptr %2084, align 4
  %2085 = getelementptr inbounds %struct.s2n_result, ptr %60, i32 0, i32 0
  %2086 = load i32, ptr %2085, align 4
  %2087 = call zeroext i1 @s2n_result_is_ok(i32 %2086)
  br i1 %2087, label %2141, label %2088

2088:                                             ; preds = %2080
  br label %2089

2089:                                             ; preds = %2088
  br label %2090

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

2097:                                             ; preds = %2090
  %2098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2099 = call i32 @fileno(ptr noundef %2098) #11
  %2100 = call i32 @isatty(i32 noundef %2099) #11
  %2101 = icmp ne i32 %2100, 0
  br i1 %2101, label %2102, label %2119

2102:                                             ; preds = %2097
  %2103 = load i32, ptr %61, align 4, !tbaa !5
  %2104 = call ptr @__errno_location() #12
  store i32 %2103, ptr %2104, align 4, !tbaa !5
  %2105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2106 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2108, ptr noundef @.str.8)
  %2110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2111 = load i32, ptr %2110, align 4, !tbaa !5
  %2112 = call ptr @s2n_strerror_debug(i32 noundef %2111, ptr noundef @.str.8)
  %2113 = call ptr @__errno_location() #12
  %2114 = load i32, ptr %2113, align 4, !tbaa !5
  %2115 = call ptr @strerror(i32 noundef %2114) #11
  %2116 = call ptr @__errno_location() #12
  %2117 = load i32, ptr %2116, align 4, !tbaa !5
  %2118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2105, ptr noundef @.str.6, i32 noundef %2106, ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 136, ptr noundef %2109, ptr noundef %2112, ptr noundef %2115, i32 noundef %2117) #11
  br label %2136

2119:                                             ; preds = %2097, %2090
  %2120 = load i32, ptr %61, align 4, !tbaa !5
  %2121 = call ptr @__errno_location() #12
  store i32 %2120, ptr %2121, align 4, !tbaa !5
  %2122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2123 = load i32, ptr @test_count, align 4, !tbaa !5
  %2124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2125 = load i32, ptr %2124, align 4, !tbaa !5
  %2126 = call ptr @s2n_strerror(i32 noundef %2125, ptr noundef @.str.8)
  %2127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2128 = load i32, ptr %2127, align 4, !tbaa !5
  %2129 = call ptr @s2n_strerror_debug(i32 noundef %2128, ptr noundef @.str.8)
  %2130 = call ptr @__errno_location() #12
  %2131 = load i32, ptr %2130, align 4, !tbaa !5
  %2132 = call ptr @strerror(i32 noundef %2131) #11
  %2133 = call ptr @__errno_location() #12
  %2134 = load i32, ptr %2133, align 4, !tbaa !5
  %2135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2122, ptr noundef @.str.9, i32 noundef %2123, ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 136, ptr noundef %2126, ptr noundef %2129, ptr noundef %2132, i32 noundef %2134) #11
  br label %2136

2136:                                             ; preds = %2119, %2102
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #11
  br label %2137

2137:                                             ; preds = %2136
  br label %2138

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

2139:                                             ; No predecessors!
  br label %2140

2140:                                             ; preds = %2139
  br label %2141

2141:                                             ; preds = %2140, %2080
  br label %2142

2142:                                             ; preds = %2141
  br label %2143

2143:                                             ; preds = %2142
  br label %2144

2144:                                             ; preds = %2143
  %2145 = load i32, ptr @test_count, align 4, !tbaa !5
  %2146 = add nsw i32 %2145, 1
  store i32 %2146, ptr @test_count, align 4, !tbaa !5
  %2147 = load ptr, ptr %52, align 8, !tbaa !9
  %2148 = load ptr, ptr %55, align 8, !tbaa !9
  %2149 = call i32 @s2n_connections_set_io_stuffer_pair(ptr noundef %2147, ptr noundef %2148, ptr noundef %59)
  %2150 = getelementptr inbounds %struct.s2n_result, ptr %62, i32 0, i32 0
  store i32 %2149, ptr %2150, align 4
  %2151 = getelementptr inbounds %struct.s2n_result, ptr %62, i32 0, i32 0
  %2152 = load i32, ptr %2151, align 4
  %2153 = call zeroext i1 @s2n_result_is_ok(i32 %2152)
  br i1 %2153, label %2207, label %2154

2154:                                             ; preds = %2144
  br label %2155

2155:                                             ; preds = %2154
  br label %2156

2156:                                             ; preds = %2155
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #11
  %2157 = call ptr @__errno_location() #12
  %2158 = load i32, ptr %2157, align 4, !tbaa !5
  store i32 %2158, ptr %63, align 4, !tbaa !5
  %2159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2160 = call i32 @s2n_print_stacktrace(ptr noundef %2159)
  %2161 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2162 = trunc i8 %2161 to i1
  br i1 %2162, label %2163, label %2185

2163:                                             ; preds = %2156
  %2164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2165 = call i32 @fileno(ptr noundef %2164) #11
  %2166 = call i32 @isatty(i32 noundef %2165) #11
  %2167 = icmp ne i32 %2166, 0
  br i1 %2167, label %2168, label %2185

2168:                                             ; preds = %2163
  %2169 = load i32, ptr %63, align 4, !tbaa !5
  %2170 = call ptr @__errno_location() #12
  store i32 %2169, ptr %2170, align 4, !tbaa !5
  %2171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2172 = load i32, ptr @test_count, align 4, !tbaa !5
  %2173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2174 = load i32, ptr %2173, align 4, !tbaa !5
  %2175 = call ptr @s2n_strerror(i32 noundef %2174, ptr noundef @.str.8)
  %2176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2177 = load i32, ptr %2176, align 4, !tbaa !5
  %2178 = call ptr @s2n_strerror_debug(i32 noundef %2177, ptr noundef @.str.8)
  %2179 = call ptr @__errno_location() #12
  %2180 = load i32, ptr %2179, align 4, !tbaa !5
  %2181 = call ptr @strerror(i32 noundef %2180) #11
  %2182 = call ptr @__errno_location() #12
  %2183 = load i32, ptr %2182, align 4, !tbaa !5
  %2184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2171, ptr noundef @.str.6, i32 noundef %2172, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 137, ptr noundef %2175, ptr noundef %2178, ptr noundef %2181, i32 noundef %2183) #11
  br label %2202

2185:                                             ; preds = %2163, %2156
  %2186 = load i32, ptr %63, align 4, !tbaa !5
  %2187 = call ptr @__errno_location() #12
  store i32 %2186, ptr %2187, align 4, !tbaa !5
  %2188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2189 = load i32, ptr @test_count, align 4, !tbaa !5
  %2190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2191 = load i32, ptr %2190, align 4, !tbaa !5
  %2192 = call ptr @s2n_strerror(i32 noundef %2191, ptr noundef @.str.8)
  %2193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2194 = load i32, ptr %2193, align 4, !tbaa !5
  %2195 = call ptr @s2n_strerror_debug(i32 noundef %2194, ptr noundef @.str.8)
  %2196 = call ptr @__errno_location() #12
  %2197 = load i32, ptr %2196, align 4, !tbaa !5
  %2198 = call ptr @strerror(i32 noundef %2197) #11
  %2199 = call ptr @__errno_location() #12
  %2200 = load i32, ptr %2199, align 4, !tbaa !5
  %2201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2188, ptr noundef @.str.9, i32 noundef %2189, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 137, ptr noundef %2192, ptr noundef %2195, ptr noundef %2198, i32 noundef %2200) #11
  br label %2202

2202:                                             ; preds = %2185, %2168
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  br label %2203

2203:                                             ; preds = %2202
  br label %2204

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

2205:                                             ; No predecessors!
  br label %2206

2206:                                             ; preds = %2205
  br label %2207

2207:                                             ; preds = %2206, %2144
  br label %2208

2208:                                             ; preds = %2207
  br label %2209

2209:                                             ; preds = %2208
  br label %2210

2210:                                             ; preds = %2209
  %2211 = load i32, ptr @test_count, align 4, !tbaa !5
  %2212 = add nsw i32 %2211, 1
  store i32 %2212, ptr @test_count, align 4, !tbaa !5
  %2213 = load ptr, ptr %55, align 8, !tbaa !9
  %2214 = load ptr, ptr %52, align 8, !tbaa !9
  %2215 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %2213, ptr noundef %2214)
  %2216 = icmp eq i32 %2215, -1
  br i1 %2216, label %2217, label %2270

2217:                                             ; preds = %2210
  br label %2218

2218:                                             ; preds = %2217
  br label %2219

2219:                                             ; preds = %2218
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  %2220 = call ptr @__errno_location() #12
  %2221 = load i32, ptr %2220, align 4, !tbaa !5
  store i32 %2221, ptr %64, align 4, !tbaa !5
  %2222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2223 = call i32 @s2n_print_stacktrace(ptr noundef %2222)
  %2224 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2225 = trunc i8 %2224 to i1
  br i1 %2225, label %2226, label %2248

2226:                                             ; preds = %2219
  %2227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2228 = call i32 @fileno(ptr noundef %2227) #11
  %2229 = call i32 @isatty(i32 noundef %2228) #11
  %2230 = icmp ne i32 %2229, 0
  br i1 %2230, label %2231, label %2248

2231:                                             ; preds = %2226
  %2232 = load i32, ptr %64, align 4, !tbaa !5
  %2233 = call ptr @__errno_location() #12
  store i32 %2232, ptr %2233, align 4, !tbaa !5
  %2234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2235 = load i32, ptr @test_count, align 4, !tbaa !5
  %2236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2237 = load i32, ptr %2236, align 4, !tbaa !5
  %2238 = call ptr @s2n_strerror(i32 noundef %2237, ptr noundef @.str.8)
  %2239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2240 = load i32, ptr %2239, align 4, !tbaa !5
  %2241 = call ptr @s2n_strerror_debug(i32 noundef %2240, ptr noundef @.str.8)
  %2242 = call ptr @__errno_location() #12
  %2243 = load i32, ptr %2242, align 4, !tbaa !5
  %2244 = call ptr @strerror(i32 noundef %2243) #11
  %2245 = call ptr @__errno_location() #12
  %2246 = load i32, ptr %2245, align 4, !tbaa !5
  %2247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2234, ptr noundef @.str.6, i32 noundef %2235, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 139, ptr noundef %2238, ptr noundef %2241, ptr noundef %2244, i32 noundef %2246) #11
  br label %2265

2248:                                             ; preds = %2226, %2219
  %2249 = load i32, ptr %64, align 4, !tbaa !5
  %2250 = call ptr @__errno_location() #12
  store i32 %2249, ptr %2250, align 4, !tbaa !5
  %2251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2252 = load i32, ptr @test_count, align 4, !tbaa !5
  %2253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2254 = load i32, ptr %2253, align 4, !tbaa !5
  %2255 = call ptr @s2n_strerror(i32 noundef %2254, ptr noundef @.str.8)
  %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_debug(i32 noundef %2257, ptr noundef @.str.8)
  %2259 = call ptr @__errno_location() #12
  %2260 = load i32, ptr %2259, align 4, !tbaa !5
  %2261 = call ptr @strerror(i32 noundef %2260) #11
  %2262 = call ptr @__errno_location() #12
  %2263 = load i32, ptr %2262, align 4, !tbaa !5
  %2264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2251, ptr noundef @.str.9, i32 noundef %2252, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 139, ptr noundef %2255, ptr noundef %2258, ptr noundef %2261, i32 noundef %2263) #11
  br label %2265

2265:                                             ; preds = %2248, %2231
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %2266

2266:                                             ; preds = %2265
  br label %2267

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

2268:                                             ; No predecessors!
  br label %2269

2269:                                             ; preds = %2268
  br label %2270

2270:                                             ; preds = %2269, %2210
  br label %2271

2271:                                             ; preds = %2270
  br label %2272

2272:                                             ; preds = %2271
  br label %2273

2273:                                             ; preds = %2272
  %2274 = load i32, ptr @test_count, align 4, !tbaa !5
  %2275 = add nsw i32 %2274, 1
  store i32 %2275, ptr @test_count, align 4, !tbaa !5
  %2276 = load ptr, ptr %55, align 8, !tbaa !9
  %2277 = call ptr @s2n_get_application_protocol(ptr noundef %2276)
  %2278 = getelementptr inbounds [3 x ptr], ptr %6, i64 0, i64 2
  %2279 = load ptr, ptr %2278, align 16, !tbaa !9
  %2280 = call i32 @strcmp(ptr noundef %2277, ptr noundef %2279) #14
  %2281 = icmp eq i32 %2280, 0
  br i1 %2281, label %2335, label %2282

2282:                                             ; preds = %2273
  br label %2283

2283:                                             ; preds = %2282
  br label %2284

2284:                                             ; preds = %2283
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #11
  %2285 = call ptr @__errno_location() #12
  %2286 = load i32, ptr %2285, align 4, !tbaa !5
  store i32 %2286, ptr %65, align 4, !tbaa !5
  %2287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2288 = call i32 @s2n_print_stacktrace(ptr noundef %2287)
  %2289 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2290 = trunc i8 %2289 to i1
  br i1 %2290, label %2291, label %2313

2291:                                             ; preds = %2284
  %2292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2293 = call i32 @fileno(ptr noundef %2292) #11
  %2294 = call i32 @isatty(i32 noundef %2293) #11
  %2295 = icmp ne i32 %2294, 0
  br i1 %2295, label %2296, label %2313

2296:                                             ; preds = %2291
  %2297 = load i32, ptr %65, align 4, !tbaa !5
  %2298 = call ptr @__errno_location() #12
  store i32 %2297, ptr %2298, align 4, !tbaa !5
  %2299 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2300 = load i32, ptr @test_count, align 4, !tbaa !5
  %2301 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2302 = load i32, ptr %2301, align 4, !tbaa !5
  %2303 = call ptr @s2n_strerror(i32 noundef %2302, ptr noundef @.str.8)
  %2304 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2305 = load i32, ptr %2304, align 4, !tbaa !5
  %2306 = call ptr @s2n_strerror_debug(i32 noundef %2305, ptr noundef @.str.8)
  %2307 = call ptr @__errno_location() #12
  %2308 = load i32, ptr %2307, align 4, !tbaa !5
  %2309 = call ptr @strerror(i32 noundef %2308) #11
  %2310 = call ptr @__errno_location() #12
  %2311 = load i32, ptr %2310, align 4, !tbaa !5
  %2312 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2299, ptr noundef @.str.6, i32 noundef %2300, ptr noundef @.str.37, ptr noundef @.str.5, i32 noundef 144, ptr noundef %2303, ptr noundef %2306, ptr noundef %2309, i32 noundef %2311) #11
  br label %2330

2313:                                             ; preds = %2291, %2284
  %2314 = load i32, ptr %65, align 4, !tbaa !5
  %2315 = call ptr @__errno_location() #12
  store i32 %2314, ptr %2315, align 4, !tbaa !5
  %2316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2317 = load i32, ptr @test_count, align 4, !tbaa !5
  %2318 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2319 = load i32, ptr %2318, align 4, !tbaa !5
  %2320 = call ptr @s2n_strerror(i32 noundef %2319, ptr noundef @.str.8)
  %2321 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2322 = load i32, ptr %2321, align 4, !tbaa !5
  %2323 = call ptr @s2n_strerror_debug(i32 noundef %2322, ptr noundef @.str.8)
  %2324 = call ptr @__errno_location() #12
  %2325 = load i32, ptr %2324, align 4, !tbaa !5
  %2326 = call ptr @strerror(i32 noundef %2325) #11
  %2327 = call ptr @__errno_location() #12
  %2328 = load i32, ptr %2327, align 4, !tbaa !5
  %2329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2316, ptr noundef @.str.9, i32 noundef %2317, ptr noundef @.str.37, ptr noundef @.str.5, i32 noundef 144, ptr noundef %2320, ptr noundef %2323, ptr noundef %2326, i32 noundef %2328) #11
  br label %2330

2330:                                             ; preds = %2313, %2296
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  br label %2331

2331:                                             ; preds = %2330
  br label %2332

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

2333:                                             ; No predecessors!
  br label %2334

2334:                                             ; preds = %2333
  br label %2335

2335:                                             ; preds = %2334, %2273
  br label %2336

2336:                                             ; preds = %2335
  br label %2337

2337:                                             ; preds = %2336
  %2338 = call i32 @s2n_io_stuffer_pair_free(ptr noundef %59)
  %2339 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  store i32 %2338, ptr %2339, align 4
  call void @llvm.lifetime.end.p0(i64 80, ptr %59) #11
  %2340 = call i32 @s2n_connection_ptr_free(ptr noundef %55)
  %2341 = getelementptr inbounds %struct.s2n_result, ptr %67, i32 0, i32 0
  store i32 %2340, ptr %2341, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  %2342 = call i32 @s2n_connection_ptr_free(ptr noundef %52)
  %2343 = getelementptr inbounds %struct.s2n_result, ptr %68, i32 0, i32 0
  store i32 %2342, ptr %2343, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  %2344 = call i32 @s2n_config_ptr_free(ptr noundef %48)
  %2345 = getelementptr inbounds %struct.s2n_result, ptr %69, i32 0, i32 0
  store i32 %2344, ptr %2345, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %2346

2346:                                             ; preds = %2337
  br label %2347

2347:                                             ; preds = %2346
  %2348 = call i32 @s2n_cleanup()
  %2349 = icmp eq i32 %2348, -1
  br i1 %2349, label %2350, label %2403

2350:                                             ; preds = %2347
  br label %2351

2351:                                             ; preds = %2350
  br label %2352

2352:                                             ; preds = %2351
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #11
  %2353 = call ptr @__errno_location() #12
  %2354 = load i32, ptr %2353, align 4, !tbaa !5
  store i32 %2354, ptr %70, align 4, !tbaa !5
  %2355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2356 = call i32 @s2n_print_stacktrace(ptr noundef %2355)
  %2357 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2358 = trunc i8 %2357 to i1
  br i1 %2358, label %2359, label %2381

2359:                                             ; preds = %2352
  %2360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2361 = call i32 @fileno(ptr noundef %2360) #11
  %2362 = call i32 @isatty(i32 noundef %2361) #11
  %2363 = icmp ne i32 %2362, 0
  br i1 %2363, label %2364, label %2381

2364:                                             ; preds = %2359
  %2365 = load i32, ptr %70, align 4, !tbaa !5
  %2366 = call ptr @__errno_location() #12
  store i32 %2365, ptr %2366, align 4, !tbaa !5
  %2367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2368 = load i32, ptr @test_count, align 4, !tbaa !5
  %2369 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2370 = load i32, ptr %2369, align 4, !tbaa !5
  %2371 = call ptr @s2n_strerror(i32 noundef %2370, ptr noundef @.str.8)
  %2372 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2373 = load i32, ptr %2372, align 4, !tbaa !5
  %2374 = call ptr @s2n_strerror_debug(i32 noundef %2373, ptr noundef @.str.8)
  %2375 = call ptr @__errno_location() #12
  %2376 = load i32, ptr %2375, align 4, !tbaa !5
  %2377 = call ptr @strerror(i32 noundef %2376) #11
  %2378 = call ptr @__errno_location() #12
  %2379 = load i32, ptr %2378, align 4, !tbaa !5
  %2380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2367, ptr noundef @.str.6, i32 noundef %2368, ptr noundef @.str.38, ptr noundef @.str.5, i32 noundef 147, ptr noundef %2371, ptr noundef %2374, ptr noundef %2377, i32 noundef %2379) #11
  br label %2398

2381:                                             ; preds = %2359, %2352
  %2382 = load i32, ptr %70, align 4, !tbaa !5
  %2383 = call ptr @__errno_location() #12
  store i32 %2382, ptr %2383, align 4, !tbaa !5
  %2384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2385 = load i32, ptr @test_count, align 4, !tbaa !5
  %2386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2387 = load i32, ptr %2386, align 4, !tbaa !5
  %2388 = call ptr @s2n_strerror(i32 noundef %2387, ptr noundef @.str.8)
  %2389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2390 = load i32, ptr %2389, align 4, !tbaa !5
  %2391 = call ptr @s2n_strerror_debug(i32 noundef %2390, ptr noundef @.str.8)
  %2392 = call ptr @__errno_location() #12
  %2393 = load i32, ptr %2392, align 4, !tbaa !5
  %2394 = call ptr @strerror(i32 noundef %2393) #11
  %2395 = call ptr @__errno_location() #12
  %2396 = load i32, ptr %2395, align 4, !tbaa !5
  %2397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2384, ptr noundef @.str.9, i32 noundef %2385, ptr noundef @.str.38, ptr noundef @.str.5, i32 noundef 147, ptr noundef %2388, ptr noundef %2391, ptr noundef %2394, i32 noundef %2396) #11
  br label %2398

2398:                                             ; preds = %2381, %2364
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %2399

2399:                                             ; preds = %2398
  br label %2400

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

2401:                                             ; No predecessors!
  br label %2402

2402:                                             ; preds = %2401
  br label %2403

2403:                                             ; preds = %2402, %2347
  br label %2404

2404:                                             ; preds = %2403
  br label %2405

2405:                                             ; preds = %2404
  br label %2406

2406:                                             ; preds = %2405
  br label %2407

2407:                                             ; preds = %2406
  %2408 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %2409 = icmp eq i32 %2408, -1
  br i1 %2409, label %2410, label %2463

2410:                                             ; preds = %2407
  br label %2411

2411:                                             ; preds = %2410
  br label %2412

2412:                                             ; preds = %2411
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  %2413 = call ptr @__errno_location() #12
  %2414 = load i32, ptr %2413, align 4, !tbaa !5
  store i32 %2414, ptr %71, align 4, !tbaa !5
  %2415 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2416 = call i32 @s2n_print_stacktrace(ptr noundef %2415)
  %2417 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2418 = trunc i8 %2417 to i1
  br i1 %2418, label %2419, label %2441

2419:                                             ; preds = %2412
  %2420 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2421 = call i32 @fileno(ptr noundef %2420) #11
  %2422 = call i32 @isatty(i32 noundef %2421) #11
  %2423 = icmp ne i32 %2422, 0
  br i1 %2423, label %2424, label %2441

2424:                                             ; preds = %2419
  %2425 = load i32, ptr %71, align 4, !tbaa !5
  %2426 = call ptr @__errno_location() #12
  store i32 %2425, ptr %2426, align 4, !tbaa !5
  %2427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2428 = load i32, ptr @test_count, align 4, !tbaa !5
  %2429 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2430 = load i32, ptr %2429, align 4, !tbaa !5
  %2431 = call ptr @s2n_strerror(i32 noundef %2430, ptr noundef @.str.8)
  %2432 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2433 = load i32, ptr %2432, align 4, !tbaa !5
  %2434 = call ptr @s2n_strerror_debug(i32 noundef %2433, ptr noundef @.str.8)
  %2435 = call ptr @__errno_location() #12
  %2436 = load i32, ptr %2435, align 4, !tbaa !5
  %2437 = call ptr @strerror(i32 noundef %2436) #11
  %2438 = call ptr @__errno_location() #12
  %2439 = load i32, ptr %2438, align 4, !tbaa !5
  %2440 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2427, ptr noundef @.str.6, i32 noundef %2428, ptr noundef @.str.39, ptr noundef @.str.5, i32 noundef 147, ptr noundef %2431, ptr noundef %2434, ptr noundef %2437, i32 noundef %2439) #11
  br label %2458

2441:                                             ; preds = %2419, %2412
  %2442 = load i32, ptr %71, align 4, !tbaa !5
  %2443 = call ptr @__errno_location() #12
  store i32 %2442, ptr %2443, align 4, !tbaa !5
  %2444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2445 = load i32, ptr @test_count, align 4, !tbaa !5
  %2446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2447 = load i32, ptr %2446, align 4, !tbaa !5
  %2448 = call ptr @s2n_strerror(i32 noundef %2447, ptr noundef @.str.8)
  %2449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2450 = load i32, ptr %2449, align 4, !tbaa !5
  %2451 = call ptr @s2n_strerror_debug(i32 noundef %2450, ptr noundef @.str.8)
  %2452 = call ptr @__errno_location() #12
  %2453 = load i32, ptr %2452, align 4, !tbaa !5
  %2454 = call ptr @strerror(i32 noundef %2453) #11
  %2455 = call ptr @__errno_location() #12
  %2456 = load i32, ptr %2455, align 4, !tbaa !5
  %2457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2444, ptr noundef @.str.9, i32 noundef %2445, ptr noundef @.str.39, ptr noundef @.str.5, i32 noundef 147, ptr noundef %2448, ptr noundef %2451, ptr noundef %2454, i32 noundef %2456) #11
  br label %2458

2458:                                             ; preds = %2441, %2424
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  br label %2459

2459:                                             ; preds = %2458
  br label %2460

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

2461:                                             ; No predecessors!
  br label %2462

2462:                                             ; preds = %2461
  br label %2463

2463:                                             ; preds = %2462, %2407
  br label %2464

2464:                                             ; preds = %2463
  br label %2465

2465:                                             ; preds = %2464
  %2466 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2467 = trunc i8 %2466 to i1
  br i1 %2467, label %2468, label %2484

2468:                                             ; preds = %2465
  %2469 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2470 = call i32 @fileno(ptr noundef %2469) #11
  %2471 = call i32 @isatty(i32 noundef %2470) #11
  %2472 = icmp ne i32 %2471, 0
  br i1 %2472, label %2473, label %2484

2473:                                             ; preds = %2468
  %2474 = load i32, ptr @test_count, align 4, !tbaa !5
  %2475 = icmp ne i32 %2474, 0
  br i1 %2475, label %2476, label %2480

2476:                                             ; preds = %2473
  %2477 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2478 = load i32, ptr @test_count, align 4, !tbaa !5
  %2479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2477, ptr noundef @.str.40, i32 noundef %2478) #11
  br label %2483

2480:                                             ; preds = %2473
  %2481 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2481, ptr noundef @.str.41) #11
  br label %2483

2483:                                             ; preds = %2480, %2476
  br label %2495

2484:                                             ; preds = %2468, %2465
  %2485 = load i32, ptr @test_count, align 4, !tbaa !5
  %2486 = icmp ne i32 %2485, 0
  br i1 %2486, label %2487, label %2491

2487:                                             ; preds = %2484
  %2488 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2489 = load i32, ptr @test_count, align 4, !tbaa !5
  %2490 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2488, ptr noundef @.str.42, i32 noundef %2489) #11
  br label %2494

2491:                                             ; preds = %2484
  %2492 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2493 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2492, ptr noundef @.str.43) #11
  br label %2494

2494:                                             ; preds = %2491, %2487
  br label %2495

2495:                                             ; preds = %2494, %2483
  store i32 0, ptr %3, align 4
  store i32 1, ptr %72, align 4
  br label %2500

2496:                                             ; No predecessors!
  br label %2497

2497:                                             ; preds = %2496
  br label %2498

2498:                                             ; preds = %2497
  br label %2499

2499:                                             ; preds = %2498
  store i32 0, ptr %3, align 4
  store i32 1, ptr %72, align 4
  br label %2500

2500:                                             ; preds = %2499, %2495
  call void @llvm.lifetime.end.p0(i64 96, ptr %18) #11
  %2501 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %15)
  %2502 = getelementptr inbounds %struct.s2n_result, ptr %73, i32 0, i32 0
  store i32 %2501, ptr %2502, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  %2503 = call i32 @s2n_config_ptr_free(ptr noundef %11)
  %2504 = getelementptr inbounds %struct.s2n_result, ptr %74, i32 0, i32 0
  store i32 %2503, ptr %2504, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #11
  %2505 = load i32, ptr %3, align 4
  ret i32 %2505
}

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

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

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

declare i32 @fflush(ptr noundef) #4

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #4

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #4

declare i32 @s2n_init() #4

declare ptr @s2n_config_new() #4

declare i32 @s2n_config_ptr_free(ptr noundef) #4

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

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

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #4

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

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

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

declare i32 @s2n_config_disable_x509_verification(ptr noundef) #4

declare ptr @s2n_connection_new(i32 noundef) #4

declare i32 @s2n_connection_ptr_free(ptr noundef) #4

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

declare i32 @s2n_io_stuffer_pair_free(ptr noundef) #4

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

declare i32 @s2n_io_stuffer_pair_init(ptr noundef) #4

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

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

declare ptr @s2n_get_application_protocol(ptr noundef) #4

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

declare i64 @s2n_send(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #4

declare i64 @s2n_recv(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #4

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

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

declare i32 @s2n_cleanup() #4

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !6, i64 0}
!16 = !{!"", !6, i64 0, !10, i64 8, !10, i64 16}
!17 = !{!16, !10, i64 8}
!18 = !{!16, !10, i64 16}
!19 = !{!20, !20, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}


; 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 { i32, ptr, ptr }
%struct.s2n_test_io_stuffer_pair = type { %struct.s2n_stuffer, %struct.s2n_stuffer }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@__const.main.protocols = external hidden unnamed_addr constant [3 x ptr], align 16
@__const.main.mismatch_protocols = external hidden unnamed_addr constant [1 x ptr], align 8
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [82 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [200 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [148 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [106 x i8], align 1
@__const.main.data_send = external hidden unnamed_addr constant [8 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [134 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.43 = 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 [3 x ptr], align 16
  %4 = alloca [1 x ptr], align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca [4 x %struct.anon], align 16
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.s2n_test_io_stuffer_pair, align 8
  %12 = alloca i32, align 4
  %13 = alloca [8 x i8], align 8
  %14 = alloca [8 x i8], align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %struct.s2n_test_io_stuffer_pair, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %3, ptr noundef nonnull align 16 dereferenceable(24) @__const.main.protocols, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #12
  %19 = load i64, ptr @__const.main.mismatch_protocols, align 8
  store i64 %19, ptr %4, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %20 = load ptr, ptr @stdout, align 8, !tbaa !9
  %21 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %20, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5) #12
  %22 = load ptr, ptr @stdout, align 8, !tbaa !9
  %23 = tail call i32 @fflush(ptr noundef %22)
  %24 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #12
  %25 = icmp eq i32 %24, -1
  br i1 %25, label %26, label %50

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

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

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

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

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

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

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

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

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

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

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

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

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

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

106:                                              ; preds = %79
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  %107 = tail call ptr @s2n_config_new() #12
  store ptr %107, ptr %5, align 8, !tbaa !9
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr @test_count, align 4, !tbaa !5
  %110 = icmp eq ptr %107, null
  br i1 %110, label %111, label %135

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

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

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

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

135:                                              ; preds = %106
  %136 = add nsw i32 %108, 2
  store i32 %136, ptr @test_count, align 4, !tbaa !5
  %137 = call i32 @s2n_config_set_protocol_preferences(ptr noundef nonnull %107, ptr noundef nonnull %3, i32 noundef 3) #12
  %138 = icmp eq i32 %137, -1
  br i1 %138, label %139, label %163

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

146:                                              ; preds = %139
  %147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %148 = call i32 @fileno(ptr noundef %147) #12
  %149 = call i32 @isatty(i32 noundef %148) #12
  %.not130 = icmp eq i32 %149, 0
  br i1 %.not130, label %150, label %151

150:                                              ; preds = %146, %139
  br label %151

151:                                              ; preds = %146, %150
  %.str.9.sink179 = phi ptr [ @.str.9, %150 ], [ @.str.6, %146 ]
  store i32 %141, ptr %140, align 4, !tbaa !5
  %152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %153 = load i32, ptr @test_count, align 4, !tbaa !5
  %154 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = call ptr @s2n_strerror(i32 noundef %155, ptr noundef nonnull @.str.8) #12
  %157 = load i32, ptr %154, align 4, !tbaa !5
  %158 = call ptr @s2n_strerror_debug(i32 noundef %157, ptr noundef nonnull @.str.8) #12
  %159 = load i32, ptr %140, align 4, !tbaa !5
  %160 = call ptr @strerror(i32 noundef %159) #12
  %161 = load i32, ptr %140, align 4, !tbaa !5
  %162 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %152, ptr noundef nonnull %.str.9.sink179, i32 noundef %153, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 35, ptr noundef %156, ptr noundef %158, ptr noundef %160, i32 noundef %161) #14
  call void @exit(i32 noundef 1) #15
  unreachable

163:                                              ; preds = %135
  %164 = load i32, ptr @test_count, align 4, !tbaa !5
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr @test_count, align 4, !tbaa !5
  %166 = call i32 @s2n_config_set_cipher_preferences(ptr noundef nonnull %107, ptr noundef nonnull @.str.14) #12
  %167 = icmp eq i32 %166, -1
  br i1 %167, label %168, label %192

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

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

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

180:                                              ; preds = %175, %179
  %.str.9.sink190 = phi ptr [ @.str.9, %179 ], [ @.str.6, %175 ]
  store i32 %170, ptr %169, align 4, !tbaa !5
  %181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %182 = load i32, ptr @test_count, align 4, !tbaa !5
  %183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %184 = load i32, ptr %183, align 4, !tbaa !5
  %185 = call ptr @s2n_strerror(i32 noundef %184, ptr noundef nonnull @.str.8) #12
  %186 = load i32, ptr %183, align 4, !tbaa !5
  %187 = call ptr @s2n_strerror_debug(i32 noundef %186, ptr noundef nonnull @.str.8) #12
  %188 = load i32, ptr %169, align 4, !tbaa !5
  %189 = call ptr @strerror(i32 noundef %188) #12
  %190 = load i32, ptr %169, align 4, !tbaa !5
  %191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %181, ptr noundef nonnull %.str.9.sink190, i32 noundef %182, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 36, ptr noundef %185, ptr noundef %187, ptr noundef %189, i32 noundef %190) #14
  call void @exit(i32 noundef 1) #15
  unreachable

192:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  store ptr null, ptr %6, align 8, !tbaa !9
  %193 = load i32, ptr @test_count, align 4, !tbaa !5
  %194 = add nsw i32 %193, 1
  store i32 %194, ptr @test_count, align 4, !tbaa !5
  %195 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %6, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17) #12
  %196 = icmp eq i32 %195, -1
  br i1 %196, label %197, label %221

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

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

208:                                              ; preds = %204, %197
  br label %209

209:                                              ; preds = %204, %208
  %.str.9.sink201 = phi ptr [ @.str.9, %208 ], [ @.str.6, %204 ]
  store i32 %199, ptr %198, align 4, !tbaa !5
  %210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %211 = load i32, ptr @test_count, align 4, !tbaa !5
  %212 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %213 = load i32, ptr %212, align 4, !tbaa !5
  %214 = call ptr @s2n_strerror(i32 noundef %213, ptr noundef nonnull @.str.8) #12
  %215 = load i32, ptr %212, align 4, !tbaa !5
  %216 = call ptr @s2n_strerror_debug(i32 noundef %215, ptr noundef nonnull @.str.8) #12
  %217 = load i32, ptr %198, align 4, !tbaa !5
  %218 = call ptr @strerror(i32 noundef %217) #12
  %219 = load i32, ptr %198, align 4, !tbaa !5
  %220 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %210, ptr noundef nonnull %.str.9.sink201, i32 noundef %211, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.5, i32 noundef 41, ptr noundef %214, ptr noundef %216, ptr noundef %218, i32 noundef %219) #14
  call void @exit(i32 noundef 1) #15
  unreachable

221:                                              ; preds = %192
  %222 = load i32, ptr @test_count, align 4, !tbaa !5
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr @test_count, align 4, !tbaa !5
  %224 = load ptr, ptr %6, align 8, !tbaa !9
  %225 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %107, ptr noundef %224) #12
  %226 = icmp eq i32 %225, -1
  br i1 %226, label %227, label %251

227:                                              ; preds = %221
  %228 = tail call ptr @__errno_location() #13
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %231 = call i32 @s2n_print_stacktrace(ptr noundef %230) #12
  %232 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %233 = trunc nuw i8 %232 to i1
  br i1 %233, label %234, label %238

234:                                              ; preds = %227
  %235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %236 = call i32 @fileno(ptr noundef %235) #12
  %237 = call i32 @isatty(i32 noundef %236) #12
  %.not127 = icmp eq i32 %237, 0
  br i1 %.not127, label %238, label %239

238:                                              ; preds = %234, %227
  br label %239

239:                                              ; preds = %234, %238
  %.str.9.sink212 = phi ptr [ @.str.9, %238 ], [ @.str.6, %234 ]
  store i32 %229, ptr %228, align 4, !tbaa !5
  %240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %241 = load i32, ptr @test_count, align 4, !tbaa !5
  %242 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = call ptr @s2n_strerror(i32 noundef %243, ptr noundef nonnull @.str.8) #12
  %245 = load i32, ptr %242, align 4, !tbaa !5
  %246 = call ptr @s2n_strerror_debug(i32 noundef %245, ptr noundef nonnull @.str.8) #12
  %247 = load i32, ptr %228, align 4, !tbaa !5
  %248 = call ptr @strerror(i32 noundef %247) #12
  %249 = load i32, ptr %228, align 4, !tbaa !5
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef nonnull %.str.9.sink212, i32 noundef %241, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.5, i32 noundef 42, ptr noundef %244, ptr noundef %246, ptr noundef %248, i32 noundef %249) #14
  call void @exit(i32 noundef 1) #15
  unreachable

251:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %7, i8 0, i64 24, i1 false)
  %252 = getelementptr inbounds i8, ptr %7, i64 24
  store i32 3, ptr %252, align 8, !tbaa !15
  %253 = getelementptr inbounds i8, ptr %7, i64 32
  store ptr %3, ptr %253, align 16, !tbaa !17
  %254 = getelementptr inbounds i8, ptr %7, i64 40
  %255 = load ptr, ptr %3, align 16, !tbaa !9
  store ptr %255, ptr %254, align 8, !tbaa !18
  %256 = getelementptr inbounds i8, ptr %7, i64 48
  store i32 1, ptr %256, align 16, !tbaa !15
  %257 = getelementptr inbounds i8, ptr %7, i64 56
  %258 = getelementptr inbounds i8, ptr %3, i64 8
  store ptr %258, ptr %257, align 8, !tbaa !17
  %259 = getelementptr inbounds i8, ptr %7, i64 64
  %260 = load ptr, ptr %258, align 8, !tbaa !9
  store ptr %260, ptr %259, align 16, !tbaa !18
  %261 = getelementptr inbounds i8, ptr %7, i64 72
  store i32 1, ptr %261, align 8, !tbaa !15
  %262 = getelementptr inbounds i8, ptr %7, i64 80
  store ptr %4, ptr %262, align 16, !tbaa !17
  %263 = getelementptr inbounds i8, ptr %7, i64 88
  store ptr null, ptr %263, align 8, !tbaa !18
  %264 = load i64, ptr @__const.main.data_send, align 1
  br label %270

265:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %266 = call ptr @s2n_config_new() #12
  store ptr %266, ptr %15, align 8, !tbaa !9
  %267 = load i32, ptr @test_count, align 4, !tbaa !5
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr @test_count, align 4, !tbaa !5
  %269 = icmp eq ptr %266, null
  br i1 %269, label %721, label %745

270:                                              ; preds = %251, %715
  %.0135 = phi i64 [ 0, %251 ], [ %720, %715 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  %271 = call ptr @s2n_config_new() #12
  store ptr %271, ptr %8, align 8, !tbaa !9
  %272 = load i32, ptr @test_count, align 4, !tbaa !5
  %273 = add nsw i32 %272, 1
  store i32 %273, ptr @test_count, align 4, !tbaa !5
  %274 = icmp eq ptr %271, null
  br i1 %274, label %275, label %299

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

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

286:                                              ; preds = %282, %275
  br label %287

287:                                              ; preds = %282, %286
  %.str.9.sink223 = phi ptr [ @.str.9, %286 ], [ @.str.6, %282 ]
  store i32 %277, ptr %276, align 4, !tbaa !5
  %288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %289 = load i32, ptr @test_count, align 4, !tbaa !5
  %290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %291 = load i32, ptr %290, align 4, !tbaa !5
  %292 = call ptr @s2n_strerror(i32 noundef %291, ptr noundef nonnull @.str.8) #12
  %293 = load i32, ptr %290, align 4, !tbaa !5
  %294 = call ptr @s2n_strerror_debug(i32 noundef %293, ptr noundef nonnull @.str.8) #12
  %295 = load i32, ptr %276, align 4, !tbaa !5
  %296 = call ptr @strerror(i32 noundef %295) #12
  %297 = load i32, ptr %276, align 4, !tbaa !5
  %298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %288, ptr noundef nonnull %.str.9.sink223, i32 noundef %289, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 77, ptr noundef %292, ptr noundef %294, ptr noundef %296, i32 noundef %297) #14
  call void @exit(i32 noundef 1) #15
  unreachable

299:                                              ; preds = %270
  %300 = add nsw i32 %272, 2
  store i32 %300, ptr @test_count, align 4, !tbaa !5
  %301 = getelementptr inbounds [4 x %struct.anon], ptr %7, i64 0, i64 %.0135
  %302 = getelementptr inbounds i8, ptr %301, i64 8
  %303 = load ptr, ptr %302, align 8, !tbaa !17
  %304 = load i32, ptr %301, align 8, !tbaa !15
  %305 = call i32 @s2n_config_set_protocol_preferences(ptr noundef nonnull %271, ptr noundef %303, i32 noundef %304) #12
  %306 = icmp eq i32 %305, -1
  br i1 %306, label %307, label %331

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

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

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

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

331:                                              ; preds = %299
  %332 = load i32, ptr @test_count, align 4, !tbaa !5
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr @test_count, align 4, !tbaa !5
  %334 = load ptr, ptr %8, align 8, !tbaa !9
  %335 = call i32 @s2n_config_disable_x509_verification(ptr noundef %334) #12
  %336 = icmp eq i32 %335, -1
  br i1 %336, label %337, label %361

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

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

348:                                              ; preds = %344, %337
  br label %349

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

361:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  %362 = call ptr @s2n_connection_new(i32 noundef 1) #12
  store ptr %362, ptr %9, align 8, !tbaa !9
  %363 = load i32, ptr @test_count, align 4, !tbaa !5
  %364 = add nsw i32 %363, 1
  store i32 %364, ptr @test_count, align 4, !tbaa !5
  %365 = icmp eq ptr %362, null
  br i1 %365, label %366, label %390

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

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

377:                                              ; preds = %373, %366
  br label %378

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

390:                                              ; preds = %361
  %391 = add nsw i32 %363, 2
  store i32 %391, ptr @test_count, align 4, !tbaa !5
  %392 = load ptr, ptr %8, align 8, !tbaa !9
  %393 = call i32 @s2n_connection_set_config(ptr noundef nonnull %362, ptr noundef %392) #12
  %394 = icmp eq i32 %393, -1
  br i1 %394, label %395, label %419

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

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

406:                                              ; preds = %402, %395
  br label %407

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

419:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %420 = call ptr @s2n_connection_new(i32 noundef 0) #12
  store ptr %420, ptr %10, align 8, !tbaa !9
  %421 = load i32, ptr @test_count, align 4, !tbaa !5
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr @test_count, align 4, !tbaa !5
  %423 = icmp eq ptr %420, null
  br i1 %423, label %424, label %448

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

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

435:                                              ; preds = %431, %424
  br label %436

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

448:                                              ; preds = %419
  %449 = add nsw i32 %421, 2
  store i32 %449, ptr @test_count, align 4, !tbaa !5
  %450 = call i32 @s2n_connection_set_config(ptr noundef nonnull %420, ptr noundef nonnull %107) #12
  %451 = icmp eq i32 %450, -1
  br i1 %451, label %452, label %476

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

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

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

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

476:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  %477 = load i32, ptr @test_count, align 4, !tbaa !5
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr @test_count, align 4, !tbaa !5
  %479 = call i32 @s2n_io_stuffer_pair_init(ptr noundef nonnull %11) #12
  %480 = call zeroext i1 @s2n_result_is_ok(i32 %479)
  br i1 %480, label %505, label %481

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

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

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

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

505:                                              ; preds = %476
  %506 = load i32, ptr @test_count, align 4, !tbaa !5
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr @test_count, align 4, !tbaa !5
  %508 = load ptr, ptr %9, align 8, !tbaa !9
  %509 = load ptr, ptr %10, align 8, !tbaa !9
  %510 = call i32 @s2n_connections_set_io_stuffer_pair(ptr noundef %508, ptr noundef %509, ptr noundef nonnull %11) #12
  %511 = call zeroext i1 @s2n_result_is_ok(i32 %510)
  br i1 %511, label %536, label %512

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

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

523:                                              ; preds = %519, %512
  br label %524

524:                                              ; preds = %519, %523
  %.str.9.sink311 = phi ptr [ @.str.9, %523 ], [ @.str.6, %519 ]
  store i32 %514, ptr %513, align 4, !tbaa !5
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = load i32, ptr @test_count, align 4, !tbaa !5
  %527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %528 = load i32, ptr %527, align 4, !tbaa !5
  %529 = call ptr @s2n_strerror(i32 noundef %528, ptr noundef nonnull @.str.8) #12
  %530 = load i32, ptr %527, align 4, !tbaa !5
  %531 = call ptr @s2n_strerror_debug(i32 noundef %530, ptr noundef nonnull @.str.8) #12
  %532 = load i32, ptr %513, align 4, !tbaa !5
  %533 = call ptr @strerror(i32 noundef %532) #12
  %534 = load i32, ptr %513, align 4, !tbaa !5
  %535 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %525, ptr noundef nonnull %.str.9.sink311, i32 noundef %526, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.5, i32 noundef 94, ptr noundef %529, ptr noundef %531, ptr noundef %533, i32 noundef %534) #14
  call void @exit(i32 noundef 1) #15
  unreachable

536:                                              ; preds = %505
  %537 = load i32, ptr @test_count, align 4, !tbaa !5
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr @test_count, align 4, !tbaa !5
  %539 = load ptr, ptr %10, align 8, !tbaa !9
  %540 = load ptr, ptr %9, align 8, !tbaa !9
  %541 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %539, ptr noundef %540) #12
  %542 = icmp eq i32 %541, -1
  br i1 %542, label %543, label %567

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

550:                                              ; preds = %543
  %551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %552 = call i32 @fileno(ptr noundef %551) #12
  %553 = call i32 @isatty(i32 noundef %552) #12
  %.not119 = icmp eq i32 %553, 0
  br i1 %.not119, label %554, label %555

554:                                              ; preds = %550, %543
  br label %555

555:                                              ; preds = %550, %554
  %.str.9.sink322 = phi ptr [ @.str.9, %554 ], [ @.str.6, %550 ]
  store i32 %545, ptr %544, align 4, !tbaa !5
  %556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %557 = load i32, ptr @test_count, align 4, !tbaa !5
  %558 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %559 = load i32, ptr %558, align 4, !tbaa !5
  %560 = call ptr @s2n_strerror(i32 noundef %559, ptr noundef nonnull @.str.8) #12
  %561 = load i32, ptr %558, align 4, !tbaa !5
  %562 = call ptr @s2n_strerror_debug(i32 noundef %561, ptr noundef nonnull @.str.8) #12
  %563 = load i32, ptr %544, align 4, !tbaa !5
  %564 = call ptr @strerror(i32 noundef %563) #12
  %565 = load i32, ptr %544, align 4, !tbaa !5
  %566 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %556, ptr noundef nonnull %.str.9.sink322, i32 noundef %557, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.5, i32 noundef 96, ptr noundef %560, ptr noundef %562, ptr noundef %564, i32 noundef %565) #14
  call void @exit(i32 noundef 1) #15
  unreachable

567:                                              ; preds = %536
  %568 = getelementptr inbounds i8, ptr %301, i64 16
  %569 = load ptr, ptr %568, align 8, !tbaa !18
  %570 = icmp eq ptr %569, null
  %571 = load i32, ptr @test_count, align 4, !tbaa !5
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr @test_count, align 4, !tbaa !5
  %573 = load ptr, ptr %10, align 8, !tbaa !9
  %574 = call ptr @s2n_get_application_protocol(ptr noundef %573) #12
  br i1 %570, label %575, label %601

575:                                              ; preds = %567
  %576 = icmp eq ptr %574, null
  br i1 %576, label %628, label %577

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

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

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

589:                                              ; preds = %584, %588
  %.str.9.sink333 = phi ptr [ @.str.9, %588 ], [ @.str.6, %584 ]
  store i32 %579, ptr %578, align 4, !tbaa !5
  %590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %591 = load i32, ptr @test_count, align 4, !tbaa !5
  %592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror(i32 noundef %593, ptr noundef nonnull @.str.8) #12
  %595 = load i32, ptr %592, align 4, !tbaa !5
  %596 = call ptr @s2n_strerror_debug(i32 noundef %595, ptr noundef nonnull @.str.8) #12
  %597 = load i32, ptr %578, align 4, !tbaa !5
  %598 = call ptr @strerror(i32 noundef %597) #12
  %599 = load i32, ptr %578, align 4, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %590, ptr noundef nonnull %.str.9.sink333, i32 noundef %591, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.5, i32 noundef 99, ptr noundef %594, ptr noundef %596, ptr noundef %598, i32 noundef %599) #14
  call void @exit(i32 noundef 1) #15
  unreachable

601:                                              ; preds = %567
  %602 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %574, ptr noundef nonnull dereferenceable(1) %569) #16
  %603 = icmp eq i32 %602, 0
  br i1 %603, label %628, label %604

604:                                              ; preds = %601
  %605 = tail call ptr @__errno_location() #13
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %608 = call i32 @s2n_print_stacktrace(ptr noundef %607) #12
  %609 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %610 = trunc nuw i8 %609 to i1
  br i1 %610, label %611, label %615

611:                                              ; preds = %604
  %612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %613 = call i32 @fileno(ptr noundef %612) #12
  %614 = call i32 @isatty(i32 noundef %613) #12
  %.not114 = icmp eq i32 %614, 0
  br i1 %.not114, label %615, label %616

615:                                              ; preds = %611, %604
  br label %616

616:                                              ; preds = %611, %615
  %.str.9.sink344 = phi ptr [ @.str.9, %615 ], [ @.str.6, %611 ]
  store i32 %606, ptr %605, align 4, !tbaa !5
  %617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %618 = load i32, ptr @test_count, align 4, !tbaa !5
  %619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = call ptr @s2n_strerror(i32 noundef %620, ptr noundef nonnull @.str.8) #12
  %622 = load i32, ptr %619, align 4, !tbaa !5
  %623 = call ptr @s2n_strerror_debug(i32 noundef %622, ptr noundef nonnull @.str.8) #12
  %624 = load i32, ptr %605, align 4, !tbaa !5
  %625 = call ptr @strerror(i32 noundef %624) #12
  %626 = load i32, ptr %605, align 4, !tbaa !5
  %627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %617, ptr noundef nonnull %.str.9.sink344, i32 noundef %618, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.5, i32 noundef 102, ptr noundef %621, ptr noundef %623, ptr noundef %625, i32 noundef %626) #14
  call void @exit(i32 noundef 1) #15
  unreachable

628:                                              ; preds = %601, %575
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #12
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  store i64 %264, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  store i64 0, ptr %14, align 8
  %629 = load i32, ptr @test_count, align 4, !tbaa !5
  %630 = add nsw i32 %629, 1
  store i32 %630, ptr @test_count, align 4, !tbaa !5
  %631 = load ptr, ptr %9, align 8, !tbaa !9
  %632 = call i64 @s2n_send(ptr noundef %631, ptr noundef nonnull %13, i64 noundef 8, ptr noundef nonnull %12) #12
  %633 = icmp eq i64 %632, 8
  br i1 %633, label %658, label %634

634:                                              ; preds = %628
  %635 = tail call ptr @__errno_location() #13
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %638 = call i32 @s2n_print_stacktrace(ptr noundef %637) #12
  %639 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %640 = trunc nuw i8 %639 to i1
  br i1 %640, label %641, label %645

641:                                              ; preds = %634
  %642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %643 = call i32 @fileno(ptr noundef %642) #12
  %644 = call i32 @isatty(i32 noundef %643) #12
  %.not116 = icmp eq i32 %644, 0
  br i1 %.not116, label %645, label %646

645:                                              ; preds = %641, %634
  br label %646

646:                                              ; preds = %641, %645
  %.str.9.sink355 = phi ptr [ @.str.9, %645 ], [ @.str.6, %641 ]
  store i32 %636, ptr %635, align 4, !tbaa !5
  %647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %648 = load i32, ptr @test_count, align 4, !tbaa !5
  %649 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %650 = load i32, ptr %649, align 4, !tbaa !5
  %651 = call ptr @s2n_strerror(i32 noundef %650, ptr noundef nonnull @.str.8) #12
  %652 = load i32, ptr %649, align 4, !tbaa !5
  %653 = call ptr @s2n_strerror_debug(i32 noundef %652, ptr noundef nonnull @.str.8) #12
  %654 = load i32, ptr %635, align 4, !tbaa !5
  %655 = call ptr @strerror(i32 noundef %654) #12
  %656 = load i32, ptr %635, align 4, !tbaa !5
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %647, ptr noundef nonnull %.str.9.sink355, i32 noundef %648, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.5, i32 noundef 109, ptr noundef %651, ptr noundef %653, ptr noundef %655, i32 noundef %656) #14
  call void @exit(i32 noundef 1) #15
  unreachable

658:                                              ; preds = %628
  %659 = load i32, ptr @test_count, align 4, !tbaa !5
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr @test_count, align 4, !tbaa !5
  %661 = load ptr, ptr %10, align 8, !tbaa !9
  %662 = call i64 @s2n_recv(ptr noundef %661, ptr noundef nonnull %14, i64 noundef 8, ptr noundef nonnull %12) #12
  %663 = icmp eq i64 %662, 8
  br i1 %663, label %688, label %664

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

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

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

676:                                              ; preds = %671, %675
  %.str.9.sink366 = phi ptr [ @.str.9, %675 ], [ @.str.6, %671 ]
  store i32 %666, ptr %665, align 4, !tbaa !5
  %677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %678 = load i32, ptr @test_count, align 4, !tbaa !5
  %679 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %680 = load i32, ptr %679, align 4, !tbaa !5
  %681 = call ptr @s2n_strerror(i32 noundef %680, ptr noundef nonnull @.str.8) #12
  %682 = load i32, ptr %679, align 4, !tbaa !5
  %683 = call ptr @s2n_strerror_debug(i32 noundef %682, ptr noundef nonnull @.str.8) #12
  %684 = load i32, ptr %665, align 4, !tbaa !5
  %685 = call ptr @strerror(i32 noundef %684) #12
  %686 = load i32, ptr %665, align 4, !tbaa !5
  %687 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %677, ptr noundef nonnull %.str.9.sink366, i32 noundef %678, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.5, i32 noundef 110, ptr noundef %681, ptr noundef %683, ptr noundef %685, i32 noundef %686) #14
  call void @exit(i32 noundef 1) #15
  unreachable

688:                                              ; preds = %658
  %689 = load i32, ptr @test_count, align 4, !tbaa !5
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr @test_count, align 4, !tbaa !5
  %lhsv = load i64, ptr %13, align 8
  %rhsv = load i64, ptr %14, align 8
  %.not542 = icmp eq i64 %lhsv, %rhsv
  br i1 %.not542, label %715, label %691

691:                                              ; preds = %688
  %692 = tail call ptr @__errno_location() #13
  %693 = load i32, ptr %692, align 4, !tbaa !5
  %694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %695 = call i32 @s2n_print_stacktrace(ptr noundef %694) #12
  %696 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %697 = trunc nuw i8 %696 to i1
  br i1 %697, label %698, label %702

698:                                              ; preds = %691
  %699 = load ptr, ptr @stderr, align 8, !tbaa !9
  %700 = call i32 @fileno(ptr noundef %699) #12
  %701 = call i32 @isatty(i32 noundef %700) #12
  %.not118 = icmp eq i32 %701, 0
  br i1 %.not118, label %702, label %703

702:                                              ; preds = %698, %691
  br label %703

703:                                              ; preds = %698, %702
  %.str.9.sink377 = phi ptr [ @.str.9, %702 ], [ @.str.6, %698 ]
  store i32 %693, ptr %692, align 4, !tbaa !5
  %704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %705 = load i32, ptr @test_count, align 4, !tbaa !5
  %706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %707 = load i32, ptr %706, align 4, !tbaa !5
  %708 = call ptr @s2n_strerror(i32 noundef %707, ptr noundef nonnull @.str.8) #12
  %709 = load i32, ptr %706, align 4, !tbaa !5
  %710 = call ptr @s2n_strerror_debug(i32 noundef %709, ptr noundef nonnull @.str.8) #12
  %711 = load i32, ptr %692, align 4, !tbaa !5
  %712 = call ptr @strerror(i32 noundef %711) #12
  %713 = load i32, ptr %692, align 4, !tbaa !5
  %714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %704, ptr noundef nonnull %.str.9.sink377, i32 noundef %705, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.5, i32 noundef 111, ptr noundef %708, ptr noundef %710, ptr noundef %712, i32 noundef %713) #14
  call void @exit(i32 noundef 1) #15
  unreachable

715:                                              ; preds = %688
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #12
  %716 = call i32 @s2n_io_stuffer_pair_free(ptr noundef nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #12
  %717 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  %718 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  %719 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  %720 = add nuw nsw i64 %.0135, 1
  %exitcond.not = icmp eq i64 %720, 4
  br i1 %exitcond.not, label %265, label %270, !llvm.loop !19

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

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

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

733:                                              ; preds = %728, %732
  %.str.9.sink388 = phi ptr [ @.str.9, %732 ], [ @.str.6, %728 ]
  store i32 %723, ptr %722, align 4, !tbaa !5
  %734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %737 = load i32, ptr %736, align 4, !tbaa !5
  %738 = call ptr @s2n_strerror(i32 noundef %737, ptr noundef nonnull @.str.8) #12
  %739 = load i32, ptr %736, align 4, !tbaa !5
  %740 = call ptr @s2n_strerror_debug(i32 noundef %739, ptr noundef nonnull @.str.8) #12
  %741 = load i32, ptr %722, align 4, !tbaa !5
  %742 = call ptr @strerror(i32 noundef %741) #12
  %743 = load i32, ptr %722, align 4, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %734, ptr noundef nonnull %.str.9.sink388, i32 noundef %735, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 117, ptr noundef %738, ptr noundef %740, ptr noundef %742, i32 noundef %743) #14
  call void @exit(i32 noundef 1) #15
  unreachable

745:                                              ; preds = %265
  %746 = add nsw i32 %267, 2
  store i32 %746, ptr @test_count, align 4, !tbaa !5
  %747 = call i32 @s2n_config_set_protocol_preferences(ptr noundef nonnull %266, ptr noundef nonnull %3, i32 noundef 3) #12
  %748 = icmp eq i32 %747, -1
  br i1 %748, label %749, label %773

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

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

760:                                              ; preds = %756, %749
  br label %761

761:                                              ; preds = %756, %760
  %.str.9.sink399 = phi ptr [ @.str.9, %760 ], [ @.str.6, %756 ]
  store i32 %751, ptr %750, align 4, !tbaa !5
  %762 = load ptr, ptr @stderr, align 8, !tbaa !9
  %763 = load i32, ptr @test_count, align 4, !tbaa !5
  %764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %765 = load i32, ptr %764, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror(i32 noundef %765, ptr noundef nonnull @.str.8) #12
  %767 = load i32, ptr %764, align 4, !tbaa !5
  %768 = call ptr @s2n_strerror_debug(i32 noundef %767, ptr noundef nonnull @.str.8) #12
  %769 = load i32, ptr %750, align 4, !tbaa !5
  %770 = call ptr @strerror(i32 noundef %769) #12
  %771 = load i32, ptr %750, align 4, !tbaa !5
  %772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %762, ptr noundef nonnull %.str.9.sink399, i32 noundef %763, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.5, i32 noundef 119, ptr noundef %766, ptr noundef %768, ptr noundef %770, i32 noundef %771) #14
  call void @exit(i32 noundef 1) #15
  unreachable

773:                                              ; preds = %745
  %774 = load i32, ptr @test_count, align 4, !tbaa !5
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr @test_count, align 4, !tbaa !5
  %776 = call i32 @s2n_config_disable_x509_verification(ptr noundef nonnull %266) #12
  %777 = icmp eq i32 %776, -1
  br i1 %777, label %778, label %802

778:                                              ; preds = %773
  %779 = tail call ptr @__errno_location() #13
  %780 = load i32, ptr %779, align 4, !tbaa !5
  %781 = load ptr, ptr @stderr, align 8, !tbaa !9
  %782 = call i32 @s2n_print_stacktrace(ptr noundef %781) #12
  %783 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %784 = trunc nuw i8 %783 to i1
  br i1 %784, label %785, label %789

785:                                              ; preds = %778
  %786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %787 = call i32 @fileno(ptr noundef %786) #12
  %788 = call i32 @isatty(i32 noundef %787) #12
  %.not109 = icmp eq i32 %788, 0
  br i1 %.not109, label %789, label %790

789:                                              ; preds = %785, %778
  br label %790

790:                                              ; preds = %785, %789
  %.str.9.sink410 = phi ptr [ @.str.9, %789 ], [ @.str.6, %785 ]
  store i32 %780, ptr %779, align 4, !tbaa !5
  %791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %792 = load i32, ptr @test_count, align 4, !tbaa !5
  %793 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %794 = load i32, ptr %793, align 4, !tbaa !5
  %795 = call ptr @s2n_strerror(i32 noundef %794, ptr noundef nonnull @.str.8) #12
  %796 = load i32, ptr %793, align 4, !tbaa !5
  %797 = call ptr @s2n_strerror_debug(i32 noundef %796, ptr noundef nonnull @.str.8) #12
  %798 = load i32, ptr %779, align 4, !tbaa !5
  %799 = call ptr @strerror(i32 noundef %798) #12
  %800 = load i32, ptr %779, align 4, !tbaa !5
  %801 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %791, ptr noundef nonnull %.str.9.sink410, i32 noundef %792, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 120, ptr noundef %795, ptr noundef %797, ptr noundef %799, i32 noundef %800) #14
  call void @exit(i32 noundef 1) #15
  unreachable

802:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %803 = call ptr @s2n_connection_new(i32 noundef 1) #12
  store ptr %803, ptr %16, align 8, !tbaa !9
  %804 = load i32, ptr @test_count, align 4, !tbaa !5
  %805 = add nsw i32 %804, 1
  store i32 %805, ptr @test_count, align 4, !tbaa !5
  %806 = icmp eq ptr %803, null
  br i1 %806, label %807, label %831

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

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

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

819:                                              ; preds = %814, %818
  %.str.9.sink421 = phi ptr [ @.str.9, %818 ], [ @.str.6, %814 ]
  store i32 %809, ptr %808, align 4, !tbaa !5
  %820 = load ptr, ptr @stderr, align 8, !tbaa !9
  %821 = load i32, ptr @test_count, align 4, !tbaa !5
  %822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %823 = load i32, ptr %822, align 4, !tbaa !5
  %824 = call ptr @s2n_strerror(i32 noundef %823, ptr noundef nonnull @.str.8) #12
  %825 = load i32, ptr %822, align 4, !tbaa !5
  %826 = call ptr @s2n_strerror_debug(i32 noundef %825, ptr noundef nonnull @.str.8) #12
  %827 = load i32, ptr %808, align 4, !tbaa !5
  %828 = call ptr @strerror(i32 noundef %827) #12
  %829 = load i32, ptr %808, align 4, !tbaa !5
  %830 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef nonnull %.str.9.sink421, i32 noundef %821, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 124, ptr noundef %824, ptr noundef %826, ptr noundef %828, i32 noundef %829) #14
  call void @exit(i32 noundef 1) #15
  unreachable

831:                                              ; preds = %802
  %832 = add nsw i32 %804, 2
  store i32 %832, ptr @test_count, align 4, !tbaa !5
  %833 = call i32 @s2n_connection_set_config(ptr noundef nonnull %803, ptr noundef nonnull %266) #12
  %834 = icmp eq i32 %833, -1
  br i1 %834, label %835, label %859

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

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

846:                                              ; preds = %842, %835
  br label %847

847:                                              ; preds = %842, %846
  %.str.9.sink432 = phi ptr [ @.str.9, %846 ], [ @.str.6, %842 ]
  store i32 %837, ptr %836, align 4, !tbaa !5
  %848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %849 = load i32, ptr @test_count, align 4, !tbaa !5
  %850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %851 = load i32, ptr %850, align 4, !tbaa !5
  %852 = call ptr @s2n_strerror(i32 noundef %851, ptr noundef nonnull @.str.8) #12
  %853 = load i32, ptr %850, align 4, !tbaa !5
  %854 = call ptr @s2n_strerror_debug(i32 noundef %853, ptr noundef nonnull @.str.8) #12
  %855 = load i32, ptr %836, align 4, !tbaa !5
  %856 = call ptr @strerror(i32 noundef %855) #12
  %857 = load i32, ptr %836, align 4, !tbaa !5
  %858 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %848, ptr noundef nonnull %.str.9.sink432, i32 noundef %849, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 125, ptr noundef %852, ptr noundef %854, ptr noundef %856, i32 noundef %857) #14
  call void @exit(i32 noundef 1) #15
  unreachable

859:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %860 = call ptr @s2n_connection_new(i32 noundef 0) #12
  store ptr %860, ptr %17, align 8, !tbaa !9
  %861 = load i32, ptr @test_count, align 4, !tbaa !5
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr @test_count, align 4, !tbaa !5
  %863 = icmp eq ptr %860, null
  br i1 %863, label %864, label %888

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

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

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

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

888:                                              ; preds = %859
  %889 = add nsw i32 %861, 2
  store i32 %889, ptr @test_count, align 4, !tbaa !5
  %890 = call i32 @s2n_connection_set_config(ptr noundef nonnull %860, ptr noundef nonnull %107) #12
  %891 = icmp eq i32 %890, -1
  br i1 %891, label %892, label %916

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

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

903:                                              ; preds = %899, %892
  br label %904

904:                                              ; preds = %899, %903
  %.str.9.sink454 = phi ptr [ @.str.9, %903 ], [ @.str.6, %899 ]
  store i32 %894, ptr %893, align 4, !tbaa !5
  %905 = load ptr, ptr @stderr, align 8, !tbaa !9
  %906 = load i32, ptr @test_count, align 4, !tbaa !5
  %907 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %908 = load i32, ptr %907, align 4, !tbaa !5
  %909 = call ptr @s2n_strerror(i32 noundef %908, ptr noundef nonnull @.str.8) #12
  %910 = load i32, ptr %907, align 4, !tbaa !5
  %911 = call ptr @s2n_strerror_debug(i32 noundef %910, ptr noundef nonnull @.str.8) #12
  %912 = load i32, ptr %893, align 4, !tbaa !5
  %913 = call ptr @strerror(i32 noundef %912) #12
  %914 = load i32, ptr %893, align 4, !tbaa !5
  %915 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %905, ptr noundef nonnull %.str.9.sink454, i32 noundef %906, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 130, ptr noundef %909, ptr noundef %911, ptr noundef %913, i32 noundef %914) #14
  call void @exit(i32 noundef 1) #15
  unreachable

916:                                              ; preds = %888
  %917 = load i32, ptr @test_count, align 4, !tbaa !5
  %918 = add nsw i32 %917, 1
  store i32 %918, ptr @test_count, align 4, !tbaa !5
  %919 = getelementptr inbounds i8, ptr %3, i64 16
  %920 = call i32 @s2n_connection_set_protocol_preferences(ptr noundef nonnull %860, ptr noundef nonnull %919, i32 noundef 1) #12
  %921 = icmp eq i32 %920, -1
  br i1 %921, label %922, label %946

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

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

933:                                              ; preds = %929, %922
  br label %934

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

946:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %18) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %18, i8 0, i64 80, i1 false)
  %947 = load i32, ptr @test_count, align 4, !tbaa !5
  %948 = add nsw i32 %947, 1
  store i32 %948, ptr @test_count, align 4, !tbaa !5
  %949 = call i32 @s2n_io_stuffer_pair_init(ptr noundef nonnull %18) #12
  %950 = call zeroext i1 @s2n_result_is_ok(i32 %949)
  br i1 %950, label %975, label %951

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

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

962:                                              ; preds = %958, %951
  br label %963

963:                                              ; preds = %958, %962
  %.str.9.sink476 = phi ptr [ @.str.9, %962 ], [ @.str.6, %958 ]
  store i32 %953, ptr %952, 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 nonnull @.str.8) #12
  %969 = load i32, ptr %966, align 4, !tbaa !5
  %970 = call ptr @s2n_strerror_debug(i32 noundef %969, ptr noundef nonnull @.str.8) #12
  %971 = load i32, ptr %952, align 4, !tbaa !5
  %972 = call ptr @strerror(i32 noundef %971) #12
  %973 = load i32, ptr %952, align 4, !tbaa !5
  %974 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %964, ptr noundef nonnull %.str.9.sink476, i32 noundef %965, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.5, i32 noundef 136, ptr noundef %968, ptr noundef %970, ptr noundef %972, i32 noundef %973) #14
  call void @exit(i32 noundef 1) #15
  unreachable

975:                                              ; preds = %946
  %976 = load i32, ptr @test_count, align 4, !tbaa !5
  %977 = add nsw i32 %976, 1
  store i32 %977, ptr @test_count, align 4, !tbaa !5
  %978 = call i32 @s2n_connections_set_io_stuffer_pair(ptr noundef nonnull %803, ptr noundef nonnull %860, ptr noundef nonnull %18) #12
  %979 = call zeroext i1 @s2n_result_is_ok(i32 %978)
  br i1 %979, label %1004, label %980

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

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

991:                                              ; preds = %987, %980
  br label %992

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

1004:                                             ; preds = %975
  %1005 = load i32, ptr @test_count, align 4, !tbaa !5
  %1006 = add nsw i32 %1005, 1
  store i32 %1006, ptr @test_count, align 4, !tbaa !5
  %1007 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef nonnull %860, ptr noundef nonnull %803) #12
  %1008 = icmp eq i32 %1007, -1
  br i1 %1008, label %1009, label %1033

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

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

1020:                                             ; preds = %1016, %1009
  br label %1021

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

1033:                                             ; preds = %1004
  %1034 = load i32, ptr @test_count, align 4, !tbaa !5
  %1035 = add nsw i32 %1034, 1
  store i32 %1035, ptr @test_count, align 4, !tbaa !5
  %1036 = call ptr @s2n_get_application_protocol(ptr noundef nonnull %860) #12
  %1037 = load ptr, ptr %919, align 16, !tbaa !9
  %1038 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1036, ptr noundef nonnull dereferenceable(1) %1037) #16
  %1039 = icmp eq i32 %1038, 0
  br i1 %1039, label %1064, label %1040

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

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

1051:                                             ; preds = %1047, %1040
  br label %1052

1052:                                             ; preds = %1047, %1051
  %.str.9.sink509 = phi ptr [ @.str.9, %1051 ], [ @.str.6, %1047 ]
  store i32 %1042, ptr %1041, align 4, !tbaa !5
  %1053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1054 = load i32, ptr @test_count, align 4, !tbaa !5
  %1055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1056 = load i32, ptr %1055, align 4, !tbaa !5
  %1057 = call ptr @s2n_strerror(i32 noundef %1056, ptr noundef nonnull @.str.8) #12
  %1058 = load i32, ptr %1055, align 4, !tbaa !5
  %1059 = call ptr @s2n_strerror_debug(i32 noundef %1058, ptr noundef nonnull @.str.8) #12
  %1060 = load i32, ptr %1041, align 4, !tbaa !5
  %1061 = call ptr @strerror(i32 noundef %1060) #12
  %1062 = load i32, ptr %1041, align 4, !tbaa !5
  %1063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1053, ptr noundef nonnull %.str.9.sink509, i32 noundef %1054, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.5, i32 noundef 144, ptr noundef %1057, ptr noundef %1059, ptr noundef %1061, i32 noundef %1062) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1064:                                             ; preds = %1033
  %1065 = call i32 @s2n_io_stuffer_pair_free(ptr noundef nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #12
  %1066 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  %1067 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  %1068 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  %1069 = call i32 @s2n_cleanup() #12
  %1070 = icmp eq i32 %1069, -1
  br i1 %1070, label %1071, label %1095

1071:                                             ; preds = %1064
  %1072 = tail call ptr @__errno_location() #13
  %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) #12
  %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) #12
  %1081 = call i32 @isatty(i32 noundef %1080) #12
  %.not102 = icmp eq i32 %1081, 0
  br i1 %.not102, label %1082, label %1083

1082:                                             ; preds = %1078, %1071
  br label %1083

1083:                                             ; preds = %1078, %1082
  %.str.9.sink520 = phi ptr [ @.str.9, %1082 ], [ @.str.6, %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.8) #12
  %1089 = load i32, ptr %1086, align 4, !tbaa !5
  %1090 = call ptr @s2n_strerror_debug(i32 noundef %1089, ptr noundef nonnull @.str.8) #12
  %1091 = load i32, ptr %1072, align 4, !tbaa !5
  %1092 = call ptr @strerror(i32 noundef %1091) #12
  %1093 = load i32, ptr %1072, align 4, !tbaa !5
  %1094 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1084, ptr noundef nonnull %.str.9.sink520, i32 noundef %1085, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.5, i32 noundef 147, ptr noundef %1088, ptr noundef %1090, ptr noundef %1092, i32 noundef %1093) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1095:                                             ; preds = %1064
  %1096 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %1097 = icmp eq i32 %1096, -1
  br i1 %1097, label %1098, label %1122

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

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

1109:                                             ; preds = %1105, %1098
  br label %1110

1110:                                             ; preds = %1105, %1109
  %.str.9.sink531 = phi ptr [ @.str.9, %1109 ], [ @.str.6, %1105 ]
  store i32 %1100, ptr %1099, align 4, !tbaa !5
  %1111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1112 = load i32, ptr @test_count, align 4, !tbaa !5
  %1113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  %1115 = call ptr @s2n_strerror(i32 noundef %1114, ptr noundef nonnull @.str.8) #12
  %1116 = load i32, ptr %1113, align 4, !tbaa !5
  %1117 = call ptr @s2n_strerror_debug(i32 noundef %1116, ptr noundef nonnull @.str.8) #12
  %1118 = load i32, ptr %1099, align 4, !tbaa !5
  %1119 = call ptr @strerror(i32 noundef %1118) #12
  %1120 = load i32, ptr %1099, align 4, !tbaa !5
  %1121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1111, ptr noundef nonnull %.str.9.sink531, i32 noundef %1112, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.5, i32 noundef 147, ptr noundef %1115, ptr noundef %1117, ptr noundef %1119, i32 noundef %1120) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1122:                                             ; preds = %1095
  %1123 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1124 = trunc nuw i8 %1123 to i1
  br i1 %1124, label %1125, label %1136

1125:                                             ; preds = %1122
  %1126 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1127 = call i32 @fileno(ptr noundef %1126) #12
  %1128 = call i32 @isatty(i32 noundef %1127) #12
  %.not98 = icmp eq i32 %1128, 0
  br i1 %.not98, label %1136, label %1129

1129:                                             ; preds = %1125
  %1130 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not100 = icmp eq i32 %1130, 0
  %1131 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not100, label %1134, label %1132

1132:                                             ; preds = %1129
  %1133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1131, ptr noundef nonnull @.str.40, i32 noundef %1130) #12
  br label %1143

1134:                                             ; preds = %1129
  %1135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1131, ptr noundef nonnull @.str.41) #12
  br label %1143

1136:                                             ; preds = %1125, %1122
  %1137 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not99 = icmp eq i32 %1137, 0
  %1138 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not99, label %1141, label %1139

1139:                                             ; preds = %1136
  %1140 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1138, ptr noundef nonnull @.str.42, i32 noundef %1137) #12
  br label %1143

1141:                                             ; preds = %1136
  %1142 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1138, ptr noundef nonnull @.str.43) #12
  br label %1143

1143:                                             ; preds = %1139, %1141, %1132, %1134
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #12
  %1144 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  %1145 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #12
  ret i32 0
}

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

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #4

declare i32 @s2n_init() local_unnamed_addr #4

declare ptr @s2n_config_new() local_unnamed_addr #4

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #4

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

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

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #4

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

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

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

declare i32 @s2n_config_disable_x509_verification(ptr noundef) local_unnamed_addr #4

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #4

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_io_stuffer_pair_free(ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_io_stuffer_pair_init(ptr noundef) local_unnamed_addr #4

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

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

declare ptr @s2n_get_application_protocol(ptr noundef) local_unnamed_addr #4

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

declare i64 @s2n_send(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

declare i64 @s2n_recv(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

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

declare i32 @s2n_cleanup() local_unnamed_addr #4

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { 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 = { nounwind }
attributes #13 = { nounwind willreturn memory(none) }
attributes #14 = { cold nounwind }
attributes #15 = { noreturn nounwind }
attributes #16 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !6, i64 0}
!16 = !{!"", !6, i64 0, !10, i64 8, !10, i64 16}
!17 = !{!16, !10, i64 8}
!18 = !{!16, !10, i64 16}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}


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