Provide SMBIOS data
Correctly load stack parameters
Remove some unused stuff
Execute the code on a secondary thread with a stack in the low 4GB region
Refactor (and disable) some of the patching
Use a really really simplistic pool allocator to keep allocations in the low 4GB region. Probably could've just used some kind of malloc zone for this but this was actually the lazy way.
Better default var values
Return values correction from graphics protocol getmode
Put allocations and fake handles in the low 4GB region
Implement GetMemoryMap(), ExitBootServices(), SetVirtualAddressMap()
Give the ROM region empty values
Use GUIDs for data hub properties
Patch out a CLI instruction that can't be executed in userspace
SMBIOS header with partial data. This is intentionally left without the full data for privacy reason.