In general as other users commented it is not possible to get back the original source code in practice. Also, Etherscan.io only lists <1% of contracts with source code. People can use decompilers to reverse-engineer and try to better understand deployed smart contracts however. There are various decompilers available, for instance Porosity, Mythril, EthIR and Vandal. A good decompiler that's currently available (in terms of fidelity and reliability) is https://www.contract-library.com. It's not a stand alone tool, but can decompile most of the contracts that are currently on the Ethereum mainnet.
And this is the contract you linked to in decompiled mode: https://contract-library.com/contracts/Ethereum/0xbf35faa9c265baf50c9cff8c389c363b05753275
As you can see, some of the function names and data structures are inferred automatically, sometimes based on the knowledge it acquired when trying to understand past contracts. Overall, decompilers for Ethereum are currently not exactly designed to have their output optimized for typical human consumption, however they are optimized for consumption by other machines (algorithms) that can find security vulnerabilities.