Execution starts a line 4, it's the first function to be called.
Line 6 writes write_vertical(3) without a linefeed.
Line 7 calls function write_vertical and passes 3 as its parameter
Execution transfers to line 16 where n is set to 3.
Line 18, n<10 is true
Line 20 calls writes an end of line sequence
The function returns to line 8
Line 8 writes write_vertical(12) without a linefeed.
Line 7 calls function write_vertical and passes 12 as its parameter
Execution transfers to line 16 where n is set to 12.
Line 18, n<10 is false
Line 24 calls function write_vertical and passes 2 as its parameter
Line 18, n<10 is true
Line 20 calls writes a carrage-return/linefeed
The function returns to line 25
Line 25 writes 2 with an end of line sequence
The function returns to line 10