"""Q8 — are atoms 0x36..0x3c (auctionLost*/auctionSold*/auctionWon*) real response keys? If a deserializer dispatches on them, the server tells the client HOW an auction concluded via its own atom, and bidState is not the carrier. Signature of a genuine atom dispatcher: the SAME local compared against many atom ids, with FUN_180135ff0 (value-SKIP) as the else, and FUN_1801c7f10 driving the loop. """ CANDIDATES = (0x18012B370, 0x1801071F0, 0x1800EE7C0, 0x1800FB5B0, 0x1800CF3B0) for ent in CANDIDATES: print("=" * 78) print(f"== 0x{ent:x} callees include value-SKIP? " f"{any(c[0] == 0x180135FF0 for c in callees(ent))}" f" atom-loop? {any(c[0] == 0x1801C7F10 for c in callees(ent))}") print("=" * 78) body = dec(ent) # Only print if it smells like an atom dispatcher, else just report. if "FUN_180135ff0" in body or "FUN_1801c7f10" in body: print(body[:6000]) else: print(" NOT an atom dispatcher (no value-SKIP, no atom loop) — small-immediate noise") print(f" size {len(body)} chars; first 400:") print(body[:400]) print()