How C++ virtual function methods are translated into x86_64 assembly