
With the jump labels: *** worker_make ***: push %r12 xor %r12d,%r12d push %rbp xor %ebp,%ebp push %rbx nopl 0x0(%rax) <void worker_make<std::auto_ptr<int>, &(std::auto_ptr<int> make_auto<int>())>()+16>: mov $0x4,%edi callq 0x405288 <_Znwm@plt> (operator new) mov %rax,%rbx xor %edi,%edi callq 0x405058 <_ZdlPv@plt> (operator delete) cmp %rbx,%r12 je 0x406464 <void worker_make<std::auto_ptr<int>, &(std::auto_ptr<int> make_auto<int>())>()+52> mov %r12,%rdi mov %rbx,%r12 callq 0x405058 <_ZdlPv@plt> (operator delete) <void worker_make<std::auto_ptr<int>, &(std::auto_ptr<int> make_auto<int>())>()+52>: xor %edi,%edi add $0x1,%ebp callq 0x405058 <_ZdlPv@plt> (operator delete) cmp $0x186a0,%ebp jne 0x406440 <void worker_make<std::auto_ptr<int>, &(std::auto_ptr<int> make_auto<int>())>()+16> pop %rbx pop %rbp mov %r12,%rdi pop %r12 jmpq 0x405058 <_ZdlPv@plt> (operator delete) mov %rax,%rbx mov %r12,%rdi callq 0x405058 <_ZdlPv@plt> (operator delete) mov %rbx,%rdi callq 0x405298 <_Unwind_Resume@plt> *** worker_new ***: push %r12 xor %r12d,%r12d push %rbp xor %ebp,%ebp push %rbx nopl 0x0(%rax) <void worker_new<std::auto_ptr<int>, int>()+16>: mov $0x4,%edi callq 0x405288 <_Znwm@plt> (operator new) cmp %rax,%r12 mov %rax,%rbx je 0x405e4d <void worker_new<std::auto_ptr<int>, int>()+45> mov %r12,%rdi mov %rbx,%r12 callq 0x405058 <_ZdlPv@plt> (operator delete) <void worker_new<std::auto_ptr<int>, int>()+45>: add $0x1,%ebp cmp $0x186a0,%ebp jne 0x405e30 <void worker_new<std::auto_ptr<int>, int>()+16> pop %rbx pop %rbp mov %r12,%rdi pop %r12 jmpq 0x405058 <_ZdlPv@plt> (operator delete) mov %rax,%rbx mov %r12,%rdi callq 0x405058 <_ZdlPv@plt> (operator delete) mov %rbx,%rdi callq 0x405298 <_Unwind_Resume@plt> -Phil