Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; boost::shared_ptr< CBase > f()
- ; 25: {
- 01041050 push 0FFFFFFFFh
- 01041052 push offset __ehhandler$?f@?A0xa61281ce@@YA?AV?$shared_ptr@VCBase@@@boost@@XZ (1041E81h)
- 01041057 mov eax,dword ptr fs:[00000000h]
- 0104105D push eax
- 0104105E mov dword ptr fs:[0],esp
- 01041065 sub esp,1Ch
- 01041068 push esi
- 01041069 push edi
- 0104106A mov edi,dword ptr [esp+34h]
- ; 26: auto pRes = boost::static_pointer_cast< CBase >( boost::make_shared< CDerived >() );
- 0104106E lea eax,[esp+18h]
- 01041072 push eax
- 01041073 mov dword ptr [esp+10h],0
- 0104107B call boost::make_shared<CDerived> (10411C0h)
- 01041080 mov ecx,eax
- 01041082 add esp,4
- 01041085 lea eax,[esp+10h]
- 01041089 call boost::static_pointer_cast<CBase,CDerived> (10412E0h)
- 0104108E mov dword ptr [esp+2Ch],1
- 01041096 mov eax,dword ptr [esp+1Ch]
- 0104109A test eax,eax
- 0104109C je `anonymous namespace`::f+7Ah (10410CAh) ; <----------- NO JUMP
- 0104109E mov esi,eax
- 010410A0 add eax,4
- 010410A3 or ecx,0FFFFFFFFh
- 010410A6 lock xadd dword ptr [eax],ecx ; <-------------- CALLED (decref after temp ptr destruction)
- 010410AA jne `anonymous namespace`::f+7Ah (10410CAh) ; <--------------- JUMP OCCURS
- 010410AC mov edx,dword ptr [esi]
- 010410AE mov eax,dword ptr [edx+4]
- 010410B1 mov ecx,esi
- 010410B3 call eax
- 010410B5 lea ecx,[esi+8]
- 010410B8 or edx,0FFFFFFFFh
- 010410BB lock xadd dword ptr [ecx],edx
- 010410BF jne `anonymous namespace`::f+7Ah (10410CAh)
- 010410C1 mov eax,dword ptr [esi]
- 010410C3 mov edx,dword ptr [eax+8]
- 010410C6 mov ecx,esi
- 010410C8 call edx
- ; 27: // ... Doing something with pRes
- ; 28: return std::move( pRes );
- 010410CA mov eax,dword ptr [esp+10h]
- 010410CE mov dword ptr [edi],eax
- 010410D0 mov eax,dword ptr [esp+14h]
- 010410D4 mov dword ptr [edi+4],0
- 010410DB mov esi,dword ptr [edi+4]
- 010410DE mov dword ptr [edi+4],eax
- 010410E1 mov dword ptr [esp+0Ch],1
- 010410E9 mov byte ptr [esp+2Ch],0
- 010410EE test esi,esi
- 010410F0 je `anonymous namespace`::f+0CCh (104111Ch) ; <-------------- JUMP OCCURS
- 010410F2 lea ecx,[esi+4]
- 010410F5 or edx,0FFFFFFFFh
- 010410F8 lock xadd dword ptr [ecx],edx
- 010410FC jne `anonymous namespace`::f+0CCh (104111Ch)
- 010410FE mov eax,dword ptr [esi]
- 01041100 mov edx,dword ptr [eax+4]
- 01041103 mov ecx,esi
- 01041105 call edx
- 01041107 lea eax,[esi+8]
- 0104110A or ecx,0FFFFFFFFh
- 0104110D lock xadd dword ptr [eax],ecx
- 01041111 jne `anonymous namespace`::f+0CCh (104111Ch)
- 01041113 mov edx,dword ptr [esi]
- 01041115 mov eax,dword ptr [edx+8]
- 01041118 mov ecx,esi
- 0104111A call eax
- ; 29: }
- 0104111C mov ecx,dword ptr [esp+24h]
- 01041120 mov eax,edi
- 01041122 pop edi
- 01041123 mov dword ptr fs:[0],ecx
- 0104112A pop esi
- 0104112B add esp,28h
- 0104112E ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement