Positive SP values are more often than not a result of incorrect disassembly (wrong function signature). Fixing the stack manually is just a crutch and shouldn't be used, better to fix the real error.
"Trash" functions are static initializers like Alex has been saying.
They start at 0065E004 and go on until 0065F1E8.
Most of them will be "trash" but you have non-trash things in there, like LOD initializers for instance. You will notice most of those also register a function _onexit(func), which is the static destructor for whatever was being initialized early on.
I personally renamed all of them init_XYZ if they started with sub_. With that said, I finished comparing notes; we worked on a lot of same things but you had around 300 named functions I had not yet inspected while I worked in other directions.
I had not expected someone else would be as mad as myself to give themselves the trouble with this work, bravo