private (Address, UserIndirectJump) LoadIndirectJump_v4(IndirectJump_v4 indirJump, Program program) { if (!platform !.TryParseAddress(indirJump.InstructionAddress, out Address addrInstr)) { return(null, null); } if (!platform.TryParseAddress(indirJump.TableAddress, out Address addrTable)) { return(null, null); } if (!program.User.JumpTables.TryGetValue(addrTable, out var table)) { return(null, null); } var reg = program.Architecture.GetRegister(indirJump.IndexRegister); if (reg == null) { return(null, null); } return(addrInstr, new UserIndirectJump { Address = addrInstr, Table = table, IndexRegister = reg, }); }
private Tuple <Address, UserIndirectJump> LoadIndirectJump_v4(IndirectJump_v4 indirJump, Program program) { Address addrInstr; if (!platform.TryParseAddress(indirJump.InstructionAddress, out addrInstr)) { return(null); } Address addrTable; if (!platform.TryParseAddress(indirJump.TableAddress, out addrTable)) { return(null); } ImageMapVectorTable table; if (!program.User.JumpTables.TryGetValue(addrTable, out table)) { return(null); } var reg = program.Architecture.GetRegister(indirJump.IndexRegister); if (reg == null) { return(null); } return(Tuple.Create(addrInstr, new UserIndirectJump { Address = addrInstr, Table = table, IndexRegister = reg, })); }