Byte-accurate decompilation of the League of Legends v4.17 macOS client.
- C 45%
- C++ 36.1%
- Ruby 9.8%
- Objective-C 5.2%
- SWIG 1.6%
- Other 2.1%
| .claude | ||
| .codex/skills | ||
| .githooks | ||
| build | ||
| docs | ||
| notes | ||
| orig | ||
| src | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| .next-config.example.json | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| configure.py | ||
| exhausted_symbols.jsonl | ||
| Makefile | ||
| README.md | ||
| requirements.txt | ||
League of Legends Mac Client Decompilation
A byte-matching decompilation of the League of Legends Mac game client (Patch 4.17, Season 4, ~2013).
What Is This
The goal is to produce a 1:1 byte-matching reimplementation of the original Mach-O i386 binary (~14 MB of code). Every decompiled function is verified instruction-by-instruction against the original using objdiff.
The binary ships with a full DWARF dSYM — function names, parameter types, struct layouts, source file paths, and line numbers. The project skeleton was generated directly from this debug info.
| Game Version | 4.17.0.244 (September 2014) |
| Compiler | Clang 3.3 (i686-apple-darwin10) |
Building
Prerequisites: Python 3, pip install -r requirements.txt
make # Compile all source files
make report # Generate match report
make progress # Report + update progress page
Contributing
Pick any unmatched function from the progress page and write C++ that compiles to a byte-perfect match. See docs/ for compiler flags, codegen tips, and tooling details.
Acknowledgments
- objdiff by encounter — instruction-level diff tool
- decomp.dev — inspiration for the progress treemap