mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-26 09:15:34 +00:00
More documentation.
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package com.jpexs.decompiler.flash.action.deobfuscation;
|
||||
|
||||
/**
|
||||
*
|
||||
* Detects if the code is broken.
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class BrokenScriptDetector {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* Unknown action.
|
||||
* @author JPEXS
|
||||
*/
|
||||
public class ActionUnknown extends ActionNop {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user