; LLVM IR from thalium/icebox :: third_party/virtualbox/src/VBox/Devices/EFI/Firmware/OptionRomPkg/Bus/Usb (Ax88772Rx)

; 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._RX_TX_PACKET = type { ptr, i16, i16, [2044 x i8] }
%struct.EFI_BOOT_SERVICES = type { %struct.EFI_TABLE_HEADER, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.EFI_TABLE_HEADER = type { i64, i32, i32, i32, i32 }
%struct.NIC_DEVICE = type { i64, ptr, ptr, %struct._EFI_SIMPLE_NETWORK_PROTOCOL, %struct.EFI_SIMPLE_NETWORK_MODE, i8, ptr, i16, i8, i8, i8, i8, i8, ptr, i64, ptr, ptr, ptr, [2 x i32], ptr }
%struct._EFI_SIMPLE_NETWORK_PROTOCOL = type { i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.EFI_SIMPLE_NETWORK_MODE = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x %struct.EFI_MAC_ADDRESS], %struct.EFI_MAC_ADDRESS, %struct.EFI_MAC_ADDRESS, %struct.EFI_MAC_ADDRESS, i8, i8, i8, i8, i8 }
%struct.EFI_MAC_ADDRESS = type { [32 x i8] }
%struct._EFI_USB_IO_PROTOCOL = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@gBS = external global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [154 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.11 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [127 x i8], align 1

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

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

declare zeroext i8 @DebugPrintEnabled() #1

declare zeroext i8 @DebugPrintLevelEnabled(i64 noundef) #1

declare void @DebugPrint(i64 noundef, ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
declare dso_local i64 @Ax88772NegotiateLinkComplete(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @FillPkt2Queue(ptr noundef, i64 noundef) #2

; Function Attrs: nounwind uwtable
define dso_local void @Ax88772Rx(ptr noundef %0, i8 noundef zeroext %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i64, align 8
  %10 = alloca %struct._RX_TX_PACKET, align 1
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i32, align 4
  %16 = alloca i64, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i8 %1, ptr %4, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 2056, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  %17 = load ptr, ptr @gBS, align 8, !tbaa !5
  %18 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %17, i32 0, i32 1
  %19 = load ptr, ptr %18, align 8, !tbaa !10
  %20 = call i64 %19(i64 noundef 31)
  store i64 %20, ptr %16, align 8, !tbaa !15
  %21 = load ptr, ptr @gBS, align 8, !tbaa !5
  %22 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %21, i32 0, i32 2
  %23 = load ptr, ptr %22, align 8, !tbaa !16
  %24 = load i64, ptr %16, align 8, !tbaa !15
  call void %23(i64 noundef %24)
  %25 = load i64, ptr %16, align 8, !tbaa !15
  %26 = icmp ugt i64 %25, 8
  br i1 %26, label %27, label %54

27:                                               ; preds = %2
  br label %28

28:                                               ; preds = %27
  %29 = call zeroext i8 @DebugPrintEnabled()
  %30 = icmp ne i8 %29, 0
  br i1 %30, label %31, label %40

31:                                               ; preds = %28
  br label %32

32:                                               ; preds = %31
  %33 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %34 = icmp ne i8 %33, 0
  br i1 %34, label %35, label %37

35:                                               ; preds = %32
  %36 = load i64, ptr %16, align 8, !tbaa !15
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.5, i64 noundef %36, i32 noundef 8)
  br label %37

37:                                               ; preds = %35, %32
  br label %38

38:                                               ; preds = %37
  br label %39

39:                                               ; preds = %38
  br label %40

40:                                               ; preds = %39, %28
  br label %41

41:                                               ; preds = %40
  br label %42

42:                                               ; preds = %41
  br label %43

43:                                               ; preds = %42
  %44 = call zeroext i8 @DebugAssertEnabled()
  %45 = icmp ne i8 %44, 0
  br i1 %45, label %46, label %51

46:                                               ; preds = %43
  %47 = load i64, ptr %16, align 8, !tbaa !15
  %48 = icmp ule i64 %47, 8
  br i1 %48, label %50, label %49

49:                                               ; preds = %46
  call void @DebugAssert(ptr noundef @.str.6, i64 noundef 769, ptr noundef @.str.7)
  br label %50

50:                                               ; preds = %49, %46
  br label %51

51:                                               ; preds = %50, %43
  br label %52

52:                                               ; preds = %51
  br label %53

53:                                               ; preds = %52
  br label %54

54:                                               ; preds = %53, %2
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  %55 = load ptr, ptr @gBS, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %55, i32 0, i32 1
  %57 = load ptr, ptr %56, align 8, !tbaa !10
  %58 = call i64 %57(i64 noundef 8)
  store i64 %58, ptr %14, align 8, !tbaa !15
  br label %59

59:                                               ; preds = %54
  %60 = call zeroext i8 @DebugPrintEnabled()
  %61 = icmp ne i8 %60, 0
  br i1 %61, label %62, label %70

62:                                               ; preds = %59
  br label %63

63:                                               ; preds = %62
  %64 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2097216)
  %65 = icmp ne i8 %64, 0
  br i1 %65, label %66, label %67

66:                                               ; preds = %63
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2097216, ptr noundef @.str.8, i32 noundef 8)
  br label %67

67:                                               ; preds = %66, %63
  br label %68

68:                                               ; preds = %67
  br label %69

69:                                               ; preds = %68
  br label %70

70:                                               ; preds = %69, %59
  br label %71

71:                                               ; preds = %70
  br label %72

72:                                               ; preds = %71
  %73 = load i8, ptr %4, align 1, !tbaa !9
  %74 = icmp ne i8 %73, 0
  br i1 %74, label %75, label %241

75:                                               ; preds = %72
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.NIC_DEVICE, ptr %76, i32 0, i32 11
  %78 = load i8, ptr %77, align 1, !tbaa !17
  store i8 %78, ptr %6, align 1, !tbaa !9
  %79 = load ptr, ptr %3, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.NIC_DEVICE, ptr %79, i32 0, i32 8
  %81 = load i8, ptr %80, align 2, !tbaa !23
  store i8 %81, ptr %8, align 1, !tbaa !9
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.NIC_DEVICE, ptr %82, i32 0, i32 10
  %84 = load i8, ptr %83, align 4, !tbaa !24
  store i8 %84, ptr %5, align 1, !tbaa !9
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = load ptr, ptr %3, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.NIC_DEVICE, ptr %86, i32 0, i32 14
  %88 = load ptr, ptr %3, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.NIC_DEVICE, ptr %88, i32 0, i32 9
  %90 = load ptr, ptr %3, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.NIC_DEVICE, ptr %90, i32 0, i32 11
  %92 = load ptr, ptr %3, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.NIC_DEVICE, ptr %92, i32 0, i32 8
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.NIC_DEVICE, ptr %94, i32 0, i32 10
  %96 = call i64 @Ax88772NegotiateLinkComplete(ptr noundef %85, ptr noundef %87, ptr noundef %89, ptr noundef %91, ptr noundef %93, ptr noundef %95)
  store i64 %96, ptr %13, align 8, !tbaa !15
  %97 = load ptr, ptr %3, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.NIC_DEVICE, ptr %97, i32 0, i32 9
  %99 = load i8, ptr %98, align 1, !tbaa !25
  %100 = icmp ne i8 %99, 0
  br i1 %100, label %101, label %216

101:                                              ; preds = %75
  %102 = load ptr, ptr %3, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.NIC_DEVICE, ptr %102, i32 0, i32 11
  %104 = load i8, ptr %103, align 1, !tbaa !17
  %105 = icmp ne i8 %104, 0
  br i1 %105, label %106, label %215

106:                                              ; preds = %101
  %107 = load i8, ptr %8, align 1, !tbaa !9
  %108 = zext i8 %107 to i32
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %115

110:                                              ; preds = %106
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.NIC_DEVICE, ptr %111, i32 0, i32 8
  %113 = load i8, ptr %112, align 2, !tbaa !23
  %114 = icmp ne i8 %113, 0
  br i1 %114, label %115, label %142

115:                                              ; preds = %110, %106
  %116 = load i8, ptr %8, align 1, !tbaa !9
  %117 = icmp ne i8 %116, 0
  br i1 %117, label %124, label %118

118:                                              ; preds = %115
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.NIC_DEVICE, ptr %119, i32 0, i32 8
  %121 = load i8, ptr %120, align 2, !tbaa !23
  %122 = zext i8 %121 to i32
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %142, label %124

124:                                              ; preds = %118, %115
  %125 = load i8, ptr %5, align 1, !tbaa !9
  %126 = zext i8 %125 to i32
  %127 = icmp ne i32 %126, 0
  br i1 %127, label %128, label %133

128:                                              ; preds = %124
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.NIC_DEVICE, ptr %129, i32 0, i32 10
  %131 = load i8, ptr %130, align 4, !tbaa !24
  %132 = icmp ne i8 %131, 0
  br i1 %132, label %133, label %142

133:                                              ; preds = %128, %124
  %134 = load i8, ptr %5, align 1, !tbaa !9
  %135 = icmp ne i8 %134, 0
  br i1 %135, label %176, label %136

136:                                              ; preds = %133
  %137 = load ptr, ptr %3, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.NIC_DEVICE, ptr %137, i32 0, i32 10
  %139 = load i8, ptr %138, align 4, !tbaa !24
  %140 = zext i8 %139 to i32
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %142, label %176

142:                                              ; preds = %136, %128, %118, %110
  %143 = load ptr, ptr %3, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.NIC_DEVICE, ptr %143, i32 0, i32 14
  store i64 0, ptr %144, align 8, !tbaa !26
  br label %145

145:                                              ; preds = %142
  %146 = call zeroext i8 @DebugPrintEnabled()
  %147 = icmp ne i8 %146, 0
  br i1 %147, label %148, label %170

148:                                              ; preds = %145
  br label %149

149:                                              ; preds = %148
  %150 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 67108928)
  %151 = icmp ne i8 %150, 0
  br i1 %151, label %152, label %167

152:                                              ; preds = %149
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.NIC_DEVICE, ptr %153, i32 0, i32 8
  %155 = load i8, ptr %154, align 2, !tbaa !23
  %156 = zext i8 %155 to i32
  %157 = icmp ne i32 %156, 0
  %158 = zext i1 %157 to i64
  %159 = select i1 %157, i32 100, i32 10
  %160 = load ptr, ptr %3, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.NIC_DEVICE, ptr %160, i32 0, i32 10
  %162 = load i8, ptr %161, align 4, !tbaa !24
  %163 = zext i8 %162 to i32
  %164 = icmp ne i32 %163, 0
  %165 = zext i1 %164 to i64
  %166 = select i1 %164, ptr @.str.10, ptr @.str.11
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 67108928, ptr noundef @.str.9, i32 noundef %159, ptr noundef %166)
  br label %167

167:                                              ; preds = %152, %149
  br label %168

168:                                              ; preds = %167
  br label %169

169:                                              ; preds = %168
  br label %170

170:                                              ; preds = %169, %145
  br label %171

171:                                              ; preds = %170
  br label %172

172:                                              ; preds = %171
  %173 = load ptr, ptr %3, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.NIC_DEVICE, ptr %173, i32 0, i32 3
  %175 = call i64 @SN_Reset(ptr noundef %174, i8 noundef zeroext 0)
  store i64 %175, ptr %13, align 8, !tbaa !15
  br label %176

176:                                              ; preds = %172, %136, %133
  %177 = load i8, ptr %6, align 1, !tbaa !9
  %178 = icmp ne i8 %177, 0
  br i1 %178, label %214, label %179

179:                                              ; preds = %176
  %180 = load ptr, ptr %3, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.NIC_DEVICE, ptr %180, i32 0, i32 11
  %182 = load i8, ptr %181, align 1, !tbaa !17
  %183 = zext i8 %182 to i32
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %214

185:                                              ; preds = %179
  br label %186

186:                                              ; preds = %185
  %187 = call zeroext i8 @DebugPrintEnabled()
  %188 = icmp ne i8 %187, 0
  br i1 %188, label %189, label %211

189:                                              ; preds = %186
  br label %190

190:                                              ; preds = %189
  %191 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 67108928)
  %192 = icmp ne i8 %191, 0
  br i1 %192, label %193, label %208

193:                                              ; preds = %190
  %194 = load ptr, ptr %3, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.NIC_DEVICE, ptr %194, i32 0, i32 8
  %196 = load i8, ptr %195, align 2, !tbaa !23
  %197 = zext i8 %196 to i32
  %198 = icmp ne i32 %197, 0
  %199 = zext i1 %198 to i64
  %200 = select i1 %198, i32 100, i32 10
  %201 = load ptr, ptr %3, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.NIC_DEVICE, ptr %201, i32 0, i32 10
  %203 = load i8, ptr %202, align 4, !tbaa !24
  %204 = zext i8 %203 to i32
  %205 = icmp ne i32 %204, 0
  %206 = zext i1 %205 to i64
  %207 = select i1 %205, ptr @.str.10, ptr @.str.11
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 67108928, ptr noundef @.str.12, i32 noundef %200, ptr noundef %207)
  br label %208

208:                                              ; preds = %193, %190
  br label %209

209:                                              ; preds = %208
  br label %210

210:                                              ; preds = %209
  br label %211

211:                                              ; preds = %210, %186
  br label %212

212:                                              ; preds = %211
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213, %179, %176
  br label %215

215:                                              ; preds = %214, %101
  br label %216

216:                                              ; preds = %215, %75
  %217 = load i8, ptr %6, align 1, !tbaa !9
  %218 = zext i8 %217 to i32
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %240

220:                                              ; preds = %216
  %221 = load ptr, ptr %3, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.NIC_DEVICE, ptr %221, i32 0, i32 11
  %223 = load i8, ptr %222, align 1, !tbaa !17
  %224 = icmp ne i8 %223, 0
  br i1 %224, label %240, label %225

225:                                              ; preds = %220
  br label %226

226:                                              ; preds = %225
  %227 = call zeroext i8 @DebugPrintEnabled()
  %228 = icmp ne i8 %227, 0
  br i1 %228, label %229, label %237

229:                                              ; preds = %226
  br label %230

230:                                              ; preds = %229
  %231 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 67108928)
  %232 = icmp ne i8 %231, 0
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 67108928, ptr noundef @.str.13)
  br label %234

234:                                              ; preds = %233, %230
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236, %226
  br label %238

238:                                              ; preds = %237
  br label %239

239:                                              ; preds = %238
  br label %240

240:                                              ; preds = %239, %220, %216
  br label %241

241:                                              ; preds = %240, %72
  br label %242

242:                                              ; preds = %717, %241
  store i8 0, ptr %7, align 1, !tbaa !9
  %243 = load ptr, ptr %3, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.NIC_DEVICE, ptr %243, i32 0, i32 17
  %245 = load ptr, ptr %244, align 8, !tbaa !27
  store ptr %245, ptr %11, align 8, !tbaa !5
  store i64 2048, ptr %9, align 8, !tbaa !15
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = icmp eq ptr null, %246
  br i1 %247, label %248, label %263

248:                                              ; preds = %242
  %249 = load ptr, ptr @gBS, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %249, i32 0, i32 6
  %251 = load ptr, ptr %250, align 8, !tbaa !28
  %252 = call i64 %251(i32 noundef 6, i64 noundef 2056, ptr noundef %11)
  store i64 %252, ptr %13, align 8, !tbaa !15
  %253 = load i64, ptr %13, align 8, !tbaa !15
  %254 = icmp slt i64 %253, 0
  br i1 %254, label %261, label %255

255:                                              ; preds = %248
  %256 = load ptr, ptr %11, align 8, !tbaa !5
  %257 = load ptr, ptr %3, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.NIC_DEVICE, ptr %257, i32 0, i32 17
  store ptr %256, ptr %258, align 8, !tbaa !27
  %259 = load ptr, ptr %11, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %259, i32 0, i32 0
  store ptr null, ptr %260, align 1, !tbaa !29
  br label %262

261:                                              ; preds = %248
  store ptr %10, ptr %11, align 8, !tbaa !5
  br label %262

262:                                              ; preds = %261, %255
  br label %263

263:                                              ; preds = %262, %242
  %264 = load ptr, ptr %3, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.NIC_DEVICE, ptr %264, i32 0, i32 19
  %266 = load ptr, ptr %265, align 8, !tbaa !31
  %267 = getelementptr inbounds i8, ptr %266, i64 0
  %268 = call ptr @SetMem(ptr noundef %267, i64 noundef 2048, i8 noundef zeroext 0)
  %269 = load ptr, ptr %3, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.NIC_DEVICE, ptr %269, i32 0, i32 2
  %271 = load ptr, ptr %270, align 8, !tbaa !32
  store ptr %271, ptr %12, align 8, !tbaa !5
  %272 = load ptr, ptr %12, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct._EFI_USB_IO_PROTOCOL, ptr %272, i32 0, i32 1
  %274 = load ptr, ptr %273, align 8, !tbaa !33
  %275 = load ptr, ptr %12, align 8, !tbaa !5
  %276 = load ptr, ptr %3, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.NIC_DEVICE, ptr %276, i32 0, i32 19
  %278 = load ptr, ptr %277, align 8, !tbaa !31
  %279 = getelementptr inbounds i8, ptr %278, i64 0
  %280 = call i64 %274(ptr noundef %275, i8 noundef zeroext -126, ptr noundef %279, ptr noundef %9, i64 noundef 2, ptr noundef %15)
  store i64 %280, ptr %13, align 8, !tbaa !15
  %281 = load i64, ptr %9, align 8, !tbaa !15
  %282 = icmp ugt i64 %281, 0
  br i1 %282, label %283, label %286

283:                                              ; preds = %263
  %284 = load ptr, ptr %3, align 8, !tbaa !5
  %285 = load i64, ptr %9, align 8, !tbaa !15
  call void @FillPkt2Queue(ptr noundef %284, i64 noundef %285)
  br label %286

286:                                              ; preds = %283, %263
  %287 = load ptr, ptr %3, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.NIC_DEVICE, ptr %287, i32 0, i32 15
  %289 = load ptr, ptr %288, align 8, !tbaa !35
  store ptr %289, ptr %11, align 8, !tbaa !5
  %290 = load i64, ptr %13, align 8, !tbaa !15
  %291 = icmp slt i64 %290, 0
  br i1 %291, label %716, label %292

292:                                              ; preds = %286
  %293 = load ptr, ptr %11, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %293, i32 0, i32 1
  %295 = load i16, ptr %294, align 1, !tbaa !36
  %296 = zext i16 %295 to i32
  %297 = icmp slt i32 0, %296
  br i1 %297, label %298, label %716

298:                                              ; preds = %292
  %299 = load ptr, ptr %11, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %299, i32 0, i32 1
  %301 = load i16, ptr %300, align 1, !tbaa !36
  %302 = zext i16 %301 to i64
  %303 = icmp ule i64 %302, 2044
  br i1 %303, label %304, label %716

304:                                              ; preds = %298
  %305 = load i64, ptr %9, align 8, !tbaa !15
  %306 = icmp ugt i64 %305, 0
  br i1 %306, label %307, label %716

307:                                              ; preds = %304
  store i8 1, ptr %7, align 1, !tbaa !9
  %308 = load ptr, ptr %11, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %308, i32 0, i32 1
  %310 = load i16, ptr %309, align 1, !tbaa !36
  %311 = zext i16 %310 to i64
  store i64 %311, ptr %9, align 8, !tbaa !15
  %312 = load ptr, ptr %3, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.NIC_DEVICE, ptr %312, i32 0, i32 12
  store i8 0, ptr %313, align 2, !tbaa !37
  %314 = load ptr, ptr %3, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.NIC_DEVICE, ptr %314, i32 0, i32 17
  %316 = load ptr, ptr %315, align 8, !tbaa !27
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = icmp eq ptr %316, %317
  br i1 %318, label %319, label %629

319:                                              ; preds = %307
  %320 = load ptr, ptr %11, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %320, i32 0, i32 3
  %322 = getelementptr inbounds [2044 x i8], ptr %321, i64 0, i64 0
  %323 = load i8, ptr %322, align 1, !tbaa !9
  %324 = zext i8 %323 to i32
  %325 = and i32 %324, 1
  %326 = icmp ne i32 0, %325
  br i1 %326, label %327, label %542

327:                                              ; preds = %319
  %328 = load ptr, ptr %11, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %328, i32 0, i32 3
  %330 = getelementptr inbounds [2044 x i8], ptr %329, i64 0, i64 0
  %331 = load i8, ptr %330, align 1, !tbaa !9
  %332 = zext i8 %331 to i32
  %333 = icmp eq i32 255, %332
  br i1 %333, label %334, label %455

334:                                              ; preds = %327
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %335, i32 0, i32 3
  %337 = getelementptr inbounds [2044 x i8], ptr %336, i64 0, i64 1
  %338 = load i8, ptr %337, align 1, !tbaa !9
  %339 = zext i8 %338 to i32
  %340 = icmp eq i32 255, %339
  br i1 %340, label %341, label %455

341:                                              ; preds = %334
  %342 = load ptr, ptr %11, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %342, i32 0, i32 3
  %344 = getelementptr inbounds [2044 x i8], ptr %343, i64 0, i64 2
  %345 = load i8, ptr %344, align 1, !tbaa !9
  %346 = zext i8 %345 to i32
  %347 = icmp eq i32 255, %346
  br i1 %347, label %348, label %455

348:                                              ; preds = %341
  %349 = load ptr, ptr %11, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %349, i32 0, i32 3
  %351 = getelementptr inbounds [2044 x i8], ptr %350, i64 0, i64 3
  %352 = load i8, ptr %351, align 1, !tbaa !9
  %353 = zext i8 %352 to i32
  %354 = icmp eq i32 255, %353
  br i1 %354, label %355, label %455

355:                                              ; preds = %348
  %356 = load ptr, ptr %11, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %356, i32 0, i32 3
  %358 = getelementptr inbounds [2044 x i8], ptr %357, i64 0, i64 4
  %359 = load i8, ptr %358, align 1, !tbaa !9
  %360 = zext i8 %359 to i32
  %361 = icmp eq i32 255, %360
  br i1 %361, label %362, label %455

362:                                              ; preds = %355
  %363 = load ptr, ptr %11, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %363, i32 0, i32 3
  %365 = getelementptr inbounds [2044 x i8], ptr %364, i64 0, i64 5
  %366 = load i8, ptr %365, align 1, !tbaa !9
  %367 = zext i8 %366 to i32
  %368 = icmp eq i32 255, %367
  br i1 %368, label %369, label %455

369:                                              ; preds = %362
  br label %370

370:                                              ; preds = %369
  %371 = call zeroext i8 @DebugPrintEnabled()
  %372 = icmp ne i8 %371, 0
  br i1 %372, label %373, label %452

373:                                              ; preds = %370
  br label %374

374:                                              ; preds = %373
  %375 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1073741888)
  %376 = icmp ne i8 %375, 0
  br i1 %376, label %377, label %449

377:                                              ; preds = %374
  %378 = load ptr, ptr %11, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %378, i32 0, i32 3
  %380 = getelementptr inbounds [2044 x i8], ptr %379, i64 0, i64 0
  %381 = load i8, ptr %380, align 1, !tbaa !9
  %382 = zext i8 %381 to i32
  %383 = load ptr, ptr %11, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %383, i32 0, i32 3
  %385 = getelementptr inbounds [2044 x i8], ptr %384, i64 0, i64 1
  %386 = load i8, ptr %385, align 1, !tbaa !9
  %387 = zext i8 %386 to i32
  %388 = load ptr, ptr %11, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %388, i32 0, i32 3
  %390 = getelementptr inbounds [2044 x i8], ptr %389, i64 0, i64 2
  %391 = load i8, ptr %390, align 1, !tbaa !9
  %392 = zext i8 %391 to i32
  %393 = load ptr, ptr %11, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %393, i32 0, i32 3
  %395 = getelementptr inbounds [2044 x i8], ptr %394, i64 0, i64 3
  %396 = load i8, ptr %395, align 1, !tbaa !9
  %397 = zext i8 %396 to i32
  %398 = load ptr, ptr %11, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %398, i32 0, i32 3
  %400 = getelementptr inbounds [2044 x i8], ptr %399, i64 0, i64 4
  %401 = load i8, ptr %400, align 1, !tbaa !9
  %402 = zext i8 %401 to i32
  %403 = load ptr, ptr %11, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %403, i32 0, i32 3
  %405 = getelementptr inbounds [2044 x i8], ptr %404, i64 0, i64 5
  %406 = load i8, ptr %405, align 1, !tbaa !9
  %407 = zext i8 %406 to i32
  %408 = load ptr, ptr %11, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %408, i32 0, i32 3
  %410 = getelementptr inbounds [2044 x i8], ptr %409, i64 0, i64 6
  %411 = load i8, ptr %410, align 1, !tbaa !9
  %412 = zext i8 %411 to i32
  %413 = load ptr, ptr %11, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %413, i32 0, i32 3
  %415 = getelementptr inbounds [2044 x i8], ptr %414, i64 0, i64 7
  %416 = load i8, ptr %415, align 1, !tbaa !9
  %417 = zext i8 %416 to i32
  %418 = load ptr, ptr %11, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %418, i32 0, i32 3
  %420 = getelementptr inbounds [2044 x i8], ptr %419, i64 0, i64 8
  %421 = load i8, ptr %420, align 1, !tbaa !9
  %422 = zext i8 %421 to i32
  %423 = load ptr, ptr %11, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %423, i32 0, i32 3
  %425 = getelementptr inbounds [2044 x i8], ptr %424, i64 0, i64 9
  %426 = load i8, ptr %425, align 1, !tbaa !9
  %427 = zext i8 %426 to i32
  %428 = load ptr, ptr %11, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %428, i32 0, i32 3
  %430 = getelementptr inbounds [2044 x i8], ptr %429, i64 0, i64 10
  %431 = load i8, ptr %430, align 1, !tbaa !9
  %432 = zext i8 %431 to i32
  %433 = load ptr, ptr %11, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %433, i32 0, i32 3
  %435 = getelementptr inbounds [2044 x i8], ptr %434, i64 0, i64 11
  %436 = load i8, ptr %435, align 1, !tbaa !9
  %437 = zext i8 %436 to i32
  %438 = load ptr, ptr %11, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %438, i32 0, i32 3
  %440 = getelementptr inbounds [2044 x i8], ptr %439, i64 0, i64 12
  %441 = load i8, ptr %440, align 1, !tbaa !9
  %442 = zext i8 %441 to i32
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %443, i32 0, i32 3
  %445 = getelementptr inbounds [2044 x i8], ptr %444, i64 0, i64 13
  %446 = load i8, ptr %445, align 1, !tbaa !9
  %447 = zext i8 %446 to i32
  %448 = load i64, ptr %9, align 8, !tbaa !15
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1073741888, ptr noundef @.str.14, i32 noundef %382, i32 noundef %387, i32 noundef %392, i32 noundef %397, i32 noundef %402, i32 noundef %407, i32 noundef %412, i32 noundef %417, i32 noundef %422, i32 noundef %427, i32 noundef %432, i32 noundef %437, i32 noundef %442, i32 noundef %447, i64 noundef %448)
  br label %449

449:                                              ; preds = %377, %374
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450
  br label %452

452:                                              ; preds = %451, %370
  br label %453

453:                                              ; preds = %452
  br label %454

454:                                              ; preds = %453
  br label %541

455:                                              ; preds = %362, %355, %348, %341, %334, %327
  br label %456

456:                                              ; preds = %455
  %457 = call zeroext i8 @DebugPrintEnabled()
  %458 = icmp ne i8 %457, 0
  br i1 %458, label %459, label %538

459:                                              ; preds = %456
  br label %460

460:                                              ; preds = %459
  %461 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 536870976)
  %462 = icmp ne i8 %461, 0
  br i1 %462, label %463, label %535

463:                                              ; preds = %460
  %464 = load ptr, ptr %11, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %464, i32 0, i32 3
  %466 = getelementptr inbounds [2044 x i8], ptr %465, i64 0, i64 0
  %467 = load i8, ptr %466, align 1, !tbaa !9
  %468 = zext i8 %467 to i32
  %469 = load ptr, ptr %11, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %469, i32 0, i32 3
  %471 = getelementptr inbounds [2044 x i8], ptr %470, i64 0, i64 1
  %472 = load i8, ptr %471, align 1, !tbaa !9
  %473 = zext i8 %472 to i32
  %474 = load ptr, ptr %11, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %474, i32 0, i32 3
  %476 = getelementptr inbounds [2044 x i8], ptr %475, i64 0, i64 2
  %477 = load i8, ptr %476, align 1, !tbaa !9
  %478 = zext i8 %477 to i32
  %479 = load ptr, ptr %11, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %479, i32 0, i32 3
  %481 = getelementptr inbounds [2044 x i8], ptr %480, i64 0, i64 3
  %482 = load i8, ptr %481, align 1, !tbaa !9
  %483 = zext i8 %482 to i32
  %484 = load ptr, ptr %11, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %484, i32 0, i32 3
  %486 = getelementptr inbounds [2044 x i8], ptr %485, i64 0, i64 4
  %487 = load i8, ptr %486, align 1, !tbaa !9
  %488 = zext i8 %487 to i32
  %489 = load ptr, ptr %11, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %489, i32 0, i32 3
  %491 = getelementptr inbounds [2044 x i8], ptr %490, i64 0, i64 5
  %492 = load i8, ptr %491, align 1, !tbaa !9
  %493 = zext i8 %492 to i32
  %494 = load ptr, ptr %11, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %494, i32 0, i32 3
  %496 = getelementptr inbounds [2044 x i8], ptr %495, i64 0, i64 6
  %497 = load i8, ptr %496, align 1, !tbaa !9
  %498 = zext i8 %497 to i32
  %499 = load ptr, ptr %11, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %499, i32 0, i32 3
  %501 = getelementptr inbounds [2044 x i8], ptr %500, i64 0, i64 7
  %502 = load i8, ptr %501, align 1, !tbaa !9
  %503 = zext i8 %502 to i32
  %504 = load ptr, ptr %11, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %504, i32 0, i32 3
  %506 = getelementptr inbounds [2044 x i8], ptr %505, i64 0, i64 8
  %507 = load i8, ptr %506, align 1, !tbaa !9
  %508 = zext i8 %507 to i32
  %509 = load ptr, ptr %11, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %509, i32 0, i32 3
  %511 = getelementptr inbounds [2044 x i8], ptr %510, i64 0, i64 9
  %512 = load i8, ptr %511, align 1, !tbaa !9
  %513 = zext i8 %512 to i32
  %514 = load ptr, ptr %11, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %514, i32 0, i32 3
  %516 = getelementptr inbounds [2044 x i8], ptr %515, i64 0, i64 10
  %517 = load i8, ptr %516, align 1, !tbaa !9
  %518 = zext i8 %517 to i32
  %519 = load ptr, ptr %11, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %519, i32 0, i32 3
  %521 = getelementptr inbounds [2044 x i8], ptr %520, i64 0, i64 11
  %522 = load i8, ptr %521, align 1, !tbaa !9
  %523 = zext i8 %522 to i32
  %524 = load ptr, ptr %11, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %524, i32 0, i32 3
  %526 = getelementptr inbounds [2044 x i8], ptr %525, i64 0, i64 12
  %527 = load i8, ptr %526, align 1, !tbaa !9
  %528 = zext i8 %527 to i32
  %529 = load ptr, ptr %11, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %529, i32 0, i32 3
  %531 = getelementptr inbounds [2044 x i8], ptr %530, i64 0, i64 13
  %532 = load i8, ptr %531, align 1, !tbaa !9
  %533 = zext i8 %532 to i32
  %534 = load i64, ptr %9, align 8, !tbaa !15
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 536870976, ptr noundef @.str.14, i32 noundef %468, i32 noundef %473, i32 noundef %478, i32 noundef %483, i32 noundef %488, i32 noundef %493, i32 noundef %498, i32 noundef %503, i32 noundef %508, i32 noundef %513, i32 noundef %518, i32 noundef %523, i32 noundef %528, i32 noundef %533, i64 noundef %534)
  br label %535

535:                                              ; preds = %463, %460
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537, %456
  br label %539

539:                                              ; preds = %538
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540, %454
  br label %628

542:                                              ; preds = %319
  br label %543

543:                                              ; preds = %542
  %544 = call zeroext i8 @DebugPrintEnabled()
  %545 = icmp ne i8 %544, 0
  br i1 %545, label %546, label %625

546:                                              ; preds = %543
  br label %547

547:                                              ; preds = %546
  %548 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 268435520)
  %549 = icmp ne i8 %548, 0
  br i1 %549, label %550, label %622

550:                                              ; preds = %547
  %551 = load ptr, ptr %11, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %551, i32 0, i32 3
  %553 = getelementptr inbounds [2044 x i8], ptr %552, i64 0, i64 0
  %554 = load i8, ptr %553, align 1, !tbaa !9
  %555 = zext i8 %554 to i32
  %556 = load ptr, ptr %11, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %556, i32 0, i32 3
  %558 = getelementptr inbounds [2044 x i8], ptr %557, i64 0, i64 1
  %559 = load i8, ptr %558, align 1, !tbaa !9
  %560 = zext i8 %559 to i32
  %561 = load ptr, ptr %11, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %561, i32 0, i32 3
  %563 = getelementptr inbounds [2044 x i8], ptr %562, i64 0, i64 2
  %564 = load i8, ptr %563, align 1, !tbaa !9
  %565 = zext i8 %564 to i32
  %566 = load ptr, ptr %11, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %566, i32 0, i32 3
  %568 = getelementptr inbounds [2044 x i8], ptr %567, i64 0, i64 3
  %569 = load i8, ptr %568, align 1, !tbaa !9
  %570 = zext i8 %569 to i32
  %571 = load ptr, ptr %11, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %571, i32 0, i32 3
  %573 = getelementptr inbounds [2044 x i8], ptr %572, i64 0, i64 4
  %574 = load i8, ptr %573, align 1, !tbaa !9
  %575 = zext i8 %574 to i32
  %576 = load ptr, ptr %11, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %576, i32 0, i32 3
  %578 = getelementptr inbounds [2044 x i8], ptr %577, i64 0, i64 5
  %579 = load i8, ptr %578, align 1, !tbaa !9
  %580 = zext i8 %579 to i32
  %581 = load ptr, ptr %11, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %581, i32 0, i32 3
  %583 = getelementptr inbounds [2044 x i8], ptr %582, i64 0, i64 6
  %584 = load i8, ptr %583, align 1, !tbaa !9
  %585 = zext i8 %584 to i32
  %586 = load ptr, ptr %11, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %586, i32 0, i32 3
  %588 = getelementptr inbounds [2044 x i8], ptr %587, i64 0, i64 7
  %589 = load i8, ptr %588, align 1, !tbaa !9
  %590 = zext i8 %589 to i32
  %591 = load ptr, ptr %11, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %591, i32 0, i32 3
  %593 = getelementptr inbounds [2044 x i8], ptr %592, i64 0, i64 8
  %594 = load i8, ptr %593, align 1, !tbaa !9
  %595 = zext i8 %594 to i32
  %596 = load ptr, ptr %11, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %596, i32 0, i32 3
  %598 = getelementptr inbounds [2044 x i8], ptr %597, i64 0, i64 9
  %599 = load i8, ptr %598, align 1, !tbaa !9
  %600 = zext i8 %599 to i32
  %601 = load ptr, ptr %11, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %601, i32 0, i32 3
  %603 = getelementptr inbounds [2044 x i8], ptr %602, i64 0, i64 10
  %604 = load i8, ptr %603, align 1, !tbaa !9
  %605 = zext i8 %604 to i32
  %606 = load ptr, ptr %11, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %606, i32 0, i32 3
  %608 = getelementptr inbounds [2044 x i8], ptr %607, i64 0, i64 11
  %609 = load i8, ptr %608, align 1, !tbaa !9
  %610 = zext i8 %609 to i32
  %611 = load ptr, ptr %11, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %611, i32 0, i32 3
  %613 = getelementptr inbounds [2044 x i8], ptr %612, i64 0, i64 12
  %614 = load i8, ptr %613, align 1, !tbaa !9
  %615 = zext i8 %614 to i32
  %616 = load ptr, ptr %11, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %616, i32 0, i32 3
  %618 = getelementptr inbounds [2044 x i8], ptr %617, i64 0, i64 13
  %619 = load i8, ptr %618, align 1, !tbaa !9
  %620 = zext i8 %619 to i32
  %621 = load i64, ptr %9, align 8, !tbaa !15
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 268435520, ptr noundef @.str.14, i32 noundef %555, i32 noundef %560, i32 noundef %565, i32 noundef %570, i32 noundef %575, i32 noundef %580, i32 noundef %585, i32 noundef %590, i32 noundef %595, i32 noundef %600, i32 noundef %605, i32 noundef %610, i32 noundef %615, i32 noundef %620, i64 noundef %621)
  br label %622

622:                                              ; preds = %550, %547
  br label %623

623:                                              ; preds = %622
  br label %624

624:                                              ; preds = %623
  br label %625

625:                                              ; preds = %624, %543
  br label %626

626:                                              ; preds = %625
  br label %627

627:                                              ; preds = %626
  br label %628

628:                                              ; preds = %627, %541
  br label %715

629:                                              ; preds = %307
  br label %630

630:                                              ; preds = %629
  %631 = call zeroext i8 @DebugPrintEnabled()
  %632 = icmp ne i8 %631, 0
  br i1 %632, label %633, label %712

633:                                              ; preds = %630
  br label %634

634:                                              ; preds = %633
  %635 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 66)
  %636 = icmp ne i8 %635, 0
  br i1 %636, label %637, label %709

637:                                              ; preds = %634
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %638, i32 0, i32 3
  %640 = getelementptr inbounds [2044 x i8], ptr %639, i64 0, i64 0
  %641 = load i8, ptr %640, align 1, !tbaa !9
  %642 = zext i8 %641 to i32
  %643 = load ptr, ptr %11, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %643, i32 0, i32 3
  %645 = getelementptr inbounds [2044 x i8], ptr %644, i64 0, i64 1
  %646 = load i8, ptr %645, align 1, !tbaa !9
  %647 = zext i8 %646 to i32
  %648 = load ptr, ptr %11, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %648, i32 0, i32 3
  %650 = getelementptr inbounds [2044 x i8], ptr %649, i64 0, i64 2
  %651 = load i8, ptr %650, align 1, !tbaa !9
  %652 = zext i8 %651 to i32
  %653 = load ptr, ptr %11, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %653, i32 0, i32 3
  %655 = getelementptr inbounds [2044 x i8], ptr %654, i64 0, i64 3
  %656 = load i8, ptr %655, align 1, !tbaa !9
  %657 = zext i8 %656 to i32
  %658 = load ptr, ptr %11, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %658, i32 0, i32 3
  %660 = getelementptr inbounds [2044 x i8], ptr %659, i64 0, i64 4
  %661 = load i8, ptr %660, align 1, !tbaa !9
  %662 = zext i8 %661 to i32
  %663 = load ptr, ptr %11, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %663, i32 0, i32 3
  %665 = getelementptr inbounds [2044 x i8], ptr %664, i64 0, i64 5
  %666 = load i8, ptr %665, align 1, !tbaa !9
  %667 = zext i8 %666 to i32
  %668 = load ptr, ptr %11, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %668, i32 0, i32 3
  %670 = getelementptr inbounds [2044 x i8], ptr %669, i64 0, i64 6
  %671 = load i8, ptr %670, align 1, !tbaa !9
  %672 = zext i8 %671 to i32
  %673 = load ptr, ptr %11, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %673, i32 0, i32 3
  %675 = getelementptr inbounds [2044 x i8], ptr %674, i64 0, i64 7
  %676 = load i8, ptr %675, align 1, !tbaa !9
  %677 = zext i8 %676 to i32
  %678 = load ptr, ptr %11, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %678, i32 0, i32 3
  %680 = getelementptr inbounds [2044 x i8], ptr %679, i64 0, i64 8
  %681 = load i8, ptr %680, align 1, !tbaa !9
  %682 = zext i8 %681 to i32
  %683 = load ptr, ptr %11, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %683, i32 0, i32 3
  %685 = getelementptr inbounds [2044 x i8], ptr %684, i64 0, i64 9
  %686 = load i8, ptr %685, align 1, !tbaa !9
  %687 = zext i8 %686 to i32
  %688 = load ptr, ptr %11, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %688, i32 0, i32 3
  %690 = getelementptr inbounds [2044 x i8], ptr %689, i64 0, i64 10
  %691 = load i8, ptr %690, align 1, !tbaa !9
  %692 = zext i8 %691 to i32
  %693 = load ptr, ptr %11, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %693, i32 0, i32 3
  %695 = getelementptr inbounds [2044 x i8], ptr %694, i64 0, i64 11
  %696 = load i8, ptr %695, align 1, !tbaa !9
  %697 = zext i8 %696 to i32
  %698 = load ptr, ptr %11, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %698, i32 0, i32 3
  %700 = getelementptr inbounds [2044 x i8], ptr %699, i64 0, i64 12
  %701 = load i8, ptr %700, align 1, !tbaa !9
  %702 = zext i8 %701 to i32
  %703 = load ptr, ptr %11, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct._RX_TX_PACKET, ptr %703, i32 0, i32 3
  %705 = getelementptr inbounds [2044 x i8], ptr %704, i64 0, i64 13
  %706 = load i8, ptr %705, align 1, !tbaa !9
  %707 = zext i8 %706 to i32
  %708 = load i64, ptr %9, align 8, !tbaa !15
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 66, ptr noundef @.str.15, i32 noundef %642, i32 noundef %647, i32 noundef %652, i32 noundef %657, i32 noundef %662, i32 noundef %667, i32 noundef %672, i32 noundef %677, i32 noundef %682, i32 noundef %687, i32 noundef %692, i32 noundef %697, i32 noundef %702, i32 noundef %707, i64 noundef %708)
  br label %709

709:                                              ; preds = %637, %634
  br label %710

710:                                              ; preds = %709
  br label %711

711:                                              ; preds = %710
  br label %712

712:                                              ; preds = %711, %630
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713
  br label %715

715:                                              ; preds = %714, %628
  br label %716

716:                                              ; preds = %715, %304, %298, %292, %286
  br label %717

717:                                              ; preds = %716
  %718 = load i8, ptr %7, align 1, !tbaa !9
  %719 = icmp ne i8 %718, 0
  br i1 %719, label %242, label %720, !llvm.loop !38

720:                                              ; preds = %717
  %721 = load ptr, ptr @gBS, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %721, i32 0, i32 2
  %723 = load ptr, ptr %722, align 8, !tbaa !16
  %724 = load i64, ptr %14, align 8, !tbaa !15
  call void %723(i64 noundef %724)
  br label %725

725:                                              ; preds = %720
  %726 = call zeroext i8 @DebugPrintEnabled()
  %727 = icmp ne i8 %726, 0
  br i1 %727, label %728, label %737

728:                                              ; preds = %725
  br label %729

729:                                              ; preds = %728
  %730 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2097216)
  %731 = icmp ne i8 %730, 0
  br i1 %731, label %732, label %734

732:                                              ; preds = %729
  %733 = load i64, ptr %14, align 8, !tbaa !15
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2097216, ptr noundef @.str.8, i64 noundef %733)
  br label %734

734:                                              ; preds = %732, %729
  br label %735

735:                                              ; preds = %734
  br label %736

736:                                              ; preds = %735
  br label %737

737:                                              ; preds = %736, %725
  br label %738

738:                                              ; preds = %737
  br label %739

739:                                              ; preds = %738
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 2056, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #3
  ret void
}

declare zeroext i8 @DebugAssertEnabled() #1

declare void @DebugAssert(ptr noundef, i64 noundef, ptr noundef) #1

declare i64 @SN_Reset(ptr noundef, i8 noundef zeroext) #1

declare ptr @SetMem(ptr noundef, i64 noundef, i8 noundef zeroext) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 24}
!11 = !{!"", !12, i64 0, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !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, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368}
!12 = !{!"", !13, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20}
!13 = !{!"long long", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!13, !13, i64 0}
!16 = !{!11, !6, i64 32}
!17 = !{!18, !7, i64 829}
!18 = !{!"", !13, i64 0, !6, i64 8, !6, i64 16, !19, i64 24, !20, i64 152, !7, i64 808, !6, i64 816, !22, i64 824, !7, i64 826, !7, i64 827, !7, i64 828, !7, i64 829, !7, i64 830, !6, i64 832, !13, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !7, i64 872, !6, i64 880}
!19 = !{!"_EFI_SIMPLE_NETWORK_PROTOCOL", !13, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!20 = !{!"", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !7, i64 40, !21, i64 552, !21, i64 584, !21, i64 616, !7, i64 648, !7, i64 649, !7, i64 650, !7, i64 651, !7, i64 652}
!21 = !{!"", !7, i64 0}
!22 = !{!"short", !7, i64 0}
!23 = !{!18, !7, i64 826}
!24 = !{!18, !7, i64 828}
!25 = !{!18, !7, i64 827}
!26 = !{!18, !13, i64 840}
!27 = !{!18, !6, i64 864}
!28 = !{!11, !6, i64 64}
!29 = !{!30, !6, i64 0}
!30 = !{!"_RX_TX_PACKET", !6, i64 0, !22, i64 8, !22, i64 10, !7, i64 12}
!31 = !{!18, !6, i64 880}
!32 = !{!18, !6, i64 16}
!33 = !{!34, !6, i64 8}
!34 = !{!"_EFI_USB_IO_PROTOCOL", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96}
!35 = !{!18, !6, i64 848}
!36 = !{!30, !22, i64 8}
!37 = !{!18, !7, i64 830}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct._RX_TX_PACKET = type { ptr, i16, i16, [2044 x i8] }

@gBS = external local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [154 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.11 = external hidden unnamed_addr constant [5 x i32], align 4
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [127 x i8], align 1

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

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

declare zeroext i8 @DebugPrintEnabled() local_unnamed_addr #1

declare zeroext i8 @DebugPrintLevelEnabled(i64 noundef) local_unnamed_addr #1

declare void @DebugPrint(i64 noundef, ptr noundef, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local i64 @Ax88772NegotiateLinkComplete(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @FillPkt2Queue(ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @Ax88772Rx(ptr noundef %0, i8 noundef zeroext %1) local_unnamed_addr #2 {
  %3 = alloca i64, align 8
  %4 = alloca %struct._RX_TX_PACKET, align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #3
  call void @llvm.lifetime.start.p0(i64 2056, ptr nonnull %4) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #3
  %7 = load ptr, ptr @gBS, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %7, i64 24
  %9 = load ptr, ptr %8, align 8, !tbaa !9
  %10 = tail call i64 %9(i64 noundef 31) #3
  %11 = load ptr, ptr @gBS, align 8, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %11, i64 32
  %13 = load ptr, ptr %12, align 8, !tbaa !14
  tail call void %13(i64 noundef %10) #3
  %14 = icmp ugt i64 %10, 8
  br i1 %14, label %15, label %24

15:                                               ; preds = %2
  %16 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not = icmp eq i8 %16, 0
  br i1 %.not, label %20, label %17

17:                                               ; preds = %15
  %18 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not56 = icmp eq i8 %18, 0
  br i1 %.not56, label %20, label %19

19:                                               ; preds = %17
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.5, i64 noundef %10, i32 noundef 8) #3
  br label %20

20:                                               ; preds = %15, %19, %17
  %21 = tail call zeroext i8 @DebugAssertEnabled() #3
  %22 = icmp eq i8 %21, 0
  br i1 %22, label %24, label %23

23:                                               ; preds = %20
  tail call void @DebugAssert(ptr noundef nonnull @.str.6, i64 noundef 769, ptr noundef nonnull @.str.7) #3
  br label %24

24:                                               ; preds = %20, %23, %2
  %25 = load ptr, ptr @gBS, align 8, !tbaa !5
  %26 = getelementptr inbounds i8, ptr %25, i64 24
  %27 = load ptr, ptr %26, align 8, !tbaa !9
  %28 = tail call i64 %27(i64 noundef 8) #3
  %29 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not57 = icmp eq i8 %29, 0
  br i1 %.not57, label %33, label %30

30:                                               ; preds = %24
  %31 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2097216) #3
  %.not58 = icmp eq i8 %31, 0
  br i1 %.not58, label %33, label %32

32:                                               ; preds = %30
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2097216, ptr noundef nonnull @.str.8, i32 noundef 8) #3
  br label %33

33:                                               ; preds = %30, %32, %24
  %.not59 = icmp eq i8 %1, 0
  br i1 %.not59, label %.thread, label %34

34:                                               ; preds = %33
  %35 = getelementptr inbounds i8, ptr %0, i64 829
  %36 = load i8, ptr %35, align 1, !tbaa !15
  %37 = getelementptr inbounds i8, ptr %0, i64 826
  %38 = load i8, ptr %37, align 2, !tbaa !21
  %39 = getelementptr inbounds i8, ptr %0, i64 828
  %40 = load i8, ptr %39, align 4, !tbaa !22
  %41 = getelementptr inbounds i8, ptr %0, i64 840
  %42 = getelementptr inbounds i8, ptr %0, i64 827
  %43 = tail call i64 @Ax88772NegotiateLinkComplete(ptr noundef %0, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %35, ptr noundef nonnull %37, ptr noundef nonnull %39)
  %44 = load i8, ptr %42, align 1, !tbaa !23
  %.not60 = icmp eq i8 %44, 0
  br i1 %.not60, label %77, label %45

45:                                               ; preds = %34
  %46 = load i8, ptr %35, align 1, !tbaa !15
  %.not61 = icmp eq i8 %46, 0
  br i1 %.not61, label %77, label %47

47:                                               ; preds = %45
  %cond = icmp eq i8 %38, 0
  %48 = load i8, ptr %37, align 2, !tbaa !21
  %.not65 = icmp eq i8 %48, 0
  %49 = xor i1 %cond, %.not65
  br i1 %49, label %54, label %50

50:                                               ; preds = %47
  %cond98 = icmp eq i8 %40, 0
  %51 = load i8, ptr %39, align 4, !tbaa !22
  %.not69 = icmp eq i8 %51, 0
  br i1 %cond98, label %53, label %52

52:                                               ; preds = %50
  br i1 %.not69, label %54, label %66

53:                                               ; preds = %50
  br i1 %.not69, label %66, label %54

54:                                               ; preds = %47, %53, %52
  store i64 0, ptr %41, align 8, !tbaa !24
  %55 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not70 = icmp eq i8 %55, 0
  br i1 %.not70, label %63, label %56

56:                                               ; preds = %54
  %57 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 67108928) #3
  %.not71 = icmp eq i8 %57, 0
  br i1 %.not71, label %63, label %58

58:                                               ; preds = %56
  %59 = load i8, ptr %37, align 2, !tbaa !21
  %.not72 = icmp eq i8 %59, 0
  %60 = select i1 %.not72, i32 10, i32 100
  %61 = load i8, ptr %39, align 4, !tbaa !22
  %.not73 = icmp eq i8 %61, 0
  %62 = select i1 %.not73, ptr @.str.11, ptr @.str.10
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 67108928, ptr noundef nonnull @.str.9, i32 noundef %60, ptr noundef nonnull %62) #3
  br label %63

63:                                               ; preds = %56, %58, %54
  %64 = getelementptr inbounds i8, ptr %0, i64 24
  %65 = tail call i64 @SN_Reset(ptr noundef nonnull %64, i8 noundef zeroext 0) #3
  %.pre101.pre = load i8, ptr %35, align 1, !tbaa !15
  br label %66

66:                                               ; preds = %52, %63, %53
  %.pre101 = phi i8 [ %46, %52 ], [ %.pre101.pre, %63 ], [ %46, %53 ]
  %cond99 = icmp eq i8 %36, 0
  br i1 %cond99, label %67, label %78

67:                                               ; preds = %66
  %.not75 = icmp eq i8 %.pre101, 0
  br i1 %.not75, label %.thread, label %68

68:                                               ; preds = %67
  %69 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not76 = icmp eq i8 %69, 0
  br i1 %.not76, label %.thread, label %70

70:                                               ; preds = %68
  %71 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 67108928) #3
  %.not77 = icmp eq i8 %71, 0
  br i1 %.not77, label %.thread, label %72

72:                                               ; preds = %70
  %73 = load i8, ptr %37, align 2, !tbaa !21
  %.not78 = icmp eq i8 %73, 0
  %74 = select i1 %.not78, i32 10, i32 100
  %75 = load i8, ptr %39, align 4, !tbaa !22
  %.not79 = icmp eq i8 %75, 0
  %76 = select i1 %.not79, ptr @.str.11, ptr @.str.10
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 67108928, ptr noundef nonnull @.str.12, i32 noundef %74, ptr noundef nonnull %76) #3
  br label %.thread

77:                                               ; preds = %45, %34
  %.not80 = icmp eq i8 %36, 0
  br i1 %.not80, label %.thread, label %._crit_edge

._crit_edge:                                      ; preds = %77
  %.pre = load i8, ptr %35, align 1, !tbaa !15
  br label %78

78:                                               ; preds = %._crit_edge, %66
  %79 = phi i8 [ %.pre, %._crit_edge ], [ %.pre101, %66 ]
  %.not81 = icmp eq i8 %79, 0
  br i1 %.not81, label %80, label %.thread

80:                                               ; preds = %78
  %81 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not82 = icmp eq i8 %81, 0
  br i1 %.not82, label %.thread, label %82

82:                                               ; preds = %80
  %83 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 67108928) #3
  %.not83 = icmp eq i8 %83, 0
  br i1 %.not83, label %.thread, label %84

84:                                               ; preds = %82
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 67108928, ptr noundef nonnull @.str.13) #3
  br label %.thread

.thread:                                          ; preds = %67, %70, %72, %68, %77, %78, %82, %84, %80, %33
  %85 = getelementptr inbounds i8, ptr %0, i64 864
  %86 = getelementptr inbounds i8, ptr %0, i64 880
  %87 = getelementptr inbounds i8, ptr %0, i64 16
  %88 = getelementptr inbounds i8, ptr %0, i64 848
  %89 = getelementptr inbounds i8, ptr %0, i64 830
  br label %90

90:                                               ; preds = %.backedge, %.thread
  %91 = load ptr, ptr %85, align 8, !tbaa !25
  store ptr %91, ptr %5, align 8, !tbaa !5
  store i64 2048, ptr %3, align 8, !tbaa !26
  %92 = icmp eq ptr %91, null
  br i1 %92, label %93, label %102

93:                                               ; preds = %90
  %94 = load ptr, ptr @gBS, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 64
  %96 = load ptr, ptr %95, align 8, !tbaa !27
  %97 = call i64 %96(i32 noundef 6, i64 noundef 2056, ptr noundef nonnull %5) #3
  %98 = icmp slt i64 %97, 0
  br i1 %98, label %101, label %99

99:                                               ; preds = %93
  %100 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %100, ptr %85, align 8, !tbaa !25
  store ptr null, ptr %100, align 1, !tbaa !28
  br label %102

101:                                              ; preds = %93
  store ptr %4, ptr %5, align 8, !tbaa !5
  br label %102

102:                                              ; preds = %99, %101, %90
  %103 = load ptr, ptr %86, align 8, !tbaa !30
  %104 = call ptr @SetMem(ptr noundef %103, i64 noundef 2048, i8 noundef zeroext 0) #3
  %105 = load ptr, ptr %87, align 8, !tbaa !31
  %106 = getelementptr inbounds i8, ptr %105, i64 8
  %107 = load ptr, ptr %106, align 8, !tbaa !32
  %108 = load ptr, ptr %86, align 8, !tbaa !30
  %109 = call i64 %107(ptr noundef %105, i8 noundef zeroext -126, ptr noundef %108, ptr noundef nonnull %3, i64 noundef 2, ptr noundef nonnull %6) #3
  %110 = load i64, ptr %3, align 8, !tbaa !26
  %.not84 = icmp eq i64 %110, 0
  br i1 %.not84, label %112, label %111

111:                                              ; preds = %102
  call void @FillPkt2Queue(ptr noundef nonnull %0, i64 noundef %110)
  br label %112

112:                                              ; preds = %111, %102
  %113 = load ptr, ptr %88, align 8, !tbaa !34
  store ptr %113, ptr %5, align 8, !tbaa !5
  %114 = icmp slt i64 %109, 0
  br i1 %114, label %.critedge, label %115

115:                                              ; preds = %112
  %116 = getelementptr inbounds i8, ptr %113, i64 8
  %117 = load i16, ptr %116, align 1, !tbaa !35
  %.not85 = icmp eq i16 %117, 0
  br i1 %.not85, label %.critedge, label %118

118:                                              ; preds = %115
  %119 = icmp ult i16 %117, 2045
  %120 = load i64, ptr %3, align 8
  %121 = icmp ne i64 %120, 0
  %or.cond = select i1 %119, i1 %121, i1 false
  br i1 %or.cond, label %122, label %.critedge

122:                                              ; preds = %118
  %123 = zext nneg i16 %117 to i64
  store i64 %123, ptr %3, align 8, !tbaa !26
  store i8 0, ptr %89, align 2, !tbaa !36
  %124 = load ptr, ptr %85, align 8, !tbaa !25
  %125 = icmp eq ptr %124, %113
  br i1 %125, label %126, label %299

126:                                              ; preds = %122
  %127 = getelementptr inbounds i8, ptr %113, i64 12
  %128 = load i8, ptr %127, align 1, !tbaa !37
  %129 = and i8 %128, 1
  %.not88 = icmp eq i8 %129, 0
  br i1 %.not88, label %250, label %130

130:                                              ; preds = %126
  %131 = icmp eq i8 %128, -1
  br i1 %131, label %132, label %201

132:                                              ; preds = %130
  %133 = getelementptr inbounds i8, ptr %113, i64 13
  %134 = load i8, ptr %133, align 1, !tbaa !37
  %135 = icmp eq i8 %134, -1
  br i1 %135, label %136, label %201

136:                                              ; preds = %132
  %137 = getelementptr inbounds i8, ptr %113, i64 14
  %138 = load i8, ptr %137, align 1, !tbaa !37
  %139 = icmp eq i8 %138, -1
  br i1 %139, label %140, label %201

140:                                              ; preds = %136
  %141 = getelementptr inbounds i8, ptr %113, i64 15
  %142 = load i8, ptr %141, align 1, !tbaa !37
  %143 = icmp eq i8 %142, -1
  br i1 %143, label %144, label %201

144:                                              ; preds = %140
  %145 = getelementptr inbounds i8, ptr %113, i64 16
  %146 = load i8, ptr %145, align 1, !tbaa !37
  %147 = icmp eq i8 %146, -1
  br i1 %147, label %148, label %201

148:                                              ; preds = %144
  %149 = getelementptr inbounds i8, ptr %113, i64 17
  %150 = load i8, ptr %149, align 1, !tbaa !37
  %151 = icmp eq i8 %150, -1
  br i1 %151, label %152, label %201

152:                                              ; preds = %148
  %153 = call zeroext i8 @DebugPrintEnabled() #3
  %.not93 = icmp eq i8 %153, 0
  br i1 %.not93, label %.backedge, label %154

154:                                              ; preds = %152
  %155 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1073741888) #3
  %.not94 = icmp eq i8 %155, 0
  br i1 %.not94, label %.backedge, label %156

156:                                              ; preds = %154
  %157 = load ptr, ptr %5, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 12
  %159 = load i8, ptr %158, align 1, !tbaa !37
  %160 = zext i8 %159 to i32
  %161 = getelementptr inbounds i8, ptr %157, i64 13
  %162 = load i8, ptr %161, align 1, !tbaa !37
  %163 = zext i8 %162 to i32
  %164 = getelementptr inbounds i8, ptr %157, i64 14
  %165 = load i8, ptr %164, align 1, !tbaa !37
  %166 = zext i8 %165 to i32
  %167 = getelementptr inbounds i8, ptr %157, i64 15
  %168 = load i8, ptr %167, align 1, !tbaa !37
  %169 = zext i8 %168 to i32
  %170 = getelementptr inbounds i8, ptr %157, i64 16
  %171 = load i8, ptr %170, align 1, !tbaa !37
  %172 = zext i8 %171 to i32
  %173 = getelementptr inbounds i8, ptr %157, i64 17
  %174 = load i8, ptr %173, align 1, !tbaa !37
  %175 = zext i8 %174 to i32
  %176 = getelementptr inbounds i8, ptr %157, i64 18
  %177 = load i8, ptr %176, align 1, !tbaa !37
  %178 = zext i8 %177 to i32
  %179 = getelementptr inbounds i8, ptr %157, i64 19
  %180 = load i8, ptr %179, align 1, !tbaa !37
  %181 = zext i8 %180 to i32
  %182 = getelementptr inbounds i8, ptr %157, i64 20
  %183 = load i8, ptr %182, align 1, !tbaa !37
  %184 = zext i8 %183 to i32
  %185 = getelementptr inbounds i8, ptr %157, i64 21
  %186 = load i8, ptr %185, align 1, !tbaa !37
  %187 = zext i8 %186 to i32
  %188 = getelementptr inbounds i8, ptr %157, i64 22
  %189 = load i8, ptr %188, align 1, !tbaa !37
  %190 = zext i8 %189 to i32
  %191 = getelementptr inbounds i8, ptr %157, i64 23
  %192 = load i8, ptr %191, align 1, !tbaa !37
  %193 = zext i8 %192 to i32
  %194 = getelementptr inbounds i8, ptr %157, i64 24
  %195 = load i8, ptr %194, align 1, !tbaa !37
  %196 = zext i8 %195 to i32
  %197 = getelementptr inbounds i8, ptr %157, i64 25
  %198 = load i8, ptr %197, align 1, !tbaa !37
  %199 = zext i8 %198 to i32
  %200 = load i64, ptr %3, align 8, !tbaa !26
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1073741888, ptr noundef nonnull @.str.14, i32 noundef %160, i32 noundef %163, i32 noundef %166, i32 noundef %169, i32 noundef %172, i32 noundef %175, i32 noundef %178, i32 noundef %181, i32 noundef %184, i32 noundef %187, i32 noundef %190, i32 noundef %193, i32 noundef %196, i32 noundef %199, i64 noundef %200) #3
  br label %.backedge

201:                                              ; preds = %130, %132, %136, %140, %144, %148
  %202 = call zeroext i8 @DebugPrintEnabled() #3
  %.not91 = icmp eq i8 %202, 0
  br i1 %.not91, label %.backedge, label %203

203:                                              ; preds = %201
  %204 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 536870976) #3
  %.not92 = icmp eq i8 %204, 0
  br i1 %.not92, label %.backedge, label %205

205:                                              ; preds = %203
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  %207 = getelementptr inbounds i8, ptr %206, i64 12
  %208 = load i8, ptr %207, align 1, !tbaa !37
  %209 = zext i8 %208 to i32
  %210 = getelementptr inbounds i8, ptr %206, i64 13
  %211 = load i8, ptr %210, align 1, !tbaa !37
  %212 = zext i8 %211 to i32
  %213 = getelementptr inbounds i8, ptr %206, i64 14
  %214 = load i8, ptr %213, align 1, !tbaa !37
  %215 = zext i8 %214 to i32
  %216 = getelementptr inbounds i8, ptr %206, i64 15
  %217 = load i8, ptr %216, align 1, !tbaa !37
  %218 = zext i8 %217 to i32
  %219 = getelementptr inbounds i8, ptr %206, i64 16
  %220 = load i8, ptr %219, align 1, !tbaa !37
  %221 = zext i8 %220 to i32
  %222 = getelementptr inbounds i8, ptr %206, i64 17
  %223 = load i8, ptr %222, align 1, !tbaa !37
  %224 = zext i8 %223 to i32
  %225 = getelementptr inbounds i8, ptr %206, i64 18
  %226 = load i8, ptr %225, align 1, !tbaa !37
  %227 = zext i8 %226 to i32
  %228 = getelementptr inbounds i8, ptr %206, i64 19
  %229 = load i8, ptr %228, align 1, !tbaa !37
  %230 = zext i8 %229 to i32
  %231 = getelementptr inbounds i8, ptr %206, i64 20
  %232 = load i8, ptr %231, align 1, !tbaa !37
  %233 = zext i8 %232 to i32
  %234 = getelementptr inbounds i8, ptr %206, i64 21
  %235 = load i8, ptr %234, align 1, !tbaa !37
  %236 = zext i8 %235 to i32
  %237 = getelementptr inbounds i8, ptr %206, i64 22
  %238 = load i8, ptr %237, align 1, !tbaa !37
  %239 = zext i8 %238 to i32
  %240 = getelementptr inbounds i8, ptr %206, i64 23
  %241 = load i8, ptr %240, align 1, !tbaa !37
  %242 = zext i8 %241 to i32
  %243 = getelementptr inbounds i8, ptr %206, i64 24
  %244 = load i8, ptr %243, align 1, !tbaa !37
  %245 = zext i8 %244 to i32
  %246 = getelementptr inbounds i8, ptr %206, i64 25
  %247 = load i8, ptr %246, align 1, !tbaa !37
  %248 = zext i8 %247 to i32
  %249 = load i64, ptr %3, align 8, !tbaa !26
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 536870976, ptr noundef nonnull @.str.14, i32 noundef %209, i32 noundef %212, i32 noundef %215, i32 noundef %218, i32 noundef %221, i32 noundef %224, i32 noundef %227, i32 noundef %230, i32 noundef %233, i32 noundef %236, i32 noundef %239, i32 noundef %242, i32 noundef %245, i32 noundef %248, i64 noundef %249) #3
  br label %.backedge

250:                                              ; preds = %126
  %251 = call zeroext i8 @DebugPrintEnabled() #3
  %.not89 = icmp eq i8 %251, 0
  br i1 %.not89, label %.backedge, label %252

252:                                              ; preds = %250
  %253 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 268435520) #3
  %.not90 = icmp eq i8 %253, 0
  br i1 %.not90, label %.backedge, label %254

254:                                              ; preds = %252
  %255 = load ptr, ptr %5, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i64 12
  %257 = load i8, ptr %256, align 1, !tbaa !37
  %258 = zext i8 %257 to i32
  %259 = getelementptr inbounds i8, ptr %255, i64 13
  %260 = load i8, ptr %259, align 1, !tbaa !37
  %261 = zext i8 %260 to i32
  %262 = getelementptr inbounds i8, ptr %255, i64 14
  %263 = load i8, ptr %262, align 1, !tbaa !37
  %264 = zext i8 %263 to i32
  %265 = getelementptr inbounds i8, ptr %255, i64 15
  %266 = load i8, ptr %265, align 1, !tbaa !37
  %267 = zext i8 %266 to i32
  %268 = getelementptr inbounds i8, ptr %255, i64 16
  %269 = load i8, ptr %268, align 1, !tbaa !37
  %270 = zext i8 %269 to i32
  %271 = getelementptr inbounds i8, ptr %255, i64 17
  %272 = load i8, ptr %271, align 1, !tbaa !37
  %273 = zext i8 %272 to i32
  %274 = getelementptr inbounds i8, ptr %255, i64 18
  %275 = load i8, ptr %274, align 1, !tbaa !37
  %276 = zext i8 %275 to i32
  %277 = getelementptr inbounds i8, ptr %255, i64 19
  %278 = load i8, ptr %277, align 1, !tbaa !37
  %279 = zext i8 %278 to i32
  %280 = getelementptr inbounds i8, ptr %255, i64 20
  %281 = load i8, ptr %280, align 1, !tbaa !37
  %282 = zext i8 %281 to i32
  %283 = getelementptr inbounds i8, ptr %255, i64 21
  %284 = load i8, ptr %283, align 1, !tbaa !37
  %285 = zext i8 %284 to i32
  %286 = getelementptr inbounds i8, ptr %255, i64 22
  %287 = load i8, ptr %286, align 1, !tbaa !37
  %288 = zext i8 %287 to i32
  %289 = getelementptr inbounds i8, ptr %255, i64 23
  %290 = load i8, ptr %289, align 1, !tbaa !37
  %291 = zext i8 %290 to i32
  %292 = getelementptr inbounds i8, ptr %255, i64 24
  %293 = load i8, ptr %292, align 1, !tbaa !37
  %294 = zext i8 %293 to i32
  %295 = getelementptr inbounds i8, ptr %255, i64 25
  %296 = load i8, ptr %295, align 1, !tbaa !37
  %297 = zext i8 %296 to i32
  %298 = load i64, ptr %3, align 8, !tbaa !26
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 268435520, ptr noundef nonnull @.str.14, i32 noundef %258, i32 noundef %261, i32 noundef %264, i32 noundef %267, i32 noundef %270, i32 noundef %273, i32 noundef %276, i32 noundef %279, i32 noundef %282, i32 noundef %285, i32 noundef %288, i32 noundef %291, i32 noundef %294, i32 noundef %297, i64 noundef %298) #3
  br label %.backedge

299:                                              ; preds = %122
  %300 = call zeroext i8 @DebugPrintEnabled() #3
  %.not86 = icmp eq i8 %300, 0
  br i1 %.not86, label %.backedge, label %301

.backedge:                                        ; preds = %299, %303, %301, %201, %205, %203, %152, %156, %154, %252, %254, %250
  br label %90, !llvm.loop !38

301:                                              ; preds = %299
  %302 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 66) #3
  %.not87 = icmp eq i8 %302, 0
  br i1 %.not87, label %.backedge, label %303

303:                                              ; preds = %301
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  %305 = getelementptr inbounds i8, ptr %304, i64 12
  %306 = load i8, ptr %305, align 1, !tbaa !37
  %307 = zext i8 %306 to i32
  %308 = getelementptr inbounds i8, ptr %304, i64 13
  %309 = load i8, ptr %308, align 1, !tbaa !37
  %310 = zext i8 %309 to i32
  %311 = getelementptr inbounds i8, ptr %304, i64 14
  %312 = load i8, ptr %311, align 1, !tbaa !37
  %313 = zext i8 %312 to i32
  %314 = getelementptr inbounds i8, ptr %304, i64 15
  %315 = load i8, ptr %314, align 1, !tbaa !37
  %316 = zext i8 %315 to i32
  %317 = getelementptr inbounds i8, ptr %304, i64 16
  %318 = load i8, ptr %317, align 1, !tbaa !37
  %319 = zext i8 %318 to i32
  %320 = getelementptr inbounds i8, ptr %304, i64 17
  %321 = load i8, ptr %320, align 1, !tbaa !37
  %322 = zext i8 %321 to i32
  %323 = getelementptr inbounds i8, ptr %304, i64 18
  %324 = load i8, ptr %323, align 1, !tbaa !37
  %325 = zext i8 %324 to i32
  %326 = getelementptr inbounds i8, ptr %304, i64 19
  %327 = load i8, ptr %326, align 1, !tbaa !37
  %328 = zext i8 %327 to i32
  %329 = getelementptr inbounds i8, ptr %304, i64 20
  %330 = load i8, ptr %329, align 1, !tbaa !37
  %331 = zext i8 %330 to i32
  %332 = getelementptr inbounds i8, ptr %304, i64 21
  %333 = load i8, ptr %332, align 1, !tbaa !37
  %334 = zext i8 %333 to i32
  %335 = getelementptr inbounds i8, ptr %304, i64 22
  %336 = load i8, ptr %335, align 1, !tbaa !37
  %337 = zext i8 %336 to i32
  %338 = getelementptr inbounds i8, ptr %304, i64 23
  %339 = load i8, ptr %338, align 1, !tbaa !37
  %340 = zext i8 %339 to i32
  %341 = getelementptr inbounds i8, ptr %304, i64 24
  %342 = load i8, ptr %341, align 1, !tbaa !37
  %343 = zext i8 %342 to i32
  %344 = getelementptr inbounds i8, ptr %304, i64 25
  %345 = load i8, ptr %344, align 1, !tbaa !37
  %346 = zext i8 %345 to i32
  %347 = load i64, ptr %3, align 8, !tbaa !26
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 66, ptr noundef nonnull @.str.15, i32 noundef %307, i32 noundef %310, i32 noundef %313, i32 noundef %316, i32 noundef %319, i32 noundef %322, i32 noundef %325, i32 noundef %328, i32 noundef %331, i32 noundef %334, i32 noundef %337, i32 noundef %340, i32 noundef %343, i32 noundef %346, i64 noundef %347) #3
  br label %.backedge

.critedge:                                        ; preds = %115, %118, %112
  %348 = load ptr, ptr @gBS, align 8, !tbaa !5
  %349 = getelementptr inbounds i8, ptr %348, i64 32
  %350 = load ptr, ptr %349, align 8, !tbaa !14
  call void %350(i64 noundef %28) #3
  %351 = call zeroext i8 @DebugPrintEnabled() #3
  %.not96 = icmp eq i8 %351, 0
  br i1 %.not96, label %355, label %352

352:                                              ; preds = %.critedge
  %353 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2097216) #3
  %.not97 = icmp eq i8 %353, 0
  br i1 %.not97, label %355, label %354

354:                                              ; preds = %352
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2097216, ptr noundef nonnull @.str.8, i64 noundef %28) #3
  br label %355

355:                                              ; preds = %352, %354, %.critedge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #3
  call void @llvm.lifetime.end.p0(i64 2056, ptr nonnull %4) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #3
  ret void
}

declare zeroext i8 @DebugAssertEnabled() local_unnamed_addr #1

declare void @DebugAssert(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

declare i64 @SN_Reset(ptr noundef, i8 noundef zeroext) local_unnamed_addr #1

declare ptr @SetMem(ptr noundef, i64 noundef, i8 noundef zeroext) local_unnamed_addr #1

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 24}
!10 = !{!"", !11, i64 0, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !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, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368}
!11 = !{!"", !12, i64 0, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20}
!12 = !{!"long long", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!10, !6, i64 32}
!15 = !{!16, !7, i64 829}
!16 = !{!"", !12, i64 0, !6, i64 8, !6, i64 16, !17, i64 24, !18, i64 152, !7, i64 808, !6, i64 816, !20, i64 824, !7, i64 826, !7, i64 827, !7, i64 828, !7, i64 829, !7, i64 830, !6, i64 832, !12, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !7, i64 872, !6, i64 880}
!17 = !{!"_EFI_SIMPLE_NETWORK_PROTOCOL", !12, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!18 = !{!"", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !7, i64 40, !19, i64 552, !19, i64 584, !19, i64 616, !7, i64 648, !7, i64 649, !7, i64 650, !7, i64 651, !7, i64 652}
!19 = !{!"", !7, i64 0}
!20 = !{!"short", !7, i64 0}
!21 = !{!16, !7, i64 826}
!22 = !{!16, !7, i64 828}
!23 = !{!16, !7, i64 827}
!24 = !{!16, !12, i64 840}
!25 = !{!16, !6, i64 864}
!26 = !{!12, !12, i64 0}
!27 = !{!10, !6, i64 64}
!28 = !{!29, !6, i64 0}
!29 = !{!"_RX_TX_PACKET", !6, i64 0, !20, i64 8, !20, i64 10, !7, i64 12}
!30 = !{!16, !6, i64 880}
!31 = !{!16, !6, i64 16}
!32 = !{!33, !6, i64 8}
!33 = !{!"_EFI_USB_IO_PROTOCOL", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96}
!34 = !{!16, !6, i64 848}
!35 = !{!29, !20, i64 8}
!36 = !{!16, !7, i64 830}
!37 = !{!7, !7, i64 0}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass