Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Add(T data)
- {
- 00A98C60 push ebp
- 00A98C61 mov ebp,esp
- 00A98C63 sub esp,108h
- 00A98C69 push ebx
- 00A98C6A push esi
- 00A98C6B push edi
- 00A98C6C push ecx
- 00A98C6D lea edi,[ebp-108h]
- 00A98C73 mov ecx,42h
- 00A98C78 mov eax,0CCCCCCCCh
- 00A98C7D rep stos dword ptr es:[edi]
- 00A98C7F pop ecx
- 00A98C80 mov dword ptr [this],ecx
- node<T> *pNode = new node<T>;
- 00A98C83 push 8
- 00A98C85 call operator new (0A9020Ch)
- 00A98C8A add esp,4
- 00A98C8D mov dword ptr [ebp-104h],eax
- 00A98C93 mov eax,dword ptr [ebp-104h]
- 00A98C99 mov dword ptr [pNode],eax
- pNode->m_pNext = NULL;
- 00A98C9C mov eax,dword ptr [pNode]
- pNode->m_pNext = NULL;
- 00A98C9F mov dword ptr [eax+4],0
- pNode->m_data = data;
- 00A98CA6 mov eax,dword ptr [pNode]
- 00A98CA9 mov ecx,dword ptr [data]
- 00A98CAC mov dword ptr [eax],ecx
- uint32_t cPushes;
- uint32_t cPops;
- node<T> *pTail;
- while (true)
- 00A98CAE mov eax,1
- 00A98CB3 test eax,eax
- 00A98CB5 je Queue<int,-1>::Add+0FEh (0A98D5Eh)
- {
- cPushes = m_cPushes;
- 00A98CBB mov eax,dword ptr [this]
- 00A98CBE mov ecx,dword ptr [eax+0Ch]
- 00A98CC1 mov dword ptr [cPushes],ecx
- cPops = m_cPops;
- 00A98CC4 mov eax,dword ptr [this]
- 00A98CC7 mov ecx,dword ptr [eax+4]
- 00A98CCA mov dword ptr [cPops],ecx
- pTail = (node<T>*)m_pTail;
- 00A98CCD mov eax,dword ptr [this]
- 00A98CD0 mov ecx,dword ptr [eax+8]
- 00A98CD3 mov dword ptr [pTail],ecx
- if (cPushes != m_cPushes)
- 00A98CD6 mov eax,dword ptr [this]
- 00A98CD9 mov ecx,dword ptr [eax+0Ch]
- 00A98CDC cmp dword ptr [cPushes],ecx
- 00A98CDF je Queue<int,-1>::Add+83h (0A98CE3h)
- continue;
- 00A98CE1 jmp Queue<int,-1>::Add+4Eh (0A98CAEh)
- if (!pTail)
- 00A98CE3 cmp dword ptr [pTail],0
- 00A98CE7 jne Queue<int,-1>::Add+0F9h (0A98D59h)
- if (CAS2(&m_pTail, NULL, cPushes, (uint32_t)pNode, cPushes +1))
- 00A98CE9 mov eax,dword ptr [cPushes]
- 00A98CEC add eax,1
- 00A98CEF push eax
- 00A98CF0 mov ecx,dword ptr [pNode]
- 00A98CF3 push ecx
- 00A98CF4 mov edx,dword ptr [cPushes]
- 00A98CF7 push edx
- 00A98CF8 push 0
- 00A98CFA mov eax,dword ptr [this]
- 00A98CFD add eax,8
- 00A98D00 push eax
- 00A98D01 call CAS2 (0A8F776h)
- 00A98D06 add esp,14h
- 00A98D09 movzx ecx,al
- 00A98D0C test ecx,ecx
- 00A98D0E je Queue<int,-1>::Add+0B4h (0A98D14h)
- break;
- 00A98D10 jmp Queue<int,-1>::Add+0FEh (0A98D5Eh)
- 00A98D12 jmp Queue<int,-1>::Add+0F9h (0A98D59h)
- else if (CAS(&pTail->m_pNext, NULL, (uint32_t)pNode))
- 00A98D14 mov eax,dword ptr [pNode]
- 00A98D17 push eax
- 00A98D18 push 0
- 00A98D1A mov ecx,dword ptr [pTail]
- 00A98D1D add ecx,4
- 00A98D20 push ecx
- 00A98D21 call CAS (0A8FDFCh)
- 00A98D26 add esp,0Ch
- 00A98D29 movzx edx,al
- 00A98D2C test edx,edx
- 00A98D2E je Queue<int,-1>::Add+0D4h (0A98D34h)
- break;
- 00A98D30 jmp Queue<int,-1>::Add+0FEh (0A98D5Eh)
- else
- 00A98D32 jmp Queue<int,-1>::Add+0F9h (0A98D59h)
- CAS2(&m_pTail, (uint32_t)pTail, cPushes, (uint32_t)pTail->m_pNext, cPushes + 1);
- 00A98D34 mov eax,dword ptr [cPushes]
- 00A98D37 add eax,1
- 00A98D3A push eax
- 00A98D3B mov ecx,dword ptr [pTail]
- 00A98D3E mov edx,dword ptr [ecx+4]
- CAS2(&m_pTail, (uint32_t)pTail, cPushes, (uint32_t)pTail->m_pNext, cPushes + 1);
- 00A98D41 push edx
- 00A98D42 mov eax,dword ptr [cPushes]
- 00A98D45 push eax
- 00A98D46 mov ecx,dword ptr [pTail]
- 00A98D49 push ecx
- 00A98D4A mov edx,dword ptr [this]
- 00A98D4D add edx,8
- 00A98D50 push edx
- 00A98D51 call CAS2 (0A8F776h)
- 00A98D56 add esp,14h
- }
- 00A98D59 jmp Queue<int,-1>::Add+4Eh (0A98CAEh)
- CAS2(&m_pHead, NULL, cPops, (uint32_t)pNode, cPops + 1);
- 00A98D5E mov eax,dword ptr [cPops]
- 00A98D61 add eax,1
- 00A98D64 push eax
- 00A98D65 mov ecx,dword ptr [pNode]
- 00A98D68 push ecx
- 00A98D69 mov edx,dword ptr [cPops]
- 00A98D6C push edx
- 00A98D6D push 0
- 00A98D6F mov eax,dword ptr [this]
- 00A98D72 push eax
- 00A98D73 call CAS2 (0A8F776h)
- 00A98D78 add esp,14h
- CAS2(&m_pTail, (uint32_t)pTail, cPushes, (uint32_t)pNode, cPushes + 1);
- 00A98D7B mov eax,dword ptr [cPushes]
- 00A98D7E add eax,1
- 00A98D81 push eax
- 00A98D82 mov ecx,dword ptr [pNode]
- 00A98D85 push ecx
- 00A98D86 mov edx,dword ptr [cPushes]
- 00A98D89 push edx
- 00A98D8A mov eax,dword ptr [pTail]
- 00A98D8D push eax
- 00A98D8E mov ecx,dword ptr [this]
- 00A98D91 add ecx,8
- 00A98D94 push ecx
- 00A98D95 call CAS2 (0A8F776h)
- 00A98D9A add esp,14h
- }
- 00A98D9D pop edi
- 00A98D9E pop esi
- 00A98D9F pop ebx
- 00A98DA0 add esp,108h
- }
- 00A98DA6 cmp ebp,esp
- 00A98DA8 call __RTC_CheckEsp (0A8FEFBh)
- 00A98DAD mov esp,ebp
- 00A98DAF pop ebp
- 00A98DB0 ret 4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement