; LLVM IR from aws/s2n-tls :: bin (s2nd)

; 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.conn_settings = type { i16, i32, i32, ptr, ptr, ptr, ptr, [10 x ptr], i64 }
%struct.addrinfo = type { i32, i32, i32, i32, i32, ptr, ptr, ptr }
%struct.option = type { ptr, i32, ptr, i32 }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%struct.sigaction = type { %union.anon, %struct.__sigset_t, i32, ptr }
%union.anon = type { ptr }
%struct.__sigset_t = type { [16 x i64] }

@stderr = external global ptr, align 8
@.str.80 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [26 x i8], align 1
@optarg = external global ptr, align 8
@.str.114 = external hidden unnamed_addr constant [43 x i8], align 1
@stdout = external global ptr, align 8
@.str.115 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [73 x i8], align 1
@optind = external global i32, align 4
@stdin = external global ptr, align 8
@.str.121 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [55 x i8], align 1
@default_certificate_chain = external hidden global [3297 x i8], align 16
@default_private_key = external hidden global [1649 x i8], align 16
@.str.137 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [34 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.141 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @usage() #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @handle_connection(i32 noundef, ptr noundef, ptr noundef byval(%struct.conn_settings) align 8) #0

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

declare void @print_s2n_error(ptr noundef) #4

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %struct.addrinfo, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca [50 x ptr], align 16
  %20 = alloca [50 x ptr], align 16
  %21 = alloca %struct.conn_settings, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i64, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i8, align 1
  %29 = alloca [33 x %struct.option], align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i64, align 8
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca i32, align 4
  %40 = alloca %struct.stat, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %struct.sigaction, align 8
  %43 = alloca [1 x ptr], align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  store ptr null, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  store i32 0, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  store i32 0, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  store ptr null, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  store ptr null, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  store ptr null, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  store ptr null, ptr %13, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  store ptr @.str.80, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  store ptr null, ptr %15, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  store ptr null, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  store i32 0, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 400, ptr %19) #10
  call void @llvm.memset.p0.i64(ptr align 16 %19, i8 0, i64 400, i1 false)
  call void @llvm.lifetime.start.p0(i64 400, ptr %20) #10
  call void @llvm.memset.p0.i64(ptr align 16 %20, i8 0, i64 400, i1 false)
  call void @llvm.lifetime.start.p0(i64 136, ptr %21) #10
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 136, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  store i32 0, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  store i32 0, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  store i32 0, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  store i64 0, ptr %25, align 8, !tbaa !11
  %50 = load i16, ptr %21, align 8
  %51 = and i16 %50, -65
  %52 = or i16 %51, 64
  store i16 %52, ptr %21, align 8
  %53 = load i16, ptr %21, align 8
  %54 = and i16 %53, -129
  %55 = or i16 %54, 128
  store i16 %55, ptr %21, align 8
  %56 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 2
  store i32 -1, ptr %56, align 8, !tbaa !13
  %57 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 8
  store i64 0, ptr %57, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store i32 0, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  store i32 0, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #10
  store i8 0, ptr %28, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1056, ptr %29) #10
  %58 = getelementptr inbounds %struct.option, ptr %29, i32 0, i32 0
  store ptr @.str.81, ptr %58, align 16, !tbaa !18
  %59 = getelementptr inbounds %struct.option, ptr %29, i32 0, i32 1
  store i32 1, ptr %59, align 8, !tbaa !20
  %60 = getelementptr inbounds %struct.option, ptr %29, i32 0, i32 2
  store ptr null, ptr %60, align 16, !tbaa !21
  %61 = getelementptr inbounds %struct.option, ptr %29, i32 0, i32 3
  store i32 99, ptr %61, align 8, !tbaa !22
  %62 = getelementptr inbounds %struct.option, ptr %29, i64 1
  %63 = getelementptr inbounds %struct.option, ptr %62, i32 0, i32 0
  store ptr @.str.82, ptr %63, align 16, !tbaa !18
  %64 = getelementptr inbounds %struct.option, ptr %62, i32 0, i32 1
  store i32 0, ptr %64, align 8, !tbaa !20
  %65 = getelementptr inbounds %struct.option, ptr %62, i32 0, i32 2
  store ptr null, ptr %65, align 16, !tbaa !21
  %66 = getelementptr inbounds %struct.option, ptr %62, i32 0, i32 3
  store i32 101, ptr %66, align 8, !tbaa !22
  %67 = getelementptr inbounds %struct.option, ptr %29, i64 2
  %68 = getelementptr inbounds %struct.option, ptr %67, i32 0, i32 0
  store ptr @.str.83, ptr %68, align 16, !tbaa !18
  %69 = getelementptr inbounds %struct.option, ptr %67, i32 0, i32 1
  store i32 0, ptr %69, align 8, !tbaa !20
  %70 = getelementptr inbounds %struct.option, ptr %67, i32 0, i32 2
  store ptr null, ptr %70, align 16, !tbaa !21
  %71 = getelementptr inbounds %struct.option, ptr %67, i32 0, i32 3
  store i32 102, ptr %71, align 8, !tbaa !22
  %72 = getelementptr inbounds %struct.option, ptr %29, i64 3
  %73 = getelementptr inbounds %struct.option, ptr %72, i32 0, i32 0
  store ptr @.str.84, ptr %73, align 16, !tbaa !18
  %74 = getelementptr inbounds %struct.option, ptr %72, i32 0, i32 1
  store i32 0, ptr %74, align 8, !tbaa !20
  %75 = getelementptr inbounds %struct.option, ptr %72, i32 0, i32 2
  store ptr null, ptr %75, align 16, !tbaa !21
  %76 = getelementptr inbounds %struct.option, ptr %72, i32 0, i32 3
  store i32 104, ptr %76, align 8, !tbaa !22
  %77 = getelementptr inbounds %struct.option, ptr %29, i64 4
  %78 = getelementptr inbounds %struct.option, ptr %77, i32 0, i32 0
  store ptr @.str.85, ptr %78, align 16, !tbaa !18
  %79 = getelementptr inbounds %struct.option, ptr %77, i32 0, i32 1
  store i32 1, ptr %79, align 8, !tbaa !20
  %80 = getelementptr inbounds %struct.option, ptr %77, i32 0, i32 2
  store ptr null, ptr %80, align 16, !tbaa !21
  %81 = getelementptr inbounds %struct.option, ptr %77, i32 0, i32 3
  store i32 107, ptr %81, align 8, !tbaa !22
  %82 = getelementptr inbounds %struct.option, ptr %29, i64 5
  %83 = getelementptr inbounds %struct.option, ptr %82, i32 0, i32 0
  store ptr @.str.86, ptr %83, align 16, !tbaa !18
  %84 = getelementptr inbounds %struct.option, ptr %82, i32 0, i32 1
  store i32 0, ptr %84, align 8, !tbaa !20
  %85 = getelementptr inbounds %struct.option, ptr %82, i32 0, i32 2
  store ptr null, ptr %85, align 16, !tbaa !21
  %86 = getelementptr inbounds %struct.option, ptr %82, i32 0, i32 3
  store i32 108, ptr %86, align 8, !tbaa !22
  %87 = getelementptr inbounds %struct.option, ptr %29, i64 6
  %88 = getelementptr inbounds %struct.option, ptr %87, i32 0, i32 0
  store ptr @.str.87, ptr %88, align 16, !tbaa !18
  %89 = getelementptr inbounds %struct.option, ptr %87, i32 0, i32 1
  store i32 0, ptr %89, align 8, !tbaa !20
  %90 = getelementptr inbounds %struct.option, ptr %87, i32 0, i32 2
  store ptr null, ptr %90, align 16, !tbaa !21
  %91 = getelementptr inbounds %struct.option, ptr %87, i32 0, i32 3
  store i32 109, ptr %91, align 8, !tbaa !22
  %92 = getelementptr inbounds %struct.option, ptr %29, i64 7
  %93 = getelementptr inbounds %struct.option, ptr %92, i32 0, i32 0
  store ptr @.str.88, ptr %93, align 16, !tbaa !18
  %94 = getelementptr inbounds %struct.option, ptr %92, i32 0, i32 1
  store i32 0, ptr %94, align 8, !tbaa !20
  %95 = getelementptr inbounds %struct.option, ptr %92, i32 0, i32 2
  store ptr null, ptr %95, align 16, !tbaa !21
  %96 = getelementptr inbounds %struct.option, ptr %92, i32 0, i32 3
  store i32 110, ptr %96, align 8, !tbaa !22
  %97 = getelementptr inbounds %struct.option, ptr %29, i64 8
  %98 = getelementptr inbounds %struct.option, ptr %97, i32 0, i32 0
  store ptr @.str.89, ptr %98, align 16, !tbaa !18
  %99 = getelementptr inbounds %struct.option, ptr %97, i32 0, i32 1
  store i32 1, ptr %99, align 8, !tbaa !20
  %100 = getelementptr inbounds %struct.option, ptr %97, i32 0, i32 2
  store ptr null, ptr %100, align 16, !tbaa !21
  %101 = getelementptr inbounds %struct.option, ptr %97, i32 0, i32 3
  store i32 111, ptr %101, align 8, !tbaa !22
  %102 = getelementptr inbounds %struct.option, ptr %29, i64 9
  %103 = getelementptr inbounds %struct.option, ptr %102, i32 0, i32 0
  store ptr @.str.90, ptr %103, align 16, !tbaa !18
  %104 = getelementptr inbounds %struct.option, ptr %102, i32 0, i32 1
  store i32 0, ptr %104, align 8, !tbaa !20
  %105 = getelementptr inbounds %struct.option, ptr %102, i32 0, i32 2
  store ptr %23, ptr %105, align 16, !tbaa !21
  %106 = getelementptr inbounds %struct.option, ptr %102, i32 0, i32 3
  store i32 1, ptr %106, align 8, !tbaa !22
  %107 = getelementptr inbounds %struct.option, ptr %29, i64 10
  %108 = getelementptr inbounds %struct.option, ptr %107, i32 0, i32 0
  store ptr @.str.91, ptr %108, align 16, !tbaa !18
  %109 = getelementptr inbounds %struct.option, ptr %107, i32 0, i32 1
  store i32 0, ptr %109, align 8, !tbaa !20
  %110 = getelementptr inbounds %struct.option, ptr %107, i32 0, i32 2
  store ptr null, ptr %110, align 16, !tbaa !21
  %111 = getelementptr inbounds %struct.option, ptr %107, i32 0, i32 3
  store i32 112, ptr %111, align 8, !tbaa !22
  %112 = getelementptr inbounds %struct.option, ptr %29, i64 11
  %113 = getelementptr inbounds %struct.option, ptr %112, i32 0, i32 0
  store ptr @.str.92, ptr %113, align 16, !tbaa !18
  %114 = getelementptr inbounds %struct.option, ptr %112, i32 0, i32 1
  store i32 1, ptr %114, align 8, !tbaa !20
  %115 = getelementptr inbounds %struct.option, ptr %112, i32 0, i32 2
  store ptr null, ptr %115, align 16, !tbaa !21
  %116 = getelementptr inbounds %struct.option, ptr %112, i32 0, i32 3
  store i32 114, ptr %116, align 8, !tbaa !22
  %117 = getelementptr inbounds %struct.option, ptr %29, i64 12
  %118 = getelementptr inbounds %struct.option, ptr %117, i32 0, i32 0
  store ptr @.str.93, ptr %118, align 16, !tbaa !18
  %119 = getelementptr inbounds %struct.option, ptr %117, i32 0, i32 1
  store i32 0, ptr %119, align 8, !tbaa !20
  %120 = getelementptr inbounds %struct.option, ptr %117, i32 0, i32 2
  store ptr null, ptr %120, align 16, !tbaa !21
  %121 = getelementptr inbounds %struct.option, ptr %117, i32 0, i32 3
  store i32 115, ptr %121, align 8, !tbaa !22
  %122 = getelementptr inbounds %struct.option, ptr %29, i64 13
  %123 = getelementptr inbounds %struct.option, ptr %122, i32 0, i32 0
  store ptr @.str.94, ptr %123, align 16, !tbaa !18
  %124 = getelementptr inbounds %struct.option, ptr %122, i32 0, i32 1
  store i32 1, ptr %124, align 8, !tbaa !20
  %125 = getelementptr inbounds %struct.option, ptr %122, i32 0, i32 2
  store ptr null, ptr %125, align 16, !tbaa !21
  %126 = getelementptr inbounds %struct.option, ptr %122, i32 0, i32 3
  store i32 100, ptr %126, align 8, !tbaa !22
  %127 = getelementptr inbounds %struct.option, ptr %29, i64 14
  %128 = getelementptr inbounds %struct.option, ptr %127, i32 0, i32 0
  store ptr @.str.95, ptr %128, align 16, !tbaa !18
  %129 = getelementptr inbounds %struct.option, ptr %127, i32 0, i32 1
  store i32 1, ptr %129, align 8, !tbaa !20
  %130 = getelementptr inbounds %struct.option, ptr %127, i32 0, i32 2
  store ptr null, ptr %130, align 16, !tbaa !21
  %131 = getelementptr inbounds %struct.option, ptr %127, i32 0, i32 3
  store i32 116, ptr %131, align 8, !tbaa !22
  %132 = getelementptr inbounds %struct.option, ptr %29, i64 15
  %133 = getelementptr inbounds %struct.option, ptr %132, i32 0, i32 0
  store ptr @.str.96, ptr %133, align 16, !tbaa !18
  %134 = getelementptr inbounds %struct.option, ptr %132, i32 0, i32 1
  store i32 0, ptr %134, align 8, !tbaa !20
  %135 = getelementptr inbounds %struct.option, ptr %132, i32 0, i32 2
  store ptr null, ptr %135, align 16, !tbaa !21
  %136 = getelementptr inbounds %struct.option, ptr %132, i32 0, i32 3
  store i32 105, ptr %136, align 8, !tbaa !22
  %137 = getelementptr inbounds %struct.option, ptr %29, i64 16
  %138 = getelementptr inbounds %struct.option, ptr %137, i32 0, i32 0
  store ptr @.str.97, ptr %138, align 16, !tbaa !18
  %139 = getelementptr inbounds %struct.option, ptr %137, i32 0, i32 1
  store i32 1, ptr %139, align 8, !tbaa !20
  %140 = getelementptr inbounds %struct.option, ptr %137, i32 0, i32 2
  store ptr null, ptr %140, align 16, !tbaa !21
  %141 = getelementptr inbounds %struct.option, ptr %137, i32 0, i32 3
  store i32 97, ptr %141, align 8, !tbaa !22
  %142 = getelementptr inbounds %struct.option, ptr %29, i64 17
  %143 = getelementptr inbounds %struct.option, ptr %142, i32 0, i32 0
  store ptr @.str.98, ptr %143, align 16, !tbaa !18
  %144 = getelementptr inbounds %struct.option, ptr %142, i32 0, i32 1
  store i32 1, ptr %144, align 8, !tbaa !20
  %145 = getelementptr inbounds %struct.option, ptr %142, i32 0, i32 2
  store ptr null, ptr %145, align 16, !tbaa !21
  %146 = getelementptr inbounds %struct.option, ptr %142, i32 0, i32 3
  store i32 1001, ptr %146, align 8, !tbaa !22
  %147 = getelementptr inbounds %struct.option, ptr %29, i64 18
  %148 = getelementptr inbounds %struct.option, ptr %147, i32 0, i32 0
  store ptr @.str.99, ptr %148, align 16, !tbaa !18
  %149 = getelementptr inbounds %struct.option, ptr %147, i32 0, i32 1
  store i32 1, ptr %149, align 8, !tbaa !20
  %150 = getelementptr inbounds %struct.option, ptr %147, i32 0, i32 2
  store ptr null, ptr %150, align 16, !tbaa !21
  %151 = getelementptr inbounds %struct.option, ptr %147, i32 0, i32 3
  store i32 1002, ptr %151, align 8, !tbaa !22
  %152 = getelementptr inbounds %struct.option, ptr %29, i64 19
  %153 = getelementptr inbounds %struct.option, ptr %152, i32 0, i32 0
  store ptr @.str.100, ptr %153, align 16, !tbaa !18
  %154 = getelementptr inbounds %struct.option, ptr %152, i32 0, i32 1
  store i32 0, ptr %154, align 8, !tbaa !20
  %155 = getelementptr inbounds %struct.option, ptr %152, i32 0, i32 2
  store ptr null, ptr %155, align 16, !tbaa !21
  %156 = getelementptr inbounds %struct.option, ptr %152, i32 0, i32 3
  store i32 84, ptr %156, align 8, !tbaa !22
  %157 = getelementptr inbounds %struct.option, ptr %29, i64 20
  %158 = getelementptr inbounds %struct.option, ptr %157, i32 0, i32 0
  store ptr @.str.101, ptr %158, align 16, !tbaa !18
  %159 = getelementptr inbounds %struct.option, ptr %157, i32 0, i32 1
  store i32 0, ptr %159, align 8, !tbaa !20
  %160 = getelementptr inbounds %struct.option, ptr %157, i32 0, i32 2
  store ptr null, ptr %160, align 16, !tbaa !21
  %161 = getelementptr inbounds %struct.option, ptr %157, i32 0, i32 3
  store i32 67, ptr %161, align 8, !tbaa !22
  %162 = getelementptr inbounds %struct.option, ptr %29, i64 21
  %163 = getelementptr inbounds %struct.option, ptr %162, i32 0, i32 0
  store ptr @.str.102, ptr %163, align 16, !tbaa !18
  %164 = getelementptr inbounds %struct.option, ptr %162, i32 0, i32 1
  store i32 2, ptr %164, align 8, !tbaa !20
  %165 = getelementptr inbounds %struct.option, ptr %162, i32 0, i32 2
  store ptr null, ptr %165, align 16, !tbaa !21
  %166 = getelementptr inbounds %struct.option, ptr %162, i32 0, i32 3
  store i32 88, ptr %166, align 8, !tbaa !22
  %167 = getelementptr inbounds %struct.option, ptr %29, i64 22
  %168 = getelementptr inbounds %struct.option, ptr %167, i32 0, i32 0
  store ptr @.str.103, ptr %168, align 16, !tbaa !18
  %169 = getelementptr inbounds %struct.option, ptr %167, i32 0, i32 1
  store i32 0, ptr %169, align 8, !tbaa !20
  %170 = getelementptr inbounds %struct.option, ptr %167, i32 0, i32 2
  store ptr null, ptr %170, align 16, !tbaa !21
  %171 = getelementptr inbounds %struct.option, ptr %167, i32 0, i32 3
  store i32 51, ptr %171, align 8, !tbaa !22
  %172 = getelementptr inbounds %struct.option, ptr %29, i64 23
  %173 = getelementptr inbounds %struct.option, ptr %172, i32 0, i32 0
  store ptr @.str.104, ptr %173, align 16, !tbaa !18
  %174 = getelementptr inbounds %struct.option, ptr %172, i32 0, i32 1
  store i32 0, ptr %174, align 8, !tbaa !20
  %175 = getelementptr inbounds %struct.option, ptr %172, i32 0, i32 2
  store ptr null, ptr %175, align 16, !tbaa !21
  %176 = getelementptr inbounds %struct.option, ptr %172, i32 0, i32 3
  store i32 119, ptr %176, align 8, !tbaa !22
  %177 = getelementptr inbounds %struct.option, ptr %29, i64 24
  %178 = getelementptr inbounds %struct.option, ptr %177, i32 0, i32 0
  store ptr @.str.105, ptr %178, align 16, !tbaa !18
  %179 = getelementptr inbounds %struct.option, ptr %177, i32 0, i32 1
  store i32 1, ptr %179, align 8, !tbaa !20
  %180 = getelementptr inbounds %struct.option, ptr %177, i32 0, i32 2
  store ptr null, ptr %180, align 16, !tbaa !21
  %181 = getelementptr inbounds %struct.option, ptr %177, i32 0, i32 3
  store i32 98, ptr %181, align 8, !tbaa !22
  %182 = getelementptr inbounds %struct.option, ptr %29, i64 25
  %183 = getelementptr inbounds %struct.option, ptr %182, i32 0, i32 0
  store ptr @.str.106, ptr %183, align 16, !tbaa !18
  %184 = getelementptr inbounds %struct.option, ptr %182, i32 0, i32 1
  store i32 1, ptr %184, align 8, !tbaa !20
  %185 = getelementptr inbounds %struct.option, ptr %182, i32 0, i32 2
  store ptr null, ptr %185, align 16, !tbaa !21
  %186 = getelementptr inbounds %struct.option, ptr %182, i32 0, i32 3
  store i32 65, ptr %186, align 8, !tbaa !22
  %187 = getelementptr inbounds %struct.option, ptr %29, i64 26
  %188 = getelementptr inbounds %struct.option, ptr %187, i32 0, i32 0
  store ptr @.str.107, ptr %188, align 16, !tbaa !18
  %189 = getelementptr inbounds %struct.option, ptr %187, i32 0, i32 1
  store i32 0, ptr %189, align 8, !tbaa !20
  %190 = getelementptr inbounds %struct.option, ptr %187, i32 0, i32 2
  store ptr null, ptr %190, align 16, !tbaa !21
  %191 = getelementptr inbounds %struct.option, ptr %187, i32 0, i32 3
  store i32 78, ptr %191, align 8, !tbaa !22
  %192 = getelementptr inbounds %struct.option, ptr %29, i64 27
  %193 = getelementptr inbounds %struct.option, ptr %192, i32 0, i32 0
  store ptr @.str.108, ptr %193, align 16, !tbaa !18
  %194 = getelementptr inbounds %struct.option, ptr %192, i32 0, i32 1
  store i32 0, ptr %194, align 8, !tbaa !20
  %195 = getelementptr inbounds %struct.option, ptr %192, i32 0, i32 2
  store ptr null, ptr %195, align 16, !tbaa !21
  %196 = getelementptr inbounds %struct.option, ptr %192, i32 0, i32 3
  store i32 66, ptr %196, align 8, !tbaa !22
  %197 = getelementptr inbounds %struct.option, ptr %29, i64 28
  %198 = getelementptr inbounds %struct.option, ptr %197, i32 0, i32 0
  store ptr @.str.109, ptr %198, align 16, !tbaa !18
  %199 = getelementptr inbounds %struct.option, ptr %197, i32 0, i32 1
  store i32 1, ptr %199, align 8, !tbaa !20
  %200 = getelementptr inbounds %struct.option, ptr %197, i32 0, i32 2
  store ptr null, ptr %200, align 16, !tbaa !21
  %201 = getelementptr inbounds %struct.option, ptr %197, i32 0, i32 3
  store i32 76, ptr %201, align 8, !tbaa !22
  %202 = getelementptr inbounds %struct.option, ptr %29, i64 29
  %203 = getelementptr inbounds %struct.option, ptr %202, i32 0, i32 0
  store ptr @.str.110, ptr %203, align 16, !tbaa !18
  %204 = getelementptr inbounds %struct.option, ptr %202, i32 0, i32 1
  store i32 1, ptr %204, align 8, !tbaa !20
  %205 = getelementptr inbounds %struct.option, ptr %202, i32 0, i32 2
  store ptr null, ptr %205, align 16, !tbaa !21
  %206 = getelementptr inbounds %struct.option, ptr %202, i32 0, i32 3
  store i32 80, ptr %206, align 8, !tbaa !22
  %207 = getelementptr inbounds %struct.option, ptr %29, i64 30
  %208 = getelementptr inbounds %struct.option, ptr %207, i32 0, i32 0
  store ptr @.str.111, ptr %208, align 16, !tbaa !18
  %209 = getelementptr inbounds %struct.option, ptr %207, i32 0, i32 1
  store i32 1, ptr %209, align 8, !tbaa !20
  %210 = getelementptr inbounds %struct.option, ptr %207, i32 0, i32 2
  store ptr null, ptr %210, align 16, !tbaa !21
  %211 = getelementptr inbounds %struct.option, ptr %207, i32 0, i32 3
  store i32 69, ptr %211, align 8, !tbaa !22
  %212 = getelementptr inbounds %struct.option, ptr %29, i64 31
  %213 = getelementptr inbounds %struct.option, ptr %212, i32 0, i32 0
  store ptr @.str.112, ptr %213, align 16, !tbaa !18
  %214 = getelementptr inbounds %struct.option, ptr %212, i32 0, i32 1
  store i32 1, ptr %214, align 8, !tbaa !20
  %215 = getelementptr inbounds %struct.option, ptr %212, i32 0, i32 2
  store ptr null, ptr %215, align 16, !tbaa !21
  %216 = getelementptr inbounds %struct.option, ptr %212, i32 0, i32 3
  store i32 1000, ptr %216, align 8, !tbaa !22
  %217 = getelementptr inbounds %struct.option, ptr %29, i64 32
  call void @llvm.memset.p0.i64(ptr align 16 %217, i8 0, i64 32, i1 false)
  %218 = getelementptr inbounds %struct.option, ptr %217, i32 0, i32 0
  %219 = getelementptr inbounds %struct.option, ptr %217, i32 0, i32 1
  %220 = getelementptr inbounds %struct.option, ptr %217, i32 0, i32 2
  %221 = getelementptr inbounds %struct.option, ptr %217, i32 0, i32 3
  br label %222

222:                                              ; preds = %391, %2
  br label %223

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  store i32 0, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  %224 = load i32, ptr %4, align 4, !tbaa !5
  %225 = load ptr, ptr %5, align 8, !tbaa !9
  %226 = getelementptr inbounds [33 x %struct.option], ptr %29, i64 0, i64 0
  %227 = call i32 @getopt_long(i32 noundef %224, ptr noundef %225, ptr noundef @.str.113, ptr noundef %226, ptr noundef %30) #10
  store i32 %227, ptr %31, align 4, !tbaa !5
  %228 = load i32, ptr %31, align 4, !tbaa !5
  %229 = icmp eq i32 %228, -1
  br i1 %229, label %230, label %231

230:                                              ; preds = %223
  store i32 3, ptr %32, align 4
  br label %389

231:                                              ; preds = %223
  %232 = load i32, ptr %31, align 4, !tbaa !5
  switch i32 %232, label %384 [
    i32 0, label %388
    i32 67, label %233
    i32 99, label %237
    i32 101, label %239
    i32 102, label %243
    i32 104, label %244
    i32 107, label %245
    i32 108, label %259
    i32 109, label %263
    i32 110, label %267
    i32 111, label %271
    i32 112, label %273
    i32 114, label %277
    i32 115, label %291
    i32 100, label %295
    i32 116, label %298
    i32 105, label %301
    i32 97, label %305
    i32 84, label %307
    i32 51, label %388
    i32 88, label %311
    i32 119, label %321
    i32 98, label %327
    i32 1000, label %340
    i32 1001, label %354
    i32 1002, label %357
    i32 65, label %360
    i32 66, label %362
    i32 76, label %363
    i32 80, label %365
    i32 69, label %379
    i32 78, label %382
    i32 63, label %383
  ]

233:                                              ; preds = %231
  %234 = load i16, ptr %21, align 8
  %235 = and i16 %234, -513
  %236 = or i16 %235, 512
  store i16 %236, ptr %21, align 8
  br label %388

237:                                              ; preds = %231
  %238 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %238, ptr %14, align 8, !tbaa !9
  br label %388

239:                                              ; preds = %231
  %240 = load i16, ptr %21, align 8
  %241 = and i16 %240, -33
  %242 = or i16 %241, 32
  store i16 %242, ptr %21, align 8
  br label %388

243:                                              ; preds = %231
  store i32 1, ptr %22, align 4, !tbaa !5
  br label %388

244:                                              ; preds = %231
  call void @usage()
  br label %388

245:                                              ; preds = %231
  %246 = load i32, ptr %18, align 4, !tbaa !5
  %247 = icmp eq i32 %246, 50
  br i1 %247, label %248, label %251

248:                                              ; preds = %245
  %249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %249, ptr noundef @.str.114, i32 noundef 50) #10
  call void @exit(i32 noundef 1) #11
  unreachable

251:                                              ; preds = %245
  %252 = load ptr, ptr @optarg, align 8, !tbaa !9
  %253 = call ptr @load_file_to_cstring(ptr noundef %252)
  %254 = load i32, ptr %18, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [50 x ptr], ptr %20, i64 0, i64 %255
  store ptr %253, ptr %256, align 8, !tbaa !9
  %257 = load i32, ptr %18, align 4, !tbaa !5
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %18, align 4, !tbaa !5
  br label %388

259:                                              ; preds = %231
  %260 = load i16, ptr %21, align 8
  %261 = and i16 %260, -17
  %262 = or i16 %261, 16
  store i16 %262, ptr %21, align 8
  br label %388

263:                                              ; preds = %231
  %264 = load i16, ptr %21, align 8
  %265 = and i16 %264, -2
  %266 = or i16 %265, 1
  store i16 %266, ptr %21, align 8
  br label %388

267:                                              ; preds = %231
  %268 = load i16, ptr %21, align 8
  %269 = and i16 %268, -5
  %270 = or i16 %269, 4
  store i16 %270, ptr %21, align 8
  br label %388

271:                                              ; preds = %231
  %272 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %272, ptr %12, align 8, !tbaa !9
  br label %388

273:                                              ; preds = %231
  %274 = load i16, ptr %21, align 8
  %275 = and i16 %274, -9
  %276 = or i16 %275, 8
  store i16 %276, ptr %21, align 8
  br label %388

277:                                              ; preds = %231
  %278 = load i32, ptr %17, align 4, !tbaa !5
  %279 = icmp eq i32 %278, 50
  br i1 %279, label %280, label %283

280:                                              ; preds = %277
  %281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %282 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %281, ptr noundef @.str.114, i32 noundef 50) #10
  call void @exit(i32 noundef 1) #11
  unreachable

283:                                              ; preds = %277
  %284 = load ptr, ptr @optarg, align 8, !tbaa !9
  %285 = call ptr @load_file_to_cstring(ptr noundef %284)
  %286 = load i32, ptr %17, align 4, !tbaa !5
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds [50 x ptr], ptr %19, i64 0, i64 %287
  store ptr %285, ptr %288, align 8, !tbaa !9
  %289 = load i32, ptr %17, align 4, !tbaa !5
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr %17, align 4, !tbaa !5
  br label %388

291:                                              ; preds = %231
  %292 = load i16, ptr %21, align 8
  %293 = and i16 %292, -3
  %294 = or i16 %293, 2
  store i16 %294, ptr %21, align 8
  br label %388

295:                                              ; preds = %231
  %296 = load ptr, ptr @optarg, align 8, !tbaa !9
  %297 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 3
  store ptr %296, ptr %297, align 8, !tbaa !23
  br label %388

298:                                              ; preds = %231
  %299 = load ptr, ptr @optarg, align 8, !tbaa !9
  %300 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 4
  store ptr %299, ptr %300, align 8, !tbaa !24
  br label %388

301:                                              ; preds = %231
  %302 = load i16, ptr %21, align 8
  %303 = and i16 %302, -257
  %304 = or i16 %303, 256
  store i16 %304, ptr %21, align 8
  br label %388

305:                                              ; preds = %231
  %306 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %306, ptr %13, align 8, !tbaa !9
  br label %388

307:                                              ; preds = %231
  %308 = load i16, ptr %21, align 8
  %309 = and i16 %308, -65
  %310 = or i16 %309, 0
  store i16 %310, ptr %21, align 8
  br label %388

311:                                              ; preds = %231
  %312 = load ptr, ptr @optarg, align 8, !tbaa !9
  %313 = icmp eq ptr %312, null
  br i1 %313, label %314, label %316

314:                                              ; preds = %311
  %315 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 2
  store i32 1, ptr %315, align 8, !tbaa !13
  br label %320

316:                                              ; preds = %311
  %317 = load ptr, ptr @optarg, align 8, !tbaa !9
  %318 = call i32 @atoi(ptr noundef %317) #12
  %319 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 2
  store i32 %318, ptr %319, align 8, !tbaa !13
  br label %320

320:                                              ; preds = %316, %314
  br label %388

321:                                              ; preds = %231
  %322 = load ptr, ptr @stdout, align 8, !tbaa !9
  %323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %322, ptr noundef @.str.115) #10
  %324 = load i16, ptr %21, align 8
  %325 = and i16 %324, -1025
  %326 = or i16 %325, 1024
  store i16 %326, ptr %21, align 8
  br label %388

327:                                              ; preds = %231
  %328 = load ptr, ptr @optarg, align 8, !tbaa !9
  %329 = call i64 @strtoul(ptr noundef %328, ptr noundef null, i32 noundef 10) #10
  store i64 %329, ptr %25, align 8, !tbaa !11
  br label %330

330:                                              ; preds = %327
  %331 = load i64, ptr %25, align 8, !tbaa !11
  %332 = icmp slt i64 %331, 0
  br i1 %332, label %333, label %334

333:                                              ; preds = %330
  call void @print_s2n_error(ptr noundef @.str.116)
  call void @exit(i32 noundef 1) #11
  unreachable

334:                                              ; preds = %330
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  %337 = load i64, ptr %25, align 8, !tbaa !11
  %338 = trunc i64 %337 to i32
  %339 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 1
  store i32 %338, ptr %339, align 4, !tbaa !25
  br label %388

340:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %341 = load ptr, ptr @optarg, align 8, !tbaa !9
  %342 = call i64 @strtoimax(ptr noundef %341, ptr noundef null, i32 noundef 10) #10
  store i64 %342, ptr %33, align 8, !tbaa !11
  %343 = load i64, ptr %33, align 8, !tbaa !11
  %344 = icmp sgt i64 %343, 4294967295
  br i1 %344, label %348, label %345

345:                                              ; preds = %340
  %346 = load i64, ptr %33, align 8, !tbaa !11
  %347 = icmp slt i64 %346, 0
  br i1 %347, label %348, label %351

348:                                              ; preds = %345, %340
  %349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %350 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %349, ptr noundef @.str.117) #10
  call void @exit(i32 noundef 1) #11
  unreachable

351:                                              ; preds = %345
  %352 = load i64, ptr %33, align 8, !tbaa !11
  %353 = trunc i64 %352 to i32
  store i32 %353, ptr %27, align 4, !tbaa !5
  store i32 4, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %388

354:                                              ; preds = %231
  %355 = load ptr, ptr @optarg, align 8, !tbaa !9
  %356 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 5
  store ptr %355, ptr %356, align 8, !tbaa !26
  br label %388

357:                                              ; preds = %231
  %358 = load ptr, ptr @optarg, align 8, !tbaa !9
  %359 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 6
  store ptr %358, ptr %359, align 8, !tbaa !27
  br label %388

360:                                              ; preds = %231
  %361 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %361, ptr %15, align 8, !tbaa !9
  br label %388

362:                                              ; preds = %231
  store i32 1, ptr %24, align 4, !tbaa !5
  br label %388

363:                                              ; preds = %231
  %364 = load ptr, ptr @optarg, align 8, !tbaa !9
  store ptr %364, ptr %16, align 8, !tbaa !9
  br label %388

365:                                              ; preds = %231
  %366 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 8
  %367 = load i64, ptr %366, align 8, !tbaa !15
  %368 = icmp uge i64 %367, 10
  br i1 %368, label %369, label %372

369:                                              ; preds = %365
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef @.str.118) #10
  call void @exit(i32 noundef 1) #11
  unreachable

372:                                              ; preds = %365
  %373 = load ptr, ptr @optarg, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 7
  %375 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 8
  %376 = load i64, ptr %375, align 8, !tbaa !15
  %377 = add i64 %376, 1
  store i64 %377, ptr %375, align 8, !tbaa !15
  %378 = getelementptr inbounds [10 x ptr], ptr %374, i64 0, i64 %376
  store ptr %373, ptr %378, align 8, !tbaa !9
  br label %388

379:                                              ; preds = %231
  %380 = load ptr, ptr @optarg, align 8, !tbaa !9
  %381 = call i32 @atoi(ptr noundef %380) #12
  store i32 %381, ptr %26, align 4, !tbaa !5
  br label %388

382:                                              ; preds = %231
  store i8 1, ptr %28, align 1, !tbaa !16
  br label %388

383:                                              ; preds = %231
  br label %384

384:                                              ; preds = %383, %231
  %385 = load ptr, ptr @stdout, align 8, !tbaa !9
  %386 = load i32, ptr %31, align 4, !tbaa !5
  %387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %385, ptr noundef @.str.119, i32 noundef %386) #10
  call void @usage()
  br label %388

388:                                              ; preds = %384, %382, %379, %372, %363, %362, %360, %357, %354, %351, %336, %321, %320, %307, %305, %301, %298, %295, %291, %283, %273, %271, %267, %263, %259, %251, %244, %243, %239, %237, %233, %231, %231
  store i32 0, ptr %32, align 4
  br label %389

389:                                              ; preds = %388, %230
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  %390 = load i32, ptr %32, align 4
  switch i32 %390, label %842 [
    i32 0, label %391
    i32 3, label %392
  ]

391:                                              ; preds = %389
  br label %222

392:                                              ; preds = %389
  %393 = load i16, ptr %21, align 8
  %394 = lshr i16 %393, 3
  %395 = and i16 %394, 1
  %396 = zext i16 %395 to i32
  %397 = icmp ne i32 %396, 0
  br i1 %397, label %398, label %407

398:                                              ; preds = %392
  %399 = load i16, ptr %21, align 8
  %400 = lshr i16 %399, 4
  %401 = and i16 %400, 1
  %402 = zext i16 %401 to i32
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %407

404:                                              ; preds = %398
  %405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %405, ptr noundef @.str.120) #10
  call void @exit(i32 noundef 1) #11
  unreachable

407:                                              ; preds = %398, %392
  %408 = load i32, ptr @optind, align 4, !tbaa !5
  %409 = load i32, ptr %4, align 4, !tbaa !5
  %410 = icmp slt i32 %408, %409
  br i1 %410, label %411, label %418

411:                                              ; preds = %407
  %412 = load ptr, ptr %5, align 8, !tbaa !9
  %413 = load i32, ptr @optind, align 4, !tbaa !5
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr @optind, align 4, !tbaa !5
  %415 = sext i32 %413 to i64
  %416 = getelementptr inbounds ptr, ptr %412, i64 %415
  %417 = load ptr, ptr %416, align 8, !tbaa !9
  store ptr %417, ptr %10, align 8, !tbaa !9
  br label %418

418:                                              ; preds = %411, %407
  %419 = load i32, ptr @optind, align 4, !tbaa !5
  %420 = load i32, ptr %4, align 4, !tbaa !5
  %421 = icmp slt i32 %419, %420
  br i1 %421, label %422, label %429

422:                                              ; preds = %418
  %423 = load ptr, ptr %5, align 8, !tbaa !9
  %424 = load i32, ptr @optind, align 4, !tbaa !5
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr @optind, align 4, !tbaa !5
  %426 = sext i32 %424 to i64
  %427 = getelementptr inbounds ptr, ptr %423, i64 %426
  %428 = load ptr, ptr %427, align 8, !tbaa !9
  store ptr %428, ptr %11, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %422, %418
  %430 = load ptr, ptr %10, align 8, !tbaa !9
  %431 = icmp ne ptr %430, null
  br i1 %431, label %432, label %435

432:                                              ; preds = %429
  %433 = load ptr, ptr %11, align 8, !tbaa !9
  %434 = icmp ne ptr %433, null
  br i1 %434, label %436, label %435

435:                                              ; preds = %432, %429
  call void @usage()
  br label %436

436:                                              ; preds = %435, %432
  %437 = load ptr, ptr @stdin, align 8, !tbaa !9
  %438 = call i32 @setvbuf(ptr noundef %437, ptr noundef null, i32 noundef 2, i64 noundef 0) #10
  %439 = icmp slt i32 %438, 0
  br i1 %439, label %440, label %443

440:                                              ; preds = %436
  %441 = load ptr, ptr @stderr, align 8, !tbaa !9
  %442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %441, ptr noundef @.str.121) #10
  call void @exit(i32 noundef 1) #11
  unreachable

443:                                              ; preds = %436
  %444 = load ptr, ptr @stdout, align 8, !tbaa !9
  %445 = call i32 @setvbuf(ptr noundef %444, ptr noundef null, i32 noundef 2, i64 noundef 0) #10
  %446 = icmp slt i32 %445, 0
  br i1 %446, label %447, label %450

447:                                              ; preds = %443
  %448 = load ptr, ptr @stderr, align 8, !tbaa !9
  %449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %448, ptr noundef @.str.122) #10
  call void @exit(i32 noundef 1) #11
  unreachable

450:                                              ; preds = %443
  call void @llvm.memset.p0.i64(ptr align 8 %6, i8 0, i64 48, i1 false)
  %451 = getelementptr inbounds %struct.addrinfo, ptr %6, i32 0, i32 1
  store i32 0, ptr %451, align 4, !tbaa !28
  %452 = getelementptr inbounds %struct.addrinfo, ptr %6, i32 0, i32 2
  store i32 1, ptr %452, align 8, !tbaa !30
  %453 = call ptr @signal(i32 noundef 13, ptr noundef inttoptr (i64 1 to ptr)) #10
  %454 = icmp eq ptr %453, inttoptr (i64 -1 to ptr)
  br i1 %454, label %455, label %458

455:                                              ; preds = %450
  %456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %456, ptr noundef @.str.123) #10
  call void @exit(i32 noundef 1) #11
  unreachable

458:                                              ; preds = %450
  %459 = load ptr, ptr %10, align 8, !tbaa !9
  %460 = load ptr, ptr %11, align 8, !tbaa !9
  %461 = call i32 @getaddrinfo(ptr noundef %459, ptr noundef %460, ptr noundef %6, ptr noundef %7)
  store i32 %461, ptr %8, align 4, !tbaa !5
  %462 = icmp slt i32 %461, 0
  br i1 %462, label %463, label %468

463:                                              ; preds = %458
  %464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %465 = load i32, ptr %8, align 4, !tbaa !5
  %466 = call ptr @gai_strerror(i32 noundef %465) #10
  %467 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %464, ptr noundef @.str.124, ptr noundef %466) #10
  call void @exit(i32 noundef 1) #11
  unreachable

468:                                              ; preds = %458
  %469 = load ptr, ptr %7, align 8, !tbaa !9
  %470 = getelementptr inbounds %struct.addrinfo, ptr %469, i32 0, i32 1
  %471 = load i32, ptr %470, align 4, !tbaa !28
  %472 = load ptr, ptr %7, align 8, !tbaa !9
  %473 = getelementptr inbounds %struct.addrinfo, ptr %472, i32 0, i32 2
  %474 = load i32, ptr %473, align 8, !tbaa !30
  %475 = load ptr, ptr %7, align 8, !tbaa !9
  %476 = getelementptr inbounds %struct.addrinfo, ptr %475, i32 0, i32 3
  %477 = load i32, ptr %476, align 4, !tbaa !31
  %478 = call i32 @socket(i32 noundef %471, i32 noundef %474, i32 noundef %477) #10
  store i32 %478, ptr %9, align 4, !tbaa !5
  %479 = icmp eq i32 %478, -1
  br i1 %479, label %480, label %486

480:                                              ; preds = %468
  %481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %482 = call ptr @__errno_location() #13
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = call ptr @strerror(i32 noundef %483) #10
  %485 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %481, ptr noundef @.str.125, ptr noundef %484) #10
  call void @exit(i32 noundef 1) #11
  unreachable

486:                                              ; preds = %468
  store i32 1, ptr %8, align 4, !tbaa !5
  %487 = load i32, ptr %9, align 4, !tbaa !5
  %488 = call i32 @setsockopt(i32 noundef %487, i32 noundef 1, i32 noundef 2, ptr noundef %8, i32 noundef 4) #10
  %489 = icmp slt i32 %488, 0
  br i1 %489, label %490, label %496

490:                                              ; preds = %486
  %491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %492 = call ptr @__errno_location() #13
  %493 = load i32, ptr %492, align 4, !tbaa !5
  %494 = call ptr @strerror(i32 noundef %493) #10
  %495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %491, ptr noundef @.str.126, ptr noundef %494) #10
  call void @exit(i32 noundef 1) #11
  unreachable

496:                                              ; preds = %486
  %497 = load i32, ptr %9, align 4, !tbaa !5
  %498 = load ptr, ptr %7, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.addrinfo, ptr %498, i32 0, i32 5
  %500 = load ptr, ptr %499, align 8, !tbaa !32
  %501 = load ptr, ptr %7, align 8, !tbaa !9
  %502 = getelementptr inbounds %struct.addrinfo, ptr %501, i32 0, i32 4
  %503 = load i32, ptr %502, align 8, !tbaa !33
  %504 = call i32 @bind(i32 noundef %497, ptr noundef %500, i32 noundef %503) #10
  %505 = icmp slt i32 %504, 0
  br i1 %505, label %506, label %512

506:                                              ; preds = %496
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = call ptr @__errno_location() #13
  %509 = load i32, ptr %508, align 4, !tbaa !5
  %510 = call ptr @strerror(i32 noundef %509) #10
  %511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %507, ptr noundef @.str.127, ptr noundef %510) #10
  call void @exit(i32 noundef 1) #11
  unreachable

512:                                              ; preds = %496
  %513 = load i32, ptr %9, align 4, !tbaa !5
  %514 = call i32 @listen(i32 noundef %513, i32 noundef 1) #10
  %515 = icmp eq i32 %514, -1
  br i1 %515, label %516, label %522

516:                                              ; preds = %512
  %517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %518 = call ptr @__errno_location() #13
  %519 = load i32, ptr %518, align 4, !tbaa !5
  %520 = call ptr @strerror(i32 noundef %519) #10
  %521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %517, ptr noundef @.str.128, ptr noundef %520) #10
  call void @exit(i32 noundef 1) #11
  unreachable

522:                                              ; preds = %512
  br label %523

523:                                              ; preds = %522
  %524 = call i32 @s2n_init()
  %525 = icmp slt i32 %524, 0
  br i1 %525, label %526, label %527

526:                                              ; preds = %523
  call void @print_s2n_error(ptr noundef @.str.129)
  call void @exit(i32 noundef 1) #11
  unreachable

527:                                              ; preds = %523
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  %530 = call ptr @s2n_libcrypto_get_version_name()
  %531 = call i32 (ptr, ...) @printf(ptr noundef @.str.130, ptr noundef %530)
  %532 = load i32, ptr %22, align 4, !tbaa !5
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %549

534:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %535

535:                                              ; preds = %534
  %536 = call i32 @s2n_get_fips_mode(ptr noundef %34)
  %537 = icmp slt i32 %536, 0
  br i1 %537, label %538, label %539

538:                                              ; preds = %535
  call void @print_s2n_error(ptr noundef @.str.131)
  call void @exit(i32 noundef 1) #11
  unreachable

539:                                              ; preds = %535
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540
  %542 = load i32, ptr %34, align 4, !tbaa !5
  %543 = icmp ne i32 %542, 1
  br i1 %543, label %544, label %547

544:                                              ; preds = %541
  %545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %545, ptr noundef @.str.132) #10
  call void @exit(i32 noundef 1) #11
  unreachable

547:                                              ; preds = %541
  %548 = call i32 (ptr, ...) @printf(ptr noundef @.str.133)
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %549

549:                                              ; preds = %547, %529
  %550 = load ptr, ptr %10, align 8, !tbaa !9
  %551 = load ptr, ptr %11, align 8, !tbaa !9
  %552 = call i32 (ptr, ...) @printf(ptr noundef @.str.134, ptr noundef %550, ptr noundef %551)
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %553 = call ptr @s2n_config_new()
  store ptr %553, ptr %35, align 8, !tbaa !9
  %554 = load ptr, ptr %35, align 8, !tbaa !9
  %555 = icmp ne ptr %554, null
  br i1 %555, label %557, label %556

556:                                              ; preds = %549
  call void @print_s2n_error(ptr noundef @.str.135)
  call void @exit(i32 noundef 1) #11
  unreachable

557:                                              ; preds = %549
  %558 = load i32, ptr %17, align 4, !tbaa !5
  %559 = load i32, ptr %18, align 4, !tbaa !5
  %560 = icmp ne i32 %558, %559
  br i1 %560, label %561, label %566

561:                                              ; preds = %557
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = load i32, ptr %17, align 4, !tbaa !5
  %564 = load i32, ptr %18, align 4, !tbaa !5
  %565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %562, ptr noundef @.str.136, i32 noundef %563, i32 noundef %564) #10
  call void @exit(i32 noundef 1) #11
  unreachable

566:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !5
  %567 = load i32, ptr %17, align 4, !tbaa !5
  %568 = icmp eq i32 %567, 0
  br i1 %568, label %569, label %572

569:                                              ; preds = %566
  %570 = getelementptr inbounds [50 x ptr], ptr %19, i64 0, i64 0
  store ptr @default_certificate_chain, ptr %570, align 16, !tbaa !9
  %571 = getelementptr inbounds [50 x ptr], ptr %20, i64 0, i64 0
  store ptr @default_private_key, ptr %571, align 16, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !5
  br label %574

572:                                              ; preds = %566
  %573 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %573, ptr %36, align 4, !tbaa !5
  br label %574

574:                                              ; preds = %572, %569
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  store i32 0, ptr %37, align 4, !tbaa !5
  br label %575

575:                                              ; preds = %652, %574
  %576 = load i32, ptr %37, align 4, !tbaa !5
  %577 = load i32, ptr %36, align 4, !tbaa !5
  %578 = icmp slt i32 %576, %577
  br i1 %578, label %580, label %579

579:                                              ; preds = %575
  store i32 11, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %655

580:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %581 = call ptr @s2n_cert_chain_and_key_new()
  store ptr %581, ptr %38, align 8, !tbaa !9
  br label %582

582:                                              ; preds = %580
  %583 = load ptr, ptr %38, align 8, !tbaa !9
  %584 = load i32, ptr %37, align 4, !tbaa !5
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds [50 x ptr], ptr %19, i64 0, i64 %585
  %587 = load ptr, ptr %586, align 8, !tbaa !9
  %588 = load i32, ptr %37, align 4, !tbaa !5
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds [50 x ptr], ptr %20, i64 0, i64 %589
  %591 = load ptr, ptr %590, align 8, !tbaa !9
  %592 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef %583, ptr noundef %587, ptr noundef %591)
  %593 = icmp slt i32 %592, 0
  br i1 %593, label %594, label %595

594:                                              ; preds = %582
  call void @print_s2n_error(ptr noundef @.str.137)
  call void @exit(i32 noundef 1) #11
  unreachable

595:                                              ; preds = %582
  br label %596

596:                                              ; preds = %595
  br label %597

597:                                              ; preds = %596
  %598 = load ptr, ptr %12, align 8, !tbaa !9
  %599 = icmp ne ptr %598, null
  br i1 %599, label %600, label %642

600:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %601 = load ptr, ptr %12, align 8, !tbaa !9
  %602 = call i32 (ptr, i32, ...) @open(ptr noundef %601, i32 noundef 0)
  store i32 %602, ptr %39, align 4, !tbaa !5
  %603 = load i32, ptr %39, align 4, !tbaa !5
  %604 = icmp slt i32 %603, 0
  br i1 %604, label %605, label %611

605:                                              ; preds = %600
  %606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %607 = call ptr @__errno_location() #13
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = call ptr @strerror(i32 noundef %608) #10
  %610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %606, ptr noundef @.str.138, ptr noundef %609) #10
  call void @exit(i32 noundef 1) #11
  unreachable

611:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 144, ptr %40) #10
  call void @llvm.memset.p0.i64(ptr align 8 %40, i8 0, i64 144, i1 false)
  %612 = load i32, ptr %39, align 4, !tbaa !5
  %613 = call i32 @fstat(i32 noundef %612, ptr noundef %40) #10
  %614 = icmp slt i32 %613, 0
  br i1 %614, label %615, label %621

615:                                              ; preds = %611
  %616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %617 = call ptr @__errno_location() #13
  %618 = load i32, ptr %617, align 4, !tbaa !5
  %619 = call ptr @strerror(i32 noundef %618) #10
  %620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %616, ptr noundef @.str.139, ptr noundef %619) #10
  call void @exit(i32 noundef 1) #11
  unreachable

621:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %622 = getelementptr inbounds %struct.stat, ptr %40, i32 0, i32 8
  %623 = load i64, ptr %622, align 8, !tbaa !34
  %624 = load i32, ptr %39, align 4, !tbaa !5
  %625 = call ptr @mmap(ptr noundef null, i64 noundef %623, i32 noundef 1, i32 noundef 2, i32 noundef %624, i64 noundef 0) #10
  store ptr %625, ptr %41, align 8, !tbaa !9
  %626 = load ptr, ptr %38, align 8, !tbaa !9
  %627 = load ptr, ptr %41, align 8, !tbaa !9
  %628 = getelementptr inbounds %struct.stat, ptr %40, i32 0, i32 8
  %629 = load i64, ptr %628, align 8, !tbaa !34
  %630 = trunc i64 %629 to i32
  %631 = call i32 @s2n_cert_chain_and_key_set_ocsp_data(ptr noundef %626, ptr noundef %627, i32 noundef %630)
  %632 = icmp slt i32 %631, 0
  br i1 %632, label %633, label %639

633:                                              ; preds = %621
  %634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror(i32 noundef %636, ptr noundef @.str.141)
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %634, ptr noundef @.str.140, ptr noundef %637) #10
  call void @exit(i32 noundef 1) #11
  unreachable

639:                                              ; preds = %621
  %640 = load i32, ptr %39, align 4, !tbaa !5
  %641 = call i32 @close(i32 noundef %640)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %642

642:                                              ; preds = %639, %597
  br label %643

643:                                              ; preds = %642
  %644 = load ptr, ptr %35, align 8, !tbaa !9
  %645 = load ptr, ptr %38, align 8, !tbaa !9
  %646 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %644, ptr noundef %645)
  %647 = icmp slt i32 %646, 0
  br i1 %647, label %648, label %649

648:                                              ; preds = %643
  call void @print_s2n_error(ptr noundef @.str.142)
  call void @exit(i32 noundef 1) #11
  unreachable

649:                                              ; preds = %643
  br label %650

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %652

652:                                              ; preds = %651
  %653 = load i32, ptr %37, align 4, !tbaa !5
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr %37, align 4, !tbaa !5
  br label %575, !llvm.loop !37

655:                                              ; preds = %579
  %656 = load i32, ptr %26, align 4, !tbaa !5
  %657 = load ptr, ptr %35, align 8, !tbaa !9
  %658 = load ptr, ptr %14, align 8, !tbaa !9
  %659 = load ptr, ptr %13, align 8, !tbaa !9
  %660 = call i32 @s2n_set_common_server_config(i32 noundef %656, ptr noundef %657, ptr noundef byval(%struct.conn_settings) align 8 %21, ptr noundef %658, ptr noundef %659)
  %661 = load i32, ptr %23, align 4, !tbaa !5
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %663, label %669

663:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 152, ptr %42) #10
  %664 = getelementptr inbounds %struct.sigaction, ptr %42, i32 0, i32 0
  store ptr inttoptr (i64 1 to ptr), ptr %664, align 8, !tbaa !39
  %665 = getelementptr inbounds %struct.sigaction, ptr %42, i32 0, i32 2
  store i32 2, ptr %665, align 8, !tbaa !40
  %666 = getelementptr inbounds %struct.sigaction, ptr %42, i32 0, i32 1
  %667 = call i32 @sigemptyset(ptr noundef %666) #10
  %668 = call i32 @sigaction(i32 noundef 17, ptr noundef %42, ptr noundef null) #10
  call void @llvm.lifetime.end.p0(i64 152, ptr %42) #10
  br label %669

669:                                              ; preds = %663, %655
  %670 = load ptr, ptr %15, align 8, !tbaa !9
  %671 = icmp ne ptr %670, null
  br i1 %671, label %672, label %683

672:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %673 = load ptr, ptr %15, align 8, !tbaa !9
  store ptr %673, ptr %43, align 8, !tbaa !9
  br label %674

674:                                              ; preds = %672
  %675 = load ptr, ptr %35, align 8, !tbaa !9
  %676 = getelementptr inbounds [1 x ptr], ptr %43, i64 0, i64 0
  %677 = call i32 @s2n_config_set_protocol_preferences(ptr noundef %675, ptr noundef %676, i32 noundef 1)
  %678 = icmp slt i32 %677, 0
  br i1 %678, label %679, label %680

679:                                              ; preds = %674
  call void @print_s2n_error(ptr noundef @.str.143)
  call void @exit(i32 noundef 1) #11
  unreachable

680:                                              ; preds = %674
  br label %681

681:                                              ; preds = %680
  br label %682

682:                                              ; preds = %681
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %683

683:                                              ; preds = %682, %669
  %684 = load i32, ptr %27, align 4, !tbaa !5
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %696

686:                                              ; preds = %683
  br label %687

687:                                              ; preds = %686
  %688 = load ptr, ptr %35, align 8, !tbaa !9
  %689 = load i32, ptr %27, align 4, !tbaa !5
  %690 = call i32 @s2n_config_set_send_buffer_size(ptr noundef %688, i32 noundef %689)
  %691 = icmp slt i32 %690, 0
  br i1 %691, label %692, label %693

692:                                              ; preds = %687
  call void @print_s2n_error(ptr noundef @.str.144)
  call void @exit(i32 noundef 1) #11
  unreachable

693:                                              ; preds = %687
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694
  br label %696

696:                                              ; preds = %695, %683
  %697 = load i8, ptr %28, align 1, !tbaa !16, !range !43, !noundef !44
  %698 = trunc i8 %697 to i1
  br i1 %698, label %699, label %708

699:                                              ; preds = %696
  br label %700

700:                                              ; preds = %699
  %701 = load ptr, ptr %35, align 8, !tbaa !9
  %702 = call i32 @s2n_config_set_npn(ptr noundef %701, i1 noundef zeroext true)
  %703 = icmp slt i32 %702, 0
  br i1 %703, label %704, label %705

704:                                              ; preds = %700
  call void @print_s2n_error(ptr noundef @.str.145)
  call void @exit(i32 noundef 1) #11
  unreachable

705:                                              ; preds = %700
  br label %706

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707, %696
  %709 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 5
  %710 = load ptr, ptr %709, align 8, !tbaa !26
  %711 = icmp ne ptr %710, null
  br i1 %711, label %712, label %721

712:                                              ; preds = %708
  br label %713

713:                                              ; preds = %712
  %714 = load ptr, ptr %35, align 8, !tbaa !9
  %715 = call i32 @s2n_config_set_serialization_version(ptr noundef %714, i32 noundef 1)
  %716 = icmp slt i32 %715, 0
  br i1 %716, label %717, label %718

717:                                              ; preds = %713
  call void @print_s2n_error(ptr noundef @.str.146)
  call void @exit(i32 noundef 1) #11
  unreachable

718:                                              ; preds = %713
  br label %719

719:                                              ; preds = %718
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720, %708
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  store ptr null, ptr %44, align 8, !tbaa !9
  %722 = load ptr, ptr %16, align 8, !tbaa !9
  %723 = icmp ne ptr %722, null
  br i1 %723, label %724, label %746

724:                                              ; preds = %721
  %725 = load ptr, ptr %16, align 8, !tbaa !9
  %726 = call noalias ptr @fopen(ptr noundef %725, ptr noundef @.str.147)
  store ptr %726, ptr %44, align 8, !tbaa !9
  br label %727

727:                                              ; preds = %724
  %728 = load ptr, ptr %44, align 8, !tbaa !9
  %729 = icmp eq ptr %728, null
  %730 = zext i1 %729 to i64
  %731 = select i1 %729, i32 -1, i32 0
  %732 = icmp slt i32 %731, 0
  br i1 %732, label %733, label %734

733:                                              ; preds = %727
  call void @print_s2n_error(ptr noundef @.str.148)
  call void @exit(i32 noundef 1) #11
  unreachable

734:                                              ; preds = %727
  br label %735

735:                                              ; preds = %734
  br label %736

736:                                              ; preds = %735
  br label %737

737:                                              ; preds = %736
  %738 = load ptr, ptr %35, align 8, !tbaa !9
  %739 = load ptr, ptr %44, align 8, !tbaa !9
  %740 = call i32 @s2n_config_set_key_log_cb(ptr noundef %738, ptr noundef @key_log_callback, ptr noundef %739)
  %741 = icmp slt i32 %740, 0
  br i1 %741, label %742, label %743

742:                                              ; preds = %737
  call void @print_s2n_error(ptr noundef @.str.149)
  call void @exit(i32 noundef 1) #11
  unreachable

743:                                              ; preds = %737
  br label %744

744:                                              ; preds = %743
  br label %745

745:                                              ; preds = %744
  br label %746

746:                                              ; preds = %745, %721
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  store i32 0, ptr %45, align 4, !tbaa !5
  br label %747

747:                                              ; preds = %826, %823, %746
  %748 = load i32, ptr %9, align 4, !tbaa !5
  %749 = load ptr, ptr %7, align 8, !tbaa !9
  %750 = getelementptr inbounds %struct.addrinfo, ptr %749, i32 0, i32 5
  %751 = load ptr, ptr %750, align 8, !tbaa !32
  %752 = load ptr, ptr %7, align 8, !tbaa !9
  %753 = getelementptr inbounds %struct.addrinfo, ptr %752, i32 0, i32 4
  %754 = call i32 @accept(i32 noundef %748, ptr noundef %751, ptr noundef %753)
  store i32 %754, ptr %45, align 4, !tbaa !5
  %755 = icmp sgt i32 %754, 0
  br i1 %755, label %756, label %827

756:                                              ; preds = %747
  %757 = load i32, ptr %24, align 4, !tbaa !5
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %774

759:                                              ; preds = %756
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %760 = load i32, ptr %9, align 4, !tbaa !5
  %761 = call i32 (i32, i32, ...) @fcntl(i32 noundef %760, i32 noundef 3, i32 noundef 0)
  store i32 %761, ptr %46, align 4, !tbaa !5
  %762 = load i32, ptr %45, align 4, !tbaa !5
  %763 = load i32, ptr %46, align 4, !tbaa !5
  %764 = or i32 %763, 2048
  %765 = call i32 (i32, i32, ...) @fcntl(i32 noundef %762, i32 noundef 4, i32 noundef %764)
  %766 = icmp slt i32 %765, 0
  br i1 %766, label %767, label %773

767:                                              ; preds = %759
  %768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %769 = call ptr @__errno_location() #13
  %770 = load i32, ptr %769, align 4, !tbaa !5
  %771 = call ptr @strerror(i32 noundef %770) #10
  %772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %768, ptr noundef @.str.150, ptr noundef %771) #10
  call void @exit(i32 noundef 1) #11
  unreachable

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

774:                                              ; preds = %773, %756
  %775 = load i32, ptr %23, align 4, !tbaa !5
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %806, label %777

777:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  %778 = load i32, ptr %45, align 4, !tbaa !5
  %779 = load ptr, ptr %35, align 8, !tbaa !9
  %780 = call i32 @handle_connection(i32 noundef %778, ptr noundef %779, ptr noundef byval(%struct.conn_settings) align 8 %21)
  store i32 %780, ptr %47, align 4, !tbaa !5
  %781 = load i32, ptr %45, align 4, !tbaa !5
  %782 = call i32 @close(i32 noundef %781)
  %783 = load i32, ptr %47, align 4, !tbaa !5
  %784 = icmp slt i32 %783, 0
  br i1 %784, label %785, label %787

785:                                              ; preds = %777
  %786 = load i32, ptr %47, align 4, !tbaa !5
  call void @exit(i32 noundef %786) #11
  unreachable

787:                                              ; preds = %777
  %788 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 2
  %789 = load i32, ptr %788, align 8, !tbaa !13
  %790 = icmp sgt i32 %789, 0
  br i1 %790, label %791, label %805

791:                                              ; preds = %787
  %792 = getelementptr inbounds %struct.conn_settings, ptr %21, i32 0, i32 2
  %793 = load i32, ptr %792, align 8, !tbaa !13
  %794 = add nsw i32 %793, -1
  store i32 %794, ptr %792, align 8, !tbaa !13
  %795 = icmp eq i32 %793, 1
  br i1 %795, label %796, label %804

796:                                              ; preds = %791
  br label %797

797:                                              ; preds = %796
  %798 = call i32 @s2n_cleanup()
  %799 = icmp slt i32 %798, 0
  br i1 %799, label %800, label %801

800:                                              ; preds = %797
  call void @print_s2n_error(ptr noundef @.str.151)
  call void @exit(i32 noundef 1) #11
  unreachable

801:                                              ; preds = %797
  br label %802

802:                                              ; preds = %801
  br label %803

803:                                              ; preds = %802
  call void @exit(i32 noundef 0) #11
  unreachable

804:                                              ; preds = %791
  br label %805

805:                                              ; preds = %804, %787
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %826

806:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %807 = call i32 @fork() #10
  store i32 %807, ptr %48, align 4, !tbaa !5
  %808 = load i32, ptr %48, align 4, !tbaa !5
  %809 = icmp eq i32 %808, 0
  br i1 %809, label %810, label %817

810:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  %811 = load i32, ptr %45, align 4, !tbaa !5
  %812 = load ptr, ptr %35, align 8, !tbaa !9
  %813 = call i32 @handle_connection(i32 noundef %811, ptr noundef %812, ptr noundef byval(%struct.conn_settings) align 8 %21)
  store i32 %813, ptr %49, align 4, !tbaa !5
  %814 = load i32, ptr %45, align 4, !tbaa !5
  %815 = call i32 @close(i32 noundef %814)
  %816 = load i32, ptr %49, align 4, !tbaa !5
  call void @_exit(i32 noundef %816) #14
  unreachable

817:                                              ; preds = %806
  %818 = load i32, ptr %48, align 4, !tbaa !5
  %819 = icmp eq i32 %818, -1
  br i1 %819, label %820, label %823

820:                                              ; preds = %817
  %821 = load i32, ptr %45, align 4, !tbaa !5
  %822 = call i32 @close(i32 noundef %821)
  call void @print_s2n_error(ptr noundef @.str.152)
  call void @exit(i32 noundef 1) #11
  unreachable

823:                                              ; preds = %817
  %824 = load i32, ptr %45, align 4, !tbaa !5
  %825 = call i32 @close(i32 noundef %824)
  store i32 30, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %747

826:                                              ; preds = %805
  br label %747, !llvm.loop !45

827:                                              ; preds = %747
  %828 = load ptr, ptr %44, align 8, !tbaa !9
  %829 = icmp ne ptr %828, null
  br i1 %829, label %830, label %833

830:                                              ; preds = %827
  %831 = load ptr, ptr %44, align 8, !tbaa !9
  %832 = call i32 @fclose(ptr noundef %831)
  br label %833

833:                                              ; preds = %830, %827
  br label %834

834:                                              ; preds = %833
  %835 = call i32 @s2n_cleanup()
  %836 = icmp slt i32 %835, 0
  br i1 %836, label %837, label %838

837:                                              ; preds = %834
  call void @print_s2n_error(ptr noundef @.str.151)
  call void @exit(i32 noundef 1) #11
  unreachable

838:                                              ; preds = %834
  br label %839

839:                                              ; preds = %838
  br label %840

840:                                              ; preds = %839
  store i32 0, ptr %3, align 4
  store i32 1, ptr %32, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 1056, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 400, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 400, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %6) #10
  %841 = load i32, ptr %3, align 4
  ret i32 %841

842:                                              ; preds = %389
  unreachable
}

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

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

declare ptr @load_file_to_cstring(ptr noundef) #4

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #6

; Function Attrs: nounwind
declare i64 @strtoul(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind
declare i64 @strtoimax(ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind
declare i32 @setvbuf(ptr noundef, ptr noundef, i32 noundef, i64 noundef) #1

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

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

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

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

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

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

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

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

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

declare i32 @s2n_init() #4

declare i32 @printf(ptr noundef, ...) #4

declare ptr @s2n_libcrypto_get_version_name() #4

declare i32 @s2n_get_fips_mode(ptr noundef) #4

declare ptr @s2n_config_new() #4

declare ptr @s2n_cert_chain_and_key_new() #4

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

declare i32 @open(ptr noundef, i32 noundef, ...) #4

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

; Function Attrs: nounwind
declare ptr @mmap(ptr noundef, i64 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef) #1

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

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) #8

declare i32 @close(i32 noundef) #4

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

declare i32 @s2n_set_common_server_config(i32 noundef, ptr noundef, ptr noundef byval(%struct.conn_settings) align 8, ptr noundef, ptr noundef) #4

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

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

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

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

declare i32 @s2n_config_set_npn(ptr noundef, i1 noundef zeroext) #4

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

declare noalias ptr @fopen(ptr noundef, ptr noundef) #4

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

declare i32 @key_log_callback(ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

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

declare i32 @fcntl(i32 noundef, i32 noundef, ...) #4

declare i32 @s2n_cleanup() #4

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

; Function Attrs: noreturn
declare void @_exit(i32 noundef) #9

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

!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 = !{!"long", !7, i64 0}
!13 = !{!14, !6, i64 8}
!14 = !{!"conn_settings", !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 4, !6, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !7, i64 48, !12, i64 128}
!15 = !{!14, !12, i64 128}
!16 = !{!17, !17, i64 0}
!17 = !{!"_Bool", !7, i64 0}
!18 = !{!19, !10, i64 0}
!19 = !{!"option", !10, i64 0, !6, i64 8, !10, i64 16, !6, i64 24}
!20 = !{!19, !6, i64 8}
!21 = !{!19, !10, i64 16}
!22 = !{!19, !6, i64 24}
!23 = !{!14, !10, i64 16}
!24 = !{!14, !10, i64 24}
!25 = !{!14, !6, i64 4}
!26 = !{!14, !10, i64 32}
!27 = !{!14, !10, i64 40}
!28 = !{!29, !6, i64 4}
!29 = !{!"addrinfo", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!30 = !{!29, !6, i64 8}
!31 = !{!29, !6, i64 12}
!32 = !{!29, !10, i64 24}
!33 = !{!29, !6, i64 16}
!34 = !{!35, !12, i64 48}
!35 = !{!"stat", !12, i64 0, !12, i64 8, !12, i64 16, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !36, i64 72, !36, i64 88, !36, i64 104, !7, i64 120}
!36 = !{!"timespec", !12, i64 0, !12, i64 8}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!7, !7, i64 0}
!40 = !{!41, !6, i64 136}
!41 = !{!"sigaction", !7, i64 0, !42, i64 8, !6, i64 136, !10, i64 144}
!42 = !{!"", !7, i64 0}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = distinct !{!45, !38}


; 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.conn_settings = type { i16, i32, i32, ptr, ptr, ptr, ptr, [10 x ptr], i64 }
%struct.addrinfo = type { i32, i32, i32, i32, i32, ptr, ptr, ptr }
%struct.option = type { ptr, i32, ptr, i32 }
%struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] }
%struct.timespec = type { i64, i64 }
%struct.sigaction = type { %union.anon, %struct.__sigset_t, i32, ptr }
%union.anon = type { ptr }
%struct.__sigset_t = type { [16 x i64] }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.80 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [26 x i8], align 1
@optarg = external local_unnamed_addr global ptr, align 8
@.str.114 = external hidden unnamed_addr constant [43 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.115 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [73 x i8], align 1
@optind = external local_unnamed_addr global i32, align 4
@stdin = external local_unnamed_addr global ptr, align 8
@.str.121 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.125 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [55 x i8], align 1
@default_certificate_chain = external hidden global [3297 x i8], align 16
@default_private_key = external hidden global [1649 x i8], align 16
@.str.137 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [34 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.141 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [56 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @usage() local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @handle_connection(i32 noundef, ptr noundef, ptr noundef byval(%struct.conn_settings) align 8) local_unnamed_addr #0

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

declare void @print_s2n_error(ptr noundef) local_unnamed_addr #4

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = alloca %struct.addrinfo, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca [50 x ptr], align 16
  %7 = alloca [50 x ptr], align 16
  %8 = alloca %struct.conn_settings, align 8
  %9 = alloca i32, align 4
  %10 = alloca [33 x %struct.option], align 16
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %struct.stat, align 8
  %14 = alloca %struct.sigaction, align 8
  %15 = alloca [1 x ptr], align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #13
  store ptr null, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #13
  store i32 0, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %6) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(400) %6, i8 0, i64 400, i1 false)
  call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %7) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(400) %7, i8 0, i64 400, i1 false)
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %8) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %8, i8 0, i64 128, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #13
  store i32 0, ptr %9, align 4, !tbaa !9
  store i16 192, ptr %8, align 8
  %16 = getelementptr inbounds i8, ptr %8, i64 8
  store i32 -1, ptr %16, align 8, !tbaa !11
  %17 = getelementptr inbounds i8, ptr %8, i64 128
  store i64 0, ptr %17, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1056, ptr nonnull %10) #13
  store ptr @.str.81, ptr %10, align 16, !tbaa !15
  %18 = getelementptr inbounds i8, ptr %10, i64 8
  store i32 1, ptr %18, align 8, !tbaa !17
  %19 = getelementptr inbounds i8, ptr %10, i64 16
  store ptr null, ptr %19, align 16, !tbaa !18
  %20 = getelementptr inbounds i8, ptr %10, i64 24
  store i32 99, ptr %20, align 8, !tbaa !19
  %21 = getelementptr inbounds i8, ptr %10, i64 32
  store ptr @.str.82, ptr %21, align 16, !tbaa !15
  %22 = getelementptr inbounds i8, ptr %10, i64 40
  store i32 0, ptr %22, align 8, !tbaa !17
  %23 = getelementptr inbounds i8, ptr %10, i64 48
  store ptr null, ptr %23, align 16, !tbaa !18
  %24 = getelementptr inbounds i8, ptr %10, i64 56
  store i32 101, ptr %24, align 8, !tbaa !19
  %25 = getelementptr inbounds i8, ptr %10, i64 64
  store ptr @.str.83, ptr %25, align 16, !tbaa !15
  %26 = getelementptr inbounds i8, ptr %10, i64 72
  store i32 0, ptr %26, align 8, !tbaa !17
  %27 = getelementptr inbounds i8, ptr %10, i64 80
  store ptr null, ptr %27, align 16, !tbaa !18
  %28 = getelementptr inbounds i8, ptr %10, i64 88
  store i32 102, ptr %28, align 8, !tbaa !19
  %29 = getelementptr inbounds i8, ptr %10, i64 96
  store ptr @.str.84, ptr %29, align 16, !tbaa !15
  %30 = getelementptr inbounds i8, ptr %10, i64 104
  store i32 0, ptr %30, align 8, !tbaa !17
  %31 = getelementptr inbounds i8, ptr %10, i64 112
  store ptr null, ptr %31, align 16, !tbaa !18
  %32 = getelementptr inbounds i8, ptr %10, i64 120
  store i32 104, ptr %32, align 8, !tbaa !19
  %33 = getelementptr inbounds i8, ptr %10, i64 128
  store ptr @.str.85, ptr %33, align 16, !tbaa !15
  %34 = getelementptr inbounds i8, ptr %10, i64 136
  store i32 1, ptr %34, align 8, !tbaa !17
  %35 = getelementptr inbounds i8, ptr %10, i64 144
  store ptr null, ptr %35, align 16, !tbaa !18
  %36 = getelementptr inbounds i8, ptr %10, i64 152
  store i32 107, ptr %36, align 8, !tbaa !19
  %37 = getelementptr inbounds i8, ptr %10, i64 160
  store ptr @.str.86, ptr %37, align 16, !tbaa !15
  %38 = getelementptr inbounds i8, ptr %10, i64 168
  store i32 0, ptr %38, align 8, !tbaa !17
  %39 = getelementptr inbounds i8, ptr %10, i64 176
  store ptr null, ptr %39, align 16, !tbaa !18
  %40 = getelementptr inbounds i8, ptr %10, i64 184
  store i32 108, ptr %40, align 8, !tbaa !19
  %41 = getelementptr inbounds i8, ptr %10, i64 192
  store ptr @.str.87, ptr %41, align 16, !tbaa !15
  %42 = getelementptr inbounds i8, ptr %10, i64 200
  store i32 0, ptr %42, align 8, !tbaa !17
  %43 = getelementptr inbounds i8, ptr %10, i64 208
  store ptr null, ptr %43, align 16, !tbaa !18
  %44 = getelementptr inbounds i8, ptr %10, i64 216
  store i32 109, ptr %44, align 8, !tbaa !19
  %45 = getelementptr inbounds i8, ptr %10, i64 224
  store ptr @.str.88, ptr %45, align 16, !tbaa !15
  %46 = getelementptr inbounds i8, ptr %10, i64 232
  store i32 0, ptr %46, align 8, !tbaa !17
  %47 = getelementptr inbounds i8, ptr %10, i64 240
  store ptr null, ptr %47, align 16, !tbaa !18
  %48 = getelementptr inbounds i8, ptr %10, i64 248
  store i32 110, ptr %48, align 8, !tbaa !19
  %49 = getelementptr inbounds i8, ptr %10, i64 256
  store ptr @.str.89, ptr %49, align 16, !tbaa !15
  %50 = getelementptr inbounds i8, ptr %10, i64 264
  store i32 1, ptr %50, align 8, !tbaa !17
  %51 = getelementptr inbounds i8, ptr %10, i64 272
  store ptr null, ptr %51, align 16, !tbaa !18
  %52 = getelementptr inbounds i8, ptr %10, i64 280
  store i32 111, ptr %52, align 8, !tbaa !19
  %53 = getelementptr inbounds i8, ptr %10, i64 288
  store ptr @.str.90, ptr %53, align 16, !tbaa !15
  %54 = getelementptr inbounds i8, ptr %10, i64 296
  store i32 0, ptr %54, align 8, !tbaa !17
  %55 = getelementptr inbounds i8, ptr %10, i64 304
  store ptr %9, ptr %55, align 16, !tbaa !18
  %56 = getelementptr inbounds i8, ptr %10, i64 312
  store i32 1, ptr %56, align 8, !tbaa !19
  %57 = getelementptr inbounds i8, ptr %10, i64 320
  store ptr @.str.91, ptr %57, align 16, !tbaa !15
  %58 = getelementptr inbounds i8, ptr %10, i64 328
  store i32 0, ptr %58, align 8, !tbaa !17
  %59 = getelementptr inbounds i8, ptr %10, i64 336
  store ptr null, ptr %59, align 16, !tbaa !18
  %60 = getelementptr inbounds i8, ptr %10, i64 344
  store i32 112, ptr %60, align 8, !tbaa !19
  %61 = getelementptr inbounds i8, ptr %10, i64 352
  store ptr @.str.92, ptr %61, align 16, !tbaa !15
  %62 = getelementptr inbounds i8, ptr %10, i64 360
  store i32 1, ptr %62, align 8, !tbaa !17
  %63 = getelementptr inbounds i8, ptr %10, i64 368
  store ptr null, ptr %63, align 16, !tbaa !18
  %64 = getelementptr inbounds i8, ptr %10, i64 376
  store i32 114, ptr %64, align 8, !tbaa !19
  %65 = getelementptr inbounds i8, ptr %10, i64 384
  store ptr @.str.93, ptr %65, align 16, !tbaa !15
  %66 = getelementptr inbounds i8, ptr %10, i64 392
  store i32 0, ptr %66, align 8, !tbaa !17
  %67 = getelementptr inbounds i8, ptr %10, i64 400
  store ptr null, ptr %67, align 16, !tbaa !18
  %68 = getelementptr inbounds i8, ptr %10, i64 408
  store i32 115, ptr %68, align 8, !tbaa !19
  %69 = getelementptr inbounds i8, ptr %10, i64 416
  store ptr @.str.94, ptr %69, align 16, !tbaa !15
  %70 = getelementptr inbounds i8, ptr %10, i64 424
  store i32 1, ptr %70, align 8, !tbaa !17
  %71 = getelementptr inbounds i8, ptr %10, i64 432
  store ptr null, ptr %71, align 16, !tbaa !18
  %72 = getelementptr inbounds i8, ptr %10, i64 440
  store i32 100, ptr %72, align 8, !tbaa !19
  %73 = getelementptr inbounds i8, ptr %10, i64 448
  store ptr @.str.95, ptr %73, align 16, !tbaa !15
  %74 = getelementptr inbounds i8, ptr %10, i64 456
  store i32 1, ptr %74, align 8, !tbaa !17
  %75 = getelementptr inbounds i8, ptr %10, i64 464
  store ptr null, ptr %75, align 16, !tbaa !18
  %76 = getelementptr inbounds i8, ptr %10, i64 472
  store i32 116, ptr %76, align 8, !tbaa !19
  %77 = getelementptr inbounds i8, ptr %10, i64 480
  store ptr @.str.96, ptr %77, align 16, !tbaa !15
  %78 = getelementptr inbounds i8, ptr %10, i64 488
  store i32 0, ptr %78, align 8, !tbaa !17
  %79 = getelementptr inbounds i8, ptr %10, i64 496
  store ptr null, ptr %79, align 16, !tbaa !18
  %80 = getelementptr inbounds i8, ptr %10, i64 504
  store i32 105, ptr %80, align 8, !tbaa !19
  %81 = getelementptr inbounds i8, ptr %10, i64 512
  store ptr @.str.97, ptr %81, align 16, !tbaa !15
  %82 = getelementptr inbounds i8, ptr %10, i64 520
  store i32 1, ptr %82, align 8, !tbaa !17
  %83 = getelementptr inbounds i8, ptr %10, i64 528
  store ptr null, ptr %83, align 16, !tbaa !18
  %84 = getelementptr inbounds i8, ptr %10, i64 536
  store i32 97, ptr %84, align 8, !tbaa !19
  %85 = getelementptr inbounds i8, ptr %10, i64 544
  store ptr @.str.98, ptr %85, align 16, !tbaa !15
  %86 = getelementptr inbounds i8, ptr %10, i64 552
  store i32 1, ptr %86, align 8, !tbaa !17
  %87 = getelementptr inbounds i8, ptr %10, i64 560
  store ptr null, ptr %87, align 16, !tbaa !18
  %88 = getelementptr inbounds i8, ptr %10, i64 568
  store i32 1001, ptr %88, align 8, !tbaa !19
  %89 = getelementptr inbounds i8, ptr %10, i64 576
  store ptr @.str.99, ptr %89, align 16, !tbaa !15
  %90 = getelementptr inbounds i8, ptr %10, i64 584
  store i32 1, ptr %90, align 8, !tbaa !17
  %91 = getelementptr inbounds i8, ptr %10, i64 592
  store ptr null, ptr %91, align 16, !tbaa !18
  %92 = getelementptr inbounds i8, ptr %10, i64 600
  store i32 1002, ptr %92, align 8, !tbaa !19
  %93 = getelementptr inbounds i8, ptr %10, i64 608
  store ptr @.str.100, ptr %93, align 16, !tbaa !15
  %94 = getelementptr inbounds i8, ptr %10, i64 616
  store i32 0, ptr %94, align 8, !tbaa !17
  %95 = getelementptr inbounds i8, ptr %10, i64 624
  store ptr null, ptr %95, align 16, !tbaa !18
  %96 = getelementptr inbounds i8, ptr %10, i64 632
  store i32 84, ptr %96, align 8, !tbaa !19
  %97 = getelementptr inbounds i8, ptr %10, i64 640
  store ptr @.str.101, ptr %97, align 16, !tbaa !15
  %98 = getelementptr inbounds i8, ptr %10, i64 648
  store i32 0, ptr %98, align 8, !tbaa !17
  %99 = getelementptr inbounds i8, ptr %10, i64 656
  store ptr null, ptr %99, align 16, !tbaa !18
  %100 = getelementptr inbounds i8, ptr %10, i64 664
  store i32 67, ptr %100, align 8, !tbaa !19
  %101 = getelementptr inbounds i8, ptr %10, i64 672
  store ptr @.str.102, ptr %101, align 16, !tbaa !15
  %102 = getelementptr inbounds i8, ptr %10, i64 680
  store i32 2, ptr %102, align 8, !tbaa !17
  %103 = getelementptr inbounds i8, ptr %10, i64 688
  store ptr null, ptr %103, align 16, !tbaa !18
  %104 = getelementptr inbounds i8, ptr %10, i64 696
  store i32 88, ptr %104, align 8, !tbaa !19
  %105 = getelementptr inbounds i8, ptr %10, i64 704
  store ptr @.str.103, ptr %105, align 16, !tbaa !15
  %106 = getelementptr inbounds i8, ptr %10, i64 712
  store i32 0, ptr %106, align 8, !tbaa !17
  %107 = getelementptr inbounds i8, ptr %10, i64 720
  store ptr null, ptr %107, align 16, !tbaa !18
  %108 = getelementptr inbounds i8, ptr %10, i64 728
  store i32 51, ptr %108, align 8, !tbaa !19
  %109 = getelementptr inbounds i8, ptr %10, i64 736
  store ptr @.str.104, ptr %109, align 16, !tbaa !15
  %110 = getelementptr inbounds i8, ptr %10, i64 744
  store i32 0, ptr %110, align 8, !tbaa !17
  %111 = getelementptr inbounds i8, ptr %10, i64 752
  store ptr null, ptr %111, align 16, !tbaa !18
  %112 = getelementptr inbounds i8, ptr %10, i64 760
  store i32 119, ptr %112, align 8, !tbaa !19
  %113 = getelementptr inbounds i8, ptr %10, i64 768
  store ptr @.str.105, ptr %113, align 16, !tbaa !15
  %114 = getelementptr inbounds i8, ptr %10, i64 776
  store i32 1, ptr %114, align 8, !tbaa !17
  %115 = getelementptr inbounds i8, ptr %10, i64 784
  store ptr null, ptr %115, align 16, !tbaa !18
  %116 = getelementptr inbounds i8, ptr %10, i64 792
  store i32 98, ptr %116, align 8, !tbaa !19
  %117 = getelementptr inbounds i8, ptr %10, i64 800
  store ptr @.str.106, ptr %117, align 16, !tbaa !15
  %118 = getelementptr inbounds i8, ptr %10, i64 808
  store i32 1, ptr %118, align 8, !tbaa !17
  %119 = getelementptr inbounds i8, ptr %10, i64 816
  store ptr null, ptr %119, align 16, !tbaa !18
  %120 = getelementptr inbounds i8, ptr %10, i64 824
  store i32 65, ptr %120, align 8, !tbaa !19
  %121 = getelementptr inbounds i8, ptr %10, i64 832
  store ptr @.str.107, ptr %121, align 16, !tbaa !15
  %122 = getelementptr inbounds i8, ptr %10, i64 840
  store i32 0, ptr %122, align 8, !tbaa !17
  %123 = getelementptr inbounds i8, ptr %10, i64 848
  store ptr null, ptr %123, align 16, !tbaa !18
  %124 = getelementptr inbounds i8, ptr %10, i64 856
  store i32 78, ptr %124, align 8, !tbaa !19
  %125 = getelementptr inbounds i8, ptr %10, i64 864
  store ptr @.str.108, ptr %125, align 16, !tbaa !15
  %126 = getelementptr inbounds i8, ptr %10, i64 872
  store i32 0, ptr %126, align 8, !tbaa !17
  %127 = getelementptr inbounds i8, ptr %10, i64 880
  store ptr null, ptr %127, align 16, !tbaa !18
  %128 = getelementptr inbounds i8, ptr %10, i64 888
  store i32 66, ptr %128, align 8, !tbaa !19
  %129 = getelementptr inbounds i8, ptr %10, i64 896
  store ptr @.str.109, ptr %129, align 16, !tbaa !15
  %130 = getelementptr inbounds i8, ptr %10, i64 904
  store i32 1, ptr %130, align 8, !tbaa !17
  %131 = getelementptr inbounds i8, ptr %10, i64 912
  store ptr null, ptr %131, align 16, !tbaa !18
  %132 = getelementptr inbounds i8, ptr %10, i64 920
  store i32 76, ptr %132, align 8, !tbaa !19
  %133 = getelementptr inbounds i8, ptr %10, i64 928
  store ptr @.str.110, ptr %133, align 16, !tbaa !15
  %134 = getelementptr inbounds i8, ptr %10, i64 936
  store i32 1, ptr %134, align 8, !tbaa !17
  %135 = getelementptr inbounds i8, ptr %10, i64 944
  store ptr null, ptr %135, align 16, !tbaa !18
  %136 = getelementptr inbounds i8, ptr %10, i64 952
  store i32 80, ptr %136, align 8, !tbaa !19
  %137 = getelementptr inbounds i8, ptr %10, i64 960
  store ptr @.str.111, ptr %137, align 16, !tbaa !15
  %138 = getelementptr inbounds i8, ptr %10, i64 968
  store i32 1, ptr %138, align 8, !tbaa !17
  %139 = getelementptr inbounds i8, ptr %10, i64 976
  store ptr null, ptr %139, align 16, !tbaa !18
  %140 = getelementptr inbounds i8, ptr %10, i64 984
  store i32 69, ptr %140, align 8, !tbaa !19
  %141 = getelementptr inbounds i8, ptr %10, i64 992
  store ptr @.str.112, ptr %141, align 16, !tbaa !15
  %142 = getelementptr inbounds i8, ptr %10, i64 1000
  store i32 1, ptr %142, align 8, !tbaa !17
  %143 = getelementptr inbounds i8, ptr %10, i64 1008
  store ptr null, ptr %143, align 16, !tbaa !18
  %144 = getelementptr inbounds i8, ptr %10, i64 1016
  store i32 1000, ptr %144, align 8, !tbaa !19
  %145 = getelementptr inbounds i8, ptr %10, i64 1024
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %145, i8 0, i64 32, i1 false)
  %146 = getelementptr inbounds i8, ptr %8, i64 48
  %147 = getelementptr inbounds i8, ptr %8, i64 40
  %148 = getelementptr inbounds i8, ptr %8, i64 32
  %149 = getelementptr inbounds i8, ptr %8, i64 4
  %150 = getelementptr inbounds i8, ptr %8, i64 24
  %151 = getelementptr inbounds i8, ptr %8, i64 16
  br label %152

152:                                              ; preds = %267, %2
  %.0131 = phi i32 [ 0, %2 ], [ %.2133, %267 ]
  %.0128 = phi i32 [ 0, %2 ], [ %.2130, %267 ]
  %.0125 = phi i32 [ 0, %2 ], [ %.2127, %267 ]
  %.0122 = phi i32 [ 0, %2 ], [ %.2124, %267 ]
  %.0119 = phi i32 [ 0, %2 ], [ %.2121, %267 ]
  %.0116 = phi i1 [ false, %2 ], [ %.2118, %267 ]
  %.0113 = phi i32 [ 0, %2 ], [ %.2115, %267 ]
  %.0109 = phi ptr [ null, %2 ], [ %.2111, %267 ]
  %.0106 = phi ptr [ null, %2 ], [ %.2108, %267 ]
  %.0101 = phi ptr [ @.str.80, %2 ], [ %.2103, %267 ]
  %.098 = phi ptr [ null, %2 ], [ %.2100, %267 ]
  %.097 = phi ptr [ null, %2 ], [ %.2, %267 ]
  %.097.fr = freeze ptr %.097
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #13
  store i32 0, ptr %11, align 4, !tbaa !9
  %153 = call i32 @getopt_long(i32 noundef %0, ptr noundef %1, ptr noundef nonnull @.str.113, ptr noundef nonnull %10, ptr noundef nonnull %11) #13
  switch i32 %153, label %263 [
    i32 -1, label %268
    i32 0, label %266
    i32 67, label %154
    i32 99, label %157
    i32 101, label %159
    i32 102, label %267
    i32 104, label %162
    i32 107, label %163
    i32 108, label %174
    i32 109, label %177
    i32 110, label %180
    i32 111, label %183
    i32 112, label %185
    i32 114, label %188
    i32 115, label %199
    i32 100, label %202
    i32 116, label %204
    i32 105, label %206
    i32 97, label %209
    i32 84, label %211
    i32 51, label %266
    i32 88, label %214
    i32 119, label %220
    i32 98, label %225
    i32 1000, label %232
    i32 1001, label %240
    i32 1002, label %242
    i32 65, label %244
    i32 66, label %246
    i32 76, label %247
    i32 80, label %249
    i32 69, label %259
    i32 78, label %262
  ]

154:                                              ; preds = %152
  %155 = load i16, ptr %8, align 8
  %156 = or i16 %155, 512
  store i16 %156, ptr %8, align 8
  br label %267

157:                                              ; preds = %152
  %158 = load ptr, ptr @optarg, align 8, !tbaa !5
  br label %267

159:                                              ; preds = %152
  %160 = load i16, ptr %8, align 8
  %161 = or i16 %160, 32
  store i16 %161, ptr %8, align 8
  br label %267

162:                                              ; preds = %152
  call void @usage()
  br label %267

163:                                              ; preds = %152
  %164 = icmp eq i32 %.0131, 50
  br i1 %164, label %165, label %168

165:                                              ; preds = %163
  %166 = load ptr, ptr @stderr, align 8, !tbaa !5
  %167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %166, ptr noundef nonnull @.str.114, i32 noundef 50) #14
  call void @exit(i32 noundef 1) #15
  unreachable

168:                                              ; preds = %163
  %169 = load ptr, ptr @optarg, align 8, !tbaa !5
  %170 = call ptr @load_file_to_cstring(ptr noundef %169) #13
  %171 = sext i32 %.0131 to i64
  %172 = getelementptr inbounds [50 x ptr], ptr %7, i64 0, i64 %171
  store ptr %170, ptr %172, align 8, !tbaa !5
  %173 = add nsw i32 %.0131, 1
  br label %267

174:                                              ; preds = %152
  %175 = load i16, ptr %8, align 8
  %176 = or i16 %175, 16
  store i16 %176, ptr %8, align 8
  br label %267

177:                                              ; preds = %152
  %178 = load i16, ptr %8, align 8
  %179 = or i16 %178, 1
  store i16 %179, ptr %8, align 8
  br label %267

180:                                              ; preds = %152
  %181 = load i16, ptr %8, align 8
  %182 = or i16 %181, 4
  store i16 %182, ptr %8, align 8
  br label %267

183:                                              ; preds = %152
  %184 = load ptr, ptr @optarg, align 8, !tbaa !5
  br label %267

185:                                              ; preds = %152
  %186 = load i16, ptr %8, align 8
  %187 = or i16 %186, 8
  store i16 %187, ptr %8, align 8
  br label %267

188:                                              ; preds = %152
  %189 = icmp eq i32 %.0113, 50
  br i1 %189, label %190, label %193

190:                                              ; preds = %188
  %191 = load ptr, ptr @stderr, align 8, !tbaa !5
  %192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %191, ptr noundef nonnull @.str.114, i32 noundef 50) #14
  call void @exit(i32 noundef 1) #15
  unreachable

193:                                              ; preds = %188
  %194 = load ptr, ptr @optarg, align 8, !tbaa !5
  %195 = call ptr @load_file_to_cstring(ptr noundef %194) #13
  %196 = sext i32 %.0113 to i64
  %197 = getelementptr inbounds [50 x ptr], ptr %6, i64 0, i64 %196
  store ptr %195, ptr %197, align 8, !tbaa !5
  %198 = add nsw i32 %.0113, 1
  br label %267

199:                                              ; preds = %152
  %200 = load i16, ptr %8, align 8
  %201 = or i16 %200, 2
  store i16 %201, ptr %8, align 8
  br label %267

202:                                              ; preds = %152
  %203 = load ptr, ptr @optarg, align 8, !tbaa !5
  store ptr %203, ptr %151, align 8, !tbaa !20
  br label %267

204:                                              ; preds = %152
  %205 = load ptr, ptr @optarg, align 8, !tbaa !5
  store ptr %205, ptr %150, align 8, !tbaa !21
  br label %267

206:                                              ; preds = %152
  %207 = load i16, ptr %8, align 8
  %208 = or i16 %207, 256
  store i16 %208, ptr %8, align 8
  br label %267

209:                                              ; preds = %152
  %210 = load ptr, ptr @optarg, align 8, !tbaa !5
  br label %267

211:                                              ; preds = %152
  %212 = load i16, ptr %8, align 8
  %213 = and i16 %212, -65
  store i16 %213, ptr %8, align 8
  br label %267

214:                                              ; preds = %152
  %215 = load ptr, ptr @optarg, align 8, !tbaa !5
  %216 = icmp eq ptr %215, null
  br i1 %216, label %217, label %218

217:                                              ; preds = %214
  store i32 1, ptr %16, align 8, !tbaa !11
  br label %267

218:                                              ; preds = %214
  %219 = call i32 @atoi(ptr nocapture noundef %215) #16
  store i32 %219, ptr %16, align 8, !tbaa !11
  br label %267

220:                                              ; preds = %152
  %221 = load ptr, ptr @stdout, align 8, !tbaa !5
  %222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %221, ptr noundef nonnull @.str.115) #13
  %223 = load i16, ptr %8, align 8
  %224 = or i16 %223, 1024
  store i16 %224, ptr %8, align 8
  br label %267

225:                                              ; preds = %152
  %226 = load ptr, ptr @optarg, align 8, !tbaa !5
  %227 = call i64 @strtoul(ptr nocapture noundef %226, ptr noundef null, i32 noundef 10) #13
  %228 = icmp slt i64 %227, 0
  br i1 %228, label %229, label %230

229:                                              ; preds = %225
  call void @print_s2n_error(ptr noundef nonnull @.str.116) #13
  call void @exit(i32 noundef 1) #15
  unreachable

230:                                              ; preds = %225
  %231 = trunc i64 %227 to i32
  store i32 %231, ptr %149, align 4, !tbaa !22
  br label %267

232:                                              ; preds = %152
  %233 = load ptr, ptr @optarg, align 8, !tbaa !5
  %234 = call i64 @strtoimax(ptr noundef %233, ptr noundef null, i32 noundef 10) #13
  %or.cond = icmp ugt i64 %234, 4294967295
  br i1 %or.cond, label %235, label %238

235:                                              ; preds = %232
  %236 = load ptr, ptr @stderr, align 8, !tbaa !5
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef nonnull @.str.117) #14
  call void @exit(i32 noundef 1) #15
  unreachable

238:                                              ; preds = %232
  %239 = trunc nuw i64 %234 to i32
  br label %267

240:                                              ; preds = %152
  %241 = load ptr, ptr @optarg, align 8, !tbaa !5
  store ptr %241, ptr %148, align 8, !tbaa !23
  br label %267

242:                                              ; preds = %152
  %243 = load ptr, ptr @optarg, align 8, !tbaa !5
  store ptr %243, ptr %147, align 8, !tbaa !24
  br label %267

244:                                              ; preds = %152
  %245 = load ptr, ptr @optarg, align 8, !tbaa !5
  br label %267

246:                                              ; preds = %152
  br label %267

247:                                              ; preds = %152
  %248 = load ptr, ptr @optarg, align 8, !tbaa !5
  br label %267

249:                                              ; preds = %152
  %250 = load i64, ptr %17, align 8, !tbaa !14
  %251 = icmp ugt i64 %250, 9
  br i1 %251, label %252, label %255

252:                                              ; preds = %249
  %253 = load ptr, ptr @stderr, align 8, !tbaa !5
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef nonnull @.str.118) #14
  call void @exit(i32 noundef 1) #15
  unreachable

255:                                              ; preds = %249
  %256 = load ptr, ptr @optarg, align 8, !tbaa !5
  %257 = add nuw nsw i64 %250, 1
  store i64 %257, ptr %17, align 8, !tbaa !14
  %258 = getelementptr inbounds [10 x ptr], ptr %146, i64 0, i64 %250
  store ptr %256, ptr %258, align 8, !tbaa !5
  br label %267

259:                                              ; preds = %152
  %260 = load ptr, ptr @optarg, align 8, !tbaa !5
  %261 = call i32 @atoi(ptr nocapture noundef %260) #16
  br label %267

262:                                              ; preds = %152
  br label %267

263:                                              ; preds = %152
  %264 = load ptr, ptr @stdout, align 8, !tbaa !5
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef nonnull @.str.119, i32 noundef %153) #13
  call void @usage()
  br label %267

266:                                              ; preds = %152, %152
  br label %267

267:                                              ; preds = %152, %154, %157, %159, %162, %168, %174, %177, %180, %183, %185, %193, %199, %202, %204, %206, %209, %211, %220, %230, %238, %240, %242, %244, %246, %247, %255, %259, %262, %263, %218, %217, %266
  %.2133 = phi i32 [ %.0131, %263 ], [ %.0131, %262 ], [ %.0131, %259 ], [ %.0131, %255 ], [ %.0131, %247 ], [ %.0131, %246 ], [ %.0131, %244 ], [ %.0131, %242 ], [ %.0131, %240 ], [ %.0131, %238 ], [ %.0131, %230 ], [ %.0131, %220 ], [ %.0131, %217 ], [ %.0131, %218 ], [ %.0131, %211 ], [ %.0131, %209 ], [ %.0131, %206 ], [ %.0131, %204 ], [ %.0131, %202 ], [ %.0131, %199 ], [ %.0131, %193 ], [ %.0131, %185 ], [ %.0131, %183 ], [ %.0131, %180 ], [ %.0131, %177 ], [ %.0131, %174 ], [ %173, %168 ], [ %.0131, %162 ], [ %.0131, %159 ], [ %.0131, %157 ], [ %.0131, %154 ], [ %.0131, %266 ], [ %.0131, %152 ]
  %.2130 = phi i32 [ %.0128, %263 ], [ %.0128, %262 ], [ %.0128, %259 ], [ %.0128, %255 ], [ %.0128, %247 ], [ %.0128, %246 ], [ %.0128, %244 ], [ %.0128, %242 ], [ %.0128, %240 ], [ %.0128, %238 ], [ %.0128, %230 ], [ %.0128, %220 ], [ %.0128, %217 ], [ %.0128, %218 ], [ %.0128, %211 ], [ %.0128, %209 ], [ %.0128, %206 ], [ %.0128, %204 ], [ %.0128, %202 ], [ %.0128, %199 ], [ %.0128, %193 ], [ %.0128, %185 ], [ %.0128, %183 ], [ %.0128, %180 ], [ %.0128, %177 ], [ %.0128, %174 ], [ %.0128, %168 ], [ %.0128, %162 ], [ %.0128, %159 ], [ %.0128, %157 ], [ %.0128, %154 ], [ %.0128, %266 ], [ 1, %152 ]
  %.2127 = phi i32 [ %.0125, %263 ], [ %.0125, %262 ], [ %.0125, %259 ], [ %.0125, %255 ], [ %.0125, %247 ], [ 1, %246 ], [ %.0125, %244 ], [ %.0125, %242 ], [ %.0125, %240 ], [ %.0125, %238 ], [ %.0125, %230 ], [ %.0125, %220 ], [ %.0125, %217 ], [ %.0125, %218 ], [ %.0125, %211 ], [ %.0125, %209 ], [ %.0125, %206 ], [ %.0125, %204 ], [ %.0125, %202 ], [ %.0125, %199 ], [ %.0125, %193 ], [ %.0125, %185 ], [ %.0125, %183 ], [ %.0125, %180 ], [ %.0125, %177 ], [ %.0125, %174 ], [ %.0125, %168 ], [ %.0125, %162 ], [ %.0125, %159 ], [ %.0125, %157 ], [ %.0125, %154 ], [ %.0125, %266 ], [ %.0125, %152 ]
  %.2124 = phi i32 [ %.0122, %263 ], [ %.0122, %262 ], [ %261, %259 ], [ %.0122, %255 ], [ %.0122, %247 ], [ %.0122, %246 ], [ %.0122, %244 ], [ %.0122, %242 ], [ %.0122, %240 ], [ %.0122, %238 ], [ %.0122, %230 ], [ %.0122, %220 ], [ %.0122, %217 ], [ %.0122, %218 ], [ %.0122, %211 ], [ %.0122, %209 ], [ %.0122, %206 ], [ %.0122, %204 ], [ %.0122, %202 ], [ %.0122, %199 ], [ %.0122, %193 ], [ %.0122, %185 ], [ %.0122, %183 ], [ %.0122, %180 ], [ %.0122, %177 ], [ %.0122, %174 ], [ %.0122, %168 ], [ %.0122, %162 ], [ %.0122, %159 ], [ %.0122, %157 ], [ %.0122, %154 ], [ %.0122, %266 ], [ %.0122, %152 ]
  %.2121 = phi i32 [ %.0119, %263 ], [ %.0119, %262 ], [ %.0119, %259 ], [ %.0119, %255 ], [ %.0119, %247 ], [ %.0119, %246 ], [ %.0119, %244 ], [ %.0119, %242 ], [ %.0119, %240 ], [ %239, %238 ], [ %.0119, %230 ], [ %.0119, %220 ], [ %.0119, %217 ], [ %.0119, %218 ], [ %.0119, %211 ], [ %.0119, %209 ], [ %.0119, %206 ], [ %.0119, %204 ], [ %.0119, %202 ], [ %.0119, %199 ], [ %.0119, %193 ], [ %.0119, %185 ], [ %.0119, %183 ], [ %.0119, %180 ], [ %.0119, %177 ], [ %.0119, %174 ], [ %.0119, %168 ], [ %.0119, %162 ], [ %.0119, %159 ], [ %.0119, %157 ], [ %.0119, %154 ], [ %.0119, %266 ], [ %.0119, %152 ]
  %.2118 = phi i1 [ %.0116, %263 ], [ true, %262 ], [ %.0116, %259 ], [ %.0116, %255 ], [ %.0116, %247 ], [ %.0116, %246 ], [ %.0116, %244 ], [ %.0116, %242 ], [ %.0116, %240 ], [ %.0116, %238 ], [ %.0116, %230 ], [ %.0116, %220 ], [ %.0116, %217 ], [ %.0116, %218 ], [ %.0116, %211 ], [ %.0116, %209 ], [ %.0116, %206 ], [ %.0116, %204 ], [ %.0116, %202 ], [ %.0116, %199 ], [ %.0116, %193 ], [ %.0116, %185 ], [ %.0116, %183 ], [ %.0116, %180 ], [ %.0116, %177 ], [ %.0116, %174 ], [ %.0116, %168 ], [ %.0116, %162 ], [ %.0116, %159 ], [ %.0116, %157 ], [ %.0116, %154 ], [ %.0116, %266 ], [ %.0116, %152 ]
  %.2115 = phi i32 [ %.0113, %263 ], [ %.0113, %262 ], [ %.0113, %259 ], [ %.0113, %255 ], [ %.0113, %247 ], [ %.0113, %246 ], [ %.0113, %244 ], [ %.0113, %242 ], [ %.0113, %240 ], [ %.0113, %238 ], [ %.0113, %230 ], [ %.0113, %220 ], [ %.0113, %217 ], [ %.0113, %218 ], [ %.0113, %211 ], [ %.0113, %209 ], [ %.0113, %206 ], [ %.0113, %204 ], [ %.0113, %202 ], [ %.0113, %199 ], [ %198, %193 ], [ %.0113, %185 ], [ %.0113, %183 ], [ %.0113, %180 ], [ %.0113, %177 ], [ %.0113, %174 ], [ %.0113, %168 ], [ %.0113, %162 ], [ %.0113, %159 ], [ %.0113, %157 ], [ %.0113, %154 ], [ %.0113, %266 ], [ %.0113, %152 ]
  %.2111 = phi ptr [ %.0109, %263 ], [ %.0109, %262 ], [ %.0109, %259 ], [ %.0109, %255 ], [ %248, %247 ], [ %.0109, %246 ], [ %.0109, %244 ], [ %.0109, %242 ], [ %.0109, %240 ], [ %.0109, %238 ], [ %.0109, %230 ], [ %.0109, %220 ], [ %.0109, %217 ], [ %.0109, %218 ], [ %.0109, %211 ], [ %.0109, %209 ], [ %.0109, %206 ], [ %.0109, %204 ], [ %.0109, %202 ], [ %.0109, %199 ], [ %.0109, %193 ], [ %.0109, %185 ], [ %.0109, %183 ], [ %.0109, %180 ], [ %.0109, %177 ], [ %.0109, %174 ], [ %.0109, %168 ], [ %.0109, %162 ], [ %.0109, %159 ], [ %.0109, %157 ], [ %.0109, %154 ], [ %.0109, %266 ], [ %.0109, %152 ]
  %.2108 = phi ptr [ %.0106, %263 ], [ %.0106, %262 ], [ %.0106, %259 ], [ %.0106, %255 ], [ %.0106, %247 ], [ %.0106, %246 ], [ %245, %244 ], [ %.0106, %242 ], [ %.0106, %240 ], [ %.0106, %238 ], [ %.0106, %230 ], [ %.0106, %220 ], [ %.0106, %217 ], [ %.0106, %218 ], [ %.0106, %211 ], [ %.0106, %209 ], [ %.0106, %206 ], [ %.0106, %204 ], [ %.0106, %202 ], [ %.0106, %199 ], [ %.0106, %193 ], [ %.0106, %185 ], [ %.0106, %183 ], [ %.0106, %180 ], [ %.0106, %177 ], [ %.0106, %174 ], [ %.0106, %168 ], [ %.0106, %162 ], [ %.0106, %159 ], [ %.0106, %157 ], [ %.0106, %154 ], [ %.0106, %266 ], [ %.0106, %152 ]
  %.2103 = phi ptr [ %.0101, %263 ], [ %.0101, %262 ], [ %.0101, %259 ], [ %.0101, %255 ], [ %.0101, %247 ], [ %.0101, %246 ], [ %.0101, %244 ], [ %.0101, %242 ], [ %.0101, %240 ], [ %.0101, %238 ], [ %.0101, %230 ], [ %.0101, %220 ], [ %.0101, %217 ], [ %.0101, %218 ], [ %.0101, %211 ], [ %.0101, %209 ], [ %.0101, %206 ], [ %.0101, %204 ], [ %.0101, %202 ], [ %.0101, %199 ], [ %.0101, %193 ], [ %.0101, %185 ], [ %.0101, %183 ], [ %.0101, %180 ], [ %.0101, %177 ], [ %.0101, %174 ], [ %.0101, %168 ], [ %.0101, %162 ], [ %.0101, %159 ], [ %158, %157 ], [ %.0101, %154 ], [ %.0101, %266 ], [ %.0101, %152 ]
  %.2100 = phi ptr [ %.098, %263 ], [ %.098, %262 ], [ %.098, %259 ], [ %.098, %255 ], [ %.098, %247 ], [ %.098, %246 ], [ %.098, %244 ], [ %.098, %242 ], [ %.098, %240 ], [ %.098, %238 ], [ %.098, %230 ], [ %.098, %220 ], [ %.098, %217 ], [ %.098, %218 ], [ %.098, %211 ], [ %210, %209 ], [ %.098, %206 ], [ %.098, %204 ], [ %.098, %202 ], [ %.098, %199 ], [ %.098, %193 ], [ %.098, %185 ], [ %.098, %183 ], [ %.098, %180 ], [ %.098, %177 ], [ %.098, %174 ], [ %.098, %168 ], [ %.098, %162 ], [ %.098, %159 ], [ %.098, %157 ], [ %.098, %154 ], [ %.098, %266 ], [ %.098, %152 ]
  %.2 = phi ptr [ %.097.fr, %263 ], [ %.097.fr, %262 ], [ %.097.fr, %259 ], [ %.097.fr, %255 ], [ %.097.fr, %247 ], [ %.097.fr, %246 ], [ %.097.fr, %244 ], [ %.097.fr, %242 ], [ %.097.fr, %240 ], [ %.097.fr, %238 ], [ %.097.fr, %230 ], [ %.097.fr, %220 ], [ %.097.fr, %217 ], [ %.097.fr, %218 ], [ %.097.fr, %211 ], [ %.097.fr, %209 ], [ %.097.fr, %206 ], [ %.097.fr, %204 ], [ %.097.fr, %202 ], [ %.097.fr, %199 ], [ %.097.fr, %193 ], [ %.097.fr, %185 ], [ %184, %183 ], [ %.097.fr, %180 ], [ %.097.fr, %177 ], [ %.097.fr, %174 ], [ %.097.fr, %168 ], [ %.097.fr, %162 ], [ %.097.fr, %159 ], [ %.097.fr, %157 ], [ %.097.fr, %154 ], [ %.097.fr, %266 ], [ %.097.fr, %152 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #13
  br label %152

268:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #13
  %269 = load i16, ptr %8, align 8
  %270 = and i16 %269, 24
  %or.cond164.not = icmp eq i16 %270, 24
  br i1 %or.cond164.not, label %271, label %274

271:                                              ; preds = %268
  %272 = load ptr, ptr @stderr, align 8, !tbaa !5
  %273 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %272, ptr noundef nonnull @.str.120) #14
  call void @exit(i32 noundef 1) #15
  unreachable

274:                                              ; preds = %268
  %275 = load i32, ptr @optind, align 4, !tbaa !9
  %276 = icmp slt i32 %275, %0
  br i1 %276, label %277, label %282

277:                                              ; preds = %274
  %278 = add nsw i32 %275, 1
  store i32 %278, ptr @optind, align 4, !tbaa !9
  %279 = sext i32 %275 to i64
  %280 = getelementptr inbounds ptr, ptr %1, i64 %279
  %281 = load ptr, ptr %280, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %277, %274
  %283 = phi i32 [ %278, %277 ], [ %275, %274 ]
  %.0 = phi ptr [ %281, %277 ], [ null, %274 ]
  %284 = icmp slt i32 %283, %0
  br i1 %284, label %285, label %.thread191

285:                                              ; preds = %282
  %286 = add nsw i32 %283, 1
  store i32 %286, ptr @optind, align 4, !tbaa !9
  %287 = sext i32 %283 to i64
  %288 = getelementptr inbounds ptr, ptr %1, i64 %287
  %289 = load ptr, ptr %288, align 8, !tbaa !5
  %290 = icmp ne ptr %.0, null
  %291 = icmp ne ptr %289, null
  %or.cond3 = select i1 %290, i1 %291, i1 false
  br i1 %or.cond3, label %292, label %.thread191

.thread191:                                       ; preds = %282, %285
  %.095194 = phi ptr [ %289, %285 ], [ null, %282 ]
  call void @usage()
  br label %292

292:                                              ; preds = %285, %.thread191
  %.095195 = phi ptr [ %289, %285 ], [ %.095194, %.thread191 ]
  %293 = load ptr, ptr @stdin, align 8, !tbaa !5
  %294 = call i32 @setvbuf(ptr noundef %293, ptr noundef null, i32 noundef 2, i64 noundef 0) #13
  %295 = icmp slt i32 %294, 0
  br i1 %295, label %296, label %299

296:                                              ; preds = %292
  %297 = load ptr, ptr @stderr, align 8, !tbaa !5
  %298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef nonnull @.str.121) #14
  call void @exit(i32 noundef 1) #15
  unreachable

299:                                              ; preds = %292
  %300 = load ptr, ptr @stdout, align 8, !tbaa !5
  %301 = call i32 @setvbuf(ptr noundef %300, ptr noundef null, i32 noundef 2, i64 noundef 0) #13
  %302 = icmp slt i32 %301, 0
  br i1 %302, label %303, label %306

303:                                              ; preds = %299
  %304 = load ptr, ptr @stderr, align 8, !tbaa !5
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %304, ptr noundef nonnull @.str.122) #14
  call void @exit(i32 noundef 1) #15
  unreachable

306:                                              ; preds = %299
  %307 = getelementptr inbounds i8, ptr %3, i64 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %3, i8 0, i64 48, i1 false)
  store i32 1, ptr %307, align 8, !tbaa !25
  %308 = call ptr @signal(i32 noundef 13, ptr noundef nonnull inttoptr (i64 1 to ptr)) #13
  %309 = icmp eq ptr %308, inttoptr (i64 -1 to ptr)
  br i1 %309, label %310, label %313

310:                                              ; preds = %306
  %311 = load ptr, ptr @stderr, align 8, !tbaa !5
  %312 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %311, ptr noundef nonnull @.str.123) #14
  call void @exit(i32 noundef 1) #15
  unreachable

313:                                              ; preds = %306
  %314 = call i32 @getaddrinfo(ptr noundef %.0, ptr noundef %.095195, ptr noundef nonnull %3, ptr noundef nonnull %4) #13
  store i32 %314, ptr %5, align 4, !tbaa !9
  %315 = icmp slt i32 %314, 0
  br i1 %315, label %316, label %320

316:                                              ; preds = %313
  %317 = load ptr, ptr @stderr, align 8, !tbaa !5
  %318 = call ptr @gai_strerror(i32 noundef %314) #13
  %319 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull @.str.124, ptr noundef %318) #14
  call void @exit(i32 noundef 1) #15
  unreachable

320:                                              ; preds = %313
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  %322 = getelementptr inbounds i8, ptr %321, i64 4
  %323 = load i32, ptr %322, align 4, !tbaa !27
  %324 = getelementptr inbounds i8, ptr %321, i64 8
  %325 = load i32, ptr %324, align 8, !tbaa !25
  %326 = getelementptr inbounds i8, ptr %321, i64 12
  %327 = load i32, ptr %326, align 4, !tbaa !28
  %328 = call i32 @socket(i32 noundef %323, i32 noundef %325, i32 noundef %327) #13
  %329 = icmp eq i32 %328, -1
  br i1 %329, label %330, label %336

330:                                              ; preds = %320
  %331 = load ptr, ptr @stderr, align 8, !tbaa !5
  %332 = tail call ptr @__errno_location() #17
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = call ptr @strerror(i32 noundef %333) #13
  %335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %331, ptr noundef nonnull @.str.125, ptr noundef %334) #14
  call void @exit(i32 noundef 1) #15
  unreachable

336:                                              ; preds = %320
  store i32 1, ptr %5, align 4, !tbaa !9
  %337 = call i32 @setsockopt(i32 noundef %328, i32 noundef 1, i32 noundef 2, ptr noundef nonnull %5, i32 noundef 4) #13
  %338 = icmp slt i32 %337, 0
  br i1 %338, label %339, label %345

339:                                              ; preds = %336
  %340 = load ptr, ptr @stderr, align 8, !tbaa !5
  %341 = tail call ptr @__errno_location() #17
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = call ptr @strerror(i32 noundef %342) #13
  %344 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %340, ptr noundef nonnull @.str.126, ptr noundef %343) #14
  call void @exit(i32 noundef 1) #15
  unreachable

345:                                              ; preds = %336
  %346 = load ptr, ptr %4, align 8, !tbaa !5
  %347 = getelementptr inbounds i8, ptr %346, i64 24
  %348 = load ptr, ptr %347, align 8, !tbaa !29
  %349 = getelementptr inbounds i8, ptr %346, i64 16
  %350 = load i32, ptr %349, align 8, !tbaa !30
  %351 = call i32 @bind(i32 noundef %328, ptr noundef %348, i32 noundef %350) #13
  %352 = icmp slt i32 %351, 0
  br i1 %352, label %353, label %359

353:                                              ; preds = %345
  %354 = load ptr, ptr @stderr, align 8, !tbaa !5
  %355 = tail call ptr @__errno_location() #17
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = call ptr @strerror(i32 noundef %356) #13
  %358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef nonnull @.str.127, ptr noundef %357) #14
  call void @exit(i32 noundef 1) #15
  unreachable

359:                                              ; preds = %345
  %360 = call i32 @listen(i32 noundef %328, i32 noundef 1) #13
  %361 = icmp eq i32 %360, -1
  br i1 %361, label %362, label %368

362:                                              ; preds = %359
  %363 = load ptr, ptr @stderr, align 8, !tbaa !5
  %364 = tail call ptr @__errno_location() #17
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = call ptr @strerror(i32 noundef %365) #13
  %367 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %363, ptr noundef nonnull @.str.128, ptr noundef %366) #14
  call void @exit(i32 noundef 1) #15
  unreachable

368:                                              ; preds = %359
  %369 = call i32 @s2n_init() #13
  %370 = icmp slt i32 %369, 0
  br i1 %370, label %371, label %372

371:                                              ; preds = %368
  call void @print_s2n_error(ptr noundef nonnull @.str.129) #13
  call void @exit(i32 noundef 1) #15
  unreachable

372:                                              ; preds = %368
  %373 = call ptr @s2n_libcrypto_get_version_name() #13
  %374 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.130, ptr noundef %373)
  %.not151 = icmp eq i32 %.0128, 0
  br i1 %.not151, label %386, label %375

375:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #13
  store i32 0, ptr %12, align 4, !tbaa !9
  %376 = call i32 @s2n_get_fips_mode(ptr noundef nonnull %12) #13
  %377 = icmp slt i32 %376, 0
  br i1 %377, label %378, label %379

378:                                              ; preds = %375
  call void @print_s2n_error(ptr noundef nonnull @.str.131) #13
  call void @exit(i32 noundef 1) #15
  unreachable

379:                                              ; preds = %375
  %380 = load i32, ptr %12, align 4, !tbaa !9
  %.not152 = icmp eq i32 %380, 1
  br i1 %.not152, label %384, label %381

381:                                              ; preds = %379
  %382 = load ptr, ptr @stderr, align 8, !tbaa !5
  %383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef nonnull @.str.132) #14
  call void @exit(i32 noundef 1) #15
  unreachable

384:                                              ; preds = %379
  %385 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.133)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #13
  br label %386

386:                                              ; preds = %384, %372
  %387 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.134, ptr noundef %.0, ptr noundef %.095195)
  %388 = call ptr @s2n_config_new() #13
  %.not153 = icmp eq ptr %388, null
  br i1 %.not153, label %389, label %390

389:                                              ; preds = %386
  call void @print_s2n_error(ptr noundef nonnull @.str.135) #13
  call void @exit(i32 noundef 1) #15
  unreachable

390:                                              ; preds = %386
  %.not154 = icmp eq i32 %.0113, %.0131
  br i1 %.not154, label %394, label %391

391:                                              ; preds = %390
  %392 = load ptr, ptr @stderr, align 8, !tbaa !5
  %393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %392, ptr noundef nonnull @.str.136, i32 noundef %.0113, i32 noundef %.0131) #14
  call void @exit(i32 noundef 1) #15
  unreachable

394:                                              ; preds = %390
  %395 = icmp eq i32 %.0131, 0
  br i1 %395, label %.thread, label %396

.thread:                                          ; preds = %394
  store ptr @default_certificate_chain, ptr %6, align 16, !tbaa !5
  store ptr @default_private_key, ptr %7, align 16, !tbaa !5
  br label %.lr.ph

396:                                              ; preds = %394
  %397 = icmp sgt i32 %.0131, 0
  br i1 %397, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.thread, %396
  %.0105346 = phi i32 [ 1, %.thread ], [ %.0131, %396 ]
  %.not163 = icmp eq ptr %.097.fr, null
  %398 = getelementptr inbounds i8, ptr %13, i64 48
  %wide.trip.count343 = zext nneg i32 %.0105346 to i64
  br i1 %.not163, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %406
  %indvars.iv340 = phi i64 [ %indvars.iv.next341, %406 ], [ 0, %.lr.ph ]
  %399 = call ptr @s2n_cert_chain_and_key_new() #13
  %400 = getelementptr inbounds [50 x ptr], ptr %6, i64 0, i64 %indvars.iv340
  %401 = load ptr, ptr %400, align 8, !tbaa !5
  %402 = getelementptr inbounds [50 x ptr], ptr %7, i64 0, i64 %indvars.iv340
  %403 = load ptr, ptr %402, align 8, !tbaa !5
  %404 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef %399, ptr noundef %401, ptr noundef %403) #13
  %405 = icmp slt i32 %404, 0
  br i1 %405, label %.split.us, label %407

406:                                              ; preds = %407
  %indvars.iv.next341 = add nuw nsw i64 %indvars.iv340, 1
  %exitcond344.not = icmp eq i64 %indvars.iv.next341, %wide.trip.count343
  br i1 %exitcond344.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !31

407:                                              ; preds = %.lr.ph.split.us
  %408 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %388, ptr noundef %399) #13
  %409 = icmp slt i32 %408, 0
  br i1 %409, label %.split265.us, label %406

410:                                              ; preds = %450
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count343
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !31

._crit_edge:                                      ; preds = %410, %406, %396
  %411 = call i32 @s2n_set_common_server_config(i32 noundef %.0122, ptr noundef nonnull %388, ptr noundef nonnull byval(%struct.conn_settings) align 8 %8, ptr noundef %.0101, ptr noundef %.098) #13
  %412 = load i32, ptr %9, align 4, !tbaa !9
  %.not155 = icmp eq i32 %412, 0
  br i1 %.not155, label %459, label %454

.lr.ph.split:                                     ; preds = %.lr.ph, %410
  %indvars.iv = phi i64 [ %indvars.iv.next, %410 ], [ 0, %.lr.ph ]
  %413 = call ptr @s2n_cert_chain_and_key_new() #13
  %414 = getelementptr inbounds [50 x ptr], ptr %6, i64 0, i64 %indvars.iv
  %415 = load ptr, ptr %414, align 8, !tbaa !5
  %416 = getelementptr inbounds [50 x ptr], ptr %7, i64 0, i64 %indvars.iv
  %417 = load ptr, ptr %416, align 8, !tbaa !5
  %418 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef %413, ptr noundef %415, ptr noundef %417) #13
  %419 = icmp slt i32 %418, 0
  br i1 %419, label %.split.us, label %420

.split.us:                                        ; preds = %.lr.ph.split, %.lr.ph.split.us
  call void @print_s2n_error(ptr noundef nonnull @.str.137) #13
  call void @exit(i32 noundef 1) #15
  unreachable

420:                                              ; preds = %.lr.ph.split
  %421 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull %.097.fr, i32 noundef 0) #13
  %422 = icmp slt i32 %421, 0
  br i1 %422, label %423, label %429

423:                                              ; preds = %420
  %424 = load ptr, ptr @stderr, align 8, !tbaa !5
  %425 = tail call ptr @__errno_location() #17
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = call ptr @strerror(i32 noundef %426) #13
  %428 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %424, ptr noundef nonnull @.str.138, ptr noundef %427) #14
  call void @exit(i32 noundef 1) #15
  unreachable

429:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %13) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %13, i8 0, i64 144, i1 false)
  %430 = call i32 @fstat(i32 noundef %421, ptr noundef nonnull %13) #13
  %431 = icmp slt i32 %430, 0
  br i1 %431, label %432, label %438

432:                                              ; preds = %429
  %433 = load ptr, ptr @stderr, align 8, !tbaa !5
  %434 = tail call ptr @__errno_location() #17
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = call ptr @strerror(i32 noundef %435) #13
  %437 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %433, ptr noundef nonnull @.str.139, ptr noundef %436) #14
  call void @exit(i32 noundef 1) #15
  unreachable

438:                                              ; preds = %429
  %439 = load i64, ptr %398, align 8, !tbaa !33
  %440 = call ptr @mmap(ptr noundef null, i64 noundef %439, i32 noundef 1, i32 noundef 2, i32 noundef %421, i64 noundef 0) #13
  %441 = trunc i64 %439 to i32
  %442 = call i32 @s2n_cert_chain_and_key_set_ocsp_data(ptr noundef %413, ptr noundef %440, i32 noundef %441) #13
  %443 = icmp slt i32 %442, 0
  br i1 %443, label %444, label %450

444:                                              ; preds = %438
  %445 = load ptr, ptr @stderr, align 8, !tbaa !5
  %446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = call ptr @s2n_strerror(i32 noundef %447, ptr noundef nonnull @.str.141) #13
  %449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %445, ptr noundef nonnull @.str.140, ptr noundef %448) #14
  call void @exit(i32 noundef 1) #15
  unreachable

450:                                              ; preds = %438
  %451 = call i32 @close(i32 noundef %421) #13
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %13) #13
  %452 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %388, ptr noundef %413) #13
  %453 = icmp slt i32 %452, 0
  br i1 %453, label %.split265.us, label %410

.split265.us:                                     ; preds = %450, %407
  call void @print_s2n_error(ptr noundef nonnull @.str.142) #13
  call void @exit(i32 noundef 1) #15
  unreachable

454:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %14) #13
  store ptr inttoptr (i64 1 to ptr), ptr %14, align 8, !tbaa !36
  %455 = getelementptr inbounds i8, ptr %14, i64 136
  store i32 2, ptr %455, align 8, !tbaa !37
  %456 = getelementptr inbounds i8, ptr %14, i64 8
  %457 = call i32 @sigemptyset(ptr noundef nonnull %456) #13
  %458 = call i32 @sigaction(i32 noundef 17, ptr noundef nonnull %14, ptr noundef null) #13
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %14) #13
  br label %459

459:                                              ; preds = %454, %._crit_edge
  %.not156 = icmp eq ptr %.0106, null
  br i1 %.not156, label %465, label %460

460:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #13
  store ptr %.0106, ptr %15, align 8, !tbaa !5
  %461 = call i32 @s2n_config_set_protocol_preferences(ptr noundef nonnull %388, ptr noundef nonnull %15, i32 noundef 1) #13
  %462 = icmp slt i32 %461, 0
  br i1 %462, label %463, label %464

463:                                              ; preds = %460
  call void @print_s2n_error(ptr noundef nonnull @.str.143) #13
  call void @exit(i32 noundef 1) #15
  unreachable

464:                                              ; preds = %460
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #13
  br label %465

465:                                              ; preds = %464, %459
  %.not157 = icmp eq i32 %.0119, 0
  br i1 %.not157, label %470, label %466

466:                                              ; preds = %465
  %467 = call i32 @s2n_config_set_send_buffer_size(ptr noundef nonnull %388, i32 noundef %.0119) #13
  %468 = icmp slt i32 %467, 0
  br i1 %468, label %469, label %470

469:                                              ; preds = %466
  call void @print_s2n_error(ptr noundef nonnull @.str.144) #13
  call void @exit(i32 noundef 1) #15
  unreachable

470:                                              ; preds = %466, %465
  br i1 %.0116, label %471, label %475

471:                                              ; preds = %470
  %472 = call i32 @s2n_config_set_npn(ptr noundef nonnull %388, i1 noundef zeroext true) #13
  %473 = icmp slt i32 %472, 0
  br i1 %473, label %474, label %475

474:                                              ; preds = %471
  call void @print_s2n_error(ptr noundef nonnull @.str.145) #13
  call void @exit(i32 noundef 1) #15
  unreachable

475:                                              ; preds = %471, %470
  %476 = load ptr, ptr %148, align 8, !tbaa !23
  %.not158 = icmp eq ptr %476, null
  br i1 %.not158, label %481, label %477

477:                                              ; preds = %475
  %478 = call i32 @s2n_config_set_serialization_version(ptr noundef nonnull %388, i32 noundef 1) #13
  %479 = icmp slt i32 %478, 0
  br i1 %479, label %480, label %481

480:                                              ; preds = %477
  call void @print_s2n_error(ptr noundef nonnull @.str.146) #13
  call void @exit(i32 noundef 1) #15
  unreachable

481:                                              ; preds = %477, %475
  %.not159 = icmp eq ptr %.0109, null
  br i1 %.not159, label %490, label %482

482:                                              ; preds = %481
  %483 = call noalias ptr @fopen(ptr noundef nonnull %.0109, ptr noundef nonnull @.str.147)
  %484 = icmp eq ptr %483, null
  br i1 %484, label %485, label %486

485:                                              ; preds = %482
  call void @print_s2n_error(ptr noundef nonnull @.str.148) #13
  call void @exit(i32 noundef 1) #15
  unreachable

486:                                              ; preds = %482
  %487 = call i32 @s2n_config_set_key_log_cb(ptr noundef nonnull %388, ptr noundef nonnull @key_log_callback, ptr noundef nonnull %483) #13
  %488 = icmp slt i32 %487, 0
  br i1 %488, label %489, label %490

489:                                              ; preds = %486
  call void @print_s2n_error(ptr noundef nonnull @.str.149) #13
  call void @exit(i32 noundef 1) #15
  unreachable

490:                                              ; preds = %486, %481
  %.096 = phi ptr [ %483, %486 ], [ null, %481 ]
  %491 = load ptr, ptr %4, align 8, !tbaa !5
  %492 = getelementptr inbounds i8, ptr %491, i64 24
  %493 = load ptr, ptr %492, align 8, !tbaa !29
  %494 = getelementptr inbounds i8, ptr %491, i64 16
  %495 = call i32 @accept(i32 noundef %328, ptr noundef %493, ptr noundef nonnull %494) #13
  %496 = icmp sgt i32 %495, 0
  br i1 %496, label %.lr.ph267, label %._crit_edge268

.lr.ph267:                                        ; preds = %490
  %.not161 = icmp eq i32 %.0125, 0
  br label %497

497:                                              ; preds = %.lr.ph267, %.backedge
  %498 = phi i32 [ %495, %.lr.ph267 ], [ %541, %.backedge ]
  br i1 %.not161, label %510, label %499

499:                                              ; preds = %497
  %500 = call i32 (i32, i32, ...) @fcntl(i32 noundef %328, i32 noundef 3, i32 noundef 0) #13
  %501 = or i32 %500, 2048
  %502 = call i32 (i32, i32, ...) @fcntl(i32 noundef %498, i32 noundef 4, i32 noundef %501) #13
  %503 = icmp slt i32 %502, 0
  br i1 %503, label %504, label %510

504:                                              ; preds = %499
  %505 = load ptr, ptr @stderr, align 8, !tbaa !5
  %506 = tail call ptr @__errno_location() #17
  %507 = load i32, ptr %506, align 4, !tbaa !9
  %508 = call ptr @strerror(i32 noundef %507) #13
  %509 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %505, ptr noundef nonnull @.str.150, ptr noundef %508) #14
  call void @exit(i32 noundef 1) #15
  unreachable

510:                                              ; preds = %499, %497
  %511 = load i32, ptr %9, align 4, !tbaa !9
  %.not162 = icmp eq i32 %511, 0
  br i1 %.not162, label %512, label %528

512:                                              ; preds = %510
  %513 = call i32 @handle_connection(i32 noundef %498, ptr noundef nonnull %388, ptr noundef nonnull byval(%struct.conn_settings) align 8 %8)
  %514 = call i32 @close(i32 noundef %498) #13
  %515 = icmp slt i32 %513, 0
  br i1 %515, label %516, label %517

516:                                              ; preds = %512
  call void @exit(i32 noundef %513) #15
  unreachable

517:                                              ; preds = %512
  %518 = load i32, ptr %16, align 8, !tbaa !11
  %519 = icmp sgt i32 %518, 0
  br i1 %519, label %520, label %.backedge

520:                                              ; preds = %517
  %521 = add nsw i32 %518, -1
  store i32 %521, ptr %16, align 8, !tbaa !11
  %522 = icmp eq i32 %518, 1
  br i1 %522, label %523, label %.backedge

523:                                              ; preds = %520
  %524 = call i32 @s2n_cleanup() #13
  %525 = icmp slt i32 %524, 0
  br i1 %525, label %526, label %527

526:                                              ; preds = %523
  call void @print_s2n_error(ptr noundef nonnull @.str.151) #13
  call void @exit(i32 noundef 1) #15
  unreachable

527:                                              ; preds = %523
  call void @exit(i32 noundef 0) #15
  unreachable

528:                                              ; preds = %510
  %529 = call i32 @fork() #13
  switch i32 %529, label %535 [
    i32 0, label %530
    i32 -1, label %533
  ]

530:                                              ; preds = %528
  %531 = call i32 @handle_connection(i32 noundef %498, ptr noundef nonnull %388, ptr noundef nonnull byval(%struct.conn_settings) align 8 %8)
  %532 = call i32 @close(i32 noundef %498) #13
  call void @_exit(i32 noundef %531) #15
  unreachable

533:                                              ; preds = %528
  %534 = call i32 @close(i32 noundef %498) #13
  call void @print_s2n_error(ptr noundef nonnull @.str.152) #13
  call void @exit(i32 noundef 1) #15
  unreachable

535:                                              ; preds = %528
  %536 = call i32 @close(i32 noundef %498) #13
  br label %.backedge

.backedge:                                        ; preds = %517, %520, %535
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds i8, ptr %537, i64 24
  %539 = load ptr, ptr %538, align 8, !tbaa !29
  %540 = getelementptr inbounds i8, ptr %537, i64 16
  %541 = call i32 @accept(i32 noundef %328, ptr noundef %539, ptr noundef nonnull %540) #13
  %542 = icmp sgt i32 %541, 0
  br i1 %542, label %497, label %._crit_edge268, !llvm.loop !40

._crit_edge268:                                   ; preds = %.backedge, %490
  %.not160 = icmp eq ptr %.096, null
  br i1 %.not160, label %545, label %543

543:                                              ; preds = %._crit_edge268
  %544 = call i32 @fclose(ptr noundef nonnull %.096)
  br label %545

545:                                              ; preds = %._crit_edge268, %543
  %546 = call i32 @s2n_cleanup() #13
  %547 = icmp slt i32 %546, 0
  br i1 %547, label %548, label %549

548:                                              ; preds = %545
  call void @print_s2n_error(ptr noundef nonnull @.str.151) #13
  call void @exit(i32 noundef 1) #15
  unreachable

549:                                              ; preds = %545
  call void @llvm.lifetime.end.p0(i64 1056, ptr nonnull %10) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #13
  ret i32 0
}

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

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

declare ptr @load_file_to_cstring(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nounwind willreturn
declare i64 @strtoul(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: nounwind
declare i64 @strtoimax(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef i32 @setvbuf(ptr nocapture noundef, ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

declare i32 @s2n_init() local_unnamed_addr #4

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

declare ptr @s2n_libcrypto_get_version_name() local_unnamed_addr #4

declare i32 @s2n_get_fips_mode(ptr noundef) local_unnamed_addr #4

declare ptr @s2n_config_new() local_unnamed_addr #4

declare ptr @s2n_cert_chain_and_key_new() local_unnamed_addr #4

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

; Function Attrs: nofree
declare noundef i32 @open(ptr nocapture noundef readonly, i32 noundef, ...) local_unnamed_addr #10

; Function Attrs: nofree nounwind
declare noundef i32 @fstat(i32 noundef, ptr nocapture noundef) local_unnamed_addr #1

; Function Attrs: nounwind
declare ptr @mmap(ptr noundef, i64 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef) local_unnamed_addr #6

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

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) #11

declare i32 @close(i32 noundef) local_unnamed_addr #4

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

declare i32 @s2n_set_common_server_config(i32 noundef, ptr noundef, ptr noundef byval(%struct.conn_settings) align 8, ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

declare i32 @s2n_config_set_npn(ptr noundef, i1 noundef zeroext) local_unnamed_addr #4

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

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #1

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

declare i32 @key_log_callback(ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

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

declare i32 @fcntl(i32 noundef, i32 noundef, ...) local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #4

; Function Attrs: nofree nounwind
declare i32 @fork() local_unnamed_addr #1

; Function Attrs: noreturn
declare void @_exit(i32 noundef) local_unnamed_addr #12

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

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

!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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 8}
!12 = !{!"conn_settings", !10, i64 0, !10, i64 0, !10, i64 0, !10, i64 0, !10, i64 0, !10, i64 0, !10, i64 0, !10, i64 0, !10, i64 1, !10, i64 1, !10, i64 1, !10, i64 4, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !13, i64 128}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !13, i64 128}
!15 = !{!16, !6, i64 0}
!16 = !{!"option", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24}
!17 = !{!16, !10, i64 8}
!18 = !{!16, !6, i64 16}
!19 = !{!16, !10, i64 24}
!20 = !{!12, !6, i64 16}
!21 = !{!12, !6, i64 24}
!22 = !{!12, !10, i64 4}
!23 = !{!12, !6, i64 32}
!24 = !{!12, !6, i64 40}
!25 = !{!26, !10, i64 8}
!26 = !{!"addrinfo", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!27 = !{!26, !10, i64 4}
!28 = !{!26, !10, i64 12}
!29 = !{!26, !6, i64 24}
!30 = !{!26, !10, i64 16}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!34, !13, i64 48}
!34 = !{!"stat", !13, i64 0, !13, i64 8, !13, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !35, i64 72, !35, i64 88, !35, i64 104, !7, i64 120}
!35 = !{!"timespec", !13, i64 0, !13, i64 8}
!36 = !{!7, !7, i64 0}
!37 = !{!38, !10, i64 136}
!38 = !{!"sigaction", !7, i64 0, !39, i64 8, !10, i64 136, !6, i64 144}
!39 = !{!"", !7, i64 0}
!40 = distinct !{!40, !32}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass