It shouldn't be hard to identify the constuction and destruction of the call stack at the start and end of the functions - do that next. Then you can go on to identify functions, give them a proper name, according to what you've learned, or a temporary name if you're unsure.
Armed with that knowledge, you can create reasonable C/C++ data structures, and maybe even write a script to automate that task. It requires hard work and good analysis to understand what the data structures are, recognize patterns in the algorithms and subroutines, and derive the general data and program structure. The problem is that when you use any form of automatic conversion, the resulting code cannot be magically more readable than before.