League of Legends · patch 4.17 · Mac, 2014
Rebuilding League of Legends from its machine code
The 2014 Mac version of League of Legends was released only as machine code, the instructions a computer runs. This project writes its human-readable source code again and checks every function against the original. A function counts only when it compiles to exactly the same machine code.
Last measured
The whole program
100.0%of the program's code has been rebuilt to match the original exactly.
67,377 of 67,377 functions match exactly. A function is one routine of the program; the percentage weighs each by its size.
The program is the game's own code together with the libraries it ships with, such as Scaleform for its interface and Wwise for sound. A complete rebuild needs all of it, so the figure counts every function; the list below shows each part.
- Matches, fully provenIdentical code, and further checks confirm the data it uses, the references it makes and its error handling. 67,377 functions.
- Matches, proof pendingIdentical code; the further checks have not passed yet. 0 functions.
- Rebuilt, still differentWritten, but it does not compile to identical code yet. 0 functions.
- No result yetNot written yet, or no comparison result. 0 functions.
What's left
Every function matches exactly. Every match is fully proven.
Every library
Each square is one library, the game's own code among them, sized by how much code it holds; select one to see its source files. Its color shows how much of it matches the original exactly.
Loading the map…
Point at a square to see which library it is.
By library
- League of Legends100.0%
Riot's own game code, with the support code the compiler generates for it.
- Scaleform100.0%
User-interface engine built on Flash.
- Crypto++100.0%
Cryptography library.
- Wwise100.0%
Audio engine for sound effects and music.
- libc++100.0%
The C++ standard library.
- FreeType100.0%
Font rendering library.
- LuaPlus100.0%
The Lua scripting language with C++ bindings.
- TiCPP100.0%
XML parser.
- Boost100.0%
Boost C++ support and regular expressions.
- libc++abi100.0%
Low-level C++ runtime support.
- Thrift100.0%
Data serialization library.
- Tremor100.0%
Ogg Vorbis audio decoder.
- TLSF100.0%
Memory allocator.
- Darwin CRT100.0%
Darwin process startup.
How it works
Start from the original
The 2014 Mac game program and the debug information it shipped with: function names, types, data layouts and source file names.
Write the source
Each function is written again in C++, guided by those names and types.
Compile and compare
The source is compiled with Apple's compilers of the time and compared with the original, instruction by instruction. Only exact matches count.
A match means the compiled code is identical to the original. It does not mean the rebuilt game has been run or is playable: that is not measured here.
Technical details
Every function in the program with the measurements behind the overview: instruction and verification verdicts, the backlog, and a searchable explorer. Opening this view downloads up to 6.0 MB of compressed data.
Downloading the function data…