From e0091cb8d16ff11db9dc5d6c22ed5a478e68f549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 31 Aug 2025 09:10:07 +0200 Subject: [PATCH] DeobfuscatePop handling DuplicateSource --- .../abc/avm2/instructions/DeobfuscatePopIns.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/DeobfuscatePopIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/DeobfuscatePopIns.java index 440ba743e..46efef3d9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/DeobfuscatePopIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/DeobfuscatePopIns.java @@ -21,6 +21,8 @@ import com.jpexs.decompiler.flash.abc.AVM2LocalData; import com.jpexs.decompiler.flash.abc.avm2.instructions.stack.PopIns; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.TranslateStack; +import com.jpexs.decompiler.graph.model.DuplicateSourceItem; +import com.jpexs.decompiler.graph.model.SetTemporaryItem; import java.util.List; /** @@ -67,7 +69,16 @@ public class DeobfuscatePopIns extends PopIns { */ @Override public void translate(AVM2LocalData localData, TranslateStack stack, AVM2Instruction ins, List output, String path) { - stack.pop(); //Just ignore the value + GraphTargetItem item = stack.pop(); + if (item instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) item; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 1); + if (st.tempIndex == ds.tempIndex) { + output.remove(output.size() - 1); + } + } + } } /**