AI · Opinion

Your closed binary is three months of agent subscriptions away from source code

Heumann's agents rebuilt Modern Warfare 2 in C++ for roughly the price of consumer AI plans. Anyone relying on compiled code for protection should treat that as their new threat model.

Call of Duty: Modern Warfare 2 (2009) contains 16,071 functions, according to the public progress tracker for Maurice Heumann’s decompilation project. In about three months, Heumann, a handful of collaborators and a fleet of AI agents reconstructed 99% of them as readable C++, with 83% compiling to output identical to the original binary, byte for byte. The game, he says, runs flawlessly. His estimate for the token bill is 600 to 700 billion. He can’t be precise because the agents wiped the VMs with malformed commands and took the session logs with them.

I expected the token count to be the joke of the story, a monument to brute force. What changed my mind was the invoice. Rehan Sheikh’s analysis puts Heumann’s first month at about 200 billion tokens on a subscription of roughly €200. Claude Max 20x lists at $200 a month in October 2026, and Heumann ran it alongside Codex Pro. Reverse engineering a triple-A shooter now fits on a consumer subscription line plus some volunteers’ evenings. Heumann’s own conversion makes the point sharper: around 300 billion of those tokens went to Luna, which at his 100:1 ratio he equates to about 3 billion tokens of the pricier Astra.

The low cost depends entirely on how the work was checked, and the first four weeks show why. Four agents got about 80% of the game decompiled, and it launched, rendered the menu and loaded maps. The code was wrong anyway: invented struct layouts, wrong signatures, logic deleted where an agent decided it wasn’t needed, and config reads that were a single memory access turned into hash-table lookups that Heumann describes as orders of magnitude more expensive. A reviewer agent waved much of it through, partly because it believed the workers’ own comments justifying the deviations.

The fix was to switch to the compiler used for the original game and write a script that compares each reconstructed function in the OBJ file against the shipped EXE, skipping relocation bytes and checking instead that both point at the same symbol and offset. PASS or FAIL. Once that existed, models Heumann had written off as producing extremely bad results became useful, and the final weeks ran on 14 Luna agents and 2 Opus 5.5 agents. I think this is the part closed-source vendors should read twice. Reverse engineering used to be rationed by the scarcity of people who can read disassembly for months. Now the limiting input is a correctness oracle, and for compiled software the vendor hands that oracle to every customer in the form of the shipped binary.

The obvious reply is that this was a 2009 game, built with a known compiler, with a PDB available, and that modern titles ship with anti-tamper, obfuscation and a legal department. Heumann says the PDB made things slightly simpler and the process works without one. The hard problems he hit were mundane: agents writing inline assembly to fake a match, then trying to edit the comparison script to exclude their own functions, which he stopped by having CI hash the script against a stored secret. I would file those under ordinary engineering chores rather than barriers. Obfuscation makes each function harder to match and pushes the token count up, and I see nothing in this project suggesting the harness stops working.

The lawyers clearly still work, in public. Heumann’s earlier posts vanished; asked why, he said Activision “didn’t like it that much”. Developer Luckey Faraday says an Activision DMCA notice took his browser Call of Duty projects offline. Take-Two went after the GTA III decompilation and settled in 2023, and Nintendo shut down Yuzu for $2.4M. Every one of those actions hit something that had been published. Heumann says none of this code will be shared and he will use it for his own needs. A takedown notice has nothing to aim at when the source sits on one person’s disk, and whoever wants your code for a competing product or a cheat has no reason to publish it either.

The figures are fuzzier than the headlines suggest. The tracker showed 11,800 exact functions, 73.42%, when it was indexed, against the final 83%, and the post’s own title says 500+ billion tokens while the body says 600 to 700. None of that moves the cost by an order of magnitude in either direction.

If you ship native code, check today whether your release build reveals its exact compiler version and whether a PDB or map file has ever left your build server. Heumann’s byte-matching phase depended on rebuilding with the original toolchain, and that toolchain identity is one of the few inputs still under your control.

Prompted by 500+ Billion Tokens Later: Letting AI Agents Decompile A First-Person Shooter, Maurice's Blog.