"""What does the /settings deserializer actually parse?

ENDPOINT_MAP claims FutGetSettingsServerResponse (0x18013c6d0) reads ONE key,
`configs` (0xa2), an array of {type(0x354), value(0x377)}. That is a narrow claim
about a class that is supposed to carry ~40 feature flags, and the atom table
holds flag names (enableDraftMode 0xf9, friendlySeasonsEnabled 0x133,
enableSquadBuildingSetsFeature 0x100) that have to be read by SOMETHING.

This asks the decompiler directly, and prints the coverage numbers so that any
"it does not parse X" conclusion can be checked against the whole function rather
than a truncated slice (the FutMoveCard retraction, 2026-08-04).
"""
import re

TARGETS = {
    0x18013C6D0: "FutGetSettingsServerResponse deser (claimed: configs only)",
    0x18013D1F0: "CONTROL: squad record parser (known multi-atom)",
}

for va, label in TARGETS.items():
    f = func(va)
    src = dec(va)
    body = f.getBody().getNumAddresses() if f else -1
    print("=" * 78)
    print("%#x  %s" % (va, label))
    print("  ghidra name : %s" % (f.getName() if f else "?"))
    print("  body bytes  : %d" % body)
    print("  decompile   : %d chars   <-- searches below cover ALL of it" % len(src))
    print("-" * 78)
    print(src)
    print("-- callees --")
    for a, n in callees(va):
        print("   %#x  %s" % (a, n))
