; LLVM IR from thalium/icebox :: third_party/virtualbox/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Universal (PxeBcParseCachedDhcpPacket)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.PXEBC_CACHED_DHCP4_PACKET = type { %union.PXEBC_DHCP4_PACKET, i8, i8, [7 x ptr], %struct.PXEBC_VENDOR_OPTION }
%union.PXEBC_DHCP4_PACKET = type { [1480 x i8] }
%struct.PXEBC_VENDOR_OPTION = type { [8 x i32], %struct.EFI_IPv4_ADDRESS, i16, i16, i8, i8, i8, %struct.EFI_IPv4_ADDRESS, %struct.EFI_IPv4_ADDRESS, i16, i16, i16, i16, ptr, i8, ptr, i8, ptr, i8, ptr, i8 }
%struct.EFI_IPv4_ADDRESS = type { [4 x i8] }
%struct.EFI_DHCP4_PACKET = type <{ i32, i32, %struct.anon }>
%struct.anon = type <{ %struct.EFI_DHCP4_HEADER, i32, [1 x i8] }>
%struct.EFI_DHCP4_HEADER = type { i8, i8, i8, i8, i32, i16, i16, %struct.EFI_IPv4_ADDRESS, %struct.EFI_IPv4_ADDRESS, %struct.EFI_IPv4_ADDRESS, %struct.EFI_IPv4_ADDRESS, [16 x i8], [64 x i8], [128 x i8] }
%struct.EFI_DHCP4_PACKET_OPTION = type { i8, i8, [1 x i8] }

@mInterestedDhcp4Tags = external dso_local global [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [33 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

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

; 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
define dso_local zeroext i8 @PxeBcParseCachedDhcpPacket(ptr noundef %0) #2 {
  %2 = alloca i8, align 1
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 1, 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
  %11 = load ptr, ptr %3, align 8, !tbaa !5
  %12 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %11, i32 0, i32 1
  store i8 0, ptr %12, align 8, !tbaa !9
  %13 = load ptr, ptr %3, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %13, i32 0, i32 3
  %15 = getelementptr inbounds [7 x ptr], ptr %14, i64 0, i64 0
  %16 = call ptr @ZeroMem(ptr noundef %15, i64 noundef 56)
  %17 = load ptr, ptr %3, align 8, !tbaa !5
  %18 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %17, i32 0, i32 4
  %19 = call ptr @ZeroMem(ptr noundef %18, i64 noundef 128)
  %20 = load ptr, ptr %3, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %20, i32 0, i32 0
  store ptr %21, ptr %4, align 8, !tbaa !5
  %22 = load ptr, ptr %3, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %22, i32 0, i32 3
  %24 = getelementptr inbounds [7 x ptr], ptr %23, i64 0, i64 0
  store ptr %24, ptr %5, align 8, !tbaa !5
  store i64 0, ptr %8, align 8, !tbaa !14
  br label %25

25:                                               ; preds = %47, %1
  %26 = load i64, ptr %8, align 8, !tbaa !14
  %27 = icmp ult i64 %26, 7
  br i1 %27, label %28, label %50

28:                                               ; preds = %25
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.EFI_DHCP4_PACKET, ptr %29, i32 0, i32 2
  %31 = getelementptr inbounds %struct.anon, ptr %30, i32 0, i32 2
  %32 = getelementptr inbounds [1 x i8], ptr %31, i64 0, i64 0
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct.EFI_DHCP4_PACKET, ptr %33, i32 0, i32 1
  %35 = load i32, ptr %34, align 1, !tbaa !16
  %36 = zext i32 %35 to i64
  %37 = sub i64 %36, 236
  %38 = sub i64 %37, 4
  %39 = trunc i64 %38 to i32
  %40 = load i64, ptr %8, align 8, !tbaa !14
  %41 = getelementptr inbounds [7 x i8], ptr @mInterestedDhcp4Tags, i64 0, i64 %40
  %42 = load i8, ptr %41, align 1, !tbaa !21
  %43 = call ptr @PxeBcParseExtendOptions(ptr noundef %32, i32 noundef %39, i8 noundef zeroext %42)
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = load i64, ptr %8, align 8, !tbaa !14
  %46 = getelementptr inbounds ptr, ptr %44, i64 %45
  store ptr %43, ptr %46, align 8, !tbaa !5
  br label %47

47:                                               ; preds = %28
  %48 = load i64, ptr %8, align 8, !tbaa !14
  %49 = add i64 %48, 1
  store i64 %49, ptr %8, align 8, !tbaa !14
  br label %25, !llvm.loop !22

50:                                               ; preds = %25
  %51 = load ptr, ptr %5, align 8, !tbaa !5
  %52 = getelementptr inbounds ptr, ptr %51, i64 2
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %53, ptr %6, align 8, !tbaa !5
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = icmp ne ptr %54, null
  br i1 %55, label %56, label %129

56:                                               ; preds = %50
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %57, i32 0, i32 2
  %59 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %60 = load i8, ptr %59, align 1, !tbaa !21
  %61 = zext i8 %60 to i32
  %62 = and i32 %61, 1
  %63 = icmp ne i32 %62, 0
  br i1 %63, label %64, label %92

64:                                               ; preds = %56
  store i64 0, ptr %8, align 8, !tbaa !14
  br label %65

65:                                               ; preds = %88, %64
  %66 = load i64, ptr %8, align 8, !tbaa !14
  %67 = icmp ult i64 %66, 7
  br i1 %67, label %68, label %91

68:                                               ; preds = %65
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = load i64, ptr %8, align 8, !tbaa !14
  %71 = getelementptr inbounds ptr, ptr %69, i64 %70
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  %73 = icmp eq ptr %72, null
  br i1 %73, label %74, label %87

74:                                               ; preds = %68
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.EFI_DHCP4_PACKET, ptr %75, i32 0, i32 2
  %77 = getelementptr inbounds %struct.anon, ptr %76, i32 0, i32 0
  %78 = getelementptr inbounds %struct.EFI_DHCP4_HEADER, ptr %77, i32 0, i32 13
  %79 = getelementptr inbounds [128 x i8], ptr %78, i64 0, i64 0
  %80 = load i64, ptr %8, align 8, !tbaa !14
  %81 = getelementptr inbounds [7 x i8], ptr @mInterestedDhcp4Tags, i64 0, i64 %80
  %82 = load i8, ptr %81, align 1, !tbaa !21
  %83 = call ptr @PxeBcParseExtendOptions(ptr noundef %79, i32 noundef 128, i8 noundef zeroext %82)
  %84 = load ptr, ptr %5, align 8, !tbaa !5
  %85 = load i64, ptr %8, align 8, !tbaa !14
  %86 = getelementptr inbounds ptr, ptr %84, i64 %85
  store ptr %83, ptr %86, align 8, !tbaa !5
  br label %87

87:                                               ; preds = %74, %68
  br label %88

88:                                               ; preds = %87
  %89 = load i64, ptr %8, align 8, !tbaa !14
  %90 = add i64 %89, 1
  store i64 %90, ptr %8, align 8, !tbaa !14
  br label %65, !llvm.loop !24

91:                                               ; preds = %65
  br label %92

92:                                               ; preds = %91, %56
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %93, i32 0, i32 2
  %95 = getelementptr inbounds [1 x i8], ptr %94, i64 0, i64 0
  %96 = load i8, ptr %95, align 1, !tbaa !21
  %97 = zext i8 %96 to i32
  %98 = and i32 %97, 2
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %100, label %128

100:                                              ; preds = %92
  store i64 0, ptr %8, align 8, !tbaa !14
  br label %101

101:                                              ; preds = %124, %100
  %102 = load i64, ptr %8, align 8, !tbaa !14
  %103 = icmp ult i64 %102, 7
  br i1 %103, label %104, label %127

104:                                              ; preds = %101
  %105 = load ptr, ptr %5, align 8, !tbaa !5
  %106 = load i64, ptr %8, align 8, !tbaa !14
  %107 = getelementptr inbounds ptr, ptr %105, i64 %106
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  %109 = icmp eq ptr %108, null
  br i1 %109, label %110, label %123

110:                                              ; preds = %104
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.EFI_DHCP4_PACKET, ptr %111, i32 0, i32 2
  %113 = getelementptr inbounds %struct.anon, ptr %112, i32 0, i32 0
  %114 = getelementptr inbounds %struct.EFI_DHCP4_HEADER, ptr %113, i32 0, i32 12
  %115 = getelementptr inbounds [64 x i8], ptr %114, i64 0, i64 0
  %116 = load i64, ptr %8, align 8, !tbaa !14
  %117 = getelementptr inbounds [7 x i8], ptr @mInterestedDhcp4Tags, i64 0, i64 %116
  %118 = load i8, ptr %117, align 1, !tbaa !21
  %119 = call ptr @PxeBcParseExtendOptions(ptr noundef %115, i32 noundef 64, i8 noundef zeroext %118)
  %120 = load ptr, ptr %5, align 8, !tbaa !5
  %121 = load i64, ptr %8, align 8, !tbaa !14
  %122 = getelementptr inbounds ptr, ptr %120, i64 %121
  store ptr %119, ptr %122, align 8, !tbaa !5
  br label %123

123:                                              ; preds = %110, %104
  br label %124

124:                                              ; preds = %123
  %125 = load i64, ptr %8, align 8, !tbaa !14
  %126 = add i64 %125, 1
  store i64 %126, ptr %8, align 8, !tbaa !14
  br label %101, !llvm.loop !25

127:                                              ; preds = %101
  br label %128

128:                                              ; preds = %127, %92
  br label %129

129:                                              ; preds = %128, %50
  %130 = load ptr, ptr %5, align 8, !tbaa !5
  %131 = getelementptr inbounds ptr, ptr %130, i64 5
  %132 = load ptr, ptr %131, align 8, !tbaa !5
  store ptr %132, ptr %6, align 8, !tbaa !5
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = icmp ne ptr %133, null
  br i1 %134, label %135, label %150

135:                                              ; preds = %129
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %136, i32 0, i32 1
  %138 = load i8, ptr %137, align 1, !tbaa !26
  %139 = zext i8 %138 to i32
  %140 = icmp sge i32 %139, 9
  br i1 %140, label %141, label %150

141:                                              ; preds = %135
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %142, i32 0, i32 2
  %144 = getelementptr inbounds [1 x i8], ptr %143, i64 0, i64 0
  %145 = call i64 @CompareMem(ptr noundef %144, ptr noundef @.str.4, i64 noundef 9)
  %146 = icmp eq i64 %145, 0
  br i1 %146, label %147, label %150

147:                                              ; preds = %141
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %148, i32 0, i32 1
  store i8 1, ptr %149, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %147, %141, %135, %129
  %151 = load ptr, ptr %5, align 8, !tbaa !5
  %152 = getelementptr inbounds ptr, ptr %151, i64 1
  %153 = load ptr, ptr %152, align 8, !tbaa !5
  store ptr %153, ptr %6, align 8, !tbaa !5
  %154 = load ptr, ptr %3, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %154, i32 0, i32 1
  %156 = load i8, ptr %155, align 8, !tbaa !9
  %157 = zext i8 %156 to i32
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %170

159:                                              ; preds = %150
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = icmp ne ptr %160, null
  br i1 %161, label %162, label %170

162:                                              ; preds = %159
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = load ptr, ptr %3, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %164, i32 0, i32 4
  %166 = call zeroext i8 @PxeBcParseVendorOptions(ptr noundef %163, ptr noundef %165)
  %167 = icmp ne i8 %166, 0
  br i1 %167, label %169, label %168

168:                                              ; preds = %162
  store i8 0, ptr %2, align 1
  store i32 1, ptr %10, align 4
  br label %272

169:                                              ; preds = %162
  br label %170

170:                                              ; preds = %169, %159, %150
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = getelementptr inbounds ptr, ptr %171, i64 6
  %173 = load ptr, ptr %172, align 8, !tbaa !5
  %174 = icmp ne ptr %173, null
  br i1 %174, label %175, label %198

175:                                              ; preds = %170
  %176 = load ptr, ptr %5, align 8, !tbaa !5
  %177 = getelementptr inbounds ptr, ptr %176, i64 6
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %178, i32 0, i32 2
  %180 = getelementptr inbounds [1 x i8], ptr %179, i64 0, i64 0
  store ptr %180, ptr %9, align 8, !tbaa !5
  %181 = load ptr, ptr %5, align 8, !tbaa !5
  %182 = getelementptr inbounds ptr, ptr %181, i64 6
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %183, i32 0, i32 1
  %185 = load i8, ptr %184, align 1, !tbaa !26
  %186 = zext i8 %185 to i32
  %187 = load ptr, ptr %9, align 8, !tbaa !5
  %188 = sext i32 %186 to i64
  %189 = getelementptr inbounds i8, ptr %187, i64 %188
  store ptr %189, ptr %9, align 8, !tbaa !5
  %190 = load ptr, ptr %9, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i64 -1
  %192 = load i8, ptr %191, align 1, !tbaa !21
  %193 = zext i8 %192 to i32
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %197

195:                                              ; preds = %175
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  store i8 0, ptr %196, align 1, !tbaa !21
  br label %197

197:                                              ; preds = %195, %175
  br label %217

198:                                              ; preds = %170
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.EFI_DHCP4_PACKET, ptr %199, i32 0, i32 2
  %201 = getelementptr inbounds %struct.anon, ptr %200, i32 0, i32 0
  %202 = getelementptr inbounds %struct.EFI_DHCP4_HEADER, ptr %201, i32 0, i32 13
  %203 = getelementptr inbounds [128 x i8], ptr %202, i64 0, i64 0
  %204 = load i8, ptr %203, align 1, !tbaa !21
  %205 = sext i8 %204 to i32
  %206 = icmp ne i32 %205, 0
  br i1 %206, label %207, label %216

207:                                              ; preds = %198
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.EFI_DHCP4_PACKET, ptr %208, i32 0, i32 2
  %210 = getelementptr inbounds %struct.anon, ptr %209, i32 0, i32 0
  %211 = getelementptr inbounds %struct.EFI_DHCP4_HEADER, ptr %210, i32 0, i32 13
  %212 = getelementptr inbounds [128 x i8], ptr %211, i64 0, i64 0
  %213 = getelementptr inbounds i8, ptr %212, i64 -2
  %214 = load ptr, ptr %5, align 8, !tbaa !5
  %215 = getelementptr inbounds ptr, ptr %214, i64 6
  store ptr %213, ptr %215, align 8, !tbaa !5
  br label %216

216:                                              ; preds = %207, %198
  br label %217

217:                                              ; preds = %216, %197
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = getelementptr inbounds ptr, ptr %218, i64 3
  %220 = load ptr, ptr %219, align 8, !tbaa !5
  store ptr %220, ptr %6, align 8, !tbaa !5
  %221 = load ptr, ptr %6, align 8, !tbaa !5
  %222 = icmp eq ptr %221, null
  br i1 %222, label %230, label %223

223:                                              ; preds = %217
  %224 = load ptr, ptr %6, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.EFI_DHCP4_PACKET_OPTION, ptr %224, i32 0, i32 2
  %226 = getelementptr inbounds [1 x i8], ptr %225, i64 0, i64 0
  %227 = load i8, ptr %226, align 1, !tbaa !21
  %228 = zext i8 %227 to i32
  %229 = icmp eq i32 %228, 0
  br i1 %229, label %230, label %239

230:                                              ; preds = %223, %217
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %231, i32 0, i32 3
  %233 = getelementptr inbounds [7 x ptr], ptr %232, i64 0, i64 6
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  store ptr %234, ptr %6, align 8, !tbaa !5
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = icmp eq ptr %235, null
  br i1 %236, label %237, label %238

237:                                              ; preds = %230
  store i8 0, ptr %2, align 1
  store i32 1, ptr %10, align 4
  br label %272

238:                                              ; preds = %230
  store i8 4, ptr %7, align 1, !tbaa !21
  br label %268

239:                                              ; preds = %223
  %240 = load ptr, ptr %3, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %240, i32 0, i32 4
  %242 = getelementptr inbounds %struct.PXEBC_VENDOR_OPTION, ptr %241, i32 0, i32 0
  %243 = getelementptr inbounds [8 x i32], ptr %242, i64 0, i64 0
  %244 = load i32, ptr %243, align 8, !tbaa !28
  %245 = and i32 %244, 1984
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %247, label %248

247:                                              ; preds = %239
  store i8 0, ptr %7, align 1, !tbaa !21
  br label %267

248:                                              ; preds = %239
  %249 = load ptr, ptr %3, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %249, i32 0, i32 4
  %251 = getelementptr inbounds %struct.PXEBC_VENDOR_OPTION, ptr %250, i32 0, i32 0
  %252 = getelementptr inbounds [8 x i32], ptr %251, i64 0, i64 0
  %253 = load i32, ptr %252, align 8, !tbaa !28
  %254 = and i32 %253, 62
  %255 = icmp eq i32 %254, 62
  br i1 %255, label %256, label %257

256:                                              ; preds = %248
  store i8 0, ptr %2, align 1
  store i32 1, ptr %10, align 4
  br label %272

257:                                              ; preds = %248
  %258 = load ptr, ptr %3, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %258, i32 0, i32 1
  %260 = load i8, ptr %259, align 8, !tbaa !9
  %261 = zext i8 %260 to i32
  %262 = icmp ne i32 %261, 0
  %263 = zext i1 %262 to i64
  %264 = select i1 %262, i32 2, i32 3
  %265 = trunc i32 %264 to i8
  store i8 %265, ptr %7, align 1, !tbaa !21
  br label %266

266:                                              ; preds = %257
  br label %267

267:                                              ; preds = %266, %247
  br label %268

268:                                              ; preds = %267, %238
  %269 = load i8, ptr %7, align 1, !tbaa !21
  %270 = load ptr, ptr %3, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.PXEBC_CACHED_DHCP4_PACKET, ptr %270, i32 0, i32 2
  store i8 %269, ptr %271, align 1, !tbaa !29
  store i8 1, ptr %2, align 1
  store i32 1, ptr %10, align 4
  br label %272

272:                                              ; preds = %268, %256, %237, %168
  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 1, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
  %273 = load i8, ptr %2, align 1
  ret i8 %273
}

; Function Attrs: nounwind uwtable
declare dso_local ptr @PxeBcParseExtendOptions(ptr noundef, i32 noundef, i8 noundef zeroext) #2

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

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @PxeBcParseVendorOptions(ptr noundef, ptr noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !7, i64 1480}
!10 = !{!"", !7, i64 0, !7, i64 1480, !7, i64 1481, !7, i64 1488, !11, i64 1544}
!11 = !{!"", !7, i64 0, !12, i64 32, !13, i64 36, !13, i64 38, !7, i64 40, !7, i64 41, !7, i64 42, !12, i64 43, !12, i64 47, !13, i64 52, !13, i64 54, !13, i64 56, !13, i64 58, !6, i64 64, !7, i64 72, !6, i64 80, !7, i64 88, !6, i64 96, !7, i64 104, !6, i64 112, !7, i64 120}
!12 = !{!"", !7, i64 0}
!13 = !{!"short", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"long long", !7, i64 0}
!16 = !{!17, !18, i64 4}
!17 = !{!"", !18, i64 0, !18, i64 4, !19, i64 8}
!18 = !{!"int", !7, i64 0}
!19 = !{!"", !20, i64 0, !18, i64 236, !7, i64 240}
!20 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !18, i64 4, !13, i64 8, !13, i64 10, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !7, i64 28, !7, i64 44, !7, i64 108}
!21 = !{!7, !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = distinct !{!25, !23}
!26 = !{!27, !7, i64 1}
!27 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2}
!28 = !{!18, !18, i64 0}
!29 = !{!10, !7, i64 1481}


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

@mInterestedDhcp4Tags = external dso_local local_unnamed_addr global [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [33 x i8], align 1

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

; Function Attrs: nounwind uwtable
define dso_local zeroext range(i8 0, 2) i8 @PxeBcParseCachedDhcpPacket(ptr noundef %0) local_unnamed_addr #1 {
  %2 = getelementptr inbounds i8, ptr %0, i64 1480
  store i8 0, ptr %2, align 8, !tbaa !5
  %3 = getelementptr inbounds i8, ptr %0, i64 1488
  %4 = tail call ptr @ZeroMem(ptr noundef nonnull %3, i64 noundef 56) #2
  %5 = getelementptr inbounds i8, ptr %0, i64 1544
  %6 = tail call ptr @ZeroMem(ptr noundef nonnull %5, i64 noundef 128) #2
  %7 = getelementptr inbounds i8, ptr %0, i64 248
  %8 = getelementptr inbounds i8, ptr %0, i64 4
  %9 = load i32, ptr %8, align 1, !tbaa !13
  %10 = add i32 %9, -240
  %11 = load i8, ptr @mInterestedDhcp4Tags, align 1, !tbaa !18
  %12 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %10, i8 noundef zeroext %11)
  store ptr %12, ptr %3, align 8, !tbaa !19
  %13 = load i32, ptr %8, align 1, !tbaa !13
  %14 = add i32 %13, -240
  %15 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 1), align 1, !tbaa !18
  %16 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %14, i8 noundef zeroext %15)
  %17 = getelementptr inbounds i8, ptr %0, i64 1496
  store ptr %16, ptr %17, align 8, !tbaa !19
  %18 = load i32, ptr %8, align 1, !tbaa !13
  %19 = add i32 %18, -240
  %20 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 2), align 1, !tbaa !18
  %21 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %19, i8 noundef zeroext %20)
  %22 = getelementptr inbounds i8, ptr %0, i64 1504
  store ptr %21, ptr %22, align 8, !tbaa !19
  %23 = load i32, ptr %8, align 1, !tbaa !13
  %24 = add i32 %23, -240
  %25 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 3), align 1, !tbaa !18
  %26 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %24, i8 noundef zeroext %25)
  %27 = getelementptr inbounds i8, ptr %0, i64 1512
  store ptr %26, ptr %27, align 8, !tbaa !19
  %28 = load i32, ptr %8, align 1, !tbaa !13
  %29 = add i32 %28, -240
  %30 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 4), align 1, !tbaa !18
  %31 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %29, i8 noundef zeroext %30)
  %32 = getelementptr inbounds i8, ptr %0, i64 1520
  store ptr %31, ptr %32, align 8, !tbaa !19
  %33 = load i32, ptr %8, align 1, !tbaa !13
  %34 = add i32 %33, -240
  %35 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 5), align 1, !tbaa !18
  %36 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %34, i8 noundef zeroext %35)
  %37 = getelementptr inbounds i8, ptr %0, i64 1528
  store ptr %36, ptr %37, align 8, !tbaa !19
  %38 = load i32, ptr %8, align 1, !tbaa !13
  %39 = add i32 %38, -240
  %40 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 6), align 1, !tbaa !18
  %41 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %7, i32 noundef %39, i8 noundef zeroext %40)
  %42 = getelementptr inbounds i8, ptr %0, i64 1536
  store ptr %41, ptr %42, align 8, !tbaa !19
  %43 = getelementptr inbounds i8, ptr %0, i64 1504
  %44 = load ptr, ptr %43, align 8, !tbaa !19
  %.not = icmp eq ptr %44, null
  br i1 %.not, label %.loopexit, label %45

45:                                               ; preds = %1
  %46 = getelementptr inbounds i8, ptr %44, i64 2
  %47 = load i8, ptr %46, align 1, !tbaa !18
  %48 = and i8 %47, 1
  %.not69 = icmp eq i8 %48, 0
  br i1 %.not69, label %.loopexit79, label %.preheader78

.preheader78:                                     ; preds = %45
  %49 = getelementptr inbounds i8, ptr %0, i64 116
  %50 = load ptr, ptr %3, align 8, !tbaa !19
  %51 = icmp eq ptr %50, null
  br i1 %51, label %52, label %55

52:                                               ; preds = %.preheader78
  %53 = load i8, ptr @mInterestedDhcp4Tags, align 1, !tbaa !18
  %54 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %53)
  store ptr %54, ptr %3, align 8, !tbaa !19
  br label %55

55:                                               ; preds = %.preheader78, %52
  %56 = load ptr, ptr %17, align 8, !tbaa !19
  %57 = icmp eq ptr %56, null
  br i1 %57, label %58, label %61

58:                                               ; preds = %55
  %59 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 1), align 1, !tbaa !18
  %60 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %59)
  store ptr %60, ptr %17, align 8, !tbaa !19
  br label %61

61:                                               ; preds = %58, %55
  %62 = load ptr, ptr %22, align 8, !tbaa !19
  %63 = icmp eq ptr %62, null
  br i1 %63, label %64, label %67

64:                                               ; preds = %61
  %65 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 2), align 1, !tbaa !18
  %66 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %65)
  store ptr %66, ptr %22, align 8, !tbaa !19
  br label %67

67:                                               ; preds = %64, %61
  %68 = load ptr, ptr %27, align 8, !tbaa !19
  %69 = icmp eq ptr %68, null
  br i1 %69, label %70, label %73

70:                                               ; preds = %67
  %71 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 3), align 1, !tbaa !18
  %72 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %71)
  store ptr %72, ptr %27, align 8, !tbaa !19
  br label %73

73:                                               ; preds = %70, %67
  %74 = load ptr, ptr %32, align 8, !tbaa !19
  %75 = icmp eq ptr %74, null
  br i1 %75, label %76, label %79

76:                                               ; preds = %73
  %77 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 4), align 1, !tbaa !18
  %78 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %77)
  store ptr %78, ptr %32, align 8, !tbaa !19
  br label %79

79:                                               ; preds = %76, %73
  %80 = load ptr, ptr %37, align 8, !tbaa !19
  %81 = icmp eq ptr %80, null
  br i1 %81, label %82, label %85

82:                                               ; preds = %79
  %83 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 5), align 1, !tbaa !18
  %84 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %83)
  store ptr %84, ptr %37, align 8, !tbaa !19
  br label %85

85:                                               ; preds = %82, %79
  %86 = load ptr, ptr %42, align 8, !tbaa !19
  %87 = icmp eq ptr %86, null
  br i1 %87, label %88, label %.loopexit79.loopexit

88:                                               ; preds = %85
  %89 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 6), align 1, !tbaa !18
  %90 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %49, i32 noundef 128, i8 noundef zeroext %89)
  store ptr %90, ptr %42, align 8, !tbaa !19
  br label %.loopexit79.loopexit

.loopexit79.loopexit:                             ; preds = %88, %85
  %.pre = load i8, ptr %46, align 1, !tbaa !18
  br label %.loopexit79

.loopexit79:                                      ; preds = %.loopexit79.loopexit, %45
  %91 = phi i8 [ %.pre, %.loopexit79.loopexit ], [ %47, %45 ]
  %92 = and i8 %91, 2
  %.not70 = icmp eq i8 %92, 0
  br i1 %.not70, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %.loopexit79
  %93 = getelementptr inbounds i8, ptr %0, i64 52
  %94 = load ptr, ptr %3, align 8, !tbaa !19
  %95 = icmp eq ptr %94, null
  br i1 %95, label %96, label %99

96:                                               ; preds = %.preheader
  %97 = load i8, ptr @mInterestedDhcp4Tags, align 1, !tbaa !18
  %98 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %97)
  store ptr %98, ptr %3, align 8, !tbaa !19
  br label %99

99:                                               ; preds = %.preheader, %96
  %100 = load ptr, ptr %17, align 8, !tbaa !19
  %101 = icmp eq ptr %100, null
  br i1 %101, label %102, label %105

102:                                              ; preds = %99
  %103 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 1), align 1, !tbaa !18
  %104 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %103)
  store ptr %104, ptr %17, align 8, !tbaa !19
  br label %105

105:                                              ; preds = %102, %99
  %106 = load ptr, ptr %22, align 8, !tbaa !19
  %107 = icmp eq ptr %106, null
  br i1 %107, label %108, label %111

108:                                              ; preds = %105
  %109 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 2), align 1, !tbaa !18
  %110 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %109)
  store ptr %110, ptr %22, align 8, !tbaa !19
  br label %111

111:                                              ; preds = %108, %105
  %112 = load ptr, ptr %27, align 8, !tbaa !19
  %113 = icmp eq ptr %112, null
  br i1 %113, label %114, label %117

114:                                              ; preds = %111
  %115 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 3), align 1, !tbaa !18
  %116 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %115)
  store ptr %116, ptr %27, align 8, !tbaa !19
  br label %117

117:                                              ; preds = %114, %111
  %118 = load ptr, ptr %32, align 8, !tbaa !19
  %119 = icmp eq ptr %118, null
  br i1 %119, label %120, label %123

120:                                              ; preds = %117
  %121 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 4), align 1, !tbaa !18
  %122 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %121)
  store ptr %122, ptr %32, align 8, !tbaa !19
  br label %123

123:                                              ; preds = %120, %117
  %124 = load ptr, ptr %37, align 8, !tbaa !19
  %125 = icmp eq ptr %124, null
  br i1 %125, label %126, label %129

126:                                              ; preds = %123
  %127 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 5), align 1, !tbaa !18
  %128 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %127)
  store ptr %128, ptr %37, align 8, !tbaa !19
  br label %129

129:                                              ; preds = %126, %123
  %130 = load ptr, ptr %42, align 8, !tbaa !19
  %131 = icmp eq ptr %130, null
  br i1 %131, label %132, label %.loopexit

132:                                              ; preds = %129
  %133 = load i8, ptr getelementptr inbounds (i8, ptr @mInterestedDhcp4Tags, i64 6), align 1, !tbaa !18
  %134 = tail call ptr @PxeBcParseExtendOptions(ptr noundef nonnull %93, i32 noundef 64, i8 noundef zeroext %133)
  store ptr %134, ptr %42, align 8, !tbaa !19
  br label %.loopexit

.loopexit:                                        ; preds = %129, %132, %.loopexit79, %1
  %135 = getelementptr inbounds i8, ptr %0, i64 1528
  %136 = load ptr, ptr %135, align 8, !tbaa !19
  %.not71 = icmp eq ptr %136, null
  br i1 %.not71, label %146, label %137

137:                                              ; preds = %.loopexit
  %138 = getelementptr inbounds i8, ptr %136, i64 1
  %139 = load i8, ptr %138, align 1, !tbaa !20
  %140 = icmp ugt i8 %139, 8
  br i1 %140, label %141, label %146

141:                                              ; preds = %137
  %142 = getelementptr inbounds i8, ptr %136, i64 2
  %143 = tail call i64 @CompareMem(ptr noundef nonnull %142, ptr noundef nonnull @.str.4, i64 noundef 9) #2
  %144 = icmp eq i64 %143, 0
  br i1 %144, label %145, label %146

145:                                              ; preds = %141
  store i8 1, ptr %2, align 8, !tbaa !5
  br label %146

146:                                              ; preds = %145, %141, %137, %.loopexit
  %147 = getelementptr inbounds i8, ptr %0, i64 1496
  %148 = load ptr, ptr %147, align 8, !tbaa !19
  %149 = load i8, ptr %2, align 8, !tbaa !5
  %150 = icmp ne i8 %149, 0
  %151 = icmp ne ptr %148, null
  %or.cond = select i1 %150, i1 %151, i1 false
  br i1 %or.cond, label %152, label %154

152:                                              ; preds = %146
  %153 = tail call zeroext i8 @PxeBcParseVendorOptions(ptr noundef nonnull %148, ptr noundef nonnull %5)
  %.not72 = icmp eq i8 %153, 0
  br i1 %.not72, label %193, label %154

154:                                              ; preds = %152, %146
  %155 = getelementptr inbounds i8, ptr %0, i64 1536
  %156 = load ptr, ptr %155, align 8, !tbaa !19
  %.not73 = icmp eq ptr %156, null
  br i1 %.not73, label %166, label %157

157:                                              ; preds = %154
  %158 = getelementptr inbounds i8, ptr %156, i64 2
  %159 = getelementptr inbounds i8, ptr %156, i64 1
  %160 = load i8, ptr %159, align 1, !tbaa !20
  %161 = zext i8 %160 to i64
  %162 = getelementptr inbounds i8, ptr %158, i64 %161
  %163 = getelementptr inbounds i8, ptr %162, i64 -1
  %164 = load i8, ptr %163, align 1, !tbaa !18
  %.not75 = icmp eq i8 %164, 0
  br i1 %.not75, label %171, label %165

165:                                              ; preds = %157
  store i8 0, ptr %162, align 1, !tbaa !18
  br label %171

166:                                              ; preds = %154
  %167 = getelementptr inbounds i8, ptr %0, i64 116
  %168 = load i8, ptr %167, align 1, !tbaa !18
  %.not74 = icmp eq i8 %168, 0
  br i1 %.not74, label %171, label %169

169:                                              ; preds = %166
  %170 = getelementptr inbounds i8, ptr %0, i64 114
  store ptr %170, ptr %155, align 8, !tbaa !19
  br label %171

171:                                              ; preds = %166, %169, %157, %165
  %172 = getelementptr inbounds i8, ptr %0, i64 1512
  %173 = load ptr, ptr %172, align 8, !tbaa !19
  %174 = icmp eq ptr %173, null
  br i1 %174, label %179, label %175

175:                                              ; preds = %171
  %176 = getelementptr inbounds i8, ptr %173, i64 2
  %177 = load i8, ptr %176, align 1, !tbaa !18
  %178 = icmp eq i8 %177, 0
  br i1 %178, label %179, label %182

179:                                              ; preds = %175, %171
  %180 = load ptr, ptr %155, align 8, !tbaa !19
  %181 = icmp eq ptr %180, null
  br i1 %181, label %193, label %191

182:                                              ; preds = %175
  %183 = load i32, ptr %5, align 8, !tbaa !22
  %184 = and i32 %183, 1984
  %.not76 = icmp eq i32 %184, 0
  br i1 %.not76, label %185, label %191

185:                                              ; preds = %182
  %186 = and i32 %183, 62
  %187 = icmp eq i32 %186, 62
  br i1 %187, label %193, label %188

188:                                              ; preds = %185
  %189 = load i8, ptr %2, align 8, !tbaa !5
  %.not77 = icmp eq i8 %189, 0
  %190 = select i1 %.not77, i8 3, i8 2
  br label %191

191:                                              ; preds = %182, %179, %188
  %.062 = phi i8 [ %190, %188 ], [ 4, %179 ], [ 0, %182 ]
  %192 = getelementptr inbounds i8, ptr %0, i64 1481
  store i8 %.062, ptr %192, align 1, !tbaa !23
  br label %193

193:                                              ; preds = %185, %179, %152, %191
  %.063 = phi i8 [ 1, %191 ], [ 0, %152 ], [ 0, %179 ], [ 0, %185 ]
  ret i8 %.063
}

; Function Attrs: nounwind uwtable
declare dso_local ptr @PxeBcParseExtendOptions(ptr noundef, i32 noundef, i8 noundef zeroext) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @PxeBcParseVendorOptions(ptr noundef, ptr noundef) local_unnamed_addr #1

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 1480}
!6 = !{!"", !7, i64 0, !7, i64 1480, !7, i64 1481, !7, i64 1488, !9, i64 1544}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"", !7, i64 0, !10, i64 32, !11, i64 36, !11, i64 38, !7, i64 40, !7, i64 41, !7, i64 42, !10, i64 43, !10, i64 47, !11, i64 52, !11, i64 54, !11, i64 56, !11, i64 58, !12, i64 64, !7, i64 72, !12, i64 80, !7, i64 88, !12, i64 96, !7, i64 104, !12, i64 112, !7, i64 120}
!10 = !{!"", !7, i64 0}
!11 = !{!"short", !7, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !15, i64 4}
!14 = !{!"", !15, i64 0, !15, i64 4, !16, i64 8}
!15 = !{!"int", !7, i64 0}
!16 = !{!"", !17, i64 0, !15, i64 236, !7, i64 240}
!17 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3, !15, i64 4, !11, i64 8, !11, i64 10, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 28, !7, i64 44, !7, i64 108}
!18 = !{!7, !7, i64 0}
!19 = !{!12, !12, i64 0}
!20 = !{!21, !7, i64 1}
!21 = !{!"", !7, i64 0, !7, i64 1, !7, i64 2}
!22 = !{!15, !15, i64 0}
!23 = !{!6, !7, i64 1481}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,SROAPass,SimplifyCFGPass,TailCallElimPass