; LLVM IR from thalium/icebox :: third_party/virtualbox/src/VBox/Devices/EFI/Firmware/IntelFrameworkModulePkg (BiosSnp16DriverBindingStart)

; 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.GUID = type { i32, i16, i16, [8 x i8] }
%union.EFI_DEV_PATH = type <{ %struct.INFINIBAND_DEVICE_PATH, [12 x i8] }>
%struct.INFINIBAND_DEVICE_PATH = type { %struct.EFI_DEVICE_PATH_PROTOCOL, i32, [16 x i8], i64, i64, i64 }
%struct.EFI_DEVICE_PATH_PROTOCOL = type { i8, i8, [2 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._EFI_DRIVER_BINDING_PROTOCOL = type { ptr, ptr, ptr, i32, ptr, ptr }
%struct._EFI_PCI_IO_PROTOCOL = type { ptr, ptr, %struct.EFI_PCI_IO_PROTOCOL_ACCESS, %struct.EFI_PCI_IO_PROTOCOL_ACCESS, %struct.EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr }
%struct.EFI_PCI_IO_PROTOCOL_ACCESS = type { ptr, ptr }
%struct.EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS = type { ptr, ptr }
%struct._EFI_LEGACY_BIOS_PROTOCOL = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.EFI_SIMPLE_NETWORK_DEV = type { i64, ptr, %struct._EFI_SIMPLE_NETWORK_PROTOCOL, %struct.EFI_SIMPLE_NETWORK_MODE, %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr, ptr, ptr, i8, ptr, ptr, i16, i16, %struct.EFI_SIMPLE_NETWORK_DEV_FIFO, ptr, ptr, %struct.PXENV_UNDI_GET_INFORMATION_T, %struct.PXENV_UNDI_GET_NIC_TYPE_T, %struct.PXENV_UNDI_GET_NDIS_INFO_T, i8, %struct.PXENV_UNDI_ISR_T, ptr, ptr, ptr, ptr, i8, i64, i64, i64, i64, ptr, ptr, ptr, 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_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL = type { i64, i64, i64, i32, [4 x i8], i8, i8, i8, i8, i16 }
%struct.EFI_SIMPLE_NETWORK_DEV_FIFO = type { i32, i32, [64 x ptr] }
%struct.PXENV_UNDI_GET_INFORMATION_T = type { i16, i16, i16, i16, i16, i16, [16 x i8], [16 x i8], i16, i16, i16 }
%struct.PXENV_UNDI_GET_NIC_TYPE_T = type <{ i16, i8, %union.PCI_PNP_INFO_T }>
%union.PCI_PNP_INFO_T = type { %struct.PCI_INFO_T }
%struct.PCI_INFO_T = type { i16, i16, i8, i8, i8, i8, i16, i16, i16 }
%struct.PXENV_UNDI_GET_NDIS_INFO_T = type <{ i16, [16 x i8], i32, i32, [4 x i32] }>
%struct.PXENV_UNDI_ISR_T = type { i16, i16, i16, i16, i16, i16, i16, i8, i8 }
%struct.PXENV_UNDI_TBD_T = type { i16, i16, i16, i16, [8 x %struct.DataBlk] }
%struct.DataBlk = type { i8, i8, i16, i16, i16 }
%struct.MAC_ADDR_DEVICE_PATH = type { %struct.EFI_DEVICE_PATH_PROTOCOL, %struct.EFI_MAC_ADDRESS, i8 }

@mCachedInt1A = external dso_local global i8, align 1
@gBS = external global ptr, align 8
@gEfiLegacyBiosProtocolGuid = external global %struct.GUID, align 4
@gEfiDevicePathProtocolGuid = external global %struct.GUID, align 4
@gEfiPciIoProtocolGuid = external global %struct.GUID, align 4
@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [46 x i8], align 1
@gEfiEventExitBootServicesGuid = external global %struct.GUID, align 4
@.str.5 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [50 x i8], align 1
@gEfiSimpleNetworkProtocolGuid = external global %struct.GUID, align 4
@gEfiNetworkInterfaceIdentifierProtocolGuid = external global %struct.GUID, align 4
@.str.28 = external hidden unnamed_addr constant [29 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i64 @BiosSnp16DriverBindingStart(ptr noundef %0, ptr noundef %1, ptr noundef %2) #0 {
  %4 = alloca i64, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %union.EFI_DEV_PATH, align 1
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, 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 60, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  store ptr null, ptr %12, align 8, !tbaa !5
  store ptr null, ptr %11, align 8, !tbaa !5
  %23 = load ptr, ptr @gBS, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %23, i32 0, i32 38
  %25 = load ptr, ptr %24, align 8, !tbaa !9
  %26 = call i64 %25(ptr noundef @gEfiLegacyBiosProtocolGuid, ptr noundef null, ptr noundef %9)
  store i64 %26, ptr %8, align 8, !tbaa !14
  %27 = load i64, ptr %8, align 8, !tbaa !14
  %28 = icmp slt i64 %27, 0
  br i1 %28, label %29, label %31

29:                                               ; preds = %3
  %30 = load i64, ptr %8, align 8, !tbaa !14
  store i64 %30, ptr %4, align 8
  store i32 1, ptr %22, align 4
  br label %1235

31:                                               ; preds = %3
  %32 = load ptr, ptr @gBS, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %32, i32 0, i32 33
  %34 = load ptr, ptr %33, align 8, !tbaa !15
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct._EFI_DRIVER_BINDING_PROTOCOL, ptr %36, i32 0, i32 5
  %38 = load ptr, ptr %37, align 8, !tbaa !16
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = call i64 %34(ptr noundef %35, ptr noundef @gEfiDevicePathProtocolGuid, ptr noundef %10, ptr noundef %38, ptr noundef %39, i32 noundef 16)
  store i64 %40, ptr %8, align 8, !tbaa !14
  %41 = load i64, ptr %8, align 8, !tbaa !14
  %42 = icmp slt i64 %41, 0
  br i1 %42, label %43, label %44

43:                                               ; preds = %31
  br label %1060

44:                                               ; preds = %31
  %45 = load ptr, ptr @gBS, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %45, i32 0, i32 33
  %47 = load ptr, ptr %46, align 8, !tbaa !15
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = load ptr, ptr %5, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct._EFI_DRIVER_BINDING_PROTOCOL, ptr %49, i32 0, i32 5
  %51 = load ptr, ptr %50, align 8, !tbaa !16
  %52 = load ptr, ptr %6, align 8, !tbaa !5
  %53 = call i64 %47(ptr noundef %48, ptr noundef @gEfiPciIoProtocolGuid, ptr noundef %11, ptr noundef %51, ptr noundef %52, i32 noundef 16)
  store i64 %53, ptr %8, align 8, !tbaa !14
  %54 = load i64, ptr %8, align 8, !tbaa !14
  %55 = icmp slt i64 %54, 0
  br i1 %55, label %56, label %57

56:                                               ; preds = %44
  br label %1060

57:                                               ; preds = %44
  %58 = load ptr, ptr %11, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct._EFI_PCI_IO_PROTOCOL, ptr %58, i32 0, i32 12
  %60 = load ptr, ptr %59, align 8, !tbaa !18
  %61 = load ptr, ptr %11, align 8, !tbaa !5
  %62 = call i64 %60(ptr noundef %61, i32 noundef 4, i64 noundef 0, ptr noundef %21)
  store i64 %62, ptr %8, align 8, !tbaa !14
  %63 = load i64, ptr %8, align 8, !tbaa !14
  %64 = icmp slt i64 %63, 0
  br i1 %64, label %74, label %65

65:                                               ; preds = %57
  %66 = load i64, ptr %21, align 8, !tbaa !14
  %67 = and i64 %66, 1792
  store i64 %67, ptr %21, align 8, !tbaa !14
  %68 = load ptr, ptr %11, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct._EFI_PCI_IO_PROTOCOL, ptr %68, i32 0, i32 12
  %70 = load ptr, ptr %69, align 8, !tbaa !18
  %71 = load ptr, ptr %11, align 8, !tbaa !5
  %72 = load i64, ptr %21, align 8, !tbaa !14
  %73 = call i64 %70(ptr noundef %71, i32 noundef 2, i64 noundef %72, ptr noundef null)
  store i64 %73, ptr %8, align 8, !tbaa !14
  br label %74

74:                                               ; preds = %65, %57
  %75 = load i64, ptr %8, align 8, !tbaa !14
  %76 = icmp slt i64 %75, 0
  br i1 %76, label %77, label %78

77:                                               ; preds = %74
  br label %1060

78:                                               ; preds = %74
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct._EFI_LEGACY_BIOS_PROTOCOL, ptr %79, i32 0, i32 2
  %81 = load ptr, ptr %80, align 8, !tbaa !21
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = call i64 %81(ptr noundef %82, ptr noundef %83, ptr noundef null, ptr noundef null, ptr noundef %20)
  store i64 %84, ptr %8, align 8, !tbaa !14
  %85 = load i64, ptr %8, align 8, !tbaa !14
  %86 = icmp slt i64 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %78
  br label %1060

88:                                               ; preds = %78
  %89 = load ptr, ptr %9, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct._EFI_LEGACY_BIOS_PROTOCOL, ptr %89, i32 0, i32 3
  %91 = load ptr, ptr %90, align 8, !tbaa !23
  %92 = load ptr, ptr %9, align 8, !tbaa !5
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  %94 = call i64 %91(ptr noundef %92, ptr noundef %93, ptr noundef null, ptr noundef %20, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null)
  store i64 %94, ptr %8, align 8, !tbaa !14
  %95 = load i64, ptr %8, align 8, !tbaa !14
  %96 = icmp slt i64 %95, 0
  br i1 %96, label %97, label %98

97:                                               ; preds = %88
  br label %1060

98:                                               ; preds = %88
  %99 = load ptr, ptr @gBS, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %99, i32 0, i32 6
  %101 = load ptr, ptr %100, align 8, !tbaa !24
  %102 = call i64 %101(i32 noundef 4, i64 noundef 1664, ptr noundef %12)
  store i64 %102, ptr %8, align 8, !tbaa !14
  %103 = load i64, ptr %8, align 8, !tbaa !14
  %104 = icmp slt i64 %103, 0
  br i1 %104, label %105, label %106

105:                                              ; preds = %98
  store i64 -9223372036854775799, ptr %8, align 8, !tbaa !14
  br label %1060

106:                                              ; preds = %98
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = call ptr @ZeroMem(ptr noundef %107, i64 noundef 1664)
  %109 = load ptr, ptr %12, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %109, i32 0, i32 0
  store i64 909209203, ptr %110, align 8, !tbaa !25
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = load ptr, ptr %12, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %112, i32 0, i32 7
  store ptr %111, ptr %113, align 8, !tbaa !37
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = load ptr, ptr %12, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %115, i32 0, i32 14
  store ptr %114, ptr %116, align 8, !tbaa !38
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %118, i32 0, i32 6
  store ptr %117, ptr %119, align 8, !tbaa !39
  %120 = load ptr, ptr %12, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %120, i32 0, i32 4
  %122 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %121, i32 0, i32 0
  store i64 131072, ptr %122, align 8, !tbaa !40
  %123 = load ptr, ptr %12, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %123, i32 0, i32 4
  %125 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %124, i32 0, i32 5
  store i8 1, ptr %125, align 8, !tbaa !41
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %126, i32 0, i32 4
  %128 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %127, i32 0, i32 4
  %129 = call ptr @CopyMem(ptr noundef %128, ptr noundef @.str, i64 noundef 4)
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = call i64 @Undi16SimpleNetworkLoadUndi(ptr noundef %130)
  store i64 %131, ptr %8, align 8, !tbaa !14
  %132 = load i64, ptr %8, align 8, !tbaa !14
  %133 = icmp slt i64 %132, 0
  br i1 %133, label %134, label %150

134:                                              ; preds = %106
  br label %135

135:                                              ; preds = %134
  %136 = call zeroext i8 @DebugPrintEnabled()
  %137 = icmp ne i8 %136, 0
  br i1 %137, label %138, label %147

138:                                              ; preds = %135
  br label %139

139:                                              ; preds = %138
  %140 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %141 = icmp ne i8 %140, 0
  br i1 %141, label %142, label %144

142:                                              ; preds = %139
  %143 = load i64, ptr %8, align 8, !tbaa !14
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.1, i64 noundef %143)
  br label %144

144:                                              ; preds = %142, %139
  br label %145

145:                                              ; preds = %144
  br label %146

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146, %135
  br label %148

148:                                              ; preds = %147
  br label %149

149:                                              ; preds = %148
  br label %1060

150:                                              ; preds = %106
  %151 = load ptr, ptr %12, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %151, i32 0, i32 8
  store i8 1, ptr %152, align 8, !tbaa !42
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct._EFI_PCI_IO_PROTOCOL, ptr %153, i32 0, i32 11
  %155 = load ptr, ptr %154, align 8, !tbaa !43
  %156 = load ptr, ptr %11, align 8, !tbaa !5
  %157 = call i64 %155(ptr noundef %156, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19)
  %158 = load ptr, ptr %12, align 8, !tbaa !5
  %159 = load i64, ptr %17, align 8, !tbaa !14
  %160 = shl i64 %159, 8
  %161 = load i64, ptr %18, align 8, !tbaa !14
  %162 = shl i64 %161, 3
  %163 = or i64 %160, %162
  %164 = load i64, ptr %19, align 8, !tbaa !14
  %165 = or i64 %163, %164
  %166 = trunc i64 %165 to i16
  %167 = call i64 @Undi16SimpleNetworkStartUndi(ptr noundef %158, i16 noundef zeroext %166)
  store i64 %167, ptr %8, align 8, !tbaa !14
  %168 = load i64, ptr %8, align 8, !tbaa !14
  %169 = icmp slt i64 %168, 0
  br i1 %169, label %170, label %186

170:                                              ; preds = %150
  br label %171

171:                                              ; preds = %170
  %172 = call zeroext i8 @DebugPrintEnabled()
  %173 = icmp ne i8 %172, 0
  br i1 %173, label %174, label %183

174:                                              ; preds = %171
  br label %175

175:                                              ; preds = %174
  %176 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %177 = icmp ne i8 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %175
  %179 = load i64, ptr %8, align 8, !tbaa !14
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.2, i64 noundef %179)
  br label %180

180:                                              ; preds = %178, %175
  br label %181

181:                                              ; preds = %180
  br label %182

182:                                              ; preds = %181
  br label %183

183:                                              ; preds = %182, %171
  br label %184

184:                                              ; preds = %183
  br label %185

185:                                              ; preds = %184
  br label %1060

186:                                              ; preds = %150
  br label %187

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

190:                                              ; preds = %187
  br label %191

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

194:                                              ; preds = %191
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.3)
  br label %195

195:                                              ; preds = %194, %191
  br label %196

196:                                              ; preds = %195
  br label %197

197:                                              ; preds = %196
  br label %198

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

199:                                              ; preds = %198
  br label %200

200:                                              ; preds = %199
  %201 = load ptr, ptr %12, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %201, i32 0, i32 2
  %203 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %202, i32 0, i32 0
  store i64 65536, ptr %203, align 8, !tbaa !44
  %204 = load ptr, ptr %12, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %204, i32 0, i32 2
  %206 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %205, i32 0, i32 1
  store ptr @Undi16SimpleNetworkStart, ptr %206, align 8, !tbaa !45
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %207, i32 0, i32 2
  %209 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %208, i32 0, i32 2
  store ptr @Undi16SimpleNetworkStop, ptr %209, align 8, !tbaa !46
  %210 = load ptr, ptr %12, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %210, i32 0, i32 2
  %212 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %211, i32 0, i32 3
  store ptr @Undi16SimpleNetworkInitialize, ptr %212, align 8, !tbaa !47
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %213, i32 0, i32 2
  %215 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %214, i32 0, i32 4
  store ptr @Undi16SimpleNetworkReset, ptr %215, align 8, !tbaa !48
  %216 = load ptr, ptr %12, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %216, i32 0, i32 2
  %218 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %217, i32 0, i32 5
  store ptr @Undi16SimpleNetworkShutdown, ptr %218, align 8, !tbaa !49
  %219 = load ptr, ptr %12, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %219, i32 0, i32 2
  %221 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %220, i32 0, i32 6
  store ptr @Undi16SimpleNetworkReceiveFilters, ptr %221, align 8, !tbaa !50
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %222, i32 0, i32 2
  %224 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %223, i32 0, i32 7
  store ptr @Undi16SimpleNetworkStationAddress, ptr %224, align 8, !tbaa !51
  %225 = load ptr, ptr %12, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %225, i32 0, i32 2
  %227 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %226, i32 0, i32 8
  store ptr @Undi16SimpleNetworkStatistics, ptr %227, align 8, !tbaa !52
  %228 = load ptr, ptr %12, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %228, i32 0, i32 2
  %230 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %229, i32 0, i32 9
  store ptr @Undi16SimpleNetworkMCastIpToMac, ptr %230, align 8, !tbaa !53
  %231 = load ptr, ptr %12, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %231, i32 0, i32 2
  %233 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %232, i32 0, i32 10
  store ptr @Undi16SimpleNetworkNvData, ptr %233, align 8, !tbaa !54
  %234 = load ptr, ptr %12, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %234, i32 0, i32 2
  %236 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %235, i32 0, i32 11
  store ptr @Undi16SimpleNetworkGetStatus, ptr %236, align 8, !tbaa !55
  %237 = load ptr, ptr %12, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %237, i32 0, i32 2
  %239 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %238, i32 0, i32 12
  store ptr @Undi16SimpleNetworkTransmit, ptr %239, align 8, !tbaa !56
  %240 = load ptr, ptr %12, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %240, i32 0, i32 2
  %242 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %241, i32 0, i32 13
  store ptr @Undi16SimpleNetworkReceive, ptr %242, align 8, !tbaa !57
  %243 = load ptr, ptr %12, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %243, i32 0, i32 3
  %245 = load ptr, ptr %12, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %245, i32 0, i32 2
  %247 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %246, i32 0, i32 15
  store ptr %244, ptr %247, align 8, !tbaa !58
  %248 = load ptr, ptr @gBS, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %248, i32 0, i32 8
  %250 = load ptr, ptr %249, align 8, !tbaa !59
  %251 = load ptr, ptr %12, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %251, i32 0, i32 2
  %253 = load ptr, ptr %12, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %253, i32 0, i32 2
  %255 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %254, i32 0, i32 14
  %256 = call i64 %250(i32 noundef 256, i64 noundef 16, ptr noundef @Undi16SimpleNetworkWaitForPacket, ptr noundef %252, ptr noundef %255)
  store i64 %256, ptr %8, align 8, !tbaa !14
  %257 = load i64, ptr %8, align 8, !tbaa !14
  %258 = icmp slt i64 %257, 0
  br i1 %258, label %259, label %275

259:                                              ; preds = %200
  br label %260

260:                                              ; preds = %259
  %261 = call zeroext i8 @DebugPrintEnabled()
  %262 = icmp ne i8 %261, 0
  br i1 %262, label %263, label %272

263:                                              ; preds = %260
  br label %264

264:                                              ; preds = %263
  %265 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %266 = icmp ne i8 %265, 0
  br i1 %266, label %267, label %269

267:                                              ; preds = %264
  %268 = load i64, ptr %8, align 8, !tbaa !14
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.4, i64 noundef %268)
  br label %269

269:                                              ; preds = %267, %264
  br label %270

270:                                              ; preds = %269
  br label %271

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271, %260
  br label %273

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  br label %1060

275:                                              ; preds = %200
  %276 = load ptr, ptr @gBS, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %276, i32 0, i32 44
  %278 = load ptr, ptr %277, align 8, !tbaa !60
  %279 = load ptr, ptr %12, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %279, i32 0, i32 9
  %281 = call i64 %278(i32 noundef 512, i64 noundef 16, ptr noundef @Undi16SimpleNetworkEvent, ptr noundef null, ptr noundef @gEfiEventExitBootServicesGuid, ptr noundef %280)
  store i64 %281, ptr %8, align 8, !tbaa !14
  %282 = load i64, ptr %8, align 8, !tbaa !14
  %283 = icmp slt i64 %282, 0
  br i1 %283, label %284, label %300

284:                                              ; preds = %275
  br label %285

285:                                              ; preds = %284
  %286 = call zeroext i8 @DebugPrintEnabled()
  %287 = icmp ne i8 %286, 0
  br i1 %287, label %288, label %297

288:                                              ; preds = %285
  br label %289

289:                                              ; preds = %288
  %290 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %291 = icmp ne i8 %290, 0
  br i1 %291, label %292, label %294

292:                                              ; preds = %289
  %293 = load i64, ptr %8, align 8, !tbaa !14
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.4, i64 noundef %293)
  br label %294

294:                                              ; preds = %292, %289
  br label %295

295:                                              ; preds = %294
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296, %285
  br label %298

298:                                              ; preds = %297
  br label %299

299:                                              ; preds = %298
  br label %1060

300:                                              ; preds = %275
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %301, i32 0, i32 10
  %303 = call i64 @EfiCreateEventLegacyBootEx(i64 noundef 16, ptr noundef @Undi16SimpleNetworkEvent, ptr noundef null, ptr noundef %302)
  store i64 %303, ptr %8, align 8, !tbaa !14
  %304 = load i64, ptr %8, align 8, !tbaa !14
  %305 = icmp slt i64 %304, 0
  br i1 %305, label %306, label %322

306:                                              ; preds = %300
  br label %307

307:                                              ; preds = %306
  %308 = call zeroext i8 @DebugPrintEnabled()
  %309 = icmp ne i8 %308, 0
  br i1 %309, label %310, label %319

310:                                              ; preds = %307
  br label %311

311:                                              ; preds = %310
  %312 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %313 = icmp ne i8 %312, 0
  br i1 %313, label %314, label %316

314:                                              ; preds = %311
  %315 = load i64, ptr %8, align 8, !tbaa !14
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.4, i64 noundef %315)
  br label %316

316:                                              ; preds = %314, %311
  br label %317

317:                                              ; preds = %316
  br label %318

318:                                              ; preds = %317
  br label %319

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

320:                                              ; preds = %319
  br label %321

321:                                              ; preds = %320
  br label %1060

322:                                              ; preds = %300
  br label %323

323:                                              ; preds = %322
  %324 = call zeroext i8 @DebugPrintEnabled()
  %325 = icmp ne i8 %324, 0
  br i1 %325, label %326, label %334

326:                                              ; preds = %323
  br label %327

327:                                              ; preds = %326
  %328 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %329 = icmp ne i8 %328, 0
  br i1 %329, label %330, label %331

330:                                              ; preds = %327
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.5)
  br label %331

331:                                              ; preds = %330, %327
  br label %332

332:                                              ; preds = %331
  br label %333

333:                                              ; preds = %332
  br label %334

334:                                              ; preds = %333, %323
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  %337 = load ptr, ptr %12, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %337, i32 0, i32 3
  %339 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %338, i32 0, i32 0
  store i32 0, ptr %339, align 8, !tbaa !61
  %340 = load ptr, ptr %12, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %340, i32 0, i32 3
  %342 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %341, i32 0, i32 2
  store i32 14, ptr %342, align 8, !tbaa !62
  %343 = load ptr, ptr %12, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %343, i32 0, i32 3
  %345 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %344, i32 0, i32 15
  store i8 1, ptr %345, align 1, !tbaa !63
  %346 = load ptr, ptr %12, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %346, i32 0, i32 3
  %348 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %347, i32 0, i32 16
  store i8 1, ptr %348, align 2, !tbaa !64
  %349 = load ptr, ptr %12, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %349, i32 0, i32 3
  %351 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %350, i32 0, i32 6
  store i32 31, ptr %351, align 8, !tbaa !65
  %352 = load ptr, ptr %12, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %352, i32 0, i32 3
  %354 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %353, i32 0, i32 8
  store i32 8, ptr %354, align 8, !tbaa !66
  br label %355

355:                                              ; preds = %336
  %356 = call zeroext i8 @DebugPrintEnabled()
  %357 = icmp ne i8 %356, 0
  br i1 %357, label %358, label %366

358:                                              ; preds = %355
  br label %359

359:                                              ; preds = %358
  %360 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %361 = icmp ne i8 %360, 0
  br i1 %361, label %362, label %363

362:                                              ; preds = %359
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.6)
  br label %363

363:                                              ; preds = %362, %359
  br label %364

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364
  br label %366

366:                                              ; preds = %365, %355
  br label %367

367:                                              ; preds = %366
  br label %368

368:                                              ; preds = %367
  %369 = load ptr, ptr %12, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %369, i32 0, i32 21
  %371 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef %370)
  store i64 %371, ptr %8, align 8, !tbaa !14
  %372 = load i64, ptr %8, align 8, !tbaa !14
  %373 = icmp slt i64 %372, 0
  br i1 %373, label %374, label %375

374:                                              ; preds = %368
  br label %1060

375:                                              ; preds = %368
  %376 = load ptr, ptr %12, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %376, i32 0, i32 22
  %378 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef %377)
  store i64 %378, ptr %8, align 8, !tbaa !14
  %379 = load i64, ptr %8, align 8, !tbaa !14
  %380 = icmp slt i64 %379, 0
  br i1 %380, label %381, label %382

381:                                              ; preds = %375
  br label %1060

382:                                              ; preds = %375
  %383 = load ptr, ptr %12, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %383, i32 0, i32 23
  %385 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef %384)
  store i64 %385, ptr %8, align 8, !tbaa !14
  %386 = load i64, ptr %8, align 8, !tbaa !14
  %387 = icmp slt i64 %386, 0
  br i1 %387, label %388, label %389

388:                                              ; preds = %382
  br label %1060

389:                                              ; preds = %382
  %390 = load ptr, ptr %12, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %390, i32 0, i32 24
  %392 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef %391)
  store i64 %392, ptr %8, align 8, !tbaa !14
  %393 = load i64, ptr %8, align 8, !tbaa !14
  %394 = icmp slt i64 %393, 0
  br i1 %394, label %395, label %396

395:                                              ; preds = %389
  br label %1060

396:                                              ; preds = %389
  %397 = load ptr, ptr %12, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %397, i32 0, i32 22
  %399 = load ptr, ptr %398, align 8, !tbaa !67
  %400 = ptrtoint ptr %399 to i64
  %401 = trunc i64 %400 to i32
  %402 = and i32 %401, 15
  %403 = trunc i32 %402 to i16
  %404 = load ptr, ptr %12, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %404, i32 0, i32 21
  %406 = load ptr, ptr %405, align 8, !tbaa !68
  %407 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %406, i32 0, i32 1
  store i16 %403, ptr %407, align 1, !tbaa !69
  %408 = load ptr, ptr %12, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %408, i32 0, i32 22
  %410 = load ptr, ptr %409, align 8, !tbaa !67
  %411 = ptrtoint ptr %410 to i64
  %412 = trunc i64 %411 to i32
  %413 = lshr i32 %412, 4
  %414 = trunc i32 %413 to i16
  %415 = load ptr, ptr %12, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %415, i32 0, i32 21
  %417 = load ptr, ptr %416, align 8, !tbaa !68
  %418 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %417, i32 0, i32 2
  store i16 %414, ptr %418, align 1, !tbaa !71
  %419 = load ptr, ptr %12, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %419, i32 0, i32 21
  %421 = load ptr, ptr %420, align 8, !tbaa !68
  %422 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %421, i32 0, i32 3
  store i16 1, ptr %422, align 1, !tbaa !72
  %423 = load ptr, ptr %12, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %423, i32 0, i32 21
  %425 = load ptr, ptr %424, align 8, !tbaa !68
  %426 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %425, i32 0, i32 4
  %427 = getelementptr inbounds [8 x %struct.DataBlk], ptr %426, i64 0, i64 0
  %428 = getelementptr inbounds %struct.DataBlk, ptr %427, i32 0, i32 0
  store i8 1, ptr %428, align 1, !tbaa !73
  %429 = load ptr, ptr %12, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %429, i32 0, i32 21
  %431 = load ptr, ptr %430, align 8, !tbaa !68
  %432 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %431, i32 0, i32 4
  %433 = getelementptr inbounds [8 x %struct.DataBlk], ptr %432, i64 0, i64 0
  %434 = getelementptr inbounds %struct.DataBlk, ptr %433, i32 0, i32 1
  store i8 0, ptr %434, align 1, !tbaa !75
  %435 = load ptr, ptr %12, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %435, i32 0, i32 23
  %437 = load ptr, ptr %436, align 8, !tbaa !76
  %438 = ptrtoint ptr %437 to i64
  %439 = trunc i64 %438 to i32
  %440 = and i32 %439, 15
  %441 = trunc i32 %440 to i16
  %442 = load ptr, ptr %12, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %442, i32 0, i32 21
  %444 = load ptr, ptr %443, align 8, !tbaa !68
  %445 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %444, i32 0, i32 4
  %446 = getelementptr inbounds [8 x %struct.DataBlk], ptr %445, i64 0, i64 0
  %447 = getelementptr inbounds %struct.DataBlk, ptr %446, i32 0, i32 3
  store i16 %441, ptr %447, align 1, !tbaa !77
  %448 = load ptr, ptr %12, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %448, i32 0, i32 23
  %450 = load ptr, ptr %449, align 8, !tbaa !76
  %451 = ptrtoint ptr %450 to i64
  %452 = trunc i64 %451 to i32
  %453 = lshr i32 %452, 4
  %454 = trunc i32 %453 to i16
  %455 = load ptr, ptr %12, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %455, i32 0, i32 21
  %457 = load ptr, ptr %456, align 8, !tbaa !68
  %458 = getelementptr inbounds %struct.PXENV_UNDI_TBD_T, ptr %457, i32 0, i32 4
  %459 = getelementptr inbounds [8 x %struct.DataBlk], ptr %458, i64 0, i64 0
  %460 = getelementptr inbounds %struct.DataBlk, ptr %459, i32 0, i32 4
  store i16 %454, ptr %460, align 1, !tbaa !78
  %461 = load ptr, ptr %12, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %461, i32 0, i32 13
  %463 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV_FIFO, ptr %462, i32 0, i32 0
  store i32 0, ptr %463, align 8, !tbaa !79
  %464 = load ptr, ptr %12, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %464, i32 0, i32 13
  %466 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV_FIFO, ptr %465, i32 0, i32 1
  store i32 0, ptr %466, align 4, !tbaa !80
  br label %467

467:                                              ; preds = %396
  %468 = call zeroext i8 @DebugPrintEnabled()
  %469 = icmp ne i8 %468, 0
  br i1 %469, label %470, label %478

470:                                              ; preds = %467
  br label %471

471:                                              ; preds = %470
  %472 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %473 = icmp ne i8 %472, 0
  br i1 %473, label %474, label %475

474:                                              ; preds = %471
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.7)
  br label %475

475:                                              ; preds = %474, %471
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476
  br label %478

478:                                              ; preds = %477, %467
  br label %479

479:                                              ; preds = %478
  br label %480

480:                                              ; preds = %479
  %481 = load ptr, ptr %12, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %481, i32 0, i32 2
  %483 = call i64 @Undi16SimpleNetworkStart(ptr noundef %482)
  store i64 %483, ptr %8, align 8, !tbaa !14
  %484 = load i64, ptr %8, align 8, !tbaa !14
  %485 = icmp slt i64 %484, 0
  br i1 %485, label %486, label %487

486:                                              ; preds = %480
  br label %1060

487:                                              ; preds = %480
  br label %488

488:                                              ; preds = %487
  %489 = call zeroext i8 @DebugPrintEnabled()
  %490 = icmp ne i8 %489, 0
  br i1 %490, label %491, label %499

491:                                              ; preds = %488
  br label %492

492:                                              ; preds = %491
  %493 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %494 = icmp ne i8 %493, 0
  br i1 %494, label %495, label %496

495:                                              ; preds = %492
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.8)
  br label %496

496:                                              ; preds = %495, %492
  br label %497

497:                                              ; preds = %496
  br label %498

498:                                              ; preds = %497
  br label %499

499:                                              ; preds = %498, %488
  br label %500

500:                                              ; preds = %499
  br label %501

501:                                              ; preds = %500
  %502 = load ptr, ptr %12, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %502, i32 0, i32 2
  %504 = call i64 @Undi16SimpleNetworkGetInformation(ptr noundef %503)
  store i64 %504, ptr %8, align 8, !tbaa !14
  %505 = load i64, ptr %8, align 8, !tbaa !14
  %506 = icmp slt i64 %505, 0
  br i1 %506, label %507, label %508

507:                                              ; preds = %501
  br label %1060

508:                                              ; preds = %501
  %509 = call ptr @ZeroMem(ptr noundef %13, i64 noundef 60)
  %510 = getelementptr inbounds %struct.EFI_DEVICE_PATH_PROTOCOL, ptr %13, i32 0, i32 0
  store i8 3, ptr %510, align 1, !tbaa !81
  %511 = getelementptr inbounds %struct.EFI_DEVICE_PATH_PROTOCOL, ptr %13, i32 0, i32 1
  store i8 11, ptr %511, align 1, !tbaa !81
  %512 = call zeroext i16 @SetDevicePathNodeLength(ptr noundef %13, i64 noundef 37)
  %513 = getelementptr inbounds %struct.MAC_ADDR_DEVICE_PATH, ptr %13, i32 0, i32 1
  %514 = load ptr, ptr %12, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %514, i32 0, i32 3
  %516 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %515, i32 0, i32 11
  %517 = call ptr @CopyMem(ptr noundef %513, ptr noundef %516, i64 noundef 32)
  %518 = load ptr, ptr %12, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %518, i32 0, i32 14
  %520 = load ptr, ptr %519, align 8, !tbaa !38
  %521 = call ptr @AppendDevicePathNode(ptr noundef %520, ptr noundef %13)
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %522, i32 0, i32 5
  store ptr %521, ptr %523, align 8, !tbaa !82
  br label %524

524:                                              ; preds = %508
  %525 = call zeroext i8 @DebugPrintEnabled()
  %526 = icmp ne i8 %525, 0
  br i1 %526, label %527, label %535

527:                                              ; preds = %524
  br label %528

528:                                              ; preds = %527
  %529 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %530 = icmp ne i8 %529, 0
  br i1 %530, label %531, label %532

531:                                              ; preds = %528
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.9)
  br label %532

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

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534, %524
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %536
  %538 = load ptr, ptr %12, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %538, i32 0, i32 2
  %540 = call i64 @Undi16SimpleNetworkGetNicType(ptr noundef %539)
  store i64 %540, ptr %8, align 8, !tbaa !14
  %541 = load i64, ptr %8, align 8, !tbaa !14
  %542 = icmp slt i64 %541, 0
  br i1 %542, label %543, label %544

543:                                              ; preds = %537
  br label %1060

544:                                              ; preds = %537
  br label %545

545:                                              ; preds = %544
  %546 = call zeroext i8 @DebugPrintEnabled()
  %547 = icmp ne i8 %546, 0
  br i1 %547, label %548, label %556

548:                                              ; preds = %545
  br label %549

549:                                              ; preds = %548
  %550 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %551 = icmp ne i8 %550, 0
  br i1 %551, label %552, label %553

552:                                              ; preds = %549
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.10)
  br label %553

553:                                              ; preds = %552, %549
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  br label %556

556:                                              ; preds = %555, %545
  br label %557

557:                                              ; preds = %556
  br label %558

558:                                              ; preds = %557
  %559 = load ptr, ptr %12, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %559, i32 0, i32 2
  %561 = call i64 @Undi16SimpleNetworkGetNdisInfo(ptr noundef %560)
  store i64 %561, ptr %8, align 8, !tbaa !14
  %562 = load i64, ptr %8, align 8, !tbaa !14
  %563 = icmp slt i64 %562, 0
  br i1 %563, label %564, label %565

564:                                              ; preds = %558
  br label %1060

565:                                              ; preds = %558
  br label %566

566:                                              ; preds = %565
  %567 = call zeroext i8 @DebugPrintEnabled()
  %568 = icmp ne i8 %567, 0
  br i1 %568, label %569, label %577

569:                                              ; preds = %566
  br label %570

570:                                              ; preds = %569
  %571 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %572 = icmp ne i8 %571, 0
  br i1 %572, label %573, label %574

573:                                              ; preds = %570
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.11)
  br label %574

574:                                              ; preds = %573, %570
  br label %575

575:                                              ; preds = %574
  br label %576

576:                                              ; preds = %575
  br label %577

577:                                              ; preds = %576, %566
  br label %578

578:                                              ; preds = %577
  br label %579

579:                                              ; preds = %578
  %580 = load ptr, ptr %12, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %580, i32 0, i32 2
  %582 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %581, i32 0, i32 2
  %583 = load ptr, ptr %582, align 8, !tbaa !46
  %584 = load ptr, ptr %12, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %584, i32 0, i32 2
  %586 = call i64 %583(ptr noundef %585)
  store i64 %586, ptr %8, align 8, !tbaa !14
  %587 = load i64, ptr %8, align 8, !tbaa !14
  %588 = icmp slt i64 %587, 0
  br i1 %588, label %589, label %590

589:                                              ; preds = %579
  br label %1060

590:                                              ; preds = %579
  br label %591

591:                                              ; preds = %590
  %592 = call zeroext i8 @DebugPrintEnabled()
  %593 = icmp ne i8 %592, 0
  br i1 %593, label %594, label %606

594:                                              ; preds = %591
  br label %595

595:                                              ; preds = %594
  %596 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %597 = icmp ne i8 %596, 0
  br i1 %597, label %598, label %603

598:                                              ; preds = %595
  %599 = load ptr, ptr %12, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %599, i32 0, i32 3
  %601 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %600, i32 0, i32 0
  %602 = load i32, ptr %601, align 8, !tbaa !61
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.12, i32 noundef %602)
  br label %603

603:                                              ; preds = %598, %595
  br label %604

604:                                              ; preds = %603
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605, %591
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %608
  %610 = call zeroext i8 @DebugPrintEnabled()
  %611 = icmp ne i8 %610, 0
  br i1 %611, label %612, label %624

612:                                              ; preds = %609
  br label %613

613:                                              ; preds = %612
  %614 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %615 = icmp ne i8 %614, 0
  br i1 %615, label %616, label %621

616:                                              ; preds = %613
  %617 = load ptr, ptr %12, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %617, i32 0, i32 3
  %619 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %618, i32 0, i32 1
  %620 = load i32, ptr %619, align 4, !tbaa !83
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.13, i32 noundef %620)
  br label %621

621:                                              ; preds = %616, %613
  br label %622

622:                                              ; preds = %621
  br label %623

623:                                              ; preds = %622
  br label %624

624:                                              ; preds = %623, %609
  br label %625

625:                                              ; preds = %624
  br label %626

626:                                              ; preds = %625
  br label %627

627:                                              ; preds = %626
  %628 = call zeroext i8 @DebugPrintEnabled()
  %629 = icmp ne i8 %628, 0
  br i1 %629, label %630, label %643

630:                                              ; preds = %627
  br label %631

631:                                              ; preds = %630
  %632 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %633 = icmp ne i8 %632, 0
  br i1 %633, label %634, label %640

634:                                              ; preds = %631
  %635 = load ptr, ptr %12, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %635, i32 0, i32 3
  %637 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %636, i32 0, i32 15
  %638 = load i8, ptr %637, align 1, !tbaa !63
  %639 = zext i8 %638 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.14, i32 noundef %639)
  br label %640

640:                                              ; preds = %634, %631
  br label %641

641:                                              ; preds = %640
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642, %627
  br label %644

644:                                              ; preds = %643
  br label %645

645:                                              ; preds = %644
  br label %646

646:                                              ; preds = %645
  %647 = call zeroext i8 @DebugPrintEnabled()
  %648 = icmp ne i8 %647, 0
  br i1 %648, label %649, label %662

649:                                              ; preds = %646
  br label %650

650:                                              ; preds = %649
  %651 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %652 = icmp ne i8 %651, 0
  br i1 %652, label %653, label %659

653:                                              ; preds = %650
  %654 = load ptr, ptr %12, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %654, i32 0, i32 3
  %656 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %655, i32 0, i32 16
  %657 = load i8, ptr %656, align 2, !tbaa !64
  %658 = zext i8 %657 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.15, i32 noundef %658)
  br label %659

659:                                              ; preds = %653, %650
  br label %660

660:                                              ; preds = %659
  br label %661

661:                                              ; preds = %660
  br label %662

662:                                              ; preds = %661, %646
  br label %663

663:                                              ; preds = %662
  br label %664

664:                                              ; preds = %663
  br label %665

665:                                              ; preds = %664
  %666 = call zeroext i8 @DebugPrintEnabled()
  %667 = icmp ne i8 %666, 0
  br i1 %667, label %668, label %680

668:                                              ; preds = %665
  br label %669

669:                                              ; preds = %668
  %670 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %671 = icmp ne i8 %670, 0
  br i1 %671, label %672, label %677

672:                                              ; preds = %669
  %673 = load ptr, ptr %12, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %673, i32 0, i32 3
  %675 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %674, i32 0, i32 4
  %676 = load i32, ptr %675, align 8, !tbaa !84
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.16, i32 noundef %676)
  br label %677

677:                                              ; preds = %672, %669
  br label %678

678:                                              ; preds = %677
  br label %679

679:                                              ; preds = %678
  br label %680

680:                                              ; preds = %679, %665
  br label %681

681:                                              ; preds = %680
  br label %682

682:                                              ; preds = %681
  br label %683

683:                                              ; preds = %682
  %684 = call zeroext i8 @DebugPrintEnabled()
  %685 = icmp ne i8 %684, 0
  br i1 %685, label %686, label %698

686:                                              ; preds = %683
  br label %687

687:                                              ; preds = %686
  %688 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %689 = icmp ne i8 %688, 0
  br i1 %689, label %690, label %695

690:                                              ; preds = %687
  %691 = load ptr, ptr %12, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %691, i32 0, i32 3
  %693 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %692, i32 0, i32 5
  %694 = load i32, ptr %693, align 4, !tbaa !85
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.17, i32 noundef %694)
  br label %695

695:                                              ; preds = %690, %687
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697, %683
  br label %699

699:                                              ; preds = %698
  br label %700

700:                                              ; preds = %699
  br label %701

701:                                              ; preds = %700
  %702 = call zeroext i8 @DebugPrintEnabled()
  %703 = icmp ne i8 %702, 0
  br i1 %703, label %704, label %716

704:                                              ; preds = %701
  br label %705

705:                                              ; preds = %704
  %706 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %707 = icmp ne i8 %706, 0
  br i1 %707, label %708, label %713

708:                                              ; preds = %705
  %709 = load ptr, ptr %12, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %709, i32 0, i32 3
  %711 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %710, i32 0, i32 7
  %712 = load i32, ptr %711, align 4, !tbaa !86
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.18, i32 noundef %712)
  br label %713

713:                                              ; preds = %708, %705
  br label %714

714:                                              ; preds = %713
  br label %715

715:                                              ; preds = %714
  br label %716

716:                                              ; preds = %715, %701
  br label %717

717:                                              ; preds = %716
  br label %718

718:                                              ; preds = %717
  br label %719

719:                                              ; preds = %718
  %720 = call zeroext i8 @DebugPrintEnabled()
  %721 = icmp ne i8 %720, 0
  br i1 %721, label %722, label %735

722:                                              ; preds = %719
  br label %723

723:                                              ; preds = %722
  %724 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %725 = icmp ne i8 %724, 0
  br i1 %725, label %726, label %732

726:                                              ; preds = %723
  %727 = load ptr, ptr %12, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %727, i32 0, i32 3
  %729 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %728, i32 0, i32 14
  %730 = load i8, ptr %729, align 8, !tbaa !87
  %731 = zext i8 %730 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.19, i32 noundef %731)
  br label %732

732:                                              ; preds = %726, %723
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734, %719
  br label %736

736:                                              ; preds = %735
  br label %737

737:                                              ; preds = %736
  br label %738

738:                                              ; preds = %737
  %739 = call zeroext i8 @DebugPrintEnabled()
  %740 = icmp ne i8 %739, 0
  br i1 %740, label %741, label %753

741:                                              ; preds = %738
  br label %742

742:                                              ; preds = %741
  %743 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %744 = icmp ne i8 %743, 0
  br i1 %744, label %745, label %750

745:                                              ; preds = %742
  %746 = load ptr, ptr %12, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %746, i32 0, i32 3
  %748 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %747, i32 0, i32 9
  %749 = load i32, ptr %748, align 4, !tbaa !88
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.20, i32 noundef %749)
  br label %750

750:                                              ; preds = %745, %742
  br label %751

751:                                              ; preds = %750
  br label %752

752:                                              ; preds = %751
  br label %753

753:                                              ; preds = %752, %738
  br label %754

754:                                              ; preds = %753
  br label %755

755:                                              ; preds = %754
  store i64 0, ptr %14, align 8, !tbaa !14
  br label %756

756:                                              ; preds = %826, %755
  %757 = load i64, ptr %14, align 8, !tbaa !14
  %758 = load ptr, ptr %12, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %758, i32 0, i32 3
  %760 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %759, i32 0, i32 9
  %761 = load i32, ptr %760, align 4, !tbaa !88
  %762 = zext i32 %761 to i64
  %763 = icmp ult i64 %757, %762
  br i1 %763, label %764, label %829

764:                                              ; preds = %756
  br label %765

765:                                              ; preds = %764
  %766 = call zeroext i8 @DebugPrintEnabled()
  %767 = icmp ne i8 %766, 0
  br i1 %767, label %768, label %777

768:                                              ; preds = %765
  br label %769

769:                                              ; preds = %768
  %770 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %771 = icmp ne i8 %770, 0
  br i1 %771, label %772, label %774

772:                                              ; preds = %769
  %773 = load i64, ptr %14, align 8, !tbaa !14
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.21, i64 noundef %773)
  br label %774

774:                                              ; preds = %772, %769
  br label %775

775:                                              ; preds = %774
  br label %776

776:                                              ; preds = %775
  br label %777

777:                                              ; preds = %776, %765
  br label %778

778:                                              ; preds = %777
  br label %779

779:                                              ; preds = %778
  store i64 0, ptr %15, align 8, !tbaa !14
  br label %780

780:                                              ; preds = %808, %779
  %781 = load i64, ptr %15, align 8, !tbaa !14
  %782 = icmp ult i64 %781, 16
  br i1 %782, label %783, label %811

783:                                              ; preds = %780
  br label %784

784:                                              ; preds = %783
  %785 = call zeroext i8 @DebugPrintEnabled()
  %786 = icmp ne i8 %785, 0
  br i1 %786, label %787, label %805

787:                                              ; preds = %784
  br label %788

788:                                              ; preds = %787
  %789 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %790 = icmp ne i8 %789, 0
  br i1 %790, label %791, label %802

791:                                              ; preds = %788
  %792 = load ptr, ptr %12, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %792, i32 0, i32 3
  %794 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %793, i32 0, i32 10
  %795 = load i64, ptr %14, align 8, !tbaa !14
  %796 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %794, i64 0, i64 %795
  %797 = getelementptr inbounds %struct.EFI_MAC_ADDRESS, ptr %796, i32 0, i32 0
  %798 = load i64, ptr %15, align 8, !tbaa !14
  %799 = getelementptr inbounds [32 x i8], ptr %797, i64 0, i64 %798
  %800 = load i8, ptr %799, align 1, !tbaa !81
  %801 = zext i8 %800 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.22, i32 noundef %801)
  br label %802

802:                                              ; preds = %791, %788
  br label %803

803:                                              ; preds = %802
  br label %804

804:                                              ; preds = %803
  br label %805

805:                                              ; preds = %804, %784
  br label %806

806:                                              ; preds = %805
  br label %807

807:                                              ; preds = %806
  br label %808

808:                                              ; preds = %807
  %809 = load i64, ptr %15, align 8, !tbaa !14
  %810 = add i64 %809, 1
  store i64 %810, ptr %15, align 8, !tbaa !14
  br label %780, !llvm.loop !89

811:                                              ; preds = %780
  br label %812

812:                                              ; preds = %811
  %813 = call zeroext i8 @DebugPrintEnabled()
  %814 = icmp ne i8 %813, 0
  br i1 %814, label %815, label %823

815:                                              ; preds = %812
  br label %816

816:                                              ; preds = %815
  %817 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %818 = icmp ne i8 %817, 0
  br i1 %818, label %819, label %820

819:                                              ; preds = %816
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.23)
  br label %820

820:                                              ; preds = %819, %816
  br label %821

821:                                              ; preds = %820
  br label %822

822:                                              ; preds = %821
  br label %823

823:                                              ; preds = %822, %812
  br label %824

824:                                              ; preds = %823
  br label %825

825:                                              ; preds = %824
  br label %826

826:                                              ; preds = %825
  %827 = load i64, ptr %14, align 8, !tbaa !14
  %828 = add i64 %827, 1
  store i64 %828, ptr %14, align 8, !tbaa !14
  br label %756, !llvm.loop !91

829:                                              ; preds = %756
  br label %830

830:                                              ; preds = %829
  %831 = call zeroext i8 @DebugPrintEnabled()
  %832 = icmp ne i8 %831, 0
  br i1 %832, label %833, label %841

833:                                              ; preds = %830
  br label %834

834:                                              ; preds = %833
  %835 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %836 = icmp ne i8 %835, 0
  br i1 %836, label %837, label %838

837:                                              ; preds = %834
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.24)
  br label %838

838:                                              ; preds = %837, %834
  br label %839

839:                                              ; preds = %838
  br label %840

840:                                              ; preds = %839
  br label %841

841:                                              ; preds = %840, %830
  br label %842

842:                                              ; preds = %841
  br label %843

843:                                              ; preds = %842
  store i64 0, ptr %15, align 8, !tbaa !14
  br label %844

844:                                              ; preds = %870, %843
  %845 = load i64, ptr %15, align 8, !tbaa !14
  %846 = icmp ult i64 %845, 16
  br i1 %846, label %847, label %873

847:                                              ; preds = %844
  br label %848

848:                                              ; preds = %847
  %849 = call zeroext i8 @DebugPrintEnabled()
  %850 = icmp ne i8 %849, 0
  br i1 %850, label %851, label %867

851:                                              ; preds = %848
  br label %852

852:                                              ; preds = %851
  %853 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %854 = icmp ne i8 %853, 0
  br i1 %854, label %855, label %864

855:                                              ; preds = %852
  %856 = load ptr, ptr %12, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %856, i32 0, i32 3
  %858 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %857, i32 0, i32 11
  %859 = getelementptr inbounds %struct.EFI_MAC_ADDRESS, ptr %858, i32 0, i32 0
  %860 = load i64, ptr %15, align 8, !tbaa !14
  %861 = getelementptr inbounds [32 x i8], ptr %859, i64 0, i64 %860
  %862 = load i8, ptr %861, align 1, !tbaa !81
  %863 = zext i8 %862 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.22, i32 noundef %863)
  br label %864

864:                                              ; preds = %855, %852
  br label %865

865:                                              ; preds = %864
  br label %866

866:                                              ; preds = %865
  br label %867

867:                                              ; preds = %866, %848
  br label %868

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  br label %870

870:                                              ; preds = %869
  %871 = load i64, ptr %15, align 8, !tbaa !14
  %872 = add i64 %871, 1
  store i64 %872, ptr %15, align 8, !tbaa !14
  br label %844, !llvm.loop !92

873:                                              ; preds = %844
  br label %874

874:                                              ; preds = %873
  %875 = call zeroext i8 @DebugPrintEnabled()
  %876 = icmp ne i8 %875, 0
  br i1 %876, label %877, label %885

877:                                              ; preds = %874
  br label %878

878:                                              ; preds = %877
  %879 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %880 = icmp ne i8 %879, 0
  br i1 %880, label %881, label %882

881:                                              ; preds = %878
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.23)
  br label %882

882:                                              ; preds = %881, %878
  br label %883

883:                                              ; preds = %882
  br label %884

884:                                              ; preds = %883
  br label %885

885:                                              ; preds = %884, %874
  br label %886

886:                                              ; preds = %885
  br label %887

887:                                              ; preds = %886
  br label %888

888:                                              ; preds = %887
  %889 = call zeroext i8 @DebugPrintEnabled()
  %890 = icmp ne i8 %889, 0
  br i1 %890, label %891, label %899

891:                                              ; preds = %888
  br label %892

892:                                              ; preds = %891
  %893 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %894 = icmp ne i8 %893, 0
  br i1 %894, label %895, label %896

895:                                              ; preds = %892
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.25)
  br label %896

896:                                              ; preds = %895, %892
  br label %897

897:                                              ; preds = %896
  br label %898

898:                                              ; preds = %897
  br label %899

899:                                              ; preds = %898, %888
  br label %900

900:                                              ; preds = %899
  br label %901

901:                                              ; preds = %900
  store i64 0, ptr %15, align 8, !tbaa !14
  br label %902

902:                                              ; preds = %928, %901
  %903 = load i64, ptr %15, align 8, !tbaa !14
  %904 = icmp ult i64 %903, 16
  br i1 %904, label %905, label %931

905:                                              ; preds = %902
  br label %906

906:                                              ; preds = %905
  %907 = call zeroext i8 @DebugPrintEnabled()
  %908 = icmp ne i8 %907, 0
  br i1 %908, label %909, label %925

909:                                              ; preds = %906
  br label %910

910:                                              ; preds = %909
  %911 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %912 = icmp ne i8 %911, 0
  br i1 %912, label %913, label %922

913:                                              ; preds = %910
  %914 = load ptr, ptr %12, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %914, i32 0, i32 3
  %916 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %915, i32 0, i32 12
  %917 = getelementptr inbounds %struct.EFI_MAC_ADDRESS, ptr %916, i32 0, i32 0
  %918 = load i64, ptr %15, align 8, !tbaa !14
  %919 = getelementptr inbounds [32 x i8], ptr %917, i64 0, i64 %918
  %920 = load i8, ptr %919, align 1, !tbaa !81
  %921 = zext i8 %920 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.22, i32 noundef %921)
  br label %922

922:                                              ; preds = %913, %910
  br label %923

923:                                              ; preds = %922
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924, %906
  br label %926

926:                                              ; preds = %925
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %927
  %929 = load i64, ptr %15, align 8, !tbaa !14
  %930 = add i64 %929, 1
  store i64 %930, ptr %15, align 8, !tbaa !14
  br label %902, !llvm.loop !93

931:                                              ; preds = %902
  br label %932

932:                                              ; preds = %931
  %933 = call zeroext i8 @DebugPrintEnabled()
  %934 = icmp ne i8 %933, 0
  br i1 %934, label %935, label %943

935:                                              ; preds = %932
  br label %936

936:                                              ; preds = %935
  %937 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %938 = icmp ne i8 %937, 0
  br i1 %938, label %939, label %940

939:                                              ; preds = %936
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.23)
  br label %940

940:                                              ; preds = %939, %936
  br label %941

941:                                              ; preds = %940
  br label %942

942:                                              ; preds = %941
  br label %943

943:                                              ; preds = %942, %932
  br label %944

944:                                              ; preds = %943
  br label %945

945:                                              ; preds = %944
  br label %946

946:                                              ; preds = %945
  %947 = call zeroext i8 @DebugPrintEnabled()
  %948 = icmp ne i8 %947, 0
  br i1 %948, label %949, label %957

949:                                              ; preds = %946
  br label %950

950:                                              ; preds = %949
  %951 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %952 = icmp ne i8 %951, 0
  br i1 %952, label %953, label %954

953:                                              ; preds = %950
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.26)
  br label %954

954:                                              ; preds = %953, %950
  br label %955

955:                                              ; preds = %954
  br label %956

956:                                              ; preds = %955
  br label %957

957:                                              ; preds = %956, %946
  br label %958

958:                                              ; preds = %957
  br label %959

959:                                              ; preds = %958
  store i64 0, ptr %15, align 8, !tbaa !14
  br label %960

960:                                              ; preds = %986, %959
  %961 = load i64, ptr %15, align 8, !tbaa !14
  %962 = icmp ult i64 %961, 16
  br i1 %962, label %963, label %989

963:                                              ; preds = %960
  br label %964

964:                                              ; preds = %963
  %965 = call zeroext i8 @DebugPrintEnabled()
  %966 = icmp ne i8 %965, 0
  br i1 %966, label %967, label %983

967:                                              ; preds = %964
  br label %968

968:                                              ; preds = %967
  %969 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %970 = icmp ne i8 %969, 0
  br i1 %970, label %971, label %980

971:                                              ; preds = %968
  %972 = load ptr, ptr %12, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %972, i32 0, i32 3
  %974 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_MODE, ptr %973, i32 0, i32 13
  %975 = getelementptr inbounds %struct.EFI_MAC_ADDRESS, ptr %974, i32 0, i32 0
  %976 = load i64, ptr %15, align 8, !tbaa !14
  %977 = getelementptr inbounds [32 x i8], ptr %975, i64 0, i64 %976
  %978 = load i8, ptr %977, align 1, !tbaa !81
  %979 = zext i8 %978 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.22, i32 noundef %979)
  br label %980

980:                                              ; preds = %971, %968
  br label %981

981:                                              ; preds = %980
  br label %982

982:                                              ; preds = %981
  br label %983

983:                                              ; preds = %982, %964
  br label %984

984:                                              ; preds = %983
  br label %985

985:                                              ; preds = %984
  br label %986

986:                                              ; preds = %985
  %987 = load i64, ptr %15, align 8, !tbaa !14
  %988 = add i64 %987, 1
  store i64 %988, ptr %15, align 8, !tbaa !14
  br label %960, !llvm.loop !94

989:                                              ; preds = %960
  br label %990

990:                                              ; preds = %989
  %991 = call zeroext i8 @DebugPrintEnabled()
  %992 = icmp ne i8 %991, 0
  br i1 %992, label %993, label %1001

993:                                              ; preds = %990
  br label %994

994:                                              ; preds = %993
  %995 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %996 = icmp ne i8 %995, 0
  br i1 %996, label %997, label %998

997:                                              ; preds = %994
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.23)
  br label %998

998:                                              ; preds = %997, %994
  br label %999

999:                                              ; preds = %998
  br label %1000

1000:                                             ; preds = %999
  br label %1001

1001:                                             ; preds = %1000, %990
  br label %1002

1002:                                             ; preds = %1001
  br label %1003

1003:                                             ; preds = %1002
  br label %1004

1004:                                             ; preds = %1003
  %1005 = call zeroext i8 @DebugPrintEnabled()
  %1006 = icmp ne i8 %1005, 0
  br i1 %1006, label %1007, label %1015

1007:                                             ; preds = %1004
  br label %1008

1008:                                             ; preds = %1007
  %1009 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %1010 = icmp ne i8 %1009, 0
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %1008
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.27)
  br label %1012

1012:                                             ; preds = %1011, %1008
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

1014:                                             ; preds = %1013
  br label %1015

1015:                                             ; preds = %1014, %1004
  br label %1016

1016:                                             ; preds = %1015
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1018, i32 0, i32 39
  %1020 = load ptr, ptr %1019, align 8, !tbaa !95
  %1021 = load ptr, ptr %12, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1021, i32 0, i32 1
  %1023 = load ptr, ptr %12, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1023, i32 0, i32 2
  %1025 = load ptr, ptr %12, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1025, i32 0, i32 4
  %1027 = load ptr, ptr %12, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1027, i32 0, i32 5
  %1029 = load ptr, ptr %1028, align 8, !tbaa !82
  %1030 = call i64 (ptr, ...) %1020(ptr noundef %1022, ptr noundef @gEfiSimpleNetworkProtocolGuid, ptr noundef %1024, ptr noundef @gEfiNetworkInterfaceIdentifierProtocolGuid, ptr noundef %1026, ptr noundef @gEfiDevicePathProtocolGuid, ptr noundef %1029, ptr noundef null)
  store i64 %1030, ptr %8, align 8, !tbaa !14
  %1031 = load i64, ptr %8, align 8, !tbaa !14
  %1032 = icmp slt i64 %1031, 0
  br i1 %1032, label %1033, label %1034

1033:                                             ; preds = %1017
  br label %1060

1034:                                             ; preds = %1017
  %1035 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1035, i32 0, i32 33
  %1037 = load ptr, ptr %1036, align 8, !tbaa !15
  %1038 = load ptr, ptr %6, align 8, !tbaa !5
  %1039 = load ptr, ptr %5, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct._EFI_DRIVER_BINDING_PROTOCOL, ptr %1039, i32 0, i32 5
  %1041 = load ptr, ptr %1040, align 8, !tbaa !16
  %1042 = load ptr, ptr %12, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1042, i32 0, i32 1
  %1044 = load ptr, ptr %1043, align 8, !tbaa !96
  %1045 = call i64 %1037(ptr noundef %1038, ptr noundef @gEfiPciIoProtocolGuid, ptr noundef %11, ptr noundef %1041, ptr noundef %1044, i32 noundef 8)
  store i64 %1045, ptr %8, align 8, !tbaa !14
  br label %1046

1046:                                             ; preds = %1034
  %1047 = call zeroext i8 @DebugPrintEnabled()
  %1048 = icmp ne i8 %1047, 0
  br i1 %1048, label %1049, label %1057

1049:                                             ; preds = %1046
  br label %1050

1050:                                             ; preds = %1049
  %1051 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1)
  %1052 = icmp ne i8 %1051, 0
  br i1 %1052, label %1053, label %1054

1053:                                             ; preds = %1050
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1, ptr noundef @.str.28)
  br label %1054

1054:                                             ; preds = %1053, %1050
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

1056:                                             ; preds = %1055
  br label %1057

1057:                                             ; preds = %1056, %1046
  br label %1058

1058:                                             ; preds = %1057
  br label %1059

1059:                                             ; preds = %1058
  br label %1060

1060:                                             ; preds = %1059, %1033, %589, %564, %543, %507, %486, %395, %388, %381, %374, %321, %299, %274, %185, %149, %105, %97, %87, %77, %56, %43
  %1061 = load i64, ptr %8, align 8, !tbaa !14
  %1062 = icmp slt i64 %1061, 0
  br i1 %1062, label %1063, label %1233

1063:                                             ; preds = %1060
  %1064 = load ptr, ptr %12, align 8, !tbaa !5
  %1065 = icmp ne ptr %1064, null
  br i1 %1065, label %1066, label %1189

1066:                                             ; preds = %1063
  %1067 = load ptr, ptr %12, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1067, i32 0, i32 2
  %1069 = call i64 @Undi16SimpleNetworkShutdown(ptr noundef %1068)
  %1070 = load ptr, ptr %12, align 8, !tbaa !5
  %1071 = call i64 @Undi16SimpleNetworkCleanupUndi(ptr noundef %1070)
  %1072 = load ptr, ptr %12, align 8, !tbaa !5
  %1073 = call i64 @Undi16SimpleNetworkStopUndi(ptr noundef %1072)
  %1074 = load ptr, ptr %12, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1074, i32 0, i32 8
  %1076 = load i8, ptr %1075, align 8, !tbaa !42
  %1077 = icmp ne i8 %1076, 0
  br i1 %1077, label %1078, label %1081

1078:                                             ; preds = %1066
  %1079 = load ptr, ptr %12, align 8, !tbaa !5
  %1080 = call i64 @Undi16SimpleNetworkUnloadUndi(ptr noundef %1079)
  br label %1081

1081:                                             ; preds = %1078, %1066
  %1082 = load ptr, ptr %12, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1082, i32 0, i32 2
  %1084 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %1083, i32 0, i32 14
  %1085 = load ptr, ptr %1084, align 8, !tbaa !97
  %1086 = icmp ne ptr %1085, null
  br i1 %1086, label %1087, label %1096

1087:                                             ; preds = %1081
  %1088 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1088, i32 0, i32 12
  %1090 = load ptr, ptr %1089, align 8, !tbaa !98
  %1091 = load ptr, ptr %12, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1091, i32 0, i32 2
  %1093 = getelementptr inbounds %struct._EFI_SIMPLE_NETWORK_PROTOCOL, ptr %1092, i32 0, i32 14
  %1094 = load ptr, ptr %1093, align 8, !tbaa !97
  %1095 = call i64 %1090(ptr noundef %1094)
  br label %1096

1096:                                             ; preds = %1087, %1081
  %1097 = load ptr, ptr %12, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1097, i32 0, i32 10
  %1099 = load ptr, ptr %1098, align 8, !tbaa !99
  %1100 = icmp ne ptr %1099, null
  br i1 %1100, label %1101, label %1109

1101:                                             ; preds = %1096
  %1102 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1102, i32 0, i32 12
  %1104 = load ptr, ptr %1103, align 8, !tbaa !98
  %1105 = load ptr, ptr %12, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1105, i32 0, i32 10
  %1107 = load ptr, ptr %1106, align 8, !tbaa !99
  %1108 = call i64 %1104(ptr noundef %1107)
  br label %1109

1109:                                             ; preds = %1101, %1096
  %1110 = load ptr, ptr %12, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1110, i32 0, i32 9
  %1112 = load ptr, ptr %1111, align 8, !tbaa !100
  %1113 = icmp ne ptr %1112, null
  br i1 %1113, label %1114, label %1122

1114:                                             ; preds = %1109
  %1115 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1115, i32 0, i32 12
  %1117 = load ptr, ptr %1116, align 8, !tbaa !98
  %1118 = load ptr, ptr %12, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1118, i32 0, i32 9
  %1120 = load ptr, ptr %1119, align 8, !tbaa !100
  %1121 = call i64 %1117(ptr noundef %1120)
  br label %1122

1122:                                             ; preds = %1114, %1109
  %1123 = load ptr, ptr %12, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1123, i32 0, i32 21
  %1125 = load ptr, ptr %1124, align 8, !tbaa !68
  %1126 = icmp ne ptr %1125, null
  br i1 %1126, label %1127, label %1136

1127:                                             ; preds = %1122
  %1128 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1128, i32 0, i32 4
  %1130 = load ptr, ptr %1129, align 8, !tbaa !101
  %1131 = load ptr, ptr %12, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1131, i32 0, i32 21
  %1133 = load ptr, ptr %1132, align 8, !tbaa !68
  %1134 = ptrtoint ptr %1133 to i64
  %1135 = call i64 %1130(i64 noundef %1134, i64 noundef 1)
  br label %1136

1136:                                             ; preds = %1127, %1122
  %1137 = load ptr, ptr %12, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1137, i32 0, i32 22
  %1139 = load ptr, ptr %1138, align 8, !tbaa !67
  %1140 = icmp ne ptr %1139, null
  br i1 %1140, label %1141, label %1150

1141:                                             ; preds = %1136
  %1142 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1142, i32 0, i32 4
  %1144 = load ptr, ptr %1143, align 8, !tbaa !101
  %1145 = load ptr, ptr %12, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1145, i32 0, i32 22
  %1147 = load ptr, ptr %1146, align 8, !tbaa !67
  %1148 = ptrtoint ptr %1147 to i64
  %1149 = call i64 %1144(i64 noundef %1148, i64 noundef 1)
  br label %1150

1150:                                             ; preds = %1141, %1136
  %1151 = load ptr, ptr %12, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1151, i32 0, i32 23
  %1153 = load ptr, ptr %1152, align 8, !tbaa !76
  %1154 = icmp ne ptr %1153, null
  br i1 %1154, label %1155, label %1164

1155:                                             ; preds = %1150
  %1156 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1156, i32 0, i32 4
  %1158 = load ptr, ptr %1157, align 8, !tbaa !101
  %1159 = load ptr, ptr %12, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1159, i32 0, i32 23
  %1161 = load ptr, ptr %1160, align 8, !tbaa !76
  %1162 = ptrtoint ptr %1161 to i64
  %1163 = call i64 %1158(i64 noundef %1162, i64 noundef 1)
  br label %1164

1164:                                             ; preds = %1155, %1150
  %1165 = load ptr, ptr %12, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1165, i32 0, i32 24
  %1167 = load ptr, ptr %1166, align 8, !tbaa !102
  %1168 = icmp ne ptr %1167, null
  br i1 %1168, label %1169, label %1178

1169:                                             ; preds = %1164
  %1170 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1170, i32 0, i32 4
  %1172 = load ptr, ptr %1171, align 8, !tbaa !101
  %1173 = load ptr, ptr %12, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1173, i32 0, i32 24
  %1175 = load ptr, ptr %1174, align 8, !tbaa !102
  %1176 = ptrtoint ptr %1175 to i64
  %1177 = call i64 %1172(i64 noundef %1176, i64 noundef 1)
  br label %1178

1178:                                             ; preds = %1169, %1164
  %1179 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1179, i32 0, i32 7
  %1181 = load ptr, ptr %1180, align 8, !tbaa !103
  %1182 = load ptr, ptr %12, align 8, !tbaa !5
  %1183 = call i64 %1181(ptr noundef %1182)
  %1184 = load i8, ptr @mCachedInt1A, align 1, !tbaa !81
  %1185 = icmp ne i8 %1184, 0
  br i1 %1185, label %1186, label %1188

1186:                                             ; preds = %1178
  %1187 = call i64 @RestoreCachedVectorAddress(i8 noundef zeroext 26)
  store i8 0, ptr @mCachedInt1A, align 1, !tbaa !81
  br label %1188

1188:                                             ; preds = %1186, %1178
  br label %1189

1189:                                             ; preds = %1188, %1063
  %1190 = load ptr, ptr %11, align 8, !tbaa !5
  %1191 = icmp ne ptr %1190, null
  br i1 %1191, label %1192, label %1210

1192:                                             ; preds = %1189
  %1193 = load ptr, ptr %11, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct._EFI_PCI_IO_PROTOCOL, ptr %1193, i32 0, i32 12
  %1195 = load ptr, ptr %1194, align 8, !tbaa !18
  %1196 = load ptr, ptr %11, align 8, !tbaa !5
  %1197 = call i64 %1195(ptr noundef %1196, i32 noundef 4, i64 noundef 0, ptr noundef %21)
  store i64 %1197, ptr %8, align 8, !tbaa !14
  %1198 = load i64, ptr %8, align 8, !tbaa !14
  %1199 = icmp slt i64 %1198, 0
  br i1 %1199, label %1209, label %1200

1200:                                             ; preds = %1192
  %1201 = load i64, ptr %21, align 8, !tbaa !14
  %1202 = and i64 %1201, 1792
  store i64 %1202, ptr %21, align 8, !tbaa !14
  %1203 = load ptr, ptr %11, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct._EFI_PCI_IO_PROTOCOL, ptr %1203, i32 0, i32 12
  %1205 = load ptr, ptr %1204, align 8, !tbaa !18
  %1206 = load ptr, ptr %11, align 8, !tbaa !5
  %1207 = load i64, ptr %21, align 8, !tbaa !14
  %1208 = call i64 %1205(ptr noundef %1206, i32 noundef 3, i64 noundef %1207, ptr noundef null)
  store i64 %1208, ptr %8, align 8, !tbaa !14
  br label %1209

1209:                                             ; preds = %1200, %1192
  br label %1210

1210:                                             ; preds = %1209, %1189
  %1211 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1211, i32 0, i32 34
  %1213 = load ptr, ptr %1212, align 8, !tbaa !104
  %1214 = load ptr, ptr %6, align 8, !tbaa !5
  %1215 = load ptr, ptr %5, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct._EFI_DRIVER_BINDING_PROTOCOL, ptr %1215, i32 0, i32 5
  %1217 = load ptr, ptr %1216, align 8, !tbaa !16
  %1218 = load ptr, ptr %6, align 8, !tbaa !5
  %1219 = call i64 %1213(ptr noundef %1214, ptr noundef @gEfiPciIoProtocolGuid, ptr noundef %1217, ptr noundef %1218)
  %1220 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %1220, i32 0, i32 34
  %1222 = load ptr, ptr %1221, align 8, !tbaa !104
  %1223 = load ptr, ptr %6, align 8, !tbaa !5
  %1224 = load ptr, ptr %5, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct._EFI_DRIVER_BINDING_PROTOCOL, ptr %1224, i32 0, i32 5
  %1226 = load ptr, ptr %1225, align 8, !tbaa !16
  %1227 = load ptr, ptr %6, align 8, !tbaa !5
  %1228 = call i64 %1222(ptr noundef %1223, ptr noundef @gEfiDevicePathProtocolGuid, ptr noundef %1226, ptr noundef %1227)
  %1229 = load i64, ptr %8, align 8, !tbaa !14
  %1230 = icmp ne i64 %1229, -9223372036854775799
  br i1 %1230, label %1231, label %1232

1231:                                             ; preds = %1210
  store i64 -9223372036854775801, ptr %8, align 8, !tbaa !14
  br label %1232

1232:                                             ; preds = %1231, %1210
  br label %1233

1233:                                             ; preds = %1232, %1060
  %1234 = load i64, ptr %8, align 8, !tbaa !14
  store i64 %1234, ptr %4, align 8
  store i32 1, ptr %22, align 4
  br label %1235

1235:                                             ; preds = %1233, %29
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 60, 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 8, 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
  %1236 = load i64, ptr %4, align 8
  ret i64 %1236
}

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkLoadUndi(ptr noundef) #0

declare zeroext i8 @DebugPrintEnabled() #2

declare zeroext i8 @DebugPrintLevelEnabled(i64 noundef) #2

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStartUndi(ptr noundef, i16 noundef zeroext) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStart(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStop(ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkReset(ptr noundef, i8 noundef zeroext) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkShutdown(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkReceiveFilters(ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i64 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStationAddress(ptr noundef, i8 noundef zeroext, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStatistics(ptr noundef, i8 noundef zeroext, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkMCastIpToMac(ptr noundef, i8 noundef zeroext, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkNvData(ptr noundef, i8 noundef zeroext, i64 noundef, i64 noundef, ptr noundef) #0

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @Undi16SimpleNetworkWaitForPacket(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @Undi16SimpleNetworkEvent(ptr noundef, ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkGetInformation(ptr noundef) #0

declare zeroext i16 @SetDevicePathNodeLength(ptr noundef, i64 noundef) #2

declare ptr @AppendDevicePathNode(ptr noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkGetNicType(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkGetNdisInfo(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkCleanupUndi(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStopUndi(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkUnloadUndi(ptr noundef) #0

declare i64 @RestoreCachedVectorAddress(i8 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 320}
!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 = !{!12, !12, i64 0}
!15 = !{!10, !6, i64 280}
!16 = !{!17, !6, i64 40}
!17 = !{!"_EFI_DRIVER_BINDING_PROTOCOL", !6, i64 0, !6, i64 8, !6, i64 16, !13, i64 24, !6, i64 32, !6, i64 40}
!18 = !{!19, !6, i64 120}
!19 = !{!"_EFI_PCI_IO_PROTOCOL", !6, i64 0, !6, i64 8, !20, i64 16, !20, i64 32, !20, i64 48, !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, !12, i64 144, !6, i64 152}
!20 = !{!"", !6, i64 0, !6, i64 8}
!21 = !{!22, !6, i64 16}
!22 = !{!"_EFI_LEGACY_BIOS_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}
!23 = !{!22, !6, i64 24}
!24 = !{!10, !6, i64 64}
!25 = !{!26, !12, i64 0}
!26 = !{!"", !12, i64 0, !6, i64 8, !27, i64 16, !28, i64 144, !30, i64 800, !6, i64 840, !6, i64 848, !6, i64 856, !7, i64 864, !6, i64 872, !6, i64 880, !31, i64 888, !31, i64 890, !32, i64 896, !6, i64 1416, !6, i64 1424, !33, i64 1432, !34, i64 1482, !35, i64 1499, !7, i64 1541, !36, i64 1542, !6, i64 1560, !6, i64 1568, !6, i64 1576, !6, i64 1584, !7, i64 1592, !12, i64 1600, !12, i64 1608, !12, i64 1616, !12, i64 1624, !6, i64 1632, !6, i64 1640, !6, i64 1648, !6, i64 1656}
!27 = !{!"_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}
!28 = !{!"", !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, !29, i64 552, !29, i64 584, !29, i64 616, !7, i64 648, !7, i64 649, !7, i64 650, !7, i64 651, !7, i64 652}
!29 = !{!"", !7, i64 0}
!30 = !{!"_EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL", !12, i64 0, !12, i64 8, !12, i64 16, !13, i64 24, !7, i64 28, !7, i64 32, !7, i64 33, !7, i64 34, !7, i64 35, !31, i64 36}
!31 = !{!"short", !7, i64 0}
!32 = !{!"", !13, i64 0, !13, i64 4, !7, i64 8}
!33 = !{!"", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !31, i64 8, !31, i64 10, !7, i64 12, !7, i64 28, !31, i64 44, !31, i64 46, !31, i64 48}
!34 = !{!"", !31, i64 0, !7, i64 2, !7, i64 3}
!35 = !{!"", !31, i64 0, !7, i64 2, !13, i64 18, !13, i64 22, !7, i64 26}
!36 = !{!"", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !31, i64 8, !31, i64 10, !31, i64 12, !7, i64 14, !7, i64 15}
!37 = !{!26, !6, i64 856}
!38 = !{!26, !6, i64 1416}
!39 = !{!26, !6, i64 848}
!40 = !{!26, !12, i64 800}
!41 = !{!26, !7, i64 832}
!42 = !{!26, !7, i64 864}
!43 = !{!19, !6, i64 112}
!44 = !{!26, !12, i64 16}
!45 = !{!26, !6, i64 24}
!46 = !{!26, !6, i64 32}
!47 = !{!26, !6, i64 40}
!48 = !{!26, !6, i64 48}
!49 = !{!26, !6, i64 56}
!50 = !{!26, !6, i64 64}
!51 = !{!26, !6, i64 72}
!52 = !{!26, !6, i64 80}
!53 = !{!26, !6, i64 88}
!54 = !{!26, !6, i64 96}
!55 = !{!26, !6, i64 104}
!56 = !{!26, !6, i64 112}
!57 = !{!26, !6, i64 120}
!58 = !{!26, !6, i64 136}
!59 = !{!10, !6, i64 80}
!60 = !{!10, !6, i64 368}
!61 = !{!26, !13, i64 144}
!62 = !{!26, !13, i64 152}
!63 = !{!26, !7, i64 793}
!64 = !{!26, !7, i64 794}
!65 = !{!26, !13, i64 168}
!66 = !{!26, !13, i64 176}
!67 = !{!26, !6, i64 1568}
!68 = !{!26, !6, i64 1560}
!69 = !{!70, !31, i64 2}
!70 = !{!"", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !7, i64 8}
!71 = !{!70, !31, i64 4}
!72 = !{!70, !31, i64 6}
!73 = !{!74, !7, i64 0}
!74 = !{!"DataBlk", !7, i64 0, !7, i64 1, !31, i64 2, !31, i64 4, !31, i64 6}
!75 = !{!74, !7, i64 1}
!76 = !{!26, !6, i64 1576}
!77 = !{!74, !31, i64 4}
!78 = !{!74, !31, i64 6}
!79 = !{!26, !13, i64 896}
!80 = !{!26, !13, i64 900}
!81 = !{!7, !7, i64 0}
!82 = !{!26, !6, i64 840}
!83 = !{!26, !13, i64 148}
!84 = !{!26, !13, i64 160}
!85 = !{!26, !13, i64 164}
!86 = !{!26, !13, i64 172}
!87 = !{!26, !7, i64 792}
!88 = !{!26, !13, i64 180}
!89 = distinct !{!89, !90}
!90 = !{!"llvm.loop.mustprogress"}
!91 = distinct !{!91, !90}
!92 = distinct !{!92, !90}
!93 = distinct !{!93, !90}
!94 = distinct !{!94, !90}
!95 = !{!10, !6, i64 328}
!96 = !{!26, !6, i64 8}
!97 = !{!26, !6, i64 128}
!98 = !{!10, !6, i64 112}
!99 = !{!26, !6, i64 880}
!100 = !{!26, !6, i64 872}
!101 = !{!10, !6, i64 48}
!102 = !{!26, !6, i64 1584}
!103 = !{!10, !6, i64 72}
!104 = !{!10, !6, i64 288}


; 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.GUID = type { i32, i16, i16, [8 x i8] }
%union.EFI_DEV_PATH = type <{ %struct.INFINIBAND_DEVICE_PATH, [12 x i8] }>
%struct.INFINIBAND_DEVICE_PATH = type { %struct.EFI_DEVICE_PATH_PROTOCOL, i32, [16 x i8], i64, i64, i64 }
%struct.EFI_DEVICE_PATH_PROTOCOL = type { i8, i8, [2 x i8] }
%struct.EFI_MAC_ADDRESS = type { [32 x i8] }

@mCachedInt1A = external dso_local local_unnamed_addr global i8, align 1
@gBS = external local_unnamed_addr global ptr, align 8
@gEfiLegacyBiosProtocolGuid = external global %struct.GUID, align 4
@gEfiDevicePathProtocolGuid = external global %struct.GUID, align 4
@gEfiPciIoProtocolGuid = external global %struct.GUID, align 4
@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [46 x i8], align 1
@gEfiEventExitBootServicesGuid = external global %struct.GUID, align 4
@.str.5 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [50 x i8], align 1
@gEfiSimpleNetworkProtocolGuid = external global %struct.GUID, align 4
@gEfiNetworkInterfaceIdentifierProtocolGuid = external global %struct.GUID, align 4
@.str.28 = external hidden unnamed_addr constant [29 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i64 @BiosSnp16DriverBindingStart(ptr nocapture noundef readonly %0, ptr noundef %1, ptr nocapture noundef readnone %2) local_unnamed_addr #0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %union.EFI_DEV_PATH, align 1
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #3
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %8) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #3
  store ptr null, ptr %7, align 8, !tbaa !5
  store ptr null, ptr %6, align 8, !tbaa !5
  %15 = load ptr, ptr @gBS, align 8, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %15, i64 320
  %17 = load ptr, ptr %16, align 8, !tbaa !9
  %18 = call i64 %17(ptr noundef nonnull @gEfiLegacyBiosProtocolGuid, ptr noundef null, ptr noundef nonnull %4) #3
  %19 = icmp slt i64 %18, 0
  br i1 %19, label %1157, label %20

20:                                               ; preds = %3
  %21 = load ptr, ptr @gBS, align 8, !tbaa !5
  %22 = getelementptr inbounds i8, ptr %21, i64 280
  %23 = load ptr, ptr %22, align 8, !tbaa !14
  %24 = getelementptr inbounds i8, ptr %0, i64 40
  %25 = load ptr, ptr %24, align 8, !tbaa !15
  %26 = call i64 %23(ptr noundef %1, ptr noundef nonnull @gEfiDevicePathProtocolGuid, ptr noundef nonnull %5, ptr noundef %25, ptr noundef %1, i32 noundef 16) #3
  %27 = icmp slt i64 %26, 0
  br i1 %27, label %.thread186, label %28

28:                                               ; preds = %20
  %29 = load ptr, ptr @gBS, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %29, i64 280
  %31 = load ptr, ptr %30, align 8, !tbaa !14
  %32 = load ptr, ptr %24, align 8, !tbaa !15
  %33 = call i64 %31(ptr noundef %1, ptr noundef nonnull @gEfiPciIoProtocolGuid, ptr noundef nonnull %6, ptr noundef %32, ptr noundef %1, i32 noundef 16) #3
  %34 = icmp slt i64 %33, 0
  br i1 %34, label %.thread186, label %35

35:                                               ; preds = %28
  %36 = load ptr, ptr %6, align 8, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %36, i64 120
  %38 = load ptr, ptr %37, align 8, !tbaa !17
  %39 = call i64 %38(ptr noundef %36, i32 noundef 4, i64 noundef 0, ptr noundef nonnull %14) #3
  %40 = icmp slt i64 %39, 0
  br i1 %40, label %.thread186, label %41

41:                                               ; preds = %35
  %42 = load i64, ptr %14, align 8, !tbaa !20
  %43 = and i64 %42, 1792
  store i64 %43, ptr %14, align 8, !tbaa !20
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %44, i64 120
  %46 = load ptr, ptr %45, align 8, !tbaa !17
  %47 = call i64 %46(ptr noundef %44, i32 noundef 2, i64 noundef %43, ptr noundef null) #3
  %48 = icmp slt i64 %47, 0
  br i1 %48, label %.thread186, label %49

49:                                               ; preds = %41
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds i8, ptr %50, i64 16
  %52 = load ptr, ptr %51, align 8, !tbaa !21
  %53 = call i64 %52(ptr noundef %50, ptr noundef %1, ptr noundef null, ptr noundef null, ptr noundef nonnull %13) #3
  %54 = icmp slt i64 %53, 0
  br i1 %54, label %.thread186, label %55

55:                                               ; preds = %49
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds i8, ptr %56, i64 24
  %58 = load ptr, ptr %57, align 8, !tbaa !23
  %59 = call i64 %58(ptr noundef %56, ptr noundef %1, ptr noundef null, ptr noundef nonnull %13, ptr noundef null, ptr noundef null, ptr noundef null, ptr noundef null) #3
  %60 = icmp slt i64 %59, 0
  br i1 %60, label %.thread186, label %61

61:                                               ; preds = %55
  %62 = load ptr, ptr @gBS, align 8, !tbaa !5
  %63 = getelementptr inbounds i8, ptr %62, i64 64
  %64 = load ptr, ptr %63, align 8, !tbaa !24
  %65 = call i64 %64(i32 noundef 4, i64 noundef 1664, ptr noundef nonnull %7) #3
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %.thread186, label %67

67:                                               ; preds = %61
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = call ptr @ZeroMem(ptr noundef %68, i64 noundef 1664) #3
  %70 = load ptr, ptr %7, align 8, !tbaa !5
  store i64 909209203, ptr %70, align 8, !tbaa !25
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %70, i64 856
  store ptr %71, ptr %72, align 8, !tbaa !37
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = getelementptr inbounds i8, ptr %70, i64 1416
  store ptr %73, ptr %74, align 8, !tbaa !38
  %75 = load ptr, ptr %6, align 8, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %70, i64 848
  store ptr %75, ptr %76, align 8, !tbaa !39
  %77 = getelementptr inbounds i8, ptr %70, i64 800
  store i64 131072, ptr %77, align 8, !tbaa !40
  %78 = getelementptr inbounds i8, ptr %70, i64 832
  store i8 1, ptr %78, align 8, !tbaa !41
  %79 = getelementptr inbounds i8, ptr %70, i64 828
  %80 = call ptr @CopyMem(ptr noundef nonnull %79, ptr noundef nonnull @.str, i64 noundef 4) #3
  %81 = load ptr, ptr %7, align 8, !tbaa !5
  %82 = call i64 @Undi16SimpleNetworkLoadUndi(ptr noundef %81)
  %83 = icmp slt i64 %82, 0
  br i1 %83, label %84, label %89

84:                                               ; preds = %67
  %85 = call zeroext i8 @DebugPrintEnabled() #3
  %.not171 = icmp eq i8 %85, 0
  br i1 %.not171, label %.thread186, label %86

86:                                               ; preds = %84
  %87 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not172 = icmp eq i8 %87, 0
  br i1 %.not172, label %.thread186, label %88

88:                                               ; preds = %86
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.1, i64 noundef %82) #3
  br label %.thread186

89:                                               ; preds = %67
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = getelementptr inbounds i8, ptr %90, i64 864
  store i8 1, ptr %91, align 8, !tbaa !42
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  %93 = getelementptr inbounds i8, ptr %92, i64 112
  %94 = load ptr, ptr %93, align 8, !tbaa !43
  %95 = call i64 %94(ptr noundef %92, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) #3
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = load i64, ptr %10, align 8, !tbaa !20
  %98 = shl i64 %97, 8
  %99 = load i64, ptr %11, align 8, !tbaa !20
  %100 = shl i64 %99, 3
  %101 = or i64 %100, %98
  %102 = load i64, ptr %12, align 8, !tbaa !20
  %103 = or i64 %101, %102
  %104 = trunc i64 %103 to i16
  %105 = call i64 @Undi16SimpleNetworkStartUndi(ptr noundef %96, i16 noundef zeroext %104)
  %106 = icmp slt i64 %105, 0
  %107 = call zeroext i8 @DebugPrintEnabled() #3
  %.not169 = icmp eq i8 %107, 0
  br i1 %106, label %108, label %112

108:                                              ; preds = %89
  br i1 %.not169, label %.thread186, label %109

109:                                              ; preds = %108
  %110 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not170 = icmp eq i8 %110, 0
  br i1 %.not170, label %.thread186, label %111

111:                                              ; preds = %109
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.2, i64 noundef %105) #3
  br label %.thread186

112:                                              ; preds = %89
  br i1 %.not169, label %116, label %113

113:                                              ; preds = %112
  %114 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not102 = icmp eq i8 %114, 0
  br i1 %.not102, label %116, label %115

115:                                              ; preds = %113
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.3) #3
  br label %116

116:                                              ; preds = %113, %115, %112
  %117 = load ptr, ptr %7, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  store i64 65536, ptr %118, align 8, !tbaa !44
  %119 = getelementptr inbounds i8, ptr %117, i64 24
  store ptr @Undi16SimpleNetworkStart, ptr %119, align 8, !tbaa !45
  %120 = getelementptr inbounds i8, ptr %117, i64 32
  store ptr @Undi16SimpleNetworkStop, ptr %120, align 8, !tbaa !46
  %121 = getelementptr inbounds i8, ptr %117, i64 40
  store ptr @Undi16SimpleNetworkInitialize, ptr %121, align 8, !tbaa !47
  %122 = getelementptr inbounds i8, ptr %117, i64 48
  store ptr @Undi16SimpleNetworkReset, ptr %122, align 8, !tbaa !48
  %123 = getelementptr inbounds i8, ptr %117, i64 56
  store ptr @Undi16SimpleNetworkShutdown, ptr %123, align 8, !tbaa !49
  %124 = getelementptr inbounds i8, ptr %117, i64 64
  store ptr @Undi16SimpleNetworkReceiveFilters, ptr %124, align 8, !tbaa !50
  %125 = getelementptr inbounds i8, ptr %117, i64 72
  store ptr @Undi16SimpleNetworkStationAddress, ptr %125, align 8, !tbaa !51
  %126 = getelementptr inbounds i8, ptr %117, i64 80
  store ptr @Undi16SimpleNetworkStatistics, ptr %126, align 8, !tbaa !52
  %127 = getelementptr inbounds i8, ptr %117, i64 88
  store ptr @Undi16SimpleNetworkMCastIpToMac, ptr %127, align 8, !tbaa !53
  %128 = getelementptr inbounds i8, ptr %117, i64 96
  store ptr @Undi16SimpleNetworkNvData, ptr %128, align 8, !tbaa !54
  %129 = getelementptr inbounds i8, ptr %117, i64 104
  store ptr @Undi16SimpleNetworkGetStatus, ptr %129, align 8, !tbaa !55
  %130 = getelementptr inbounds i8, ptr %117, i64 112
  store ptr @Undi16SimpleNetworkTransmit, ptr %130, align 8, !tbaa !56
  %131 = getelementptr inbounds i8, ptr %117, i64 120
  store ptr @Undi16SimpleNetworkReceive, ptr %131, align 8, !tbaa !57
  %132 = getelementptr inbounds i8, ptr %117, i64 144
  %133 = getelementptr inbounds i8, ptr %117, i64 136
  store ptr %132, ptr %133, align 8, !tbaa !58
  %134 = load ptr, ptr @gBS, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %134, i64 80
  %136 = load ptr, ptr %135, align 8, !tbaa !59
  %137 = getelementptr inbounds i8, ptr %117, i64 128
  %138 = call i64 %136(i32 noundef 256, i64 noundef 16, ptr noundef nonnull @Undi16SimpleNetworkWaitForPacket, ptr noundef nonnull %118, ptr noundef nonnull %137) #3
  %139 = icmp slt i64 %138, 0
  br i1 %139, label %140, label %145

140:                                              ; preds = %116
  %141 = call zeroext i8 @DebugPrintEnabled() #3
  %.not167 = icmp eq i8 %141, 0
  br i1 %.not167, label %.thread186, label %142

142:                                              ; preds = %140
  %143 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not168 = icmp eq i8 %143, 0
  br i1 %.not168, label %.thread186, label %144

144:                                              ; preds = %142
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.4, i64 noundef %138) #3
  br label %.thread186

145:                                              ; preds = %116
  %146 = load ptr, ptr @gBS, align 8, !tbaa !5
  %147 = getelementptr inbounds i8, ptr %146, i64 368
  %148 = load ptr, ptr %147, align 8, !tbaa !60
  %149 = load ptr, ptr %7, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 872
  %151 = call i64 %148(i32 noundef 512, i64 noundef 16, ptr noundef nonnull @Undi16SimpleNetworkEvent, ptr noundef null, ptr noundef nonnull @gEfiEventExitBootServicesGuid, ptr noundef nonnull %150) #3
  %152 = icmp slt i64 %151, 0
  br i1 %152, label %153, label %158

153:                                              ; preds = %145
  %154 = call zeroext i8 @DebugPrintEnabled() #3
  %.not165 = icmp eq i8 %154, 0
  br i1 %.not165, label %.thread186, label %155

155:                                              ; preds = %153
  %156 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not166 = icmp eq i8 %156, 0
  br i1 %.not166, label %.thread186, label %157

157:                                              ; preds = %155
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.4, i64 noundef %151) #3
  br label %.thread186

158:                                              ; preds = %145
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = getelementptr inbounds i8, ptr %159, i64 880
  %161 = call i64 @EfiCreateEventLegacyBootEx(i64 noundef 16, ptr noundef nonnull @Undi16SimpleNetworkEvent, ptr noundef null, ptr noundef nonnull %160) #3
  %162 = icmp slt i64 %161, 0
  %163 = call zeroext i8 @DebugPrintEnabled() #3
  %.not163 = icmp eq i8 %163, 0
  br i1 %162, label %164, label %168

164:                                              ; preds = %158
  br i1 %.not163, label %.thread186, label %165

165:                                              ; preds = %164
  %166 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not164 = icmp eq i8 %166, 0
  br i1 %.not164, label %.thread186, label %167

167:                                              ; preds = %165
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.4, i64 noundef %161) #3
  br label %.thread186

168:                                              ; preds = %158
  br i1 %.not163, label %172, label %169

169:                                              ; preds = %168
  %170 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not104 = icmp eq i8 %170, 0
  br i1 %.not104, label %172, label %171

171:                                              ; preds = %169
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.5) #3
  br label %172

172:                                              ; preds = %169, %171, %168
  %173 = load ptr, ptr %7, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i64 144
  store i32 0, ptr %174, align 8, !tbaa !61
  %175 = getelementptr inbounds i8, ptr %173, i64 152
  store i32 14, ptr %175, align 8, !tbaa !62
  %176 = getelementptr inbounds i8, ptr %173, i64 793
  store i8 1, ptr %176, align 1, !tbaa !63
  %177 = getelementptr inbounds i8, ptr %173, i64 794
  store i8 1, ptr %177, align 2, !tbaa !64
  %178 = getelementptr inbounds i8, ptr %173, i64 168
  store i32 31, ptr %178, align 8, !tbaa !65
  %179 = getelementptr inbounds i8, ptr %173, i64 176
  store i32 8, ptr %179, align 8, !tbaa !66
  %180 = call zeroext i8 @DebugPrintEnabled() #3
  %.not105 = icmp eq i8 %180, 0
  br i1 %.not105, label %184, label %181

181:                                              ; preds = %172
  %182 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not106 = icmp eq i8 %182, 0
  br i1 %.not106, label %184, label %183

183:                                              ; preds = %181
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.6) #3
  br label %184

184:                                              ; preds = %181, %183, %172
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 1560
  %187 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef nonnull %186)
  %188 = icmp slt i64 %187, 0
  br i1 %188, label %.thread186, label %189

189:                                              ; preds = %184
  %190 = load ptr, ptr %7, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i64 1568
  %192 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef nonnull %191)
  %193 = icmp slt i64 %192, 0
  br i1 %193, label %.thread186, label %194

194:                                              ; preds = %189
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i64 1576
  %197 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef nonnull %196)
  %198 = icmp slt i64 %197, 0
  br i1 %198, label %.thread186, label %199

199:                                              ; preds = %194
  %200 = load ptr, ptr %7, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i64 1584
  %202 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef nonnull %201)
  %203 = icmp slt i64 %202, 0
  br i1 %203, label %.thread186, label %204

204:                                              ; preds = %199
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i64 1568
  %207 = load ptr, ptr %206, align 8, !tbaa !67
  %208 = ptrtoint ptr %207 to i64
  %209 = trunc i64 %208 to i16
  %210 = and i16 %209, 15
  %211 = getelementptr inbounds i8, ptr %205, i64 1560
  %212 = load ptr, ptr %211, align 8, !tbaa !68
  %213 = getelementptr inbounds i8, ptr %212, i64 2
  store i16 %210, ptr %213, align 1, !tbaa !69
  %214 = lshr i64 %208, 4
  %215 = trunc i64 %214 to i16
  %216 = getelementptr inbounds i8, ptr %212, i64 4
  store i16 %215, ptr %216, align 1, !tbaa !71
  %217 = getelementptr inbounds i8, ptr %212, i64 6
  store i16 1, ptr %217, align 1, !tbaa !72
  %218 = getelementptr inbounds i8, ptr %212, i64 8
  store i8 1, ptr %218, align 1, !tbaa !73
  %219 = getelementptr inbounds i8, ptr %212, i64 9
  store i8 0, ptr %219, align 1, !tbaa !75
  %220 = getelementptr inbounds i8, ptr %205, i64 1576
  %221 = load ptr, ptr %220, align 8, !tbaa !76
  %222 = ptrtoint ptr %221 to i64
  %223 = trunc i64 %222 to i16
  %224 = and i16 %223, 15
  %225 = getelementptr inbounds i8, ptr %212, i64 12
  store i16 %224, ptr %225, align 1, !tbaa !77
  %226 = lshr i64 %222, 4
  %227 = trunc i64 %226 to i16
  %228 = getelementptr inbounds i8, ptr %212, i64 14
  store i16 %227, ptr %228, align 1, !tbaa !78
  %229 = getelementptr inbounds i8, ptr %205, i64 896
  store i32 0, ptr %229, align 8, !tbaa !79
  %230 = getelementptr inbounds i8, ptr %205, i64 900
  store i32 0, ptr %230, align 4, !tbaa !80
  %231 = call zeroext i8 @DebugPrintEnabled() #3
  %.not107 = icmp eq i8 %231, 0
  br i1 %.not107, label %235, label %232

232:                                              ; preds = %204
  %233 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not108 = icmp eq i8 %233, 0
  br i1 %.not108, label %235, label %234

234:                                              ; preds = %232
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.7) #3
  br label %235

235:                                              ; preds = %232, %234, %204
  %236 = load ptr, ptr %7, align 8, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %236, i64 16
  %238 = call i64 @Undi16SimpleNetworkStart(ptr noundef nonnull %237)
  %239 = icmp slt i64 %238, 0
  br i1 %239, label %.thread186, label %240

240:                                              ; preds = %235
  %241 = call zeroext i8 @DebugPrintEnabled() #3
  %.not109 = icmp eq i8 %241, 0
  br i1 %.not109, label %245, label %242

242:                                              ; preds = %240
  %243 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not110 = icmp eq i8 %243, 0
  br i1 %.not110, label %245, label %244

244:                                              ; preds = %242
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.8) #3
  br label %245

245:                                              ; preds = %242, %244, %240
  %246 = load ptr, ptr %7, align 8, !tbaa !5
  %247 = getelementptr inbounds i8, ptr %246, i64 16
  %248 = call i64 @Undi16SimpleNetworkGetInformation(ptr noundef nonnull %247)
  %249 = icmp slt i64 %248, 0
  br i1 %249, label %.thread186, label %250

250:                                              ; preds = %245
  %251 = call ptr @ZeroMem(ptr noundef nonnull %8, i64 noundef 60) #3
  store i8 3, ptr %8, align 1, !tbaa !81
  %252 = getelementptr inbounds i8, ptr %8, i64 1
  store i8 11, ptr %252, align 1, !tbaa !81
  %253 = call zeroext i16 @SetDevicePathNodeLength(ptr noundef nonnull %8, i64 noundef 37) #3
  %254 = getelementptr inbounds i8, ptr %8, i64 4
  %255 = load ptr, ptr %7, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i64 696
  %257 = call ptr @CopyMem(ptr noundef nonnull %254, ptr noundef nonnull %256, i64 noundef 32) #3
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 1416
  %260 = load ptr, ptr %259, align 8, !tbaa !38
  %261 = call ptr @AppendDevicePathNode(ptr noundef %260, ptr noundef nonnull %8) #3
  %262 = load ptr, ptr %7, align 8, !tbaa !5
  %263 = getelementptr inbounds i8, ptr %262, i64 840
  store ptr %261, ptr %263, align 8, !tbaa !82
  %264 = call zeroext i8 @DebugPrintEnabled() #3
  %.not111 = icmp eq i8 %264, 0
  br i1 %.not111, label %268, label %265

265:                                              ; preds = %250
  %266 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not112 = icmp eq i8 %266, 0
  br i1 %.not112, label %268, label %267

267:                                              ; preds = %265
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.9) #3
  br label %268

268:                                              ; preds = %265, %267, %250
  %269 = load ptr, ptr %7, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i64 16
  %271 = call i64 @Undi16SimpleNetworkGetNicType(ptr noundef nonnull %270)
  %272 = icmp slt i64 %271, 0
  br i1 %272, label %.thread186, label %273

273:                                              ; preds = %268
  %274 = call zeroext i8 @DebugPrintEnabled() #3
  %.not113 = icmp eq i8 %274, 0
  br i1 %.not113, label %278, label %275

275:                                              ; preds = %273
  %276 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not114 = icmp eq i8 %276, 0
  br i1 %.not114, label %278, label %277

277:                                              ; preds = %275
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.10) #3
  br label %278

278:                                              ; preds = %275, %277, %273
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %279, i64 16
  %281 = call i64 @Undi16SimpleNetworkGetNdisInfo(ptr noundef nonnull %280)
  %282 = icmp slt i64 %281, 0
  br i1 %282, label %.thread186, label %283

283:                                              ; preds = %278
  %284 = call zeroext i8 @DebugPrintEnabled() #3
  %.not115 = icmp eq i8 %284, 0
  br i1 %.not115, label %288, label %285

285:                                              ; preds = %283
  %286 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not116 = icmp eq i8 %286, 0
  br i1 %.not116, label %288, label %287

287:                                              ; preds = %285
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.11) #3
  br label %288

288:                                              ; preds = %285, %287, %283
  %289 = load ptr, ptr %7, align 8, !tbaa !5
  %290 = getelementptr inbounds i8, ptr %289, i64 16
  %291 = getelementptr inbounds i8, ptr %289, i64 32
  %292 = load ptr, ptr %291, align 8, !tbaa !46
  %293 = call i64 %292(ptr noundef nonnull %290) #3
  %294 = icmp slt i64 %293, 0
  br i1 %294, label %.thread186, label %295

295:                                              ; preds = %288
  %296 = call zeroext i8 @DebugPrintEnabled() #3
  %.not117 = icmp eq i8 %296, 0
  br i1 %.not117, label %303, label %297

297:                                              ; preds = %295
  %298 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not118 = icmp eq i8 %298, 0
  br i1 %.not118, label %303, label %299

299:                                              ; preds = %297
  %300 = load ptr, ptr %7, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 144
  %302 = load i32, ptr %301, align 8, !tbaa !61
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.12, i32 noundef %302) #3
  br label %303

303:                                              ; preds = %295, %299, %297
  %304 = call zeroext i8 @DebugPrintEnabled() #3
  %.not119 = icmp eq i8 %304, 0
  br i1 %.not119, label %311, label %305

305:                                              ; preds = %303
  %306 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not120 = icmp eq i8 %306, 0
  br i1 %.not120, label %311, label %307

307:                                              ; preds = %305
  %308 = load ptr, ptr %7, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 148
  %310 = load i32, ptr %309, align 4, !tbaa !83
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.13, i32 noundef %310) #3
  br label %311

311:                                              ; preds = %303, %307, %305
  %312 = call zeroext i8 @DebugPrintEnabled() #3
  %.not121 = icmp eq i8 %312, 0
  br i1 %.not121, label %320, label %313

313:                                              ; preds = %311
  %314 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not122 = icmp eq i8 %314, 0
  br i1 %.not122, label %320, label %315

315:                                              ; preds = %313
  %316 = load ptr, ptr %7, align 8, !tbaa !5
  %317 = getelementptr inbounds i8, ptr %316, i64 793
  %318 = load i8, ptr %317, align 1, !tbaa !63
  %319 = zext i8 %318 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.14, i32 noundef %319) #3
  br label %320

320:                                              ; preds = %311, %315, %313
  %321 = call zeroext i8 @DebugPrintEnabled() #3
  %.not123 = icmp eq i8 %321, 0
  br i1 %.not123, label %329, label %322

322:                                              ; preds = %320
  %323 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not124 = icmp eq i8 %323, 0
  br i1 %.not124, label %329, label %324

324:                                              ; preds = %322
  %325 = load ptr, ptr %7, align 8, !tbaa !5
  %326 = getelementptr inbounds i8, ptr %325, i64 794
  %327 = load i8, ptr %326, align 2, !tbaa !64
  %328 = zext i8 %327 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.15, i32 noundef %328) #3
  br label %329

329:                                              ; preds = %320, %324, %322
  %330 = call zeroext i8 @DebugPrintEnabled() #3
  %.not125 = icmp eq i8 %330, 0
  br i1 %.not125, label %337, label %331

331:                                              ; preds = %329
  %332 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not126 = icmp eq i8 %332, 0
  br i1 %.not126, label %337, label %333

333:                                              ; preds = %331
  %334 = load ptr, ptr %7, align 8, !tbaa !5
  %335 = getelementptr inbounds i8, ptr %334, i64 160
  %336 = load i32, ptr %335, align 8, !tbaa !84
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.16, i32 noundef %336) #3
  br label %337

337:                                              ; preds = %329, %333, %331
  %338 = call zeroext i8 @DebugPrintEnabled() #3
  %.not127 = icmp eq i8 %338, 0
  br i1 %.not127, label %345, label %339

339:                                              ; preds = %337
  %340 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not128 = icmp eq i8 %340, 0
  br i1 %.not128, label %345, label %341

341:                                              ; preds = %339
  %342 = load ptr, ptr %7, align 8, !tbaa !5
  %343 = getelementptr inbounds i8, ptr %342, i64 164
  %344 = load i32, ptr %343, align 4, !tbaa !85
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.17, i32 noundef %344) #3
  br label %345

345:                                              ; preds = %337, %341, %339
  %346 = call zeroext i8 @DebugPrintEnabled() #3
  %.not129 = icmp eq i8 %346, 0
  br i1 %.not129, label %353, label %347

347:                                              ; preds = %345
  %348 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not130 = icmp eq i8 %348, 0
  br i1 %.not130, label %353, label %349

349:                                              ; preds = %347
  %350 = load ptr, ptr %7, align 8, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %350, i64 172
  %352 = load i32, ptr %351, align 4, !tbaa !86
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.18, i32 noundef %352) #3
  br label %353

353:                                              ; preds = %345, %349, %347
  %354 = call zeroext i8 @DebugPrintEnabled() #3
  %.not131 = icmp eq i8 %354, 0
  br i1 %.not131, label %362, label %355

355:                                              ; preds = %353
  %356 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not132 = icmp eq i8 %356, 0
  br i1 %.not132, label %362, label %357

357:                                              ; preds = %355
  %358 = load ptr, ptr %7, align 8, !tbaa !5
  %359 = getelementptr inbounds i8, ptr %358, i64 792
  %360 = load i8, ptr %359, align 8, !tbaa !87
  %361 = zext i8 %360 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.19, i32 noundef %361) #3
  br label %362

362:                                              ; preds = %353, %357, %355
  %363 = call zeroext i8 @DebugPrintEnabled() #3
  %.not133 = icmp eq i8 %363, 0
  br i1 %.not133, label %370, label %364

364:                                              ; preds = %362
  %365 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not134 = icmp eq i8 %365, 0
  br i1 %.not134, label %370, label %366

366:                                              ; preds = %364
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %367, i64 180
  %369 = load i32, ptr %368, align 4, !tbaa !88
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.20, i32 noundef %369) #3
  br label %370

370:                                              ; preds = %364, %366, %362
  %371 = load ptr, ptr %7, align 8, !tbaa !5
  %372 = getelementptr inbounds i8, ptr %371, i64 180
  %373 = load i32, ptr %372, align 4, !tbaa !88
  %.not194 = icmp eq i32 %373, 0
  br i1 %.not194, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %370, %543
  %.065190 = phi i64 [ %544, %543 ], [ 0, %370 ]
  %374 = call zeroext i8 @DebugPrintEnabled() #3
  %.not157 = icmp eq i8 %374, 0
  br i1 %.not157, label %378, label %375

375:                                              ; preds = %.lr.ph
  %376 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not158 = icmp eq i8 %376, 0
  br i1 %.not158, label %378, label %377

377:                                              ; preds = %375
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.21, i64 noundef %.065190) #3
  br label %378

378:                                              ; preds = %375, %377, %.lr.ph
  %379 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161 = icmp eq i8 %379, 0
  br i1 %.not161, label %388, label %380

380:                                              ; preds = %378
  %381 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162 = icmp eq i8 %381, 0
  br i1 %.not162, label %388, label %382

382:                                              ; preds = %380
  %383 = load ptr, ptr %7, align 8, !tbaa !5
  %384 = getelementptr inbounds i8, ptr %383, i64 184
  %385 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %384, i64 0, i64 %.065190
  %386 = load i8, ptr %385, align 1, !tbaa !81
  %387 = zext i8 %386 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %387) #3
  br label %388

388:                                              ; preds = %378, %382, %380
  %389 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.1 = icmp eq i8 %389, 0
  br i1 %.not161.1, label %398, label %390

390:                                              ; preds = %388
  %391 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.1 = icmp eq i8 %391, 0
  br i1 %.not162.1, label %398, label %392

392:                                              ; preds = %390
  %393 = load ptr, ptr %7, align 8, !tbaa !5
  %394 = getelementptr inbounds i8, ptr %393, i64 184
  %395 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %394, i64 0, i64 %.065190, i32 0, i64 1
  %396 = load i8, ptr %395, align 1, !tbaa !81
  %397 = zext i8 %396 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %397) #3
  br label %398

398:                                              ; preds = %392, %390, %388
  %399 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.2 = icmp eq i8 %399, 0
  br i1 %.not161.2, label %408, label %400

400:                                              ; preds = %398
  %401 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.2 = icmp eq i8 %401, 0
  br i1 %.not162.2, label %408, label %402

402:                                              ; preds = %400
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = getelementptr inbounds i8, ptr %403, i64 184
  %405 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %404, i64 0, i64 %.065190, i32 0, i64 2
  %406 = load i8, ptr %405, align 1, !tbaa !81
  %407 = zext i8 %406 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %407) #3
  br label %408

408:                                              ; preds = %402, %400, %398
  %409 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.3 = icmp eq i8 %409, 0
  br i1 %.not161.3, label %418, label %410

410:                                              ; preds = %408
  %411 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.3 = icmp eq i8 %411, 0
  br i1 %.not162.3, label %418, label %412

412:                                              ; preds = %410
  %413 = load ptr, ptr %7, align 8, !tbaa !5
  %414 = getelementptr inbounds i8, ptr %413, i64 184
  %415 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %414, i64 0, i64 %.065190, i32 0, i64 3
  %416 = load i8, ptr %415, align 1, !tbaa !81
  %417 = zext i8 %416 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %417) #3
  br label %418

418:                                              ; preds = %412, %410, %408
  %419 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.4 = icmp eq i8 %419, 0
  br i1 %.not161.4, label %428, label %420

420:                                              ; preds = %418
  %421 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.4 = icmp eq i8 %421, 0
  br i1 %.not162.4, label %428, label %422

422:                                              ; preds = %420
  %423 = load ptr, ptr %7, align 8, !tbaa !5
  %424 = getelementptr inbounds i8, ptr %423, i64 184
  %425 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %424, i64 0, i64 %.065190, i32 0, i64 4
  %426 = load i8, ptr %425, align 1, !tbaa !81
  %427 = zext i8 %426 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %427) #3
  br label %428

428:                                              ; preds = %422, %420, %418
  %429 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.5 = icmp eq i8 %429, 0
  br i1 %.not161.5, label %438, label %430

430:                                              ; preds = %428
  %431 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.5 = icmp eq i8 %431, 0
  br i1 %.not162.5, label %438, label %432

432:                                              ; preds = %430
  %433 = load ptr, ptr %7, align 8, !tbaa !5
  %434 = getelementptr inbounds i8, ptr %433, i64 184
  %435 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %434, i64 0, i64 %.065190, i32 0, i64 5
  %436 = load i8, ptr %435, align 1, !tbaa !81
  %437 = zext i8 %436 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %437) #3
  br label %438

438:                                              ; preds = %432, %430, %428
  %439 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.6 = icmp eq i8 %439, 0
  br i1 %.not161.6, label %448, label %440

440:                                              ; preds = %438
  %441 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.6 = icmp eq i8 %441, 0
  br i1 %.not162.6, label %448, label %442

442:                                              ; preds = %440
  %443 = load ptr, ptr %7, align 8, !tbaa !5
  %444 = getelementptr inbounds i8, ptr %443, i64 184
  %445 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %444, i64 0, i64 %.065190, i32 0, i64 6
  %446 = load i8, ptr %445, align 1, !tbaa !81
  %447 = zext i8 %446 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %447) #3
  br label %448

448:                                              ; preds = %442, %440, %438
  %449 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.7 = icmp eq i8 %449, 0
  br i1 %.not161.7, label %458, label %450

450:                                              ; preds = %448
  %451 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.7 = icmp eq i8 %451, 0
  br i1 %.not162.7, label %458, label %452

452:                                              ; preds = %450
  %453 = load ptr, ptr %7, align 8, !tbaa !5
  %454 = getelementptr inbounds i8, ptr %453, i64 184
  %455 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %454, i64 0, i64 %.065190, i32 0, i64 7
  %456 = load i8, ptr %455, align 1, !tbaa !81
  %457 = zext i8 %456 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %457) #3
  br label %458

458:                                              ; preds = %452, %450, %448
  %459 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.8 = icmp eq i8 %459, 0
  br i1 %.not161.8, label %468, label %460

460:                                              ; preds = %458
  %461 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.8 = icmp eq i8 %461, 0
  br i1 %.not162.8, label %468, label %462

462:                                              ; preds = %460
  %463 = load ptr, ptr %7, align 8, !tbaa !5
  %464 = getelementptr inbounds i8, ptr %463, i64 184
  %465 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %464, i64 0, i64 %.065190, i32 0, i64 8
  %466 = load i8, ptr %465, align 1, !tbaa !81
  %467 = zext i8 %466 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %467) #3
  br label %468

468:                                              ; preds = %462, %460, %458
  %469 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.9 = icmp eq i8 %469, 0
  br i1 %.not161.9, label %478, label %470

470:                                              ; preds = %468
  %471 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.9 = icmp eq i8 %471, 0
  br i1 %.not162.9, label %478, label %472

472:                                              ; preds = %470
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  %474 = getelementptr inbounds i8, ptr %473, i64 184
  %475 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %474, i64 0, i64 %.065190, i32 0, i64 9
  %476 = load i8, ptr %475, align 1, !tbaa !81
  %477 = zext i8 %476 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %477) #3
  br label %478

478:                                              ; preds = %472, %470, %468
  %479 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.10 = icmp eq i8 %479, 0
  br i1 %.not161.10, label %488, label %480

480:                                              ; preds = %478
  %481 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.10 = icmp eq i8 %481, 0
  br i1 %.not162.10, label %488, label %482

482:                                              ; preds = %480
  %483 = load ptr, ptr %7, align 8, !tbaa !5
  %484 = getelementptr inbounds i8, ptr %483, i64 184
  %485 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %484, i64 0, i64 %.065190, i32 0, i64 10
  %486 = load i8, ptr %485, align 1, !tbaa !81
  %487 = zext i8 %486 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %487) #3
  br label %488

488:                                              ; preds = %482, %480, %478
  %489 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.11 = icmp eq i8 %489, 0
  br i1 %.not161.11, label %498, label %490

490:                                              ; preds = %488
  %491 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.11 = icmp eq i8 %491, 0
  br i1 %.not162.11, label %498, label %492

492:                                              ; preds = %490
  %493 = load ptr, ptr %7, align 8, !tbaa !5
  %494 = getelementptr inbounds i8, ptr %493, i64 184
  %495 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %494, i64 0, i64 %.065190, i32 0, i64 11
  %496 = load i8, ptr %495, align 1, !tbaa !81
  %497 = zext i8 %496 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %497) #3
  br label %498

498:                                              ; preds = %492, %490, %488
  %499 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.12 = icmp eq i8 %499, 0
  br i1 %.not161.12, label %508, label %500

500:                                              ; preds = %498
  %501 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.12 = icmp eq i8 %501, 0
  br i1 %.not162.12, label %508, label %502

502:                                              ; preds = %500
  %503 = load ptr, ptr %7, align 8, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %503, i64 184
  %505 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %504, i64 0, i64 %.065190, i32 0, i64 12
  %506 = load i8, ptr %505, align 1, !tbaa !81
  %507 = zext i8 %506 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %507) #3
  br label %508

508:                                              ; preds = %502, %500, %498
  %509 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.13 = icmp eq i8 %509, 0
  br i1 %.not161.13, label %518, label %510

510:                                              ; preds = %508
  %511 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.13 = icmp eq i8 %511, 0
  br i1 %.not162.13, label %518, label %512

512:                                              ; preds = %510
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = getelementptr inbounds i8, ptr %513, i64 184
  %515 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %514, i64 0, i64 %.065190, i32 0, i64 13
  %516 = load i8, ptr %515, align 1, !tbaa !81
  %517 = zext i8 %516 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %517) #3
  br label %518

518:                                              ; preds = %512, %510, %508
  %519 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.14 = icmp eq i8 %519, 0
  br i1 %.not161.14, label %528, label %520

520:                                              ; preds = %518
  %521 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.14 = icmp eq i8 %521, 0
  br i1 %.not162.14, label %528, label %522

522:                                              ; preds = %520
  %523 = load ptr, ptr %7, align 8, !tbaa !5
  %524 = getelementptr inbounds i8, ptr %523, i64 184
  %525 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %524, i64 0, i64 %.065190, i32 0, i64 14
  %526 = load i8, ptr %525, align 1, !tbaa !81
  %527 = zext i8 %526 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %527) #3
  br label %528

528:                                              ; preds = %522, %520, %518
  %529 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161.15 = icmp eq i8 %529, 0
  br i1 %.not161.15, label %538, label %530

530:                                              ; preds = %528
  %531 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162.15 = icmp eq i8 %531, 0
  br i1 %.not162.15, label %538, label %532

532:                                              ; preds = %530
  %533 = load ptr, ptr %7, align 8, !tbaa !5
  %534 = getelementptr inbounds i8, ptr %533, i64 184
  %535 = getelementptr inbounds [16 x %struct.EFI_MAC_ADDRESS], ptr %534, i64 0, i64 %.065190, i32 0, i64 15
  %536 = load i8, ptr %535, align 1, !tbaa !81
  %537 = zext i8 %536 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %537) #3
  br label %538

538:                                              ; preds = %532, %530, %528
  %539 = call zeroext i8 @DebugPrintEnabled() #3
  %.not159 = icmp eq i8 %539, 0
  br i1 %.not159, label %543, label %540

540:                                              ; preds = %538
  %541 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not160 = icmp eq i8 %541, 0
  br i1 %.not160, label %543, label %542

542:                                              ; preds = %540
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.23) #3
  br label %543

543:                                              ; preds = %538, %542, %540
  %544 = add nuw nsw i64 %.065190, 1
  %545 = load ptr, ptr %7, align 8, !tbaa !5
  %546 = getelementptr inbounds i8, ptr %545, i64 180
  %547 = load i32, ptr %546, align 4, !tbaa !88
  %548 = zext i32 %547 to i64
  %549 = icmp ult i64 %544, %548
  br i1 %549, label %.lr.ph, label %._crit_edge, !llvm.loop !89

._crit_edge:                                      ; preds = %543, %370
  %550 = call zeroext i8 @DebugPrintEnabled() #3
  %.not135 = icmp eq i8 %550, 0
  br i1 %.not135, label %554, label %551

551:                                              ; preds = %._crit_edge
  %552 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not136 = icmp eq i8 %552, 0
  br i1 %.not136, label %554, label %553

553:                                              ; preds = %551
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.24) #3
  br label %554

554:                                              ; preds = %551, %553, %._crit_edge
  %555 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155 = icmp eq i8 %555, 0
  br i1 %.not155, label %563, label %556

556:                                              ; preds = %554
  %557 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156 = icmp eq i8 %557, 0
  br i1 %.not156, label %563, label %558

558:                                              ; preds = %556
  %559 = load ptr, ptr %7, align 8, !tbaa !5
  %560 = getelementptr inbounds i8, ptr %559, i64 696
  %561 = load i8, ptr %560, align 1, !tbaa !81
  %562 = zext i8 %561 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %562) #3
  br label %563

563:                                              ; preds = %554, %558, %556
  %564 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.1 = icmp eq i8 %564, 0
  br i1 %.not155.1, label %572, label %565

565:                                              ; preds = %563
  %566 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.1 = icmp eq i8 %566, 0
  br i1 %.not156.1, label %572, label %567

567:                                              ; preds = %565
  %568 = load ptr, ptr %7, align 8, !tbaa !5
  %569 = getelementptr inbounds i8, ptr %568, i64 697
  %570 = load i8, ptr %569, align 1, !tbaa !81
  %571 = zext i8 %570 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %571) #3
  br label %572

572:                                              ; preds = %567, %565, %563
  %573 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.2 = icmp eq i8 %573, 0
  br i1 %.not155.2, label %581, label %574

574:                                              ; preds = %572
  %575 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.2 = icmp eq i8 %575, 0
  br i1 %.not156.2, label %581, label %576

576:                                              ; preds = %574
  %577 = load ptr, ptr %7, align 8, !tbaa !5
  %578 = getelementptr inbounds i8, ptr %577, i64 698
  %579 = load i8, ptr %578, align 1, !tbaa !81
  %580 = zext i8 %579 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %580) #3
  br label %581

581:                                              ; preds = %576, %574, %572
  %582 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.3 = icmp eq i8 %582, 0
  br i1 %.not155.3, label %590, label %583

583:                                              ; preds = %581
  %584 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.3 = icmp eq i8 %584, 0
  br i1 %.not156.3, label %590, label %585

585:                                              ; preds = %583
  %586 = load ptr, ptr %7, align 8, !tbaa !5
  %587 = getelementptr inbounds i8, ptr %586, i64 699
  %588 = load i8, ptr %587, align 1, !tbaa !81
  %589 = zext i8 %588 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %589) #3
  br label %590

590:                                              ; preds = %585, %583, %581
  %591 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.4 = icmp eq i8 %591, 0
  br i1 %.not155.4, label %599, label %592

592:                                              ; preds = %590
  %593 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.4 = icmp eq i8 %593, 0
  br i1 %.not156.4, label %599, label %594

594:                                              ; preds = %592
  %595 = load ptr, ptr %7, align 8, !tbaa !5
  %596 = getelementptr inbounds i8, ptr %595, i64 700
  %597 = load i8, ptr %596, align 1, !tbaa !81
  %598 = zext i8 %597 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %598) #3
  br label %599

599:                                              ; preds = %594, %592, %590
  %600 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.5 = icmp eq i8 %600, 0
  br i1 %.not155.5, label %608, label %601

601:                                              ; preds = %599
  %602 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.5 = icmp eq i8 %602, 0
  br i1 %.not156.5, label %608, label %603

603:                                              ; preds = %601
  %604 = load ptr, ptr %7, align 8, !tbaa !5
  %605 = getelementptr inbounds i8, ptr %604, i64 701
  %606 = load i8, ptr %605, align 1, !tbaa !81
  %607 = zext i8 %606 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %607) #3
  br label %608

608:                                              ; preds = %603, %601, %599
  %609 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.6 = icmp eq i8 %609, 0
  br i1 %.not155.6, label %617, label %610

610:                                              ; preds = %608
  %611 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.6 = icmp eq i8 %611, 0
  br i1 %.not156.6, label %617, label %612

612:                                              ; preds = %610
  %613 = load ptr, ptr %7, align 8, !tbaa !5
  %614 = getelementptr inbounds i8, ptr %613, i64 702
  %615 = load i8, ptr %614, align 1, !tbaa !81
  %616 = zext i8 %615 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %616) #3
  br label %617

617:                                              ; preds = %612, %610, %608
  %618 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.7 = icmp eq i8 %618, 0
  br i1 %.not155.7, label %626, label %619

619:                                              ; preds = %617
  %620 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.7 = icmp eq i8 %620, 0
  br i1 %.not156.7, label %626, label %621

621:                                              ; preds = %619
  %622 = load ptr, ptr %7, align 8, !tbaa !5
  %623 = getelementptr inbounds i8, ptr %622, i64 703
  %624 = load i8, ptr %623, align 1, !tbaa !81
  %625 = zext i8 %624 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %625) #3
  br label %626

626:                                              ; preds = %621, %619, %617
  %627 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.8 = icmp eq i8 %627, 0
  br i1 %.not155.8, label %635, label %628

628:                                              ; preds = %626
  %629 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.8 = icmp eq i8 %629, 0
  br i1 %.not156.8, label %635, label %630

630:                                              ; preds = %628
  %631 = load ptr, ptr %7, align 8, !tbaa !5
  %632 = getelementptr inbounds i8, ptr %631, i64 704
  %633 = load i8, ptr %632, align 1, !tbaa !81
  %634 = zext i8 %633 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %634) #3
  br label %635

635:                                              ; preds = %630, %628, %626
  %636 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.9 = icmp eq i8 %636, 0
  br i1 %.not155.9, label %644, label %637

637:                                              ; preds = %635
  %638 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.9 = icmp eq i8 %638, 0
  br i1 %.not156.9, label %644, label %639

639:                                              ; preds = %637
  %640 = load ptr, ptr %7, align 8, !tbaa !5
  %641 = getelementptr inbounds i8, ptr %640, i64 705
  %642 = load i8, ptr %641, align 1, !tbaa !81
  %643 = zext i8 %642 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %643) #3
  br label %644

644:                                              ; preds = %639, %637, %635
  %645 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.10 = icmp eq i8 %645, 0
  br i1 %.not155.10, label %653, label %646

646:                                              ; preds = %644
  %647 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.10 = icmp eq i8 %647, 0
  br i1 %.not156.10, label %653, label %648

648:                                              ; preds = %646
  %649 = load ptr, ptr %7, align 8, !tbaa !5
  %650 = getelementptr inbounds i8, ptr %649, i64 706
  %651 = load i8, ptr %650, align 1, !tbaa !81
  %652 = zext i8 %651 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %652) #3
  br label %653

653:                                              ; preds = %648, %646, %644
  %654 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.11 = icmp eq i8 %654, 0
  br i1 %.not155.11, label %662, label %655

655:                                              ; preds = %653
  %656 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.11 = icmp eq i8 %656, 0
  br i1 %.not156.11, label %662, label %657

657:                                              ; preds = %655
  %658 = load ptr, ptr %7, align 8, !tbaa !5
  %659 = getelementptr inbounds i8, ptr %658, i64 707
  %660 = load i8, ptr %659, align 1, !tbaa !81
  %661 = zext i8 %660 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %661) #3
  br label %662

662:                                              ; preds = %657, %655, %653
  %663 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.12 = icmp eq i8 %663, 0
  br i1 %.not155.12, label %671, label %664

664:                                              ; preds = %662
  %665 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.12 = icmp eq i8 %665, 0
  br i1 %.not156.12, label %671, label %666

666:                                              ; preds = %664
  %667 = load ptr, ptr %7, align 8, !tbaa !5
  %668 = getelementptr inbounds i8, ptr %667, i64 708
  %669 = load i8, ptr %668, align 1, !tbaa !81
  %670 = zext i8 %669 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %670) #3
  br label %671

671:                                              ; preds = %666, %664, %662
  %672 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.13 = icmp eq i8 %672, 0
  br i1 %.not155.13, label %680, label %673

673:                                              ; preds = %671
  %674 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.13 = icmp eq i8 %674, 0
  br i1 %.not156.13, label %680, label %675

675:                                              ; preds = %673
  %676 = load ptr, ptr %7, align 8, !tbaa !5
  %677 = getelementptr inbounds i8, ptr %676, i64 709
  %678 = load i8, ptr %677, align 1, !tbaa !81
  %679 = zext i8 %678 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %679) #3
  br label %680

680:                                              ; preds = %675, %673, %671
  %681 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.14 = icmp eq i8 %681, 0
  br i1 %.not155.14, label %689, label %682

682:                                              ; preds = %680
  %683 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.14 = icmp eq i8 %683, 0
  br i1 %.not156.14, label %689, label %684

684:                                              ; preds = %682
  %685 = load ptr, ptr %7, align 8, !tbaa !5
  %686 = getelementptr inbounds i8, ptr %685, i64 710
  %687 = load i8, ptr %686, align 1, !tbaa !81
  %688 = zext i8 %687 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %688) #3
  br label %689

689:                                              ; preds = %684, %682, %680
  %690 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155.15 = icmp eq i8 %690, 0
  br i1 %.not155.15, label %698, label %691

691:                                              ; preds = %689
  %692 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156.15 = icmp eq i8 %692, 0
  br i1 %.not156.15, label %698, label %693

693:                                              ; preds = %691
  %694 = load ptr, ptr %7, align 8, !tbaa !5
  %695 = getelementptr inbounds i8, ptr %694, i64 711
  %696 = load i8, ptr %695, align 1, !tbaa !81
  %697 = zext i8 %696 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %697) #3
  br label %698

698:                                              ; preds = %693, %691, %689
  %699 = call zeroext i8 @DebugPrintEnabled() #3
  %.not137 = icmp eq i8 %699, 0
  br i1 %.not137, label %703, label %700

700:                                              ; preds = %698
  %701 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not138 = icmp eq i8 %701, 0
  br i1 %.not138, label %703, label %702

702:                                              ; preds = %700
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.23) #3
  br label %703

703:                                              ; preds = %698, %702, %700
  %704 = call zeroext i8 @DebugPrintEnabled() #3
  %.not139 = icmp eq i8 %704, 0
  br i1 %.not139, label %708, label %705

705:                                              ; preds = %703
  %706 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not140 = icmp eq i8 %706, 0
  br i1 %.not140, label %708, label %707

707:                                              ; preds = %705
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.25) #3
  br label %708

708:                                              ; preds = %705, %707, %703
  %709 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153 = icmp eq i8 %709, 0
  br i1 %.not153, label %717, label %710

710:                                              ; preds = %708
  %711 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154 = icmp eq i8 %711, 0
  br i1 %.not154, label %717, label %712

712:                                              ; preds = %710
  %713 = load ptr, ptr %7, align 8, !tbaa !5
  %714 = getelementptr inbounds i8, ptr %713, i64 728
  %715 = load i8, ptr %714, align 1, !tbaa !81
  %716 = zext i8 %715 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %716) #3
  br label %717

717:                                              ; preds = %708, %712, %710
  %718 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.1 = icmp eq i8 %718, 0
  br i1 %.not153.1, label %726, label %719

719:                                              ; preds = %717
  %720 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.1 = icmp eq i8 %720, 0
  br i1 %.not154.1, label %726, label %721

721:                                              ; preds = %719
  %722 = load ptr, ptr %7, align 8, !tbaa !5
  %723 = getelementptr inbounds i8, ptr %722, i64 729
  %724 = load i8, ptr %723, align 1, !tbaa !81
  %725 = zext i8 %724 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %725) #3
  br label %726

726:                                              ; preds = %721, %719, %717
  %727 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.2 = icmp eq i8 %727, 0
  br i1 %.not153.2, label %735, label %728

728:                                              ; preds = %726
  %729 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.2 = icmp eq i8 %729, 0
  br i1 %.not154.2, label %735, label %730

730:                                              ; preds = %728
  %731 = load ptr, ptr %7, align 8, !tbaa !5
  %732 = getelementptr inbounds i8, ptr %731, i64 730
  %733 = load i8, ptr %732, align 1, !tbaa !81
  %734 = zext i8 %733 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %734) #3
  br label %735

735:                                              ; preds = %730, %728, %726
  %736 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.3 = icmp eq i8 %736, 0
  br i1 %.not153.3, label %744, label %737

737:                                              ; preds = %735
  %738 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.3 = icmp eq i8 %738, 0
  br i1 %.not154.3, label %744, label %739

739:                                              ; preds = %737
  %740 = load ptr, ptr %7, align 8, !tbaa !5
  %741 = getelementptr inbounds i8, ptr %740, i64 731
  %742 = load i8, ptr %741, align 1, !tbaa !81
  %743 = zext i8 %742 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %743) #3
  br label %744

744:                                              ; preds = %739, %737, %735
  %745 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.4 = icmp eq i8 %745, 0
  br i1 %.not153.4, label %753, label %746

746:                                              ; preds = %744
  %747 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.4 = icmp eq i8 %747, 0
  br i1 %.not154.4, label %753, label %748

748:                                              ; preds = %746
  %749 = load ptr, ptr %7, align 8, !tbaa !5
  %750 = getelementptr inbounds i8, ptr %749, i64 732
  %751 = load i8, ptr %750, align 1, !tbaa !81
  %752 = zext i8 %751 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %752) #3
  br label %753

753:                                              ; preds = %748, %746, %744
  %754 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.5 = icmp eq i8 %754, 0
  br i1 %.not153.5, label %762, label %755

755:                                              ; preds = %753
  %756 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.5 = icmp eq i8 %756, 0
  br i1 %.not154.5, label %762, label %757

757:                                              ; preds = %755
  %758 = load ptr, ptr %7, align 8, !tbaa !5
  %759 = getelementptr inbounds i8, ptr %758, i64 733
  %760 = load i8, ptr %759, align 1, !tbaa !81
  %761 = zext i8 %760 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %761) #3
  br label %762

762:                                              ; preds = %757, %755, %753
  %763 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.6 = icmp eq i8 %763, 0
  br i1 %.not153.6, label %771, label %764

764:                                              ; preds = %762
  %765 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.6 = icmp eq i8 %765, 0
  br i1 %.not154.6, label %771, label %766

766:                                              ; preds = %764
  %767 = load ptr, ptr %7, align 8, !tbaa !5
  %768 = getelementptr inbounds i8, ptr %767, i64 734
  %769 = load i8, ptr %768, align 1, !tbaa !81
  %770 = zext i8 %769 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %770) #3
  br label %771

771:                                              ; preds = %766, %764, %762
  %772 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.7 = icmp eq i8 %772, 0
  br i1 %.not153.7, label %780, label %773

773:                                              ; preds = %771
  %774 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.7 = icmp eq i8 %774, 0
  br i1 %.not154.7, label %780, label %775

775:                                              ; preds = %773
  %776 = load ptr, ptr %7, align 8, !tbaa !5
  %777 = getelementptr inbounds i8, ptr %776, i64 735
  %778 = load i8, ptr %777, align 1, !tbaa !81
  %779 = zext i8 %778 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %779) #3
  br label %780

780:                                              ; preds = %775, %773, %771
  %781 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.8 = icmp eq i8 %781, 0
  br i1 %.not153.8, label %789, label %782

782:                                              ; preds = %780
  %783 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.8 = icmp eq i8 %783, 0
  br i1 %.not154.8, label %789, label %784

784:                                              ; preds = %782
  %785 = load ptr, ptr %7, align 8, !tbaa !5
  %786 = getelementptr inbounds i8, ptr %785, i64 736
  %787 = load i8, ptr %786, align 1, !tbaa !81
  %788 = zext i8 %787 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %788) #3
  br label %789

789:                                              ; preds = %784, %782, %780
  %790 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.9 = icmp eq i8 %790, 0
  br i1 %.not153.9, label %798, label %791

791:                                              ; preds = %789
  %792 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.9 = icmp eq i8 %792, 0
  br i1 %.not154.9, label %798, label %793

793:                                              ; preds = %791
  %794 = load ptr, ptr %7, align 8, !tbaa !5
  %795 = getelementptr inbounds i8, ptr %794, i64 737
  %796 = load i8, ptr %795, align 1, !tbaa !81
  %797 = zext i8 %796 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %797) #3
  br label %798

798:                                              ; preds = %793, %791, %789
  %799 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.10 = icmp eq i8 %799, 0
  br i1 %.not153.10, label %807, label %800

800:                                              ; preds = %798
  %801 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.10 = icmp eq i8 %801, 0
  br i1 %.not154.10, label %807, label %802

802:                                              ; preds = %800
  %803 = load ptr, ptr %7, align 8, !tbaa !5
  %804 = getelementptr inbounds i8, ptr %803, i64 738
  %805 = load i8, ptr %804, align 1, !tbaa !81
  %806 = zext i8 %805 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %806) #3
  br label %807

807:                                              ; preds = %802, %800, %798
  %808 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.11 = icmp eq i8 %808, 0
  br i1 %.not153.11, label %816, label %809

809:                                              ; preds = %807
  %810 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.11 = icmp eq i8 %810, 0
  br i1 %.not154.11, label %816, label %811

811:                                              ; preds = %809
  %812 = load ptr, ptr %7, align 8, !tbaa !5
  %813 = getelementptr inbounds i8, ptr %812, i64 739
  %814 = load i8, ptr %813, align 1, !tbaa !81
  %815 = zext i8 %814 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %815) #3
  br label %816

816:                                              ; preds = %811, %809, %807
  %817 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.12 = icmp eq i8 %817, 0
  br i1 %.not153.12, label %825, label %818

818:                                              ; preds = %816
  %819 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.12 = icmp eq i8 %819, 0
  br i1 %.not154.12, label %825, label %820

820:                                              ; preds = %818
  %821 = load ptr, ptr %7, align 8, !tbaa !5
  %822 = getelementptr inbounds i8, ptr %821, i64 740
  %823 = load i8, ptr %822, align 1, !tbaa !81
  %824 = zext i8 %823 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %824) #3
  br label %825

825:                                              ; preds = %820, %818, %816
  %826 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.13 = icmp eq i8 %826, 0
  br i1 %.not153.13, label %834, label %827

827:                                              ; preds = %825
  %828 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.13 = icmp eq i8 %828, 0
  br i1 %.not154.13, label %834, label %829

829:                                              ; preds = %827
  %830 = load ptr, ptr %7, align 8, !tbaa !5
  %831 = getelementptr inbounds i8, ptr %830, i64 741
  %832 = load i8, ptr %831, align 1, !tbaa !81
  %833 = zext i8 %832 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %833) #3
  br label %834

834:                                              ; preds = %829, %827, %825
  %835 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.14 = icmp eq i8 %835, 0
  br i1 %.not153.14, label %843, label %836

836:                                              ; preds = %834
  %837 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.14 = icmp eq i8 %837, 0
  br i1 %.not154.14, label %843, label %838

838:                                              ; preds = %836
  %839 = load ptr, ptr %7, align 8, !tbaa !5
  %840 = getelementptr inbounds i8, ptr %839, i64 742
  %841 = load i8, ptr %840, align 1, !tbaa !81
  %842 = zext i8 %841 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %842) #3
  br label %843

843:                                              ; preds = %838, %836, %834
  %844 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153.15 = icmp eq i8 %844, 0
  br i1 %.not153.15, label %852, label %845

845:                                              ; preds = %843
  %846 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not154.15 = icmp eq i8 %846, 0
  br i1 %.not154.15, label %852, label %847

847:                                              ; preds = %845
  %848 = load ptr, ptr %7, align 8, !tbaa !5
  %849 = getelementptr inbounds i8, ptr %848, i64 743
  %850 = load i8, ptr %849, align 1, !tbaa !81
  %851 = zext i8 %850 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %851) #3
  br label %852

852:                                              ; preds = %847, %845, %843
  %853 = call zeroext i8 @DebugPrintEnabled() #3
  %.not141 = icmp eq i8 %853, 0
  br i1 %.not141, label %857, label %854

854:                                              ; preds = %852
  %855 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not142 = icmp eq i8 %855, 0
  br i1 %.not142, label %857, label %856

856:                                              ; preds = %854
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.23) #3
  br label %857

857:                                              ; preds = %852, %856, %854
  %858 = call zeroext i8 @DebugPrintEnabled() #3
  %.not143 = icmp eq i8 %858, 0
  br i1 %.not143, label %862, label %859

859:                                              ; preds = %857
  %860 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not144 = icmp eq i8 %860, 0
  br i1 %.not144, label %862, label %861

861:                                              ; preds = %859
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.26) #3
  br label %862

862:                                              ; preds = %859, %861, %857
  %863 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151 = icmp eq i8 %863, 0
  br i1 %.not151, label %871, label %864

864:                                              ; preds = %862
  %865 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152 = icmp eq i8 %865, 0
  br i1 %.not152, label %871, label %866

866:                                              ; preds = %864
  %867 = load ptr, ptr %7, align 8, !tbaa !5
  %868 = getelementptr inbounds i8, ptr %867, i64 760
  %869 = load i8, ptr %868, align 1, !tbaa !81
  %870 = zext i8 %869 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %870) #3
  br label %871

871:                                              ; preds = %862, %866, %864
  %872 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.1 = icmp eq i8 %872, 0
  br i1 %.not151.1, label %880, label %873

873:                                              ; preds = %871
  %874 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.1 = icmp eq i8 %874, 0
  br i1 %.not152.1, label %880, label %875

875:                                              ; preds = %873
  %876 = load ptr, ptr %7, align 8, !tbaa !5
  %877 = getelementptr inbounds i8, ptr %876, i64 761
  %878 = load i8, ptr %877, align 1, !tbaa !81
  %879 = zext i8 %878 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %879) #3
  br label %880

880:                                              ; preds = %875, %873, %871
  %881 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.2 = icmp eq i8 %881, 0
  br i1 %.not151.2, label %889, label %882

882:                                              ; preds = %880
  %883 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.2 = icmp eq i8 %883, 0
  br i1 %.not152.2, label %889, label %884

884:                                              ; preds = %882
  %885 = load ptr, ptr %7, align 8, !tbaa !5
  %886 = getelementptr inbounds i8, ptr %885, i64 762
  %887 = load i8, ptr %886, align 1, !tbaa !81
  %888 = zext i8 %887 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %888) #3
  br label %889

889:                                              ; preds = %884, %882, %880
  %890 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.3 = icmp eq i8 %890, 0
  br i1 %.not151.3, label %898, label %891

891:                                              ; preds = %889
  %892 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.3 = icmp eq i8 %892, 0
  br i1 %.not152.3, label %898, label %893

893:                                              ; preds = %891
  %894 = load ptr, ptr %7, align 8, !tbaa !5
  %895 = getelementptr inbounds i8, ptr %894, i64 763
  %896 = load i8, ptr %895, align 1, !tbaa !81
  %897 = zext i8 %896 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %897) #3
  br label %898

898:                                              ; preds = %893, %891, %889
  %899 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.4 = icmp eq i8 %899, 0
  br i1 %.not151.4, label %907, label %900

900:                                              ; preds = %898
  %901 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.4 = icmp eq i8 %901, 0
  br i1 %.not152.4, label %907, label %902

902:                                              ; preds = %900
  %903 = load ptr, ptr %7, align 8, !tbaa !5
  %904 = getelementptr inbounds i8, ptr %903, i64 764
  %905 = load i8, ptr %904, align 1, !tbaa !81
  %906 = zext i8 %905 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %906) #3
  br label %907

907:                                              ; preds = %902, %900, %898
  %908 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.5 = icmp eq i8 %908, 0
  br i1 %.not151.5, label %916, label %909

909:                                              ; preds = %907
  %910 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.5 = icmp eq i8 %910, 0
  br i1 %.not152.5, label %916, label %911

911:                                              ; preds = %909
  %912 = load ptr, ptr %7, align 8, !tbaa !5
  %913 = getelementptr inbounds i8, ptr %912, i64 765
  %914 = load i8, ptr %913, align 1, !tbaa !81
  %915 = zext i8 %914 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %915) #3
  br label %916

916:                                              ; preds = %911, %909, %907
  %917 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.6 = icmp eq i8 %917, 0
  br i1 %.not151.6, label %925, label %918

918:                                              ; preds = %916
  %919 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.6 = icmp eq i8 %919, 0
  br i1 %.not152.6, label %925, label %920

920:                                              ; preds = %918
  %921 = load ptr, ptr %7, align 8, !tbaa !5
  %922 = getelementptr inbounds i8, ptr %921, i64 766
  %923 = load i8, ptr %922, align 1, !tbaa !81
  %924 = zext i8 %923 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %924) #3
  br label %925

925:                                              ; preds = %920, %918, %916
  %926 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.7 = icmp eq i8 %926, 0
  br i1 %.not151.7, label %934, label %927

927:                                              ; preds = %925
  %928 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.7 = icmp eq i8 %928, 0
  br i1 %.not152.7, label %934, label %929

929:                                              ; preds = %927
  %930 = load ptr, ptr %7, align 8, !tbaa !5
  %931 = getelementptr inbounds i8, ptr %930, i64 767
  %932 = load i8, ptr %931, align 1, !tbaa !81
  %933 = zext i8 %932 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %933) #3
  br label %934

934:                                              ; preds = %929, %927, %925
  %935 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.8 = icmp eq i8 %935, 0
  br i1 %.not151.8, label %943, label %936

936:                                              ; preds = %934
  %937 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.8 = icmp eq i8 %937, 0
  br i1 %.not152.8, label %943, label %938

938:                                              ; preds = %936
  %939 = load ptr, ptr %7, align 8, !tbaa !5
  %940 = getelementptr inbounds i8, ptr %939, i64 768
  %941 = load i8, ptr %940, align 1, !tbaa !81
  %942 = zext i8 %941 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %942) #3
  br label %943

943:                                              ; preds = %938, %936, %934
  %944 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.9 = icmp eq i8 %944, 0
  br i1 %.not151.9, label %952, label %945

945:                                              ; preds = %943
  %946 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.9 = icmp eq i8 %946, 0
  br i1 %.not152.9, label %952, label %947

947:                                              ; preds = %945
  %948 = load ptr, ptr %7, align 8, !tbaa !5
  %949 = getelementptr inbounds i8, ptr %948, i64 769
  %950 = load i8, ptr %949, align 1, !tbaa !81
  %951 = zext i8 %950 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %951) #3
  br label %952

952:                                              ; preds = %947, %945, %943
  %953 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.10 = icmp eq i8 %953, 0
  br i1 %.not151.10, label %961, label %954

954:                                              ; preds = %952
  %955 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.10 = icmp eq i8 %955, 0
  br i1 %.not152.10, label %961, label %956

956:                                              ; preds = %954
  %957 = load ptr, ptr %7, align 8, !tbaa !5
  %958 = getelementptr inbounds i8, ptr %957, i64 770
  %959 = load i8, ptr %958, align 1, !tbaa !81
  %960 = zext i8 %959 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %960) #3
  br label %961

961:                                              ; preds = %956, %954, %952
  %962 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.11 = icmp eq i8 %962, 0
  br i1 %.not151.11, label %970, label %963

963:                                              ; preds = %961
  %964 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.11 = icmp eq i8 %964, 0
  br i1 %.not152.11, label %970, label %965

965:                                              ; preds = %963
  %966 = load ptr, ptr %7, align 8, !tbaa !5
  %967 = getelementptr inbounds i8, ptr %966, i64 771
  %968 = load i8, ptr %967, align 1, !tbaa !81
  %969 = zext i8 %968 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %969) #3
  br label %970

970:                                              ; preds = %965, %963, %961
  %971 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.12 = icmp eq i8 %971, 0
  br i1 %.not151.12, label %979, label %972

972:                                              ; preds = %970
  %973 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.12 = icmp eq i8 %973, 0
  br i1 %.not152.12, label %979, label %974

974:                                              ; preds = %972
  %975 = load ptr, ptr %7, align 8, !tbaa !5
  %976 = getelementptr inbounds i8, ptr %975, i64 772
  %977 = load i8, ptr %976, align 1, !tbaa !81
  %978 = zext i8 %977 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %978) #3
  br label %979

979:                                              ; preds = %974, %972, %970
  %980 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.13 = icmp eq i8 %980, 0
  br i1 %.not151.13, label %988, label %981

981:                                              ; preds = %979
  %982 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.13 = icmp eq i8 %982, 0
  br i1 %.not152.13, label %988, label %983

983:                                              ; preds = %981
  %984 = load ptr, ptr %7, align 8, !tbaa !5
  %985 = getelementptr inbounds i8, ptr %984, i64 773
  %986 = load i8, ptr %985, align 1, !tbaa !81
  %987 = zext i8 %986 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %987) #3
  br label %988

988:                                              ; preds = %983, %981, %979
  %989 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.14 = icmp eq i8 %989, 0
  br i1 %.not151.14, label %997, label %990

990:                                              ; preds = %988
  %991 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.14 = icmp eq i8 %991, 0
  br i1 %.not152.14, label %997, label %992

992:                                              ; preds = %990
  %993 = load ptr, ptr %7, align 8, !tbaa !5
  %994 = getelementptr inbounds i8, ptr %993, i64 774
  %995 = load i8, ptr %994, align 1, !tbaa !81
  %996 = zext i8 %995 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %996) #3
  br label %997

997:                                              ; preds = %992, %990, %988
  %998 = call zeroext i8 @DebugPrintEnabled() #3
  %.not151.15 = icmp eq i8 %998, 0
  br i1 %.not151.15, label %1006, label %999

999:                                              ; preds = %997
  %1000 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not152.15 = icmp eq i8 %1000, 0
  br i1 %.not152.15, label %1006, label %1001

1001:                                             ; preds = %999
  %1002 = load ptr, ptr %7, align 8, !tbaa !5
  %1003 = getelementptr inbounds i8, ptr %1002, i64 775
  %1004 = load i8, ptr %1003, align 1, !tbaa !81
  %1005 = zext i8 %1004 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.22, i32 noundef %1005) #3
  br label %1006

1006:                                             ; preds = %1001, %999, %997
  %1007 = call zeroext i8 @DebugPrintEnabled() #3
  %.not145 = icmp eq i8 %1007, 0
  br i1 %.not145, label %1011, label %1008

1008:                                             ; preds = %1006
  %1009 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not146 = icmp eq i8 %1009, 0
  br i1 %.not146, label %1011, label %1010

1010:                                             ; preds = %1008
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.23) #3
  br label %1011

1011:                                             ; preds = %1006, %1010, %1008
  %1012 = call zeroext i8 @DebugPrintEnabled() #3
  %.not147 = icmp eq i8 %1012, 0
  br i1 %.not147, label %1016, label %1013

1013:                                             ; preds = %1011
  %1014 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not148 = icmp eq i8 %1014, 0
  br i1 %.not148, label %1016, label %1015

1015:                                             ; preds = %1013
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.27) #3
  br label %1016

1016:                                             ; preds = %1013, %1015, %1011
  %1017 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1018 = getelementptr inbounds i8, ptr %1017, i64 328
  %1019 = load ptr, ptr %1018, align 8, !tbaa !91
  %1020 = load ptr, ptr %7, align 8, !tbaa !5
  %1021 = getelementptr inbounds i8, ptr %1020, i64 8
  %1022 = getelementptr inbounds i8, ptr %1020, i64 16
  %1023 = getelementptr inbounds i8, ptr %1020, i64 800
  %1024 = getelementptr inbounds i8, ptr %1020, i64 840
  %1025 = load ptr, ptr %1024, align 8, !tbaa !82
  %1026 = call i64 (ptr, ...) %1019(ptr noundef nonnull %1021, ptr noundef nonnull @gEfiSimpleNetworkProtocolGuid, ptr noundef nonnull %1022, ptr noundef nonnull @gEfiNetworkInterfaceIdentifierProtocolGuid, ptr noundef nonnull %1023, ptr noundef nonnull @gEfiDevicePathProtocolGuid, ptr noundef %1025, ptr noundef null) #3
  %1027 = icmp slt i64 %1026, 0
  br i1 %1027, label %.thread186, label %1028

1028:                                             ; preds = %1016
  %1029 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1030 = getelementptr inbounds i8, ptr %1029, i64 280
  %1031 = load ptr, ptr %1030, align 8, !tbaa !14
  %1032 = load ptr, ptr %24, align 8, !tbaa !15
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = getelementptr inbounds i8, ptr %1033, i64 8
  %1035 = load ptr, ptr %1034, align 8, !tbaa !92
  %1036 = call i64 %1031(ptr noundef %1, ptr noundef nonnull @gEfiPciIoProtocolGuid, ptr noundef nonnull %6, ptr noundef %1032, ptr noundef %1035, i32 noundef 8) #3
  %1037 = call zeroext i8 @DebugPrintEnabled() #3
  %.not149 = icmp eq i8 %1037, 0
  br i1 %.not149, label %1041, label %1038

1038:                                             ; preds = %1028
  %1039 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1) #3
  %.not150 = icmp eq i8 %1039, 0
  br i1 %.not150, label %1041, label %1040

1040:                                             ; preds = %1038
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1, ptr noundef nonnull @.str.28) #3
  br label %1041

1041:                                             ; preds = %1028, %1040, %1038
  %1042 = icmp slt i64 %1036, 0
  br i1 %1042, label %.thread186, label %1157

.thread186:                                       ; preds = %35, %61, %1016, %288, %278, %268, %245, %235, %199, %194, %189, %184, %164, %165, %167, %153, %155, %157, %140, %142, %144, %108, %109, %111, %84, %86, %88, %55, %49, %41, %28, %20, %1041
  %.167188 = phi i64 [ %1036, %1041 ], [ -9223372036854775799, %61 ], [ %1026, %1016 ], [ %293, %288 ], [ %281, %278 ], [ %271, %268 ], [ %248, %245 ], [ %238, %235 ], [ %202, %199 ], [ %197, %194 ], [ %192, %189 ], [ %187, %184 ], [ %161, %164 ], [ %161, %165 ], [ %161, %167 ], [ %151, %153 ], [ %151, %155 ], [ %151, %157 ], [ %138, %140 ], [ %138, %142 ], [ %138, %144 ], [ %105, %108 ], [ %105, %109 ], [ %105, %111 ], [ %82, %84 ], [ %82, %86 ], [ %82, %88 ], [ %59, %55 ], [ %53, %49 ], [ %47, %41 ], [ %33, %28 ], [ %26, %20 ], [ %39, %35 ]
  %1043 = load ptr, ptr %7, align 8, !tbaa !5
  %.not173 = icmp eq ptr %1043, null
  br i1 %.not173, label %1132, label %1044

1044:                                             ; preds = %.thread186
  %1045 = getelementptr inbounds i8, ptr %1043, i64 16
  %1046 = call i64 @Undi16SimpleNetworkShutdown(ptr noundef nonnull %1045)
  %1047 = load ptr, ptr %7, align 8, !tbaa !5
  %1048 = call i64 @Undi16SimpleNetworkCleanupUndi(ptr noundef %1047)
  %1049 = load ptr, ptr %7, align 8, !tbaa !5
  %1050 = call i64 @Undi16SimpleNetworkStopUndi(ptr noundef %1049)
  %1051 = load ptr, ptr %7, align 8, !tbaa !5
  %1052 = getelementptr inbounds i8, ptr %1051, i64 864
  %1053 = load i8, ptr %1052, align 8, !tbaa !42
  %.not174 = icmp eq i8 %1053, 0
  br i1 %.not174, label %1056, label %1054

1054:                                             ; preds = %1044
  %1055 = call i64 @Undi16SimpleNetworkUnloadUndi(ptr noundef nonnull %1051)
  %.pre = load ptr, ptr %7, align 8, !tbaa !5
  br label %1056

1056:                                             ; preds = %1054, %1044
  %1057 = phi ptr [ %.pre, %1054 ], [ %1051, %1044 ]
  %1058 = getelementptr inbounds i8, ptr %1057, i64 128
  %1059 = load ptr, ptr %1058, align 8, !tbaa !93
  %.not175 = icmp eq ptr %1059, null
  br i1 %.not175, label %1065, label %1060

1060:                                             ; preds = %1056
  %1061 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1062 = getelementptr inbounds i8, ptr %1061, i64 112
  %1063 = load ptr, ptr %1062, align 8, !tbaa !94
  %1064 = call i64 %1063(ptr noundef nonnull %1059) #3
  %.pre195 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1065

1065:                                             ; preds = %1060, %1056
  %1066 = phi ptr [ %.pre195, %1060 ], [ %1057, %1056 ]
  %1067 = getelementptr inbounds i8, ptr %1066, i64 880
  %1068 = load ptr, ptr %1067, align 8, !tbaa !95
  %.not176 = icmp eq ptr %1068, null
  br i1 %.not176, label %1074, label %1069

1069:                                             ; preds = %1065
  %1070 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1071 = getelementptr inbounds i8, ptr %1070, i64 112
  %1072 = load ptr, ptr %1071, align 8, !tbaa !94
  %1073 = call i64 %1072(ptr noundef nonnull %1068) #3
  %.pre196 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1074

1074:                                             ; preds = %1069, %1065
  %1075 = phi ptr [ %.pre196, %1069 ], [ %1066, %1065 ]
  %1076 = getelementptr inbounds i8, ptr %1075, i64 872
  %1077 = load ptr, ptr %1076, align 8, !tbaa !96
  %.not177 = icmp eq ptr %1077, null
  br i1 %.not177, label %1083, label %1078

1078:                                             ; preds = %1074
  %1079 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1080 = getelementptr inbounds i8, ptr %1079, i64 112
  %1081 = load ptr, ptr %1080, align 8, !tbaa !94
  %1082 = call i64 %1081(ptr noundef nonnull %1077) #3
  %.pre197 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1083

1083:                                             ; preds = %1078, %1074
  %1084 = phi ptr [ %.pre197, %1078 ], [ %1075, %1074 ]
  %1085 = getelementptr inbounds i8, ptr %1084, i64 1560
  %1086 = load ptr, ptr %1085, align 8, !tbaa !68
  %.not178 = icmp eq ptr %1086, null
  br i1 %.not178, label %1093, label %1087

1087:                                             ; preds = %1083
  %1088 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1089 = getelementptr inbounds i8, ptr %1088, i64 48
  %1090 = load ptr, ptr %1089, align 8, !tbaa !97
  %1091 = ptrtoint ptr %1086 to i64
  %1092 = call i64 %1090(i64 noundef %1091, i64 noundef 1) #3
  %.pre198 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1093

1093:                                             ; preds = %1087, %1083
  %1094 = phi ptr [ %.pre198, %1087 ], [ %1084, %1083 ]
  %1095 = getelementptr inbounds i8, ptr %1094, i64 1568
  %1096 = load ptr, ptr %1095, align 8, !tbaa !67
  %.not179 = icmp eq ptr %1096, null
  br i1 %.not179, label %1103, label %1097

1097:                                             ; preds = %1093
  %1098 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1099 = getelementptr inbounds i8, ptr %1098, i64 48
  %1100 = load ptr, ptr %1099, align 8, !tbaa !97
  %1101 = ptrtoint ptr %1096 to i64
  %1102 = call i64 %1100(i64 noundef %1101, i64 noundef 1) #3
  %.pre199 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1103

1103:                                             ; preds = %1097, %1093
  %1104 = phi ptr [ %.pre199, %1097 ], [ %1094, %1093 ]
  %1105 = getelementptr inbounds i8, ptr %1104, i64 1576
  %1106 = load ptr, ptr %1105, align 8, !tbaa !76
  %.not180 = icmp eq ptr %1106, null
  br i1 %.not180, label %1113, label %1107

1107:                                             ; preds = %1103
  %1108 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1109 = getelementptr inbounds i8, ptr %1108, i64 48
  %1110 = load ptr, ptr %1109, align 8, !tbaa !97
  %1111 = ptrtoint ptr %1106 to i64
  %1112 = call i64 %1110(i64 noundef %1111, i64 noundef 1) #3
  %.pre200 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1113

1113:                                             ; preds = %1107, %1103
  %1114 = phi ptr [ %.pre200, %1107 ], [ %1104, %1103 ]
  %1115 = getelementptr inbounds i8, ptr %1114, i64 1584
  %1116 = load ptr, ptr %1115, align 8, !tbaa !98
  %.not181 = icmp eq ptr %1116, null
  br i1 %.not181, label %1123, label %1117

1117:                                             ; preds = %1113
  %1118 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1119 = getelementptr inbounds i8, ptr %1118, i64 48
  %1120 = load ptr, ptr %1119, align 8, !tbaa !97
  %1121 = ptrtoint ptr %1116 to i64
  %1122 = call i64 %1120(i64 noundef %1121, i64 noundef 1) #3
  %.pre201 = load ptr, ptr %7, align 8, !tbaa !5
  br label %1123

1123:                                             ; preds = %1117, %1113
  %1124 = phi ptr [ %.pre201, %1117 ], [ %1114, %1113 ]
  %1125 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1126 = getelementptr inbounds i8, ptr %1125, i64 72
  %1127 = load ptr, ptr %1126, align 8, !tbaa !99
  %1128 = call i64 %1127(ptr noundef %1124) #3
  %1129 = load i8, ptr @mCachedInt1A, align 1, !tbaa !81
  %.not182 = icmp eq i8 %1129, 0
  br i1 %.not182, label %1132, label %1130

1130:                                             ; preds = %1123
  %1131 = call i64 @RestoreCachedVectorAddress(i8 noundef zeroext 26) #3
  store i8 0, ptr @mCachedInt1A, align 1, !tbaa !81
  br label %1132

1132:                                             ; preds = %1123, %1130, %.thread186
  %1133 = load ptr, ptr %6, align 8, !tbaa !5
  %.not183 = icmp eq ptr %1133, null
  br i1 %.not183, label %1146, label %1134

1134:                                             ; preds = %1132
  %1135 = getelementptr inbounds i8, ptr %1133, i64 120
  %1136 = load ptr, ptr %1135, align 8, !tbaa !17
  %1137 = call i64 %1136(ptr noundef nonnull %1133, i32 noundef 4, i64 noundef 0, ptr noundef nonnull %14) #3
  %1138 = icmp slt i64 %1137, 0
  br i1 %1138, label %1146, label %1139

1139:                                             ; preds = %1134
  %1140 = load i64, ptr %14, align 8, !tbaa !20
  %1141 = and i64 %1140, 1792
  store i64 %1141, ptr %14, align 8, !tbaa !20
  %1142 = load ptr, ptr %6, align 8, !tbaa !5
  %1143 = getelementptr inbounds i8, ptr %1142, i64 120
  %1144 = load ptr, ptr %1143, align 8, !tbaa !17
  %1145 = call i64 %1144(ptr noundef %1142, i32 noundef 3, i64 noundef %1141, ptr noundef null) #3
  br label %1146

1146:                                             ; preds = %1134, %1139, %1132
  %.268 = phi i64 [ %1137, %1134 ], [ %1145, %1139 ], [ %.167188, %1132 ]
  %1147 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1148 = getelementptr inbounds i8, ptr %1147, i64 288
  %1149 = load ptr, ptr %1148, align 8, !tbaa !100
  %1150 = load ptr, ptr %24, align 8, !tbaa !15
  %1151 = call i64 %1149(ptr noundef %1, ptr noundef nonnull @gEfiPciIoProtocolGuid, ptr noundef %1150, ptr noundef %1) #3
  %1152 = load ptr, ptr @gBS, align 8, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %1152, i64 288
  %1154 = load ptr, ptr %1153, align 8, !tbaa !100
  %1155 = load ptr, ptr %24, align 8, !tbaa !15
  %1156 = call i64 %1154(ptr noundef %1, ptr noundef nonnull @gEfiDevicePathProtocolGuid, ptr noundef %1155, ptr noundef %1) #3
  %.not184 = icmp eq i64 %.268, -9223372036854775799
  %spec.store.select = select i1 %.not184, i64 -9223372036854775799, i64 -9223372036854775801
  br label %1157

1157:                                             ; preds = %1041, %1146, %3
  %.070 = phi i64 [ %18, %3 ], [ %spec.store.select, %1146 ], [ %1036, %1041 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #3
  ret i64 %.070
}

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

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkLoadUndi(ptr noundef) local_unnamed_addr #0

declare zeroext i8 @DebugPrintEnabled() local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStartUndi(ptr noundef, i16 noundef zeroext) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStart(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStop(ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkReset(ptr noundef, i8 noundef zeroext) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkShutdown(ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkReceiveFilters(ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i64 noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStationAddress(ptr noundef, i8 noundef zeroext, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStatistics(ptr noundef, i8 noundef zeroext, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkMCastIpToMac(ptr noundef, i8 noundef zeroext, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkNvData(ptr noundef, i8 noundef zeroext, i64 noundef, i64 noundef, ptr noundef) #0

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @Undi16SimpleNetworkWaitForPacket(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @Undi16SimpleNetworkEvent(ptr noundef, ptr noundef) #0

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

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkGetInformation(ptr noundef) local_unnamed_addr #0

declare zeroext i16 @SetDevicePathNodeLength(ptr noundef, i64 noundef) local_unnamed_addr #2

declare ptr @AppendDevicePathNode(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkGetNicType(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkGetNdisInfo(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkCleanupUndi(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkStopUndi(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local i64 @Undi16SimpleNetworkUnloadUndi(ptr noundef) local_unnamed_addr #0

declare i64 @RestoreCachedVectorAddress(i8 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 = { mustprogress 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 320}
!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 280}
!15 = !{!16, !6, i64 40}
!16 = !{!"_EFI_DRIVER_BINDING_PROTOCOL", !6, i64 0, !6, i64 8, !6, i64 16, !13, i64 24, !6, i64 32, !6, i64 40}
!17 = !{!18, !6, i64 120}
!18 = !{!"_EFI_PCI_IO_PROTOCOL", !6, i64 0, !6, i64 8, !19, i64 16, !19, i64 32, !19, i64 48, !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, !12, i64 144, !6, i64 152}
!19 = !{!"", !6, i64 0, !6, i64 8}
!20 = !{!12, !12, i64 0}
!21 = !{!22, !6, i64 16}
!22 = !{!"_EFI_LEGACY_BIOS_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}
!23 = !{!22, !6, i64 24}
!24 = !{!10, !6, i64 64}
!25 = !{!26, !12, i64 0}
!26 = !{!"", !12, i64 0, !6, i64 8, !27, i64 16, !28, i64 144, !30, i64 800, !6, i64 840, !6, i64 848, !6, i64 856, !7, i64 864, !6, i64 872, !6, i64 880, !31, i64 888, !31, i64 890, !32, i64 896, !6, i64 1416, !6, i64 1424, !33, i64 1432, !34, i64 1482, !35, i64 1499, !7, i64 1541, !36, i64 1542, !6, i64 1560, !6, i64 1568, !6, i64 1576, !6, i64 1584, !7, i64 1592, !12, i64 1600, !12, i64 1608, !12, i64 1616, !12, i64 1624, !6, i64 1632, !6, i64 1640, !6, i64 1648, !6, i64 1656}
!27 = !{!"_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}
!28 = !{!"", !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, !29, i64 552, !29, i64 584, !29, i64 616, !7, i64 648, !7, i64 649, !7, i64 650, !7, i64 651, !7, i64 652}
!29 = !{!"", !7, i64 0}
!30 = !{!"_EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL", !12, i64 0, !12, i64 8, !12, i64 16, !13, i64 24, !7, i64 28, !7, i64 32, !7, i64 33, !7, i64 34, !7, i64 35, !31, i64 36}
!31 = !{!"short", !7, i64 0}
!32 = !{!"", !13, i64 0, !13, i64 4, !7, i64 8}
!33 = !{!"", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !31, i64 8, !31, i64 10, !7, i64 12, !7, i64 28, !31, i64 44, !31, i64 46, !31, i64 48}
!34 = !{!"", !31, i64 0, !7, i64 2, !7, i64 3}
!35 = !{!"", !31, i64 0, !7, i64 2, !13, i64 18, !13, i64 22, !7, i64 26}
!36 = !{!"", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !31, i64 8, !31, i64 10, !31, i64 12, !7, i64 14, !7, i64 15}
!37 = !{!26, !6, i64 856}
!38 = !{!26, !6, i64 1416}
!39 = !{!26, !6, i64 848}
!40 = !{!26, !12, i64 800}
!41 = !{!26, !7, i64 832}
!42 = !{!26, !7, i64 864}
!43 = !{!18, !6, i64 112}
!44 = !{!26, !12, i64 16}
!45 = !{!26, !6, i64 24}
!46 = !{!26, !6, i64 32}
!47 = !{!26, !6, i64 40}
!48 = !{!26, !6, i64 48}
!49 = !{!26, !6, i64 56}
!50 = !{!26, !6, i64 64}
!51 = !{!26, !6, i64 72}
!52 = !{!26, !6, i64 80}
!53 = !{!26, !6, i64 88}
!54 = !{!26, !6, i64 96}
!55 = !{!26, !6, i64 104}
!56 = !{!26, !6, i64 112}
!57 = !{!26, !6, i64 120}
!58 = !{!26, !6, i64 136}
!59 = !{!10, !6, i64 80}
!60 = !{!10, !6, i64 368}
!61 = !{!26, !13, i64 144}
!62 = !{!26, !13, i64 152}
!63 = !{!26, !7, i64 793}
!64 = !{!26, !7, i64 794}
!65 = !{!26, !13, i64 168}
!66 = !{!26, !13, i64 176}
!67 = !{!26, !6, i64 1568}
!68 = !{!26, !6, i64 1560}
!69 = !{!70, !31, i64 2}
!70 = !{!"", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !7, i64 8}
!71 = !{!70, !31, i64 4}
!72 = !{!70, !31, i64 6}
!73 = !{!74, !7, i64 0}
!74 = !{!"DataBlk", !7, i64 0, !7, i64 1, !31, i64 2, !31, i64 4, !31, i64 6}
!75 = !{!74, !7, i64 1}
!76 = !{!26, !6, i64 1576}
!77 = !{!74, !31, i64 4}
!78 = !{!74, !31, i64 6}
!79 = !{!26, !13, i64 896}
!80 = !{!26, !13, i64 900}
!81 = !{!7, !7, i64 0}
!82 = !{!26, !6, i64 840}
!83 = !{!26, !13, i64 148}
!84 = !{!26, !13, i64 160}
!85 = !{!26, !13, i64 164}
!86 = !{!26, !13, i64 172}
!87 = !{!26, !7, i64 792}
!88 = !{!26, !13, i64 180}
!89 = distinct !{!89, !90}
!90 = !{!"llvm.loop.mustprogress"}
!91 = !{!10, !6, i64 328}
!92 = !{!26, !6, i64 8}
!93 = !{!26, !6, i64 128}
!94 = !{!10, !6, i64 112}
!95 = !{!26, !6, i64 880}
!96 = !{!26, !6, i64 872}
!97 = !{!10, !6, i64 48}
!98 = !{!26, !6, i64 1584}
!99 = !{!10, !6, i64 72}
!100 = !{!10, !6, i64 288}


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