No description
  • Python 70.1%
  • C++ 21%
  • Shell 5%
  • C 3.8%
  • Java 0.1%
Find a file
2026-06-03 10:43:42 +00:00
.git-hooks-config Add anonymity guard git hooks 2026-06-02 08:01:32 +00:00
.githooks Add UTC date-normalizing post-commit hook 2026-06-02 08:28:02 +00:00
docs progress page: add shared cross-site navbar (1.0.0.126 active) 2026-06-03 10:43:42 +00:00
progress Recover ObjectManager object lookup 2026-06-02 22:06:07 +00:00
replays Bring 1.0.0.126 client + converted replays in-repo; add replay gate + docs 2026-06-01 16:11:27 +00:00
spec Review delink tooling and split agent docs 2026-06-01 17:42:38 +00:00
src Recover ObjectManager object lookup 2026-06-02 22:06:07 +00:00
tools progress page: add shared cross-site navbar (1.0.0.126 active) 2026-06-03 10:43:42 +00:00
vendor_stubs Fresh start: verifiable-recovery foundation, anchored on AB build 2026-05-29 06:00:02 +00:00
.gitattributes Fresh start: verifiable-recovery foundation, anchored on AB build 2026-05-29 06:00:02 +00:00
.gitignore Reword stale git-history-backup gitignore comment 2026-06-02 08:29:26 +00:00
CLAUDE.md Add batch symbol recorder 2026-06-02 15:18:59 +00:00
README.md Review delink tooling and split agent docs 2026-06-01 17:42:38 +00:00

lol-decomp

Verifiable source recovery of the League of Legends client, anchored on the RiotLOL_Client_AB build (the build we hold a full private PDB for). The PDB is ground truth; the goal is recompilable C++ that is functionally identical to Riot's original, built with the original VS2005 SP1 toolchain.

This binary was built with /GL + /LTCG (whole-program optimization), so there is no per-TU byte target and the old per-TU /O2 "logical score" was invalid. Instead we delink the shipped image into one relocatable object (PDB names + relocations restored) and override functions one at a time from recovered C++, byte-matching each against its original body in the delinked obj (objdiff 100%) while the image stays runnable. Symbolic/behavioral checks (symdiff/diffexec) are the fallback for what byte-match can't target (fully-inlined, ICF-folded, non-standard-ABI). See spec/delink_relink_methodology.md (why), spec/delink_implementation_plan.md (how), docs/delink_workflow.md (per-function steps), docs/grind_workflow.md (agent loop), and CLAUDE.md for the entrypoint/doc map.

Layout

Path Contents
orig/ Ground truth: RiotLOL_Client_AB.exe + .pdb
compilers/ Exact original toolchain (MSVC VS2005 SP1, 14.00.50727)
vendor/ Third-party reference source (boost, jpeg-6b, lua, cryptopp, scaleform, zlib, …)
vendor_stubs/ Link stubs for commercial libs (FMOD, Scaleform, Cg, …)
replays/ Game replay(s) for behavioral testing
spec/ Extracted PDB ground truth (pdb_modules.txt, icf_folds.json) + the delink docs
src/ Recovered source (Perforce tree); src/_delink/delink.h = override macros
tools/ Delink pipeline (coffdrop.c, comments2coffdrop.py, dibs.c, phase0_delink_spike.sh, ghidra/) + fallback gates (symdiff.py, diffexec.py, funcdiff.py)
docs/ Agent/workflow docs plus the generated progress page (index.html)

.git_old_backup/ holds the previous repo history (local only) — recoverable, safe to delete once no longer referenced. Large asset dirs (orig/ compilers/ vendor/ build/) are gitignored pending an LFS/hosting decision; they live on disk.