; LLVM IR from microsoft/ntttcp-for-linux :: src (endpointsync)

; 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.epoll_event = type <{ i32, %union.epoll_data }>
%union.epoll_data = type { ptr }
%struct.sockaddr_storage = type { i16, [118 x i8], i64 }
%struct.addrinfo = type { i32, i32, i32, i32, i32, ptr, ptr, ptr }
%union.__SOCKADDR_ARG = type { ptr }
%struct.ntttcp_test_endpoint = type { i32, ptr, i32, i32, %struct.timeval, %struct.timeval, i32, i32, i8, ptr, ptr, ptr, i8, ptr, i32, [8 x i32] }
%struct.timeval = type { i64, i64 }
%struct.ntttcp_test = type { i8, i8, i8, i8, i8, i8, i8, ptr, i32, i32, ptr, i32, i32, i8, i32, i32, i32, i32, i64, i64, i64, i64, i32, i32, i32, i8, ptr, ptr, i8, ptr, i8, ptr, i8, ptr, i8, i8 }
%struct.ntttcp_stream_server = type { ptr, i32, i32, ptr, i32, i64, i8, i8, i8, i8, i8, i32, i32, %struct.fd_set, %struct.fd_set, i32, i64 }
%struct.fd_set = type { [16 x i64] }
%struct.sockaddr_in = type { i16, i16, %struct.in_addr, [8 x i8] }
%struct.in_addr = type { i32 }
%struct.sockaddr_in6 = type { i16, i16, i32, %struct.in6_addr, i32 }
%struct.in6_addr = type { %union.anon }
%union.anon = type { [4 x i32] }

@.str = external hidden unnamed_addr constant [45 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [42 x i8], align 1

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #1

declare void @PRINT_ERR(ptr noundef) #2

; Function Attrs: nounwind
declare void @freeaddrinfo(ptr noundef) #3

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

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

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

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #3

declare ptr @retrive_ip_address_str(ptr noundef, ptr noundef, i64 noundef) #2

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

declare void @PRINT_ERR_FREE(ptr noundef) #2

declare i32 @close(i32 noundef) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i16 @__bswap_16(i16 noundef zeroext) #6

declare void @PRINT_DBG_FREE(ptr noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @__bswap_32(i32 noundef) #6

declare i64 @read(i32 noundef, ptr noundef, i64 noundef) #2

declare void @PRINT_INFO(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @reply_sender(i32 noundef, i32 noundef) #7

; Function Attrs: nounwind uwtable
define dso_local ptr @create_receiver_sync_socket(ptr noundef %0) #7 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %struct.epoll_event, align 1
  %18 = alloca ptr, align 8
  %19 = alloca %struct.sockaddr_storage, align 8
  %20 = alloca %struct.sockaddr_storage, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %struct.addrinfo, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca %union.__SOCKADDR_ARG, align 8
  %34 = alloca i32, align 4
  %35 = alloca %union.__SOCKADDR_ARG, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #9
  store ptr null, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #9
  %42 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %42, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #9
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %43, i32 0, i32 1
  %45 = load ptr, ptr %44, align 8, !tbaa !9
  store ptr %45, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  store i32 0, ptr %8, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  store i32 0, ptr %10, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  store i32 0, ptr %11, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  store i32 0, ptr %13, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 128, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 128, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  %47 = call ptr @new_ntttcp_server_stream(ptr noundef %46)
  store ptr %47, ptr %7, align 8, !tbaa !5
  %48 = load ptr, ptr %7, align 8, !tbaa !5
  %49 = icmp eq ptr %48, null
  br i1 %49, label %50, label %51

50:                                               ; preds = %1
  call void @PRINT_ERR(ptr noundef @.str.17)
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

51:                                               ; preds = %1
  %52 = load ptr, ptr %6, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.ntttcp_test, ptr %52, i32 0, i32 16
  %54 = load i32, ptr %53, align 4, !tbaa !16
  %55 = sub i32 %54, 1
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %56, i32 0, i32 4
  store i32 %55, ptr %57, align 8, !tbaa !18
  %58 = load ptr, ptr %7, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %58, i32 0, i32 2
  store i32 1, ptr %59, align 4, !tbaa !21
  %60 = load ptr, ptr %7, align 8, !tbaa !5
  %61 = call i32 @ntttcp_server_listen(ptr noundef %60)
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %62, i32 0, i32 11
  store i32 %61, ptr %63, align 8, !tbaa !22
  %64 = load i32, ptr %8, align 4, !tbaa !15
  %65 = icmp eq i32 %64, -1
  br i1 %65, label %66, label %67

66:                                               ; preds = %51
  call void @PRINT_ERR(ptr noundef @.str.18)
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

67:                                               ; preds = %51
  call void @llvm.memset.p0.i64(ptr align 8 %23, i8 0, i64 48, i1 false)
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.ntttcp_test, ptr %68, i32 0, i32 14
  %70 = load i32, ptr %69, align 4, !tbaa !23
  %71 = getelementptr inbounds %struct.addrinfo, ptr %23, i32 0, i32 1
  store i32 %70, ptr %71, align 4, !tbaa !24
  %72 = getelementptr inbounds %struct.addrinfo, ptr %23, i32 0, i32 2
  store i32 1, ptr %72, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %73 = load ptr, ptr %7, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %73, i32 0, i32 4
  %75 = load i32, ptr %74, align 8, !tbaa !18
  %76 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %26, ptr noundef @.str.1, i32 noundef %75) #9
  store i32 %76, ptr %31, align 4, !tbaa !15
  %77 = load i32, ptr %31, align 4, !tbaa !15
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %67
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %80

80:                                               ; preds = %79, %67
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.ntttcp_test, ptr %81, i32 0, i32 10
  %83 = load ptr, ptr %82, align 8, !tbaa !27
  %84 = load ptr, ptr %26, align 8, !tbaa !5
  %85 = call i32 @getaddrinfo(ptr noundef %83, ptr noundef %84, ptr noundef %23, ptr noundef %24)
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %80
  call void @PRINT_ERR(ptr noundef @.str.3)
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

88:                                               ; preds = %80
  %89 = load ptr, ptr %26, align 8, !tbaa !5
  call void @free(ptr noundef %89) #9
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ntttcp_test, ptr %90, i32 0, i32 14
  %92 = load i32, ptr %91, align 4, !tbaa !23
  %93 = icmp eq i32 %92, 2
  %94 = zext i1 %93 to i64
  %95 = select i1 %93, i32 16, i32 46
  store i32 %95, ptr %27, align 4, !tbaa !15
  %96 = load i32, ptr %27, align 4, !tbaa !15
  %97 = sext i32 %96 to i64
  %98 = call noalias ptr @malloc(i64 noundef %97) #10
  store ptr %98, ptr %25, align 8, !tbaa !5
  %99 = icmp eq ptr %98, null
  br i1 %99, label %100, label %102

100:                                              ; preds = %88
  call void @PRINT_ERR(ptr noundef @.str)
  %101 = load ptr, ptr %24, align 8, !tbaa !5
  call void @freeaddrinfo(ptr noundef %101) #9
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

102:                                              ; preds = %88
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %103, i32 0, i32 1
  %105 = load i32, ptr %104, align 8, !tbaa !28
  %106 = icmp eq i32 %105, 2
  %107 = zext i1 %106 to i64
  %108 = select i1 %106, i32 16, i32 46
  store i32 %108, ptr %27, align 4, !tbaa !15
  %109 = load i32, ptr %27, align 4, !tbaa !15
  %110 = sext i32 %109 to i64
  %111 = call noalias ptr @malloc(i64 noundef %110) #10
  store ptr %111, ptr %25, align 8, !tbaa !5
  %112 = icmp eq ptr %111, null
  br i1 %112, label %113, label %114

113:                                              ; preds = %102
  call void @PRINT_ERR(ptr noundef @.str.19)
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

114:                                              ; preds = %102
  %115 = call i32 @epoll_create1(i32 noundef 0) #9
  store i32 %115, ptr %16, align 4, !tbaa !15
  %116 = load i32, ptr %16, align 4, !tbaa !15
  %117 = icmp eq i32 %116, -1
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  call void @PRINT_ERR(ptr noundef @.str.20)
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

119:                                              ; preds = %114
  %120 = load ptr, ptr %7, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %120, i32 0, i32 11
  %122 = load i32, ptr %121, align 8, !tbaa !22
  %123 = getelementptr inbounds %struct.epoll_event, ptr %17, i32 0, i32 1
  store i32 %122, ptr %123, align 1, !tbaa !29
  %124 = getelementptr inbounds %struct.epoll_event, ptr %17, i32 0, i32 0
  store i32 1, ptr %124, align 1, !tbaa !30
  %125 = load i32, ptr %16, align 4, !tbaa !15
  %126 = load ptr, ptr %7, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %126, i32 0, i32 11
  %128 = load i32, ptr %127, align 8, !tbaa !22
  %129 = call i32 @epoll_ctl(i32 noundef %125, i32 noundef 1, i32 noundef %128, ptr noundef %17) #9
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %134

131:                                              ; preds = %119
  call void @PRINT_ERR(ptr noundef @.str.21)
  %132 = load i32, ptr %16, align 4, !tbaa !15
  %133 = call i32 @close(i32 noundef %132)
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

134:                                              ; preds = %119
  %135 = call noalias ptr @calloc(i64 noundef 512, i64 noundef 12) #11
  store ptr %135, ptr %18, align 8, !tbaa !5
  br label %136

136:                                              ; preds = %543, %174, %134
  br label %137

137:                                              ; preds = %136
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %138, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8, !tbaa !32
  %141 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %140, i32 0, i32 8
  %142 = load i8, ptr %141, align 8, !tbaa !33, !range !34, !noundef !35
  %143 = trunc i8 %142 to i1
  br i1 %143, label %144, label %152

144:                                              ; preds = %137
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %145, i32 0, i32 0
  %147 = load ptr, ptr %146, align 8, !tbaa !32
  %148 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %147, i32 0, i32 2
  %149 = load i32, ptr %148, align 8, !tbaa !36
  %150 = icmp eq i32 %149, 13
  br i1 %150, label %151, label %152

151:                                              ; preds = %144
  br label %544

152:                                              ; preds = %144, %137
  %153 = load i32, ptr %16, align 4, !tbaa !15
  %154 = load ptr, ptr %18, align 8, !tbaa !5
  %155 = load ptr, ptr %7, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %155, i32 0, i32 12
  %157 = load i32, ptr %156, align 4, !tbaa !37
  %158 = add nsw i32 %157, 1
  %159 = call i32 @epoll_wait(i32 noundef %153, ptr noundef %154, i32 noundef %158, i32 noundef -1)
  store i32 %159, ptr %13, align 4, !tbaa !15
  %160 = load i32, ptr %13, align 4, !tbaa !15
  %161 = icmp slt i32 %160, 0
  br i1 %161, label %162, label %176

162:                                              ; preds = %152
  %163 = call ptr @__errno_location() #12
  %164 = load i32, ptr %163, align 4, !tbaa !15
  %165 = icmp ne i32 %164, 4
  br i1 %165, label %166, label %176

166:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %167 = call ptr @__errno_location() #12
  %168 = load i32, ptr %167, align 4, !tbaa !15
  %169 = load i32, ptr %13, align 4, !tbaa !15
  %170 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.22, i32 noundef %168, i32 noundef %169) #9
  store i32 %170, ptr %32, align 4, !tbaa !15
  %171 = load i32, ptr %32, align 4, !tbaa !15
  %172 = icmp slt i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %166
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %174

174:                                              ; preds = %173, %166
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_ERR_FREE(ptr noundef %175)
  br label %136

176:                                              ; preds = %162, %152
  store i32 0, ptr %29, align 4, !tbaa !15
  br label %177

177:                                              ; preds = %540, %176
  %178 = load i32, ptr %29, align 4, !tbaa !15
  %179 = load i32, ptr %13, align 4, !tbaa !15
  %180 = icmp slt i32 %178, %179
  br i1 %180, label %181, label %543

181:                                              ; preds = %177
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = load i32, ptr %29, align 4, !tbaa !15
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.epoll_event, ptr %182, i64 %184
  %186 = getelementptr inbounds %struct.epoll_event, ptr %185, i32 0, i32 1
  %187 = load i32, ptr %186, align 1, !tbaa !29
  store i32 %187, ptr %15, align 4, !tbaa !15
  %188 = load ptr, ptr %18, align 8, !tbaa !5
  %189 = load i32, ptr %29, align 4, !tbaa !15
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds %struct.epoll_event, ptr %188, i64 %190
  %192 = getelementptr inbounds %struct.epoll_event, ptr %191, i32 0, i32 0
  %193 = load i32, ptr %192, align 1, !tbaa !30
  %194 = and i32 %193, 8
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %214, label %196

196:                                              ; preds = %181
  %197 = load ptr, ptr %18, align 8, !tbaa !5
  %198 = load i32, ptr %29, align 4, !tbaa !15
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds %struct.epoll_event, ptr %197, i64 %199
  %201 = getelementptr inbounds %struct.epoll_event, ptr %200, i32 0, i32 0
  %202 = load i32, ptr %201, align 1, !tbaa !30
  %203 = and i32 %202, 16
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %214, label %205

205:                                              ; preds = %196
  %206 = load ptr, ptr %18, align 8, !tbaa !5
  %207 = load i32, ptr %29, align 4, !tbaa !15
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds %struct.epoll_event, ptr %206, i64 %208
  %210 = getelementptr inbounds %struct.epoll_event, ptr %209, i32 0, i32 0
  %211 = load i32, ptr %210, align 1, !tbaa !30
  %212 = and i32 %211, 1
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %217, label %214

214:                                              ; preds = %205, %196, %181
  call void @PRINT_ERR(ptr noundef @.str.23)
  %215 = load i32, ptr %15, align 4, !tbaa !15
  %216 = call i32 @close(i32 noundef %215)
  br label %540

217:                                              ; preds = %205
  %218 = load i32, ptr %15, align 4, !tbaa !15
  %219 = load ptr, ptr %7, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %219, i32 0, i32 11
  %221 = load i32, ptr %220, align 8, !tbaa !22
  %222 = icmp eq i32 %218, %221
  br i1 %222, label %223, label %324

223:                                              ; preds = %217
  store i32 128, ptr %21, align 4, !tbaa !15
  %224 = load ptr, ptr %7, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %224, i32 0, i32 11
  %226 = load i32, ptr %225, align 8, !tbaa !22
  store ptr %19, ptr %33, align 8, !tbaa !29
  %227 = getelementptr inbounds %union.__SOCKADDR_ARG, ptr %33, i32 0, i32 0
  %228 = load ptr, ptr %227, align 8
  %229 = call i32 @accept(i32 noundef %226, ptr %228, ptr noundef %21)
  store i32 %229, ptr %14, align 4, !tbaa !15
  %230 = icmp slt i32 %229, 0
  br i1 %230, label %231, label %232

231:                                              ; preds = %223
  br label %543

232:                                              ; preds = %223
  %233 = load i32, ptr %14, align 4, !tbaa !15
  %234 = call i32 @set_socket_non_blocking(i32 noundef %233)
  %235 = icmp eq i32 %234, -1
  br i1 %235, label %236, label %244

236:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %237 = load i32, ptr %14, align 4, !tbaa !15
  %238 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.24, i32 noundef %237) #9
  store i32 %238, ptr %34, align 4, !tbaa !15
  %239 = load i32, ptr %34, align 4, !tbaa !15
  %240 = icmp slt i32 %239, 0
  br i1 %240, label %241, label %242

241:                                              ; preds = %236
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %242

242:                                              ; preds = %241, %236
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %243)
  br label %244

244:                                              ; preds = %242, %232
  %245 = load i32, ptr %14, align 4, !tbaa !15
  %246 = getelementptr inbounds %struct.epoll_event, ptr %17, i32 0, i32 1
  store i32 %245, ptr %246, align 1, !tbaa !29
  %247 = getelementptr inbounds %struct.epoll_event, ptr %17, i32 0, i32 0
  store i32 1, ptr %247, align 1, !tbaa !30
  %248 = load i32, ptr %16, align 4, !tbaa !15
  %249 = load i32, ptr %14, align 4, !tbaa !15
  %250 = call i32 @epoll_ctl(i32 noundef %248, i32 noundef 1, i32 noundef %249, ptr noundef %17) #9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %253

252:                                              ; preds = %244
  call void @PRINT_ERR(ptr noundef @.str.21)
  br label %253

253:                                              ; preds = %252, %244
  %254 = load i32, ptr %14, align 4, !tbaa !15
  %255 = load ptr, ptr %7, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %255, i32 0, i32 12
  %257 = load i32, ptr %256, align 4, !tbaa !37
  %258 = icmp sgt i32 %254, %257
  br i1 %258, label %259, label %263

259:                                              ; preds = %253
  %260 = load i32, ptr %14, align 4, !tbaa !15
  %261 = load ptr, ptr %7, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %261, i32 0, i32 12
  store i32 %260, ptr %262, align 4, !tbaa !37
  br label %263

263:                                              ; preds = %259, %253
  store i32 128, ptr %22, align 4, !tbaa !15
  %264 = load i32, ptr %14, align 4, !tbaa !15
  store ptr %20, ptr %35, align 8, !tbaa !29
  %265 = getelementptr inbounds %union.__SOCKADDR_ARG, ptr %35, i32 0, i32 0
  %266 = load ptr, ptr %265, align 8
  %267 = call i32 @getsockname(i32 noundef %264, ptr %266, ptr noundef %22) #9
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %277

269:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %270 = load i32, ptr %14, align 4, !tbaa !15
  %271 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.25, i32 noundef %270) #9
  store i32 %271, ptr %36, align 4, !tbaa !15
  %272 = load i32, ptr %36, align 4, !tbaa !15
  %273 = icmp slt i32 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %269
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %275

275:                                              ; preds = %274, %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %276)
  br label %323

277:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  %278 = load ptr, ptr %25, align 8, !tbaa !5
  %279 = load i32, ptr %27, align 4, !tbaa !15
  %280 = sext i32 %279 to i64
  %281 = call ptr @retrive_ip_address_str(ptr noundef %19, ptr noundef %278, i64 noundef %280)
  store ptr %281, ptr %25, align 8, !tbaa !5
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ntttcp_test, ptr %282, i32 0, i32 14
  %284 = load i32, ptr %283, align 4, !tbaa !23
  %285 = icmp eq i32 %284, 2
  br i1 %285, label %286, label %290

286:                                              ; preds = %277
  %287 = getelementptr inbounds %struct.sockaddr_in, ptr %19, i32 0, i32 1
  %288 = load i16, ptr %287, align 2, !tbaa !38
  %289 = zext i16 %288 to i32
  br label %294

290:                                              ; preds = %277
  %291 = getelementptr inbounds %struct.sockaddr_in6, ptr %19, i32 0, i32 1
  %292 = load i16, ptr %291, align 2, !tbaa !42
  %293 = zext i16 %292 to i32
  br label %294

294:                                              ; preds = %290, %286
  %295 = phi i32 [ %289, %286 ], [ %293, %290 ]
  %296 = trunc i32 %295 to i16
  %297 = call zeroext i16 @__bswap_16(i16 noundef zeroext %296)
  %298 = zext i16 %297 to i32
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.ntttcp_test, ptr %299, i32 0, i32 14
  %301 = load i32, ptr %300, align 4, !tbaa !23
  %302 = icmp eq i32 %301, 2
  br i1 %302, label %303, label %307

303:                                              ; preds = %294
  %304 = getelementptr inbounds %struct.sockaddr_in, ptr %20, i32 0, i32 1
  %305 = load i16, ptr %304, align 2, !tbaa !38
  %306 = zext i16 %305 to i32
  br label %311

307:                                              ; preds = %294
  %308 = getelementptr inbounds %struct.sockaddr_in6, ptr %20, i32 0, i32 1
  %309 = load i16, ptr %308, align 2, !tbaa !42
  %310 = zext i16 %309 to i32
  br label %311

311:                                              ; preds = %307, %303
  %312 = phi i32 [ %306, %303 ], [ %310, %307 ]
  %313 = trunc i32 %312 to i16
  %314 = call zeroext i16 @__bswap_16(i16 noundef zeroext %313)
  %315 = zext i16 %314 to i32
  %316 = load i32, ptr %14, align 4, !tbaa !15
  %317 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.26, ptr noundef %281, i32 noundef %298, i32 noundef %315, i32 noundef %316) #9
  store i32 %317, ptr %37, align 4, !tbaa !15
  %318 = load i32, ptr %37, align 4, !tbaa !15
  %319 = icmp slt i32 %318, 0
  br i1 %319, label %320, label %321

320:                                              ; preds = %311
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %321

321:                                              ; preds = %320, %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %322)
  br label %323

323:                                              ; preds = %321, %275
  br label %539

324:                                              ; preds = %217
  %325 = load i32, ptr %15, align 4, !tbaa !15
  %326 = call i64 @read(i32 noundef %325, ptr noundef %11, i64 noundef 4)
  %327 = trunc i64 %326 to i32
  store i32 %327, ptr %12, align 4, !tbaa !15
  %328 = icmp sle i32 %327, 0
  br i1 %328, label %329, label %351

329:                                              ; preds = %324
  %330 = load i32, ptr %12, align 4, !tbaa !15
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %332, label %340

332:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  %333 = load i32, ptr %15, align 4, !tbaa !15
  %334 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.27, i32 noundef %333) #9
  store i32 %334, ptr %38, align 4, !tbaa !15
  %335 = load i32, ptr %38, align 4, !tbaa !15
  %336 = icmp slt i32 %335, 0
  br i1 %336, label %337, label %338

337:                                              ; preds = %332
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %338

338:                                              ; preds = %337, %332
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  %339 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %339)
  br label %348

340:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  %341 = load i32, ptr %15, align 4, !tbaa !15
  %342 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.28, i32 noundef %341) #9
  store i32 %342, ptr %39, align 4, !tbaa !15
  %343 = load i32, ptr %39, align 4, !tbaa !15
  %344 = icmp slt i32 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %340
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %346

346:                                              ; preds = %345, %340
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_ERR_FREE(ptr noundef %347)
  br label %348

348:                                              ; preds = %346, %338
  %349 = load i32, ptr %15, align 4, !tbaa !15
  %350 = call i32 @close(i32 noundef %349)
  br label %538

351:                                              ; preds = %324
  %352 = load i32, ptr %11, align 4, !tbaa !15
  %353 = call i32 @__bswap_32(i32 noundef %352)
  store i32 %353, ptr %10, align 4, !tbaa !15
  %354 = load i32, ptr %10, align 4, !tbaa !15
  switch i32 %354, label %460 [
    i32 69, label %355
    i32 88, label %373
    i32 82, label %377
    i32 76, label %407
  ]

355:                                              ; preds = %351
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %356, i32 0, i32 2
  %358 = load i32, ptr %357, align 8, !tbaa !36
  %359 = icmp eq i32 %358, 12
  br i1 %359, label %360, label %369

360:                                              ; preds = %355
  call void @turn_off_light()
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %361, i32 0, i32 2
  store i32 13, ptr %362, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  %363 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.29) #9
  store i32 %363, ptr %40, align 4, !tbaa !15
  %364 = load i32, ptr %40, align 4, !tbaa !15
  %365 = icmp slt i32 %364, 0
  br i1 %365, label %366, label %367

366:                                              ; preds = %360
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %367

367:                                              ; preds = %366, %360
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  %368 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_INFO_FREE(ptr noundef %368)
  br label %369

369:                                              ; preds = %367, %355
  %370 = load ptr, ptr %5, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %370, i32 0, i32 2
  %372 = load i32, ptr %371, align 8, !tbaa !36
  store i32 %372, ptr %9, align 4, !tbaa !15
  br label %535

373:                                              ; preds = %351
  %374 = load ptr, ptr %5, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %374, i32 0, i32 2
  %376 = load i32, ptr %375, align 8, !tbaa !36
  store i32 %376, ptr %9, align 4, !tbaa !15
  br label %535

377:                                              ; preds = %351
  %378 = load ptr, ptr %5, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %378, i32 0, i32 1
  %380 = load ptr, ptr %379, align 8, !tbaa !9
  %381 = getelementptr inbounds %struct.ntttcp_test, ptr %380, i32 0, i32 2
  %382 = load i8, ptr %381, align 2, !tbaa !45, !range !34, !noundef !35
  %383 = trunc i8 %382 to i1
  %384 = zext i1 %383 to i32
  %385 = icmp eq i32 %384, 1
  br i1 %385, label %386, label %403

386:                                              ; preds = %377
  %387 = load ptr, ptr %5, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %387, i32 0, i32 14
  %389 = load i32, ptr %388, align 8, !tbaa !46
  %390 = icmp sge i32 %389, 7
  br i1 %390, label %391, label %392

391:                                              ; preds = %386
  call void @PRINT_ERR(ptr noundef @.str.30)
  store i32 69, ptr %9, align 4, !tbaa !15
  br label %402

392:                                              ; preds = %386
  store i32 87, ptr %9, align 4, !tbaa !15
  %393 = load i32, ptr %15, align 4, !tbaa !15
  %394 = load ptr, ptr %5, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %394, i32 0, i32 15
  %396 = load ptr, ptr %5, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %396, i32 0, i32 14
  %398 = load i32, ptr %397, align 8, !tbaa !46
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %397, align 8, !tbaa !46
  %400 = sext i32 %398 to i64
  %401 = getelementptr inbounds [8 x i32], ptr %395, i64 0, i64 %400
  store i32 %393, ptr %401, align 4, !tbaa !15
  br label %402

402:                                              ; preds = %392, %391
  br label %406

403:                                              ; preds = %377
  store i32 82, ptr %9, align 4, !tbaa !15
  %404 = load ptr, ptr %5, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %404, i32 0, i32 2
  store i32 12, ptr %405, align 8, !tbaa !36
  call void @turn_on_light()
  call void @PRINT_INFO(ptr noundef @.str.31)
  br label %406

406:                                              ; preds = %403, %402
  br label %535

407:                                              ; preds = %351
  %408 = load ptr, ptr %5, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %408, i32 0, i32 1
  %410 = load ptr, ptr %409, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.ntttcp_test, ptr %410, i32 0, i32 2
  %412 = load i8, ptr %411, align 2, !tbaa !45, !range !34, !noundef !35
  %413 = trunc i8 %412 to i1
  %414 = zext i1 %413 to i32
  %415 = icmp eq i32 %414, 1
  br i1 %415, label %416, label %458

416:                                              ; preds = %407
  %417 = load ptr, ptr %5, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %417, i32 0, i32 14
  %419 = load i32, ptr %418, align 8, !tbaa !46
  %420 = icmp sge i32 %419, 8
  br i1 %420, label %421, label %422

421:                                              ; preds = %416
  store i32 69, ptr %9, align 4, !tbaa !15
  br label %422

422:                                              ; preds = %421, %416
  %423 = load i32, ptr %15, align 4, !tbaa !15
  %424 = load ptr, ptr %5, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %424, i32 0, i32 15
  %426 = load ptr, ptr %5, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %426, i32 0, i32 14
  %428 = load i32, ptr %427, align 8, !tbaa !46
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %427, align 8, !tbaa !46
  %430 = sext i32 %428 to i64
  %431 = getelementptr inbounds [8 x i32], ptr %425, i64 0, i64 %430
  store i32 %423, ptr %431, align 4, !tbaa !15
  store i32 82, ptr %9, align 4, !tbaa !15
  store i32 0, ptr %28, align 4, !tbaa !15
  br label %432

432:                                              ; preds = %452, %422
  %433 = load i32, ptr %28, align 4, !tbaa !15
  %434 = icmp slt i32 %433, 8
  br i1 %434, label %435, label %455

435:                                              ; preds = %432
  %436 = load ptr, ptr %5, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %436, i32 0, i32 15
  %438 = load i32, ptr %28, align 4, !tbaa !15
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [8 x i32], ptr %437, i64 0, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !15
  %442 = icmp ne i32 %441, -1
  br i1 %442, label %443, label %451

443:                                              ; preds = %435
  %444 = load ptr, ptr %5, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %444, i32 0, i32 15
  %446 = load i32, ptr %28, align 4, !tbaa !15
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds [8 x i32], ptr %445, i64 0, i64 %447
  %449 = load i32, ptr %448, align 4, !tbaa !15
  %450 = load i32, ptr %9, align 4, !tbaa !15
  call void @reply_sender(i32 noundef %449, i32 noundef %450)
  br label %451

451:                                              ; preds = %443, %435
  br label %452

452:                                              ; preds = %451
  %453 = load i32, ptr %28, align 4, !tbaa !15
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %28, align 4, !tbaa !15
  br label %432, !llvm.loop !47

455:                                              ; preds = %432
  %456 = load ptr, ptr %5, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %456, i32 0, i32 2
  store i32 12, ptr %457, align 8, !tbaa !36
  call void @turn_on_light()
  call void @PRINT_INFO(ptr noundef @.str.31)
  br label %459

458:                                              ; preds = %407
  call void @PRINT_ERR(ptr noundef @.str.32)
  call void @PRINT_ERR(ptr noundef @.str.33)
  call void @PRINT_ERR(ptr noundef @.str.34)
  br label %459

459:                                              ; preds = %458, %455
  br label %535

460:                                              ; preds = %351
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %461, i32 0, i32 1
  %463 = load ptr, ptr %462, align 8, !tbaa !9
  %464 = getelementptr inbounds %struct.ntttcp_test, ptr %463, i32 0, i32 2
  %465 = load i8, ptr %464, align 2, !tbaa !45, !range !34, !noundef !35
  %466 = trunc i8 %465 to i1
  %467 = zext i1 %466 to i32
  %468 = icmp eq i32 %467, 1
  br i1 %468, label %469, label %478

469:                                              ; preds = %460
  %470 = load ptr, ptr %5, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %470, i32 0, i32 1
  %472 = load ptr, ptr %471, align 8, !tbaa !9
  %473 = getelementptr inbounds %struct.ntttcp_test, ptr %472, i32 0, i32 23
  %474 = load i32, ptr %473, align 4, !tbaa !49
  store i32 %474, ptr %9, align 4, !tbaa !15
  %475 = load i32, ptr %9, align 4, !tbaa !15
  %476 = load ptr, ptr %5, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %476, i32 0, i32 3
  store i32 %475, ptr %477, align 4, !tbaa !50
  br label %534

478:                                              ; preds = %460
  %479 = load i32, ptr %10, align 4, !tbaa !15
  %480 = icmp eq i32 %479, 0
  br i1 %480, label %481, label %492

481:                                              ; preds = %478
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %482, i32 0, i32 1
  %484 = load ptr, ptr %483, align 8, !tbaa !9
  %485 = getelementptr inbounds %struct.ntttcp_test, ptr %484, i32 0, i32 23
  %486 = load i32, ptr %485, align 4, !tbaa !49
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %489

488:                                              ; preds = %481
  call void @PRINT_INFO(ptr noundef @.str.35)
  br label %489

489:                                              ; preds = %488, %481
  store i32 0, ptr %9, align 4, !tbaa !15
  %490 = load ptr, ptr %5, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %490, i32 0, i32 3
  store i32 0, ptr %491, align 4, !tbaa !50
  br label %533

492:                                              ; preds = %478
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %493, i32 0, i32 1
  %495 = load ptr, ptr %494, align 8, !tbaa !9
  %496 = getelementptr inbounds %struct.ntttcp_test, ptr %495, i32 0, i32 23
  %497 = load i32, ptr %496, align 4, !tbaa !49
  %498 = icmp eq i32 %497, 0
  br i1 %498, label %499, label %502

499:                                              ; preds = %492
  store i32 0, ptr %9, align 4, !tbaa !15
  %500 = load ptr, ptr %5, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %500, i32 0, i32 3
  store i32 0, ptr %501, align 4, !tbaa !50
  br label %532

502:                                              ; preds = %492
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %503, i32 0, i32 1
  %505 = load ptr, ptr %504, align 8, !tbaa !9
  %506 = getelementptr inbounds %struct.ntttcp_test, ptr %505, i32 0, i32 23
  %507 = load i32, ptr %506, align 4, !tbaa !49
  %508 = load i32, ptr %10, align 4, !tbaa !15
  %509 = icmp slt i32 %507, %508
  br i1 %509, label %510, label %522

510:                                              ; preds = %502
  %511 = load i32, ptr %10, align 4, !tbaa !15
  store i32 %511, ptr %9, align 4, !tbaa !15
  %512 = load i32, ptr %9, align 4, !tbaa !15
  %513 = load ptr, ptr %5, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %513, i32 0, i32 3
  store i32 %512, ptr %514, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %515 = load i32, ptr %9, align 4, !tbaa !15
  %516 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef %4, ptr noundef @.str.36, i32 noundef %515) #9
  store i32 %516, ptr %41, align 4, !tbaa !15
  %517 = load i32, ptr %41, align 4, !tbaa !15
  %518 = icmp slt i32 %517, 0
  br i1 %518, label %519, label %520

519:                                              ; preds = %510
  call void @PRINT_ERR(ptr noundef @.str.2)
  br label %520

520:                                              ; preds = %519, %510
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  call void @PRINT_INFO_FREE(ptr noundef %521)
  br label %531

522:                                              ; preds = %502
  %523 = load ptr, ptr %5, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %523, i32 0, i32 1
  %525 = load ptr, ptr %524, align 8, !tbaa !9
  %526 = getelementptr inbounds %struct.ntttcp_test, ptr %525, i32 0, i32 23
  %527 = load i32, ptr %526, align 4, !tbaa !49
  store i32 %527, ptr %9, align 4, !tbaa !15
  %528 = load i32, ptr %9, align 4, !tbaa !15
  %529 = load ptr, ptr %5, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ntttcp_test_endpoint, ptr %529, i32 0, i32 3
  store i32 %528, ptr %530, align 4, !tbaa !50
  br label %531

531:                                              ; preds = %522, %520
  br label %532

532:                                              ; preds = %531, %499
  br label %533

533:                                              ; preds = %532, %489
  br label %534

534:                                              ; preds = %533, %469
  br label %535

535:                                              ; preds = %534, %459, %406, %373, %369
  %536 = load i32, ptr %15, align 4, !tbaa !15
  %537 = load i32, ptr %9, align 4, !tbaa !15
  call void @reply_sender(i32 noundef %536, i32 noundef %537)
  br label %538

538:                                              ; preds = %535, %348
  br label %539

539:                                              ; preds = %538, %323
  br label %540

540:                                              ; preds = %539, %214
  %541 = load i32, ptr %29, align 4, !tbaa !15
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %29, align 4, !tbaa !15
  br label %177, !llvm.loop !51

543:                                              ; preds = %231, %177
  br label %136

544:                                              ; preds = %151
  %545 = load ptr, ptr %25, align 8, !tbaa !5
  call void @free(ptr noundef %545) #9
  %546 = load ptr, ptr %18, align 8, !tbaa !5
  call void @free(ptr noundef %546) #9
  %547 = load i32, ptr %16, align 4, !tbaa !15
  %548 = call i32 @close(i32 noundef %547)
  %549 = load ptr, ptr %7, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ntttcp_stream_server, ptr %549, i32 0, i32 11
  %551 = load i32, ptr %550, align 8, !tbaa !22
  %552 = call i32 @close(i32 noundef %551)
  %553 = load ptr, ptr %7, align 8, !tbaa !5
  call void @free(ptr noundef %553) #9
  store ptr null, ptr %2, align 8
  store i32 1, ptr %30, align 4
  br label %554

554:                                              ; preds = %544, %131, %118, %113, %100, %87, %66, %50
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  %555 = load ptr, ptr %2, align 8
  ret ptr %555
}

declare ptr @new_ntttcp_server_stream(ptr noundef) #2

declare i32 @ntttcp_server_listen(ptr noundef) #2

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

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

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #8

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

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

declare i32 @set_socket_non_blocking(i32 noundef) #2

declare void @turn_off_light() #2

declare void @PRINT_INFO_FREE(ptr noundef) #2

declare void @turn_on_light() #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind allocsize(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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind allocsize(0,1) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { nounwind allocsize(0) }
attributes #11 = { nounwind allocsize(0,1) }
attributes #12 = { 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, !6, i64 8}
!10 = !{!"ntttcp_test_endpoint", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !12, i64 24, !12, i64 40, !11, i64 56, !11, i64 60, !14, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !14, i64 96, !6, i64 104, !11, i64 112, !7, i64 116}
!11 = !{!"int", !7, i64 0}
!12 = !{!"timeval", !13, i64 0, !13, i64 8}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_Bool", !7, i64 0}
!15 = !{!11, !11, i64 0}
!16 = !{!17, !11, i64 52}
!17 = !{!"ntttcp_test", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !11, i64 32, !11, i64 36, !14, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !11, i64 96, !11, i64 100, !11, i64 104, !14, i64 108, !6, i64 112, !6, i64 120, !14, i64 128, !6, i64 136, !14, i64 144, !6, i64 152, !14, i64 160, !6, i64 168, !14, i64 176, !14, i64 177}
!18 = !{!19, !11, i64 24}
!19 = !{!"ntttcp_stream_server", !6, i64 0, !11, i64 8, !11, i64 12, !6, i64 16, !11, i64 24, !13, i64 32, !14, i64 40, !14, i64 41, !14, i64 42, !14, i64 43, !14, i64 44, !11, i64 48, !11, i64 52, !20, i64 56, !20, i64 184, !11, i64 312, !13, i64 320}
!20 = !{!"", !7, i64 0}
!21 = !{!19, !11, i64 12}
!22 = !{!19, !11, i64 48}
!23 = !{!17, !11, i64 44}
!24 = !{!25, !11, i64 4}
!25 = !{!"addrinfo", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!26 = !{!25, !11, i64 8}
!27 = !{!17, !6, i64 24}
!28 = !{!19, !11, i64 8}
!29 = !{!7, !7, i64 0}
!30 = !{!31, !11, i64 0}
!31 = !{!"epoll_event", !11, i64 0, !7, i64 4}
!32 = !{!19, !6, i64 0}
!33 = !{!10, !14, i64 64}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!10, !11, i64 16}
!37 = !{!19, !11, i64 52}
!38 = !{!39, !40, i64 2}
!39 = !{!"sockaddr_in", !40, i64 0, !40, i64 2, !41, i64 4, !7, i64 8}
!40 = !{!"short", !7, i64 0}
!41 = !{!"in_addr", !11, i64 0}
!42 = !{!43, !40, i64 2}
!43 = !{!"sockaddr_in6", !40, i64 0, !40, i64 2, !11, i64 4, !44, i64 8, !11, i64 24}
!44 = !{!"in6_addr", !7, i64 0}
!45 = !{!17, !14, i64 2}
!46 = !{!10, !11, i64 112}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = !{!17, !11, i64 100}
!50 = !{!10, !11, i64 20}
!51 = distinct !{!51, !48}


; 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.epoll_event = type <{ i32, %union.epoll_data }>
%union.epoll_data = type { ptr }
%struct.sockaddr_storage = type { i16, [118 x i8], i64 }
%struct.addrinfo = type { i32, i32, i32, i32, i32, ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [42 x i8], align 1

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #1

declare void @PRINT_ERR(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind
declare i32 @asprintf(ptr noundef, 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) #0

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #5

declare ptr @retrive_ip_address_str(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare void @PRINT_ERR_FREE(ptr noundef) local_unnamed_addr #2

declare i32 @close(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind
declare i32 @getsockname(i32 noundef, ptr, ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i16 @__bswap_16(i16 noundef zeroext) local_unnamed_addr #7

declare void @PRINT_DBG_FREE(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @__bswap_32(i32 noundef) local_unnamed_addr #7

; Function Attrs: nofree
declare noundef i64 @read(i32 noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #8

declare void @PRINT_INFO(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @reply_sender(i32 noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: nounwind uwtable
define dso_local noalias noundef ptr @create_receiver_sync_socket(ptr noundef %0) local_unnamed_addr #9 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca %struct.epoll_event, align 4
  %5 = alloca %struct.sockaddr_storage, align 8
  %6 = alloca %struct.sockaddr_storage, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %struct.addrinfo, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #11
  store ptr null, ptr %2, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %0, i64 8
  %13 = load ptr, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #11
  store i32 0, ptr %3, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %14 = tail call ptr @new_ntttcp_server_stream(ptr noundef %0) #11
  %15 = icmp eq ptr %14, null
  br i1 %15, label %16, label %17

16:                                               ; preds = %1
  tail call void @PRINT_ERR(ptr noundef nonnull @.str.17) #11
  br label %263

17:                                               ; preds = %1
  %18 = getelementptr inbounds i8, ptr %13, i64 52
  %19 = load i32, ptr %18, align 4, !tbaa !16
  %20 = add i32 %19, -1
  %21 = getelementptr inbounds i8, ptr %14, i64 24
  store i32 %20, ptr %21, align 8, !tbaa !18
  %22 = getelementptr inbounds i8, ptr %14, i64 12
  store i32 1, ptr %22, align 4, !tbaa !21
  %23 = tail call i32 @ntttcp_server_listen(ptr noundef nonnull %14) #11
  %24 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 %23, ptr %24, align 8, !tbaa !22
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %9, i8 0, i64 48, i1 false)
  %25 = getelementptr inbounds i8, ptr %13, i64 44
  %26 = load i32, ptr %25, align 4, !tbaa !23
  %27 = getelementptr inbounds i8, ptr %9, i64 4
  store i32 %26, ptr %27, align 4, !tbaa !24
  %28 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 1, ptr %28, align 8, !tbaa !26
  %29 = load i32, ptr %21, align 8, !tbaa !18
  %30 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %11, ptr noundef nonnull @.str.1, i32 noundef %29) #11
  %31 = icmp slt i32 %30, 0
  br i1 %31, label %32, label %33

32:                                               ; preds = %17
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %33

33:                                               ; preds = %32, %17
  %34 = getelementptr inbounds i8, ptr %13, i64 24
  %35 = load ptr, ptr %34, align 8, !tbaa !27
  %36 = load ptr, ptr %11, align 8, !tbaa !5
  %37 = call i32 @getaddrinfo(ptr noundef %35, ptr noundef %36, ptr noundef nonnull %9, ptr noundef nonnull %10) #11
  %.not = icmp eq i32 %37, 0
  br i1 %.not, label %39, label %38

38:                                               ; preds = %33
  call void @PRINT_ERR(ptr noundef nonnull @.str.3) #11
  br label %263

39:                                               ; preds = %33
  %40 = load ptr, ptr %11, align 8, !tbaa !5
  call void @free(ptr noundef %40) #11
  %41 = getelementptr inbounds i8, ptr %14, i64 8
  %42 = load i32, ptr %41, align 8, !tbaa !28
  %43 = icmp eq i32 %42, 2
  %44 = select i1 %43, i64 16, i64 46
  %45 = call noalias ptr @malloc(i64 noundef %44) #12
  %46 = icmp eq ptr %45, null
  br i1 %46, label %47, label %48

47:                                               ; preds = %39
  call void @PRINT_ERR(ptr noundef nonnull @.str.19) #11
  br label %263

48:                                               ; preds = %39
  %49 = call i32 @epoll_create1(i32 noundef 0) #11
  %50 = icmp eq i32 %49, -1
  br i1 %50, label %51, label %52

51:                                               ; preds = %48
  call void @PRINT_ERR(ptr noundef nonnull @.str.20) #11
  br label %263

52:                                               ; preds = %48
  %53 = load i32, ptr %24, align 8, !tbaa !22
  %54 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %53, ptr %54, align 4, !tbaa !29
  store i32 1, ptr %4, align 4, !tbaa !30
  %55 = call i32 @epoll_ctl(i32 noundef %49, i32 noundef 1, i32 noundef %53, ptr noundef nonnull %4) #11
  %.not141 = icmp eq i32 %55, 0
  br i1 %.not141, label %58, label %56

56:                                               ; preds = %52
  call void @PRINT_ERR(ptr noundef nonnull @.str.21) #11
  %57 = call i32 @close(i32 noundef %49) #11
  br label %263

58:                                               ; preds = %52
  %59 = call noalias dereferenceable_or_null(6144) ptr @calloc(i64 noundef 512, i64 noundef 12) #13
  %60 = getelementptr inbounds i8, ptr %14, i64 52
  %61 = getelementptr inbounds i8, ptr %0, i64 112
  %62 = getelementptr inbounds i8, ptr %0, i64 116
  %63 = getelementptr inbounds i8, ptr %0, i64 16
  %64 = getelementptr inbounds i8, ptr %0, i64 20
  %65 = getelementptr inbounds i8, ptr %5, i64 2
  %66 = getelementptr inbounds i8, ptr %6, i64 2
  %67 = getelementptr inbounds i8, ptr %0, i64 120
  %68 = getelementptr inbounds i8, ptr %0, i64 124
  %69 = getelementptr inbounds i8, ptr %0, i64 128
  %70 = getelementptr inbounds i8, ptr %0, i64 132
  %71 = getelementptr inbounds i8, ptr %0, i64 136
  %72 = getelementptr inbounds i8, ptr %0, i64 140
  %73 = getelementptr inbounds i8, ptr %0, i64 144
  br label %.outer.outer

.outer.outer:                                     ; preds = %.outer.loopexit, %58
  %.0125.ph.ph168 = phi ptr [ %.0125.ph.ph, %.outer.loopexit ], [ %45, %58 ]
  %.0124.ph.ph169 = phi i32 [ %.0124.ph.ph, %.outer.loopexit ], [ 0, %58 ]
  br label %.outer

.outer.loopexit:                                  ; preds = %258, %108
  %.0125.ph.ph = phi ptr [ %.1126154, %108 ], [ %.2127, %258 ]
  %.0124.ph.ph = phi i32 [ %.1155, %108 ], [ %.3, %258 ]
  br label %.outer.outer

.outer:                                           ; preds = %.outer.backedge, %.outer.outer
  br label %74

74:                                               ; preds = %.outer, %95
  %75 = load ptr, ptr %14, align 8, !tbaa !32
  %76 = getelementptr inbounds i8, ptr %75, i64 64
  %77 = load i8, ptr %76, align 8, !tbaa !33, !range !34, !noundef !35
  %78 = trunc nuw i8 %77 to i1
  br i1 %78, label %79, label %83

79:                                               ; preds = %74
  %80 = getelementptr inbounds i8, ptr %75, i64 16
  %81 = load i32, ptr %80, align 8, !tbaa !36
  %82 = icmp eq i32 %81, 13
  br i1 %82, label %259, label %83

83:                                               ; preds = %79, %74
  %84 = load i32, ptr %60, align 4, !tbaa !37
  %85 = add nsw i32 %84, 1
  %86 = call i32 @epoll_wait(i32 noundef %49, ptr noundef %59, i32 noundef %85, i32 noundef -1) #11
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %88, label %97

88:                                               ; preds = %83
  %89 = tail call ptr @__errno_location() #14
  %90 = load i32, ptr %89, align 4, !tbaa !15
  %.not142 = icmp eq i32 %90, 4
  br i1 %.not142, label %.outer.backedge, label %91

91:                                               ; preds = %88
  %92 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.22, i32 noundef %90, i32 noundef %86) #11
  %93 = icmp slt i32 %92, 0
  br i1 %93, label %94, label %95

94:                                               ; preds = %91
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %95

95:                                               ; preds = %94, %91
  %96 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_ERR_FREE(ptr noundef %96) #11
  br label %74

97:                                               ; preds = %83
  %.not164 = icmp eq i32 %86, 0
  br i1 %.not164, label %.outer.backedge, label %.lr.ph.preheader

.outer.backedge:                                  ; preds = %88, %97
  br label %.outer

.lr.ph.preheader:                                 ; preds = %97
  %wide.trip.count = zext nneg i32 %86 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %258
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %258 ]
  %.1155 = phi i32 [ %.0124.ph.ph169, %.lr.ph.preheader ], [ %.3, %258 ]
  %.1126154 = phi ptr [ %.0125.ph.ph168, %.lr.ph.preheader ], [ %.2127, %258 ]
  %98 = getelementptr inbounds %struct.epoll_event, ptr %59, i64 %indvars.iv
  %99 = getelementptr inbounds i8, ptr %98, i64 4
  %100 = load i32, ptr %99, align 1, !tbaa !29
  %101 = load i32, ptr %98, align 1, !tbaa !30
  %102 = and i32 %101, 25
  %or.cond150.not = icmp eq i32 %102, 1
  br i1 %or.cond150.not, label %105, label %103

103:                                              ; preds = %.lr.ph
  call void @PRINT_ERR(ptr noundef nonnull @.str.23) #11
  %104 = call i32 @close(i32 noundef %100) #11
  br label %258

105:                                              ; preds = %.lr.ph
  %106 = load i32, ptr %24, align 8, !tbaa !22
  %107 = icmp eq i32 %100, %106
  br i1 %107, label %108, label %148

108:                                              ; preds = %105
  store i32 128, ptr %7, align 4, !tbaa !15
  %109 = call i32 @accept(i32 noundef %100, ptr nonnull %5, ptr noundef nonnull %7) #11
  %110 = icmp slt i32 %109, 0
  br i1 %110, label %.outer.loopexit, label %111

111:                                              ; preds = %108
  %112 = call i32 @set_socket_non_blocking(i32 noundef %109) #11
  %113 = icmp eq i32 %112, -1
  br i1 %113, label %114, label %120

114:                                              ; preds = %111
  %115 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.24, i32 noundef %109) #11
  %116 = icmp slt i32 %115, 0
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %118

118:                                              ; preds = %117, %114
  %119 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %119) #11
  br label %120

120:                                              ; preds = %118, %111
  store i32 %109, ptr %54, align 4, !tbaa !29
  store i32 1, ptr %4, align 4, !tbaa !30
  %121 = call i32 @epoll_ctl(i32 noundef %49, i32 noundef 1, i32 noundef %109, ptr noundef nonnull %4) #11
  %.not148 = icmp eq i32 %121, 0
  br i1 %.not148, label %123, label %122

122:                                              ; preds = %120
  call void @PRINT_ERR(ptr noundef nonnull @.str.21) #11
  br label %123

123:                                              ; preds = %122, %120
  %124 = load i32, ptr %60, align 4, !tbaa !37
  %125 = icmp sgt i32 %109, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %123
  store i32 %109, ptr %60, align 4, !tbaa !37
  br label %127

127:                                              ; preds = %126, %123
  store i32 128, ptr %8, align 4, !tbaa !15
  %128 = call i32 @getsockname(i32 noundef %109, ptr nonnull %6, ptr noundef nonnull %8) #11
  %.not149 = icmp eq i32 %128, 0
  br i1 %.not149, label %135, label %129

129:                                              ; preds = %127
  %130 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.25, i32 noundef %109) #11
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %133

132:                                              ; preds = %129
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %133

133:                                              ; preds = %132, %129
  %134 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %134) #11
  br label %258

135:                                              ; preds = %127
  %136 = call ptr @retrive_ip_address_str(ptr noundef nonnull %5, ptr noundef %.1126154, i64 noundef %44) #11
  %137 = load i16, ptr %65, align 2
  %138 = call zeroext i16 @__bswap_16(i16 noundef zeroext %137)
  %139 = zext i16 %138 to i32
  %140 = load i16, ptr %66, align 2
  %141 = call zeroext i16 @__bswap_16(i16 noundef zeroext %140)
  %142 = zext i16 %141 to i32
  %143 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.26, ptr noundef %136, i32 noundef %139, i32 noundef %142, i32 noundef %109) #11
  %144 = icmp slt i32 %143, 0
  br i1 %144, label %145, label %146

145:                                              ; preds = %135
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %146

146:                                              ; preds = %145, %135
  %147 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %147) #11
  br label %258

148:                                              ; preds = %105
  %149 = call i64 @read(i32 noundef %100, ptr noundef nonnull %3, i64 noundef 4) #11
  %150 = trunc i64 %149 to i32
  %151 = icmp slt i32 %150, 1
  br i1 %151, label %152, label %168

152:                                              ; preds = %148
  %153 = icmp eq i32 %150, 0
  br i1 %153, label %154, label %160

154:                                              ; preds = %152
  %155 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.27, i32 noundef %100) #11
  %156 = icmp slt i32 %155, 0
  br i1 %156, label %157, label %158

157:                                              ; preds = %154
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %158

158:                                              ; preds = %157, %154
  %159 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_DBG_FREE(ptr noundef %159) #11
  br label %166

160:                                              ; preds = %152
  %161 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.28, i32 noundef %100) #11
  %162 = icmp slt i32 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %160
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %164

164:                                              ; preds = %163, %160
  %165 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_ERR_FREE(ptr noundef %165) #11
  br label %166

166:                                              ; preds = %164, %158
  %167 = call i32 @close(i32 noundef %100) #11
  br label %258

168:                                              ; preds = %148
  %169 = load i32, ptr %3, align 4, !tbaa !15
  %170 = call i32 @__bswap_32(i32 noundef %169)
  switch i32 %170, label %231 [
    i32 69, label %171
    i32 88, label %180
    i32 82, label %182
    i32 76, label %196
  ]

171:                                              ; preds = %168
  %172 = load i32, ptr %63, align 8, !tbaa !36
  %173 = icmp eq i32 %172, 12
  br i1 %173, label %174, label %257

174:                                              ; preds = %171
  call void @turn_off_light() #11
  store i32 13, ptr %63, align 8, !tbaa !36
  %175 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.29) #11
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %177, label %178

177:                                              ; preds = %174
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %178

178:                                              ; preds = %177, %174
  %179 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_INFO_FREE(ptr noundef %179) #11
  %.pre = load i32, ptr %63, align 8, !tbaa !36
  br label %257

180:                                              ; preds = %168
  %181 = load i32, ptr %63, align 8, !tbaa !36
  br label %257

182:                                              ; preds = %168
  %183 = load ptr, ptr %12, align 8, !tbaa !9
  %184 = getelementptr inbounds i8, ptr %183, i64 2
  %185 = load i8, ptr %184, align 2, !tbaa !38, !range !34, !noundef !35
  %186 = trunc nuw i8 %185 to i1
  br i1 %186, label %187, label %195

187:                                              ; preds = %182
  %188 = load i32, ptr %61, align 8, !tbaa !39
  %189 = icmp sgt i32 %188, 6
  br i1 %189, label %190, label %191

190:                                              ; preds = %187
  call void @PRINT_ERR(ptr noundef nonnull @.str.30) #11
  br label %257

191:                                              ; preds = %187
  %192 = add nsw i32 %188, 1
  store i32 %192, ptr %61, align 8, !tbaa !39
  %193 = sext i32 %188 to i64
  %194 = getelementptr inbounds [8 x i32], ptr %62, i64 0, i64 %193
  store i32 %100, ptr %194, align 4, !tbaa !15
  br label %257

195:                                              ; preds = %182
  store i32 12, ptr %63, align 8, !tbaa !36
  call void @turn_on_light() #11
  call void @PRINT_INFO(ptr noundef nonnull @.str.31) #11
  br label %257

196:                                              ; preds = %168
  %197 = load ptr, ptr %12, align 8, !tbaa !9
  %198 = getelementptr inbounds i8, ptr %197, i64 2
  %199 = load i8, ptr %198, align 2, !tbaa !38, !range !34, !noundef !35
  %200 = trunc nuw i8 %199 to i1
  br i1 %200, label %201, label %230

201:                                              ; preds = %196
  %202 = load i32, ptr %61, align 8, !tbaa !39
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %61, align 8, !tbaa !39
  %204 = sext i32 %202 to i64
  %205 = getelementptr inbounds [8 x i32], ptr %62, i64 0, i64 %204
  store i32 %100, ptr %205, align 4, !tbaa !15
  %206 = load i32, ptr %62, align 4, !tbaa !15
  %.not146 = icmp eq i32 %206, -1
  br i1 %.not146, label %208, label %207

207:                                              ; preds = %201
  call void @reply_sender(i32 noundef %206, i32 noundef 82)
  br label %208

208:                                              ; preds = %201, %207
  %209 = load i32, ptr %67, align 4, !tbaa !15
  %.not146.1 = icmp eq i32 %209, -1
  br i1 %.not146.1, label %211, label %210

210:                                              ; preds = %208
  call void @reply_sender(i32 noundef %209, i32 noundef 82)
  br label %211

211:                                              ; preds = %210, %208
  %212 = load i32, ptr %68, align 4, !tbaa !15
  %.not146.2 = icmp eq i32 %212, -1
  br i1 %.not146.2, label %214, label %213

213:                                              ; preds = %211
  call void @reply_sender(i32 noundef %212, i32 noundef 82)
  br label %214

214:                                              ; preds = %213, %211
  %215 = load i32, ptr %69, align 4, !tbaa !15
  %.not146.3 = icmp eq i32 %215, -1
  br i1 %.not146.3, label %217, label %216

216:                                              ; preds = %214
  call void @reply_sender(i32 noundef %215, i32 noundef 82)
  br label %217

217:                                              ; preds = %216, %214
  %218 = load i32, ptr %70, align 4, !tbaa !15
  %.not146.4 = icmp eq i32 %218, -1
  br i1 %.not146.4, label %220, label %219

219:                                              ; preds = %217
  call void @reply_sender(i32 noundef %218, i32 noundef 82)
  br label %220

220:                                              ; preds = %219, %217
  %221 = load i32, ptr %71, align 4, !tbaa !15
  %.not146.5 = icmp eq i32 %221, -1
  br i1 %.not146.5, label %223, label %222

222:                                              ; preds = %220
  call void @reply_sender(i32 noundef %221, i32 noundef 82)
  br label %223

223:                                              ; preds = %222, %220
  %224 = load i32, ptr %72, align 4, !tbaa !15
  %.not146.6 = icmp eq i32 %224, -1
  br i1 %.not146.6, label %226, label %225

225:                                              ; preds = %223
  call void @reply_sender(i32 noundef %224, i32 noundef 82)
  br label %226

226:                                              ; preds = %225, %223
  %227 = load i32, ptr %73, align 4, !tbaa !15
  %.not146.7 = icmp eq i32 %227, -1
  br i1 %.not146.7, label %229, label %228

228:                                              ; preds = %226
  call void @reply_sender(i32 noundef %227, i32 noundef 82)
  br label %229

229:                                              ; preds = %228, %226
  store i32 12, ptr %63, align 8, !tbaa !36
  call void @turn_on_light() #11
  call void @PRINT_INFO(ptr noundef nonnull @.str.31) #11
  br label %257

230:                                              ; preds = %196
  call void @PRINT_ERR(ptr noundef nonnull @.str.32) #11
  call void @PRINT_ERR(ptr noundef nonnull @.str.33) #11
  call void @PRINT_ERR(ptr noundef nonnull @.str.34) #11
  br label %257

231:                                              ; preds = %168
  %232 = load ptr, ptr %12, align 8, !tbaa !9
  %233 = getelementptr inbounds i8, ptr %232, i64 2
  %234 = load i8, ptr %233, align 2, !tbaa !38, !range !34, !noundef !35
  %235 = trunc nuw i8 %234 to i1
  br i1 %235, label %236, label %239

236:                                              ; preds = %231
  %237 = getelementptr inbounds i8, ptr %232, i64 100
  %238 = load i32, ptr %237, align 4, !tbaa !40
  store i32 %238, ptr %64, align 4, !tbaa !41
  br label %257

239:                                              ; preds = %231
  %240 = icmp eq i32 %170, 0
  %241 = getelementptr inbounds i8, ptr %232, i64 100
  %242 = load i32, ptr %241, align 4, !tbaa !40
  %.not147 = icmp eq i32 %242, 0
  br i1 %240, label %243, label %246

243:                                              ; preds = %239
  br i1 %.not147, label %245, label %244

244:                                              ; preds = %243
  call void @PRINT_INFO(ptr noundef nonnull @.str.35) #11
  br label %245

245:                                              ; preds = %244, %243
  store i32 0, ptr %64, align 4, !tbaa !41
  br label %257

246:                                              ; preds = %239
  br i1 %.not147, label %247, label %248

247:                                              ; preds = %246
  store i32 0, ptr %64, align 4, !tbaa !41
  br label %257

248:                                              ; preds = %246
  %249 = icmp slt i32 %242, %170
  br i1 %249, label %250, label %256

250:                                              ; preds = %248
  store i32 %170, ptr %64, align 4, !tbaa !41
  %251 = call i32 (ptr, ptr, ...) @asprintf(ptr noundef nonnull %2, ptr noundef nonnull @.str.36, i32 noundef %170) #11
  %252 = icmp slt i32 %251, 0
  br i1 %252, label %253, label %254

253:                                              ; preds = %250
  call void @PRINT_ERR(ptr noundef nonnull @.str.2) #11
  br label %254

254:                                              ; preds = %253, %250
  %255 = load ptr, ptr %2, align 8, !tbaa !5
  call void @PRINT_INFO_FREE(ptr noundef %255) #11
  br label %257

256:                                              ; preds = %248
  store i32 %242, ptr %64, align 4, !tbaa !41
  br label %257

257:                                              ; preds = %171, %178, %236, %247, %256, %254, %245, %229, %230, %195, %191, %190, %180
  %.2 = phi i32 [ %238, %236 ], [ 0, %245 ], [ 0, %247 ], [ %170, %254 ], [ %242, %256 ], [ 82, %229 ], [ %.1155, %230 ], [ 69, %190 ], [ 87, %191 ], [ 82, %195 ], [ %181, %180 ], [ %.pre, %178 ], [ %172, %171 ]
  call void @reply_sender(i32 noundef %100, i32 noundef %.2)
  br label %258

258:                                              ; preds = %146, %133, %257, %166, %103
  %.2127 = phi ptr [ %.1126154, %103 ], [ %.1126154, %133 ], [ %136, %146 ], [ %.1126154, %166 ], [ %.1126154, %257 ]
  %.3 = phi i32 [ %.1155, %103 ], [ %.1155, %133 ], [ %.1155, %146 ], [ %.1155, %166 ], [ %.2, %257 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.outer.loopexit, label %.lr.ph, !llvm.loop !42

259:                                              ; preds = %79
  call void @free(ptr noundef %.0125.ph.ph168) #11
  call void @free(ptr noundef %59) #11
  %260 = call i32 @close(i32 noundef %49) #11
  %261 = load i32, ptr %24, align 8, !tbaa !22
  %262 = call i32 @close(i32 noundef %261) #11
  call void @free(ptr noundef nonnull %14) #11
  br label %263

263:                                              ; preds = %259, %56, %51, %47, %38, %16
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #11
  ret ptr null
}

declare ptr @new_ntttcp_server_stream(ptr noundef) local_unnamed_addr #2

declare i32 @ntttcp_server_listen(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind
declare i32 @epoll_create1(i32 noundef) local_unnamed_addr #4

; Function Attrs: nounwind
declare i32 @epoll_ctl(i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #10

declare i32 @epoll_wait(i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

declare i32 @set_socket_non_blocking(i32 noundef) local_unnamed_addr #2

declare void @turn_off_light() local_unnamed_addr #2

declare void @PRINT_INFO_FREE(ptr noundef) local_unnamed_addr #2

declare void @turn_on_light() local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress 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 #7 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { nounwind }
attributes #12 = { nounwind allocsize(0) }
attributes #13 = { nounwind allocsize(0,1) }
attributes #14 = { 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, !6, i64 8}
!10 = !{!"ntttcp_test_endpoint", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !12, i64 24, !12, i64 40, !11, i64 56, !11, i64 60, !14, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !14, i64 96, !6, i64 104, !11, i64 112, !7, i64 116}
!11 = !{!"int", !7, i64 0}
!12 = !{!"timeval", !13, i64 0, !13, i64 8}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_Bool", !7, i64 0}
!15 = !{!11, !11, i64 0}
!16 = !{!17, !11, i64 52}
!17 = !{!"ntttcp_test", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !11, i64 32, !11, i64 36, !14, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !11, i64 96, !11, i64 100, !11, i64 104, !14, i64 108, !6, i64 112, !6, i64 120, !14, i64 128, !6, i64 136, !14, i64 144, !6, i64 152, !14, i64 160, !6, i64 168, !14, i64 176, !14, i64 177}
!18 = !{!19, !11, i64 24}
!19 = !{!"ntttcp_stream_server", !6, i64 0, !11, i64 8, !11, i64 12, !6, i64 16, !11, i64 24, !13, i64 32, !14, i64 40, !14, i64 41, !14, i64 42, !14, i64 43, !14, i64 44, !11, i64 48, !11, i64 52, !20, i64 56, !20, i64 184, !11, i64 312, !13, i64 320}
!20 = !{!"", !7, i64 0}
!21 = !{!19, !11, i64 12}
!22 = !{!19, !11, i64 48}
!23 = !{!17, !11, i64 44}
!24 = !{!25, !11, i64 4}
!25 = !{!"addrinfo", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!26 = !{!25, !11, i64 8}
!27 = !{!17, !6, i64 24}
!28 = !{!19, !11, i64 8}
!29 = !{!7, !7, i64 0}
!30 = !{!31, !11, i64 0}
!31 = !{!"epoll_event", !11, i64 0, !7, i64 4}
!32 = !{!19, !6, i64 0}
!33 = !{!10, !14, i64 64}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!10, !11, i64 16}
!37 = !{!19, !11, i64 52}
!38 = !{!17, !14, i64 2}
!39 = !{!10, !11, i64 112}
!40 = !{!17, !11, i64 100}
!41 = !{!10, !11, i64 20}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}


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