As the name implies, a decompiler converts a compiled binary back into human readable code. However, the resulting source code will not be an exact match for the code that was used to generate the binary. This is due to the compiler performing optimizations on the code, such as shortening variable names, rewriting code patterns into more performant structures, etc.