diff --git a/resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch b/resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e00379bf6d1a5958020ccdbc7bdc2c4ff9b4d661
--- /dev/null
+++ b/resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch
@@ -0,0 +1,132 @@
+From d187ceefacc4909c4a3fdb8098878cb9bcd2c198 Mon Sep 17 00:00:00 2001
+From: Nicholas Chin <nic.c3.14@gmail.com>
+Date: Fri, 5 May 2023 19:34:29 -0600
+Subject: [PATCH 1/3] dell_inspiron_1100_unpacker: Fix minor style issues
+
+- Make indent width consistent
+- Use spaces around -= operator
+- Rename variable type to type_id to avoid shadowing the type method,
+  though that method isn't ever used in this program
+
+Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
+Change-Id: I2d47501845591e228b6c5d61c36ca2edce91d36a
+---
+ dell_inspiron_1100_unpacker.py | 84 +++++++++++++++++-----------------
+ 1 file changed, 42 insertions(+), 42 deletions(-)
+
+diff --git a/dell_inspiron_1100_unpacker.py b/dell_inspiron_1100_unpacker.py
+index 3d5adf5..b12059b 100755
+--- a/dell_inspiron_1100_unpacker.py
++++ b/dell_inspiron_1100_unpacker.py
+@@ -19,7 +19,7 @@ def memcpy(arr1, off1, arr2, off2, count):
+             raise Exception("Trying to write out of bounds")
+         off1 += 1
+         off2 += 1
+-        count -=1
++        count -= 1
+ 
+ # looks like some lzss variation
+ def dell_unpack(indata):
+@@ -64,58 +64,58 @@ def dell_unpack(indata):
+     return dst.tostring()
+ 
+ mod_types = {
+-  0x01: "Main ROM",
+-  0x0C: "Microcode update",
++    0x01: "Main ROM",
++    0x0C: "Microcode update",
+ }
+ 
+ print "Dell/Phoenix ROM BIOS PLUS unpacker"
+ if len(sys.argv) < 2:
+-  print "Usage: dell_unpack.py bios.bin [offset]"
+-  sys.exit(1)
++    print "Usage: dell_unpack.py bios.bin [offset]"
++    sys.exit(1)
+ fname = sys.argv[1]
+ offs = 0
+ f = open(fname, "rb").read()
+ if len(sys.argv) > 2:
+-  offs = int(sys.argv[2], 16)
++    offs = int(sys.argv[2], 16)
+ else:
+-  offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.")
+-  if offs == -1:
+-    print "Does not look like a Dell/Phoenix ROM BIOS PLUS"
+-    sys.exit(2)
+-  if f[offs-5] == '\x01':
+-    hlen = 5 # 32-bit length
+-    offs -= 5
+-    fmt = "<BI"
+-  elif f[offs-3] == '\x01':
+-    hlen = 3 # 16-bit length
+-    offs -= 3
+-    fmt = "<BH"
+-  else:
+-    print "Unhandled format!"
+-    sys.exit(1)
+-  print "Found compressed module at %08X" % offs
++    offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.")
++    if offs == -1:
++        print "Does not look like a Dell/Phoenix ROM BIOS PLUS"
++        sys.exit(2)
++    if f[offs-5] == '\x01':
++        hlen = 5 # 32-bit length
++        offs -= 5
++        fmt = "<BI"
++    elif f[offs-3] == '\x01':
++        hlen = 3 # 16-bit length
++        offs -= 3
++        fmt = "<BH"
++    else:
++        print "Unhandled format!"
++        sys.exit(1)
++    print "Found compressed module at %08X" % offs
+ if offs > 0:
+     fn = "EC.bin"
+     print "%08X EC code, %08X  %s" % (0, offs, fn)
+     open(fn, "wb").write(f[:offs])
+ while True:
+-  type, leng = struct.unpack(fmt, f[offs:offs+hlen])
+-  print "%08X type %02X" % (offs, type),
+-  offs += hlen
+-  if type == 0xFF:
+-      print "<end of chain>"
+-      break
+-  data = f[offs:offs+leng]
+-  offs += leng
+-  if type != 0xC:
+-      odata = dell_unpack(data)
+-  else:
+-      odata = data
+-  print " %08X -> %08X" % (leng, len(odata)),
+-  fn = "mod_%02X.bin" % type
+-  print " %s" % fn,
+-  if type in mod_types:
+-      print "(%s)" % mod_types[type]
+-  else:
+-      print ""
+-  open(fn, "wb").write(odata)
++    type_id, leng = struct.unpack(fmt, f[offs:offs+hlen])
++    print "%08X type %02X" % (offs, type_id),
++    offs += hlen
++    if type_id == 0xFF:
++        print "<end of chain>"
++        break
++    data = f[offs:offs+leng]
++    offs += leng
++    if type_id != 0xC:
++        odata = dell_unpack(data)
++    else:
++        odata = data
++    print " %08X -> %08X" % (leng, len(odata)),
++    fn = "mod_%02X.bin" % type_id
++    print " %s" % fn,
++    if type_id in mod_types:
++        print "(%s)" % mod_types[type_id]
++    else:
++        print ""
++    open(fn, "wb").write(odata)
+-- 
+2.40.1
+
diff --git a/resources/bios_extract/patches/0002-dell_inspiron_1100_unpacker-Convert-from-python-2-to.patch b/resources/bios_extract/patches/0002-dell_inspiron_1100_unpacker-Convert-from-python-2-to.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f49c8dbda79053173258ea6c34c4cd2f97940723
--- /dev/null
+++ b/resources/bios_extract/patches/0002-dell_inspiron_1100_unpacker-Convert-from-python-2-to.patch
@@ -0,0 +1,105 @@
+From 34ecbda8cc75eecb747004520c9e0bd6de3c7723 Mon Sep 17 00:00:00 2001
+From: Nicholas Chin <nic.c3.14@gmail.com>
+Date: Fri, 5 May 2023 19:35:45 -0600
+Subject: [PATCH 2/3] dell_inspiron_1100_unpacker: Convert from python 2 to 3
+
+TEST: The output of the script is the same as the python 2 version when
+run against the Inspiron 1100 BIOS
+
+Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
+Change-Id: I2ab9a72bc65121b1106e9867b7d58d1eefb0eb3d
+---
+ dell_inspiron_1100_unpacker.py | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/dell_inspiron_1100_unpacker.py b/dell_inspiron_1100_unpacker.py
+index b12059b..5e43813 100755
+--- a/dell_inspiron_1100_unpacker.py
++++ b/dell_inspiron_1100_unpacker.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python2
++#!/usr/bin/env python3
+ # Dell/Phoenix ROM BIOS PLUS unpacker
+ # 2012-09-12 version 0.1
+ # 2012-10-10 version 0.2 added support for older BIOSes with 16-bit length (Dell Inspiron 1100)
+@@ -61,16 +61,16 @@ def dell_unpack(indata):
+             dstoff += count
+             srcoff += count
+ 
+-    return dst.tostring()
++    return dst
+ 
+ mod_types = {
+     0x01: "Main ROM",
+     0x0C: "Microcode update",
+ }
+ 
+-print "Dell/Phoenix ROM BIOS PLUS unpacker"
++print("Dell/Phoenix ROM BIOS PLUS unpacker")
+ if len(sys.argv) < 2:
+-    print "Usage: dell_unpack.py bios.bin [offset]"
++    print("Usage: dell_unpack.py bios.bin [offset]")
+     sys.exit(1)
+ fname = sys.argv[1]
+ offs = 0
+@@ -78,32 +78,32 @@ f = open(fname, "rb").read()
+ if len(sys.argv) > 2:
+     offs = int(sys.argv[2], 16)
+ else:
+-    offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.")
++    offs = f.find(b"\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.")
+     if offs == -1:
+-        print "Does not look like a Dell/Phoenix ROM BIOS PLUS"
++        print("Does not look like a Dell/Phoenix ROM BIOS PLUS")
+         sys.exit(2)
+-    if f[offs-5] == '\x01':
++    if f[offs-5] == 0x01:
+         hlen = 5 # 32-bit length
+         offs -= 5
+         fmt = "<BI"
+-    elif f[offs-3] == '\x01':
++    elif f[offs-3] == 0x01:
+         hlen = 3 # 16-bit length
+         offs -= 3
+         fmt = "<BH"
+     else:
+-        print "Unhandled format!"
++        print("Unhandled format!")
+         sys.exit(1)
+-    print "Found compressed module at %08X" % offs
++    print("Found compressed module at %08X" % offs)
+ if offs > 0:
+     fn = "EC.bin"
+-    print "%08X EC code, %08X  %s" % (0, offs, fn)
++    print("%08X EC code, %08X  %s" % (0, offs, fn))
+     open(fn, "wb").write(f[:offs])
+ while True:
+     type_id, leng = struct.unpack(fmt, f[offs:offs+hlen])
+-    print "%08X type %02X" % (offs, type_id),
++    print("%08X type %02X" % (offs, type_id), end=" ")
+     offs += hlen
+     if type_id == 0xFF:
+-        print "<end of chain>"
++        print("<end of chain>")
+         break
+     data = f[offs:offs+leng]
+     offs += leng
+@@ -111,11 +111,11 @@ while True:
+         odata = dell_unpack(data)
+     else:
+         odata = data
+-    print " %08X -> %08X" % (leng, len(odata)),
++    print(" %08X -> %08X" % (leng, len(odata)), end=" ")
+     fn = "mod_%02X.bin" % type_id
+-    print " %s" % fn,
++    print(" %s" % fn, end=" ")
+     if type_id in mod_types:
+-        print "(%s)" % mod_types[type_id]
++        print("(%s)" % mod_types[type_id])
+     else:
+-        print ""
++        print("")
+     open(fn, "wb").write(odata)
+-- 
+2.40.1
+
diff --git a/resources/bios_extract/patches/0003-dell_inspiron_1100_unpacker-Add-module-type-0x52.patch b/resources/bios_extract/patches/0003-dell_inspiron_1100_unpacker-Add-module-type-0x52.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6de392be5f009b8db89c17354b03675c03deb1df
--- /dev/null
+++ b/resources/bios_extract/patches/0003-dell_inspiron_1100_unpacker-Add-module-type-0x52.patch
@@ -0,0 +1,50 @@
+From b3868ed71a390f925eb22b926b9c735f7b84b383 Mon Sep 17 00:00:00 2001
+From: Nicholas Chin <nic.c3.14@gmail.com>
+Date: Sat, 6 May 2023 11:14:45 -0600
+Subject: [PATCH 3/3] dell_inspiron_1100_unpacker: Add module type 0x52
+
+The module with type 0x52 in the Latitude E6400 BIOS is the EC firmware,
+and is not compressed. The current behavior tries to decompress this
+module leading to an index out of bounds error at runtime, so add a new
+condition to avoid decompressing it. This assumes type 0x52 is always
+used for EC firmware.
+
+The current behavior also assumes all the data before the first module
+is EC firmware, which was probably true for the Inspiron 1100, but for
+the E6400 the EC firmware is in module 0x52. However, for simplicity an
+exception is not made for this behavior, so the extracted EC.bin should
+just be treated as spurious data for the E6400.
+
+TEST: Inspiron 1100 BIOS is still unpacked correctly, Latitude E6400
+BIOS unpacks without runtime errors.
+
+Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
+Change-Id: I3152150b7dea4d79840c61683692c65b1311cce2
+---
+ dell_inspiron_1100_unpacker.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/dell_inspiron_1100_unpacker.py b/dell_inspiron_1100_unpacker.py
+index 5e43813..3589550 100755
+--- a/dell_inspiron_1100_unpacker.py
++++ b/dell_inspiron_1100_unpacker.py
+@@ -66,6 +66,7 @@ def dell_unpack(indata):
+ mod_types = {
+     0x01: "Main ROM",
+     0x0C: "Microcode update",
++    0x52: "EC firmware"
+ }
+ 
+ print("Dell/Phoenix ROM BIOS PLUS unpacker")
+@@ -107,7 +108,7 @@ while True:
+         break
+     data = f[offs:offs+leng]
+     offs += leng
+-    if type_id != 0xC:
++    if type_id != 0xC and type_id != 0x52:
+         odata = dell_unpack(data)
+     else:
+         odata = data
+-- 
+2.40.1
+