public static UDIFHeader read(ByteProvider bp, long offset) throws IOException {
		BinaryReader br = new BinaryReader(bp, false);
		br.setPointerIndex(offset);
		UDIFHeader udif = new UDIFHeader();

		udif.signature = br.readNextInt();
		udif.version = br.readNextInt();
		udif.headerSize = br.readNextInt();
		udif.flags = br.readNextInt();
		udif.runningDataForkOffset = br.readNextLong();
		udif.dataForkOffset = br.readNextLong();
		udif.dataForkLength = br.readNextLong();
		udif.rsrcForkOffset = br.readNextLong();
		udif.rsrcForkLength = br.readNextLong();
		udif.segmentNumber = br.readNextInt();
		udif.segmentCount = br.readNextInt();
		udif.segmentID = br.readNextByteArray(16);
		udif.dataChecksumType = br.readNextInt();
		udif.dataChecksumSize = br.readNextInt();
		udif.dataChecksum = br.readNextIntArray(32);
		udif.xmlOffset = br.readNextLong();
		udif.xmlLength = br.readNextLong();
		udif.reserved = br.readNextByteArray(120);
		udif.checksumType = br.readNextInt();
		udif.checksumSize = br.readNextInt();
		udif.checksum = br.readNextIntArray(32);
		udif.imageVariant = br.readNextInt();
		udif.sectorCount = br.readNextLong();
		udif.reserved2 = br.readNextInt();
		udif.reserved3 = br.readNextInt();
		udif.reserved4 = br.readNextInt();

		return udif;
	}
Reads a UDIFHeader from the specified offset of the ByteProvider.

@param bp {@link ByteProvider}
@param offset offset (typically 512 bytes from end)
@return new UDIFHeader, never null
@throws IOException if io error
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/ios/dmg/UDIFHeader.java