+class EFI_IMAGE_OPTIONAL_HEADER32(Structure):\r
+ _fields_ = [\r
+ ('Magic', c_uint16),\r
+ ('MajorLinkerVersion', c_uint8),\r
+ ('MinorLinkerVersion', c_uint8),\r
+ ('SizeOfCode', c_uint32),\r
+ ('SizeOfInitializedData', c_uint32),\r
+ ('SizeOfUninitializedData', c_uint32),\r
+ ('AddressOfEntryPoint', c_uint32),\r
+ ('BaseOfCode', c_uint32),\r
+ ('BaseOfData', c_uint32),\r
+ ('ImageBase', c_uint32),\r
+ ('SectionAlignment', c_uint32),\r
+ ('FileAlignment', c_uint32),\r
+ ('MajorOperatingSystemVersion', c_uint16),\r
+ ('MinorOperatingSystemVersion', c_uint16),\r
+ ('MajorImageVersion', c_uint16),\r
+ ('MinorImageVersion', c_uint16),\r
+ ('MajorSubsystemVersion', c_uint16),\r
+ ('MinorSubsystemVersion', c_uint16),\r
+ ('Win32VersionValue', c_uint32),\r
+ ('SizeOfImage', c_uint32),\r
+ ('SizeOfHeaders', c_uint32),\r
+ ('CheckSum' , c_uint32),\r
+ ('Subsystem', c_uint16),\r
+ ('DllCharacteristics', c_uint16),\r
+ ('SizeOfStackReserve', c_uint32),\r
+ ('SizeOfStackCommit' , c_uint32),\r
+ ('SizeOfHeapReserve', c_uint32),\r
+ ('SizeOfHeapCommit' , c_uint32),\r
+ ('LoaderFlags' , c_uint32),\r
+ ('NumberOfRvaAndSizes', c_uint32),\r
+ ('DataDirectory', ARRAY(EFI_IMAGE_DATA_DIRECTORY, 16))\r
+ ]\r
+\r
+class EFI_IMAGE_NT_HEADERS32(Structure):\r
+ _fields_ = [\r
+ ('Signature', c_uint32),\r
+ ('FileHeader', EFI_IMAGE_FILE_HEADER),\r
+ ('OptionalHeader', EFI_IMAGE_OPTIONAL_HEADER32)\r
+ ]\r
+\r
+\r
+class EFI_IMAGE_DIRECTORY_ENTRY:\r
+ EXPORT = 0\r
+ IMPORT = 1\r
+ RESOURCE = 2\r
+ EXCEPTION = 3\r
+ SECURITY = 4\r
+ BASERELOC = 5\r
+ DEBUG = 6\r
+ COPYRIGHT = 7\r
+ GLOBALPTR = 8\r
+ TLS = 9\r
+ LOAD_CONFIG = 10\r
+\r