"""Task B — does FIFA17.exe itself compute the transfer fee / net proceeds? If the list-item confirmation screen shows "you will receive N", the rounding rule is IN THE BINARY and needs no live measurement. Look for: * localisation keys mentioning tax/fee/net/receive * float constants 0.95 / 0.05 * integer 95 or 5 used with 100 in the same function """ import struct print("=" * 78) print("== localisation / string keys about tax, fee, net proceeds") print("=" * 78) for needle in (b"TAX", b"tax", b"Tax", b"FEE", b"_FEE", b"fee", b"NET", b"_NET", b"RECEIVE", b"Receive", b"PROCEEDS", b"COMMISSION", b"EA_TAX", b"FUT_TF_", b"AFTER_TAX", b"earnings", b"Earnings"): hits = find_all(needle, blocks=(".rdata", ".data")) shown = 0 for h in hits: s = rd_str(h, 70) if s and len(s) > 2 and s.isprintable(): print(f" {needle.decode():10s} 0x{h:x} {s!r}") shown += 1 if shown >= 12: break if not shown: print(f" {needle.decode():10s} (no printable hits)") print() print("=" * 78) print("== float constants 0.95 / 0.05 / 0.95f / 0.05f") print("=" * 78) for label, pat in (("double 0.95", struct.pack("