SmsCenter/Release_Unicode/IOCP.cod
2025-01-03 16:47:25 +08:00

13916 lines
447 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; Listing generated by Microsoft (R) Optimizing Compiler Version 19.34.31933.0
TITLE D:\Works\Corpsms_2010\SmsCenter\Release_Unicode\IOCP.obj
.686P
.XMM
include listing.inc
.model flat
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC ?__empty_global_delete@@YAXPAX@Z ; __empty_global_delete
PUBLIC ?__empty_global_delete@@YAXPAXI@Z ; __empty_global_delete
PUBLIC ?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z ; __empty_global_delete
PUBLIC ?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z ; __empty_global_delete
PUBLIC ___local_stdio_printf_options
PUBLIC __vswprintf_c_l
PUBLIC __vswprintf_l
PUBLIC ___vswprintf_l
PUBLIC __swprintf
PUBLIC ?AfxCrtErrorCheck@@YAHH@Z ; AfxCrtErrorCheck
PUBLIC ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
PUBLIC ?_AtlGetConversionACP@ATL@@YGIXZ ; ATL::_AtlGetConversionACP
PUBLIC ?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z ; AtlA2WHelper
PUBLIC ?wmemcpy_s@Checked@ATL@@YAXPA_WIPB_WI@Z ; ATL::Checked::wmemcpy_s
PUBLIC ?AtlStrLen@ATL@@YAHPB_W@Z ; ATL::AtlStrLen
PUBLIC ?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z ; ATL::_AtlGetStringResourceImage
PUBLIC ?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z ; ATL::AtlGetStringResourceImage
PUBLIC ?data@CStringData@ATL@@QAEPAXXZ ; ATL::CStringData::data
PUBLIC ?IsLocked@CStringData@ATL@@QBE_NXZ ; ATL::CStringData::IsLocked
PUBLIC ?IsShared@CStringData@ATL@@QBE_NXZ ; ATL::CStringData::IsShared
PUBLIC ?Release@CStringData@ATL@@QAEXXZ ; ATL::CStringData::Release
PUBLIC ?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z ; ATL::ChTraitsCRT<wchar_t>::GetFormattedLength
PUBLIC ?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z ; ATL::ChTraitsCRT<wchar_t>::Format
PUBLIC ?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength
PUBLIC ?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WH@Z ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength
PUBLIC ?ConvertToBaseType@?$ChTraitsCRT@_W@ATL@@SAXPA_WHPB_WH@Z ; ATL::ChTraitsCRT<wchar_t>::ConvertToBaseType
PUBLIC ??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z ; ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>
PUBLIC ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
PUBLIC ??4?$CSimpleStringT@_W$0A@@ATL@@QAEAAV01@PB_W@Z ; ATL::CSimpleStringT<wchar_t,0>::operator=
PUBLIC ??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ; ATL::CSimpleStringT<wchar_t,0>::operator wchar_t const *
PUBLIC ?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ ; ATL::CSimpleStringT<wchar_t,0>::Empty
PUBLIC ?GetAllocLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ; ATL::CSimpleStringT<wchar_t,0>::GetAllocLength
PUBLIC ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
PUBLIC ?GetLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ; ATL::CSimpleStringT<wchar_t,0>::GetLength
PUBLIC ?GetManager@?$CSimpleStringT@_W$0A@@ATL@@QBEPAUIAtlStringMgr@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetManager
PUBLIC ?GetString@?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ; ATL::CSimpleStringT<wchar_t,0>::GetString
PUBLIC ?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBufferSetLength
PUBLIC ?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_W@Z ; ATL::CSimpleStringT<wchar_t,0>::SetString
PUBLIC ?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetString
PUBLIC ?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::CopyCharsOverlapped
PUBLIC ?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z ; ATL::CSimpleStringT<wchar_t,0>::StringLength
PUBLIC ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
PUBLIC ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
PUBLIC ?Fork@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Fork
PUBLIC ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
PUBLIC ?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AAEPA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
PUBLIC ?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2
PUBLIC ?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Reallocate
PUBLIC ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetLength
PUBLIC ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
PUBLIC ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
PUBLIC ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
PUBLIC ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
PUBLIC ??4?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEAAV01@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::operator=
PUBLIC ?GetManager@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QBEPAUIAtlStringMgr@2@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::GetManager
PUBLIC ?Format@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAAXPB_WZZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::Format
PUBLIC ?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::FormatV
PUBLIC ?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHI@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW
PUBLIC ?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHPAUHINSTANCE__@@I@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW
PUBLIC ?CheckImplicitLoad@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AAE_NPBX@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CheckImplicitLoad
PUBLIC ?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::FindStringResourceInstance
PUBLIC ?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::GetDefaultManager
PUBLIC ??0AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::AutoCoInitializeEx
PUBLIC ??0AutoCoInitializeEx@@QAE@_N@Z ; AutoCoInitializeEx::AutoCoInitializeEx
PUBLIC ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
PUBLIC ??0CIOCP@@QAE@XZ ; CIOCP::CIOCP
PUBLIC ??1CIOCP@@UAE@XZ ; CIOCP::~CIOCP
PUBLIC ?MainLoop2@CIOCP@@SGKPAX@Z ; CIOCP::MainLoop2
PUBLIC ?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ ; CIOCP::CheckForInvalidSQLConnection
PUBLIC ?CheckForInvalidConnection@CIOCP@@QAEXXZ ; CIOCP::CheckForInvalidConnection
PUBLIC ?InitIoContext_Send@CIOCP@@QAEXPAUIOCP_IO_SEND@@@Z ; CIOCP::InitIoContext_Send
PUBLIC ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
PUBLIC ?SetDlg@CIOCP@@QAEXPAVCSmsCenterDlg@@@Z ; CIOCP::SetDlg
PUBLIC ?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z ; CIOCP::GetFrame_Cmpp
PUBLIC ?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z ; CIOCP::GetFrame
PUBLIC ?RegAcceptEvent2@CIOCP@@QAEHXZ ; CIOCP::RegAcceptEvent2
PUBLIC ?RegAcceptEvent@CIOCP@@QAEHXZ ; CIOCP::RegAcceptEvent
PUBLIC ?PostAcceptEx2@CIOCP@@QAEHXZ ; CIOCP::PostAcceptEx2
PUBLIC ?PostAcceptEx@CIOCP@@QAEHXZ ; CIOCP::PostAcceptEx
PUBLIC ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
PUBLIC ?GetFunPointer@CIOCP@@QAEHXZ ; CIOCP::GetFunPointer
PUBLIC ?BindAndListenSocket2@CIOCP@@QAEHXZ ; CIOCP::BindAndListenSocket2
PUBLIC ?BindAndListenSocket@CIOCP@@QAEHXZ ; CIOCP::BindAndListenSocket
PUBLIC ?CloseMainSocket@CIOCP@@QAEXXZ ; CIOCP::CloseMainSocket
PUBLIC ?Init@CIOCP@@QAEHXZ ; CIOCP::Init
PUBLIC ?MainLoop@CIOCP@@SGKPAX@Z ; CIOCP::MainLoop
PUBLIC ?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z ; CIOCP::InitIoContext
PUBLIC ?DataAction@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@@Z ; CIOCP::DataAction
PUBLIC ?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z ; CIOCP::HandleData
PUBLIC ?StartThread@CIOCP@@AAEHXZ ; CIOCP::StartThread
PUBLIC ?CloseThreadHandle@CIOCP@@AAEXH@Z ; CIOCP::CloseThreadHandle
PUBLIC ?InitSocket@CIOCP@@AAEHXZ ; CIOCP::InitSocket
PUBLIC ?CompletionRoutine@CIOCP@@CGKPAX@Z ; CIOCP::CompletionRoutine
PUBLIC ?GetAddrAndPort@CIOCP@@AAEHPADQADAAI@Z ; CIOCP::GetAddrAndPort
PUBLIC ??_GCIOCP@@UAEPAXI@Z ; CIOCP::`scalar deleting destructor'
PUBLIC ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; `__local_stdio_printf_options'::`2'::_OptionsStorage
PUBLIC ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@ ; `string'
PUBLIC ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@ ; `string'
PUBLIC ??_C@_13JKNELIBG@?$AAT@ ; `string'
PUBLIC ??_7CIOCP@@6B@ ; CIOCP::`vftable'
PUBLIC ?__LINE__Var@?0??Close@CIOCP@@QAEXXZ@4JA ; `CIOCP::Close'::`1'::__LINE__Var
PUBLIC ??_C@_05LGELBCGM@Close@ ; `string'
PUBLIC ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@ ; `string'
PUBLIC ?__LINE__Var@?0??InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z@4JA ; `CIOCP::InitIoContext'::`1'::__LINE__Var
PUBLIC ??_C@_0O@NGMCBOJM@InitIoContext@ ; `string'
PUBLIC ?__LINE__Var@?0??HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z@4JA ; `CIOCP::HandleData'::`1'::__LINE__Var
PUBLIC ??_C@_0L@BDAOGBHN@HandleData@ ; `string'
PUBLIC ?__LINE__Var@?0??CheckForInvalidConnection@CIOCP@@QAEXXZ@4JA ; `CIOCP::CheckForInvalidConnection'::`1'::__LINE__Var
PUBLIC ??_C@_1CA@MOMGAHJI@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$NO?$PP?$KF?$PP?$IF?$PP?v?$AA?$AB@ ; `string'
PUBLIC ??_C@_1CE@LBHGJMMD@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$KF?$AA6?$AAp?$AAn?$PP?$IF@ ; `string'
PUBLIC ??_C@_0BK@HCEPDKA@CheckForInvalidConnection@ ; `string'
PUBLIC ?__LINE__Var@?0??MainLoop@CIOCP@@SGKPAX@Z@4JA ; `CIOCP::MainLoop'::`1'::__LINE__Var
PUBLIC ??_C@_1CM@OPBDNDPO@?$AAA?$AAc?$AAc?$AAe?$AAp?$AAt?$AA_?$AAE?$AAv?$AAe?$AAn?$AAt?$AA?5?$AAE?$AAr@ ; `string'
PUBLIC ??_C@_08JEEIGPMO@MainLoop@ ; `string'
PUBLIC ?__LINE__Var@?0??CompletionRoutine@CIOCP@@CGKPAX@Z@4JA ; `CIOCP::CompletionRoutine'::`1'::__LINE__Var
PUBLIC ??_C@_0BC@GHBOFPCG@CompletionRoutine@ ; `string'
PUBLIC ?__LINE__Var@?0??GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA ; `CIOCP::GetFrame'::`1'::__LINE__Var
PUBLIC ??_C@_1CE@CMEGDHFN@?$AAn?$AAe?$AAw?$AA?5?$AAP?$AAr?$AAo?$AAc?$AAe?$AAs?$AAs?$AA?5?$AAe?$AAr?$AAr@ ; `string'
PUBLIC ??_C@_08KCCFNCFB@GetFrame@ ; `string'
PUBLIC ?__LINE__Var@?0??GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA ; `CIOCP::GetFrame_Cmpp'::`1'::__LINE__Var
PUBLIC ??_C@_0O@HLJAGLMK@GetFrame_Cmpp@ ; `string'
PUBLIC ?__LINE__Var@?0??CheckForInvalidSQLConnection@CIOCP@@QAEXXZ@4JA ; `CIOCP::CheckForInvalidSQLConnection'::`1'::__LINE__Var
PUBLIC ??_C@_1CE@HBKAPEML@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?M?$AA?2?$PP?$IF?$PP?v?$AA?$AM?$PP?j?$PP?$KI?$PP?$KN@ ; `string'
PUBLIC ??_C@_1CG@BOOJGIJM@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$IF?$PP?v?$AA?$CK?$AA?$HP?$AA?$CI?$AA?$AM?$PP?j?$PP?$KI@ ; `string'
PUBLIC ??_C@_0BN@JHDKFMGA@CheckForInvalidSQLConnection@ ; `string'
PUBLIC ?__LINE__Var@?0??MainLoop2@CIOCP@@SGKPAX@Z@4JA ; `CIOCP::MainLoop2'::`1'::__LINE__Var
PUBLIC ??_C@_09JBDIPDKJ@MainLoop2@ ; `string'
PUBLIC ??_R4CIOCP@@6B@ ; CIOCP::`RTTI Complete Object Locator'
PUBLIC ??_R0?AVCIOCP@@@8 ; CIOCP `RTTI Type Descriptor'
PUBLIC ??_R3CIOCP@@8 ; CIOCP::`RTTI Class Hierarchy Descriptor'
PUBLIC ??_R2CIOCP@@8 ; CIOCP::`RTTI Base Class Array'
PUBLIC ??_R1A@?0A@EA@CIOCP@@8 ; CIOCP::`RTTI Base Class Descriptor at (0,-1,0,64)'
EXTRN ??2@YAPAXI@Z:PROC ; operator new
EXTRN ??3@YAXPAXI@Z:PROC ; operator delete
EXTRN __invalid_parameter_noinfo:PROC
EXTRN __errno:PROC
EXTRN ___stdio_common_vswprintf:PROC
EXTRN ___stdio_common_vswprintf_s:PROC
EXTRN _memcpy:PROC
EXTRN _memmove:PROC
EXTRN _memset:PROC
EXTRN _wcscpy:PROC
EXTRN _wcslen:PROC
EXTRN _strcpy:PROC
EXTRN _strlen:PROC
EXTRN _wmemcpy_s:PROC
EXTRN __imp__CloseHandle@4:PROC
EXTRN __imp__GetLastError@0:PROC
EXTRN __imp__CreateIoCompletionPort@16:PROC
EXTRN __imp__GetQueuedCompletionStatus@20:PROC
EXTRN __imp__PostQueuedCompletionStatus@16:PROC
EXTRN __imp__WaitForSingleObject@8:PROC
EXTRN __imp__CreateEventW@16:PROC
EXTRN __imp__Sleep@4:PROC
EXTRN __imp__CreateThread@24:PROC
EXTRN __imp__TerminateThread@8:PROC
EXTRN __imp__GetSystemInfo@4:PROC
EXTRN __imp__GetTickCount@0:PROC
EXTRN __imp__QueueUserWorkItem@12:PROC
EXTRN __imp__LoadResource@8:PROC
EXTRN __imp__LockResource@4:PROC
EXTRN __imp__SizeofResource@8:PROC
EXTRN __imp__FindResourceW@12:PROC
EXTRN __imp__MultiByteToWideChar@24:PROC
EXTRN ?AfxThrowMemoryException@@YGXXZ:PROC ; AfxThrowMemoryException
EXTRN ?AfxThrowInvalidArgException@@YGXXZ:PROC ; AfxThrowInvalidArgException
EXTRN ?AfxThrowOleException@@YGXJ@Z:PROC ; AfxThrowOleException
EXTRN ?AfxFindStringResourceHandle@@YGPAUHINSTANCE__@@I@Z:PROC ; AfxFindStringResourceHandle
EXTRN __imp__bind@12:PROC
EXTRN __imp__closesocket@4:PROC
EXTRN __imp__htons@4:PROC
EXTRN __imp__inet_ntoa@4:PROC
EXTRN __imp__listen@8:PROC
EXTRN __imp__ntohl@4:PROC
EXTRN __imp__ntohs@4:PROC
EXTRN __imp__setsockopt@20:PROC
EXTRN __imp__WSAStartup@8:PROC
EXTRN __imp__WSAGetLastError@0:PROC
EXTRN __imp__WSAEventSelect@12:PROC
EXTRN __imp__WSAIoctl@36:PROC
EXTRN __imp__WSARecv@28:PROC
EXTRN __imp__WSASend@28:PROC
EXTRN __imp__WSASocketW@24:PROC
EXTRN __imp__CoUninitialize@0:PROC
EXTRN __imp__CoInitializeEx@8:PROC
EXTRN __imp__CoInitialize@4:PROC
EXTRN ?AfxGetStringManager@@YGPAUIAtlStringMgr@ATL@@XZ:PROC ; AfxGetStringManager
EXTRN ?AfxIsValidAddress@@YGHPBXIH@Z:PROC ; AfxIsValidAddress
EXTRN ?AfxMessageBox@@YGHPB_WII@Z:PROC ; AfxMessageBox
EXTRN ??0CSAStatusLog@@QAE@XZ:PROC ; CSAStatusLog::CSAStatusLog
EXTRN ??1CSAStatusLog@@QAE@XZ:PROC ; CSAStatusLog::~CSAStatusLog
EXTRN ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z:PROC ; CSAStatusLog::Init
EXTRN ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z:PROC ; CSAStatusLog::LogError
EXTRN ?IsOpen@CAdoConnection@@QAEHXZ:PROC ; CAdoConnection::IsOpen
EXTRN ?Close@CAdoConnection@@QAEXXZ:PROC ; CAdoConnection::Close
EXTRN ??0CProcessSocket@@QAE@XZ:PROC ; CProcessSocket::CProcessSocket
EXTRN ?IOCP_setSQL@CProcessSocket@@QAEXPAUIOCP_SQL@@@Z:PROC ; CProcessSocket::IOCP_setSQL
EXTRN ?IOCP_Process@CProcessSocket@@SGKPAX@Z:PROC ; CProcessSocket::IOCP_Process
EXTRN ?IOCP_GetFrameData@CProcessSocket@@QAEHPAUIOCP_IO@@U_Socket_Head@@U_Cmpp_Head@@PAEJ@Z:PROC ; CProcessSocket::IOCP_GetFrameData
EXTRN ?SetDlg@CProcessSocket@@QAEXPAVCSmsCenterDlg@@@Z:PROC ; CProcessSocket::SetDlg
EXTRN ?GetBlank_SQL@CKeyList@@QAEPAUIOCP_SQL@@XZ:PROC ; CKeyList::GetBlank_SQL
EXTRN ?Close@CKeyList@@QAEXXZ:PROC ; CKeyList::Close
EXTRN ?Init@CKeyList@@QAEXPAVCSmsCenterDlg@@@Z:PROC ; CKeyList::Init
EXTRN ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z:PROC ; CKeyList::RemoveAt_IO
EXTRN ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z:PROC ; CKeyList::RemoveAt_Key
EXTRN ?GetBlank_IO@CKeyList@@QAEPAUIOCP_IO@@XZ:PROC ; CKeyList::GetBlank_IO
EXTRN ?GetBlank_Key@CKeyList@@QAEPAUIOCP_KEY@@XZ:PROC ; CKeyList::GetBlank_Key
EXTRN ??0CKeyList@@QAE@XZ:PROC ; CKeyList::CKeyList
EXTRN ??1CKeyList@@UAE@XZ:PROC ; CKeyList::~CKeyList
EXTRN ??_ECIOCP@@UAEPAXI@Z:PROC ; CIOCP::`vector deleting destructor'
EXTRN ?ON_TD_StopAll2@CSmsCenterDlg@@QAEXXZ:PROC ; CSmsCenterDlg::ON_TD_StopAll2
EXTRN ?SendFrame@CSmsCenterDlg@@SAHPAUIOCP_IO@@IPAEK@Z:PROC ; CSmsCenterDlg::SendFrame
EXTRN ?AddLog@CSmsCenterDlg@@QAEXPB_WJ@Z:PROC ; CSmsCenterDlg::AddLog
EXTRN @__security_check_cookie@4:PROC
EXTRN ___CxxFrameHandler3:PROC
EXTRN __alloca_probe_16:PROC
EXTRN __chkstk:PROC
EXTRN _memset:PROC
EXTRN ??_7type_info@@6B@:QWORD ; type_info::`vftable'
EXTRN ___security_cookie:DWORD
; COMDAT ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA
_BSS SEGMENT
?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA DQ 01H DUP (?) ; `__local_stdio_printf_options'::`2'::_OptionsStorage
_BSS ENDS
; COMDAT ??_R1A@?0A@EA@CIOCP@@8
rdata$r SEGMENT
??_R1A@?0A@EA@CIOCP@@8 DD FLAT:??_R0?AVCIOCP@@@8 ; CIOCP::`RTTI Base Class Descriptor at (0,-1,0,64)'
DD 00H
DD 00H
DD 0ffffffffH
DD 00H
DD 040H
DD FLAT:??_R3CIOCP@@8
rdata$r ENDS
; COMDAT ??_R2CIOCP@@8
rdata$r SEGMENT
??_R2CIOCP@@8 DD FLAT:??_R1A@?0A@EA@CIOCP@@8 ; CIOCP::`RTTI Base Class Array'
rdata$r ENDS
; COMDAT ??_R3CIOCP@@8
rdata$r SEGMENT
??_R3CIOCP@@8 DD 00H ; CIOCP::`RTTI Class Hierarchy Descriptor'
DD 00H
DD 01H
DD FLAT:??_R2CIOCP@@8
rdata$r ENDS
; COMDAT ??_R0?AVCIOCP@@@8
data$rs SEGMENT
??_R0?AVCIOCP@@@8 DD FLAT:??_7type_info@@6B@ ; CIOCP `RTTI Type Descriptor'
DD 00H
DB '.?AVCIOCP@@', 00H
data$rs ENDS
; COMDAT ??_R4CIOCP@@6B@
rdata$r SEGMENT
??_R4CIOCP@@6B@ DD 00H ; CIOCP::`RTTI Complete Object Locator'
DD 00H
DD 00H
DD FLAT:??_R0?AVCIOCP@@@8
DD FLAT:??_R3CIOCP@@8
rdata$r ENDS
; COMDAT ??_C@_09JBDIPDKJ@MainLoop2@
CONST SEGMENT
??_C@_09JBDIPDKJ@MainLoop2@ DB 'MainLoop2', 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??MainLoop2@CIOCP@@SGKPAX@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??MainLoop2@CIOCP@@SGKPAX@Z@4JA DD 066fH ; `CIOCP::MainLoop2'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0BN@JHDKFMGA@CheckForInvalidSQLConnection@
CONST SEGMENT
??_C@_0BN@JHDKFMGA@CheckForInvalidSQLConnection@ DB 'CheckForInvalidSQLCo'
DB 'nnection', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CG@BOOJGIJM@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$IF?$PP?v?$AA?$CK?$AA?$HP?$AA?$CI?$AA?$AM?$PP?j?$PP?$KI@
CONST SEGMENT
??_C@_1CG@BOOJGIJM@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$IF?$PP?v?$AA?$CK?$AA?$HP?$AA?$CI?$AA?$AM?$PP?j?$PP?$KI@ DB 'S'
DB 00H, 'Q', 00H, 'L', 00H, ':', 00H, '%', 00H, 'd', 00H, ' ', 00H
DB 085H, 08dH, 0f6H, 'e*g', 07fH, 'O(u', 0cH, 0ffH, 0eaH, 081H, 0a8H
DB 'R', 0adH, 'e', 0deH, 08fH, 01H, 0ffH, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CE@HBKAPEML@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?M?$AA?2?$PP?$IF?$PP?v?$AA?$AM?$PP?j?$PP?$KI?$PP?$KN@
CONST SEGMENT
??_C@_1CE@HBKAPEML@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?M?$AA?2?$PP?$IF?$PP?v?$AA?$AM?$PP?j?$PP?$KI?$PP?$KN@ DB 'S'
DB 00H, 'Q', 00H, 'L', 00H, ':', 00H, '%', 00H, 'd', 00H, ' ', 00H
DB 0cdH, 'd\O', 085H, 08dH, 0f6H, 'e', 0cH, 0ffH, 0eaH, 081H, 0a8H
DB 'R', 0adH, 'e', 0deH, 08fH, 01H, 0ffH, 00H, 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??CheckForInvalidSQLConnection@CIOCP@@QAEXXZ@4JA
_DATA SEGMENT
?__LINE__Var@?0??CheckForInvalidSQLConnection@CIOCP@@QAEXXZ@4JA DD 0615H ; `CIOCP::CheckForInvalidSQLConnection'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0O@HLJAGLMK@GetFrame_Cmpp@
CONST SEGMENT
??_C@_0O@HLJAGLMK@GetFrame_Cmpp@ DB 'GetFrame_Cmpp', 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA DD 05a8H ; `CIOCP::GetFrame_Cmpp'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_08KCCFNCFB@GetFrame@
CONST SEGMENT
??_C@_08KCCFNCFB@GetFrame@ DB 'GetFrame', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CE@CMEGDHFN@?$AAn?$AAe?$AAw?$AA?5?$AAP?$AAr?$AAo?$AAc?$AAe?$AAs?$AAs?$AA?5?$AAe?$AAr?$AAr@
CONST SEGMENT
??_C@_1CE@CMEGDHFN@?$AAn?$AAe?$AAw?$AA?5?$AAP?$AAr?$AAo?$AAc?$AAe?$AAs?$AAs?$AA?5?$AAe?$AAr?$AAr@ DB 'n'
DB 00H, 'e', 00H, 'w', 00H, ' ', 00H, 'P', 00H, 'r', 00H, 'o', 00H
DB 'c', 00H, 'e', 00H, 's', 00H, 's', 00H, ' ', 00H, 'e', 00H, 'r'
DB 00H, 'r', 00H, 'o', 00H, 'r', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA DD 0537H ; `CIOCP::GetFrame'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0BC@GHBOFPCG@CompletionRoutine@
CONST SEGMENT
??_C@_0BC@GHBOFPCG@CompletionRoutine@ DB 'CompletionRoutine', 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??CompletionRoutine@CIOCP@@CGKPAX@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??CompletionRoutine@CIOCP@@CGKPAX@Z@4JA DD 03c3H ; `CIOCP::CompletionRoutine'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_08JEEIGPMO@MainLoop@
CONST SEGMENT
??_C@_08JEEIGPMO@MainLoop@ DB 'MainLoop', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CM@OPBDNDPO@?$AAA?$AAc?$AAc?$AAe?$AAp?$AAt?$AA_?$AAE?$AAv?$AAe?$AAn?$AAt?$AA?5?$AAE?$AAr@
CONST SEGMENT
??_C@_1CM@OPBDNDPO@?$AAA?$AAc?$AAc?$AAe?$AAp?$AAt?$AA_?$AAE?$AAv?$AAe?$AAn?$AAt?$AA?5?$AAE?$AAr@ DB 'A'
DB 00H, 'c', 00H, 'c', 00H, 'e', 00H, 'p', 00H, 't', 00H, '_', 00H
DB 'E', 00H, 'v', 00H, 'e', 00H, 'n', 00H, 't', 00H, ' ', 00H, 'E'
DB 00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r', 00H, ':', 00H, '%', 00H
DB 'd', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??MainLoop@CIOCP@@SGKPAX@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??MainLoop@CIOCP@@SGKPAX@Z@4JA DD 036aH ; `CIOCP::MainLoop'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0BK@HCEPDKA@CheckForInvalidConnection@
CONST SEGMENT
??_C@_0BK@HCEPDKA@CheckForInvalidConnection@ DB 'CheckForInvalidConnectio'
DB 'n', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CE@LBHGJMMD@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$KF?$AA6?$AAp?$AAn?$PP?$IF@
CONST SEGMENT
??_C@_1CE@LBHGJMMD@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$KF?$AA6?$AAp?$AAn?$PP?$IF@ DB '['
DB 00H, '%', 00H, 'd', 00H, ']', 00H, '%', 00H, 's', 00H, ':', 00H
DB '%', 00H, 'd', 00H, ' ', 00H, 0a5H, 'c6epenc', 085H, 08dH, 0f6H
DB 'e', 01H, 0ffH, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1CA@MOMGAHJI@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$NO?$PP?$KF?$PP?$IF?$PP?v?$AA?$AB@
CONST SEGMENT
??_C@_1CA@MOMGAHJI@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$NO?$PP?$KF?$PP?$IF?$PP?v?$AA?$AB@ DB '['
DB 00H, '%', 00H, 'd', 00H, ']', 00H, '%', 00H, 's', 00H, ':', 00H
DB '%', 00H, 'd', 00H, ' ', 00H, 0deH, 08fH, 0a5H, 'c', 085H, 08dH
DB 0f6H, 'e', 01H, 0ffH, 00H, 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??CheckForInvalidConnection@CIOCP@@QAEXXZ@4JA
_DATA SEGMENT
?__LINE__Var@?0??CheckForInvalidConnection@CIOCP@@QAEXXZ@4JA DD 026bH ; `CIOCP::CheckForInvalidConnection'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0L@BDAOGBHN@HandleData@
CONST SEGMENT
??_C@_0L@BDAOGBHN@HandleData@ DB 'HandleData', 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z@4JA DD 0167H ; `CIOCP::HandleData'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0O@NGMCBOJM@InitIoContext@
CONST SEGMENT
??_C@_0O@NGMCBOJM@InitIoContext@ DB 'InitIoContext', 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z@4JA
_DATA SEGMENT
?__LINE__Var@?0??InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z@4JA DD 05bH ; `CIOCP::InitIoContext'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
CONST SEGMENT
??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@ DB 'D:\Works\Corps'
DB 'ms_2010\SmsCenter\IOCP\IOCP.cpp', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_05LGELBCGM@Close@
CONST SEGMENT
??_C@_05LGELBCGM@Close@ DB 'Close', 00H ; `string'
CONST ENDS
; COMDAT ?__LINE__Var@?0??Close@CIOCP@@QAEXXZ@4JA
_DATA SEGMENT
?__LINE__Var@?0??Close@CIOCP@@QAEXXZ@4JA DD 023H ; `CIOCP::Close'::`1'::__LINE__Var
_DATA ENDS
; COMDAT ??_7CIOCP@@6B@
CONST SEGMENT
??_7CIOCP@@6B@ DD FLAT:??_R4CIOCP@@6B@ ; CIOCP::`vftable'
DD FLAT:??_ECIOCP@@UAEPAXI@Z
CONST ENDS
_DATA SEGMENT
?g_GUIDAcceptEx@@3U_GUID@@A DD 0b5367df1H ; g_GUIDAcceptEx
DW 0cbacH
DW 011cfH
DB 095H
DB 0caH
DB 00H
DB 080H
DB 05fH
DB 048H
DB 0a1H
DB 092H
?g_GUIDTransmitFile@@3U_GUID@@A DD 0b5367df0H ; g_GUIDTransmitFile
DW 0cbacH
DW 011cfH
DB 095H
DB 0caH
DB 00H
DB 080H
DB 05fH
DB 048H
DB 0a1H
DB 092H
?g_GUIDAcceptExaddrs@@3U_GUID@@A DD 0b5367df2H ; g_GUIDAcceptExaddrs
DW 0cbacH
DW 011cfH
DB 095H
DB 0caH
DB 00H
DB 080H
DB 05fH
DB 048H
DB 0a1H
DB 092H
_DATA ENDS
; COMDAT ??_C@_13JKNELIBG@?$AAT@
CONST SEGMENT
??_C@_13JKNELIBG@?$AAT@ DB 'T', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
CONST SEGMENT
??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@ DB 'L', 00H, 'o', 00H, 'g', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
CONST SEGMENT
??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@ DB 'A', 00H, 'p'
DB 00H, 'p', 00H, 'E', 00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r', 00H
DB 00H, 00H ; `string'
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 0dH
DB 067H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 037H
DB 044H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 02a2H
DW 02b2H
DW 0541H
DW 054aH
DW 06a2H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?CompletionRoutine@CIOCP@@CGKPAX@Z$6 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?CompletionRoutine@CIOCP@@CGKPAX@Z$0
__tryblocktable$?CompletionRoutine@CIOCP@@CGKPAX@Z DD 00H
DD 01H
DD 05H
DD 01H
DD FLAT:__catchsym$?CompletionRoutine@CIOCP@@CGKPAX@Z$6
__ehfuncinfo$?CompletionRoutine@CIOCP@@CGKPAX@Z DD 019930522H
DD 06H
DD FLAT:__unwindtable$?CompletionRoutine@CIOCP@@CGKPAX@Z
DD 01H
DD FLAT:__tryblocktable$?CompletionRoutine@CIOCP@@CGKPAX@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?CompletionRoutine@CIOCP@@CGKPAX@Z DD 0ffffffffH
DD 00H
DD 00H
DD FLAT:__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$2
DD 0ffffffffH
DD 00H
DD 02H
DD FLAT:__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$3
DD 03H
DD FLAT:__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$4
DD 04H
DD FLAT:__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$5
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02fH
DB 03cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 02f8H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$5 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$0
__tryblocktable$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z DD 00H
DD 00H
DD 04H
DD 01H
DD FLAT:__catchsym$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$5
__ehfuncinfo$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z DD 019930522H
DD 05H
DD FLAT:__unwindtable$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z
DD 01H
DD FLAT:__tryblocktable$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$2
DD 02H
DD FLAT:__unwindfunclet$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$3
DD 03H
DD FLAT:__unwindfunclet$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$4
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02fH
DB 03cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 015eH
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$5 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$0
__tryblocktable$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z DD 00H
DD 00H
DD 04H
DD 01H
DD FLAT:__catchsym$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$5
__ehfuncinfo$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z DD 019930522H
DD 05H
DD FLAT:__unwindtable$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z
DD 01H
DD FLAT:__tryblocktable$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$2
DD 02H
DD FLAT:__unwindfunclet$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$3
DD 03H
DD FLAT:__unwindfunclet$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$4
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 03fH
DB 04cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 01ffH
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?MainLoop@CIOCP@@SGKPAX@Z$7 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?MainLoop@CIOCP@@SGKPAX@Z$0
__tryblocktable$?MainLoop@CIOCP@@SGKPAX@Z DD 00H
DD 02H
DD 06H
DD 01H
DD FLAT:__catchsym$?MainLoop@CIOCP@@SGKPAX@Z$7
__ehfuncinfo$?MainLoop@CIOCP@@SGKPAX@Z DD 019930522H
DD 07H
DD FLAT:__unwindtable$?MainLoop@CIOCP@@SGKPAX@Z
DD 01H
DD FLAT:__tryblocktable$?MainLoop@CIOCP@@SGKPAX@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?MainLoop@CIOCP@@SGKPAX@Z DD 0ffffffffH
DD 00H
DD 00H
DD FLAT:__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$2
DD 01H
DD FLAT:__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$3
DD 0ffffffffH
DD 00H
DD 03H
DD FLAT:__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$4
DD 04H
DD FLAT:__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$5
DD 05H
DD FLAT:__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$6
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 010H
DW 0240H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 0dH
DB 0aaH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 0dH
DB 09bH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 0d1H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 088H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 065H
DB 072H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 04e5H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$12 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$2
__catchsym$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$11 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$0
__ehfuncinfo$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z DD 019930522H
DD 0bH
DD FLAT:__unwindtable$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z
DD 02H
DD FLAT:__tryblocktable$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__tryblocktable$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z DD 01H
DD 02H
DD 06H
DD 01H
DD FLAT:__catchsym$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$11
DD 00H
DD 06H
DD 0aH
DD 01H
DD FLAT:__catchsym$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$12
__unwindtable$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z DD 0ffffffffH
DD 00H
DD 00H
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$4
DD 00H
DD 00H
DD 03H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$5
DD 04H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$6
DD 05H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$7
DD 0ffffffffH
DD 00H
DD 07H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$8
DD 08H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$9
DD 09H
DD FLAT:__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$10
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02fH
DB 03cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 023dH
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$5 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$0
__tryblocktable$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z DD 00H
DD 00H
DD 04H
DD 01H
DD FLAT:__catchsym$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$5
__ehfuncinfo$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z DD 019930522H
DD 05H
DD FLAT:__unwindtable$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z
DD 01H
DD FLAT:__tryblocktable$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$2
DD 02H
DD FLAT:__unwindfunclet$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$3
DD 03H
DD FLAT:__unwindfunclet$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$4
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02fH
DB 03cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 0293H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?Close@CIOCP@@QAEXXZ$5 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?Close@CIOCP@@QAEXXZ$0
__tryblocktable$?Close@CIOCP@@QAEXXZ DD 00H
DD 00H
DD 04H
DD 01H
DD FLAT:__catchsym$?Close@CIOCP@@QAEXXZ$5
__ehfuncinfo$?Close@CIOCP@@QAEXXZ DD 019930522H
DD 05H
DD FLAT:__unwindtable$?Close@CIOCP@@QAEXXZ
DD 01H
DD FLAT:__tryblocktable$?Close@CIOCP@@QAEXXZ
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?Close@CIOCP@@QAEXXZ DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?Close@CIOCP@@QAEXXZ$2
DD 02H
DD FLAT:__unwindfunclet$?Close@CIOCP@@QAEXXZ$3
DD 03H
DD FLAT:__unwindfunclet$?Close@CIOCP@@QAEXXZ$4
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02fH
DB 03cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 0125H
DW 01f7H
DW 03ebH
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?CheckForInvalidConnection@CIOCP@@QAEXXZ$5 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?CheckForInvalidConnection@CIOCP@@QAEXXZ$0
__tryblocktable$?CheckForInvalidConnection@CIOCP@@QAEXXZ DD 00H
DD 00H
DD 04H
DD 01H
DD FLAT:__catchsym$?CheckForInvalidConnection@CIOCP@@QAEXXZ$5
__ehfuncinfo$?CheckForInvalidConnection@CIOCP@@QAEXXZ DD 019930522H
DD 05H
DD FLAT:__unwindtable$?CheckForInvalidConnection@CIOCP@@QAEXXZ
DD 01H
DD FLAT:__tryblocktable$?CheckForInvalidConnection@CIOCP@@QAEXXZ
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?CheckForInvalidConnection@CIOCP@@QAEXXZ DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?CheckForInvalidConnection@CIOCP@@QAEXXZ$2
DD 02H
DD FLAT:__unwindfunclet$?CheckForInvalidConnection@CIOCP@@QAEXXZ$3
DD 03H
DD FLAT:__unwindfunclet$?CheckForInvalidConnection@CIOCP@@QAEXXZ$4
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 02fH
DB 03cH
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 02e2H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$5 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$0
__tryblocktable$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ DD 00H
DD 00H
DD 04H
DD 01H
DD FLAT:__catchsym$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$5
__ehfuncinfo$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ DD 019930522H
DD 05H
DD FLAT:__unwindtable$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ
DD 01H
DD FLAT:__tryblocktable$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
DD 01H
DD FLAT:__unwindfunclet$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$2
DD 02H
DD FLAT:__unwindfunclet$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$3
DD 03H
DD FLAT:__unwindfunclet$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$4
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 037H
DB 044H
voltbl ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 023H
DW 0197H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__catchsym$?MainLoop2@CIOCP@@SGKPAX@Z$6 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$?MainLoop2@CIOCP@@SGKPAX@Z$0
__tryblocktable$?MainLoop2@CIOCP@@SGKPAX@Z DD 00H
DD 01H
DD 05H
DD 01H
DD FLAT:__catchsym$?MainLoop2@CIOCP@@SGKPAX@Z$6
__ehfuncinfo$?MainLoop2@CIOCP@@SGKPAX@Z DD 019930522H
DD 06H
DD FLAT:__unwindtable$?MainLoop2@CIOCP@@SGKPAX@Z
DD 01H
DD FLAT:__tryblocktable$?MainLoop2@CIOCP@@SGKPAX@Z
DD 2 DUP(00H)
DD 00H
DD 00H
__unwindtable$?MainLoop2@CIOCP@@SGKPAX@Z DD 0ffffffffH
DD 00H
DD 00H
DD FLAT:__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$2
DD 0ffffffffH
DD 00H
DD 02H
DD FLAT:__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$3
DD 03H
DD FLAT:__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$4
DD 04H
DD FLAT:__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$5
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 019H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$??1CIOCP@@UAE@XZ DD 0ffffffffH
DD FLAT:__unwindfunclet$??1CIOCP@@UAE@XZ$0
__ehfuncinfo$??1CIOCP@@UAE@XZ DD 019930522H
DD 01H
DD FLAT:__unwindtable$??1CIOCP@@UAE@XZ
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 019H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$??0CIOCP@@QAE@XZ DD 0ffffffffH
DD FLAT:__unwindfunclet$??0CIOCP@@QAE@XZ$0
__ehfuncinfo$??0CIOCP@@QAE@XZ DD 019930522H
DD 01H
DD FLAT:__unwindtable$??0CIOCP@@QAE@XZ
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 00H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$??1AutoCoInitializeEx@@QAE@XZ DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 016H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z DD 0ffffffffH
DD FLAT:__unwindfunclet$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z$0
__ehfuncinfo$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z DD 019930522H
DD 01H
DD FLAT:__unwindtable$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 00H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 016H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ DD 0ffffffffH
DD FLAT:__unwindfunclet$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ$0
__ehfuncinfo$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ DD 019930522H
DD 01H
DD FLAT:__unwindtable$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 016H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z DD 0ffffffffH
DD FLAT:__unwindfunclet$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z$0
__ehfuncinfo$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z DD 019930522H
DD 01H
DD FLAT:__unwindtable$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 00H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 016H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z DD 0ffffffffH
DD FLAT:__unwindfunclet$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z$0
__ehfuncinfo$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z DD 019930522H
DD 01H
DD FLAT:__unwindtable$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 00H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 016H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__unwindtable$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ DD 0ffffffffH
DD FLAT:__unwindfunclet$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ$0
__ehfuncinfo$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ DD 019930522H
DD 01H
DD FLAT:__unwindtable$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 09H
voltbl ENDS
; COMDAT xdata$x
xdata$x SEGMENT
__ehfuncinfo$?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z DD 019930522H
DD 00H
DD 00H
DD 2 DUP(00H)
DD 2 DUP(00H)
DD 00H
DD 04H
xdata$x ENDS
; Function compile flags: /Odtp /ZI
; COMDAT ??_GCIOCP@@UAEPAXI@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
___flags$ = 8 ; size = 4
??_GCIOCP@@UAEPAXI@Z PROC ; CIOCP::`scalar deleting destructor', COMDAT
; _this$ = ecx
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ??1CIOCP@@UAE@XZ ; CIOCP::~CIOCP
00014 8b 45 08 mov eax, DWORD PTR ___flags$[ebp]
00017 83 e0 01 and eax, 1
0001a 74 11 je SHORT $LN2@scalar
0001c 68 e8 00 00 00 push 232 ; 000000e8H
00021 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00024 50 push eax
00025 e8 00 00 00 00 call ??3@YAXPAXI@Z ; operator delete
0002a 83 c4 08 add esp, 8
$LN2@scalar:
0002d 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00030 5f pop edi
00031 5e pop esi
00032 5b pop ebx
00033 8b e5 mov esp, ebp
00035 5d pop ebp
00036 c2 04 00 ret 4
??_GCIOCP@@UAEPAXI@Z ENDP ; CIOCP::`scalar deleting destructor'
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?GetAddrAndPort@CIOCP@@AAEHPADQADAAI@Z
_TEXT SEGMENT
_addr$ = -32 ; size = 16
_lp_buf$ = -16 ; size = 4
_len$ = -12 ; size = 4
_this$ = -8 ; size = 4
__$ArrayPad$ = -4 ; size = 4
_buf$ = 8 ; size = 4
_ip$ = 12 ; size = 4
_port$ = 16 ; size = 4
?GetAddrAndPort@CIOCP@@AAEHPADQADAAI@Z PROC ; CIOCP::GetAddrAndPort, COMDAT
; _this$ = ecx
; 719 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 60 sub esp, 96 ; 00000060H
00006 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0000b 33 c5 xor eax, ebp
0000d 89 45 fc mov DWORD PTR __$ArrayPad$[ebp], eax
00010 53 push ebx
00011 56 push esi
00012 57 push edi
00013 89 4d f8 mov DWORD PTR _this$[ebp], ecx
; 720 : int len = BUFFER_SIZE - sizeof( SOCKADDR_IN ) - 16;
00016 c7 45 f4 b0 dd
06 00 mov DWORD PTR _len$[ebp], 449968 ; 0006ddb0H
; 721 : char *lp_buf = buf + len; //ֱ<>Ӷ<EFBFBD>ȡԶ<C8A1>˵<EFBFBD>ַ
0001d 8b 45 08 mov eax, DWORD PTR _buf$[ebp]
00020 03 45 f4 add eax, DWORD PTR _len$[ebp]
00023 89 45 f0 mov DWORD PTR _lp_buf$[ebp], eax
; 722 :
; 723 : SOCKADDR_IN addr;
; 724 :
; 725 : memcpy( &addr, lp_buf, sizeof( SOCKADDR_IN ) );
00026 6a 10 push 16 ; 00000010H
00028 8b 45 f0 mov eax, DWORD PTR _lp_buf$[ebp]
0002b 50 push eax
0002c 8d 4d e0 lea ecx, DWORD PTR _addr$[ebp]
0002f 51 push ecx
00030 e8 00 00 00 00 call _memcpy
00035 83 c4 0c add esp, 12 ; 0000000cH
; 726 :
; 727 : port = ntohl( addr.sin_port );
00038 0f b7 45 e2 movzx eax, WORD PTR _addr$[ebp+2]
0003c 50 push eax
0003d ff 15 00 00 00
00 call DWORD PTR __imp__ntohl@4
00043 8b 4d 10 mov ecx, DWORD PTR _port$[ebp]
00046 89 01 mov DWORD PTR [ecx], eax
; 728 : strcpy( ip, inet_ntoa( addr.sin_addr ) );
00048 8b 45 e4 mov eax, DWORD PTR _addr$[ebp+4]
0004b 50 push eax
0004c ff 15 00 00 00
00 call DWORD PTR __imp__inet_ntoa@4
00052 50 push eax
00053 8b 4d 0c mov ecx, DWORD PTR _ip$[ebp]
00056 51 push ecx
00057 e8 00 00 00 00 call _strcpy
0005c 83 c4 08 add esp, 8
; 729 :
; 730 : return TRUE;
0005f b8 01 00 00 00 mov eax, 1
; 731 : }
00064 5f pop edi
00065 5e pop esi
00066 5b pop ebx
00067 8b 4d fc mov ecx, DWORD PTR __$ArrayPad$[ebp]
0006a 33 cd xor ecx, ebp
0006c e8 00 00 00 00 call @__security_check_cookie@4
00071 8b e5 mov esp, ebp
00073 5d pop ebp
00074 c2 0c 00 ret 12 ; 0000000cH
?GetAddrAndPort@CIOCP@@AAEHPADQADAAI@Z ENDP ; CIOCP::GetAddrAndPort
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?CompletionRoutine@CIOCP@@CGKPAX@Z
_TEXT SEGMENT
tv217 = -6700 ; size = 4
tv219 = -6696 ; size = 4
tv66 = -6696 ; size = 4
tv323 = -6692 ; size = 4
tv287 = -6692 ; size = 4
tv282 = -6692 ; size = 4
tv258 = -6692 ; size = 4
tv220 = -6692 ; size = 4
tv200 = -6692 ; size = 4
tv185 = -6692 ; size = 4
tv183 = -6692 ; size = 4
tv178 = -6692 ; size = 4
tv140 = -6692 ; size = 4
tv135 = -6692 ; size = 4
$T2 = -6688 ; size = 4
$T3 = -6684 ; size = 4
$T4 = -6680 ; size = 4
$T5 = -6676 ; size = 4
$T6 = -6672 ; size = 4
_NXlog$7 = -6156 ; size = 6056
_pBB$8 = -100 ; size = 4
_pAA$9 = -96 ; size = 4
_remote_len$10 = -92 ; size = 4
_local_len$11 = -88 ; size = 4
_remote$12 = -84 ; size = 4
_local$13 = -80 ; size = 4
_lp_new_key$14 = -76 ; size = 4
_lp_ov$15 = -72 ; size = 4
_lp_io$16 = -68 ; size = 4
_lp_key$17 = -64 ; size = 4
_hRet$18 = -60 ; size = 4
_dwBytes$19 = -56 ; size = 4
_bRet$20 = -52 ; size = 4
_nRet$21 = -48 ; size = 4
_lp_this$22 = -44 ; size = 4
_AutoCoInit$23 = -37 ; size = 1
__lpa$ = -36 ; size = 4
__acp$ = -28 ; size = 4
__convert$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_param$ = 8 ; size = 4
?CompletionRoutine@CIOCP@@CGKPAX@Z PROC ; CIOCP::CompletionRoutine, COMDAT
; 963 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?CompletionRoutine@CIOCP@@CGKPAX@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 1c 1a 00 00 mov eax, 6684 ; 00001a1cH
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
; 964 : USES_CONVERSION;
00036 e8 00 00 00 00 call ?_AtlGetConversionACP@ATL@@YGIXZ ; ATL::_AtlGetConversionACP
0003b 89 45 e4 mov DWORD PTR __acp$[ebp], eax
; 965 : try
0003e c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 966 : {
; 967 : AutoCoInitializeEx AutoCoInit; //<2F>Զ<EFBFBD><D4B6><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Com<6F><6D><EFBFBD><EFBFBD>
00045 8d 4d db lea ecx, DWORD PTR _AutoCoInit$23[ebp]
00048 e8 00 00 00 00 call ??0AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::AutoCoInitializeEx
0004d c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
; 968 :
; 969 : CIOCP* lp_this = (CIOCP*)lp_param;
00051 8b 45 08 mov eax, DWORD PTR _lp_param$[ebp]
00054 89 45 d4 mov DWORD PTR _lp_this$22[ebp], eax
; 970 :
; 971 : int nRet;
; 972 : BOOL bRet;
; 973 : DWORD dwBytes = 0;
00057 c7 45 c8 00 00
00 00 mov DWORD PTR _dwBytes$19[ebp], 0
; 974 : HANDLE hRet;
; 975 :
; 976 : IOCP_KEY_PTR lp_key = NULL;
0005e c7 45 c0 00 00
00 00 mov DWORD PTR _lp_key$17[ebp], 0
; 977 : IOCP_IO_PTR lp_io = NULL;
00065 c7 45 bc 00 00
00 00 mov DWORD PTR _lp_io$16[ebp], 0
; 978 : LPWSAOVERLAPPED lp_ov = NULL;
0006c c7 45 b8 00 00
00 00 mov DWORD PTR _lp_ov$15[ebp], 0
; 979 : IOCP_KEY_PTR lp_new_key = NULL;
00073 c7 45 b4 00 00
00 00 mov DWORD PTR _lp_new_key$14[ebp], 0
$LN2@Completion:
; 980 :
; 981 : while( TRUE )
0007a b8 01 00 00 00 mov eax, 1
0007f 85 c0 test eax, eax
00081 0f 84 2e 05 00
00 je $LN3@Completion
; 982 : {
; 983 : bRet = GetQueuedCompletionStatus( lp_this->m_h_iocp, &dwBytes, (PULONG_PTR)&lp_key, &lp_ov, INFINITE );
00087 6a ff push -1
00089 8d 45 b8 lea eax, DWORD PTR _lp_ov$15[ebp]
0008c 50 push eax
0008d 8d 4d c0 lea ecx, DWORD PTR _lp_key$17[ebp]
00090 51 push ecx
00091 8d 55 c8 lea edx, DWORD PTR _dwBytes$19[ebp]
00094 52 push edx
00095 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
00098 8b 48 28 mov ecx, DWORD PTR [eax+40]
0009b 51 push ecx
0009c ff 15 00 00 00
00 call DWORD PTR __imp__GetQueuedCompletionStatus@20
000a2 89 45 cc mov DWORD PTR _bRet$20[ebp], eax
; 984 : if ( lp_this->m_bQuit ) //<2F>յ<EFBFBD><D5B5>˳<EFBFBD><CBB3>ź<EFBFBD>
000a5 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
000a8 83 b8 e4 00 00
00 00 cmp DWORD PTR [eax+228], 0
000af 74 21 je SHORT $LN7@Completion
; 985 : return 0;
000b1 c7 85 f0 e5 ff
ff 00 00 00 00 mov DWORD PTR $T6[ebp], 0
000bb c6 45 fc 00 mov BYTE PTR __$EHRec$[ebp+12], 0
000bf 8d 4d db lea ecx, DWORD PTR _AutoCoInit$23[ebp]
000c2 e8 00 00 00 00 call ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
000c7 8b 85 f0 e5 ff
ff mov eax, DWORD PTR $T6[ebp]
000cd e9 bc 05 00 00 jmp $LN1@Completion
$LN7@Completion:
; 986 : lp_io = (IOCP_IO_PTR)lp_ov;
000d2 8b 45 b8 mov eax, DWORD PTR _lp_ov$15[ebp]
000d5 89 45 bc mov DWORD PTR _lp_io$16[ebp], eax
; 987 : if ( lp_io && !AfxIsValidAddress(&lp_io->operation,4,true) ) //<2F>յ<EFBFBD><D5B5><EFBFBD>lp_io<69><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
000d8 83 7d bc 00 cmp DWORD PTR _lp_io$16[ebp], 0
000dc 74 16 je SHORT $LN8@Completion
000de 6a 01 push 1
000e0 6a 04 push 4
000e2 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
000e5 83 c0 18 add eax, 24 ; 00000018H
000e8 50 push eax
000e9 e8 00 00 00 00 call ?AfxIsValidAddress@@YGHPBXIH@Z ; AfxIsValidAddress
000ee 85 c0 test eax, eax
000f0 75 02 jne SHORT $LN8@Completion
; 988 : continue;
000f2 eb 86 jmp SHORT $LN2@Completion
$LN8@Completion:
; 989 : if ( (bRet==0 || dwBytes ==0 ) && lp_io && lp_io->operation== IOCP_WRITE ) //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>Write
000f4 83 7d cc 00 cmp DWORD PTR _bRet$20[ebp], 0
000f8 74 06 je SHORT $LN10@Completion
000fa 83 7d c8 00 cmp DWORD PTR _dwBytes$19[ebp], 0
000fe 75 26 jne SHORT $LN9@Completion
$LN10@Completion:
00100 83 7d bc 00 cmp DWORD PTR _lp_io$16[ebp], 0
00104 74 20 je SHORT $LN9@Completion
00106 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00109 83 78 18 03 cmp DWORD PTR [eax+24], 3
0010d 75 17 jne SHORT $LN9@Completion
; 990 : {
; 991 : lp_this->HandleData( lp_io, lp_key, IOCP_COMPLETE_WRITE );
0010f 6a 03 push 3
00111 8b 45 c0 mov eax, DWORD PTR _lp_key$17[ebp]
00114 50 push eax
00115 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00118 51 push ecx
00119 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
0011c e8 00 00 00 00 call ?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z ; CIOCP::HandleData
; 992 : continue;
00121 e9 54 ff ff ff jmp $LN2@Completion
$LN9@Completion:
; 993 : }
; 994 : if( bRet == 0 )
00126 83 7d cc 00 cmp DWORD PTR _bRet$20[ebp], 0
0012a 75 61 jne SHORT $LN11@Completion
; 995 : {
; 996 : if ( lp_key && lp_io && lp_io->lRandID>0 )
0012c 83 7d c0 00 cmp DWORD PTR _lp_key$17[ebp], 0
00130 74 4a je SHORT $LN12@Completion
00132 83 7d bc 00 cmp DWORD PTR _lp_io$16[ebp], 0
00136 74 44 je SHORT $LN12@Completion
00138 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
0013b 83 78 20 00 cmp DWORD PTR [eax+32], 0
0013f 7e 3b jle SHORT $LN12@Completion
; 997 : {
; 998 : lp_this->m_KeyList.RemoveAt_IO( lp_io );
00141 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
00144 83 c0 08 add eax, 8
00147 89 85 dc e5 ff
ff mov DWORD PTR tv135[ebp], eax
0014d 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00150 51 push ecx
00151 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv135[ebp]
00157 e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 999 : lp_this->m_KeyList.RemoveAt_Key( lp_key );
0015c 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
0015f 83 c0 08 add eax, 8
00162 89 85 dc e5 ff
ff mov DWORD PTR tv140[ebp], eax
00168 8b 4d c0 mov ecx, DWORD PTR _lp_key$17[ebp]
0016b 51 push ecx
0016c 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv140[ebp]
00172 e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 1000 : continue;
00177 e9 fe fe ff ff jmp $LN2@Completion
$LN12@Completion:
; 1001 : }
; 1002 : if ( (!lp_key && !lp_io) )
0017c 83 7d c0 00 cmp DWORD PTR _lp_key$17[ebp], 0
00180 75 0b jne SHORT $LN11@Completion
00182 83 7d bc 00 cmp DWORD PTR _lp_io$16[ebp], 0
00186 75 05 jne SHORT $LN11@Completion
; 1003 : {
; 1004 : continue;
00188 e9 ed fe ff ff jmp $LN2@Completion
$LN11@Completion:
; 1005 : //return 0; //<2F><><EFBFBD>˳<EFBFBD>
; 1006 : }
; 1007 : //cout << "GetQueuedCompletionStatus() failed: " << GetLastError() << endl;
; 1008 : //continue;
; 1009 : }
; 1010 : if( NULL == lp_key )
0018d 83 7d c0 00 cmp DWORD PTR _lp_key$17[ebp], 0
00191 75 05 jne SHORT $LN14@Completion
; 1011 : {
; 1012 : continue;
00193 e9 e2 fe ff ff jmp $LN2@Completion
$LN14@Completion:
; 1013 : //return 0;
; 1014 : }
; 1015 : if( lp_io == NULL )
00198 83 7d bc 00 cmp DWORD PTR _lp_io$16[ebp], 0
0019c 75 05 jne SHORT $LN15@Completion
; 1016 : {
; 1017 : //cout<<"recv a null CIoContext!"<<endl;
; 1018 : continue;
0019e e9 d7 fe ff ff jmp $LN2@Completion
$LN15@Completion:
; 1019 : }
; 1020 :
; 1021 : if ( lp_io&& lp_io->operation!=IOCP_WRITE && (lp_io< &lp_this->m_KeyList.m_IO[0] || lp_io>&lp_this->m_KeyList.m_IO[MAX_LOGINUSER]) )
001a3 83 7d bc 00 cmp DWORD PTR _lp_io$16[ebp], 0
001a7 74 37 je SHORT $LN16@Completion
001a9 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
001ac 83 78 18 03 cmp DWORD PTR [eax+24], 3
001b0 74 2e je SHORT $LN16@Completion
001b2 b8 b0 df 06 00 mov eax, 450480 ; 0006dfb0H
001b7 6b c8 00 imul ecx, eax, 0
001ba 8b 55 d4 mov edx, DWORD PTR _lp_this$22[ebp]
001bd 03 4a 14 add ecx, DWORD PTR [edx+20]
001c0 39 4d bc cmp DWORD PTR _lp_io$16[ebp], ecx
001c3 72 16 jb SHORT $LN17@Completion
001c5 b8 b0 df 06 00 mov eax, 450480 ; 0006dfb0H
001ca 69 c8 e8 03 00
00 imul ecx, eax, 1000
001d0 8b 55 d4 mov edx, DWORD PTR _lp_this$22[ebp]
001d3 03 4a 14 add ecx, DWORD PTR [edx+20]
001d6 39 4d bc cmp DWORD PTR _lp_io$16[ebp], ecx
001d9 76 05 jbe SHORT $LN16@Completion
$LN17@Completion:
; 1022 : continue;
001db e9 9a fe ff ff jmp $LN2@Completion
$LN16@Completion:
; 1023 : if ( lp_key && (lp_key< &lp_this->m_KeyList.m_Key[0] || lp_key>&lp_this->m_KeyList.m_Key[MAX_LOGINUSER]) )
001e0 83 7d c0 00 cmp DWORD PTR _lp_key$17[ebp], 0
001e4 74 2e je SHORT $LN18@Completion
001e6 b8 08 00 00 00 mov eax, 8
001eb 6b c8 00 imul ecx, eax, 0
001ee 8b 55 d4 mov edx, DWORD PTR _lp_this$22[ebp]
001f1 03 4a 0c add ecx, DWORD PTR [edx+12]
001f4 39 4d c0 cmp DWORD PTR _lp_key$17[ebp], ecx
001f7 72 16 jb SHORT $LN19@Completion
001f9 b8 08 00 00 00 mov eax, 8
001fe 69 c8 e8 03 00
00 imul ecx, eax, 1000
00204 8b 55 d4 mov edx, DWORD PTR _lp_this$22[ebp]
00207 03 4a 0c add ecx, DWORD PTR [edx+12]
0020a 39 4d c0 cmp DWORD PTR _lp_key$17[ebp], ecx
0020d 76 05 jbe SHORT $LN18@Completion
$LN19@Completion:
; 1024 : continue;
0020f e9 66 fe ff ff jmp $LN2@Completion
$LN18@Completion:
; 1025 :
; 1026 : if( ( IOCP_ACCEPT != lp_io->operation ) && ( 0 == dwBytes ) )
00214 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00217 83 78 18 01 cmp DWORD PTR [eax+24], 1
0021b 74 4e je SHORT $LN20@Completion
0021d 83 7d c8 00 cmp DWORD PTR _dwBytes$19[ebp], 0
00221 75 48 jne SHORT $LN20@Completion
; 1027 : {
; 1028 : closesocket( lp_io->socket );
00223 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00226 8b 48 14 mov ecx, DWORD PTR [eax+20]
00229 51 push ecx
0022a ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 1029 : //lp_this->m_io_group.RemoveAt( lp_io );
; 1030 : //lp_this->m_key_group.RemoveAt( lp_key );
; 1031 : lp_this->m_KeyList.RemoveAt_IO( lp_io );
00230 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
00233 83 c0 08 add eax, 8
00236 89 85 dc e5 ff
ff mov DWORD PTR tv178[ebp], eax
0023c 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
0023f 51 push ecx
00240 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv178[ebp]
00246 e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 1032 : lp_this->m_KeyList.RemoveAt_Key( lp_key );
0024b 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
0024e 83 c0 08 add eax, 8
00251 89 85 dc e5 ff
ff mov DWORD PTR tv183[ebp], eax
00257 8b 4d c0 mov ecx, DWORD PTR _lp_key$17[ebp]
0025a 51 push ecx
0025b 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv183[ebp]
00261 e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 1033 : //MSG("һ<><D2BB><EFBFBD>û<EFBFBD><C3BB>˳<EFBFBD><CBB3><EFBFBD>");
; 1034 : continue;
00266 e9 0f fe ff ff jmp $LN2@Completion
$LN20@Completion:
; 1035 : }
; 1036 :
; 1037 : switch( lp_io->operation )
0026b 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
0026e 8b 48 18 mov ecx, DWORD PTR [eax+24]
00271 89 8d dc e5 ff
ff mov DWORD PTR tv185[ebp], ecx
00277 83 bd dc e5 ff
ff 01 cmp DWORD PTR tv185[ebp], 1
0027e 74 1f je SHORT $LN21@Completion
00280 83 bd dc e5 ff
ff 02 cmp DWORD PTR tv185[ebp], 2
00287 0f 84 b1 02 00
00 je $LN29@Completion
0028d 83 bd dc e5 ff
ff 03 cmp DWORD PTR tv185[ebp], 3
00294 0f 84 f2 02 00
00 je $LN32@Completion
0029a e9 0c 03 00 00 jmp $LN34@Completion
$LN21@Completion:
; 1038 : {
; 1039 : case IOCP_ACCEPT:
; 1040 : {
; 1041 : //cout<<"<22><><EFBFBD>յ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
; 1042 : lp_io->state = SOCKET_STATE_CONNECT;
0029f 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
002a2 c7 40 1c 01 00
00 00 mov DWORD PTR [eax+28], 1
; 1043 : if( dwBytes > 0 )
002a9 83 7d c8 00 cmp DWORD PTR _dwBytes$19[ebp], 0
002ad 76 0a jbe SHORT $LN22@Completion
; 1044 : {
; 1045 : lp_io->state = SOCKET_STATE_CONNECT_AND_READ;
002af 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
002b2 c7 40 1c 02 00
00 00 mov DWORD PTR [eax+28], 2
$LN22@Completion:
; 1046 : //cout<<"<22><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
; 1047 : }
; 1048 :
; 1049 : //ȡIP<49><50>ַ<EFBFBD><D6B7><EFBFBD>˿<EFBFBD><CBBF><EFBFBD>Ϣ
; 1050 : SOCKADDR *local=NULL;
002b9 c7 45 b0 00 00
00 00 mov DWORD PTR _local$13[ebp], 0
; 1051 : SOCKADDR *remote=NULL;
002c0 c7 45 ac 00 00
00 00 mov DWORD PTR _remote$12[ebp], 0
; 1052 : int local_len;
; 1053 : int remote_len;
; 1054 : lp_this->lpGetAcceptExSockAddrs(lp_io->buf,0,sizeof(SOCKADDR_IN) + 16,sizeof(SOCKADDR_IN) + 16,&local,&local_len,&remote,&remote_len);
002c7 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
002ca 8b 48 48 mov ecx, DWORD PTR [eax+72]
002cd 89 8d dc e5 ff
ff mov DWORD PTR tv200[ebp], ecx
002d3 8d 55 a4 lea edx, DWORD PTR _remote_len$10[ebp]
002d6 52 push edx
002d7 8d 45 ac lea eax, DWORD PTR _remote$12[ebp]
002da 50 push eax
002db 8d 4d a8 lea ecx, DWORD PTR _local_len$11[ebp]
002de 51 push ecx
002df 8d 55 b0 lea edx, DWORD PTR _local$13[ebp]
002e2 52 push edx
002e3 6a 20 push 32 ; 00000020H
002e5 6a 20 push 32 ; 00000020H
002e7 6a 00 push 0
002e9 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
002ec 05 e0 01 00 00 add eax, 480 ; 000001e0H
002f1 50 push eax
002f2 ff 95 dc e5 ff
ff call DWORD PTR tv200[ebp]
; 1055 : SOCKADDR_IN * pAA = ((SOCKADDR_IN *)local);
002f8 8b 45 b0 mov eax, DWORD PTR _local$13[ebp]
002fb 89 45 a0 mov DWORD PTR _pAA$9[ebp], eax
; 1056 : SOCKADDR_IN * pBB = ((SOCKADDR_IN *)remote);
002fe 8b 45 ac mov eax, DWORD PTR _remote$12[ebp]
00301 89 45 9c mov DWORD PTR _pBB$8[ebp], eax
; 1057 : #ifdef UNICODE
; 1058 : _tcscpy(lp_io->m_szIP,A2W(inet_ntoa(pBB->sin_addr)));
00304 8b 45 9c mov eax, DWORD PTR _pBB$8[ebp]
00307 8b 48 04 mov ecx, DWORD PTR [eax+4]
0030a 51 push ecx
0030b ff 15 00 00 00
00 call DWORD PTR __imp__inet_ntoa@4
00311 89 45 dc mov DWORD PTR __lpa$[ebp], eax
00314 83 7d dc 00 cmp DWORD PTR __lpa$[ebp], 0
00318 75 0c jne SHORT $LN38@Completion
0031a c7 85 dc e5 ff
ff 00 00 00 00 mov DWORD PTR tv220[ebp], 0
00324 eb 64 jmp SHORT $LN39@Completion
$LN38@Completion:
00326 8b 55 dc mov edx, DWORD PTR __lpa$[ebp]
00329 52 push edx
0032a e8 00 00 00 00 call _strlen
0032f 83 c4 04 add esp, 4
00332 83 c0 01 add eax, 1
00335 89 45 e8 mov DWORD PTR __convert$[ebp], eax
00338 81 7d e8 ff ff
ff 3f cmp DWORD PTR __convert$[ebp], 1073741823 ; 3fffffffH
0033f 7e 0c jle SHORT $LN36@Completion
00341 c7 85 d8 e5 ff
ff 00 00 00 00 mov DWORD PTR tv219[ebp], 0
0034b eb 31 jmp SHORT $LN37@Completion
$LN36@Completion:
0034d 8b 45 e8 mov eax, DWORD PTR __convert$[ebp]
00350 d1 e0 shl eax, 1
00352 e8 00 00 00 00 call __alloca_probe_16
00357 89 a5 d4 e5 ff
ff mov DWORD PTR tv217[ebp], esp
0035d 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00360 8b 45 e4 mov eax, DWORD PTR __acp$[ebp]
00363 50 push eax
00364 8b 4d e8 mov ecx, DWORD PTR __convert$[ebp]
00367 51 push ecx
00368 8b 55 dc mov edx, DWORD PTR __lpa$[ebp]
0036b 52 push edx
0036c 8b 85 d4 e5 ff
ff mov eax, DWORD PTR tv217[ebp]
00372 50 push eax
00373 e8 00 00 00 00 call ?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z ; AtlA2WHelper
00378 89 85 d8 e5 ff
ff mov DWORD PTR tv219[ebp], eax
$LN37@Completion:
0037e 8b 8d d8 e5 ff
ff mov ecx, DWORD PTR tv219[ebp]
00384 89 8d dc e5 ff
ff mov DWORD PTR tv220[ebp], ecx
$LN39@Completion:
0038a 8b 95 dc e5 ff
ff mov edx, DWORD PTR tv220[ebp]
00390 52 push edx
00391 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00394 83 c0 30 add eax, 48 ; 00000030H
00397 50 push eax
00398 e8 00 00 00 00 call _wcscpy
0039d 83 c4 08 add esp, 8
; 1059 : #else
; 1060 : strcpy(lp_io->m_szIP,inet_ntoa(pBB->sin_addr));
; 1061 : #endif
; 1062 : lp_io->m_lPort = ntohs(pBB->sin_port);
003a0 8b 45 9c mov eax, DWORD PTR _pBB$8[ebp]
003a3 0f b7 48 02 movzx ecx, WORD PTR [eax+2]
003a7 51 push ecx
003a8 ff 15 00 00 00
00 call DWORD PTR __imp__ntohs@4
003ae 0f b7 d0 movzx edx, ax
003b1 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
003b4 89 50 70 mov DWORD PTR [eax+112], edx
; 1063 : lp_io->m_lLocalPort = ntohs(pAA->sin_port);
003b7 8b 45 a0 mov eax, DWORD PTR _pAA$9[ebp]
003ba 0f b7 48 02 movzx ecx, WORD PTR [eax+2]
003be 51 push ecx
003bf ff 15 00 00 00
00 call DWORD PTR __imp__ntohs@4
003c5 0f b7 d0 movzx edx, ax
003c8 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
003cb 89 50 74 mov DWORD PTR [eax+116], edx
; 1064 : #ifdef UNICODE
; 1065 :
; 1066 : if (lp_io->m_lLocalPort == DEFAULT_SERVERPORT_UNI )
003ce 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
003d1 81 78 74 fe 07
00 00 cmp DWORD PTR [eax+116], 2046 ; 000007feH
003d8 75 25 jne SHORT $LN23@Completion
; 1067 : #else
; 1068 : if (lp_io->m_lLocalPort == DEFAULT_LISTENPORT )
; 1069 : #endif
; 1070 : {
; 1071 : nRet = setsockopt(
003da 6a 04 push 4
003dc 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
003df 83 c0 2c add eax, 44 ; 0000002cH
003e2 50 push eax
003e3 68 0b 70 00 00 push 28683 ; 0000700bH
003e8 68 ff ff 00 00 push 65535 ; 0000ffffH
003ed 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
003f0 8b 51 14 mov edx, DWORD PTR [ecx+20]
003f3 52 push edx
003f4 ff 15 00 00 00
00 call DWORD PTR __imp__setsockopt@20
003fa 89 45 d0 mov DWORD PTR _nRet$21[ebp], eax
; 1072 : lp_io->socket,
; 1073 : SOL_SOCKET,
; 1074 : SO_UPDATE_ACCEPT_CONTEXT,
; 1075 : ( char* )&lp_this->m_listen_socket,
; 1076 : sizeof( lp_this->m_listen_socket ) );
; 1077 : }
003fd eb 23 jmp SHORT $LN24@Completion
$LN23@Completion:
; 1078 : else
; 1079 : {
; 1080 : nRet = setsockopt(
003ff 6a 04 push 4
00401 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
00404 83 c0 34 add eax, 52 ; 00000034H
00407 50 push eax
00408 68 0b 70 00 00 push 28683 ; 0000700bH
0040d 68 ff ff 00 00 push 65535 ; 0000ffffH
00412 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00415 8b 51 14 mov edx, DWORD PTR [ecx+20]
00418 52 push edx
00419 ff 15 00 00 00
00 call DWORD PTR __imp__setsockopt@20
0041f 89 45 d0 mov DWORD PTR _nRet$21[ebp], eax
$LN24@Completion:
; 1081 : lp_io->socket,
; 1082 : SOL_SOCKET,
; 1083 : SO_UPDATE_ACCEPT_CONTEXT,
; 1084 : ( char* )&lp_this->m_listen_socket2,
; 1085 : sizeof( lp_this->m_listen_socket2 ) );
; 1086 : }
; 1087 :
; 1088 : if( SOCKET_ERROR == nRet )
00422 83 7d d0 ff cmp DWORD PTR _nRet$21[ebp], -1
00426 75 2d jne SHORT $LN25@Completion
; 1089 : {
; 1090 : closesocket( lp_io->socket );
00428 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
0042b 8b 48 14 mov ecx, DWORD PTR [eax+20]
0042e 51 push ecx
0042f ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 1091 : //lp_this->m_io_group.RemoveAt( lp_io );
; 1092 : lp_this->m_KeyList.RemoveAt_IO( lp_io );
00435 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
00438 83 c0 08 add eax, 8
0043b 89 85 dc e5 ff
ff mov DWORD PTR tv258[ebp], eax
00441 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00444 51 push ecx
00445 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv258[ebp]
0044b e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 1093 : //cout<<"update socket fail!"<<WSAGetLastError()<<endl;
; 1094 : continue;
00450 e9 25 fc ff ff jmp $LN2@Completion
$LN25@Completion:
; 1095 : }
; 1096 : //lp_new_key = lp_this->m_key_group.GetBlank();
; 1097 : lp_new_key = lp_this->m_KeyList.GetBlank_Key();
00455 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
00458 83 c1 08 add ecx, 8
0045b e8 00 00 00 00 call ?GetBlank_Key@CKeyList@@QAEPAUIOCP_KEY@@XZ ; CKeyList::GetBlank_Key
00460 89 45 b4 mov DWORD PTR _lp_new_key$14[ebp], eax
; 1098 : if( lp_new_key == NULL )
00463 83 7d b4 00 cmp DWORD PTR _lp_new_key$14[ebp], 0
00467 75 12 jne SHORT $LN26@Completion
; 1099 : {
; 1100 : closesocket( lp_io->socket );
00469 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
0046c 8b 48 14 mov ecx, DWORD PTR [eax+20]
0046f 51 push ecx
00470 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 1101 : continue;
00476 e9 ff fb ff ff jmp $LN2@Completion
$LN26@Completion:
; 1102 : }
; 1103 :
; 1104 : lp_new_key->socket = lp_io->socket;
0047b 8b 45 b4 mov eax, DWORD PTR _lp_new_key$14[ebp]
0047e 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00481 8b 51 14 mov edx, DWORD PTR [ecx+20]
00484 89 10 mov DWORD PTR [eax], edx
; 1105 : lp_io->pKey = lp_new_key; //<2F><>¼<EFBFBD><C2BC>Ӧ<EFBFBD><D3A6>key<65><79><EFBFBD><EFBFBD>
00486 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00489 8b 4d b4 mov ecx, DWORD PTR _lp_new_key$14[ebp]
0048c 89 88 dc 01 00
00 mov DWORD PTR [eax+476], ecx
; 1106 : lp_io->dwAcceptTime = ::GetTickCount(); //Accept<70><74>ʱ<EFBFBD><CAB1>
00492 ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
00498 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
0049b 89 81 d4 01 00
00 mov DWORD PTR [ecx+468], eax
; 1107 :
; 1108 : //<2F><><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>SOCKETͬ<54><CDAC><EFBFBD>ɶ˿ڹ<CBBF><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 1109 : hRet = CreateIoCompletionPort(
004a1 6a 00 push 0
004a3 8b 45 b4 mov eax, DWORD PTR _lp_new_key$14[ebp]
004a6 50 push eax
004a7 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
004aa 8b 51 28 mov edx, DWORD PTR [ecx+40]
004ad 52 push edx
004ae 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
004b1 8b 48 14 mov ecx, DWORD PTR [eax+20]
004b4 51 push ecx
004b5 ff 15 00 00 00
00 call DWORD PTR __imp__CreateIoCompletionPort@16
004bb 89 45 c4 mov DWORD PTR _hRet$18[ebp], eax
; 1110 : ( HANDLE )lp_io->socket,
; 1111 : lp_this->m_h_iocp,
; 1112 : (DWORD)lp_new_key,0 );
; 1113 : if( NULL == hRet )
004be 83 7d c4 00 cmp DWORD PTR _hRet$18[ebp], 0
004c2 75 48 jne SHORT $LN27@Completion
; 1114 : {
; 1115 : lp_this->m_KeyList.RemoveAt_Key( lp_new_key );
004c4 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
004c7 83 c0 08 add eax, 8
004ca 89 85 dc e5 ff
ff mov DWORD PTR tv282[ebp], eax
004d0 8b 4d b4 mov ecx, DWORD PTR _lp_new_key$14[ebp]
004d3 51 push ecx
004d4 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv282[ebp]
004da e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 1116 : lp_this->m_KeyList.RemoveAt_IO( lp_io );
004df 8b 45 d4 mov eax, DWORD PTR _lp_this$22[ebp]
004e2 83 c0 08 add eax, 8
004e5 89 85 dc e5 ff
ff mov DWORD PTR tv287[ebp], eax
004eb 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
004ee 51 push ecx
004ef 8b 8d dc e5 ff
ff mov ecx, DWORD PTR tv287[ebp]
004f5 e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 1117 : closesocket( lp_io->socket );
004fa 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
004fd 8b 48 14 mov ecx, DWORD PTR [eax+20]
00500 51 push ecx
00501 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 1118 : continue;
00507 e9 6e fb ff ff jmp $LN2@Completion
$LN27@Completion:
; 1119 : }
; 1120 :
; 1121 : //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 1122 : lp_this->HandleData( lp_io, lp_new_key,IOCP_COMPLETE_ACCEPT );
0050c 6a 04 push 4
0050e 8b 45 b4 mov eax, DWORD PTR _lp_new_key$14[ebp]
00511 50 push eax
00512 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00515 51 push ecx
00516 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
00519 e8 00 00 00 00 call ?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z ; CIOCP::HandleData
; 1123 :
; 1124 : bRet = lp_this->DataAction( lp_io, lp_new_key );
0051e 8b 45 b4 mov eax, DWORD PTR _lp_new_key$14[ebp]
00521 50 push eax
00522 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00525 51 push ecx
00526 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
00529 e8 00 00 00 00 call ?DataAction@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@@Z ; CIOCP::DataAction
0052e 89 45 cc mov DWORD PTR _bRet$20[ebp], eax
; 1125 :
; 1126 : if( FALSE == bRet )
00531 83 7d cc 00 cmp DWORD PTR _bRet$20[ebp], 0
00535 75 05 jne SHORT $LN28@Completion
; 1127 : {
; 1128 : continue;
00537 e9 3e fb ff ff jmp $LN2@Completion
$LN28@Completion:
; 1129 : }
; 1130 : }
; 1131 : break;
0053c eb 72 jmp SHORT $LN4@Completion
$LN29@Completion:
; 1132 : case IOCP_READ:
; 1133 : {
; 1134 : if( SOCKET_STATE_CONNECT_AND_READ != lp_io->state )
0053e 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00541 83 78 1c 02 cmp DWORD PTR [eax+28], 2
00545 74 0a je SHORT $LN30@Completion
; 1135 : {
; 1136 : lp_io->state = SOCKET_STATE_CONNECT_AND_READ;
00547 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
0054a c7 40 1c 02 00
00 00 mov DWORD PTR [eax+28], 2
$LN30@Completion:
; 1137 : }
; 1138 :
; 1139 : lp_io->wsaBuf.len = dwBytes;
00551 8b 45 bc mov eax, DWORD PTR _lp_io$16[ebp]
00554 8b 4d c8 mov ecx, DWORD PTR _dwBytes$19[ebp]
00557 89 48 24 mov DWORD PTR [eax+36], ecx
; 1140 :
; 1141 : lp_this->HandleData( lp_io, lp_key, IOCP_COMPLETE_READ );
0055a 6a 01 push 1
0055c 8b 45 c0 mov eax, DWORD PTR _lp_key$17[ebp]
0055f 50 push eax
00560 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00563 51 push ecx
00564 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
00567 e8 00 00 00 00 call ?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z ; CIOCP::HandleData
; 1142 :
; 1143 : bRet = lp_this->DataAction( lp_io, lp_key );
0056c 8b 45 c0 mov eax, DWORD PTR _lp_key$17[ebp]
0056f 50 push eax
00570 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00573 51 push ecx
00574 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
00577 e8 00 00 00 00 call ?DataAction@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@@Z ; CIOCP::DataAction
0057c 89 45 cc mov DWORD PTR _bRet$20[ebp], eax
; 1144 :
; 1145 : if( FALSE == bRet )
0057f 83 7d cc 00 cmp DWORD PTR _bRet$20[ebp], 0
00583 75 05 jne SHORT $LN31@Completion
; 1146 : {
; 1147 : continue;
00585 e9 f0 fa ff ff jmp $LN2@Completion
$LN31@Completion:
; 1148 : }
; 1149 : }
; 1150 : break;
0058a eb 24 jmp SHORT $LN4@Completion
$LN32@Completion:
; 1151 : case IOCP_WRITE:
; 1152 : {
; 1153 : lp_this->HandleData( lp_io, lp_key, IOCP_COMPLETE_WRITE );
0058c 6a 03 push 3
0058e 8b 45 c0 mov eax, DWORD PTR _lp_key$17[ebp]
00591 50 push eax
00592 8b 4d bc mov ecx, DWORD PTR _lp_io$16[ebp]
00595 51 push ecx
00596 8b 4d d4 mov ecx, DWORD PTR _lp_this$22[ebp]
00599 e8 00 00 00 00 call ?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z ; CIOCP::HandleData
; 1154 :
; 1155 :
; 1156 : if( FALSE == bRet )
0059e 83 7d cc 00 cmp DWORD PTR _bRet$20[ebp], 0
005a2 75 05 jne SHORT $LN33@Completion
; 1157 : {
; 1158 : continue;
005a4 e9 d1 fa ff ff jmp $LN2@Completion
$LN33@Completion:
; 1159 : }
; 1160 : }
; 1161 : break;
005a9 eb 05 jmp SHORT $LN4@Completion
$LN34@Completion:
; 1162 : default:
; 1163 : {
; 1164 : continue;
005ab e9 ca fa ff ff jmp $LN2@Completion
$LN4@Completion:
; 1165 : }
; 1166 : break;
; 1167 : }
; 1168 : }
005b0 e9 c5 fa ff ff jmp $LN2@Completion
$LN3@Completion:
; 1169 : return 0;
005b5 c7 85 ec e5 ff
ff 00 00 00 00 mov DWORD PTR $T5[ebp], 0
005bf c6 45 fc 00 mov BYTE PTR __$EHRec$[ebp+12], 0
005c3 8d 4d db lea ecx, DWORD PTR _AutoCoInit$23[ebp]
005c6 e8 00 00 00 00 call ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
005cb 8b 85 ec e5 ff
ff mov eax, DWORD PTR $T5[ebp]
005d1 e9 b8 00 00 00 jmp $LN1@Completion
__catch$?CompletionRoutine@CIOCP@@CGKPAX@Z$0:
; 1170 : }
; 1171 : catch (... )
; 1172 : {
; 1173 : LOG_APPERROR(_T("T"));
005d6 8d 8d f4 e7 ff
ff lea ecx, DWORD PTR _NXlog$7[ebp]
005dc e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
005e1 c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
005e5 51 push ecx
005e6 8b cc mov ecx, esp
005e8 89 a5 e8 e5 ff
ff mov DWORD PTR $T4[ebp], esp
005ee 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
005f3 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
005f8 89 85 dc e5 ff
ff mov DWORD PTR tv323[ebp], eax
005fe c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
00602 51 push ecx
00603 8b cc mov ecx, esp
00605 89 a5 e4 e5 ff
ff mov DWORD PTR $T3[ebp], esp
0060b 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
00610 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00615 89 85 d8 e5 ff
ff mov DWORD PTR tv66[ebp], eax
0061b c6 45 fc 05 mov BYTE PTR __$EHRec$[ebp+12], 5
0061f c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
00623 8d 8d f4 e7 ff
ff lea ecx, DWORD PTR _NXlog$7[ebp]
00629 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
0062e a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??CompletionRoutine@CIOCP@@CGKPAX@Z@4JA
00633 05 d2 00 00 00 add eax, 210 ; 000000d2H
00638 50 push eax
00639 68 00 00 00 00 push OFFSET ??_C@_0BC@GHBOFPCG@CompletionRoutine@
0063e 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
00643 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
00648 8d 8d f4 e7 ff
ff lea ecx, DWORD PTR _NXlog$7[ebp]
0064e e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
00653 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
00657 8d 8d f4 e7 ff
ff lea ecx, DWORD PTR _NXlog$7[ebp]
0065d e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 1174 : return 1;
00662 c7 85 e0 e5 ff
ff 01 00 00 00 mov DWORD PTR $T2[ebp], 1
0066c b8 00 00 00 00 mov eax, $LN47@Completion
00671 c3 ret 0
; 1175 : }
00672 b8 00 00 00 00 mov eax, __tryend$?CompletionRoutine@CIOCP@@CGKPAX@Z$1
00677 c3 ret 0
__tryend$?CompletionRoutine@CIOCP@@CGKPAX@Z$1:
00678 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
0067f eb 0d jmp SHORT $LN1@Completion
$LN47@Completion:
00681 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
; 1174 : return 1;
00688 8b 85 e0 e5 ff
ff mov eax, DWORD PTR $T2[ebp]
$LN1@Completion:
; 1176 : }
0068e 8d a5 c4 e5 ff
ff lea esp, DWORD PTR [ebp-6716]
00694 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
00697 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0069e 59 pop ecx
0069f 5f pop edi
006a0 5e pop esi
006a1 5b pop ebx
006a2 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
006a5 33 cd xor ecx, ebp
006a7 e8 00 00 00 00 call @__security_check_cookie@4
006ac 8b e5 mov esp, ebp
006ae 5d pop ebp
006af c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$2:
00000 8d 4d db lea ecx, DWORD PTR _AutoCoInit$23[ebp]
00003 e9 00 00 00 00 jmp ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$3:
00008 8d 8d f4 e7 ff
ff lea ecx, DWORD PTR _NXlog$7[ebp]
0000e e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$4:
00013 8b 8d e8 e5 ff
ff mov ecx, DWORD PTR $T4[ebp]
00019 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?CompletionRoutine@CIOCP@@CGKPAX@Z$5:
0001e 8b 8d e4 e5 ff
ff mov ecx, DWORD PTR $T3[ebp]
00024 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00029 cc int 3
0002a cc int 3
0002b cc int 3
0002c cc int 3
0002d cc int 3
__ehhandler$?CompletionRoutine@CIOCP@@CGKPAX@Z:
0002e 90 npad 1
0002f 90 npad 1
00030 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00034 8d 42 0c lea eax, DWORD PTR [edx+12]
00037 8b 8a d0 e5 ff
ff mov ecx, DWORD PTR [edx-6704]
0003d 33 c8 xor ecx, eax
0003f e8 00 00 00 00 call @__security_check_cookie@4
00044 8b 4a f8 mov ecx, DWORD PTR [edx-8]
00047 33 c8 xor ecx, eax
00049 e8 00 00 00 00 call @__security_check_cookie@4
0004e b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?CompletionRoutine@CIOCP@@CGKPAX@Z
00053 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?CompletionRoutine@CIOCP@@CGKPAX@Z ENDP ; CIOCP::CompletionRoutine
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?InitSocket@CIOCP@@AAEHXZ
_TEXT SEGMENT
tv166 = -84 ; size = 4
tv158 = -84 ; size = 4
tv95 = -84 ; size = 4
_lp_key2$ = -16 ; size = 4
_hRet$ = -12 ; size = 4
_lp_key$ = -8 ; size = 4
_this$ = -4 ; size = 4
?InitSocket@CIOCP@@AAEHXZ PROC ; CIOCP::InitSocket, COMDAT
; _this$ = ecx
; 117 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 54 sub esp, 84 ; 00000054H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 118 : //<2F>˿<EFBFBD>1<EFBFBD><31>ʼ<EFBFBD><CABC>
; 119 : m_listen_socket = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED );
0000c 6a 01 push 1
0000e 6a 00 push 0
00010 6a 00 push 0
00012 6a 06 push 6
00014 6a 01 push 1
00016 6a 02 push 2
00018 ff 15 00 00 00
00 call DWORD PTR __imp__WSASocketW@24
0001e 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00021 89 41 2c mov DWORD PTR [ecx+44], eax
; 120 : if( INVALID_SOCKET == m_listen_socket )
00024 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00027 83 78 2c ff cmp DWORD PTR [eax+44], -1
0002b 75 07 jne SHORT $LN2@InitSocket
; 121 : {
; 122 : return FALSE;
0002d 33 c0 xor eax, eax
0002f e9 29 01 00 00 jmp $LN1@InitSocket
$LN2@InitSocket:
; 123 : }
; 124 : //IOCP_KEY_PTR lp_key = m_key_group.GetBlank();
; 125 : IOCP_KEY_PTR lp_key = m_KeyList.GetBlank_Key();
00034 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00037 83 c1 08 add ecx, 8
0003a e8 00 00 00 00 call ?GetBlank_Key@CKeyList@@QAEPAUIOCP_KEY@@XZ ; CKeyList::GetBlank_Key
0003f 89 45 f8 mov DWORD PTR _lp_key$[ebp], eax
; 126 : if ( !lp_key )
00042 83 7d f8 00 cmp DWORD PTR _lp_key$[ebp], 0
00046 75 07 jne SHORT $LN3@InitSocket
; 127 : return FALSE;
00048 33 c0 xor eax, eax
0004a e9 0e 01 00 00 jmp $LN1@InitSocket
$LN3@InitSocket:
; 128 :
; 129 : lp_key->socket = m_listen_socket;
0004f 8b 45 f8 mov eax, DWORD PTR _lp_key$[ebp]
00052 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00055 8b 51 2c mov edx, DWORD PTR [ecx+44]
00058 89 10 mov DWORD PTR [eax], edx
; 130 :
; 131 : HANDLE hRet = CreateIoCompletionPort( (HANDLE)m_listen_socket, m_h_iocp, (DWORD)lp_key, 0 );
0005a 6a 00 push 0
0005c 8b 45 f8 mov eax, DWORD PTR _lp_key$[ebp]
0005f 50 push eax
00060 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00063 8b 51 28 mov edx, DWORD PTR [ecx+40]
00066 52 push edx
00067 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0006a 8b 48 2c mov ecx, DWORD PTR [eax+44]
0006d 51 push ecx
0006e ff 15 00 00 00
00 call DWORD PTR __imp__CreateIoCompletionPort@16
00074 89 45 f4 mov DWORD PTR _hRet$[ebp], eax
; 132 : if( hRet == NULL )
00077 83 7d f4 00 cmp DWORD PTR _hRet$[ebp], 0
0007b 75 2b jne SHORT $LN4@InitSocket
; 133 : {
; 134 : CloseOneSocket( m_listen_socket );
0007d 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00080 83 c0 2c add eax, 44 ; 0000002cH
00083 50 push eax
00084 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00087 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 135 : //m_key_group.RemoveAt( lp_key );
; 136 : m_KeyList.RemoveAt_Key( lp_key );
0008c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0008f 83 c0 08 add eax, 8
00092 89 45 ac mov DWORD PTR tv95[ebp], eax
00095 8b 4d f8 mov ecx, DWORD PTR _lp_key$[ebp]
00098 51 push ecx
00099 8b 4d ac mov ecx, DWORD PTR tv95[ebp]
0009c e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 137 : return FALSE;
000a1 33 c0 xor eax, eax
000a3 e9 b5 00 00 00 jmp $LN1@InitSocket
$LN4@InitSocket:
; 138 : }
; 139 :
; 140 : //<2F>˿<EFBFBD>2<EFBFBD><32>ʼ<EFBFBD><CABC>
; 141 : m_listen_socket2 = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED );
000a8 6a 01 push 1
000aa 6a 00 push 0
000ac 6a 00 push 0
000ae 6a 06 push 6
000b0 6a 01 push 1
000b2 6a 02 push 2
000b4 ff 15 00 00 00
00 call DWORD PTR __imp__WSASocketW@24
000ba 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000bd 89 41 34 mov DWORD PTR [ecx+52], eax
; 142 : if( INVALID_SOCKET == m_listen_socket2 )
000c0 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000c3 83 78 34 ff cmp DWORD PTR [eax+52], -1
000c7 75 07 jne SHORT $LN5@InitSocket
; 143 : {
; 144 : return FALSE;
000c9 33 c0 xor eax, eax
000cb e9 8d 00 00 00 jmp $LN1@InitSocket
$LN5@InitSocket:
; 145 : }
; 146 : //IOCP_KEY_PTR lp_key2 = m_key_group.GetBlank();
; 147 : IOCP_KEY_PTR lp_key2 = m_KeyList.GetBlank_Key();
000d0 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000d3 83 c1 08 add ecx, 8
000d6 e8 00 00 00 00 call ?GetBlank_Key@CKeyList@@QAEPAUIOCP_KEY@@XZ ; CKeyList::GetBlank_Key
000db 89 45 f0 mov DWORD PTR _lp_key2$[ebp], eax
; 148 : lp_key2->socket = m_listen_socket2;
000de 8b 45 f0 mov eax, DWORD PTR _lp_key2$[ebp]
000e1 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000e4 8b 51 34 mov edx, DWORD PTR [ecx+52]
000e7 89 10 mov DWORD PTR [eax], edx
; 149 :
; 150 : hRet = CreateIoCompletionPort( (HANDLE)m_listen_socket2, m_h_iocp, (DWORD)lp_key2, 0 );
000e9 6a 00 push 0
000eb 8b 45 f0 mov eax, DWORD PTR _lp_key2$[ebp]
000ee 50 push eax
000ef 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000f2 8b 51 28 mov edx, DWORD PTR [ecx+40]
000f5 52 push edx
000f6 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000f9 8b 48 34 mov ecx, DWORD PTR [eax+52]
000fc 51 push ecx
000fd ff 15 00 00 00
00 call DWORD PTR __imp__CreateIoCompletionPort@16
00103 89 45 f4 mov DWORD PTR _hRet$[ebp], eax
; 151 : if( hRet == NULL )
00106 83 7d f4 00 cmp DWORD PTR _hRet$[ebp], 0
0010a 75 4c jne SHORT $LN6@InitSocket
; 152 : {
; 153 : CloseOneSocket( m_listen_socket );
0010c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0010f 83 c0 2c add eax, 44 ; 0000002cH
00112 50 push eax
00113 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00116 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 154 : //m_key_group.RemoveAt( lp_key );
; 155 : m_KeyList.RemoveAt_Key( lp_key );
0011b 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0011e 83 c0 08 add eax, 8
00121 89 45 ac mov DWORD PTR tv158[ebp], eax
00124 8b 4d f8 mov ecx, DWORD PTR _lp_key$[ebp]
00127 51 push ecx
00128 8b 4d ac mov ecx, DWORD PTR tv158[ebp]
0012b e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 156 : CloseOneSocket( m_listen_socket2 );
00130 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00133 83 c0 34 add eax, 52 ; 00000034H
00136 50 push eax
00137 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0013a e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 157 : //m_key_group.RemoveAt( lp_key2 );
; 158 : m_KeyList.RemoveAt_Key( lp_key2 );
0013f 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00142 83 c0 08 add eax, 8
00145 89 45 ac mov DWORD PTR tv166[ebp], eax
00148 8b 4d f0 mov ecx, DWORD PTR _lp_key2$[ebp]
0014b 51 push ecx
0014c 8b 4d ac mov ecx, DWORD PTR tv166[ebp]
0014f e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 159 : return FALSE;
00154 33 c0 xor eax, eax
00156 eb 05 jmp SHORT $LN1@InitSocket
$LN6@InitSocket:
; 160 : }
; 161 :
; 162 : return TRUE;
00158 b8 01 00 00 00 mov eax, 1
$LN1@InitSocket:
; 163 : }
0015d 5f pop edi
0015e 5e pop esi
0015f 5b pop ebx
00160 8b e5 mov esp, ebp
00162 5d pop ebp
00163 c3 ret 0
?InitSocket@CIOCP@@AAEHXZ ENDP ; CIOCP::InitSocket
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?CloseThreadHandle@CIOCP@@AAEXH@Z
_TEXT SEGMENT
_i$1 = -8 ; size = 4
_this$ = -4 ; size = 4
_count$ = 8 ; size = 4
?CloseThreadHandle@CIOCP@@AAEXH@Z PROC ; CIOCP::CloseThreadHandle, COMDAT
; _this$ = ecx
; 171 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 172 : if( count <= 0 )
0000c 83 7d 08 00 cmp DWORD PTR _count$[ebp], 0
00010 7f 05 jg SHORT $LN5@CloseThrea
; 173 : {
; 174 : return;
00012 e9 87 00 00 00 jmp $LN1@CloseThrea
$LN5@CloseThrea:
; 175 : }
; 176 :
; 177 : for( int i= 0; i < count; i++ )
00017 c7 45 f8 00 00
00 00 mov DWORD PTR _i$1[ebp], 0
0001e eb 09 jmp SHORT $LN4@CloseThrea
$LN2@CloseThrea:
00020 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
00023 83 c0 01 add eax, 1
00026 89 45 f8 mov DWORD PTR _i$1[ebp], eax
$LN4@CloseThrea:
00029 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
0002c 3b 45 08 cmp eax, DWORD PTR _count$[ebp]
0002f 7d 6d jge SHORT $LN1@CloseThrea
; 178 : {
; 179 : if (m_h_thread[i]!=INVALID_HANDLE_VALUE )
00031 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
00034 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00037 83 bc 81 94 00
00 00 ff cmp DWORD PTR [ecx+eax*4+148], -1
0003f 74 5b je SHORT $LN6@CloseThrea
; 180 : {
; 181 : if ( WaitForSingleObject(m_h_thread[i],1000)== WAIT_TIMEOUT )
00041 68 e8 03 00 00 push 1000 ; 000003e8H
00046 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
00049 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0004c 8b 94 81 94 00
00 00 mov edx, DWORD PTR [ecx+eax*4+148]
00053 52 push edx
00054 ff 15 00 00 00
00 call DWORD PTR __imp__WaitForSingleObject@8
0005a 3d 02 01 00 00 cmp eax, 258 ; 00000102H
0005f 75 16 jne SHORT $LN7@CloseThrea
; 182 : TerminateThread(m_h_thread[i],0); //<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ʱ<EFBFBD><CAB1>ǿ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>߳<EFBFBD>
00061 6a 00 push 0
00063 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
00066 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00069 8b 94 81 94 00
00 00 mov edx, DWORD PTR [ecx+eax*4+148]
00070 52 push edx
00071 ff 15 00 00 00
00 call DWORD PTR __imp__TerminateThread@8
$LN7@CloseThrea:
; 183 : CloseHandle( m_h_thread[i] );
00077 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
0007a 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0007d 8b 94 81 94 00
00 00 mov edx, DWORD PTR [ecx+eax*4+148]
00084 52 push edx
00085 ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 184 : m_h_thread[i] = INVALID_HANDLE_VALUE;
0008b 8b 45 f8 mov eax, DWORD PTR _i$1[ebp]
0008e 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00091 c7 84 81 94 00
00 00 ff ff ff
ff mov DWORD PTR [ecx+eax*4+148], -1
$LN6@CloseThrea:
; 185 : }
; 186 : }
0009c eb 82 jmp SHORT $LN2@CloseThrea
$LN1@CloseThrea:
; 187 : }
0009e 5f pop edi
0009f 5e pop esi
000a0 5b pop ebx
000a1 8b e5 mov esp, ebp
000a3 5d pop ebp
000a4 c2 04 00 ret 4
?CloseThreadHandle@CIOCP@@AAEXH@Z ENDP ; CIOCP::CloseThreadHandle
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?StartThread@CIOCP@@AAEHXZ
_TEXT SEGMENT
_sys_info$ = -44 ; size = 36
_i$ = -8 ; size = 4
_this$ = -4 ; size = 4
?StartThread@CIOCP@@AAEHXZ PROC ; CIOCP::StartThread, COMDAT
; _this$ = ecx
; 240 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 6c sub esp, 108 ; 0000006cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 241 : int i;
; 242 :
; 243 : SYSTEM_INFO sys_info;
; 244 :
; 245 : GetSystemInfo( &sys_info );
0000c 8d 45 d4 lea eax, DWORD PTR _sys_info$[ebp]
0000f 50 push eax
00010 ff 15 00 00 00
00 call DWORD PTR __imp__GetSystemInfo@4
; 246 :
; 247 : m_n_thread_count = sys_info.dwNumberOfProcessors*2;
00016 8b 45 e8 mov eax, DWORD PTR _sys_info$[ebp+20]
00019 d1 e0 shl eax, 1
0001b 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0001e 89 81 90 00 00
00 mov DWORD PTR [ecx+144], eax
; 248 : if (m_n_thread_count<2 || m_n_thread_count>MAXTHREAD_COUNT )
00024 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00027 83 b8 90 00 00
00 02 cmp DWORD PTR [eax+144], 2
0002e 7c 0c jl SHORT $LN6@StartThrea
00030 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00033 83 b8 90 00 00
00 10 cmp DWORD PTR [eax+144], 16 ; 00000010H
0003a 7e 0d jle SHORT $LN5@StartThrea
$LN6@StartThrea:
; 249 : m_n_thread_count = MAXTHREAD_COUNT;
0003c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0003f c7 80 90 00 00
00 10 00 00 00 mov DWORD PTR [eax+144], 16 ; 00000010H
$LN5@StartThrea:
; 250 :
; 251 : //m_n_thread_count = 4;
; 252 : for( i = 0; i < m_n_thread_count; i++ )
00049 c7 45 f8 00 00
00 00 mov DWORD PTR _i$[ebp], 0
00050 eb 09 jmp SHORT $LN4@StartThrea
$LN2@StartThrea:
00052 8b 45 f8 mov eax, DWORD PTR _i$[ebp]
00055 83 c0 01 add eax, 1
00058 89 45 f8 mov DWORD PTR _i$[ebp], eax
$LN4@StartThrea:
0005b 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0005e 8b 4d f8 mov ecx, DWORD PTR _i$[ebp]
00061 3b 88 90 00 00
00 cmp ecx, DWORD PTR [eax+144]
00067 7d 53 jge SHORT $LN3@StartThrea
; 253 : {
; 254 : m_h_thread[i] = CreateThread( NULL, 0, CompletionRoutine, (LPVOID)this, 0, NULL );
00069 6a 00 push 0
0006b 6a 00 push 0
0006d 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00070 50 push eax
00071 68 00 00 00 00 push OFFSET ?CompletionRoutine@CIOCP@@CGKPAX@Z ; CIOCP::CompletionRoutine
00076 6a 00 push 0
00078 6a 00 push 0
0007a ff 15 00 00 00
00 call DWORD PTR __imp__CreateThread@24
00080 8b 4d f8 mov ecx, DWORD PTR _i$[ebp]
00083 8b 55 fc mov edx, DWORD PTR _this$[ebp]
00086 89 84 8a 94 00
00 00 mov DWORD PTR [edx+ecx*4+148], eax
; 255 :
; 256 : if( INVALID_HANDLE_VALUE == m_h_thread[i] )
0008d 8b 45 f8 mov eax, DWORD PTR _i$[ebp]
00090 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00093 83 bc 81 94 00
00 00 ff cmp DWORD PTR [ecx+eax*4+148], -1
0009b 75 1d jne SHORT $LN7@StartThrea
; 257 : {
; 258 : CloseThreadHandle( i );
0009d 8b 45 f8 mov eax, DWORD PTR _i$[ebp]
000a0 50 push eax
000a1 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000a4 e8 00 00 00 00 call ?CloseThreadHandle@CIOCP@@AAEXH@Z ; CIOCP::CloseThreadHandle
; 259 : CloseHandle( m_h_iocp );
000a9 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000ac 8b 48 28 mov ecx, DWORD PTR [eax+40]
000af 51 push ecx
000b0 ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 260 : return FALSE;
000b6 33 c0 xor eax, eax
000b8 eb 07 jmp SHORT $LN1@StartThrea
$LN7@StartThrea:
; 261 : }
; 262 : }
000ba eb 96 jmp SHORT $LN2@StartThrea
$LN3@StartThrea:
; 263 : return TRUE;
000bc b8 01 00 00 00 mov eax, 1
$LN1@StartThrea:
; 264 : }
000c1 5f pop edi
000c2 5e pop esi
000c3 5b pop ebx
000c4 8b e5 mov esp, ebp
000c6 5d pop ebp
000c7 c3 ret 0
?StartThread@CIOCP@@AAEHXZ ENDP ; CIOCP::StartThread
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z
_TEXT SEGMENT
tv217 = -6624 ; size = 4
tv171 = -6620 ; size = 4
tv138 = -6620 ; size = 4
tv133 = -6620 ; size = 4
tv91 = -6620 ; size = 4
tv86 = -6620 ; size = 4
tv64 = -6620 ; size = 4
$T2 = -6616 ; size = 4
$T3 = -6612 ; size = 4
$T4 = -6608 ; size = 4
$T5 = -6604 ; size = 4
_NXlog$6 = -6088 ; size = 6056
_ioS$7 = -32 ; size = 4
_lRet$8 = -28 ; size = 4
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_io$ = 8 ; size = 4
_lp_key$ = 12 ; size = 4
_nFlags$ = 16 ; size = 4
?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z PROC ; CIOCP::HandleData, COMDAT
; _this$ = ecx
; 359 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 d0 19 00 00 mov eax, 6608 ; 000019d0H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 360 : switch( nFlags )
00039 8b 45 10 mov eax, DWORD PTR _nFlags$[ebp]
0003c 89 85 24 e6 ff
ff mov DWORD PTR tv64[ebp], eax
00042 8b 8d 24 e6 ff
ff mov ecx, DWORD PTR tv64[ebp]
00048 83 e9 01 sub ecx, 1
0004b 89 8d 24 e6 ff
ff mov DWORD PTR tv64[ebp], ecx
00051 83 bd 24 e6 ff
ff 03 cmp DWORD PTR tv64[ebp], 3
00058 0f 87 83 02 00
00 ja $LN17@HandleData
0005e 8b 95 24 e6 ff
ff mov edx, DWORD PTR tv64[ebp]
00064 ff 24 95 00 00
00 00 jmp DWORD PTR $LN28@HandleData[edx*4]
$LN4@HandleData:
; 361 : {
; 362 : case IOCP_COMPLETE_ACCEPT:
; 363 : {
; 364 : InitIoContext( lp_io );
0006b 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0006e 50 push eax
0006f 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
00072 e8 00 00 00 00 call ?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z ; CIOCP::InitIoContext
; 365 : lp_io->operation = IOCP_READ;
00077 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0007a c7 40 18 02 00
00 00 mov DWORD PTR [eax+24], 2
; 366 : }
; 367 : break;
00081 e9 5f 02 00 00 jmp $LN2@HandleData
$LN5@HandleData:
; 368 : case IOCP_COMPLETE_ACCEPT_READ:
; 369 : {
; 370 : /*
; 371 : lp_io->operation = IOCP_WRITE;
; 372 :
; 373 : GetAddrAndPort( lp_io->wsaBuf.buf, szAddress, uPort );
; 374 :
; 375 : //MSG(lp_io->wsaBuf.len);
; 376 : memset( &lp_io->ol, 0, sizeof(lp_io->ol) );
; 377 : */
; 378 : }
; 379 : break;
00086 e9 5a 02 00 00 jmp $LN2@HandleData
$LN6@HandleData:
; 380 : case IOCP_COMPLETE_READ:
; 381 : {
; 382 : //cout<<"read a data!*******************************"<<endl;
; 383 :
; 384 : lp_io->lRecvLen += lp_io->wsaBuf.len;
0008b 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0008e 8b 48 2c mov ecx, DWORD PTR [eax+44]
00091 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
00094 03 4a 24 add ecx, DWORD PTR [edx+36]
00097 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0009a 89 48 2c mov DWORD PTR [eax+44], ecx
; 385 :
; 386 : long lRet=0;
0009d c7 45 e4 00 00
00 00 mov DWORD PTR _lRet$8[ebp], 0
; 387 : if ( lp_io->m_lLocalPort == DEFAULT_LISTENPORT2 )
000a4 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
000a7 81 78 74 d2 1e
00 00 cmp DWORD PTR [eax+116], 7890 ; 00001ed2H
000ae 75 11 jne SHORT $LN7@HandleData
; 388 : lRet = GetFrame_Cmpp(lp_io);
000b0 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
000b3 50 push eax
000b4 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
000b7 e8 00 00 00 00 call ?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z ; CIOCP::GetFrame_Cmpp
000bc 89 45 e4 mov DWORD PTR _lRet$8[ebp], eax
000bf eb 0f jmp SHORT $LN8@HandleData
$LN7@HandleData:
; 389 : else
; 390 : lRet = GetFrame(lp_io);
000c1 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
000c4 50 push eax
000c5 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
000c8 e8 00 00 00 00 call ?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z ; CIOCP::GetFrame
000cd 89 45 e4 mov DWORD PTR _lRet$8[ebp], eax
$LN8@HandleData:
; 391 : if ( lRet < 0 )
000d0 83 7d e4 00 cmp DWORD PTR _lRet$8[ebp], 0
000d4 7d 52 jge SHORT $LN9@HandleData
; 392 : {
; 393 : //<2F><><EFBFBD><EFBFBD>֡ʧ<D6A1><CAA7>
; 394 : m_KeyList.RemoveAt_IO( lp_io );
000d6 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000d9 83 c0 08 add eax, 8
000dc 89 85 24 e6 ff
ff mov DWORD PTR tv86[ebp], eax
000e2 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
000e5 51 push ecx
000e6 8b 8d 24 e6 ff
ff mov ecx, DWORD PTR tv86[ebp]
000ec e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 395 : m_KeyList.RemoveAt_Key( lp_key );
000f1 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000f4 83 c0 08 add eax, 8
000f7 89 85 24 e6 ff
ff mov DWORD PTR tv91[ebp], eax
000fd 8b 4d 0c mov ecx, DWORD PTR _lp_key$[ebp]
00100 51 push ecx
00101 8b 8d 24 e6 ff
ff mov ecx, DWORD PTR tv91[ebp]
00107 e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 396 : closesocket( lp_io->socket );
0010c 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0010f 8b 48 14 mov ecx, DWORD PTR [eax+20]
00112 51 push ecx
00113 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 397 : lp_io->operation = IOCP_END; //<2F>رպ<D8B1><D5BA><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>
00119 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0011c c7 40 18 04 00
00 00 mov DWORD PTR [eax+24], 4
; 398 : }
00123 e9 9c 00 00 00 jmp $LN10@HandleData
$LN9@HandleData:
; 399 : else
; 400 : {
; 401 : //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><DDB9>󣬲<EFBFBD><F3A3ACB2><EFBFBD>û<EFBFBD>к<EFBFBD><D0BA>ʵİ<CAB5><C4B0><EFBFBD>
; 402 : if ( lp_io->lRecvLen>=BUFFER_SIZE )
00128 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0012b 81 78 2c d0 dd
06 00 cmp DWORD PTR [eax+44], 450000 ; 0006ddd0H
00132 7c 4f jl SHORT $LN11@HandleData
; 403 : {
; 404 : m_KeyList.RemoveAt_IO( lp_io );
00134 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00137 83 c0 08 add eax, 8
0013a 89 85 24 e6 ff
ff mov DWORD PTR tv133[ebp], eax
00140 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00143 51 push ecx
00144 8b 8d 24 e6 ff
ff mov ecx, DWORD PTR tv133[ebp]
0014a e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 405 : m_KeyList.RemoveAt_Key( lp_key );
0014f 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00152 83 c0 08 add eax, 8
00155 89 85 24 e6 ff
ff mov DWORD PTR tv138[ebp], eax
0015b 8b 4d 0c mov ecx, DWORD PTR _lp_key$[ebp]
0015e 51 push ecx
0015f 8b 8d 24 e6 ff
ff mov ecx, DWORD PTR tv138[ebp]
00165 e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 406 : closesocket( lp_io->socket );
0016a 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0016d 8b 48 14 mov ecx, DWORD PTR [eax+20]
00170 51 push ecx
00171 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 407 : lp_io->operation = IOCP_END; //<2F>رպ<D8B1><D5BA><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>
00177 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0017a c7 40 18 04 00
00 00 mov DWORD PTR [eax+24], 4
; 408 : }
00181 eb 41 jmp SHORT $LN10@HandleData
$LN11@HandleData:
; 409 : else
; 410 : {
; 411 : //<2F><><EFBFBD>¿<EFBFBD>ʼͶ<CABC><CDB6>io
; 412 : lp_io->operation = IOCP_READ;
00183 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00186 c7 40 18 02 00
00 00 mov DWORD PTR [eax+24], 2
; 413 : memset( &lp_io->ol, 0, sizeof(lp_io->ol) );
0018d 6a 14 push 20 ; 00000014H
0018f 6a 00 push 0
00191 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00194 50 push eax
00195 e8 00 00 00 00 call _memset
0019a 83 c4 0c add esp, 12 ; 0000000cH
; 414 :
; 415 : lp_io->wsaBuf.buf = lp_io->buf + lp_io->lRecvLen;
0019d 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
001a0 8b 48 2c mov ecx, DWORD PTR [eax+44]
001a3 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
001a6 8d 84 0a e0 01
00 00 lea eax, DWORD PTR [edx+ecx+480]
001ad 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
001b0 89 41 28 mov DWORD PTR [ecx+40], eax
; 416 : lp_io->wsaBuf.len = BUFFER_SIZE-lp_io->lRecvLen;
001b3 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
001b6 b9 d0 dd 06 00 mov ecx, 450000 ; 0006ddd0H
001bb 2b 48 2c sub ecx, DWORD PTR [eax+44]
001be 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
001c1 89 4a 24 mov DWORD PTR [edx+36], ecx
$LN10@HandleData:
; 417 : }
; 418 : }
; 419 : }
; 420 : break;
001c4 e9 1c 01 00 00 jmp $LN2@HandleData
$LN13@HandleData:
; 421 : case IOCP_COMPLETE_WRITE:
; 422 : {
; 423 : try
001c9 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 424 : {
; 425 : IOCP_IO_SEND_PTR ioS = (IOCP_IO_SEND_PTR)lp_io;
001d0 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
001d3 89 45 e0 mov DWORD PTR _ioS$7[ebp], eax
; 426 :
; 427 : if ( ioS->wsaBuf.len >0 )
001d6 8b 45 e0 mov eax, DWORD PTR _ioS$7[ebp]
001d9 83 78 24 00 cmp DWORD PTR [eax+36], 0
001dd 76 30 jbe SHORT $LN15@HandleData
; 428 : {
; 429 : if ( ioS->wsaBuf.buf )
001df 8b 45 e0 mov eax, DWORD PTR _ioS$7[ebp]
001e2 83 78 28 00 cmp DWORD PTR [eax+40], 0
001e6 74 1d je SHORT $LN16@HandleData
; 430 : delete ioS->wsaBuf.buf;
001e8 8b 45 e0 mov eax, DWORD PTR _ioS$7[ebp]
001eb 8b 48 28 mov ecx, DWORD PTR [eax+40]
001ee 89 8d 34 e6 ff
ff mov DWORD PTR $T5[ebp], ecx
001f4 6a 01 push 1
001f6 8b 95 34 e6 ff
ff mov edx, DWORD PTR $T5[ebp]
001fc 52 push edx
001fd e8 00 00 00 00 call ??3@YAXPAXI@Z ; operator delete
00202 83 c4 08 add esp, 8
$LN16@HandleData:
; 431 : ioS->wsaBuf.buf = NULL;
00205 8b 45 e0 mov eax, DWORD PTR _ioS$7[ebp]
00208 c7 40 28 00 00
00 00 mov DWORD PTR [eax+40], 0
$LN15@HandleData:
; 432 : }
; 433 : delete ioS;
0020f 8b 45 e0 mov eax, DWORD PTR _ioS$7[ebp]
00212 89 85 30 e6 ff
ff mov DWORD PTR $T4[ebp], eax
00218 6a 2c push 44 ; 0000002cH
0021a 8b 8d 30 e6 ff
ff mov ecx, DWORD PTR $T4[ebp]
00220 51 push ecx
00221 e8 00 00 00 00 call ??3@YAXPAXI@Z ; operator delete
00226 83 c4 08 add esp, 8
; 434 : }
00229 e9 96 00 00 00 jmp $LN19@HandleData
__catch$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$0:
; 435 : catch (...)
; 436 : {
; 437 : LOG_APPERROR(_T("T"));
0022e 8d 8d 38 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00234 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
00239 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
0023d 51 push ecx
0023e 8b cc mov ecx, esp
00240 89 a5 2c e6 ff
ff mov DWORD PTR $T3[ebp], esp
00246 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
0024b e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00250 89 85 24 e6 ff
ff mov DWORD PTR tv171[ebp], eax
00256 c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
0025a 51 push ecx
0025b 8b cc mov ecx, esp
0025d 89 a5 28 e6 ff
ff mov DWORD PTR $T2[ebp], esp
00263 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
00268 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
0026d 89 85 20 e6 ff
ff mov DWORD PTR tv217[ebp], eax
00273 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
00277 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
0027b 8d 8d 38 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00281 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
00286 a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z@4JA
0028b 83 c0 4e add eax, 78 ; 0000004eH
0028e 50 push eax
0028f 68 00 00 00 00 push OFFSET ??_C@_0L@BDAOGBHN@HandleData@
00294 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
00299 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
0029e 8d 8d 38 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
002a4 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
002a9 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
002ad 8d 8d 38 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
002b3 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 438 : break;
002b8 b8 00 00 00 00 mov eax, $LN25@HandleData
002bd c3 ret 0
; 439 : }
002be b8 00 00 00 00 mov eax, $LN27@HandleData
002c3 c3 ret 0
$LN19@HandleData:
002c4 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
002cb eb 07 jmp SHORT __tryend$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$1
$LN27@HandleData:
002cd c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
__tryend$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$1:
002d4 eb 09 jmp SHORT $LN24@HandleData
$LN25@HandleData:
002d6 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
; 438 : break;
002dd eb 06 jmp SHORT $LN2@HandleData
$LN24@HandleData:
; 440 : }
; 441 : break;
002df eb 04 jmp SHORT $LN2@HandleData
$LN17@HandleData:
; 442 : default:
; 443 : {
; 444 : //cout<<"handleData do nothing!*********************"<<endl;
; 445 :
; 446 : return FALSE;
002e1 33 c0 xor eax, eax
002e3 eb 05 jmp SHORT $LN1@HandleData
$LN2@HandleData:
; 447 : }
; 448 : }
; 449 :
; 450 : return TRUE;
002e5 b8 01 00 00 00 mov eax, 1
$LN1@HandleData:
; 451 : }
002ea 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
002ed 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
002f4 59 pop ecx
002f5 5f pop edi
002f6 5e pop esi
002f7 5b pop ebx
002f8 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
002fb 33 cd xor ecx, ebp
002fd e8 00 00 00 00 call @__security_check_cookie@4
00302 8b e5 mov esp, ebp
00304 5d pop ebp
00305 c2 0c 00 ret 12 ; 0000000cH
$LN28@HandleData:
00308 00 00 00 00 DD $LN6@HandleData
0030c 00 00 00 00 DD $LN5@HandleData
00310 00 00 00 00 DD $LN13@HandleData
00314 00 00 00 00 DD $LN4@HandleData
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$2:
00000 8d 8d 38 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00006 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$3:
0000b 8b 8d 2c e6 ff
ff mov ecx, DWORD PTR $T3[ebp]
00011 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z$4:
00016 8b 8d 28 e6 ff
ff mov ecx, DWORD PTR $T2[ebp]
0001c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00021 cc int 3
00022 cc int 3
00023 cc int 3
00024 cc int 3
00025 cc int 3
__ehhandler$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z:
00026 90 npad 1
00027 90 npad 1
00028 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0002c 8d 42 0c lea eax, DWORD PTR [edx+12]
0002f 8b 8a 1c e6 ff
ff mov ecx, DWORD PTR [edx-6628]
00035 33 c8 xor ecx, eax
00037 e8 00 00 00 00 call @__security_check_cookie@4
0003c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0003f 33 c8 xor ecx, eax
00041 e8 00 00 00 00 call @__security_check_cookie@4
00046 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z
0004b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?HandleData@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@H@Z ENDP ; CIOCP::HandleData
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?DataAction@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@@Z
_TEXT SEGMENT
tv147 = -84 ; size = 4
tv142 = -84 ; size = 4
tv89 = -84 ; size = 4
tv84 = -84 ; size = 4
tv65 = -84 ; size = 4
_dwFlags$ = -16 ; size = 4
_nRet$ = -12 ; size = 4
_dwBytes$ = -8 ; size = 4
_this$ = -4 ; size = 4
_lp_io$ = 8 ; size = 4
_lp_key$ = 12 ; size = 4
?DataAction@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@@Z PROC ; CIOCP::DataAction, COMDAT
; _this$ = ecx
; 460 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 54 sub esp, 84 ; 00000054H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 461 : DWORD dwBytes;
; 462 : int nRet;
; 463 : DWORD dwFlags;
; 464 :
; 465 : switch( lp_io->operation )
0000c 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0000f 8b 48 18 mov ecx, DWORD PTR [eax+24]
00012 89 4d ac mov DWORD PTR tv65[ebp], ecx
00015 8b 55 ac mov edx, DWORD PTR tv65[ebp]
00018 83 ea 02 sub edx, 2
0001b 89 55 ac mov DWORD PTR tv65[ebp], edx
0001e 83 7d ac 03 cmp DWORD PTR tv65[ebp], 3
00022 0f 87 0a 01 00
00 ja $LN10@DataAction
00028 8b 45 ac mov eax, DWORD PTR tv65[ebp]
0002b ff 24 85 00 00
00 00 jmp DWORD PTR $LN12@DataAction[eax*4]
$LN4@DataAction:
; 466 : {
; 467 : case IOCP_WRITE:
; 468 : {
; 469 : nRet = WSASend(
00032 6a 00 push 0
00034 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00037 50 push eax
00038 6a 00 push 0
0003a 8d 4d f8 lea ecx, DWORD PTR _dwBytes$[ebp]
0003d 51 push ecx
0003e 6a 01 push 1
00040 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
00043 83 c2 24 add edx, 36 ; 00000024H
00046 52 push edx
00047 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0004a 8b 48 14 mov ecx, DWORD PTR [eax+20]
0004d 51 push ecx
0004e ff 15 00 00 00
00 call DWORD PTR __imp__WSASend@28
00054 89 45 f4 mov DWORD PTR _nRet$[ebp], eax
; 470 : lp_io->socket,
; 471 : &lp_io->wsaBuf,
; 472 : 1,
; 473 : &dwBytes,
; 474 : 0,
; 475 : &lp_io->ol,NULL);
; 476 :
; 477 : if( ( nRet == SOCKET_ERROR ) && ( WSAGetLastError() != WSA_IO_PENDING ) )
00057 83 7d f4 ff cmp DWORD PTR _nRet$[ebp], -1
0005b 75 4b jne SHORT $LN5@DataAction
0005d ff 15 00 00 00
00 call DWORD PTR __imp__WSAGetLastError@0
00063 3d e5 03 00 00 cmp eax, 997 ; 000003e5H
00068 74 3e je SHORT $LN5@DataAction
; 478 : {
; 479 : m_KeyList.RemoveAt_IO( lp_io );
0006a 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0006d 83 c0 08 add eax, 8
00070 89 45 ac mov DWORD PTR tv84[ebp], eax
00073 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00076 51 push ecx
00077 8b 4d ac mov ecx, DWORD PTR tv84[ebp]
0007a e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 480 : m_KeyList.RemoveAt_Key( lp_key );
0007f 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00082 83 c0 08 add eax, 8
00085 89 45 ac mov DWORD PTR tv89[ebp], eax
00088 8b 4d 0c mov ecx, DWORD PTR _lp_key$[ebp]
0008b 51 push ecx
0008c 8b 4d ac mov ecx, DWORD PTR tv89[ebp]
0008f e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 481 : closesocket( lp_io->socket );
00094 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00097 8b 48 14 mov ecx, DWORD PTR [eax+20]
0009a 51 push ecx
0009b ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 482 : return FALSE;
000a1 33 c0 xor eax, eax
000a3 e9 93 00 00 00 jmp $LN1@DataAction
$LN5@DataAction:
; 483 : }
; 484 : }
; 485 : break;
000a8 e9 89 00 00 00 jmp $LN2@DataAction
$LN6@DataAction:
; 486 : case IOCP_WRITE2:
; 487 : {
; 488 : /*
; 489 : IOCP_IO_SEND_PTR ioS = (IOCP_IO_SEND_PTR)lp_io;
; 490 :
; 491 : ioS->operation = IOCP_WRITE;
; 492 : nRet = WSASend(
; 493 : lp_key->socket,
; 494 : &ioS->wsaBuf[ioS->lSendNowIndex-1],
; 495 : 1,
; 496 : &dwBytes,
; 497 : 0,
; 498 : &ioS->ol,NULL);
; 499 : /*
; 500 : if( ( nRet == SOCKET_ERROR ) && ( WSAGetLastError() != WSA_IO_PENDING ) )
; 501 : {
; 502 : //cout<<"WSASend fail!----------------------------------------"<<WSAGetLastError()<<endl;
; 503 :
; 504 : closesocket( lp_io->socket );
; 505 :
; 506 : //m_io_group.RemoveAt( lp_io );
; 507 : m_KeyList.RemoveAt_IO( lp_io );
; 508 : //m_key_group.RemoveAt( lp_key );
; 509 : m_KeyList.RemoveAt_Key( lp_key );
; 510 :
; 511 : return FALSE;
; 512 : }
; 513 : */
; 514 : }
; 515 : break;
000ad e9 84 00 00 00 jmp $LN2@DataAction
$LN7@DataAction:
; 516 : case IOCP_READ:
; 517 : {
; 518 : //cout<<"post a read data!-----------------------------------------"<<endl;
; 519 :
; 520 : dwFlags = 0;
000b2 c7 45 f0 00 00
00 00 mov DWORD PTR _dwFlags$[ebp], 0
; 521 :
; 522 : nRet = WSARecv(
000b9 6a 00 push 0
000bb 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
000be 50 push eax
000bf 8d 4d f0 lea ecx, DWORD PTR _dwFlags$[ebp]
000c2 51 push ecx
000c3 8d 55 f8 lea edx, DWORD PTR _dwBytes$[ebp]
000c6 52 push edx
000c7 6a 01 push 1
000c9 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
000cc 83 c0 24 add eax, 36 ; 00000024H
000cf 50 push eax
000d0 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
000d3 8b 51 14 mov edx, DWORD PTR [ecx+20]
000d6 52 push edx
000d7 ff 15 00 00 00
00 call DWORD PTR __imp__WSARecv@28
000dd 89 45 f4 mov DWORD PTR _nRet$[ebp], eax
; 523 : lp_io->socket,
; 524 : &lp_io->wsaBuf,
; 525 : 1,
; 526 : &dwBytes,
; 527 : &dwFlags,
; 528 : &lp_io->ol,NULL);
; 529 :
; 530 : if( ( nRet == SOCKET_ERROR ) && ( WSAGetLastError() != WSA_IO_PENDING ) )
000e0 83 7d f4 ff cmp DWORD PTR _nRet$[ebp], -1
000e4 75 48 jne SHORT $LN8@DataAction
000e6 ff 15 00 00 00
00 call DWORD PTR __imp__WSAGetLastError@0
000ec 3d e5 03 00 00 cmp eax, 997 ; 000003e5H
000f1 74 3b je SHORT $LN8@DataAction
; 531 : {
; 532 : m_KeyList.RemoveAt_IO( lp_io );
000f3 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000f6 83 c0 08 add eax, 8
000f9 89 45 ac mov DWORD PTR tv142[ebp], eax
000fc 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
000ff 51 push ecx
00100 8b 4d ac mov ecx, DWORD PTR tv142[ebp]
00103 e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 533 : m_KeyList.RemoveAt_Key( lp_key );
00108 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0010b 83 c0 08 add eax, 8
0010e 89 45 ac mov DWORD PTR tv147[ebp], eax
00111 8b 4d 0c mov ecx, DWORD PTR _lp_key$[ebp]
00114 51 push ecx
00115 8b 4d ac mov ecx, DWORD PTR tv147[ebp]
00118 e8 00 00 00 00 call ?RemoveAt_Key@CKeyList@@QAEXPAUIOCP_KEY@@@Z ; CKeyList::RemoveAt_Key
; 534 : closesocket( lp_io->socket );
0011d 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00120 8b 48 14 mov ecx, DWORD PTR [eax+20]
00123 51 push ecx
00124 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 535 :
; 536 : return FALSE;
0012a 33 c0 xor eax, eax
0012c eb 0d jmp SHORT $LN1@DataAction
$LN8@DataAction:
; 537 : }
; 538 : }
; 539 : break;
0012e eb 06 jmp SHORT $LN2@DataAction
$LN9@DataAction:
; 540 : case IOCP_END:
; 541 : break;
00130 eb 04 jmp SHORT $LN2@DataAction
$LN10@DataAction:
; 542 : default:
; 543 : {
; 544 : //cout<<"DataAction do nothing!------------------------------------------"<<endl;
; 545 :
; 546 : return FALSE;
00132 33 c0 xor eax, eax
00134 eb 05 jmp SHORT $LN1@DataAction
$LN2@DataAction:
; 547 : }
; 548 : }
; 549 :
; 550 : return TRUE;
00136 b8 01 00 00 00 mov eax, 1
$LN1@DataAction:
; 551 : }
0013b 5f pop edi
0013c 5e pop esi
0013d 5b pop ebx
0013e 8b e5 mov esp, ebp
00140 5d pop ebp
00141 c2 08 00 ret 8
$LN12@DataAction:
00144 00 00 00 00 DD $LN7@DataAction
00148 00 00 00 00 DD $LN4@DataAction
0014c 00 00 00 00 DD $LN9@DataAction
00150 00 00 00 00 DD $LN6@DataAction
?DataAction@CIOCP@@AAEHPAUIOCP_IO@@PAUIOCP_KEY@@@Z ENDP ; CIOCP::DataAction
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z
_TEXT SEGMENT
tv161 = -6608 ; size = 4
tv86 = -6604 ; size = 4
$T2 = -6600 ; size = 4
$T3 = -6596 ; size = 4
_NXlog$4 = -6080 ; size = 6056
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_io$ = 8 ; size = 4
?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z PROC ; CIOCP::InitIoContext, COMDAT
; _this$ = ecx
; 91 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 c0 19 00 00 mov eax, 6592 ; 000019c0H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 92 : if ( !lp_io )
00039 83 7d 08 00 cmp DWORD PTR _lp_io$[ebp], 0
0003d 75 05 jne SHORT $LN2@InitIoCont
; 93 : return ;
0003f e9 0c 01 00 00 jmp $LN1@InitIoCont
$LN2@InitIoCont:
; 94 : try
00044 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 95 : {
; 96 : if ( lp_io< &m_KeyList.m_IO[0] || lp_io>&m_KeyList.m_IO[MAX_LOGINUSER] )
0004b b8 b0 df 06 00 mov eax, 450480 ; 0006dfb0H
00050 6b c8 00 imul ecx, eax, 0
00053 8b 55 e8 mov edx, DWORD PTR _this$[ebp]
00056 03 4a 14 add ecx, DWORD PTR [edx+20]
00059 39 4d 08 cmp DWORD PTR _lp_io$[ebp], ecx
0005c 72 16 jb SHORT $LN5@InitIoCont
0005e b8 b0 df 06 00 mov eax, 450480 ; 0006dfb0H
00063 69 c8 e8 03 00
00 imul ecx, eax, 1000
00069 8b 55 e8 mov edx, DWORD PTR _this$[ebp]
0006c 03 4a 14 add ecx, DWORD PTR [edx+20]
0006f 39 4d 08 cmp DWORD PTR _lp_io$[ebp], ecx
00072 76 05 jbe SHORT $LN4@InitIoCont
$LN5@InitIoCont:
; 97 : return ;
00074 e9 d7 00 00 00 jmp $LN1@InitIoCont
$LN4@InitIoCont:
; 98 :
; 99 : memset( &lp_io->ol, 0, sizeof( WSAOVERLAPPED ) );
00079 6a 14 push 20 ; 00000014H
0007b 6a 00 push 0
0007d 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00080 50 push eax
00081 e8 00 00 00 00 call _memset
00086 83 c4 0c add esp, 12 ; 0000000cH
; 100 : //memset( &lp_io->buf, 0, BUFFER_SIZE );
; 101 : lp_io->wsaBuf.buf = lp_io->buf;
00089 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0008c 05 e0 01 00 00 add eax, 480 ; 000001e0H
00091 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00094 89 41 28 mov DWORD PTR [ecx+40], eax
; 102 : lp_io->wsaBuf.len = BUFFER_SIZE;
00097 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0009a c7 40 24 d0 dd
06 00 mov DWORD PTR [eax+36], 450000 ; 0006ddd0H
; 103 : lp_io->lRecvLen = 0;
000a1 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
000a4 c7 40 2c 00 00
00 00 mov DWORD PTR [eax+44], 0
; 104 : }
000ab e9 90 00 00 00 jmp $LN7@InitIoCont
__catch$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$0:
; 105 : catch (...)
; 106 : {
; 107 : LOG_APPERROR(_T("T"));
000b0 8d 8d 40 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
000b6 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
000bb c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
000bf 51 push ecx
000c0 8b cc mov ecx, esp
000c2 89 a5 3c e6 ff
ff mov DWORD PTR $T3[ebp], esp
000c8 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
000cd e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
000d2 89 85 34 e6 ff
ff mov DWORD PTR tv86[ebp], eax
000d8 c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
000dc 51 push ecx
000dd 8b cc mov ecx, esp
000df 89 a5 38 e6 ff
ff mov DWORD PTR $T2[ebp], esp
000e5 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
000ea e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
000ef 89 85 30 e6 ff
ff mov DWORD PTR tv161[ebp], eax
000f5 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
000f9 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
000fd 8d 8d 40 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00103 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
00108 a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z@4JA
0010d 83 c0 10 add eax, 16 ; 00000010H
00110 50 push eax
00111 68 00 00 00 00 push OFFSET ??_C@_0O@NGMCBOJM@InitIoContext@
00116 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
0011b 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
00120 8d 8d 40 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00126 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
0012b c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
0012f 8d 8d 40 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00135 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 108 : }
0013a b8 00 00 00 00 mov eax, $LN13@InitIoCont
0013f c3 ret 0
$LN7@InitIoCont:
00140 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
00147 eb 07 jmp SHORT $LN1@InitIoCont
$LN13@InitIoCont:
00149 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
$LN1@InitIoCont:
; 109 : }
00150 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
00153 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0015a 59 pop ecx
0015b 5f pop edi
0015c 5e pop esi
0015d 5b pop ebx
0015e 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
00161 33 cd xor ecx, ebp
00163 e8 00 00 00 00 call @__security_check_cookie@4
00168 8b e5 mov esp, ebp
0016a 5d pop ebp
0016b c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$2:
00000 8d 8d 40 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00006 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$3:
0000b 8b 8d 3c e6 ff
ff mov ecx, DWORD PTR $T3[ebp]
00011 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z$4:
00016 8b 8d 38 e6 ff
ff mov ecx, DWORD PTR $T2[ebp]
0001c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00021 cc int 3
00022 cc int 3
00023 cc int 3
00024 cc int 3
00025 cc int 3
__ehhandler$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z:
00026 90 npad 1
00027 90 npad 1
00028 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0002c 8d 42 0c lea eax, DWORD PTR [edx+12]
0002f 8b 8a 2c e6 ff
ff mov ecx, DWORD PTR [edx-6612]
00035 33 c8 xor ecx, eax
00037 e8 00 00 00 00 call @__security_check_cookie@4
0003c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0003f 33 c8 xor ecx, eax
00041 e8 00 00 00 00 call @__security_check_cookie@4
00046 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z
0004b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z ENDP ; CIOCP::InitIoContext
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?MainLoop@CIOCP@@SGKPAX@Z
_TEXT SEGMENT
tv92 = -6628 ; size = 4
tv75 = -6628 ; size = 4
tv134 = -6624 ; size = 4
tv94 = -6624 ; size = 4
tv73 = -6624 ; size = 4
$T2 = -6620 ; size = 4
$T3 = -6616 ; size = 4
$T4 = -6612 ; size = 4
$T5 = -6608 ; size = 4
_NXlog$6 = -6092 ; size = 6056
_str$7 = -36 ; size = 4
_dwRet$8 = -32 ; size = 4
_piocp$9 = -28 ; size = 4
_AutoCoInit$10 = -21 ; size = 1
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_param$ = 8 ; size = 4
?MainLoop@CIOCP@@SGKPAX@Z PROC ; CIOCP::MainLoop, COMDAT
; 874 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?MainLoop@CIOCP@@SGKPAX@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 d4 19 00 00 mov eax, 6612 ; 000019d4H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
; 875 : try
00036 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 876 : {
; 877 : AutoCoInitializeEx AutoCoInit; //<2F>Զ<EFBFBD><D4B6><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Com<6F><6D><EFBFBD><EFBFBD>
0003d 8d 4d eb lea ecx, DWORD PTR _AutoCoInit$10[ebp]
00040 e8 00 00 00 00 call ??0AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::AutoCoInitializeEx
00045 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
; 878 :
; 879 : CIOCP * piocp = (CIOCP *)lp_param;
00049 8b 45 08 mov eax, DWORD PTR _lp_param$[ebp]
0004c 89 45 e4 mov DWORD PTR _piocp$9[ebp], eax
$LN2@MainLoop:
; 880 : DWORD dwRet;
; 881 : while( !piocp->m_bQuit )
0004f 8b 45 e4 mov eax, DWORD PTR _piocp$9[ebp]
00052 83 b8 e4 00 00
00 00 cmp DWORD PTR [eax+228], 0
00059 0f 85 bb 00 00
00 jne $LN3@MainLoop
; 882 : {
; 883 : dwRet = WaitForSingleObject( piocp->m_h_accept_event, 300 );
0005f 68 2c 01 00 00 push 300 ; 0000012cH
00064 8b 45 e4 mov eax, DWORD PTR _piocp$9[ebp]
00067 8b 88 d4 00 00
00 mov ecx, DWORD PTR [eax+212]
0006d 51 push ecx
0006e ff 15 00 00 00
00 call DWORD PTR __imp__WaitForSingleObject@8
00074 89 45 e0 mov DWORD PTR _dwRet$8[ebp], eax
; 884 : switch( dwRet )
00077 8b 45 e0 mov eax, DWORD PTR _dwRet$8[ebp]
0007a 89 85 20 e6 ff
ff mov DWORD PTR tv73[ebp], eax
00080 83 bd 20 e6 ff
ff 00 cmp DWORD PTR tv73[ebp], 0
00087 0f 84 80 00 00
00 je $LN9@MainLoop
0008d 83 bd 20 e6 ff
ff ff cmp DWORD PTR tv73[ebp], -1
00094 74 02 je SHORT $LN7@MainLoop
00096 eb 7d jmp SHORT $LN4@MainLoop
$LN7@MainLoop:
; 885 : {
; 886 : case WAIT_FAILED:
; 887 : {
; 888 :
; 889 : CString str;
00098 8d 4d dc lea ecx, DWORD PTR _str$7[ebp]
0009b e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
000a0 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
; 890 : str.Format( _T("Accept_Event Error:%d") , GetLastError());
000a4 ff 15 00 00 00
00 call DWORD PTR __imp__GetLastError@0
000aa 50 push eax
000ab 68 00 00 00 00 push OFFSET ??_C@_1CM@OPBDNDPO@?$AAA?$AAc?$AAc?$AAe?$AAp?$AAt?$AA_?$AAE?$AAv?$AAe?$AAn?$AAt?$AA?5?$AAE?$AAr@
000b0 8d 45 dc lea eax, DWORD PTR _str$7[ebp]
000b3 50 push eax
000b4 e8 00 00 00 00 call ?Format@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAAXPB_WZZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::Format
000b9 83 c4 0c add esp, 12 ; 0000000cH
; 891 : piocp->m_pDlg->AddLog(str);
000bc 8b 45 e4 mov eax, DWORD PTR _piocp$9[ebp]
000bf 8b 48 04 mov ecx, DWORD PTR [eax+4]
000c2 89 8d 20 e6 ff
ff mov DWORD PTR tv94[ebp], ecx
000c8 8d 4d dc lea ecx, DWORD PTR _str$7[ebp]
000cb e8 00 00 00 00 call ??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ; ATL::CSimpleStringT<wchar_t,0>::operator wchar_t const *
000d0 89 85 1c e6 ff
ff mov DWORD PTR tv92[ebp], eax
000d6 6a 00 push 0
000d8 8b 95 1c e6 ff
ff mov edx, DWORD PTR tv92[ebp]
000de 52 push edx
000df 8b 8d 20 e6 ff
ff mov ecx, DWORD PTR tv94[ebp]
000e5 e8 00 00 00 00 call ?AddLog@CSmsCenterDlg@@QAEXPB_WJ@Z ; CSmsCenterDlg::AddLog
; 892 : piocp->m_pDlg->ON_TD_StopAll2(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
000ea 8b 45 e4 mov eax, DWORD PTR _piocp$9[ebp]
000ed 8b 48 04 mov ecx, DWORD PTR [eax+4]
000f0 e8 00 00 00 00 call ?ON_TD_StopAll2@CSmsCenterDlg@@QAEXXZ ; CSmsCenterDlg::ON_TD_StopAll2
; 893 :
; 894 : piocp->PostAcceptEx();
000f5 8b 4d e4 mov ecx, DWORD PTR _piocp$9[ebp]
000f8 e8 00 00 00 00 call ?PostAcceptEx@CIOCP@@QAEHXZ ; CIOCP::PostAcceptEx
; 895 :
; 896 : //AfxMessageBox( _T("accept_event Error!") );
; 897 : //PostQueuedCompletionStatus( m_h_iocp, 0, 0, NULL );
; 898 : //return FALSE;
; 899 :
; 900 : }
000fd c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
00101 8d 4d dc lea ecx, DWORD PTR _str$7[ebp]
00104 e8 00 00 00 00 call ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
; 901 : break;
00109 eb 0a jmp SHORT $LN4@MainLoop
; 902 : case WAIT_TIMEOUT:
; 903 : {
; 904 : //CheckForInvalidConnection();
; 905 : }
; 906 : break;
0010b eb 08 jmp SHORT $LN4@MainLoop
$LN9@MainLoop:
; 907 : case WAIT_OBJECT_0: //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6>ù<EFBFBD><C3B9>˵<EFBFBD><CBB5><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ٴη<D9B4><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 908 : {
; 909 : piocp->PostAcceptEx();
0010d 8b 4d e4 mov ecx, DWORD PTR _piocp$9[ebp]
00110 e8 00 00 00 00 call ?PostAcceptEx@CIOCP@@QAEHXZ ; CIOCP::PostAcceptEx
$LN4@MainLoop:
; 910 : }
; 911 : break;
; 912 : }
; 913 : /*
; 914 : #ifndef UNICODE
; 915 : dwRet = WaitForSingleObject( piocp->m_h_accept_event2, 300 );
; 916 : switch( dwRet )
; 917 : {
; 918 : case WAIT_FAILED:
; 919 : {
; 920 : AfxMessageBox( _T("accept_event2 Error!") );
; 921 : //PostQueuedCompletionStatus( m_h_iocp, 0, 0, NULL );
; 922 : //return FALSE;
; 923 : }
; 924 : break;
; 925 : case WAIT_TIMEOUT:
; 926 : {
; 927 : //CheckForInvalidConnection();
; 928 : }
; 929 : break;
; 930 : case WAIT_OBJECT_0: //<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6>ù<EFBFBD><C3B9>˵<EFBFBD><CBB5><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ٴη<D9B4><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 931 : {
; 932 : piocp->PostAcceptEx2();
; 933 : }
; 934 : break;
; 935 : }
; 936 : #endif
; 937 : */
; 938 : /*
; 939 : nCount ++;
; 940 : if ( nCount>5 ) //ÿ5<C3BF><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>γ<EFBFBD>ʱ
; 941 : {
; 942 : nCount=0;
; 943 : //ÿ<><C3BF>event<6E>ȴ<EFBFBD>1<EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EBA3AC><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>socket
; 944 : piocp->CheckForInvalidConnection();
; 945 : }
; 946 : */
; 947 : }
00115 e9 35 ff ff ff jmp $LN2@MainLoop
$LN3@MainLoop:
; 948 : return TRUE;
0011a c7 85 30 e6 ff
ff 01 00 00 00 mov DWORD PTR $T5[ebp], 1
00124 c6 45 fc 00 mov BYTE PTR __$EHRec$[ebp+12], 0
00128 8d 4d eb lea ecx, DWORD PTR _AutoCoInit$10[ebp]
0012b e8 00 00 00 00 call ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
00130 8b 85 30 e6 ff
ff mov eax, DWORD PTR $T5[ebp]
00136 e9 b6 00 00 00 jmp $LN1@MainLoop
__catch$?MainLoop@CIOCP@@SGKPAX@Z$0:
; 949 : }
; 950 : catch(...)
; 951 : {
; 952 : LOG_APPERROR(_T("T"));
0013b 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00141 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
00146 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
0014a 51 push ecx
0014b 8b cc mov ecx, esp
0014d 89 a5 2c e6 ff
ff mov DWORD PTR $T4[ebp], esp
00153 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
00158 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
0015d 89 85 20 e6 ff
ff mov DWORD PTR tv134[ebp], eax
00163 c6 45 fc 05 mov BYTE PTR __$EHRec$[ebp+12], 5
00167 51 push ecx
00168 8b cc mov ecx, esp
0016a 89 a5 28 e6 ff
ff mov DWORD PTR $T3[ebp], esp
00170 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
00175 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
0017a 89 85 1c e6 ff
ff mov DWORD PTR tv75[ebp], eax
00180 c6 45 fc 06 mov BYTE PTR __$EHRec$[ebp+12], 6
00184 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
00188 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
0018e e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
00193 a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??MainLoop@CIOCP@@SGKPAX@Z@4JA
00198 83 c0 4e add eax, 78 ; 0000004eH
0019b 50 push eax
0019c 68 00 00 00 00 push OFFSET ??_C@_08JEEIGPMO@MainLoop@
001a1 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
001a6 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
001ab 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
001b1 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
001b6 c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
001ba 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
001c0 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 953 : return false;
001c5 c7 85 24 e6 ff
ff 00 00 00 00 mov DWORD PTR $T2[ebp], 0
001cf b8 00 00 00 00 mov eax, $LN19@MainLoop
001d4 c3 ret 0
; 954 : }
001d5 b8 00 00 00 00 mov eax, __tryend$?MainLoop@CIOCP@@SGKPAX@Z$1
001da c3 ret 0
__tryend$?MainLoop@CIOCP@@SGKPAX@Z$1:
001db c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
001e2 eb 0d jmp SHORT $LN1@MainLoop
$LN19@MainLoop:
001e4 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
; 953 : return false;
001eb 8b 85 24 e6 ff
ff mov eax, DWORD PTR $T2[ebp]
$LN1@MainLoop:
; 955 : }
001f1 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
001f4 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
001fb 59 pop ecx
001fc 5f pop edi
001fd 5e pop esi
001fe 5b pop ebx
001ff 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
00202 33 cd xor ecx, ebp
00204 e8 00 00 00 00 call @__security_check_cookie@4
00209 8b e5 mov esp, ebp
0020b 5d pop ebp
0020c c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$2:
00000 8d 4d eb lea ecx, DWORD PTR _AutoCoInit$10[ebp]
00003 e9 00 00 00 00 jmp ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$3:
00008 8d 4d dc lea ecx, DWORD PTR _str$7[ebp]
0000b e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$4:
00010 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00016 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$5:
0001b 8b 8d 2c e6 ff
ff mov ecx, DWORD PTR $T4[ebp]
00021 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?MainLoop@CIOCP@@SGKPAX@Z$6:
00026 8b 8d 28 e6 ff
ff mov ecx, DWORD PTR $T3[ebp]
0002c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00031 cc int 3
00032 cc int 3
00033 cc int 3
00034 cc int 3
00035 cc int 3
__ehhandler$?MainLoop@CIOCP@@SGKPAX@Z:
00036 90 npad 1
00037 90 npad 1
00038 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0003c 8d 42 0c lea eax, DWORD PTR [edx+12]
0003f 8b 8a 18 e6 ff
ff mov ecx, DWORD PTR [edx-6632]
00045 33 c8 xor ecx, eax
00047 e8 00 00 00 00 call @__security_check_cookie@4
0004c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0004f 33 c8 xor ecx, eax
00051 e8 00 00 00 00 call @__security_check_cookie@4
00056 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?MainLoop@CIOCP@@SGKPAX@Z
0005b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?MainLoop@CIOCP@@SGKPAX@Z ENDP ; CIOCP::MainLoop
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?Init@CIOCP@@QAEHXZ
_TEXT SEGMENT
tv73 = -484 ; size = 4
_data$ = -416 ; size = 400
_b2$ = -16 ; size = 4
_b1$ = -12 ; size = 4
_this$ = -8 ; size = 4
__$ArrayPad$ = -4 ; size = 4
?Init@CIOCP@@QAEHXZ PROC ; CIOCP::Init, COMDAT
; _this$ = ecx
; 741 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 81 ec e4 01 00
00 sub esp, 484 ; 000001e4H
00009 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0000e 33 c5 xor eax, ebp
00010 89 45 fc mov DWORD PTR __$ArrayPad$[ebp], eax
00013 53 push ebx
00014 56 push esi
00015 57 push edi
00016 89 4d f8 mov DWORD PTR _this$[ebp], ecx
; 742 : BOOL b1;
; 743 : BOOL b2;
; 744 : WSAData data;
; 745 : if( WSAStartup( MAKEWORD(2,2),&data) != 0 )
00019 8d 85 60 fe ff
ff lea eax, DWORD PTR _data$[ebp]
0001f 50 push eax
00020 68 02 02 00 00 push 514 ; 00000202H
00025 ff 15 00 00 00
00 call DWORD PTR __imp__WSAStartup@8
0002b 85 c0 test eax, eax
0002d 74 07 je SHORT $LN2@Init
; 746 : {
; 747 : //cout<<"WSAStartup fail!"<<WSAGetLastError() << endl;
; 748 : return FALSE;
0002f 33 c0 xor eax, eax
00031 e9 07 02 00 00 jmp $LN1@Init
$LN2@Init:
; 749 : }
; 750 :
; 751 : m_KeyList.Init(m_pDlg);
00036 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00039 83 c0 08 add eax, 8
0003c 89 85 1c fe ff
ff mov DWORD PTR tv73[ebp], eax
00042 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00045 8b 51 04 mov edx, DWORD PTR [ecx+4]
00048 52 push edx
00049 8b 8d 1c fe ff
ff mov ecx, DWORD PTR tv73[ebp]
0004f e8 00 00 00 00 call ?Init@CKeyList@@QAEXPAVCSmsCenterDlg@@@Z ; CKeyList::Init
; 752 : m_h_iocp = CreateIoCompletionPort( INVALID_HANDLE_VALUE, NULL, NULL, 0 );
00054 6a 00 push 0
00056 6a 00 push 0
00058 6a 00 push 0
0005a 6a ff push -1
0005c ff 15 00 00 00
00 call DWORD PTR __imp__CreateIoCompletionPort@16
00062 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00065 89 41 28 mov DWORD PTR [ecx+40], eax
; 753 :
; 754 : if( NULL == m_h_iocp )
00068 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
0006b 83 78 28 00 cmp DWORD PTR [eax+40], 0
0006f 75 07 jne SHORT $LN3@Init
; 755 : {
; 756 : //cout << "CreateIoCompletionPort() failed: " << GetLastError() << endl;
; 757 : return FALSE;
00071 33 c0 xor eax, eax
00073 e9 c5 01 00 00 jmp $LN1@Init
$LN3@Init:
; 758 : }
; 759 :
; 760 : if( !StartThread() )
00078 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
0007b e8 00 00 00 00 call ?StartThread@CIOCP@@AAEHXZ ; CIOCP::StartThread
00080 85 c0 test eax, eax
00082 75 0f jne SHORT $LN4@Init
; 761 : {
; 762 : //cout<<"start thread fail!"<<endl;
; 763 :
; 764 : Close();
00084 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00087 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 765 : //PostQueuedCompletionStatus( m_h_iocp, 0, NULL, NULL );
; 766 : //CloseHandle( m_h_iocp );
; 767 : return FALSE;
0008c 33 c0 xor eax, eax
0008e e9 aa 01 00 00 jmp $LN1@Init
$LN4@Init:
; 768 : }
; 769 :
; 770 : if( !InitSocket() )
00093 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00096 e8 00 00 00 00 call ?InitSocket@CIOCP@@AAEHXZ ; CIOCP::InitSocket
0009b 85 c0 test eax, eax
0009d 75 0f jne SHORT $LN5@Init
; 771 : {
; 772 : Close();
0009f 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
000a2 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 773 : //PostQueuedCompletionStatus( m_h_iocp, 0, NULL, NULL );
; 774 : //CloseHandle( m_h_iocp );
; 775 : return FALSE;
000a7 33 c0 xor eax, eax
000a9 e9 8f 01 00 00 jmp $LN1@Init
$LN5@Init:
; 776 : }
; 777 :
; 778 : if ( !BindAndListenSocket() ) //<2F>󶨶˿<F3B6A8B6>1
000ae 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
000b1 e8 00 00 00 00 call ?BindAndListenSocket@CIOCP@@QAEHXZ ; CIOCP::BindAndListenSocket
000b6 85 c0 test eax, eax
000b8 75 0f jne SHORT $LN6@Init
; 779 : {
; 780 : Close();
000ba 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
000bd e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 781 : return FALSE;
000c2 33 c0 xor eax, eax
000c4 e9 74 01 00 00 jmp $LN1@Init
$LN6@Init:
; 782 : }
; 783 :
; 784 : m_bInitSocket2=false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7890<39>˿<EFBFBD>
000c9 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
000cc c7 40 38 00 00
00 00 mov DWORD PTR [eax+56], 0
; 785 : /*
; 786 : #ifndef UNICODE
; 787 : if ( !BindAndListenSocket2()) //<2F>󶨶˿<F3B6A8B6>2
; 788 : {
; 789 : Close();
; 790 : return FALSE;
; 791 : }
; 792 : #endif
; 793 : */
; 794 : if( !m_bInitSocket && !m_bInitSocket2 ) //<2F><><EFBFBD><EFBFBD><EFBFBD>˿ڳ<CBBF>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
000d3 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
000d6 83 78 30 00 cmp DWORD PTR [eax+48], 0
000da 75 18 jne SHORT $LN7@Init
000dc 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
000df 83 78 38 00 cmp DWORD PTR [eax+56], 0
000e3 75 0f jne SHORT $LN7@Init
; 795 : {
; 796 : Close();
000e5 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
000e8 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 797 : //PostQueuedCompletionStatus( m_h_iocp, 0, NULL, NULL );
; 798 : //CloseHandle( m_h_iocp );
; 799 : //CloseMainSocket();
; 800 :
; 801 : return FALSE;
000ed 33 c0 xor eax, eax
000ef e9 49 01 00 00 jmp $LN1@Init
$LN7@Init:
; 802 : }
; 803 : if ( !GetFunPointer() )
000f4 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
000f7 e8 00 00 00 00 call ?GetFunPointer@CIOCP@@QAEHXZ ; CIOCP::GetFunPointer
000fc 85 c0 test eax, eax
000fe 75 0f jne SHORT $LN8@Init
; 804 : {
; 805 : Close();
00100 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00103 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 806 : //PostQueuedCompletionStatus( m_h_iocp, 0, NULL, NULL );
; 807 : //CloseHandle( m_h_iocp );
; 808 : //CloseMainSocket();
; 809 :
; 810 : return FALSE;
00108 33 c0 xor eax, eax
0010a e9 2e 01 00 00 jmp $LN1@Init
$LN8@Init:
; 811 : }
; 812 :
; 813 : b1 = true;
0010f c7 45 f4 01 00
00 00 mov DWORD PTR _b1$[ebp], 1
; 814 : if (m_bInitSocket)
00116 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00119 83 78 30 00 cmp DWORD PTR [eax+48], 0
0011d 74 0b je SHORT $LN9@Init
; 815 : b1=PostAcceptEx();
0011f 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00122 e8 00 00 00 00 call ?PostAcceptEx@CIOCP@@QAEHXZ ; CIOCP::PostAcceptEx
00127 89 45 f4 mov DWORD PTR _b1$[ebp], eax
$LN9@Init:
; 816 : b2 = true;
0012a c7 45 f0 01 00
00 00 mov DWORD PTR _b2$[ebp], 1
; 817 : if (m_bInitSocket2)
00131 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00134 83 78 38 00 cmp DWORD PTR [eax+56], 0
00138 74 0b je SHORT $LN10@Init
; 818 : b2=PostAcceptEx2();
0013a 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
0013d e8 00 00 00 00 call ?PostAcceptEx2@CIOCP@@QAEHXZ ; CIOCP::PostAcceptEx2
00142 89 45 f0 mov DWORD PTR _b2$[ebp], eax
$LN10@Init:
; 819 :
; 820 : if ( !b1 && !b2 )
00145 83 7d f4 00 cmp DWORD PTR _b1$[ebp], 0
00149 75 15 jne SHORT $LN11@Init
0014b 83 7d f0 00 cmp DWORD PTR _b2$[ebp], 0
0014f 75 0f jne SHORT $LN11@Init
; 821 : {
; 822 : Close();
00151 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00154 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 823 : //PostQueuedCompletionStatus( m_h_iocp, 0, NULL, NULL );
; 824 : //CloseHandle( m_h_iocp );
; 825 : //CloseMainSocket();
; 826 :
; 827 : return FALSE;
00159 33 c0 xor eax, eax
0015b e9 dd 00 00 00 jmp $LN1@Init
$LN11@Init:
; 828 : }
; 829 :
; 830 : b1 = true;
00160 c7 45 f4 01 00
00 00 mov DWORD PTR _b1$[ebp], 1
; 831 : if (m_bInitSocket)
00167 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
0016a 83 78 30 00 cmp DWORD PTR [eax+48], 0
0016e 74 0b je SHORT $LN12@Init
; 832 : b1=RegAcceptEvent();
00170 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00173 e8 00 00 00 00 call ?RegAcceptEvent@CIOCP@@QAEHXZ ; CIOCP::RegAcceptEvent
00178 89 45 f4 mov DWORD PTR _b1$[ebp], eax
$LN12@Init:
; 833 : b2 = true;
0017b c7 45 f0 01 00
00 00 mov DWORD PTR _b2$[ebp], 1
; 834 : if (m_bInitSocket2)
00182 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00185 83 78 38 00 cmp DWORD PTR [eax+56], 0
00189 74 0b je SHORT $LN13@Init
; 835 : b1=RegAcceptEvent2();
0018b 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
0018e e8 00 00 00 00 call ?RegAcceptEvent2@CIOCP@@QAEHXZ ; CIOCP::RegAcceptEvent2
00193 89 45 f4 mov DWORD PTR _b1$[ebp], eax
$LN13@Init:
; 836 : if ( !b1 && !b2 )
00196 83 7d f4 00 cmp DWORD PTR _b1$[ebp], 0
0019a 75 15 jne SHORT $LN14@Init
0019c 83 7d f0 00 cmp DWORD PTR _b2$[ebp], 0
001a0 75 0f jne SHORT $LN14@Init
; 837 : {
; 838 : Close();
001a2 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
001a5 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 839 : //PostQueuedCompletionStatus( m_h_iocp, 0, NULL, NULL );
; 840 : //CloseHandle( m_h_iocp );
; 841 : //CloseMainSocket();
; 842 :
; 843 : return FALSE;
001aa 33 c0 xor eax, eax
001ac e9 8c 00 00 00 jmp $LN1@Init
$LN14@Init:
; 844 : }
; 845 : m_bInit = true;
001b1 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
001b4 c7 40 3c 01 00
00 00 mov DWORD PTR [eax+60], 1
; 846 :
; 847 : m_bQuit = false; //<2F><><EFBFBD>̲߳<DFB3><CCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>
001bb 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
001be c7 80 e4 00 00
00 00 00 00 00 mov DWORD PTR [eax+228], 0
; 848 : m_h_MainLoop = CreateThread( NULL, 0, MainLoop, (LPVOID)this, 0, NULL );
001c8 6a 00 push 0
001ca 6a 00 push 0
001cc 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
001cf 50 push eax
001d0 68 00 00 00 00 push OFFSET ?MainLoop@CIOCP@@SGKPAX@Z ; CIOCP::MainLoop
001d5 6a 00 push 0
001d7 6a 00 push 0
001d9 ff 15 00 00 00
00 call DWORD PTR __imp__CreateThread@24
001df 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
001e2 89 81 dc 00 00
00 mov DWORD PTR [ecx+220], eax
; 849 : if ( m_h_MainLoop == INVALID_HANDLE_VALUE ) //<2F><><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
001e8 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
001eb 83 b8 dc 00 00
00 ff cmp DWORD PTR [eax+220], -1
001f2 75 0c jne SHORT $LN15@Init
; 850 : {
; 851 : this->Close();
001f4 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
001f7 e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 852 : return false;
001fc 33 c0 xor eax, eax
001fe eb 3d jmp SHORT $LN1@Init
$LN15@Init:
; 853 : }
; 854 :
; 855 : //if( m_bInitSocket2 )
; 856 : //{
; 857 : m_h_MainLoop2 = CreateThread( NULL, 0, MainLoop2, (LPVOID)this, 0, NULL );
00200 6a 00 push 0
00202 6a 00 push 0
00204 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00207 50 push eax
00208 68 00 00 00 00 push OFFSET ?MainLoop2@CIOCP@@SGKPAX@Z ; CIOCP::MainLoop2
0020d 6a 00 push 0
0020f 6a 00 push 0
00211 ff 15 00 00 00
00 call DWORD PTR __imp__CreateThread@24
00217 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
0021a 89 81 e0 00 00
00 mov DWORD PTR [ecx+224], eax
; 858 : if ( m_h_MainLoop2 == INVALID_HANDLE_VALUE ) //<2F><><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
00220 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00223 83 b8 e0 00 00
00 ff cmp DWORD PTR [eax+224], -1
0022a 75 0c jne SHORT $LN16@Init
; 859 : {
; 860 : this->Close();
0022c 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
0022f e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 861 : return false;
00234 33 c0 xor eax, eax
00236 eb 05 jmp SHORT $LN1@Init
$LN16@Init:
; 862 : }
; 863 : //}
; 864 :
; 865 : return TRUE;
00238 b8 01 00 00 00 mov eax, 1
$LN1@Init:
; 866 : }
0023d 5f pop edi
0023e 5e pop esi
0023f 5b pop ebx
00240 8b 4d fc mov ecx, DWORD PTR __$ArrayPad$[ebp]
00243 33 cd xor ecx, ebp
00245 e8 00 00 00 00 call @__security_check_cookie@4
0024a 8b e5 mov esp, ebp
0024c 5d pop ebp
0024d c3 ret 0
?Init@CIOCP@@QAEHXZ ENDP ; CIOCP::Init
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?CloseMainSocket@CIOCP@@QAEXXZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
?CloseMainSocket@CIOCP@@QAEXXZ PROC ; CIOCP::CloseMainSocket, COMDAT
; _this$ = ecx
; 1179 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1180 : CloseOneSocket(m_listen_socket);
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 83 c0 2c add eax, 44 ; 0000002cH
00012 50 push eax
00013 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00016 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 1181 : CloseOneSocket(m_listen_socket2);
0001b 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0001e 83 c0 34 add eax, 52 ; 00000034H
00021 50 push eax
00022 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00025 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 1182 : }
0002a 5f pop edi
0002b 5e pop esi
0002c 5b pop ebx
0002d 8b e5 mov esp, ebp
0002f 5d pop ebp
00030 c3 ret 0
?CloseMainSocket@CIOCP@@QAEXXZ ENDP ; CIOCP::CloseMainSocket
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?BindAndListenSocket@CIOCP@@QAEHXZ
_TEXT SEGMENT
_er$1 = -32 ; size = 4
_nRet$ = -28 ; size = 4
_addr$ = -24 ; size = 16
_this$ = -8 ; size = 4
__$ArrayPad$ = -4 ; size = 4
?BindAndListenSocket@CIOCP@@QAEHXZ PROC ; CIOCP::BindAndListenSocket, COMDAT
; _this$ = ecx
; 195 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 60 sub esp, 96 ; 00000060H
00006 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0000b 33 c5 xor eax, ebp
0000d 89 45 fc mov DWORD PTR __$ArrayPad$[ebp], eax
00010 53 push ebx
00011 56 push esi
00012 57 push edi
00013 89 4d f8 mov DWORD PTR _this$[ebp], ecx
; 196 : SOCKADDR_IN addr;
; 197 :
; 198 : memset( &addr, 0, sizeof(SOCKADDR_IN) );
00016 6a 10 push 16 ; 00000010H
00018 6a 00 push 0
0001a 8d 45 e8 lea eax, DWORD PTR _addr$[ebp]
0001d 50 push eax
0001e e8 00 00 00 00 call _memset
00023 83 c4 0c add esp, 12 ; 0000000cH
; 199 :
; 200 : addr.sin_family = AF_INET;
00026 b8 02 00 00 00 mov eax, 2
0002b 66 89 45 e8 mov WORD PTR _addr$[ebp], ax
; 201 : //addr.sin_addr.s_addr = inet_addr( ADDR );
; 202 : //addr.sin_addr.s_addr = htonl(INADDR_ANY);
; 203 : addr.sin_addr.s_addr = m_pDlg->m_Setup.addr;
0002f 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00032 8b 48 04 mov ecx, DWORD PTR [eax+4]
00035 8b 91 08 12 00
00 mov edx, DWORD PTR [ecx+4616]
0003b 89 55 ec mov DWORD PTR _addr$[ebp+4], edx
; 204 : #ifdef UNICODE
; 205 : addr.sin_port = htons( DEFAULT_SERVERPORT_UNI );
0003e 68 fe 07 00 00 push 2046 ; 000007feH
00043 ff 15 00 00 00
00 call DWORD PTR __imp__htons@4
00049 66 89 45 ea mov WORD PTR _addr$[ebp+2], ax
; 206 : #else
; 207 : addr.sin_port = htons( DEFAULT_LISTENPORT );
; 208 : #endif
; 209 :
; 210 :
; 211 : int nRet;
; 212 :
; 213 : nRet = bind( m_listen_socket, (SOCKADDR*)&addr, sizeof( SOCKADDR ) );
0004d 6a 10 push 16 ; 00000010H
0004f 8d 45 e8 lea eax, DWORD PTR _addr$[ebp]
00052 50 push eax
00053 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00056 8b 51 2c mov edx, DWORD PTR [ecx+44]
00059 52 push edx
0005a ff 15 00 00 00
00 call DWORD PTR __imp__bind@12
00060 89 45 e4 mov DWORD PTR _nRet$[ebp], eax
; 214 :
; 215 : if( SOCKET_ERROR == nRet || SOCKET_ERROR == nRet)
00063 83 7d e4 ff cmp DWORD PTR _nRet$[ebp], -1
00067 74 06 je SHORT $LN3@BindAndLis
00069 83 7d e4 ff cmp DWORD PTR _nRet$[ebp], -1
0006d 75 0d jne SHORT $LN2@BindAndLis
$LN3@BindAndLis:
; 216 : {
; 217 : //cout<<"bind fail!"<<endl;
; 218 : int er = WSAGetLastError();
0006f ff 15 00 00 00
00 call DWORD PTR __imp__WSAGetLastError@0
00075 89 45 e0 mov DWORD PTR _er$1[ebp], eax
; 219 : return FALSE;
00078 33 c0 xor eax, eax
0007a eb 2b jmp SHORT $LN1@BindAndLis
$LN2@BindAndLis:
; 220 : }
; 221 :
; 222 : nRet = listen( m_listen_socket, 50 );
0007c 6a 32 push 50 ; 00000032H
0007e 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00081 8b 48 2c mov ecx, DWORD PTR [eax+44]
00084 51 push ecx
00085 ff 15 00 00 00
00 call DWORD PTR __imp__listen@8
0008b 89 45 e4 mov DWORD PTR _nRet$[ebp], eax
; 223 :
; 224 : if( SOCKET_ERROR == nRet )
0008e 83 7d e4 ff cmp DWORD PTR _nRet$[ebp], -1
00092 75 04 jne SHORT $LN4@BindAndLis
; 225 : {
; 226 : //cout<<"listen fail!"<<endl;
; 227 : return FALSE;
00094 33 c0 xor eax, eax
00096 eb 0f jmp SHORT $LN1@BindAndLis
$LN4@BindAndLis:
; 228 : }
; 229 : m_bInitSocket = true;
00098 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
0009b c7 40 30 01 00
00 00 mov DWORD PTR [eax+48], 1
; 230 : return TRUE;
000a2 b8 01 00 00 00 mov eax, 1
$LN1@BindAndLis:
; 231 : }
000a7 5f pop edi
000a8 5e pop esi
000a9 5b pop ebx
000aa 8b 4d fc mov ecx, DWORD PTR __$ArrayPad$[ebp]
000ad 33 cd xor ecx, ebp
000af e8 00 00 00 00 call @__security_check_cookie@4
000b4 8b e5 mov esp, ebp
000b6 5d pop ebp
000b7 c3 ret 0
?BindAndListenSocket@CIOCP@@QAEHXZ ENDP ; CIOCP::BindAndListenSocket
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?BindAndListenSocket2@CIOCP@@QAEHXZ
_TEXT SEGMENT
_nRet$ = -28 ; size = 4
_addr$ = -24 ; size = 16
_this$ = -8 ; size = 4
__$ArrayPad$ = -4 ; size = 4
?BindAndListenSocket2@CIOCP@@QAEHXZ PROC ; CIOCP::BindAndListenSocket2, COMDAT
; _this$ = ecx
; 1185 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 5c sub esp, 92 ; 0000005cH
00006 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0000b 33 c5 xor eax, ebp
0000d 89 45 fc mov DWORD PTR __$ArrayPad$[ebp], eax
00010 53 push ebx
00011 56 push esi
00012 57 push edi
00013 89 4d f8 mov DWORD PTR _this$[ebp], ecx
; 1186 : SOCKADDR_IN addr;
; 1187 :
; 1188 : memset( &addr, 0, sizeof(SOCKADDR_IN) );
00016 6a 10 push 16 ; 00000010H
00018 6a 00 push 0
0001a 8d 45 e8 lea eax, DWORD PTR _addr$[ebp]
0001d 50 push eax
0001e e8 00 00 00 00 call _memset
00023 83 c4 0c add esp, 12 ; 0000000cH
; 1189 :
; 1190 : addr.sin_family = AF_INET;
00026 b8 02 00 00 00 mov eax, 2
0002b 66 89 45 e8 mov WORD PTR _addr$[ebp], ax
; 1191 : //addr.sin_addr.s_addr = inet_addr( ADDR );
; 1192 : //addr.sin_addr.s_addr = htonl(INADDR_ANY);
; 1193 : addr.sin_addr.s_addr = m_pDlg->m_Setup.addr;
0002f 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00032 8b 48 04 mov ecx, DWORD PTR [eax+4]
00035 8b 91 08 12 00
00 mov edx, DWORD PTR [ecx+4616]
0003b 89 55 ec mov DWORD PTR _addr$[ebp+4], edx
; 1194 : addr.sin_port = htons( DEFAULT_LISTENPORT2 );
0003e 68 d2 1e 00 00 push 7890 ; 00001ed2H
00043 ff 15 00 00 00
00 call DWORD PTR __imp__htons@4
00049 66 89 45 ea mov WORD PTR _addr$[ebp+2], ax
; 1195 :
; 1196 :
; 1197 : int nRet;
; 1198 :
; 1199 : nRet = bind( m_listen_socket2, (SOCKADDR*)&addr, sizeof( SOCKADDR ) );
0004d 6a 10 push 16 ; 00000010H
0004f 8d 45 e8 lea eax, DWORD PTR _addr$[ebp]
00052 50 push eax
00053 8b 4d f8 mov ecx, DWORD PTR _this$[ebp]
00056 8b 51 34 mov edx, DWORD PTR [ecx+52]
00059 52 push edx
0005a ff 15 00 00 00
00 call DWORD PTR __imp__bind@12
00060 89 45 e4 mov DWORD PTR _nRet$[ebp], eax
; 1200 :
; 1201 : if( SOCKET_ERROR == nRet )
00063 83 7d e4 ff cmp DWORD PTR _nRet$[ebp], -1
00067 75 04 jne SHORT $LN2@BindAndLis
; 1202 : {
; 1203 : //cout<<"bind fail!"<<endl;
; 1204 : return FALSE;
00069 33 c0 xor eax, eax
0006b eb 2b jmp SHORT $LN1@BindAndLis
$LN2@BindAndLis:
; 1205 : }
; 1206 :
; 1207 : nRet = listen( m_listen_socket2, 20 );
0006d 6a 14 push 20 ; 00000014H
0006f 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
00072 8b 48 34 mov ecx, DWORD PTR [eax+52]
00075 51 push ecx
00076 ff 15 00 00 00
00 call DWORD PTR __imp__listen@8
0007c 89 45 e4 mov DWORD PTR _nRet$[ebp], eax
; 1208 :
; 1209 : if( SOCKET_ERROR == nRet )
0007f 83 7d e4 ff cmp DWORD PTR _nRet$[ebp], -1
00083 75 04 jne SHORT $LN3@BindAndLis
; 1210 : {
; 1211 : //cout<<"listen fail!"<<endl;
; 1212 : return FALSE;
00085 33 c0 xor eax, eax
00087 eb 0f jmp SHORT $LN1@BindAndLis
$LN3@BindAndLis:
; 1213 : }
; 1214 : m_bInitSocket2 = true;
00089 8b 45 f8 mov eax, DWORD PTR _this$[ebp]
0008c c7 40 38 01 00
00 00 mov DWORD PTR [eax+56], 1
; 1215 : return TRUE;
00093 b8 01 00 00 00 mov eax, 1
$LN1@BindAndLis:
; 1216 : }
00098 5f pop edi
00099 5e pop esi
0009a 5b pop ebx
0009b 8b 4d fc mov ecx, DWORD PTR __$ArrayPad$[ebp]
0009e 33 cd xor ecx, ebp
000a0 e8 00 00 00 00 call @__security_check_cookie@4
000a5 8b e5 mov esp, ebp
000a7 5d pop ebp
000a8 c3 ret 0
?BindAndListenSocket2@CIOCP@@QAEHXZ ENDP ; CIOCP::BindAndListenSocket2
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?GetFunPointer@CIOCP@@QAEHXZ
_TEXT SEGMENT
_nRet$ = -12 ; size = 4
_dwRet$ = -8 ; size = 4
_this$ = -4 ; size = 4
?GetFunPointer@CIOCP@@QAEHXZ PROC ; CIOCP::GetFunPointer, COMDAT
; _this$ = ecx
; 559 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 4c sub esp, 76 ; 0000004cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 560 : DWORD dwRet,nRet;
; 561 :
; 562 : nRet = WSAIoctl(
0000c 6a 00 push 0
0000e 6a 00 push 0
00010 8d 45 f8 lea eax, DWORD PTR _dwRet$[ebp]
00013 50 push eax
00014 6a 04 push 4
00016 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00019 83 c1 44 add ecx, 68 ; 00000044H
0001c 51 push ecx
0001d 6a 10 push 16 ; 00000010H
0001f 68 00 00 00 00 push OFFSET ?g_GUIDAcceptEx@@3U_GUID@@A
00024 68 06 00 00 c8 push -939524090 ; c8000006H
00029 8b 55 fc mov edx, DWORD PTR _this$[ebp]
0002c 8b 42 2c mov eax, DWORD PTR [edx+44]
0002f 50 push eax
00030 ff 15 00 00 00
00 call DWORD PTR __imp__WSAIoctl@36
00036 89 45 f4 mov DWORD PTR _nRet$[ebp], eax
; 563 : m_listen_socket,
; 564 : SIO_GET_EXTENSION_FUNCTION_POINTER,
; 565 : &g_GUIDAcceptEx,
; 566 : sizeof(g_GUIDAcceptEx),
; 567 : &lpAcceptEx,
; 568 : sizeof(lpAcceptEx),
; 569 : &dwRet,NULL,NULL);
; 570 :
; 571 : if( SOCKET_ERROR == nRet )
00039 83 7d f4 ff cmp DWORD PTR _nRet$[ebp], -1
0003d 75 16 jne SHORT $LN2@GetFunPoin
; 572 : {
; 573 : CloseOneSocket(m_listen_socket);
0003f 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00042 83 c0 2c add eax, 44 ; 0000002cH
00045 50 push eax
00046 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00049 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 574 : //cout<<"get acceptex fail!"<<WSAGetLastError()<<endl;
; 575 : return FALSE;
0004e 33 c0 xor eax, eax
00050 e9 91 00 00 00 jmp $LN1@GetFunPoin
$LN2@GetFunPoin:
; 576 : }
; 577 :
; 578 : nRet = WSAIoctl(
00055 6a 00 push 0
00057 6a 00 push 0
00059 8d 45 f8 lea eax, DWORD PTR _dwRet$[ebp]
0005c 50 push eax
0005d 6a 04 push 4
0005f 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00062 83 c1 40 add ecx, 64 ; 00000040H
00065 51 push ecx
00066 6a 10 push 16 ; 00000010H
00068 68 00 00 00 00 push OFFSET ?g_GUIDTransmitFile@@3U_GUID@@A
0006d 68 06 00 00 c8 push -939524090 ; c8000006H
00072 8b 55 fc mov edx, DWORD PTR _this$[ebp]
00075 8b 42 2c mov eax, DWORD PTR [edx+44]
00078 50 push eax
00079 ff 15 00 00 00
00 call DWORD PTR __imp__WSAIoctl@36
0007f 89 45 f4 mov DWORD PTR _nRet$[ebp], eax
; 579 : m_listen_socket,
; 580 : SIO_GET_EXTENSION_FUNCTION_POINTER,
; 581 : &g_GUIDTransmitFile,
; 582 : sizeof(g_GUIDTransmitFile),
; 583 : &lpTransmitFile,
; 584 : sizeof(lpTransmitFile),
; 585 : &dwRet,NULL,NULL);
; 586 :
; 587 : if(nRet == SOCKET_ERROR )
00082 83 7d f4 ff cmp DWORD PTR _nRet$[ebp], -1
00086 75 13 jne SHORT $LN3@GetFunPoin
; 588 : {
; 589 : CloseOneSocket(m_listen_socket);
00088 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0008b 83 c0 2c add eax, 44 ; 0000002cH
0008e 50 push eax
0008f 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00092 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 590 : //cout<<"get transmitfile fail!"<<WSAGetLastError()<<endl;
; 591 : return FALSE;
00097 33 c0 xor eax, eax
00099 eb 4b jmp SHORT $LN1@GetFunPoin
$LN3@GetFunPoin:
; 592 : }
; 593 :
; 594 : nRet = WSAIoctl(
0009b 6a 00 push 0
0009d 6a 00 push 0
0009f 8d 45 f8 lea eax, DWORD PTR _dwRet$[ebp]
000a2 50 push eax
000a3 6a 04 push 4
000a5 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000a8 83 c1 48 add ecx, 72 ; 00000048H
000ab 51 push ecx
000ac 6a 10 push 16 ; 00000010H
000ae 68 00 00 00 00 push OFFSET ?g_GUIDAcceptExaddrs@@3U_GUID@@A
000b3 68 06 00 00 c8 push -939524090 ; c8000006H
000b8 8b 55 fc mov edx, DWORD PTR _this$[ebp]
000bb 8b 42 2c mov eax, DWORD PTR [edx+44]
000be 50 push eax
000bf ff 15 00 00 00
00 call DWORD PTR __imp__WSAIoctl@36
000c5 89 45 f4 mov DWORD PTR _nRet$[ebp], eax
; 595 : m_listen_socket,
; 596 : SIO_GET_EXTENSION_FUNCTION_POINTER,
; 597 : &g_GUIDAcceptExaddrs,
; 598 : sizeof(g_GUIDAcceptExaddrs),
; 599 : &lpGetAcceptExSockAddrs,
; 600 : sizeof(lpGetAcceptExSockAddrs),
; 601 : &dwRet,NULL,NULL);
; 602 :
; 603 : if(nRet == SOCKET_ERROR )
000c8 83 7d f4 ff cmp DWORD PTR _nRet$[ebp], -1
000cc 75 13 jne SHORT $LN4@GetFunPoin
; 604 : {
; 605 : CloseOneSocket(m_listen_socket);
000ce 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000d1 83 c0 2c add eax, 44 ; 0000002cH
000d4 50 push eax
000d5 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000d8 e8 00 00 00 00 call ?CloseOneSocket@CIOCP@@QAEXAAI@Z ; CIOCP::CloseOneSocket
; 606 : //cout<<"get transmitfile fail!"<<WSAGetLastError()<<endl;
; 607 : return FALSE;
000dd 33 c0 xor eax, eax
000df eb 05 jmp SHORT $LN1@GetFunPoin
$LN4@GetFunPoin:
; 608 : }
; 609 :
; 610 : return TRUE;
000e1 b8 01 00 00 00 mov eax, 1
$LN1@GetFunPoin:
; 611 : }
000e6 5f pop edi
000e7 5e pop esi
000e8 5b pop ebx
000e9 8b e5 mov esp, ebp
000eb 5d pop ebp
000ec c3 ret 0
?GetFunPointer@CIOCP@@QAEHXZ ENDP ; CIOCP::GetFunPointer
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?CloseOneSocket@CIOCP@@QAEXAAI@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_socket$ = 8 ; size = 4
?CloseOneSocket@CIOCP@@QAEXAAI@Z PROC ; CIOCP::CloseOneSocket, COMDAT
; _this$ = ecx
; 1220 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1221 : if ( socket != INVALID_SOCKET )
0000c 8b 45 08 mov eax, DWORD PTR _socket$[ebp]
0000f 83 38 ff cmp DWORD PTR [eax], -1
00012 74 15 je SHORT $LN1@CloseOneSo
; 1222 : {
; 1223 : closesocket(socket);
00014 8b 45 08 mov eax, DWORD PTR _socket$[ebp]
00017 8b 08 mov ecx, DWORD PTR [eax]
00019 51 push ecx
0001a ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 1224 : socket = INVALID_SOCKET;
00020 8b 45 08 mov eax, DWORD PTR _socket$[ebp]
00023 c7 00 ff ff ff
ff mov DWORD PTR [eax], -1
$LN1@CloseOneSo:
; 1225 : }
; 1226 : }
00029 5f pop edi
0002a 5e pop esi
0002b 5b pop ebx
0002c 8b e5 mov esp, ebp
0002e 5d pop ebp
0002f c2 04 00 ret 4
?CloseOneSocket@CIOCP@@QAEXAAI@Z ENDP ; CIOCP::CloseOneSocket
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?PostAcceptEx@CIOCP@@QAEHXZ
_TEXT SEGMENT
tv149 = -104 ; size = 4
tv140 = -104 ; size = 4
_i$1 = -36 ; size = 4
_lp_io$2 = -32 ; size = 4
_ulTemp$3 = -28 ; size = 4
_socket$4 = -24 ; size = 4
_i$5 = -20 ; size = 4
_bRet$ = -16 ; size = 4
_dwBytes$ = -12 ; size = 4
_count$ = -8 ; size = 4
_this$ = -4 ; size = 4
?PostAcceptEx@CIOCP@@QAEHXZ PROC ; CIOCP::PostAcceptEx, COMDAT
; _this$ = ecx
; 273 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 68 sub esp, 104 ; 00000068H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 274 : #ifdef _DEBUG
; 275 : int count = 10;
; 276 : #else
; 277 : int count = 30;
0000c c7 45 f8 1e 00
00 00 mov DWORD PTR _count$[ebp], 30 ; 0000001eH
; 278 : #endif
; 279 :
; 280 : DWORD dwBytes;
; 281 : BOOL bRet;
; 282 :
; 283 : for( int i = 0; i < count; i++ )
00013 c7 45 ec 00 00
00 00 mov DWORD PTR _i$5[ebp], 0
0001a eb 09 jmp SHORT $LN4@PostAccept
$LN2@PostAccept:
0001c 8b 45 ec mov eax, DWORD PTR _i$5[ebp]
0001f 83 c0 01 add eax, 1
00022 89 45 ec mov DWORD PTR _i$5[ebp], eax
$LN4@PostAccept:
00025 8b 45 ec mov eax, DWORD PTR _i$5[ebp]
00028 3b 45 f8 cmp eax, DWORD PTR _count$[ebp]
0002b 0f 8d 21 01 00
00 jge $LN3@PostAccept
; 284 : {
; 285 : SOCKET socket = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED );
00031 6a 01 push 1
00033 6a 00 push 0
00035 6a 00 push 0
00037 6a 06 push 6
00039 6a 01 push 1
0003b 6a 02 push 2
0003d ff 15 00 00 00
00 call DWORD PTR __imp__WSASocketW@24
00043 89 45 e8 mov DWORD PTR _socket$4[ebp], eax
; 286 :
; 287 : if( INVALID_SOCKET == socket )
00046 83 7d e8 ff cmp DWORD PTR _socket$4[ebp], -1
0004a 75 02 jne SHORT $LN5@PostAccept
; 288 : {
; 289 : //cout<<"post accept ex fail!"<<WSAGetLastError()<<endl;
; 290 : continue;
0004c eb ce jmp SHORT $LN2@PostAccept
$LN5@PostAccept:
; 291 : }
; 292 :
; 293 : //<2F><><EFBFBD><EFBFBD>Socket
; 294 : u_long ulTemp=1; //<2F><>SOCKET<45><54><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>SOCKET
0004e c7 45 e4 01 00
00 00 mov DWORD PTR _ulTemp$3[ebp], 1
; 295 : //u_long ulTemp=0; //<2F><>SOCKET<45><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>SOCKET
; 296 : //ioctlsocket( socket,FIONBIO,&ulTemp );
; 297 :
; 298 : ulTemp=128*1024;
00055 c7 45 e4 00 00
02 00 mov DWORD PTR _ulTemp$3[ebp], 131072 ; 00020000H
; 299 : setsockopt( socket , SOL_SOCKET, SO_SNDBUF ,(const char *)&ulTemp ,sizeof(ulTemp)); //<2F><><EFBFBD>
0005c 6a 04 push 4
0005e 8d 45 e4 lea eax, DWORD PTR _ulTemp$3[ebp]
00061 50 push eax
00062 68 01 10 00 00 push 4097 ; 00001001H
00067 68 ff ff 00 00 push 65535 ; 0000ffffH
0006c 8b 4d e8 mov ecx, DWORD PTR _socket$4[ebp]
0006f 51 push ecx
00070 ff 15 00 00 00
00 call DWORD PTR __imp__setsockopt@20
; 300 : ulTemp=64*1024;
00076 c7 45 e4 00 00
01 00 mov DWORD PTR _ulTemp$3[ebp], 65536 ; 00010000H
; 301 : setsockopt( socket , SOL_SOCKET, SO_RCVBUF ,(const char *)&ulTemp ,sizeof(ulTemp)); //<2F><><EFBFBD>
0007d 6a 04 push 4
0007f 8d 45 e4 lea eax, DWORD PTR _ulTemp$3[ebp]
00082 50 push eax
00083 68 02 10 00 00 push 4098 ; 00001002H
00088 68 ff ff 00 00 push 65535 ; 0000ffffH
0008d 8b 4d e8 mov ecx, DWORD PTR _socket$4[ebp]
00090 51 push ecx
00091 ff 15 00 00 00
00 call DWORD PTR __imp__setsockopt@20
; 302 : /*
; 303 : setsockopt( socket, SOL_SOCKET, SO_DONTLINGER,(const char *)&ulTemp,sizeof(BOOL));
; 304 : struct linger {
; 305 : u_short l_onoff;
; 306 : u_short l_linger;
; 307 : };
; 308 : linger m_sLinger;
; 309 : m_sLinger.l_onoff=0;//(<28><>closesocket()<29><><EFBFBD><EFBFBD>,<2C><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
; 310 : // <20><><EFBFBD><EFBFBD>m_sLinger.l_onoff=0;<3B><><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD>2.)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ;
; 311 : m_sLinger.l_linger=0;//(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ5<CEAA><35>)
; 312 : int iLen=sizeof(m_sLinger);
; 313 : int i = setsockopt(socket,SOL_SOCKET,SO_LINGER,(const char*)&m_sLinger,sizeof(linger));
; 314 : */
; 315 : // int lLen=sizeof(ulTemp);
; 316 : // getsockopt( socket , SOL_SOCKET, SO_SNDBUF ,(char *)&ulTemp ,&lLen); //<2F><><EFBFBD>
; 317 :
; 318 : IOCP_IO_PTR lp_io = m_KeyList.GetBlank_IO();
00097 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0009a 83 c1 08 add ecx, 8
0009d e8 00 00 00 00 call ?GetBlank_IO@CKeyList@@QAEPAUIOCP_IO@@XZ ; CKeyList::GetBlank_IO
000a2 89 45 e0 mov DWORD PTR _lp_io$2[ebp], eax
; 319 : if ( lp_io != NULL )
000a5 83 7d e0 00 cmp DWORD PTR _lp_io$2[ebp], 0
000a9 0f 84 97 00 00
00 je $LN6@PostAccept
; 320 : {
; 321 : InitIoContext( lp_io );
000af 8b 45 e0 mov eax, DWORD PTR _lp_io$2[ebp]
000b2 50 push eax
000b3 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000b6 e8 00 00 00 00 call ?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z ; CIOCP::InitIoContext
; 322 : lp_io->socket = socket;
000bb 8b 45 e0 mov eax, DWORD PTR _lp_io$2[ebp]
000be 8b 4d e8 mov ecx, DWORD PTR _socket$4[ebp]
000c1 89 48 14 mov DWORD PTR [eax+20], ecx
; 323 : lp_io->operation = IOCP_ACCEPT;
000c4 8b 45 e0 mov eax, DWORD PTR _lp_io$2[ebp]
000c7 c7 40 18 01 00
00 00 mov DWORD PTR [eax+24], 1
; 324 : lp_io->state = SOCKET_STATE_NOT_CONNECT;
000ce 8b 45 e0 mov eax, DWORD PTR _lp_io$2[ebp]
000d1 c7 40 1c 00 00
00 00 mov DWORD PTR [eax+28], 0
; 325 : /////////////////////////////////////////////////
; 326 : bRet = lpAcceptEx(
000d8 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000db 8b 48 44 mov ecx, DWORD PTR [eax+68]
000de 89 4d 98 mov DWORD PTR tv140[ebp], ecx
000e1 8b 55 e0 mov edx, DWORD PTR _lp_io$2[ebp]
000e4 52 push edx
000e5 8d 45 f4 lea eax, DWORD PTR _dwBytes$[ebp]
000e8 50 push eax
000e9 6a 20 push 32 ; 00000020H
000eb 6a 20 push 32 ; 00000020H
000ed 6a 00 push 0
000ef 8b 4d e0 mov ecx, DWORD PTR _lp_io$2[ebp]
000f2 81 c1 e0 01 00
00 add ecx, 480 ; 000001e0H
000f8 51 push ecx
000f9 8b 55 e0 mov edx, DWORD PTR _lp_io$2[ebp]
000fc 8b 42 14 mov eax, DWORD PTR [edx+20]
000ff 50 push eax
00100 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00103 8b 51 2c mov edx, DWORD PTR [ecx+44]
00106 52 push edx
00107 ff 55 98 call DWORD PTR tv140[ebp]
0010a 89 45 f0 mov DWORD PTR _bRet$[ebp], eax
; 327 : m_listen_socket,
; 328 : lp_io->socket,
; 329 : lp_io->buf,
; 330 : // lp_io->wsaBuf.len - 2 * ( sizeof(SOCKADDR_IN) + 16 ),
; 331 : 0,
; 332 : sizeof(SOCKADDR_IN) + 16,
; 333 : sizeof(SOCKADDR_IN) + 16,
; 334 : &dwBytes,&lp_io->ol);
; 335 : if( ( bRet == FALSE ) && ( WSA_IO_PENDING != WSAGetLastError() ) )
0010d 83 7d f0 00 cmp DWORD PTR _bRet$[ebp], 0
00111 75 31 jne SHORT $LN8@PostAccept
00113 ff 15 00 00 00
00 call DWORD PTR __imp__WSAGetLastError@0
00119 3d e5 03 00 00 cmp eax, 997 ; 000003e5H
0011e 74 24 je SHORT $LN8@PostAccept
; 336 : {
; 337 : closesocket( socket );
00120 8b 45 e8 mov eax, DWORD PTR _socket$4[ebp]
00123 50 push eax
00124 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 338 : //m_io_group.RemoveAt( lp_io );
; 339 : m_KeyList.RemoveAt_IO( lp_io );
0012a 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0012d 83 c0 08 add eax, 8
00130 89 45 98 mov DWORD PTR tv149[ebp], eax
00133 8b 4d e0 mov ecx, DWORD PTR _lp_io$2[ebp]
00136 51 push ecx
00137 8b 4d 98 mov ecx, DWORD PTR tv149[ebp]
0013a e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 340 : //cout<<"post acceptex fail:"<<WSAGetLastError()<<endl;
; 341 : continue;
0013f e9 d8 fe ff ff jmp $LN2@PostAccept
$LN8@PostAccept:
; 342 : }
; 343 : }
00144 eb 07 jmp SHORT $LN7@PostAccept
$LN6@PostAccept:
; 344 : else
; 345 : {
; 346 : int i=10;
00146 c7 45 dc 0a 00
00 00 mov DWORD PTR _i$1[ebp], 10 ; 0000000aH
$LN7@PostAccept:
; 347 : }
; 348 : }
0014d e9 ca fe ff ff jmp $LN2@PostAccept
$LN3@PostAccept:
; 349 :
; 350 : return TRUE;
00152 b8 01 00 00 00 mov eax, 1
; 351 : }
00157 5f pop edi
00158 5e pop esi
00159 5b pop ebx
0015a 8b e5 mov esp, ebp
0015c 5d pop ebp
0015d c3 ret 0
?PostAcceptEx@CIOCP@@QAEHXZ ENDP ; CIOCP::PostAcceptEx
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?PostAcceptEx2@CIOCP@@QAEHXZ
_TEXT SEGMENT
tv139 = -100 ; size = 4
tv130 = -100 ; size = 4
_i$1 = -32 ; size = 4
_lp_io$2 = -28 ; size = 4
_socket$3 = -24 ; size = 4
_i$4 = -20 ; size = 4
_bRet$ = -16 ; size = 4
_dwBytes$ = -12 ; size = 4
_count$ = -8 ; size = 4
_this$ = -4 ; size = 4
?PostAcceptEx2@CIOCP@@QAEHXZ PROC ; CIOCP::PostAcceptEx2, COMDAT
; _this$ = ecx
; 1229 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 64 sub esp, 100 ; 00000064H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1230 : #ifdef _DEBUG
; 1231 : int count = 10;
; 1232 : #else
; 1233 : int count = 30;
0000c c7 45 f8 1e 00
00 00 mov DWORD PTR _count$[ebp], 30 ; 0000001eH
; 1234 : #endif
; 1235 : DWORD dwBytes;
; 1236 : BOOL bRet;
; 1237 :
; 1238 : for( int i = 0; i < count; i++ )
00013 c7 45 ec 00 00
00 00 mov DWORD PTR _i$4[ebp], 0
0001a eb 09 jmp SHORT $LN4@PostAccept
$LN2@PostAccept:
0001c 8b 45 ec mov eax, DWORD PTR _i$4[ebp]
0001f 83 c0 01 add eax, 1
00022 89 45 ec mov DWORD PTR _i$4[ebp], eax
$LN4@PostAccept:
00025 8b 45 ec mov eax, DWORD PTR _i$4[ebp]
00028 3b 45 f8 cmp eax, DWORD PTR _count$[ebp]
0002b 0f 8d d8 00 00
00 jge $LN3@PostAccept
; 1239 : {
; 1240 : SOCKET socket = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED );
00031 6a 01 push 1
00033 6a 00 push 0
00035 6a 00 push 0
00037 6a 06 push 6
00039 6a 01 push 1
0003b 6a 02 push 2
0003d ff 15 00 00 00
00 call DWORD PTR __imp__WSASocketW@24
00043 89 45 e8 mov DWORD PTR _socket$3[ebp], eax
; 1241 :
; 1242 : if( INVALID_SOCKET == socket )
00046 83 7d e8 ff cmp DWORD PTR _socket$3[ebp], -1
0004a 75 02 jne SHORT $LN5@PostAccept
; 1243 : {
; 1244 : //cout<<"post accept ex fail!"<<WSAGetLastError()<<endl;
; 1245 : continue;
0004c eb ce jmp SHORT $LN2@PostAccept
$LN5@PostAccept:
; 1246 : }
; 1247 : /*
; 1248 : //<2F><><EFBFBD><EFBFBD>Socket
; 1249 : u_long ulTemp=1; //<2F><>SOCKET<45><54><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>SOCKET
; 1250 : //u_long ulTemp=0; //<2F><>SOCKET<45><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>SOCKET
; 1251 : ioctlsocket( socket,FIONBIO,&ulTemp );
; 1252 : ulTemp=64000;
; 1253 : setsockopt( socket , SOL_SOCKET, SO_SNDBUF ,(const char *)&ulTemp ,sizeof(ulTemp)); //<2F><><EFBFBD>
; 1254 : ulTemp=64000;
; 1255 : setsockopt( socket , SOL_SOCKET, SO_RCVBUF ,(const char *)&ulTemp ,sizeof(ulTemp)); //<2F><><EFBFBD>
; 1256 : setsockopt( socket, SOL_SOCKET, SO_DONTLINGER,(const char *)&ulTemp,sizeof(BOOL));
; 1257 :
; 1258 : struct linger {
; 1259 : u_short l_onoff;
; 1260 : u_short l_linger;
; 1261 : };
; 1262 : linger m_sLinger;
; 1263 : m_sLinger.l_onoff=0;//(<28><>closesocket()<29><><EFBFBD><EFBFBD>,<2C><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
; 1264 : // <20><><EFBFBD><EFBFBD>m_sLinger.l_onoff=0;<3B><><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD>2.)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ;
; 1265 : m_sLinger.l_linger=0;//(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ5<CEAA><35>)
; 1266 : int iLen=sizeof(m_sLinger);
; 1267 : int i = setsockopt(socket,SOL_SOCKET,SO_LINGER,(const char*)&m_sLinger,sizeof(linger));
; 1268 : */
; 1269 :
; 1270 : //IOCP_IO_PTR lp_io = m_io_group.GetBlank();
; 1271 : IOCP_IO_PTR lp_io = m_KeyList.GetBlank_IO();
0004e 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00051 83 c1 08 add ecx, 8
00054 e8 00 00 00 00 call ?GetBlank_IO@CKeyList@@QAEPAUIOCP_IO@@XZ ; CKeyList::GetBlank_IO
00059 89 45 e4 mov DWORD PTR _lp_io$2[ebp], eax
; 1272 :
; 1273 : if ( lp_io != NULL )
0005c 83 7d e4 00 cmp DWORD PTR _lp_io$2[ebp], 0
00060 0f 84 97 00 00
00 je $LN6@PostAccept
; 1274 : {
; 1275 : InitIoContext( lp_io );
00066 8b 45 e4 mov eax, DWORD PTR _lp_io$2[ebp]
00069 50 push eax
0006a 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0006d e8 00 00 00 00 call ?InitIoContext@CIOCP@@AAEXPAUIOCP_IO@@@Z ; CIOCP::InitIoContext
; 1276 : lp_io->socket = socket;
00072 8b 45 e4 mov eax, DWORD PTR _lp_io$2[ebp]
00075 8b 4d e8 mov ecx, DWORD PTR _socket$3[ebp]
00078 89 48 14 mov DWORD PTR [eax+20], ecx
; 1277 : lp_io->operation = IOCP_ACCEPT;
0007b 8b 45 e4 mov eax, DWORD PTR _lp_io$2[ebp]
0007e c7 40 18 01 00
00 00 mov DWORD PTR [eax+24], 1
; 1278 : lp_io->state = SOCKET_STATE_NOT_CONNECT;
00085 8b 45 e4 mov eax, DWORD PTR _lp_io$2[ebp]
00088 c7 40 1c 00 00
00 00 mov DWORD PTR [eax+28], 0
; 1279 : /////////////////////////////////////////////////
; 1280 : bRet = lpAcceptEx(
0008f 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00092 8b 48 44 mov ecx, DWORD PTR [eax+68]
00095 89 4d 9c mov DWORD PTR tv130[ebp], ecx
00098 8b 55 e4 mov edx, DWORD PTR _lp_io$2[ebp]
0009b 52 push edx
0009c 8d 45 f4 lea eax, DWORD PTR _dwBytes$[ebp]
0009f 50 push eax
000a0 6a 20 push 32 ; 00000020H
000a2 6a 20 push 32 ; 00000020H
000a4 6a 00 push 0
000a6 8b 4d e4 mov ecx, DWORD PTR _lp_io$2[ebp]
000a9 81 c1 e0 01 00
00 add ecx, 480 ; 000001e0H
000af 51 push ecx
000b0 8b 55 e4 mov edx, DWORD PTR _lp_io$2[ebp]
000b3 8b 42 14 mov eax, DWORD PTR [edx+20]
000b6 50 push eax
000b7 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000ba 8b 51 34 mov edx, DWORD PTR [ecx+52]
000bd 52 push edx
000be ff 55 9c call DWORD PTR tv130[ebp]
000c1 89 45 f0 mov DWORD PTR _bRet$[ebp], eax
; 1281 : m_listen_socket2,
; 1282 : lp_io->socket,
; 1283 : lp_io->buf,
; 1284 : // lp_io->wsaBuf.len - 2 * ( sizeof(SOCKADDR_IN) + 16 ),
; 1285 : 0,
; 1286 : sizeof(SOCKADDR_IN) + 16,
; 1287 : sizeof(SOCKADDR_IN) + 16,
; 1288 : &dwBytes,&lp_io->ol);
; 1289 :
; 1290 : if( ( bRet == FALSE ) && ( WSA_IO_PENDING != WSAGetLastError() ) )
000c4 83 7d f0 00 cmp DWORD PTR _bRet$[ebp], 0
000c8 75 31 jne SHORT $LN8@PostAccept
000ca ff 15 00 00 00
00 call DWORD PTR __imp__WSAGetLastError@0
000d0 3d e5 03 00 00 cmp eax, 997 ; 000003e5H
000d5 74 24 je SHORT $LN8@PostAccept
; 1291 : {
; 1292 : closesocket( socket );
000d7 8b 45 e8 mov eax, DWORD PTR _socket$3[ebp]
000da 50 push eax
000db ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
; 1293 :
; 1294 : //m_io_group.RemoveAt( lp_io );
; 1295 : m_KeyList.RemoveAt_IO( lp_io );
000e1 8b 45 fc mov eax, DWORD PTR _this$[ebp]
000e4 83 c0 08 add eax, 8
000e7 89 45 9c mov DWORD PTR tv139[ebp], eax
000ea 8b 4d e4 mov ecx, DWORD PTR _lp_io$2[ebp]
000ed 51 push ecx
000ee 8b 4d 9c mov ecx, DWORD PTR tv139[ebp]
000f1 e8 00 00 00 00 call ?RemoveAt_IO@CKeyList@@QAEXPAUIOCP_IO@@@Z ; CKeyList::RemoveAt_IO
; 1296 :
; 1297 : //cout<<"post acceptex fail:"<<WSAGetLastError()<<endl;
; 1298 : continue;
000f6 e9 21 ff ff ff jmp $LN2@PostAccept
$LN8@PostAccept:
; 1299 : }
; 1300 : }
000fb eb 07 jmp SHORT $LN7@PostAccept
$LN6@PostAccept:
; 1301 : else
; 1302 : {
; 1303 : int i=10;
000fd c7 45 e0 0a 00
00 00 mov DWORD PTR _i$1[ebp], 10 ; 0000000aH
$LN7@PostAccept:
; 1304 : }
; 1305 :
; 1306 : }
00104 e9 13 ff ff ff jmp $LN2@PostAccept
$LN3@PostAccept:
; 1307 :
; 1308 : return TRUE;
00109 b8 01 00 00 00 mov eax, 1
; 1309 : }
0010e 5f pop edi
0010f 5e pop esi
00110 5b pop ebx
00111 8b e5 mov esp, ebp
00113 5d pop ebp
00114 c3 ret 0
?PostAcceptEx2@CIOCP@@QAEHXZ ENDP ; CIOCP::PostAcceptEx2
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?RegAcceptEvent@CIOCP@@QAEHXZ
_TEXT SEGMENT
_nRet$ = -8 ; size = 4
_this$ = -4 ; size = 4
?RegAcceptEvent@CIOCP@@QAEHXZ PROC ; CIOCP::RegAcceptEvent, COMDAT
; _this$ = ecx
; 691 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 692 : int nRet;
; 693 :
; 694 : m_h_accept_event = CreateEvent( NULL, FALSE, FALSE, NULL );
0000c 6a 00 push 0
0000e 6a 00 push 0
00010 6a 00 push 0
00012 6a 00 push 0
00014 ff 15 00 00 00
00 call DWORD PTR __imp__CreateEventW@16
0001a 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0001d 89 81 d4 00 00
00 mov DWORD PTR [ecx+212], eax
; 695 :
; 696 : if( NULL == m_h_accept_event )
00023 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00026 83 b8 d4 00 00
00 00 cmp DWORD PTR [eax+212], 0
0002d 75 04 jne SHORT $LN2@RegAcceptE
; 697 : {
; 698 : return FALSE;
0002f 33 c0 xor eax, eax
00031 eb 3b jmp SHORT $LN1@RegAcceptE
$LN2@RegAcceptE:
; 699 : }
; 700 :
; 701 : nRet = WSAEventSelect( m_listen_socket, m_h_accept_event, FD_ACCEPT );
00033 6a 08 push 8
00035 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00038 8b 88 d4 00 00
00 mov ecx, DWORD PTR [eax+212]
0003e 51 push ecx
0003f 8b 55 fc mov edx, DWORD PTR _this$[ebp]
00042 8b 42 2c mov eax, DWORD PTR [edx+44]
00045 50 push eax
00046 ff 15 00 00 00
00 call DWORD PTR __imp__WSAEventSelect@12
0004c 89 45 f8 mov DWORD PTR _nRet$[ebp], eax
; 702 :
; 703 : if( nRet != 0 )
0004f 83 7d f8 00 cmp DWORD PTR _nRet$[ebp], 0
00053 74 14 je SHORT $LN3@RegAcceptE
; 704 : {
; 705 : CloseHandle( m_h_accept_event );
00055 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00058 8b 88 d4 00 00
00 mov ecx, DWORD PTR [eax+212]
0005e 51 push ecx
0005f ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 706 :
; 707 : return FALSE;
00065 33 c0 xor eax, eax
00067 eb 05 jmp SHORT $LN1@RegAcceptE
$LN3@RegAcceptE:
; 708 : }
; 709 :
; 710 : return TRUE;
00069 b8 01 00 00 00 mov eax, 1
$LN1@RegAcceptE:
; 711 : }
0006e 5f pop edi
0006f 5e pop esi
00070 5b pop ebx
00071 8b e5 mov esp, ebp
00073 5d pop ebp
00074 c3 ret 0
?RegAcceptEvent@CIOCP@@QAEHXZ ENDP ; CIOCP::RegAcceptEvent
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?RegAcceptEvent2@CIOCP@@QAEHXZ
_TEXT SEGMENT
_nRet$ = -8 ; size = 4
_this$ = -4 ; size = 4
?RegAcceptEvent2@CIOCP@@QAEHXZ PROC ; CIOCP::RegAcceptEvent2, COMDAT
; _this$ = ecx
; 1312 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1313 : int nRet;
; 1314 :
; 1315 : m_h_accept_event2 = CreateEvent( NULL, FALSE, FALSE, NULL );
0000c 6a 00 push 0
0000e 6a 00 push 0
00010 6a 00 push 0
00012 6a 00 push 0
00014 ff 15 00 00 00
00 call DWORD PTR __imp__CreateEventW@16
0001a 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0001d 89 81 d8 00 00
00 mov DWORD PTR [ecx+216], eax
; 1316 :
; 1317 : if( NULL == m_h_accept_event2 )
00023 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00026 83 b8 d8 00 00
00 00 cmp DWORD PTR [eax+216], 0
0002d 75 04 jne SHORT $LN2@RegAcceptE
; 1318 : {
; 1319 : return FALSE;
0002f 33 c0 xor eax, eax
00031 eb 3b jmp SHORT $LN1@RegAcceptE
$LN2@RegAcceptE:
; 1320 : }
; 1321 :
; 1322 : nRet = WSAEventSelect( m_listen_socket2, m_h_accept_event2, FD_ACCEPT );
00033 6a 08 push 8
00035 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00038 8b 88 d8 00 00
00 mov ecx, DWORD PTR [eax+216]
0003e 51 push ecx
0003f 8b 55 fc mov edx, DWORD PTR _this$[ebp]
00042 8b 42 34 mov eax, DWORD PTR [edx+52]
00045 50 push eax
00046 ff 15 00 00 00
00 call DWORD PTR __imp__WSAEventSelect@12
0004c 89 45 f8 mov DWORD PTR _nRet$[ebp], eax
; 1323 :
; 1324 : if( nRet != 0 )
0004f 83 7d f8 00 cmp DWORD PTR _nRet$[ebp], 0
00053 74 14 je SHORT $LN3@RegAcceptE
; 1325 : {
; 1326 : CloseHandle( m_h_accept_event2 );
00055 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00058 8b 88 d8 00 00
00 mov ecx, DWORD PTR [eax+216]
0005e 51 push ecx
0005f ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 1327 :
; 1328 : return FALSE;
00065 33 c0 xor eax, eax
00067 eb 05 jmp SHORT $LN1@RegAcceptE
$LN3@RegAcceptE:
; 1329 : }
; 1330 :
; 1331 : return TRUE;
00069 b8 01 00 00 00 mov eax, 1
$LN1@RegAcceptE:
; 1332 : }
0006e 5f pop edi
0006f 5e pop esi
00070 5b pop ebx
00071 8b e5 mov esp, ebp
00073 5d pop ebp
00074 c3 ret 0
?RegAcceptEvent2@CIOCP@@QAEHXZ ENDP ; CIOCP::RegAcceptEvent2
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z
_TEXT SEGMENT
tv303 = -12760 ; size = 4
tv301 = -12760 ; size = 4
tv189 = -12760 ; size = 4
tv249 = -12756 ; size = 4
tv194 = -12756 ; size = 4
tv188 = -12756 ; size = 4
tv154 = -12756 ; size = 4
$T2 = -12752 ; size = 4
$T3 = -12748 ; size = 4
$T4 = -12744 ; size = 4
$T5 = -12740 ; size = 4
$T6 = -12736 ; size = 4
$T7 = -12732 ; size = 4
$T8 = -12728 ; size = 4
$T9 = -12724 ; size = 4
_NXlog$10 = -12208 ; size = 6056
_NXlog$11 = -6152 ; size = 6056
_head$12 = -96 ; size = 12
_bOK$13 = -84 ; size = 4
_pProcess$14 = -80 ; size = 4
_pSql$15 = -76 ; size = 4
_pTestRet$16 = -72 ; size = 4
_lGetLen$17 = -68 ; size = 4
_SHead$18 = -64 ; size = 30
_i$19 = -32 ; size = 4
_iGetFrame$20 = -28 ; size = 4
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_io$ = 8 ; size = 4
?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z PROC ; CIOCP::GetFrame, COMDAT
; _this$ = ecx
; 1335 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 c8 31 00 00 mov eax, 12744 ; 000031c8H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 1336 : try
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 1337 : {
; 1338 : int iGetFrame=0;
00040 c7 45 e4 00 00
00 00 mov DWORD PTR _iGetFrame$20[ebp], 0
; 1339 : for ( int i=0 ; i<lp_io->lRecvLen ; i++ )
00047 c7 45 e0 00 00
00 00 mov DWORD PTR _i$19[ebp], 0
0004e eb 09 jmp SHORT $LN4@GetFrame
$LN2@GetFrame:
00050 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
00053 83 c0 01 add eax, 1
00056 89 45 e0 mov DWORD PTR _i$19[ebp], eax
$LN4@GetFrame:
00059 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0005c 8b 4d e0 mov ecx, DWORD PTR _i$19[ebp]
0005f 3b 48 2c cmp ecx, DWORD PTR [eax+44]
00062 0f 8d 71 03 00
00 jge $LN3@GetFrame
; 1340 : {
; 1341 : if ( i+sizeof(Socket_Head) > (DWORD)lp_io->lRecvLen )
00068 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
0006b 83 c0 1e add eax, 30 ; 0000001eH
0006e 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00071 3b 41 2c cmp eax, DWORD PTR [ecx+44]
00074 76 05 jbe SHORT $LN6@GetFrame
; 1342 : {
; 1343 : //i--;
; 1344 : break;
00076 e9 5e 03 00 00 jmp $LN3@GetFrame
$LN6@GetFrame:
; 1345 : }
; 1346 : Socket_Head SHead={0};
0007b 33 c0 xor eax, eax
0007d 89 45 c0 mov DWORD PTR _SHead$18[ebp], eax
00080 89 45 c4 mov DWORD PTR _SHead$18[ebp+4], eax
00083 89 45 c8 mov DWORD PTR _SHead$18[ebp+8], eax
00086 89 45 cc mov DWORD PTR _SHead$18[ebp+12], eax
00089 89 45 d0 mov DWORD PTR _SHead$18[ebp+16], eax
0008c 89 45 d4 mov DWORD PTR _SHead$18[ebp+20], eax
0008f 89 45 d8 mov DWORD PTR _SHead$18[ebp+24], eax
00092 66 89 45 dc mov WORD PTR _SHead$18[ebp+28], ax
; 1347 : memcpy(&SHead,lp_io->buf+i,sizeof(Socket_Head)); i=i+sizeof(Socket_Head);
00096 6a 1e push 30 ; 0000001eH
00098 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
0009b 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
0009e 8d 94 01 e0 01
00 00 lea edx, DWORD PTR [ecx+eax+480]
000a5 52 push edx
000a6 8d 45 c0 lea eax, DWORD PTR _SHead$18[ebp]
000a9 50 push eax
000aa e8 00 00 00 00 call _memcpy
000af 83 c4 0c add esp, 12 ; 0000000cH
000b2 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
000b5 83 c0 1e add eax, 30 ; 0000001eH
000b8 89 45 e0 mov DWORD PTR _i$19[ebp], eax
; 1348 : long lGetLen=SHead.lFrameLen;
000bb 8b 45 ce mov eax, DWORD PTR _SHead$18[ebp+14]
000be 89 45 bc mov DWORD PTR _lGetLen$17[ebp], eax
; 1349 : if ( SHead.bCompress )
000c1 0f b6 45 c4 movzx eax, BYTE PTR _SHead$18[ebp+4]
000c5 85 c0 test eax, eax
000c7 74 06 je SHORT $LN7@GetFrame
; 1350 : lGetLen = SHead.lCompressLen;
000c9 8b 45 d2 mov eax, DWORD PTR _SHead$18[ebp+18]
000cc 89 45 bc mov DWORD PTR _lGetLen$17[ebp], eax
$LN7@GetFrame:
; 1351 : if ( SHead.lFuncType <=0 || SHead.lFuncType > 100000 ||
; 1352 : SHead.lCompressLen<0 || SHead.lCompressLen>BUFFER_SIZE ||
; 1353 : SHead.lFrameLen<0 || SHead.lFrameLen>BUFFER_SIZE ) //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>յ<EFBFBD><D5B5><EFBFBD>֡<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
000cf 83 7d c0 00 cmp DWORD PTR _SHead$18[ebp], 0
000d3 76 27 jbe SHORT $LN9@GetFrame
000d5 81 7d c0 a0 86
01 00 cmp DWORD PTR _SHead$18[ebp], 100000 ; 000186a0H
000dc 77 1e ja SHORT $LN9@GetFrame
000de 83 7d d2 00 cmp DWORD PTR _SHead$18[ebp+18], 0
000e2 72 18 jb SHORT $LN9@GetFrame
000e4 81 7d d2 d0 dd
06 00 cmp DWORD PTR _SHead$18[ebp+18], 450000 ; 0006ddd0H
000eb 77 0f ja SHORT $LN9@GetFrame
000ed 83 7d ce 00 cmp DWORD PTR _SHead$18[ebp+14], 0
000f1 72 09 jb SHORT $LN9@GetFrame
000f3 81 7d ce d0 dd
06 00 cmp DWORD PTR _SHead$18[ebp+14], 450000 ; 0006ddd0H
000fa 76 08 jbe SHORT $LN8@GetFrame
$LN9@GetFrame:
; 1354 : {
; 1355 : return -1; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ԣ<EFBFBD><D4A3>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
000fc 83 c8 ff or eax, -1
000ff e9 d3 03 00 00 jmp $LN1@GetFrame
$LN8@GetFrame:
; 1356 : }
; 1357 : if ( i+lGetLen>lp_io->lRecvLen) //<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
00104 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
00107 03 45 bc add eax, DWORD PTR _lGetLen$17[ebp]
0010a 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
0010d 3b 41 2c cmp eax, DWORD PTR [ecx+44]
00110 7e 0e jle SHORT $LN10@GetFrame
; 1358 : {
; 1359 : i=i-sizeof(Socket_Head);
00112 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
00115 83 e8 1e sub eax, 30 ; 0000001eH
00118 89 45 e0 mov DWORD PTR _i$19[ebp], eax
; 1360 : //i--;
; 1361 : break;
0011b e9 b9 02 00 00 jmp $LN3@GetFrame
$LN10@GetFrame:
; 1362 : }
; 1363 : lp_io->dwEndRecvFrame = ::GetTickCount();
00120 ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
00126 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00129 89 81 d8 01 00
00 mov DWORD PTR [ecx+472], eax
; 1364 :
; 1365 :
; 1366 : if ( SHead.lFuncType == SMSFUNC_TEST && lp_io->m_lUserID>0 ) //ֱ<>ӻظ<D3BB>SMSFunc_Test
0012f 83 7d c0 64 cmp DWORD PTR _SHead$18[ebp], 100 ; 00000064H
00133 75 49 jne SHORT $LN11@GetFrame
00135 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00138 83 b8 94 01 00
00 00 cmp DWORD PTR [eax+404], 0
0013f 7e 3d jle SHORT $LN11@GetFrame
; 1367 : {
; 1368 : ANS_Test * pTestRet = new ANS_Test;
00141 6a 04 push 4
00143 e8 00 00 00 00 call ??2@YAPAXI@Z ; operator new
00148 83 c4 04 add esp, 4
0014b 89 85 4c ce ff
ff mov DWORD PTR $T9[ebp], eax
00151 8b 85 4c ce ff
ff mov eax, DWORD PTR $T9[ebp]
00157 89 45 b8 mov DWORD PTR _pTestRet$16[ebp], eax
; 1369 : pTestRet->lTemp = ::GetTickCount();
0015a ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
00160 8b 4d b8 mov ecx, DWORD PTR _pTestRet$16[ebp]
00163 89 01 mov DWORD PTR [ecx], eax
; 1370 : CSmsCenterDlg::SendFrame(lp_io, SMSFUNC_TEST , (BYTE*)pTestRet , sizeof(ANS_Test) ); //<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
00165 6a 04 push 4
00167 8b 45 b8 mov eax, DWORD PTR _pTestRet$16[ebp]
0016a 50 push eax
0016b 6a 64 push 100 ; 00000064H
0016d 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00170 51 push ecx
00171 e8 00 00 00 00 call ?SendFrame@CSmsCenterDlg@@SAHPAUIOCP_IO@@IPAEK@Z ; CSmsCenterDlg::SendFrame
00176 83 c4 10 add esp, 16 ; 00000010H
; 1371 : }
00179 e9 44 02 00 00 jmp $LN12@GetFrame
$LN11@GetFrame:
; 1372 : else
; 1373 : {
; 1374 : IOCP_SQL_PTR pSql = m_KeyList.GetBlank_SQL();
0017e 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
00181 83 c1 08 add ecx, 8
00184 e8 00 00 00 00 call ?GetBlank_SQL@CKeyList@@QAEPAUIOCP_SQL@@XZ ; CKeyList::GetBlank_SQL
00189 89 45 b4 mov DWORD PTR _pSql$15[ebp], eax
; 1375 : if ( pSql )
0018c 83 7d b4 00 cmp DWORD PTR _pSql$15[ebp], 0
00190 0f 84 2c 02 00
00 je $LN12@GetFrame
; 1376 : {
; 1377 : try
00196 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
; 1378 : {
; 1379 : //CProcessSocket * pProcess = m_KeyList.GetBlank_Process();
; 1380 : CProcessSocket * pProcess = new CProcessSocket;
0019a 68 c0 12 00 00 push 4800 ; 000012c0H
0019f e8 00 00 00 00 call ??2@YAPAXI@Z ; operator new
001a4 83 c4 04 add esp, 4
001a7 89 85 44 ce ff
ff mov DWORD PTR $T7[ebp], eax
001ad c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
001b1 83 bd 44 ce ff
ff 00 cmp DWORD PTR $T7[ebp], 0
001b8 74 13 je SHORT $LN23@GetFrame
001ba 8b 8d 44 ce ff
ff mov ecx, DWORD PTR $T7[ebp]
001c0 e8 00 00 00 00 call ??0CProcessSocket@@QAE@XZ ; CProcessSocket::CProcessSocket
001c5 89 85 2c ce ff
ff mov DWORD PTR tv154[ebp], eax
001cb eb 0a jmp SHORT $LN24@GetFrame
$LN23@GetFrame:
001cd c7 85 2c ce ff
ff 00 00 00 00 mov DWORD PTR tv154[ebp], 0
$LN24@GetFrame:
001d7 8b 85 2c ce ff
ff mov eax, DWORD PTR tv154[ebp]
001dd 89 85 48 ce ff
ff mov DWORD PTR $T8[ebp], eax
001e3 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
001e7 8b 8d 48 ce ff
ff mov ecx, DWORD PTR $T8[ebp]
001ed 89 4d b0 mov DWORD PTR _pProcess$14[ebp], ecx
; 1381 : if ( pProcess )
001f0 83 7d b0 00 cmp DWORD PTR _pProcess$14[ebp], 0
001f4 0f 84 02 01 00
00 je $LN15@GetFrame
; 1382 : {
; 1383 : BOOL bOK = true;
001fa c7 45 ac 01 00
00 00 mov DWORD PTR _bOK$13[ebp], 1
; 1384 :
; 1385 : pProcess->SetDlg(m_pDlg);
00201 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00204 8b 48 04 mov ecx, DWORD PTR [eax+4]
00207 51 push ecx
00208 8b 4d b0 mov ecx, DWORD PTR _pProcess$14[ebp]
0020b e8 00 00 00 00 call ?SetDlg@CProcessSocket@@QAEXPAVCSmsCenterDlg@@@Z ; CProcessSocket::SetDlg
; 1386 : pProcess->IOCP_setSQL(pSql);
00210 8b 45 b4 mov eax, DWORD PTR _pSql$15[ebp]
00213 50 push eax
00214 8b 4d b0 mov ecx, DWORD PTR _pProcess$14[ebp]
00217 e8 00 00 00 00 call ?IOCP_setSQL@CProcessSocket@@QAEXPAUIOCP_SQL@@@Z ; CProcessSocket::IOCP_setSQL
; 1387 :
; 1388 : Cmpp_Head head={0};
0021c 33 c0 xor eax, eax
0021e 89 45 a0 mov DWORD PTR _head$12[ebp], eax
00221 89 45 a4 mov DWORD PTR _head$12[ebp+4], eax
00224 89 45 a8 mov DWORD PTR _head$12[ebp+8], eax
; 1389 : bOK = pProcess->IOCP_GetFrameData(lp_io , SHead , head,(BYTE*)(lp_io->buf+i) , lGetLen);
00227 8b 45 bc mov eax, DWORD PTR _lGetLen$17[ebp]
0022a 50 push eax
0022b 8b 4d e0 mov ecx, DWORD PTR _i$19[ebp]
0022e 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
00231 8d 84 0a e0 01
00 00 lea eax, DWORD PTR [edx+ecx+480]
00238 50 push eax
00239 83 ec 0c sub esp, 12 ; 0000000cH
0023c 8b cc mov ecx, esp
0023e 8b 55 a0 mov edx, DWORD PTR _head$12[ebp]
00241 89 11 mov DWORD PTR [ecx], edx
00243 8b 45 a4 mov eax, DWORD PTR _head$12[ebp+4]
00246 89 41 04 mov DWORD PTR [ecx+4], eax
00249 8b 55 a8 mov edx, DWORD PTR _head$12[ebp+8]
0024c 89 51 08 mov DWORD PTR [ecx+8], edx
0024f 83 ec 20 sub esp, 32 ; 00000020H
00252 b9 07 00 00 00 mov ecx, 7
00257 8d 75 c0 lea esi, DWORD PTR _SHead$18[ebp]
0025a 8b fc mov edi, esp
0025c f3 a5 rep movsd
0025e 66 a5 movsw
00260 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00263 50 push eax
00264 8b 4d b0 mov ecx, DWORD PTR _pProcess$14[ebp]
00267 e8 00 00 00 00 call ?IOCP_GetFrameData@CProcessSocket@@QAEHPAUIOCP_IO@@U_Socket_Head@@U_Cmpp_Head@@PAEJ@Z ; CProcessSocket::IOCP_GetFrameData
0026c 89 45 ac mov DWORD PTR _bOK$13[ebp], eax
; 1390 : if ( bOK ) //<2F><><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD>
0026f 83 7d ac 00 cmp DWORD PTR _bOK$13[ebp], 0
00273 74 1c je SHORT $LN17@GetFrame
; 1391 : {
; 1392 : iGetFrame ++;
00275 8b 45 e4 mov eax, DWORD PTR _iGetFrame$20[ebp]
00278 83 c0 01 add eax, 1
0027b 89 45 e4 mov DWORD PTR _iGetFrame$20[ebp], eax
; 1393 : QueueUserWorkItem(CProcessSocket::IOCP_Process, (PVOID)pProcess, WT_EXECUTELONGFUNCTION);
0027e 6a 10 push 16 ; 00000010H
00280 8b 45 b0 mov eax, DWORD PTR _pProcess$14[ebp]
00283 50 push eax
00284 68 00 00 00 00 push OFFSET ?IOCP_Process@CProcessSocket@@SGKPAX@Z ; CProcessSocket::IOCP_Process
00289 ff 15 00 00 00
00 call DWORD PTR __imp__QueueUserWorkItem@12
; 1394 : }
0028f eb 69 jmp SHORT $LN18@GetFrame
$LN17@GetFrame:
; 1395 : else
; 1396 : {
; 1397 : //<2F>ͷ<EFBFBD><CDB7><EFBFBD>Դ
; 1398 : pProcess->m_bUse = false;
00291 8b 45 b0 mov eax, DWORD PTR _pProcess$14[ebp]
00294 c7 40 08 00 00
00 00 mov DWORD PTR [eax+8], 0
; 1399 : pProcess->m_lRandID=0;
0029b 8b 45 b0 mov eax, DWORD PTR _pProcess$14[ebp]
0029e c7 40 0c 00 00
00 00 mov DWORD PTR [eax+12], 0
; 1400 :
; 1401 : pSql->bUse = false;
002a5 8b 45 b4 mov eax, DWORD PTR _pSql$15[ebp]
002a8 c7 00 00 00 00
00 mov DWORD PTR [eax], 0
; 1402 : pSql->lRandID = 0;
002ae 8b 45 b4 mov eax, DWORD PTR _pSql$15[ebp]
002b1 c7 40 04 00 00
00 00 mov DWORD PTR [eax+4], 0
; 1403 : //<2F><>ʱ<EFBFBD><CAB1>ɾ<EFBFBD><C9BE><EFBFBD>˶<EFBFBD><CBB6>񣬷<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
; 1404 : delete pProcess; //ɾ<><C9BE>new<65>Ķ<EFBFBD><C4B6><EFBFBD>
002b8 8b 45 b0 mov eax, DWORD PTR _pProcess$14[ebp]
002bb 89 85 40 ce ff
ff mov DWORD PTR $T6[ebp], eax
002c1 83 bd 40 ce ff
ff 00 cmp DWORD PTR $T6[ebp], 0
002c8 74 26 je SHORT $LN25@GetFrame
002ca 8b 8d 40 ce ff
ff mov ecx, DWORD PTR $T6[ebp]
002d0 8b 11 mov edx, DWORD PTR [ecx]
002d2 8b 02 mov eax, DWORD PTR [edx]
002d4 89 85 2c ce ff
ff mov DWORD PTR tv188[ebp], eax
002da 6a 01 push 1
002dc 8b 8d 40 ce ff
ff mov ecx, DWORD PTR $T6[ebp]
002e2 ff 95 2c ce ff
ff call DWORD PTR tv188[ebp]
002e8 89 85 28 ce ff
ff mov DWORD PTR tv189[ebp], eax
002ee eb 0a jmp SHORT $LN18@GetFrame
$LN25@GetFrame:
002f0 c7 85 28 ce ff
ff 00 00 00 00 mov DWORD PTR tv189[ebp], 0
$LN18@GetFrame:
; 1405 : }
; 1406 : }
002fa eb 0e jmp SHORT $LN16@GetFrame
$LN15@GetFrame:
; 1407 : else
; 1408 : {
; 1409 : AfxMessageBox(_T("new Process error"));
002fc 6a 00 push 0
002fe 6a 00 push 0
00300 68 00 00 00 00 push OFFSET ??_C@_1CE@CMEGDHFN@?$AAn?$AAe?$AAw?$AA?5?$AAP?$AAr?$AAo?$AAc?$AAe?$AAs?$AAs?$AA?5?$AAe?$AAr?$AAr@
00305 e8 00 00 00 00 call ?AfxMessageBox@@YGHPB_WII@Z ; AfxMessageBox
$LN16@GetFrame:
; 1410 : }
; 1411 : }
0030a e9 a3 00 00 00 jmp $LN28@GetFrame
__catch$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$0:
; 1412 : catch(...)
; 1413 : {
; 1414 : LOG_APPERROR(_T("T"));
0030f 8d 8d f8 e7 ff
ff lea ecx, DWORD PTR _NXlog$11[ebp]
00315 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
0031a c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
0031e 51 push ecx
0031f 8b cc mov ecx, esp
00321 89 a5 3c ce ff
ff mov DWORD PTR $T5[ebp], esp
00327 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
0032c e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00331 89 85 2c ce ff
ff mov DWORD PTR tv194[ebp], eax
00337 c6 45 fc 05 mov BYTE PTR __$EHRec$[ebp+12], 5
0033b 51 push ecx
0033c 8b cc mov ecx, esp
0033e 89 a5 38 ce ff
ff mov DWORD PTR $T4[ebp], esp
00344 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
00349 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
0034e 89 85 28 ce ff
ff mov DWORD PTR tv301[ebp], eax
00354 c6 45 fc 06 mov BYTE PTR __$EHRec$[ebp+12], 6
00358 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
0035c 8d 8d f8 e7 ff
ff lea ecx, DWORD PTR _NXlog$11[ebp]
00362 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
00367 a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA
0036c 83 c0 4f add eax, 79 ; 0000004fH
0036f 50 push eax
00370 68 00 00 00 00 push OFFSET ??_C@_08KCCFNCFB@GetFrame@
00375 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
0037a 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
0037f 8d 8d f8 e7 ff
ff lea ecx, DWORD PTR _NXlog$11[ebp]
00385 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
0038a c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
0038e 8d 8d f8 e7 ff
ff lea ecx, DWORD PTR _NXlog$11[ebp]
00394 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 1415 : pSql->bUse = false; //<2F><><EFBFBD><EFBFBD><ECB3A3><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ģʽ
00399 8b 45 b4 mov eax, DWORD PTR _pSql$15[ebp]
0039c c7 00 00 00 00
00 mov DWORD PTR [eax], 0
; 1416 : pSql->lRandID = 0;
003a2 8b 45 b4 mov eax, DWORD PTR _pSql$15[ebp]
003a5 c7 40 04 00 00
00 00 mov DWORD PTR [eax+4], 0
; 1417 : }
003ac b8 00 00 00 00 mov eax, $LN39@GetFrame
003b1 c3 ret 0
$LN28@GetFrame:
003b2 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
003b9 eb 07 jmp SHORT $LN12@GetFrame
$LN39@GetFrame:
003bb c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
$LN12@GetFrame:
; 1418 : }
; 1419 : }
; 1420 : i=i+lGetLen;
003c2 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
003c5 03 45 bc add eax, DWORD PTR _lGetLen$17[ebp]
003c8 89 45 e0 mov DWORD PTR _i$19[ebp], eax
; 1421 : i=i-1;
003cb 8b 45 e0 mov eax, DWORD PTR _i$19[ebp]
003ce 83 e8 01 sub eax, 1
003d1 89 45 e0 mov DWORD PTR _i$19[ebp], eax
; 1422 : }
003d4 e9 77 fc ff ff jmp $LN2@GetFrame
$LN3@GetFrame:
; 1423 : if ( i >= lp_io->lRecvLen ) //<2F><><EFBFBD>ݸոպ<D5B8>
003d9 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
003dc 8b 4d e0 mov ecx, DWORD PTR _i$19[ebp]
003df 3b 48 2c cmp ecx, DWORD PTR [eax+44]
003e2 7c 0c jl SHORT $LN19@GetFrame
; 1424 : {
; 1425 : lp_io->lRecvLen = 0;
003e4 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
003e7 c7 40 2c 00 00
00 00 mov DWORD PTR [eax+44], 0
; 1426 : }
003ee eb 3c jmp SHORT $LN20@GetFrame
$LN19@GetFrame:
; 1427 : else
; 1428 : {
; 1429 : if ( i> 0 )
003f0 83 7d e0 00 cmp DWORD PTR _i$19[ebp], 0
003f4 7e 36 jle SHORT $LN20@GetFrame
; 1430 : {
; 1431 : //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 1432 : lp_io->lRecvLen = lp_io->lRecvLen-i;
003f6 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
003f9 8b 48 2c mov ecx, DWORD PTR [eax+44]
003fc 2b 4d e0 sub ecx, DWORD PTR _i$19[ebp]
003ff 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
00402 89 4a 2c mov DWORD PTR [edx+44], ecx
; 1433 : memcpy(lp_io->buf , lp_io->buf+i , lp_io->lRecvLen );
00405 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00408 8b 48 2c mov ecx, DWORD PTR [eax+44]
0040b 51 push ecx
0040c 8b 55 e0 mov edx, DWORD PTR _i$19[ebp]
0040f 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00412 8d 8c 10 e0 01
00 00 lea ecx, DWORD PTR [eax+edx+480]
00419 51 push ecx
0041a 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
0041d 81 c2 e0 01 00
00 add edx, 480 ; 000001e0H
00423 52 push edx
00424 e8 00 00 00 00 call _memcpy
00429 83 c4 0c add esp, 12 ; 0000000cH
$LN20@GetFrame:
; 1434 : }
; 1435 : }
; 1436 :
; 1437 : return iGetFrame;
0042c 8b 45 e4 mov eax, DWORD PTR _iGetFrame$20[ebp]
0042f e9 a3 00 00 00 jmp $LN1@GetFrame
__catch$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$2:
; 1438 : }
; 1439 : catch (...)
; 1440 : {
; 1441 : LOG_APPERROR(_T("T"));
00434 8d 8d 50 d0 ff
ff lea ecx, DWORD PTR _NXlog$10[ebp]
0043a e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
0043f c6 45 fc 08 mov BYTE PTR __$EHRec$[ebp+12], 8
00443 51 push ecx
00444 8b cc mov ecx, esp
00446 89 a5 34 ce ff
ff mov DWORD PTR $T3[ebp], esp
0044c 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
00451 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00456 89 85 2c ce ff
ff mov DWORD PTR tv249[ebp], eax
0045c c6 45 fc 09 mov BYTE PTR __$EHRec$[ebp+12], 9
00460 51 push ecx
00461 8b cc mov ecx, esp
00463 89 a5 30 ce ff
ff mov DWORD PTR $T2[ebp], esp
00469 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
0046e e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00473 89 85 28 ce ff
ff mov DWORD PTR tv303[ebp], eax
00479 c6 45 fc 0a mov BYTE PTR __$EHRec$[ebp+12], 10 ; 0000000aH
0047d c6 45 fc 08 mov BYTE PTR __$EHRec$[ebp+12], 8
00481 8d 8d 50 d0 ff
ff lea ecx, DWORD PTR _NXlog$10[ebp]
00487 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
0048c a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA
00491 83 c0 6a add eax, 106 ; 0000006aH
00494 50 push eax
00495 68 00 00 00 00 push OFFSET ??_C@_08KCCFNCFB@GetFrame@
0049a 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
0049f 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
004a4 8d 8d 50 d0 ff
ff lea ecx, DWORD PTR _NXlog$10[ebp]
004aa e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
004af c6 45 fc 07 mov BYTE PTR __$EHRec$[ebp+12], 7
004b3 8d 8d 50 d0 ff
ff lea ecx, DWORD PTR _NXlog$10[ebp]
004b9 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 1442 : }
004be b8 00 00 00 00 mov eax, $LN41@GetFrame
004c3 c3 ret 0
004c4 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
004cb eb 07 jmp SHORT __tryend$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$3
$LN41@GetFrame:
004cd c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
__tryend$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$3:
; 1443 : return -1;
004d4 83 c8 ff or eax, -1
$LN1@GetFrame:
; 1444 : }
004d7 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
004da 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
004e1 59 pop ecx
004e2 5f pop edi
004e3 5e pop esi
004e4 5b pop ebx
004e5 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
004e8 33 cd xor ecx, ebp
004ea e8 00 00 00 00 call @__security_check_cookie@4
004ef 8b e5 mov esp, ebp
004f1 5d pop ebp
004f2 c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$4:
00000 68 c0 12 00 00 push 4800 ; 000012c0H
00005 8b 85 44 ce ff
ff mov eax, DWORD PTR $T7[ebp]
0000b 50 push eax
0000c e8 00 00 00 00 call ??3@YAXPAXI@Z ; operator delete
00011 83 c4 08 add esp, 8
00014 c3 ret 0
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$5:
00015 8d 8d f8 e7 ff
ff lea ecx, DWORD PTR _NXlog$11[ebp]
0001b e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$6:
00020 8b 8d 3c ce ff
ff mov ecx, DWORD PTR $T5[ebp]
00026 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$7:
0002b 8b 8d 38 ce ff
ff mov ecx, DWORD PTR $T4[ebp]
00031 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$8:
00036 8d 8d 50 d0 ff
ff lea ecx, DWORD PTR _NXlog$10[ebp]
0003c e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$9:
00041 8b 8d 34 ce ff
ff mov ecx, DWORD PTR $T3[ebp]
00047 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z$10:
0004c 8b 8d 30 ce ff
ff mov ecx, DWORD PTR $T2[ebp]
00052 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00057 cc int 3
00058 cc int 3
00059 cc int 3
0005a cc int 3
0005b cc int 3
__ehhandler$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z:
0005c 90 npad 1
0005d 90 npad 1
0005e 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00062 8d 42 0c lea eax, DWORD PTR [edx+12]
00065 8b 8a 24 ce ff
ff mov ecx, DWORD PTR [edx-12764]
0006b 33 c8 xor ecx, eax
0006d e8 00 00 00 00 call @__security_check_cookie@4
00072 8b 4a f8 mov ecx, DWORD PTR [edx-8]
00075 33 c8 xor ecx, eax
00077 e8 00 00 00 00 call @__security_check_cookie@4
0007c b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z
00081 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?GetFrame@CIOCP@@QAEJPAUIOCP_IO@@@Z ENDP ; CIOCP::GetFrame
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z
_TEXT SEGMENT
tv186 = -6632 ; size = 4
tv143 = -6628 ; size = 4
$T2 = -6624 ; size = 4
$T3 = -6620 ; size = 4
_NXlog$4 = -6104 ; size = 6056
_lGetLen$5 = -48 ; size = 4
_SHead$6 = -44 ; size = 12
_i$7 = -32 ; size = 4
_iGetFrame$8 = -28 ; size = 4
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_io$ = 8 ; size = 4
?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z PROC ; CIOCP::GetFrame_Cmpp, COMDAT
; _this$ = ecx
; 1448 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 d8 19 00 00 mov eax, 6616 ; 000019d8H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 1449 : try
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 1450 : {
; 1451 : int iGetFrame=0;
00040 c7 45 e4 00 00
00 00 mov DWORD PTR _iGetFrame$8[ebp], 0
; 1452 : for ( int i=0 ; i<lp_io->lRecvLen ; i++ )
00047 c7 45 e0 00 00
00 00 mov DWORD PTR _i$7[ebp], 0
0004e eb 09 jmp SHORT $LN4@GetFrame_C
$LN2@GetFrame_C:
00050 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
00053 83 c0 01 add eax, 1
00056 89 45 e0 mov DWORD PTR _i$7[ebp], eax
$LN4@GetFrame_C:
00059 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0005c 8b 4d e0 mov ecx, DWORD PTR _i$7[ebp]
0005f 3b 48 2c cmp ecx, DWORD PTR [eax+44]
00062 0f 8d c9 00 00
00 jge $LN3@GetFrame_C
; 1453 : {
; 1454 : if ( i+sizeof(Cmpp_Head) > (DWORD)lp_io->lRecvLen )
00068 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
0006b 83 c0 0c add eax, 12 ; 0000000cH
0006e 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00071 3b 41 2c cmp eax, DWORD PTR [ecx+44]
00074 76 05 jbe SHORT $LN6@GetFrame_C
; 1455 : {
; 1456 : //i--;
; 1457 : break;
00076 e9 b6 00 00 00 jmp $LN3@GetFrame_C
$LN6@GetFrame_C:
; 1458 : }
; 1459 : Cmpp_Head SHead={0};
0007b 33 c0 xor eax, eax
0007d 89 45 d4 mov DWORD PTR _SHead$6[ebp], eax
00080 89 45 d8 mov DWORD PTR _SHead$6[ebp+4], eax
00083 89 45 dc mov DWORD PTR _SHead$6[ebp+8], eax
; 1460 : memcpy(&SHead,lp_io->buf+i,sizeof(Cmpp_Head)); i=i+sizeof(Cmpp_Head);
00086 6a 0c push 12 ; 0000000cH
00088 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
0008b 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
0008e 8d 94 01 e0 01
00 00 lea edx, DWORD PTR [ecx+eax+480]
00095 52 push edx
00096 8d 45 d4 lea eax, DWORD PTR _SHead$6[ebp]
00099 50 push eax
0009a e8 00 00 00 00 call _memcpy
0009f 83 c4 0c add esp, 12 ; 0000000cH
000a2 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
000a5 83 c0 0c add eax, 12 ; 0000000cH
000a8 89 45 e0 mov DWORD PTR _i$7[ebp], eax
; 1461 : SHead.Command_Id = ntohl(SHead.Command_Id);
000ab 8b 45 d8 mov eax, DWORD PTR _SHead$6[ebp+4]
000ae 50 push eax
000af ff 15 00 00 00
00 call DWORD PTR __imp__ntohl@4
000b5 89 45 d8 mov DWORD PTR _SHead$6[ebp+4], eax
; 1462 : SHead.Sequence_Id= ntohl(SHead.Sequence_Id);
000b8 8b 45 dc mov eax, DWORD PTR _SHead$6[ebp+8]
000bb 50 push eax
000bc ff 15 00 00 00
00 call DWORD PTR __imp__ntohl@4
000c2 89 45 dc mov DWORD PTR _SHead$6[ebp+8], eax
; 1463 : SHead.Total_Length = ntohl(SHead.Total_Length);
000c5 8b 45 d4 mov eax, DWORD PTR _SHead$6[ebp]
000c8 50 push eax
000c9 ff 15 00 00 00
00 call DWORD PTR __imp__ntohl@4
000cf 89 45 d4 mov DWORD PTR _SHead$6[ebp], eax
; 1464 : long lGetLen=SHead.Total_Length-sizeof(Cmpp_Head);
000d2 8b 45 d4 mov eax, DWORD PTR _SHead$6[ebp]
000d5 83 e8 0c sub eax, 12 ; 0000000cH
000d8 89 45 d0 mov DWORD PTR _lGetLen$5[ebp], eax
; 1465 : if ( SHead.Total_Length <=0 || SHead.Total_Length>BUFFER_SIZE ) //<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>յ<EFBFBD><D5B5><EFBFBD>֡<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
000db 83 7d d4 00 cmp DWORD PTR _SHead$6[ebp], 0
000df 76 09 jbe SHORT $LN8@GetFrame_C
000e1 81 7d d4 d0 dd
06 00 cmp DWORD PTR _SHead$6[ebp], 450000 ; 0006ddd0H
000e8 76 08 jbe SHORT $LN7@GetFrame_C
$LN8@GetFrame_C:
; 1466 : {
; 1467 : return -1; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ԣ<EFBFBD><D4A3>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
000ea 83 c8 ff or eax, -1
000ed e9 3d 01 00 00 jmp $LN1@GetFrame_C
$LN7@GetFrame_C:
; 1468 : }
; 1469 : if ( i+lGetLen>lp_io->lRecvLen) //<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
000f2 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
000f5 03 45 d0 add eax, DWORD PTR _lGetLen$5[ebp]
000f8 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
000fb 3b 41 2c cmp eax, DWORD PTR [ecx+44]
000fe 7e 0b jle SHORT $LN9@GetFrame_C
; 1470 : {
; 1471 : i=i-sizeof(Cmpp_Head);
00100 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
00103 83 e8 0c sub eax, 12 ; 0000000cH
00106 89 45 e0 mov DWORD PTR _i$7[ebp], eax
; 1472 : //i--;
; 1473 : break;
00109 eb 26 jmp SHORT $LN3@GetFrame_C
$LN9@GetFrame_C:
; 1474 : }
; 1475 : lp_io->dwEndRecvFrame = ::GetTickCount();
0010b ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
00111 8b 4d 08 mov ecx, DWORD PTR _lp_io$[ebp]
00114 89 81 d8 01 00
00 mov DWORD PTR [ecx+472], eax
; 1476 :
; 1477 : /*
; 1478 : if ( SHead.Command_Id == CMPP_ACTIVE_TEST && lp_io->m_lUserID>0 ) //ֱ<>ӻظ<D3BB>SMSFunc_Test
; 1479 : {
; 1480 : Cmpp_Active_Test_Resp * pActive = new Cmpp_Active_Test_Resp;
; 1481 : memset(pActive , 0 , sizeof(Cmpp_Active_Test_Resp));
; 1482 : CSmsCenterDlg::SendFrame_Cmpp(lp_io, CMPP_ACTIVE_TEST_RESP ,SHead.Sequence_Id, (BYTE*)pActive , sizeof(Cmpp_Active_Test_Resp) ); //<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
; 1483 : }
; 1484 : else
; 1485 : {
; 1486 : IOCP_SQL_PTR pSql = m_KeyList.GetBlank_SQL();
; 1487 : if ( pSql )
; 1488 : {
; 1489 : //CProcessSocket * pProcess = m_KeyList.GetBlank_Process();
; 1490 : CProcessSocket * pProcess = new CProcessSocket;
; 1491 : if ( pProcess )
; 1492 : {
; 1493 : BOOL bOK = true;
; 1494 :
; 1495 : pProcess->SetDlg(m_pDlg);
; 1496 : pProcess->IOCP_setSQL(pSql);
; 1497 :
; 1498 : Socket_Head head={0};
; 1499 : bOK = pProcess->IOCP_GetFrameData(lp_io , head,SHead , (BYTE*)(lp_io->buf+i) , lGetLen);
; 1500 : if ( bOK ) //<2F><><EFBFBD><EFBFBD><EFBFBD>̴߳<DFB3><CCB4><EFBFBD>
; 1501 : {
; 1502 : iGetFrame ++;
; 1503 : QueueUserWorkItem(CProcessSocket::IOCP_Process, (PVOID)pProcess, WT_EXECUTELONGFUNCTION);
; 1504 : }
; 1505 : else
; 1506 : {
; 1507 : //<2F>ͷ<EFBFBD><CDB7><EFBFBD>Դ
; 1508 : pProcess->m_bUse = false;
; 1509 : pProcess->m_lRandID=0;
; 1510 :
; 1511 : pSql->bUse = false;
; 1512 : pSql->lRandID = 0;
; 1513 : //<2F><>ʱ<EFBFBD><CAB1>ɾ<EFBFBD><C9BE><EFBFBD>˶<EFBFBD><CBB6>񣬷<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
; 1514 : delete pProcess; //ɾ<><C9BE>new<65>Ķ<EFBFBD><C4B6><EFBFBD>
; 1515 : }
; 1516 : }
; 1517 : }
; 1518 : }
; 1519 : */
; 1520 : i=i+lGetLen;
0011a 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
0011d 03 45 d0 add eax, DWORD PTR _lGetLen$5[ebp]
00120 89 45 e0 mov DWORD PTR _i$7[ebp], eax
; 1521 : i=i-1;
00123 8b 45 e0 mov eax, DWORD PTR _i$7[ebp]
00126 83 e8 01 sub eax, 1
00129 89 45 e0 mov DWORD PTR _i$7[ebp], eax
; 1522 : }
0012c e9 1f ff ff ff jmp $LN2@GetFrame_C
$LN3@GetFrame_C:
; 1523 : if ( i >= lp_io->lRecvLen ) //<2F><><EFBFBD>ݸոպ<D5B8>
00131 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00134 8b 4d e0 mov ecx, DWORD PTR _i$7[ebp]
00137 3b 48 2c cmp ecx, DWORD PTR [eax+44]
0013a 7c 0c jl SHORT $LN10@GetFrame_C
; 1524 : {
; 1525 : lp_io->lRecvLen = 0;
0013c 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0013f c7 40 2c 00 00
00 00 mov DWORD PTR [eax+44], 0
; 1526 : }
00146 eb 3c jmp SHORT $LN11@GetFrame_C
$LN10@GetFrame_C:
; 1527 : else
; 1528 : {
; 1529 : if ( i> 0 )
00148 83 7d e0 00 cmp DWORD PTR _i$7[ebp], 0
0014c 7e 36 jle SHORT $LN11@GetFrame_C
; 1530 : {
; 1531 : //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 1532 : lp_io->lRecvLen = lp_io->lRecvLen-i;
0014e 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00151 8b 48 2c mov ecx, DWORD PTR [eax+44]
00154 2b 4d e0 sub ecx, DWORD PTR _i$7[ebp]
00157 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
0015a 89 4a 2c mov DWORD PTR [edx+44], ecx
; 1533 : memcpy(lp_io->buf , lp_io->buf+i , lp_io->lRecvLen );
0015d 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00160 8b 48 2c mov ecx, DWORD PTR [eax+44]
00163 51 push ecx
00164 8b 55 e0 mov edx, DWORD PTR _i$7[ebp]
00167 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
0016a 8d 8c 10 e0 01
00 00 lea ecx, DWORD PTR [eax+edx+480]
00171 51 push ecx
00172 8b 55 08 mov edx, DWORD PTR _lp_io$[ebp]
00175 81 c2 e0 01 00
00 add edx, 480 ; 000001e0H
0017b 52 push edx
0017c e8 00 00 00 00 call _memcpy
00181 83 c4 0c add esp, 12 ; 0000000cH
$LN11@GetFrame_C:
; 1534 : }
; 1535 : }
; 1536 :
; 1537 : return iGetFrame;
00184 8b 45 e4 mov eax, DWORD PTR _iGetFrame$8[ebp]
00187 e9 a3 00 00 00 jmp $LN1@GetFrame_C
__catch$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$0:
; 1538 : }
; 1539 : catch (...)
; 1540 : {
; 1541 : LOG_APPERROR(_T("T"));
0018c 8d 8d 28 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00192 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
00197 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
0019b 51 push ecx
0019c 8b cc mov ecx, esp
0019e 89 a5 24 e6 ff
ff mov DWORD PTR $T3[ebp], esp
001a4 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
001a9 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
001ae 89 85 1c e6 ff
ff mov DWORD PTR tv143[ebp], eax
001b4 c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
001b8 51 push ecx
001b9 8b cc mov ecx, esp
001bb 89 a5 20 e6 ff
ff mov DWORD PTR $T2[ebp], esp
001c1 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
001c6 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
001cb 89 85 18 e6 ff
ff mov DWORD PTR tv186[ebp], eax
001d1 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
001d5 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
001d9 8d 8d 28 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
001df e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
001e4 a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z@4JA
001e9 83 c0 5d add eax, 93 ; 0000005dH
001ec 50 push eax
001ed 68 00 00 00 00 push OFFSET ??_C@_0O@HLJAGLMK@GetFrame_Cmpp@
001f2 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
001f7 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
001fc 8d 8d 28 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00202 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
00207 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
0020b 8d 8d 28 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00211 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 1542 : }
00216 b8 00 00 00 00 mov eax, $LN20@GetFrame_C
0021b c3 ret 0
0021c c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
00223 eb 07 jmp SHORT __tryend$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$1
$LN20@GetFrame_C:
00225 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
__tryend$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$1:
; 1543 : return -1;
0022c 83 c8 ff or eax, -1
$LN1@GetFrame_C:
; 1544 : }
0022f 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
00232 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00239 59 pop ecx
0023a 5f pop edi
0023b 5e pop esi
0023c 5b pop ebx
0023d 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
00240 33 cd xor ecx, ebp
00242 e8 00 00 00 00 call @__security_check_cookie@4
00247 8b e5 mov esp, ebp
00249 5d pop ebp
0024a c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$2:
00000 8d 8d 28 e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00006 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$3:
0000b 8b 8d 24 e6 ff
ff mov ecx, DWORD PTR $T3[ebp]
00011 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z$4:
00016 8b 8d 20 e6 ff
ff mov ecx, DWORD PTR $T2[ebp]
0001c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00021 cc int 3
00022 cc int 3
00023 cc int 3
00024 cc int 3
00025 cc int 3
__ehhandler$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z:
00026 90 npad 1
00027 90 npad 1
00028 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0002c 8d 42 0c lea eax, DWORD PTR [edx+12]
0002f 8b 8a 14 e6 ff
ff mov ecx, DWORD PTR [edx-6636]
00035 33 c8 xor ecx, eax
00037 e8 00 00 00 00 call @__security_check_cookie@4
0003c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0003f 33 c8 xor ecx, eax
00041 e8 00 00 00 00 call @__security_check_cookie@4
00046 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z
0004b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?GetFrame_Cmpp@CIOCP@@QAEJPAUIOCP_IO@@@Z ENDP ; CIOCP::GetFrame_Cmpp
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?SetDlg@CIOCP@@QAEXPAVCSmsCenterDlg@@@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_pDlg$ = 8 ; size = 4
?SetDlg@CIOCP@@QAEXPAVCSmsCenterDlg@@@Z PROC ; CIOCP::SetDlg, COMDAT
; _this$ = ecx
; 1547 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1548 : m_pDlg = pDlg;
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 8b 4d 08 mov ecx, DWORD PTR _pDlg$[ebp]
00012 89 48 04 mov DWORD PTR [eax+4], ecx
; 1549 : }
00015 5f pop edi
00016 5e pop esi
00017 5b pop ebx
00018 8b e5 mov esp, ebp
0001a 5d pop ebp
0001b c2 04 00 ret 4
?SetDlg@CIOCP@@QAEXPAVCSmsCenterDlg@@@Z ENDP ; CIOCP::SetDlg
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?Close@CIOCP@@QAEXXZ
_TEXT SEGMENT
tv207 = -6612 ; size = 4
tv164 = -6608 ; size = 4
$T2 = -6604 ; size = 4
$T3 = -6600 ; size = 4
_NXlog$4 = -6084 ; size = 6056
_i$5 = -28 ; size = 4
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
?Close@CIOCP@@QAEXXZ PROC ; CIOCP::Close, COMDAT
; _this$ = ecx
; 35 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?Close@CIOCP@@QAEXXZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 c4 19 00 00 mov eax, 6596 ; 000019c4H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 36 : try
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 37 : {
; 38 : int i;
; 39 :
; 40 : if ( !m_bInit )
00040 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00043 83 78 3c 00 cmp DWORD PTR [eax+60], 0
00047 0f 84 38 02 00
00 je $LN1@Close
; 41 : return ;
; 42 :
; 43 : m_bQuit = true;
0004d 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00050 c7 80 e4 00 00
00 01 00 00 00 mov DWORD PTR [eax+228], 1
; 44 :
; 45 : if (m_h_MainLoop!=INVALID_HANDLE_VALUE )
0005a 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
0005d 83 b8 dc 00 00
00 ff cmp DWORD PTR [eax+220], -1
00064 74 4b je SHORT $LN7@Close
; 46 : {
; 47 : if (WaitForSingleObject(m_h_MainLoop,3000)== WAIT_TIMEOUT )
00066 68 b8 0b 00 00 push 3000 ; 00000bb8H
0006b 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
0006e 8b 88 dc 00 00
00 mov ecx, DWORD PTR [eax+220]
00074 51 push ecx
00075 ff 15 00 00 00
00 call DWORD PTR __imp__WaitForSingleObject@8
0007b 3d 02 01 00 00 cmp eax, 258 ; 00000102H
00080 75 12 jne SHORT $LN8@Close
; 48 : TerminateThread(m_h_MainLoop,0); //<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ʱ<EFBFBD><CAB1>ǿ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>߳<EFBFBD>
00082 6a 00 push 0
00084 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00087 8b 88 dc 00 00
00 mov ecx, DWORD PTR [eax+220]
0008d 51 push ecx
0008e ff 15 00 00 00
00 call DWORD PTR __imp__TerminateThread@8
$LN8@Close:
; 49 : CloseHandle(m_h_MainLoop);
00094 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00097 8b 88 dc 00 00
00 mov ecx, DWORD PTR [eax+220]
0009d 51 push ecx
0009e ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 50 : m_h_MainLoop = INVALID_HANDLE_VALUE;
000a4 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000a7 c7 80 dc 00 00
00 ff ff ff ff mov DWORD PTR [eax+220], -1
$LN7@Close:
; 51 : }
; 52 :
; 53 : if (m_h_MainLoop2!=INVALID_HANDLE_VALUE )
000b1 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000b4 83 b8 e0 00 00
00 ff cmp DWORD PTR [eax+224], -1
000bb 74 4b je SHORT $LN9@Close
; 54 : {
; 55 : if ( WaitForSingleObject(m_h_MainLoop2,3000)== WAIT_TIMEOUT )
000bd 68 b8 0b 00 00 push 3000 ; 00000bb8H
000c2 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000c5 8b 88 e0 00 00
00 mov ecx, DWORD PTR [eax+224]
000cb 51 push ecx
000cc ff 15 00 00 00
00 call DWORD PTR __imp__WaitForSingleObject@8
000d2 3d 02 01 00 00 cmp eax, 258 ; 00000102H
000d7 75 12 jne SHORT $LN10@Close
; 56 : TerminateThread(m_h_MainLoop2,0); //<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ʱ<EFBFBD><CAB1>ǿ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>߳<EFBFBD>
000d9 6a 00 push 0
000db 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000de 8b 88 e0 00 00
00 mov ecx, DWORD PTR [eax+224]
000e4 51 push ecx
000e5 ff 15 00 00 00
00 call DWORD PTR __imp__TerminateThread@8
$LN10@Close:
; 57 : CloseHandle(m_h_MainLoop2);
000eb 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000ee 8b 88 e0 00 00
00 mov ecx, DWORD PTR [eax+224]
000f4 51 push ecx
000f5 ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 58 : m_h_MainLoop2 = INVALID_HANDLE_VALUE;
000fb 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
000fe c7 80 e0 00 00
00 ff ff ff ff mov DWORD PTR [eax+224], -1
$LN9@Close:
; 59 : }
; 60 :
; 61 : PostQueuedCompletionStatus( m_h_iocp, 0, 0, NULL );
00108 6a 00 push 0
0010a 6a 00 push 0
0010c 6a 00 push 0
0010e 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00111 8b 48 28 mov ecx, DWORD PTR [eax+40]
00114 51 push ecx
00115 ff 15 00 00 00
00 call DWORD PTR __imp__PostQueuedCompletionStatus@16
; 62 : CloseHandle( m_h_iocp );
0011b 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
0011e 8b 48 28 mov ecx, DWORD PTR [eax+40]
00121 51 push ecx
00122 ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 63 :
; 64 : for( i = 0; i < m_n_thread_count; i++ )
00128 c7 45 e4 00 00
00 00 mov DWORD PTR _i$5[ebp], 0
0012f eb 09 jmp SHORT $LN4@Close
$LN2@Close:
00131 8b 45 e4 mov eax, DWORD PTR _i$5[ebp]
00134 83 c0 01 add eax, 1
00137 89 45 e4 mov DWORD PTR _i$5[ebp], eax
$LN4@Close:
0013a 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
0013d 8b 4d e4 mov ecx, DWORD PTR _i$5[ebp]
00140 3b 88 90 00 00
00 cmp ecx, DWORD PTR [eax+144]
00146 7d 70 jge SHORT $LN3@Close
; 65 : {
; 66 : if (m_h_thread[i]!=INVALID_HANDLE_VALUE )
00148 8b 45 e4 mov eax, DWORD PTR _i$5[ebp]
0014b 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
0014e 83 bc 81 94 00
00 00 ff cmp DWORD PTR [ecx+eax*4+148], -1
00156 74 5b je SHORT $LN11@Close
; 67 : {
; 68 : if ( WaitForSingleObject(m_h_thread[i],1000)== WAIT_TIMEOUT )
00158 68 e8 03 00 00 push 1000 ; 000003e8H
0015d 8b 45 e4 mov eax, DWORD PTR _i$5[ebp]
00160 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
00163 8b 94 81 94 00
00 00 mov edx, DWORD PTR [ecx+eax*4+148]
0016a 52 push edx
0016b ff 15 00 00 00
00 call DWORD PTR __imp__WaitForSingleObject@8
00171 3d 02 01 00 00 cmp eax, 258 ; 00000102H
00176 75 16 jne SHORT $LN12@Close
; 69 : TerminateThread(m_h_thread[i],0); //<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ʱ<EFBFBD><CAB1>ǿ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>߳<EFBFBD>
00178 6a 00 push 0
0017a 8b 45 e4 mov eax, DWORD PTR _i$5[ebp]
0017d 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
00180 8b 94 81 94 00
00 00 mov edx, DWORD PTR [ecx+eax*4+148]
00187 52 push edx
00188 ff 15 00 00 00
00 call DWORD PTR __imp__TerminateThread@8
$LN12@Close:
; 70 : CloseHandle( m_h_thread[i] );
0018e 8b 45 e4 mov eax, DWORD PTR _i$5[ebp]
00191 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
00194 8b 94 81 94 00
00 00 mov edx, DWORD PTR [ecx+eax*4+148]
0019b 52 push edx
0019c ff 15 00 00 00
00 call DWORD PTR __imp__CloseHandle@4
; 71 : m_h_thread[i] = INVALID_HANDLE_VALUE;
001a2 8b 45 e4 mov eax, DWORD PTR _i$5[ebp]
001a5 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
001a8 c7 84 81 94 00
00 00 ff ff ff
ff mov DWORD PTR [ecx+eax*4+148], -1
$LN11@Close:
; 72 : }
; 73 : }
001b3 e9 79 ff ff ff jmp $LN2@Close
$LN3@Close:
; 74 : Sleep(200); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>
001b8 68 c8 00 00 00 push 200 ; 000000c8H
001bd ff 15 00 00 00
00 call DWORD PTR __imp__Sleep@4
; 75 : m_KeyList.Close();
001c3 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
001c6 83 c1 08 add ecx, 8
001c9 e8 00 00 00 00 call ?Close@CKeyList@@QAEXXZ ; CKeyList::Close
; 76 : CloseMainSocket();
001ce 8b 4d e8 mov ecx, DWORD PTR _this$[ebp]
001d1 e8 00 00 00 00 call ?CloseMainSocket@CIOCP@@QAEXXZ ; CIOCP::CloseMainSocket
; 77 : m_bInit = false;
001d6 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
001d9 c7 40 3c 00 00
00 00 mov DWORD PTR [eax+60], 0
; 78 : }
001e0 e9 90 00 00 00 jmp $LN14@Close
__catch$?Close@CIOCP@@QAEXXZ$0:
; 79 : catch (...)
; 80 : {
; 81 : LOG_APPERROR(_T("T"));
001e5 8d 8d 3c e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
001eb e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
001f0 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
001f4 51 push ecx
001f5 8b cc mov ecx, esp
001f7 89 a5 38 e6 ff
ff mov DWORD PTR $T3[ebp], esp
001fd 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
00202 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00207 89 85 30 e6 ff
ff mov DWORD PTR tv164[ebp], eax
0020d c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
00211 51 push ecx
00212 8b cc mov ecx, esp
00214 89 a5 34 e6 ff
ff mov DWORD PTR $T2[ebp], esp
0021a 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
0021f e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00224 89 85 2c e6 ff
ff mov DWORD PTR tv207[ebp], eax
0022a c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
0022e c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
00232 8d 8d 3c e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00238 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
0023d a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??Close@CIOCP@@QAEXXZ@4JA
00242 83 c0 2e add eax, 46 ; 0000002eH
00245 50 push eax
00246 68 00 00 00 00 push OFFSET ??_C@_05LGELBCGM@Close@
0024b 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
00250 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
00255 8d 8d 3c e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
0025b e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
00260 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
00264 8d 8d 3c e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
0026a e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 82 : }
0026f b8 00 00 00 00 mov eax, $LN20@Close
00274 c3 ret 0
$LN14@Close:
00275 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
0027c eb 07 jmp SHORT $LN1@Close
$LN20@Close:
0027e c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
$LN1@Close:
; 83 : }
00285 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
00288 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0028f 59 pop ecx
00290 5f pop edi
00291 5e pop esi
00292 5b pop ebx
00293 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
00296 33 cd xor ecx, ebp
00298 e8 00 00 00 00 call @__security_check_cookie@4
0029d 8b e5 mov esp, ebp
0029f 5d pop ebp
002a0 c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?Close@CIOCP@@QAEXXZ$2:
00000 8d 8d 3c e8 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00006 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?Close@CIOCP@@QAEXXZ$3:
0000b 8b 8d 38 e6 ff
ff mov ecx, DWORD PTR $T3[ebp]
00011 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?Close@CIOCP@@QAEXXZ$4:
00016 8b 8d 34 e6 ff
ff mov ecx, DWORD PTR $T2[ebp]
0001c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00021 cc int 3
00022 cc int 3
00023 cc int 3
00024 cc int 3
00025 cc int 3
__ehhandler$?Close@CIOCP@@QAEXXZ:
00026 90 npad 1
00027 90 npad 1
00028 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0002c 8d 42 0c lea eax, DWORD PTR [edx+12]
0002f 8b 8a 28 e6 ff
ff mov ecx, DWORD PTR [edx-6616]
00035 33 c8 xor ecx, eax
00037 e8 00 00 00 00 call @__security_check_cookie@4
0003c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0003f 33 c8 xor ecx, eax
00041 e8 00 00 00 00 call @__security_check_cookie@4
00046 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?Close@CIOCP@@QAEXXZ
0004b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?Close@CIOCP@@QAEXXZ ENDP ; CIOCP::Close
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?InitIoContext_Send@CIOCP@@QAEXPAUIOCP_IO_SEND@@@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_lp_io$ = 8 ; size = 4
?InitIoContext_Send@CIOCP@@QAEXPAUIOCP_IO_SEND@@@Z PROC ; CIOCP::InitIoContext_Send, COMDAT
; _this$ = ecx
; 1552 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1553 : memset( &lp_io->ol, 0, sizeof( WSAOVERLAPPED ) );
0000c 6a 14 push 20 ; 00000014H
0000e 6a 00 push 0
00010 8b 45 08 mov eax, DWORD PTR _lp_io$[ebp]
00013 50 push eax
00014 e8 00 00 00 00 call _memset
00019 83 c4 0c add esp, 12 ; 0000000cH
; 1554 : }
0001c 5f pop edi
0001d 5e pop esi
0001e 5b pop ebx
0001f 8b e5 mov esp, ebp
00021 5d pop ebp
00022 c2 04 00 ret 4
?InitIoContext_Send@CIOCP@@QAEXPAUIOCP_IO_SEND@@@Z ENDP ; CIOCP::InitIoContext_Send
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?CheckForInvalidConnection@CIOCP@@QAEXXZ
_TEXT SEGMENT
tv249 = -7132 ; size = 4
tv206 = -7128 ; size = 4
tv200 = -7128 ; size = 4
tv150 = -7128 ; size = 4
$T2 = -7124 ; size = 4
$T3 = -7120 ; size = 4
_NXlog$4 = -6604 ; size = 6056
_i$5 = -548 ; size = 4
_lp_io$6 = -544 ; size = 4
_dwNow$7 = -540 ; size = 4
_szMsg$8 = -536 ; size = 512
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
?CheckForInvalidConnection@CIOCP@@QAEXXZ PROC ; CIOCP::CheckForInvalidConnection, COMDAT
; _this$ = ecx
; 619 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?CheckForInvalidConnection@CIOCP@@QAEXXZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 cc 1b 00 00 mov eax, 7116 ; 00001bccH
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 620 : try
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 621 : {
; 622 : TCHAR szMsg[256]={0};
00040 68 00 02 00 00 push 512 ; 00000200H
00045 6a 00 push 0
00047 8d 85 e8 fd ff
ff lea eax, DWORD PTR _szMsg$8[ebp]
0004d 50 push eax
0004e e8 00 00 00 00 call _memset
00053 83 c4 0c add esp, 12 ; 0000000cH
; 623 : DWORD dwNow = ::GetTickCount();
00056 ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
0005c 89 85 e4 fd ff
ff mov DWORD PTR _dwNow$7[ebp], eax
; 624 :
; 625 : IOCP_IO_PTR lp_io = m_KeyList.m_IO;
00062 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00065 8b 48 14 mov ecx, DWORD PTR [eax+20]
00068 89 8d e0 fd ff
ff mov DWORD PTR _lp_io$6[ebp], ecx
; 626 : if ( !lp_io )
0006e 83 bd e0 fd ff
ff 00 cmp DWORD PTR _lp_io$6[ebp], 0
00075 0f 84 62 03 00
00 je $LN1@CheckForIn
; 627 : return ;
; 628 : for ( int i=0 ; i< MAX_LOGINUSER ; i++ )
0007b c7 85 dc fd ff
ff 00 00 00 00 mov DWORD PTR _i$5[ebp], 0
00085 eb 0f jmp SHORT $LN4@CheckForIn
$LN2@CheckForIn:
00087 8b 85 dc fd ff
ff mov eax, DWORD PTR _i$5[ebp]
0008d 83 c0 01 add eax, 1
00090 89 85 dc fd ff
ff mov DWORD PTR _i$5[ebp], eax
$LN4@CheckForIn:
00096 81 bd dc fd ff
ff e8 03 00 00 cmp DWORD PTR _i$5[ebp], 1000 ; 000003e8H
000a0 0f 8d 92 02 00
00 jge $LN3@CheckForIn
; 629 : {
; 630 : if ( lp_io[i].socket != NULL && lp_io[i].socket!=INVALID_SOCKET && lp_io[i].lRandID>0 )
000a6 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
000b0 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
000b6 83 7c 01 14 00 cmp DWORD PTR [ecx+eax+20], 0
000bb 0f 84 72 02 00
00 je $LN7@CheckForIn
000c1 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
000cb 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
000d1 83 7c 01 14 ff cmp DWORD PTR [ecx+eax+20], -1
000d6 0f 84 57 02 00
00 je $LN7@CheckForIn
000dc 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
000e6 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
000ec 83 7c 01 20 00 cmp DWORD PTR [ecx+eax+32], 0
000f1 0f 8e 3c 02 00
00 jle $LN7@CheckForIn
; 631 : {
; 632 : if (lp_io[i].dwAcceptTime>0 && lp_io[i].state != SOCKET_STATE_CONNECT_AND_READ )
000f7 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00101 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00107 83 bc 01 d4 01
00 00 00 cmp DWORD PTR [ecx+eax+468], 0
0010f 0f 86 d2 00 00
00 jbe $LN8@CheckForIn
00115 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
0011f 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00125 83 7c 01 1c 02 cmp DWORD PTR [ecx+eax+28], 2
0012a 0f 84 b7 00 00
00 je $LN8@CheckForIn
; 633 : {
; 634 : /*
; 635 : op_len = sizeof(op);
; 636 : nRet = getsockopt( lp_io[i].socket, SOL_SOCKET, SO_CONNECT_TIME, (char*)&op, &op_len );
; 637 : if( SOCKET_ERROR == nRet )
; 638 : {
; 639 : continue;
; 640 : }
; 641 : if( op != 0xffffffff && op > 3 ) //3<><33><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ
; 642 : {
; 643 : sprintf(szMsg , "[%d]%s:%d <20><><EFBFBD>ӳ<EFBFBD>ʱ<EFBFBD><CAB1>" , lp_io[i].m_lLocalPort,lp_io[i].m_szIP,lp_io[i].m_lPort);
; 644 : m_pDlg->AddLog(szMsg);
; 645 : closesocket( lp_io[i].socket );
; 646 : }
; 647 : */
; 648 : if ( dwNow - lp_io[i].dwAcceptTime >5000 ) //10<31><30><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ
00130 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
0013a 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00140 8b 95 e4 fd ff
ff mov edx, DWORD PTR _dwNow$7[ebp]
00146 2b 94 01 d4 01
00 00 sub edx, DWORD PTR [ecx+eax+468]
0014d 81 fa 88 13 00
00 cmp edx, 5000 ; 00001388H
00153 0f 86 8e 00 00
00 jbe $LN8@CheckForIn
; 649 : {
; 650 : _stprintf(szMsg , _T("[%d]%s:%d <20><><EFBFBD>ӳ<EFBFBD>ʱ<EFBFBD><CAB1>") , lp_io[i].m_lLocalPort,lp_io[i].m_szIP,lp_io[i].m_lPort);
00159 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00163 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00169 8b 54 01 70 mov edx, DWORD PTR [ecx+eax+112]
0016d 52 push edx
0016e 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00178 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
0017e 8d 54 01 30 lea edx, DWORD PTR [ecx+eax+48]
00182 52 push edx
00183 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
0018d 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00193 8b 54 01 74 mov edx, DWORD PTR [ecx+eax+116]
00197 52 push edx
00198 68 00 00 00 00 push OFFSET ??_C@_1CA@MOMGAHJI@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$NO?$PP?$KF?$PP?$IF?$PP?v?$AA?$AB@
0019d 8d 85 e8 fd ff
ff lea eax, DWORD PTR _szMsg$8[ebp]
001a3 50 push eax
001a4 e8 00 00 00 00 call __swprintf
001a9 83 c4 14 add esp, 20 ; 00000014H
; 651 : m_pDlg->AddLog(szMsg);
001ac 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
001af 8b 48 04 mov ecx, DWORD PTR [eax+4]
001b2 89 8d 28 e4 ff
ff mov DWORD PTR tv150[ebp], ecx
001b8 6a 00 push 0
001ba 8d 95 e8 fd ff
ff lea edx, DWORD PTR _szMsg$8[ebp]
001c0 52 push edx
001c1 8b 8d 28 e4 ff
ff mov ecx, DWORD PTR tv150[ebp]
001c7 e8 00 00 00 00 call ?AddLog@CSmsCenterDlg@@QAEXPB_WJ@Z ; CSmsCenterDlg::AddLog
; 652 : closesocket( lp_io[i].socket );
001cc 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
001d6 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
001dc 8b 54 01 14 mov edx, DWORD PTR [ecx+eax+20]
001e0 52 push edx
001e1 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
$LN8@CheckForIn:
; 653 : }
; 654 : }
; 655 : if ( lp_io[i].state == SOCKET_STATE_CONNECT_AND_READ )
001e7 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
001f1 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
001f7 83 7c 01 1c 02 cmp DWORD PTR [ecx+eax+28], 2
001fc 0f 85 31 01 00
00 jne $LN7@CheckForIn
; 656 : {
; 657 : if ( lp_io[i].dwEndRecvFrame>0 )
00202 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
0020c 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00212 83 bc 01 d8 01
00 00 00 cmp DWORD PTR [ecx+eax+472], 0
0021a 76 60 jbe SHORT $LN11@CheckForIn
; 658 : {
; 659 : if ( dwNow - lp_io[i].dwEndRecvFrame > RECVREFRESH_TIMEOUT )
0021c 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00226 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
0022c 8b 95 e4 fd ff
ff mov edx, DWORD PTR _dwNow$7[ebp]
00232 2b 94 01 d8 01
00 00 sub edx, DWORD PTR [ecx+eax+472]
00239 81 fa c0 d4 01
00 cmp edx, 120000 ; 0001d4c0H
0023f 76 36 jbe SHORT $LN13@CheckForIn
; 660 : {
; 661 : lp_io[i].m_lID = 199992; //<2F><><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>ı<EFBFBD>־
00241 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
0024b 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00251 c7 84 01 c8 01
00 00 38 0d 03
00 mov DWORD PTR [ecx+eax+456], 199992 ; 00030d38H
; 662 : closesocket( lp_io[i].socket );
0025c 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00266 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
0026c 8b 54 01 14 mov edx, DWORD PTR [ecx+eax+20]
00270 52 push edx
00271 ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
$LN13@CheckForIn:
; 663 :
; 664 : }
; 665 : }
00277 e9 b7 00 00 00 jmp $LN7@CheckForIn
$LN11@CheckForIn:
; 666 : else
; 667 : {
; 668 : if ( dwNow - lp_io[i].dwAcceptTime > 40000 ) //30<33><30>û<EFBFBD>յ<EFBFBD><D5B5><EFBFBD>ȷ<EFBFBD>İ<EFBFBD><C4B0>ͳ<EFBFBD>ʱ
0027c 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00286 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
0028c 8b 95 e4 fd ff
ff mov edx, DWORD PTR _dwNow$7[ebp]
00292 2b 94 01 d4 01
00 00 sub edx, DWORD PTR [ecx+eax+468]
00299 81 fa 40 9c 00
00 cmp edx, 40000 ; 00009c40H
0029f 0f 86 8e 00 00
00 jbe $LN7@CheckForIn
; 669 : {
; 670 : _stprintf(szMsg , _T("[%d]%s:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʱ<EFBFBD><CAB1>") , lp_io[i].m_lLocalPort,lp_io[i].m_szIP,lp_io[i].m_lPort);
002a5 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
002af 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
002b5 8b 54 01 70 mov edx, DWORD PTR [ecx+eax+112]
002b9 52 push edx
002ba 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
002c4 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
002ca 8d 54 01 30 lea edx, DWORD PTR [ecx+eax+48]
002ce 52 push edx
002cf 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
002d9 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
002df 8b 54 01 74 mov edx, DWORD PTR [ecx+eax+116]
002e3 52 push edx
002e4 68 00 00 00 00 push OFFSET ??_C@_1CE@LBHGJMMD@?$AA?$FL?$AA?$CF?$AAd?$AA?$FN?$AA?$CF?$AAs?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$KF?$AA6?$AAp?$AAn?$PP?$IF@
002e9 8d 85 e8 fd ff
ff lea eax, DWORD PTR _szMsg$8[ebp]
002ef 50 push eax
002f0 e8 00 00 00 00 call __swprintf
002f5 83 c4 14 add esp, 20 ; 00000014H
; 671 : m_pDlg->AddLog(szMsg);
002f8 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
002fb 8b 48 04 mov ecx, DWORD PTR [eax+4]
002fe 89 8d 28 e4 ff
ff mov DWORD PTR tv200[ebp], ecx
00304 6a 00 push 0
00306 8d 95 e8 fd ff
ff lea edx, DWORD PTR _szMsg$8[ebp]
0030c 52 push edx
0030d 8b 8d 28 e4 ff
ff mov ecx, DWORD PTR tv200[ebp]
00313 e8 00 00 00 00 call ?AddLog@CSmsCenterDlg@@QAEXPB_WJ@Z ; CSmsCenterDlg::AddLog
; 672 : closesocket( lp_io[i].socket );
00318 69 85 dc fd ff
ff b0 df 06 00 imul eax, DWORD PTR _i$5[ebp], 450480
00322 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _lp_io$6[ebp]
00328 8b 54 01 14 mov edx, DWORD PTR [ecx+eax+20]
0032c 52 push edx
0032d ff 15 00 00 00
00 call DWORD PTR __imp__closesocket@4
$LN7@CheckForIn:
; 673 : }
; 674 : }
; 675 : }
; 676 : }
; 677 : }
00333 e9 4f fd ff ff jmp $LN2@CheckForIn
$LN3@CheckForIn:
; 678 : }
00338 e9 90 00 00 00 jmp $LN16@CheckForIn
__catch$?CheckForInvalidConnection@CIOCP@@QAEXXZ$0:
; 679 : catch (...)
; 680 : {
; 681 : LOG_APPERROR(_T("T"));
0033d 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00343 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
00348 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
0034c 51 push ecx
0034d 8b cc mov ecx, esp
0034f 89 a5 30 e4 ff
ff mov DWORD PTR $T3[ebp], esp
00355 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
0035a e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
0035f 89 85 28 e4 ff
ff mov DWORD PTR tv206[ebp], eax
00365 c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
00369 51 push ecx
0036a 8b cc mov ecx, esp
0036c 89 a5 2c e4 ff
ff mov DWORD PTR $T2[ebp], esp
00372 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
00377 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
0037c 89 85 24 e4 ff
ff mov DWORD PTR tv249[ebp], eax
00382 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
00386 c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
0038a 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00390 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
00395 a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??CheckForInvalidConnection@CIOCP@@QAEXXZ@4JA
0039a 83 c0 3e add eax, 62 ; 0000003eH
0039d 50 push eax
0039e 68 00 00 00 00 push OFFSET ??_C@_0BK@HCEPDKA@CheckForInvalidConnection@
003a3 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
003a8 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
003ad 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
003b3 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
003b8 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
003bc 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
003c2 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 682 : }
003c7 b8 00 00 00 00 mov eax, $LN22@CheckForIn
003cc c3 ret 0
$LN16@CheckForIn:
003cd c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
003d4 eb 07 jmp SHORT $LN1@CheckForIn
$LN22@CheckForIn:
003d6 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
$LN1@CheckForIn:
; 683 : }
003dd 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
003e0 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
003e7 59 pop ecx
003e8 5f pop edi
003e9 5e pop esi
003ea 5b pop ebx
003eb 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
003ee 33 cd xor ecx, ebp
003f0 e8 00 00 00 00 call @__security_check_cookie@4
003f5 8b e5 mov esp, ebp
003f7 5d pop ebp
003f8 c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?CheckForInvalidConnection@CIOCP@@QAEXXZ$2:
00000 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00006 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?CheckForInvalidConnection@CIOCP@@QAEXXZ$3:
0000b 8b 8d 30 e4 ff
ff mov ecx, DWORD PTR $T3[ebp]
00011 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?CheckForInvalidConnection@CIOCP@@QAEXXZ$4:
00016 8b 8d 2c e4 ff
ff mov ecx, DWORD PTR $T2[ebp]
0001c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00021 cc int 3
00022 cc int 3
00023 cc int 3
00024 cc int 3
00025 cc int 3
__ehhandler$?CheckForInvalidConnection@CIOCP@@QAEXXZ:
00026 90 npad 1
00027 90 npad 1
00028 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0002c 8d 42 0c lea eax, DWORD PTR [edx+12]
0002f 8b 8a 20 e4 ff
ff mov ecx, DWORD PTR [edx-7136]
00035 33 c8 xor ecx, eax
00037 e8 00 00 00 00 call @__security_check_cookie@4
0003c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0003f 33 c8 xor ecx, eax
00041 e8 00 00 00 00 call @__security_check_cookie@4
00046 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?CheckForInvalidConnection@CIOCP@@QAEXXZ
0004b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?CheckForInvalidConnection@CIOCP@@QAEXXZ ENDP ; CIOCP::CheckForInvalidConnection
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ
_TEXT SEGMENT
tv211 = -7132 ; size = 4
tv168 = -7128 ; size = 4
tv166 = -7128 ; size = 4
tv142 = -7128 ; size = 4
$T2 = -7124 ; size = 4
$T3 = -7120 ; size = 4
_NXlog$4 = -6604 ; size = 6056
_i$5 = -548 ; size = 4
_pSql$6 = -544 ; size = 4
_dwNow$7 = -540 ; size = 4
_szMsg$8 = -536 ; size = 512
_this$ = -24 ; size = 4
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ PROC ; CIOCP::CheckForInvalidSQLConnection, COMDAT
; _this$ = ecx
; 1557 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 cc 1b 00 00 mov eax, 7116 ; 00001bccH
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
00036 89 4d e8 mov DWORD PTR _this$[ebp], ecx
; 1558 : try
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 1559 : {
; 1560 : TCHAR szMsg[256]={0};
00040 68 00 02 00 00 push 512 ; 00000200H
00045 6a 00 push 0
00047 8d 85 e8 fd ff
ff lea eax, DWORD PTR _szMsg$8[ebp]
0004d 50 push eax
0004e e8 00 00 00 00 call _memset
00053 83 c4 0c add esp, 12 ; 0000000cH
; 1561 : DWORD dwNow = ::GetTickCount();
00056 ff 15 00 00 00
00 call DWORD PTR __imp__GetTickCount@0
0005c 89 85 e4 fd ff
ff mov DWORD PTR _dwNow$7[ebp], eax
; 1562 : /*
; 1563 : LPVOID * lpProcess = m_KeyList.m_Process;
; 1564 : if ( lpProcess )
; 1565 : {
; 1566 : for ( int i=0 ; i<MAX_SQLCONNECT; i++ )
; 1567 : {
; 1568 : CProcessSocket * pSocket = (CProcessSocket *)lpProcess[i];
; 1569 : if ( pSocket && pSocket->m_adoConnection.IsOpen() )
; 1570 : {
; 1571 : if ( pSocket->m_bUse && pSocket->m_lRandID>0 ) //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>е<EFBFBD>SQL,40<34><30><EFBFBD>ӳ<EFBFBD>ʱ
; 1572 : {
; 1573 : if ( dwNow - pSocket->m_dwEndUse > SQL_TIMEOUT_USE )
; 1574 : {
; 1575 : pSocket->m_AdoRS.Close();
; 1576 : pSocket->m_AdoRS2.Close();
; 1577 : pSocket->m_adoConnection.Close();
; 1578 : pSocket->m_bUse = false;
; 1579 : pSocket->m_lRandID = 0;
; 1580 :
; 1581 : sprintf(szMsg, "SQL:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" , i );
; 1582 : m_pDlg->AddLog(szMsg);
; 1583 : }
; 1584 : }
; 1585 : else
; 1586 : {
; 1587 : //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>е<EFBFBD>SQL,20<32><30><EFBFBD>ӳ<EFBFBD>ʱ
; 1588 : if ( dwNow - pSocket->m_dwEndUse > SQL_TIMEOUT_DISUSE )
; 1589 : {
; 1590 : pSocket->m_AdoRS.Close();
; 1591 : pSocket->m_AdoRS2.Close();
; 1592 : pSocket->m_adoConnection.Close();
; 1593 : pSocket->m_bUse = false;
; 1594 : pSocket->m_lRandID = 0;
; 1595 :
; 1596 : sprintf(szMsg, "SQL:%d <20><>ʱδʹ<CEB4>ã<EFBFBD><C3A3>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" , i );
; 1597 : m_pDlg->AddLog(szMsg);
; 1598 : }
; 1599 : }
; 1600 : }
; 1601 : }
; 1602 : }
; 1603 : */
; 1604 : IOCP_SQL_PTR pSql = m_KeyList.m_SQL;
00062 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
00065 8b 48 1c mov ecx, DWORD PTR [eax+28]
00068 89 8d e0 fd ff
ff mov DWORD PTR _pSql$6[ebp], ecx
; 1605 : if ( pSql )
0006e 83 bd e0 fd ff
ff 00 cmp DWORD PTR _pSql$6[ebp], 0
00075 0f 84 b4 01 00
00 je $LN6@CheckForIn
; 1606 : {
; 1607 : for ( int i=0 ; i<MAX_SQLCONNECT; i++ )
0007b c7 85 dc fd ff
ff 00 00 00 00 mov DWORD PTR _i$5[ebp], 0
00085 eb 0f jmp SHORT $LN4@CheckForIn
$LN2@CheckForIn:
00087 8b 85 dc fd ff
ff mov eax, DWORD PTR _i$5[ebp]
0008d 83 c0 01 add eax, 1
00090 89 85 dc fd ff
ff mov DWORD PTR _i$5[ebp], eax
$LN4@CheckForIn:
00096 81 bd dc fd ff
ff 96 00 00 00 cmp DWORD PTR _i$5[ebp], 150 ; 00000096H
000a0 0f 8d 89 01 00
00 jge $LN6@CheckForIn
; 1608 : {
; 1609 : if ( pSql[i].adoConnection.IsOpen() )
000a6 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
000ad 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
000b3 8d 4c 01 08 lea ecx, DWORD PTR [ecx+eax+8]
000b7 e8 00 00 00 00 call ?IsOpen@CAdoConnection@@QAEHXZ ; CAdoConnection::IsOpen
000bc 85 c0 test eax, eax
000be 0f 84 66 01 00
00 je $LN7@CheckForIn
; 1610 : {
; 1611 : if ( pSql[i].bUse && pSql[i].lRandID>0 ) //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>е<EFBFBD>SQL,40<34><30><EFBFBD>ӳ<EFBFBD>ʱ
000c4 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
000cb 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
000d1 83 3c 01 00 cmp DWORD PTR [ecx+eax], 0
000d5 0f 84 b6 00 00
00 je $LN8@CheckForIn
000db 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
000e2 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
000e8 83 7c 01 04 00 cmp DWORD PTR [ecx+eax+4], 0
000ed 0f 8e 9e 00 00
00 jle $LN8@CheckForIn
; 1612 : {
; 1613 : if ( dwNow - pSql[i].dwEndUse > SQL_TIMEOUT_USE )
000f3 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
000fa 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
00100 8b 95 e4 fd ff
ff mov edx, DWORD PTR _dwNow$7[ebp]
00106 2b 54 01 28 sub edx, DWORD PTR [ecx+eax+40]
0010a 81 fa 40 77 1b
00 cmp edx, 1800000 ; 001b7740H
00110 76 7a jbe SHORT $LN10@CheckForIn
; 1614 : {
; 1615 : pSql[i].adoConnection.Close();
00112 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
00119 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
0011f 8d 4c 01 08 lea ecx, DWORD PTR [ecx+eax+8]
00123 e8 00 00 00 00 call ?Close@CAdoConnection@@QAEXXZ ; CAdoConnection::Close
; 1616 : pSql[i].bUse = false;
00128 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
0012f 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
00135 c7 04 01 00 00
00 00 mov DWORD PTR [ecx+eax], 0
; 1617 : pSql[i].lRandID = 0;
0013c 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
00143 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
00149 c7 44 01 04 00
00 00 00 mov DWORD PTR [ecx+eax+4], 0
; 1618 :
; 1619 : _stprintf(szMsg, _T("SQL:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , i );
00151 8b 85 dc fd ff
ff mov eax, DWORD PTR _i$5[ebp]
00157 50 push eax
00158 68 00 00 00 00 push OFFSET ??_C@_1CE@HBKAPEML@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?M?$AA?2?$PP?$IF?$PP?v?$AA?$AM?$PP?j?$PP?$KI?$PP?$KN@
0015d 8d 8d e8 fd ff
ff lea ecx, DWORD PTR _szMsg$8[ebp]
00163 51 push ecx
00164 e8 00 00 00 00 call __swprintf
00169 83 c4 0c add esp, 12 ; 0000000cH
; 1620 : m_pDlg->AddLog(szMsg);
0016c 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
0016f 8b 48 04 mov ecx, DWORD PTR [eax+4]
00172 89 8d 28 e4 ff
ff mov DWORD PTR tv142[ebp], ecx
00178 6a 00 push 0
0017a 8d 95 e8 fd ff
ff lea edx, DWORD PTR _szMsg$8[ebp]
00180 52 push edx
00181 8b 8d 28 e4 ff
ff mov ecx, DWORD PTR tv142[ebp]
00187 e8 00 00 00 00 call ?AddLog@CSmsCenterDlg@@QAEXPB_WJ@Z ; CSmsCenterDlg::AddLog
$LN10@CheckForIn:
; 1621 : }
; 1622 : }
0018c e9 99 00 00 00 jmp $LN7@CheckForIn
$LN8@CheckForIn:
; 1623 : else
; 1624 : {
; 1625 : //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>е<EFBFBD>SQL,20<32><30><EFBFBD>ӳ<EFBFBD>ʱ
; 1626 : if ( dwNow - pSql[i].dwEndUse > SQL_TIMEOUT_DISUSE )
00191 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
00198 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
0019e 8b 95 e4 fd ff
ff mov edx, DWORD PTR _dwNow$7[ebp]
001a4 2b 54 01 28 sub edx, DWORD PTR [ecx+eax+40]
001a8 81 fa a0 bb 0d
00 cmp edx, 900000 ; 000dbba0H
001ae 76 7a jbe SHORT $LN7@CheckForIn
; 1627 : {
; 1628 : pSql[i].adoConnection.Close();
001b0 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
001b7 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
001bd 8d 4c 01 08 lea ecx, DWORD PTR [ecx+eax+8]
001c1 e8 00 00 00 00 call ?Close@CAdoConnection@@QAEXXZ ; CAdoConnection::Close
; 1629 : pSql[i].bUse = false;
001c6 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
001cd 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
001d3 c7 04 01 00 00
00 00 mov DWORD PTR [ecx+eax], 0
; 1630 : pSql[i].lRandID = 0;
001da 6b 85 dc fd ff
ff 34 imul eax, DWORD PTR _i$5[ebp], 52
001e1 8b 8d e0 fd ff
ff mov ecx, DWORD PTR _pSql$6[ebp]
001e7 c7 44 01 04 00
00 00 00 mov DWORD PTR [ecx+eax+4], 0
; 1631 :
; 1632 : _stprintf(szMsg, _T("SQL:%d <20><>ʱδʹ<CEB4>ã<EFBFBD><C3A3>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , i );
001ef 8b 85 dc fd ff
ff mov eax, DWORD PTR _i$5[ebp]
001f5 50 push eax
001f6 68 00 00 00 00 push OFFSET ??_C@_1CG@BOOJGIJM@?$AAS?$AAQ?$AAL?$AA?3?$AA?$CF?$AAd?$AA?5?$PP?$IF?$PP?v?$AA?$CK?$AA?$HP?$AA?$CI?$AA?$AM?$PP?j?$PP?$KI@
001fb 8d 8d e8 fd ff
ff lea ecx, DWORD PTR _szMsg$8[ebp]
00201 51 push ecx
00202 e8 00 00 00 00 call __swprintf
00207 83 c4 0c add esp, 12 ; 0000000cH
; 1633 : m_pDlg->AddLog(szMsg);
0020a 8b 45 e8 mov eax, DWORD PTR _this$[ebp]
0020d 8b 48 04 mov ecx, DWORD PTR [eax+4]
00210 89 8d 28 e4 ff
ff mov DWORD PTR tv166[ebp], ecx
00216 6a 00 push 0
00218 8d 95 e8 fd ff
ff lea edx, DWORD PTR _szMsg$8[ebp]
0021e 52 push edx
0021f 8b 8d 28 e4 ff
ff mov ecx, DWORD PTR tv166[ebp]
00225 e8 00 00 00 00 call ?AddLog@CSmsCenterDlg@@QAEXPB_WJ@Z ; CSmsCenterDlg::AddLog
$LN7@CheckForIn:
; 1634 : }
; 1635 : }
; 1636 : }
; 1637 : }
0022a e9 58 fe ff ff jmp $LN2@CheckForIn
$LN6@CheckForIn:
; 1638 : }
; 1639 : }
0022f e9 90 00 00 00 jmp $LN13@CheckForIn
__catch$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$0:
; 1640 : catch (...)
; 1641 : {
; 1642 : LOG_APPERROR(_T("T"));
00234 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
0023a e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
0023f c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
00243 51 push ecx
00244 8b cc mov ecx, esp
00246 89 a5 30 e4 ff
ff mov DWORD PTR $T3[ebp], esp
0024c 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
00251 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00256 89 85 28 e4 ff
ff mov DWORD PTR tv168[ebp], eax
0025c c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
00260 51 push ecx
00261 8b cc mov ecx, esp
00263 89 a5 2c e4 ff
ff mov DWORD PTR $T2[ebp], esp
00269 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
0026e e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00273 89 85 24 e4 ff
ff mov DWORD PTR tv211[ebp], eax
00279 c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
0027d c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
00281 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00287 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
0028c a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??CheckForInvalidSQLConnection@CIOCP@@QAEXXZ@4JA
00291 83 c0 55 add eax, 85 ; 00000055H
00294 50 push eax
00295 68 00 00 00 00 push OFFSET ??_C@_0BN@JHDKFMGA@CheckForInvalidSQLConnection@
0029a 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
0029f 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
002a4 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
002aa e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
002af c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
002b3 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
002b9 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 1643 : }
002be b8 00 00 00 00 mov eax, $LN19@CheckForIn
002c3 c3 ret 0
$LN13@CheckForIn:
002c4 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
002cb eb 07 jmp SHORT $LN1@CheckForIn
$LN19@CheckForIn:
002cd c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
$LN1@CheckForIn:
; 1644 : }
002d4 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
002d7 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
002de 59 pop ecx
002df 5f pop edi
002e0 5e pop esi
002e1 5b pop ebx
002e2 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
002e5 33 cd xor ecx, ebp
002e7 e8 00 00 00 00 call @__security_check_cookie@4
002ec 8b e5 mov esp, ebp
002ee 5d pop ebp
002ef c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$2:
00000 8d 8d 34 e6 ff
ff lea ecx, DWORD PTR _NXlog$4[ebp]
00006 e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$3:
0000b 8b 8d 30 e4 ff
ff mov ecx, DWORD PTR $T3[ebp]
00011 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ$4:
00016 8b 8d 2c e4 ff
ff mov ecx, DWORD PTR $T2[ebp]
0001c e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00021 cc int 3
00022 cc int 3
00023 cc int 3
00024 cc int 3
00025 cc int 3
__ehhandler$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ:
00026 90 npad 1
00027 90 npad 1
00028 8b 54 24 08 mov edx, DWORD PTR [esp+8]
0002c 8d 42 0c lea eax, DWORD PTR [edx+12]
0002f 8b 8a 20 e4 ff
ff mov ecx, DWORD PTR [edx-7136]
00035 33 c8 xor ecx, eax
00037 e8 00 00 00 00 call @__security_check_cookie@4
0003c 8b 4a f8 mov ecx, DWORD PTR [edx-8]
0003f 33 c8 xor ecx, eax
00041 e8 00 00 00 00 call @__security_check_cookie@4
00046 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ
0004b e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ ENDP ; CIOCP::CheckForInvalidSQLConnection
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?MainLoop2@CIOCP@@SGKPAX@Z
_TEXT SEGMENT
tv65 = -6628 ; size = 4
tv77 = -6624 ; size = 4
$T2 = -6620 ; size = 4
$T3 = -6616 ; size = 4
$T4 = -6612 ; size = 4
$T5 = -6608 ; size = 4
_NXlog$6 = -6092 ; size = 6056
_nCount2$7 = -36 ; size = 4
_nCount$8 = -32 ; size = 4
_piocp$9 = -28 ; size = 4
_AutoCoInit$10 = -21 ; size = 1
__$ArrayPad$ = -20 ; size = 4
__$EHRec$ = -16 ; size = 16
_lp_param$ = 8 ; size = 4
?MainLoop2@CIOCP@@SGKPAX@Z PROC ; CIOCP::MainLoop2, COMDAT
; 1647 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?MainLoop2@CIOCP@@SGKPAX@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 51 push ecx
00012 b8 d4 19 00 00 mov eax, 6612 ; 000019d4H
00017 e8 00 00 00 00 call __chkstk
0001c a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00021 33 c5 xor eax, ebp
00023 89 45 ec mov DWORD PTR __$ArrayPad$[ebp], eax
00026 53 push ebx
00027 56 push esi
00028 57 push edi
00029 50 push eax
0002a 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp+4]
0002d 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00033 89 65 f0 mov DWORD PTR __$EHRec$[ebp], esp
; 1648 : try
00036 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+12], 0
; 1649 : {
; 1650 : AutoCoInitializeEx AutoCoInit; //<2F>Զ<EFBFBD><D4B6><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Com<6F><6D><EFBFBD><EFBFBD>
0003d 8d 4d eb lea ecx, DWORD PTR _AutoCoInit$10[ebp]
00040 e8 00 00 00 00 call ??0AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::AutoCoInitializeEx
00045 c6 45 fc 01 mov BYTE PTR __$EHRec$[ebp+12], 1
; 1651 :
; 1652 : CIOCP * piocp = (CIOCP *)lp_param;
00049 8b 45 08 mov eax, DWORD PTR _lp_param$[ebp]
0004c 89 45 e4 mov DWORD PTR _piocp$9[ebp], eax
; 1653 :
; 1654 : int nCount = 0;
0004f c7 45 e0 00 00
00 00 mov DWORD PTR _nCount$8[ebp], 0
; 1655 : int nCount2= 0;
00056 c7 45 dc 00 00
00 00 mov DWORD PTR _nCount2$7[ebp], 0
$LN2@MainLoop2:
; 1656 : while( !piocp->m_bQuit )
0005d 8b 45 e4 mov eax, DWORD PTR _piocp$9[ebp]
00060 83 b8 e4 00 00
00 00 cmp DWORD PTR [eax+228], 0
00067 75 49 jne SHORT $LN3@MainLoop2
; 1657 : {
; 1658 : nCount ++;
00069 8b 45 e0 mov eax, DWORD PTR _nCount$8[ebp]
0006c 83 c0 01 add eax, 1
0006f 89 45 e0 mov DWORD PTR _nCount$8[ebp], eax
; 1659 : if ( nCount>10 ) //ÿ5<C3BF><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>γ<EFBFBD>ʱ
00072 83 7d e0 0a cmp DWORD PTR _nCount$8[ebp], 10 ; 0000000aH
00076 7e 0f jle SHORT $LN5@MainLoop2
; 1660 : {
; 1661 : nCount=0;
00078 c7 45 e0 00 00
00 00 mov DWORD PTR _nCount$8[ebp], 0
; 1662 : piocp->CheckForInvalidConnection();
0007f 8b 4d e4 mov ecx, DWORD PTR _piocp$9[ebp]
00082 e8 00 00 00 00 call ?CheckForInvalidConnection@CIOCP@@QAEXXZ ; CIOCP::CheckForInvalidConnection
$LN5@MainLoop2:
; 1663 : }
; 1664 : nCount2 ++;
00087 8b 45 dc mov eax, DWORD PTR _nCount2$7[ebp]
0008a 83 c0 01 add eax, 1
0008d 89 45 dc mov DWORD PTR _nCount2$7[ebp], eax
; 1665 : if ( nCount2>120 ) //ÿ1<C3BF><31><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>һ<EFBFBD>γ<EFBFBD>ʱ
00090 83 7d dc 78 cmp DWORD PTR _nCount2$7[ebp], 120 ; 00000078H
00094 7e 0f jle SHORT $LN6@MainLoop2
; 1666 : {
; 1667 : nCount2=0;
00096 c7 45 dc 00 00
00 00 mov DWORD PTR _nCount2$7[ebp], 0
; 1668 : piocp->CheckForInvalidSQLConnection();
0009d 8b 4d e4 mov ecx, DWORD PTR _piocp$9[ebp]
000a0 e8 00 00 00 00 call ?CheckForInvalidSQLConnection@CIOCP@@QAEXXZ ; CIOCP::CheckForInvalidSQLConnection
$LN6@MainLoop2:
; 1669 : }
; 1670 : Sleep(500);
000a5 68 f4 01 00 00 push 500 ; 000001f4H
000aa ff 15 00 00 00
00 call DWORD PTR __imp__Sleep@4
; 1671 : }
000b0 eb ab jmp SHORT $LN2@MainLoop2
$LN3@MainLoop2:
; 1672 : return TRUE;
000b2 c7 85 30 e6 ff
ff 01 00 00 00 mov DWORD PTR $T5[ebp], 1
000bc c6 45 fc 00 mov BYTE PTR __$EHRec$[ebp+12], 0
000c0 8d 4d eb lea ecx, DWORD PTR _AutoCoInit$10[ebp]
000c3 e8 00 00 00 00 call ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
000c8 8b 85 30 e6 ff
ff mov eax, DWORD PTR $T5[ebp]
000ce e9 b6 00 00 00 jmp $LN1@MainLoop2
__catch$?MainLoop2@CIOCP@@SGKPAX@Z$0:
; 1673 : }
; 1674 : catch(...)
; 1675 : {
; 1676 : LOG_APPERROR(_T("T"));
000d3 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
000d9 e8 00 00 00 00 call ??0CSAStatusLog@@QAE@XZ ; CSAStatusLog::CSAStatusLog
000de c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
000e2 51 push ecx
000e3 8b cc mov ecx, esp
000e5 89 a5 2c e6 ff
ff mov DWORD PTR $T4[ebp], esp
000eb 68 00 00 00 00 push OFFSET ??_C@_1BC@HEKPCAFP@?$AAA?$AAp?$AAp?$AAE?$AAr?$AAr?$AAo?$AAr@
000f0 e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
000f5 89 85 20 e6 ff
ff mov DWORD PTR tv77[ebp], eax
000fb c6 45 fc 04 mov BYTE PTR __$EHRec$[ebp+12], 4
000ff 51 push ecx
00100 8b cc mov ecx, esp
00102 89 a5 28 e6 ff
ff mov DWORD PTR $T3[ebp], esp
00108 68 00 00 00 00 push OFFSET ??_C@_17LLLMIFAB@?$AAL?$AAo?$AAg@
0010d e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00112 89 85 1c e6 ff
ff mov DWORD PTR tv65[ebp], eax
00118 c6 45 fc 05 mov BYTE PTR __$EHRec$[ebp+12], 5
0011c c6 45 fc 03 mov BYTE PTR __$EHRec$[ebp+12], 3
00120 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00126 e8 00 00 00 00 call ?Init@CSAStatusLog@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@0@Z ; CSAStatusLog::Init
0012b a1 00 00 00 00 mov eax, DWORD PTR ?__LINE__Var@?0??MainLoop2@CIOCP@@SGKPAX@Z@4JA
00130 83 c0 1d add eax, 29 ; 0000001dH
00133 50 push eax
00134 68 00 00 00 00 push OFFSET ??_C@_09JBDIPDKJ@MainLoop2@
00139 68 00 00 00 00 push OFFSET ??_C@_0CO@DMJFAOI@D?3?2Works?2Corpsms_2010?2SmsCenter@
0013e 68 00 00 00 00 push OFFSET ??_C@_13JKNELIBG@?$AAT@
00143 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00149 e8 00 00 00 00 call ?LogError@CSAStatusLog@@QAEHPB_WPBD1J@Z ; CSAStatusLog::LogError
0014e c6 45 fc 02 mov BYTE PTR __$EHRec$[ebp+12], 2
00152 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
00158 e8 00 00 00 00 call ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
; 1677 : return false;
0015d c7 85 24 e6 ff
ff 00 00 00 00 mov DWORD PTR $T2[ebp], 0
00167 b8 00 00 00 00 mov eax, $LN15@MainLoop2
0016c c3 ret 0
; 1678 : }
0016d b8 00 00 00 00 mov eax, __tryend$?MainLoop2@CIOCP@@SGKPAX@Z$1
00172 c3 ret 0
__tryend$?MainLoop2@CIOCP@@SGKPAX@Z$1:
00173 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
0017a eb 0d jmp SHORT $LN1@MainLoop2
$LN15@MainLoop2:
0017c c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+12], -1
; 1677 : return false;
00183 8b 85 24 e6 ff
ff mov eax, DWORD PTR $T2[ebp]
$LN1@MainLoop2:
; 1679 : }
00189 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp+4]
0018c 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00193 59 pop ecx
00194 5f pop edi
00195 5e pop esi
00196 5b pop ebx
00197 8b 4d ec mov ecx, DWORD PTR __$ArrayPad$[ebp]
0019a 33 cd xor ecx, ebp
0019c e8 00 00 00 00 call @__security_check_cookie@4
001a1 8b e5 mov esp, ebp
001a3 5d pop ebp
001a4 c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$2:
00000 8d 4d eb lea ecx, DWORD PTR _AutoCoInit$10[ebp]
00003 e9 00 00 00 00 jmp ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$3:
00008 8d 8d 34 e8 ff
ff lea ecx, DWORD PTR _NXlog$6[ebp]
0000e e9 00 00 00 00 jmp ??1CSAStatusLog@@QAE@XZ ; CSAStatusLog::~CSAStatusLog
__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$4:
00013 8b 8d 2c e6 ff
ff mov ecx, DWORD PTR $T4[ebp]
00019 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
__unwindfunclet$?MainLoop2@CIOCP@@SGKPAX@Z$5:
0001e 8b 8d 28 e6 ff
ff mov ecx, DWORD PTR $T3[ebp]
00024 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00029 cc int 3
0002a cc int 3
0002b cc int 3
0002c cc int 3
0002d cc int 3
__ehhandler$?MainLoop2@CIOCP@@SGKPAX@Z:
0002e 90 npad 1
0002f 90 npad 1
00030 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00034 8d 42 0c lea eax, DWORD PTR [edx+12]
00037 8b 8a 18 e6 ff
ff mov ecx, DWORD PTR [edx-6632]
0003d 33 c8 xor ecx, eax
0003f e8 00 00 00 00 call @__security_check_cookie@4
00044 8b 4a f8 mov ecx, DWORD PTR [edx-8]
00047 33 c8 xor ecx, eax
00049 e8 00 00 00 00 call @__security_check_cookie@4
0004e b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?MainLoop2@CIOCP@@SGKPAX@Z
00053 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?MainLoop2@CIOCP@@SGKPAX@Z ENDP ; CIOCP::MainLoop2
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ??1CIOCP@@UAE@XZ
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
??1CIOCP@@UAE@XZ PROC ; CIOCP::~CIOCP, COMDAT
; _this$ = ecx
; 25 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??1CIOCP@@UAE@XZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
0002b 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
0002e c7 00 00 00 00
00 mov DWORD PTR [eax], OFFSET ??_7CIOCP@@6B@
00034 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 26 : Close();
0003b 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
0003e e8 00 00 00 00 call ?Close@CIOCP@@QAEXXZ ; CIOCP::Close
; 27 : }
00043 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
0004a 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
0004d 83 c1 08 add ecx, 8
00050 e8 00 00 00 00 call ??1CKeyList@@UAE@XZ ; CKeyList::~CKeyList
00055 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00058 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0005f 59 pop ecx
00060 5f pop edi
00061 5e pop esi
00062 5b pop ebx
00063 8b e5 mov esp, ebp
00065 5d pop ebp
00066 c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$??1CIOCP@@UAE@XZ$0:
00000 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00003 83 c1 08 add ecx, 8
00006 e9 00 00 00 00 jmp ??1CKeyList@@UAE@XZ ; CKeyList::~CKeyList
0000b cc int 3
0000c cc int 3
0000d cc int 3
0000e cc int 3
0000f cc int 3
__ehhandler$??1CIOCP@@UAE@XZ:
00010 90 npad 1
00011 90 npad 1
00012 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00016 8d 42 0c lea eax, DWORD PTR [edx+12]
00019 8b 4a ac mov ecx, DWORD PTR [edx-84]
0001c 33 c8 xor ecx, eax
0001e e8 00 00 00 00 call @__security_check_cookie@4
00023 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??1CIOCP@@UAE@XZ
00028 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??1CIOCP@@UAE@XZ ENDP ; CIOCP::~CIOCP
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ??0CIOCP@@QAE@XZ
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
??0CIOCP@@QAE@XZ PROC ; CIOCP::CIOCP, COMDAT
; _this$ = ecx
; 10 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??0CIOCP@@QAE@XZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
0002b 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
0002e c7 00 00 00 00
00 mov DWORD PTR [eax], OFFSET ??_7CIOCP@@6B@
00034 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00037 83 c1 08 add ecx, 8
0003a e8 00 00 00 00 call ??0CKeyList@@QAE@XZ ; CKeyList::CKeyList
0003f c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 11 : m_pDlg = NULL;
00046 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00049 c7 40 04 00 00
00 00 mov DWORD PTR [eax+4], 0
; 12 : m_listen_socket = INVALID_SOCKET;
00050 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00053 c7 40 2c ff ff
ff ff mov DWORD PTR [eax+44], -1
; 13 : m_listen_socket2 = INVALID_SOCKET;
0005a 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
0005d c7 40 34 ff ff
ff ff mov DWORD PTR [eax+52], -1
; 14 : m_bInitSocket = false;
00064 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00067 c7 40 30 00 00
00 00 mov DWORD PTR [eax+48], 0
; 15 : m_bInitSocket2 = false;
0006e 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00071 c7 40 38 00 00
00 00 mov DWORD PTR [eax+56], 0
; 16 : m_bInit = false;
00078 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
0007b c7 40 3c 00 00
00 00 mov DWORD PTR [eax+60], 0
; 17 :
; 18 : m_h_MainLoop = INVALID_HANDLE_VALUE;
00082 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00085 c7 80 dc 00 00
00 ff ff ff ff mov DWORD PTR [eax+220], -1
; 19 : m_h_MainLoop2 = INVALID_HANDLE_VALUE;
0008f 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00092 c7 80 e0 00 00
00 ff ff ff ff mov DWORD PTR [eax+224], -1
; 20 : m_bQuit = false;
0009c 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
0009f c7 80 e4 00 00
00 00 00 00 00 mov DWORD PTR [eax+228], 0
; 21 : }
000a9 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
000b0 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
000b3 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
000b6 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
000bd 59 pop ecx
000be 5f pop edi
000bf 5e pop esi
000c0 5b pop ebx
000c1 8b e5 mov esp, ebp
000c3 5d pop ebp
000c4 c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$??0CIOCP@@QAE@XZ$0:
00000 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00003 83 c1 08 add ecx, 8
00006 e9 00 00 00 00 jmp ??1CKeyList@@UAE@XZ ; CKeyList::~CKeyList
0000b cc int 3
0000c cc int 3
0000d cc int 3
0000e cc int 3
0000f cc int 3
__ehhandler$??0CIOCP@@QAE@XZ:
00010 90 npad 1
00011 90 npad 1
00012 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00016 8d 42 0c lea eax, DWORD PTR [edx+12]
00019 8b 4a ac mov ecx, DWORD PTR [edx-84]
0001c 33 c8 xor ecx, eax
0001e e8 00 00 00 00 call @__security_check_cookie@4
00023 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??0CIOCP@@QAE@XZ
00028 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??0CIOCP@@QAE@XZ ENDP ; CIOCP::CIOCP
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\AutoCoInitializeEx\AutoCoInitializeEx.h
; COMDAT ??1AutoCoInitializeEx@@QAE@XZ
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
??1AutoCoInitializeEx@@QAE@XZ PROC ; AutoCoInitializeEx::~AutoCoInitializeEx, COMDAT
; _this$ = ecx
; 24 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??1AutoCoInitializeEx@@QAE@XZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
; 25 : CoUninitialize();
0002b ff 15 00 00 00
00 call DWORD PTR __imp__CoUninitialize@0
; 26 : }
00031 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00034 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0003b 59 pop ecx
0003c 5f pop edi
0003d 5e pop esi
0003e 5b pop ebx
0003f 8b e5 mov esp, ebp
00041 5d pop ebp
00042 c3 ret 0
00043 cc int 3
00044 cc int 3
00045 cc int 3
00046 cc int 3
00047 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$??1AutoCoInitializeEx@@QAE@XZ:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a ac mov ecx, DWORD PTR [edx-84]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??1AutoCoInitializeEx@@QAE@XZ
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??1AutoCoInitializeEx@@QAE@XZ ENDP ; AutoCoInitializeEx::~AutoCoInitializeEx
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\AutoCoInitializeEx\AutoCoInitializeEx.h
; COMDAT ??0AutoCoInitializeEx@@QAE@_N@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_bMTA$ = 8 ; size = 1
??0AutoCoInitializeEx@@QAE@_N@Z PROC ; AutoCoInitializeEx::AutoCoInitializeEx, COMDAT
; _this$ = ecx
; 10 : AutoCoInitializeEx(bool bMTA)
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 11 : {
; 12 : if ( bMTA )
0000c 0f b6 45 08 movzx eax, BYTE PTR _bMTA$[ebp]
00010 85 c0 test eax, eax
00012 74 0c je SHORT $LN2@AutoCoInit
; 13 : {
; 14 : CoInitializeEx( NULL , COINIT_MULTITHREADED );
00014 6a 00 push 0
00016 6a 00 push 0
00018 ff 15 00 00 00
00 call DWORD PTR __imp__CoInitializeEx@8
; 15 : }
0001e eb 08 jmp SHORT $LN1@AutoCoInit
$LN2@AutoCoInit:
; 16 : else
; 17 : {
; 18 : CoInitialize(NULL);
00020 6a 00 push 0
00022 ff 15 00 00 00
00 call DWORD PTR __imp__CoInitialize@4
$LN1@AutoCoInit:
; 19 : }
; 20 : }
00028 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0002b 5f pop edi
0002c 5e pop esi
0002d 5b pop ebx
0002e 8b e5 mov esp, ebp
00030 5d pop ebp
00031 c2 04 00 ret 4
??0AutoCoInitializeEx@@QAE@_N@Z ENDP ; AutoCoInitializeEx::AutoCoInitializeEx
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\AutoCoInitializeEx\AutoCoInitializeEx.h
; COMDAT ??0AutoCoInitializeEx@@QAE@XZ
_TEXT SEGMENT
$T1 = -69 ; size = 1
_this$ = -4 ; size = 4
??0AutoCoInitializeEx@@QAE@XZ PROC ; AutoCoInitializeEx::AutoCoInitializeEx, COMDAT
; _this$ = ecx
; 6 : AutoCoInitializeEx(void)
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 7 : {
; 8 : AutoCoInitializeEx(true);
0000c 6a 01 push 1
0000e 8d 4d bb lea ecx, DWORD PTR $T1[ebp]
00011 e8 00 00 00 00 call ??0AutoCoInitializeEx@@QAE@_N@Z ; AutoCoInitializeEx::AutoCoInitializeEx
00016 8d 4d bb lea ecx, DWORD PTR $T1[ebp]
00019 e8 00 00 00 00 call ??1AutoCoInitializeEx@@QAE@XZ ; AutoCoInitializeEx::~AutoCoInitializeEx
; 9 : }
0001e 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00021 5f pop edi
00022 5e pop esi
00023 5b pop ebx
00024 8b e5 mov esp, ebp
00026 5d pop ebp
00027 c3 ret 0
??0AutoCoInitializeEx@@QAE@XZ ENDP ; AutoCoInitializeEx::AutoCoInitializeEx
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\afxstr.h
; COMDAT ?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ
_TEXT SEGMENT
__$EHRec$ = -12 ; size = 12
?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ PROC ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::GetDefaultManager, COMDAT
; 51 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 40 sub esp, 64 ; 00000040H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 52 : return( AfxGetStringManager() );
00028 e8 00 00 00 00 call ?AfxGetStringManager@@YGPAUIAtlStringMgr@ATL@@XZ ; AfxGetStringManager
; 53 : }
0002d 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00030 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00037 59 pop ecx
00038 5f pop edi
00039 5e pop esi
0003a 5b pop ebx
0003b 8b e5 mov esp, ebp
0003d 5d pop ebp
0003e c3 ret 0
0003f cc int 3
00040 cc int 3
00041 cc int 3
00042 cc int 3
00043 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a b0 mov ecx, DWORD PTR [edx-80]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ ENDP ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::GetDefaultManager
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\afxstr.h
; COMDAT ?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z
_TEXT SEGMENT
__$EHRec$ = -12 ; size = 12
_nID$ = 8 ; size = 4
?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z PROC ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::FindStringResourceInstance, COMDAT
; 46 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 40 sub esp, 64 ; 00000040H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 47 : return( AfxFindStringResourceHandle( nID ) );
00028 8b 45 08 mov eax, DWORD PTR _nID$[ebp]
0002b 50 push eax
0002c e8 00 00 00 00 call ?AfxFindStringResourceHandle@@YGPAUHINSTANCE__@@I@Z ; AfxFindStringResourceHandle
; 48 : }
00031 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00034 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0003b 59 pop ecx
0003c 5f pop edi
0003d 5e pop esi
0003e 5b pop ebx
0003f 8b e5 mov esp, ebp
00041 5d pop ebp
00042 c3 ret 0
00043 cc int 3
00044 cc int 3
00045 cc int 3
00046 cc int 3
00047 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a b0 mov ecx, DWORD PTR [edx-80]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z ENDP ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::FindStringResourceInstance
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?CheckImplicitLoad@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AAE_NPBX@Z
_TEXT SEGMENT
_nID$1 = -12 ; size = 4
_bRet$ = -5 ; size = 1
_this$ = -4 ; size = 4
_pv$ = 8 ; size = 4
?CheckImplicitLoad@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AAE_NPBX@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CheckImplicitLoad, COMDAT
; _this$ = ecx
; 2705 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 4c sub esp, 76 ; 0000004cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 2706 : bool bRet = false;
0000c c6 45 fb 00 mov BYTE PTR _bRet$[ebp], 0
; 2707 :
; 2708 : if( (pv != NULL) && IS_INTRESOURCE( pv ) )
00010 83 7d 08 00 cmp DWORD PTR _pv$[ebp], 0
00014 74 28 je SHORT $LN2@CheckImpli
00016 8b 45 08 mov eax, DWORD PTR _pv$[ebp]
00019 c1 e8 10 shr eax, 16 ; 00000010H
0001c 85 c0 test eax, eax
0001e 75 1e jne SHORT $LN2@CheckImpli
; 2709 : {
; 2710 : UINT nID = LOWORD( reinterpret_cast< DWORD_PTR >( pv ) );
00020 8b 45 08 mov eax, DWORD PTR _pv$[ebp]
00023 25 ff ff 00 00 and eax, 65535 ; 0000ffffH
00028 0f b7 c8 movzx ecx, ax
0002b 89 4d f4 mov DWORD PTR _nID$1[ebp], ecx
; 2711 : (nID);
; 2712 : #ifdef _ATL_USE_WINAPI_FAMILY_DESKTOP_APP
; 2713 : if( !LoadString( nID ) )
0002e 8b 45 f4 mov eax, DWORD PTR _nID$1[ebp]
00031 50 push eax
00032 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00035 e8 00 00 00 00 call ?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHI@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW
; 2714 : {
; 2715 : ATLTRACE( atlTraceString, 2, _T( "Warning: implicit LoadString(%u) failed\n" ), nID );
; 2716 : }
; 2717 : bRet = true;
0003a c6 45 fb 01 mov BYTE PTR _bRet$[ebp], 1
$LN2@CheckImpli:
; 2718 : #else
; 2719 : ATLTRACE( atlTraceString, 2, _T( "Warning: LoadString(%u) not supported under the current WINAPI_FAMILY.\n" ), nID );
; 2720 : #endif
; 2721 : }
; 2722 :
; 2723 : return( bRet );
0003e 8a 45 fb mov al, BYTE PTR _bRet$[ebp]
; 2724 : }
00041 5f pop edi
00042 5e pop esi
00043 5b pop ebx
00044 8b e5 mov esp, ebp
00046 5d pop ebp
00047 c2 04 00 ret 4
?CheckImplicitLoad@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AAE_NPBX@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CheckImplicitLoad
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHPAUHINSTANCE__@@I@Z
_TEXT SEGMENT
_pszBuffer$ = -16 ; size = 4
_nLength$ = -12 ; size = 4
_pImage$ = -8 ; size = 4
_this$ = -4 ; size = 4
_hInstance$ = 8 ; size = 4
_nID$ = 12 ; size = 4
?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHPAUHINSTANCE__@@I@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW, COMDAT
; _this$ = ecx
; 2350 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 50 sub esp, 80 ; 00000050H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 2351 : const ATLSTRINGRESOURCEIMAGE* pImage = AtlGetStringResourceImage( hInstance, nID );
0000c 8b 45 0c mov eax, DWORD PTR _nID$[ebp]
0000f 50 push eax
00010 8b 4d 08 mov ecx, DWORD PTR _hInstance$[ebp]
00013 51 push ecx
00014 e8 00 00 00 00 call ?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z ; ATL::AtlGetStringResourceImage
00019 83 c4 08 add esp, 8
0001c 89 45 f8 mov DWORD PTR _pImage$[ebp], eax
; 2352 : if( pImage == NULL )
0001f 83 7d f8 00 cmp DWORD PTR _pImage$[ebp], 0
00023 75 04 jne SHORT $LN2@LoadString
; 2353 : {
; 2354 : return( FALSE );
00025 33 c0 xor eax, eax
00027 eb 57 jmp SHORT $LN1@LoadString
$LN2@LoadString:
; 2355 : }
; 2356 :
; 2357 : int nLength = StringTraits::GetBaseTypeLength( pImage->achString, pImage->nLength );
00029 8b 45 f8 mov eax, DWORD PTR _pImage$[ebp]
0002c 0f b7 08 movzx ecx, WORD PTR [eax]
0002f 51 push ecx
00030 8b 55 f8 mov edx, DWORD PTR _pImage$[ebp]
00033 83 c2 02 add edx, 2
00036 52 push edx
00037 e8 00 00 00 00 call ?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WH@Z ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength
0003c 83 c4 08 add esp, 8
0003f 89 45 f4 mov DWORD PTR _nLength$[ebp], eax
; 2358 : PXSTR pszBuffer = this->GetBuffer( nLength );
00042 8b 45 f4 mov eax, DWORD PTR _nLength$[ebp]
00045 50 push eax
00046 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00049 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
0004e 89 45 f0 mov DWORD PTR _pszBuffer$[ebp], eax
; 2359 : StringTraits::ConvertToBaseType( pszBuffer, nLength, pImage->achString, pImage->nLength );
00051 8b 45 f8 mov eax, DWORD PTR _pImage$[ebp]
00054 0f b7 08 movzx ecx, WORD PTR [eax]
00057 51 push ecx
00058 8b 55 f8 mov edx, DWORD PTR _pImage$[ebp]
0005b 83 c2 02 add edx, 2
0005e 52 push edx
0005f 8b 45 f4 mov eax, DWORD PTR _nLength$[ebp]
00062 50 push eax
00063 8b 4d f0 mov ecx, DWORD PTR _pszBuffer$[ebp]
00066 51 push ecx
00067 e8 00 00 00 00 call ?ConvertToBaseType@?$ChTraitsCRT@_W@ATL@@SAXPA_WHPB_WH@Z ; ATL::ChTraitsCRT<wchar_t>::ConvertToBaseType
0006c 83 c4 10 add esp, 16 ; 00000010H
; 2360 : this->ReleaseBufferSetLength( nLength );
0006f 8b 45 f4 mov eax, DWORD PTR _nLength$[ebp]
00072 50 push eax
00073 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00076 e8 00 00 00 00 call ?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBufferSetLength
; 2361 :
; 2362 : return( TRUE );
0007b b8 01 00 00 00 mov eax, 1
$LN1@LoadString:
; 2363 : }
00080 5f pop edi
00081 5e pop esi
00082 5b pop ebx
00083 8b e5 mov esp, ebp
00085 5d pop ebp
00086 c2 08 00 ret 8
?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHPAUHINSTANCE__@@I@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHI@Z
_TEXT SEGMENT
_hInstance$ = -8 ; size = 4
_this$ = -4 ; size = 4
_nID$ = 8 ; size = 4
?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHI@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW, COMDAT
; _this$ = ecx
; 2336 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 2337 : HINSTANCE hInstance = StringTraits::FindStringResourceInstance( nID );
0000c 8b 45 08 mov eax, DWORD PTR _nID$[ebp]
0000f 50 push eax
00010 e8 00 00 00 00 call ?FindStringResourceInstance@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUHINSTANCE__@@I@Z ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::FindStringResourceInstance
00015 83 c4 04 add esp, 4
00018 89 45 f8 mov DWORD PTR _hInstance$[ebp], eax
; 2338 : if( hInstance == NULL )
0001b 83 7d f8 00 cmp DWORD PTR _hInstance$[ebp], 0
0001f 75 04 jne SHORT $LN2@LoadString
; 2339 : {
; 2340 : return( FALSE );
00021 33 c0 xor eax, eax
00023 eb 10 jmp SHORT $LN1@LoadString
$LN2@LoadString:
; 2341 : }
; 2342 :
; 2343 : return( LoadString( hInstance, nID ) );
00025 8b 45 08 mov eax, DWORD PTR _nID$[ebp]
00028 50 push eax
00029 8b 4d f8 mov ecx, DWORD PTR _hInstance$[ebp]
0002c 51 push ecx
0002d 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00030 e8 00 00 00 00 call ?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHPAUHINSTANCE__@@I@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW
$LN1@LoadString:
; 2344 : }
00035 5f pop edi
00036 5e pop esi
00037 5b pop ebx
00038 8b e5 mov esp, ebp
0003a 5d pop ebp
0003b c2 04 00 ret 4
?LoadStringW@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEHI@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z
_TEXT SEGMENT
_pszBuffer$ = -28 ; size = 4
_temp$ = -24 ; size = 4
_nLength$ = -20 ; size = 4
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_pszFormat$ = 8 ; size = 4
_args$ = 12 ; size = 4
?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::FormatV, COMDAT
; _this$ = ecx
; 2221 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 50 sub esp, 80 ; 00000050H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
; 2222 : ATLASSERT( AtlIsValidString( pszFormat ) );
; 2223 : if(pszFormat == NULL)
0002b 83 7d 08 00 cmp DWORD PTR _pszFormat$[ebp], 0
0002f 75 0a jne SHORT $LN2@FormatV
; 2224 : AtlThrow(E_INVALIDARG);
00031 68 57 00 07 80 push -2147024809 ; 80070057H
00036 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN2@FormatV:
; 2225 :
; 2226 : int nLength = StringTraits::GetFormattedLength( pszFormat, args );
0003b 8b 45 0c mov eax, DWORD PTR _args$[ebp]
0003e 50 push eax
0003f 8b 4d 08 mov ecx, DWORD PTR _pszFormat$[ebp]
00042 51 push ecx
00043 e8 00 00 00 00 call ?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z ; ATL::ChTraitsCRT<wchar_t>::GetFormattedLength
00048 83 c4 08 add esp, 8
0004b 89 45 ec mov DWORD PTR _nLength$[ebp], eax
; 2227 :
; 2228 : if (nLength < 0)
0004e 83 7d ec 00 cmp DWORD PTR _nLength$[ebp], 0
00052 7d 0a jge SHORT $LN3@FormatV
; 2229 : AtlThrow(E_FAIL);
00054 68 05 40 00 80 push -2147467259 ; 80004005H
00059 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN3@FormatV:
; 2230 :
; 2231 : CStringT temp(pszFormat, this->GetManager());
0005e 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00061 e8 00 00 00 00 call ?GetManager@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QBEPAUIAtlStringMgr@2@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::GetManager
00066 50 push eax
00067 8b 45 08 mov eax, DWORD PTR _pszFormat$[ebp]
0006a 50 push eax
0006b 8d 4d e8 lea ecx, DWORD PTR _temp$[ebp]
0006e e8 00 00 00 00 call ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00073 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 2232 : PXSTR pszBuffer = this->GetBuffer( nLength );
0007a 8b 45 ec mov eax, DWORD PTR _nLength$[ebp]
0007d 50 push eax
0007e 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00081 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
00086 89 45 e4 mov DWORD PTR _pszBuffer$[ebp], eax
; 2233 : StringTraits::Format( pszBuffer, nLength+1, temp, args );
00089 8b 45 0c mov eax, DWORD PTR _args$[ebp]
0008c 50 push eax
0008d 8d 4d e8 lea ecx, DWORD PTR _temp$[ebp]
00090 e8 00 00 00 00 call ??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ; ATL::CSimpleStringT<wchar_t,0>::operator wchar_t const *
00095 50 push eax
00096 8b 4d ec mov ecx, DWORD PTR _nLength$[ebp]
00099 83 c1 01 add ecx, 1
0009c 51 push ecx
0009d 8b 55 e4 mov edx, DWORD PTR _pszBuffer$[ebp]
000a0 52 push edx
000a1 e8 00 00 00 00 call ?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z ; ATL::ChTraitsCRT<wchar_t>::Format
000a6 83 c4 10 add esp, 16 ; 00000010H
; 2234 : this->ReleaseBufferSetLength( nLength );
000a9 8b 45 ec mov eax, DWORD PTR _nLength$[ebp]
000ac 50 push eax
000ad 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
000b0 e8 00 00 00 00 call ?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBufferSetLength
; 2235 : }
000b5 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
000bc 8d 4d e8 lea ecx, DWORD PTR _temp$[ebp]
000bf e8 00 00 00 00 call ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
$LN4@FormatV:
000c4 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
000c7 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
000ce 59 pop ecx
000cf 5f pop edi
000d0 5e pop esi
000d1 5b pop ebx
000d2 8b e5 mov esp, ebp
000d4 5d pop ebp
000d5 c2 08 00 ret 8
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z$0:
00000 8d 4d e8 lea ecx, DWORD PTR _temp$[ebp]
00003 e9 00 00 00 00 jmp ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
00008 cc int 3
00009 cc int 3
0000a cc int 3
0000b cc int 3
0000c cc int 3
__ehhandler$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z:
0000d 90 npad 1
0000e 90 npad 1
0000f 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00013 8d 42 0c lea eax, DWORD PTR [edx+12]
00016 8b 4a a0 mov ecx, DWORD PTR [edx-96]
00019 33 c8 xor ecx, eax
0001b e8 00 00 00 00 call @__security_check_cookie@4
00020 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z
00025 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::FormatV
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?Format@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAAXPB_WZZ
_TEXT SEGMENT
_argList$ = -4 ; size = 4
_this$ = 8 ; size = 4
_pszFormat$ = 12 ; size = 4
?Format@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAAXPB_WZZ PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::Format, COMDAT
; 2741 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 2742 : ATLASSERT( AtlIsValidString( pszFormat ) );
; 2743 :
; 2744 : va_list argList;
; 2745 : va_start( argList, pszFormat );
00009 8d 45 10 lea eax, DWORD PTR _pszFormat$[ebp+4]
0000c 89 45 fc mov DWORD PTR _argList$[ebp], eax
; 2746 : FormatV( pszFormat, argList );
0000f 8b 45 fc mov eax, DWORD PTR _argList$[ebp]
00012 50 push eax
00013 8b 4d 0c mov ecx, DWORD PTR _pszFormat$[ebp]
00016 51 push ecx
00017 8b 4d 08 mov ecx, DWORD PTR _this$[ebp]
0001a e8 00 00 00 00 call ?FormatV@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEXPB_WPAD@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::FormatV
; 2747 : va_end( argList );
0001f c7 45 fc 00 00
00 00 mov DWORD PTR _argList$[ebp], 0
; 2748 : }
00026 5f pop edi
00027 5e pop esi
00028 5b pop ebx
00029 8b e5 mov esp, ebp
0002b 5d pop ebp
0002c c3 ret 0
?Format@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAAXPB_WZZ ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::Format
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?GetManager@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QBEPAUIAtlStringMgr@2@XZ
_TEXT SEGMENT
_pStringMgr$ = -8 ; size = 4
_this$ = -4 ; size = 4
?GetManager@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QBEPAUIAtlStringMgr@2@XZ PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::GetManager, COMDAT
; _this$ = ecx
; 1436 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1437 : IAtlStringMgr* pStringMgr = CThisSimpleString::GetManager();
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetManager@?$CSimpleStringT@_W$0A@@ATL@@QBEPAUIAtlStringMgr@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetManager
00014 89 45 f8 mov DWORD PTR _pStringMgr$[ebp], eax
; 1438 : if(pStringMgr) { return pStringMgr; }
00017 83 7d f8 00 cmp DWORD PTR _pStringMgr$[ebp], 0
0001b 74 05 je SHORT $LN2@GetManager
0001d 8b 45 f8 mov eax, DWORD PTR _pStringMgr$[ebp]
00020 eb 15 jmp SHORT $LN1@GetManager
$LN2@GetManager:
; 1439 :
; 1440 : pStringMgr = StringTraits::GetDefaultManager();
00022 e8 00 00 00 00 call ?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::GetDefaultManager
00027 89 45 f8 mov DWORD PTR _pStringMgr$[ebp], eax
; 1441 : return pStringMgr->Clone();
0002a 8b 45 f8 mov eax, DWORD PTR _pStringMgr$[ebp]
0002d 8b 10 mov edx, DWORD PTR [eax]
0002f 8b 4d f8 mov ecx, DWORD PTR _pStringMgr$[ebp]
00032 8b 42 10 mov eax, DWORD PTR [edx+16]
00035 ff d0 call eax
$LN1@GetManager:
; 1442 : }
00037 5f pop edi
00038 5e pop esi
00039 5b pop ebx
0003a 8b e5 mov esp, ebp
0003c 5d pop ebp
0003d c3 ret 0
?GetManager@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QBEPAUIAtlStringMgr@2@XZ ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::GetManager
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ??4?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEAAV01@PB_W@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_pszSrc$ = 8 ; size = 4
??4?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEAAV01@PB_W@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::operator=, COMDAT
; _this$ = ecx
; 1318 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 1319 : CThisSimpleString::operator=( pszSrc );
0000c 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
0000f 50 push eax
00010 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00013 e8 00 00 00 00 call ??4?$CSimpleStringT@_W$0A@@ATL@@QAEAAV01@PB_W@Z ; ATL::CSimpleStringT<wchar_t,0>::operator=
; 1320 :
; 1321 : return( *this );
00018 8b 45 fc mov eax, DWORD PTR _this$[ebp]
; 1322 : }
0001b 5f pop edi
0001c 5e pop esi
0001d 5b pop ebx
0001e 8b e5 mov esp, ebp
00020 5d pop ebp
00021 c2 04 00 ret 4
??4?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEAAV01@PB_W@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::operator=
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >, COMDAT
; _this$ = ecx
; 1298 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
0002b c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 1299 : }
00032 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
00039 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
0003c e8 00 00 00 00 call ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
00041 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00044 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0004b 59 pop ecx
0004c 5f pop edi
0004d 5e pop esi
0004e 5b pop ebx
0004f 8b e5 mov esp, ebp
00051 5d pop ebp
00052 c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ$0:
00000 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00003 e9 00 00 00 00 jmp ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
00008 cc int 3
00009 cc int 3
0000a cc int 3
0000b cc int 3
0000c cc int 3
__ehhandler$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ:
0000d 90 npad 1
0000e 90 npad 1
0000f 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00013 8d 42 0c lea eax, DWORD PTR [edx+12]
00016 8b 4a ac mov ecx, DWORD PTR [edx-84]
00019 33 c8 xor ecx, eax
0001b e8 00 00 00 00 call @__security_check_cookie@4
00020 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
00025 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??1?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::~CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_pszSrc$ = 8 ; size = 4
_pStringMgr$ = 12 ; size = 4
??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >, COMDAT
; _this$ = ecx
; 1060 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
; 1059 : CThisSimpleString( pStringMgr )
0002b 8b 45 0c mov eax, DWORD PTR _pStringMgr$[ebp]
0002e 50 push eax
0002f 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00032 e8 00 00 00 00 call ??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z ; ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>
00037 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 1061 : if( !CheckImplicitLoad( pszSrc ) )
0003e 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
00041 50 push eax
00042 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00045 e8 00 00 00 00 call ?CheckImplicitLoad@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AAE_NPBX@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CheckImplicitLoad
0004a 0f b6 c8 movzx ecx, al
0004d 85 c9 test ecx, ecx
0004f 75 0c jne SHORT $LN1@CStringT
; 1062 : {
; 1063 : *this = pszSrc;
00051 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
00054 50 push eax
00055 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00058 e8 00 00 00 00 call ??4?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEAAV01@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::operator=
$LN1@CStringT:
; 1064 : }
; 1065 : }
0005d c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
00064 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00067 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0006a 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00071 59 pop ecx
00072 5f pop edi
00073 5e pop esi
00074 5b pop ebx
00075 8b e5 mov esp, ebp
00077 5d pop ebp
00078 c2 08 00 ret 8
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z$0:
00000 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00003 e9 00 00 00 00 jmp ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
00008 cc int 3
00009 cc int 3
0000a cc int 3
0000b cc int 3
0000c cc int 3
__ehhandler$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z:
0000d 90 npad 1
0000e 90 npad 1
0000f 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00013 8d 42 0c lea eax, DWORD PTR [edx+12]
00016 8b 4a ac mov ecx, DWORD PTR [edx-84]
00019 33 c8 xor ecx, eax
0001b e8 00 00 00 00 call @__security_check_cookie@4
00020 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z
00025 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_WPAUIAtlStringMgr@1@@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_pszSrc$ = 8 ; size = 4
??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >, COMDAT
; _this$ = ecx
; 1049 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
; 1048 : CThisSimpleString( StringTraits::GetDefaultManager() )
0002b e8 00 00 00 00 call ?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::GetDefaultManager
00030 50 push eax
00031 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00034 e8 00 00 00 00 call ??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z ; ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 1050 : if( !CheckImplicitLoad( pszSrc ) )
00040 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
00043 50 push eax
00044 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00047 e8 00 00 00 00 call ?CheckImplicitLoad@?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AAE_NPBX@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CheckImplicitLoad
0004c 0f b6 c8 movzx ecx, al
0004f 85 c9 test ecx, ecx
00051 75 0c jne SHORT $LN1@CStringT
; 1051 : {
; 1052 : *this = pszSrc;
00053 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
00056 50 push eax
00057 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
0005a e8 00 00 00 00 call ??4?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAEAAV01@PB_W@Z ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::operator=
$LN1@CStringT:
; 1053 : }
; 1054 : }
0005f c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
00066 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
00069 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0006c 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00073 59 pop ecx
00074 5f pop edi
00075 5e pop esi
00076 5b pop ebx
00077 8b e5 mov esp, ebp
00079 5d pop ebp
0007a c2 04 00 ret 4
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z$0:
00000 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00003 e9 00 00 00 00 jmp ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
00008 cc int 3
00009 cc int 3
0000a cc int 3
0000b cc int 3
0000c cc int 3
__ehhandler$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z:
0000d 90 npad 1
0000e 90 npad 1
0000f 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00013 8d 42 0c lea eax, DWORD PTR [edx+12]
00016 8b 4a ac mov ecx, DWORD PTR [edx-84]
00019 33 c8 xor ecx, eax
0001b e8 00 00 00 00 call @__security_check_cookie@4
00020 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z
00025 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@PB_W@Z ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
_TEXT SEGMENT
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ PROC ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >, COMDAT
; _this$ = ecx
; 1011 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
; 1010 : CThisSimpleString( StringTraits::GetDefaultManager() )
0002b e8 00 00 00 00 call ?GetDefaultManager@?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@SAPAUIAtlStringMgr@ATL@@XZ ; StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> >::GetDefaultManager
00030 50 push eax
00031 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00034 e8 00 00 00 00 call ??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z ; ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>
00039 c7 45 fc 00 00
00 00 mov DWORD PTR __$EHRec$[ebp+8], 0
; 1012 : }
00040 c7 45 fc ff ff
ff ff mov DWORD PTR __$EHRec$[ebp+8], -1
00047 8b 45 f0 mov eax, DWORD PTR _this$[ebp]
0004a 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0004d 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00054 59 pop ecx
00055 5f pop edi
00056 5e pop esi
00057 5b pop ebx
00058 8b e5 mov esp, ebp
0005a 5d pop ebp
0005b c3 ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__unwindfunclet$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ$0:
00000 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00003 e9 00 00 00 00 jmp ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
00008 cc int 3
00009 cc int 3
0000a cc int 3
0000b cc int 3
0000c cc int 3
__ehhandler$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ:
0000d 90 npad 1
0000e 90 npad 1
0000f 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00013 8d 42 0c lea eax, DWORD PTR [edx+12]
00016 8b 4a ac mov ecx, DWORD PTR [edx-84]
00019 33 c8 xor ecx, eax
0001b e8 00 00 00 00 call @__security_check_cookie@4
00020 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ
00025 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
??0?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@QAE@XZ ENDP ; ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_nLength$ = 8 ; size = 4
?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::SetLength, COMDAT
; _this$ = ecx
; 867 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 868 : ATLASSERT( nLength >= 0 );
; 869 : ATLASSERT( nLength <= GetData()->nAllocLength );
; 870 :
; 871 : if( nLength < 0 || nLength > GetData()->nAllocLength)
0000c 83 7d 08 00 cmp DWORD PTR _nLength$[ebp], 0
00010 7c 10 jl SHORT $LN3@SetLength
00012 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00015 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
0001a 8b 4d 08 mov ecx, DWORD PTR _nLength$[ebp]
0001d 3b 48 08 cmp ecx, DWORD PTR [eax+8]
00020 7e 0a jle SHORT $LN2@SetLength
$LN3@SetLength:
; 872 : AtlThrow(E_INVALIDARG);
00022 68 57 00 07 80 push -2147024809 ; 80070057H
00027 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN2@SetLength:
; 873 :
; 874 : GetData()->nDataLength = nLength;
0002c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0002f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00034 8b 4d 08 mov ecx, DWORD PTR _nLength$[ebp]
00037 89 48 04 mov DWORD PTR [eax+4], ecx
; 875 : m_pszData[nLength] = 0;
0003a 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0003d 8b 08 mov ecx, DWORD PTR [eax]
0003f 33 d2 xor edx, edx
00041 8b 45 08 mov eax, DWORD PTR _nLength$[ebp]
00044 66 89 14 41 mov WORD PTR [ecx+eax*2], dx
$LN4@SetLength:
; 876 : }
00048 5f pop edi
00049 5e pop esi
0004a 5b pop ebx
0004b 8b e5 mov esp, ebp
0004d 5d pop ebp
0004e c2 04 00 ret 4
?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::SetLength
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z
_TEXT SEGMENT
tv78 = -84 ; size = 4
_pNewData$ = -16 ; size = 4
_pStringMgr$ = -12 ; size = 4
_pOldData$ = -8 ; size = 4
_this$ = -4 ; size = 4
_nLength$ = 8 ; size = 4
?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::Reallocate, COMDAT
; _this$ = ecx
; 849 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 54 sub esp, 84 ; 00000054H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 850 : CStringData* pOldData = GetData();
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 89 45 f8 mov DWORD PTR _pOldData$[ebp], eax
; 851 : ATLASSERT( pOldData->nAllocLength < nLength );
; 852 : IAtlStringMgr* pStringMgr = pOldData->pStringMgr;
00017 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
0001a 8b 08 mov ecx, DWORD PTR [eax]
0001c 89 4d f4 mov DWORD PTR _pStringMgr$[ebp], ecx
; 853 : if ( pOldData->nAllocLength >= nLength || nLength <= 0)
0001f 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
00022 8b 48 08 mov ecx, DWORD PTR [eax+8]
00025 3b 4d 08 cmp ecx, DWORD PTR _nLength$[ebp]
00028 7d 06 jge SHORT $LN3@Reallocate
0002a 83 7d 08 00 cmp DWORD PTR _nLength$[ebp], 0
0002e 7f 07 jg SHORT $LN2@Reallocate
$LN3@Reallocate:
; 854 : {
; 855 : ThrowMemoryException();
00030 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
; 856 : return;
00035 eb 35 jmp SHORT $LN5@Reallocate
$LN2@Reallocate:
; 857 : }
; 858 : CStringData* pNewData = pStringMgr->Reallocate( pOldData, nLength, sizeof( XCHAR ) );
00037 8b 45 f4 mov eax, DWORD PTR _pStringMgr$[ebp]
0003a 8b 08 mov ecx, DWORD PTR [eax]
0003c 8b 51 08 mov edx, DWORD PTR [ecx+8]
0003f 89 55 ac mov DWORD PTR tv78[ebp], edx
00042 6a 02 push 2
00044 8b 45 08 mov eax, DWORD PTR _nLength$[ebp]
00047 50 push eax
00048 8b 4d f8 mov ecx, DWORD PTR _pOldData$[ebp]
0004b 51 push ecx
0004c 8b 4d f4 mov ecx, DWORD PTR _pStringMgr$[ebp]
0004f ff 55 ac call DWORD PTR tv78[ebp]
00052 89 45 f0 mov DWORD PTR _pNewData$[ebp], eax
; 859 : if( pNewData == NULL )
00055 83 7d f0 00 cmp DWORD PTR _pNewData$[ebp], 0
00059 75 05 jne SHORT $LN4@Reallocate
; 860 : {
; 861 : ThrowMemoryException();
0005b e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
$LN4@Reallocate:
; 862 : }
; 863 : Attach( pNewData );
00060 8b 45 f0 mov eax, DWORD PTR _pNewData$[ebp]
00063 50 push eax
00064 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00067 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
$LN5@Reallocate:
; 864 : }
0006c 5f pop edi
0006d 5e pop esi
0006e 5b pop ebx
0006f 8b e5 mov esp, ebp
00071 5d pop ebp
00072 c2 04 00 ret 4
?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::Reallocate
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z
_TEXT SEGMENT
_nNewLength$1 = -12 ; size = 4
_pOldData$ = -8 ; size = 4
_this$ = -4 ; size = 4
_nLength$ = 8 ; size = 4
?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2, COMDAT
; _this$ = ecx
; 818 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 4c sub esp, 76 ; 0000004cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 819 : CStringData* pOldData = GetData();
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 89 45 f8 mov DWORD PTR _pOldData$[ebp], eax
; 820 : if( pOldData->nDataLength > nLength )
00017 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
0001a 8b 48 04 mov ecx, DWORD PTR [eax+4]
0001d 3b 4d 08 cmp ecx, DWORD PTR _nLength$[ebp]
00020 7e 09 jle SHORT $LN2@PrepareWri
; 821 : {
; 822 : nLength = pOldData->nDataLength;
00022 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
00025 8b 48 04 mov ecx, DWORD PTR [eax+4]
00028 89 4d 08 mov DWORD PTR _nLength$[ebp], ecx
$LN2@PrepareWri:
; 823 : }
; 824 : if( pOldData->IsShared() )
0002b 8b 4d f8 mov ecx, DWORD PTR _pOldData$[ebp]
0002e e8 00 00 00 00 call ?IsShared@CStringData@ATL@@QBE_NXZ ; ATL::CStringData::IsShared
00033 0f b6 c0 movzx eax, al
00036 85 c0 test eax, eax
00038 74 0e je SHORT $LN3@PrepareWri
; 825 : {
; 826 : Fork( nLength );
0003a 8b 45 08 mov eax, DWORD PTR _nLength$[ebp]
0003d 50 push eax
0003e 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00041 e8 00 00 00 00 call ?Fork@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Fork
; 827 : }
00046 eb 52 jmp SHORT $LN1@PrepareWri
$LN3@PrepareWri:
; 828 : else if( pOldData->nAllocLength < nLength )
00048 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
0004b 8b 48 08 mov ecx, DWORD PTR [eax+8]
0004e 3b 4d 08 cmp ecx, DWORD PTR _nLength$[ebp]
00051 7d 47 jge SHORT $LN1@PrepareWri
; 829 : {
; 830 : // Grow exponentially, until we hit 1G, then by 1M thereafter.
; 831 : int nNewLength = pOldData->nAllocLength;
00053 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
00056 8b 48 08 mov ecx, DWORD PTR [eax+8]
00059 89 4d f4 mov DWORD PTR _nNewLength$1[ebp], ecx
; 832 : if( nNewLength > 1024 * 1024 * 1024 )
0005c 81 7d f4 00 00
00 40 cmp DWORD PTR _nNewLength$1[ebp], 1073741824 ; 40000000H
00063 7e 0d jle SHORT $LN6@PrepareWri
; 833 : {
; 834 : nNewLength += 1024 * 1024;
00065 8b 45 f4 mov eax, DWORD PTR _nNewLength$1[ebp]
00068 05 00 00 10 00 add eax, 1048576 ; 00100000H
0006d 89 45 f4 mov DWORD PTR _nNewLength$1[ebp], eax
; 835 : }
00070 eb 0e jmp SHORT $LN7@PrepareWri
$LN6@PrepareWri:
; 836 : else
; 837 : {
; 838 : // Exponential growth factor is 1.5.
; 839 : nNewLength = nNewLength + nNewLength / 2;
00072 8b 45 f4 mov eax, DWORD PTR _nNewLength$1[ebp]
00075 99 cdq
00076 2b c2 sub eax, edx
00078 d1 f8 sar eax, 1
0007a 03 45 f4 add eax, DWORD PTR _nNewLength$1[ebp]
0007d 89 45 f4 mov DWORD PTR _nNewLength$1[ebp], eax
$LN7@PrepareWri:
; 840 : }
; 841 : if( nNewLength < nLength )
00080 8b 45 f4 mov eax, DWORD PTR _nNewLength$1[ebp]
00083 3b 45 08 cmp eax, DWORD PTR _nLength$[ebp]
00086 7d 06 jge SHORT $LN8@PrepareWri
; 842 : {
; 843 : nNewLength = nLength;
00088 8b 45 08 mov eax, DWORD PTR _nLength$[ebp]
0008b 89 45 f4 mov DWORD PTR _nNewLength$1[ebp], eax
$LN8@PrepareWri:
; 844 : }
; 845 : Reallocate( nNewLength );
0008e 8b 45 f4 mov eax, DWORD PTR _nNewLength$1[ebp]
00091 50 push eax
00092 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00095 e8 00 00 00 00 call ?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Reallocate
$LN1@PrepareWri:
; 846 : }
; 847 : }
0009a 5f pop edi
0009b 5e pop esi
0009c 5b pop ebx
0009d 8b e5 mov esp, ebp
0009f 5d pop ebp
000a0 c2 04 00 ret 4
?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AAEPA_WH@Z
_TEXT SEGMENT
_nTooShort$ = -16 ; size = 4
_nShared$ = -12 ; size = 4
_pOldData$ = -8 ; size = 4
_this$ = -4 ; size = 4
_nLength$ = 8 ; size = 4
?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AAEPA_WH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite, COMDAT
; _this$ = ecx
; 803 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 50 sub esp, 80 ; 00000050H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 804 : if (nLength < 0)
0000c 83 7d 08 00 cmp DWORD PTR _nLength$[ebp], 0
00010 7d 0a jge SHORT $LN2@PrepareWri
; 805 : AtlThrow(E_INVALIDARG);
00012 68 57 00 07 80 push -2147024809 ; 80070057H
00017 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN2@PrepareWri:
; 806 :
; 807 : CStringData* pOldData = GetData();
0001c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0001f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00024 89 45 f8 mov DWORD PTR _pOldData$[ebp], eax
; 808 : int nShared = 1-pOldData->nRefs; // nShared < 0 means true, >= 0 means false
00027 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
0002a b9 01 00 00 00 mov ecx, 1
0002f 2b 48 0c sub ecx, DWORD PTR [eax+12]
00032 89 4d f4 mov DWORD PTR _nShared$[ebp], ecx
; 809 : int nTooShort = pOldData->nAllocLength-nLength; // nTooShort < 0 means true, >= 0 means false
00035 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
00038 8b 48 08 mov ecx, DWORD PTR [eax+8]
0003b 2b 4d 08 sub ecx, DWORD PTR _nLength$[ebp]
0003e 89 4d f0 mov DWORD PTR _nTooShort$[ebp], ecx
; 810 : if( (nShared|nTooShort) < 0 ) // If either sign bit is set (i.e. either is less than zero), we need to copy data
00041 8b 45 f4 mov eax, DWORD PTR _nShared$[ebp]
00044 0b 45 f0 or eax, DWORD PTR _nTooShort$[ebp]
00047 7d 0c jge SHORT $LN3@PrepareWri
; 811 : {
; 812 : PrepareWrite2( nLength );
00049 8b 45 08 mov eax, DWORD PTR _nLength$[ebp]
0004c 50 push eax
0004d 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00050 e8 00 00 00 00 call ?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2
$LN3@PrepareWri:
; 813 : }
; 814 :
; 815 : return( m_pszData );
00055 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00058 8b 00 mov eax, DWORD PTR [eax]
$LN4@PrepareWri:
; 816 : }
0005a 5f pop edi
0005b 5e pop esi
0005c 5b pop ebx
0005d 8b e5 mov esp, ebp
0005f 5d pop ebp
00060 c2 04 00 ret 4
?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AAEPA_WH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetData, COMDAT
; _this$ = ecx
; 799 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 800 : return( reinterpret_cast< CStringData* >( m_pszData )-1 );
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 8b 00 mov eax, DWORD PTR [eax]
00011 83 e8 10 sub eax, 16 ; 00000010H
; 801 : }
00014 5f pop edi
00015 5e pop esi
00016 5b pop ebx
00017 8b e5 mov esp, ebp
00019 5d pop ebp
0001a c3 ret 0
?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetData
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?Fork@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z
_TEXT SEGMENT
tv132 = -92 ; size = 4
tv83 = -92 ; size = 4
tv134 = -88 ; size = 4
tv86 = -88 ; size = 4
tv76 = -88 ; size = 4
_nCharsToCopy$ = -20 ; size = 4
_pNewData$ = -16 ; size = 4
_nOldLength$ = -12 ; size = 4
_pOldData$ = -8 ; size = 4
_this$ = -4 ; size = 4
_nLength$ = 8 ; size = 4
?Fork@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::Fork, COMDAT
; _this$ = ecx
; 783 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 5c sub esp, 92 ; 0000005cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 784 : CStringData* pOldData = GetData();
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 89 45 f8 mov DWORD PTR _pOldData$[ebp], eax
; 785 : int nOldLength = pOldData->nDataLength;
00017 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
0001a 8b 48 04 mov ecx, DWORD PTR [eax+4]
0001d 89 4d f4 mov DWORD PTR _nOldLength$[ebp], ecx
; 786 : CStringData* pNewData = pOldData->pStringMgr->Clone()->Allocate( nLength, sizeof( XCHAR ) );
00020 8b 45 f8 mov eax, DWORD PTR _pOldData$[ebp]
00023 8b 08 mov ecx, DWORD PTR [eax]
00025 8b 55 f8 mov edx, DWORD PTR _pOldData$[ebp]
00028 8b 01 mov eax, DWORD PTR [ecx]
0002a 8b 0a mov ecx, DWORD PTR [edx]
0002c 8b 50 10 mov edx, DWORD PTR [eax+16]
0002f ff d2 call edx
00031 89 45 a8 mov DWORD PTR tv76[ebp], eax
00034 8b 45 a8 mov eax, DWORD PTR tv76[ebp]
00037 8b 08 mov ecx, DWORD PTR [eax]
00039 8b 11 mov edx, DWORD PTR [ecx]
0003b 89 55 a4 mov DWORD PTR tv83[ebp], edx
0003e 6a 02 push 2
00040 8b 45 08 mov eax, DWORD PTR _nLength$[ebp]
00043 50 push eax
00044 8b 4d a8 mov ecx, DWORD PTR tv76[ebp]
00047 ff 55 a4 call DWORD PTR tv83[ebp]
0004a 89 45 f0 mov DWORD PTR _pNewData$[ebp], eax
; 787 : if( pNewData == NULL )
0004d 83 7d f0 00 cmp DWORD PTR _pNewData$[ebp], 0
00051 75 05 jne SHORT $LN2@Fork
; 788 : {
; 789 : ThrowMemoryException();
00053 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
$LN2@Fork:
; 790 : }
; 791 : int nCharsToCopy = ((nOldLength < nLength) ? nOldLength : nLength)+1; // Copy '\0'
00058 8b 45 f4 mov eax, DWORD PTR _nOldLength$[ebp]
0005b 3b 45 08 cmp eax, DWORD PTR _nLength$[ebp]
0005e 7d 08 jge SHORT $LN4@Fork
00060 8b 4d f4 mov ecx, DWORD PTR _nOldLength$[ebp]
00063 89 4d a8 mov DWORD PTR tv86[ebp], ecx
00066 eb 06 jmp SHORT $LN5@Fork
$LN4@Fork:
00068 8b 55 08 mov edx, DWORD PTR _nLength$[ebp]
0006b 89 55 a8 mov DWORD PTR tv86[ebp], edx
$LN5@Fork:
0006e 8b 45 a8 mov eax, DWORD PTR tv86[ebp]
00071 83 c0 01 add eax, 1
00074 89 45 ec mov DWORD PTR _nCharsToCopy$[ebp], eax
; 792 : memcpy_s( PXSTR( pNewData->data() ), nCharsToCopy * sizeof( XCHAR ),
00077 8b 4d f8 mov ecx, DWORD PTR _pOldData$[ebp]
0007a e8 00 00 00 00 call ?data@CStringData@ATL@@QAEPAXXZ ; ATL::CStringData::data
0007f 89 45 a8 mov DWORD PTR tv134[ebp], eax
00082 8b 4d f0 mov ecx, DWORD PTR _pNewData$[ebp]
00085 e8 00 00 00 00 call ?data@CStringData@ATL@@QAEPAXXZ ; ATL::CStringData::data
0008a 89 45 a4 mov DWORD PTR tv132[ebp], eax
0008d 8b 45 ec mov eax, DWORD PTR _nCharsToCopy$[ebp]
00090 d1 e0 shl eax, 1
00092 50 push eax
00093 8b 4d a8 mov ecx, DWORD PTR tv134[ebp]
00096 51 push ecx
00097 8b 55 ec mov edx, DWORD PTR _nCharsToCopy$[ebp]
0009a d1 e2 shl edx, 1
0009c 52 push edx
0009d 8b 45 a4 mov eax, DWORD PTR tv132[ebp]
000a0 50 push eax
000a1 e8 00 00 00 00 call _memcpy_s
000a6 83 c4 10 add esp, 16 ; 00000010H
; 793 : PCXSTR( pOldData->data() ), nCharsToCopy * sizeof( XCHAR ));
; 794 : pNewData->nDataLength = nOldLength;
000a9 8b 45 f0 mov eax, DWORD PTR _pNewData$[ebp]
000ac 8b 4d f4 mov ecx, DWORD PTR _nOldLength$[ebp]
000af 89 48 04 mov DWORD PTR [eax+4], ecx
; 795 : pOldData->Release();
000b2 8b 4d f8 mov ecx, DWORD PTR _pOldData$[ebp]
000b5 e8 00 00 00 00 call ?Release@CStringData@ATL@@QAEXXZ ; ATL::CStringData::Release
; 796 : Attach( pNewData );
000ba 8b 45 f0 mov eax, DWORD PTR _pNewData$[ebp]
000bd 50 push eax
000be 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000c1 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
$LN3@Fork:
; 797 : }
000c6 5f pop edi
000c7 5e pop esi
000c8 5b pop ebx
000c9 8b e5 mov esp, ebp
000cb 5d pop ebp
000cc c2 04 00 ret 4
?Fork@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::Fork
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_pData$ = 8 ; size = 4
?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::Attach, COMDAT
; _this$ = ecx
; 779 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 780 : m_pszData = static_cast< PXSTR >( pData->data() );
0000c 8b 4d 08 mov ecx, DWORD PTR _pData$[ebp]
0000f e8 00 00 00 00 call ?data@CStringData@ATL@@QAEPAXXZ ; ATL::CStringData::data
00014 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00017 89 01 mov DWORD PTR [ecx], eax
; 781 : }
00019 5f pop edi
0001a 5e pop esi
0001b 5b pop ebx
0001c 8b e5 mov esp, ebp
0001e 5d pop ebp
0001f c2 04 00 ret 4
?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::Attach
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ
_TEXT SEGMENT
?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ PROC ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException, COMDAT
; 772 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 773 : AtlThrow( E_OUTOFMEMORY );
00009 68 0e 00 07 80 push -2147024882 ; 8007000eH
0000e e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN2@ThrowMemor:
; 774 : }
00013 5f pop edi
00014 5e pop esi
00015 5b pop ebx
00016 8b e5 mov esp, ebp
00018 5d pop ebp
00019 c3 ret 0
?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z
_TEXT SEGMENT
__$EHRec$ = -12 ; size = 12
_psz$ = 8 ; size = 4
?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::StringLength, COMDAT
; 729 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 40 sub esp, 64 ; 00000040H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 730 : if( psz == NULL )
00028 83 7d 08 00 cmp DWORD PTR _psz$[ebp], 0
0002c 75 04 jne SHORT $LN2@StringLeng
; 731 : {
; 732 : return( 0 );
0002e 33 c0 xor eax, eax
00030 eb 0c jmp SHORT $LN1@StringLeng
$LN2@StringLeng:
; 733 : }
; 734 : return( int( wcslen( psz ) ) );
00032 8b 45 08 mov eax, DWORD PTR _psz$[ebp]
00035 50 push eax
00036 e8 00 00 00 00 call _wcslen
0003b 83 c4 04 add esp, 4
$LN1@StringLeng:
; 735 : }
0003e 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00041 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00048 59 pop ecx
00049 5f pop edi
0004a 5e pop esi
0004b 5b pop ebx
0004c 8b e5 mov esp, ebp
0004e 5d pop ebp
0004f c3 ret 0
00050 cc int 3
00051 cc int 3
00052 cc int 3
00053 cc int 3
00054 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a b0 mov ecx, DWORD PTR [edx-80]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::StringLength
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z
_TEXT SEGMENT
__$EHRec$ = -12 ; size = 12
_pchDest$ = 8 ; size = 4
_nDestLen$ = 12 ; size = 4
_pchSrc$ = 16 ; size = 4
_nChars$ = 20 ; size = 4
?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::CopyCharsOverlapped, COMDAT
; 716 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 40 sub esp, 64 ; 00000040H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 717 : memmove_s( pchDest, nDestLen*sizeof( XCHAR ),
00028 8b 45 14 mov eax, DWORD PTR _nChars$[ebp]
0002b d1 e0 shl eax, 1
0002d 50 push eax
0002e 8b 4d 10 mov ecx, DWORD PTR _pchSrc$[ebp]
00031 51 push ecx
00032 8b 55 0c mov edx, DWORD PTR _nDestLen$[ebp]
00035 d1 e2 shl edx, 1
00037 52 push edx
00038 8b 45 08 mov eax, DWORD PTR _pchDest$[ebp]
0003b 50 push eax
0003c e8 00 00 00 00 call _memmove_s
00041 83 c4 10 add esp, 16 ; 00000010H
; 718 : pchSrc, nChars*sizeof( XCHAR ) );
; 719 : }
00044 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00047 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0004e 59 pop ecx
0004f 5f pop edi
00050 5e pop esi
00051 5b pop ebx
00052 8b e5 mov esp, ebp
00054 5d pop ebp
00055 c3 ret 0
00056 cc int 3
00057 cc int 3
00058 cc int 3
00059 cc int 3
0005a cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a b0 mov ecx, DWORD PTR [edx-80]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::CopyCharsOverlapped
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_WH@Z
_TEXT SEGMENT
_pszBuffer$1 = -16 ; size = 4
_nOffset$2 = -12 ; size = 4
_nOldLength$3 = -8 ; size = 4
_this$ = -4 ; size = 4
_pszSrc$ = 8 ; size = 4
_nLength$ = 12 ; size = 4
?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_WH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::SetString, COMDAT
; _this$ = ecx
; 607 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 50 sub esp, 80 ; 00000050H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 608 : if( nLength == 0 )
0000c 83 7d 0c 00 cmp DWORD PTR _nLength$[ebp], 0
00010 75 0d jne SHORT $LN2@SetString
; 609 : {
; 610 : Empty();
00012 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00015 e8 00 00 00 00 call ?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ ; ATL::CSimpleStringT<wchar_t,0>::Empty
; 611 : }
0001a e9 96 00 00 00 jmp $LN7@SetString
$LN2@SetString:
; 612 : else
; 613 : {
; 614 : // It is possible that pszSrc points to a location inside of our
; 615 : // buffer. GetBuffer() might change m_pszData if (1) the buffer
; 616 : // is shared or (2) the buffer is too small to hold the new
; 617 : // string. We detect this aliasing, and modify pszSrc to point
; 618 : // into the newly allocated buffer instead.
; 619 :
; 620 : if(pszSrc == NULL)
0001f 83 7d 08 00 cmp DWORD PTR _pszSrc$[ebp], 0
00023 75 0a jne SHORT $LN4@SetString
; 621 : AtlThrow(E_INVALIDARG);
00025 68 57 00 07 80 push -2147024809 ; 80070057H
0002a e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN4@SetString:
; 622 :
; 623 : UINT nOldLength = GetLength();
0002f 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00032 e8 00 00 00 00 call ?GetLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ; ATL::CSimpleStringT<wchar_t,0>::GetLength
00037 89 45 f8 mov DWORD PTR _nOldLength$3[ebp], eax
; 624 : UINT_PTR nOffset = pszSrc-GetString();
0003a 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0003d e8 00 00 00 00 call ?GetString@?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ; ATL::CSimpleStringT<wchar_t,0>::GetString
00042 8b 4d 08 mov ecx, DWORD PTR _pszSrc$[ebp]
00045 2b c8 sub ecx, eax
00047 d1 f9 sar ecx, 1
00049 89 4d f4 mov DWORD PTR _nOffset$2[ebp], ecx
; 625 : // If 0 <= nOffset <= nOldLength, then pszSrc points into our
; 626 : // buffer
; 627 :
; 628 : PXSTR pszBuffer = GetBuffer( nLength );
0004c 8b 45 0c mov eax, DWORD PTR _nLength$[ebp]
0004f 50 push eax
00050 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00053 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
00058 89 45 f0 mov DWORD PTR _pszBuffer$1[ebp], eax
; 629 : if( nOffset <= nOldLength )
0005b 8b 45 f4 mov eax, DWORD PTR _nOffset$2[ebp]
0005e 3b 45 f8 cmp eax, DWORD PTR _nOldLength$3[ebp]
00061 77 25 ja SHORT $LN5@SetString
; 630 : {
; 631 : CopyCharsOverlapped( pszBuffer, GetAllocLength(),
00063 8b 45 0c mov eax, DWORD PTR _nLength$[ebp]
00066 50 push eax
00067 8b 4d f4 mov ecx, DWORD PTR _nOffset$2[ebp]
0006a 8b 55 f0 mov edx, DWORD PTR _pszBuffer$1[ebp]
0006d 8d 04 4a lea eax, DWORD PTR [edx+ecx*2]
00070 50 push eax
00071 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00074 e8 00 00 00 00 call ?GetAllocLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ; ATL::CSimpleStringT<wchar_t,0>::GetAllocLength
00079 50 push eax
0007a 8b 4d f0 mov ecx, DWORD PTR _pszBuffer$1[ebp]
0007d 51 push ecx
0007e e8 00 00 00 00 call ?CopyCharsOverlapped@?$CSimpleStringT@_W$0A@@ATL@@SAXPA_WIPB_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::CopyCharsOverlapped
00083 83 c4 10 add esp, 16 ; 00000010H
; 632 : pszBuffer+nOffset, nLength );
; 633 : }
00086 eb 21 jmp SHORT $LN6@SetString
$LN5@SetString:
; 634 : else
; 635 : {
; 636 : memcpy_s( pszBuffer, GetAllocLength() * sizeof( XCHAR ), pszSrc, nLength * sizeof( XCHAR ));
00088 8b 45 0c mov eax, DWORD PTR _nLength$[ebp]
0008b d1 e0 shl eax, 1
0008d 50 push eax
0008e 8b 4d 08 mov ecx, DWORD PTR _pszSrc$[ebp]
00091 51 push ecx
00092 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00095 e8 00 00 00 00 call ?GetAllocLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ; ATL::CSimpleStringT<wchar_t,0>::GetAllocLength
0009a d1 e0 shl eax, 1
0009c 50 push eax
0009d 8b 55 f0 mov edx, DWORD PTR _pszBuffer$1[ebp]
000a0 52 push edx
000a1 e8 00 00 00 00 call _memcpy_s
000a6 83 c4 10 add esp, 16 ; 00000010H
$LN6@SetString:
; 637 : }
; 638 : ReleaseBufferSetLength( nLength );
000a9 8b 45 0c mov eax, DWORD PTR _nLength$[ebp]
000ac 50 push eax
000ad 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000b0 e8 00 00 00 00 call ?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBufferSetLength
$LN7@SetString:
; 639 : }
; 640 : }
000b5 5f pop edi
000b6 5e pop esi
000b7 5b pop ebx
000b8 8b e5 mov esp, ebp
000ba 5d pop ebp
000bb c2 08 00 ret 8
?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_WH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::SetString
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_W@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_pszSrc$ = 8 ; size = 4
?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_W@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::SetString, COMDAT
; _this$ = ecx
; 601 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 602 : SetString( pszSrc, StringLength( pszSrc ) );
0000c 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
0000f 50 push eax
00010 e8 00 00 00 00 call ?StringLength@?$CSimpleStringT@_W$0A@@ATL@@SAHPB_W@Z ; ATL::CSimpleStringT<wchar_t,0>::StringLength
00015 83 c4 04 add esp, 4
00018 50 push eax
00019 8b 4d 08 mov ecx, DWORD PTR _pszSrc$[ebp]
0001c 51 push ecx
0001d 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00020 e8 00 00 00 00 call ?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetString
; 603 : }
00025 5f pop edi
00026 5e pop esi
00027 5b pop ebx
00028 8b e5 mov esp, ebp
0002a 5d pop ebp
0002b c2 04 00 ret 4
?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_W@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::SetString
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_nNewLength$ = 8 ; size = 4
?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBufferSetLength, COMDAT
; _this$ = ecx
; 566 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 567 : ATLASSERT( nNewLength >= 0 );
; 568 : SetLength( nNewLength );
0000c 8b 45 08 mov eax, DWORD PTR _nNewLength$[ebp]
0000f 50 push eax
00010 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00013 e8 00 00 00 00 call ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetLength
; 569 : }
00018 5f pop edi
00019 5e pop esi
0001a 5b pop ebx
0001b 8b e5 mov esp, ebp
0001d 5d pop ebp
0001e c2 04 00 ret 4
?ReleaseBufferSetLength@?$CSimpleStringT@_W$0A@@ATL@@QAEXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBufferSetLength
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?GetString@?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
?GetString@?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetString, COMDAT
; _this$ = ecx
; 528 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 529 : return( m_pszData );
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 8b 00 mov eax, DWORD PTR [eax]
; 530 : }
00011 5f pop edi
00012 5e pop esi
00013 5b pop ebx
00014 8b e5 mov esp, ebp
00016 5d pop ebp
00017 c3 ret 0
?GetString@?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetString
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?GetManager@?$CSimpleStringT@_W$0A@@ATL@@QBEPAUIAtlStringMgr@2@XZ
_TEXT SEGMENT
tv72 = -76 ; size = 4
_pStringMgr$ = -8 ; size = 4
_this$ = -4 ; size = 4
?GetManager@?$CSimpleStringT@_W$0A@@ATL@@QBEPAUIAtlStringMgr@2@XZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetManager, COMDAT
; _this$ = ecx
; 522 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 4c sub esp, 76 ; 0000004cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 523 : IAtlStringMgr* pStringMgr = GetData()->pStringMgr;
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 8b 00 mov eax, DWORD PTR [eax]
00016 89 45 f8 mov DWORD PTR _pStringMgr$[ebp], eax
; 524 : return pStringMgr ? pStringMgr->Clone() : NULL;
00019 83 7d f8 00 cmp DWORD PTR _pStringMgr$[ebp], 0
0001d 74 12 je SHORT $LN3@GetManager
0001f 8b 45 f8 mov eax, DWORD PTR _pStringMgr$[ebp]
00022 8b 10 mov edx, DWORD PTR [eax]
00024 8b 4d f8 mov ecx, DWORD PTR _pStringMgr$[ebp]
00027 8b 42 10 mov eax, DWORD PTR [edx+16]
0002a ff d0 call eax
0002c 89 45 b4 mov DWORD PTR tv72[ebp], eax
0002f eb 07 jmp SHORT $LN4@GetManager
$LN3@GetManager:
00031 c7 45 b4 00 00
00 00 mov DWORD PTR tv72[ebp], 0
$LN4@GetManager:
00038 8b 45 b4 mov eax, DWORD PTR tv72[ebp]
; 525 : }
0003b 5f pop edi
0003c 5e pop esi
0003d 5b pop ebx
0003e 8b e5 mov esp, ebp
00040 5d pop ebp
00041 c3 ret 0
?GetManager@?$CSimpleStringT@_W$0A@@ATL@@QBEPAUIAtlStringMgr@2@XZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetManager
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?GetLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
?GetLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetLength, COMDAT
; _this$ = ecx
; 518 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 519 : return( GetData()->nDataLength );
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 8b 40 04 mov eax, DWORD PTR [eax+4]
; 520 : }
00017 5f pop edi
00018 5e pop esi
00019 5b pop ebx
0001a 8b e5 mov esp, ebp
0001c 5d pop ebp
0001d c3 ret 0
?GetLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetLength
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_nMinBufferLength$ = 8 ; size = 4
?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer, COMDAT
; _this$ = ecx
; 507 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 508 : return( PrepareWrite( nMinBufferLength ) );
0000c 8b 45 08 mov eax, DWORD PTR _nMinBufferLength$[ebp]
0000f 50 push eax
00010 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00013 e8 00 00 00 00 call ?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AAEPA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
; 509 : }
00018 5f pop edi
00019 5e pop esi
0001a 5b pop ebx
0001b 8b e5 mov esp, ebp
0001d 5d pop ebp
0001e c2 04 00 ret 4
?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QAEPA_WH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?GetAllocLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
?GetAllocLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetAllocLength, COMDAT
; _this$ = ecx
; 485 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 486 : return( GetData()->nAllocLength );
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 8b 40 08 mov eax, DWORD PTR [eax+8]
; 487 : }
00017 5f pop edi
00018 5e pop esi
00019 5b pop ebx
0001a 8b e5 mov esp, ebp
0001c 5d pop ebp
0001d c3 ret 0
?GetAllocLength@?$CSimpleStringT@_W$0A@@ATL@@QBEHXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetAllocLength
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ
_TEXT SEGMENT
_pNewData$2 = -28 ; size = 4
_pStringMgr$ = -24 ; size = 4
_pOldData$ = -20 ; size = 4
_this$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ PROC ; ATL::CSimpleStringT<wchar_t,0>::Empty, COMDAT
; _this$ = ecx
; 436 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 50 sub esp, 80 ; 00000050H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
00028 89 4d f0 mov DWORD PTR _this$[ebp], ecx
; 437 : CStringData* pOldData = GetData();
0002b 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
0002e e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00033 89 45 ec mov DWORD PTR _pOldData$[ebp], eax
; 438 : IAtlStringMgr* pStringMgr = pOldData->pStringMgr;
00036 8b 45 ec mov eax, DWORD PTR _pOldData$[ebp]
00039 8b 08 mov ecx, DWORD PTR [eax]
0003b 89 4d e8 mov DWORD PTR _pStringMgr$[ebp], ecx
; 439 : if( pOldData->nDataLength == 0 )
0003e 8b 45 ec mov eax, DWORD PTR _pOldData$[ebp]
00041 83 78 04 00 cmp DWORD PTR [eax+4], 0
00045 75 02 jne SHORT $LN2@Empty
; 440 : {
; 441 : return;
00047 eb 3f jmp SHORT $LN1@Empty
$LN2@Empty:
; 442 : }
; 443 :
; 444 : if( pOldData->IsLocked() )
00049 8b 4d ec mov ecx, DWORD PTR _pOldData$[ebp]
0004c e8 00 00 00 00 call ?IsLocked@CStringData@ATL@@QBE_NXZ ; ATL::CStringData::IsLocked
00051 0f b6 c0 movzx eax, al
00054 85 c0 test eax, eax
00056 74 0c je SHORT $LN3@Empty
; 445 : {
; 446 : // Don't reallocate a locked buffer that's shrinking
; 447 : SetLength( 0 );
00058 6a 00 push 0
0005a 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
0005d e8 00 00 00 00 call ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AAEXH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetLength
; 448 : }
00062 eb 24 jmp SHORT $LN1@Empty
$LN3@Empty:
; 449 : else
; 450 : {
; 451 : pOldData->Release();
00064 8b 4d ec mov ecx, DWORD PTR _pOldData$[ebp]
00067 e8 00 00 00 00 call ?Release@CStringData@ATL@@QAEXXZ ; ATL::CStringData::Release
; 452 : CStringData* pNewData = pStringMgr->GetNilString();
0006c 8b 45 e8 mov eax, DWORD PTR _pStringMgr$[ebp]
0006f 8b 10 mov edx, DWORD PTR [eax]
00071 8b 4d e8 mov ecx, DWORD PTR _pStringMgr$[ebp]
00074 8b 42 0c mov eax, DWORD PTR [edx+12]
00077 ff d0 call eax
00079 89 45 e4 mov DWORD PTR _pNewData$2[ebp], eax
; 453 : Attach( pNewData );
0007c 8b 45 e4 mov eax, DWORD PTR _pNewData$2[ebp]
0007f 50 push eax
00080 8b 4d f0 mov ecx, DWORD PTR _this$[ebp]
00083 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
$LN1@Empty:
; 454 : }
; 455 : }
00088 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0008b 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00092 59 pop ecx
00093 5f pop edi
00094 5e pop esi
00095 5b pop ebx
00096 8b e5 mov esp, ebp
00098 5d pop ebp
00099 c3 ret 0
0009a cc int 3
0009b cc int 3
0009c cc int 3
0009d cc int 3
0009e cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a a0 mov ecx, DWORD PTR [edx-96]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?Empty@?$CSimpleStringT@_W$0A@@ATL@@QAEXXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::Empty
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ PROC ; ATL::CSimpleStringT<wchar_t,0>::operator wchar_t const *, COMDAT
; _this$ = ecx
; 376 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 377 : return( m_pszData );
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 8b 00 mov eax, DWORD PTR [eax]
; 378 : }
00011 5f pop edi
00012 5e pop esi
00013 5b pop ebx
00014 8b e5 mov esp, ebp
00016 5d pop ebp
00017 c3 ret 0
??B?$CSimpleStringT@_W$0A@@ATL@@QBEPB_WXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::operator wchar_t const *
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ??4?$CSimpleStringT@_W$0A@@ATL@@QAEAAV01@PB_W@Z
_TEXT SEGMENT
_this$ = -4 ; size = 4
_pszSrc$ = 8 ; size = 4
??4?$CSimpleStringT@_W$0A@@ATL@@QAEAAV01@PB_W@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::operator=, COMDAT
; _this$ = ecx
; 313 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 314 : SetString( pszSrc );
0000c 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
0000f 50 push eax
00010 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00013 e8 00 00 00 00 call ?SetString@?$CSimpleStringT@_W$0A@@ATL@@QAEXPB_W@Z ; ATL::CSimpleStringT<wchar_t,0>::SetString
; 315 :
; 316 : return( *this );
00018 8b 45 fc mov eax, DWORD PTR _this$[ebp]
; 317 : }
0001b 5f pop edi
0001c 5e pop esi
0001d 5b pop ebx
0001e 8b e5 mov esp, ebp
00020 5d pop ebp
00021 c2 04 00 ret 4
??4?$CSimpleStringT@_W$0A@@ATL@@QAEAAV01@PB_W@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::operator=
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ
_TEXT SEGMENT
_pData$ = -8 ; size = 4
_this$ = -4 ; size = 4
??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ PROC ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>, COMDAT
; _this$ = ecx
; 260 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 261 : CStringData* pData = GetData();
0000c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0000f e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@ABEPAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
00014 89 45 f8 mov DWORD PTR _pData$[ebp], eax
; 262 : pData->Release();
00017 8b 4d f8 mov ecx, DWORD PTR _pData$[ebp]
0001a e8 00 00 00 00 call ?Release@CStringData@ATL@@QAEXXZ ; ATL::CStringData::Release
; 263 : }
0001f 5f pop edi
00020 5e pop esi
00021 5b pop ebx
00022 8b e5 mov esp, ebp
00024 5d pop ebp
00025 c3 ret 0
??1?$CSimpleStringT@_W$0A@@ATL@@QAE@XZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::~CSimpleStringT<wchar_t,0>
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z
_TEXT SEGMENT
tv65 = -80 ; size = 4
_pData$ = -12 ; size = 4
___atl_condVal$1 = -8 ; size = 4
_this$ = -4 ; size = 4
_pStringMgr$ = 8 ; size = 4
??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>, COMDAT
; _this$ = ecx
; 203 : explicit CSimpleStringT(_Inout_ IAtlStringMgr* pStringMgr)
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 50 sub esp, 80 ; 00000050H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
$LN4@CSimpleStr:
; 204 : {
; 205 : ATLENSURE( pStringMgr != NULL );
0000c 83 7d 08 00 cmp DWORD PTR _pStringMgr$[ebp], 0
00010 74 09 je SHORT $LN10@CSimpleStr
00012 c7 45 b0 01 00
00 00 mov DWORD PTR tv65[ebp], 1
00019 eb 07 jmp SHORT $LN11@CSimpleStr
$LN10@CSimpleStr:
0001b c7 45 b0 00 00
00 00 mov DWORD PTR tv65[ebp], 0
$LN11@CSimpleStr:
00022 8b 45 b0 mov eax, DWORD PTR tv65[ebp]
00025 89 45 f8 mov DWORD PTR ___atl_condVal$1[ebp], eax
$LN5@CSimpleStr:
00028 33 c0 xor eax, eax
0002a 75 fc jne SHORT $LN5@CSimpleStr
0002c 83 7d f8 00 cmp DWORD PTR ___atl_condVal$1[ebp], 0
00030 75 0a jne SHORT $LN2@CSimpleStr
00032 68 05 40 00 80 push -2147467259 ; 80004005H
00037 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YGXJ@Z ; ATL::AtlThrowImpl
$LN2@CSimpleStr:
0003c 33 c0 xor eax, eax
0003e 75 cc jne SHORT $LN4@CSimpleStr
; 206 : CStringData* pData = pStringMgr->GetNilString();
00040 8b 45 08 mov eax, DWORD PTR _pStringMgr$[ebp]
00043 8b 10 mov edx, DWORD PTR [eax]
00045 8b 4d 08 mov ecx, DWORD PTR _pStringMgr$[ebp]
00048 8b 42 0c mov eax, DWORD PTR [edx+12]
0004b ff d0 call eax
0004d 89 45 f4 mov DWORD PTR _pData$[ebp], eax
; 207 : Attach( pData );
00050 8b 45 f4 mov eax, DWORD PTR _pData$[ebp]
00053 50 push eax
00054 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00057 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AAEXPAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
; 208 : }
0005c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
$LN9@CSimpleStr:
0005f 5f pop edi
00060 5e pop esi
00061 5b pop ebx
00062 8b e5 mov esp, ebp
00064 5d pop ebp
00065 c2 04 00 ret 4
??0?$CSimpleStringT@_W$0A@@ATL@@QAE@PAUIAtlStringMgr@1@@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::CSimpleStringT<wchar_t,0>
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?ConvertToBaseType@?$ChTraitsCRT@_W@ATL@@SAXPA_WHPB_WH@Z
_TEXT SEGMENT
_pszDest$ = 8 ; size = 4
_nDestLength$ = 12 ; size = 4
_pszSrc$ = 16 ; size = 4
_nSrcLength$ = 20 ; size = 4
?ConvertToBaseType@?$ChTraitsCRT@_W@ATL@@SAXPA_WHPB_WH@Z PROC ; ATL::ChTraitsCRT<wchar_t>::ConvertToBaseType, COMDAT
; 789 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 790 : if (nSrcLength == -1) { nSrcLength=1 + GetBaseTypeLength(pszSrc); }
00009 83 7d 14 ff cmp DWORD PTR _nSrcLength$[ebp], -1
0000d 75 12 jne SHORT $LN2@ConvertToB
0000f 8b 45 10 mov eax, DWORD PTR _pszSrc$[ebp]
00012 50 push eax
00013 e8 00 00 00 00 call ?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength
00018 83 c4 04 add esp, 4
0001b 83 c0 01 add eax, 1
0001e 89 45 14 mov DWORD PTR _nSrcLength$[ebp], eax
$LN2@ConvertToB:
; 791 : // nLen is in wchar_ts
; 792 : Checked::wmemcpy_s(pszDest, nDestLength, pszSrc, nSrcLength);
00021 8b 45 14 mov eax, DWORD PTR _nSrcLength$[ebp]
00024 50 push eax
00025 8b 4d 10 mov ecx, DWORD PTR _pszSrc$[ebp]
00028 51 push ecx
00029 8b 55 0c mov edx, DWORD PTR _nDestLength$[ebp]
0002c 52 push edx
0002d 8b 45 08 mov eax, DWORD PTR _pszDest$[ebp]
00030 50 push eax
00031 e8 00 00 00 00 call ?wmemcpy_s@Checked@ATL@@YAXPA_WIPB_WI@Z ; ATL::Checked::wmemcpy_s
00036 83 c4 10 add esp, 16 ; 00000010H
; 793 : }
00039 5f pop edi
0003a 5e pop esi
0003b 5b pop ebx
0003c 8b e5 mov esp, ebp
0003e 5d pop ebp
0003f c3 ret 0
?ConvertToBaseType@?$ChTraitsCRT@_W@ATL@@SAXPA_WHPB_WH@Z ENDP ; ATL::ChTraitsCRT<wchar_t>::ConvertToBaseType
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WH@Z
_TEXT SEGMENT
_pszSrc$ = 8 ; size = 4
_nLength$ = 12 ; size = 4
?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WH@Z PROC ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength, COMDAT
; 768 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 769 : (void)pszSrc;
; 770 : // Returns required buffer size in wchar_ts
; 771 : return nLength;
00009 8b 45 0c mov eax, DWORD PTR _nLength$[ebp]
; 772 : }
0000c 5f pop edi
0000d 5e pop esi
0000e 5b pop ebx
0000f 8b e5 mov esp, ebp
00011 5d pop ebp
00012 c3 ret 0
?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WH@Z ENDP ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z
_TEXT SEGMENT
__$EHRec$ = -12 ; size = 12
_pszSrc$ = 8 ; size = 4
?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z PROC ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength, COMDAT
; 760 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 40 sub esp, 64 ; 00000040H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 761 : // Returns required buffer size in wchar_ts
; 762 : return AtlStrLen( pszSrc );
00028 8b 45 08 mov eax, DWORD PTR _pszSrc$[ebp]
0002b 50 push eax
0002c e8 00 00 00 00 call ?AtlStrLen@ATL@@YAHPB_W@Z ; ATL::AtlStrLen
00031 83 c4 04 add esp, 4
; 763 : }
00034 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
00037 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
0003e 59 pop ecx
0003f 5f pop edi
00040 5e pop esi
00041 5b pop ebx
00042 8b e5 mov esp, ebp
00044 5d pop ebp
00045 c3 ret 0
00046 cc int 3
00047 cc int 3
00048 cc int 3
00049 cc int 3
0004a cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a b0 mov ecx, DWORD PTR [edx-80]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?GetBaseTypeLength@?$ChTraitsCRT@_W@ATL@@SAHPB_W@Z ENDP ; ATL::ChTraitsCRT<wchar_t>::GetBaseTypeLength
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z
_TEXT SEGMENT
tv74 = -84 ; size = 4
_result$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_pszBuffer$ = 8 ; size = 4
_nLength$ = 12 ; size = 4
_pszFormat$ = 16 ; size = 4
_args$ = 20 ; size = 4
?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z PROC ; ATL::ChTraitsCRT<wchar_t>::Format, COMDAT
; 728 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 48 sub esp, 72 ; 00000048H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 729 : #if _MSC_VER < 1900
; 730 : return vswprintf_s(pszBuffer, nLength, pszFormat, args);
; 731 : #else
; 732 : // Explicitly request the legacy wide format specifiers mode from the CRT,
; 733 : // for compatibility with previous versions. While the CRT supports two
; 734 : // modes, the ATL and MFC functions that accept format strings only support
; 735 : // legacy mode format strings.
; 736 : int const result = __stdio_common_vswprintf_s(
00028 8b 45 14 mov eax, DWORD PTR _args$[ebp]
0002b 50 push eax
0002c 6a 00 push 0
0002e 8b 4d 10 mov ecx, DWORD PTR _pszFormat$[ebp]
00031 51 push ecx
00032 8b 55 0c mov edx, DWORD PTR _nLength$[ebp]
00035 52 push edx
00036 8b 45 08 mov eax, DWORD PTR _pszBuffer$[ebp]
00039 50 push eax
0003a e8 00 00 00 00 call ___local_stdio_printf_options
0003f 8b 08 mov ecx, DWORD PTR [eax]
00041 83 c9 04 or ecx, 4
00044 8b 50 04 mov edx, DWORD PTR [eax+4]
00047 52 push edx
00048 51 push ecx
00049 e8 00 00 00 00 call ___stdio_common_vswprintf_s
0004e 83 c4 1c add esp, 28 ; 0000001cH
00051 89 45 f0 mov DWORD PTR _result$[ebp], eax
; 737 : _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS |
; 738 : _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS,
; 739 : pszBuffer, nLength, pszFormat, NULL, args);
; 740 :
; 741 : return result < 0 ? -1 : result;
00054 83 7d f0 00 cmp DWORD PTR _result$[ebp], 0
00058 7d 09 jge SHORT $LN3@Format
0005a c7 45 ac ff ff
ff ff mov DWORD PTR tv74[ebp], -1
00061 eb 06 jmp SHORT $LN4@Format
$LN3@Format:
00063 8b 45 f0 mov eax, DWORD PTR _result$[ebp]
00066 89 45 ac mov DWORD PTR tv74[ebp], eax
$LN4@Format:
00069 8b 45 ac mov eax, DWORD PTR tv74[ebp]
; 742 : #endif
; 743 : }
0006c 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0006f 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00076 59 pop ecx
00077 5f pop edi
00078 5e pop esi
00079 5b pop ebx
0007a 8b e5 mov esp, ebp
0007c 5d pop ebp
0007d c3 ret 0
0007e cc int 3
0007f cc int 3
00080 cc int 3
00081 cc int 3
00082 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a a8 mov ecx, DWORD PTR [edx-88]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?Format@?$ChTraitsCRT@_W@ATL@@SAHPA_WIPB_WPAD@Z ENDP ; ATL::ChTraitsCRT<wchar_t>::Format
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\cstringt.h
; COMDAT ?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z
_TEXT SEGMENT
tv75 = -84 ; size = 4
_result$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_pszFormat$ = 8 ; size = 4
_args$ = 12 ; size = 4
?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z PROC ; ATL::ChTraitsCRT<wchar_t>::GetFormattedLength, COMDAT
; 682 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 48 sub esp, 72 ; 00000048H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 683 : #if _MSC_VER < 1900
; 684 : return _vscwprintf(pszFormat, args);
; 685 : #else
; 686 : // Explicitly request the legacy wide format specifiers mode from the CRT,
; 687 : // for compatibility with previous versions. While the CRT supports two
; 688 : // modes, the ATL and MFC functions that accept format strings only support
; 689 : // legacy mode format strings.
; 690 : int const result = __stdio_common_vswprintf(
00028 8b 45 0c mov eax, DWORD PTR _args$[ebp]
0002b 50 push eax
0002c 6a 00 push 0
0002e 8b 4d 08 mov ecx, DWORD PTR _pszFormat$[ebp]
00031 51 push ecx
00032 6a 00 push 0
00034 6a 00 push 0
00036 e8 00 00 00 00 call ___local_stdio_printf_options
0003b 8b 10 mov edx, DWORD PTR [eax]
0003d 83 ca 02 or edx, 2
00040 8b 40 04 mov eax, DWORD PTR [eax+4]
00043 83 ca 04 or edx, 4
00046 50 push eax
00047 52 push edx
00048 e8 00 00 00 00 call ___stdio_common_vswprintf
0004d 83 c4 1c add esp, 28 ; 0000001cH
00050 89 45 f0 mov DWORD PTR _result$[ebp], eax
; 691 : _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS |
; 692 : _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR |
; 693 : _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS,
; 694 : NULL, 0, pszFormat, NULL, args);
; 695 :
; 696 : return result < 0 ? -1 : result;
00053 83 7d f0 00 cmp DWORD PTR _result$[ebp], 0
00057 7d 09 jge SHORT $LN3@GetFormatt
00059 c7 45 ac ff ff
ff ff mov DWORD PTR tv75[ebp], -1
00060 eb 06 jmp SHORT $LN4@GetFormatt
$LN3@GetFormatt:
00062 8b 45 f0 mov eax, DWORD PTR _result$[ebp]
00065 89 45 ac mov DWORD PTR tv75[ebp], eax
$LN4@GetFormatt:
00068 8b 45 ac mov eax, DWORD PTR tv75[ebp]
; 697 : #endif
; 698 : }
0006b 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0006e 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00075 59 pop ecx
00076 5f pop edi
00077 5e pop esi
00078 5b pop ebx
00079 8b e5 mov esp, ebp
0007b 5d pop ebp
0007c c3 ret 0
0007d cc int 3
0007e cc int 3
0007f cc int 3
00080 cc int 3
00081 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a a8 mov ecx, DWORD PTR [edx-88]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?GetFormattedLength@?$ChTraitsCRT@_W@ATL@@SAHPB_WPAD@Z ENDP ; ATL::ChTraitsCRT<wchar_t>::GetFormattedLength
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?Release@CStringData@ATL@@QAEXXZ
_TEXT SEGMENT
tv79 = -76 ; size = 4
tv77 = -72 ; size = 4
_this$ = -4 ; size = 4
?Release@CStringData@ATL@@QAEXXZ PROC ; ATL::CStringData::Release, COMDAT
; _this$ = ecx
; 85 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 4c sub esp, 76 ; 0000004cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 86 : ATLASSERT( nRefs != 0 );
; 87 :
; 88 : if( _InterlockedDecrement( &nRefs ) <= 0 )
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 83 c0 0c add eax, 12 ; 0000000cH
00012 83 c9 ff or ecx, -1
00015 f0 0f c1 08 lock xadd DWORD PTR [eax], ecx
00019 49 dec ecx
0001a 85 c9 test ecx, ecx
0001c 7f 1f jg SHORT $LN1@Release
; 89 : {
; 90 : pStringMgr->Free( this );
0001e 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00021 8b 08 mov ecx, DWORD PTR [eax]
00023 89 4d b8 mov DWORD PTR tv77[ebp], ecx
00026 8b 55 fc mov edx, DWORD PTR _this$[ebp]
00029 8b 02 mov eax, DWORD PTR [edx]
0002b 8b 08 mov ecx, DWORD PTR [eax]
0002d 8b 51 04 mov edx, DWORD PTR [ecx+4]
00030 89 55 b4 mov DWORD PTR tv79[ebp], edx
00033 8b 45 fc mov eax, DWORD PTR _this$[ebp]
00036 50 push eax
00037 8b 4d b8 mov ecx, DWORD PTR tv77[ebp]
0003a ff 55 b4 call DWORD PTR tv79[ebp]
$LN1@Release:
; 91 : }
; 92 : }
0003d 5f pop edi
0003e 5e pop esi
0003f 5b pop ebx
00040 8b e5 mov esp, ebp
00042 5d pop ebp
00043 c3 ret 0
?Release@CStringData@ATL@@QAEXXZ ENDP ; ATL::CStringData::Release
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?IsShared@CStringData@ATL@@QBE_NXZ
_TEXT SEGMENT
tv66 = -72 ; size = 4
_this$ = -4 ; size = 4
?IsShared@CStringData@ATL@@QBE_NXZ PROC ; ATL::CStringData::IsShared, COMDAT
; _this$ = ecx
; 72 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 73 : return( nRefs > 1 );
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 83 78 0c 01 cmp DWORD PTR [eax+12], 1
00013 7e 09 jle SHORT $LN3@IsShared
00015 c7 45 b8 01 00
00 00 mov DWORD PTR tv66[ebp], 1
0001c eb 07 jmp SHORT $LN4@IsShared
$LN3@IsShared:
0001e c7 45 b8 00 00
00 00 mov DWORD PTR tv66[ebp], 0
$LN4@IsShared:
00025 8a 45 b8 mov al, BYTE PTR tv66[ebp]
; 74 : }
00028 5f pop edi
00029 5e pop esi
0002a 5b pop ebx
0002b 8b e5 mov esp, ebp
0002d 5d pop ebp
0002e c3 ret 0
?IsShared@CStringData@ATL@@QBE_NXZ ENDP ; ATL::CStringData::IsShared
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?IsLocked@CStringData@ATL@@QBE_NXZ
_TEXT SEGMENT
tv66 = -72 ; size = 4
_this$ = -4 ; size = 4
?IsLocked@CStringData@ATL@@QBE_NXZ PROC ; ATL::CStringData::IsLocked, COMDAT
; _this$ = ecx
; 68 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 69 : return nRefs < 0;
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 83 78 0c 00 cmp DWORD PTR [eax+12], 0
00013 7d 09 jge SHORT $LN3@IsLocked
00015 c7 45 b8 01 00
00 00 mov DWORD PTR tv66[ebp], 1
0001c eb 07 jmp SHORT $LN4@IsLocked
$LN3@IsLocked:
0001e c7 45 b8 00 00
00 00 mov DWORD PTR tv66[ebp], 0
$LN4@IsLocked:
00025 8a 45 b8 mov al, BYTE PTR tv66[ebp]
; 70 : }
00028 5f pop edi
00029 5e pop esi
0002a 5b pop ebx
0002b 8b e5 mov esp, ebp
0002d 5d pop ebp
0002e c3 ret 0
?IsLocked@CStringData@ATL@@QBE_NXZ ENDP ; ATL::CStringData::IsLocked
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlsimpstr.h
; COMDAT ?data@CStringData@ATL@@QAEPAXXZ
_TEXT SEGMENT
_this$ = -4 ; size = 4
?data@CStringData@ATL@@QAEPAXXZ PROC ; ATL::CStringData::data, COMDAT
; _this$ = ecx
; 58 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 59 : return (this+1);
0000c 8b 45 fc mov eax, DWORD PTR _this$[ebp]
0000f 83 c0 10 add eax, 16 ; 00000010H
; 60 : }
00012 5f pop edi
00013 5e pop esi
00014 5b pop ebx
00015 8b e5 mov esp, ebp
00017 5d pop ebp
00018 c3 ret 0
?data@CStringData@ATL@@QAEPAXXZ ENDP ; ATL::CStringData::data
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlcore.h
; COMDAT ?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z
_TEXT SEGMENT
_hResource$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_hInstance$ = 8 ; size = 4
_id$ = 12 ; size = 4
?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z PROC ; ATL::AtlGetStringResourceImage, COMDAT
; 370 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 371 : HRSRC hResource;
; 372 : /*
; 373 : The and operation (& static_cast<WORD>(~0)) protects the expression from being greater
; 374 : than WORD - this would cause a runtime error when the application is compiled with /RTCc flag.
; 375 : */
; 376 : hResource = ::FindResourceW(hInstance, MAKEINTRESOURCEW( (((id>>4)+1) & static_cast<WORD>(~0)) ), (LPWSTR) RT_STRING);
00028 6a 06 push 6
0002a 8b 45 0c mov eax, DWORD PTR _id$[ebp]
0002d c1 e8 04 shr eax, 4
00030 83 c0 01 add eax, 1
00033 25 ff ff 00 00 and eax, 65535 ; 0000ffffH
00038 0f b7 c8 movzx ecx, ax
0003b 51 push ecx
0003c 8b 55 08 mov edx, DWORD PTR _hInstance$[ebp]
0003f 52 push edx
00040 ff 15 00 00 00
00 call DWORD PTR __imp__FindResourceW@12
00046 89 45 f0 mov DWORD PTR _hResource$[ebp], eax
; 377 : if( hResource == NULL )
00049 83 7d f0 00 cmp DWORD PTR _hResource$[ebp], 0
0004d 75 04 jne SHORT $LN2@AtlGetStri
; 378 : {
; 379 : return( NULL );
0004f 33 c0 xor eax, eax
00051 eb 14 jmp SHORT $LN1@AtlGetStri
$LN2@AtlGetStri:
; 380 : }
; 381 :
; 382 : return _AtlGetStringResourceImage( hInstance, hResource, id );
00053 8b 45 0c mov eax, DWORD PTR _id$[ebp]
00056 50 push eax
00057 8b 4d f0 mov ecx, DWORD PTR _hResource$[ebp]
0005a 51 push ecx
0005b 8b 55 08 mov edx, DWORD PTR _hInstance$[ebp]
0005e 52 push edx
0005f e8 00 00 00 00 call ?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z ; ATL::_AtlGetStringResourceImage
00064 83 c4 0c add esp, 12 ; 0000000cH
$LN1@AtlGetStri:
; 383 : }
00067 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0006a 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00071 59 pop ecx
00072 5f pop edi
00073 5e pop esi
00074 5b pop ebx
00075 8b e5 mov esp, ebp
00077 5d pop ebp
00078 c3 ret 0
00079 cc int 3
0007a cc int 3
0007b cc int 3
0007c cc int 3
0007d cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a ac mov ecx, DWORD PTR [edx-84]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@I@Z ENDP ; ATL::AtlGetStringResourceImage
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlcore.h
; COMDAT ?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z
_TEXT SEGMENT
_iIndex$ = -32 ; size = 4
_hGlobal$ = -28 ; size = 4
_nResourceSize$ = -24 ; size = 4
_pImageEnd$ = -20 ; size = 4
_pImage$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_hInstance$ = 8 ; size = 4
_hResource$ = 12 ; size = 4
_id$ = 16 ; size = 4
?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z PROC ; ATL::_AtlGetStringResourceImage, COMDAT
; 327 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 54 sub esp, 84 ; 00000054H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 328 : const ATLSTRINGRESOURCEIMAGE* pImage;
; 329 : const ATLSTRINGRESOURCEIMAGE* pImageEnd;
; 330 : ULONG nResourceSize;
; 331 : HGLOBAL hGlobal;
; 332 : UINT iIndex;
; 333 :
; 334 : hGlobal = ::LoadResource( hInstance, hResource );
00028 8b 45 0c mov eax, DWORD PTR _hResource$[ebp]
0002b 50 push eax
0002c 8b 4d 08 mov ecx, DWORD PTR _hInstance$[ebp]
0002f 51 push ecx
00030 ff 15 00 00 00
00 call DWORD PTR __imp__LoadResource@8
00036 89 45 e4 mov DWORD PTR _hGlobal$[ebp], eax
; 335 : if( hGlobal == NULL )
00039 83 7d e4 00 cmp DWORD PTR _hGlobal$[ebp], 0
0003d 75 07 jne SHORT $LN4@AtlGetStri
; 336 : {
; 337 : return( NULL );
0003f 33 c0 xor eax, eax
00041 e9 80 00 00 00 jmp $LN1@AtlGetStri
$LN4@AtlGetStri:
; 338 : }
; 339 :
; 340 : pImage = (const ATLSTRINGRESOURCEIMAGE*)::LockResource( hGlobal );
00046 8b 45 e4 mov eax, DWORD PTR _hGlobal$[ebp]
00049 50 push eax
0004a ff 15 00 00 00
00 call DWORD PTR __imp__LockResource@4
00050 89 45 f0 mov DWORD PTR _pImage$[ebp], eax
; 341 : if( pImage == NULL )
00053 83 7d f0 00 cmp DWORD PTR _pImage$[ebp], 0
00057 75 04 jne SHORT $LN5@AtlGetStri
; 342 : {
; 343 : return( NULL );
00059 33 c0 xor eax, eax
0005b eb 69 jmp SHORT $LN1@AtlGetStri
$LN5@AtlGetStri:
; 344 : }
; 345 :
; 346 : nResourceSize = ::SizeofResource( hInstance, hResource );
0005d 8b 45 0c mov eax, DWORD PTR _hResource$[ebp]
00060 50 push eax
00061 8b 4d 08 mov ecx, DWORD PTR _hInstance$[ebp]
00064 51 push ecx
00065 ff 15 00 00 00
00 call DWORD PTR __imp__SizeofResource@8
0006b 89 45 e8 mov DWORD PTR _nResourceSize$[ebp], eax
; 347 : pImageEnd = (const ATLSTRINGRESOURCEIMAGE*)(LPBYTE( pImage )+nResourceSize);
0006e 8b 45 f0 mov eax, DWORD PTR _pImage$[ebp]
00071 03 45 e8 add eax, DWORD PTR _nResourceSize$[ebp]
00074 89 45 ec mov DWORD PTR _pImageEnd$[ebp], eax
; 348 : iIndex = id&0x000f;
00077 8b 45 10 mov eax, DWORD PTR _id$[ebp]
0007a 83 e0 0f and eax, 15 ; 0000000fH
0007d 89 45 e0 mov DWORD PTR _iIndex$[ebp], eax
$LN2@AtlGetStri:
; 349 :
; 350 : while( (iIndex > 0) && (pImage < pImageEnd) )
00080 83 7d e0 00 cmp DWORD PTR _iIndex$[ebp], 0
00084 76 23 jbe SHORT $LN3@AtlGetStri
00086 8b 45 f0 mov eax, DWORD PTR _pImage$[ebp]
00089 3b 45 ec cmp eax, DWORD PTR _pImageEnd$[ebp]
0008c 73 1b jae SHORT $LN3@AtlGetStri
; 351 : {
; 352 : pImage = (const ATLSTRINGRESOURCEIMAGE*)(LPBYTE( pImage )+(sizeof( ATLSTRINGRESOURCEIMAGE )+(pImage->nLength*sizeof( WCHAR ))));
0008e 8b 45 f0 mov eax, DWORD PTR _pImage$[ebp]
00091 0f b7 08 movzx ecx, WORD PTR [eax]
00094 8b 55 f0 mov edx, DWORD PTR _pImage$[ebp]
00097 8d 44 4a 02 lea eax, DWORD PTR [edx+ecx*2+2]
0009b 89 45 f0 mov DWORD PTR _pImage$[ebp], eax
; 353 : iIndex--;
0009e 8b 45 e0 mov eax, DWORD PTR _iIndex$[ebp]
000a1 83 e8 01 sub eax, 1
000a4 89 45 e0 mov DWORD PTR _iIndex$[ebp], eax
; 354 : }
000a7 eb d7 jmp SHORT $LN2@AtlGetStri
$LN3@AtlGetStri:
; 355 : if( pImage >= pImageEnd )
000a9 8b 45 f0 mov eax, DWORD PTR _pImage$[ebp]
000ac 3b 45 ec cmp eax, DWORD PTR _pImageEnd$[ebp]
000af 72 04 jb SHORT $LN6@AtlGetStri
; 356 : {
; 357 : return( NULL );
000b1 33 c0 xor eax, eax
000b3 eb 11 jmp SHORT $LN1@AtlGetStri
$LN6@AtlGetStri:
; 358 : }
; 359 : if( pImage->nLength == 0 )
000b5 8b 45 f0 mov eax, DWORD PTR _pImage$[ebp]
000b8 0f b7 08 movzx ecx, WORD PTR [eax]
000bb 85 c9 test ecx, ecx
000bd 75 04 jne SHORT $LN7@AtlGetStri
; 360 : {
; 361 : return( NULL );
000bf 33 c0 xor eax, eax
000c1 eb 03 jmp SHORT $LN1@AtlGetStri
$LN7@AtlGetStri:
; 362 : }
; 363 :
; 364 : return( pImage );
000c3 8b 45 f0 mov eax, DWORD PTR _pImage$[ebp]
$LN1@AtlGetStri:
; 365 : }
000c6 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
000c9 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
000d0 59 pop ecx
000d1 5f pop edi
000d2 5e pop esi
000d3 5b pop ebx
000d4 8b e5 mov esp, ebp
000d6 5d pop ebp
000d7 c3 ret 0
000d8 cc int 3
000d9 cc int 3
000da cc int 3
000db cc int 3
000dc cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a 9c mov ecx, DWORD PTR [edx-100]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?_AtlGetStringResourceImage@ATL@@YAPBUATLSTRINGRESOURCEIMAGE@1@PAUHINSTANCE__@@PAUHRSRC__@@I@Z ENDP ; ATL::_AtlGetStringResourceImage
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlcore.h
; COMDAT ?AtlStrLen@ATL@@YAHPB_W@Z
_TEXT SEGMENT
_str$ = 8 ; size = 4
?AtlStrLen@ATL@@YAHPB_W@Z PROC ; ATL::AtlStrLen, COMDAT
; 60 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 61 : if (str == NULL)
00009 83 7d 08 00 cmp DWORD PTR _str$[ebp], 0
0000d 75 04 jne SHORT $LN2@AtlStrLen
; 62 : return 0;
0000f 33 c0 xor eax, eax
00011 eb 0c jmp SHORT $LN1@AtlStrLen
$LN2@AtlStrLen:
; 63 : return static_cast<int>(::wcslen(str));
00013 8b 45 08 mov eax, DWORD PTR _str$[ebp]
00016 50 push eax
00017 e8 00 00 00 00 call _wcslen
0001c 83 c4 04 add esp, 4
$LN1@AtlStrLen:
; 64 : }
0001f 5f pop edi
00020 5e pop esi
00021 5b pop ebx
00022 8b e5 mov esp, ebp
00024 5d pop ebp
00025 c3 ret 0
?AtlStrLen@ATL@@YAHPB_W@Z ENDP ; ATL::AtlStrLen
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlchecked.h
; COMDAT ?wmemcpy_s@Checked@ATL@@YAXPA_WIPB_WI@Z
_TEXT SEGMENT
__S1$ = 8 ; size = 4
__N1$ = 12 ; size = 4
__S2$ = 16 ; size = 4
__N$ = 20 ; size = 4
?wmemcpy_s@Checked@ATL@@YAXPA_WIPB_WI@Z PROC ; ATL::Checked::wmemcpy_s, COMDAT
; 77 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 78 : ATLMFC_CRT_ERRORCHECK(::wmemcpy_s(_S1, _N1, _S2, _N));
00009 8b 45 14 mov eax, DWORD PTR __N$[ebp]
0000c 50 push eax
0000d 8b 4d 10 mov ecx, DWORD PTR __S2$[ebp]
00010 51 push ecx
00011 8b 55 0c mov edx, DWORD PTR __N1$[ebp]
00014 52 push edx
00015 8b 45 08 mov eax, DWORD PTR __S1$[ebp]
00018 50 push eax
00019 e8 00 00 00 00 call _wmemcpy_s
0001e 83 c4 10 add esp, 16 ; 00000010H
00021 50 push eax
00022 e8 00 00 00 00 call ?AfxCrtErrorCheck@@YAHH@Z ; AfxCrtErrorCheck
00027 83 c4 04 add esp, 4
; 79 : }
0002a 5f pop edi
0002b 5e pop esi
0002c 5b pop ebx
0002d 8b e5 mov esp, ebp
0002f 5d pop ebp
00030 c3 ret 0
?wmemcpy_s@Checked@ATL@@YAXPA_WIPB_WI@Z ENDP ; ATL::Checked::wmemcpy_s
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlconv.h
; COMDAT ?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z
_TEXT SEGMENT
_ret$ = -16 ; size = 4
__$EHRec$ = -12 ; size = 12
_lpw$ = 8 ; size = 4
_lpa$ = 12 ; size = 4
_nChars$ = 16 ; size = 4
_acp$ = 20 ; size = 4
?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z PROC ; AtlA2WHelper, COMDAT
; 563 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 6a ff push -1
00005 68 00 00 00 00 push __ehhandler$?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z
0000a 64 a1 00 00 00
00 mov eax, DWORD PTR fs:0
00010 50 push eax
00011 83 ec 44 sub esp, 68 ; 00000044H
00014 53 push ebx
00015 56 push esi
00016 57 push edi
00017 a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
0001c 33 c5 xor eax, ebp
0001e 50 push eax
0001f 8d 45 f4 lea eax, DWORD PTR __$EHRec$[ebp]
00022 64 a3 00 00 00
00 mov DWORD PTR fs:0, eax
; 564 : ATLASSERT(lpa != NULL);
; 565 : ATLASSERT(lpw != NULL);
; 566 : if (lpw == NULL || lpa == NULL)
00028 83 7d 08 00 cmp DWORD PTR _lpw$[ebp], 0
0002c 74 06 je SHORT $LN3@AtlA2WHelp
0002e 83 7d 0c 00 cmp DWORD PTR _lpa$[ebp], 0
00032 75 04 jne SHORT $LN2@AtlA2WHelp
$LN3@AtlA2WHelp:
; 567 : return NULL;
00034 33 c0 xor eax, eax
00036 eb 32 jmp SHORT $LN1@AtlA2WHelp
$LN2@AtlA2WHelp:
; 568 : // verify that no illegal character present
; 569 : // since lpw was allocated based on the size of lpa
; 570 : // don't worry about the number of chars
; 571 : *lpw = '\0';
00038 33 c0 xor eax, eax
0003a 8b 4d 08 mov ecx, DWORD PTR _lpw$[ebp]
0003d 66 89 01 mov WORD PTR [ecx], ax
; 572 : int ret = MultiByteToWideChar(acp, 0, lpa, -1, lpw, nChars);
00040 8b 45 10 mov eax, DWORD PTR _nChars$[ebp]
00043 50 push eax
00044 8b 4d 08 mov ecx, DWORD PTR _lpw$[ebp]
00047 51 push ecx
00048 6a ff push -1
0004a 8b 55 0c mov edx, DWORD PTR _lpa$[ebp]
0004d 52 push edx
0004e 6a 00 push 0
00050 8b 45 14 mov eax, DWORD PTR _acp$[ebp]
00053 50 push eax
00054 ff 15 00 00 00
00 call DWORD PTR __imp__MultiByteToWideChar@24
0005a 89 45 f0 mov DWORD PTR _ret$[ebp], eax
; 573 : if(ret == 0)
0005d 83 7d f0 00 cmp DWORD PTR _ret$[ebp], 0
00061 75 04 jne SHORT $LN4@AtlA2WHelp
; 574 : {
; 575 : ATLASSERT(FALSE);
; 576 : return NULL;
00063 33 c0 xor eax, eax
00065 eb 03 jmp SHORT $LN1@AtlA2WHelp
$LN4@AtlA2WHelp:
; 577 : }
; 578 : return lpw;
00067 8b 45 08 mov eax, DWORD PTR _lpw$[ebp]
$LN1@AtlA2WHelp:
; 579 : }
0006a 8b 4d f4 mov ecx, DWORD PTR __$EHRec$[ebp]
0006d 64 89 0d 00 00
00 00 mov DWORD PTR fs:0, ecx
00074 59 pop ecx
00075 5f pop edi
00076 5e pop esi
00077 5b pop ebx
00078 8b e5 mov esp, ebp
0007a 5d pop ebp
0007b c2 10 00 ret 16 ; 00000010H
0007e cc int 3
0007f cc int 3
00080 cc int 3
00081 cc int 3
00082 cc int 3
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z:
00000 90 npad 1
00001 90 npad 1
00002 8b 54 24 08 mov edx, DWORD PTR [esp+8]
00006 8d 42 0c lea eax, DWORD PTR [edx+12]
00009 8b 4a ac mov ecx, DWORD PTR [edx-84]
0000c 33 c8 xor ecx, eax
0000e e8 00 00 00 00 call @__security_check_cookie@4
00013 b8 00 00 00 00 mov eax, OFFSET __ehfuncinfo$?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z
00018 e9 00 00 00 00 jmp ___CxxFrameHandler3
text$x ENDS
?AtlA2WHelper@@YGPA_WPA_WPBDHI@Z ENDP ; AtlA2WHelper
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlconv.h
; COMDAT ?_AtlGetConversionACP@ATL@@YGIXZ
_TEXT SEGMENT
?_AtlGetConversionACP@ATL@@YGIXZ PROC ; ATL::_AtlGetConversionACP, COMDAT
; 98 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 99 : #ifdef _CONVERSION_DONT_USE_THREAD_LOCALE
; 100 : return CP_ACP;
; 101 : #else
; 102 : return CP_THREAD_ACP;
00009 b8 03 00 00 00 mov eax, 3
; 103 : #endif
; 104 : }
0000e 5f pop edi
0000f 5e pop esi
00010 5b pop ebx
00011 8b e5 mov esp, ebp
00013 5d pop ebp
00014 c3 ret 0
?_AtlGetConversionACP@ATL@@YGIXZ ENDP ; ATL::_AtlGetConversionACP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\atlexcept.h
; COMDAT ?AtlThrowImpl@ATL@@YGXJ@Z
_TEXT SEGMENT
_hr$ = 8 ; size = 4
?AtlThrowImpl@ATL@@YGXJ@Z PROC ; ATL::AtlThrowImpl, COMDAT
; 65 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 66 : ATLTRACE(atlTraceException, 0, _T("AtlThrow: hr = 0x%x\n"), hr );
; 67 : #ifdef _AFX
; 68 : if( hr == E_OUTOFMEMORY )
00009 81 7d 08 0e 00
07 80 cmp DWORD PTR _hr$[ebp], -2147024882 ; 8007000eH
00010 75 07 jne SHORT $LN2@AtlThrowIm
; 69 : {
; 70 : AfxThrowMemoryException();
00012 e8 00 00 00 00 call ?AfxThrowMemoryException@@YGXXZ ; AfxThrowMemoryException
; 71 : }
00017 eb 09 jmp SHORT $LN4@AtlThrowIm
$LN2@AtlThrowIm:
; 72 : else
; 73 : {
; 74 : AfxThrowOleException( hr );
00019 8b 45 08 mov eax, DWORD PTR _hr$[ebp]
0001c 50 push eax
0001d e8 00 00 00 00 call ?AfxThrowOleException@@YGXJ@Z ; AfxThrowOleException
$LN4@AtlThrowIm:
; 75 : }
; 76 : #else
; 77 : throw CAtlException( hr );
; 78 : #endif
; 79 : };
00022 5f pop edi
00023 5e pop esi
00024 5b pop ebx
00025 8b e5 mov esp, ebp
00027 5d pop ebp
00028 c2 04 00 ret 4
?AtlThrowImpl@ATL@@YGXJ@Z ENDP ; ATL::AtlThrowImpl
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\afx.h
; COMDAT ?AfxCrtErrorCheck@@YAHH@Z
_TEXT SEGMENT
tv64 = -68 ; size = 4
_error$ = 8 ; size = 4
?AfxCrtErrorCheck@@YAHH@Z PROC ; AfxCrtErrorCheck, COMDAT
; 506 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 507 : switch(error)
00009 8b 45 08 mov eax, DWORD PTR _error$[ebp]
0000c 89 45 bc mov DWORD PTR tv64[ebp], eax
0000f 83 7d bc 50 cmp DWORD PTR tv64[ebp], 80 ; 00000050H
00013 77 21 ja SHORT $LN9@AfxCrtErro
00015 8b 4d bc mov ecx, DWORD PTR tv64[ebp]
00018 0f b6 91 00 00
00 00 movzx edx, BYTE PTR $LN11@AfxCrtErro[ecx]
0001f ff 24 95 00 00
00 00 jmp DWORD PTR $LN12@AfxCrtErro[edx*4]
$LN4@AfxCrtErro:
; 508 : {
; 509 : case ENOMEM:
; 510 : AfxThrowMemoryException();
00026 e8 00 00 00 00 call ?AfxThrowMemoryException@@YGXXZ ; AfxThrowMemoryException
; 511 : break;
0002b eb 0e jmp SHORT $LN2@AfxCrtErro
$LN6@AfxCrtErro:
; 512 : case EINVAL:
; 513 : case ERANGE:
; 514 : AfxThrowInvalidArgException();
0002d e8 00 00 00 00 call ?AfxThrowInvalidArgException@@YGXXZ ; AfxThrowInvalidArgException
; 515 : break;
00032 eb 07 jmp SHORT $LN2@AfxCrtErro
$LN8@AfxCrtErro:
; 516 : case STRUNCATE:
; 517 : case 0:
; 518 : break;
00034 eb 05 jmp SHORT $LN2@AfxCrtErro
$LN9@AfxCrtErro:
; 519 : default:
; 520 : AfxThrowInvalidArgException();
00036 e8 00 00 00 00 call ?AfxThrowInvalidArgException@@YGXXZ ; AfxThrowInvalidArgException
$LN2@AfxCrtErro:
; 521 : break;
; 522 : }
; 523 : return error;
0003b 8b 45 08 mov eax, DWORD PTR _error$[ebp]
$LN10@AfxCrtErro:
; 524 : }
0003e 5f pop edi
0003f 5e pop esi
00040 5b pop ebx
00041 8b e5 mov esp, ebp
00043 5d pop ebp
00044 c3 ret 0
00045 0f 1f 00 npad 3
$LN12@AfxCrtErro:
00048 00 00 00 00 DD $LN8@AfxCrtErro
0004c 00 00 00 00 DD $LN4@AfxCrtErro
00050 00 00 00 00 DD $LN6@AfxCrtErro
00054 00 00 00 00 DD $LN9@AfxCrtErro
$LN11@AfxCrtErro:
00058 00 DB 0
00059 03 DB 3
0005a 03 DB 3
0005b 03 DB 3
0005c 03 DB 3
0005d 03 DB 3
0005e 03 DB 3
0005f 03 DB 3
00060 03 DB 3
00061 03 DB 3
00062 03 DB 3
00063 03 DB 3
00064 01 DB 1
00065 03 DB 3
00066 03 DB 3
00067 03 DB 3
00068 03 DB 3
00069 03 DB 3
0006a 03 DB 3
0006b 03 DB 3
0006c 03 DB 3
0006d 03 DB 3
0006e 02 DB 2
0006f 03 DB 3
00070 03 DB 3
00071 03 DB 3
00072 03 DB 3
00073 03 DB 3
00074 03 DB 3
00075 03 DB 3
00076 03 DB 3
00077 03 DB 3
00078 03 DB 3
00079 03 DB 3
0007a 02 DB 2
0007b 03 DB 3
0007c 03 DB 3
0007d 03 DB 3
0007e 03 DB 3
0007f 03 DB 3
00080 03 DB 3
00081 03 DB 3
00082 03 DB 3
00083 03 DB 3
00084 03 DB 3
00085 03 DB 3
00086 03 DB 3
00087 03 DB 3
00088 03 DB 3
00089 03 DB 3
0008a 03 DB 3
0008b 03 DB 3
0008c 03 DB 3
0008d 03 DB 3
0008e 03 DB 3
0008f 03 DB 3
00090 03 DB 3
00091 03 DB 3
00092 03 DB 3
00093 03 DB 3
00094 03 DB 3
00095 03 DB 3
00096 03 DB 3
00097 03 DB 3
00098 03 DB 3
00099 03 DB 3
0009a 03 DB 3
0009b 03 DB 3
0009c 03 DB 3
0009d 03 DB 3
0009e 03 DB 3
0009f 03 DB 3
000a0 03 DB 3
000a1 03 DB 3
000a2 03 DB 3
000a3 03 DB 3
000a4 03 DB 3
000a5 03 DB 3
000a6 03 DB 3
000a7 03 DB 3
000a8 00 DB 0
?AfxCrtErrorCheck@@YAHH@Z ENDP ; AfxCrtErrorCheck
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_memcpy_s.h
; COMDAT _memmove_s
_TEXT SEGMENT
tv74 = -80 ; size = 4
tv70 = -80 ; size = 4
tv66 = -80 ; size = 4
__Expr_val$1 = -12 ; size = 4
__Expr_val$2 = -8 ; size = 4
__Expr_val$3 = -4 ; size = 4
__Destination$ = 8 ; size = 4
__DestinationSize$ = 12 ; size = 4
__Source$ = 16 ; size = 4
__SourceSize$ = 20 ; size = 4
_memmove_s PROC ; COMDAT
; 73 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 50 sub esp, 80 ; 00000050H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 74 : if (_SourceSize == 0)
00009 83 7d 14 00 cmp DWORD PTR __SourceSize$[ebp], 0
0000d 75 07 jne SHORT $LN2@memmove_s
; 75 : {
; 76 : return 0;
0000f 33 c0 xor eax, eax
00011 e9 c6 00 00 00 jmp $LN1@memmove_s
$LN2@memmove_s:
; 77 : }
; 78 :
; 79 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Destination != NULL, EINVAL);
00016 83 7d 08 00 cmp DWORD PTR __Destination$[ebp], 0
0001a 74 09 je SHORT $LN7@memmove_s
0001c c7 45 b0 01 00
00 00 mov DWORD PTR tv66[ebp], 1
00023 eb 07 jmp SHORT $LN8@memmove_s
$LN7@memmove_s:
00025 c7 45 b0 00 00
00 00 mov DWORD PTR tv66[ebp], 0
$LN8@memmove_s:
0002c 8b 45 b0 mov eax, DWORD PTR tv66[ebp]
0002f 89 45 fc mov DWORD PTR __Expr_val$3[ebp], eax
00032 83 7d fc 00 cmp DWORD PTR __Expr_val$3[ebp], 0
00036 75 1a jne SHORT $LN3@memmove_s
00038 e8 00 00 00 00 call __errno
0003d c7 00 16 00 00
00 mov DWORD PTR [eax], 22 ; 00000016H
00043 e8 00 00 00 00 call __invalid_parameter_noinfo
00048 b8 16 00 00 00 mov eax, 22 ; 00000016H
0004d e9 8a 00 00 00 jmp $LN1@memmove_s
$LN3@memmove_s:
; 80 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Source != NULL, EINVAL);
00052 83 7d 10 00 cmp DWORD PTR __Source$[ebp], 0
00056 74 09 je SHORT $LN9@memmove_s
00058 c7 45 b0 01 00
00 00 mov DWORD PTR tv70[ebp], 1
0005f eb 07 jmp SHORT $LN10@memmove_s
$LN9@memmove_s:
00061 c7 45 b0 00 00
00 00 mov DWORD PTR tv70[ebp], 0
$LN10@memmove_s:
00068 8b 45 b0 mov eax, DWORD PTR tv70[ebp]
0006b 89 45 f8 mov DWORD PTR __Expr_val$2[ebp], eax
0006e 83 7d f8 00 cmp DWORD PTR __Expr_val$2[ebp], 0
00072 75 17 jne SHORT $LN4@memmove_s
00074 e8 00 00 00 00 call __errno
00079 c7 00 16 00 00
00 mov DWORD PTR [eax], 22 ; 00000016H
0007f e8 00 00 00 00 call __invalid_parameter_noinfo
00084 b8 16 00 00 00 mov eax, 22 ; 00000016H
00089 eb 51 jmp SHORT $LN1@memmove_s
$LN4@memmove_s:
; 81 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_DestinationSize >= _SourceSize, ERANGE);
0008b 8b 45 0c mov eax, DWORD PTR __DestinationSize$[ebp]
0008e 3b 45 14 cmp eax, DWORD PTR __SourceSize$[ebp]
00091 72 09 jb SHORT $LN11@memmove_s
00093 c7 45 b0 01 00
00 00 mov DWORD PTR tv74[ebp], 1
0009a eb 07 jmp SHORT $LN12@memmove_s
$LN11@memmove_s:
0009c c7 45 b0 00 00
00 00 mov DWORD PTR tv74[ebp], 0
$LN12@memmove_s:
000a3 8b 4d b0 mov ecx, DWORD PTR tv74[ebp]
000a6 89 4d f4 mov DWORD PTR __Expr_val$1[ebp], ecx
000a9 83 7d f4 00 cmp DWORD PTR __Expr_val$1[ebp], 0
000ad 75 17 jne SHORT $LN5@memmove_s
000af e8 00 00 00 00 call __errno
000b4 c7 00 22 00 00
00 mov DWORD PTR [eax], 34 ; 00000022H
000ba e8 00 00 00 00 call __invalid_parameter_noinfo
000bf b8 22 00 00 00 mov eax, 34 ; 00000022H
000c4 eb 16 jmp SHORT $LN1@memmove_s
$LN5@memmove_s:
; 82 :
; 83 : memmove(_Destination, _Source, _SourceSize);
000c6 8b 45 14 mov eax, DWORD PTR __SourceSize$[ebp]
000c9 50 push eax
000ca 8b 4d 10 mov ecx, DWORD PTR __Source$[ebp]
000cd 51 push ecx
000ce 8b 55 08 mov edx, DWORD PTR __Destination$[ebp]
000d1 52 push edx
000d2 e8 00 00 00 00 call _memmove
000d7 83 c4 0c add esp, 12 ; 0000000cH
; 84 : return 0;
000da 33 c0 xor eax, eax
$LN1@memmove_s:
; 85 : }
000dc 5f pop edi
000dd 5e pop esi
000de 5b pop ebx
000df 8b e5 mov esp, ebp
000e1 5d pop ebp
000e2 c3 ret 0
_memmove_s ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_memcpy_s.h
; COMDAT _memcpy_s
_TEXT SEGMENT
tv79 = -80 ; size = 4
tv75 = -80 ; size = 4
tv66 = -80 ; size = 4
__Expr_val$1 = -12 ; size = 4
__Expr_val$2 = -8 ; size = 4
__Expr_val$3 = -4 ; size = 4
__Destination$ = 8 ; size = 4
__DestinationSize$ = 12 ; size = 4
__Source$ = 16 ; size = 4
__SourceSize$ = 20 ; size = 4
_memcpy_s PROC ; COMDAT
; 45 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 50 sub esp, 80 ; 00000050H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 46 : if (_SourceSize == 0)
00009 83 7d 14 00 cmp DWORD PTR __SourceSize$[ebp], 0
0000d 75 07 jne SHORT $LN2@memcpy_s
; 47 : {
; 48 : return 0;
0000f 33 c0 xor eax, eax
00011 e9 f1 00 00 00 jmp $LN1@memcpy_s
$LN2@memcpy_s:
; 49 : }
; 50 :
; 51 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Destination != NULL, EINVAL);
00016 83 7d 08 00 cmp DWORD PTR __Destination$[ebp], 0
0001a 74 09 je SHORT $LN9@memcpy_s
0001c c7 45 b0 01 00
00 00 mov DWORD PTR tv66[ebp], 1
00023 eb 07 jmp SHORT $LN10@memcpy_s
$LN9@memcpy_s:
00025 c7 45 b0 00 00
00 00 mov DWORD PTR tv66[ebp], 0
$LN10@memcpy_s:
0002c 8b 45 b0 mov eax, DWORD PTR tv66[ebp]
0002f 89 45 fc mov DWORD PTR __Expr_val$3[ebp], eax
00032 83 7d fc 00 cmp DWORD PTR __Expr_val$3[ebp], 0
00036 75 1a jne SHORT $LN3@memcpy_s
00038 e8 00 00 00 00 call __errno
0003d c7 00 16 00 00
00 mov DWORD PTR [eax], 22 ; 00000016H
00043 e8 00 00 00 00 call __invalid_parameter_noinfo
00048 b8 16 00 00 00 mov eax, 22 ; 00000016H
0004d e9 b5 00 00 00 jmp $LN1@memcpy_s
$LN3@memcpy_s:
; 52 : if (_Source == NULL || _DestinationSize < _SourceSize)
00052 83 7d 10 00 cmp DWORD PTR __Source$[ebp], 0
00056 74 0c je SHORT $LN5@memcpy_s
00058 8b 45 0c mov eax, DWORD PTR __DestinationSize$[ebp]
0005b 3b 45 14 cmp eax, DWORD PTR __SourceSize$[ebp]
0005e 0f 83 8d 00 00
00 jae $LN4@memcpy_s
$LN5@memcpy_s:
; 53 : {
; 54 : memset(_Destination, 0, _DestinationSize);
00064 8b 45 0c mov eax, DWORD PTR __DestinationSize$[ebp]
00067 50 push eax
00068 6a 00 push 0
0006a 8b 4d 08 mov ecx, DWORD PTR __Destination$[ebp]
0006d 51 push ecx
0006e e8 00 00 00 00 call _memset
00073 83 c4 0c add esp, 12 ; 0000000cH
; 55 :
; 56 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Source != NULL, EINVAL);
00076 83 7d 10 00 cmp DWORD PTR __Source$[ebp], 0
0007a 74 09 je SHORT $LN11@memcpy_s
0007c c7 45 b0 01 00
00 00 mov DWORD PTR tv75[ebp], 1
00083 eb 07 jmp SHORT $LN12@memcpy_s
$LN11@memcpy_s:
00085 c7 45 b0 00 00
00 00 mov DWORD PTR tv75[ebp], 0
$LN12@memcpy_s:
0008c 8b 45 b0 mov eax, DWORD PTR tv75[ebp]
0008f 89 45 f8 mov DWORD PTR __Expr_val$2[ebp], eax
00092 83 7d f8 00 cmp DWORD PTR __Expr_val$2[ebp], 0
00096 75 17 jne SHORT $LN6@memcpy_s
00098 e8 00 00 00 00 call __errno
0009d c7 00 16 00 00
00 mov DWORD PTR [eax], 22 ; 00000016H
000a3 e8 00 00 00 00 call __invalid_parameter_noinfo
000a8 b8 16 00 00 00 mov eax, 22 ; 00000016H
000ad eb 58 jmp SHORT $LN1@memcpy_s
$LN6@memcpy_s:
; 57 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_DestinationSize >= _SourceSize, ERANGE);
000af 8b 45 0c mov eax, DWORD PTR __DestinationSize$[ebp]
000b2 3b 45 14 cmp eax, DWORD PTR __SourceSize$[ebp]
000b5 72 09 jb SHORT $LN13@memcpy_s
000b7 c7 45 b0 01 00
00 00 mov DWORD PTR tv79[ebp], 1
000be eb 07 jmp SHORT $LN14@memcpy_s
$LN13@memcpy_s:
000c0 c7 45 b0 00 00
00 00 mov DWORD PTR tv79[ebp], 0
$LN14@memcpy_s:
000c7 8b 4d b0 mov ecx, DWORD PTR tv79[ebp]
000ca 89 4d f4 mov DWORD PTR __Expr_val$1[ebp], ecx
000cd 83 7d f4 00 cmp DWORD PTR __Expr_val$1[ebp], 0
000d1 75 17 jne SHORT $LN7@memcpy_s
000d3 e8 00 00 00 00 call __errno
000d8 c7 00 22 00 00
00 mov DWORD PTR [eax], 34 ; 00000022H
000de e8 00 00 00 00 call __invalid_parameter_noinfo
000e3 b8 22 00 00 00 mov eax, 34 ; 00000022H
000e8 eb 1d jmp SHORT $LN1@memcpy_s
$LN7@memcpy_s:
; 58 :
; 59 : // Unreachable, but required to suppress /analyze warnings:
; 60 : return EINVAL;
000ea b8 16 00 00 00 mov eax, 22 ; 00000016H
000ef eb 16 jmp SHORT $LN1@memcpy_s
$LN4@memcpy_s:
; 61 : }
; 62 : memcpy(_Destination, _Source, _SourceSize);
000f1 8b 45 14 mov eax, DWORD PTR __SourceSize$[ebp]
000f4 50 push eax
000f5 8b 4d 10 mov ecx, DWORD PTR __Source$[ebp]
000f8 51 push ecx
000f9 8b 55 08 mov edx, DWORD PTR __Destination$[ebp]
000fc 52 push edx
000fd e8 00 00 00 00 call _memcpy
00102 83 c4 0c add esp, 12 ; 0000000cH
; 63 : return 0;
00105 33 c0 xor eax, eax
$LN1@memcpy_s:
; 64 : }
00107 5f pop edi
00108 5e pop esi
00109 5b pop ebx
0010a 8b e5 mov esp, ebp
0010c 5d pop ebp
0010d c3 ret 0
_memcpy_s ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_wstdio.h
; COMDAT __swprintf
_TEXT SEGMENT
__ArgList$ = -8 ; size = 4
__Result$ = -4 ; size = 4
__Buffer$ = 8 ; size = 4
__Format$ = 12 ; size = 4
__swprintf PROC ; COMDAT
; 1445 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 4c sub esp, 76 ; 0000004cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 1446 : int _Result;
; 1447 : va_list _ArgList;
; 1448 : __crt_va_start(_ArgList, _Format);
00009 8d 45 10 lea eax, DWORD PTR __Format$[ebp+4]
0000c 89 45 f8 mov DWORD PTR __ArgList$[ebp], eax
; 1449 : _Result = __vswprintf_l(_Buffer, _Format, NULL, _ArgList);
0000f 8b 45 f8 mov eax, DWORD PTR __ArgList$[ebp]
00012 50 push eax
00013 6a 00 push 0
00015 8b 4d 0c mov ecx, DWORD PTR __Format$[ebp]
00018 51 push ecx
00019 8b 55 08 mov edx, DWORD PTR __Buffer$[ebp]
0001c 52 push edx
0001d e8 00 00 00 00 call ___vswprintf_l
00022 83 c4 10 add esp, 16 ; 00000010H
00025 89 45 fc mov DWORD PTR __Result$[ebp], eax
; 1450 : __crt_va_end(_ArgList);
00028 c7 45 f8 00 00
00 00 mov DWORD PTR __ArgList$[ebp], 0
; 1451 : return _Result;
0002f 8b 45 fc mov eax, DWORD PTR __Result$[ebp]
; 1452 : }
00032 5f pop edi
00033 5e pop esi
00034 5b pop ebx
00035 8b e5 mov esp, ebp
00037 5d pop ebp
00038 c3 ret 0
__swprintf ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_wstdio.h
; COMDAT ___vswprintf_l
_TEXT SEGMENT
__Buffer$ = 8 ; size = 4
__Format$ = 12 ; size = 4
__Locale$ = 16 ; size = 4
__ArgList$ = 20 ; size = 4
___vswprintf_l PROC ; COMDAT
; 1208 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 1209 : return _vswprintf_l(_Buffer, (size_t)-1, _Format, _Locale, _ArgList);
00009 8b 45 14 mov eax, DWORD PTR __ArgList$[ebp]
0000c 50 push eax
0000d 8b 4d 10 mov ecx, DWORD PTR __Locale$[ebp]
00010 51 push ecx
00011 8b 55 0c mov edx, DWORD PTR __Format$[ebp]
00014 52 push edx
00015 6a ff push -1
00017 8b 45 08 mov eax, DWORD PTR __Buffer$[ebp]
0001a 50 push eax
0001b e8 00 00 00 00 call __vswprintf_l
00020 83 c4 14 add esp, 20 ; 00000014H
; 1210 : }
00023 5f pop edi
00024 5e pop esi
00025 5b pop ebx
00026 8b e5 mov esp, ebp
00028 5d pop ebp
00029 c3 ret 0
___vswprintf_l ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_wstdio.h
; COMDAT __vswprintf_l
_TEXT SEGMENT
__Buffer$ = 8 ; size = 4
__BufferCount$ = 12 ; size = 4
__Format$ = 16 ; size = 4
__Locale$ = 20 ; size = 4
__ArgList$ = 24 ; size = 4
__vswprintf_l PROC ; COMDAT
; 1192 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 1193 : return _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);
00009 8b 45 18 mov eax, DWORD PTR __ArgList$[ebp]
0000c 50 push eax
0000d 8b 4d 14 mov ecx, DWORD PTR __Locale$[ebp]
00010 51 push ecx
00011 8b 55 10 mov edx, DWORD PTR __Format$[ebp]
00014 52 push edx
00015 8b 45 0c mov eax, DWORD PTR __BufferCount$[ebp]
00018 50 push eax
00019 8b 4d 08 mov ecx, DWORD PTR __Buffer$[ebp]
0001c 51 push ecx
0001d e8 00 00 00 00 call __vswprintf_c_l
00022 83 c4 14 add esp, 20 ; 00000014H
; 1194 : }
00025 5f pop edi
00026 5e pop esi
00027 5b pop ebx
00028 8b e5 mov esp, ebp
0002a 5d pop ebp
0002b c3 ret 0
__vswprintf_l ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_wstdio.h
; COMDAT __vswprintf_c_l
_TEXT SEGMENT
tv73 = -72 ; size = 4
__Result$ = -4 ; size = 4
__Buffer$ = 8 ; size = 4
__BufferCount$ = 12 ; size = 4
__Format$ = 16 ; size = 4
__Locale$ = 20 ; size = 4
__ArgList$ = 24 ; size = 4
__vswprintf_c_l PROC ; COMDAT
; 1155 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 1156 : int const _Result = __stdio_common_vswprintf(
00009 8b 45 18 mov eax, DWORD PTR __ArgList$[ebp]
0000c 50 push eax
0000d 8b 4d 14 mov ecx, DWORD PTR __Locale$[ebp]
00010 51 push ecx
00011 8b 55 10 mov edx, DWORD PTR __Format$[ebp]
00014 52 push edx
00015 8b 45 0c mov eax, DWORD PTR __BufferCount$[ebp]
00018 50 push eax
00019 8b 4d 08 mov ecx, DWORD PTR __Buffer$[ebp]
0001c 51 push ecx
0001d e8 00 00 00 00 call ___local_stdio_printf_options
00022 8b 50 04 mov edx, DWORD PTR [eax+4]
00025 52 push edx
00026 8b 00 mov eax, DWORD PTR [eax]
00028 50 push eax
00029 e8 00 00 00 00 call ___stdio_common_vswprintf
0002e 83 c4 1c add esp, 28 ; 0000001cH
00031 89 45 fc mov DWORD PTR __Result$[ebp], eax
; 1157 : _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS,
; 1158 : _Buffer, _BufferCount, _Format, _Locale, _ArgList);
; 1159 :
; 1160 : return _Result < 0 ? -1 : _Result;
00034 83 7d fc 00 cmp DWORD PTR __Result$[ebp], 0
00038 7d 09 jge SHORT $LN3@vswprintf_
0003a c7 45 b8 ff ff
ff ff mov DWORD PTR tv73[ebp], -1
00041 eb 06 jmp SHORT $LN4@vswprintf_
$LN3@vswprintf_:
00043 8b 45 fc mov eax, DWORD PTR __Result$[ebp]
00046 89 45 b8 mov DWORD PTR tv73[ebp], eax
$LN4@vswprintf_:
00049 8b 45 b8 mov eax, DWORD PTR tv73[ebp]
; 1161 : }
0004c 5f pop edi
0004d 5e pop esi
0004e 5b pop ebx
0004f 8b e5 mov esp, ebp
00051 5d pop ebp
00052 c3 ret 0
__vswprintf_c_l ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_stdio_config.h
; COMDAT ___local_stdio_printf_options
_TEXT SEGMENT
___local_stdio_printf_options PROC ; COMDAT
; 90 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 91 : static unsigned __int64 _OptionsStorage;
; 92 : return &_OptionsStorage;
00009 b8 00 00 00 00 mov eax, OFFSET ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; `__local_stdio_printf_options'::`2'::_OptionsStorage
; 93 : }
0000e 5f pop edi
0000f 5e pop esi
00010 5b pop ebx
00011 8b e5 mov esp, ebp
00013 5d pop ebp
00014 c3 ret 0
___local_stdio_printf_options ENDP
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
___formal$ = 12 ; size = 4
___formal$ = 16 ; size = 4
?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z ENDP ; __empty_global_delete
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
___formal$ = 12 ; size = 4
?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z ENDP ; __empty_global_delete
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?__empty_global_delete@@YAXPAXI@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
___formal$ = 12 ; size = 4
?__empty_global_delete@@YAXPAXI@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAXI@Z ENDP ; __empty_global_delete
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\SmsCenter\IOCP\IOCP.cpp
; COMDAT ?__empty_global_delete@@YAXPAX@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
?__empty_global_delete@@YAXPAX@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAX@Z ENDP ; __empty_global_delete
_TEXT ENDS
END