How do I generate code (either Assembly or C) from a HEX file? Is it possible?

How do I generate code (either Assembly or C) from a HEX file? Is it possible?

A similar question asked there. You may take a look at it. Even if it is possible there is no direct way to do that plus it will depend on our intuition and very difficult task.
You may look at it here. Also here.

The HEX file is in fact binary assembly language. The command to disassemble is

avr-objdump -j .sec1 -d -m avr5 filename.hex
or
avr-objdump -D -m avr5 filename.hex

should give you some sort of assembly listing. (this tool is in the Arduino installation somewhere)

see documentation avr-objdump

You cannot create the original C from it as e.g. the names of the variables are gone. Also optimizations done during compilation make it impossible to get the original C.

Thanks @robtillaart and @Pinaki_Gupta_1982