"register asm" variables don't preserve the register value, so the call to calculate_physical_to_link_time_address_offset in the asm input operands is allowed to clobber a0.
TimeManagement
ConsoleDevice