Decompilers are usually unable to perfectly reconstruct the original source code, and as such, will frequently produce obfuscated code. It is therefore the opposite of a compiler, which takes a source file and makes an executable. A decompiler is a computer program that takes an executable file as input and attempts to create a high-level source file that can be recompiled successfully.