"""HYPOTHESIS: IS_ONLINE (0x1802052b0) is a published named state like
IS_TRADING_ENABLED, and its producer reads a connectivity predicate. FUN_18011fc00
converts an enum to "ONLINE"/"OFFLINE". FUN_180180770 owns FIFA_FUT_ALLOW_PING /
FUT_PING_TIMEOUT (heartbeat). FUN_1800d7b70 is the CARDS_CB_ERR_* name table.

CONTROL: FUN_18006cc60 (the KNOWN publisher of IS_TRADING_ENABLED) is decompiled in
the same batch, so the "publisher shape" I claim for IS_ONLINE is compared against a
proven instance of that shape, not against my expectation of it.

Full length printed for every function; never truncated.
"""
import traceback

try:
    TARGETS = [
        ("CONTROL publisher FUN_18006cc60", 0x18006cc60),
        ("IS_ONLINE user A FUN_1800a3cb0", 0x1800a3cb0),
        ("IS_ONLINE user B FUN_1800efe40", 0x1800efe40),
        ("ONLINE/OFFLINE enum FUN_18011fc00", 0x18011fc00),
        ("ping cfg FUN_180180770", 0x180180770),
        ("err name table FUN_1800d7b70", 0x1800d7b70),
    ]
    for label, a in TARGETS:
        src = dec(a)
        f = func(a)
        print("\n" + "=" * 78)
        print("### %s  entry=%#x name=%s len(src)=%d" % (
            label, int(f.getEntryPoint().getOffset()) if f else 0,
            f.getName() if f else "?", len(src)))
        print("=" * 78)
        print(src)
except Exception:
    traceback.print_exc()
