From cbf39e0505c462d80c2485f7209c303be922b822 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Wed, 2 Jul 2025 16:16:19 -0400 Subject: Fix thumb2 lifting to prevent temp reg spillover for post dec stm instruction. --- arch/armv7/thumb2_disasm/il_thumb2.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/armv7/thumb2_disasm/il_thumb2.cpp b/arch/armv7/thumb2_disasm/il_thumb2.cpp index f46a8641..50f9b3ef 100644 --- a/arch/armv7/thumb2_disasm/il_thumb2.cpp +++ b/arch/armv7/thumb2_disasm/il_thumb2.cpp @@ -1474,12 +1474,13 @@ bool GetLowLevelILForThumbInstruction(Architecture* arch, LowLevelILFunction& il else il.AddInstruction(il.SetRegister(4, LLIL_TEMP(0), il.Register(4, baseReg))); + uint32_t targetReg = decBeforeMode ? LLIL_TEMP(0) : baseReg; for (int32_t i = 0, slot = 0; i <= regLimit; i++) { if ((regs >> i) & 1) { il.AddInstruction(il.Store(4, - il.Add(4, il.Register(4, LLIL_TEMP(0)), il.Const(4, 4 * slot++)), + il.Add(4, il.Register(4, targetReg), il.Const(4, 4 * slot++)), il.Register(4, GetRegisterByIndex(i)))); } } -- cgit v1.3.1