"""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))