And functions Ha, they are just gosubs to labels.
If you look at the assembly language emitted by the compiler, that's exactly what it is (most of the time). :)
Point is, the compiler decided if it was most efficient to set aside a block of labeled code, or just in-line it. If you in-line it all yourself, you don't give the compiler the opportunity to optimize the code (JIT might decide to go with a code block if the machine has low memory, or in-line it if there's memory to spare).