It’s natural for programmers to view the executable binary
generated from their programs through the prism of their source
code. In that view, functions do not get jumped into sideways,
nor are they called from locations other than their explicit call
sites; variables retain their values unless assigned to by name or
by reference; assembly instructions cannot spring into existence
unless somehow implied by the code’s semantics; and so on.