"""DIMENSION 4 q3: do the draft/tournament MODE-STATE literals have native gating
callers, or are they inert descriptor names driven from the script layer?

Hypothesis: like the Seasons CompetitionManager setters (FUN_180101680/1801016c0,
zero callers), the draft/tournament mode nodes are named descriptors with no native
entry-gate; entry is decided in the packed front-end. Test by reading the xref
callers of each mode-state literal and decompiling the first native caller of each.

Control: 'NOSEASONS' xref is known (FUN_180057330). Re-confirm the Seasons setters
have zero callers as the reference negative.
"""
import traceback
try:
    def xr(a, label):
        print("\n--- %s @ %#x ---" % (label, a))
        xs = xrefs_to(a)
        for frm, typ, fn, ent in xs:
            print("   from %#x  %s  in %s (%#x)" % (frm, typ, fn, ent))
        return xs

    xr(0x1801fbb50, "fefifa::FUTDraftOfflineMode")
    xr(0x1801fbbc8, "fefifa::FUTOnlineDraftMode")
    xr(0x180209a70, "CentralDraftModeOffline")
    xr(0x180209ae0, "CentralDraftModeOnline")
    xr(0x1801ebca0, "draftentry")
    xr(0x1801fbbe8, "fefifa::FUTOfflineTournament")
    xr(0x1801fbc08, "fefifa::FUTOnlineTournament")
    xr(0x180218f18, "FUT::TournamentInfo")
    xr(0x18021f870, "DraftMode(0x18021f870)")
    xr(0x1801fbbd9, "DraftMode(0x1801fbbd9)")

    # Seasons CompetitionManager control: setters + singleton
    print("\n=== CONTROL: Seasons CompetitionManager setters callers ===")
    for a in (0x180101680, 0x1801016c0):
        print("callers(%#x) = %s" % (a, callers(a)))
    print("xrefs_to DAT_1802e6328 (CompetitionManager singleton):")
    for frm, typ, fn, ent in xrefs_to(0x1802e6328):
        print("   from %#x %s in %s (%#x)" % (frm, typ, fn, ent))
except Exception:
    traceback.print_exc()
print("QUERY_DONE")
