7466 lines
247 KiB
Plaintext
7466 lines
247 KiB
Plaintext
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.34.31933.0
|
||
|
||
include listing.inc
|
||
|
||
INCLUDELIB LIBCMT
|
||
INCLUDELIB OLDNAMES
|
||
|
||
PUBLIC ?__empty_global_delete@@YAXPEAX@Z ; __empty_global_delete
|
||
PUBLIC ?__empty_global_delete@@YAXPEAX_K@Z ; __empty_global_delete
|
||
PUBLIC ?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z ; __empty_global_delete
|
||
PUBLIC ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z ; __empty_global_delete
|
||
PUBLIC ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
PUBLIC ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
PUBLIC ?IsShared@CStringData@ATL@@QEBA_NXZ ; ATL::CStringData::IsShared
|
||
PUBLIC ?Release@CStringData@ATL@@QEAAXXZ ; ATL::CStringData::Release
|
||
PUBLIC ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
PUBLIC ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
PUBLIC ?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z ; ATL::CSimpleStringT<wchar_t,0>::StringLengthN
|
||
PUBLIC ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
|
||
PUBLIC ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
|
||
PUBLIC ?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Fork
|
||
PUBLIC ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
PUBLIC ?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
|
||
PUBLIC ?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2
|
||
PUBLIC ?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Reallocate
|
||
PUBLIC ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetLength
|
||
PUBLIC ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
PUBLIC ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
PUBLIC ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
PUBLIC ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
PUBLIC ??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ ; ATL::CSimpleStringT<char,0>::operator char const *
|
||
PUBLIC ?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z ; ATL::CSimpleStringT<char,0>::GetBuffer
|
||
PUBLIC ?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ ; ATL::CSimpleStringT<char,0>::GetLength
|
||
PUBLIC ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
PUBLIC ?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z ; ATL::CSimpleStringT<char,0>::StringLengthN
|
||
PUBLIC ?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
PUBLIC ?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<char,0>::Attach
|
||
PUBLIC ?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::Fork
|
||
PUBLIC ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
PUBLIC ?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z ; ATL::CSimpleStringT<char,0>::PrepareWrite
|
||
PUBLIC ?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::PrepareWrite2
|
||
PUBLIC ?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::Reallocate
|
||
PUBLIC ?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::SetLength
|
||
PUBLIC ?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ ; CBase64Coding::m_InitializeDecoderTable
|
||
PUBLIC ??0CBase64Coding@@QEAA@XZ ; CBase64Coding::CBase64Coding
|
||
PUBLIC ??1CBase64Coding@@UEAA@XZ ; CBase64Coding::~CBase64Coding
|
||
PUBLIC ?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z ; CBase64Coding::Decode
|
||
PUBLIC ?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z ; CBase64Coding::Decode
|
||
PUBLIC ?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z ; CBase64Coding::Encode
|
||
PUBLIC ?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ; CBase64Coding::Encode
|
||
PUBLIC ?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ; CBase64Coding::Encode
|
||
PUBLIC ?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z ; CBase64Coding::EncodeA
|
||
PUBLIC ?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ; CBase64Coding::Encode2
|
||
PUBLIC ??_GCBase64Coding@@UEAAPEAXI@Z ; CBase64Coding::`scalar deleting destructor'
|
||
PUBLIC ??_7CBase64Coding@@6B@ ; CBase64Coding::`vftable'
|
||
PUBLIC ??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@ ; `string'
|
||
PUBLIC ??_R4CBase64Coding@@6B@ ; CBase64Coding::`RTTI Complete Object Locator'
|
||
PUBLIC ??_R0?AVCBase64Coding@@@8 ; CBase64Coding `RTTI Type Descriptor'
|
||
PUBLIC ??_R3CBase64Coding@@8 ; CBase64Coding::`RTTI Class Hierarchy Descriptor'
|
||
PUBLIC ??_R2CBase64Coding@@8 ; CBase64Coding::`RTTI Base Class Array'
|
||
PUBLIC ??_R1A@?0A@EA@CBase64Coding@@8 ; CBase64Coding::`RTTI Base Class Descriptor at (0,-1,0,64)'
|
||
PUBLIC __real@3fe8000000000000
|
||
EXTRN ??3@YAXPEAX_K@Z:PROC ; operator delete
|
||
EXTRN _invalid_parameter_noinfo:PROC
|
||
EXTRN _errno:PROC
|
||
EXTRN memcpy:PROC
|
||
EXTRN memset:PROC
|
||
EXTRN wcsnlen:PROC
|
||
EXTRN strnlen:PROC
|
||
EXTRN ?AfxThrowMemoryException@@YAXXZ:PROC ; AfxThrowMemoryException
|
||
EXTRN ?AfxThrowInvalidArgException@@YAXXZ:PROC ; AfxThrowInvalidArgException
|
||
EXTRN ?AfxThrowOleException@@YAXJ@Z:PROC ; AfxThrowOleException
|
||
EXTRN ?SetSize@CByteArray@@QEAAX_J0@Z:PROC ; CByteArray::SetSize
|
||
EXTRN ??_ECBase64Coding@@UEAAPEAXI@Z:PROC ; CBase64Coding::`vector deleting destructor'
|
||
EXTRN __CxxFrameHandler4:PROC
|
||
EXTRN __GSHandlerCheck:PROC
|
||
EXTRN __security_check_cookie:PROC
|
||
EXTRN ??_7type_info@@6B@:BYTE ; type_info::`vftable'
|
||
EXTRN __security_cookie:QWORD
|
||
EXTRN _fltused:DWORD
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?__empty_global_delete@@YAXPEAX@Z DD imagerel $LN3
|
||
DD imagerel $LN3+19
|
||
DD imagerel $unwind$?__empty_global_delete@@YAXPEAX@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?__empty_global_delete@@YAXPEAX_K@Z DD imagerel $LN3
|
||
DD imagerel $LN3+24
|
||
DD imagerel $unwind$?__empty_global_delete@@YAXPEAX_K@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DD imagerel $LN3
|
||
DD imagerel $LN3+24
|
||
DD imagerel $unwind$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DD imagerel $LN3
|
||
DD imagerel $LN3+29
|
||
DD imagerel $unwind$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$memcpy_s DD imagerel memcpy_s
|
||
DD imagerel memcpy_s+292
|
||
DD imagerel $unwind$memcpy_s
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?AtlThrowImpl@ATL@@YAXJ@Z DD imagerel $LN5
|
||
DD imagerel $LN5+44
|
||
DD imagerel $unwind$?AtlThrowImpl@ATL@@YAXJ@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?data@CStringData@ATL@@QEAAPEAXXZ DD imagerel $LN3
|
||
DD imagerel $LN3+27
|
||
DD imagerel $unwind$?data@CStringData@ATL@@QEAAPEAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?IsShared@CStringData@ATL@@QEBA_NXZ DD imagerel $LN5
|
||
DD imagerel $LN5+49
|
||
DD imagerel $unwind$?IsShared@CStringData@ATL@@QEBA_NXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Release@CStringData@ATL@@QEAAXXZ DD imagerel $LN4
|
||
DD imagerel $LN4+86
|
||
DD imagerel $unwind$?Release@CStringData@ATL@@QEAAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z DD imagerel $LN3
|
||
DD imagerel $LN3+37
|
||
DD imagerel $unwind$?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z DD imagerel $LN4
|
||
DD imagerel $LN4+80
|
||
DD imagerel $unwind$?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z DD imagerel $LN4
|
||
DD imagerel $LN4+51
|
||
DD imagerel $unwind$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ DD imagerel $LN3
|
||
DD imagerel $LN3+27
|
||
DD imagerel $unwind$?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z DD imagerel $LN3
|
||
DD imagerel $LN3+42
|
||
DD imagerel $unwind$?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD imagerel $LN6
|
||
DD imagerel $LN6+257
|
||
DD imagerel $unwind$?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ DD imagerel $LN3
|
||
DD imagerel $LN3+30
|
||
DD imagerel $unwind$?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z DD imagerel $LN5
|
||
DD imagerel $LN5+119
|
||
DD imagerel $unwind$?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD imagerel $LN10
|
||
DD imagerel $LN10+178
|
||
DD imagerel $unwind$?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD imagerel $LN6
|
||
DD imagerel $LN6+142
|
||
DD imagerel $unwind$?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD imagerel $LN5
|
||
DD imagerel $LN5+90
|
||
DD imagerel $unwind$?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetSize@CByteArray@@QEBA_JXZ DD imagerel $LN3
|
||
DD imagerel $LN3+27
|
||
DD imagerel $unwind$?GetSize@CByteArray@@QEBA_JXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?RemoveAll@CByteArray@@QEAAXXZ DD imagerel $LN3
|
||
DD imagerel $LN3+39
|
||
DD imagerel $unwind$?RemoveAll@CByteArray@@QEAAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?SetAt@CByteArray@@QEAAX_JE@Z DD imagerel $LN5
|
||
DD imagerel $LN5+76
|
||
DD imagerel $unwind$?SetAt@CByteArray@@QEAAX_JE@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetData@CByteArray@@QEBAPEBEXZ DD imagerel $LN3
|
||
DD imagerel $LN3+27
|
||
DD imagerel $unwind$?GetData@CByteArray@@QEBAPEBEXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ DD imagerel $LN3
|
||
DD imagerel $LN3+26
|
||
DD imagerel $unwind$??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z DD imagerel $LN3
|
||
DD imagerel $LN3+37
|
||
DD imagerel $unwind$?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ DD imagerel $LN3
|
||
DD imagerel $LN3+33
|
||
DD imagerel $unwind$?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z DD imagerel $LN4
|
||
DD imagerel $LN4+80
|
||
DD imagerel $unwind$?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z DD imagerel $LN4
|
||
DD imagerel $LN4+51
|
||
DD imagerel $unwind$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ DD imagerel $LN3
|
||
DD imagerel $LN3+27
|
||
DD imagerel $unwind$?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z DD imagerel $LN3
|
||
DD imagerel $LN3+42
|
||
DD imagerel $unwind$?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD imagerel $LN6
|
||
DD imagerel $LN6+251
|
||
DD imagerel $unwind$?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ DD imagerel $LN3
|
||
DD imagerel $LN3+30
|
||
DD imagerel $unwind$?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z DD imagerel $LN5
|
||
DD imagerel $LN5+119
|
||
DD imagerel $unwind$?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD imagerel $LN10
|
||
DD imagerel $LN10+178
|
||
DD imagerel $unwind$?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD imagerel $LN6
|
||
DD imagerel $LN6+142
|
||
DD imagerel $unwind$?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD imagerel $LN5
|
||
DD imagerel $LN5+88
|
||
DD imagerel $unwind$?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ DD imagerel $LN3
|
||
DD imagerel $LN3+1272
|
||
DD imagerel $unwind$?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$??0CBase64Coding@@QEAA@XZ DD imagerel $LN3
|
||
DD imagerel $LN3+55
|
||
DD imagerel $unwind$??0CBase64Coding@@QEAA@XZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$??1CBase64Coding@@UEAA@XZ DD imagerel $LN3
|
||
DD imagerel $LN3+33
|
||
DD imagerel $unwind$??1CBase64Coding@@UEAA@XZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD imagerel $LN23
|
||
DD imagerel $LN23+991
|
||
DD imagerel $unwind$?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z DD imagerel $LN23
|
||
DD imagerel $LN23+991
|
||
DD imagerel $unwind$?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD imagerel $LN9
|
||
DD imagerel $LN9+913
|
||
DD imagerel $unwind$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD imagerel $LN10
|
||
DD imagerel $LN10+917
|
||
DD imagerel $unwind$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD imagerel $LN9
|
||
DD imagerel $LN9+845
|
||
DD imagerel $unwind$?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z DD imagerel $LN9
|
||
DD imagerel $LN9+813
|
||
DD imagerel $unwind$?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD imagerel $LN9
|
||
DD imagerel $LN9+838
|
||
DD imagerel $unwind$?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$??_GCBase64Coding@@UEAAPEAXI@Z DD imagerel $LN4
|
||
DD imagerel $LN4+62
|
||
DD imagerel $unwind$??_GCBase64Coding@@UEAAPEAXI@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?__get_character@@YAEPEBE0AEAHH@Z DD imagerel ?__get_character@@YAEPEBE0AEAHH@Z
|
||
DD imagerel ?__get_character@@YAEPEBE0AEAHH@Z+117
|
||
DD imagerel $unwind$?__get_character@@YAEPEBE0AEAHH@Z
|
||
pdata ENDS
|
||
; COMDAT __real@3fe8000000000000
|
||
CONST SEGMENT
|
||
__real@3fe8000000000000 DQ 03fe8000000000000r ; 0.75
|
||
CONST ENDS
|
||
; COMDAT ??_R1A@?0A@EA@CBase64Coding@@8
|
||
rdata$r SEGMENT
|
||
??_R1A@?0A@EA@CBase64Coding@@8 DD imagerel ??_R0?AVCBase64Coding@@@8 ; CBase64Coding::`RTTI Base Class Descriptor at (0,-1,0,64)'
|
||
DD 00H
|
||
DD 00H
|
||
DD 0ffffffffH
|
||
DD 00H
|
||
DD 040H
|
||
DD imagerel ??_R3CBase64Coding@@8
|
||
rdata$r ENDS
|
||
; COMDAT ??_R2CBase64Coding@@8
|
||
rdata$r SEGMENT
|
||
??_R2CBase64Coding@@8 DD imagerel ??_R1A@?0A@EA@CBase64Coding@@8 ; CBase64Coding::`RTTI Base Class Array'
|
||
ORG $+3
|
||
rdata$r ENDS
|
||
; COMDAT ??_R3CBase64Coding@@8
|
||
rdata$r SEGMENT
|
||
??_R3CBase64Coding@@8 DD 00H ; CBase64Coding::`RTTI Class Hierarchy Descriptor'
|
||
DD 00H
|
||
DD 01H
|
||
DD imagerel ??_R2CBase64Coding@@8
|
||
rdata$r ENDS
|
||
; COMDAT ??_R0?AVCBase64Coding@@@8
|
||
data$rs SEGMENT
|
||
??_R0?AVCBase64Coding@@@8 DQ FLAT:??_7type_info@@6B@ ; CBase64Coding `RTTI Type Descriptor'
|
||
DQ 0000000000000000H
|
||
DB '.?AVCBase64Coding@@', 00H
|
||
data$rs ENDS
|
||
; COMDAT ??_R4CBase64Coding@@6B@
|
||
rdata$r SEGMENT
|
||
??_R4CBase64Coding@@6B@ DD 01H ; CBase64Coding::`RTTI Complete Object Locator'
|
||
DD 00H
|
||
DD 00H
|
||
DD imagerel ??_R0?AVCBase64Coding@@@8
|
||
DD imagerel ??_R3CBase64Coding@@8
|
||
DD imagerel ??_R4CBase64Coding@@6B@
|
||
rdata$r ENDS
|
||
; COMDAT ??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@
|
||
CONST SEGMENT
|
||
??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@ DB 'ABCDEFGHIJKLMNOPQ'
|
||
DB 'RSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', 00H ; `string'
|
||
CONST ENDS
|
||
; COMDAT ??_7CBase64Coding@@6B@
|
||
CONST SEGMENT
|
||
??_7CBase64Coding@@6B@ DQ FLAT:??_R4CBase64Coding@@6B@ ; CBase64Coding::`vftable'
|
||
DQ FLAT:?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ
|
||
DQ FLAT:??_ECBase64Coding@@UEAAPEAXI@Z
|
||
DQ FLAT:?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z
|
||
DQ FLAT:?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
DQ FLAT:?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
DQ FLAT:?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
DQ FLAT:?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
DQ FLAT:?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
|
||
DQ FLAT:?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
CONST ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?__get_character@@YAEPEBE0AEAHH@Z DD 05031c01H
|
||
DD 09219031cH
|
||
DD 05015H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$??_GCBase64Coding@@UEAAPEAXI@Z DD 025031301H
|
||
DD 0b20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 028H
|
||
DW 032cH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD 025062f19H
|
||
DD 0119231eH
|
||
DD 07012001cH
|
||
DD 050106011H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0d8H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 02dH
|
||
DW 0313H
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z DD 025063419H
|
||
DD 011e2323H
|
||
DD 07017001cH
|
||
DD 050156016H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0d8H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 02dH
|
||
DW 0333H
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD 025063419H
|
||
DD 011e2323H
|
||
DD 07017001cH
|
||
DD 050156016H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0d8H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 028H
|
||
DW 037bH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD 025062f19H
|
||
DD 0119231eH
|
||
DD 07012001cH
|
||
DD 050106011H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0d8H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 028H
|
||
DW 0377H
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD 025062f19H
|
||
DD 0119231eH
|
||
DD 07012001cH
|
||
DD 050106011H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0d0H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z DD 025031c01H
|
||
DD 0f217231cH
|
||
DD 05010H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD 025031c01H
|
||
DD 0f217231cH
|
||
DD 05010H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$??1CBase64Coding@@UEAA@XZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$??0CBase64Coding@@QEAA@XZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ DD 025030f01H
|
||
DD 0b20a230fH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 025031301H
|
||
DD 0b20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 025031601H
|
||
DD 0f2112316H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 025031301H
|
||
DD 0d20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z DD 025031301H
|
||
DD 0d20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 025041601H
|
||
DD 01112316H
|
||
DD 0500a0012H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z DD 025031401H
|
||
DD 0b20f2314H
|
||
DD 0500bH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ DD 025030b01H
|
||
DD 0b206230bH
|
||
DD 05002H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$ip2state$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z DB 02H
|
||
DB 00H
|
||
DB 00H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$cppxdata$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z DB 040H
|
||
DD imagerel $ip2state$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z DD 025031419H
|
||
DD 0b20f2314H
|
||
DD 0500bH
|
||
DD imagerel __CxxFrameHandler4
|
||
DD imagerel $cppxdata$?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z DD 025031301H
|
||
DD 0d20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ DD 025030f01H
|
||
DD 0b20a230fH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z DD 025031301H
|
||
DD 0b20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetData@CByteArray@@QEBAPEBEXZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?SetAt@CByteArray@@QEAAX_JE@Z DD 025031901H
|
||
DD 0b2142319H
|
||
DD 05010H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?RemoveAll@CByteArray@@QEAAXXZ DD 025030f01H
|
||
DD 0b20a230fH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetSize@CByteArray@@QEBA_JXZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 025031301H
|
||
DD 0b20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 025031601H
|
||
DD 0f2112316H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 025031301H
|
||
DD 0d20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z DD 025031301H
|
||
DD 0d20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 025041601H
|
||
DD 01112316H
|
||
DD 0500a0012H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z DD 025031401H
|
||
DD 0b20f2314H
|
||
DD 0500bH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ DD 025030b01H
|
||
DD 0b206230bH
|
||
DD 05002H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$ip2state$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z DB 02H
|
||
DB 00H
|
||
DB 00H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$cppxdata$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z DB 040H
|
||
DD imagerel $ip2state$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z DD 025031419H
|
||
DD 0b20f2314H
|
||
DD 0500bH
|
||
DD imagerel __CxxFrameHandler4
|
||
DD imagerel $cppxdata$?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z DD 025031301H
|
||
DD 0d20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z DD 025031301H
|
||
DD 0b20e2313H
|
||
DD 0500aH
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DB 01cH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Release@CStringData@ATL@@QEAAXXZ DD 025030f01H
|
||
DD 0d20a230fH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?IsShared@CStringData@ATL@@QEBA_NXZ DD 05030d01H
|
||
DD 0920a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?data@CStringData@ATL@@QEAAPEAXXZ DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?AtlThrowImpl@ATL@@YAXJ@Z DD 025030e01H
|
||
DD 0b209230eH
|
||
DD 05005H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$memcpy_s DD 025031e01H
|
||
DD 0d219231eH
|
||
DD 05015H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z DD 05031701H
|
||
DD 072140317H
|
||
DD 05010H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z DD 05031201H
|
||
DD 0720f0312H
|
||
DD 0500bH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?__empty_global_delete@@YAXPEAX_K@Z DD 05031201H
|
||
DD 0720f0312H
|
||
DD 0500bH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?__empty_global_delete@@YAXPEAX@Z DD 05030d01H
|
||
DD 0720a030dH
|
||
DD 05006H
|
||
xdata ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__get_character@@YAEPEBE0AEAHH@Z
|
||
_TEXT SEGMENT
|
||
return_value$ = 0
|
||
buffer$ = 96
|
||
decoder_table$ = 104
|
||
index$ = 112
|
||
size_of_buffer$ = 120
|
||
?__get_character@@YAEPEBE0AEAHH@Z PROC ; __get_character, COMDAT
|
||
|
||
; 41 : {
|
||
|
||
00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
|
||
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00014 55 push rbp
|
||
00015 48 83 ec 50 sub rsp, 80 ; 00000050H
|
||
00019 48 8b ec mov rbp, rsp
|
||
|
||
; 42 : BYTE return_value = 0;
|
||
|
||
0001c c6 45 00 00 mov BYTE PTR return_value$[rbp], 0
|
||
$LN4@get_charac:
|
||
|
||
; 43 :
|
||
; 44 : do
|
||
; 45 : {
|
||
; 46 : if ( index >= size_of_buffer )
|
||
|
||
00020 48 8b 45 70 mov rax, QWORD PTR index$[rbp]
|
||
00024 8b 4d 78 mov ecx, DWORD PTR size_of_buffer$[rbp]
|
||
00027 39 08 cmp DWORD PTR [rax], ecx
|
||
00029 7c 04 jl SHORT $LN5@get_charac
|
||
|
||
; 47 : {
|
||
; 48 : return( BASE64_END_OF_BUFFER );
|
||
|
||
0002b b0 fd mov al, 253 ; 000000fdH
|
||
0002d eb 40 jmp SHORT $LN1@get_charac
|
||
$LN5@get_charac:
|
||
|
||
; 49 : }
|
||
; 50 :
|
||
; 51 : return_value = buffer[ index ];
|
||
|
||
0002f 48 8b 45 70 mov rax, QWORD PTR index$[rbp]
|
||
00033 48 63 00 movsxd rax, DWORD PTR [rax]
|
||
00036 48 8b 4d 60 mov rcx, QWORD PTR buffer$[rbp]
|
||
0003a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
0003e 88 45 00 mov BYTE PTR return_value$[rbp], al
|
||
|
||
; 52 : index++;
|
||
|
||
00041 48 8b 45 70 mov rax, QWORD PTR index$[rbp]
|
||
00045 8b 00 mov eax, DWORD PTR [rax]
|
||
00047 ff c0 inc eax
|
||
00049 48 8b 4d 70 mov rcx, QWORD PTR index$[rbp]
|
||
0004d 89 01 mov DWORD PTR [rcx], eax
|
||
|
||
; 53 : }
|
||
; 54 : while( return_value != END_OF_BASE64_ENCODED_DATA &&
|
||
|
||
0004f 0f b6 45 00 movzx eax, BYTE PTR return_value$[rbp]
|
||
00053 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00056 74 13 je SHORT $LN6@get_charac
|
||
00058 0f b6 45 00 movzx eax, BYTE PTR return_value$[rbp]
|
||
0005c 48 8b 4d 68 mov rcx, QWORD PTR decoder_table$[rbp]
|
||
00060 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
00064 3d fe 00 00 00 cmp eax, 254 ; 000000feH
|
||
00069 74 b5 je SHORT $LN4@get_charac
|
||
$LN6@get_charac:
|
||
|
||
; 55 : decoder_table[ return_value ] == BASE64_IGNORABLE_CHARACTER );
|
||
; 56 :
|
||
; 57 : return( return_value );
|
||
|
||
0006b 0f b6 45 00 movzx eax, BYTE PTR return_value$[rbp]
|
||
$LN1@get_charac:
|
||
|
||
; 58 : }
|
||
|
||
0006f 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
00073 5d pop rbp
|
||
00074 c3 ret 0
|
||
?__get_character@@YAEPEBE0AEAHH@Z ENDP ; __get_character
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; COMDAT ??_GCBase64Coding@@UEAAPEAXI@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
__flags$ = 88
|
||
??_GCBase64Coding@@UEAAPEAXI@Z PROC ; CBase64Coding::`scalar deleting destructor', COMDAT
|
||
$LN4:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
00013 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00017 e8 00 00 00 00 call ??1CBase64Coding@@UEAA@XZ ; CBase64Coding::~CBase64Coding
|
||
0001c 8b 45 58 mov eax, DWORD PTR __flags$[rbp]
|
||
0001f 83 e0 01 and eax, 1
|
||
00022 85 c0 test eax, eax
|
||
00024 74 0e je SHORT $LN2@scalar
|
||
00026 ba 08 01 00 00 mov edx, 264 ; 00000108H
|
||
0002b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0002f e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete
|
||
$LN2@scalar:
|
||
00034 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00038 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0003c 5d pop rbp
|
||
0003d c3 ret 0
|
||
??_GCBase64Coding@@UEAAPEAXI@Z ENDP ; CBase64Coding::`scalar deleting destructor'
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
_TEXT SEGMENT
|
||
alphabet$ = 0
|
||
loop_index$ = 80
|
||
number_of_bytes_to_encode$ = 84
|
||
byte_to_add$ = 88
|
||
byte_1$ = 89
|
||
byte_2$ = 90
|
||
byte_3$ = 91
|
||
input_buffer$ = 96
|
||
number_of_bytes_encoded$ = 104
|
||
destination$ = 112
|
||
__$ArrayPad$ = 184
|
||
this$ = 224
|
||
source$ = 232
|
||
destination_string$ = 240
|
||
?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z PROC ; CBase64Coding::Encode2, COMDAT
|
||
|
||
; 980 : {
|
||
|
||
$LN9:
|
||
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 56 push rsi
|
||
00011 57 push rdi
|
||
00012 48 81 ec e0 00
|
||
00 00 sub rsp, 224 ; 000000e0H
|
||
00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
0001e 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
00025 48 33 c5 xor rax, rbp
|
||
00028 48 89 85 b8 00
|
||
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
||
|
||
; 981 :
|
||
; 982 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002f 48 8d 45 00 lea rax, QWORD PTR alphabet$[rbp]
|
||
00033 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@
|
||
0003a 48 8b f8 mov rdi, rax
|
||
0003d 48 8b f1 mov rsi, rcx
|
||
00040 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00045 f3 a4 rep movsb
|
||
|
||
; 983 :
|
||
; 984 : int loop_index = 0;
|
||
|
||
00047 c7 45 50 00 00
|
||
00 00 mov DWORD PTR loop_index$[rbp], 0
|
||
|
||
; 985 : int number_of_bytes_to_encode = (int)source.GetSize();
|
||
|
||
0004e 48 8b 8d e8 00
|
||
00 00 mov rcx, QWORD PTR source$[rbp]
|
||
00055 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
0005a 89 45 54 mov DWORD PTR number_of_bytes_to_encode$[rbp], eax
|
||
|
||
; 986 :
|
||
; 987 : BYTE byte_to_add = 0;
|
||
|
||
0005d c6 45 58 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 988 : BYTE byte_1 = 0;
|
||
|
||
00061 c6 45 59 00 mov BYTE PTR byte_1$[rbp], 0
|
||
|
||
; 989 : BYTE byte_2 = 0;
|
||
|
||
00065 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 990 : BYTE byte_3 = 0;
|
||
|
||
00069 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 991 :
|
||
; 992 : const BYTE * input_buffer = source.GetData();
|
||
|
||
0006d 48 8b 8d e8 00
|
||
00 00 mov rcx, QWORD PTR source$[rbp]
|
||
00074 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
00079 48 89 45 60 mov QWORD PTR input_buffer$[rbp], rax
|
||
|
||
; 993 :
|
||
; 994 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
0007d f2 0f 2a 45 54 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00082 f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0008a f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
0008f ff c0 inc eax
|
||
00091 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 995 :
|
||
; 996 : // Now add in the CR/LF pairs, each line is truncated at 72 characters
|
||
; 997 :
|
||
; 998 : // 2000-05-12
|
||
; 999 : // Thanks go to Ilia Golubev (ilia@varicom.co.il) for finding a bug here.
|
||
; 1000 : // I was using number_of_bytes_to_encode rather than number_of_bytes_encoded.
|
||
; 1001 :
|
||
; 1002 : number_of_bytes_encoded+=2;
|
||
|
||
00094 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00097 83 c0 02 add eax, 2
|
||
0009a 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1003 : // number_of_bytes_encoded += (DWORD)( ( ( number_of_bytes_encoded / BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) + 1 ) * 2 );
|
||
; 1004 :
|
||
; 1005 : LPTSTR destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
0009d 8b 55 68 mov edx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000a0 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
000a7 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
000ac 48 89 45 70 mov QWORD PTR destination$[rbp], rax
|
||
|
||
; 1006 :
|
||
; 1007 : number_of_bytes_encoded = 0;
|
||
|
||
000b0 c7 45 68 00 00
|
||
00 00 mov DWORD PTR number_of_bytes_encoded$[rbp], 0
|
||
$LN2@Encode2:
|
||
|
||
; 1008 :
|
||
; 1009 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000b7 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
000ba 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
000bd 0f 8d 32 02 00
|
||
00 jge $LN3@Encode2
|
||
|
||
; 1010 : {
|
||
; 1011 : // Output the first byte
|
||
; 1012 :
|
||
; 1013 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000c3 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
000c7 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000cb 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000cf 88 45 59 mov BYTE PTR byte_1$[rbp], al
|
||
|
||
; 1014 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000d2 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
000d6 c1 f8 02 sar eax, 2
|
||
000d9 48 98 cdqe
|
||
000db 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
000e0 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 1015 :
|
||
; 1016 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
000e3 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
000e7 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000ea 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
000ee 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1017 : number_of_bytes_encoded++;
|
||
|
||
000f2 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000f5 ff c0 inc eax
|
||
000f7 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1018 :
|
||
; 1019 : loop_index++;
|
||
|
||
000fa 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
000fd ff c0 inc eax
|
||
000ff 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 1020 :
|
||
; 1021 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00102 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00105 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
00108 0f 8c 94 00 00
|
||
00 jl $LN4@Encode2
|
||
|
||
; 1022 : {
|
||
; 1023 : // We're at the end of the data to encode
|
||
; 1024 :
|
||
; 1025 : byte_2 = 0;
|
||
|
||
0010e c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 1026 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
00112 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
00116 83 e0 03 and eax, 3
|
||
00119 c1 e0 04 shl eax, 4
|
||
0011c 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
00120 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00126 c1 f9 04 sar ecx, 4
|
||
00129 0b c1 or eax, ecx
|
||
0012b 48 98 cdqe
|
||
0012d 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00132 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 1027 :
|
||
; 1028 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00135 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
00139 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0013c 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00140 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1029 : number_of_bytes_encoded++;
|
||
|
||
00144 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00147 ff c0 inc eax
|
||
00149 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1030 :
|
||
; 1031 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0014c 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0014f b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00154 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00158 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1032 : number_of_bytes_encoded++;
|
||
|
||
0015c 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0015f ff c0 inc eax
|
||
00161 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1033 :
|
||
; 1034 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00164 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00167 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0016c 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00170 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1035 :
|
||
; 1036 : // 1999-09-01
|
||
; 1037 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 1038 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 1039 :
|
||
; 1040 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00174 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00177 ff c0 inc eax
|
||
00179 8b c0 mov eax, eax
|
||
0017b 33 c9 xor ecx, ecx
|
||
0017d 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00181 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1041 :
|
||
; 1042 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00185 ba ff ff ff ff mov edx, -1
|
||
0018a 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00191 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 1043 :
|
||
; 1044 : return( TRUE );
|
||
|
||
00196 b8 01 00 00 00 mov eax, 1
|
||
0019b e9 8c 01 00 00 jmp $LN1@Encode2
|
||
|
||
; 1045 : }
|
||
|
||
001a0 eb 0f jmp SHORT $LN5@Encode2
|
||
$LN4@Encode2:
|
||
|
||
; 1046 : else
|
||
; 1047 : {
|
||
; 1048 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001a2 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
001a6 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001aa 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001ae 88 45 5a mov BYTE PTR byte_2$[rbp], al
|
||
$LN5@Encode2:
|
||
|
||
; 1049 : }
|
||
; 1050 :
|
||
; 1051 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001b1 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
001b5 83 e0 03 and eax, 3
|
||
001b8 c1 e0 04 shl eax, 4
|
||
001bb 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
001bf 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001c5 c1 f9 04 sar ecx, 4
|
||
001c8 0b c1 or eax, ecx
|
||
001ca 48 98 cdqe
|
||
001cc 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
001d1 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 1052 :
|
||
; 1053 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
001d4 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
001d8 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001db 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
001df 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1054 : number_of_bytes_encoded++;
|
||
|
||
001e3 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001e6 ff c0 inc eax
|
||
001e8 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1055 :
|
||
; 1056 : loop_index++;
|
||
|
||
001eb 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
001ee ff c0 inc eax
|
||
001f0 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 1057 :
|
||
; 1058 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
001f3 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
001f6 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
001f9 7c 7c jl SHORT $LN6@Encode2
|
||
|
||
; 1059 : {
|
||
; 1060 : // We ran out of bytes, we need to add the last half of byte_2 and pad
|
||
; 1061 : byte_3 = 0;
|
||
|
||
001fb c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 1062 :
|
||
; 1063 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
001ff 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
00203 83 e0 0f and eax, 15
|
||
00206 c1 e0 02 shl eax, 2
|
||
00209 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
0020d 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00213 c1 f9 06 sar ecx, 6
|
||
00216 0b c1 or eax, ecx
|
||
00218 48 98 cdqe
|
||
0021a 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
0021f 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 1064 :
|
||
; 1065 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00222 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
00226 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00229 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0022d 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1066 : number_of_bytes_encoded++;
|
||
|
||
00231 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00234 ff c0 inc eax
|
||
00236 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1067 :
|
||
; 1068 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00239 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0023c b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00241 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00245 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1069 :
|
||
; 1070 : // 1999-09-01
|
||
; 1071 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 1072 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 1073 :
|
||
; 1074 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00249 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0024c ff c0 inc eax
|
||
0024e 8b c0 mov eax, eax
|
||
00250 33 c9 xor ecx, ecx
|
||
00252 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00256 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1075 :
|
||
; 1076 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0025a ba ff ff ff ff mov edx, -1
|
||
0025f 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00266 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 1077 :
|
||
; 1078 : return( TRUE );
|
||
|
||
0026b b8 01 00 00 00 mov eax, 1
|
||
00270 e9 b7 00 00 00 jmp $LN1@Encode2
|
||
|
||
; 1079 : }
|
||
|
||
00275 eb 0f jmp SHORT $LN7@Encode2
|
||
$LN6@Encode2:
|
||
|
||
; 1080 : else
|
||
; 1081 : {
|
||
; 1082 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
00277 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
0027b 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
0027f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
00283 88 45 5b mov BYTE PTR byte_3$[rbp], al
|
||
$LN7@Encode2:
|
||
|
||
; 1083 : }
|
||
; 1084 :
|
||
; 1085 : loop_index++;
|
||
|
||
00286 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
00289 ff c0 inc eax
|
||
0028b 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 1086 :
|
||
; 1087 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0028e 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
00292 83 e0 0f and eax, 15
|
||
00295 c1 e0 02 shl eax, 2
|
||
00298 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
0029c 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
002a2 c1 f9 06 sar ecx, 6
|
||
002a5 0b c1 or eax, ecx
|
||
002a7 48 98 cdqe
|
||
002a9 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002ae 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 1088 :
|
||
; 1089 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
002b1 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
002b5 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002b8 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
002bc 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1090 : number_of_bytes_encoded++;
|
||
|
||
002c0 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002c3 ff c0 inc eax
|
||
002c5 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1091 :
|
||
; 1092 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
002c8 0f b6 45 5b movzx eax, BYTE PTR byte_3$[rbp]
|
||
002cc 83 e0 3f and eax, 63 ; 0000003fH
|
||
002cf 48 98 cdqe
|
||
002d1 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002d6 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 1093 :
|
||
; 1094 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
002d9 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
002dd 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002e0 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
002e4 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1095 : number_of_bytes_encoded++;
|
||
|
||
002e8 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002eb ff c0 inc eax
|
||
002ed 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 1096 :
|
||
; 1097 : // if ( ( number_of_bytes_encoded % BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) == 0 )
|
||
; 1098 : // {
|
||
; 1099 : // destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( CARRIAGE_RETURN );
|
||
; 1100 : // number_of_bytes_encoded++;
|
||
; 1101 : //
|
||
; 1102 : // destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( LINE_FEED );
|
||
; 1103 : // number_of_bytes_encoded++;
|
||
; 1104 : // }
|
||
; 1105 : }
|
||
|
||
002f0 e9 c2 fd ff ff jmp $LN2@Encode2
|
||
$LN3@Encode2:
|
||
|
||
; 1106 :
|
||
; 1107 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
002f5 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002f8 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
002fd 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00301 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1108 :
|
||
; 1109 : // 1999-09-01
|
||
; 1110 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 1111 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 1112 :
|
||
; 1113 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00305 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00308 ff c0 inc eax
|
||
0030a 8b c0 mov eax, eax
|
||
0030c 33 c9 xor ecx, ecx
|
||
0030e 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00312 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1114 :
|
||
; 1115 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00316 ba ff ff ff ff mov edx, -1
|
||
0031b 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00322 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 1116 :
|
||
; 1117 : return( TRUE );
|
||
|
||
00327 b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode2:
|
||
|
||
; 1118 : }
|
||
|
||
0032c 48 8b 8d b8 00
|
||
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
||
00333 48 33 cd xor rcx, rbp
|
||
00336 e8 00 00 00 00 call __security_check_cookie
|
||
0033b 48 8d a5 c0 00
|
||
00 00 lea rsp, QWORD PTR [rbp+192]
|
||
00342 5f pop rdi
|
||
00343 5e pop rsi
|
||
00344 5d pop rbp
|
||
00345 c3 ret 0
|
||
?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ENDP ; CBase64Coding::Encode2
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
|
||
_TEXT SEGMENT
|
||
alphabet$ = 0
|
||
loop_index$ = 80
|
||
number_of_bytes_to_encode$ = 84
|
||
byte_to_add$ = 88
|
||
byte_1$ = 89
|
||
byte_2$ = 90
|
||
byte_3$ = 91
|
||
input_buffer$ = 96
|
||
number_of_bytes_encoded$ = 104
|
||
destination$ = 112
|
||
__$ArrayPad$ = 184
|
||
this$ = 224
|
||
pSource$ = 232
|
||
lSource$ = 240
|
||
destination_string$ = 248
|
||
?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z PROC ; CBase64Coding::EncodeA, COMDAT
|
||
|
||
; 837 : {
|
||
|
||
$LN9:
|
||
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
|
||
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
|
||
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00014 55 push rbp
|
||
00015 56 push rsi
|
||
00016 57 push rdi
|
||
00017 48 81 ec e0 00
|
||
00 00 sub rsp, 224 ; 000000e0H
|
||
0001e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
00023 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
0002a 48 33 c5 xor rax, rbp
|
||
0002d 48 89 85 b8 00
|
||
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
||
|
||
; 838 :
|
||
; 839 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
00034 48 8d 45 00 lea rax, QWORD PTR alphabet$[rbp]
|
||
00038 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@
|
||
0003f 48 8b f8 mov rdi, rax
|
||
00042 48 8b f1 mov rsi, rcx
|
||
00045 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
0004a f3 a4 rep movsb
|
||
|
||
; 840 :
|
||
; 841 : int loop_index = 0;
|
||
|
||
0004c c7 45 50 00 00
|
||
00 00 mov DWORD PTR loop_index$[rbp], 0
|
||
|
||
; 842 : int number_of_bytes_to_encode = lSource;
|
||
|
||
00053 8b 85 f0 00 00
|
||
00 mov eax, DWORD PTR lSource$[rbp]
|
||
00059 89 45 54 mov DWORD PTR number_of_bytes_to_encode$[rbp], eax
|
||
|
||
; 843 :
|
||
; 844 : BYTE byte_to_add = 0;
|
||
|
||
0005c c6 45 58 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 845 : BYTE byte_1 = 0;
|
||
|
||
00060 c6 45 59 00 mov BYTE PTR byte_1$[rbp], 0
|
||
|
||
; 846 : BYTE byte_2 = 0;
|
||
|
||
00064 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 847 : BYTE byte_3 = 0;
|
||
|
||
00068 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 848 :
|
||
; 849 : const BYTE * input_buffer = pSource;
|
||
|
||
0006c 48 8b 85 e8 00
|
||
00 00 mov rax, QWORD PTR pSource$[rbp]
|
||
00073 48 89 45 60 mov QWORD PTR input_buffer$[rbp], rax
|
||
|
||
; 850 :
|
||
; 851 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
00077 f2 0f 2a 45 54 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
0007c f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
00084 f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00089 ff c0 inc eax
|
||
0008b 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 852 :
|
||
; 853 : // Now add in the CR/LF pairs, each line is truncated at 72 characters
|
||
; 854 :
|
||
; 855 : // 2000-05-12
|
||
; 856 : // Thanks go to Ilia Golubev (ilia@varicom.co.il) for finding a bug here.
|
||
; 857 : // I was using number_of_bytes_to_encode rather than number_of_bytes_encoded.
|
||
; 858 :
|
||
; 859 : number_of_bytes_encoded += (DWORD)( ( ( number_of_bytes_encoded / BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) + 1 ) * 2 );
|
||
|
||
0008e 33 d2 xor edx, edx
|
||
00090 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00093 b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
00098 f7 f1 div ecx
|
||
0009a 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0009d 8d 44 41 02 lea eax, DWORD PTR [rcx+rax*2+2]
|
||
000a1 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 860 :
|
||
; 861 : char * destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
000a4 8b 55 68 mov edx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000a7 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
000ae e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z ; ATL::CSimpleStringT<char,0>::GetBuffer
|
||
000b3 48 89 45 70 mov QWORD PTR destination$[rbp], rax
|
||
|
||
; 862 :
|
||
; 863 : number_of_bytes_encoded = 0;
|
||
|
||
000b7 c7 45 68 00 00
|
||
00 00 mov DWORD PTR number_of_bytes_encoded$[rbp], 0
|
||
$LN2@EncodeA:
|
||
|
||
; 864 :
|
||
; 865 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000be 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
000c1 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
000c4 0f 8d 19 02 00
|
||
00 jge $LN3@EncodeA
|
||
|
||
; 866 : {
|
||
; 867 : // Output the first byte
|
||
; 868 :
|
||
; 869 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000ca 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
000ce 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000d2 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000d6 88 45 59 mov BYTE PTR byte_1$[rbp], al
|
||
|
||
; 870 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000d9 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
000dd c1 f8 02 sar eax, 2
|
||
000e0 48 98 cdqe
|
||
000e2 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
000e7 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 871 :
|
||
; 872 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
000ea 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000ed 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
000f1 0f b6 55 58 movzx edx, BYTE PTR byte_to_add$[rbp]
|
||
000f5 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 873 : number_of_bytes_encoded++;
|
||
|
||
000f8 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000fb ff c0 inc eax
|
||
000fd 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 874 :
|
||
; 875 : loop_index++;
|
||
|
||
00100 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
00103 ff c0 inc eax
|
||
00105 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 876 :
|
||
; 877 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00108 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
0010b 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
0010e 0f 8c 87 00 00
|
||
00 jl $LN4@EncodeA
|
||
|
||
; 878 : {
|
||
; 879 : // We're at the end of the data to encode
|
||
; 880 :
|
||
; 881 : byte_2 = 0;
|
||
|
||
00114 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 882 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
00118 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
0011c 83 e0 03 and eax, 3
|
||
0011f c1 e0 04 shl eax, 4
|
||
00122 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
00126 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
0012c c1 f9 04 sar ecx, 4
|
||
0012f 0b c1 or eax, ecx
|
||
00131 48 98 cdqe
|
||
00133 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00138 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 883 :
|
||
; 884 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
0013b 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0013e 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
00142 0f b6 55 58 movzx edx, BYTE PTR byte_to_add$[rbp]
|
||
00146 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 885 : number_of_bytes_encoded++;
|
||
|
||
00149 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0014c ff c0 inc eax
|
||
0014e 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 886 :
|
||
; 887 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00151 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00154 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
00158 c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
|
||
|
||
; 888 : number_of_bytes_encoded++;
|
||
|
||
0015c 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0015f ff c0 inc eax
|
||
00161 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 889 :
|
||
; 890 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00164 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00167 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
0016b c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
|
||
|
||
; 891 :
|
||
; 892 : // 1999-09-01
|
||
; 893 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 894 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 895 :
|
||
; 896 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
0016f 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00172 ff c0 inc eax
|
||
00174 8b c0 mov eax, eax
|
||
00176 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
0017a c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
|
||
; 897 :
|
||
; 898 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0017e ba ff ff ff ff mov edx, -1
|
||
00183 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
0018a e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
|
||
; 899 :
|
||
; 900 : return( TRUE );
|
||
|
||
0018f b8 01 00 00 00 mov eax, 1
|
||
00194 e9 7a 01 00 00 jmp $LN1@EncodeA
|
||
|
||
; 901 : }
|
||
|
||
00199 eb 0f jmp SHORT $LN5@EncodeA
|
||
$LN4@EncodeA:
|
||
|
||
; 902 : else
|
||
; 903 : {
|
||
; 904 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
0019b 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
0019f 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001a3 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001a7 88 45 5a mov BYTE PTR byte_2$[rbp], al
|
||
$LN5@EncodeA:
|
||
|
||
; 905 : }
|
||
; 906 :
|
||
; 907 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001aa 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
001ae 83 e0 03 and eax, 3
|
||
001b1 c1 e0 04 shl eax, 4
|
||
001b4 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
001b8 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001be c1 f9 04 sar ecx, 4
|
||
001c1 0b c1 or eax, ecx
|
||
001c3 48 98 cdqe
|
||
001c5 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
001ca 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 908 :
|
||
; 909 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
001cd 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001d0 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
001d4 0f b6 55 58 movzx edx, BYTE PTR byte_to_add$[rbp]
|
||
001d8 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 910 : number_of_bytes_encoded++;
|
||
|
||
001db 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001de ff c0 inc eax
|
||
001e0 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 911 :
|
||
; 912 : loop_index++;
|
||
|
||
001e3 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
001e6 ff c0 inc eax
|
||
001e8 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 913 :
|
||
; 914 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
001eb 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
001ee 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
001f1 7c 74 jl SHORT $LN6@EncodeA
|
||
|
||
; 915 : {
|
||
; 916 : // We ran out of bytes, we need to add the last half of byte_2 and pad
|
||
; 917 : byte_3 = 0;
|
||
|
||
001f3 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 918 :
|
||
; 919 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
001f7 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
001fb 83 e0 0f and eax, 15
|
||
001fe c1 e0 02 shl eax, 2
|
||
00201 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
00205 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
0020b c1 f9 06 sar ecx, 6
|
||
0020e 0b c1 or eax, ecx
|
||
00210 48 98 cdqe
|
||
00212 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00217 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 920 :
|
||
; 921 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
0021a 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0021d 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
00221 0f b6 55 58 movzx edx, BYTE PTR byte_to_add$[rbp]
|
||
00225 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 922 : number_of_bytes_encoded++;
|
||
|
||
00228 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0022b ff c0 inc eax
|
||
0022d 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 923 :
|
||
; 924 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00230 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00233 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
00237 c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
|
||
|
||
; 925 :
|
||
; 926 : // 1999-09-01
|
||
; 927 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 928 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 929 :
|
||
; 930 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
0023b 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0023e ff c0 inc eax
|
||
00240 8b c0 mov eax, eax
|
||
00242 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
00246 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
|
||
; 931 :
|
||
; 932 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0024a ba ff ff ff ff mov edx, -1
|
||
0024f 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00256 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
|
||
; 933 :
|
||
; 934 : return( TRUE );
|
||
|
||
0025b b8 01 00 00 00 mov eax, 1
|
||
00260 e9 ae 00 00 00 jmp $LN1@EncodeA
|
||
|
||
; 935 : }
|
||
|
||
00265 eb 0f jmp SHORT $LN7@EncodeA
|
||
$LN6@EncodeA:
|
||
|
||
; 936 : else
|
||
; 937 : {
|
||
; 938 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
00267 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
0026b 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
0026f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
00273 88 45 5b mov BYTE PTR byte_3$[rbp], al
|
||
$LN7@EncodeA:
|
||
|
||
; 939 : }
|
||
; 940 :
|
||
; 941 : loop_index++;
|
||
|
||
00276 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
00279 ff c0 inc eax
|
||
0027b 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 942 :
|
||
; 943 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0027e 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
00282 83 e0 0f and eax, 15
|
||
00285 c1 e0 02 shl eax, 2
|
||
00288 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
0028c 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00292 c1 f9 06 sar ecx, 6
|
||
00295 0b c1 or eax, ecx
|
||
00297 48 98 cdqe
|
||
00299 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
0029e 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 944 :
|
||
; 945 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
002a1 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002a4 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
002a8 0f b6 55 58 movzx edx, BYTE PTR byte_to_add$[rbp]
|
||
002ac 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 946 : number_of_bytes_encoded++;
|
||
|
||
002af 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002b2 ff c0 inc eax
|
||
002b4 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 947 :
|
||
; 948 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
002b7 0f b6 45 5b movzx eax, BYTE PTR byte_3$[rbp]
|
||
002bb 83 e0 3f and eax, 63 ; 0000003fH
|
||
002be 48 98 cdqe
|
||
002c0 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002c5 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 949 :
|
||
; 950 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
002c8 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002cb 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
002cf 0f b6 55 58 movzx edx, BYTE PTR byte_to_add$[rbp]
|
||
002d3 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 951 : number_of_bytes_encoded++;
|
||
|
||
002d6 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002d9 ff c0 inc eax
|
||
002db 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 952 :
|
||
; 953 : /*
|
||
; 954 : if ( ( number_of_bytes_encoded % BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) == 0 )
|
||
; 955 : {
|
||
; 956 : destination[ number_of_bytes_encoded ] = static_cast< char >( CARRIAGE_RETURN );
|
||
; 957 : number_of_bytes_encoded++;
|
||
; 958 :
|
||
; 959 : destination[ number_of_bytes_encoded ] = static_cast< char >( LINE_FEED );
|
||
; 960 : number_of_bytes_encoded++;
|
||
; 961 : }
|
||
; 962 : */
|
||
; 963 : }
|
||
|
||
002de e9 db fd ff ff jmp $LN2@EncodeA
|
||
$LN3@EncodeA:
|
||
|
||
; 964 :
|
||
; 965 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
002e3 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002e6 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
002ea c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
|
||
|
||
; 966 :
|
||
; 967 : // 1999-09-01
|
||
; 968 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 969 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 970 :
|
||
; 971 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
002ee 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002f1 ff c0 inc eax
|
||
002f3 8b c0 mov eax, eax
|
||
002f5 48 8b 4d 70 mov rcx, QWORD PTR destination$[rbp]
|
||
002f9 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
|
||
; 972 :
|
||
; 973 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
002fd ba ff ff ff ff mov edx, -1
|
||
00302 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00309 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
|
||
; 974 :
|
||
; 975 : return( TRUE );
|
||
|
||
0030e b8 01 00 00 00 mov eax, 1
|
||
$LN1@EncodeA:
|
||
|
||
; 976 : }
|
||
|
||
00313 48 8b 8d b8 00
|
||
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
||
0031a 48 33 cd xor rcx, rbp
|
||
0031d e8 00 00 00 00 call __security_check_cookie
|
||
00322 48 8d a5 c0 00
|
||
00 00 lea rsp, QWORD PTR [rbp+192]
|
||
00329 5f pop rdi
|
||
0032a 5e pop rsi
|
||
0032b 5d pop rbp
|
||
0032c c3 ret 0
|
||
?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z ENDP ; CBase64Coding::EncodeA
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
_TEXT SEGMENT
|
||
alphabet$ = 0
|
||
loop_index$ = 80
|
||
number_of_bytes_to_encode$ = 84
|
||
byte_to_add$ = 88
|
||
byte_1$ = 89
|
||
byte_2$ = 90
|
||
byte_3$ = 91
|
||
input_buffer$ = 96
|
||
number_of_bytes_encoded$ = 104
|
||
destination$ = 112
|
||
__$ArrayPad$ = 184
|
||
this$ = 224
|
||
pSource$ = 232
|
||
lSource$ = 240
|
||
destination_string$ = 248
|
||
?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z PROC ; CBase64Coding::Encode, COMDAT
|
||
|
||
; 695 : {
|
||
|
||
$LN9:
|
||
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
|
||
00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
|
||
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00014 55 push rbp
|
||
00015 56 push rsi
|
||
00016 57 push rdi
|
||
00017 48 81 ec e0 00
|
||
00 00 sub rsp, 224 ; 000000e0H
|
||
0001e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
00023 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
0002a 48 33 c5 xor rax, rbp
|
||
0002d 48 89 85 b8 00
|
||
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
||
|
||
; 696 :
|
||
; 697 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
00034 48 8d 45 00 lea rax, QWORD PTR alphabet$[rbp]
|
||
00038 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@
|
||
0003f 48 8b f8 mov rdi, rax
|
||
00042 48 8b f1 mov rsi, rcx
|
||
00045 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
0004a f3 a4 rep movsb
|
||
|
||
; 698 :
|
||
; 699 : int loop_index = 0;
|
||
|
||
0004c c7 45 50 00 00
|
||
00 00 mov DWORD PTR loop_index$[rbp], 0
|
||
|
||
; 700 : int number_of_bytes_to_encode = lSource;
|
||
|
||
00053 8b 85 f0 00 00
|
||
00 mov eax, DWORD PTR lSource$[rbp]
|
||
00059 89 45 54 mov DWORD PTR number_of_bytes_to_encode$[rbp], eax
|
||
|
||
; 701 :
|
||
; 702 : BYTE byte_to_add = 0;
|
||
|
||
0005c c6 45 58 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 703 : BYTE byte_1 = 0;
|
||
|
||
00060 c6 45 59 00 mov BYTE PTR byte_1$[rbp], 0
|
||
|
||
; 704 : BYTE byte_2 = 0;
|
||
|
||
00064 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 705 : BYTE byte_3 = 0;
|
||
|
||
00068 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 706 :
|
||
; 707 : const BYTE * input_buffer = pSource;
|
||
|
||
0006c 48 8b 85 e8 00
|
||
00 00 mov rax, QWORD PTR pSource$[rbp]
|
||
00073 48 89 45 60 mov QWORD PTR input_buffer$[rbp], rax
|
||
|
||
; 708 :
|
||
; 709 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
00077 f2 0f 2a 45 54 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
0007c f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
00084 f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00089 ff c0 inc eax
|
||
0008b 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 710 :
|
||
; 711 : // Now add in the CR/LF pairs, each line is truncated at 72 characters
|
||
; 712 :
|
||
; 713 : // 2000-05-12
|
||
; 714 : // Thanks go to Ilia Golubev (ilia@varicom.co.il) for finding a bug here.
|
||
; 715 : // I was using number_of_bytes_to_encode rather than number_of_bytes_encoded.
|
||
; 716 :
|
||
; 717 : number_of_bytes_encoded += (DWORD)( ( ( number_of_bytes_encoded / BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) + 1 ) * 2 );
|
||
|
||
0008e 33 d2 xor edx, edx
|
||
00090 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00093 b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
00098 f7 f1 div ecx
|
||
0009a 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0009d 8d 44 41 02 lea eax, DWORD PTR [rcx+rax*2+2]
|
||
000a1 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 718 :
|
||
; 719 : LPTSTR destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
000a4 8b 55 68 mov edx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000a7 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
000ae e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
000b3 48 89 45 70 mov QWORD PTR destination$[rbp], rax
|
||
|
||
; 720 :
|
||
; 721 : number_of_bytes_encoded = 0;
|
||
|
||
000b7 c7 45 68 00 00
|
||
00 00 mov DWORD PTR number_of_bytes_encoded$[rbp], 0
|
||
$LN2@Encode:
|
||
|
||
; 722 :
|
||
; 723 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000be 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
000c1 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
000c4 0f 8d 32 02 00
|
||
00 jge $LN3@Encode
|
||
|
||
; 724 : {
|
||
; 725 : // Output the first byte
|
||
; 726 :
|
||
; 727 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000ca 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
000ce 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000d2 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000d6 88 45 59 mov BYTE PTR byte_1$[rbp], al
|
||
|
||
; 728 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000d9 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
000dd c1 f8 02 sar eax, 2
|
||
000e0 48 98 cdqe
|
||
000e2 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
000e7 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 729 :
|
||
; 730 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
000ea 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
000ee 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000f1 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
000f5 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 731 : number_of_bytes_encoded++;
|
||
|
||
000f9 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000fc ff c0 inc eax
|
||
000fe 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 732 :
|
||
; 733 : loop_index++;
|
||
|
||
00101 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
00104 ff c0 inc eax
|
||
00106 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 734 :
|
||
; 735 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00109 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
0010c 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
0010f 0f 8c 94 00 00
|
||
00 jl $LN4@Encode
|
||
|
||
; 736 : {
|
||
; 737 : // We're at the end of the data to encode
|
||
; 738 :
|
||
; 739 : byte_2 = 0;
|
||
|
||
00115 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 740 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
00119 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
0011d 83 e0 03 and eax, 3
|
||
00120 c1 e0 04 shl eax, 4
|
||
00123 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
00127 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
0012d c1 f9 04 sar ecx, 4
|
||
00130 0b c1 or eax, ecx
|
||
00132 48 98 cdqe
|
||
00134 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00139 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 741 :
|
||
; 742 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
0013c 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
00140 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00143 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00147 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 743 : number_of_bytes_encoded++;
|
||
|
||
0014b 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0014e ff c0 inc eax
|
||
00150 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 744 :
|
||
; 745 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00153 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00156 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0015b 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0015f 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 746 : number_of_bytes_encoded++;
|
||
|
||
00163 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00166 ff c0 inc eax
|
||
00168 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 747 :
|
||
; 748 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0016b 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0016e b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00173 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00177 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 749 :
|
||
; 750 : // 1999-09-01
|
||
; 751 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 752 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 753 :
|
||
; 754 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
0017b 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0017e ff c0 inc eax
|
||
00180 8b c0 mov eax, eax
|
||
00182 33 c9 xor ecx, ecx
|
||
00184 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00188 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 755 :
|
||
; 756 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0018c ba ff ff ff ff mov edx, -1
|
||
00191 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00198 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 757 :
|
||
; 758 : return( TRUE );
|
||
|
||
0019d b8 01 00 00 00 mov eax, 1
|
||
001a2 e9 8c 01 00 00 jmp $LN1@Encode
|
||
|
||
; 759 : }
|
||
|
||
001a7 eb 0f jmp SHORT $LN5@Encode
|
||
$LN4@Encode:
|
||
|
||
; 760 : else
|
||
; 761 : {
|
||
; 762 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001a9 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
001ad 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001b1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001b5 88 45 5a mov BYTE PTR byte_2$[rbp], al
|
||
$LN5@Encode:
|
||
|
||
; 763 : }
|
||
; 764 :
|
||
; 765 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001b8 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
001bc 83 e0 03 and eax, 3
|
||
001bf c1 e0 04 shl eax, 4
|
||
001c2 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
001c6 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001cc c1 f9 04 sar ecx, 4
|
||
001cf 0b c1 or eax, ecx
|
||
001d1 48 98 cdqe
|
||
001d3 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
001d8 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 766 :
|
||
; 767 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
001db 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
001df 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001e2 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
001e6 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 768 : number_of_bytes_encoded++;
|
||
|
||
001ea 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001ed ff c0 inc eax
|
||
001ef 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 769 :
|
||
; 770 : loop_index++;
|
||
|
||
001f2 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
001f5 ff c0 inc eax
|
||
001f7 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 771 :
|
||
; 772 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
001fa 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
001fd 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
00200 7c 7c jl SHORT $LN6@Encode
|
||
|
||
; 773 : {
|
||
; 774 : // We ran out of bytes, we need to add the last half of byte_2 and pad
|
||
; 775 : byte_3 = 0;
|
||
|
||
00202 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 776 :
|
||
; 777 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
00206 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
0020a 83 e0 0f and eax, 15
|
||
0020d c1 e0 02 shl eax, 2
|
||
00210 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
00214 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
0021a c1 f9 06 sar ecx, 6
|
||
0021d 0b c1 or eax, ecx
|
||
0021f 48 98 cdqe
|
||
00221 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00226 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 778 :
|
||
; 779 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00229 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
0022d 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00230 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00234 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 780 : number_of_bytes_encoded++;
|
||
|
||
00238 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0023b ff c0 inc eax
|
||
0023d 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 781 :
|
||
; 782 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00240 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00243 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00248 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0024c 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 783 :
|
||
; 784 : // 1999-09-01
|
||
; 785 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 786 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 787 :
|
||
; 788 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00250 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00253 ff c0 inc eax
|
||
00255 8b c0 mov eax, eax
|
||
00257 33 c9 xor ecx, ecx
|
||
00259 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0025d 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 789 :
|
||
; 790 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00261 ba ff ff ff ff mov edx, -1
|
||
00266 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
0026d e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 791 :
|
||
; 792 : return( TRUE );
|
||
|
||
00272 b8 01 00 00 00 mov eax, 1
|
||
00277 e9 b7 00 00 00 jmp $LN1@Encode
|
||
|
||
; 793 : }
|
||
|
||
0027c eb 0f jmp SHORT $LN7@Encode
|
||
$LN6@Encode:
|
||
|
||
; 794 : else
|
||
; 795 : {
|
||
; 796 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
0027e 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
00282 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
00286 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
0028a 88 45 5b mov BYTE PTR byte_3$[rbp], al
|
||
$LN7@Encode:
|
||
|
||
; 797 : }
|
||
; 798 :
|
||
; 799 : loop_index++;
|
||
|
||
0028d 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
00290 ff c0 inc eax
|
||
00292 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 800 :
|
||
; 801 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
00295 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
00299 83 e0 0f and eax, 15
|
||
0029c c1 e0 02 shl eax, 2
|
||
0029f 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
002a3 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
002a9 c1 f9 06 sar ecx, 6
|
||
002ac 0b c1 or eax, ecx
|
||
002ae 48 98 cdqe
|
||
002b0 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002b5 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 802 :
|
||
; 803 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
002b8 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
002bc 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002bf 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
002c3 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 804 : number_of_bytes_encoded++;
|
||
|
||
002c7 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002ca ff c0 inc eax
|
||
002cc 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 805 :
|
||
; 806 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
002cf 0f b6 45 5b movzx eax, BYTE PTR byte_3$[rbp]
|
||
002d3 83 e0 3f and eax, 63 ; 0000003fH
|
||
002d6 48 98 cdqe
|
||
002d8 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002dd 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 807 :
|
||
; 808 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
002e0 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
002e4 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002e7 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
002eb 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 809 : number_of_bytes_encoded++;
|
||
|
||
002ef 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002f2 ff c0 inc eax
|
||
002f4 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 810 :
|
||
; 811 : /*
|
||
; 812 : if ( ( number_of_bytes_encoded % BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) == 0 )
|
||
; 813 : {
|
||
; 814 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( CARRIAGE_RETURN );
|
||
; 815 : number_of_bytes_encoded++;
|
||
; 816 :
|
||
; 817 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( LINE_FEED );
|
||
; 818 : number_of_bytes_encoded++;
|
||
; 819 : }
|
||
; 820 : */
|
||
; 821 : }
|
||
|
||
002f7 e9 c2 fd ff ff jmp $LN2@Encode
|
||
$LN3@Encode:
|
||
|
||
; 822 :
|
||
; 823 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
002fc 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002ff b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00304 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00308 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 824 :
|
||
; 825 : // 1999-09-01
|
||
; 826 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 827 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 828 :
|
||
; 829 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
0030c 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0030f ff c0 inc eax
|
||
00311 8b c0 mov eax, eax
|
||
00313 33 c9 xor ecx, ecx
|
||
00315 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00319 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 830 :
|
||
; 831 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0031d ba ff ff ff ff mov edx, -1
|
||
00322 48 8b 8d f8 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00329 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 832 :
|
||
; 833 : return( TRUE );
|
||
|
||
0032e b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode:
|
||
|
||
; 834 : }
|
||
|
||
00333 48 8b 8d b8 00
|
||
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
||
0033a 48 33 cd xor rcx, rbp
|
||
0033d e8 00 00 00 00 call __security_check_cookie
|
||
00342 48 8d a5 c0 00
|
||
00 00 lea rsp, QWORD PTR [rbp+192]
|
||
00349 5f pop rdi
|
||
0034a 5e pop rsi
|
||
0034b 5d pop rbp
|
||
0034c c3 ret 0
|
||
?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ENDP ; CBase64Coding::Encode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
_TEXT SEGMENT
|
||
alphabet$ = 0
|
||
loop_index$ = 80
|
||
number_of_bytes_to_encode$ = 84
|
||
byte_to_add$ = 88
|
||
byte_1$ = 89
|
||
byte_2$ = 90
|
||
byte_3$ = 91
|
||
input_buffer$ = 96
|
||
number_of_bytes_encoded$ = 104
|
||
destination$ = 112
|
||
__$ArrayPad$ = 184
|
||
this$ = 224
|
||
source$ = 232
|
||
destination_string$ = 240
|
||
?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z PROC ; CBase64Coding::Encode, COMDAT
|
||
|
||
; 555 : {
|
||
|
||
$LN10:
|
||
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 56 push rsi
|
||
00011 57 push rdi
|
||
00012 48 81 ec e0 00
|
||
00 00 sub rsp, 224 ; 000000e0H
|
||
00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
0001e 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
00025 48 33 c5 xor rax, rbp
|
||
00028 48 89 85 b8 00
|
||
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
||
|
||
; 556 :
|
||
; 557 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002f 48 8d 45 00 lea rax, QWORD PTR alphabet$[rbp]
|
||
00033 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@
|
||
0003a 48 8b f8 mov rdi, rax
|
||
0003d 48 8b f1 mov rsi, rcx
|
||
00040 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00045 f3 a4 rep movsb
|
||
|
||
; 558 :
|
||
; 559 : int loop_index = 0;
|
||
|
||
00047 c7 45 50 00 00
|
||
00 00 mov DWORD PTR loop_index$[rbp], 0
|
||
|
||
; 560 : int number_of_bytes_to_encode = (int)source.GetSize();
|
||
|
||
0004e 48 8b 8d e8 00
|
||
00 00 mov rcx, QWORD PTR source$[rbp]
|
||
00055 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
0005a 89 45 54 mov DWORD PTR number_of_bytes_to_encode$[rbp], eax
|
||
|
||
; 561 :
|
||
; 562 : BYTE byte_to_add = 0;
|
||
|
||
0005d c6 45 58 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 563 : BYTE byte_1 = 0;
|
||
|
||
00061 c6 45 59 00 mov BYTE PTR byte_1$[rbp], 0
|
||
|
||
; 564 : BYTE byte_2 = 0;
|
||
|
||
00065 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 565 : BYTE byte_3 = 0;
|
||
|
||
00069 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 566 :
|
||
; 567 : const BYTE * input_buffer = source.GetData();
|
||
|
||
0006d 48 8b 8d e8 00
|
||
00 00 mov rcx, QWORD PTR source$[rbp]
|
||
00074 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
00079 48 89 45 60 mov QWORD PTR input_buffer$[rbp], rax
|
||
|
||
; 568 :
|
||
; 569 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
0007d f2 0f 2a 45 54 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00082 f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0008a f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
0008f ff c0 inc eax
|
||
00091 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 570 :
|
||
; 571 : // Now add in the CR/LF pairs, each line is truncated at 72 characters
|
||
; 572 :
|
||
; 573 : // 2000-05-12
|
||
; 574 : // Thanks go to Ilia Golubev (ilia@varicom.co.il) for finding a bug here.
|
||
; 575 : // I was using number_of_bytes_to_encode rather than number_of_bytes_encoded.
|
||
; 576 :
|
||
; 577 : number_of_bytes_encoded += (DWORD)( ( ( number_of_bytes_encoded / BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) + 1 ) * 2 );
|
||
|
||
00094 33 d2 xor edx, edx
|
||
00096 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00099 b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
0009e f7 f1 div ecx
|
||
000a0 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000a3 8d 44 41 02 lea eax, DWORD PTR [rcx+rax*2+2]
|
||
000a7 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 578 :
|
||
; 579 : LPTSTR destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
000aa 8b 55 68 mov edx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000ad 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
000b4 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
000b9 48 89 45 70 mov QWORD PTR destination$[rbp], rax
|
||
|
||
; 580 :
|
||
; 581 : number_of_bytes_encoded = 0;
|
||
|
||
000bd c7 45 68 00 00
|
||
00 00 mov DWORD PTR number_of_bytes_encoded$[rbp], 0
|
||
$LN2@Encode:
|
||
|
||
; 582 :
|
||
; 583 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000c4 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
000c7 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
000ca 0f 8d 74 02 00
|
||
00 jge $LN3@Encode
|
||
|
||
; 584 : {
|
||
; 585 : // Output the first byte
|
||
; 586 :
|
||
; 587 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000d0 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
000d4 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000d8 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000dc 88 45 59 mov BYTE PTR byte_1$[rbp], al
|
||
|
||
; 588 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000df 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
000e3 c1 f8 02 sar eax, 2
|
||
000e6 48 98 cdqe
|
||
000e8 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
000ed 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 589 :
|
||
; 590 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
000f0 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
000f4 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
000f7 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
000fb 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 591 : number_of_bytes_encoded++;
|
||
|
||
000ff 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00102 ff c0 inc eax
|
||
00104 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 592 :
|
||
; 593 : loop_index++;
|
||
|
||
00107 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
0010a ff c0 inc eax
|
||
0010c 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 594 :
|
||
; 595 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
0010f 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00112 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
00115 0f 8c 94 00 00
|
||
00 jl $LN4@Encode
|
||
|
||
; 596 : {
|
||
; 597 : // We're at the end of the data to encode
|
||
; 598 :
|
||
; 599 : byte_2 = 0;
|
||
|
||
0011b c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 600 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
0011f 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
00123 83 e0 03 and eax, 3
|
||
00126 c1 e0 04 shl eax, 4
|
||
00129 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
0012d 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00133 c1 f9 04 sar ecx, 4
|
||
00136 0b c1 or eax, ecx
|
||
00138 48 98 cdqe
|
||
0013a 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
0013f 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 601 :
|
||
; 602 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00142 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
00146 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00149 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0014d 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 603 : number_of_bytes_encoded++;
|
||
|
||
00151 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00154 ff c0 inc eax
|
||
00156 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 604 :
|
||
; 605 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00159 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0015c b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00161 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00165 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 606 : number_of_bytes_encoded++;
|
||
|
||
00169 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0016c ff c0 inc eax
|
||
0016e 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 607 :
|
||
; 608 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00171 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00174 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00179 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0017d 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 609 :
|
||
; 610 : // 1999-09-01
|
||
; 611 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 612 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 613 :
|
||
; 614 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00181 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00184 ff c0 inc eax
|
||
00186 8b c0 mov eax, eax
|
||
00188 33 c9 xor ecx, ecx
|
||
0018a 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0018e 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 615 :
|
||
; 616 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00192 ba ff ff ff ff mov edx, -1
|
||
00197 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
0019e e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 617 :
|
||
; 618 : return( TRUE );
|
||
|
||
001a3 b8 01 00 00 00 mov eax, 1
|
||
001a8 e9 ce 01 00 00 jmp $LN1@Encode
|
||
|
||
; 619 : }
|
||
|
||
001ad eb 0f jmp SHORT $LN5@Encode
|
||
$LN4@Encode:
|
||
|
||
; 620 : else
|
||
; 621 : {
|
||
; 622 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001af 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
001b3 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001b7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001bb 88 45 5a mov BYTE PTR byte_2$[rbp], al
|
||
$LN5@Encode:
|
||
|
||
; 623 : }
|
||
; 624 :
|
||
; 625 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001be 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
001c2 83 e0 03 and eax, 3
|
||
001c5 c1 e0 04 shl eax, 4
|
||
001c8 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
001cc 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001d2 c1 f9 04 sar ecx, 4
|
||
001d5 0b c1 or eax, ecx
|
||
001d7 48 98 cdqe
|
||
001d9 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
001de 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 626 :
|
||
; 627 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
001e1 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
001e5 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001e8 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
001ec 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 628 : number_of_bytes_encoded++;
|
||
|
||
001f0 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
001f3 ff c0 inc eax
|
||
001f5 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 629 :
|
||
; 630 : loop_index++;
|
||
|
||
001f8 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
001fb ff c0 inc eax
|
||
001fd 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 631 :
|
||
; 632 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00200 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00203 39 45 50 cmp DWORD PTR loop_index$[rbp], eax
|
||
00206 7c 7c jl SHORT $LN6@Encode
|
||
|
||
; 633 : {
|
||
; 634 : // We ran out of bytes, we need to add the last half of byte_2 and pad
|
||
; 635 : byte_3 = 0;
|
||
|
||
00208 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 636 :
|
||
; 637 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0020c 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
00210 83 e0 0f and eax, 15
|
||
00213 c1 e0 02 shl eax, 2
|
||
00216 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
0021a 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00220 c1 f9 06 sar ecx, 6
|
||
00223 0b c1 or eax, ecx
|
||
00225 48 98 cdqe
|
||
00227 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
0022c 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 638 :
|
||
; 639 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
0022f 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
00233 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00236 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0023a 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 640 : number_of_bytes_encoded++;
|
||
|
||
0023e 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00241 ff c0 inc eax
|
||
00243 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 641 :
|
||
; 642 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00246 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00249 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0024e 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00252 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 643 :
|
||
; 644 : // 1999-09-01
|
||
; 645 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 646 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 647 :
|
||
; 648 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00256 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00259 ff c0 inc eax
|
||
0025b 8b c0 mov eax, eax
|
||
0025d 33 c9 xor ecx, ecx
|
||
0025f 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00263 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 649 :
|
||
; 650 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00267 ba ff ff ff ff mov edx, -1
|
||
0026c 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00273 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 651 :
|
||
; 652 : return( TRUE );
|
||
|
||
00278 b8 01 00 00 00 mov eax, 1
|
||
0027d e9 f9 00 00 00 jmp $LN1@Encode
|
||
|
||
; 653 : }
|
||
|
||
00282 eb 0f jmp SHORT $LN7@Encode
|
||
$LN6@Encode:
|
||
|
||
; 654 : else
|
||
; 655 : {
|
||
; 656 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
00284 48 63 45 50 movsxd rax, DWORD PTR loop_index$[rbp]
|
||
00288 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
0028c 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
00290 88 45 5b mov BYTE PTR byte_3$[rbp], al
|
||
$LN7@Encode:
|
||
|
||
; 657 : }
|
||
; 658 :
|
||
; 659 : loop_index++;
|
||
|
||
00293 8b 45 50 mov eax, DWORD PTR loop_index$[rbp]
|
||
00296 ff c0 inc eax
|
||
00298 89 45 50 mov DWORD PTR loop_index$[rbp], eax
|
||
|
||
; 660 :
|
||
; 661 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0029b 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
0029f 83 e0 0f and eax, 15
|
||
002a2 c1 e0 02 shl eax, 2
|
||
002a5 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
002a9 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
002af c1 f9 06 sar ecx, 6
|
||
002b2 0b c1 or eax, ecx
|
||
002b4 48 98 cdqe
|
||
002b6 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002bb 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 662 :
|
||
; 663 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
002be 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
002c2 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002c5 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
002c9 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 664 : number_of_bytes_encoded++;
|
||
|
||
002cd 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002d0 ff c0 inc eax
|
||
002d2 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 665 :
|
||
; 666 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
002d5 0f b6 45 5b movzx eax, BYTE PTR byte_3$[rbp]
|
||
002d9 83 e0 3f and eax, 63 ; 0000003fH
|
||
002dc 48 98 cdqe
|
||
002de 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002e3 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 667 :
|
||
; 668 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
002e6 0f b6 45 58 movzx eax, BYTE PTR byte_to_add$[rbp]
|
||
002ea 8b 4d 68 mov ecx, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002ed 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
002f1 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 669 : number_of_bytes_encoded++;
|
||
|
||
002f5 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
002f8 ff c0 inc eax
|
||
002fa 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 670 :
|
||
; 671 : if ( ( number_of_bytes_encoded % BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) == 0 )
|
||
|
||
002fd 33 d2 xor edx, edx
|
||
002ff 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00302 b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
00307 f7 f1 div ecx
|
||
00309 8b c2 mov eax, edx
|
||
0030b 85 c0 test eax, eax
|
||
0030d 75 30 jne SHORT $LN8@Encode
|
||
|
||
; 672 : {
|
||
; 673 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( CARRIAGE_RETURN );
|
||
|
||
0030f 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00312 b9 0d 00 00 00 mov ecx, 13
|
||
00317 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
0031b 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 674 : number_of_bytes_encoded++;
|
||
|
||
0031f 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00322 ff c0 inc eax
|
||
00324 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
|
||
; 675 :
|
||
; 676 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( LINE_FEED );
|
||
|
||
00327 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0032a b9 0a 00 00 00 mov ecx, 10
|
||
0032f 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00333 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 677 : number_of_bytes_encoded++;
|
||
|
||
00337 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
0033a ff c0 inc eax
|
||
0033c 89 45 68 mov DWORD PTR number_of_bytes_encoded$[rbp], eax
|
||
$LN8@Encode:
|
||
|
||
; 678 : }
|
||
; 679 : }
|
||
|
||
0033f e9 80 fd ff ff jmp $LN2@Encode
|
||
$LN3@Encode:
|
||
|
||
; 680 :
|
||
; 681 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00344 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00347 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0034c 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00350 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 682 :
|
||
; 683 : // 1999-09-01
|
||
; 684 : // Thanks go to Yurong Lin (ylin@dial.pipex.com) for finding a bug here.
|
||
; 685 : // We must NULL terminate the string before letting CString have the buffer back.
|
||
; 686 :
|
||
; 687 : destination[ number_of_bytes_encoded + 1 ] = 0;
|
||
|
||
00354 8b 45 68 mov eax, DWORD PTR number_of_bytes_encoded$[rbp]
|
||
00357 ff c0 inc eax
|
||
00359 8b c0 mov eax, eax
|
||
0035b 33 c9 xor ecx, ecx
|
||
0035d 48 8b 55 70 mov rdx, QWORD PTR destination$[rbp]
|
||
00361 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 688 :
|
||
; 689 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00365 ba ff ff ff ff mov edx, -1
|
||
0036a 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination_string$[rbp]
|
||
00371 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 690 :
|
||
; 691 : return( TRUE );
|
||
|
||
00376 b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode:
|
||
|
||
; 692 : }
|
||
|
||
0037b 48 8b 8d b8 00
|
||
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
||
00382 48 33 cd xor rcx, rbp
|
||
00385 e8 00 00 00 00 call __security_check_cookie
|
||
0038a 48 8d a5 c0 00
|
||
00 00 lea rsp, QWORD PTR [rbp+192]
|
||
00391 5f pop rdi
|
||
00392 5e pop rsi
|
||
00393 5d pop rbp
|
||
00394 c3 ret 0
|
||
?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ENDP ; CBase64Coding::Encode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
_TEXT SEGMENT
|
||
alphabet$ = 0
|
||
source_index$ = 80
|
||
number_of_bytes_to_encode$ = 84
|
||
byte_to_add$ = 88
|
||
byte_1$ = 89
|
||
byte_2$ = 90
|
||
byte_3$ = 91
|
||
input_buffer$ = 96
|
||
add_index$ = 104
|
||
__$ArrayPad$ = 176
|
||
this$ = 224
|
||
source$ = 232
|
||
destination$ = 240
|
||
?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z PROC ; CBase64Coding::Encode, COMDAT
|
||
|
||
; 448 : {
|
||
|
||
$LN9:
|
||
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 56 push rsi
|
||
00011 57 push rdi
|
||
00012 48 81 ec e0 00
|
||
00 00 sub rsp, 224 ; 000000e0H
|
||
00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
0001e 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
00025 48 33 c5 xor rax, rbp
|
||
00028 48 89 85 b0 00
|
||
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
||
|
||
; 449 :
|
||
; 450 : // We don't want to make this static so we can reduce our
|
||
; 451 : // footprint in the library
|
||
; 452 :
|
||
; 453 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002f 48 8d 45 00 lea rax, QWORD PTR alphabet$[rbp]
|
||
00033 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_C@_0EB@NFPJKBDG@ABCDEFGHIJKLMNOPQRSTUVWXYZabcde@
|
||
0003a 48 8b f8 mov rdi, rax
|
||
0003d 48 8b f1 mov rsi, rcx
|
||
00040 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00045 f3 a4 rep movsb
|
||
|
||
; 454 :
|
||
; 455 : int source_index = 0;
|
||
|
||
00047 c7 45 50 00 00
|
||
00 00 mov DWORD PTR source_index$[rbp], 0
|
||
|
||
; 456 : int number_of_bytes_to_encode = (int)source.GetSize();
|
||
|
||
0004e 48 8b 8d e8 00
|
||
00 00 mov rcx, QWORD PTR source$[rbp]
|
||
00055 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
0005a 89 45 54 mov DWORD PTR number_of_bytes_to_encode$[rbp], eax
|
||
|
||
; 457 :
|
||
; 458 : BYTE byte_to_add = 0;
|
||
|
||
0005d c6 45 58 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 459 : BYTE byte_1 = 0;
|
||
|
||
00061 c6 45 59 00 mov BYTE PTR byte_1$[rbp], 0
|
||
|
||
; 460 : BYTE byte_2 = 0;
|
||
|
||
00065 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 461 : BYTE byte_3 = 0;
|
||
|
||
00069 c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 462 :
|
||
; 463 : const BYTE * input_buffer = source.GetData();
|
||
|
||
0006d 48 8b 8d e8 00
|
||
00 00 mov rcx, QWORD PTR source$[rbp]
|
||
00074 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
00079 48 89 45 60 mov QWORD PTR input_buffer$[rbp], rax
|
||
|
||
; 464 :
|
||
; 465 : DWORD add_index = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
0007d f2 0f 2a 45 54 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00082 f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0008a f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
0008f ff c0 inc eax
|
||
00091 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 466 : add_index += ( ( number_of_bytes_to_encode % 3 ) + 1 );
|
||
|
||
00094 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00097 99 cdq
|
||
00098 b9 03 00 00 00 mov ecx, 3
|
||
0009d f7 f9 idiv ecx
|
||
0009f 8b c2 mov eax, edx
|
||
000a1 8b 4d 68 mov ecx, DWORD PTR add_index$[rbp]
|
||
000a4 8d 44 01 01 lea eax, DWORD PTR [rcx+rax+1]
|
||
000a8 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 467 :
|
||
; 468 : destination.SetSize( add_index );
|
||
|
||
000ab 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
000ae 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
000b5 8b d0 mov edx, eax
|
||
000b7 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
000be e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 469 : add_index = 0;
|
||
|
||
000c3 c7 45 68 00 00
|
||
00 00 mov DWORD PTR add_index$[rbp], 0
|
||
$LN2@Encode:
|
||
|
||
; 470 :
|
||
; 471 : while( source_index < number_of_bytes_to_encode )
|
||
|
||
000ca 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
000cd 39 45 50 cmp DWORD PTR source_index$[rbp], eax
|
||
000d0 0f 8d 68 02 00
|
||
00 jge $LN3@Encode
|
||
|
||
; 472 : {
|
||
; 473 : // Output the first byte
|
||
; 474 :
|
||
; 475 : byte_1 = input_buffer[ source_index ];
|
||
|
||
000d6 48 63 45 50 movsxd rax, DWORD PTR source_index$[rbp]
|
||
000da 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000de 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000e2 88 45 59 mov BYTE PTR byte_1$[rbp], al
|
||
|
||
; 476 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000e5 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
000e9 c1 f8 02 sar eax, 2
|
||
000ec 48 98 cdqe
|
||
000ee 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
000f3 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 477 :
|
||
; 478 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
000f6 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
000f9 44 0f b6 45 58 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
000fe 8b d0 mov edx, eax
|
||
00100 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00107 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 479 : add_index++;
|
||
|
||
0010c 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
0010f ff c0 inc eax
|
||
00111 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 480 :
|
||
; 481 : source_index++;
|
||
|
||
00114 8b 45 50 mov eax, DWORD PTR source_index$[rbp]
|
||
00117 ff c0 inc eax
|
||
00119 89 45 50 mov DWORD PTR source_index$[rbp], eax
|
||
|
||
; 482 :
|
||
; 483 : if ( source_index >= number_of_bytes_to_encode )
|
||
|
||
0011c 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
0011f 39 45 50 cmp DWORD PTR source_index$[rbp], eax
|
||
00122 0f 8c a1 00 00
|
||
00 jl $LN4@Encode
|
||
|
||
; 484 : {
|
||
; 485 : // We're at the end of the data to encode
|
||
; 486 :
|
||
; 487 : byte_2 = 0;
|
||
|
||
00128 c6 45 5a 00 mov BYTE PTR byte_2$[rbp], 0
|
||
|
||
; 488 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
0012c 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
00130 83 e0 03 and eax, 3
|
||
00133 c1 e0 04 shl eax, 4
|
||
00136 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
0013a 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00140 c1 f9 04 sar ecx, 4
|
||
00143 0b c1 or eax, ecx
|
||
00145 48 98 cdqe
|
||
00147 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
0014c 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 489 :
|
||
; 490 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0014f 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00152 44 0f b6 45 58 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
00157 8b d0 mov edx, eax
|
||
00159 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00160 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 491 : add_index++;
|
||
|
||
00165 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00168 ff c0 inc eax
|
||
0016a 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 492 :
|
||
; 493 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0016d 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00170 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
00173 8b d0 mov edx, eax
|
||
00175 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0017c e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 494 : add_index++;
|
||
|
||
00181 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00184 ff c0 inc eax
|
||
00186 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 495 :
|
||
; 496 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00189 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
0018c 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
0018f 8b d0 mov edx, eax
|
||
00191 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00198 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 497 : add_index++;
|
||
|
||
0019d 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
001a0 ff c0 inc eax
|
||
001a2 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 498 :
|
||
; 499 : destination.SetSize( add_index );
|
||
|
||
001a5 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
001a8 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
001af 8b d0 mov edx, eax
|
||
001b1 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
001b8 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 500 : return( TRUE );
|
||
|
||
001bd b8 01 00 00 00 mov eax, 1
|
||
001c2 e9 b0 01 00 00 jmp $LN1@Encode
|
||
|
||
; 501 : }
|
||
|
||
001c7 eb 0f jmp SHORT $LN5@Encode
|
||
$LN4@Encode:
|
||
|
||
; 502 : else
|
||
; 503 : {
|
||
; 504 : byte_2 = input_buffer[ source_index ];
|
||
|
||
001c9 48 63 45 50 movsxd rax, DWORD PTR source_index$[rbp]
|
||
001cd 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001d1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001d5 88 45 5a mov BYTE PTR byte_2$[rbp], al
|
||
$LN5@Encode:
|
||
|
||
; 505 : }
|
||
; 506 :
|
||
; 507 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001d8 0f b6 45 59 movzx eax, BYTE PTR byte_1$[rbp]
|
||
001dc 83 e0 03 and eax, 3
|
||
001df c1 e0 04 shl eax, 4
|
||
001e2 0f b6 4d 5a movzx ecx, BYTE PTR byte_2$[rbp]
|
||
001e6 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001ec c1 f9 04 sar ecx, 4
|
||
001ef 0b c1 or eax, ecx
|
||
001f1 48 98 cdqe
|
||
001f3 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
001f8 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 508 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
001fb 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
001fe 44 0f b6 45 58 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
00203 8b d0 mov edx, eax
|
||
00205 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0020c e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 509 : add_index++;
|
||
|
||
00211 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00214 ff c0 inc eax
|
||
00216 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 510 :
|
||
; 511 : source_index++;
|
||
|
||
00219 8b 45 50 mov eax, DWORD PTR source_index$[rbp]
|
||
0021c ff c0 inc eax
|
||
0021e 89 45 50 mov DWORD PTR source_index$[rbp], eax
|
||
|
||
; 512 :
|
||
; 513 : if ( source_index >= number_of_bytes_to_encode )
|
||
|
||
00221 8b 45 54 mov eax, DWORD PTR number_of_bytes_to_encode$[rbp]
|
||
00224 39 45 50 cmp DWORD PTR source_index$[rbp], eax
|
||
00227 0f 8c 85 00 00
|
||
00 jl $LN6@Encode
|
||
|
||
; 514 : {
|
||
; 515 : // We ran out of bytes, we need to add the last half of byte_2 and pad
|
||
; 516 : byte_3 = 0;
|
||
|
||
0022d c6 45 5b 00 mov BYTE PTR byte_3$[rbp], 0
|
||
|
||
; 517 :
|
||
; 518 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
00231 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
00235 83 e0 0f and eax, 15
|
||
00238 c1 e0 02 shl eax, 2
|
||
0023b 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
0023f 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00245 c1 f9 06 sar ecx, 6
|
||
00248 0b c1 or eax, ecx
|
||
0024a 48 98 cdqe
|
||
0024c 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00251 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 519 :
|
||
; 520 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00254 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00257 44 0f b6 45 58 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
0025c 8b d0 mov edx, eax
|
||
0025e 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00265 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 521 : add_index++;
|
||
|
||
0026a 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
0026d ff c0 inc eax
|
||
0026f 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 522 :
|
||
; 523 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00272 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00275 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
00278 8b d0 mov edx, eax
|
||
0027a 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00281 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 524 : add_index++;
|
||
|
||
00286 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00289 ff c0 inc eax
|
||
0028b 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 525 :
|
||
; 526 : destination.SetSize( add_index );
|
||
|
||
0028e 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00291 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00298 8b d0 mov edx, eax
|
||
0029a 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
002a1 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 527 : return( TRUE );
|
||
|
||
002a6 b8 01 00 00 00 mov eax, 1
|
||
002ab e9 c7 00 00 00 jmp $LN1@Encode
|
||
|
||
; 528 : }
|
||
|
||
002b0 eb 0f jmp SHORT $LN7@Encode
|
||
$LN6@Encode:
|
||
|
||
; 529 : else
|
||
; 530 : {
|
||
; 531 : byte_3 = input_buffer[ source_index ];
|
||
|
||
002b2 48 63 45 50 movsxd rax, DWORD PTR source_index$[rbp]
|
||
002b6 48 8b 4d 60 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
002ba 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
002be 88 45 5b mov BYTE PTR byte_3$[rbp], al
|
||
$LN7@Encode:
|
||
|
||
; 532 : }
|
||
; 533 :
|
||
; 534 : source_index++;
|
||
|
||
002c1 8b 45 50 mov eax, DWORD PTR source_index$[rbp]
|
||
002c4 ff c0 inc eax
|
||
002c6 89 45 50 mov DWORD PTR source_index$[rbp], eax
|
||
|
||
; 535 :
|
||
; 536 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
002c9 0f b6 45 5a movzx eax, BYTE PTR byte_2$[rbp]
|
||
002cd 83 e0 0f and eax, 15
|
||
002d0 c1 e0 02 shl eax, 2
|
||
002d3 0f b6 4d 5b movzx ecx, BYTE PTR byte_3$[rbp]
|
||
002d7 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
002dd c1 f9 06 sar ecx, 6
|
||
002e0 0b c1 or eax, ecx
|
||
002e2 48 98 cdqe
|
||
002e4 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
002e9 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 537 :
|
||
; 538 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
002ec 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
002ef 44 0f b6 45 58 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
002f4 8b d0 mov edx, eax
|
||
002f6 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
002fd e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 539 : add_index++;
|
||
|
||
00302 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00305 ff c0 inc eax
|
||
00307 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 540 :
|
||
; 541 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
0030a 0f b6 45 5b movzx eax, BYTE PTR byte_3$[rbp]
|
||
0030e 83 e0 3f and eax, 63 ; 0000003fH
|
||
00311 48 98 cdqe
|
||
00313 0f b6 44 05 00 movzx eax, BYTE PTR alphabet$[rbp+rax]
|
||
00318 88 45 58 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 542 :
|
||
; 543 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0031b 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
0031e 44 0f b6 45 58 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
00323 8b d0 mov edx, eax
|
||
00325 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0032c e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 544 : add_index++;
|
||
|
||
00331 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00334 ff c0 inc eax
|
||
00336 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 545 : }
|
||
|
||
00339 e9 8c fd ff ff jmp $LN2@Encode
|
||
$LN3@Encode:
|
||
|
||
; 546 :
|
||
; 547 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0033e 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00341 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
00344 8b d0 mov edx, eax
|
||
00346 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0034d e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 548 : add_index++;
|
||
|
||
00352 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
00355 ff c0 inc eax
|
||
00357 89 45 68 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 549 :
|
||
; 550 : destination.SetSize( add_index );
|
||
|
||
0035a 8b 45 68 mov eax, DWORD PTR add_index$[rbp]
|
||
0035d 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00364 8b d0 mov edx, eax
|
||
00366 48 8b 8d f0 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0036d e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 551 : return( TRUE );
|
||
|
||
00372 b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode:
|
||
|
||
; 552 : }
|
||
|
||
00377 48 8b 8d b0 00
|
||
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
||
0037e 48 33 cd xor rcx, rbp
|
||
00381 e8 00 00 00 00 call __security_check_cookie
|
||
00386 48 8d a5 c0 00
|
||
00 00 lea rsp, QWORD PTR [rbp+192]
|
||
0038d 5f pop rdi
|
||
0038e 5e pop rsi
|
||
0038f 5d pop rbp
|
||
00390 c3 ret 0
|
||
?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z ENDP ; CBase64Coding::Encode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z
|
||
_TEXT SEGMENT
|
||
return_value$ = 0
|
||
byte_to_add$ = 4
|
||
character_1$ = 5
|
||
character_2$ = 6
|
||
character_3$ = 7
|
||
character_4$ = 8
|
||
index$ = 12
|
||
number_of_bytes_to_decode$ = 16
|
||
add_index$ = 20
|
||
input_buffer$ = 24
|
||
this$ = 112
|
||
source$ = 120
|
||
destination$ = 128
|
||
?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z PROC ; CBase64Coding::Decode, COMDAT
|
||
|
||
; 302 : {
|
||
|
||
$LN23:
|
||
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 48 81 ec 80 00
|
||
00 00 sub rsp, 128 ; 00000080H
|
||
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 303 :
|
||
; 304 : if ( m_DecoderTable[ 0 ] == 0x00 )
|
||
|
||
0001c b8 01 00 00 00 mov eax, 1
|
||
00021 48 6b c0 00 imul rax, rax, 0
|
||
00025 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00029 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0002e 85 c0 test eax, eax
|
||
00030 75 0d jne SHORT $LN4@Decode
|
||
|
||
; 305 : {
|
||
; 306 : m_InitializeDecoderTable();
|
||
|
||
00032 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
00036 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00039 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
0003d ff 10 call QWORD PTR [rax]
|
||
$LN4@Decode:
|
||
|
||
; 307 : }
|
||
; 308 :
|
||
; 309 : BOOL return_value = TRUE; //Ĭ<>Ϸ<EFBFBD><CFB7>سɹ<D8B3>
|
||
|
||
0003f c7 45 00 01 00
|
||
00 00 mov DWORD PTR return_value$[rbp], 1
|
||
|
||
; 310 :
|
||
; 311 : BYTE byte_to_add = 0;
|
||
|
||
00046 c6 45 04 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 312 : BYTE character_1 = 0;
|
||
|
||
0004a c6 45 05 00 mov BYTE PTR character_1$[rbp], 0
|
||
|
||
; 313 : BYTE character_2 = 0;
|
||
|
||
0004e c6 45 06 00 mov BYTE PTR character_2$[rbp], 0
|
||
|
||
; 314 : BYTE character_3 = 0;
|
||
|
||
00052 c6 45 07 00 mov BYTE PTR character_3$[rbp], 0
|
||
|
||
; 315 : BYTE character_4 = 0;
|
||
|
||
00056 c6 45 08 00 mov BYTE PTR character_4$[rbp], 0
|
||
|
||
; 316 :
|
||
; 317 : int index = 0;
|
||
|
||
0005a c7 45 0c 00 00
|
||
00 00 mov DWORD PTR index$[rbp], 0
|
||
|
||
; 318 : int number_of_bytes_to_decode = source.GetLength();
|
||
|
||
00061 48 8b 4d 78 mov rcx, QWORD PTR source$[rbp]
|
||
00065 e8 00 00 00 00 call ?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ ; ATL::CSimpleStringT<char,0>::GetLength
|
||
0006a 89 45 10 mov DWORD PTR number_of_bytes_to_decode$[rbp], eax
|
||
|
||
; 319 :
|
||
; 320 : DWORD add_index = (DWORD) ( (double) number_of_bytes_to_decode * (double) 0.75 ) + 1;
|
||
|
||
0006d f2 0f 2a 45 10 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
00072 f2 0f 59 05 00
|
||
00 00 00 mulsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0007a f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
0007f ff c0 inc eax
|
||
00081 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 321 :
|
||
; 322 : destination.SetSize( add_index );
|
||
|
||
00084 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
00087 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
0008e 8b d0 mov edx, eax
|
||
00090 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00097 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 323 : add_index = 0;
|
||
|
||
0009c c7 45 14 00 00
|
||
00 00 mov DWORD PTR add_index$[rbp], 0
|
||
|
||
; 324 :
|
||
; 325 : // Since we're decoding, we are most likely in a performance-minded
|
||
; 326 : // part of an application, let's go for a speedy method for accessing
|
||
; 327 : // the source data.
|
||
; 328 :
|
||
; 329 : char * input_buffer = (char*)(const char *)source;
|
||
|
||
000a3 48 8b 4d 78 mov rcx, QWORD PTR source$[rbp]
|
||
000a7 e8 00 00 00 00 call ??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ ; ATL::CSimpleStringT<char,0>::operator char const *
|
||
000ac 48 89 45 18 mov QWORD PTR input_buffer$[rbp], rax
|
||
$LN2@Decode:
|
||
|
||
; 330 :
|
||
; 331 : while( index < number_of_bytes_to_decode )
|
||
|
||
000b0 8b 45 10 mov eax, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
000b3 39 45 0c cmp DWORD PTR index$[rbp], eax
|
||
000b6 0f 8d 02 03 00
|
||
00 jge $LN3@Decode
|
||
|
||
; 332 : {
|
||
; 333 : character_1 = __get_character( reinterpret_cast< const BYTE * >( input_buffer ), m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
000bc 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
000c0 48 83 c0 08 add rax, 8
|
||
000c4 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
000c8 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
000cc 48 8b d0 mov rdx, rax
|
||
000cf 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000d3 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
000d8 88 45 05 mov BYTE PTR character_1$[rbp], al
|
||
|
||
; 334 :
|
||
; 335 : if ( character_1 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
000db 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
000df 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
000e2 0f 84 62 01 00
|
||
00 je $LN5@Decode
|
||
|
||
; 336 : {
|
||
; 337 : if ( m_DecoderTable[ character_1 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
000e8 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
000ec 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
000f0 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
000f5 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
000fa 75 13 jne SHORT $LN7@Decode
|
||
|
||
; 338 : {
|
||
; 339 : destination.RemoveAll();
|
||
|
||
000fc 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00103 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 340 : return( FALSE );
|
||
|
||
00108 33 c0 xor eax, eax
|
||
0010a e9 ca 02 00 00 jmp $LN1@Decode
|
||
$LN7@Decode:
|
||
|
||
; 341 : }
|
||
; 342 :
|
||
; 343 : character_2 = __get_character( reinterpret_cast< const BYTE * >( input_buffer ), m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
0010f 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
00113 48 83 c0 08 add rax, 8
|
||
00117 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
0011b 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
0011f 48 8b d0 mov rdx, rax
|
||
00122 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
00126 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
0012b 88 45 06 mov BYTE PTR character_2$[rbp], al
|
||
|
||
; 344 :
|
||
; 345 : if ( character_2 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
0012e 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
00132 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00135 0f 84 05 01 00
|
||
00 je $LN8@Decode
|
||
|
||
; 346 : {
|
||
; 347 : if ( m_DecoderTable[ character_2 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
0013b 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
0013f 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00143 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00148 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
0014d 75 13 jne SHORT $LN10@Decode
|
||
|
||
; 348 : {
|
||
; 349 : destination.RemoveAll();
|
||
|
||
0014f 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00156 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 350 : return( FALSE );
|
||
|
||
0015b 33 c0 xor eax, eax
|
||
0015d e9 77 02 00 00 jmp $LN1@Decode
|
||
$LN10@Decode:
|
||
|
||
; 351 : }
|
||
; 352 :
|
||
; 353 : character_3 = __get_character( reinterpret_cast< const BYTE * >( input_buffer ), m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
00162 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
00166 48 83 c0 08 add rax, 8
|
||
0016a 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
0016e 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
00172 48 8b d0 mov rdx, rax
|
||
00175 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
00179 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
0017e 88 45 07 mov BYTE PTR character_3$[rbp], al
|
||
|
||
; 354 :
|
||
; 355 : if ( character_3 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00181 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
00185 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00188 0f 84 ac 00 00
|
||
00 je $LN11@Decode
|
||
|
||
; 356 : {
|
||
; 357 : if ( m_DecoderTable[ character_3 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
0018e 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
00192 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00196 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0019b 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
001a0 75 13 jne SHORT $LN13@Decode
|
||
|
||
; 358 : {
|
||
; 359 : destination.RemoveAll();
|
||
|
||
001a2 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
001a9 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 360 : return( FALSE );
|
||
|
||
001ae 33 c0 xor eax, eax
|
||
001b0 e9 24 02 00 00 jmp $LN1@Decode
|
||
$LN13@Decode:
|
||
|
||
; 361 : }
|
||
; 362 :
|
||
; 363 : character_4 = __get_character( reinterpret_cast< const BYTE * >( input_buffer ), m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
001b5 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
001b9 48 83 c0 08 add rax, 8
|
||
001bd 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
001c1 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
001c5 48 8b d0 mov rdx, rax
|
||
001c8 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001cc e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
001d1 88 45 08 mov BYTE PTR character_4$[rbp], al
|
||
|
||
; 364 :
|
||
; 365 : if ( character_4 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
001d4 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
001d8 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
001db 74 27 je SHORT $LN14@Decode
|
||
|
||
; 366 : {
|
||
; 367 : if ( m_DecoderTable[ character_4 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
001dd 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
001e1 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
001e5 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
001ea 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
001ef 75 13 jne SHORT $LN15@Decode
|
||
|
||
; 368 : {
|
||
; 369 : destination.RemoveAll();
|
||
|
||
001f1 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
001f8 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 370 : return( FALSE );
|
||
|
||
001fd 33 c0 xor eax, eax
|
||
001ff e9 d5 01 00 00 jmp $LN1@Decode
|
||
$LN15@Decode:
|
||
$LN14@Decode:
|
||
|
||
; 371 : }
|
||
; 372 : }
|
||
; 373 :
|
||
; 374 : if ( character_2 == BASE64_END_OF_BUFFER ||
|
||
; 375 : character_3 == BASE64_END_OF_BUFFER ||
|
||
|
||
00204 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
00208 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
0020d 74 16 je SHORT $LN17@Decode
|
||
0020f 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
00213 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
00218 74 0b je SHORT $LN17@Decode
|
||
0021a 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
0021e 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
00223 75 13 jne SHORT $LN16@Decode
|
||
$LN17@Decode:
|
||
|
||
; 376 : character_4 == BASE64_END_OF_BUFFER )
|
||
; 377 : {
|
||
; 378 : destination.RemoveAll();
|
||
|
||
00225 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0022c e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 379 : return( FALSE );
|
||
|
||
00231 33 c0 xor eax, eax
|
||
00233 e9 a1 01 00 00 jmp $LN1@Decode
|
||
$LN16@Decode:
|
||
|
||
; 380 : }
|
||
; 381 : }
|
||
|
||
00238 eb 04 jmp SHORT $LN12@Decode
|
||
$LN11@Decode:
|
||
|
||
; 382 : else
|
||
; 383 : {
|
||
; 384 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0023a c6 45 08 3d mov BYTE PTR character_4$[rbp], 61 ; 0000003dH
|
||
$LN12@Decode:
|
||
|
||
; 385 : }
|
||
; 386 : }
|
||
|
||
0023e eb 08 jmp SHORT $LN9@Decode
|
||
$LN8@Decode:
|
||
|
||
; 387 : else
|
||
; 388 : {
|
||
; 389 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00240 c6 45 07 3d mov BYTE PTR character_3$[rbp], 61 ; 0000003dH
|
||
|
||
; 390 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00244 c6 45 08 3d mov BYTE PTR character_4$[rbp], 61 ; 0000003dH
|
||
$LN9@Decode:
|
||
|
||
; 391 : }
|
||
; 392 : }
|
||
|
||
00248 eb 0c jmp SHORT $LN6@Decode
|
||
$LN5@Decode:
|
||
|
||
; 393 : else
|
||
; 394 : {
|
||
; 395 : character_2 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0024a c6 45 06 3d mov BYTE PTR character_2$[rbp], 61 ; 0000003dH
|
||
|
||
; 396 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0024e c6 45 07 3d mov BYTE PTR character_3$[rbp], 61 ; 0000003dH
|
||
|
||
; 397 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00252 c6 45 08 3d mov BYTE PTR character_4$[rbp], 61 ; 0000003dH
|
||
$LN6@Decode:
|
||
|
||
; 398 : }
|
||
; 399 :
|
||
; 400 : if ( character_1 == END_OF_BASE64_ENCODED_DATA ||
|
||
|
||
00256 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
0025a 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
0025d 74 09 je SHORT $LN19@Decode
|
||
0025f 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
00263 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00266 75 22 jne SHORT $LN18@Decode
|
||
$LN19@Decode:
|
||
|
||
; 401 : character_2 == END_OF_BASE64_ENCODED_DATA )
|
||
; 402 : {
|
||
; 403 : destination.SetSize( add_index );
|
||
|
||
00268 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0026b 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00272 8b d0 mov edx, eax
|
||
00274 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0027b e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 404 : return( TRUE );
|
||
|
||
00280 b8 01 00 00 00 mov eax, 1
|
||
00285 e9 4f 01 00 00 jmp $LN1@Decode
|
||
$LN18@Decode:
|
||
|
||
; 405 : }
|
||
; 406 :
|
||
; 407 : character_1 = m_DecoderTable[ character_1 ];
|
||
|
||
0028a 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
0028e 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00292 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00297 88 45 05 mov BYTE PTR character_1$[rbp], al
|
||
|
||
; 408 : character_2 = m_DecoderTable[ character_2 ];
|
||
|
||
0029a 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
0029e 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
002a2 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
002a7 88 45 06 mov BYTE PTR character_2$[rbp], al
|
||
|
||
; 409 :
|
||
; 410 : byte_to_add = static_cast< BYTE>( ( ( character_1 << 2 ) | ( ( character_2 & 0x30 ) >> 4 ) ) );
|
||
|
||
002aa 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
002ae c1 e0 02 shl eax, 2
|
||
002b1 0f b6 4d 06 movzx ecx, BYTE PTR character_2$[rbp]
|
||
002b5 83 e1 30 and ecx, 48 ; 00000030H
|
||
002b8 c1 f9 04 sar ecx, 4
|
||
002bb 0b c1 or eax, ecx
|
||
002bd 88 45 04 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 411 :
|
||
; 412 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
002c0 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
002c3 44 0f b6 45 04 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
002c8 8b d0 mov edx, eax
|
||
002ca 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
002d1 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 413 : add_index++;
|
||
|
||
002d6 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
002d9 ff c0 inc eax
|
||
002db 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 414 :
|
||
; 415 : if ( character_3 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
002de 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
002e2 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
002e5 75 22 jne SHORT $LN20@Decode
|
||
|
||
; 416 : {
|
||
; 417 : destination.SetSize( add_index );
|
||
|
||
002e7 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
002ea 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
002f1 8b d0 mov edx, eax
|
||
002f3 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
002fa e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 418 : return( TRUE );
|
||
|
||
002ff b8 01 00 00 00 mov eax, 1
|
||
00304 e9 d0 00 00 00 jmp $LN1@Decode
|
||
$LN20@Decode:
|
||
|
||
; 419 : }
|
||
; 420 :
|
||
; 421 : character_3 = m_DecoderTable[ character_3 ];
|
||
|
||
00309 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
0030d 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00311 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00316 88 45 07 mov BYTE PTR character_3$[rbp], al
|
||
|
||
; 422 :
|
||
; 423 : byte_to_add = static_cast< BYTE >( ( ( ( ( character_2 & 0x0F ) << 4 ) | ( ( character_3 & 0x3C ) >> 2 ) ) ) );
|
||
|
||
00319 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
0031d 83 e0 0f and eax, 15
|
||
00320 c1 e0 04 shl eax, 4
|
||
00323 0f b6 4d 07 movzx ecx, BYTE PTR character_3$[rbp]
|
||
00327 83 e1 3c and ecx, 60 ; 0000003cH
|
||
0032a c1 f9 02 sar ecx, 2
|
||
0032d 0b c1 or eax, ecx
|
||
0032f 88 45 04 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 424 :
|
||
; 425 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00332 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
00335 44 0f b6 45 04 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
0033a 8b d0 mov edx, eax
|
||
0033c 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00343 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 426 : add_index++;
|
||
|
||
00348 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0034b ff c0 inc eax
|
||
0034d 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 427 :
|
||
; 428 : if ( character_4 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00350 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
00354 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00357 75 1f jne SHORT $LN21@Decode
|
||
|
||
; 429 : {
|
||
; 430 : destination.SetSize( add_index );
|
||
|
||
00359 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0035c 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00363 8b d0 mov edx, eax
|
||
00365 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0036c e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 431 : return( TRUE );
|
||
|
||
00371 b8 01 00 00 00 mov eax, 1
|
||
00376 eb 61 jmp SHORT $LN1@Decode
|
||
$LN21@Decode:
|
||
|
||
; 432 : }
|
||
; 433 :
|
||
; 434 : character_4 = m_DecoderTable[ character_4 ];
|
||
|
||
00378 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
0037c 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00380 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00385 88 45 08 mov BYTE PTR character_4$[rbp], al
|
||
|
||
; 435 :
|
||
; 436 : byte_to_add = static_cast< BYTE >( ( ( ( character_3 & 0x03 ) << 6 ) | character_4 ) );
|
||
|
||
00388 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
0038c 83 e0 03 and eax, 3
|
||
0038f c1 e0 06 shl eax, 6
|
||
00392 0f b6 4d 08 movzx ecx, BYTE PTR character_4$[rbp]
|
||
00396 0b c1 or eax, ecx
|
||
00398 88 45 04 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 437 :
|
||
; 438 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0039b 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0039e 44 0f b6 45 04 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
003a3 8b d0 mov edx, eax
|
||
003a5 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
003ac e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 439 : add_index++;
|
||
|
||
003b1 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
003b4 ff c0 inc eax
|
||
003b6 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 440 : }
|
||
|
||
003b9 e9 f2 fc ff ff jmp $LN2@Decode
|
||
$LN3@Decode:
|
||
|
||
; 441 :
|
||
; 442 : destination.SetSize( add_index );
|
||
|
||
003be 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
003c1 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
003c8 8b d0 mov edx, eax
|
||
003ca 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
003d1 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 443 :
|
||
; 444 : return( return_value );
|
||
|
||
003d6 8b 45 00 mov eax, DWORD PTR return_value$[rbp]
|
||
$LN1@Decode:
|
||
|
||
; 445 : }
|
||
|
||
003d9 48 8d 65 60 lea rsp, QWORD PTR [rbp+96]
|
||
003dd 5d pop rbp
|
||
003de c3 ret 0
|
||
?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z ENDP ; CBase64Coding::Decode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
_TEXT SEGMENT
|
||
return_value$ = 0
|
||
byte_to_add$ = 4
|
||
character_1$ = 5
|
||
character_2$ = 6
|
||
character_3$ = 7
|
||
character_4$ = 8
|
||
index$ = 12
|
||
number_of_bytes_to_decode$ = 16
|
||
add_index$ = 20
|
||
input_buffer$ = 24
|
||
this$ = 112
|
||
source$ = 120
|
||
destination$ = 128
|
||
?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z PROC ; CBase64Coding::Decode, COMDAT
|
||
|
||
; 156 : {
|
||
|
||
$LN23:
|
||
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 48 81 ec 80 00
|
||
00 00 sub rsp, 128 ; 00000080H
|
||
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 157 :
|
||
; 158 : if ( m_DecoderTable[ 0 ] == 0x00 )
|
||
|
||
0001c b8 01 00 00 00 mov eax, 1
|
||
00021 48 6b c0 00 imul rax, rax, 0
|
||
00025 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00029 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0002e 85 c0 test eax, eax
|
||
00030 75 0d jne SHORT $LN4@Decode
|
||
|
||
; 159 : {
|
||
; 160 : m_InitializeDecoderTable();
|
||
|
||
00032 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
00036 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00039 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
0003d ff 10 call QWORD PTR [rax]
|
||
$LN4@Decode:
|
||
|
||
; 161 : }
|
||
; 162 :
|
||
; 163 : BOOL return_value = FALSE;
|
||
|
||
0003f c7 45 00 00 00
|
||
00 00 mov DWORD PTR return_value$[rbp], 0
|
||
|
||
; 164 :
|
||
; 165 : BYTE byte_to_add = 0;
|
||
|
||
00046 c6 45 04 00 mov BYTE PTR byte_to_add$[rbp], 0
|
||
|
||
; 166 : BYTE character_1 = 0;
|
||
|
||
0004a c6 45 05 00 mov BYTE PTR character_1$[rbp], 0
|
||
|
||
; 167 : BYTE character_2 = 0;
|
||
|
||
0004e c6 45 06 00 mov BYTE PTR character_2$[rbp], 0
|
||
|
||
; 168 : BYTE character_3 = 0;
|
||
|
||
00052 c6 45 07 00 mov BYTE PTR character_3$[rbp], 0
|
||
|
||
; 169 : BYTE character_4 = 0;
|
||
|
||
00056 c6 45 08 00 mov BYTE PTR character_4$[rbp], 0
|
||
|
||
; 170 :
|
||
; 171 : int index = 0;
|
||
|
||
0005a c7 45 0c 00 00
|
||
00 00 mov DWORD PTR index$[rbp], 0
|
||
|
||
; 172 : int number_of_bytes_to_decode = (int)source.GetSize();
|
||
|
||
00061 48 8b 4d 78 mov rcx, QWORD PTR source$[rbp]
|
||
00065 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
0006a 89 45 10 mov DWORD PTR number_of_bytes_to_decode$[rbp], eax
|
||
|
||
; 173 :
|
||
; 174 : DWORD add_index = (DWORD) ( (double) number_of_bytes_to_decode * (double) 0.75 ) + 1;
|
||
|
||
0006d f2 0f 2a 45 10 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
00072 f2 0f 59 05 00
|
||
00 00 00 mulsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0007a f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
0007f ff c0 inc eax
|
||
00081 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 175 :
|
||
; 176 : destination.SetSize( add_index );
|
||
|
||
00084 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
00087 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
0008e 8b d0 mov edx, eax
|
||
00090 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00097 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 177 : add_index = 0;
|
||
|
||
0009c c7 45 14 00 00
|
||
00 00 mov DWORD PTR add_index$[rbp], 0
|
||
|
||
; 178 :
|
||
; 179 : // Since we're decoding, we are most likely in a performance-minded
|
||
; 180 : // part of an application, let's go for a speedy method for accessing
|
||
; 181 : // the source data.
|
||
; 182 :
|
||
; 183 : const BYTE * input_buffer = source.GetData();
|
||
|
||
000a3 48 8b 4d 78 mov rcx, QWORD PTR source$[rbp]
|
||
000a7 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
000ac 48 89 45 18 mov QWORD PTR input_buffer$[rbp], rax
|
||
$LN2@Decode:
|
||
|
||
; 184 :
|
||
; 185 : while( index < number_of_bytes_to_decode )
|
||
|
||
000b0 8b 45 10 mov eax, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
000b3 39 45 0c cmp DWORD PTR index$[rbp], eax
|
||
000b6 0f 8d 02 03 00
|
||
00 jge $LN3@Decode
|
||
|
||
; 186 : {
|
||
; 187 : character_1 = __get_character( input_buffer, m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
000bc 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
000c0 48 83 c0 08 add rax, 8
|
||
000c4 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
000c8 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
000cc 48 8b d0 mov rdx, rax
|
||
000cf 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
000d3 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
000d8 88 45 05 mov BYTE PTR character_1$[rbp], al
|
||
|
||
; 188 :
|
||
; 189 : if ( character_1 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
000db 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
000df 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
000e2 0f 84 62 01 00
|
||
00 je $LN5@Decode
|
||
|
||
; 190 : {
|
||
; 191 : if ( m_DecoderTable[ character_1 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
000e8 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
000ec 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
000f0 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
000f5 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
000fa 75 13 jne SHORT $LN7@Decode
|
||
|
||
; 192 : {
|
||
; 193 : destination.RemoveAll();
|
||
|
||
000fc 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00103 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 194 : return( FALSE );
|
||
|
||
00108 33 c0 xor eax, eax
|
||
0010a e9 ca 02 00 00 jmp $LN1@Decode
|
||
$LN7@Decode:
|
||
|
||
; 195 : }
|
||
; 196 :
|
||
; 197 : character_2 = __get_character( input_buffer, m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
0010f 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
00113 48 83 c0 08 add rax, 8
|
||
00117 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
0011b 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
0011f 48 8b d0 mov rdx, rax
|
||
00122 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
00126 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
0012b 88 45 06 mov BYTE PTR character_2$[rbp], al
|
||
|
||
; 198 :
|
||
; 199 : if ( character_2 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
0012e 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
00132 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00135 0f 84 05 01 00
|
||
00 je $LN8@Decode
|
||
|
||
; 200 : {
|
||
; 201 : if ( m_DecoderTable[ character_2 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
0013b 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
0013f 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00143 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00148 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
0014d 75 13 jne SHORT $LN10@Decode
|
||
|
||
; 202 : {
|
||
; 203 : destination.RemoveAll();
|
||
|
||
0014f 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00156 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 204 : return( FALSE );
|
||
|
||
0015b 33 c0 xor eax, eax
|
||
0015d e9 77 02 00 00 jmp $LN1@Decode
|
||
$LN10@Decode:
|
||
|
||
; 205 : }
|
||
; 206 :
|
||
; 207 : character_3 = __get_character( input_buffer, m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
00162 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
00166 48 83 c0 08 add rax, 8
|
||
0016a 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
0016e 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
00172 48 8b d0 mov rdx, rax
|
||
00175 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
00179 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
0017e 88 45 07 mov BYTE PTR character_3$[rbp], al
|
||
|
||
; 208 :
|
||
; 209 : if ( character_3 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00181 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
00185 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00188 0f 84 ac 00 00
|
||
00 je $LN11@Decode
|
||
|
||
; 210 : {
|
||
; 211 : if ( m_DecoderTable[ character_3 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
0018e 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
00192 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00196 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0019b 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
001a0 75 13 jne SHORT $LN13@Decode
|
||
|
||
; 212 : {
|
||
; 213 : destination.RemoveAll();
|
||
|
||
001a2 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
001a9 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 214 : return( FALSE );
|
||
|
||
001ae 33 c0 xor eax, eax
|
||
001b0 e9 24 02 00 00 jmp $LN1@Decode
|
||
$LN13@Decode:
|
||
|
||
; 215 : }
|
||
; 216 :
|
||
; 217 : character_4 = __get_character( input_buffer, m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
001b5 48 8b 45 70 mov rax, QWORD PTR this$[rbp]
|
||
001b9 48 83 c0 08 add rax, 8
|
||
001bd 44 8b 4d 10 mov r9d, DWORD PTR number_of_bytes_to_decode$[rbp]
|
||
001c1 4c 8d 45 0c lea r8, QWORD PTR index$[rbp]
|
||
001c5 48 8b d0 mov rdx, rax
|
||
001c8 48 8b 4d 18 mov rcx, QWORD PTR input_buffer$[rbp]
|
||
001cc e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
001d1 88 45 08 mov BYTE PTR character_4$[rbp], al
|
||
|
||
; 218 :
|
||
; 219 : if ( character_4 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
001d4 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
001d8 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
001db 74 27 je SHORT $LN14@Decode
|
||
|
||
; 220 : {
|
||
; 221 : if ( m_DecoderTable[ character_4 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
001dd 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
001e1 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
001e5 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
001ea 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
001ef 75 13 jne SHORT $LN15@Decode
|
||
|
||
; 222 : {
|
||
; 223 : destination.RemoveAll();
|
||
|
||
001f1 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
001f8 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 224 : return( FALSE );
|
||
|
||
001fd 33 c0 xor eax, eax
|
||
001ff e9 d5 01 00 00 jmp $LN1@Decode
|
||
$LN15@Decode:
|
||
$LN14@Decode:
|
||
|
||
; 225 : }
|
||
; 226 : }
|
||
; 227 :
|
||
; 228 : if ( character_2 == BASE64_END_OF_BUFFER ||
|
||
; 229 : character_3 == BASE64_END_OF_BUFFER ||
|
||
|
||
00204 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
00208 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
0020d 74 16 je SHORT $LN17@Decode
|
||
0020f 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
00213 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
00218 74 0b je SHORT $LN17@Decode
|
||
0021a 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
0021e 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
00223 75 13 jne SHORT $LN16@Decode
|
||
$LN17@Decode:
|
||
|
||
; 230 : character_4 == BASE64_END_OF_BUFFER )
|
||
; 231 : {
|
||
; 232 : destination.RemoveAll();
|
||
|
||
00225 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0022c e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 233 : return( FALSE );
|
||
|
||
00231 33 c0 xor eax, eax
|
||
00233 e9 a1 01 00 00 jmp $LN1@Decode
|
||
$LN16@Decode:
|
||
|
||
; 234 : }
|
||
; 235 : }
|
||
|
||
00238 eb 04 jmp SHORT $LN12@Decode
|
||
$LN11@Decode:
|
||
|
||
; 236 : else
|
||
; 237 : {
|
||
; 238 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0023a c6 45 08 3d mov BYTE PTR character_4$[rbp], 61 ; 0000003dH
|
||
$LN12@Decode:
|
||
|
||
; 239 : }
|
||
; 240 : }
|
||
|
||
0023e eb 08 jmp SHORT $LN9@Decode
|
||
$LN8@Decode:
|
||
|
||
; 241 : else
|
||
; 242 : {
|
||
; 243 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00240 c6 45 07 3d mov BYTE PTR character_3$[rbp], 61 ; 0000003dH
|
||
|
||
; 244 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00244 c6 45 08 3d mov BYTE PTR character_4$[rbp], 61 ; 0000003dH
|
||
$LN9@Decode:
|
||
|
||
; 245 : }
|
||
; 246 : }
|
||
|
||
00248 eb 0c jmp SHORT $LN6@Decode
|
||
$LN5@Decode:
|
||
|
||
; 247 : else
|
||
; 248 : {
|
||
; 249 : character_2 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0024a c6 45 06 3d mov BYTE PTR character_2$[rbp], 61 ; 0000003dH
|
||
|
||
; 250 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0024e c6 45 07 3d mov BYTE PTR character_3$[rbp], 61 ; 0000003dH
|
||
|
||
; 251 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00252 c6 45 08 3d mov BYTE PTR character_4$[rbp], 61 ; 0000003dH
|
||
$LN6@Decode:
|
||
|
||
; 252 : }
|
||
; 253 :
|
||
; 254 : if ( character_1 == END_OF_BASE64_ENCODED_DATA ||
|
||
|
||
00256 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
0025a 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
0025d 74 09 je SHORT $LN19@Decode
|
||
0025f 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
00263 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00266 75 22 jne SHORT $LN18@Decode
|
||
$LN19@Decode:
|
||
|
||
; 255 : character_2 == END_OF_BASE64_ENCODED_DATA )
|
||
; 256 : {
|
||
; 257 : destination.SetSize( add_index );
|
||
|
||
00268 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0026b 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00272 8b d0 mov edx, eax
|
||
00274 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0027b e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 258 : return( TRUE );
|
||
|
||
00280 b8 01 00 00 00 mov eax, 1
|
||
00285 e9 4f 01 00 00 jmp $LN1@Decode
|
||
$LN18@Decode:
|
||
|
||
; 259 : }
|
||
; 260 :
|
||
; 261 : character_1 = m_DecoderTable[ character_1 ];
|
||
|
||
0028a 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
0028e 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00292 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00297 88 45 05 mov BYTE PTR character_1$[rbp], al
|
||
|
||
; 262 : character_2 = m_DecoderTable[ character_2 ];
|
||
|
||
0029a 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
0029e 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
002a2 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
002a7 88 45 06 mov BYTE PTR character_2$[rbp], al
|
||
|
||
; 263 :
|
||
; 264 : byte_to_add = static_cast< BYTE>( ( ( character_1 << 2 ) | ( ( character_2 & 0x30 ) >> 4 ) ) );
|
||
|
||
002aa 0f b6 45 05 movzx eax, BYTE PTR character_1$[rbp]
|
||
002ae c1 e0 02 shl eax, 2
|
||
002b1 0f b6 4d 06 movzx ecx, BYTE PTR character_2$[rbp]
|
||
002b5 83 e1 30 and ecx, 48 ; 00000030H
|
||
002b8 c1 f9 04 sar ecx, 4
|
||
002bb 0b c1 or eax, ecx
|
||
002bd 88 45 04 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 265 :
|
||
; 266 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
002c0 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
002c3 44 0f b6 45 04 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
002c8 8b d0 mov edx, eax
|
||
002ca 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
002d1 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 267 : add_index++;
|
||
|
||
002d6 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
002d9 ff c0 inc eax
|
||
002db 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 268 :
|
||
; 269 : if ( character_3 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
002de 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
002e2 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
002e5 75 22 jne SHORT $LN20@Decode
|
||
|
||
; 270 : {
|
||
; 271 : destination.SetSize( add_index );
|
||
|
||
002e7 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
002ea 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
002f1 8b d0 mov edx, eax
|
||
002f3 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
002fa e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 272 : return( TRUE );
|
||
|
||
002ff b8 01 00 00 00 mov eax, 1
|
||
00304 e9 d0 00 00 00 jmp $LN1@Decode
|
||
$LN20@Decode:
|
||
|
||
; 273 : }
|
||
; 274 :
|
||
; 275 : character_3 = m_DecoderTable[ character_3 ];
|
||
|
||
00309 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
0030d 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00311 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00316 88 45 07 mov BYTE PTR character_3$[rbp], al
|
||
|
||
; 276 :
|
||
; 277 : byte_to_add = static_cast< BYTE >( ( ( ( ( character_2 & 0x0F ) << 4 ) | ( ( character_3 & 0x3C ) >> 2 ) ) ) );
|
||
|
||
00319 0f b6 45 06 movzx eax, BYTE PTR character_2$[rbp]
|
||
0031d 83 e0 0f and eax, 15
|
||
00320 c1 e0 04 shl eax, 4
|
||
00323 0f b6 4d 07 movzx ecx, BYTE PTR character_3$[rbp]
|
||
00327 83 e1 3c and ecx, 60 ; 0000003cH
|
||
0032a c1 f9 02 sar ecx, 2
|
||
0032d 0b c1 or eax, ecx
|
||
0032f 88 45 04 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 278 :
|
||
; 279 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00332 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
00335 44 0f b6 45 04 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
0033a 8b d0 mov edx, eax
|
||
0033c 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
00343 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 280 : add_index++;
|
||
|
||
00348 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0034b ff c0 inc eax
|
||
0034d 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 281 :
|
||
; 282 : if ( character_4 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00350 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
00354 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00357 75 1f jne SHORT $LN21@Decode
|
||
|
||
; 283 : {
|
||
; 284 : destination.SetSize( add_index );
|
||
|
||
00359 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0035c 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00363 8b d0 mov edx, eax
|
||
00365 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
0036c e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 285 : return( TRUE );
|
||
|
||
00371 b8 01 00 00 00 mov eax, 1
|
||
00376 eb 61 jmp SHORT $LN1@Decode
|
||
$LN21@Decode:
|
||
|
||
; 286 : }
|
||
; 287 :
|
||
; 288 : character_4 = m_DecoderTable[ character_4 ];
|
||
|
||
00378 0f b6 45 08 movzx eax, BYTE PTR character_4$[rbp]
|
||
0037c 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00380 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00385 88 45 08 mov BYTE PTR character_4$[rbp], al
|
||
|
||
; 289 :
|
||
; 290 : byte_to_add = static_cast< BYTE >( ( ( ( character_3 & 0x03 ) << 6 ) | character_4 ) );
|
||
|
||
00388 0f b6 45 07 movzx eax, BYTE PTR character_3$[rbp]
|
||
0038c 83 e0 03 and eax, 3
|
||
0038f c1 e0 06 shl eax, 6
|
||
00392 0f b6 4d 08 movzx ecx, BYTE PTR character_4$[rbp]
|
||
00396 0b c1 or eax, ecx
|
||
00398 88 45 04 mov BYTE PTR byte_to_add$[rbp], al
|
||
|
||
; 291 :
|
||
; 292 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0039b 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
0039e 44 0f b6 45 04 movzx r8d, BYTE PTR byte_to_add$[rbp]
|
||
003a3 8b d0 mov edx, eax
|
||
003a5 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
003ac e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 293 : add_index++;
|
||
|
||
003b1 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
003b4 ff c0 inc eax
|
||
003b6 89 45 14 mov DWORD PTR add_index$[rbp], eax
|
||
|
||
; 294 : }
|
||
|
||
003b9 e9 f2 fc ff ff jmp $LN2@Decode
|
||
$LN3@Decode:
|
||
|
||
; 295 :
|
||
; 296 : destination.SetSize( add_index );
|
||
|
||
003be 8b 45 14 mov eax, DWORD PTR add_index$[rbp]
|
||
003c1 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
003c8 8b d0 mov edx, eax
|
||
003ca 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR destination$[rbp]
|
||
003d1 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 297 :
|
||
; 298 : return( return_value );
|
||
|
||
003d6 8b 45 00 mov eax, DWORD PTR return_value$[rbp]
|
||
$LN1@Decode:
|
||
|
||
; 299 : }
|
||
|
||
003d9 48 8d 65 60 lea rsp, QWORD PTR [rbp+96]
|
||
003dd 5d pop rbp
|
||
003de c3 ret 0
|
||
?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z ENDP ; CBase64Coding::Decode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ??1CBase64Coding@@UEAA@XZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
??1CBase64Coding@@UEAA@XZ PROC ; CBase64Coding::~CBase64Coding, COMDAT
|
||
|
||
; 66 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_7CBase64Coding@@6B@
|
||
00018 48 89 08 mov QWORD PTR [rax], rcx
|
||
|
||
; 67 : }
|
||
|
||
0001b 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0001f 5d pop rbp
|
||
00020 c3 ret 0
|
||
??1CBase64Coding@@UEAA@XZ ENDP ; CBase64Coding::~CBase64Coding
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ??0CBase64Coding@@QEAA@XZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
??0CBase64Coding@@QEAA@XZ PROC ; CBase64Coding::CBase64Coding, COMDAT
|
||
|
||
; 61 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_7CBase64Coding@@6B@
|
||
00018 48 89 08 mov QWORD PTR [rax], rcx
|
||
|
||
; 62 : m_DecoderTable[ 0 ] = 0x00;
|
||
|
||
0001b b8 01 00 00 00 mov eax, 1
|
||
00020 48 6b c0 00 imul rax, rax, 0
|
||
00024 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00028 c6 44 01 08 00 mov BYTE PTR [rcx+rax+8], 0
|
||
|
||
; 63 : }
|
||
|
||
0002d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00031 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00035 5d pop rbp
|
||
00036 c3 ret 0
|
||
??0CBase64Coding@@QEAA@XZ ENDP ; CBase64Coding::CBase64Coding
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ PROC ; CBase64Coding::m_InitializeDecoderTable, COMDAT
|
||
|
||
; 70 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 71 :
|
||
; 72 : // Fill the table with an invalid value. If the decoder receives
|
||
; 73 : // this value as a result of a lookup, it knows that the input
|
||
; 74 : // character must have been an invalid one.
|
||
; 75 :
|
||
; 76 : ::memset( m_DecoderTable, BASE64_UNKNOWN_VALUE, sizeof( m_DecoderTable ) );
|
||
|
||
0000f 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00013 48 83 c0 08 add rax, 8
|
||
00017 41 b8 00 01 00
|
||
00 mov r8d, 256 ; 00000100H
|
||
0001d ba ff 00 00 00 mov edx, 255 ; 000000ffH
|
||
00022 48 8b c8 mov rcx, rax
|
||
00025 e8 00 00 00 00 call memset
|
||
|
||
; 77 :
|
||
; 78 : // Now let's fill the table with translatable values
|
||
; 79 : // The table is loaded with table[ ASCII_VALUE ] = TRANSLATED_VALUE
|
||
; 80 :
|
||
; 81 : m_DecoderTable[ 43 ] = 62;
|
||
|
||
0002a b8 01 00 00 00 mov eax, 1
|
||
0002f 48 6b c0 2b imul rax, rax, 43 ; 0000002bH
|
||
00033 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00037 c6 44 01 08 3e mov BYTE PTR [rcx+rax+8], 62 ; 0000003eH
|
||
|
||
; 82 : m_DecoderTable[ 47 ] = 63;
|
||
|
||
0003c b8 01 00 00 00 mov eax, 1
|
||
00041 48 6b c0 2f imul rax, rax, 47 ; 0000002fH
|
||
00045 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00049 c6 44 01 08 3f mov BYTE PTR [rcx+rax+8], 63 ; 0000003fH
|
||
|
||
; 83 : m_DecoderTable[ 48 ] = 52;
|
||
|
||
0004e b8 01 00 00 00 mov eax, 1
|
||
00053 48 6b c0 30 imul rax, rax, 48 ; 00000030H
|
||
00057 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0005b c6 44 01 08 34 mov BYTE PTR [rcx+rax+8], 52 ; 00000034H
|
||
|
||
; 84 : m_DecoderTable[ 49 ] = 53;
|
||
|
||
00060 b8 01 00 00 00 mov eax, 1
|
||
00065 48 6b c0 31 imul rax, rax, 49 ; 00000031H
|
||
00069 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0006d c6 44 01 08 35 mov BYTE PTR [rcx+rax+8], 53 ; 00000035H
|
||
|
||
; 85 : m_DecoderTable[ 50 ] = 54;
|
||
|
||
00072 b8 01 00 00 00 mov eax, 1
|
||
00077 48 6b c0 32 imul rax, rax, 50 ; 00000032H
|
||
0007b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0007f c6 44 01 08 36 mov BYTE PTR [rcx+rax+8], 54 ; 00000036H
|
||
|
||
; 86 : m_DecoderTable[ 51 ] = 55;
|
||
|
||
00084 b8 01 00 00 00 mov eax, 1
|
||
00089 48 6b c0 33 imul rax, rax, 51 ; 00000033H
|
||
0008d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00091 c6 44 01 08 37 mov BYTE PTR [rcx+rax+8], 55 ; 00000037H
|
||
|
||
; 87 : m_DecoderTable[ 52 ] = 56;
|
||
|
||
00096 b8 01 00 00 00 mov eax, 1
|
||
0009b 48 6b c0 34 imul rax, rax, 52 ; 00000034H
|
||
0009f 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
000a3 c6 44 01 08 38 mov BYTE PTR [rcx+rax+8], 56 ; 00000038H
|
||
|
||
; 88 : m_DecoderTable[ 53 ] = 57;
|
||
|
||
000a8 b8 01 00 00 00 mov eax, 1
|
||
000ad 48 6b c0 35 imul rax, rax, 53 ; 00000035H
|
||
000b1 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
000b5 c6 44 01 08 39 mov BYTE PTR [rcx+rax+8], 57 ; 00000039H
|
||
|
||
; 89 : m_DecoderTable[ 54 ] = 58;
|
||
|
||
000ba b8 01 00 00 00 mov eax, 1
|
||
000bf 48 6b c0 36 imul rax, rax, 54 ; 00000036H
|
||
000c3 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
000c7 c6 44 01 08 3a mov BYTE PTR [rcx+rax+8], 58 ; 0000003aH
|
||
|
||
; 90 : m_DecoderTable[ 55 ] = 59;
|
||
|
||
000cc b8 01 00 00 00 mov eax, 1
|
||
000d1 48 6b c0 37 imul rax, rax, 55 ; 00000037H
|
||
000d5 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
000d9 c6 44 01 08 3b mov BYTE PTR [rcx+rax+8], 59 ; 0000003bH
|
||
|
||
; 91 : m_DecoderTable[ 56 ] = 60;
|
||
|
||
000de b8 01 00 00 00 mov eax, 1
|
||
000e3 48 6b c0 38 imul rax, rax, 56 ; 00000038H
|
||
000e7 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
000eb c6 44 01 08 3c mov BYTE PTR [rcx+rax+8], 60 ; 0000003cH
|
||
|
||
; 92 : m_DecoderTable[ 57 ] = 61;
|
||
|
||
000f0 b8 01 00 00 00 mov eax, 1
|
||
000f5 48 6b c0 39 imul rax, rax, 57 ; 00000039H
|
||
000f9 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
000fd c6 44 01 08 3d mov BYTE PTR [rcx+rax+8], 61 ; 0000003dH
|
||
|
||
; 93 : m_DecoderTable[ 65 ] = 0;
|
||
|
||
00102 b8 01 00 00 00 mov eax, 1
|
||
00107 48 6b c0 41 imul rax, rax, 65 ; 00000041H
|
||
0010b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0010f c6 44 01 08 00 mov BYTE PTR [rcx+rax+8], 0
|
||
|
||
; 94 : m_DecoderTable[ 66 ] = 1;
|
||
|
||
00114 b8 01 00 00 00 mov eax, 1
|
||
00119 48 6b c0 42 imul rax, rax, 66 ; 00000042H
|
||
0011d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00121 c6 44 01 08 01 mov BYTE PTR [rcx+rax+8], 1
|
||
|
||
; 95 : m_DecoderTable[ 67 ] = 2;
|
||
|
||
00126 b8 01 00 00 00 mov eax, 1
|
||
0012b 48 6b c0 43 imul rax, rax, 67 ; 00000043H
|
||
0012f 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00133 c6 44 01 08 02 mov BYTE PTR [rcx+rax+8], 2
|
||
|
||
; 96 : m_DecoderTable[ 68 ] = 3;
|
||
|
||
00138 b8 01 00 00 00 mov eax, 1
|
||
0013d 48 6b c0 44 imul rax, rax, 68 ; 00000044H
|
||
00141 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00145 c6 44 01 08 03 mov BYTE PTR [rcx+rax+8], 3
|
||
|
||
; 97 : m_DecoderTable[ 69 ] = 4;
|
||
|
||
0014a b8 01 00 00 00 mov eax, 1
|
||
0014f 48 6b c0 45 imul rax, rax, 69 ; 00000045H
|
||
00153 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00157 c6 44 01 08 04 mov BYTE PTR [rcx+rax+8], 4
|
||
|
||
; 98 : m_DecoderTable[ 70 ] = 5;
|
||
|
||
0015c b8 01 00 00 00 mov eax, 1
|
||
00161 48 6b c0 46 imul rax, rax, 70 ; 00000046H
|
||
00165 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00169 c6 44 01 08 05 mov BYTE PTR [rcx+rax+8], 5
|
||
|
||
; 99 : m_DecoderTable[ 71 ] = 6;
|
||
|
||
0016e b8 01 00 00 00 mov eax, 1
|
||
00173 48 6b c0 47 imul rax, rax, 71 ; 00000047H
|
||
00177 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0017b c6 44 01 08 06 mov BYTE PTR [rcx+rax+8], 6
|
||
|
||
; 100 : m_DecoderTable[ 72 ] = 7;
|
||
|
||
00180 b8 01 00 00 00 mov eax, 1
|
||
00185 48 6b c0 48 imul rax, rax, 72 ; 00000048H
|
||
00189 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0018d c6 44 01 08 07 mov BYTE PTR [rcx+rax+8], 7
|
||
|
||
; 101 : m_DecoderTable[ 73 ] = 8;
|
||
|
||
00192 b8 01 00 00 00 mov eax, 1
|
||
00197 48 6b c0 49 imul rax, rax, 73 ; 00000049H
|
||
0019b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0019f c6 44 01 08 08 mov BYTE PTR [rcx+rax+8], 8
|
||
|
||
; 102 : m_DecoderTable[ 74 ] = 9;
|
||
|
||
001a4 b8 01 00 00 00 mov eax, 1
|
||
001a9 48 6b c0 4a imul rax, rax, 74 ; 0000004aH
|
||
001ad 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
001b1 c6 44 01 08 09 mov BYTE PTR [rcx+rax+8], 9
|
||
|
||
; 103 : m_DecoderTable[ 75 ] = 10;
|
||
|
||
001b6 b8 01 00 00 00 mov eax, 1
|
||
001bb 48 6b c0 4b imul rax, rax, 75 ; 0000004bH
|
||
001bf 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
001c3 c6 44 01 08 0a mov BYTE PTR [rcx+rax+8], 10
|
||
|
||
; 104 : m_DecoderTable[ 76 ] = 11;
|
||
|
||
001c8 b8 01 00 00 00 mov eax, 1
|
||
001cd 48 6b c0 4c imul rax, rax, 76 ; 0000004cH
|
||
001d1 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
001d5 c6 44 01 08 0b mov BYTE PTR [rcx+rax+8], 11
|
||
|
||
; 105 : m_DecoderTable[ 77 ] = 12;
|
||
|
||
001da b8 01 00 00 00 mov eax, 1
|
||
001df 48 6b c0 4d imul rax, rax, 77 ; 0000004dH
|
||
001e3 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
001e7 c6 44 01 08 0c mov BYTE PTR [rcx+rax+8], 12
|
||
|
||
; 106 : m_DecoderTable[ 78 ] = 13;
|
||
|
||
001ec b8 01 00 00 00 mov eax, 1
|
||
001f1 48 6b c0 4e imul rax, rax, 78 ; 0000004eH
|
||
001f5 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
001f9 c6 44 01 08 0d mov BYTE PTR [rcx+rax+8], 13
|
||
|
||
; 107 : m_DecoderTable[ 79 ] = 14;
|
||
|
||
001fe b8 01 00 00 00 mov eax, 1
|
||
00203 48 6b c0 4f imul rax, rax, 79 ; 0000004fH
|
||
00207 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0020b c6 44 01 08 0e mov BYTE PTR [rcx+rax+8], 14
|
||
|
||
; 108 : m_DecoderTable[ 80 ] = 15;
|
||
|
||
00210 b8 01 00 00 00 mov eax, 1
|
||
00215 48 6b c0 50 imul rax, rax, 80 ; 00000050H
|
||
00219 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0021d c6 44 01 08 0f mov BYTE PTR [rcx+rax+8], 15
|
||
|
||
; 109 : m_DecoderTable[ 81 ] = 16;
|
||
|
||
00222 b8 01 00 00 00 mov eax, 1
|
||
00227 48 6b c0 51 imul rax, rax, 81 ; 00000051H
|
||
0022b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0022f c6 44 01 08 10 mov BYTE PTR [rcx+rax+8], 16
|
||
|
||
; 110 : m_DecoderTable[ 82 ] = 17;
|
||
|
||
00234 b8 01 00 00 00 mov eax, 1
|
||
00239 48 6b c0 52 imul rax, rax, 82 ; 00000052H
|
||
0023d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00241 c6 44 01 08 11 mov BYTE PTR [rcx+rax+8], 17
|
||
|
||
; 111 : m_DecoderTable[ 83 ] = 18;
|
||
|
||
00246 b8 01 00 00 00 mov eax, 1
|
||
0024b 48 6b c0 53 imul rax, rax, 83 ; 00000053H
|
||
0024f 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00253 c6 44 01 08 12 mov BYTE PTR [rcx+rax+8], 18
|
||
|
||
; 112 : m_DecoderTable[ 84 ] = 19;
|
||
|
||
00258 b8 01 00 00 00 mov eax, 1
|
||
0025d 48 6b c0 54 imul rax, rax, 84 ; 00000054H
|
||
00261 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00265 c6 44 01 08 13 mov BYTE PTR [rcx+rax+8], 19
|
||
|
||
; 113 : m_DecoderTable[ 85 ] = 20;
|
||
|
||
0026a b8 01 00 00 00 mov eax, 1
|
||
0026f 48 6b c0 55 imul rax, rax, 85 ; 00000055H
|
||
00273 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00277 c6 44 01 08 14 mov BYTE PTR [rcx+rax+8], 20
|
||
|
||
; 114 : m_DecoderTable[ 86 ] = 21;
|
||
|
||
0027c b8 01 00 00 00 mov eax, 1
|
||
00281 48 6b c0 56 imul rax, rax, 86 ; 00000056H
|
||
00285 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00289 c6 44 01 08 15 mov BYTE PTR [rcx+rax+8], 21
|
||
|
||
; 115 : m_DecoderTable[ 87 ] = 22;
|
||
|
||
0028e b8 01 00 00 00 mov eax, 1
|
||
00293 48 6b c0 57 imul rax, rax, 87 ; 00000057H
|
||
00297 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0029b c6 44 01 08 16 mov BYTE PTR [rcx+rax+8], 22
|
||
|
||
; 116 : m_DecoderTable[ 88 ] = 23;
|
||
|
||
002a0 b8 01 00 00 00 mov eax, 1
|
||
002a5 48 6b c0 58 imul rax, rax, 88 ; 00000058H
|
||
002a9 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
002ad c6 44 01 08 17 mov BYTE PTR [rcx+rax+8], 23
|
||
|
||
; 117 : m_DecoderTable[ 89 ] = 24;
|
||
|
||
002b2 b8 01 00 00 00 mov eax, 1
|
||
002b7 48 6b c0 59 imul rax, rax, 89 ; 00000059H
|
||
002bb 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
002bf c6 44 01 08 18 mov BYTE PTR [rcx+rax+8], 24
|
||
|
||
; 118 : m_DecoderTable[ 90 ] = 25;
|
||
|
||
002c4 b8 01 00 00 00 mov eax, 1
|
||
002c9 48 6b c0 5a imul rax, rax, 90 ; 0000005aH
|
||
002cd 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
002d1 c6 44 01 08 19 mov BYTE PTR [rcx+rax+8], 25
|
||
|
||
; 119 : m_DecoderTable[ 97 ] = 26;
|
||
|
||
002d6 b8 01 00 00 00 mov eax, 1
|
||
002db 48 6b c0 61 imul rax, rax, 97 ; 00000061H
|
||
002df 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
002e3 c6 44 01 08 1a mov BYTE PTR [rcx+rax+8], 26
|
||
|
||
; 120 : m_DecoderTable[ 98 ] = 27;
|
||
|
||
002e8 b8 01 00 00 00 mov eax, 1
|
||
002ed 48 6b c0 62 imul rax, rax, 98 ; 00000062H
|
||
002f1 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
002f5 c6 44 01 08 1b mov BYTE PTR [rcx+rax+8], 27
|
||
|
||
; 121 : m_DecoderTable[ 99 ] = 28;
|
||
|
||
002fa b8 01 00 00 00 mov eax, 1
|
||
002ff 48 6b c0 63 imul rax, rax, 99 ; 00000063H
|
||
00303 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00307 c6 44 01 08 1c mov BYTE PTR [rcx+rax+8], 28
|
||
|
||
; 122 : m_DecoderTable[ 100 ] = 29;
|
||
|
||
0030c b8 01 00 00 00 mov eax, 1
|
||
00311 48 6b c0 64 imul rax, rax, 100 ; 00000064H
|
||
00315 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00319 c6 44 01 08 1d mov BYTE PTR [rcx+rax+8], 29
|
||
|
||
; 123 : m_DecoderTable[ 101 ] = 30;
|
||
|
||
0031e b8 01 00 00 00 mov eax, 1
|
||
00323 48 6b c0 65 imul rax, rax, 101 ; 00000065H
|
||
00327 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0032b c6 44 01 08 1e mov BYTE PTR [rcx+rax+8], 30
|
||
|
||
; 124 : m_DecoderTable[ 102 ] = 31;
|
||
|
||
00330 b8 01 00 00 00 mov eax, 1
|
||
00335 48 6b c0 66 imul rax, rax, 102 ; 00000066H
|
||
00339 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0033d c6 44 01 08 1f mov BYTE PTR [rcx+rax+8], 31
|
||
|
||
; 125 : m_DecoderTable[ 103 ] = 32;
|
||
|
||
00342 b8 01 00 00 00 mov eax, 1
|
||
00347 48 6b c0 67 imul rax, rax, 103 ; 00000067H
|
||
0034b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0034f c6 44 01 08 20 mov BYTE PTR [rcx+rax+8], 32 ; 00000020H
|
||
|
||
; 126 : m_DecoderTable[ 104 ] = 33;
|
||
|
||
00354 b8 01 00 00 00 mov eax, 1
|
||
00359 48 6b c0 68 imul rax, rax, 104 ; 00000068H
|
||
0035d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00361 c6 44 01 08 21 mov BYTE PTR [rcx+rax+8], 33 ; 00000021H
|
||
|
||
; 127 : m_DecoderTable[ 105 ] = 34;
|
||
|
||
00366 b8 01 00 00 00 mov eax, 1
|
||
0036b 48 6b c0 69 imul rax, rax, 105 ; 00000069H
|
||
0036f 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00373 c6 44 01 08 22 mov BYTE PTR [rcx+rax+8], 34 ; 00000022H
|
||
|
||
; 128 : m_DecoderTable[ 106 ] = 35;
|
||
|
||
00378 b8 01 00 00 00 mov eax, 1
|
||
0037d 48 6b c0 6a imul rax, rax, 106 ; 0000006aH
|
||
00381 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00385 c6 44 01 08 23 mov BYTE PTR [rcx+rax+8], 35 ; 00000023H
|
||
|
||
; 129 : m_DecoderTable[ 107 ] = 36;
|
||
|
||
0038a b8 01 00 00 00 mov eax, 1
|
||
0038f 48 6b c0 6b imul rax, rax, 107 ; 0000006bH
|
||
00393 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00397 c6 44 01 08 24 mov BYTE PTR [rcx+rax+8], 36 ; 00000024H
|
||
|
||
; 130 : m_DecoderTable[ 108 ] = 37;
|
||
|
||
0039c b8 01 00 00 00 mov eax, 1
|
||
003a1 48 6b c0 6c imul rax, rax, 108 ; 0000006cH
|
||
003a5 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
003a9 c6 44 01 08 25 mov BYTE PTR [rcx+rax+8], 37 ; 00000025H
|
||
|
||
; 131 : m_DecoderTable[ 109 ] = 38;
|
||
|
||
003ae b8 01 00 00 00 mov eax, 1
|
||
003b3 48 6b c0 6d imul rax, rax, 109 ; 0000006dH
|
||
003b7 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
003bb c6 44 01 08 26 mov BYTE PTR [rcx+rax+8], 38 ; 00000026H
|
||
|
||
; 132 : m_DecoderTable[ 110 ] = 39;
|
||
|
||
003c0 b8 01 00 00 00 mov eax, 1
|
||
003c5 48 6b c0 6e imul rax, rax, 110 ; 0000006eH
|
||
003c9 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
003cd c6 44 01 08 27 mov BYTE PTR [rcx+rax+8], 39 ; 00000027H
|
||
|
||
; 133 : m_DecoderTable[ 111 ] = 40;
|
||
|
||
003d2 b8 01 00 00 00 mov eax, 1
|
||
003d7 48 6b c0 6f imul rax, rax, 111 ; 0000006fH
|
||
003db 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
003df c6 44 01 08 28 mov BYTE PTR [rcx+rax+8], 40 ; 00000028H
|
||
|
||
; 134 : m_DecoderTable[ 112 ] = 41;
|
||
|
||
003e4 b8 01 00 00 00 mov eax, 1
|
||
003e9 48 6b c0 70 imul rax, rax, 112 ; 00000070H
|
||
003ed 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
003f1 c6 44 01 08 29 mov BYTE PTR [rcx+rax+8], 41 ; 00000029H
|
||
|
||
; 135 : m_DecoderTable[ 113 ] = 42;
|
||
|
||
003f6 b8 01 00 00 00 mov eax, 1
|
||
003fb 48 6b c0 71 imul rax, rax, 113 ; 00000071H
|
||
003ff 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00403 c6 44 01 08 2a mov BYTE PTR [rcx+rax+8], 42 ; 0000002aH
|
||
|
||
; 136 : m_DecoderTable[ 114 ] = 43;
|
||
|
||
00408 b8 01 00 00 00 mov eax, 1
|
||
0040d 48 6b c0 72 imul rax, rax, 114 ; 00000072H
|
||
00411 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00415 c6 44 01 08 2b mov BYTE PTR [rcx+rax+8], 43 ; 0000002bH
|
||
|
||
; 137 : m_DecoderTable[ 115 ] = 44;
|
||
|
||
0041a b8 01 00 00 00 mov eax, 1
|
||
0041f 48 6b c0 73 imul rax, rax, 115 ; 00000073H
|
||
00423 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00427 c6 44 01 08 2c mov BYTE PTR [rcx+rax+8], 44 ; 0000002cH
|
||
|
||
; 138 : m_DecoderTable[ 116 ] = 45;
|
||
|
||
0042c b8 01 00 00 00 mov eax, 1
|
||
00431 48 6b c0 74 imul rax, rax, 116 ; 00000074H
|
||
00435 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00439 c6 44 01 08 2d mov BYTE PTR [rcx+rax+8], 45 ; 0000002dH
|
||
|
||
; 139 : m_DecoderTable[ 117 ] = 46;
|
||
|
||
0043e b8 01 00 00 00 mov eax, 1
|
||
00443 48 6b c0 75 imul rax, rax, 117 ; 00000075H
|
||
00447 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0044b c6 44 01 08 2e mov BYTE PTR [rcx+rax+8], 46 ; 0000002eH
|
||
|
||
; 140 : m_DecoderTable[ 118 ] = 47;
|
||
|
||
00450 b8 01 00 00 00 mov eax, 1
|
||
00455 48 6b c0 76 imul rax, rax, 118 ; 00000076H
|
||
00459 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0045d c6 44 01 08 2f mov BYTE PTR [rcx+rax+8], 47 ; 0000002fH
|
||
|
||
; 141 : m_DecoderTable[ 119 ] = 48;
|
||
|
||
00462 b8 01 00 00 00 mov eax, 1
|
||
00467 48 6b c0 77 imul rax, rax, 119 ; 00000077H
|
||
0046b 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0046f c6 44 01 08 30 mov BYTE PTR [rcx+rax+8], 48 ; 00000030H
|
||
|
||
; 142 : m_DecoderTable[ 120 ] = 49;
|
||
|
||
00474 b8 01 00 00 00 mov eax, 1
|
||
00479 48 6b c0 78 imul rax, rax, 120 ; 00000078H
|
||
0047d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00481 c6 44 01 08 31 mov BYTE PTR [rcx+rax+8], 49 ; 00000031H
|
||
|
||
; 143 : m_DecoderTable[ 121 ] = 50;
|
||
|
||
00486 b8 01 00 00 00 mov eax, 1
|
||
0048b 48 6b c0 79 imul rax, rax, 121 ; 00000079H
|
||
0048f 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00493 c6 44 01 08 32 mov BYTE PTR [rcx+rax+8], 50 ; 00000032H
|
||
|
||
; 144 : m_DecoderTable[ 122 ] = 51;
|
||
|
||
00498 b8 01 00 00 00 mov eax, 1
|
||
0049d 48 6b c0 7a imul rax, rax, 122 ; 0000007aH
|
||
004a1 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
004a5 c6 44 01 08 33 mov BYTE PTR [rcx+rax+8], 51 ; 00000033H
|
||
|
||
; 145 :
|
||
; 146 : // OK, there's our translation table, now let's be a little
|
||
; 147 : // forgiving about end-of-lines, tabs, spaces, etc.
|
||
; 148 :
|
||
; 149 : m_DecoderTable[ 9 ] = BASE64_IGNORABLE_CHARACTER; // TAB character (Tabs suck!)
|
||
|
||
004aa b8 01 00 00 00 mov eax, 1
|
||
004af 48 6b c0 09 imul rax, rax, 9
|
||
004b3 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
004b7 c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 150 : m_DecoderTable[ 32 ] = BASE64_IGNORABLE_CHARACTER; // Space character
|
||
|
||
004bc b8 01 00 00 00 mov eax, 1
|
||
004c1 48 6b c0 20 imul rax, rax, 32 ; 00000020H
|
||
004c5 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
004c9 c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 151 : m_DecoderTable[ CARRIAGE_RETURN ] = BASE64_IGNORABLE_CHARACTER;
|
||
|
||
004ce b8 01 00 00 00 mov eax, 1
|
||
004d3 48 6b c0 0d imul rax, rax, 13
|
||
004d7 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
004db c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 152 : m_DecoderTable[ LINE_FEED ] = BASE64_IGNORABLE_CHARACTER;
|
||
|
||
004e0 b8 01 00 00 00 mov eax, 1
|
||
004e5 48 6b c0 0a imul rax, rax, 10
|
||
004e9 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
004ed c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 153 : }
|
||
|
||
004f2 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
004f6 5d pop rbp
|
||
004f7 c3 ret 0
|
||
?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ ENDP ; CBase64Coding::m_InitializeDecoderTable
|
||
_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 ?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
nLength$ = 88
|
||
?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<char,0>::SetLength, COMDAT
|
||
|
||
; 867 : {
|
||
|
||
$LN5:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 868 : ATLASSERT( nLength >= 0 );
|
||
; 869 : ATLASSERT( nLength <= GetData()->nAllocLength );
|
||
; 870 :
|
||
; 871 : if( nLength < 0 || nLength > GetData()->nAllocLength)
|
||
|
||
00013 83 7d 58 00 cmp DWORD PTR nLength$[rbp], 0
|
||
00017 7c 11 jl SHORT $LN3@SetLength
|
||
00019 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0001d e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00022 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00025 39 45 58 cmp DWORD PTR nLength$[rbp], eax
|
||
00028 7e 0a jle SHORT $LN2@SetLength
|
||
$LN3@SetLength:
|
||
|
||
; 872 : AtlThrow(E_INVALIDARG);
|
||
|
||
0002a b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
0002f e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@SetLength:
|
||
|
||
; 873 :
|
||
; 874 : GetData()->nDataLength = nLength;
|
||
|
||
00034 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00038 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0003d 8b 4d 58 mov ecx, DWORD PTR nLength$[rbp]
|
||
00040 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 875 : m_pszData[nLength] = 0;
|
||
|
||
00043 48 63 45 58 movsxd rax, DWORD PTR nLength$[rbp]
|
||
00047 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0004b 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
0004e c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
$LN4@SetLength:
|
||
|
||
; 876 : }
|
||
|
||
00052 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00056 5d pop rbp
|
||
00057 c3 ret 0
|
||
?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
pStringMgr$ = 8
|
||
pNewData$ = 16
|
||
tv78 = 88
|
||
this$ = 112
|
||
nLength$ = 120
|
||
?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<char,0>::Reallocate, COMDAT
|
||
|
||
; 849 : {
|
||
|
||
$LN6:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 81 ec 80 00
|
||
00 00 sub rsp, 128 ; 00000080H
|
||
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 850 : CStringData* pOldData = GetData();
|
||
|
||
00016 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
0001a e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0001f 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 851 : ATLASSERT( pOldData->nAllocLength < nLength );
|
||
; 852 : IAtlStringMgr* pStringMgr = pOldData->pStringMgr;
|
||
|
||
00023 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00027 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0002a 48 89 45 08 mov QWORD PTR pStringMgr$[rbp], rax
|
||
|
||
; 853 : if ( pOldData->nAllocLength >= nLength || nLength <= 0)
|
||
|
||
0002e 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00032 8b 4d 78 mov ecx, DWORD PTR nLength$[rbp]
|
||
00035 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
00038 7d 06 jge SHORT $LN3@Reallocate
|
||
0003a 83 7d 78 00 cmp DWORD PTR nLength$[rbp], 0
|
||
0003e 7f 07 jg SHORT $LN2@Reallocate
|
||
$LN3@Reallocate:
|
||
|
||
; 854 : {
|
||
; 855 : ThrowMemoryException();
|
||
|
||
00040 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
|
||
; 856 : return;
|
||
|
||
00045 eb 41 jmp SHORT $LN1@Reallocate
|
||
$LN2@Reallocate:
|
||
|
||
; 857 : }
|
||
; 858 : CStringData* pNewData = pStringMgr->Reallocate( pOldData, nLength, sizeof( XCHAR ) );
|
||
|
||
00047 48 8b 45 08 mov rax, QWORD PTR pStringMgr$[rbp]
|
||
0004b 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004e 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00052 48 89 45 58 mov QWORD PTR tv78[rbp], rax
|
||
00056 41 b9 01 00 00
|
||
00 mov r9d, 1
|
||
0005c 44 8b 45 78 mov r8d, DWORD PTR nLength$[rbp]
|
||
00060 48 8b 55 00 mov rdx, QWORD PTR pOldData$[rbp]
|
||
00064 48 8b 4d 08 mov rcx, QWORD PTR pStringMgr$[rbp]
|
||
00068 ff 55 58 call QWORD PTR tv78[rbp]
|
||
0006b 48 89 45 10 mov QWORD PTR pNewData$[rbp], rax
|
||
|
||
; 859 : if( pNewData == NULL )
|
||
|
||
0006f 48 83 7d 10 00 cmp QWORD PTR pNewData$[rbp], 0
|
||
00074 75 05 jne SHORT $LN4@Reallocate
|
||
|
||
; 860 : {
|
||
; 861 : ThrowMemoryException();
|
||
|
||
00076 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
$LN4@Reallocate:
|
||
|
||
; 862 : }
|
||
; 863 : Attach( pNewData );
|
||
|
||
0007b 48 8b 55 10 mov rdx, QWORD PTR pNewData$[rbp]
|
||
0007f 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00083 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<char,0>::Attach
|
||
$LN1@Reallocate:
|
||
$LN5@Reallocate:
|
||
|
||
; 864 : }
|
||
|
||
00088 48 8d 65 60 lea rsp, QWORD PTR [rbp+96]
|
||
0008c 5d pop rbp
|
||
0008d c3 ret 0
|
||
?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
nNewLength$1 = 8
|
||
this$ = 96
|
||
nLength$ = 104
|
||
?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<char,0>::PrepareWrite2, COMDAT
|
||
|
||
; 818 : {
|
||
|
||
$LN10:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 819 : CStringData* pOldData = GetData();
|
||
|
||
00013 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00017 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0001c 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 820 : if( pOldData->nDataLength > nLength )
|
||
|
||
00020 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00024 8b 4d 68 mov ecx, DWORD PTR nLength$[rbp]
|
||
00027 39 48 08 cmp DWORD PTR [rax+8], ecx
|
||
0002a 7e 0a jle SHORT $LN2@PrepareWri
|
||
|
||
; 821 : {
|
||
; 822 : nLength = pOldData->nDataLength;
|
||
|
||
0002c 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00030 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
00033 89 45 68 mov DWORD PTR nLength$[rbp], eax
|
||
$LN2@PrepareWri:
|
||
|
||
; 823 : }
|
||
; 824 : if( pOldData->IsShared() )
|
||
|
||
00036 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
0003a e8 00 00 00 00 call ?IsShared@CStringData@ATL@@QEBA_NXZ ; ATL::CStringData::IsShared
|
||
0003f 0f b6 c0 movzx eax, al
|
||
00042 85 c0 test eax, eax
|
||
00044 74 0e je SHORT $LN3@PrepareWri
|
||
|
||
; 825 : {
|
||
; 826 : Fork( nLength );
|
||
|
||
00046 8b 55 68 mov edx, DWORD PTR nLength$[rbp]
|
||
00049 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
0004d e8 00 00 00 00 call ?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::Fork
|
||
|
||
; 827 : }
|
||
|
||
00052 eb 58 jmp SHORT $LN4@PrepareWri
|
||
$LN3@PrepareWri:
|
||
|
||
; 828 : else if( pOldData->nAllocLength < nLength )
|
||
|
||
00054 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00058 8b 4d 68 mov ecx, DWORD PTR nLength$[rbp]
|
||
0005b 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
0005e 7d 4c jge SHORT $LN5@PrepareWri
|
||
|
||
; 829 : {
|
||
; 830 : // Grow exponentially, until we hit 1G, then by 1M thereafter.
|
||
; 831 : int nNewLength = pOldData->nAllocLength;
|
||
|
||
00060 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00064 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00067 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
|
||
; 832 : if( nNewLength > 1024 * 1024 * 1024 )
|
||
|
||
0006a 81 7d 08 00 00
|
||
00 40 cmp DWORD PTR nNewLength$1[rbp], 1073741824 ; 40000000H
|
||
00071 7e 0d jle SHORT $LN6@PrepareWri
|
||
|
||
; 833 : {
|
||
; 834 : nNewLength += 1024 * 1024;
|
||
|
||
00073 8b 45 08 mov eax, DWORD PTR nNewLength$1[rbp]
|
||
00076 05 00 00 10 00 add eax, 1048576 ; 00100000H
|
||
0007b 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
|
||
; 835 : }
|
||
|
||
0007e eb 12 jmp SHORT $LN7@PrepareWri
|
||
$LN6@PrepareWri:
|
||
|
||
; 836 : else
|
||
; 837 : {
|
||
; 838 : // Exponential growth factor is 1.5.
|
||
; 839 : nNewLength = nNewLength + nNewLength / 2;
|
||
|
||
00080 8b 45 08 mov eax, DWORD PTR nNewLength$1[rbp]
|
||
00083 99 cdq
|
||
00084 2b c2 sub eax, edx
|
||
00086 d1 f8 sar eax, 1
|
||
00088 8b 4d 08 mov ecx, DWORD PTR nNewLength$1[rbp]
|
||
0008b 03 c8 add ecx, eax
|
||
0008d 8b c1 mov eax, ecx
|
||
0008f 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
$LN7@PrepareWri:
|
||
|
||
; 840 : }
|
||
; 841 : if( nNewLength < nLength )
|
||
|
||
00092 8b 45 68 mov eax, DWORD PTR nLength$[rbp]
|
||
00095 39 45 08 cmp DWORD PTR nNewLength$1[rbp], eax
|
||
00098 7d 06 jge SHORT $LN8@PrepareWri
|
||
|
||
; 842 : {
|
||
; 843 : nNewLength = nLength;
|
||
|
||
0009a 8b 45 68 mov eax, DWORD PTR nLength$[rbp]
|
||
0009d 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
$LN8@PrepareWri:
|
||
|
||
; 844 : }
|
||
; 845 : Reallocate( nNewLength );
|
||
|
||
000a0 8b 55 08 mov edx, DWORD PTR nNewLength$1[rbp]
|
||
000a3 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
000a7 e8 00 00 00 00 call ?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::Reallocate
|
||
$LN5@PrepareWri:
|
||
$LN4@PrepareWri:
|
||
|
||
; 846 : }
|
||
; 847 : }
|
||
|
||
000ac 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
000b0 5d pop rbp
|
||
000b1 c3 ret 0
|
||
?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@AEAAPEADH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
nShared$ = 8
|
||
nTooShort$ = 12
|
||
this$ = 96
|
||
nLength$ = 104
|
||
?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z PROC ; ATL::CSimpleStringT<char,0>::PrepareWrite, COMDAT
|
||
|
||
; 803 : {
|
||
|
||
$LN5:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 804 : if (nLength < 0)
|
||
|
||
00013 83 7d 68 00 cmp DWORD PTR nLength$[rbp], 0
|
||
00017 7d 0a jge SHORT $LN2@PrepareWri
|
||
|
||
; 805 : AtlThrow(E_INVALIDARG);
|
||
|
||
00019 b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
0001e e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@PrepareWri:
|
||
|
||
; 806 :
|
||
; 807 : CStringData* pOldData = GetData();
|
||
|
||
00023 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00027 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0002c 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 808 : int nShared = 1-pOldData->nRefs; // nShared < 0 means true, >= 0 means false
|
||
|
||
00030 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00034 b9 01 00 00 00 mov ecx, 1
|
||
00039 2b 48 10 sub ecx, DWORD PTR [rax+16]
|
||
0003c 8b c1 mov eax, ecx
|
||
0003e 89 45 08 mov DWORD PTR nShared$[rbp], eax
|
||
|
||
; 809 : int nTooShort = pOldData->nAllocLength-nLength; // nTooShort < 0 means true, >= 0 means false
|
||
|
||
00041 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00045 8b 4d 68 mov ecx, DWORD PTR nLength$[rbp]
|
||
00048 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
0004b 2b c1 sub eax, ecx
|
||
0004d 89 45 0c mov DWORD PTR nTooShort$[rbp], eax
|
||
|
||
; 810 : if( (nShared|nTooShort) < 0 ) // If either sign bit is set (i.e. either is less than zero), we need to copy data
|
||
|
||
00050 8b 45 0c mov eax, DWORD PTR nTooShort$[rbp]
|
||
00053 8b 4d 08 mov ecx, DWORD PTR nShared$[rbp]
|
||
00056 0b c8 or ecx, eax
|
||
00058 8b c1 mov eax, ecx
|
||
0005a 85 c0 test eax, eax
|
||
0005c 7d 0c jge SHORT $LN3@PrepareWri
|
||
|
||
; 811 : {
|
||
; 812 : PrepareWrite2( nLength );
|
||
|
||
0005e 8b 55 68 mov edx, DWORD PTR nLength$[rbp]
|
||
00061 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00065 e8 00 00 00 00 call ?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::PrepareWrite2
|
||
$LN3@PrepareWri:
|
||
|
||
; 813 : }
|
||
; 814 :
|
||
; 815 : return( m_pszData );
|
||
|
||
0006a 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
0006e 48 8b 00 mov rax, QWORD PTR [rax]
|
||
$LN4@PrepareWri:
|
||
|
||
; 816 : }
|
||
|
||
00071 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
00075 5d pop rbp
|
||
00076 c3 ret 0
|
||
?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ PROC ; ATL::CSimpleStringT<char,0>::GetData, COMDAT
|
||
|
||
; 799 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
|
||
; 800 : return( reinterpret_cast< CStringData* >( m_pszData )-1 );
|
||
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00014 48 83 e8 18 sub rax, 24
|
||
|
||
; 801 : }
|
||
|
||
00018 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0001c 5d pop rbp
|
||
0001d c3 ret 0
|
||
?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
nOldLength$ = 8
|
||
pNewData$ = 16
|
||
nCharsToCopy$ = 24
|
||
tv86 = 92
|
||
tv134 = 96
|
||
tv76 = 96
|
||
tv132 = 104
|
||
tv83 = 104
|
||
this$ = 128
|
||
nLength$ = 136
|
||
?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<char,0>::Fork, COMDAT
|
||
|
||
; 783 : {
|
||
|
||
$LN6:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 81 ec 90 00
|
||
00 00 sub rsp, 144 ; 00000090H
|
||
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 784 : CStringData* pOldData = GetData();
|
||
|
||
00016 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR this$[rbp]
|
||
0001d e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00022 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 785 : int nOldLength = pOldData->nDataLength;
|
||
|
||
00026 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
0002a 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
0002d 89 45 08 mov DWORD PTR nOldLength$[rbp], eax
|
||
|
||
; 786 : CStringData* pNewData = pOldData->pStringMgr->Clone()->Allocate( nLength, sizeof( XCHAR ) );
|
||
|
||
00030 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00034 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00037 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
0003b 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
0003e 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00041 ff 50 20 call QWORD PTR [rax+32]
|
||
00044 48 89 45 60 mov QWORD PTR tv76[rbp], rax
|
||
00048 48 8b 45 60 mov rax, QWORD PTR tv76[rbp]
|
||
0004c 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004f 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00052 48 89 45 68 mov QWORD PTR tv83[rbp], rax
|
||
00056 41 b8 01 00 00
|
||
00 mov r8d, 1
|
||
0005c 8b 95 88 00 00
|
||
00 mov edx, DWORD PTR nLength$[rbp]
|
||
00062 48 8b 4d 60 mov rcx, QWORD PTR tv76[rbp]
|
||
00066 ff 55 68 call QWORD PTR tv83[rbp]
|
||
00069 48 89 45 10 mov QWORD PTR pNewData$[rbp], rax
|
||
|
||
; 787 : if( pNewData == NULL )
|
||
|
||
0006d 48 83 7d 10 00 cmp QWORD PTR pNewData$[rbp], 0
|
||
00072 75 05 jne SHORT $LN2@Fork
|
||
|
||
; 788 : {
|
||
; 789 : ThrowMemoryException();
|
||
|
||
00074 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
$LN2@Fork:
|
||
|
||
; 790 : }
|
||
; 791 : int nCharsToCopy = ((nOldLength < nLength) ? nOldLength : nLength)+1; // Copy '\0'
|
||
|
||
00079 8b 85 88 00 00
|
||
00 mov eax, DWORD PTR nLength$[rbp]
|
||
0007f 39 45 08 cmp DWORD PTR nOldLength$[rbp], eax
|
||
00082 7d 08 jge SHORT $LN4@Fork
|
||
00084 8b 45 08 mov eax, DWORD PTR nOldLength$[rbp]
|
||
00087 89 45 5c mov DWORD PTR tv86[rbp], eax
|
||
0008a eb 09 jmp SHORT $LN5@Fork
|
||
$LN4@Fork:
|
||
0008c 8b 85 88 00 00
|
||
00 mov eax, DWORD PTR nLength$[rbp]
|
||
00092 89 45 5c mov DWORD PTR tv86[rbp], eax
|
||
$LN5@Fork:
|
||
00095 8b 45 5c mov eax, DWORD PTR tv86[rbp]
|
||
00098 ff c0 inc eax
|
||
0009a 89 45 18 mov DWORD PTR nCharsToCopy$[rbp], eax
|
||
|
||
; 792 : memcpy_s( PXSTR( pNewData->data() ), nCharsToCopy * sizeof( XCHAR ),
|
||
|
||
0009d 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
000a1 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000a6 48 89 45 60 mov QWORD PTR tv134[rbp], rax
|
||
000aa 48 8b 4d 10 mov rcx, QWORD PTR pNewData$[rbp]
|
||
000ae e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000b3 48 89 45 68 mov QWORD PTR tv132[rbp], rax
|
||
000b7 48 63 45 18 movsxd rax, DWORD PTR nCharsToCopy$[rbp]
|
||
000bb 48 63 4d 18 movsxd rcx, DWORD PTR nCharsToCopy$[rbp]
|
||
000bf 4c 8b c8 mov r9, rax
|
||
000c2 4c 8b 45 60 mov r8, QWORD PTR tv134[rbp]
|
||
000c6 48 8b d1 mov rdx, rcx
|
||
000c9 48 8b 4d 68 mov rcx, QWORD PTR tv132[rbp]
|
||
000cd e8 00 00 00 00 call memcpy_s
|
||
|
||
; 793 : PCXSTR( pOldData->data() ), nCharsToCopy * sizeof( XCHAR ));
|
||
; 794 : pNewData->nDataLength = nOldLength;
|
||
|
||
000d2 48 8b 45 10 mov rax, QWORD PTR pNewData$[rbp]
|
||
000d6 8b 4d 08 mov ecx, DWORD PTR nOldLength$[rbp]
|
||
000d9 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 795 : pOldData->Release();
|
||
|
||
000dc 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
000e0 e8 00 00 00 00 call ?Release@CStringData@ATL@@QEAAXXZ ; ATL::CStringData::Release
|
||
|
||
; 796 : Attach( pNewData );
|
||
|
||
000e5 48 8b 55 10 mov rdx, QWORD PTR pNewData$[rbp]
|
||
000e9 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR this$[rbp]
|
||
000f0 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<char,0>::Attach
|
||
$LN3@Fork:
|
||
|
||
; 797 : }
|
||
|
||
000f5 48 8d 65 70 lea rsp, QWORD PTR [rbp+112]
|
||
000f9 5d pop rbp
|
||
000fa c3 ret 0
|
||
?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
pData$ = 88
|
||
?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z PROC ; ATL::CSimpleStringT<char,0>::Attach, COMDAT
|
||
|
||
; 779 : {
|
||
|
||
$LN3:
|
||
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000a 55 push rbp
|
||
0000b 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 780 : m_pszData = static_cast< PXSTR >( pData->data() );
|
||
|
||
00014 48 8b 4d 58 mov rcx, QWORD PTR pData$[rbp]
|
||
00018 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
0001d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00021 48 89 01 mov QWORD PTR [rcx], rax
|
||
|
||
; 781 : }
|
||
|
||
00024 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00028 5d pop rbp
|
||
00029 c3 ret 0
|
||
?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@KAXXZ
|
||
_TEXT SEGMENT
|
||
?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ PROC ; ATL::CSimpleStringT<char,0>::ThrowMemoryException, COMDAT
|
||
|
||
; 772 : {
|
||
|
||
$LN3:
|
||
00000 40 55 push rbp
|
||
00002 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
00006 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 773 : AtlThrow( E_OUTOFMEMORY );
|
||
|
||
0000b b9 0e 00 07 80 mov ecx, -2147024882 ; ffffffff8007000eH
|
||
00010 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@ThrowMemor:
|
||
|
||
; 774 : }
|
||
|
||
00015 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00019 5d pop rbp
|
||
0001a c3 ret 0
|
||
?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ENDP ; ATL::CSimpleStringT<char,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 ?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z
|
||
_TEXT SEGMENT
|
||
psz$ = 80
|
||
sizeInXChar$ = 88
|
||
?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z PROC ; ATL::CSimpleStringT<char,0>::StringLengthN, COMDAT
|
||
|
||
; 739 : {
|
||
|
||
$LN4:
|
||
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000a 55 push rbp
|
||
0000b 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 740 : if( psz == NULL )
|
||
|
||
00014 48 83 7d 50 00 cmp QWORD PTR psz$[rbp], 0
|
||
00019 75 04 jne SHORT $LN2@StringLeng
|
||
|
||
; 741 : {
|
||
; 742 : return( 0 );
|
||
|
||
0001b 33 c0 xor eax, eax
|
||
0001d eb 0e jmp SHORT $LN1@StringLeng
|
||
$LN2@StringLeng:
|
||
|
||
; 743 : }
|
||
; 744 : return( int( strnlen( psz, sizeInXChar ) ) );
|
||
|
||
0001f 48 8b 55 58 mov rdx, QWORD PTR sizeInXChar$[rbp]
|
||
00023 48 8b 4d 50 mov rcx, QWORD PTR psz$[rbp]
|
||
00027 e8 00 00 00 00 call strnlen
|
||
0002c 90 npad 1
|
||
$LN1@StringLeng:
|
||
|
||
; 745 : }
|
||
|
||
0002d 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00031 5d pop rbp
|
||
00032 c3 ret 0
|
||
?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z ENDP ; ATL::CSimpleStringT<char,0>::StringLengthN
|
||
_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 ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z
|
||
_TEXT SEGMENT
|
||
nAlloc$1 = 0
|
||
this$ = 96
|
||
nNewLength$ = 104
|
||
?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z PROC ; ATL::CSimpleStringT<char,0>::ReleaseBuffer, COMDAT
|
||
|
||
; 557 : {
|
||
|
||
$LN4:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 558 : if( nNewLength == -1 )
|
||
|
||
00013 83 7d 68 ff cmp DWORD PTR nNewLength$[rbp], -1
|
||
00017 75 25 jne SHORT $LN2@ReleaseBuf
|
||
|
||
; 559 : {
|
||
; 560 : int nAlloc = GetData()->nAllocLength;
|
||
|
||
00019 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
0001d e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00022 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00025 89 45 00 mov DWORD PTR nAlloc$1[rbp], eax
|
||
|
||
; 561 : nNewLength = StringLengthN( m_pszData, nAlloc);
|
||
|
||
00028 48 63 45 00 movsxd rax, DWORD PTR nAlloc$1[rbp]
|
||
0002c 48 8b d0 mov rdx, rax
|
||
0002f 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
00033 48 8b 08 mov rcx, QWORD PTR [rax]
|
||
00036 e8 00 00 00 00 call ?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z ; ATL::CSimpleStringT<char,0>::StringLengthN
|
||
0003b 89 45 68 mov DWORD PTR nNewLength$[rbp], eax
|
||
$LN2@ReleaseBuf:
|
||
|
||
; 562 : }
|
||
; 563 : SetLength( nNewLength );
|
||
|
||
0003e 8b 55 68 mov edx, DWORD PTR nNewLength$[rbp]
|
||
00041 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00045 e8 00 00 00 00 call ?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::SetLength
|
||
|
||
; 564 : }
|
||
|
||
0004a 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
0004e 5d pop rbp
|
||
0004f c3 ret 0
|
||
?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ENDP ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
_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@D$0A@@ATL@@QEBAHXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ PROC ; ATL::CSimpleStringT<char,0>::GetLength, COMDAT
|
||
|
||
; 518 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 519 : return( GetData()->nDataLength );
|
||
|
||
0000f 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00013 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00018 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
|
||
; 520 : }
|
||
|
||
0001b 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0001f 5d pop rbp
|
||
00020 c3 ret 0
|
||
?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ ENDP ; ATL::CSimpleStringT<char,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@D$0A@@ATL@@QEAAPEADH@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
nMinBufferLength$ = 88
|
||
?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z PROC ; ATL::CSimpleStringT<char,0>::GetBuffer, COMDAT
|
||
|
||
; 507 : {
|
||
|
||
$LN3:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 508 : return( PrepareWrite( nMinBufferLength ) );
|
||
|
||
00013 8b 55 58 mov edx, DWORD PTR nMinBufferLength$[rbp]
|
||
00016 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0001a e8 00 00 00 00 call ?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z ; ATL::CSimpleStringT<char,0>::PrepareWrite
|
||
|
||
; 509 : }
|
||
|
||
0001f 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00023 5d pop rbp
|
||
00024 c3 ret 0
|
||
?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z ENDP ; ATL::CSimpleStringT<char,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 ??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ PROC ; ATL::CSimpleStringT<char,0>::operator char const *, COMDAT
|
||
|
||
; 376 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
|
||
; 377 : return( m_pszData );
|
||
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8b 00 mov rax, QWORD PTR [rax]
|
||
|
||
; 378 : }
|
||
|
||
00014 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00018 5d pop rbp
|
||
00019 c3 ret 0
|
||
??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ ENDP ; ATL::CSimpleStringT<char,0>::operator char 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\afxcoll.inl
|
||
; COMDAT ?GetData@CByteArray@@QEBAPEBEXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?GetData@CByteArray@@QEBAPEBEXZ PROC ; CByteArray::GetData, COMDAT
|
||
|
||
; 46 : { return (const BYTE*)m_pData; }
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8b 40 08 mov rax, QWORD PTR [rax+8]
|
||
00015 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00019 5d pop rbp
|
||
0001a c3 ret 0
|
||
?GetData@CByteArray@@QEBAPEBEXZ ENDP ; CByteArray::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\afxcoll.inl
|
||
; COMDAT ?SetAt@CByteArray@@QEAAX_JE@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
nIndex$ = 88
|
||
newElement$ = 96
|
||
?SetAt@CByteArray@@QEAAX_JE@Z PROC ; CByteArray::SetAt, COMDAT
|
||
|
||
; 35 : { ASSERT(nIndex >= 0 && nIndex < m_nSize);
|
||
|
||
$LN5:
|
||
00000 44 88 44 24 18 mov BYTE PTR [rsp+24], r8b
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
00014 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 36 : if( nIndex < 0 || nIndex >= m_nSize )
|
||
|
||
00019 48 83 7d 58 00 cmp QWORD PTR nIndex$[rbp], 0
|
||
0001e 7c 0e jl SHORT $LN3@SetAt
|
||
00020 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00024 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00028 48 39 45 58 cmp QWORD PTR nIndex$[rbp], rax
|
||
0002c 7c 05 jl SHORT $LN2@SetAt
|
||
$LN3@SetAt:
|
||
|
||
; 37 : AfxThrowInvalidArgException();
|
||
|
||
0002e e8 00 00 00 00 call ?AfxThrowInvalidArgException@@YAXXZ ; AfxThrowInvalidArgException
|
||
$LN2@SetAt:
|
||
|
||
; 38 : m_pData[nIndex] = newElement; }
|
||
|
||
00033 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00037 48 8b 40 08 mov rax, QWORD PTR [rax+8]
|
||
0003b 48 8b 4d 58 mov rcx, QWORD PTR nIndex$[rbp]
|
||
0003f 0f b6 55 60 movzx edx, BYTE PTR newElement$[rbp]
|
||
00043 88 14 08 mov BYTE PTR [rax+rcx], dl
|
||
$LN4@SetAt:
|
||
00046 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0004a 5d pop rbp
|
||
0004b c3 ret 0
|
||
?SetAt@CByteArray@@QEAAX_JE@Z ENDP ; CByteArray::SetAt
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\afxcoll.inl
|
||
; COMDAT ?RemoveAll@CByteArray@@QEAAXXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?RemoveAll@CByteArray@@QEAAXXZ PROC ; CByteArray::RemoveAll, COMDAT
|
||
|
||
; 28 : { SetSize(0); }
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
0000f 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00016 33 d2 xor edx, edx
|
||
00018 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0001c e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
00021 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00025 5d pop rbp
|
||
00026 c3 ret 0
|
||
?RemoveAll@CByteArray@@QEAAXXZ ENDP ; CByteArray::RemoveAll
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\atlmfc\include\afxcoll.inl
|
||
; COMDAT ?GetSize@CByteArray@@QEBA_JXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?GetSize@CByteArray@@QEBA_JXZ PROC ; CByteArray::GetSize, COMDAT
|
||
|
||
; 20 : { return m_nSize; }
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00015 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00019 5d pop rbp
|
||
0001a c3 ret 0
|
||
?GetSize@CByteArray@@QEBA_JXZ ENDP ; CByteArray::GetSize
|
||
_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 ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
nLength$ = 88
|
||
?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::SetLength, COMDAT
|
||
|
||
; 867 : {
|
||
|
||
$LN5:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 868 : ATLASSERT( nLength >= 0 );
|
||
; 869 : ATLASSERT( nLength <= GetData()->nAllocLength );
|
||
; 870 :
|
||
; 871 : if( nLength < 0 || nLength > GetData()->nAllocLength)
|
||
|
||
00013 83 7d 58 00 cmp DWORD PTR nLength$[rbp], 0
|
||
00017 7c 11 jl SHORT $LN3@SetLength
|
||
00019 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0001d e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00022 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00025 39 45 58 cmp DWORD PTR nLength$[rbp], eax
|
||
00028 7e 0a jle SHORT $LN2@SetLength
|
||
$LN3@SetLength:
|
||
|
||
; 872 : AtlThrow(E_INVALIDARG);
|
||
|
||
0002a b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
0002f e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@SetLength:
|
||
|
||
; 873 :
|
||
; 874 : GetData()->nDataLength = nLength;
|
||
|
||
00034 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00038 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0003d 8b 4d 58 mov ecx, DWORD PTR nLength$[rbp]
|
||
00040 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 875 : m_pszData[nLength] = 0;
|
||
|
||
00043 48 63 45 58 movsxd rax, DWORD PTR nLength$[rbp]
|
||
00047 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0004b 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
0004e 33 d2 xor edx, edx
|
||
00050 66 89 14 41 mov WORD PTR [rcx+rax*2], dx
|
||
$LN4@SetLength:
|
||
|
||
; 876 : }
|
||
|
||
00054 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00058 5d pop rbp
|
||
00059 c3 ret 0
|
||
?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@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@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
pStringMgr$ = 8
|
||
pNewData$ = 16
|
||
tv78 = 88
|
||
this$ = 112
|
||
nLength$ = 120
|
||
?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::Reallocate, COMDAT
|
||
|
||
; 849 : {
|
||
|
||
$LN6:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 81 ec 80 00
|
||
00 00 sub rsp, 128 ; 00000080H
|
||
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 850 : CStringData* pOldData = GetData();
|
||
|
||
00016 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
0001a e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0001f 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 851 : ATLASSERT( pOldData->nAllocLength < nLength );
|
||
; 852 : IAtlStringMgr* pStringMgr = pOldData->pStringMgr;
|
||
|
||
00023 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00027 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0002a 48 89 45 08 mov QWORD PTR pStringMgr$[rbp], rax
|
||
|
||
; 853 : if ( pOldData->nAllocLength >= nLength || nLength <= 0)
|
||
|
||
0002e 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00032 8b 4d 78 mov ecx, DWORD PTR nLength$[rbp]
|
||
00035 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
00038 7d 06 jge SHORT $LN3@Reallocate
|
||
0003a 83 7d 78 00 cmp DWORD PTR nLength$[rbp], 0
|
||
0003e 7f 07 jg SHORT $LN2@Reallocate
|
||
$LN3@Reallocate:
|
||
|
||
; 854 : {
|
||
; 855 : ThrowMemoryException();
|
||
|
||
00040 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
|
||
|
||
; 856 : return;
|
||
|
||
00045 eb 41 jmp SHORT $LN1@Reallocate
|
||
$LN2@Reallocate:
|
||
|
||
; 857 : }
|
||
; 858 : CStringData* pNewData = pStringMgr->Reallocate( pOldData, nLength, sizeof( XCHAR ) );
|
||
|
||
00047 48 8b 45 08 mov rax, QWORD PTR pStringMgr$[rbp]
|
||
0004b 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004e 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00052 48 89 45 58 mov QWORD PTR tv78[rbp], rax
|
||
00056 41 b9 02 00 00
|
||
00 mov r9d, 2
|
||
0005c 44 8b 45 78 mov r8d, DWORD PTR nLength$[rbp]
|
||
00060 48 8b 55 00 mov rdx, QWORD PTR pOldData$[rbp]
|
||
00064 48 8b 4d 08 mov rcx, QWORD PTR pStringMgr$[rbp]
|
||
00068 ff 55 58 call QWORD PTR tv78[rbp]
|
||
0006b 48 89 45 10 mov QWORD PTR pNewData$[rbp], rax
|
||
|
||
; 859 : if( pNewData == NULL )
|
||
|
||
0006f 48 83 7d 10 00 cmp QWORD PTR pNewData$[rbp], 0
|
||
00074 75 05 jne SHORT $LN4@Reallocate
|
||
|
||
; 860 : {
|
||
; 861 : ThrowMemoryException();
|
||
|
||
00076 e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
|
||
$LN4@Reallocate:
|
||
|
||
; 862 : }
|
||
; 863 : Attach( pNewData );
|
||
|
||
0007b 48 8b 55 10 mov rdx, QWORD PTR pNewData$[rbp]
|
||
0007f 48 8b 4d 70 mov rcx, QWORD PTR this$[rbp]
|
||
00083 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
|
||
$LN1@Reallocate:
|
||
$LN5@Reallocate:
|
||
|
||
; 864 : }
|
||
|
||
00088 48 8d 65 60 lea rsp, QWORD PTR [rbp+96]
|
||
0008c 5d pop rbp
|
||
0008d c3 ret 0
|
||
?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@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@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
nNewLength$1 = 8
|
||
this$ = 96
|
||
nLength$ = 104
|
||
?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2, COMDAT
|
||
|
||
; 818 : {
|
||
|
||
$LN10:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 819 : CStringData* pOldData = GetData();
|
||
|
||
00013 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00017 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0001c 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 820 : if( pOldData->nDataLength > nLength )
|
||
|
||
00020 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00024 8b 4d 68 mov ecx, DWORD PTR nLength$[rbp]
|
||
00027 39 48 08 cmp DWORD PTR [rax+8], ecx
|
||
0002a 7e 0a jle SHORT $LN2@PrepareWri
|
||
|
||
; 821 : {
|
||
; 822 : nLength = pOldData->nDataLength;
|
||
|
||
0002c 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00030 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
00033 89 45 68 mov DWORD PTR nLength$[rbp], eax
|
||
$LN2@PrepareWri:
|
||
|
||
; 823 : }
|
||
; 824 : if( pOldData->IsShared() )
|
||
|
||
00036 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
0003a e8 00 00 00 00 call ?IsShared@CStringData@ATL@@QEBA_NXZ ; ATL::CStringData::IsShared
|
||
0003f 0f b6 c0 movzx eax, al
|
||
00042 85 c0 test eax, eax
|
||
00044 74 0e je SHORT $LN3@PrepareWri
|
||
|
||
; 825 : {
|
||
; 826 : Fork( nLength );
|
||
|
||
00046 8b 55 68 mov edx, DWORD PTR nLength$[rbp]
|
||
00049 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
0004d e8 00 00 00 00 call ?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Fork
|
||
|
||
; 827 : }
|
||
|
||
00052 eb 58 jmp SHORT $LN4@PrepareWri
|
||
$LN3@PrepareWri:
|
||
|
||
; 828 : else if( pOldData->nAllocLength < nLength )
|
||
|
||
00054 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00058 8b 4d 68 mov ecx, DWORD PTR nLength$[rbp]
|
||
0005b 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
0005e 7d 4c jge SHORT $LN5@PrepareWri
|
||
|
||
; 829 : {
|
||
; 830 : // Grow exponentially, until we hit 1G, then by 1M thereafter.
|
||
; 831 : int nNewLength = pOldData->nAllocLength;
|
||
|
||
00060 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00064 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00067 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
|
||
; 832 : if( nNewLength > 1024 * 1024 * 1024 )
|
||
|
||
0006a 81 7d 08 00 00
|
||
00 40 cmp DWORD PTR nNewLength$1[rbp], 1073741824 ; 40000000H
|
||
00071 7e 0d jle SHORT $LN6@PrepareWri
|
||
|
||
; 833 : {
|
||
; 834 : nNewLength += 1024 * 1024;
|
||
|
||
00073 8b 45 08 mov eax, DWORD PTR nNewLength$1[rbp]
|
||
00076 05 00 00 10 00 add eax, 1048576 ; 00100000H
|
||
0007b 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
|
||
; 835 : }
|
||
|
||
0007e eb 12 jmp SHORT $LN7@PrepareWri
|
||
$LN6@PrepareWri:
|
||
|
||
; 836 : else
|
||
; 837 : {
|
||
; 838 : // Exponential growth factor is 1.5.
|
||
; 839 : nNewLength = nNewLength + nNewLength / 2;
|
||
|
||
00080 8b 45 08 mov eax, DWORD PTR nNewLength$1[rbp]
|
||
00083 99 cdq
|
||
00084 2b c2 sub eax, edx
|
||
00086 d1 f8 sar eax, 1
|
||
00088 8b 4d 08 mov ecx, DWORD PTR nNewLength$1[rbp]
|
||
0008b 03 c8 add ecx, eax
|
||
0008d 8b c1 mov eax, ecx
|
||
0008f 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
$LN7@PrepareWri:
|
||
|
||
; 840 : }
|
||
; 841 : if( nNewLength < nLength )
|
||
|
||
00092 8b 45 68 mov eax, DWORD PTR nLength$[rbp]
|
||
00095 39 45 08 cmp DWORD PTR nNewLength$1[rbp], eax
|
||
00098 7d 06 jge SHORT $LN8@PrepareWri
|
||
|
||
; 842 : {
|
||
; 843 : nNewLength = nLength;
|
||
|
||
0009a 8b 45 68 mov eax, DWORD PTR nLength$[rbp]
|
||
0009d 89 45 08 mov DWORD PTR nNewLength$1[rbp], eax
|
||
$LN8@PrepareWri:
|
||
|
||
; 844 : }
|
||
; 845 : Reallocate( nNewLength );
|
||
|
||
000a0 8b 55 08 mov edx, DWORD PTR nNewLength$1[rbp]
|
||
000a3 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
000a7 e8 00 00 00 00 call ?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Reallocate
|
||
$LN5@PrepareWri:
|
||
$LN4@PrepareWri:
|
||
|
||
; 846 : }
|
||
; 847 : }
|
||
|
||
000ac 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
000b0 5d pop rbp
|
||
000b1 c3 ret 0
|
||
?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@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@@AEAAPEA_WH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
nShared$ = 8
|
||
nTooShort$ = 12
|
||
this$ = 96
|
||
nLength$ = 104
|
||
?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite, COMDAT
|
||
|
||
; 803 : {
|
||
|
||
$LN5:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 804 : if (nLength < 0)
|
||
|
||
00013 83 7d 68 00 cmp DWORD PTR nLength$[rbp], 0
|
||
00017 7d 0a jge SHORT $LN2@PrepareWri
|
||
|
||
; 805 : AtlThrow(E_INVALIDARG);
|
||
|
||
00019 b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
0001e e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@PrepareWri:
|
||
|
||
; 806 :
|
||
; 807 : CStringData* pOldData = GetData();
|
||
|
||
00023 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00027 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0002c 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 808 : int nShared = 1-pOldData->nRefs; // nShared < 0 means true, >= 0 means false
|
||
|
||
00030 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00034 b9 01 00 00 00 mov ecx, 1
|
||
00039 2b 48 10 sub ecx, DWORD PTR [rax+16]
|
||
0003c 8b c1 mov eax, ecx
|
||
0003e 89 45 08 mov DWORD PTR nShared$[rbp], eax
|
||
|
||
; 809 : int nTooShort = pOldData->nAllocLength-nLength; // nTooShort < 0 means true, >= 0 means false
|
||
|
||
00041 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00045 8b 4d 68 mov ecx, DWORD PTR nLength$[rbp]
|
||
00048 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
0004b 2b c1 sub eax, ecx
|
||
0004d 89 45 0c mov DWORD PTR nTooShort$[rbp], eax
|
||
|
||
; 810 : if( (nShared|nTooShort) < 0 ) // If either sign bit is set (i.e. either is less than zero), we need to copy data
|
||
|
||
00050 8b 45 0c mov eax, DWORD PTR nTooShort$[rbp]
|
||
00053 8b 4d 08 mov ecx, DWORD PTR nShared$[rbp]
|
||
00056 0b c8 or ecx, eax
|
||
00058 8b c1 mov eax, ecx
|
||
0005a 85 c0 test eax, eax
|
||
0005c 7d 0c jge SHORT $LN3@PrepareWri
|
||
|
||
; 811 : {
|
||
; 812 : PrepareWrite2( nLength );
|
||
|
||
0005e 8b 55 68 mov edx, DWORD PTR nLength$[rbp]
|
||
00061 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00065 e8 00 00 00 00 call ?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2
|
||
$LN3@PrepareWri:
|
||
|
||
; 813 : }
|
||
; 814 :
|
||
; 815 : return( m_pszData );
|
||
|
||
0006a 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
0006e 48 8b 00 mov rax, QWORD PTR [rax]
|
||
$LN4@PrepareWri:
|
||
|
||
; 816 : }
|
||
|
||
00071 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
00075 5d pop rbp
|
||
00076 c3 ret 0
|
||
?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_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@@AEBAPEAUCStringData@2@XZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetData, COMDAT
|
||
|
||
; 799 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
|
||
; 800 : return( reinterpret_cast< CStringData* >( m_pszData )-1 );
|
||
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00014 48 83 e8 18 sub rax, 24
|
||
|
||
; 801 : }
|
||
|
||
00018 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0001c 5d pop rbp
|
||
0001d c3 ret 0
|
||
?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@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@@AEAAXH@Z
|
||
_TEXT SEGMENT
|
||
pOldData$ = 0
|
||
nOldLength$ = 8
|
||
pNewData$ = 16
|
||
nCharsToCopy$ = 24
|
||
tv86 = 92
|
||
tv136 = 96
|
||
tv76 = 96
|
||
tv134 = 104
|
||
tv83 = 104
|
||
this$ = 128
|
||
nLength$ = 136
|
||
?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::Fork, COMDAT
|
||
|
||
; 783 : {
|
||
|
||
$LN6:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 81 ec 90 00
|
||
00 00 sub rsp, 144 ; 00000090H
|
||
00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 784 : CStringData* pOldData = GetData();
|
||
|
||
00016 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR this$[rbp]
|
||
0001d e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00022 48 89 45 00 mov QWORD PTR pOldData$[rbp], rax
|
||
|
||
; 785 : int nOldLength = pOldData->nDataLength;
|
||
|
||
00026 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
0002a 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
0002d 89 45 08 mov DWORD PTR nOldLength$[rbp], eax
|
||
|
||
; 786 : CStringData* pNewData = pOldData->pStringMgr->Clone()->Allocate( nLength, sizeof( XCHAR ) );
|
||
|
||
00030 48 8b 45 00 mov rax, QWORD PTR pOldData$[rbp]
|
||
00034 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00037 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
0003b 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
0003e 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00041 ff 50 20 call QWORD PTR [rax+32]
|
||
00044 48 89 45 60 mov QWORD PTR tv76[rbp], rax
|
||
00048 48 8b 45 60 mov rax, QWORD PTR tv76[rbp]
|
||
0004c 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004f 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00052 48 89 45 68 mov QWORD PTR tv83[rbp], rax
|
||
00056 41 b8 02 00 00
|
||
00 mov r8d, 2
|
||
0005c 8b 95 88 00 00
|
||
00 mov edx, DWORD PTR nLength$[rbp]
|
||
00062 48 8b 4d 60 mov rcx, QWORD PTR tv76[rbp]
|
||
00066 ff 55 68 call QWORD PTR tv83[rbp]
|
||
00069 48 89 45 10 mov QWORD PTR pNewData$[rbp], rax
|
||
|
||
; 787 : if( pNewData == NULL )
|
||
|
||
0006d 48 83 7d 10 00 cmp QWORD PTR pNewData$[rbp], 0
|
||
00072 75 05 jne SHORT $LN2@Fork
|
||
|
||
; 788 : {
|
||
; 789 : ThrowMemoryException();
|
||
|
||
00074 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'
|
||
|
||
00079 8b 85 88 00 00
|
||
00 mov eax, DWORD PTR nLength$[rbp]
|
||
0007f 39 45 08 cmp DWORD PTR nOldLength$[rbp], eax
|
||
00082 7d 08 jge SHORT $LN4@Fork
|
||
00084 8b 45 08 mov eax, DWORD PTR nOldLength$[rbp]
|
||
00087 89 45 5c mov DWORD PTR tv86[rbp], eax
|
||
0008a eb 09 jmp SHORT $LN5@Fork
|
||
$LN4@Fork:
|
||
0008c 8b 85 88 00 00
|
||
00 mov eax, DWORD PTR nLength$[rbp]
|
||
00092 89 45 5c mov DWORD PTR tv86[rbp], eax
|
||
$LN5@Fork:
|
||
00095 8b 45 5c mov eax, DWORD PTR tv86[rbp]
|
||
00098 ff c0 inc eax
|
||
0009a 89 45 18 mov DWORD PTR nCharsToCopy$[rbp], eax
|
||
|
||
; 792 : memcpy_s( PXSTR( pNewData->data() ), nCharsToCopy * sizeof( XCHAR ),
|
||
|
||
0009d 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
000a1 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000a6 48 89 45 60 mov QWORD PTR tv136[rbp], rax
|
||
000aa 48 8b 4d 10 mov rcx, QWORD PTR pNewData$[rbp]
|
||
000ae e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000b3 48 89 45 68 mov QWORD PTR tv134[rbp], rax
|
||
000b7 48 63 45 18 movsxd rax, DWORD PTR nCharsToCopy$[rbp]
|
||
000bb 48 d1 e0 shl rax, 1
|
||
000be 48 63 4d 18 movsxd rcx, DWORD PTR nCharsToCopy$[rbp]
|
||
000c2 48 d1 e1 shl rcx, 1
|
||
000c5 4c 8b c8 mov r9, rax
|
||
000c8 4c 8b 45 60 mov r8, QWORD PTR tv136[rbp]
|
||
000cc 48 8b d1 mov rdx, rcx
|
||
000cf 48 8b 4d 68 mov rcx, QWORD PTR tv134[rbp]
|
||
000d3 e8 00 00 00 00 call memcpy_s
|
||
|
||
; 793 : PCXSTR( pOldData->data() ), nCharsToCopy * sizeof( XCHAR ));
|
||
; 794 : pNewData->nDataLength = nOldLength;
|
||
|
||
000d8 48 8b 45 10 mov rax, QWORD PTR pNewData$[rbp]
|
||
000dc 8b 4d 08 mov ecx, DWORD PTR nOldLength$[rbp]
|
||
000df 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 795 : pOldData->Release();
|
||
|
||
000e2 48 8b 4d 00 mov rcx, QWORD PTR pOldData$[rbp]
|
||
000e6 e8 00 00 00 00 call ?Release@CStringData@ATL@@QEAAXXZ ; ATL::CStringData::Release
|
||
|
||
; 796 : Attach( pNewData );
|
||
|
||
000eb 48 8b 55 10 mov rdx, QWORD PTR pNewData$[rbp]
|
||
000ef 48 8b 8d 80 00
|
||
00 00 mov rcx, QWORD PTR this$[rbp]
|
||
000f6 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
|
||
$LN3@Fork:
|
||
|
||
; 797 : }
|
||
|
||
000fb 48 8d 65 70 lea rsp, QWORD PTR [rbp+112]
|
||
000ff 5d pop rbp
|
||
00100 c3 ret 0
|
||
?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@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@@AEAAXPEAUCStringData@2@@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
pData$ = 88
|
||
?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::Attach, COMDAT
|
||
|
||
; 779 : {
|
||
|
||
$LN3:
|
||
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000a 55 push rbp
|
||
0000b 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 780 : m_pszData = static_cast< PXSTR >( pData->data() );
|
||
|
||
00014 48 8b 4d 58 mov rcx, QWORD PTR pData$[rbp]
|
||
00018 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
0001d 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
00021 48 89 01 mov QWORD PTR [rcx], rax
|
||
|
||
; 781 : }
|
||
|
||
00024 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00028 5d pop rbp
|
||
00029 c3 ret 0
|
||
?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@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 : {
|
||
|
||
$LN3:
|
||
00000 40 55 push rbp
|
||
00002 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
00006 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 773 : AtlThrow( E_OUTOFMEMORY );
|
||
|
||
0000b b9 0e 00 07 80 mov ecx, -2147024882 ; ffffffff8007000eH
|
||
00010 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@ThrowMemor:
|
||
|
||
; 774 : }
|
||
|
||
00015 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00019 5d pop rbp
|
||
0001a 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 ?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z
|
||
_TEXT SEGMENT
|
||
psz$ = 80
|
||
sizeInXChar$ = 88
|
||
?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::StringLengthN, COMDAT
|
||
|
||
; 749 : {
|
||
|
||
$LN4:
|
||
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000a 55 push rbp
|
||
0000b 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 750 : if( psz == NULL )
|
||
|
||
00014 48 83 7d 50 00 cmp QWORD PTR psz$[rbp], 0
|
||
00019 75 04 jne SHORT $LN2@StringLeng
|
||
|
||
; 751 : {
|
||
; 752 : return( 0 );
|
||
|
||
0001b 33 c0 xor eax, eax
|
||
0001d eb 0e jmp SHORT $LN1@StringLeng
|
||
$LN2@StringLeng:
|
||
|
||
; 753 : }
|
||
; 754 : return( int( wcsnlen( psz, sizeInXChar ) ) );
|
||
|
||
0001f 48 8b 55 58 mov rdx, QWORD PTR sizeInXChar$[rbp]
|
||
00023 48 8b 4d 50 mov rcx, QWORD PTR psz$[rbp]
|
||
00027 e8 00 00 00 00 call wcsnlen
|
||
0002c 90 npad 1
|
||
$LN1@StringLeng:
|
||
|
||
; 755 : }
|
||
|
||
0002d 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00031 5d pop rbp
|
||
00032 c3 ret 0
|
||
?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::StringLengthN
|
||
_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 ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z
|
||
_TEXT SEGMENT
|
||
nAlloc$1 = 0
|
||
this$ = 96
|
||
nNewLength$ = 104
|
||
?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer, COMDAT
|
||
|
||
; 557 : {
|
||
|
||
$LN4:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 558 : if( nNewLength == -1 )
|
||
|
||
00013 83 7d 68 ff cmp DWORD PTR nNewLength$[rbp], -1
|
||
00017 75 25 jne SHORT $LN2@ReleaseBuf
|
||
|
||
; 559 : {
|
||
; 560 : int nAlloc = GetData()->nAllocLength;
|
||
|
||
00019 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
0001d e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00022 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00025 89 45 00 mov DWORD PTR nAlloc$1[rbp], eax
|
||
|
||
; 561 : nNewLength = StringLengthN( m_pszData, nAlloc);
|
||
|
||
00028 48 63 45 00 movsxd rax, DWORD PTR nAlloc$1[rbp]
|
||
0002c 48 8b d0 mov rdx, rax
|
||
0002f 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
00033 48 8b 08 mov rcx, QWORD PTR [rax]
|
||
00036 e8 00 00 00 00 call ?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z ; ATL::CSimpleStringT<wchar_t,0>::StringLengthN
|
||
0003b 89 45 68 mov DWORD PTR nNewLength$[rbp], eax
|
||
$LN2@ReleaseBuf:
|
||
|
||
; 562 : }
|
||
; 563 : SetLength( nNewLength );
|
||
|
||
0003e 8b 55 68 mov edx, DWORD PTR nNewLength$[rbp]
|
||
00041 48 8b 4d 60 mov rcx, QWORD PTR this$[rbp]
|
||
00045 e8 00 00 00 00 call ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetLength
|
||
|
||
; 564 : }
|
||
|
||
0004a 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
0004e 5d pop rbp
|
||
0004f c3 ret 0
|
||
?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
_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@@QEAAPEA_WH@Z
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
nMinBufferLength$ = 88
|
||
?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z PROC ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer, COMDAT
|
||
|
||
; 507 : {
|
||
|
||
$LN3:
|
||
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
|
||
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00009 55 push rbp
|
||
0000a 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 508 : return( PrepareWrite( nMinBufferLength ) );
|
||
|
||
00013 8b 55 58 mov edx, DWORD PTR nMinBufferLength$[rbp]
|
||
00016 48 8b 4d 50 mov rcx, QWORD PTR this$[rbp]
|
||
0001a e8 00 00 00 00 call ?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
|
||
|
||
; 509 : }
|
||
|
||
0001f 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00023 5d pop rbp
|
||
00024 c3 ret 0
|
||
?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_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 ?Release@CStringData@ATL@@QEAAXXZ
|
||
_TEXT SEGMENT
|
||
tv77 = 64
|
||
tv79 = 72
|
||
this$ = 96
|
||
?Release@CStringData@ATL@@QEAAXXZ PROC ; ATL::CStringData::Release, COMDAT
|
||
|
||
; 85 : {
|
||
|
||
$LN4:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 86 : ATLASSERT( nRefs != 0 );
|
||
; 87 :
|
||
; 88 : if( _InterlockedDecrement( &nRefs ) <= 0 )
|
||
|
||
0000f 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
00013 48 83 c0 10 add rax, 16
|
||
00017 b9 ff ff ff ff mov ecx, -1
|
||
0001c f0 0f c1 08 lock xadd DWORD PTR [rax], ecx
|
||
00020 ff c9 dec ecx
|
||
00022 8b c1 mov eax, ecx
|
||
00024 85 c0 test eax, eax
|
||
00026 7f 28 jg SHORT $LN2@Release
|
||
|
||
; 89 : {
|
||
; 90 : pStringMgr->Free( this );
|
||
|
||
00028 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
0002c 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0002f 48 89 45 40 mov QWORD PTR tv77[rbp], rax
|
||
00033 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
00037 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0003a 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0003d 48 8b 40 08 mov rax, QWORD PTR [rax+8]
|
||
00041 48 89 45 48 mov QWORD PTR tv79[rbp], rax
|
||
00045 48 8b 55 60 mov rdx, QWORD PTR this$[rbp]
|
||
00049 48 8b 4d 40 mov rcx, QWORD PTR tv77[rbp]
|
||
0004d ff 55 48 call QWORD PTR tv79[rbp]
|
||
$LN2@Release:
|
||
|
||
; 91 : }
|
||
; 92 : }
|
||
|
||
00050 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
00054 5d pop rbp
|
||
00055 c3 ret 0
|
||
?Release@CStringData@ATL@@QEAAXXZ 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@@QEBA_NXZ
|
||
_TEXT SEGMENT
|
||
tv66 = 64
|
||
this$ = 96
|
||
?IsShared@CStringData@ATL@@QEBA_NXZ PROC ; ATL::CStringData::IsShared, COMDAT
|
||
|
||
; 72 : {
|
||
|
||
$LN5:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 50 sub rsp, 80 ; 00000050H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
|
||
; 73 : return( nRefs > 1 );
|
||
|
||
0000d 48 8b 45 60 mov rax, QWORD PTR this$[rbp]
|
||
00011 83 78 10 01 cmp DWORD PTR [rax+16], 1
|
||
00015 7e 09 jle SHORT $LN3@IsShared
|
||
00017 c7 45 40 01 00
|
||
00 00 mov DWORD PTR tv66[rbp], 1
|
||
0001e eb 07 jmp SHORT $LN4@IsShared
|
||
$LN3@IsShared:
|
||
00020 c7 45 40 00 00
|
||
00 00 mov DWORD PTR tv66[rbp], 0
|
||
$LN4@IsShared:
|
||
00027 0f b6 45 40 movzx eax, BYTE PTR tv66[rbp]
|
||
|
||
; 74 : }
|
||
|
||
0002b 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
0002f 5d pop rbp
|
||
00030 c3 ret 0
|
||
?IsShared@CStringData@ATL@@QEBA_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 ?data@CStringData@ATL@@QEAAPEAXXZ
|
||
_TEXT SEGMENT
|
||
this$ = 80
|
||
?data@CStringData@ATL@@QEAAPEAXXZ PROC ; ATL::CStringData::data, COMDAT
|
||
|
||
; 58 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
|
||
; 59 : return (this+1);
|
||
|
||
0000d 48 8b 45 50 mov rax, QWORD PTR this$[rbp]
|
||
00011 48 83 c0 18 add rax, 24
|
||
|
||
; 60 : }
|
||
|
||
00015 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00019 5d pop rbp
|
||
0001a c3 ret 0
|
||
?data@CStringData@ATL@@QEAAPEAXXZ 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\atlexcept.h
|
||
; COMDAT ?AtlThrowImpl@ATL@@YAXJ@Z
|
||
_TEXT SEGMENT
|
||
hr$ = 80
|
||
?AtlThrowImpl@ATL@@YAXJ@Z PROC ; ATL::AtlThrowImpl, COMDAT
|
||
|
||
; 65 : {
|
||
|
||
$LN5:
|
||
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
|
||
00004 55 push rbp
|
||
00005 48 83 ec 60 sub rsp, 96 ; 00000060H
|
||
00009 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 66 : ATLTRACE(atlTraceException, 0, _T("AtlThrow: hr = 0x%x\n"), hr );
|
||
; 67 : #ifdef _AFX
|
||
; 68 : if( hr == E_OUTOFMEMORY )
|
||
|
||
0000e 81 7d 50 0e 00
|
||
07 80 cmp DWORD PTR hr$[rbp], -2147024882 ; ffffffff8007000eH
|
||
00015 75 07 jne SHORT $LN2@AtlThrowIm
|
||
|
||
; 69 : {
|
||
; 70 : AfxThrowMemoryException();
|
||
|
||
00017 e8 00 00 00 00 call ?AfxThrowMemoryException@@YAXXZ ; AfxThrowMemoryException
|
||
|
||
; 71 : }
|
||
|
||
0001c eb 08 jmp SHORT $LN3@AtlThrowIm
|
||
$LN2@AtlThrowIm:
|
||
|
||
; 72 : else
|
||
; 73 : {
|
||
; 74 : AfxThrowOleException( hr );
|
||
|
||
0001e 8b 4d 50 mov ecx, DWORD PTR hr$[rbp]
|
||
00021 e8 00 00 00 00 call ?AfxThrowOleException@@YAXJ@Z ; AfxThrowOleException
|
||
$LN3@AtlThrowIm:
|
||
$LN4@AtlThrowIm:
|
||
|
||
; 75 : }
|
||
; 76 : #else
|
||
; 77 : throw CAtlException( hr );
|
||
; 78 : #endif
|
||
; 79 : };
|
||
|
||
00026 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0002a 5d pop rbp
|
||
0002b c3 ret 0
|
||
?AtlThrowImpl@ATL@@YAXJ@Z ENDP ; ATL::AtlThrowImpl
|
||
_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
|
||
_Expr_val$1 = 0
|
||
_Expr_val$2 = 4
|
||
_Expr_val$3 = 8
|
||
tv79 = 76
|
||
tv75 = 76
|
||
tv66 = 76
|
||
_Destination$ = 96
|
||
_DestinationSize$ = 104
|
||
_Source$ = 112
|
||
_SourceSize$ = 120
|
||
memcpy_s PROC ; COMDAT
|
||
|
||
; 45 : {
|
||
|
||
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
|
||
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00014 55 push rbp
|
||
00015 48 83 ec 70 sub rsp, 112 ; 00000070H
|
||
00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
||
|
||
; 46 : if (_SourceSize == 0)
|
||
|
||
0001e 48 83 7d 78 00 cmp QWORD PTR _SourceSize$[rbp], 0
|
||
00023 75 07 jne SHORT $LN2@memcpy_s
|
||
|
||
; 47 : {
|
||
; 48 : return 0;
|
||
|
||
00025 33 c0 xor eax, eax
|
||
00027 e9 f2 00 00 00 jmp $LN1@memcpy_s
|
||
$LN2@memcpy_s:
|
||
|
||
; 49 : }
|
||
; 50 :
|
||
; 51 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Destination != NULL, EINVAL);
|
||
|
||
0002c 48 83 7d 60 00 cmp QWORD PTR _Destination$[rbp], 0
|
||
00031 74 09 je SHORT $LN9@memcpy_s
|
||
00033 c7 45 4c 01 00
|
||
00 00 mov DWORD PTR tv66[rbp], 1
|
||
0003a eb 07 jmp SHORT $LN10@memcpy_s
|
||
$LN9@memcpy_s:
|
||
0003c c7 45 4c 00 00
|
||
00 00 mov DWORD PTR tv66[rbp], 0
|
||
$LN10@memcpy_s:
|
||
00043 8b 45 4c mov eax, DWORD PTR tv66[rbp]
|
||
00046 89 45 00 mov DWORD PTR _Expr_val$1[rbp], eax
|
||
00049 83 7d 00 00 cmp DWORD PTR _Expr_val$1[rbp], 0
|
||
0004d 75 1a jne SHORT $LN3@memcpy_s
|
||
0004f e8 00 00 00 00 call _errno
|
||
00054 c7 00 16 00 00
|
||
00 mov DWORD PTR [rax], 22
|
||
0005a e8 00 00 00 00 call _invalid_parameter_noinfo
|
||
0005f b8 16 00 00 00 mov eax, 22
|
||
00064 e9 b5 00 00 00 jmp $LN1@memcpy_s
|
||
$LN3@memcpy_s:
|
||
|
||
; 52 : if (_Source == NULL || _DestinationSize < _SourceSize)
|
||
|
||
00069 48 83 7d 70 00 cmp QWORD PTR _Source$[rbp], 0
|
||
0006e 74 0e je SHORT $LN5@memcpy_s
|
||
00070 48 8b 45 78 mov rax, QWORD PTR _SourceSize$[rbp]
|
||
00074 48 39 45 68 cmp QWORD PTR _DestinationSize$[rbp], rax
|
||
00078 0f 83 8d 00 00
|
||
00 jae $LN4@memcpy_s
|
||
$LN5@memcpy_s:
|
||
|
||
; 53 : {
|
||
; 54 : memset(_Destination, 0, _DestinationSize);
|
||
|
||
0007e 4c 8b 45 68 mov r8, QWORD PTR _DestinationSize$[rbp]
|
||
00082 33 d2 xor edx, edx
|
||
00084 48 8b 4d 60 mov rcx, QWORD PTR _Destination$[rbp]
|
||
00088 e8 00 00 00 00 call memset
|
||
|
||
; 55 :
|
||
; 56 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Source != NULL, EINVAL);
|
||
|
||
0008d 48 83 7d 70 00 cmp QWORD PTR _Source$[rbp], 0
|
||
00092 74 09 je SHORT $LN11@memcpy_s
|
||
00094 c7 45 4c 01 00
|
||
00 00 mov DWORD PTR tv75[rbp], 1
|
||
0009b eb 07 jmp SHORT $LN12@memcpy_s
|
||
$LN11@memcpy_s:
|
||
0009d c7 45 4c 00 00
|
||
00 00 mov DWORD PTR tv75[rbp], 0
|
||
$LN12@memcpy_s:
|
||
000a4 8b 45 4c mov eax, DWORD PTR tv75[rbp]
|
||
000a7 89 45 04 mov DWORD PTR _Expr_val$2[rbp], eax
|
||
000aa 83 7d 04 00 cmp DWORD PTR _Expr_val$2[rbp], 0
|
||
000ae 75 17 jne SHORT $LN6@memcpy_s
|
||
000b0 e8 00 00 00 00 call _errno
|
||
000b5 c7 00 16 00 00
|
||
00 mov DWORD PTR [rax], 22
|
||
000bb e8 00 00 00 00 call _invalid_parameter_noinfo
|
||
000c0 b8 16 00 00 00 mov eax, 22
|
||
000c5 eb 57 jmp SHORT $LN1@memcpy_s
|
||
$LN6@memcpy_s:
|
||
|
||
; 57 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_DestinationSize >= _SourceSize, ERANGE);
|
||
|
||
000c7 48 8b 45 78 mov rax, QWORD PTR _SourceSize$[rbp]
|
||
000cb 48 39 45 68 cmp QWORD PTR _DestinationSize$[rbp], rax
|
||
000cf 72 09 jb SHORT $LN13@memcpy_s
|
||
000d1 c7 45 4c 01 00
|
||
00 00 mov DWORD PTR tv79[rbp], 1
|
||
000d8 eb 07 jmp SHORT $LN14@memcpy_s
|
||
$LN13@memcpy_s:
|
||
000da c7 45 4c 00 00
|
||
00 00 mov DWORD PTR tv79[rbp], 0
|
||
$LN14@memcpy_s:
|
||
000e1 8b 45 4c mov eax, DWORD PTR tv79[rbp]
|
||
000e4 89 45 08 mov DWORD PTR _Expr_val$3[rbp], eax
|
||
000e7 83 7d 08 00 cmp DWORD PTR _Expr_val$3[rbp], 0
|
||
000eb 75 17 jne SHORT $LN7@memcpy_s
|
||
000ed e8 00 00 00 00 call _errno
|
||
000f2 c7 00 22 00 00
|
||
00 mov DWORD PTR [rax], 34 ; 00000022H
|
||
000f8 e8 00 00 00 00 call _invalid_parameter_noinfo
|
||
000fd b8 22 00 00 00 mov eax, 34 ; 00000022H
|
||
00102 eb 1a jmp SHORT $LN1@memcpy_s
|
||
$LN7@memcpy_s:
|
||
|
||
; 58 :
|
||
; 59 : // Unreachable, but required to suppress /analyze warnings:
|
||
; 60 : return EINVAL;
|
||
|
||
00104 b8 16 00 00 00 mov eax, 22
|
||
00109 eb 13 jmp SHORT $LN1@memcpy_s
|
||
$LN4@memcpy_s:
|
||
|
||
; 61 : }
|
||
; 62 : memcpy(_Destination, _Source, _SourceSize);
|
||
|
||
0010b 4c 8b 45 78 mov r8, QWORD PTR _SourceSize$[rbp]
|
||
0010f 48 8b 55 70 mov rdx, QWORD PTR _Source$[rbp]
|
||
00113 48 8b 4d 60 mov rcx, QWORD PTR _Destination$[rbp]
|
||
00117 e8 00 00 00 00 call memcpy
|
||
|
||
; 63 : return 0;
|
||
|
||
0011c 33 c0 xor eax, eax
|
||
$LN1@memcpy_s:
|
||
|
||
; 64 : }
|
||
|
||
0011e 48 8d 65 50 lea rsp, QWORD PTR [rbp+80]
|
||
00122 5d pop rbp
|
||
00123 c3 ret 0
|
||
memcpy_s ENDP
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 80
|
||
__formal$ = 88
|
||
__formal$ = 96
|
||
?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
$LN3:
|
||
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
||
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000f 55 push rbp
|
||
00010 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
00014 48 8b ec mov rbp, rsp
|
||
00017 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
0001b 5d pop rbp
|
||
0001c c3 ret 0
|
||
?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 80
|
||
__formal$ = 88
|
||
?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
$LN3:
|
||
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000a 55 push rbp
|
||
0000b 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000f 48 8b ec mov rbp, rsp
|
||
00012 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00016 5d pop rbp
|
||
00017 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAX_K@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 80
|
||
__formal$ = 88
|
||
?__empty_global_delete@@YAXPEAX_K@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
$LN3:
|
||
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
||
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
0000a 55 push rbp
|
||
0000b 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000f 48 8b ec mov rbp, rsp
|
||
00012 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00016 5d pop rbp
|
||
00017 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAX_K@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp /ZI
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAX@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 80
|
||
?__empty_global_delete@@YAXPEAX@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 55 push rbp
|
||
00006 48 83 ec 40 sub rsp, 64 ; 00000040H
|
||
0000a 48 8b ec mov rbp, rsp
|
||
0000d 48 8d 65 40 lea rsp, QWORD PTR [rbp+64]
|
||
00011 5d pop rbp
|
||
00012 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAX@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
END
|