"""DIM4 final. (a) FutGetSuggestedPricing deser 0x180163ee0 top-level shape -- the
loop terminates on 0xd (END_ARRAY) at the outer level, so it may be a BARE top-level
ARRAY rather than a keyed object; that is a freeze-risk decision and must be read,
not guessed. (b) The auction-limit publisher literals NUM_MAX_AUCTIONS /
NUM_CURRENT_AUCTIONS / IS_MAX_AUCTIONS / TRADE_DATA_AVAILABLE -- which model fields
back the "can I list another card" gate. (c) where the numeric error code fed to the
error mappers comes from.

CONTROL for (b): TRADE_PILE_SIZE 0x1801eafe8 is ALREADY PROVEN (previous run) to be
published by FUN_18000d550 reading model vt+0xa58 -> model+0x1fd1c. If the same
lea-then-call-slot shape shows up for the AUCTION literals, the reading is the same
form that was already validated; if it does not, I report nothing for (b).
"""
import traceback
try:
    print("########## SuggestedPricing deser 0x180163ee0 (FULL) ##########")
    s = dec(0x180163ee0)
    print("len(src)=%d" % len(s)); print(s)
    print("\n########## auction-limit publisher literals ##########")
    for nm, a in [("NUM_CURRENT_AUCTIONS", 0x1801f3658), ("NUM_MAX_AUCTIONS", 0x1801f3670),
                  ("IS_MAX_AUCTIONS", 0x1801f3688), ("TRADE_DATA_AVAILABLE", 0x180239190),
                  ("TRADE_PILE_SIZE(CONTROL)", 0x1801eafe8), ("FUT_TOTAL_AUCTIONS", 0x18020a080)]:
        print("\n -- %s @ %#x" % (nm, a))
        xs = xrefs_to(a)
        for frm, typ, fn, ent in xs:
            print("    from %#x %s in %s @ %#x" % (frm, typ, fn, ent))
        if not xs:
            print("    (no xrefs)")
    print("\n########## publisher FUN_180163600 / count-object accessors ##########")
    for a in (0x180163600, 0x1801635a0):
        print("\n---- %#x ----" % a)
        s = dec(a); print("len(src)=%d" % len(s)); print(s)
    print("\n########## callers of the error mappers ##########")
    for a in (0x180165050, 0x1801844c0):
        print("\n -- callers of %#x" % a)
        for c in callers(a):
            print("    %s" % (c,))
except Exception:
    traceback.print_exc()
