public override void Eval(ref char[] Stack, ref char EDX, ref char EAX, ref Stack <ASMLine> CallStack) { Action = SolveAction.Eval; if (To.Contains("die")) //oshit { CallStack.Pop(); //this JUMP PrevJump = null; while ((PrevJump = CallStack.Peek() as JUMP) == null) { CallStack.Pop().Action = SolveAction.Eval; if (CallStack.Count < 1) { Action = SolveAction.JumpStart; CallStack.Push(this); return; } } PrevJump.TrySolve(ref Stack, ref CallStack); } else { var _cmp = (Previous as CMP); //hope this never turns out bad thonkers if (Type == JumpType.jmp || (!_cmp.CF) == (Type == JumpType.jnb)) { CallStack.Push(ASM_Map[To]); } else { CallStack.Push(Next); } } }