class FFSFileHeader(FieldSet): static_size = 24*8 def createFields(self): yield EfiGuid(self, "name", "Name") yield UInt16(self, "integrity_check", "IntegrityCheck") yield UInt8(self, "type", "Type") yield UInt8(self, "attributes", "Attributes") yield UInt24(self, "size", "Size") yield UInt8(self, "state", "State") class FFSFile(FieldSet): def createFields(self): yield FFSFileHeader(self, "file_header", "FileHeader") size = self.getField("file_header").getField("size").value yield Bytes(self, "file_content", size, "Content") padding = paddingSize(size, 8) if padding: yield Bytes(self, "padding", padding, "Padding")