; LLVM IR from whoiswelliton/Computer_Engineering_UTFPR-PB :: Embedded_Systems/TIVA Connected TM4C1294XL Projects/01 - lwIP_HTTPServer_on_TIVA (input)

; 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.ip_globals = type { ptr, ptr, ptr, i16, %struct.ip4_addr, %struct.ip4_addr }
%struct.ip4_addr = type { i32 }
%union.tcp_listen_pcbs_t = type { ptr }
%struct.tcp_seg = type { ptr, ptr, i16, i8, ptr }
%struct.pbuf = type { ptr, ptr, i16, i16, i8, i8, i8, i8 }
%struct.tcp_hdr = type { i16, i16, i32, i32, i16, i16, i16, i16 }
%struct.tcp_pcb = type { %struct.ip4_addr, %struct.ip4_addr, i8, i8, i8, i8, ptr, ptr, i32, i8, i16, i16, i16, i8, i8, i8, i32, i32, i16, i16, i32, i16, i16, i32, i32, i16, i16, i16, i8, i8, i32, i16, i16, i32, i32, i32, i32, i32, i16, i16, i16, i16, i16, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, i8, i8, i8 }
%struct.netif = type { ptr, %struct.ip4_addr, %struct.ip4_addr, %struct.ip4_addr, ptr, ptr, ptr, ptr, ptr, [1 x ptr], i16, [6 x i8], i8, i8, [2 x i8], i8, i8 }
%struct.tcp_pcb_listen = type { %struct.ip4_addr, %struct.ip4_addr, i8, i8, i8, i8, ptr, ptr, i32, i8, i16, ptr }

@.str = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [181 x i8], align 1
@tcphdr = external hidden global ptr, align 8
@ip_data = external global %struct.ip_globals, align 8
@tcphdr_optlen = external hidden global i16, align 2
@tcphdr_opt2 = external hidden global ptr, align 8
@tcphdr_opt1len = external hidden global i16, align 2
@.str.3 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [31 x i8], align 1
@seqno = external hidden global i32, align 4
@ackno = external hidden global i32, align 4
@flags = external hidden global i8, align 1
@tcplen = external hidden global i16, align 2
@tcp_active_pcbs = external global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [42 x i8], align 1
@tcp_tw_pcbs = external global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [45 x i8], align 1
@tcp_listen_pcbs = external global %union.tcp_listen_pcbs_t, align 8
@inseg = external hidden global %struct.tcp_seg, align 8
@recv_data = external hidden global ptr, align 8
@recv_flags = external hidden global i8, align 1
@recv_acked = external hidden global i16, align 2
@tcp_input_pcb = external dso_local global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @tcp_input(ptr noundef %0, ptr noundef %1) #0 {
  %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 ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i16, align 2
  %13 = alloca i32, align 4
  %14 = alloca i16, align 2
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #3
  %15 = load ptr, ptr %4, align 8, !tbaa !5
  br label %16

16:                                               ; preds = %2
  %17 = load ptr, ptr %3, align 8, !tbaa !5
  %18 = icmp ne ptr %17, null
  br i1 %18, label %24, label %19

19:                                               ; preds = %16
  br label %20

20:                                               ; preds = %19
  %21 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 131, ptr noundef @.str.2)
  br label %22

22:                                               ; preds = %20
  br label %23

23:                                               ; preds = %22
  br label %24

24:                                               ; preds = %23, %16
  br label %25

25:                                               ; preds = %24
  br label %26

26:                                               ; preds = %25
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.pbuf, ptr %27, i32 0, i32 1
  %29 = load ptr, ptr %28, align 8, !tbaa !9
  store ptr %29, ptr @tcphdr, align 8, !tbaa !5
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.pbuf, ptr %30, i32 0, i32 3
  %32 = load i16, ptr %31, align 2, !tbaa !12
  %33 = zext i16 %32 to i32
  %34 = icmp slt i32 %33, 20
  br i1 %34, label %35, label %36

35:                                               ; preds = %26
  br label %855

36:                                               ; preds = %26
  %37 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 5), align 8, !tbaa !13
  %38 = load ptr, ptr @ip_data, align 8, !tbaa !17
  %39 = call zeroext i8 @ip4_addr_isbroadcast_u32(i32 noundef %37, ptr noundef %38)
  %40 = zext i8 %39 to i32
  %41 = icmp ne i32 %40, 0
  br i1 %41, label %47, label %42

42:                                               ; preds = %36
  %43 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 5), align 8, !tbaa !13
  %44 = zext i32 %43 to i64
  %45 = and i64 %44, 240
  %46 = icmp eq i64 %45, 224
  br i1 %46, label %47, label %48

47:                                               ; preds = %42, %36
  br label %855

48:                                               ; preds = %42
  %49 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.tcp_hdr, ptr %49, i32 0, i32 4
  %51 = load i16, ptr %50, align 1, !tbaa !18
  %52 = call zeroext i16 @lwip_htons(i16 noundef zeroext %51)
  %53 = zext i16 %52 to i32
  %54 = ashr i32 %53, 12
  %55 = trunc i32 %54 to i16
  %56 = zext i16 %55 to i32
  %57 = shl i32 %56, 2
  %58 = trunc i32 %57 to i8
  store i8 %58, ptr %10, align 1, !tbaa !20
  %59 = load i8, ptr %10, align 1, !tbaa !20
  %60 = zext i8 %59 to i32
  %61 = icmp slt i32 %60, 20
  br i1 %61, label %70, label %62

62:                                               ; preds = %48
  %63 = load i8, ptr %10, align 1, !tbaa !20
  %64 = zext i8 %63 to i32
  %65 = load ptr, ptr %3, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.pbuf, ptr %65, i32 0, i32 2
  %67 = load i16, ptr %66, align 8, !tbaa !21
  %68 = zext i16 %67 to i32
  %69 = icmp sgt i32 %64, %68
  br i1 %69, label %70, label %71

70:                                               ; preds = %62, %48
  br label %855

71:                                               ; preds = %62
  %72 = load i8, ptr %10, align 1, !tbaa !20
  %73 = zext i8 %72 to i32
  %74 = sub nsw i32 %73, 20
  %75 = trunc i32 %74 to i16
  store i16 %75, ptr @tcphdr_optlen, align 2, !tbaa !22
  store ptr null, ptr @tcphdr_opt2, align 8, !tbaa !5
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.pbuf, ptr %76, i32 0, i32 3
  %78 = load i16, ptr %77, align 2, !tbaa !12
  %79 = zext i16 %78 to i32
  %80 = load i8, ptr %10, align 1, !tbaa !20
  %81 = zext i8 %80 to i32
  %82 = icmp sge i32 %79, %81
  br i1 %82, label %83, label %89

83:                                               ; preds = %71
  %84 = load i16, ptr @tcphdr_optlen, align 2, !tbaa !22
  store i16 %84, ptr @tcphdr_opt1len, align 2, !tbaa !22
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = load i8, ptr %10, align 1, !tbaa !20
  %87 = zext i8 %86 to i64
  %88 = call zeroext i8 @pbuf_remove_header(ptr noundef %85, i64 noundef %87)
  br label %187

89:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 2, ptr %12) #3
  br label %90

90:                                               ; preds = %89
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.pbuf, ptr %91, i32 0, i32 0
  %93 = load ptr, ptr %92, align 8, !tbaa !23
  %94 = icmp ne ptr %93, null
  br i1 %94, label %100, label %95

95:                                               ; preds = %90
  br label %96

96:                                               ; preds = %95
  %97 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.3, i32 noundef 194, ptr noundef @.str.2)
  br label %98

98:                                               ; preds = %96
  br label %99

99:                                               ; preds = %98
  br label %100

100:                                              ; preds = %99, %90
  br label %101

101:                                              ; preds = %100
  br label %102

102:                                              ; preds = %101
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = call zeroext i8 @pbuf_remove_header(ptr noundef %103, i64 noundef 20)
  %105 = load ptr, ptr %3, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.pbuf, ptr %105, i32 0, i32 3
  %107 = load i16, ptr %106, align 2, !tbaa !12
  store i16 %107, ptr @tcphdr_opt1len, align 2, !tbaa !22
  %108 = load i16, ptr @tcphdr_optlen, align 2, !tbaa !22
  %109 = zext i16 %108 to i32
  %110 = load i16, ptr @tcphdr_opt1len, align 2, !tbaa !22
  %111 = zext i16 %110 to i32
  %112 = sub nsw i32 %109, %111
  %113 = trunc i32 %112 to i16
  store i16 %113, ptr %12, align 2, !tbaa !22
  %114 = load ptr, ptr %3, align 8, !tbaa !5
  %115 = load i16, ptr @tcphdr_opt1len, align 2, !tbaa !22
  %116 = zext i16 %115 to i64
  %117 = call zeroext i8 @pbuf_remove_header(ptr noundef %114, i64 noundef %116)
  %118 = load i16, ptr %12, align 2, !tbaa !22
  %119 = zext i16 %118 to i32
  %120 = load ptr, ptr %3, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.pbuf, ptr %120, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !23
  %123 = getelementptr inbounds %struct.pbuf, ptr %122, i32 0, i32 3
  %124 = load i16, ptr %123, align 2, !tbaa !12
  %125 = zext i16 %124 to i32
  %126 = icmp sgt i32 %119, %125
  br i1 %126, label %127, label %128

127:                                              ; preds = %102
  store i32 6, ptr %13, align 4
  br label %184

128:                                              ; preds = %102
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.pbuf, ptr %129, i32 0, i32 0
  %131 = load ptr, ptr %130, align 8, !tbaa !23
  %132 = getelementptr inbounds %struct.pbuf, ptr %131, i32 0, i32 1
  %133 = load ptr, ptr %132, align 8, !tbaa !9
  store ptr %133, ptr @tcphdr_opt2, align 8, !tbaa !5
  %134 = load ptr, ptr %3, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.pbuf, ptr %134, i32 0, i32 0
  %136 = load ptr, ptr %135, align 8, !tbaa !23
  %137 = load i16, ptr %12, align 2, !tbaa !22
  %138 = zext i16 %137 to i64
  %139 = call zeroext i8 @pbuf_remove_header(ptr noundef %136, i64 noundef %138)
  %140 = load ptr, ptr %3, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.pbuf, ptr %140, i32 0, i32 2
  %142 = load i16, ptr %141, align 8, !tbaa !21
  %143 = zext i16 %142 to i32
  %144 = load i16, ptr %12, align 2, !tbaa !22
  %145 = zext i16 %144 to i32
  %146 = sub nsw i32 %143, %145
  %147 = trunc i32 %146 to i16
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.pbuf, ptr %148, i32 0, i32 2
  store i16 %147, ptr %149, align 8, !tbaa !21
  br label %150

150:                                              ; preds = %128
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.pbuf, ptr %151, i32 0, i32 3
  %153 = load i16, ptr %152, align 2, !tbaa !12
  %154 = zext i16 %153 to i32
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %161, label %156

156:                                              ; preds = %150
  br label %157

157:                                              ; preds = %156
  %158 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.4, i32 noundef 223, ptr noundef @.str.2)
  br label %159

159:                                              ; preds = %157
  br label %160

160:                                              ; preds = %159
  br label %161

161:                                              ; preds = %160, %150
  br label %162

162:                                              ; preds = %161
  br label %163

163:                                              ; preds = %162
  br label %164

164:                                              ; preds = %163
  %165 = load ptr, ptr %3, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.pbuf, ptr %165, i32 0, i32 2
  %167 = load i16, ptr %166, align 8, !tbaa !21
  %168 = zext i16 %167 to i32
  %169 = load ptr, ptr %3, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.pbuf, ptr %169, i32 0, i32 0
  %171 = load ptr, ptr %170, align 8, !tbaa !23
  %172 = getelementptr inbounds %struct.pbuf, ptr %171, i32 0, i32 2
  %173 = load i16, ptr %172, align 8, !tbaa !21
  %174 = zext i16 %173 to i32
  %175 = icmp eq i32 %168, %174
  br i1 %175, label %181, label %176

176:                                              ; preds = %164
  br label %177

177:                                              ; preds = %176
  %178 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.5, i32 noundef 224, ptr noundef @.str.2)
  br label %179

179:                                              ; preds = %177
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180, %164
  br label %182

182:                                              ; preds = %181
  br label %183

183:                                              ; preds = %182
  store i32 0, ptr %13, align 4
  br label %184

184:                                              ; preds = %183, %127
  call void @llvm.lifetime.end.p0(i64 2, ptr %12) #3
  %185 = load i32, ptr %13, align 4
  switch i32 %185, label %858 [
    i32 0, label %186
    i32 6, label %855
  ]

186:                                              ; preds = %184
  br label %187

187:                                              ; preds = %186, %83
  %188 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.tcp_hdr, ptr %188, i32 0, i32 0
  %190 = load i16, ptr %189, align 1, !tbaa !24
  %191 = call zeroext i16 @lwip_htons(i16 noundef zeroext %190)
  %192 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.tcp_hdr, ptr %192, i32 0, i32 0
  store i16 %191, ptr %193, align 1, !tbaa !24
  %194 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.tcp_hdr, ptr %194, i32 0, i32 1
  %196 = load i16, ptr %195, align 1, !tbaa !25
  %197 = call zeroext i16 @lwip_htons(i16 noundef zeroext %196)
  %198 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.tcp_hdr, ptr %198, i32 0, i32 1
  store i16 %197, ptr %199, align 1, !tbaa !25
  %200 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.tcp_hdr, ptr %200, i32 0, i32 2
  %202 = load i32, ptr %201, align 1, !tbaa !26
  %203 = call i32 @lwip_htonl(i32 noundef %202)
  %204 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.tcp_hdr, ptr %204, i32 0, i32 2
  store i32 %203, ptr %205, align 1, !tbaa !26
  store i32 %203, ptr @seqno, align 4, !tbaa !27
  %206 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.tcp_hdr, ptr %206, i32 0, i32 3
  %208 = load i32, ptr %207, align 1, !tbaa !28
  %209 = call i32 @lwip_htonl(i32 noundef %208)
  %210 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.tcp_hdr, ptr %210, i32 0, i32 3
  store i32 %209, ptr %211, align 1, !tbaa !28
  store i32 %209, ptr @ackno, align 4, !tbaa !27
  %212 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.tcp_hdr, ptr %212, i32 0, i32 5
  %214 = load i16, ptr %213, align 1, !tbaa !29
  %215 = call zeroext i16 @lwip_htons(i16 noundef zeroext %214)
  %216 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.tcp_hdr, ptr %216, i32 0, i32 5
  store i16 %215, ptr %217, align 1, !tbaa !29
  %218 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.tcp_hdr, ptr %218, i32 0, i32 4
  %220 = load i16, ptr %219, align 1, !tbaa !18
  %221 = call zeroext i16 @lwip_htons(i16 noundef zeroext %220)
  %222 = zext i16 %221 to i32
  %223 = and i32 %222, 63
  %224 = trunc i32 %223 to i8
  store i8 %224, ptr @flags, align 1, !tbaa !20
  %225 = load ptr, ptr %3, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.pbuf, ptr %225, i32 0, i32 2
  %227 = load i16, ptr %226, align 8, !tbaa !21
  store i16 %227, ptr @tcplen, align 2, !tbaa !22
  %228 = load i8, ptr @flags, align 1, !tbaa !20
  %229 = zext i8 %228 to i32
  %230 = and i32 %229, 3
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %244

232:                                              ; preds = %187
  %233 = load i16, ptr @tcplen, align 2, !tbaa !22
  %234 = add i16 %233, 1
  store i16 %234, ptr @tcplen, align 2, !tbaa !22
  %235 = load i16, ptr @tcplen, align 2, !tbaa !22
  %236 = zext i16 %235 to i32
  %237 = load ptr, ptr %3, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.pbuf, ptr %237, i32 0, i32 2
  %239 = load i16, ptr %238, align 8, !tbaa !21
  %240 = zext i16 %239 to i32
  %241 = icmp slt i32 %236, %240
  br i1 %241, label %242, label %243

242:                                              ; preds = %232
  br label %855

243:                                              ; preds = %232
  br label %244

244:                                              ; preds = %243, %187
  store ptr null, ptr %6, align 8, !tbaa !5
  %245 = load ptr, ptr @tcp_active_pcbs, align 8, !tbaa !5
  store ptr %245, ptr %5, align 8, !tbaa !5
  br label %246

246:                                              ; preds = %388, %244
  %247 = load ptr, ptr %5, align 8, !tbaa !5
  %248 = icmp ne ptr %247, null
  br i1 %248, label %249, label %392

249:                                              ; preds = %246
  br label %250

250:                                              ; preds = %249
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.tcp_pcb, ptr %251, i32 0, i32 8
  %253 = load i32, ptr %252, align 8, !tbaa !30
  %254 = icmp ne i32 %253, 0
  br i1 %254, label %260, label %255

255:                                              ; preds = %250
  br label %256

256:                                              ; preds = %255
  %257 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.6, i32 noundef 251, ptr noundef @.str.2)
  br label %258

258:                                              ; preds = %256
  br label %259

259:                                              ; preds = %258
  br label %260

260:                                              ; preds = %259, %250
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  br label %263

263:                                              ; preds = %262
  %264 = load ptr, ptr %5, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.tcp_pcb, ptr %264, i32 0, i32 8
  %266 = load i32, ptr %265, align 8, !tbaa !30
  %267 = icmp ne i32 %266, 10
  br i1 %267, label %273, label %268

268:                                              ; preds = %263
  br label %269

269:                                              ; preds = %268
  %270 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.7, i32 noundef 252, ptr noundef @.str.2)
  br label %271

271:                                              ; preds = %269
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272, %263
  br label %274

274:                                              ; preds = %273
  br label %275

275:                                              ; preds = %274
  br label %276

276:                                              ; preds = %275
  %277 = load ptr, ptr %5, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.tcp_pcb, ptr %277, i32 0, i32 8
  %279 = load i32, ptr %278, align 8, !tbaa !30
  %280 = icmp ne i32 %279, 1
  br i1 %280, label %286, label %281

281:                                              ; preds = %276
  br label %282

282:                                              ; preds = %281
  %283 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.8, i32 noundef 253, ptr noundef @.str.2)
  br label %284

284:                                              ; preds = %282
  br label %285

285:                                              ; preds = %284
  br label %286

286:                                              ; preds = %285, %276
  br label %287

287:                                              ; preds = %286
  br label %288

288:                                              ; preds = %287
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.tcp_pcb, ptr %289, i32 0, i32 2
  %291 = load i8, ptr %290, align 8, !tbaa !32
  %292 = zext i8 %291 to i32
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %309

294:                                              ; preds = %288
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.tcp_pcb, ptr %295, i32 0, i32 2
  %297 = load i8, ptr %296, align 8, !tbaa !32
  %298 = zext i8 %297 to i32
  %299 = load ptr, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 1), align 8, !tbaa !33
  %300 = getelementptr inbounds %struct.netif, ptr %299, i32 0, i32 15
  %301 = load i8, ptr %300, align 4, !tbaa !34
  %302 = zext i8 %301 to i32
  %303 = add nsw i32 %302, 1
  %304 = trunc i32 %303 to i8
  %305 = zext i8 %304 to i32
  %306 = icmp ne i32 %298, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %294
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %308, ptr %6, align 8, !tbaa !5
  br label %388

309:                                              ; preds = %294, %288
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.tcp_pcb, ptr %310, i32 0, i32 11
  %312 = load i16, ptr %311, align 8, !tbaa !36
  %313 = zext i16 %312 to i32
  %314 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.tcp_hdr, ptr %314, i32 0, i32 0
  %316 = load i16, ptr %315, align 1, !tbaa !24
  %317 = zext i16 %316 to i32
  %318 = icmp eq i32 %313, %317
  br i1 %318, label %319, label %386

319:                                              ; preds = %309
  %320 = load ptr, ptr %5, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.tcp_pcb, ptr %320, i32 0, i32 10
  %322 = load i16, ptr %321, align 2, !tbaa !37
  %323 = zext i16 %322 to i32
  %324 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.tcp_hdr, ptr %324, i32 0, i32 1
  %326 = load i16, ptr %325, align 1, !tbaa !25
  %327 = zext i16 %326 to i32
  %328 = icmp eq i32 %323, %327
  br i1 %328, label %329, label %386

329:                                              ; preds = %319
  %330 = load ptr, ptr %5, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.tcp_pcb, ptr %330, i32 0, i32 1
  %332 = getelementptr inbounds %struct.ip4_addr, ptr %331, i32 0, i32 0
  %333 = load i32, ptr %332, align 4, !tbaa !38
  %334 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 4), align 4, !tbaa !39
  %335 = icmp eq i32 %333, %334
  br i1 %335, label %336, label %386

336:                                              ; preds = %329
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.tcp_pcb, ptr %337, i32 0, i32 0
  %339 = getelementptr inbounds %struct.ip4_addr, ptr %338, i32 0, i32 0
  %340 = load i32, ptr %339, align 8, !tbaa !40
  %341 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 5), align 8, !tbaa !13
  %342 = icmp eq i32 %340, %341
  br i1 %342, label %343, label %386

343:                                              ; preds = %336
  br label %344

344:                                              ; preds = %343
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.tcp_pcb, ptr %345, i32 0, i32 6
  %347 = load ptr, ptr %346, align 8, !tbaa !41
  %348 = load ptr, ptr %5, align 8, !tbaa !5
  %349 = icmp ne ptr %347, %348
  br i1 %349, label %355, label %350

350:                                              ; preds = %344
  br label %351

351:                                              ; preds = %350
  %352 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.9, i32 noundef 269, ptr noundef @.str.2)
  br label %353

353:                                              ; preds = %351
  br label %354

354:                                              ; preds = %353
  br label %355

355:                                              ; preds = %354, %344
  br label %356

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356
  %358 = load ptr, ptr %6, align 8, !tbaa !5
  %359 = icmp ne ptr %358, null
  br i1 %359, label %360, label %370

360:                                              ; preds = %357
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.tcp_pcb, ptr %361, i32 0, i32 6
  %363 = load ptr, ptr %362, align 8, !tbaa !41
  %364 = load ptr, ptr %6, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.tcp_pcb, ptr %364, i32 0, i32 6
  store ptr %363, ptr %365, align 8, !tbaa !41
  %366 = load ptr, ptr @tcp_active_pcbs, align 8, !tbaa !5
  %367 = load ptr, ptr %5, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.tcp_pcb, ptr %367, i32 0, i32 6
  store ptr %366, ptr %368, align 8, !tbaa !41
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %369, ptr @tcp_active_pcbs, align 8, !tbaa !5
  br label %371

370:                                              ; preds = %357
  br label %371

371:                                              ; preds = %370, %360
  br label %372

372:                                              ; preds = %371
  %373 = load ptr, ptr %5, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.tcp_pcb, ptr %373, i32 0, i32 6
  %375 = load ptr, ptr %374, align 8, !tbaa !41
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  %377 = icmp ne ptr %375, %376
  br i1 %377, label %383, label %378

378:                                              ; preds = %372
  br label %379

379:                                              ; preds = %378
  %380 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.10, i32 noundef 277, ptr noundef @.str.2)
  br label %381

381:                                              ; preds = %379
  br label %382

382:                                              ; preds = %381
  br label %383

383:                                              ; preds = %382, %372
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  br label %392

386:                                              ; preds = %336, %329, %319, %309
  %387 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %387, ptr %6, align 8, !tbaa !5
  br label %388

388:                                              ; preds = %386, %307
  %389 = load ptr, ptr %5, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.tcp_pcb, ptr %389, i32 0, i32 6
  %391 = load ptr, ptr %390, align 8, !tbaa !41
  store ptr %391, ptr %5, align 8, !tbaa !5
  br label %246, !llvm.loop !42

392:                                              ; preds = %385, %246
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = icmp eq ptr %393, null
  br i1 %394, label %395, label %569

395:                                              ; preds = %392
  %396 = load ptr, ptr @tcp_tw_pcbs, align 8, !tbaa !5
  store ptr %396, ptr %5, align 8, !tbaa !5
  br label %397

397:                                              ; preds = %472, %395
  %398 = load ptr, ptr %5, align 8, !tbaa !5
  %399 = icmp ne ptr %398, null
  br i1 %399, label %400, label %476

400:                                              ; preds = %397
  br label %401

401:                                              ; preds = %400
  %402 = load ptr, ptr %5, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.tcp_pcb, ptr %402, i32 0, i32 8
  %404 = load i32, ptr %403, align 8, !tbaa !30
  %405 = icmp eq i32 %404, 10
  br i1 %405, label %411, label %406

406:                                              ; preds = %401
  br label %407

407:                                              ; preds = %406
  %408 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.11, i32 noundef 287, ptr noundef @.str.2)
  br label %409

409:                                              ; preds = %407
  br label %410

410:                                              ; preds = %409
  br label %411

411:                                              ; preds = %410, %401
  br label %412

412:                                              ; preds = %411
  br label %413

413:                                              ; preds = %412
  %414 = load ptr, ptr %5, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.tcp_pcb, ptr %414, i32 0, i32 2
  %416 = load i8, ptr %415, align 8, !tbaa !32
  %417 = zext i8 %416 to i32
  %418 = icmp ne i32 %417, 0
  br i1 %418, label %419, label %433

419:                                              ; preds = %413
  %420 = load ptr, ptr %5, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.tcp_pcb, ptr %420, i32 0, i32 2
  %422 = load i8, ptr %421, align 8, !tbaa !32
  %423 = zext i8 %422 to i32
  %424 = load ptr, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 1), align 8, !tbaa !33
  %425 = getelementptr inbounds %struct.netif, ptr %424, i32 0, i32 15
  %426 = load i8, ptr %425, align 4, !tbaa !34
  %427 = zext i8 %426 to i32
  %428 = add nsw i32 %427, 1
  %429 = trunc i32 %428 to i8
  %430 = zext i8 %429 to i32
  %431 = icmp ne i32 %423, %430
  br i1 %431, label %432, label %433

432:                                              ; preds = %419
  br label %472

433:                                              ; preds = %419, %413
  %434 = load ptr, ptr %5, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.tcp_pcb, ptr %434, i32 0, i32 11
  %436 = load i16, ptr %435, align 8, !tbaa !36
  %437 = zext i16 %436 to i32
  %438 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.tcp_hdr, ptr %438, i32 0, i32 0
  %440 = load i16, ptr %439, align 1, !tbaa !24
  %441 = zext i16 %440 to i32
  %442 = icmp eq i32 %437, %441
  br i1 %442, label %443, label %471

443:                                              ; preds = %433
  %444 = load ptr, ptr %5, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.tcp_pcb, ptr %444, i32 0, i32 10
  %446 = load i16, ptr %445, align 2, !tbaa !37
  %447 = zext i16 %446 to i32
  %448 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.tcp_hdr, ptr %448, i32 0, i32 1
  %450 = load i16, ptr %449, align 1, !tbaa !25
  %451 = zext i16 %450 to i32
  %452 = icmp eq i32 %447, %451
  br i1 %452, label %453, label %471

453:                                              ; preds = %443
  %454 = load ptr, ptr %5, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.tcp_pcb, ptr %454, i32 0, i32 1
  %456 = getelementptr inbounds %struct.ip4_addr, ptr %455, i32 0, i32 0
  %457 = load i32, ptr %456, align 4, !tbaa !38
  %458 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 4), align 4, !tbaa !39
  %459 = icmp eq i32 %457, %458
  br i1 %459, label %460, label %471

460:                                              ; preds = %453
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.tcp_pcb, ptr %461, i32 0, i32 0
  %463 = getelementptr inbounds %struct.ip4_addr, ptr %462, i32 0, i32 0
  %464 = load i32, ptr %463, align 8, !tbaa !40
  %465 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 5), align 8, !tbaa !13
  %466 = icmp eq i32 %464, %465
  br i1 %466, label %467, label %471

467:                                              ; preds = %460
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  call void @tcp_timewait_input(ptr noundef %468)
  %469 = load ptr, ptr %3, align 8, !tbaa !5
  %470 = call zeroext i8 @pbuf_free(ptr noundef %469)
  store i32 1, ptr %13, align 4
  br label %858

471:                                              ; preds = %460, %453, %443, %433
  br label %472

472:                                              ; preds = %471, %432
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.tcp_pcb, ptr %473, i32 0, i32 6
  %475 = load ptr, ptr %474, align 8, !tbaa !41
  store ptr %475, ptr %5, align 8, !tbaa !5
  br label %397, !llvm.loop !44

476:                                              ; preds = %397
  store ptr null, ptr %6, align 8, !tbaa !5
  %477 = load ptr, ptr @tcp_listen_pcbs, align 8, !tbaa !20
  store ptr %477, ptr %7, align 8, !tbaa !5
  br label %478

478:                                              ; preds = %537, %476
  %479 = load ptr, ptr %7, align 8, !tbaa !5
  %480 = icmp ne ptr %479, null
  br i1 %480, label %481, label %541

481:                                              ; preds = %478
  %482 = load ptr, ptr %7, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %482, i32 0, i32 2
  %484 = load i8, ptr %483, align 8, !tbaa !45
  %485 = zext i8 %484 to i32
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %502

487:                                              ; preds = %481
  %488 = load ptr, ptr %7, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %488, i32 0, i32 2
  %490 = load i8, ptr %489, align 8, !tbaa !45
  %491 = zext i8 %490 to i32
  %492 = load ptr, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 1), align 8, !tbaa !33
  %493 = getelementptr inbounds %struct.netif, ptr %492, i32 0, i32 15
  %494 = load i8, ptr %493, align 4, !tbaa !34
  %495 = zext i8 %494 to i32
  %496 = add nsw i32 %495, 1
  %497 = trunc i32 %496 to i8
  %498 = zext i8 %497 to i32
  %499 = icmp ne i32 %491, %498
  br i1 %499, label %500, label %502

500:                                              ; preds = %487
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %501, ptr %6, align 8, !tbaa !5
  br label %537

502:                                              ; preds = %487, %481
  %503 = load ptr, ptr %7, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %503, i32 0, i32 10
  %505 = load i16, ptr %504, align 2, !tbaa !47
  %506 = zext i16 %505 to i32
  %507 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.tcp_hdr, ptr %507, i32 0, i32 1
  %509 = load i16, ptr %508, align 1, !tbaa !25
  %510 = zext i16 %509 to i32
  %511 = icmp eq i32 %506, %510
  br i1 %511, label %512, label %535

512:                                              ; preds = %502
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %513, i32 0, i32 0
  %515 = getelementptr inbounds %struct.ip4_addr, ptr %514, i32 0, i32 0
  %516 = load i32, ptr %515, align 8, !tbaa !48
  %517 = load i32, ptr getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 5), align 8, !tbaa !13
  %518 = icmp eq i32 %516, %517
  br i1 %518, label %519, label %520

519:                                              ; preds = %512
  br label %541

520:                                              ; preds = %512
  %521 = load ptr, ptr %7, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %521, i32 0, i32 0
  %523 = icmp eq ptr %522, null
  br i1 %523, label %530, label %524

524:                                              ; preds = %520
  %525 = load ptr, ptr %7, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %525, i32 0, i32 0
  %527 = getelementptr inbounds %struct.ip4_addr, ptr %526, i32 0, i32 0
  %528 = load i32, ptr %527, align 8, !tbaa !48
  %529 = icmp eq i32 %528, 0
  br i1 %529, label %530, label %533

530:                                              ; preds = %524, %520
  %531 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %531, ptr %9, align 8, !tbaa !5
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %532, ptr %8, align 8, !tbaa !5
  br label %533

533:                                              ; preds = %530, %524
  br label %534

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534, %502
  %536 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %536, ptr %6, align 8, !tbaa !5
  br label %537

537:                                              ; preds = %535, %500
  %538 = load ptr, ptr %7, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %538, i32 0, i32 6
  %540 = load ptr, ptr %539, align 8, !tbaa !49
  store ptr %540, ptr %7, align 8, !tbaa !5
  br label %478, !llvm.loop !50

541:                                              ; preds = %519, %478
  %542 = load ptr, ptr %7, align 8, !tbaa !5
  %543 = icmp eq ptr %542, null
  br i1 %543, label %544, label %547

544:                                              ; preds = %541
  %545 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %545, ptr %7, align 8, !tbaa !5
  %546 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %546, ptr %6, align 8, !tbaa !5
  br label %547

547:                                              ; preds = %544, %541
  %548 = load ptr, ptr %7, align 8, !tbaa !5
  %549 = icmp ne ptr %548, null
  br i1 %549, label %550, label %568

550:                                              ; preds = %547
  %551 = load ptr, ptr %6, align 8, !tbaa !5
  %552 = icmp ne ptr %551, null
  br i1 %552, label %553, label %563

553:                                              ; preds = %550
  %554 = load ptr, ptr %7, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %554, i32 0, i32 6
  %556 = load ptr, ptr %555, align 8, !tbaa !49
  %557 = load ptr, ptr %6, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %557, i32 0, i32 6
  store ptr %556, ptr %558, align 8, !tbaa !49
  %559 = load ptr, ptr @tcp_listen_pcbs, align 8, !tbaa !20
  %560 = load ptr, ptr %7, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.tcp_pcb_listen, ptr %560, i32 0, i32 6
  store ptr %559, ptr %561, align 8, !tbaa !49
  %562 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %562, ptr @tcp_listen_pcbs, align 8, !tbaa !20
  br label %564

563:                                              ; preds = %550
  br label %564

564:                                              ; preds = %563, %553
  %565 = load ptr, ptr %7, align 8, !tbaa !5
  call void @tcp_listen_input(ptr noundef %565)
  %566 = load ptr, ptr %3, align 8, !tbaa !5
  %567 = call zeroext i8 @pbuf_free(ptr noundef %566)
  store i32 1, ptr %13, align 4
  br label %858

568:                                              ; preds = %547
  br label %569

569:                                              ; preds = %568, %392
  %570 = load ptr, ptr %5, align 8, !tbaa !5
  %571 = icmp ne ptr %570, null
  br i1 %571, label %572, label %825

572:                                              ; preds = %569
  store ptr null, ptr @inseg, align 8, !tbaa !51
  %573 = load ptr, ptr %3, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.pbuf, ptr %573, i32 0, i32 2
  %575 = load i16, ptr %574, align 8, !tbaa !21
  store i16 %575, ptr getelementptr inbounds (%struct.tcp_seg, ptr @inseg, i32 0, i32 2), align 8, !tbaa !53
  %576 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %576, ptr getelementptr inbounds (%struct.tcp_seg, ptr @inseg, i32 0, i32 1), align 8, !tbaa !54
  %577 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  store ptr %577, ptr getelementptr inbounds (%struct.tcp_seg, ptr @inseg, i32 0, i32 4), align 8, !tbaa !55
  store ptr null, ptr @recv_data, align 8, !tbaa !5
  store i8 0, ptr @recv_flags, align 1, !tbaa !20
  store i16 0, ptr @recv_acked, align 2, !tbaa !22
  %578 = load i8, ptr @flags, align 1, !tbaa !20
  %579 = zext i8 %578 to i32
  %580 = and i32 %579, 8
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %582, label %589

582:                                              ; preds = %572
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.pbuf, ptr %583, i32 0, i32 5
  %585 = load i8, ptr %584, align 1, !tbaa !56
  %586 = zext i8 %585 to i32
  %587 = or i32 %586, 1
  %588 = trunc i32 %587 to i8
  store i8 %588, ptr %584, align 1, !tbaa !56
  br label %589

589:                                              ; preds = %582, %572
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.tcp_pcb, ptr %590, i32 0, i32 46
  %592 = load ptr, ptr %591, align 8, !tbaa !57
  %593 = icmp ne ptr %592, null
  br i1 %593, label %594, label %619

594:                                              ; preds = %589
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = call signext i8 @tcp_process_refused_data(ptr noundef %595)
  %597 = sext i8 %596 to i32
  %598 = icmp eq i32 %597, -13
  br i1 %598, label %608, label %599

599:                                              ; preds = %594
  %600 = load ptr, ptr %5, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.tcp_pcb, ptr %600, i32 0, i32 46
  %602 = load ptr, ptr %601, align 8, !tbaa !57
  %603 = icmp ne ptr %602, null
  br i1 %603, label %604, label %618

604:                                              ; preds = %599
  %605 = load i16, ptr @tcplen, align 2, !tbaa !22
  %606 = zext i16 %605 to i32
  %607 = icmp sgt i32 %606, 0
  br i1 %607, label %608, label %618

608:                                              ; preds = %604, %594
  %609 = load ptr, ptr %5, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.tcp_pcb, ptr %609, i32 0, i32 19
  %611 = load i16, ptr %610, align 2, !tbaa !58
  %612 = zext i16 %611 to i32
  %613 = icmp eq i32 %612, 0
  br i1 %613, label %614, label %617

614:                                              ; preds = %608
  %615 = load ptr, ptr %5, align 8, !tbaa !5
  %616 = call signext i8 @tcp_send_empty_ack(ptr noundef %615)
  br label %617

617:                                              ; preds = %614, %608
  br label %818

618:                                              ; preds = %604, %599
  br label %619

619:                                              ; preds = %618, %589
  %620 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %620, ptr @tcp_input_pcb, align 8, !tbaa !5
  %621 = load ptr, ptr %5, align 8, !tbaa !5
  %622 = call signext i8 @tcp_process(ptr noundef %621)
  store i8 %622, ptr %11, align 1, !tbaa !20
  %623 = load i8, ptr %11, align 1, !tbaa !20
  %624 = sext i8 %623 to i32
  %625 = icmp ne i32 %624, -13
  br i1 %625, label %626, label %817

626:                                              ; preds = %619
  %627 = load i8, ptr @recv_flags, align 1, !tbaa !20
  %628 = zext i8 %627 to i32
  %629 = and i32 %628, 8
  %630 = icmp ne i32 %629, 0
  br i1 %630, label %631, label %652

631:                                              ; preds = %626
  br label %632

632:                                              ; preds = %631
  %633 = load ptr, ptr %5, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.tcp_pcb, ptr %633, i32 0, i32 8
  %635 = load i32, ptr %634, align 8, !tbaa !30
  %636 = load ptr, ptr %5, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.tcp_pcb, ptr %636, i32 0, i32 52
  %638 = load ptr, ptr %637, align 8, !tbaa !59
  %639 = icmp ne ptr %638, null
  br i1 %639, label %640, label %647

640:                                              ; preds = %632
  %641 = load ptr, ptr %5, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.tcp_pcb, ptr %641, i32 0, i32 52
  %643 = load ptr, ptr %642, align 8, !tbaa !59
  %644 = load ptr, ptr %5, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.tcp_pcb, ptr %644, i32 0, i32 7
  %646 = load ptr, ptr %645, align 8, !tbaa !60
  call void %643(ptr noundef %646, i8 noundef signext -14)
  br label %647

647:                                              ; preds = %640, %632
  br label %648

648:                                              ; preds = %647
  br label %649

649:                                              ; preds = %648
  %650 = load ptr, ptr %5, align 8, !tbaa !5
  call void @tcp_pcb_remove(ptr noundef @tcp_active_pcbs, ptr noundef %650)
  %651 = load ptr, ptr %5, align 8, !tbaa !5
  call void @tcp_free(ptr noundef %651)
  br label %816

652:                                              ; preds = %626
  store i8 0, ptr %11, align 1, !tbaa !20
  %653 = load i16, ptr @recv_acked, align 2, !tbaa !22
  %654 = zext i16 %653 to i32
  %655 = icmp sgt i32 %654, 0
  br i1 %655, label %656, label %685

656:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 2, ptr %14) #3
  %657 = load i16, ptr @recv_acked, align 2, !tbaa !22
  store i16 %657, ptr %14, align 2, !tbaa !22
  br label %658

658:                                              ; preds = %656
  %659 = load ptr, ptr %5, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.tcp_pcb, ptr %659, i32 0, i32 48
  %661 = load ptr, ptr %660, align 8, !tbaa !61
  %662 = icmp ne ptr %661, null
  br i1 %662, label %663, label %673

663:                                              ; preds = %658
  %664 = load ptr, ptr %5, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.tcp_pcb, ptr %664, i32 0, i32 48
  %666 = load ptr, ptr %665, align 8, !tbaa !61
  %667 = load ptr, ptr %5, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.tcp_pcb, ptr %667, i32 0, i32 7
  %669 = load ptr, ptr %668, align 8, !tbaa !60
  %670 = load ptr, ptr %5, align 8, !tbaa !5
  %671 = load i16, ptr %14, align 2, !tbaa !22
  %672 = call signext i8 %666(ptr noundef %669, ptr noundef %670, i16 noundef zeroext %671)
  store i8 %672, ptr %11, align 1, !tbaa !20
  br label %674

673:                                              ; preds = %658
  store i8 0, ptr %11, align 1, !tbaa !20
  br label %674

674:                                              ; preds = %673, %663
  br label %675

675:                                              ; preds = %674
  br label %676

676:                                              ; preds = %675
  %677 = load i8, ptr %11, align 1, !tbaa !20
  %678 = sext i8 %677 to i32
  %679 = icmp eq i32 %678, -13
  br i1 %679, label %680, label %681

680:                                              ; preds = %676
  store i32 52, ptr %13, align 4
  br label %682

681:                                              ; preds = %676
  store i16 0, ptr @recv_acked, align 2, !tbaa !22
  store i32 0, ptr %13, align 4
  br label %682

682:                                              ; preds = %681, %680
  call void @llvm.lifetime.end.p0(i64 2, ptr %14) #3
  %683 = load i32, ptr %13, align 4
  switch i32 %683, label %858 [
    i32 0, label %684
    i32 52, label %818
  ]

684:                                              ; preds = %682
  br label %685

685:                                              ; preds = %684, %652
  %686 = load ptr, ptr %5, align 8, !tbaa !5
  %687 = call i32 @tcp_input_delayed_close(ptr noundef %686)
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %689, label %690

689:                                              ; preds = %685
  br label %818

690:                                              ; preds = %685
  %691 = load ptr, ptr @recv_data, align 8, !tbaa !5
  %692 = icmp ne ptr %691, null
  br i1 %692, label %693, label %753

693:                                              ; preds = %690
  br label %694

694:                                              ; preds = %693
  %695 = load ptr, ptr %5, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.tcp_pcb, ptr %695, i32 0, i32 46
  %697 = load ptr, ptr %696, align 8, !tbaa !57
  %698 = icmp eq ptr %697, null
  br i1 %698, label %704, label %699

699:                                              ; preds = %694
  br label %700

700:                                              ; preds = %699
  %701 = call i32 (ptr, ...) @printf(ptr noundef @.str, ptr noundef @.str.12, i32 noundef 486, ptr noundef @.str.2)
  br label %702

702:                                              ; preds = %700
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703, %694
  br label %705

705:                                              ; preds = %704
  br label %706

706:                                              ; preds = %705
  %707 = load ptr, ptr %5, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.tcp_pcb, ptr %707, i32 0, i32 12
  %709 = load i16, ptr %708, align 2, !tbaa !62
  %710 = zext i16 %709 to i32
  %711 = and i32 %710, 16
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %717

713:                                              ; preds = %706
  %714 = load ptr, ptr @recv_data, align 8, !tbaa !5
  %715 = call zeroext i8 @pbuf_free(ptr noundef %714)
  %716 = load ptr, ptr %5, align 8, !tbaa !5
  call void @tcp_abort(ptr noundef %716)
  br label %818

717:                                              ; preds = %706
  br label %718

718:                                              ; preds = %717
  %719 = load ptr, ptr %5, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.tcp_pcb, ptr %719, i32 0, i32 49
  %721 = load ptr, ptr %720, align 8, !tbaa !63
  %722 = icmp ne ptr %721, null
  br i1 %722, label %723, label %733

723:                                              ; preds = %718
  %724 = load ptr, ptr %5, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.tcp_pcb, ptr %724, i32 0, i32 49
  %726 = load ptr, ptr %725, align 8, !tbaa !63
  %727 = load ptr, ptr %5, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.tcp_pcb, ptr %727, i32 0, i32 7
  %729 = load ptr, ptr %728, align 8, !tbaa !60
  %730 = load ptr, ptr %5, align 8, !tbaa !5
  %731 = load ptr, ptr @recv_data, align 8, !tbaa !5
  %732 = call signext i8 %726(ptr noundef %729, ptr noundef %730, ptr noundef %731, i8 noundef signext 0)
  store i8 %732, ptr %11, align 1, !tbaa !20
  br label %737

733:                                              ; preds = %718
  %734 = load ptr, ptr %5, align 8, !tbaa !5
  %735 = load ptr, ptr @recv_data, align 8, !tbaa !5
  %736 = call signext i8 @tcp_recv_null(ptr noundef null, ptr noundef %734, ptr noundef %735, i8 noundef signext 0)
  store i8 %736, ptr %11, align 1, !tbaa !20
  br label %737

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

738:                                              ; preds = %737
  br label %739

739:                                              ; preds = %738
  %740 = load i8, ptr %11, align 1, !tbaa !20
  %741 = sext i8 %740 to i32
  %742 = icmp eq i32 %741, -13
  br i1 %742, label %743, label %744

743:                                              ; preds = %739
  br label %818

744:                                              ; preds = %739
  %745 = load i8, ptr %11, align 1, !tbaa !20
  %746 = sext i8 %745 to i32
  %747 = icmp ne i32 %746, 0
  br i1 %747, label %748, label %752

748:                                              ; preds = %744
  %749 = load ptr, ptr @recv_data, align 8, !tbaa !5
  %750 = load ptr, ptr %5, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.tcp_pcb, ptr %750, i32 0, i32 46
  store ptr %749, ptr %751, align 8, !tbaa !57
  br label %752

752:                                              ; preds = %748, %744
  br label %753

753:                                              ; preds = %752, %690
  %754 = load i8, ptr @recv_flags, align 1, !tbaa !20
  %755 = zext i8 %754 to i32
  %756 = and i32 %755, 32
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %808

758:                                              ; preds = %753
  %759 = load ptr, ptr %5, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.tcp_pcb, ptr %759, i32 0, i32 46
  %761 = load ptr, ptr %760, align 8, !tbaa !57
  %762 = icmp ne ptr %761, null
  br i1 %762, label %763, label %772

763:                                              ; preds = %758
  %764 = load ptr, ptr %5, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.tcp_pcb, ptr %764, i32 0, i32 46
  %766 = load ptr, ptr %765, align 8, !tbaa !57
  %767 = getelementptr inbounds %struct.pbuf, ptr %766, i32 0, i32 5
  %768 = load i8, ptr %767, align 1, !tbaa !56
  %769 = zext i8 %768 to i32
  %770 = or i32 %769, 32
  %771 = trunc i32 %770 to i8
  store i8 %771, ptr %767, align 1, !tbaa !56
  br label %807

772:                                              ; preds = %758
  %773 = load ptr, ptr %5, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.tcp_pcb, ptr %773, i32 0, i32 18
  %775 = load i16, ptr %774, align 8, !tbaa !64
  %776 = zext i16 %775 to i32
  %777 = icmp ne i32 %776, 2920
  br i1 %777, label %778, label %783

778:                                              ; preds = %772
  %779 = load ptr, ptr %5, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.tcp_pcb, ptr %779, i32 0, i32 18
  %781 = load i16, ptr %780, align 8, !tbaa !64
  %782 = add i16 %781, 1
  store i16 %782, ptr %780, align 8, !tbaa !64
  br label %783

783:                                              ; preds = %778, %772
  br label %784

784:                                              ; preds = %783
  %785 = load ptr, ptr %5, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.tcp_pcb, ptr %785, i32 0, i32 49
  %787 = load ptr, ptr %786, align 8, !tbaa !63
  %788 = icmp ne ptr %787, null
  br i1 %788, label %789, label %798

789:                                              ; preds = %784
  %790 = load ptr, ptr %5, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.tcp_pcb, ptr %790, i32 0, i32 49
  %792 = load ptr, ptr %791, align 8, !tbaa !63
  %793 = load ptr, ptr %5, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.tcp_pcb, ptr %793, i32 0, i32 7
  %795 = load ptr, ptr %794, align 8, !tbaa !60
  %796 = load ptr, ptr %5, align 8, !tbaa !5
  %797 = call signext i8 %792(ptr noundef %795, ptr noundef %796, ptr noundef null, i8 noundef signext 0)
  store i8 %797, ptr %11, align 1, !tbaa !20
  br label %799

798:                                              ; preds = %784
  store i8 0, ptr %11, align 1, !tbaa !20
  br label %799

799:                                              ; preds = %798, %789
  br label %800

800:                                              ; preds = %799
  br label %801

801:                                              ; preds = %800
  %802 = load i8, ptr %11, align 1, !tbaa !20
  %803 = sext i8 %802 to i32
  %804 = icmp eq i32 %803, -13
  br i1 %804, label %805, label %806

805:                                              ; preds = %801
  br label %818

806:                                              ; preds = %801
  br label %807

807:                                              ; preds = %806, %763
  br label %808

808:                                              ; preds = %807, %753
  store ptr null, ptr @tcp_input_pcb, align 8, !tbaa !5
  %809 = load ptr, ptr %5, align 8, !tbaa !5
  %810 = call i32 @tcp_input_delayed_close(ptr noundef %809)
  %811 = icmp ne i32 %810, 0
  br i1 %811, label %812, label %813

812:                                              ; preds = %808
  br label %818

813:                                              ; preds = %808
  %814 = load ptr, ptr %5, align 8, !tbaa !5
  %815 = call signext i8 @tcp_output(ptr noundef %814)
  br label %816

816:                                              ; preds = %813, %649
  br label %817

817:                                              ; preds = %816, %619
  br label %818

818:                                              ; preds = %817, %812, %805, %743, %713, %689, %682, %617
  store ptr null, ptr @tcp_input_pcb, align 8, !tbaa !5
  store ptr null, ptr @recv_data, align 8, !tbaa !5
  %819 = load ptr, ptr getelementptr inbounds (%struct.tcp_seg, ptr @inseg, i32 0, i32 1), align 8, !tbaa !54
  %820 = icmp ne ptr %819, null
  br i1 %820, label %821, label %824

821:                                              ; preds = %818
  %822 = load ptr, ptr getelementptr inbounds (%struct.tcp_seg, ptr @inseg, i32 0, i32 1), align 8, !tbaa !54
  %823 = call zeroext i8 @pbuf_free(ptr noundef %822)
  store ptr null, ptr getelementptr inbounds (%struct.tcp_seg, ptr @inseg, i32 0, i32 1), align 8, !tbaa !54
  br label %824

824:                                              ; preds = %821, %818
  br label %851

825:                                              ; preds = %569
  %826 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.tcp_hdr, ptr %826, i32 0, i32 4
  %828 = load i16, ptr %827, align 1, !tbaa !18
  %829 = call zeroext i16 @lwip_htons(i16 noundef zeroext %828)
  %830 = zext i16 %829 to i32
  %831 = and i32 %830, 63
  %832 = trunc i32 %831 to i8
  %833 = zext i8 %832 to i32
  %834 = and i32 %833, 4
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %848, label %836

836:                                              ; preds = %825
  %837 = load i32, ptr @ackno, align 4, !tbaa !27
  %838 = load i32, ptr @seqno, align 4, !tbaa !27
  %839 = load i16, ptr @tcplen, align 2, !tbaa !22
  %840 = zext i16 %839 to i32
  %841 = add i32 %838, %840
  %842 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.tcp_hdr, ptr %842, i32 0, i32 1
  %844 = load i16, ptr %843, align 1, !tbaa !25
  %845 = load ptr, ptr @tcphdr, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.tcp_hdr, ptr %845, i32 0, i32 0
  %847 = load i16, ptr %846, align 1, !tbaa !24
  call void @tcp_rst(ptr noundef null, i32 noundef %837, i32 noundef %841, ptr noundef getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 5), ptr noundef getelementptr inbounds (%struct.ip_globals, ptr @ip_data, i32 0, i32 4), i16 noundef zeroext %844, i16 noundef zeroext %847)
  br label %848

848:                                              ; preds = %836, %825
  %849 = load ptr, ptr %3, align 8, !tbaa !5
  %850 = call zeroext i8 @pbuf_free(ptr noundef %849)
  br label %851

851:                                              ; preds = %848, %824
  br label %852

852:                                              ; preds = %851
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  store i32 1, ptr %13, align 4
  br label %858

855:                                              ; preds = %242, %184, %70, %47, %35
  %856 = load ptr, ptr %3, align 8, !tbaa !5
  %857 = call zeroext i8 @pbuf_free(ptr noundef %856)
  store i32 0, ptr %13, align 4
  br label %858

858:                                              ; preds = %855, %854, %682, %564, %467, %184
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  %859 = load i32, ptr %13, align 4
  switch i32 %859, label %861 [
    i32 0, label %860
    i32 1, label %860
  ]

860:                                              ; preds = %858, %858
  ret void

861:                                              ; preds = %858
  unreachable
}

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

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

declare zeroext i8 @ip4_addr_isbroadcast_u32(i32 noundef, ptr noundef) #2

declare zeroext i16 @lwip_htons(i16 noundef zeroext) #2

declare zeroext i8 @pbuf_remove_header(ptr noundef, i64 noundef) #2

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

declare i32 @lwip_htonl(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @tcp_timewait_input(ptr noundef) #0

declare zeroext i8 @pbuf_free(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @tcp_listen_input(ptr noundef) #0

declare signext i8 @tcp_process_refused_data(ptr noundef) #2

declare signext i8 @tcp_send_empty_ack(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden signext i8 @tcp_process(ptr noundef) #0

declare void @tcp_pcb_remove(ptr noundef, ptr noundef) #2

declare void @tcp_free(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @tcp_input_delayed_close(ptr noundef) #0

declare void @tcp_abort(ptr noundef) #2

declare signext i8 @tcp_recv_null(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext) #2

declare signext i8 @tcp_output(ptr noundef) #2

declare void @tcp_rst(ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i16 noundef zeroext, i16 noundef zeroext) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 }

!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 = !{!"pbuf", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 18, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23}
!11 = !{!"short", !7, i64 0}
!12 = !{!10, !11, i64 18}
!13 = !{!14, !16, i64 32}
!14 = !{!"ip_globals", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !15, i64 28, !15, i64 32}
!15 = !{!"ip4_addr", !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!14, !6, i64 0}
!18 = !{!19, !11, i64 12}
!19 = !{!"tcp_hdr", !11, i64 0, !11, i64 2, !16, i64 4, !16, i64 8, !11, i64 12, !11, i64 14, !11, i64 16, !11, i64 18}
!20 = !{!7, !7, i64 0}
!21 = !{!10, !11, i64 16}
!22 = !{!11, !11, i64 0}
!23 = !{!10, !6, i64 0}
!24 = !{!19, !11, i64 0}
!25 = !{!19, !11, i64 2}
!26 = !{!19, !16, i64 4}
!27 = !{!16, !16, i64 0}
!28 = !{!19, !16, i64 8}
!29 = !{!19, !11, i64 14}
!30 = !{!31, !16, i64 32}
!31 = !{!"tcp_pcb", !15, i64 0, !15, i64 4, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !6, i64 16, !6, i64 24, !16, i64 32, !7, i64 36, !11, i64 38, !11, i64 40, !11, i64 42, !7, i64 44, !7, i64 45, !7, i64 46, !16, i64 48, !16, i64 52, !11, i64 56, !11, i64 58, !16, i64 60, !11, i64 64, !11, i64 66, !16, i64 68, !16, i64 72, !11, i64 76, !11, i64 78, !11, i64 80, !7, i64 82, !7, i64 83, !16, i64 84, !11, i64 88, !11, i64 90, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !11, i64 112, !11, i64 114, !11, i64 116, !11, i64 118, !11, i64 120, !11, i64 122, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !16, i64 200, !7, i64 204, !7, i64 205, !7, i64 206, !7, i64 207}
!32 = !{!31, !7, i64 8}
!33 = !{!14, !6, i64 8}
!34 = !{!35, !7, i64 84}
!35 = !{!"netif", !6, i64 0, !15, i64 8, !15, i64 12, !15, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !7, i64 64, !11, i64 72, !7, i64 74, !7, i64 80, !7, i64 81, !7, i64 82, !7, i64 84, !7, i64 85}
!36 = !{!31, !11, i64 40}
!37 = !{!31, !11, i64 38}
!38 = !{!31, !16, i64 4}
!39 = !{!14, !16, i64 28}
!40 = !{!31, !16, i64 0}
!41 = !{!31, !6, i64 16}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = distinct !{!44, !43}
!45 = !{!46, !7, i64 8}
!46 = !{!"tcp_pcb_listen", !15, i64 0, !15, i64 4, !7, i64 8, !7, i64 9, !7, i64 10, !7, i64 11, !6, i64 16, !6, i64 24, !16, i64 32, !7, i64 36, !11, i64 38, !6, i64 40}
!47 = !{!46, !11, i64 38}
!48 = !{!46, !16, i64 0}
!49 = !{!46, !6, i64 16}
!50 = distinct !{!50, !43}
!51 = !{!52, !6, i64 0}
!52 = !{!"tcp_seg", !6, i64 0, !6, i64 8, !11, i64 16, !7, i64 18, !6, i64 24}
!53 = !{!52, !11, i64 16}
!54 = !{!52, !6, i64 8}
!55 = !{!52, !6, i64 24}
!56 = !{!10, !7, i64 21}
!57 = !{!31, !6, i64 144}
!58 = !{!31, !11, i64 58}
!59 = !{!31, !6, i64 192}
!60 = !{!31, !6, i64 24}
!61 = !{!31, !6, i64 160}
!62 = !{!31, !11, i64 42}
!63 = !{!31, !6, i64 168}
!64 = !{!31, !11, i64 56}


; 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.ip_globals = type { ptr, ptr, ptr, i16, %struct.ip4_addr, %struct.ip4_addr }
%struct.ip4_addr = type { i32 }
%union.tcp_listen_pcbs_t = type { ptr }
%struct.tcp_seg = type { ptr, ptr, i16, i8, ptr }

@.str = external hidden unnamed_addr constant [40 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [181 x i8], align 1
@tcphdr = external hidden local_unnamed_addr global ptr, align 8
@ip_data = external global %struct.ip_globals, align 8
@tcphdr_optlen = external hidden local_unnamed_addr global i16, align 2
@tcphdr_opt2 = external hidden local_unnamed_addr global ptr, align 8
@tcphdr_opt1len = external hidden local_unnamed_addr global i16, align 2
@.str.3 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [31 x i8], align 1
@seqno = external hidden local_unnamed_addr global i32, align 4
@ackno = external hidden local_unnamed_addr global i32, align 4
@flags = external hidden local_unnamed_addr global i8, align 1
@tcplen = external hidden local_unnamed_addr global i16, align 2
@tcp_active_pcbs = external global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [42 x i8], align 1
@tcp_tw_pcbs = external local_unnamed_addr global ptr, align 8
@.str.11 = external hidden unnamed_addr constant [45 x i8], align 1
@tcp_listen_pcbs = external local_unnamed_addr global %union.tcp_listen_pcbs_t, align 8
@inseg = external hidden local_unnamed_addr global %struct.tcp_seg, align 8
@recv_data = external hidden local_unnamed_addr global ptr, align 8
@recv_flags = external hidden local_unnamed_addr global i8, align 1
@recv_acked = external hidden local_unnamed_addr global i16, align 2
@tcp_input_pcb = external dso_local local_unnamed_addr global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @tcp_input(ptr noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %3, label %5

3:                                                ; preds = %2
  %4 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.1, i32 noundef 131, ptr noundef nonnull @.str.2)
  br label %5

5:                                                ; preds = %3, %2
  %6 = getelementptr inbounds i8, ptr %0, i64 8
  %7 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %7, ptr @tcphdr, align 8, !tbaa !11
  %8 = getelementptr inbounds i8, ptr %0, i64 18
  %9 = load i16, ptr %8, align 2, !tbaa !12
  %10 = icmp ult i16 %9, 20
  br i1 %10, label %354, label %11

11:                                               ; preds = %5
  %12 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 32), align 8, !tbaa !13
  %13 = load ptr, ptr @ip_data, align 8, !tbaa !17
  %14 = tail call zeroext i8 @ip4_addr_isbroadcast_u32(i32 noundef %12, ptr noundef %13) #3
  %.not167 = icmp eq i8 %14, 0
  br i1 %.not167, label %15, label %354

15:                                               ; preds = %11
  %16 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 32), align 8, !tbaa !13
  %17 = and i32 %16, 240
  %18 = icmp eq i32 %17, 224
  br i1 %18, label %354, label %19

19:                                               ; preds = %15
  %20 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %21 = getelementptr inbounds i8, ptr %20, i64 12
  %22 = load i16, ptr %21, align 1, !tbaa !18
  %23 = tail call zeroext i16 @lwip_htons(i16 noundef zeroext %22) #3
  %24 = lshr i16 %23, 10
  %25 = and i16 %24, 60
  %26 = zext nneg i16 %25 to i64
  %27 = icmp ult i16 %23, 20480
  br i1 %27, label %354, label %28

28:                                               ; preds = %19
  %29 = getelementptr inbounds i8, ptr %0, i64 16
  %30 = load i16, ptr %29, align 8, !tbaa !20
  %31 = icmp ugt i16 %25, %30
  br i1 %31, label %354, label %32

32:                                               ; preds = %28
  %33 = add nsw i16 %25, -20
  store i16 %33, ptr @tcphdr_optlen, align 2, !tbaa !21
  store ptr null, ptr @tcphdr_opt2, align 8, !tbaa !11
  %34 = load i16, ptr %8, align 2, !tbaa !12
  %.not168 = icmp ult i16 %34, %25
  br i1 %.not168, label %37, label %35

35:                                               ; preds = %32
  store i16 %33, ptr @tcphdr_opt1len, align 2, !tbaa !21
  %36 = tail call zeroext i8 @pbuf_remove_header(ptr noundef nonnull %0, i64 noundef %26) #3
  br label %.thread

37:                                               ; preds = %32
  %38 = load ptr, ptr %0, align 8, !tbaa !22
  %.not169 = icmp eq ptr %38, null
  br i1 %.not169, label %39, label %41

39:                                               ; preds = %37
  %40 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.3, i32 noundef 194, ptr noundef nonnull @.str.2)
  br label %41

41:                                               ; preds = %39, %37
  %42 = tail call zeroext i8 @pbuf_remove_header(ptr noundef nonnull %0, i64 noundef 20) #3
  %43 = load i16, ptr %8, align 2, !tbaa !12
  store i16 %43, ptr @tcphdr_opt1len, align 2, !tbaa !21
  %44 = load i16, ptr @tcphdr_optlen, align 2, !tbaa !21
  %45 = sub i16 %44, %43
  %46 = zext i16 %43 to i64
  %47 = tail call zeroext i8 @pbuf_remove_header(ptr noundef nonnull %0, i64 noundef %46) #3
  %48 = load ptr, ptr %0, align 8, !tbaa !22
  %49 = getelementptr inbounds i8, ptr %48, i64 18
  %50 = load i16, ptr %49, align 2, !tbaa !12
  %51 = icmp ugt i16 %45, %50
  br i1 %51, label %354, label %52

52:                                               ; preds = %41
  %53 = getelementptr inbounds i8, ptr %48, i64 8
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  store ptr %54, ptr @tcphdr_opt2, align 8, !tbaa !11
  %55 = load ptr, ptr %0, align 8, !tbaa !22
  %56 = zext i16 %45 to i64
  %57 = tail call zeroext i8 @pbuf_remove_header(ptr noundef %55, i64 noundef %56) #3
  %58 = load i16, ptr %29, align 8, !tbaa !20
  %59 = sub i16 %58, %45
  store i16 %59, ptr %29, align 8, !tbaa !20
  %60 = load i16, ptr %8, align 2, !tbaa !12
  %61 = icmp eq i16 %60, 0
  br i1 %61, label %64, label %62

62:                                               ; preds = %52
  %63 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.4, i32 noundef 223, ptr noundef nonnull @.str.2)
  %.pre = load i16, ptr %29, align 8, !tbaa !20
  br label %64

64:                                               ; preds = %52, %62
  %65 = phi i16 [ %59, %52 ], [ %.pre, %62 ]
  %66 = load ptr, ptr %0, align 8, !tbaa !22
  %67 = getelementptr inbounds i8, ptr %66, i64 16
  %68 = load i16, ptr %67, align 8, !tbaa !20
  %69 = icmp eq i16 %65, %68
  br i1 %69, label %.thread, label %70

70:                                               ; preds = %64
  %71 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.5, i32 noundef 224, ptr noundef nonnull @.str.2)
  br label %.thread

.thread:                                          ; preds = %64, %70, %35
  %72 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %73 = load i16, ptr %72, align 1, !tbaa !23
  %74 = tail call zeroext i16 @lwip_htons(i16 noundef zeroext %73) #3
  %75 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  store i16 %74, ptr %75, align 1, !tbaa !23
  %76 = getelementptr inbounds i8, ptr %75, i64 2
  %77 = load i16, ptr %76, align 1, !tbaa !24
  %78 = tail call zeroext i16 @lwip_htons(i16 noundef zeroext %77) #3
  %79 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %80 = getelementptr inbounds i8, ptr %79, i64 2
  store i16 %78, ptr %80, align 1, !tbaa !24
  %81 = getelementptr inbounds i8, ptr %79, i64 4
  %82 = load i32, ptr %81, align 1, !tbaa !25
  %83 = tail call i32 @lwip_htonl(i32 noundef %82) #3
  %84 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %85 = getelementptr inbounds i8, ptr %84, i64 4
  store i32 %83, ptr %85, align 1, !tbaa !25
  store i32 %83, ptr @seqno, align 4, !tbaa !26
  %86 = getelementptr inbounds i8, ptr %84, i64 8
  %87 = load i32, ptr %86, align 1, !tbaa !27
  %88 = tail call i32 @lwip_htonl(i32 noundef %87) #3
  %89 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %90 = getelementptr inbounds i8, ptr %89, i64 8
  store i32 %88, ptr %90, align 1, !tbaa !27
  store i32 %88, ptr @ackno, align 4, !tbaa !26
  %91 = getelementptr inbounds i8, ptr %89, i64 14
  %92 = load i16, ptr %91, align 1, !tbaa !28
  %93 = tail call zeroext i16 @lwip_htons(i16 noundef zeroext %92) #3
  %94 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %95 = getelementptr inbounds i8, ptr %94, i64 14
  store i16 %93, ptr %95, align 1, !tbaa !28
  %96 = getelementptr inbounds i8, ptr %94, i64 12
  %97 = load i16, ptr %96, align 1, !tbaa !18
  %98 = tail call zeroext i16 @lwip_htons(i16 noundef zeroext %97) #3
  %99 = trunc i16 %98 to i8
  %100 = and i8 %99, 63
  store i8 %100, ptr @flags, align 1, !tbaa !29
  %101 = load i16, ptr %29, align 8, !tbaa !20
  store i16 %101, ptr @tcplen, align 2, !tbaa !21
  %102 = and i16 %98, 3
  %.not170 = icmp eq i16 %102, 0
  br i1 %.not170, label %106, label %103

103:                                              ; preds = %.thread
  %104 = add i16 %101, 1
  store i16 %104, ptr @tcplen, align 2, !tbaa !21
  %105 = icmp eq i16 %101, -1
  br i1 %105, label %354, label %106

106:                                              ; preds = %103, %.thread
  %.0235 = load ptr, ptr @tcp_active_pcbs, align 8, !tbaa !11
  %cond236 = icmp eq ptr %.0235, null
  br i1 %cond236, label %.preheader227, label %.lr.ph

.preheader227:                                    ; preds = %161, %106
  %.1239 = load ptr, ptr @tcp_tw_pcbs, align 8, !tbaa !11
  %.not180240 = icmp eq ptr %.1239, null
  br i1 %.not180240, label %.preheader, label %.lr.ph242

.lr.ph:                                           ; preds = %106, %161
  %.0238 = phi ptr [ %.0, %161 ], [ %.0235, %106 ]
  %.0140237 = phi ptr [ %.0238, %161 ], [ null, %106 ]
  %107 = getelementptr inbounds i8, ptr %.0238, i64 32
  %108 = load i32, ptr %107, align 8, !tbaa !30
  %.not172 = icmp eq i32 %108, 0
  br i1 %.not172, label %109, label %111

109:                                              ; preds = %.lr.ph
  %110 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.6, i32 noundef 251, ptr noundef nonnull @.str.2)
  %.pr = load i32, ptr %107, align 8, !tbaa !30
  br label %111

111:                                              ; preds = %.lr.ph, %109
  %112 = phi i32 [ %108, %.lr.ph ], [ %.pr, %109 ]
  %.not173 = icmp eq i32 %112, 10
  br i1 %.not173, label %113, label %115

113:                                              ; preds = %111
  %114 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.7, i32 noundef 252, ptr noundef nonnull @.str.2)
  %.pre256 = load i32, ptr %107, align 8, !tbaa !30
  br label %115

115:                                              ; preds = %111, %113
  %116 = phi i32 [ %112, %111 ], [ %.pre256, %113 ]
  %.not174 = icmp eq i32 %116, 1
  br i1 %.not174, label %117, label %119

117:                                              ; preds = %115
  %118 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.8, i32 noundef 253, ptr noundef nonnull @.str.2)
  br label %119

119:                                              ; preds = %117, %115
  %120 = getelementptr inbounds i8, ptr %.0238, i64 8
  %121 = load i8, ptr %120, align 8, !tbaa !32
  %.not175 = icmp eq i8 %121, 0
  br i1 %.not175, label %127, label %122

122:                                              ; preds = %119
  %123 = load ptr, ptr getelementptr inbounds (i8, ptr @ip_data, i64 8), align 8, !tbaa !33
  %124 = getelementptr inbounds i8, ptr %123, i64 84
  %125 = load i8, ptr %124, align 4, !tbaa !34
  %126 = add i8 %125, 1
  %.not176 = icmp eq i8 %121, %126
  br i1 %.not176, label %127, label %161

127:                                              ; preds = %122, %119
  %128 = getelementptr inbounds i8, ptr %.0238, i64 40
  %129 = load i16, ptr %128, align 8, !tbaa !36
  %130 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %131 = load i16, ptr %130, align 1, !tbaa !23
  %132 = icmp eq i16 %129, %131
  br i1 %132, label %133, label %161

133:                                              ; preds = %127
  %134 = getelementptr inbounds i8, ptr %.0238, i64 38
  %135 = load i16, ptr %134, align 2, !tbaa !37
  %136 = getelementptr inbounds i8, ptr %130, i64 2
  %137 = load i16, ptr %136, align 1, !tbaa !24
  %138 = icmp eq i16 %135, %137
  br i1 %138, label %139, label %161

139:                                              ; preds = %133
  %140 = getelementptr inbounds i8, ptr %.0238, i64 4
  %141 = load i32, ptr %140, align 4, !tbaa !38
  %142 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 28), align 4, !tbaa !39
  %143 = icmp eq i32 %141, %142
  br i1 %143, label %144, label %161

144:                                              ; preds = %139
  %145 = load i32, ptr %.0238, align 8, !tbaa !40
  %146 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 32), align 8, !tbaa !13
  %147 = icmp eq i32 %145, %146
  br i1 %147, label %148, label %161

148:                                              ; preds = %144
  %149 = getelementptr inbounds i8, ptr %.0238, i64 16
  %150 = load ptr, ptr %149, align 8, !tbaa !41
  %.not177 = icmp eq ptr %150, %.0238
  br i1 %.not177, label %151, label %153

151:                                              ; preds = %148
  %152 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.9, i32 noundef 269, ptr noundef nonnull @.str.2)
  %.pre257.pre = load ptr, ptr %149, align 8, !tbaa !41
  br label %153

153:                                              ; preds = %151, %148
  %.pre257 = phi ptr [ %.pre257.pre, %151 ], [ %150, %148 ]
  %.not178 = icmp eq ptr %.0140237, null
  br i1 %.not178, label %157, label %154

154:                                              ; preds = %153
  %155 = getelementptr inbounds i8, ptr %.0140237, i64 16
  store ptr %.pre257, ptr %155, align 8, !tbaa !41
  %156 = load ptr, ptr @tcp_active_pcbs, align 8, !tbaa !11
  store ptr %156, ptr %149, align 8, !tbaa !41
  store ptr %.0238, ptr @tcp_active_pcbs, align 8, !tbaa !11
  br label %157

157:                                              ; preds = %154, %153
  %158 = phi ptr [ %156, %154 ], [ %.pre257, %153 ]
  %.not179 = icmp eq ptr %158, %.0238
  br i1 %.not179, label %159, label %230

159:                                              ; preds = %157
  %160 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.10, i32 noundef 277, ptr noundef nonnull @.str.2)
  br label %230

161:                                              ; preds = %127, %133, %139, %144, %122
  %162 = getelementptr inbounds i8, ptr %.0238, i64 16
  %.0 = load ptr, ptr %162, align 8, !tbaa !11
  %cond = icmp eq ptr %.0, null
  br i1 %cond, label %.preheader227, label %.lr.ph, !llvm.loop !42

.preheader:                                       ; preds = %204, %.preheader227
  %.0146243 = load ptr, ptr @tcp_listen_pcbs, align 8, !tbaa !29
  %cond212244 = icmp eq ptr %.0146243, null
  br i1 %cond212244, label %._crit_edge.thread, label %.lr.ph249

.lr.ph249:                                        ; preds = %.preheader
  %163 = load ptr, ptr getelementptr inbounds (i8, ptr @ip_data, i64 8), align 8
  %164 = getelementptr inbounds i8, ptr %163, i64 84
  %165 = load ptr, ptr @tcphdr, align 8
  %166 = getelementptr inbounds i8, ptr %165, i64 2
  %167 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 32), align 8
  br label %206

.lr.ph242:                                        ; preds = %.preheader227, %204
  %.1241 = phi ptr [ %.1, %204 ], [ %.1239, %.preheader227 ]
  %168 = getelementptr inbounds i8, ptr %.1241, i64 32
  %169 = load i32, ptr %168, align 8, !tbaa !30
  %170 = icmp eq i32 %169, 10
  br i1 %170, label %173, label %171

171:                                              ; preds = %.lr.ph242
  %172 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.11, i32 noundef 287, ptr noundef nonnull @.str.2)
  br label %173

173:                                              ; preds = %171, %.lr.ph242
  %174 = getelementptr inbounds i8, ptr %.1241, i64 8
  %175 = load i8, ptr %174, align 8, !tbaa !32
  %.not206 = icmp eq i8 %175, 0
  br i1 %.not206, label %181, label %176

176:                                              ; preds = %173
  %177 = load ptr, ptr getelementptr inbounds (i8, ptr @ip_data, i64 8), align 8, !tbaa !33
  %178 = getelementptr inbounds i8, ptr %177, i64 84
  %179 = load i8, ptr %178, align 4, !tbaa !34
  %180 = add i8 %179, 1
  %.not207 = icmp eq i8 %175, %180
  br i1 %.not207, label %181, label %204

181:                                              ; preds = %176, %173
  %182 = getelementptr inbounds i8, ptr %.1241, i64 40
  %183 = load i16, ptr %182, align 8, !tbaa !36
  %184 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %185 = load i16, ptr %184, align 1, !tbaa !23
  %186 = icmp eq i16 %183, %185
  br i1 %186, label %187, label %204

187:                                              ; preds = %181
  %188 = getelementptr inbounds i8, ptr %.1241, i64 38
  %189 = load i16, ptr %188, align 2, !tbaa !37
  %190 = getelementptr inbounds i8, ptr %184, i64 2
  %191 = load i16, ptr %190, align 1, !tbaa !24
  %192 = icmp eq i16 %189, %191
  br i1 %192, label %193, label %204

193:                                              ; preds = %187
  %194 = getelementptr inbounds i8, ptr %.1241, i64 4
  %195 = load i32, ptr %194, align 4, !tbaa !38
  %196 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 28), align 4, !tbaa !39
  %197 = icmp eq i32 %195, %196
  br i1 %197, label %198, label %204

198:                                              ; preds = %193
  %199 = load i32, ptr %.1241, align 8, !tbaa !40
  %200 = load i32, ptr getelementptr inbounds (i8, ptr @ip_data, i64 32), align 8, !tbaa !13
  %201 = icmp eq i32 %199, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %198
  tail call void @tcp_timewait_input(ptr noundef nonnull %.1241)
  %203 = tail call zeroext i8 @pbuf_free(ptr noundef %0) #3
  br label %356

204:                                              ; preds = %181, %187, %193, %198, %176
  %205 = getelementptr inbounds i8, ptr %.1241, i64 16
  %.1 = load ptr, ptr %205, align 8, !tbaa !11
  %.not180 = icmp eq ptr %.1, null
  br i1 %.not180, label %.preheader, label %.lr.ph242, !llvm.loop !44

206:                                              ; preds = %.lr.ph249, %222
  %.0146248 = phi ptr [ %.0146243, %.lr.ph249 ], [ %.0146, %222 ]
  %.2142247 = phi ptr [ null, %.lr.ph249 ], [ %.0146248, %222 ]
  %.0148246 = phi ptr [ null, %.lr.ph249 ], [ %.2150, %222 ]
  %.0151245 = phi ptr [ null, %.lr.ph249 ], [ %.2153, %222 ]
  %207 = getelementptr inbounds i8, ptr %.0146248, i64 8
  %208 = load i8, ptr %207, align 8, !tbaa !45
  %.not182 = icmp eq i8 %208, 0
  br i1 %.not182, label %212, label %209

209:                                              ; preds = %206
  %210 = load i8, ptr %164, align 4, !tbaa !34
  %211 = add i8 %210, 1
  %.not183 = icmp eq i8 %208, %211
  br i1 %.not183, label %212, label %222

212:                                              ; preds = %209, %206
  %213 = getelementptr inbounds i8, ptr %.0146248, i64 38
  %214 = load i16, ptr %213, align 2, !tbaa !47
  %215 = load i16, ptr %166, align 1, !tbaa !24
  %216 = icmp eq i16 %214, %215
  br i1 %216, label %217, label %222

217:                                              ; preds = %212
  %218 = load i32, ptr %.0146248, align 8, !tbaa !48
  %219 = icmp eq i32 %218, %167
  br i1 %219, label %.thread214, label %220

220:                                              ; preds = %217
  %221 = icmp eq i32 %218, 0
  %spec.select = select i1 %221, ptr %.2142247, ptr %.0151245
  %spec.select208 = select i1 %221, ptr %.0146248, ptr %.0148246
  br label %222

222:                                              ; preds = %220, %212, %209
  %.2153 = phi ptr [ %.0151245, %209 ], [ %.0151245, %212 ], [ %spec.select, %220 ]
  %.2150 = phi ptr [ %.0148246, %209 ], [ %.0148246, %212 ], [ %spec.select208, %220 ]
  %223 = getelementptr inbounds i8, ptr %.0146248, i64 16
  %.0146 = load ptr, ptr %223, align 8, !tbaa !29
  %cond212 = icmp eq ptr %.0146, null
  br i1 %cond212, label %._crit_edge, label %206, !llvm.loop !49

._crit_edge:                                      ; preds = %222
  %.not184 = icmp eq ptr %.2150, null
  br i1 %.not184, label %._crit_edge.thread, label %.thread214

.thread214:                                       ; preds = %217, %._crit_edge
  %.4219 = phi ptr [ %.2153, %._crit_edge ], [ %.2142247, %217 ]
  %.1147218 = phi ptr [ %.2150, %._crit_edge ], [ %.0146248, %217 ]
  %.not205 = icmp eq ptr %.4219, null
  br i1 %.not205, label %228, label %224

224:                                              ; preds = %.thread214
  %225 = getelementptr inbounds i8, ptr %.1147218, i64 16
  %226 = load ptr, ptr %225, align 8, !tbaa !50
  %227 = getelementptr inbounds i8, ptr %.4219, i64 16
  store ptr %226, ptr %227, align 8, !tbaa !50
  store ptr %.0146243, ptr %225, align 8, !tbaa !50
  store ptr %.1147218, ptr @tcp_listen_pcbs, align 8, !tbaa !29
  br label %228

228:                                              ; preds = %.thread214, %224
  tail call void @tcp_listen_input(ptr noundef nonnull %.1147218)
  %229 = tail call zeroext i8 @pbuf_free(ptr noundef %0) #3
  br label %356

230:                                              ; preds = %157, %159
  store ptr null, ptr @inseg, align 8, !tbaa !51
  %231 = load i16, ptr %29, align 8, !tbaa !20
  store i16 %231, ptr getelementptr inbounds (i8, ptr @inseg, i64 16), align 8, !tbaa !53
  store ptr %0, ptr getelementptr inbounds (i8, ptr @inseg, i64 8), align 8, !tbaa !54
  %232 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  store ptr %232, ptr getelementptr inbounds (i8, ptr @inseg, i64 24), align 8, !tbaa !55
  store ptr null, ptr @recv_data, align 8, !tbaa !11
  store i8 0, ptr @recv_flags, align 1, !tbaa !29
  store i16 0, ptr @recv_acked, align 2, !tbaa !21
  %233 = load i8, ptr @flags, align 1, !tbaa !29
  %234 = and i8 %233, 8
  %.not187 = icmp eq i8 %234, 0
  br i1 %.not187, label %239, label %235

235:                                              ; preds = %230
  %236 = getelementptr inbounds i8, ptr %0, i64 21
  %237 = load i8, ptr %236, align 1, !tbaa !56
  %238 = or i8 %237, 1
  store i8 %238, ptr %236, align 1, !tbaa !56
  br label %239

239:                                              ; preds = %235, %230
  %240 = getelementptr inbounds i8, ptr %.0238, i64 144
  %241 = load ptr, ptr %240, align 8, !tbaa !57
  %.not188 = icmp eq ptr %241, null
  br i1 %.not188, label %256, label %242

242:                                              ; preds = %239
  %243 = tail call signext i8 @tcp_process_refused_data(ptr noundef nonnull %.0238) #3
  %244 = icmp eq i8 %243, -13
  br i1 %244, label %250, label %245

245:                                              ; preds = %242
  %246 = load ptr, ptr %240, align 8, !tbaa !57
  %247 = icmp ne ptr %246, null
  %248 = load i16, ptr @tcplen, align 2
  %249 = icmp ne i16 %248, 0
  %or.cond = select i1 %247, i1 %249, i1 false
  br i1 %or.cond, label %250, label %256

250:                                              ; preds = %245, %242
  %251 = getelementptr inbounds i8, ptr %.0238, i64 58
  %252 = load i16, ptr %251, align 2, !tbaa !58
  %253 = icmp eq i16 %252, 0
  br i1 %253, label %254, label %333

254:                                              ; preds = %250
  %255 = tail call signext i8 @tcp_send_empty_ack(ptr noundef nonnull %.0238) #3
  br label %333

256:                                              ; preds = %245, %239
  store ptr %.0238, ptr @tcp_input_pcb, align 8, !tbaa !11
  %257 = tail call signext i8 @tcp_process(ptr noundef nonnull %.0238)
  %.not189 = icmp eq i8 %257, -13
  br i1 %.not189, label %333, label %258

258:                                              ; preds = %256
  %259 = load i8, ptr @recv_flags, align 1, !tbaa !29
  %260 = and i8 %259, 8
  %.not190 = icmp eq i8 %260, 0
  br i1 %.not190, label %268, label %261

261:                                              ; preds = %258
  %262 = getelementptr inbounds i8, ptr %.0238, i64 192
  %263 = load ptr, ptr %262, align 8, !tbaa !59
  %.not203 = icmp eq ptr %263, null
  br i1 %.not203, label %267, label %264

264:                                              ; preds = %261
  %265 = getelementptr inbounds i8, ptr %.0238, i64 24
  %266 = load ptr, ptr %265, align 8, !tbaa !60
  tail call void %263(ptr noundef %266, i8 noundef signext -14) #3
  br label %267

267:                                              ; preds = %264, %261
  tail call void @tcp_pcb_remove(ptr noundef nonnull @tcp_active_pcbs, ptr noundef nonnull %.0238) #3
  tail call void @tcp_free(ptr noundef nonnull %.0238) #3
  br label %333

268:                                              ; preds = %258
  %269 = load i16, ptr @recv_acked, align 2, !tbaa !21
  %.not191 = icmp eq i16 %269, 0
  br i1 %.not191, label %278, label %270

270:                                              ; preds = %268
  %271 = getelementptr inbounds i8, ptr %.0238, i64 160
  %272 = load ptr, ptr %271, align 8, !tbaa !61
  %.not192 = icmp eq ptr %272, null
  br i1 %.not192, label %.thread225, label %273

273:                                              ; preds = %270
  %274 = getelementptr inbounds i8, ptr %.0238, i64 24
  %275 = load ptr, ptr %274, align 8, !tbaa !60
  %276 = tail call signext i8 %272(ptr noundef %275, ptr noundef nonnull %.0238, i16 noundef zeroext %269) #3
  %277 = icmp eq i8 %276, -13
  br i1 %277, label %333, label %.thread225

.thread225:                                       ; preds = %273, %270
  store i16 0, ptr @recv_acked, align 2, !tbaa !21
  br label %278

278:                                              ; preds = %.thread225, %268
  %279 = tail call i32 @tcp_input_delayed_close(ptr noundef nonnull %.0238)
  %.not193 = icmp eq i32 %279, 0
  br i1 %.not193, label %280, label %333

280:                                              ; preds = %278
  %281 = load ptr, ptr @recv_data, align 8, !tbaa !11
  %.not194 = icmp eq ptr %281, null
  br i1 %.not194, label %308, label %282

282:                                              ; preds = %280
  %283 = load ptr, ptr %240, align 8, !tbaa !57
  %284 = icmp eq ptr %283, null
  br i1 %284, label %287, label %285

285:                                              ; preds = %282
  %286 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, ptr noundef nonnull @.str.12, i32 noundef 486, ptr noundef nonnull @.str.2)
  br label %287

287:                                              ; preds = %285, %282
  %288 = getelementptr inbounds i8, ptr %.0238, i64 42
  %289 = load i16, ptr %288, align 2, !tbaa !62
  %290 = and i16 %289, 16
  %.not195 = icmp eq i16 %290, 0
  br i1 %.not195, label %294, label %291

291:                                              ; preds = %287
  %292 = load ptr, ptr @recv_data, align 8, !tbaa !11
  %293 = tail call zeroext i8 @pbuf_free(ptr noundef %292) #3
  tail call void @tcp_abort(ptr noundef nonnull %.0238) #3
  br label %333

294:                                              ; preds = %287
  %295 = getelementptr inbounds i8, ptr %.0238, i64 168
  %296 = load ptr, ptr %295, align 8, !tbaa !63
  %.not196 = icmp eq ptr %296, null
  br i1 %.not196, label %302, label %297

297:                                              ; preds = %294
  %298 = getelementptr inbounds i8, ptr %.0238, i64 24
  %299 = load ptr, ptr %298, align 8, !tbaa !60
  %300 = load ptr, ptr @recv_data, align 8, !tbaa !11
  %301 = tail call signext i8 %296(ptr noundef %299, ptr noundef nonnull %.0238, ptr noundef %300, i8 noundef signext 0) #3
  br label %305

302:                                              ; preds = %294
  %303 = load ptr, ptr @recv_data, align 8, !tbaa !11
  %304 = tail call signext i8 @tcp_recv_null(ptr noundef null, ptr noundef nonnull %.0238, ptr noundef %303, i8 noundef signext 0) #3
  br label %305

305:                                              ; preds = %302, %297
  %.1144 = phi i8 [ %301, %297 ], [ %304, %302 ]
  switch i8 %.1144, label %306 [
    i8 -13, label %333
    i8 0, label %308
  ]

306:                                              ; preds = %305
  %307 = load ptr, ptr @recv_data, align 8, !tbaa !11
  store ptr %307, ptr %240, align 8, !tbaa !57
  br label %308

308:                                              ; preds = %305, %306, %280
  %309 = load i8, ptr @recv_flags, align 1, !tbaa !29
  %310 = and i8 %309, 32
  %.not198 = icmp eq i8 %310, 0
  br i1 %.not198, label %.critedge211, label %311

311:                                              ; preds = %308
  %312 = load ptr, ptr %240, align 8, !tbaa !57
  %.not199 = icmp eq ptr %312, null
  br i1 %.not199, label %317, label %313

313:                                              ; preds = %311
  %314 = getelementptr inbounds i8, ptr %312, i64 21
  %315 = load i8, ptr %314, align 1, !tbaa !56
  %316 = or i8 %315, 32
  store i8 %316, ptr %314, align 1, !tbaa !56
  br label %.critedge211

317:                                              ; preds = %311
  %318 = getelementptr inbounds i8, ptr %.0238, i64 56
  %319 = load i16, ptr %318, align 8, !tbaa !64
  %.not200 = icmp eq i16 %319, 2920
  br i1 %.not200, label %322, label %320

320:                                              ; preds = %317
  %321 = add i16 %319, 1
  store i16 %321, ptr %318, align 8, !tbaa !64
  br label %322

322:                                              ; preds = %317, %320
  %323 = getelementptr inbounds i8, ptr %.0238, i64 168
  %324 = load ptr, ptr %323, align 8, !tbaa !63
  %.not201 = icmp eq ptr %324, null
  br i1 %.not201, label %.critedge211, label %325

325:                                              ; preds = %322
  %326 = getelementptr inbounds i8, ptr %.0238, i64 24
  %327 = load ptr, ptr %326, align 8, !tbaa !60
  %328 = tail call signext i8 %324(ptr noundef %327, ptr noundef nonnull %.0238, ptr noundef null, i8 noundef signext 0) #3
  %329 = icmp eq i8 %328, -13
  br i1 %329, label %333, label %.critedge211

.critedge211:                                     ; preds = %322, %313, %325, %308
  store ptr null, ptr @tcp_input_pcb, align 8, !tbaa !11
  %330 = tail call i32 @tcp_input_delayed_close(ptr noundef nonnull %.0238)
  %.not202 = icmp eq i32 %330, 0
  br i1 %.not202, label %331, label %333

331:                                              ; preds = %.critedge211
  %332 = tail call signext i8 @tcp_output(ptr noundef nonnull %.0238) #3
  br label %333

333:                                              ; preds = %273, %305, %256, %331, %267, %.critedge211, %325, %278, %250, %254, %291
  store ptr null, ptr @tcp_input_pcb, align 8, !tbaa !11
  store ptr null, ptr @recv_data, align 8, !tbaa !11
  %334 = load ptr, ptr getelementptr inbounds (i8, ptr @inseg, i64 8), align 8, !tbaa !54
  %.not204 = icmp eq ptr %334, null
  br i1 %.not204, label %356, label %335

335:                                              ; preds = %333
  %336 = tail call zeroext i8 @pbuf_free(ptr noundef nonnull %334) #3
  store ptr null, ptr getelementptr inbounds (i8, ptr @inseg, i64 8), align 8, !tbaa !54
  br label %356

._crit_edge.thread:                               ; preds = %.preheader, %._crit_edge
  %337 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %338 = getelementptr inbounds i8, ptr %337, i64 12
  %339 = load i16, ptr %338, align 1, !tbaa !18
  %340 = tail call zeroext i16 @lwip_htons(i16 noundef zeroext %339) #3
  %341 = and i16 %340, 4
  %.not186 = icmp eq i16 %341, 0
  br i1 %.not186, label %342, label %352

342:                                              ; preds = %._crit_edge.thread
  %343 = load i32, ptr @ackno, align 4, !tbaa !26
  %344 = load i32, ptr @seqno, align 4, !tbaa !26
  %345 = load i16, ptr @tcplen, align 2, !tbaa !21
  %346 = zext i16 %345 to i32
  %347 = add i32 %344, %346
  %348 = load ptr, ptr @tcphdr, align 8, !tbaa !11
  %349 = getelementptr inbounds i8, ptr %348, i64 2
  %350 = load i16, ptr %349, align 1, !tbaa !24
  %351 = load i16, ptr %348, align 1, !tbaa !23
  tail call void @tcp_rst(ptr noundef null, i32 noundef %343, i32 noundef %347, ptr noundef nonnull getelementptr inbounds (i8, ptr @ip_data, i64 32), ptr noundef nonnull getelementptr inbounds (i8, ptr @ip_data, i64 28), i16 noundef zeroext %350, i16 noundef zeroext %351) #3
  br label %352

352:                                              ; preds = %342, %._crit_edge.thread
  %353 = tail call zeroext i8 @pbuf_free(ptr noundef %0) #3
  br label %356

354:                                              ; preds = %41, %103, %19, %28, %11, %15, %5
  %355 = tail call zeroext i8 @pbuf_free(ptr noundef nonnull %0) #3
  br label %356

356:                                              ; preds = %333, %335, %352, %354, %228, %202
  ret void
}

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

declare zeroext i8 @ip4_addr_isbroadcast_u32(i32 noundef, ptr noundef) local_unnamed_addr #2

declare zeroext i16 @lwip_htons(i16 noundef zeroext) local_unnamed_addr #2

declare zeroext i8 @pbuf_remove_header(ptr noundef, i64 noundef) local_unnamed_addr #2

declare i32 @lwip_htonl(i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @tcp_timewait_input(ptr noundef) local_unnamed_addr #0

declare zeroext i8 @pbuf_free(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @tcp_listen_input(ptr noundef) local_unnamed_addr #0

declare signext i8 @tcp_process_refused_data(ptr noundef) local_unnamed_addr #2

declare signext i8 @tcp_send_empty_ack(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden signext i8 @tcp_process(ptr noundef) local_unnamed_addr #0

declare void @tcp_pcb_remove(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @tcp_free(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @tcp_input_delayed_close(ptr noundef) local_unnamed_addr #0

declare void @tcp_abort(ptr noundef) local_unnamed_addr #2

declare signext i8 @tcp_recv_null(ptr noundef, ptr noundef, ptr noundef, i8 noundef signext) local_unnamed_addr #2

declare signext i8 @tcp_output(ptr noundef) local_unnamed_addr #2

declare void @tcp_rst(ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i16 noundef zeroext, i16 noundef zeroext) local_unnamed_addr #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 8}
!6 = !{!"pbuf", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 18, !8, i64 20, !8, i64 21, !8, i64 22, !8, i64 23}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!6, !10, i64 18}
!13 = !{!14, !16, i64 32}
!14 = !{!"ip_globals", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !15, i64 28, !15, i64 32}
!15 = !{!"ip4_addr", !16, i64 0}
!16 = !{!"int", !8, i64 0}
!17 = !{!14, !7, i64 0}
!18 = !{!19, !10, i64 12}
!19 = !{!"tcp_hdr", !10, i64 0, !10, i64 2, !16, i64 4, !16, i64 8, !10, i64 12, !10, i64 14, !10, i64 16, !10, i64 18}
!20 = !{!6, !10, i64 16}
!21 = !{!10, !10, i64 0}
!22 = !{!6, !7, i64 0}
!23 = !{!19, !10, i64 0}
!24 = !{!19, !10, i64 2}
!25 = !{!19, !16, i64 4}
!26 = !{!16, !16, i64 0}
!27 = !{!19, !16, i64 8}
!28 = !{!19, !10, i64 14}
!29 = !{!8, !8, i64 0}
!30 = !{!31, !16, i64 32}
!31 = !{!"tcp_pcb", !15, i64 0, !15, i64 4, !8, i64 8, !8, i64 9, !8, i64 10, !8, i64 11, !7, i64 16, !7, i64 24, !16, i64 32, !8, i64 36, !10, i64 38, !10, i64 40, !10, i64 42, !8, i64 44, !8, i64 45, !8, i64 46, !16, i64 48, !16, i64 52, !10, i64 56, !10, i64 58, !16, i64 60, !10, i64 64, !10, i64 66, !16, i64 68, !16, i64 72, !10, i64 76, !10, i64 78, !10, i64 80, !8, i64 82, !8, i64 83, !16, i64 84, !10, i64 88, !10, i64 90, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !10, i64 112, !10, i64 114, !10, i64 116, !10, i64 118, !10, i64 120, !10, i64 122, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !16, i64 200, !8, i64 204, !8, i64 205, !8, i64 206, !8, i64 207}
!32 = !{!31, !8, i64 8}
!33 = !{!14, !7, i64 8}
!34 = !{!35, !8, i64 84}
!35 = !{!"netif", !7, i64 0, !15, i64 8, !15, i64 12, !15, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !8, i64 64, !10, i64 72, !8, i64 74, !8, i64 80, !8, i64 81, !8, i64 82, !8, i64 84, !8, i64 85}
!36 = !{!31, !10, i64 40}
!37 = !{!31, !10, i64 38}
!38 = !{!31, !16, i64 4}
!39 = !{!14, !16, i64 28}
!40 = !{!31, !16, i64 0}
!41 = !{!31, !7, i64 16}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = distinct !{!44, !43}
!45 = !{!46, !8, i64 8}
!46 = !{!"tcp_pcb_listen", !15, i64 0, !15, i64 4, !8, i64 8, !8, i64 9, !8, i64 10, !8, i64 11, !7, i64 16, !7, i64 24, !16, i64 32, !8, i64 36, !10, i64 38, !7, i64 40}
!47 = !{!46, !10, i64 38}
!48 = !{!46, !16, i64 0}
!49 = distinct !{!49, !43}
!50 = !{!46, !7, i64 16}
!51 = !{!52, !7, i64 0}
!52 = !{!"tcp_seg", !7, i64 0, !7, i64 8, !10, i64 16, !8, i64 18, !7, i64 24}
!53 = !{!52, !10, i64 16}
!54 = !{!52, !7, i64 8}
!55 = !{!52, !7, i64 24}
!56 = !{!6, !8, i64 21}
!57 = !{!31, !7, i64 144}
!58 = !{!31, !10, i64 58}
!59 = !{!31, !7, i64 192}
!60 = !{!31, !7, i64 24}
!61 = !{!31, !7, i64 160}
!62 = !{!31, !10, i64 42}
!63 = !{!31, !7, i64 168}
!64 = !{!31, !10, i64 56}


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