**************************************************************************** **** **************************************************************************** **** **************************************************************************** **** int main( int /*argc*/, char * * /*argv*/ ) { 010E114B push ebp 010E114C mov ebp,esp 010E114E and esp,0FFFFFFF8h 010E1151 push 0FFFFFFFFh 010E1153 push offset __ehhandler$_main (10E1F06h) 010E1158 mov eax,dword ptr fs:[00000000h] 010E115E push eax 010E115F mov dword ptr fs:[0],esp 010E1166 sub esp,50h 010E1169 push esi using namespace boost; X x; function foof( boost::bind( &X::foo, &x, _1 ) ); 010E116A mov ecx,offset X::foo (10E1142h) 010E116F lea eax,[esp+4] 010E1173 mov dword ptr [esp+18h],ecx 010E1177 mov dword ptr [esp+1Ch],eax 010E117B mov dword ptr [esp+10h],offset boost::detail::function::vtable_holder,boost::_bi::li st2,boost::arg<1> > >,boost::detail::function::manager_trivial_small,int,int>,boost::detail::fun ction::typed_manager,boost::_bi::list2,boost::arg<1> > >,boost::_bi::bind_t,boost::_bi::list2,boost::arg<1> > > > >::stored_vtable (10E3274h) foof( 0 ); 010E1183 push 0 010E1185 lea ecx,[esp+1Ch] 010E1189 mov dword ptr [esp+60h],1 010E1191 call dword ptr [boost::detail::function::vtable_holder,boost::_bi::l ist2,boost::arg<1> > >,boost::detail::function::manager_trivial_small,int,int>,boost::detail::fun ction::typed_manager,boost::_bi::list2,boost::arg<1> > >,boost::_bi::bind_t,boost::_bi::list2,boost::arg<1> > > > >::stored_vtable (10E3274h)] function barf; 010E1197 mov esi,offset boost::detail::function::vtable_holder >::my_empty_handler,boost::detail::function::manager_ptr,int,int>,boost::det ail::function::typed_manager >::stored_vtable (10E3260h) 010E119C mov dword ptr [esp+30h],esi barf = foof; 010E11A0 lea ecx,[esp+38h] 010E11A4 mov byte ptr [esp+5Ch],2 010E11A9 call dword ptr [boost::detail::function::vtable_holder >::my_empty_handler,boost::detail::function::manager_ptr,int,int>,boost::det ail::function::typed_manager >::stored_vtable+0Ch (10E326Ch)] 010E11AF lea eax,[esp+30h] 010E11B3 mov dword ptr [esp+8],eax 010E11B7 mov dword ptr [esp+0Ch],esi 010E11BB mov byte ptr [esp+5Ch],3 010E11C0 mov eax,dword ptr [esp+10h] 010E11C4 lea edx,[esp+38h] 010E11C8 lea ecx,[esp+18h] 010E11CC call dword ptr [eax+4] 010E11CF mov eax,dword ptr [esp+10h] barf( 1 ); 010E11D3 push 1 010E11D5 lea ecx,[esp+3Ch] 010E11D9 mov dword ptr [esp+34h],eax 010E11DD mov byte ptr [esp+60h],2 010E11E2 call dword ptr [eax] return 0; 010E11E4 mov byte ptr [esp+5Ch],1 010E11E9 mov eax,dword ptr [esp+30h] 010E11ED lea ecx,[esp+38h] 010E11F1 call dword ptr [eax+0Ch] 010E11F4 or dword ptr [esp+5Ch],0FFFFFFFFh 010E11F9 mov eax,dword ptr [esp+10h] 010E11FD lea ecx,[esp+18h] 010E1201 call dword ptr [eax+0Ch] } 010E1204 mov ecx,dword ptr [esp+54h] 010E1208 xor eax,eax 010E120A mov dword ptr fs:[0],ecx 010E1211 pop esi 010E1212 mov esp,ebp 010E1214 pop ebp 010E1215 ret **************************************************************************** **** **************************************************************************** **** **************************************************************************** **** "other side/invoker code for the foof( 0 ) call: 010E1513 mov eax,ecx 010E1515 mov ecx,dword ptr [eax+4] 010E1518 jmp dword ptr [eax]