"""HYPOTHESIS: the Transfer Market refusal and the greyed TO_TRADE_PILE menu entry
share the SAME term, model+0x1fd2e read through vt+0x270. 28 call sites exist.
Decompile TO_TRADE_PILE and the market-looking callers, plus the /transfermarket
request builder FUN_180162c90 and its callers, to see which predicate fires with
zero network traffic.
CONTROL: FUN_18006cc60 is the known publisher, must appear as a pure read+emit.
"""
import traceback
try:
    for a, tag in [(0x1801a7260, "TO_TRADE_PILE (greyed menu)"),
                   (0x180162c90, "/transfermarket request builder"),
                   (0x180194b60, "vt+0x270 caller"),
                   (0x180195320, "vt+0x270 caller"),
                   (0x180196360, "vt+0x270 caller"),
                   (0x180197440, "vt+0x270 caller x3"),
                   (0x180199460, "vt+0x270 caller x2")]:
        s = dec(a, 300)
        print("\n" + "="*78)
        print("### %#x  %s   len=%d" % (a, tag, len(s)))
        print("="*78)
        print(s)
    print("\n=== callers of /transfermarket builder FUN_180162c90 ===")
    for frm, typ, fn, ent in xrefs_to(0x180162c90):
        print("   %#x %-12s %s ent=%#x" % (frm, typ, fn, ent))
except Exception:
    traceback.print_exc()
