More documentation.

This commit is contained in:
Jindra Petřík
2024-08-07 12:35:52 +02:00
parent 8d1e77ef29
commit 7e5c89989f
174 changed files with 789 additions and 321 deletions

View File

@@ -18,62 +18,13 @@ package com.jpexs.decompiler.flash.action.deobfuscation;
import com.jpexs.decompiler.flash.IdentifiersDeobfuscation;
import com.jpexs.decompiler.flash.SWF;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.ActionList;
import com.jpexs.decompiler.flash.action.ActionListReader;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.Stage;
import com.jpexs.decompiler.flash.action.*;
import com.jpexs.decompiler.flash.action.fastactionlist.ActionItem;
import com.jpexs.decompiler.flash.action.fastactionlist.FastActionList;
import com.jpexs.decompiler.flash.action.fastactionlist.FastActionListIterator;
import com.jpexs.decompiler.flash.action.special.ActionEnd;
import com.jpexs.decompiler.flash.action.swf4.ActionAdd;
import com.jpexs.decompiler.flash.action.swf4.ActionAnd;
import com.jpexs.decompiler.flash.action.swf4.ActionAsciiToChar;
import com.jpexs.decompiler.flash.action.swf4.ActionCharToAscii;
import com.jpexs.decompiler.flash.action.swf4.ActionDivide;
import com.jpexs.decompiler.flash.action.swf4.ActionEquals;
import com.jpexs.decompiler.flash.action.swf4.ActionGetTime;
import com.jpexs.decompiler.flash.action.swf4.ActionGetVariable;
import com.jpexs.decompiler.flash.action.swf4.ActionIf;
import com.jpexs.decompiler.flash.action.swf4.ActionJump;
import com.jpexs.decompiler.flash.action.swf4.ActionLess;
import com.jpexs.decompiler.flash.action.swf4.ActionMBAsciiToChar;
import com.jpexs.decompiler.flash.action.swf4.ActionMBStringLength;
import com.jpexs.decompiler.flash.action.swf4.ActionMultiply;
import com.jpexs.decompiler.flash.action.swf4.ActionNot;
import com.jpexs.decompiler.flash.action.swf4.ActionOr;
import com.jpexs.decompiler.flash.action.swf4.ActionPush;
import com.jpexs.decompiler.flash.action.swf4.ActionSetVariable;
import com.jpexs.decompiler.flash.action.swf4.ActionStringAdd;
import com.jpexs.decompiler.flash.action.swf4.ActionStringEquals;
import com.jpexs.decompiler.flash.action.swf4.ActionStringLength;
import com.jpexs.decompiler.flash.action.swf4.ActionStringLess;
import com.jpexs.decompiler.flash.action.swf4.ActionSubtract;
import com.jpexs.decompiler.flash.action.swf4.ActionToInteger;
import com.jpexs.decompiler.flash.action.swf4.ConstantIndex;
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
import com.jpexs.decompiler.flash.action.swf5.ActionAdd2;
import com.jpexs.decompiler.flash.action.swf5.ActionBitAnd;
import com.jpexs.decompiler.flash.action.swf5.ActionBitLShift;
import com.jpexs.decompiler.flash.action.swf5.ActionBitOr;
import com.jpexs.decompiler.flash.action.swf5.ActionBitRShift;
import com.jpexs.decompiler.flash.action.swf5.ActionBitURShift;
import com.jpexs.decompiler.flash.action.swf5.ActionBitXor;
import com.jpexs.decompiler.flash.action.swf5.ActionCallFunction;
import com.jpexs.decompiler.flash.action.swf5.ActionConstantPool;
import com.jpexs.decompiler.flash.action.swf5.ActionDecrement;
import com.jpexs.decompiler.flash.action.swf5.ActionDefineFunction;
import com.jpexs.decompiler.flash.action.swf5.ActionDefineLocal;
import com.jpexs.decompiler.flash.action.swf5.ActionEquals2;
import com.jpexs.decompiler.flash.action.swf5.ActionIncrement;
import com.jpexs.decompiler.flash.action.swf5.ActionLess2;
import com.jpexs.decompiler.flash.action.swf5.ActionModulo;
import com.jpexs.decompiler.flash.action.swf5.ActionPushDuplicate;
import com.jpexs.decompiler.flash.action.swf5.ActionReturn;
import com.jpexs.decompiler.flash.action.swf5.ActionToNumber;
import com.jpexs.decompiler.flash.action.swf5.ActionToString;
import com.jpexs.decompiler.flash.action.swf5.ActionTypeOf;
import com.jpexs.decompiler.flash.action.swf4.*;
import com.jpexs.decompiler.flash.action.swf5.*;
import com.jpexs.decompiler.flash.action.swf6.ActionGreater;
import com.jpexs.decompiler.flash.action.swf6.ActionStringGreater;
import com.jpexs.decompiler.flash.configuration.Configuration;
@@ -83,17 +34,11 @@ import com.jpexs.decompiler.flash.helpers.collections.FixItemCounterStack;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.FalseItem;
import com.jpexs.decompiler.graph.model.PushItem;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
import java.util.*;
/**
*
* ActionScript 1/2 deobfuscator.
* @author JPEXS
*/
public class ActionDeobfuscator extends SWFDecompilerAdapter {

View File

@@ -17,7 +17,7 @@
package com.jpexs.decompiler.flash.action.deobfuscation;
/**
*
* Detects if the code is broken.
* @author JPEXS
*/
public class BrokenScriptDetector {

View File

@@ -17,51 +17,98 @@
package com.jpexs.decompiler.flash.action.fastactionlist;
import com.jpexs.decompiler.flash.action.Action;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
*
* Action in the fast action list.
* @author JPEXS
*/
public class ActionItem {
/**
*
*/
public Action action;
/**
* Previous action in the list.
*/
public ActionItem prev;
/**
* Next action in the list.
*/
public ActionItem next;
/**
* Jump target of this action.
*/
private ActionItem jumpTarget;
/**
* Actions that jump to this action.
*/
public Set<ActionItem> jumpsHere;
/**
* Last actions.
*/
public Set<ActionItem> lastActionOf;
/**
* Container last actions.
*/
private List<ActionItem> containerLastActions;
// 1 means reachable, 2 means reachable and processed
/**
* Reachable flag.
* 1 means reachable, 2 means reachable and processed
*/
int reachable;
/**
* Excluded flag.
*/
public boolean excluded;
/**
* Constructs a new ActionItem.
* @param action
*/
public ActionItem(Action action) {
this.action = action;
}
/**
* Checks if this action is a jump target.
* @return true if this action is a jump target
*/
public boolean isJumpTarget() {
return jumpsHere != null && !jumpsHere.isEmpty();
}
/**
* Gets the number of jumps to this action.
* @return Number of jumps to this action
*/
public int jumpsHereSize() {
return jumpsHere == null ? 0 : jumpsHere.size();
}
/**
* Checks if this action is the last action of a container.
* @return True if this action is the last action of a container
*/
public boolean isContainerLastAction() {
return lastActionOf != null && !lastActionOf.isEmpty();
}
/**
* Removes the jump target.
*/
public void removeJumpTarget() {
if (jumpTarget == null) {
return;
@@ -74,14 +121,26 @@ public class ActionItem {
jumpTarget = null;
}
/**
* Gets the jump target.
* @return Jump target
*/
public ActionItem getJumpTarget() {
return jumpTarget;
}
/**
* Gets the jump target action.
* @return Jump target action
*/
public Action getJumpTargetAction() {
return jumpTarget == null ? null : jumpTarget.action;
}
/**
* Sets the jump target.
* @param item Jump target
*/
public void setJumpTarget(ActionItem item) {
removeJumpTarget();
@@ -97,10 +156,17 @@ public class ActionItem {
jumpTarget = item;
}
/**
* Gets container last actions.
* @return Container last actions
*/
public List<ActionItem> getContainerLastActions() {
return containerLastActions;
}
/**
* Removes container last actions.
*/
public void removeContainerLastActions() {
if (containerLastActions == null) {
return;
@@ -115,6 +181,11 @@ public class ActionItem {
containerLastActions = null;
}
/**
* Replaces container last action.
* @param oldItem Old action
* @param newItem New action
*/
public void replaceContainerLastAction(ActionItem oldItem, ActionItem newItem) {
if (containerLastActions == null) {
return;
@@ -132,6 +203,10 @@ public class ActionItem {
}
}
/**
* Sets container last actions.
* @param lastActions Container last actions
*/
public void setContainerLastActions(List<ActionItem> lastActions) {
removeContainerLastActions();
@@ -142,6 +217,10 @@ public class ActionItem {
containerLastActions = lastActions;
}
/**
* Ensures last action of.
* @return Last action of
*/
private Set<ActionItem> ensureLastActionOf() {
if (lastActionOf == null) {
lastActionOf = new HashSet<>();
@@ -150,6 +229,10 @@ public class ActionItem {
return lastActionOf;
}
/**
* Checks if this action is excluded.
* @return True if this action is excluded
*/
public boolean isExcluded() {
return excluded;
}

View File

@@ -33,21 +33,40 @@ import java.util.Map;
import java.util.Set;
/**
*
* Fast action list implementation.
* @author JPEXS
*/
public class FastActionList implements Collection<ActionItem> {
/**
* Number of actions in the list.
*/
private int size;
/**
* First action item in the list.
*/
private ActionItem firstItem;
/**
* Map of actions to action items.
*/
private final Map<Action, ActionItem> actionItemMap;
/**
* Set of action items.
*/
private final Set<ActionItem> actionItemSet;
/**
* Charset of the actions.
*/
private String charset;
/**
* Constructs a new fast action list.
* @param actions Action list
*/
public FastActionList(ActionList actions) {
actionItemMap = new HashMap<>(actions.size());
actionItemSet = new HashSet<>(actions.size());
@@ -61,15 +80,31 @@ public class FastActionList implements Collection<ActionItem> {
charset = actions.getCharset();
}
/**
* Gets the charset of the actions.
* @return Charset
*/
public String getCharset() {
return charset;
}
/**
* Inserts an action before the specified item.
* @param item Item
* @param action Action
* @return New action item
*/
public final ActionItem insertItemBefore(ActionItem item, Action action) {
ActionItem newItem = new ActionItem(action);
return insertItemBefore(item, newItem);
}
/**
* Inserts an action before the specified item.
* @param item Item
* @param newItem New action item
* @return New action item
*/
public final ActionItem insertItemBefore(ActionItem item, ActionItem newItem) {
insertItemAfter(item.prev, newItem);
if (item == firstItem) {
@@ -79,11 +114,23 @@ public class FastActionList implements Collection<ActionItem> {
return newItem;
}
/**
* Inserts an action after the specified item.
* @param item Item
* @param action Action
* @return New action item
*/
public final ActionItem insertItemAfter(ActionItem item, Action action) {
ActionItem newItem = new ActionItem(action);
return insertItemAfter(item, newItem);
}
/**
* Inserts an action after the specified item.
* @param item Item
* @param newItem New action item
* @return New action item
*/
public final ActionItem insertItemAfter(ActionItem item, ActionItem newItem) {
if (item == null && firstItem == null) {
firstItem = newItem;
@@ -108,6 +155,11 @@ public class FastActionList implements Collection<ActionItem> {
return newItem;
}
/**
* Removes the specified item.
* @param item Item
* @return Next item
*/
public ActionItem removeItem(ActionItem item) {
ActionItem next = null;
if (item == firstItem) {
@@ -148,6 +200,11 @@ public class FastActionList implements Collection<ActionItem> {
return next;
}
/**
* Removes the item(s) at the specified index.
* @param index Index
* @param count Count
*/
public void removeItem(int index, int count) {
FastActionListIterator iterator = new FastActionListIterator(this, index);
for (int i = 0; i < count; i++) {
@@ -156,11 +213,21 @@ public class FastActionList implements Collection<ActionItem> {
}
}
/**
* Gets the item at the specified index.
* @param index Index
* @return Item
*/
public ActionItem get(int index) {
FastActionListIterator iterator = new FastActionListIterator(this, index);
return iterator.next();
}
/**
* Replaces the jump targets.
* @param target Target
* @param newTarget New target
*/
public void replaceJumpTargets(ActionItem target, ActionItem newTarget) {
if (target.jumpsHere != null) {
for (ActionItem item : new ArrayList<>(target.jumpsHere)) {
@@ -169,6 +236,11 @@ public class FastActionList implements Collection<ActionItem> {
}
}
/**
* Gets the last actions.
* @param actions Action list
* @param actionItemMap Action item map
*/
private void getContainerLastActions(ActionList actions, Map<Action, ActionItem> actionItemMap) {
ActionItem item = firstItem;
if (item == null) {
@@ -185,6 +257,13 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Gets the last actions of a container.
* @param actions Action list
* @param action Action
* @param actionItemMap Action item map
* @return
*/
private List<ActionItem> getContainerLastActions(ActionList actions, Action action, Map<Action, ActionItem> actionItemMap) {
GraphSourceItemContainer container = (GraphSourceItemContainer) action;
List<Long> sizes = container.getContainerSizes();
@@ -207,6 +286,13 @@ public class FastActionList implements Collection<ActionItem> {
return lasts;
}
/**
* Gets the nearest address.
* @param actions Action list
* @param address Address
* @param next Next
* @return Address
*/
private long getNearAddress(ActionList actions, long address, boolean next) {
int min = 0;
int max = actions.size() - 1;
@@ -228,6 +314,11 @@ public class FastActionList implements Collection<ActionItem> {
: (max >= 0 ? actions.get(max).getAddress() : -1);
}
/**
* Gets the jumps.
* @param actions Action list
* @param actionItemMap Action item map
*/
private void getJumps(ActionList actions, Map<Action, ActionItem> actionItemMap) {
ActionItem item = firstItem;
if (item == null) {
@@ -265,6 +356,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Updates the action addresses and lengths.
*/
private void updateActionAddressesAndLengths() {
ActionItem item = firstItem;
if (item == null) {
@@ -281,6 +375,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Updates the jumps.
*/
private void updateJumps() {
ActionItem item = firstItem;
if (item == null) {
@@ -316,6 +413,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Updates the action stores.
*/
private void updateActionStores() {
ActionItem item = firstItem;
if (item == null) {
@@ -345,6 +445,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Updates the container sizes.
*/
private void updateContainerSizes() {
ActionItem item = firstItem;
if (item == null) {
@@ -369,6 +472,11 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Gets the container.
* @param item Item
* @return Container
*/
public ActionItem getContainer(ActionItem item) {
while (!(item.action instanceof GraphSourceItemContainer) && item != firstItem) {
item = item.prev;
@@ -381,6 +489,9 @@ public class FastActionList implements Collection<ActionItem> {
return null;
}
/**
* Expands the pushes.
*/
public void expandPushes() {
ActionItem item = firstItem;
if (item == null) {
@@ -410,6 +521,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Removes the unknown actions.
*/
public void removeUnknownActions() {
ActionItem item = firstItem;
if (item == null) {
@@ -427,6 +541,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Removes the zero jumps.
*/
public void removeZeroJumps() {
ActionItem item = firstItem;
if (item == null) {
@@ -446,6 +563,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Removes the unreachable actions.
*/
public void removeUnreachableActions() {
ActionItem item = firstItem;
if (item == null) {
@@ -464,6 +584,9 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Removes the included actions.
*/
public void removeIncludedActions() {
ActionItem item = firstItem;
if (item == null) {
@@ -483,6 +606,12 @@ public class FastActionList implements Collection<ActionItem> {
}
}
/**
* Gets the unreachable action count.
* @param jump Jump
* @param jumpTarget Jump target
* @return Unreachable action count
*/
public int getUnreachableActionCount(ActionItem jump, ActionItem jumpTarget) {
ActionItem item = firstItem;
if (item == null) {
@@ -504,6 +633,9 @@ public class FastActionList implements Collection<ActionItem> {
return count;
}
/**
* Clears the reachable flags.
*/
private void clearReachableFlags() {
ActionItem item = firstItem;
if (item == null) {
@@ -516,6 +648,10 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Sets the excluded flags.
* @param value Value
*/
public void setExcludedFlags(boolean value) {
ActionItem item = firstItem;
if (item == null) {
@@ -528,6 +664,11 @@ public class FastActionList implements Collection<ActionItem> {
} while (item != firstItem);
}
/**
* Updates the reachable flags.
* @param jump Jump
* @param jumpTarget Jump target
*/
private void updateReachableFlags(ActionItem jump, ActionItem jumpTarget) {
if (firstItem == null) {
return;
@@ -591,6 +732,10 @@ public class FastActionList implements Collection<ActionItem> {
}
}
/**
* Updates the actions.
* @return Action list
*/
public ActionList updateActions() {
List<Action> resultList = new ArrayList<>(size);
ActionItem item = firstItem;
@@ -611,28 +756,53 @@ public class FastActionList implements Collection<ActionItem> {
return result;
}
/**
* Gets the first action.
* @return First action
*/
public ActionItem first() {
return firstItem;
}
/**
* Gets the last action.
* @return Last action
*/
public ActionItem last() {
return firstItem == null ? null : firstItem.prev;
}
/**
* Converts list to action list.
* @return Action list
*/
public ActionList toActionList() {
return updateActions();
}
/**
* Gets the size of the list.
* @return Size
*/
@Override
public int size() {
return size;
}
/**
* Checks if the list is empty.
* @return True if the list is empty, otherwise false
*/
@Override
public boolean isEmpty() {
return size == 0;
}
/**
* Checks if the list contains the specified element.
* @param o element whose presence in this collection is to be tested
* @return True if the list contains the specified element, otherwise false
*/
@Override
public boolean contains(Object o) {
if (o instanceof ActionItem) {
@@ -644,11 +814,19 @@ public class FastActionList implements Collection<ActionItem> {
return false;
}
/**
* Gets the iterator.
* @return Iterator
*/
@Override
public FastActionListIterator iterator() {
return new FastActionListIterator(this);
}
/**
* Converts the list to an array.
* @return Array
*/
@Override
public Object[] toArray() {
Object[] result = new Object[size];
@@ -667,6 +845,14 @@ public class FastActionList implements Collection<ActionItem> {
return null;
}
/**
* Converts the list to an array.
* @param a the array into which the elements of this collection are to be
* stored, if it is big enough; otherwise, a new array of the same
* runtime type is allocated for this purpose.
* @return Array
* @param <T> Type
*/
@Override
@SuppressWarnings("unchecked")
public <T> T[] toArray(T[] a) {
@@ -688,12 +874,22 @@ public class FastActionList implements Collection<ActionItem> {
return null;
}
/**
* Adds an element to the list.
* @param e element whose presence in this collection is to be ensured
* @return True
*/
@Override
public boolean add(ActionItem e) {
insertItemAfter(null, e);
return true;
}
/**
* Removes the specified element from the list.
* @param o element to be removed from this collection, if present
* @return True if the list contained the specified element, otherwise false
*/
@Override
public boolean remove(Object o) {
ActionItem item = null;
@@ -711,6 +907,11 @@ public class FastActionList implements Collection<ActionItem> {
return true;
}
/**
* Checks if the list contains all elements of the specified collection.
* @param c collection to be checked for containment in this collection
* @return True if the list contains all elements of the specified collection, otherwise false
*/
@Override
public boolean containsAll(Collection<?> c) {
for (Object c1 : c) {
@@ -722,6 +923,11 @@ public class FastActionList implements Collection<ActionItem> {
return true;
}
/**
* Adds all elements of the specified collection to the list.
* @param c collection containing elements to be added to this collection
* @return True
*/
@Override
public boolean addAll(Collection<? extends ActionItem> c) {
for (ActionItem c1 : c) {
@@ -731,6 +937,11 @@ public class FastActionList implements Collection<ActionItem> {
return true;
}
/**
* Removes all elements of the specified collection from the list.
* @param c collection containing elements to be removed from this collection
* @return True if the list contained all elements of the specified collection, otherwise false
*/
@Override
public boolean removeAll(Collection<?> c) {
boolean result = false;
@@ -741,6 +952,11 @@ public class FastActionList implements Collection<ActionItem> {
return result;
}
/**
* Retains only the elements in the list that are contained in the specified collection.
* @param c collection containing elements to be retained in this collection
* @return True if the list changed as a result of the call, otherwise false
*/
@Override
public boolean retainAll(Collection<?> c) {
ActionItem item = firstItem;
@@ -761,6 +977,9 @@ public class FastActionList implements Collection<ActionItem> {
return modified;
}
/**
* Clears the list.
*/
@Override
public void clear() {
firstItem = null;

View File

@@ -20,22 +20,40 @@ import com.jpexs.decompiler.flash.action.Action;
import java.util.Iterator;
/**
*
* Iterator for FastActionList.
* @author JPEXS
*/
public final class FastActionListIterator implements Iterator<ActionItem> {
/**
* Current item
*/
private ActionItem item;
/**
* List
*/
private final FastActionList list;
/**
* If the iterator has started
*/
private boolean started = false;
/**
* Constructs a new FastActionListIterator.
* @param list
*/
FastActionListIterator(FastActionList list) {
item = list.first();
this.list = list;
}
/**
* Constructs a new FastActionListIterator.
* @param list
* @param index
*/
FastActionListIterator(FastActionList list, int index) {
item = list.first();
this.list = list;
@@ -48,11 +66,19 @@ public final class FastActionListIterator implements Iterator<ActionItem> {
}
}
/**
* Returns if there is a next item.
* @return If there is a next item
*/
@Override
public boolean hasNext() {
return item != null && (!started || item != list.first());
}
/**
* Returns the next item.
* @return The next item
*/
@Override
public ActionItem next() {
ActionItem result = item;
@@ -65,6 +91,10 @@ public final class FastActionListIterator implements Iterator<ActionItem> {
return result;
}
/**
* Returns the previous item.
* @return The previous item
*/
public ActionItem prev() {
item = item.prev;
if (item == list.first()) {
@@ -77,6 +107,10 @@ public final class FastActionListIterator implements Iterator<ActionItem> {
return item;
}
/**
* Sets the current item.
* @param item The item
*/
public void setCurrent(ActionItem item) {
this.item = item;
if (item == list.first()) {
@@ -84,23 +118,43 @@ public final class FastActionListIterator implements Iterator<ActionItem> {
}
}
/**
* Removes the current item.
*/
@Override
public void remove() {
item = list.removeItem(item.prev);
}
/**
* Adds an action after the current item.
* @param action The action
*/
public void add(Action action) {
item = list.insertItemAfter(item.prev, action).next;
}
/**
* Adds an action item after the current item.
* @param actionItem The action item
*/
public void add(ActionItem actionItem) {
item = list.insertItemAfter(item.prev, actionItem).next;
}
/**
* Adds an action before the current item.
* @param actionItem The action
*/
public void addBefore(ActionItem actionItem) {
list.insertItemBefore(item.prev, actionItem);
}
/**
* Gets item at index.
* @param index Index
* @return Item at index
*/
public ActionItem peek(int index) {
ActionItem item = this.item;
for (int i = 0; i < index; i++) {

View File

@@ -25,13 +25,14 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* FSCommand2 action - file system command.
* @author JPEXS
*/
public class ActionFSCommand2 extends Action {

View File

@@ -28,13 +28,14 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StrictMode action - set strict mode.
* @author JPEXS
*/
public class ActionStrictMode extends Action {

View File

@@ -19,10 +19,11 @@ package com.jpexs.decompiler.flash.action.special;
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
import com.jpexs.decompiler.flash.action.swf4.ActionJump;
import java.io.IOException;
/**
*
* Deobfuscate jump action.
* @author JPEXS
*/
public class ActionDeobfuscateJump extends ActionJump {

View File

@@ -20,10 +20,11 @@ import com.jpexs.decompiler.flash.BaseLocalData;
import com.jpexs.decompiler.flash.action.swf4.ActionPop;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.TranslateStack;
import java.util.List;
/**
*
* Deobfuscate pop action.
* @author JPEXS
*/
public class ActionDeobfuscatePop extends ActionPop {

View File

@@ -24,12 +24,13 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* End action.
* @author JPEXS
*/
public class ActionEnd extends Action {

View File

@@ -23,12 +23,13 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Nop action.
* @author JPEXS
*/
public class ActionNop extends Action {

View File

@@ -17,15 +17,24 @@
package com.jpexs.decompiler.flash.action.special;
import com.jpexs.decompiler.flash.action.Action;
import java.util.List;
/**
*
* Action store interface.
* @author JPEXS
*/
public interface ActionStore {
/**
* Get store size.
* @return Store size
*/
public int getStoreSize();
/**
* Sets store items.
* @param store Store items
*/
public void setStore(List<Action> store);
}

View File

@@ -28,7 +28,7 @@ import java.util.List;
import java.util.Map;
/**
*
* Unknown action.
* @author JPEXS
*/
public class ActionUnknown extends ActionNop {

View File

@@ -21,12 +21,7 @@ import com.jpexs.decompiler.flash.SWFOutputStream;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
import com.jpexs.decompiler.flash.action.model.FSCommandActionItem;
import com.jpexs.decompiler.flash.action.model.GetURLActionItem;
import com.jpexs.decompiler.flash.action.model.LoadMovieNumActionItem;
import com.jpexs.decompiler.flash.action.model.UnLoadMovieActionItem;
import com.jpexs.decompiler.flash.action.model.UnLoadMovieNumActionItem;
import com.jpexs.decompiler.flash.action.model.*;
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
@@ -36,6 +31,7 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -43,7 +39,7 @@ import java.util.List;
import java.util.Map;
/**
*
* GetURL action - Gets a URL.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -32,13 +32,14 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* GoToLabel action - Jumps to a label in the current timeline.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -30,13 +30,14 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* GotoFrame action - Jumps to a frame in the current timeline.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* NextFrame action - Jumps to the next frame in the current timeline.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -30,12 +30,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Play action - Plays the current timeline.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* PrevFrame action - Jumps to the previous frame in the current timeline.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -31,13 +31,14 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* SetTarget action - Sets the target for the following actions.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Stop action - Stops the current timeline.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -26,12 +26,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StopSounds action - Stops all sounds.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -26,12 +26,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* ToggleQuality action - Toggles the quality of the Flash Player.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -45,7 +45,7 @@ import java.util.Map;
import java.util.Set;
/**
*
* WaitForFrame action - Waits for a frame to be loaded before continuing.
* @author JPEXS
*/
@SWFVersion(from = 3)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Add action - Adds two numbers together.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* And action - Logical AND operation.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* AsciiToChar action - Converts an ASCII code to a character.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -28,12 +28,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Call action - Calls a frame.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* CharToAscii action - Converts a character to an ASCII code.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -30,12 +30,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* CloneSprite action - Clones a sprite.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Divide action - Divides two numbers.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* EndDrag action - Stops dragging a movie clip.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -26,12 +26,13 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Equals action - Compares two values for equality.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -31,6 +31,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,7 +39,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* GetProperty action - Gets a property of an object.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* GetTime action - Returns the current time in milliseconds.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -22,18 +22,7 @@ import com.jpexs.decompiler.flash.SWFOutputStream;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
import com.jpexs.decompiler.flash.action.model.GetURL2ActionItem;
import com.jpexs.decompiler.flash.action.model.LoadMovieActionItem;
import com.jpexs.decompiler.flash.action.model.LoadMovieNumActionItem;
import com.jpexs.decompiler.flash.action.model.LoadVariablesActionItem;
import com.jpexs.decompiler.flash.action.model.LoadVariablesNumActionItem;
import com.jpexs.decompiler.flash.action.model.PrintActionItem;
import com.jpexs.decompiler.flash.action.model.PrintAsBitmapActionItem;
import com.jpexs.decompiler.flash.action.model.PrintAsBitmapNumActionItem;
import com.jpexs.decompiler.flash.action.model.PrintNumActionItem;
import com.jpexs.decompiler.flash.action.model.UnLoadMovieActionItem;
import com.jpexs.decompiler.flash.action.model.UnLoadMovieNumActionItem;
import com.jpexs.decompiler.flash.action.model.*;
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
import com.jpexs.decompiler.flash.action.parser.pcode.ASMParsedSymbol;
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
@@ -44,6 +33,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -51,7 +41,7 @@ import java.util.List;
import java.util.Map;
/**
*
* GetURL2 action - Gets a URL, stack-based.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -33,12 +33,13 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* GetVariable action - Gets a variable.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -33,13 +33,14 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* GotoFrame2 action - Goes to a frame, stack-based.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -28,6 +28,7 @@ import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
import com.jpexs.decompiler.graph.GraphSource;
import com.jpexs.helpers.Helper;
import java.io.IOException;
import java.util.List;
import java.util.Set;
@@ -35,7 +36,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* If action - Jumps to a location if a condition is true.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,6 +27,7 @@ import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
import com.jpexs.decompiler.graph.GraphSource;
import com.jpexs.helpers.Helper;
import java.io.IOException;
import java.util.List;
import java.util.Set;
@@ -34,7 +35,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* Jump action - Jumps to a location.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Less action - Less than.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* MBAsciiToChar action - Converts a multibyte ASCII character to a Unicode character.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* MBCharToAscii action - Converts a multibyte character to an ASCII character.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* MBStringExtract action - Extracts a substring from a multibyte string.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* MBStringLength action - Returns the number of characters in a multibyte string.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Multiply action - Multiplies two numbers.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.NotItem;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Not action - Logical NOT.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Or action - Logical OR.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.AnyItem;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Pop action - Removes the top item from the stack.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -48,16 +48,12 @@ import com.jpexs.decompiler.graph.model.FalseItem;
import com.jpexs.decompiler.graph.model.TrueItem;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
*
* Push action - Pushes values onto the stack.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* RandomNumber action - Generates a random number.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -28,12 +28,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* RemoveSprite action - Removes a sprite from the display list.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -21,16 +21,7 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.ActionScriptObject;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.DecrementActionItem;
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
import com.jpexs.decompiler.flash.action.model.GetPropertyActionItem;
import com.jpexs.decompiler.flash.action.model.IncrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostIncrementActionItem;
import com.jpexs.decompiler.flash.action.model.SetPropertyActionItem;
import com.jpexs.decompiler.flash.action.model.StoreRegisterActionItem;
import com.jpexs.decompiler.flash.action.model.TemporaryRegister;
import com.jpexs.decompiler.flash.action.model.TemporaryRegisterMark;
import com.jpexs.decompiler.flash.action.model.*;
import com.jpexs.decompiler.flash.action.model.operations.PreDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.operations.PreIncrementActionItem;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
@@ -39,6 +30,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -46,7 +38,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* SetProperty action - Sets a property of an object.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -26,12 +26,13 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* SetTarget2 action - Sets the target for the next action, stack-based.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -21,18 +21,7 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.StoreTypeAction;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12;
import com.jpexs.decompiler.flash.action.model.ConstantPool;
import com.jpexs.decompiler.flash.action.model.DecrementActionItem;
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
import com.jpexs.decompiler.flash.action.model.GetVariableActionItem;
import com.jpexs.decompiler.flash.action.model.IncrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostIncrementActionItem;
import com.jpexs.decompiler.flash.action.model.SetVariableActionItem;
import com.jpexs.decompiler.flash.action.model.StoreRegisterActionItem;
import com.jpexs.decompiler.flash.action.model.TemporaryRegister;
import com.jpexs.decompiler.flash.action.model.TemporaryRegisterMark;
import com.jpexs.decompiler.flash.action.model.*;
import com.jpexs.decompiler.flash.action.model.operations.PreDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.operations.PreIncrementActionItem;
import com.jpexs.decompiler.flash.ecma.EcmaScript;
@@ -44,12 +33,13 @@ import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.CompoundableBinaryOp;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* SetVariable action - Sets a variable value.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -31,12 +31,13 @@ import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.FalseItem;
import com.jpexs.decompiler.graph.model.TrueItem;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StartDrag action - Starts dragging a movie clip.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StringAdd action - Concatenates two strings.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StringEquals action - Compares two strings.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StringExtract action - Extracts a substring from a string.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StringLength action - Gets the length of a string.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StringLess action - Compares two strings - less than.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Subtract action - Subtracts two numbers.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -32,7 +32,7 @@ import java.util.List;
import java.util.Map;
/**
*
* ToInteger action - Converts a value to an integer.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -32,7 +32,7 @@ import java.util.List;
import java.util.Map;
/**
*
* Trace action - Outputs a string to the debugger.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -45,7 +45,7 @@ import java.util.Map;
import java.util.Set;
/**
*
* WaitForFrame2 action - Waits for a frame to be loaded, stack-based.
* @author JPEXS
*/
@SWFVersion(from = 4)

View File

@@ -21,17 +21,30 @@ import java.io.Serializable;
import java.util.List;
/**
*
* Constant index in the constant pool.
* @author JPEXS
*/
public class ConstantIndex implements Serializable {
/**
* Index in the constant pool.
*/
public int index;
/**
* Constructs a new constant index.
* @param index Index in the constant pool
*/
public ConstantIndex(int index) {
this.index = index;
}
/**
* To string, no quotes.
* @param constantPool Constant pool
* @param resolve Resolve constant pool
* @return String representation
*/
public String toStringNoQ(List<String> constantPool, boolean resolve) {
if (resolve) {
if (constantPool != null && index < constantPool.size()) {
@@ -42,6 +55,12 @@ public class ConstantIndex implements Serializable {
return "constant" + index;
}
/**
* To string. With quotes.
* @param constantPool Constant pool
* @param resolve Resolve constant pool
* @return String representation
*/
public String toString(List<String> constantPool, boolean resolve) {
if (resolve) {
if (constantPool != null && index < constantPool.size()) {

View File

@@ -20,15 +20,25 @@ import com.jpexs.decompiler.flash.configuration.Configuration;
import java.io.Serializable;
/**
*
* Register number.
* @author JPEXS
*/
public class RegisterNumber implements Serializable {
/**
* Register number.
*/
public final int number;
/**
* Register name.
*/
public String name = null;
/**
* Hash code.
* @return Hash code
*/
@Override
public int hashCode() {
int hash = 3;
@@ -36,6 +46,11 @@ public class RegisterNumber implements Serializable {
return hash;
}
/**
* Equals.
* @param obj Object
* @return True if equals
*/
@Override
public boolean equals(Object obj) {
if (obj == null) {
@@ -51,15 +66,28 @@ public class RegisterNumber implements Serializable {
return true;
}
/**
* Constructs a new register number.
* @param number Register number
* @param name Register name
*/
public RegisterNumber(int number, String name) {
this.number = number;
this.name = name;
}
/**
* Constructs a new register number.
* @param number Register number
*/
public RegisterNumber(int number) {
this(number, null);
}
/**
* To string.
* @return String representation
*/
@Override
public String toString() {
if (name == null || name.trim().isEmpty()) {
@@ -68,10 +96,18 @@ public class RegisterNumber implements Serializable {
return name;
}
/**
* To string without name.
* @return String representation
*/
public String toStringNoName() {
return "register" + number;
}
/**
* Translate register number to name.
* @return Translated name
*/
public String translate() {
if (name == null || name.trim().isEmpty()) {
return String.format(Configuration.registerNameFormat.get(), number);

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Add2 action - Add two numbers or strings together.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* BitAnd action - Bitwise AND.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* BitLShift action - Bitwise left shift.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* BitOr action - Bitwise OR.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* BitRShift action - Bitwise right shift.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* BitURShift action - Bitwise unsigned right shift.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* BitXor action - Bitwise XOR.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -30,13 +30,14 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* CallFunction action - Call a function.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -29,13 +29,14 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* CallMethod action - Call a method on an object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -31,6 +31,7 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -38,7 +39,7 @@ import java.util.List;
import java.util.Map;
/**
*
* ConstantPool action - Sets the current constant pool.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Decrement action - Decrement value by 1.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -18,11 +18,7 @@ package com.jpexs.decompiler.flash.action.swf5;
import com.jpexs.decompiler.flash.SWFInputStream;
import com.jpexs.decompiler.flash.SWFOutputStream;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.ActionList;
import com.jpexs.decompiler.flash.action.ActionScriptFunction;
import com.jpexs.decompiler.flash.action.ActionScriptObject;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.*;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.FunctionActionItem;
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
@@ -30,22 +26,15 @@ import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemContainer;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.*;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
*
* DefineFunction action - Defines a function.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -30,12 +30,13 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* DefineLocal action - Define local variable.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -29,12 +29,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* DefineLocal2 action - Define local variable without setting its value.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Delete action - Delete a named property of an object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -29,12 +29,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Delete2 action - Delete a named property.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -30,12 +30,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Enumerate action - Enumerate object members.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Equals2 action - Compare two values for equality, knows about types.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -29,12 +29,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* GetMember action - Get a named property of an object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Increment action - Increment value by 1.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -28,13 +28,14 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* InitArray action - Initialize array.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -28,13 +28,14 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* InitObject action - Initialize object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Less2 action - Compare two values for less than, knows about types.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Modulo action - Modulo.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -29,13 +29,14 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* NewMethod action - Invokes constructor method from object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -28,13 +28,14 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* NewObject action - Invokes constructor function.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -21,18 +21,15 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.*;
import com.jpexs.decompiler.graph.model.DuplicateItem;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* PushDuplicate action - Push duplicate of top stack value.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -27,12 +27,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* Return action - Return from function.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -21,16 +21,7 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.ActionScriptObject;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12;
import com.jpexs.decompiler.flash.action.model.DecrementActionItem;
import com.jpexs.decompiler.flash.action.model.GetMemberActionItem;
import com.jpexs.decompiler.flash.action.model.IncrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostIncrementActionItem;
import com.jpexs.decompiler.flash.action.model.SetMemberActionItem;
import com.jpexs.decompiler.flash.action.model.StoreRegisterActionItem;
import com.jpexs.decompiler.flash.action.model.TemporaryRegister;
import com.jpexs.decompiler.flash.action.model.TemporaryRegisterMark;
import com.jpexs.decompiler.flash.action.model.*;
import com.jpexs.decompiler.flash.action.model.operations.PreDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.operations.PreIncrementActionItem;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
@@ -40,12 +31,13 @@ import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.model.CompoundableBinaryOp;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* SetMember action - Set member of object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -21,17 +21,14 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StackSwap action - Swap top two stack values.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -23,34 +23,22 @@ import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.action.LocalDataArea;
import com.jpexs.decompiler.flash.action.StoreTypeAction;
import com.jpexs.decompiler.flash.action.as2.Trait;
import com.jpexs.decompiler.flash.action.model.CompoundableBinaryOpAs12;
import com.jpexs.decompiler.flash.action.model.ConstantPool;
import com.jpexs.decompiler.flash.action.model.DecrementActionItem;
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
import com.jpexs.decompiler.flash.action.model.EnumeratedValueActionItem;
import com.jpexs.decompiler.flash.action.model.IncrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostDecrementActionItem;
import com.jpexs.decompiler.flash.action.model.PostIncrementActionItem;
import com.jpexs.decompiler.flash.action.model.StoreRegisterActionItem;
import com.jpexs.decompiler.flash.action.model.TemporaryRegister;
import com.jpexs.decompiler.flash.action.model.*;
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
import com.jpexs.decompiler.flash.action.swf4.RegisterNumber;
import com.jpexs.decompiler.flash.types.annotations.SWFVersion;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.decompiler.graph.*;
import com.jpexs.decompiler.graph.model.AnyItem;
import com.jpexs.decompiler.graph.model.CompoundableBinaryOp;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* StoreRegister action - Store value in register.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -28,12 +28,13 @@ import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SecondPassData;
import com.jpexs.decompiler.graph.TranslateStack;
import com.jpexs.helpers.utf8.Utf8Helper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* TargetPath action - Get the path of the object.
* @author JPEXS
*/
@SWFVersion(from = 5)

View File

@@ -32,7 +32,7 @@ import java.util.List;
import java.util.Map;
/**
*
* ToNumber action - Converts a value to a number.
* @author JPEXS
*/
@SWFVersion(from = 5)

Some files were not shown because too many files have changed in this diff Show More