"""Q3 — full route table, the itemState/tradeState enum tables, and the pointer arrays that reference the auctionSold* vocabulary and the bare 'sold' string. """ import struct print("=" * 78) print("== route table continued from 0x18021e0f8 until it stops looking like one") print("=" * 78) a = 0x18021E100 misses = 0 while a < 0x18021E400 and misses < 6: p = qword(a) s = rd_str(p, 120) if 0x180000000 < p < 0x180400000 else "" if s and s.isprintable(): print(f" 0x{a:x} -> 0x{p:x} {s!r}") misses = 0 else: misses += 1 a += 8 print() print("=" * 78) print("== itemState table 0x180229cc0 (prior work: 12 rows) — dump generously") print("=" * 78) for i in range(20): ea = 0x180229CC0 + i * 16 p, v = qword(ea), dword(ea + 8) s = rd_str(p, 40) if 0x180000000 < p < 0x180400000 else "" print(f" [{i:2d}] 0x{ea:x} str=0x{p:x} {s!r:24s} val={v} (0x{v:x})") print() print("=" * 78) print("== tradeState table 0x180229e40 — dump generously") print("=" * 78) for i in range(12): ea = 0x180229E40 + i * 16 p, v = qword(ea), dword(ea + 8) s = rd_str(p, 40) if 0x180000000 < p < 0x180400000 else "" print(f" [{i:2d}] 0x{ea:x} str=0x{p:x} {s!r:24s} val={v} (0x{v:x})") print() print("=" * 78) print("== pointer arrays containing the sold vocabulary") print("=" * 78) for label, target in (("auctionSoldBid", 0x1802302C8), ("auctionSoldBuyNow", 0x1802302D8), ("auctionWonBuyNow", 0x180230300), ("sold@22f524", 0x18022F524), ("sold@228bed", 0x180228BED), ("SoldFromTradePile", 0x1801EFAF1), ("SOLD@20a0c7", 0x18020A0C7)): pat = struct.pack(" 0x{p:x} {s!r}{mark}")