Decompiler

Snippet from Wikipedia: Decompiler

A decompiler is a computer program that translates an executable file back into high-level source code. Unlike a compiler, which converts high-level code into machine code, a decompiler performs the reverse process. While disassemblers translate executables into assembly language, decompilers reconstruct higher level representations resembling source languages such as C. Because compilation generally discards source-level information such as variable names, comments, types, and aspects of the original program structure, a decompiler usually cannot reproduce the original source code exactly.