diff --git a/libs/UIX.DecompXml/Decompiler.cs b/libs/UIX.DecompXml/Decompiler.cs index 19220e5..eadc157 100644 --- a/libs/UIX.DecompXml/Decompiler.cs +++ b/libs/UIX.DecompXml/Decompiler.cs @@ -260,6 +260,17 @@ public partial class Decompiler // These instructions are inconsequential for determining how objects are initialized break; + case OpCode.Jump: + case OpCode.JumpIfFalse: + case OpCode.JumpIfFalsePeek: + case OpCode.JumpIfTruePeek: + Console.WriteLine($"Suspicious instruction: {instruction}"); + + // Ensure stack is in valid state + var isPeek = instruction.OpCode is OpCode.JumpIfFalsePeek or OpCode.JumpIfTruePeek or OpCode.JumpIfNullPeek; + var rawJumpCondition = IrisExpression.ToSyntax(isPeek ? stack.Peek() : stack.Pop(), _context); + break; + case OpCode.ConstructObjectParam: case OpCode.PushThis: case OpCode.MethodInvoke: @@ -317,6 +328,10 @@ public partial class Decompiler if (instruction.OpCode is OpCode.DestructiveListen) refreshOffset = (uint)instruction.Operands.ElementAt(4).Value; + // What does this mean? + if (scriptId is uint.MaxValue) + break; + var markupTypeSchema = initType.ResolveScriptId(scriptId, out var scriptOffset); string watch = null;