I'm not convinced that the "goto L0" statements you have in there now are even necessary - they are all at the "end" of if/else clauses where the code path if they're omitted goes past the remaining code anyway.
I hope that you have noticed the challenge of maintaining the indentations in a program like this (my version) which contains nested if-else structures. So, I have relied upon the goto~~()~~ statements as a quick tools to solve my problem first; then comes the issue of optimization and quality.