Except for the type named HeaderPt1, the rest of the ELF data uses the byte order indicated by the e_ident. Currently data will be read using the host's native byte order, which isn't correct in general.
It's not clear to me how to fix this, as the parsing approach taken by zero isn't particularly friendly to reinterpreting data.