Decompilation is similar to disassembly, but while disassembly reverses machine code into assembly language source code, decompilation takes machine code and turns it back into high-level language source code. This requires a bit of art to find that single line of high-level language that best represents the equivalent block of machine code.
Results can be improved if the decompiler has the entrance points of the libraries and DLLs. It should also have an editable symbol table to help the decompiler to document its output.