"""DIMENSION 4 (duplicates), pass 2: who READS the duplicate field. ESTABLISHED IN PASS 1: all four consumers of the 0x20-byte duplicate record (0x180162880 CreatePack, 0x18013e7f0 IS-list, 0x18013bd40, 0x1801293d0) do the identical fixup: for each record, scan the just-parsed item list, and where item->+0x08 == record->+0x00 (itemId), set item->+0x10 = record->+0x10 (duplicateItemId). The record's +0x08 (itemLoans) and +0x18 (duplicateItemLoans) are never read by any of the four, and the record vector is a stack local freed at the end of each, so no other code can see it. HYPOTHESIS FOR THIS PASS: the UI reads item->+0x10 and surfaces it as the Scaleform key "HAS_DUPLICATE" (0x1801f6510) and/or the script command "GetCardDuplicate" (0x1801f3ad8). CONTROL: for each candidate reader we print the FULL decompile with len(src) and say FULL, and we look for BOTH `+ 0x10` load forms and the `== 0` / `!= 0` test forms. We also decompile a control function that references "IS_LOAN_PLAYER" but not HAS_DUPLICATE, to check that our reading of the data-provider idiom is right. """ import traceback OUT = "/tmp/claude-1000/-home-alex-Documents-OpenFUT/8e521ca1-ca3e-4138-bb96-df1744dd1d30/scratchpad/store/dup2_out.txt" def w(fh, s=""): fh.write(str(s) + "\n") def dump(fh, a, label): s = dec(a) w(fh, "") w(fh, "#" * 70) w(fh, "# %s %#x len(src)=%d FULL (no truncation)" % (label, a, len(s))) w(fh, "#" * 70) w(fh, s) try: fh = open(OUT, "w") w(fh, "A. xrefs to string literals of interest") for name, a in (("GetCardDuplicate", 0x1801F3AD8), ("HAS_DUPLICATE", 0x1801F6510), ("SwapCard", 0x18021EF58), ("SWAPCARD", 0x18021EF68), ("IS_LOAN_PLAYER", 0x1801F6520), ("FUT_LOAN_MATCHES", 0x1802044F8)): w(fh, "-- %s @ %#x" % (name, a)) for frm, typ, fn, ent in xrefs_to(a): w(fh, " %#x %s in %s @ %#x" % (frm, typ, fn, ent)) for a, lbl in ((0x1800394C0, "GetCardDuplicate registrar/handler"), (0x180043880, "HAS_DUPLICATE user 1"), (0x180094220, "HAS_DUPLICATE user 2"), (0x180084720, "HAS_DUPLICATE user 3")): dump(fh, a, lbl) w(fh, "") w(fh, "B. CONTROL: 0x18015fa80 references IS_LOAN_PLAYER but not HAS_DUPLICATE") dump(fh, 0x18015FA80, "CONTROL loan-only user") fh.close() print("WROTE", OUT) except Exception: traceback.print_exc()