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

; 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"

%union.EFI_IA32_REGISTER_SET = type { %struct.EFI_DWORD_REGS }
%struct.EFI_DWORD_REGS = type { i32, i32, i32, i32, i32, i32, %struct.EFI_EFLAGS_REG, i16, i16, i16, i16, i16, i16, i32, i32 }
%struct.EFI_EFLAGS_REG = type { i32 }
%struct.OPTION_ROM_HEADER = type { i16, i8, [4 x i8], [15 x i8], i16, i16, i16 }
%struct.UNDI_ROMID_T = type { [4 x i8], i8, i8, i8, [3 x i8], i16, i16, i16, i16, [4 x i8] }
%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.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.UNDI_LOADER_T = type { i16, i16, i16, i16, i16, i16, i16, i16, %struct.SEGOFF16, %struct.SEGOFF16 }
%struct.SEGOFF16 = type { i16, i16 }
%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_WORD_REGS = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, %struct.EFI_FLAGS_REG, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.EFI_FLAGS_REG = type { i16 }
%struct._EFI_LEGACY_BIOS_PROTOCOL = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.PXE_T = type { [4 x i8], i8, i8, i8, i8, %struct.SEGOFF16, %struct.SEGOFF16, %struct.SEGOFF16, %struct.SEGOFF16, %struct.SEGOFF16, i8, i8, i16, %struct.NEWSEGDESC_T, %struct.NEWSEGDESC_T, %struct.NEWSEGDESC_T, %struct.NEWSEGDESC_T, %struct.NEWSEGDESC_T, %struct.NEWSEGDESC_T, %struct.NEWSEGDESC_T }
%struct.NEWSEGDESC_T = type <{ i16, i32, i16 }>

@.str.69 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [45 x i8], align 1
@gBS = external global ptr, align 8
@.str.82 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [31 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @Print_Undi_Loader_Table(ptr noundef) #1

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 void @Print_ROMID_Table(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @Print_PXE_Table(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @Print_PXENV_Table(ptr noundef) #1

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

22:                                               ; preds = %2
  %23 = call zeroext i8 @DebugPrintEnabled()
  %24 = icmp ne i8 %23, 0
  br i1 %24, label %25, label %33

25:                                               ; preds = %22
  br label %26

26:                                               ; preds = %25
  %27 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %28 = icmp ne i8 %27, 0
  br i1 %28, label %29, label %30

29:                                               ; preds = %26
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.69)
  br label %30

30:                                               ; preds = %29, %26
  br label %31

31:                                               ; preds = %30
  br label %32

32:                                               ; preds = %31
  br label %33

33:                                               ; preds = %32, %22
  br label %34

34:                                               ; preds = %33
  br label %35

35:                                               ; preds = %34
  %36 = load i64, ptr %5, align 8, !tbaa !9
  %37 = inttoptr i64 %36 to ptr
  %38 = getelementptr inbounds %struct.OPTION_ROM_HEADER, ptr %37, i32 0, i32 1
  %39 = load i8, ptr %38, align 1, !tbaa !11
  %40 = zext i8 %39 to i32
  %41 = shl i32 %40, 9
  store i32 %41, ptr %15, align 4, !tbaa !14
  %42 = load i64, ptr %5, align 8, !tbaa !9
  %43 = inttoptr i64 %42 to ptr
  %44 = load i32, ptr %15, align 4, !tbaa !14
  %45 = zext i32 %44 to i64
  %46 = call zeroext i8 @CalculateSum8(ptr noundef %43, i64 noundef %45)
  %47 = zext i8 %46 to i32
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %49, label %64

49:                                               ; preds = %35
  br label %50

50:                                               ; preds = %49
  %51 = call zeroext i8 @DebugPrintEnabled()
  %52 = icmp ne i8 %51, 0
  br i1 %52, label %53, label %61

53:                                               ; preds = %50
  br label %54

54:                                               ; preds = %53
  %55 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %56 = icmp ne i8 %55, 0
  br i1 %56, label %57, label %58

57:                                               ; preds = %54
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.70)
  br label %58

58:                                               ; preds = %57, %54
  br label %59

59:                                               ; preds = %58
  br label %60

60:                                               ; preds = %59
  br label %61

61:                                               ; preds = %60, %50
  br label %62

62:                                               ; preds = %61
  br label %63

63:                                               ; preds = %62
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

64:                                               ; preds = %35
  %65 = load i64, ptr %5, align 8, !tbaa !9
  %66 = load i64, ptr %5, align 8, !tbaa !9
  %67 = inttoptr i64 %66 to ptr
  %68 = getelementptr inbounds %struct.OPTION_ROM_HEADER, ptr %67, i32 0, i32 4
  %69 = load i16, ptr %68, align 1, !tbaa !16
  %70 = zext i16 %69 to i64
  %71 = add i64 %65, %70
  %72 = inttoptr i64 %71 to ptr
  store ptr %72, ptr %8, align 8, !tbaa !5
  %73 = load i64, ptr %5, align 8, !tbaa !9
  %74 = inttoptr i64 %73 to ptr
  %75 = getelementptr inbounds %struct.OPTION_ROM_HEADER, ptr %74, i32 0, i32 4
  %76 = load i16, ptr %75, align 1, !tbaa !16
  %77 = zext i16 %76 to i32
  %78 = load ptr, ptr %8, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %78, i32 0, i32 1
  %80 = load i8, ptr %79, align 1, !tbaa !17
  %81 = zext i8 %80 to i32
  %82 = add nsw i32 %77, %81
  %83 = sext i32 %82 to i64
  %84 = load i32, ptr %15, align 4, !tbaa !14
  %85 = zext i32 %84 to i64
  %86 = icmp ugt i64 %83, %85
  br i1 %86, label %87, label %102

87:                                               ; preds = %64
  br label %88

88:                                               ; preds = %87
  %89 = call zeroext i8 @DebugPrintEnabled()
  %90 = icmp ne i8 %89, 0
  br i1 %90, label %91, label %99

91:                                               ; preds = %88
  br label %92

92:                                               ; preds = %91
  %93 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %94 = icmp ne i8 %93, 0
  br i1 %94, label %95, label %96

95:                                               ; preds = %92
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.71)
  br label %96

96:                                               ; preds = %95, %92
  br label %97

97:                                               ; preds = %96
  br label %98

98:                                               ; preds = %97
  br label %99

99:                                               ; preds = %98, %88
  br label %100

100:                                              ; preds = %99
  br label %101

101:                                              ; preds = %100
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

102:                                              ; preds = %64
  %103 = load ptr, ptr %8, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds [4 x i8], ptr %104, i64 0, i64 0
  %106 = call i64 @CompareMem(ptr noundef %105, ptr noundef @.str.72, i64 noundef 4)
  %107 = icmp ne i64 %106, 0
  br i1 %107, label %108, label %123

108:                                              ; preds = %102
  br label %109

109:                                              ; preds = %108
  %110 = call zeroext i8 @DebugPrintEnabled()
  %111 = icmp ne i8 %110, 0
  br i1 %111, label %112, label %120

112:                                              ; preds = %109
  br label %113

113:                                              ; preds = %112
  %114 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %115 = icmp ne i8 %114, 0
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.73)
  br label %117

117:                                              ; preds = %116, %113
  br label %118

118:                                              ; preds = %117
  br label %119

119:                                              ; preds = %118
  br label %120

120:                                              ; preds = %119, %109
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

123:                                              ; preds = %102
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %125, i32 0, i32 1
  %127 = load i8, ptr %126, align 1, !tbaa !17
  %128 = zext i8 %127 to i64
  %129 = call zeroext i8 @CalculateSum8(ptr noundef %124, i64 noundef %128)
  %130 = zext i8 %129 to i32
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %147

132:                                              ; preds = %123
  br label %133

133:                                              ; preds = %132
  %134 = call zeroext i8 @DebugPrintEnabled()
  %135 = icmp ne i8 %134, 0
  br i1 %135, label %136, label %144

136:                                              ; preds = %133
  br label %137

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

140:                                              ; preds = %137
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.74)
  br label %141

141:                                              ; preds = %140, %137
  br label %142

142:                                              ; preds = %141
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143, %133
  br label %145

145:                                              ; preds = %144
  br label %146

146:                                              ; preds = %145
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

147:                                              ; preds = %123
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  call void @Print_ROMID_Table(ptr noundef %148)
  br label %149

149:                                              ; preds = %147
  %150 = call zeroext i8 @DebugPrintEnabled()
  %151 = icmp ne i8 %150, 0
  br i1 %151, label %152, label %161

152:                                              ; preds = %149
  br label %153

153:                                              ; preds = %152
  %154 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %155 = icmp ne i8 %154, 0
  br i1 %155, label %156, label %158

156:                                              ; preds = %153
  %157 = load ptr, ptr %8, align 8, !tbaa !5
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.75, ptr noundef %157)
  br label %158

158:                                              ; preds = %156, %153
  br label %159

159:                                              ; preds = %158
  br label %160

160:                                              ; preds = %159
  br label %161

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

162:                                              ; preds = %161
  br label %163

163:                                              ; preds = %162
  br label %164

164:                                              ; preds = %163
  %165 = call zeroext i8 @DebugPrintEnabled()
  %166 = icmp ne i8 %165, 0
  br i1 %166, label %167, label %181

167:                                              ; preds = %164
  br label %168

168:                                              ; preds = %167
  %169 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %170 = icmp ne i8 %169, 0
  br i1 %170, label %171, label %178

171:                                              ; preds = %168
  %172 = load i64, ptr %5, align 8, !tbaa !9
  %173 = load ptr, ptr %8, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %173, i32 0, i32 5
  %175 = load i16, ptr %174, align 1, !tbaa !19
  %176 = zext i16 %175 to i64
  %177 = add i64 %172, %176
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.76, i64 noundef %177)
  br label %178

178:                                              ; preds = %171, %168
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  br label %181

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

182:                                              ; preds = %181
  br label %183

183:                                              ; preds = %182
  %184 = load i64, ptr %5, align 8, !tbaa !9
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %185, i32 0, i32 4
  %187 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %186, i32 0, i32 2
  store i64 %184, ptr %187, align 8, !tbaa !20
  %188 = load i32, ptr %15, align 4, !tbaa !14
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %189, i32 0, i32 4
  %191 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %190, i32 0, i32 3
  store i32 %188, ptr %191, align 8, !tbaa !31
  %192 = load ptr, ptr %8, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %192, i32 0, i32 4
  %194 = getelementptr inbounds [3 x i8], ptr %193, i64 0, i64 2
  %195 = load i8, ptr %194, align 1, !tbaa !32
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %196, i32 0, i32 4
  %198 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %197, i32 0, i32 6
  store i8 %195, ptr %198, align 1, !tbaa !33
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %199, i32 0, i32 4
  %201 = getelementptr inbounds [3 x i8], ptr %200, i64 0, i64 1
  %202 = load i8, ptr %201, align 1, !tbaa !32
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %203, i32 0, i32 4
  %205 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %204, i32 0, i32 7
  store i8 %202, ptr %205, align 2, !tbaa !34
  br label %206

206:                                              ; preds = %183
  %207 = call zeroext i8 @DebugPrintEnabled()
  %208 = icmp ne i8 %207, 0
  br i1 %208, label %209, label %217

209:                                              ; preds = %206
  br label %210

210:                                              ; preds = %209
  %211 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %212 = icmp ne i8 %211, 0
  br i1 %212, label %213, label %214

213:                                              ; preds = %210
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.77)
  br label %214

214:                                              ; preds = %213, %210
  br label %215

215:                                              ; preds = %214
  br label %216

216:                                              ; preds = %215
  br label %217

217:                                              ; preds = %216, %206
  br label %218

218:                                              ; preds = %217
  br label %219

219:                                              ; preds = %218
  %220 = load ptr, ptr %4, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %220, i32 0, i32 26
  store i64 1, ptr %221, align 8, !tbaa !35
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %222, i32 0, i32 26
  %224 = load i64, ptr %223, align 8, !tbaa !35
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %225, i32 0, i32 30
  %227 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %224, ptr noundef %226)
  store i64 %227, ptr %6, align 8, !tbaa !9
  %228 = load i64, ptr %6, align 8, !tbaa !9
  %229 = icmp slt i64 %228, 0
  br i1 %229, label %230, label %246

230:                                              ; preds = %219
  br label %231

231:                                              ; preds = %230
  %232 = call zeroext i8 @DebugPrintEnabled()
  %233 = icmp ne i8 %232, 0
  br i1 %233, label %234, label %243

234:                                              ; preds = %231
  br label %235

235:                                              ; preds = %234
  %236 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %237 = icmp ne i8 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %235
  %239 = load i64, ptr %6, align 8, !tbaa !9
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.78, i64 noundef %239)
  br label %240

240:                                              ; preds = %238, %235
  br label %241

241:                                              ; preds = %240
  br label %242

242:                                              ; preds = %241
  br label %243

243:                                              ; preds = %242, %231
  br label %244

244:                                              ; preds = %243
  br label %245

245:                                              ; preds = %244
  store i64 -9223372036854775799, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

246:                                              ; preds = %219
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %247, i32 0, i32 30
  %249 = load ptr, ptr %248, align 8, !tbaa !36
  store ptr %249, ptr %9, align 8, !tbaa !5
  br label %250

250:                                              ; preds = %246
  %251 = call zeroext i8 @DebugPrintEnabled()
  %252 = icmp ne i8 %251, 0
  br i1 %252, label %253, label %261

253:                                              ; preds = %250
  br label %254

254:                                              ; preds = %253
  %255 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %256 = icmp ne i8 %255, 0
  br i1 %256, label %257, label %258

257:                                              ; preds = %254
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.79)
  br label %258

258:                                              ; preds = %257, %254
  br label %259

259:                                              ; preds = %258
  br label %260

260:                                              ; preds = %259
  br label %261

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

262:                                              ; preds = %261
  br label %263

263:                                              ; preds = %262
  br label %264

264:                                              ; preds = %263
  %265 = call zeroext i8 @DebugPrintEnabled()
  %266 = icmp ne i8 %265, 0
  br i1 %266, label %267, label %275

267:                                              ; preds = %264
  br label %268

268:                                              ; preds = %267
  %269 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %270 = icmp ne i8 %269, 0
  br i1 %270, label %271, label %272

271:                                              ; preds = %268
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.80)
  br label %272

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

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  br label %275

275:                                              ; preds = %274, %264
  br label %276

276:                                              ; preds = %275
  br label %277

277:                                              ; preds = %276
  br label %278

278:                                              ; preds = %277
  %279 = call zeroext i8 @DebugPrintEnabled()
  %280 = icmp ne i8 %279, 0
  br i1 %280, label %281, label %289

281:                                              ; preds = %278
  br label %282

282:                                              ; preds = %281
  %283 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %284 = icmp ne i8 %283, 0
  br i1 %284, label %285, label %286

285:                                              ; preds = %282
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.81)
  br label %286

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

287:                                              ; preds = %286
  br label %288

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288, %278
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  store i64 256, ptr %13, align 8, !tbaa !9
  %292 = load ptr, ptr @gBS, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %292, i32 0, i32 6
  %294 = load ptr, ptr %293, align 8, !tbaa !37
  %295 = load i64, ptr %13, align 8, !tbaa !9
  %296 = call i64 %294(i32 noundef 2, i64 noundef %295, ptr noundef %12)
  store i64 %296, ptr %6, align 8, !tbaa !9
  %297 = load i64, ptr %6, align 8, !tbaa !9
  %298 = icmp slt i64 %297, 0
  br i1 %298, label %299, label %301

299:                                              ; preds = %291
  %300 = load i64, ptr %6, align 8, !tbaa !9
  store i64 %300, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

301:                                              ; preds = %291
  %302 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %302, ptr %11, align 8, !tbaa !5
  %303 = load ptr, ptr %9, align 8, !tbaa !5
  %304 = ptrtoint ptr %303 to i64
  %305 = trunc i64 %304 to i32
  %306 = and i32 %305, 65535
  %307 = trunc i32 %306 to i16
  %308 = load ptr, ptr %11, align 8, !tbaa !5
  %309 = getelementptr inbounds i16, ptr %308, i32 1
  store ptr %309, ptr %11, align 8, !tbaa !5
  store i16 %307, ptr %308, align 2, !tbaa !40
  %310 = load ptr, ptr %9, align 8, !tbaa !5
  %311 = ptrtoint ptr %310 to i64
  %312 = trunc i64 %311 to i32
  %313 = zext i32 %312 to i64
  %314 = call i64 @RShiftU64(i64 noundef %313, i64 noundef 4)
  %315 = and i64 %314, 61440
  %316 = trunc i64 %315 to i16
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = getelementptr inbounds i16, ptr %317, i32 1
  store ptr %318, ptr %11, align 8, !tbaa !5
  store i16 %316, ptr %317, align 2, !tbaa !40
  %319 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %319, ptr %11, align 8, !tbaa !5
  br label %320

320:                                              ; preds = %301
  %321 = call zeroext i8 @DebugPrintEnabled()
  %322 = icmp ne i8 %321, 0
  br i1 %322, label %323, label %333

323:                                              ; preds = %320
  br label %324

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

327:                                              ; preds = %324
  %328 = load ptr, ptr %11, align 8, !tbaa !5
  %329 = ptrtoint ptr %328 to i64
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.82, i64 noundef %329)
  br label %330

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

331:                                              ; preds = %330
  br label %332

332:                                              ; preds = %331
  br label %333

333:                                              ; preds = %332, %320
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  %336 = load ptr, ptr %8, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %336, i32 0, i32 7
  %338 = load i16, ptr %337, align 1, !tbaa !41
  %339 = zext i16 %338 to i32
  %340 = ashr i32 %339, 12
  %341 = load ptr, ptr %8, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %341, i32 0, i32 7
  %343 = load i16, ptr %342, align 1, !tbaa !41
  %344 = zext i16 %343 to i32
  %345 = and i32 %344, 4095
  %346 = icmp ne i32 %345, 0
  %347 = zext i1 %346 to i64
  %348 = select i1 %346, i32 1, i32 0
  %349 = add nsw i32 %340, %348
  %350 = sext i32 %349 to i64
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %351, i32 0, i32 27
  store i64 %350, ptr %352, align 8, !tbaa !42
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %353, i32 0, i32 27
  %355 = load i64, ptr %354, align 8, !tbaa !42
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %356, i32 0, i32 31
  %358 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %355, ptr noundef %357)
  store i64 %358, ptr %6, align 8, !tbaa !9
  %359 = load i64, ptr %6, align 8, !tbaa !9
  %360 = icmp slt i64 %359, 0
  br i1 %360, label %361, label %378

361:                                              ; preds = %335
  br label %362

362:                                              ; preds = %361
  %363 = call zeroext i8 @DebugPrintEnabled()
  %364 = icmp ne i8 %363, 0
  br i1 %364, label %365, label %374

365:                                              ; preds = %362
  br label %366

366:                                              ; preds = %365
  %367 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %368 = icmp ne i8 %367, 0
  br i1 %368, label %369, label %371

369:                                              ; preds = %366
  %370 = load i64, ptr %6, align 8, !tbaa !9
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.78, i64 noundef %370)
  br label %371

371:                                              ; preds = %369, %366
  br label %372

372:                                              ; preds = %371
  br label %373

373:                                              ; preds = %372
  br label %374

374:                                              ; preds = %373, %362
  br label %375

375:                                              ; preds = %374
  br label %376

376:                                              ; preds = %375
  %377 = load i64, ptr %6, align 8, !tbaa !9
  store i64 %377, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

378:                                              ; preds = %335
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %379, i32 0, i32 31
  %381 = load ptr, ptr %380, align 8, !tbaa !43
  %382 = ptrtoint ptr %381 to i64
  %383 = lshr i64 %382, 4
  %384 = trunc i64 %383 to i16
  %385 = load ptr, ptr %9, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %385, i32 0, i32 6
  store i16 %384, ptr %386, align 1, !tbaa !44
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %387, i32 0, i32 6
  %389 = load i16, ptr %388, align 1, !tbaa !47
  %390 = zext i16 %389 to i32
  %391 = ashr i32 %390, 12
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %392, i32 0, i32 6
  %394 = load i16, ptr %393, align 1, !tbaa !47
  %395 = zext i16 %394 to i32
  %396 = and i32 %395, 4095
  %397 = icmp ne i32 %396, 0
  %398 = zext i1 %397 to i64
  %399 = select i1 %397, i32 1, i32 0
  %400 = add nsw i32 %391, %399
  %401 = sext i32 %400 to i64
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %402, i32 0, i32 28
  store i64 %401, ptr %403, align 8, !tbaa !48
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %404, i32 0, i32 28
  %406 = load i64, ptr %405, align 8, !tbaa !48
  %407 = load ptr, ptr %4, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %407, i32 0, i32 32
  %409 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %406, ptr noundef %408)
  store i64 %409, ptr %6, align 8, !tbaa !9
  %410 = load i64, ptr %6, align 8, !tbaa !9
  %411 = icmp slt i64 %410, 0
  br i1 %411, label %412, label %429

412:                                              ; preds = %378
  br label %413

413:                                              ; preds = %412
  %414 = call zeroext i8 @DebugPrintEnabled()
  %415 = icmp ne i8 %414, 0
  br i1 %415, label %416, label %425

416:                                              ; preds = %413
  br label %417

417:                                              ; preds = %416
  %418 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %419 = icmp ne i8 %418, 0
  br i1 %419, label %420, label %422

420:                                              ; preds = %417
  %421 = load i64, ptr %6, align 8, !tbaa !9
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.78, i64 noundef %421)
  br label %422

422:                                              ; preds = %420, %417
  br label %423

423:                                              ; preds = %422
  br label %424

424:                                              ; preds = %423
  br label %425

425:                                              ; preds = %424, %413
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  %428 = load i64, ptr %6, align 8, !tbaa !9
  store i64 %428, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

429:                                              ; preds = %378
  %430 = load ptr, ptr %8, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %430, i32 0, i32 8
  %432 = load i16, ptr %431, align 1, !tbaa !49
  %433 = zext i16 %432 to i32
  %434 = ashr i32 %433, 12
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %435, i32 0, i32 8
  %437 = load i16, ptr %436, align 1, !tbaa !49
  %438 = zext i16 %437 to i32
  %439 = and i32 %438, 4095
  %440 = icmp ne i32 %439, 0
  %441 = zext i1 %440 to i64
  %442 = select i1 %440, i32 1, i32 0
  %443 = add nsw i32 %434, %442
  %444 = sext i32 %443 to i64
  %445 = load ptr, ptr %4, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %445, i32 0, i32 29
  store i64 %444, ptr %446, align 8, !tbaa !50
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %447, i32 0, i32 29
  %449 = load i64, ptr %448, align 8, !tbaa !50
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %450, i32 0, i32 33
  %452 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %449, ptr noundef %451)
  store i64 %452, ptr %6, align 8, !tbaa !9
  %453 = load i64, ptr %6, align 8, !tbaa !9
  %454 = icmp slt i64 %453, 0
  br i1 %454, label %455, label %472

455:                                              ; preds = %429
  br label %456

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

459:                                              ; preds = %456
  br label %460

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

463:                                              ; preds = %460
  %464 = load i64, ptr %6, align 8, !tbaa !9
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.78, i64 noundef %464)
  br label %465

465:                                              ; preds = %463, %460
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  br label %468

468:                                              ; preds = %467, %456
  br label %469

469:                                              ; preds = %468
  br label %470

470:                                              ; preds = %469
  %471 = load i64, ptr %6, align 8, !tbaa !9
  store i64 %471, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

472:                                              ; preds = %429
  %473 = load ptr, ptr %4, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %473, i32 0, i32 33
  %475 = load ptr, ptr %474, align 8, !tbaa !51
  %476 = ptrtoint ptr %475 to i64
  %477 = lshr i64 %476, 4
  %478 = trunc i64 %477 to i16
  %479 = load ptr, ptr %9, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %479, i32 0, i32 7
  store i16 %478, ptr %480, align 1, !tbaa !52
  %481 = load ptr, ptr %9, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %481, i32 0, i32 0
  store i16 -21931, ptr %482, align 1, !tbaa !53
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %483, i32 0, i32 6
  %485 = load ptr, ptr %484, align 8, !tbaa !54
  %486 = getelementptr inbounds %struct._EFI_PCI_IO_PROTOCOL, ptr %485, i32 0, i32 11
  %487 = load ptr, ptr %486, align 8, !tbaa !55
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %488, i32 0, i32 6
  %490 = load ptr, ptr %489, align 8, !tbaa !54
  %491 = call i64 %487(ptr noundef %490, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19)
  %492 = load i64, ptr %17, align 8, !tbaa !9
  %493 = shl i64 %492, 8
  %494 = load i64, ptr %18, align 8, !tbaa !9
  %495 = shl i64 %494, 3
  %496 = or i64 %493, %495
  %497 = load i64, ptr %19, align 8, !tbaa !9
  %498 = or i64 %496, %497
  %499 = trunc i64 %498 to i16
  %500 = load ptr, ptr %9, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %500, i32 0, i32 1
  store i16 %499, ptr %501, align 1, !tbaa !58
  %502 = load ptr, ptr %9, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %502, i32 0, i32 2
  store i16 0, ptr %503, align 1, !tbaa !59
  %504 = load ptr, ptr %9, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %504, i32 0, i32 3
  store i16 0, ptr %505, align 1, !tbaa !60
  %506 = load ptr, ptr %9, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %506, i32 0, i32 4
  store i16 0, ptr %507, align 1, !tbaa !61
  %508 = load ptr, ptr %9, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %508, i32 0, i32 5
  store i16 0, ptr %509, align 1, !tbaa !62
  %510 = load ptr, ptr %9, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %510, i32 0, i32 8
  %512 = getelementptr inbounds %struct.SEGOFF16, ptr %511, i32 0, i32 0
  store i16 0, ptr %512, align 1, !tbaa !63
  %513 = load ptr, ptr %9, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %513, i32 0, i32 8
  %515 = getelementptr inbounds %struct.SEGOFF16, ptr %514, i32 0, i32 1
  store i16 0, ptr %515, align 1, !tbaa !64
  %516 = load ptr, ptr %9, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %516, i32 0, i32 9
  %518 = getelementptr inbounds %struct.SEGOFF16, ptr %517, i32 0, i32 1
  store i16 0, ptr %518, align 1, !tbaa !65
  %519 = load ptr, ptr %9, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %519, i32 0, i32 9
  %521 = getelementptr inbounds %struct.SEGOFF16, ptr %520, i32 0, i32 0
  store i16 0, ptr %521, align 1, !tbaa !66
  br label %522

522:                                              ; preds = %472
  %523 = call zeroext i8 @DebugPrintEnabled()
  %524 = icmp ne i8 %523, 0
  br i1 %524, label %525, label %536

525:                                              ; preds = %522
  br label %526

526:                                              ; preds = %525
  %527 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1)
  %528 = icmp ne i8 %527, 0
  br i1 %528, label %529, label %533

529:                                              ; preds = %526
  %530 = load i64, ptr %17, align 8, !tbaa !9
  %531 = load i64, ptr %18, align 8, !tbaa !9
  %532 = load i64, ptr %19, align 8, !tbaa !9
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1, ptr noundef @.str.83, i64 noundef %530, i64 noundef %531, i64 noundef %532)
  br label %533

533:                                              ; preds = %529, %526
  br label %534

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534
  br label %536

536:                                              ; preds = %535, %522
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537
  %539 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 0
  store i16 0, ptr %539, align 4, !tbaa !32
  %540 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 2
  store i16 0, ptr %540, align 4, !tbaa !32
  %541 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 4
  store i16 0, ptr %541, align 4, !tbaa !32
  %542 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 6
  store i16 0, ptr %542, align 4, !tbaa !32
  %543 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 8
  store i16 0, ptr %543, align 4, !tbaa !32
  %544 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 10
  store i16 0, ptr %544, align 4, !tbaa !32
  %545 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 20
  store i16 0, ptr %545, align 4, !tbaa !32
  %546 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 17
  store i16 0, ptr %546, align 2, !tbaa !32
  %547 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 14
  store i16 0, ptr %547, align 4, !tbaa !32
  br label %548

548:                                              ; preds = %538
  %549 = call zeroext i8 @DebugPrintEnabled()
  %550 = icmp ne i8 %549, 0
  br i1 %550, label %551, label %559

551:                                              ; preds = %548
  br label %552

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

555:                                              ; preds = %552
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.84)
  br label %556

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

557:                                              ; preds = %556
  br label %558

558:                                              ; preds = %557
  br label %559

559:                                              ; preds = %558, %548
  br label %560

560:                                              ; preds = %559
  br label %561

561:                                              ; preds = %560
  br label %562

562:                                              ; preds = %561
  %563 = call zeroext i8 @DebugPrintEnabled()
  %564 = icmp ne i8 %563, 0
  br i1 %564, label %565, label %573

565:                                              ; preds = %562
  br label %566

566:                                              ; preds = %565
  %567 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %568 = icmp ne i8 %567, 0
  br i1 %568, label %569, label %570

569:                                              ; preds = %566
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.85)
  br label %570

570:                                              ; preds = %569, %566
  br label %571

571:                                              ; preds = %570
  br label %572

572:                                              ; preds = %571
  br label %573

573:                                              ; preds = %572, %562
  br label %574

574:                                              ; preds = %573
  br label %575

575:                                              ; preds = %574
  br label %576

576:                                              ; preds = %575
  %577 = call zeroext i8 @DebugPrintEnabled()
  %578 = icmp ne i8 %577, 0
  br i1 %578, label %579, label %590

579:                                              ; preds = %576
  br label %580

580:                                              ; preds = %579
  %581 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %582 = icmp ne i8 %581, 0
  br i1 %582, label %583, label %587

583:                                              ; preds = %580
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = ptrtoint ptr %584 to i64
  %586 = trunc i64 %585 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.86, i32 noundef %586)
  br label %587

587:                                              ; preds = %583, %580
  br label %588

588:                                              ; preds = %587
  br label %589

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589, %576
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  br label %593

593:                                              ; preds = %592
  %594 = call zeroext i8 @DebugPrintEnabled()
  %595 = icmp ne i8 %594, 0
  br i1 %595, label %596, label %618

596:                                              ; preds = %593
  br label %597

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

600:                                              ; preds = %597
  %601 = load ptr, ptr %9, align 8, !tbaa !5
  %602 = ptrtoint ptr %601 to i64
  %603 = trunc i64 %602 to i32
  %604 = zext i32 %603 to i64
  %605 = call i64 @RShiftU64(i64 noundef %604, i64 noundef 4)
  %606 = and i64 %605, 61440
  %607 = trunc i64 %606 to i16
  %608 = zext i16 %607 to i32
  %609 = load ptr, ptr %9, align 8, !tbaa !5
  %610 = ptrtoint ptr %609 to i64
  %611 = trunc i64 %610 to i32
  %612 = and i32 %611, 65535
  %613 = trunc i32 %612 to i16
  %614 = zext i16 %613 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.87, i32 noundef %608, i32 noundef %614)
  br label %615

615:                                              ; preds = %600, %597
  br label %616

616:                                              ; preds = %615
  br label %617

617:                                              ; preds = %616
  br label %618

618:                                              ; preds = %617, %593
  br label %619

619:                                              ; preds = %618
  br label %620

620:                                              ; preds = %619
  br label %621

621:                                              ; preds = %620
  %622 = call zeroext i8 @DebugPrintEnabled()
  %623 = icmp ne i8 %622, 0
  br i1 %623, label %624, label %638

624:                                              ; preds = %621
  br label %625

625:                                              ; preds = %624
  %626 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %627 = icmp ne i8 %626, 0
  br i1 %627, label %628, label %635

628:                                              ; preds = %625
  %629 = load i64, ptr %5, align 8, !tbaa !9
  %630 = load ptr, ptr %8, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %630, i32 0, i32 5
  %632 = load i16, ptr %631, align 1, !tbaa !19
  %633 = zext i16 %632 to i64
  %634 = add i64 %629, %633
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.88, i64 noundef %634)
  br label %635

635:                                              ; preds = %628, %625
  br label %636

636:                                              ; preds = %635
  br label %637

637:                                              ; preds = %636
  br label %638

638:                                              ; preds = %637, %621
  br label %639

639:                                              ; preds = %638
  br label %640

640:                                              ; preds = %639
  br label %641

641:                                              ; preds = %640
  %642 = call zeroext i8 @DebugPrintEnabled()
  %643 = icmp ne i8 %642, 0
  br i1 %643, label %644, label %656

644:                                              ; preds = %641
  br label %645

645:                                              ; preds = %644
  %646 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %647 = icmp ne i8 %646, 0
  br i1 %647, label %648, label %653

648:                                              ; preds = %645
  %649 = load ptr, ptr %8, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %649, i32 0, i32 5
  %651 = load i16, ptr %650, align 1, !tbaa !19
  %652 = zext i16 %651 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.89, i32 noundef %652)
  br label %653

653:                                              ; preds = %648, %645
  br label %654

654:                                              ; preds = %653
  br label %655

655:                                              ; preds = %654
  br label %656

656:                                              ; preds = %655, %641
  br label %657

657:                                              ; preds = %656
  br label %658

658:                                              ; preds = %657
  br label %659

659:                                              ; preds = %658
  %660 = call zeroext i8 @DebugPrintEnabled()
  %661 = icmp ne i8 %660, 0
  br i1 %661, label %662, label %670

662:                                              ; preds = %659
  br label %663

663:                                              ; preds = %662
  %664 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %665 = icmp ne i8 %664, 0
  br i1 %665, label %666, label %667

666:                                              ; preds = %663
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.90)
  br label %667

667:                                              ; preds = %666, %663
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668
  br label %670

670:                                              ; preds = %669, %659
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  %673 = load ptr, ptr %9, align 8, !tbaa !5
  call void @Print_Undi_Loader_Table(ptr noundef %673)
  %674 = load i64, ptr %5, align 8, !tbaa !9
  %675 = call i64 @RShiftU64(i64 noundef %674, i64 noundef 4)
  %676 = and i64 %675, 65535
  %677 = trunc i64 %676 to i16
  store i16 %677, ptr %10, align 2, !tbaa !40
  br label %678

678:                                              ; preds = %672
  %679 = call zeroext i8 @DebugPrintEnabled()
  %680 = icmp ne i8 %679, 0
  br i1 %680, label %681, label %691

681:                                              ; preds = %678
  br label %682

682:                                              ; preds = %681
  %683 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %684 = icmp ne i8 %683, 0
  br i1 %684, label %685, label %688

685:                                              ; preds = %682
  %686 = load i16, ptr %10, align 2, !tbaa !40
  %687 = zext i16 %686 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.91, i32 noundef %687)
  br label %688

688:                                              ; preds = %685, %682
  br label %689

689:                                              ; preds = %688
  br label %690

690:                                              ; preds = %689
  br label %691

691:                                              ; preds = %690, %678
  br label %692

692:                                              ; preds = %691
  br label %693

693:                                              ; preds = %692
  br label %694

694:                                              ; preds = %693
  %695 = call zeroext i8 @DebugPrintEnabled()
  %696 = icmp ne i8 %695, 0
  br i1 %696, label %697, label %705

697:                                              ; preds = %694
  br label %698

698:                                              ; preds = %697
  %699 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1)
  %700 = icmp ne i8 %699, 0
  br i1 %700, label %701, label %702

701:                                              ; preds = %698
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1, ptr noundef @.str.92)
  br label %702

702:                                              ; preds = %701, %698
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703
  br label %705

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

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  %709 = call zeroext i8 @DebugPrintEnabled()
  %710 = icmp ne i8 %709, 0
  br i1 %710, label %711, label %719

711:                                              ; preds = %708
  br label %712

712:                                              ; preds = %711
  %713 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %714 = icmp ne i8 %713, 0
  br i1 %714, label %715, label %716

715:                                              ; preds = %712
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.93)
  br label %716

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

717:                                              ; preds = %716
  br label %718

718:                                              ; preds = %717
  br label %719

719:                                              ; preds = %718, %708
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720
  br label %722

722:                                              ; preds = %721
  %723 = call zeroext i8 @DebugPrintEnabled()
  %724 = icmp ne i8 %723, 0
  br i1 %724, label %725, label %733

725:                                              ; preds = %722
  br label %726

726:                                              ; preds = %725
  %727 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %728 = icmp ne i8 %727, 0
  br i1 %728, label %729, label %730

729:                                              ; preds = %726
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.94)
  br label %730

730:                                              ; preds = %729, %726
  br label %731

731:                                              ; preds = %730
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732, %722
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  br label %736

736:                                              ; preds = %735
  %737 = call zeroext i8 @DebugPrintEnabled()
  %738 = icmp ne i8 %737, 0
  br i1 %738, label %739, label %761

739:                                              ; preds = %736
  br label %740

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

743:                                              ; preds = %740
  %744 = load i16, ptr %10, align 2, !tbaa !40
  %745 = zext i16 %744 to i32
  %746 = mul nsw i32 %745, 16
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %747, i32 0, i32 5
  %749 = load i16, ptr %748, align 1, !tbaa !19
  %750 = zext i16 %749 to i32
  %751 = add nsw i32 %746, %750
  %752 = load i16, ptr %10, align 2, !tbaa !40
  %753 = zext i16 %752 to i32
  %754 = load ptr, ptr %8, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %754, i32 0, i32 5
  %756 = load i16, ptr %755, align 1, !tbaa !19
  %757 = zext i16 %756 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.95, i32 noundef %751, i32 noundef %753, i32 noundef %757)
  br label %758

758:                                              ; preds = %743, %740
  br label %759

759:                                              ; preds = %758
  br label %760

760:                                              ; preds = %759
  br label %761

761:                                              ; preds = %760, %736
  br label %762

762:                                              ; preds = %761
  br label %763

763:                                              ; preds = %762
  %764 = load ptr, ptr %4, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %764, i32 0, i32 7
  %766 = load ptr, ptr %765, align 8, !tbaa !67
  %767 = getelementptr inbounds %struct._EFI_LEGACY_BIOS_PROTOCOL, ptr %766, i32 0, i32 1
  %768 = load ptr, ptr %767, align 8, !tbaa !68
  %769 = load ptr, ptr %4, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %769, i32 0, i32 7
  %771 = load ptr, ptr %770, align 8, !tbaa !67
  %772 = load i16, ptr %10, align 2, !tbaa !40
  %773 = load ptr, ptr %8, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.UNDI_ROMID_T, ptr %773, i32 0, i32 5
  %775 = load i16, ptr %774, align 1, !tbaa !19
  %776 = load ptr, ptr %12, align 8, !tbaa !5
  %777 = load i64, ptr %13, align 8, !tbaa !9
  %778 = call zeroext i8 %768(ptr noundef %771, i16 noundef zeroext %772, i16 noundef zeroext %775, ptr noundef %7, ptr noundef %776, i64 noundef %777)
  store i8 %778, ptr %20, align 1, !tbaa !32
  %779 = load i8, ptr %20, align 1, !tbaa !32
  %780 = icmp ne i8 %779, 0
  br i1 %780, label %781, label %782

781:                                              ; preds = %763
  store i64 -9223372036854775787, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

782:                                              ; preds = %763
  br label %783

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

786:                                              ; preds = %783
  br label %787

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

790:                                              ; preds = %787
  %791 = load ptr, ptr %9, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %791, i32 0, i32 0
  %793 = load i16, ptr %792, align 1, !tbaa !53
  %794 = zext i16 %793 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.96, i32 noundef %794)
  br label %795

795:                                              ; preds = %790, %787
  br label %796

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797, %783
  br label %799

799:                                              ; preds = %798
  br label %800

800:                                              ; preds = %799
  br label %801

801:                                              ; preds = %800
  %802 = call zeroext i8 @DebugPrintEnabled()
  %803 = icmp ne i8 %802, 0
  br i1 %803, label %804, label %815

804:                                              ; preds = %801
  br label %805

805:                                              ; preds = %804
  %806 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %807 = icmp ne i8 %806, 0
  br i1 %807, label %808, label %812

808:                                              ; preds = %805
  %809 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 0
  %810 = load i16, ptr %809, align 4, !tbaa !32
  %811 = zext i16 %810 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.97, i32 noundef %811)
  br label %812

812:                                              ; preds = %808, %805
  br label %813

813:                                              ; preds = %812
  br label %814

814:                                              ; preds = %813
  br label %815

815:                                              ; preds = %814, %801
  br label %816

816:                                              ; preds = %815
  br label %817

817:                                              ; preds = %816
  %818 = load ptr, ptr %9, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %818, i32 0, i32 0
  %820 = load i16, ptr %819, align 1, !tbaa !53
  %821 = zext i16 %820 to i32
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %828, label %823

823:                                              ; preds = %817
  %824 = getelementptr inbounds %struct.EFI_WORD_REGS, ptr %7, i32 0, i32 0
  %825 = load i16, ptr %824, align 4, !tbaa !32
  %826 = zext i16 %825 to i32
  %827 = icmp ne i32 %826, 0
  br i1 %827, label %828, label %844

828:                                              ; preds = %823, %817
  br label %829

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

832:                                              ; preds = %829
  br label %833

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

836:                                              ; preds = %833
  %837 = load i64, ptr %5, align 8, !tbaa !9
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.98, i64 noundef %837)
  br label %838

838:                                              ; preds = %836, %833
  br label %839

839:                                              ; preds = %838
  br label %840

840:                                              ; preds = %839
  br label %841

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

842:                                              ; preds = %841
  br label %843

843:                                              ; preds = %842
  store i64 -9223372036854775787, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

844:                                              ; preds = %823
  br label %845

845:                                              ; preds = %844
  %846 = call zeroext i8 @DebugPrintEnabled()
  %847 = icmp ne i8 %846, 0
  br i1 %847, label %848, label %856

848:                                              ; preds = %845
  br label %849

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

852:                                              ; preds = %849
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.99)
  br label %853

853:                                              ; preds = %852, %849
  br label %854

854:                                              ; preds = %853
  br label %855

855:                                              ; preds = %854
  br label %856

856:                                              ; preds = %855, %845
  br label %857

857:                                              ; preds = %856
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858
  %860 = call zeroext i8 @DebugPrintEnabled()
  %861 = icmp ne i8 %860, 0
  br i1 %861, label %862, label %870

862:                                              ; preds = %859
  br label %863

863:                                              ; preds = %862
  %864 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %865 = icmp ne i8 %864, 0
  br i1 %865, label %866, label %867

866:                                              ; preds = %863
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.100)
  br label %867

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

868:                                              ; preds = %867
  br label %869

869:                                              ; preds = %868
  br label %870

870:                                              ; preds = %869, %859
  br label %871

871:                                              ; preds = %870
  br label %872

872:                                              ; preds = %871
  %873 = load ptr, ptr %9, align 8, !tbaa !5
  call void @Print_Undi_Loader_Table(ptr noundef %873)
  br label %874

874:                                              ; preds = %872
  %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.101)
  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
  %888 = load ptr, ptr %9, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %888, i32 0, i32 9
  %890 = getelementptr inbounds %struct.SEGOFF16, ptr %889, i32 0, i32 1
  %891 = load i16, ptr %890, align 1, !tbaa !65
  %892 = zext i16 %891 to i32
  %893 = shl i32 %892, 4
  %894 = load ptr, ptr %9, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %894, i32 0, i32 9
  %896 = getelementptr inbounds %struct.SEGOFF16, ptr %895, i32 0, i32 0
  %897 = load i16, ptr %896, align 1, !tbaa !66
  %898 = zext i16 %897 to i32
  %899 = or i32 %893, %898
  %900 = sext i32 %899 to i64
  %901 = inttoptr i64 %900 to ptr
  call void @Print_PXENV_Table(ptr noundef %901)
  %902 = load ptr, ptr %9, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %902, i32 0, i32 8
  %904 = getelementptr inbounds %struct.SEGOFF16, ptr %903, i32 0, i32 1
  %905 = load i16, ptr %904, align 1, !tbaa !64
  %906 = zext i16 %905 to i32
  %907 = shl i32 %906, 4
  %908 = load ptr, ptr %9, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %908, i32 0, i32 8
  %910 = getelementptr inbounds %struct.SEGOFF16, ptr %909, i32 0, i32 0
  %911 = load i16, ptr %910, align 1, !tbaa !63
  %912 = zext i16 %911 to i32
  %913 = add nsw i32 %907, %912
  %914 = sext i32 %913 to i64
  %915 = inttoptr i64 %914 to ptr
  call void @Print_PXE_Table(ptr noundef %915)
  %916 = load ptr, ptr %9, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %916, i32 0, i32 8
  %918 = getelementptr inbounds %struct.SEGOFF16, ptr %917, i32 0, i32 1
  %919 = load i16, ptr %918, align 1, !tbaa !64
  %920 = zext i16 %919 to i32
  %921 = shl i32 %920, 4
  %922 = load ptr, ptr %9, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.UNDI_LOADER_T, ptr %922, i32 0, i32 8
  %924 = getelementptr inbounds %struct.SEGOFF16, ptr %923, i32 0, i32 0
  %925 = load i16, ptr %924, align 1, !tbaa !63
  %926 = zext i16 %925 to i32
  %927 = add nsw i32 %921, %926
  %928 = sext i32 %927 to i64
  %929 = inttoptr i64 %928 to ptr
  store ptr %929, ptr %14, align 8, !tbaa !5
  %930 = load ptr, ptr %14, align 8, !tbaa !5
  %931 = ptrtoint ptr %930 to i64
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %932, i32 0, i32 4
  %934 = getelementptr inbounds %struct._EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, ptr %933, i32 0, i32 1
  store i64 %931, ptr %934, align 8, !tbaa !70
  %935 = load ptr, ptr @gBS, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.EFI_BOOT_SERVICES, ptr %935, i32 0, i32 7
  %937 = load ptr, ptr %936, align 8, !tbaa !71
  %938 = load ptr, ptr %12, align 8, !tbaa !5
  %939 = call i64 %937(ptr noundef %938)
  %940 = load ptr, ptr %14, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.PXE_T, ptr %940, i32 0, i32 0
  %942 = getelementptr inbounds [4 x i8], ptr %941, i64 0, i64 0
  %943 = call i64 @CompareMem(ptr noundef %942, ptr noundef @.str.102, i64 noundef 4)
  %944 = icmp ne i64 %943, 0
  br i1 %944, label %945, label %960

945:                                              ; preds = %887
  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 2147483648)
  %952 = icmp ne i8 %951, 0
  br i1 %952, label %953, label %954

953:                                              ; preds = %950
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.103)
  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 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

960:                                              ; preds = %887
  %961 = load ptr, ptr %14, align 8, !tbaa !5
  %962 = load ptr, ptr %14, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.PXE_T, ptr %962, i32 0, i32 1
  %964 = load i8, ptr %963, align 1, !tbaa !72
  %965 = zext i8 %964 to i64
  %966 = call zeroext i8 @CalculateSum8(ptr noundef %961, i64 noundef %965)
  %967 = zext i8 %966 to i32
  %968 = icmp ne i32 %967, 0
  br i1 %968, label %969, label %984

969:                                              ; preds = %960
  br label %970

970:                                              ; preds = %969
  %971 = call zeroext i8 @DebugPrintEnabled()
  %972 = icmp ne i8 %971, 0
  br i1 %972, label %973, label %981

973:                                              ; preds = %970
  br label %974

974:                                              ; preds = %973
  %975 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %976 = icmp ne i8 %975, 0
  br i1 %976, label %977, label %978

977:                                              ; preds = %974
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.104)
  br label %978

978:                                              ; preds = %977, %974
  br label %979

979:                                              ; preds = %978
  br label %980

980:                                              ; preds = %979
  br label %981

981:                                              ; preds = %980, %970
  br label %982

982:                                              ; preds = %981
  br label %983

983:                                              ; preds = %982
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

984:                                              ; preds = %960
  %985 = load ptr, ptr %14, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.PXE_T, ptr %985, i32 0, i32 1
  %987 = load i8, ptr %986, align 1, !tbaa !72
  %988 = zext i8 %987 to i64
  %989 = load ptr, ptr %14, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.PXE_T, ptr %989, i32 0, i32 12
  %991 = load ptr, ptr %14, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.PXE_T, ptr %991, i32 0, i32 0
  %993 = getelementptr inbounds [4 x i8], ptr %992, i64 0, i64 0
  %994 = ptrtoint ptr %990 to i64
  %995 = ptrtoint ptr %993 to i64
  %996 = sub i64 %994, %995
  %997 = icmp slt i64 %988, %996
  br i1 %997, label %998, label %1013

998:                                              ; preds = %984
  br label %999

999:                                              ; preds = %998
  %1000 = call zeroext i8 @DebugPrintEnabled()
  %1001 = icmp ne i8 %1000, 0
  br i1 %1001, label %1002, label %1010

1002:                                             ; preds = %999
  br label %1003

1003:                                             ; preds = %1002
  %1004 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %1005 = icmp ne i8 %1004, 0
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1003
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.105)
  br label %1007

1007:                                             ; preds = %1006, %1003
  br label %1008

1008:                                             ; preds = %1007
  br label %1009

1009:                                             ; preds = %1008
  br label %1010

1010:                                             ; preds = %1009, %999
  br label %1011

1011:                                             ; preds = %1010
  br label %1012

1012:                                             ; preds = %1011
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

1013:                                             ; preds = %984
  %1014 = load ptr, ptr %14, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.PXE_T, ptr %1014, i32 0, i32 5
  %1016 = getelementptr inbounds %struct.SEGOFF16, ptr %1015, i32 0, i32 1
  %1017 = load i16, ptr %1016, align 1, !tbaa !75
  %1018 = zext i16 %1017 to i64
  %1019 = shl i64 %1018, 4
  %1020 = load ptr, ptr %14, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.PXE_T, ptr %1020, i32 0, i32 5
  %1022 = getelementptr inbounds %struct.SEGOFF16, ptr %1021, i32 0, i32 0
  %1023 = load i16, ptr %1022, align 1, !tbaa !76
  %1024 = zext i16 %1023 to i64
  %1025 = add i64 %1019, %1024
  %1026 = load ptr, ptr %8, align 8, !tbaa !5
  %1027 = ptrtoint ptr %1026 to i64
  %1028 = icmp ne i64 %1025, %1027
  br i1 %1028, label %1029, label %1044

1029:                                             ; preds = %1013
  br label %1030

1030:                                             ; preds = %1029
  %1031 = call zeroext i8 @DebugPrintEnabled()
  %1032 = icmp ne i8 %1031, 0
  br i1 %1032, label %1033, label %1041

1033:                                             ; preds = %1030
  br label %1034

1034:                                             ; preds = %1033
  %1035 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %1036 = icmp ne i8 %1035, 0
  br i1 %1036, label %1037, label %1038

1037:                                             ; preds = %1034
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.106)
  br label %1038

1038:                                             ; preds = %1037, %1034
  br label %1039

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  br label %1041

1041:                                             ; preds = %1040, %1030
  br label %1042

1042:                                             ; preds = %1041
  br label %1043

1043:                                             ; preds = %1042
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

1044:                                             ; preds = %1013
  %1045 = load ptr, ptr %14, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.PXE_T, ptr %1045, i32 0, i32 7
  %1047 = getelementptr inbounds %struct.SEGOFF16, ptr %1046, i32 0, i32 1
  %1048 = load i16, ptr %1047, align 1, !tbaa !77
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1049, i32 0, i32 11
  store i16 %1048, ptr %1050, align 8, !tbaa !78
  %1051 = load ptr, ptr %4, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1051, i32 0, i32 11
  %1053 = load i16, ptr %1052, align 8, !tbaa !78
  %1054 = zext i16 %1053 to i32
  %1055 = icmp eq i32 %1054, 0
  br i1 %1055, label %1056, label %1071

1056:                                             ; preds = %1044
  br label %1057

1057:                                             ; preds = %1056
  %1058 = call zeroext i8 @DebugPrintEnabled()
  %1059 = icmp ne i8 %1058, 0
  br i1 %1059, label %1060, label %1068

1060:                                             ; preds = %1057
  br label %1061

1061:                                             ; preds = %1060
  %1062 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648)
  %1063 = icmp ne i8 %1062, 0
  br i1 %1063, label %1064, label %1065

1064:                                             ; preds = %1061
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef @.str.107)
  br label %1065

1065:                                             ; preds = %1064, %1061
  br label %1066

1066:                                             ; preds = %1065
  br label %1067

1067:                                             ; preds = %1066
  br label %1068

1068:                                             ; preds = %1067, %1057
  br label %1069

1069:                                             ; preds = %1068
  br label %1070

1070:                                             ; preds = %1069
  store i64 -9223372036854775794, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

1071:                                             ; preds = %1044
  %1072 = load ptr, ptr %14, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.PXE_T, ptr %1072, i32 0, i32 7
  %1074 = getelementptr inbounds %struct.SEGOFF16, ptr %1073, i32 0, i32 0
  %1075 = load i16, ptr %1074, align 1, !tbaa !79
  %1076 = load ptr, ptr %4, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1076, i32 0, i32 12
  store i16 %1075, ptr %1077, align 2, !tbaa !80
  br label %1078

1078:                                             ; preds = %1071
  %1079 = call zeroext i8 @DebugPrintEnabled()
  %1080 = icmp ne i8 %1079, 0
  br i1 %1080, label %1081, label %1097

1081:                                             ; preds = %1078
  br label %1082

1082:                                             ; preds = %1081
  %1083 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384)
  %1084 = icmp ne i8 %1083, 0
  br i1 %1084, label %1085, label %1094

1085:                                             ; preds = %1082
  %1086 = load ptr, ptr %4, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1086, i32 0, i32 11
  %1088 = load i16, ptr %1087, align 8, !tbaa !78
  %1089 = zext i16 %1088 to i32
  %1090 = load ptr, ptr %4, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.EFI_SIMPLE_NETWORK_DEV, ptr %1090, i32 0, i32 12
  %1092 = load i16, ptr %1091, align 2, !tbaa !80
  %1093 = zext i16 %1092 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef @.str.108, i32 noundef %1089, i32 noundef %1093)
  br label %1094

1094:                                             ; preds = %1085, %1082
  br label %1095

1095:                                             ; preds = %1094
  br label %1096

1096:                                             ; preds = %1095
  br label %1097

1097:                                             ; preds = %1096, %1078
  br label %1098

1098:                                             ; preds = %1097
  br label %1099

1099:                                             ; preds = %1098
  store i64 0, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1100

1100:                                             ; preds = %1099, %1070, %1043, %1012, %983, %959, %843, %781, %470, %427, %376, %299, %245, %146, %122, %101, %63
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 48, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  %1101 = load i64, ptr %3, align 8
  ret i64 %1101
}

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

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

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

declare i64 @RShiftU64(i64 noundef, i64 noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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, !10, i64 0}
!10 = !{!"long long", !7, i64 0}
!11 = !{!12, !7, i64 2}
!12 = !{!"", !13, i64 0, !7, i64 2, !7, i64 3, !7, i64 7, !13, i64 22, !13, i64 24, !13, i64 26}
!13 = !{!"short", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!12, !13, i64 22}
!17 = !{!18, !7, i64 4}
!18 = !{!"", !7, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7, !13, i64 10, !13, i64 12, !13, i64 14, !13, i64 16, !7, i64 18}
!19 = !{!18, !13, i64 10}
!20 = !{!21, !10, i64 816}
!21 = !{!"", !10, i64 0, !6, i64 8, !22, i64 16, !23, i64 144, !25, i64 800, !6, i64 840, !6, i64 848, !6, i64 856, !7, i64 864, !6, i64 872, !6, i64 880, !13, i64 888, !13, i64 890, !26, i64 896, !6, i64 1416, !6, i64 1424, !27, i64 1432, !28, i64 1482, !29, i64 1499, !7, i64 1541, !30, i64 1542, !6, i64 1560, !6, i64 1568, !6, i64 1576, !6, i64 1584, !7, i64 1592, !10, i64 1600, !10, i64 1608, !10, i64 1616, !10, i64 1624, !6, i64 1632, !6, i64 1640, !6, i64 1648, !6, i64 1656}
!22 = !{!"_EFI_SIMPLE_NETWORK_PROTOCOL", !10, 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}
!23 = !{!"", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !15, i64 24, !15, i64 28, !15, i64 32, !15, i64 36, !7, i64 40, !24, i64 552, !24, i64 584, !24, i64 616, !7, i64 648, !7, i64 649, !7, i64 650, !7, i64 651, !7, i64 652}
!24 = !{!"", !7, i64 0}
!25 = !{!"_EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL", !10, i64 0, !10, i64 8, !10, i64 16, !15, i64 24, !7, i64 28, !7, i64 32, !7, i64 33, !7, i64 34, !7, i64 35, !13, i64 36}
!26 = !{!"", !15, i64 0, !15, i64 4, !7, i64 8}
!27 = !{!"", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 10, !7, i64 12, !7, i64 28, !13, i64 44, !13, i64 46, !13, i64 48}
!28 = !{!"", !13, i64 0, !7, i64 2, !7, i64 3}
!29 = !{!"", !13, i64 0, !7, i64 2, !15, i64 18, !15, i64 22, !7, i64 26}
!30 = !{!"", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 10, !13, i64 12, !7, i64 14, !7, i64 15}
!31 = !{!21, !15, i64 824}
!32 = !{!7, !7, i64 0}
!33 = !{!21, !7, i64 833}
!34 = !{!21, !7, i64 834}
!35 = !{!21, !10, i64 1600}
!36 = !{!21, !6, i64 1632}
!37 = !{!38, !6, i64 64}
!38 = !{!"", !39, 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}
!39 = !{!"", !10, i64 0, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20}
!40 = !{!13, !13, i64 0}
!41 = !{!18, !13, i64 14}
!42 = !{!21, !10, i64 1608}
!43 = !{!21, !6, i64 1640}
!44 = !{!45, !13, i64 12}
!45 = !{!"", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 10, !13, i64 12, !13, i64 14, !46, i64 16, !46, i64 20}
!46 = !{!"", !13, i64 0, !13, i64 2}
!47 = !{!18, !13, i64 12}
!48 = !{!21, !10, i64 1616}
!49 = !{!18, !13, i64 16}
!50 = !{!21, !10, i64 1624}
!51 = !{!21, !6, i64 1656}
!52 = !{!45, !13, i64 14}
!53 = !{!45, !13, i64 0}
!54 = !{!21, !6, i64 848}
!55 = !{!56, !6, i64 112}
!56 = !{!"_EFI_PCI_IO_PROTOCOL", !6, i64 0, !6, i64 8, !57, i64 16, !57, i64 32, !57, 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, !10, i64 144, !6, i64 152}
!57 = !{!"", !6, i64 0, !6, i64 8}
!58 = !{!45, !13, i64 2}
!59 = !{!45, !13, i64 4}
!60 = !{!45, !13, i64 6}
!61 = !{!45, !13, i64 8}
!62 = !{!45, !13, i64 10}
!63 = !{!45, !13, i64 16}
!64 = !{!45, !13, i64 18}
!65 = !{!45, !13, i64 22}
!66 = !{!45, !13, i64 20}
!67 = !{!21, !6, i64 856}
!68 = !{!69, !6, i64 8}
!69 = !{!"_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}
!70 = !{!21, !10, i64 808}
!71 = !{!38, !6, i64 72}
!72 = !{!73, !7, i64 4}
!73 = !{!"", !7, i64 0, !7, i64 4, !7, i64 5, !7, i64 6, !7, i64 7, !46, i64 8, !46, i64 12, !46, i64 16, !46, i64 20, !46, i64 24, !7, i64 28, !7, i64 29, !13, i64 30, !74, i64 32, !74, i64 40, !74, i64 48, !74, i64 56, !74, i64 64, !74, i64 72, !74, i64 80}
!74 = !{!"", !13, i64 0, !15, i64 2, !13, i64 6}
!75 = !{!73, !13, i64 10}
!76 = !{!73, !13, i64 8}
!77 = !{!73, !13, i64 18}
!78 = !{!21, !13, i64 888}
!79 = !{!73, !13, i64 16}
!80 = !{!21, !13, i64 890}


; 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"

%union.EFI_IA32_REGISTER_SET = type { %struct.EFI_DWORD_REGS }
%struct.EFI_DWORD_REGS = type { i32, i32, i32, i32, i32, i32, %struct.EFI_EFLAGS_REG, i16, i16, i16, i16, i16, i16, i32, i32 }
%struct.EFI_EFLAGS_REG = type { i32 }

@.str.69 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [45 x i8], align 1
@gBS = external local_unnamed_addr global ptr, align 8
@.str.82 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [31 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local void @Print_Undi_Loader_Table(ptr noundef) local_unnamed_addr #1

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 void @Print_ROMID_Table(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @Print_PXE_Table(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @Print_PXENV_Table(ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i64 -9223372036854775808, 1) i64 @LaunchBaseCode(ptr noundef %0, i64 noundef %1) local_unnamed_addr #1 {
  %3 = alloca %union.EFI_IA32_REGISTER_SET, align 4
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) #3
  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 8, ptr nonnull %8) #3
  %9 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not = icmp eq i8 %9, 0
  br i1 %.not, label %13, label %10

10:                                               ; preds = %2
  %11 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not132 = icmp eq i8 %11, 0
  br i1 %.not132, label %13, label %12

12:                                               ; preds = %10
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.69) #3
  br label %13

13:                                               ; preds = %10, %12, %2
  %14 = inttoptr i64 %1 to ptr
  %15 = getelementptr inbounds i8, ptr %14, i64 2
  %16 = load i8, ptr %15, align 1, !tbaa !5
  %17 = zext i8 %16 to i32
  %18 = shl nuw nsw i32 %17, 9
  %19 = zext nneg i32 %18 to i64
  %20 = tail call zeroext i8 @CalculateSum8(ptr noundef %14, i64 noundef %19) #3
  %.not133 = icmp eq i8 %20, 0
  br i1 %.not133, label %26, label %21

21:                                               ; preds = %13
  %22 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not221 = icmp eq i8 %22, 0
  br i1 %.not221, label %453, label %23

23:                                               ; preds = %21
  %24 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not222 = icmp eq i8 %24, 0
  br i1 %.not222, label %453, label %25

25:                                               ; preds = %23
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.70) #3
  br label %453

26:                                               ; preds = %13
  %27 = getelementptr inbounds i8, ptr %14, i64 22
  %28 = load i16, ptr %27, align 1, !tbaa !10
  %29 = zext i16 %28 to i64
  %30 = add i64 %29, %1
  %31 = inttoptr i64 %30 to ptr
  %32 = getelementptr inbounds i8, ptr %31, i64 4
  %33 = load i8, ptr %32, align 1, !tbaa !11
  %34 = zext i8 %33 to i64
  %35 = add nuw nsw i64 %34, %29
  %36 = icmp ugt i64 %35, %19
  br i1 %36, label %37, label %42

37:                                               ; preds = %26
  %38 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not219 = icmp eq i8 %38, 0
  br i1 %.not219, label %453, label %39

39:                                               ; preds = %37
  %40 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not220 = icmp eq i8 %40, 0
  br i1 %.not220, label %453, label %41

41:                                               ; preds = %39
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.71) #3
  br label %453

42:                                               ; preds = %26
  %43 = tail call i64 @CompareMem(ptr noundef nonnull %31, ptr noundef nonnull @.str.72, i64 noundef 4) #3
  %.not134 = icmp eq i64 %43, 0
  br i1 %.not134, label %49, label %44

44:                                               ; preds = %42
  %45 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not217 = icmp eq i8 %45, 0
  br i1 %.not217, label %453, label %46

46:                                               ; preds = %44
  %47 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not218 = icmp eq i8 %47, 0
  br i1 %.not218, label %453, label %48

48:                                               ; preds = %46
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.73) #3
  br label %453

49:                                               ; preds = %42
  %50 = load i8, ptr %32, align 1, !tbaa !11
  %51 = zext i8 %50 to i64
  %52 = tail call zeroext i8 @CalculateSum8(ptr noundef nonnull %31, i64 noundef %51) #3
  %.not135 = icmp eq i8 %52, 0
  br i1 %.not135, label %58, label %53

53:                                               ; preds = %49
  %54 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not215 = icmp eq i8 %54, 0
  br i1 %.not215, label %453, label %55

55:                                               ; preds = %53
  %56 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not216 = icmp eq i8 %56, 0
  br i1 %.not216, label %453, label %57

57:                                               ; preds = %55
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.74) #3
  br label %453

58:                                               ; preds = %49
  tail call void @Print_ROMID_Table(ptr noundef nonnull %31)
  %59 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not136 = icmp eq i8 %59, 0
  br i1 %.not136, label %63, label %60

60:                                               ; preds = %58
  %61 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not137 = icmp eq i8 %61, 0
  br i1 %.not137, label %63, label %62

62:                                               ; preds = %60
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.75, ptr noundef nonnull %31) #3
  br label %63

63:                                               ; preds = %58, %62, %60
  %64 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not138 = icmp eq i8 %64, 0
  br i1 %.not138, label %72, label %65

65:                                               ; preds = %63
  %66 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not139 = icmp eq i8 %66, 0
  br i1 %.not139, label %72, label %67

67:                                               ; preds = %65
  %68 = getelementptr inbounds i8, ptr %31, i64 10
  %69 = load i16, ptr %68, align 1, !tbaa !13
  %70 = zext i16 %69 to i64
  %71 = add i64 %70, %1
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.76, i64 noundef %71) #3
  br label %72

72:                                               ; preds = %65, %67, %63
  %73 = getelementptr inbounds i8, ptr %0, i64 816
  store i64 %1, ptr %73, align 8, !tbaa !14
  %74 = getelementptr inbounds i8, ptr %0, i64 824
  store i32 %18, ptr %74, align 8, !tbaa !28
  %75 = getelementptr inbounds i8, ptr %31, i64 9
  %76 = load i8, ptr %75, align 1, !tbaa !29
  %77 = getelementptr inbounds i8, ptr %0, i64 833
  store i8 %76, ptr %77, align 1, !tbaa !30
  %78 = getelementptr inbounds i8, ptr %31, i64 8
  %79 = load i8, ptr %78, align 1, !tbaa !29
  %80 = getelementptr inbounds i8, ptr %0, i64 834
  store i8 %79, ptr %80, align 2, !tbaa !31
  %81 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not140 = icmp eq i8 %81, 0
  br i1 %.not140, label %85, label %82

82:                                               ; preds = %72
  %83 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not141 = icmp eq i8 %83, 0
  br i1 %.not141, label %85, label %84

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

85:                                               ; preds = %82, %84, %72
  %86 = getelementptr inbounds i8, ptr %0, i64 1600
  store i64 1, ptr %86, align 8, !tbaa !32
  %87 = getelementptr inbounds i8, ptr %0, i64 1632
  %88 = tail call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef 1, ptr noundef nonnull %87) #3
  %89 = icmp slt i64 %88, 0
  br i1 %89, label %90, label %95

90:                                               ; preds = %85
  %91 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not213 = icmp eq i8 %91, 0
  br i1 %.not213, label %453, label %92

92:                                               ; preds = %90
  %93 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not214 = icmp eq i8 %93, 0
  br i1 %.not214, label %453, label %94

94:                                               ; preds = %92
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.78, i64 noundef %88) #3
  br label %453

95:                                               ; preds = %85
  %96 = load ptr, ptr %87, align 8, !tbaa !33
  %97 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not142 = icmp eq i8 %97, 0
  br i1 %.not142, label %101, label %98

98:                                               ; preds = %95
  %99 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not143 = icmp eq i8 %99, 0
  br i1 %.not143, label %101, label %100

100:                                              ; preds = %98
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.79) #3
  br label %101

101:                                              ; preds = %95, %100, %98
  %102 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not144 = icmp eq i8 %102, 0
  br i1 %.not144, label %106, label %103

103:                                              ; preds = %101
  %104 = tail call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not145 = icmp eq i8 %104, 0
  br i1 %.not145, label %106, label %105

105:                                              ; preds = %103
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.80) #3
  br label %106

106:                                              ; preds = %101, %105, %103
  %107 = tail call zeroext i8 @DebugPrintEnabled() #3
  %.not146 = icmp eq i8 %107, 0
  br i1 %.not146, label %111, label %108

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

110:                                              ; preds = %108
  tail call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.81) #3
  br label %111

111:                                              ; preds = %108, %110, %106
  %112 = load ptr, ptr @gBS, align 8, !tbaa !34
  %113 = getelementptr inbounds i8, ptr %112, i64 64
  %114 = load ptr, ptr %113, align 8, !tbaa !35
  %115 = call i64 %114(i32 noundef 2, i64 noundef 256, ptr noundef nonnull %4) #3
  %116 = icmp slt i64 %115, 0
  br i1 %116, label %453, label %117

117:                                              ; preds = %111
  %118 = load ptr, ptr %4, align 8, !tbaa !34
  %119 = ptrtoint ptr %96 to i64
  %120 = trunc i64 %119 to i32
  %121 = trunc i64 %119 to i16
  %122 = getelementptr inbounds i8, ptr %118, i64 2
  store i16 %121, ptr %118, align 2, !tbaa !38
  %123 = and i64 %119, 4294967295
  %124 = call i64 @RShiftU64(i64 noundef %123, i64 noundef 4) #3
  %125 = trunc i64 %124 to i16
  %126 = and i16 %125, -4096
  store i16 %126, ptr %122, align 2, !tbaa !38
  %127 = load ptr, ptr %4, align 8, !tbaa !34
  %128 = call zeroext i8 @DebugPrintEnabled() #3
  %.not148 = icmp eq i8 %128, 0
  br i1 %.not148, label %133, label %129

129:                                              ; preds = %117
  %130 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not149 = icmp eq i8 %130, 0
  br i1 %.not149, label %133, label %131

131:                                              ; preds = %129
  %132 = ptrtoint ptr %127 to i64
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.82, i64 noundef %132) #3
  br label %133

133:                                              ; preds = %129, %131, %117
  %134 = getelementptr inbounds i8, ptr %31, i64 14
  %135 = load i16, ptr %134, align 1, !tbaa !39
  %136 = zext i16 %135 to i32
  %137 = lshr i32 %136, 12
  %138 = and i32 %136, 4095
  %.not150 = icmp ne i32 %138, 0
  %139 = zext i1 %.not150 to i32
  %140 = add nuw nsw i32 %137, %139
  %141 = zext nneg i32 %140 to i64
  %142 = getelementptr inbounds i8, ptr %0, i64 1608
  store i64 %141, ptr %142, align 8, !tbaa !40
  %143 = getelementptr inbounds i8, ptr %0, i64 1640
  %144 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %141, ptr noundef nonnull %143) #3
  %145 = icmp slt i64 %144, 0
  br i1 %145, label %146, label %151

146:                                              ; preds = %133
  %147 = call zeroext i8 @DebugPrintEnabled() #3
  %.not211 = icmp eq i8 %147, 0
  br i1 %.not211, label %453, label %148

148:                                              ; preds = %146
  %149 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not212 = icmp eq i8 %149, 0
  br i1 %.not212, label %453, label %150

150:                                              ; preds = %148
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.78, i64 noundef %144) #3
  br label %453

151:                                              ; preds = %133
  %152 = load ptr, ptr %143, align 8, !tbaa !41
  %153 = ptrtoint ptr %152 to i64
  %154 = lshr i64 %153, 4
  %155 = trunc i64 %154 to i16
  %156 = getelementptr inbounds i8, ptr %96, i64 12
  store i16 %155, ptr %156, align 1, !tbaa !42
  %157 = getelementptr inbounds i8, ptr %31, i64 12
  %158 = load i16, ptr %157, align 1, !tbaa !45
  %159 = zext i16 %158 to i32
  %160 = lshr i32 %159, 12
  %161 = and i32 %159, 4095
  %.not151 = icmp ne i32 %161, 0
  %162 = zext i1 %.not151 to i32
  %163 = add nuw nsw i32 %160, %162
  %164 = zext nneg i32 %163 to i64
  %165 = getelementptr inbounds i8, ptr %0, i64 1616
  store i64 %164, ptr %165, align 8, !tbaa !46
  %166 = getelementptr inbounds i8, ptr %0, i64 1648
  %167 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %164, ptr noundef nonnull %166) #3
  %168 = icmp slt i64 %167, 0
  br i1 %168, label %169, label %174

169:                                              ; preds = %151
  %170 = call zeroext i8 @DebugPrintEnabled() #3
  %.not209 = icmp eq i8 %170, 0
  br i1 %.not209, label %453, label %171

171:                                              ; preds = %169
  %172 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not210 = icmp eq i8 %172, 0
  br i1 %.not210, label %453, label %173

173:                                              ; preds = %171
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.78, i64 noundef %167) #3
  br label %453

174:                                              ; preds = %151
  %175 = getelementptr inbounds i8, ptr %31, i64 16
  %176 = load i16, ptr %175, align 1, !tbaa !47
  %177 = zext i16 %176 to i32
  %178 = lshr i32 %177, 12
  %179 = and i32 %177, 4095
  %.not152 = icmp ne i32 %179, 0
  %180 = zext i1 %.not152 to i32
  %181 = add nuw nsw i32 %178, %180
  %182 = zext nneg i32 %181 to i64
  %183 = getelementptr inbounds i8, ptr %0, i64 1624
  store i64 %182, ptr %183, align 8, !tbaa !48
  %184 = getelementptr inbounds i8, ptr %0, i64 1656
  %185 = call i64 @BiosSnp16AllocatePagesBelowOneMb(i64 noundef %182, ptr noundef nonnull %184) #3
  %186 = icmp slt i64 %185, 0
  br i1 %186, label %187, label %192

187:                                              ; preds = %174
  %188 = call zeroext i8 @DebugPrintEnabled() #3
  %.not207 = icmp eq i8 %188, 0
  br i1 %.not207, label %453, label %189

189:                                              ; preds = %187
  %190 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not208 = icmp eq i8 %190, 0
  br i1 %.not208, label %453, label %191

191:                                              ; preds = %189
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.78, i64 noundef %185) #3
  br label %453

192:                                              ; preds = %174
  %193 = load ptr, ptr %184, align 8, !tbaa !49
  %194 = ptrtoint ptr %193 to i64
  %195 = lshr i64 %194, 4
  %196 = trunc i64 %195 to i16
  %197 = getelementptr inbounds i8, ptr %96, i64 14
  store i16 %196, ptr %197, align 1, !tbaa !50
  store i16 -21931, ptr %96, align 1, !tbaa !51
  %198 = getelementptr inbounds i8, ptr %0, i64 848
  %199 = load ptr, ptr %198, align 8, !tbaa !52
  %200 = getelementptr inbounds i8, ptr %199, i64 112
  %201 = load ptr, ptr %200, align 8, !tbaa !53
  %202 = call i64 %201(ptr noundef %199, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8) #3
  %203 = load i64, ptr %6, align 8, !tbaa !56
  %204 = shl i64 %203, 8
  %205 = load i64, ptr %7, align 8, !tbaa !56
  %206 = shl i64 %205, 3
  %207 = or i64 %206, %204
  %208 = load i64, ptr %8, align 8, !tbaa !56
  %209 = or i64 %207, %208
  %210 = trunc i64 %209 to i16
  %211 = getelementptr inbounds i8, ptr %96, i64 2
  store i16 %210, ptr %211, align 1, !tbaa !57
  %212 = getelementptr inbounds i8, ptr %96, i64 4
  %213 = getelementptr inbounds i8, ptr %96, i64 16
  %214 = getelementptr inbounds i8, ptr %96, i64 18
  %215 = getelementptr inbounds i8, ptr %96, i64 20
  %216 = getelementptr inbounds i8, ptr %96, i64 22
  store i64 0, ptr %212, align 1
  store i64 0, ptr %213, align 1
  %217 = call zeroext i8 @DebugPrintEnabled() #3
  %.not153 = icmp eq i8 %217, 0
  br i1 %.not153, label %224, label %218

218:                                              ; preds = %192
  %219 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1) #3
  %.not154 = icmp eq i8 %219, 0
  br i1 %.not154, label %224, label %220

220:                                              ; preds = %218
  %221 = load i64, ptr %6, align 8, !tbaa !56
  %222 = load i64, ptr %7, align 8, !tbaa !56
  %223 = load i64, ptr %8, align 8, !tbaa !56
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1, ptr noundef nonnull @.str.83, i64 noundef %221, i64 noundef %222, i64 noundef %223) #3
  br label %224

224:                                              ; preds = %218, %220, %192
  store i16 0, ptr %3, align 4, !tbaa !29
  %225 = getelementptr inbounds i8, ptr %3, i64 4
  store i16 0, ptr %225, align 4, !tbaa !29
  %226 = getelementptr inbounds i8, ptr %3, i64 8
  store i16 0, ptr %226, align 4, !tbaa !29
  %227 = getelementptr inbounds i8, ptr %3, i64 12
  store i16 0, ptr %227, align 4, !tbaa !29
  %228 = getelementptr inbounds i8, ptr %3, i64 16
  store i16 0, ptr %228, align 4, !tbaa !29
  %229 = getelementptr inbounds i8, ptr %3, i64 20
  store i16 0, ptr %229, align 4, !tbaa !29
  %230 = getelementptr inbounds i8, ptr %3, i64 40
  store i16 0, ptr %230, align 4, !tbaa !29
  %231 = getelementptr inbounds i8, ptr %3, i64 34
  store i16 0, ptr %231, align 2, !tbaa !29
  %232 = getelementptr inbounds i8, ptr %3, i64 28
  store i16 0, ptr %232, align 4, !tbaa !29
  %233 = call zeroext i8 @DebugPrintEnabled() #3
  %.not155 = icmp eq i8 %233, 0
  br i1 %.not155, label %237, label %234

234:                                              ; preds = %224
  %235 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not156 = icmp eq i8 %235, 0
  br i1 %.not156, label %237, label %236

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

237:                                              ; preds = %224, %236, %234
  %238 = call zeroext i8 @DebugPrintEnabled() #3
  %.not157 = icmp eq i8 %238, 0
  br i1 %.not157, label %242, label %239

239:                                              ; preds = %237
  %240 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not158 = icmp eq i8 %240, 0
  br i1 %.not158, label %242, label %241

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

242:                                              ; preds = %237, %241, %239
  %243 = call zeroext i8 @DebugPrintEnabled() #3
  %.not159 = icmp eq i8 %243, 0
  br i1 %.not159, label %247, label %244

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

246:                                              ; preds = %244
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.86, i32 noundef %120) #3
  br label %247

247:                                              ; preds = %242, %246, %244
  %248 = call zeroext i8 @DebugPrintEnabled() #3
  %.not161 = icmp eq i8 %248, 0
  br i1 %.not161, label %256, label %249

249:                                              ; preds = %247
  %250 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not162 = icmp eq i8 %250, 0
  br i1 %.not162, label %256, label %251

251:                                              ; preds = %249
  %252 = call i64 @RShiftU64(i64 noundef %123, i64 noundef 4) #3
  %253 = trunc i64 %252 to i32
  %254 = and i32 %253, 61440
  %255 = and i32 %120, 65535
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.87, i32 noundef %254, i32 noundef %255) #3
  br label %256

256:                                              ; preds = %247, %251, %249
  %257 = call zeroext i8 @DebugPrintEnabled() #3
  %.not163 = icmp eq i8 %257, 0
  br i1 %.not163, label %265, label %258

258:                                              ; preds = %256
  %259 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not164 = icmp eq i8 %259, 0
  br i1 %.not164, label %265, label %260

260:                                              ; preds = %258
  %261 = getelementptr inbounds i8, ptr %31, i64 10
  %262 = load i16, ptr %261, align 1, !tbaa !13
  %263 = zext i16 %262 to i64
  %264 = add i64 %263, %1
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.88, i64 noundef %264) #3
  br label %265

265:                                              ; preds = %256, %260, %258
  %266 = call zeroext i8 @DebugPrintEnabled() #3
  %.not165 = icmp eq i8 %266, 0
  br i1 %.not165, label %273, label %267

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

269:                                              ; preds = %267
  %270 = getelementptr inbounds i8, ptr %31, i64 10
  %271 = load i16, ptr %270, align 1, !tbaa !13
  %272 = zext i16 %271 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.89, i32 noundef %272) #3
  br label %273

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

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

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

278:                                              ; preds = %275, %277, %273
  call void @Print_Undi_Loader_Table(ptr noundef nonnull %96)
  %279 = call i64 @RShiftU64(i64 noundef %1, i64 noundef 4) #3
  %280 = trunc i64 %279 to i16
  %281 = call zeroext i8 @DebugPrintEnabled() #3
  %.not169 = icmp eq i8 %281, 0
  br i1 %.not169, label %287, label %282

282:                                              ; preds = %278
  %283 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not170 = icmp eq i8 %283, 0
  br i1 %.not170, label %287, label %284

284:                                              ; preds = %282
  %285 = trunc i64 %279 to i32
  %286 = and i32 %285, 65535
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.91, i32 noundef %286) #3
  br label %287

287:                                              ; preds = %278, %284, %282
  %288 = call zeroext i8 @DebugPrintEnabled() #3
  %.not171 = icmp eq i8 %288, 0
  br i1 %.not171, label %292, label %289

289:                                              ; preds = %287
  %290 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 1) #3
  %.not172 = icmp eq i8 %290, 0
  br i1 %.not172, label %292, label %291

291:                                              ; preds = %289
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 1, ptr noundef nonnull @.str.92) #3
  br label %292

292:                                              ; preds = %287, %291, %289
  %293 = call zeroext i8 @DebugPrintEnabled() #3
  %.not173 = icmp eq i8 %293, 0
  br i1 %.not173, label %297, label %294

294:                                              ; preds = %292
  %295 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not174 = icmp eq i8 %295, 0
  br i1 %.not174, label %297, label %296

296:                                              ; preds = %294
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.93) #3
  br label %297

297:                                              ; preds = %292, %296, %294
  %298 = call zeroext i8 @DebugPrintEnabled() #3
  %.not175 = icmp eq i8 %298, 0
  br i1 %.not175, label %302, label %299

299:                                              ; preds = %297
  %300 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not176 = icmp eq i8 %300, 0
  br i1 %.not176, label %302, label %301

301:                                              ; preds = %299
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.94) #3
  br label %302

302:                                              ; preds = %297, %301, %299
  %303 = call zeroext i8 @DebugPrintEnabled() #3
  %.not177 = icmp eq i8 %303, 0
  br i1 %.not177, label %314, label %304

304:                                              ; preds = %302
  %305 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not178 = icmp eq i8 %305, 0
  br i1 %.not178, label %314, label %306

306:                                              ; preds = %304
  %307 = trunc i64 %279 to i32
  %308 = and i32 %307, 65535
  %309 = shl nuw nsw i32 %308, 4
  %310 = getelementptr inbounds i8, ptr %31, i64 10
  %311 = load i16, ptr %310, align 1, !tbaa !13
  %312 = zext i16 %311 to i32
  %313 = add nuw nsw i32 %309, %312
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.95, i32 noundef %313, i32 noundef %308, i32 noundef %312) #3
  br label %314

314:                                              ; preds = %304, %306, %302
  %315 = getelementptr inbounds i8, ptr %0, i64 856
  %316 = load ptr, ptr %315, align 8, !tbaa !58
  %317 = getelementptr inbounds i8, ptr %316, i64 8
  %318 = load ptr, ptr %317, align 8, !tbaa !59
  %319 = getelementptr inbounds i8, ptr %31, i64 10
  %320 = load i16, ptr %319, align 1, !tbaa !13
  %321 = load ptr, ptr %4, align 8, !tbaa !34
  %322 = call zeroext i8 %318(ptr noundef %316, i16 noundef zeroext %280, i16 noundef zeroext %320, ptr noundef nonnull %3, ptr noundef %321, i64 noundef 256) #3
  %.not179 = icmp eq i8 %322, 0
  br i1 %.not179, label %323, label %453

323:                                              ; preds = %314
  %324 = call zeroext i8 @DebugPrintEnabled() #3
  %.not180 = icmp eq i8 %324, 0
  br i1 %.not180, label %330, label %325

325:                                              ; preds = %323
  %326 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not181 = icmp eq i8 %326, 0
  br i1 %.not181, label %330, label %327

327:                                              ; preds = %325
  %328 = load i16, ptr %96, align 1, !tbaa !51
  %329 = zext i16 %328 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.96, i32 noundef %329) #3
  br label %330

330:                                              ; preds = %323, %327, %325
  %331 = call zeroext i8 @DebugPrintEnabled() #3
  %.not182 = icmp eq i8 %331, 0
  br i1 %.not182, label %337, label %332

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

334:                                              ; preds = %332
  %335 = load i16, ptr %3, align 4, !tbaa !29
  %336 = zext i16 %335 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.97, i32 noundef %336) #3
  br label %337

337:                                              ; preds = %332, %334, %330
  %338 = load i16, ptr %96, align 1, !tbaa !51
  %339 = icmp ne i16 %338, 0
  %340 = load i16, ptr %3, align 4
  %341 = icmp ne i16 %340, 0
  %or.cond = select i1 %339, i1 true, i1 %341
  %342 = call zeroext i8 @DebugPrintEnabled() #3
  %.not205 = icmp eq i8 %342, 0
  br i1 %or.cond, label %343, label %347

343:                                              ; preds = %337
  br i1 %.not205, label %453, label %344

344:                                              ; preds = %343
  %345 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not206 = icmp eq i8 %345, 0
  br i1 %.not206, label %453, label %346

346:                                              ; preds = %344
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.98, i64 noundef %1) #3
  br label %453

347:                                              ; preds = %337
  br i1 %.not205, label %351, label %348

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

350:                                              ; preds = %348
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.99) #3
  br label %351

351:                                              ; preds = %347, %350, %348
  %352 = call zeroext i8 @DebugPrintEnabled() #3
  %.not186 = icmp eq i8 %352, 0
  br i1 %.not186, label %356, label %353

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

355:                                              ; preds = %353
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.100) #3
  br label %356

356:                                              ; preds = %353, %355, %351
  call void @Print_Undi_Loader_Table(ptr noundef nonnull %96)
  %357 = call zeroext i8 @DebugPrintEnabled() #3
  %.not188 = icmp eq i8 %357, 0
  br i1 %.not188, label %361, label %358

358:                                              ; preds = %356
  %359 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not189 = icmp eq i8 %359, 0
  br i1 %.not189, label %361, label %360

360:                                              ; preds = %358
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.101) #3
  br label %361

361:                                              ; preds = %358, %360, %356
  %362 = load i16, ptr %216, align 1, !tbaa !61
  %363 = zext i16 %362 to i64
  %364 = shl nuw nsw i64 %363, 4
  %365 = load i16, ptr %215, align 1, !tbaa !62
  %366 = zext i16 %365 to i64
  %367 = or i64 %364, %366
  %368 = inttoptr i64 %367 to ptr
  call void @Print_PXENV_Table(ptr noundef %368)
  %369 = load i16, ptr %214, align 1, !tbaa !63
  %370 = zext i16 %369 to i64
  %371 = shl nuw nsw i64 %370, 4
  %372 = load i16, ptr %213, align 1, !tbaa !64
  %373 = zext i16 %372 to i64
  %374 = add nuw nsw i64 %371, %373
  %375 = inttoptr i64 %374 to ptr
  call void @Print_PXE_Table(ptr noundef %375)
  %376 = load i16, ptr %214, align 1, !tbaa !63
  %377 = zext i16 %376 to i64
  %378 = shl nuw nsw i64 %377, 4
  %379 = load i16, ptr %213, align 1, !tbaa !64
  %380 = zext i16 %379 to i64
  %381 = add nuw nsw i64 %378, %380
  %382 = inttoptr i64 %381 to ptr
  %383 = getelementptr inbounds i8, ptr %0, i64 808
  store i64 %381, ptr %383, align 8, !tbaa !65
  %384 = load ptr, ptr @gBS, align 8, !tbaa !34
  %385 = getelementptr inbounds i8, ptr %384, i64 72
  %386 = load ptr, ptr %385, align 8, !tbaa !66
  %387 = load ptr, ptr %4, align 8, !tbaa !34
  %388 = call i64 %386(ptr noundef %387) #3
  %389 = call i64 @CompareMem(ptr noundef %382, ptr noundef nonnull @.str.102, i64 noundef 4) #3
  %.not190 = icmp eq i64 %389, 0
  br i1 %.not190, label %395, label %390

390:                                              ; preds = %361
  %391 = call zeroext i8 @DebugPrintEnabled() #3
  %.not203 = icmp eq i8 %391, 0
  br i1 %.not203, label %453, label %392

392:                                              ; preds = %390
  %393 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not204 = icmp eq i8 %393, 0
  br i1 %.not204, label %453, label %394

394:                                              ; preds = %392
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.103) #3
  br label %453

395:                                              ; preds = %361
  %396 = getelementptr inbounds i8, ptr %382, i64 4
  %397 = load i8, ptr %396, align 1, !tbaa !67
  %398 = zext i8 %397 to i64
  %399 = call zeroext i8 @CalculateSum8(ptr noundef %382, i64 noundef %398) #3
  %.not191 = icmp eq i8 %399, 0
  br i1 %.not191, label %405, label %400

400:                                              ; preds = %395
  %401 = call zeroext i8 @DebugPrintEnabled() #3
  %.not201 = icmp eq i8 %401, 0
  br i1 %.not201, label %453, label %402

402:                                              ; preds = %400
  %403 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not202 = icmp eq i8 %403, 0
  br i1 %.not202, label %453, label %404

404:                                              ; preds = %402
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.104) #3
  br label %453

405:                                              ; preds = %395
  %406 = load i8, ptr %396, align 1, !tbaa !67
  %407 = zext i8 %406 to i64
  %408 = getelementptr inbounds i8, ptr %382, i64 30
  %409 = ptrtoint ptr %408 to i64
  %410 = sub nsw i64 %409, %381
  %411 = icmp sgt i64 %410, %407
  br i1 %411, label %412, label %417

412:                                              ; preds = %405
  %413 = call zeroext i8 @DebugPrintEnabled() #3
  %.not199 = icmp eq i8 %413, 0
  br i1 %.not199, label %453, label %414

414:                                              ; preds = %412
  %415 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not200 = icmp eq i8 %415, 0
  br i1 %.not200, label %453, label %416

416:                                              ; preds = %414
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.105) #3
  br label %453

417:                                              ; preds = %405
  %418 = getelementptr inbounds i8, ptr %382, i64 8
  %419 = getelementptr inbounds i8, ptr %382, i64 10
  %420 = load i16, ptr %419, align 1, !tbaa !70
  %421 = zext i16 %420 to i64
  %422 = shl nuw nsw i64 %421, 4
  %423 = load i16, ptr %418, align 1, !tbaa !71
  %424 = zext i16 %423 to i64
  %425 = add nuw nsw i64 %422, %424
  %.not192 = icmp eq i64 %425, %30
  br i1 %.not192, label %431, label %426

426:                                              ; preds = %417
  %427 = call zeroext i8 @DebugPrintEnabled() #3
  %.not197 = icmp eq i8 %427, 0
  br i1 %.not197, label %453, label %428

428:                                              ; preds = %426
  %429 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not198 = icmp eq i8 %429, 0
  br i1 %.not198, label %453, label %430

430:                                              ; preds = %428
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.106) #3
  br label %453

431:                                              ; preds = %417
  %432 = getelementptr inbounds i8, ptr %382, i64 18
  %433 = load i16, ptr %432, align 1, !tbaa !72
  %434 = getelementptr inbounds i8, ptr %0, i64 888
  store i16 %433, ptr %434, align 8, !tbaa !73
  %435 = icmp eq i16 %433, 0
  br i1 %435, label %436, label %441

436:                                              ; preds = %431
  %437 = call zeroext i8 @DebugPrintEnabled() #3
  %.not195 = icmp eq i8 %437, 0
  br i1 %.not195, label %453, label %438

438:                                              ; preds = %436
  %439 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 2147483648) #3
  %.not196 = icmp eq i8 %439, 0
  br i1 %.not196, label %453, label %440

440:                                              ; preds = %438
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 2147483648, ptr noundef nonnull @.str.107) #3
  br label %453

441:                                              ; preds = %431
  %442 = getelementptr inbounds i8, ptr %382, i64 16
  %443 = load i16, ptr %442, align 1, !tbaa !74
  %444 = getelementptr inbounds i8, ptr %0, i64 890
  store i16 %443, ptr %444, align 2, !tbaa !75
  %445 = call zeroext i8 @DebugPrintEnabled() #3
  %.not193 = icmp eq i8 %445, 0
  br i1 %.not193, label %453, label %446

446:                                              ; preds = %441
  %447 = call zeroext i8 @DebugPrintLevelEnabled(i64 noundef 16384) #3
  %.not194 = icmp eq i8 %447, 0
  br i1 %.not194, label %453, label %448

448:                                              ; preds = %446
  %449 = load i16, ptr %434, align 8, !tbaa !73
  %450 = zext i16 %449 to i32
  %451 = load i16, ptr %444, align 2, !tbaa !75
  %452 = zext i16 %451 to i32
  call void (i64, ptr, ...) @DebugPrint(i64 noundef 16384, ptr noundef nonnull @.str.108, i32 noundef %450, i32 noundef %452) #3
  br label %453

453:                                              ; preds = %441, %448, %446, %436, %440, %438, %426, %430, %428, %412, %416, %414, %400, %404, %402, %390, %394, %392, %343, %346, %344, %314, %187, %191, %189, %169, %173, %171, %146, %150, %148, %111, %90, %94, %92, %53, %57, %55, %44, %48, %46, %37, %41, %39, %21, %25, %23
  %.0 = phi i64 [ -9223372036854775794, %23 ], [ -9223372036854775794, %25 ], [ -9223372036854775794, %21 ], [ -9223372036854775794, %39 ], [ -9223372036854775794, %41 ], [ -9223372036854775794, %37 ], [ -9223372036854775794, %46 ], [ -9223372036854775794, %48 ], [ -9223372036854775794, %44 ], [ -9223372036854775794, %55 ], [ -9223372036854775794, %57 ], [ -9223372036854775794, %53 ], [ -9223372036854775799, %92 ], [ -9223372036854775799, %94 ], [ -9223372036854775799, %90 ], [ %115, %111 ], [ %144, %148 ], [ %144, %150 ], [ %144, %146 ], [ %167, %171 ], [ %167, %173 ], [ %167, %169 ], [ %185, %189 ], [ %185, %191 ], [ %185, %187 ], [ -9223372036854775787, %314 ], [ -9223372036854775787, %344 ], [ -9223372036854775787, %346 ], [ -9223372036854775787, %343 ], [ -9223372036854775794, %392 ], [ -9223372036854775794, %394 ], [ -9223372036854775794, %390 ], [ -9223372036854775794, %402 ], [ -9223372036854775794, %404 ], [ -9223372036854775794, %400 ], [ -9223372036854775794, %414 ], [ -9223372036854775794, %416 ], [ -9223372036854775794, %412 ], [ -9223372036854775794, %428 ], [ -9223372036854775794, %430 ], [ -9223372036854775794, %426 ], [ -9223372036854775794, %438 ], [ -9223372036854775794, %440 ], [ -9223372036854775794, %436 ], [ 0, %446 ], [ 0, %448 ], [ 0, %441 ]
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #3
  ret i64 %.0
}

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

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

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

declare i64 @RShiftU64(i64 noundef, i64 noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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, !8, i64 2}
!6 = !{!"", !7, i64 0, !8, i64 2, !8, i64 3, !8, i64 7, !7, i64 22, !7, i64 24, !7, i64 26}
!7 = !{!"short", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!6, !7, i64 22}
!11 = !{!12, !8, i64 4}
!12 = !{!"", !8, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7, !7, i64 10, !7, i64 12, !7, i64 14, !7, i64 16, !8, i64 18}
!13 = !{!12, !7, i64 10}
!14 = !{!15, !16, i64 816}
!15 = !{!"", !16, i64 0, !17, i64 8, !18, i64 16, !19, i64 144, !22, i64 800, !17, i64 840, !17, i64 848, !17, i64 856, !8, i64 864, !17, i64 872, !17, i64 880, !7, i64 888, !7, i64 890, !23, i64 896, !17, i64 1416, !17, i64 1424, !24, i64 1432, !25, i64 1482, !26, i64 1499, !8, i64 1541, !27, i64 1542, !17, i64 1560, !17, i64 1568, !17, i64 1576, !17, i64 1584, !8, i64 1592, !16, i64 1600, !16, i64 1608, !16, i64 1616, !16, i64 1624, !17, i64 1632, !17, i64 1640, !17, i64 1648, !17, i64 1656}
!16 = !{!"long long", !8, i64 0}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!"_EFI_SIMPLE_NETWORK_PROTOCOL", !16, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !17, i64 72, !17, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112, !17, i64 120}
!19 = !{!"", !20, i64 0, !20, i64 4, !20, i64 8, !20, i64 12, !20, i64 16, !20, i64 20, !20, i64 24, !20, i64 28, !20, i64 32, !20, i64 36, !8, i64 40, !21, i64 552, !21, i64 584, !21, i64 616, !8, i64 648, !8, i64 649, !8, i64 650, !8, i64 651, !8, i64 652}
!20 = !{!"int", !8, i64 0}
!21 = !{!"", !8, i64 0}
!22 = !{!"_EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL", !16, i64 0, !16, i64 8, !16, i64 16, !20, i64 24, !8, i64 28, !8, i64 32, !8, i64 33, !8, i64 34, !8, i64 35, !7, i64 36}
!23 = !{!"", !20, i64 0, !20, i64 4, !8, i64 8}
!24 = !{!"", !7, i64 0, !7, i64 2, !7, i64 4, !7, i64 6, !7, i64 8, !7, i64 10, !8, i64 12, !8, i64 28, !7, i64 44, !7, i64 46, !7, i64 48}
!25 = !{!"", !7, i64 0, !8, i64 2, !8, i64 3}
!26 = !{!"", !7, i64 0, !8, i64 2, !20, i64 18, !20, i64 22, !8, i64 26}
!27 = !{!"", !7, i64 0, !7, i64 2, !7, i64 4, !7, i64 6, !7, i64 8, !7, i64 10, !7, i64 12, !8, i64 14, !8, i64 15}
!28 = !{!15, !20, i64 824}
!29 = !{!8, !8, i64 0}
!30 = !{!15, !8, i64 833}
!31 = !{!15, !8, i64 834}
!32 = !{!15, !16, i64 1600}
!33 = !{!15, !17, i64 1632}
!34 = !{!17, !17, i64 0}
!35 = !{!36, !17, i64 64}
!36 = !{!"", !37, i64 0, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !17, i64 72, !17, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112, !17, i64 120, !17, i64 128, !17, i64 136, !17, i64 144, !17, i64 152, !17, i64 160, !17, i64 168, !17, i64 176, !17, i64 184, !17, i64 192, !17, i64 200, !17, i64 208, !17, i64 216, !17, i64 224, !17, i64 232, !17, i64 240, !17, i64 248, !17, i64 256, !17, i64 264, !17, i64 272, !17, i64 280, !17, i64 288, !17, i64 296, !17, i64 304, !17, i64 312, !17, i64 320, !17, i64 328, !17, i64 336, !17, i64 344, !17, i64 352, !17, i64 360, !17, i64 368}
!37 = !{!"", !16, i64 0, !20, i64 8, !20, i64 12, !20, i64 16, !20, i64 20}
!38 = !{!7, !7, i64 0}
!39 = !{!12, !7, i64 14}
!40 = !{!15, !16, i64 1608}
!41 = !{!15, !17, i64 1640}
!42 = !{!43, !7, i64 12}
!43 = !{!"", !7, i64 0, !7, i64 2, !7, i64 4, !7, i64 6, !7, i64 8, !7, i64 10, !7, i64 12, !7, i64 14, !44, i64 16, !44, i64 20}
!44 = !{!"", !7, i64 0, !7, i64 2}
!45 = !{!12, !7, i64 12}
!46 = !{!15, !16, i64 1616}
!47 = !{!12, !7, i64 16}
!48 = !{!15, !16, i64 1624}
!49 = !{!15, !17, i64 1656}
!50 = !{!43, !7, i64 14}
!51 = !{!43, !7, i64 0}
!52 = !{!15, !17, i64 848}
!53 = !{!54, !17, i64 112}
!54 = !{!"_EFI_PCI_IO_PROTOCOL", !17, i64 0, !17, i64 8, !55, i64 16, !55, i64 32, !55, i64 48, !17, i64 64, !17, i64 72, !17, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112, !17, i64 120, !17, i64 128, !17, i64 136, !16, i64 144, !17, i64 152}
!55 = !{!"", !17, i64 0, !17, i64 8}
!56 = !{!16, !16, i64 0}
!57 = !{!43, !7, i64 2}
!58 = !{!15, !17, i64 856}
!59 = !{!60, !17, i64 8}
!60 = !{!"_EFI_LEGACY_BIOS_PROTOCOL", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !17, i64 72, !17, i64 80, !17, i64 88}
!61 = !{!43, !7, i64 22}
!62 = !{!43, !7, i64 20}
!63 = !{!43, !7, i64 18}
!64 = !{!43, !7, i64 16}
!65 = !{!15, !16, i64 808}
!66 = !{!36, !17, i64 72}
!67 = !{!68, !8, i64 4}
!68 = !{!"", !8, i64 0, !8, i64 4, !8, i64 5, !8, i64 6, !8, i64 7, !44, i64 8, !44, i64 12, !44, i64 16, !44, i64 20, !44, i64 24, !8, i64 28, !8, i64 29, !7, i64 30, !69, i64 32, !69, i64 40, !69, i64 48, !69, i64 56, !69, i64 64, !69, i64 72, !69, i64 80}
!69 = !{!"", !7, i64 0, !20, i64 2, !7, i64 6}
!70 = !{!68, !7, i64 10}
!71 = !{!68, !7, i64 8}
!72 = !{!68, !7, i64 18}
!73 = !{!15, !7, i64 888}
!74 = !{!68, !7, i64 16}
!75 = !{!15, !7, i64 890}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass