public static final AttackInfo parseDmgMa(final LittleEndianAccessor lea) {
	final AttackInfo ret = new AttackInfo();

	lea.skip(1);
	ret.tbyte = lea.readByte();
	ret.targets = (byte) ((ret.tbyte >>> 4) & 0xF);
	ret.hits = (byte) (ret.tbyte & 0xF);
	ret.skill = lea.readInt();

	lea.skip(9); // ORDER [4] bytes on v.79, [4] bytes on v.80, [1] byte on v.82
	ret.display = lea.readByte(); // Always zero?

	switch (ret.skill) {
	    case 2121001: // Big Bang
	    case 2221001:
	    case 2321001:
		ret.charge = lea.readInt();
		break;
	    default:
		ret.charge = -1;
		break;
	}

	ret.animation = lea.readByte();
	ret.speed = lea.readByte(); // Confirmed
	lea.skip(1); // Weapon subclass
	ret.lastAttackTickCount = lea.readInt(); // Ticks

	int oid, damage;
	List<Integer> allDamageNumbers;
	ret.allDamage = new ArrayList<AttackPair>();

	for (int i = 0; i < ret.targets; i++) {
	    oid = lea.readInt();
	    lea.skip(14); // [1] Always 6?, [3] unk, [4] Pos1, [4] Pos2, [2] seems to change randomly for some attack

	    allDamageNumbers = new ArrayList<Integer>();

	    for (int j = 0; j < ret.hits; j++) {
		damage = lea.readInt();
		allDamageNumbers.add(Integer.valueOf(damage));
	    }
	    lea.skip(4); // CRC of monster [Wz Editing]
	    ret.allDamage.add(new AttackPair(Integer.valueOf(oid), allDamageNumbers));
	}

	return ret;
    }