7104 lines
240 KiB
Plaintext
7104 lines
240 KiB
Plaintext
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.34.31933.0
|
||
|
||
include listing.inc
|
||
|
||
INCLUDELIB LIBCMT
|
||
INCLUDELIB OLDNAMES
|
||
|
||
CONST SEGMENT
|
||
$SG321467 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123'
|
||
DB '456789+/', 00H
|
||
ORG $+15
|
||
$SG321506 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123'
|
||
DB '456789+/', 00H
|
||
ORG $+15
|
||
$SG321544 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123'
|
||
DB '456789+/', 00H
|
||
ORG $+15
|
||
$SG321581 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123'
|
||
DB '456789+/', 00H
|
||
ORG $+15
|
||
$SG321617 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123'
|
||
DB '456789+/', 00H
|
||
CONST ENDS
|
||
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 ??_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$memcpy_s DD imagerel memcpy_s
|
||
DD imagerel memcpy_s+313
|
||
DD imagerel $unwind$memcpy_s
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?AtlThrowImpl@ATL@@YAXJ@Z DD imagerel $LN5
|
||
DD imagerel $LN5+39
|
||
DD imagerel $unwind$?AtlThrowImpl@ATL@@YAXJ@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?IsShared@CStringData@ATL@@QEBA_NXZ DD imagerel $LN5
|
||
DD imagerel $LN5+45
|
||
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+87
|
||
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+32
|
||
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+81
|
||
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+47
|
||
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+19
|
||
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+37
|
||
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+267
|
||
DD imagerel $unwind$?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z DD imagerel $LN5
|
||
DD imagerel $LN5+125
|
||
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+196
|
||
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+149
|
||
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$?RemoveAll@CByteArray@@QEAAXXZ DD imagerel $LN3
|
||
DD imagerel $LN3+33
|
||
DD imagerel $unwind$?RemoveAll@CByteArray@@QEAAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?SetAt@CByteArray@@QEAAX_JE@Z DD imagerel $LN5
|
||
DD imagerel $LN5+75
|
||
DD imagerel $unwind$?SetAt@CByteArray@@QEAAX_JE@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z DD imagerel $LN3
|
||
DD imagerel $LN3+32
|
||
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+27
|
||
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+81
|
||
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+47
|
||
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+19
|
||
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+37
|
||
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+261
|
||
DD imagerel $unwind$?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z DD imagerel $LN5
|
||
DD imagerel $LN5+125
|
||
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+196
|
||
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+149
|
||
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+1334
|
||
DD imagerel $unwind$?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ
|
||
pdata ENDS
|
||
; COMDAT pdata
|
||
pdata SEGMENT
|
||
$pdata$?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD imagerel $LN23
|
||
DD imagerel $LN23+1058
|
||
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+1058
|
||
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+1017
|
||
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+1032
|
||
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+951
|
||
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+919
|
||
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+943
|
||
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+59
|
||
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+119
|
||
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 ??_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 011801H
|
||
DD 02218H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$??_GCBase64Coding@@UEAAPEAXI@Z DD 010d01H
|
||
DD 0420dH
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 022H
|
||
DW 0395H
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode2@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD 042a19H
|
||
DD 0170118H
|
||
DD 060107011H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0a0H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 027H
|
||
DW 037dH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z DD 042f19H
|
||
DD 017011dH
|
||
DD 060157016H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0a0H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 027H
|
||
DW 039dH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD 042f19H
|
||
DD 017011dH
|
||
DD 060157016H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0a0H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 022H
|
||
DW 03eeH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z DD 042a19H
|
||
DD 0170118H
|
||
DD 060107011H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 0a0H
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DW 022H
|
||
DW 03dfH
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD 042a19H
|
||
DD 0150118H
|
||
DD 060107011H
|
||
DD imagerel __GSHandlerCheck
|
||
DD 090H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Decode@CBase64Coding@@UEAAHAEBV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AEAVCByteArray@@@Z DD 011301H
|
||
DD 0a213H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z DD 011301H
|
||
DD 0a213H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ DD 010901H
|
||
DD 04209H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0420dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0820dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0620dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z DD 010d01H
|
||
DD 0620dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0c20dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z DD 010e01H
|
||
DD 0420eH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ DD 010401H
|
||
DD 04204H
|
||
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 010e19H
|
||
DD 0420eH
|
||
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 010d01H
|
||
DD 0620dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ DD 010901H
|
||
DD 04209H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z DD 010d01H
|
||
DD 0420dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?SetAt@CByteArray@@QEAAX_JE@Z DD 011301H
|
||
DD 04213H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?RemoveAll@CByteArray@@QEAAXXZ DD 010901H
|
||
DD 04209H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0420dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0820dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0620dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z DD 010d01H
|
||
DD 0620dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z DD 010d01H
|
||
DD 0c20dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z DD 010e01H
|
||
DD 0420eH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ DD 010401H
|
||
DD 04204H
|
||
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 010e19H
|
||
DD 0420eH
|
||
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 010d01H
|
||
DD 0620dH
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z DD 010d01H
|
||
DD 0420dH
|
||
xdata ENDS
|
||
; COMDAT voltbl
|
||
voltbl SEGMENT
|
||
_volmd DB 017H
|
||
voltbl ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?Release@CStringData@ATL@@QEAAXXZ DD 010901H
|
||
DD 06209H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?IsShared@CStringData@ATL@@QEBA_NXZ DD 010901H
|
||
DD 02209H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$?AtlThrowImpl@ATL@@YAXJ@Z DD 010801H
|
||
DD 04208H
|
||
xdata ENDS
|
||
; COMDAT xdata
|
||
xdata SEGMENT
|
||
$unwind$memcpy_s DD 011801H
|
||
DD 08218H
|
||
xdata ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__get_character@@YAEPEBE0AEAHH@Z
|
||
_TEXT SEGMENT
|
||
return_value$ = 0
|
||
buffer$ = 32
|
||
decoder_table$ = 40
|
||
index$ = 48
|
||
size_of_buffer$ = 56
|
||
?__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 48 83 ec 18 sub rsp, 24
|
||
|
||
; 42 : BYTE return_value = 0;
|
||
|
||
00018 c6 04 24 00 mov BYTE PTR return_value$[rsp], 0
|
||
$LN4@get_charac:
|
||
|
||
; 43 :
|
||
; 44 : do
|
||
; 45 : {
|
||
; 46 : if ( index >= size_of_buffer )
|
||
|
||
0001c 48 8b 44 24 30 mov rax, QWORD PTR index$[rsp]
|
||
00021 8b 4c 24 38 mov ecx, DWORD PTR size_of_buffer$[rsp]
|
||
00025 39 08 cmp DWORD PTR [rax], ecx
|
||
00027 7c 04 jl SHORT $LN5@get_charac
|
||
|
||
; 47 : {
|
||
; 48 : return( BASE64_END_OF_BUFFER );
|
||
|
||
00029 b0 fd mov al, 253 ; 000000fdH
|
||
0002b eb 45 jmp SHORT $LN1@get_charac
|
||
$LN5@get_charac:
|
||
|
||
; 49 : }
|
||
; 50 :
|
||
; 51 : return_value = buffer[ index ];
|
||
|
||
0002d 48 8b 44 24 30 mov rax, QWORD PTR index$[rsp]
|
||
00032 48 63 00 movsxd rax, DWORD PTR [rax]
|
||
00035 48 8b 4c 24 20 mov rcx, QWORD PTR buffer$[rsp]
|
||
0003a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
0003e 88 04 24 mov BYTE PTR return_value$[rsp], al
|
||
|
||
; 52 : index++;
|
||
|
||
00041 48 8b 44 24 30 mov rax, QWORD PTR index$[rsp]
|
||
00046 8b 00 mov eax, DWORD PTR [rax]
|
||
00048 ff c0 inc eax
|
||
0004a 48 8b 4c 24 30 mov rcx, QWORD PTR index$[rsp]
|
||
0004f 89 01 mov DWORD PTR [rcx], eax
|
||
|
||
; 53 : }
|
||
; 54 : while( return_value != END_OF_BASE64_ENCODED_DATA &&
|
||
|
||
00051 0f b6 04 24 movzx eax, BYTE PTR return_value$[rsp]
|
||
00055 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00058 74 14 je SHORT $LN6@get_charac
|
||
0005a 0f b6 04 24 movzx eax, BYTE PTR return_value$[rsp]
|
||
0005e 48 8b 4c 24 28 mov rcx, QWORD PTR decoder_table$[rsp]
|
||
00063 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
00067 3d fe 00 00 00 cmp eax, 254 ; 000000feH
|
||
0006c 74 ae je SHORT $LN4@get_charac
|
||
$LN6@get_charac:
|
||
|
||
; 55 : decoder_table[ return_value ] == BASE64_IGNORABLE_CHARACTER );
|
||
; 56 :
|
||
; 57 : return( return_value );
|
||
|
||
0006e 0f b6 04 24 movzx eax, BYTE PTR return_value$[rsp]
|
||
$LN1@get_charac:
|
||
|
||
; 58 : }
|
||
|
||
00072 48 83 c4 18 add rsp, 24
|
||
00076 c3 ret 0
|
||
?__get_character@@YAEPEBE0AEAHH@Z ENDP ; __get_character
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; COMDAT ??_GCBase64Coding@@UEAAPEAXI@Z
|
||
_TEXT SEGMENT
|
||
this$ = 48
|
||
__flags$ = 56
|
||
??_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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
0000d 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ??1CBase64Coding@@UEAA@XZ ; CBase64Coding::~CBase64Coding
|
||
00017 8b 44 24 38 mov eax, DWORD PTR __flags$[rsp]
|
||
0001b 83 e0 01 and eax, 1
|
||
0001e 85 c0 test eax, eax
|
||
00020 74 0f je SHORT $LN2@scalar
|
||
00022 ba 08 01 00 00 mov edx, 264 ; 00000108H
|
||
00027 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0002c e8 00 00 00 00 call ??3@YAXPEAX_K@Z ; operator delete
|
||
$LN2@scalar:
|
||
00031 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp]
|
||
00036 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0003a c3 ret 0
|
||
??_GCBase64Coding@@UEAAPEAXI@Z ENDP ; CBase64Coding::`scalar deleting destructor'
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
byte_to_add$ = 32
|
||
number_of_bytes_encoded$ = 36
|
||
byte_2$ = 40
|
||
byte_3$ = 41
|
||
byte_1$ = 42
|
||
loop_index$ = 44
|
||
destination$ = 48
|
||
number_of_bytes_to_encode$ = 56
|
||
input_buffer$ = 64
|
||
alphabet$ = 80
|
||
__$ArrayPad$ = 160
|
||
this$ = 208
|
||
source$ = 216
|
||
destination_string$ = 224
|
||
?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 56 push rsi
|
||
00010 57 push rdi
|
||
00011 48 81 ec b8 00
|
||
00 00 sub rsp, 184 ; 000000b8H
|
||
00018 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
0001f 48 33 c4 xor rax, rsp
|
||
00022 48 89 84 24 a0
|
||
00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax
|
||
|
||
; 981 :
|
||
; 982 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002a 48 8d 44 24 50 lea rax, QWORD PTR alphabet$[rsp]
|
||
0002f 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:$SG321617
|
||
00036 48 8b f8 mov rdi, rax
|
||
00039 48 8b f1 mov rsi, rcx
|
||
0003c b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00041 f3 a4 rep movsb
|
||
|
||
; 983 :
|
||
; 984 : int loop_index = 0;
|
||
|
||
00043 c7 44 24 2c 00
|
||
00 00 00 mov DWORD PTR loop_index$[rsp], 0
|
||
|
||
; 985 : int number_of_bytes_to_encode = (int)source.GetSize();
|
||
|
||
0004b 48 8b 8c 24 d8
|
||
00 00 00 mov rcx, QWORD PTR source$[rsp]
|
||
00053 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
00058 89 44 24 38 mov DWORD PTR number_of_bytes_to_encode$[rsp], eax
|
||
|
||
; 986 :
|
||
; 987 : BYTE byte_to_add = 0;
|
||
|
||
0005c c6 44 24 20 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 988 : BYTE byte_1 = 0;
|
||
|
||
00061 c6 44 24 2a 00 mov BYTE PTR byte_1$[rsp], 0
|
||
|
||
; 989 : BYTE byte_2 = 0;
|
||
|
||
00066 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 990 : BYTE byte_3 = 0;
|
||
|
||
0006b c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 991 :
|
||
; 992 : const BYTE * input_buffer = source.GetData();
|
||
|
||
00070 48 8b 8c 24 d8
|
||
00 00 00 mov rcx, QWORD PTR source$[rsp]
|
||
00078 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
0007d 48 89 44 24 40 mov QWORD PTR input_buffer$[rsp], rax
|
||
|
||
; 993 :
|
||
; 994 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
00082 f2 0f 2a 44 24
|
||
38 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00088 f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
00090 f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00095 ff c0 inc eax
|
||
00097 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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;
|
||
|
||
0009b 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0009f 83 c0 02 add eax, 2
|
||
000a2 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 );
|
||
|
||
000a6 8b 54 24 24 mov edx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000aa 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
000b2 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
000b7 48 89 44 24 30 mov QWORD PTR destination$[rsp], rax
|
||
|
||
; 1006 :
|
||
; 1007 : number_of_bytes_encoded = 0;
|
||
|
||
000bc c7 44 24 24 00
|
||
00 00 00 mov DWORD PTR number_of_bytes_encoded$[rsp], 0
|
||
$LN2@Encode2:
|
||
|
||
; 1008 :
|
||
; 1009 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000c4 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
000c8 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
000cc 0f 8d 87 02 00
|
||
00 jge $LN3@Encode2
|
||
|
||
; 1010 : {
|
||
; 1011 : // Output the first byte
|
||
; 1012 :
|
||
; 1013 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000d2 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
000d7 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000dc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000e0 88 44 24 2a mov BYTE PTR byte_1$[rsp], al
|
||
|
||
; 1014 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000e4 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
000e9 c1 f8 02 sar eax, 2
|
||
000ec 48 98 cdqe
|
||
000ee 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
000f3 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 1015 :
|
||
; 1016 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
000f7 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
000fc 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00100 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00105 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1017 : number_of_bytes_encoded++;
|
||
|
||
00109 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0010d ff c0 inc eax
|
||
0010f 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 1018 :
|
||
; 1019 : loop_index++;
|
||
|
||
00113 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
00117 ff c0 inc eax
|
||
00119 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 1020 :
|
||
; 1021 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
0011d 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00121 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
00125 0f 8c a6 00 00
|
||
00 jl $LN4@Encode2
|
||
|
||
; 1022 : {
|
||
; 1023 : // We're at the end of the data to encode
|
||
; 1024 :
|
||
; 1025 : byte_2 = 0;
|
||
|
||
0012b c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 1026 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
00130 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
00135 83 e0 03 and eax, 3
|
||
00138 c1 e0 04 shl eax, 4
|
||
0013b 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
00140 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00146 c1 f9 04 sar ecx, 4
|
||
00149 0b c1 or eax, ecx
|
||
0014b 48 98 cdqe
|
||
0014d 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00152 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 1027 :
|
||
; 1028 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00156 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0015b 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0015f 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00164 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1029 : number_of_bytes_encoded++;
|
||
|
||
00168 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0016c ff c0 inc eax
|
||
0016e 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 1030 :
|
||
; 1031 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00172 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00176 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0017b 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00180 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1032 : number_of_bytes_encoded++;
|
||
|
||
00184 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00188 ff c0 inc eax
|
||
0018a 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 1033 :
|
||
; 1034 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0018e 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00192 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00197 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0019c 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;
|
||
|
||
001a0 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
001a4 ff c0 inc eax
|
||
001a6 8b c0 mov eax, eax
|
||
001a8 33 c9 xor ecx, ecx
|
||
001aa 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
001af 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1041 :
|
||
; 1042 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
001b3 ba ff ff ff ff mov edx, -1
|
||
001b8 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
001c0 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 1043 :
|
||
; 1044 : return( TRUE );
|
||
|
||
001c5 b8 01 00 00 00 mov eax, 1
|
||
001ca e9 c6 01 00 00 jmp $LN1@Encode2
|
||
|
||
; 1045 : }
|
||
|
||
001cf eb 12 jmp SHORT $LN5@Encode2
|
||
$LN4@Encode2:
|
||
|
||
; 1046 : else
|
||
; 1047 : {
|
||
; 1048 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001d1 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
001d6 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
001db 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001df 88 44 24 28 mov BYTE PTR byte_2$[rsp], al
|
||
$LN5@Encode2:
|
||
|
||
; 1049 : }
|
||
; 1050 :
|
||
; 1051 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001e3 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
001e8 83 e0 03 and eax, 3
|
||
001eb c1 e0 04 shl eax, 4
|
||
001ee 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
001f3 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001f9 c1 f9 04 sar ecx, 4
|
||
001fc 0b c1 or eax, ecx
|
||
001fe 48 98 cdqe
|
||
00200 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00205 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 1052 :
|
||
; 1053 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00209 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0020e 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00212 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00217 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1054 : number_of_bytes_encoded++;
|
||
|
||
0021b 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0021f ff c0 inc eax
|
||
00221 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 1055 :
|
||
; 1056 : loop_index++;
|
||
|
||
00225 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
00229 ff c0 inc eax
|
||
0022b 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 1057 :
|
||
; 1058 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
0022f 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00233 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
00237 0f 8c 8a 00 00
|
||
00 jl $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;
|
||
|
||
0023d c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 1062 :
|
||
; 1063 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
00242 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
00247 83 e0 0f and eax, 15
|
||
0024a c1 e0 02 shl eax, 2
|
||
0024d 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
00252 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00258 c1 f9 06 sar ecx, 6
|
||
0025b 0b c1 or eax, ecx
|
||
0025d 48 98 cdqe
|
||
0025f 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00264 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 1064 :
|
||
; 1065 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00268 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0026d 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00271 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00276 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1066 : number_of_bytes_encoded++;
|
||
|
||
0027a 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0027e ff c0 inc eax
|
||
00280 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 1067 :
|
||
; 1068 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00284 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00288 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0028d 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00292 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;
|
||
|
||
00296 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0029a ff c0 inc eax
|
||
0029c 8b c0 mov eax, eax
|
||
0029e 33 c9 xor ecx, ecx
|
||
002a0 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
002a5 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1075 :
|
||
; 1076 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
002a9 ba ff ff ff ff mov edx, -1
|
||
002ae 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
002b6 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 1077 :
|
||
; 1078 : return( TRUE );
|
||
|
||
002bb b8 01 00 00 00 mov eax, 1
|
||
002c0 e9 d0 00 00 00 jmp $LN1@Encode2
|
||
|
||
; 1079 : }
|
||
|
||
002c5 eb 12 jmp SHORT $LN7@Encode2
|
||
$LN6@Encode2:
|
||
|
||
; 1080 : else
|
||
; 1081 : {
|
||
; 1082 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
002c7 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
002cc 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
002d1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
002d5 88 44 24 29 mov BYTE PTR byte_3$[rsp], al
|
||
$LN7@Encode2:
|
||
|
||
; 1083 : }
|
||
; 1084 :
|
||
; 1085 : loop_index++;
|
||
|
||
002d9 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
002dd ff c0 inc eax
|
||
002df 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 1086 :
|
||
; 1087 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
002e3 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
002e8 83 e0 0f and eax, 15
|
||
002eb c1 e0 02 shl eax, 2
|
||
002ee 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
002f3 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
002f9 c1 f9 06 sar ecx, 6
|
||
002fc 0b c1 or eax, ecx
|
||
002fe 48 98 cdqe
|
||
00300 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00305 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 1088 :
|
||
; 1089 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00309 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0030e 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00312 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00317 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1090 : number_of_bytes_encoded++;
|
||
|
||
0031b 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0031f ff c0 inc eax
|
||
00321 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 1091 :
|
||
; 1092 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
00325 0f b6 44 24 29 movzx eax, BYTE PTR byte_3$[rsp]
|
||
0032a 83 e0 3f and eax, 63 ; 0000003fH
|
||
0032d 48 98 cdqe
|
||
0032f 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00334 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 1093 :
|
||
; 1094 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00338 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0033d 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00341 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00346 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 1095 : number_of_bytes_encoded++;
|
||
|
||
0034a 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0034e ff c0 inc eax
|
||
00350 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 : }
|
||
|
||
00354 e9 6b fd ff ff jmp $LN2@Encode2
|
||
$LN3@Encode2:
|
||
|
||
; 1106 :
|
||
; 1107 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00359 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0035d b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00362 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00367 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;
|
||
|
||
0036b 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0036f ff c0 inc eax
|
||
00371 8b c0 mov eax, eax
|
||
00373 33 c9 xor ecx, ecx
|
||
00375 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0037a 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 1114 :
|
||
; 1115 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0037e ba ff ff ff ff mov edx, -1
|
||
00383 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
0038b e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 1116 :
|
||
; 1117 : return( TRUE );
|
||
|
||
00390 b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode2:
|
||
|
||
; 1118 : }
|
||
|
||
00395 48 8b 8c 24 a0
|
||
00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp]
|
||
0039d 48 33 cc xor rcx, rsp
|
||
003a0 e8 00 00 00 00 call __security_check_cookie
|
||
003a5 48 81 c4 b8 00
|
||
00 00 add rsp, 184 ; 000000b8H
|
||
003ac 5f pop rdi
|
||
003ad 5e pop rsi
|
||
003ae 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
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
|
||
_TEXT SEGMENT
|
||
byte_to_add$ = 32
|
||
number_of_bytes_encoded$ = 36
|
||
byte_2$ = 40
|
||
byte_3$ = 41
|
||
byte_1$ = 42
|
||
loop_index$ = 44
|
||
destination$ = 48
|
||
number_of_bytes_to_encode$ = 56
|
||
input_buffer$ = 64
|
||
alphabet$ = 80
|
||
__$ArrayPad$ = 160
|
||
this$ = 208
|
||
pSource$ = 216
|
||
lSource$ = 224
|
||
destination_string$ = 232
|
||
?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 56 push rsi
|
||
00015 57 push rdi
|
||
00016 48 81 ec b8 00
|
||
00 00 sub rsp, 184 ; 000000b8H
|
||
0001d 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
00024 48 33 c4 xor rax, rsp
|
||
00027 48 89 84 24 a0
|
||
00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax
|
||
|
||
; 838 :
|
||
; 839 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002f 48 8d 44 24 50 lea rax, QWORD PTR alphabet$[rsp]
|
||
00034 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:$SG321581
|
||
0003b 48 8b f8 mov rdi, rax
|
||
0003e 48 8b f1 mov rsi, rcx
|
||
00041 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00046 f3 a4 rep movsb
|
||
|
||
; 840 :
|
||
; 841 : int loop_index = 0;
|
||
|
||
00048 c7 44 24 2c 00
|
||
00 00 00 mov DWORD PTR loop_index$[rsp], 0
|
||
|
||
; 842 : int number_of_bytes_to_encode = lSource;
|
||
|
||
00050 8b 84 24 e0 00
|
||
00 00 mov eax, DWORD PTR lSource$[rsp]
|
||
00057 89 44 24 38 mov DWORD PTR number_of_bytes_to_encode$[rsp], eax
|
||
|
||
; 843 :
|
||
; 844 : BYTE byte_to_add = 0;
|
||
|
||
0005b c6 44 24 20 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 845 : BYTE byte_1 = 0;
|
||
|
||
00060 c6 44 24 2a 00 mov BYTE PTR byte_1$[rsp], 0
|
||
|
||
; 846 : BYTE byte_2 = 0;
|
||
|
||
00065 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 847 : BYTE byte_3 = 0;
|
||
|
||
0006a c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 848 :
|
||
; 849 : const BYTE * input_buffer = pSource;
|
||
|
||
0006f 48 8b 84 24 d8
|
||
00 00 00 mov rax, QWORD PTR pSource$[rsp]
|
||
00077 48 89 44 24 40 mov QWORD PTR input_buffer$[rsp], rax
|
||
|
||
; 850 :
|
||
; 851 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
0007c f2 0f 2a 44 24
|
||
38 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
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 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 );
|
||
|
||
00095 33 d2 xor edx, edx
|
||
00097 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0009b b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
000a0 f7 f1 div ecx
|
||
000a2 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000a6 8d 44 41 02 lea eax, DWORD PTR [rcx+rax*2+2]
|
||
000aa 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 860 :
|
||
; 861 : char * destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
000ae 8b 54 24 24 mov edx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000b2 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
000ba e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z ; ATL::CSimpleStringT<char,0>::GetBuffer
|
||
000bf 48 89 44 24 30 mov QWORD PTR destination$[rsp], rax
|
||
|
||
; 862 :
|
||
; 863 : number_of_bytes_encoded = 0;
|
||
|
||
000c4 c7 44 24 24 00
|
||
00 00 00 mov DWORD PTR number_of_bytes_encoded$[rsp], 0
|
||
$LN2@EncodeA:
|
||
|
||
; 864 :
|
||
; 865 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000cc 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
000d0 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
000d4 0f 8d 6e 02 00
|
||
00 jge $LN3@EncodeA
|
||
|
||
; 866 : {
|
||
; 867 : // Output the first byte
|
||
; 868 :
|
||
; 869 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000da 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
000df 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000e4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000e8 88 44 24 2a mov BYTE PTR byte_1$[rsp], al
|
||
|
||
; 870 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000ec 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
000f1 c1 f8 02 sar eax, 2
|
||
000f4 48 98 cdqe
|
||
000f6 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
000fb 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 871 :
|
||
; 872 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
000ff 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00103 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00108 0f b6 54 24 20 movzx edx, BYTE PTR byte_to_add$[rsp]
|
||
0010d 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 873 : number_of_bytes_encoded++;
|
||
|
||
00110 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00114 ff c0 inc eax
|
||
00116 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 874 :
|
||
; 875 : loop_index++;
|
||
|
||
0011a 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
0011e ff c0 inc eax
|
||
00120 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 876 :
|
||
; 877 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00124 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00128 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
0012c 0f 8c 99 00 00
|
||
00 jl $LN4@EncodeA
|
||
|
||
; 878 : {
|
||
; 879 : // We're at the end of the data to encode
|
||
; 880 :
|
||
; 881 : byte_2 = 0;
|
||
|
||
00132 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 882 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
00137 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
0013c 83 e0 03 and eax, 3
|
||
0013f c1 e0 04 shl eax, 4
|
||
00142 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
00147 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
0014d c1 f9 04 sar ecx, 4
|
||
00150 0b c1 or eax, ecx
|
||
00152 48 98 cdqe
|
||
00154 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00159 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 883 :
|
||
; 884 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
0015d 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00161 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00166 0f b6 54 24 20 movzx edx, BYTE PTR byte_to_add$[rsp]
|
||
0016b 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 885 : number_of_bytes_encoded++;
|
||
|
||
0016e 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00172 ff c0 inc eax
|
||
00174 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 886 :
|
||
; 887 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00178 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0017c 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00181 c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
|
||
|
||
; 888 : number_of_bytes_encoded++;
|
||
|
||
00185 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00189 ff c0 inc eax
|
||
0018b 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 889 :
|
||
; 890 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0018f 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00193 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00198 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;
|
||
|
||
0019c 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
001a0 ff c0 inc eax
|
||
001a2 8b c0 mov eax, eax
|
||
001a4 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
001a9 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
|
||
; 897 :
|
||
; 898 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
001ad ba ff ff ff ff mov edx, -1
|
||
001b2 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
001ba e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
|
||
; 899 :
|
||
; 900 : return( TRUE );
|
||
|
||
001bf b8 01 00 00 00 mov eax, 1
|
||
001c4 e9 b4 01 00 00 jmp $LN1@EncodeA
|
||
|
||
; 901 : }
|
||
|
||
001c9 eb 12 jmp SHORT $LN5@EncodeA
|
||
$LN4@EncodeA:
|
||
|
||
; 902 : else
|
||
; 903 : {
|
||
; 904 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001cb 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
001d0 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
001d5 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001d9 88 44 24 28 mov BYTE PTR byte_2$[rsp], al
|
||
$LN5@EncodeA:
|
||
|
||
; 905 : }
|
||
; 906 :
|
||
; 907 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001dd 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
001e2 83 e0 03 and eax, 3
|
||
001e5 c1 e0 04 shl eax, 4
|
||
001e8 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
001ed 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
001f3 c1 f9 04 sar ecx, 4
|
||
001f6 0b c1 or eax, ecx
|
||
001f8 48 98 cdqe
|
||
001fa 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
001ff 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 908 :
|
||
; 909 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
00203 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00207 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
0020c 0f b6 54 24 20 movzx edx, BYTE PTR byte_to_add$[rsp]
|
||
00211 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 910 : number_of_bytes_encoded++;
|
||
|
||
00214 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00218 ff c0 inc eax
|
||
0021a 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 911 :
|
||
; 912 : loop_index++;
|
||
|
||
0021e 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
00222 ff c0 inc eax
|
||
00224 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 913 :
|
||
; 914 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00228 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
0022c 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
00230 0f 8c 82 00 00
|
||
00 jl $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;
|
||
|
||
00236 c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 918 :
|
||
; 919 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0023b 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
00240 83 e0 0f and eax, 15
|
||
00243 c1 e0 02 shl eax, 2
|
||
00246 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
0024b 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00251 c1 f9 06 sar ecx, 6
|
||
00254 0b c1 or eax, ecx
|
||
00256 48 98 cdqe
|
||
00258 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0025d 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 920 :
|
||
; 921 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
00261 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00265 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
0026a 0f b6 54 24 20 movzx edx, BYTE PTR byte_to_add$[rsp]
|
||
0026f 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 922 : number_of_bytes_encoded++;
|
||
|
||
00272 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00276 ff c0 inc eax
|
||
00278 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 923 :
|
||
; 924 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0027c 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00280 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00285 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;
|
||
|
||
00289 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0028d ff c0 inc eax
|
||
0028f 8b c0 mov eax, eax
|
||
00291 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00296 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
|
||
; 931 :
|
||
; 932 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
0029a ba ff ff ff ff mov edx, -1
|
||
0029f 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
002a7 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
|
||
; 933 :
|
||
; 934 : return( TRUE );
|
||
|
||
002ac b8 01 00 00 00 mov eax, 1
|
||
002b1 e9 c7 00 00 00 jmp $LN1@EncodeA
|
||
|
||
; 935 : }
|
||
|
||
002b6 eb 12 jmp SHORT $LN7@EncodeA
|
||
$LN6@EncodeA:
|
||
|
||
; 936 : else
|
||
; 937 : {
|
||
; 938 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
002b8 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
002bd 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
002c2 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
002c6 88 44 24 29 mov BYTE PTR byte_3$[rsp], al
|
||
$LN7@EncodeA:
|
||
|
||
; 939 : }
|
||
; 940 :
|
||
; 941 : loop_index++;
|
||
|
||
002ca 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
002ce ff c0 inc eax
|
||
002d0 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 942 :
|
||
; 943 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
002d4 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
002d9 83 e0 0f and eax, 15
|
||
002dc c1 e0 02 shl eax, 2
|
||
002df 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
002e4 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
002ea c1 f9 06 sar ecx, 6
|
||
002ed 0b c1 or eax, ecx
|
||
002ef 48 98 cdqe
|
||
002f1 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
002f6 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 944 :
|
||
; 945 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
002fa 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
002fe 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00303 0f b6 54 24 20 movzx edx, BYTE PTR byte_to_add$[rsp]
|
||
00308 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 946 : number_of_bytes_encoded++;
|
||
|
||
0030b 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0030f ff c0 inc eax
|
||
00311 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 947 :
|
||
; 948 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
00315 0f b6 44 24 29 movzx eax, BYTE PTR byte_3$[rsp]
|
||
0031a 83 e0 3f and eax, 63 ; 0000003fH
|
||
0031d 48 98 cdqe
|
||
0031f 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00324 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 949 :
|
||
; 950 : destination[ number_of_bytes_encoded ] = static_cast< char >( byte_to_add );
|
||
|
||
00328 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0032c 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00331 0f b6 54 24 20 movzx edx, BYTE PTR byte_to_add$[rsp]
|
||
00336 88 14 01 mov BYTE PTR [rcx+rax], dl
|
||
|
||
; 951 : number_of_bytes_encoded++;
|
||
|
||
00339 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0033d ff c0 inc eax
|
||
0033f 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 : }
|
||
|
||
00343 e9 84 fd ff ff jmp $LN2@EncodeA
|
||
$LN3@EncodeA:
|
||
|
||
; 964 :
|
||
; 965 : destination[ number_of_bytes_encoded ] = static_cast< char >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00348 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0034c 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00351 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;
|
||
|
||
00355 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00359 ff c0 inc eax
|
||
0035b 8b c0 mov eax, eax
|
||
0035d 48 8b 4c 24 30 mov rcx, QWORD PTR destination$[rsp]
|
||
00362 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
|
||
; 972 :
|
||
; 973 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00366 ba ff ff ff ff mov edx, -1
|
||
0036b 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
00373 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
|
||
; 974 :
|
||
; 975 : return( TRUE );
|
||
|
||
00378 b8 01 00 00 00 mov eax, 1
|
||
$LN1@EncodeA:
|
||
|
||
; 976 : }
|
||
|
||
0037d 48 8b 8c 24 a0
|
||
00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp]
|
||
00385 48 33 cc xor rcx, rsp
|
||
00388 e8 00 00 00 00 call __security_check_cookie
|
||
0038d 48 81 c4 b8 00
|
||
00 00 add rsp, 184 ; 000000b8H
|
||
00394 5f pop rdi
|
||
00395 5e pop rsi
|
||
00396 c3 ret 0
|
||
?EncodeA@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z ENDP ; CBase64Coding::EncodeA
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
|
||
_TEXT SEGMENT
|
||
byte_to_add$ = 32
|
||
number_of_bytes_encoded$ = 36
|
||
byte_2$ = 40
|
||
byte_3$ = 41
|
||
byte_1$ = 42
|
||
loop_index$ = 44
|
||
destination$ = 48
|
||
number_of_bytes_to_encode$ = 56
|
||
input_buffer$ = 64
|
||
alphabet$ = 80
|
||
__$ArrayPad$ = 160
|
||
this$ = 208
|
||
pSource$ = 216
|
||
lSource$ = 224
|
||
destination_string$ = 232
|
||
?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 56 push rsi
|
||
00015 57 push rdi
|
||
00016 48 81 ec b8 00
|
||
00 00 sub rsp, 184 ; 000000b8H
|
||
0001d 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
00024 48 33 c4 xor rax, rsp
|
||
00027 48 89 84 24 a0
|
||
00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax
|
||
|
||
; 696 :
|
||
; 697 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002f 48 8d 44 24 50 lea rax, QWORD PTR alphabet$[rsp]
|
||
00034 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:$SG321544
|
||
0003b 48 8b f8 mov rdi, rax
|
||
0003e 48 8b f1 mov rsi, rcx
|
||
00041 b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00046 f3 a4 rep movsb
|
||
|
||
; 698 :
|
||
; 699 : int loop_index = 0;
|
||
|
||
00048 c7 44 24 2c 00
|
||
00 00 00 mov DWORD PTR loop_index$[rsp], 0
|
||
|
||
; 700 : int number_of_bytes_to_encode = lSource;
|
||
|
||
00050 8b 84 24 e0 00
|
||
00 00 mov eax, DWORD PTR lSource$[rsp]
|
||
00057 89 44 24 38 mov DWORD PTR number_of_bytes_to_encode$[rsp], eax
|
||
|
||
; 701 :
|
||
; 702 : BYTE byte_to_add = 0;
|
||
|
||
0005b c6 44 24 20 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 703 : BYTE byte_1 = 0;
|
||
|
||
00060 c6 44 24 2a 00 mov BYTE PTR byte_1$[rsp], 0
|
||
|
||
; 704 : BYTE byte_2 = 0;
|
||
|
||
00065 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 705 : BYTE byte_3 = 0;
|
||
|
||
0006a c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 706 :
|
||
; 707 : const BYTE * input_buffer = pSource;
|
||
|
||
0006f 48 8b 84 24 d8
|
||
00 00 00 mov rax, QWORD PTR pSource$[rsp]
|
||
00077 48 89 44 24 40 mov QWORD PTR input_buffer$[rsp], rax
|
||
|
||
; 708 :
|
||
; 709 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
0007c f2 0f 2a 44 24
|
||
38 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
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 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 );
|
||
|
||
00095 33 d2 xor edx, edx
|
||
00097 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0009b b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
000a0 f7 f1 div ecx
|
||
000a2 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000a6 8d 44 41 02 lea eax, DWORD PTR [rcx+rax*2+2]
|
||
000aa 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 718 :
|
||
; 719 : LPTSTR destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
000ae 8b 54 24 24 mov edx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000b2 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
000ba e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
000bf 48 89 44 24 30 mov QWORD PTR destination$[rsp], rax
|
||
|
||
; 720 :
|
||
; 721 : number_of_bytes_encoded = 0;
|
||
|
||
000c4 c7 44 24 24 00
|
||
00 00 00 mov DWORD PTR number_of_bytes_encoded$[rsp], 0
|
||
$LN2@Encode:
|
||
|
||
; 722 :
|
||
; 723 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000cc 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
000d0 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
000d4 0f 8d 87 02 00
|
||
00 jge $LN3@Encode
|
||
|
||
; 724 : {
|
||
; 725 : // Output the first byte
|
||
; 726 :
|
||
; 727 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000da 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
000df 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000e4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000e8 88 44 24 2a mov BYTE PTR byte_1$[rsp], al
|
||
|
||
; 728 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000ec 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
000f1 c1 f8 02 sar eax, 2
|
||
000f4 48 98 cdqe
|
||
000f6 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
000fb 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 729 :
|
||
; 730 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
000ff 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00104 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00108 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0010d 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 731 : number_of_bytes_encoded++;
|
||
|
||
00111 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00115 ff c0 inc eax
|
||
00117 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 732 :
|
||
; 733 : loop_index++;
|
||
|
||
0011b 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
0011f ff c0 inc eax
|
||
00121 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 734 :
|
||
; 735 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00125 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00129 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
0012d 0f 8c a6 00 00
|
||
00 jl $LN4@Encode
|
||
|
||
; 736 : {
|
||
; 737 : // We're at the end of the data to encode
|
||
; 738 :
|
||
; 739 : byte_2 = 0;
|
||
|
||
00133 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 740 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
00138 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
0013d 83 e0 03 and eax, 3
|
||
00140 c1 e0 04 shl eax, 4
|
||
00143 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
00148 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
0014e c1 f9 04 sar ecx, 4
|
||
00151 0b c1 or eax, ecx
|
||
00153 48 98 cdqe
|
||
00155 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0015a 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 741 :
|
||
; 742 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
0015e 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00163 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00167 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0016c 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 743 : number_of_bytes_encoded++;
|
||
|
||
00170 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00174 ff c0 inc eax
|
||
00176 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 744 :
|
||
; 745 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0017a 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0017e b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00183 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00188 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 746 : number_of_bytes_encoded++;
|
||
|
||
0018c 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00190 ff c0 inc eax
|
||
00192 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 747 :
|
||
; 748 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00196 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0019a b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0019f 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
001a4 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;
|
||
|
||
001a8 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
001ac ff c0 inc eax
|
||
001ae 8b c0 mov eax, eax
|
||
001b0 33 c9 xor ecx, ecx
|
||
001b2 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
001b7 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 755 :
|
||
; 756 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
001bb ba ff ff ff ff mov edx, -1
|
||
001c0 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
001c8 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 757 :
|
||
; 758 : return( TRUE );
|
||
|
||
001cd b8 01 00 00 00 mov eax, 1
|
||
001d2 e9 c6 01 00 00 jmp $LN1@Encode
|
||
|
||
; 759 : }
|
||
|
||
001d7 eb 12 jmp SHORT $LN5@Encode
|
||
$LN4@Encode:
|
||
|
||
; 760 : else
|
||
; 761 : {
|
||
; 762 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001d9 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
001de 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
001e3 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001e7 88 44 24 28 mov BYTE PTR byte_2$[rsp], al
|
||
$LN5@Encode:
|
||
|
||
; 763 : }
|
||
; 764 :
|
||
; 765 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001eb 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
001f0 83 e0 03 and eax, 3
|
||
001f3 c1 e0 04 shl eax, 4
|
||
001f6 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
001fb 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00201 c1 f9 04 sar ecx, 4
|
||
00204 0b c1 or eax, ecx
|
||
00206 48 98 cdqe
|
||
00208 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0020d 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 766 :
|
||
; 767 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00211 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00216 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0021a 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0021f 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 768 : number_of_bytes_encoded++;
|
||
|
||
00223 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00227 ff c0 inc eax
|
||
00229 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 769 :
|
||
; 770 : loop_index++;
|
||
|
||
0022d 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
00231 ff c0 inc eax
|
||
00233 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 771 :
|
||
; 772 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
00237 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
0023b 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
0023f 0f 8c 8a 00 00
|
||
00 jl $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;
|
||
|
||
00245 c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 776 :
|
||
; 777 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0024a 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
0024f 83 e0 0f and eax, 15
|
||
00252 c1 e0 02 shl eax, 2
|
||
00255 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
0025a 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00260 c1 f9 06 sar ecx, 6
|
||
00263 0b c1 or eax, ecx
|
||
00265 48 98 cdqe
|
||
00267 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0026c 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 778 :
|
||
; 779 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00270 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00275 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00279 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0027e 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 780 : number_of_bytes_encoded++;
|
||
|
||
00282 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00286 ff c0 inc eax
|
||
00288 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 781 :
|
||
; 782 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0028c 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00290 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00295 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0029a 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;
|
||
|
||
0029e 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
002a2 ff c0 inc eax
|
||
002a4 8b c0 mov eax, eax
|
||
002a6 33 c9 xor ecx, ecx
|
||
002a8 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
002ad 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 789 :
|
||
; 790 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
002b1 ba ff ff ff ff mov edx, -1
|
||
002b6 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
002be e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 791 :
|
||
; 792 : return( TRUE );
|
||
|
||
002c3 b8 01 00 00 00 mov eax, 1
|
||
002c8 e9 d0 00 00 00 jmp $LN1@Encode
|
||
|
||
; 793 : }
|
||
|
||
002cd eb 12 jmp SHORT $LN7@Encode
|
||
$LN6@Encode:
|
||
|
||
; 794 : else
|
||
; 795 : {
|
||
; 796 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
002cf 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
002d4 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
002d9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
002dd 88 44 24 29 mov BYTE PTR byte_3$[rsp], al
|
||
$LN7@Encode:
|
||
|
||
; 797 : }
|
||
; 798 :
|
||
; 799 : loop_index++;
|
||
|
||
002e1 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
002e5 ff c0 inc eax
|
||
002e7 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 800 :
|
||
; 801 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
002eb 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
002f0 83 e0 0f and eax, 15
|
||
002f3 c1 e0 02 shl eax, 2
|
||
002f6 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
002fb 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00301 c1 f9 06 sar ecx, 6
|
||
00304 0b c1 or eax, ecx
|
||
00306 48 98 cdqe
|
||
00308 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0030d 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 802 :
|
||
; 803 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00311 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00316 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0031a 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0031f 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 804 : number_of_bytes_encoded++;
|
||
|
||
00323 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00327 ff c0 inc eax
|
||
00329 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 805 :
|
||
; 806 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
0032d 0f b6 44 24 29 movzx eax, BYTE PTR byte_3$[rsp]
|
||
00332 83 e0 3f and eax, 63 ; 0000003fH
|
||
00335 48 98 cdqe
|
||
00337 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0033c 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 807 :
|
||
; 808 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00340 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00345 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00349 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0034e 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 809 : number_of_bytes_encoded++;
|
||
|
||
00352 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00356 ff c0 inc eax
|
||
00358 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 : }
|
||
|
||
0035c e9 6b fd ff ff jmp $LN2@Encode
|
||
$LN3@Encode:
|
||
|
||
; 822 :
|
||
; 823 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00361 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00365 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0036a 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0036f 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;
|
||
|
||
00373 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00377 ff c0 inc eax
|
||
00379 8b c0 mov eax, eax
|
||
0037b 33 c9 xor ecx, ecx
|
||
0037d 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00382 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 830 :
|
||
; 831 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
00386 ba ff ff ff ff mov edx, -1
|
||
0038b 48 8b 8c 24 e8
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
00393 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 832 :
|
||
; 833 : return( TRUE );
|
||
|
||
00398 b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode:
|
||
|
||
; 834 : }
|
||
|
||
0039d 48 8b 8c 24 a0
|
||
00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp]
|
||
003a5 48 33 cc xor rcx, rsp
|
||
003a8 e8 00 00 00 00 call __security_check_cookie
|
||
003ad 48 81 c4 b8 00
|
||
00 00 add rsp, 184 ; 000000b8H
|
||
003b4 5f pop rdi
|
||
003b5 5e pop rsi
|
||
003b6 c3 ret 0
|
||
?Encode@CBase64Coding@@UEAAHPEAEJAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z ENDP ; CBase64Coding::Encode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
byte_to_add$ = 32
|
||
number_of_bytes_encoded$ = 36
|
||
byte_2$ = 40
|
||
byte_3$ = 41
|
||
byte_1$ = 42
|
||
loop_index$ = 44
|
||
destination$ = 48
|
||
number_of_bytes_to_encode$ = 56
|
||
input_buffer$ = 64
|
||
alphabet$ = 80
|
||
__$ArrayPad$ = 160
|
||
this$ = 208
|
||
source$ = 216
|
||
destination_string$ = 224
|
||
?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 56 push rsi
|
||
00010 57 push rdi
|
||
00011 48 81 ec b8 00
|
||
00 00 sub rsp, 184 ; 000000b8H
|
||
00018 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
0001f 48 33 c4 xor rax, rsp
|
||
00022 48 89 84 24 a0
|
||
00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax
|
||
|
||
; 556 :
|
||
; 557 : const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||
|
||
0002a 48 8d 44 24 50 lea rax, QWORD PTR alphabet$[rsp]
|
||
0002f 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:$SG321506
|
||
00036 48 8b f8 mov rdi, rax
|
||
00039 48 8b f1 mov rsi, rcx
|
||
0003c b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00041 f3 a4 rep movsb
|
||
|
||
; 558 :
|
||
; 559 : int loop_index = 0;
|
||
|
||
00043 c7 44 24 2c 00
|
||
00 00 00 mov DWORD PTR loop_index$[rsp], 0
|
||
|
||
; 560 : int number_of_bytes_to_encode = (int)source.GetSize();
|
||
|
||
0004b 48 8b 8c 24 d8
|
||
00 00 00 mov rcx, QWORD PTR source$[rsp]
|
||
00053 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
00058 89 44 24 38 mov DWORD PTR number_of_bytes_to_encode$[rsp], eax
|
||
|
||
; 561 :
|
||
; 562 : BYTE byte_to_add = 0;
|
||
|
||
0005c c6 44 24 20 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 563 : BYTE byte_1 = 0;
|
||
|
||
00061 c6 44 24 2a 00 mov BYTE PTR byte_1$[rsp], 0
|
||
|
||
; 564 : BYTE byte_2 = 0;
|
||
|
||
00066 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 565 : BYTE byte_3 = 0;
|
||
|
||
0006b c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 566 :
|
||
; 567 : const BYTE * input_buffer = source.GetData();
|
||
|
||
00070 48 8b 8c 24 d8
|
||
00 00 00 mov rcx, QWORD PTR source$[rsp]
|
||
00078 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
0007d 48 89 44 24 40 mov QWORD PTR input_buffer$[rsp], rax
|
||
|
||
; 568 :
|
||
; 569 : DWORD number_of_bytes_encoded = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
00082 f2 0f 2a 44 24
|
||
38 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00088 f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
00090 f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00095 ff c0 inc eax
|
||
00097 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], 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 );
|
||
|
||
0009b 33 d2 xor edx, edx
|
||
0009d 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000a1 b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
000a6 f7 f1 div ecx
|
||
000a8 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000ac 8d 44 41 02 lea eax, DWORD PTR [rcx+rax*2+2]
|
||
000b0 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 578 :
|
||
; 579 : LPTSTR destination = destination_string.GetBuffer( number_of_bytes_encoded );
|
||
|
||
000b4 8b 54 24 24 mov edx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
000b8 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
000c0 e8 00 00 00 00 call ?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
000c5 48 89 44 24 30 mov QWORD PTR destination$[rsp], rax
|
||
|
||
; 580 :
|
||
; 581 : number_of_bytes_encoded = 0;
|
||
|
||
000ca c7 44 24 24 00
|
||
00 00 00 mov DWORD PTR number_of_bytes_encoded$[rsp], 0
|
||
$LN2@Encode:
|
||
|
||
; 582 :
|
||
; 583 : while( loop_index < number_of_bytes_to_encode )
|
||
|
||
000d2 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
000d6 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
000da 0f 8d d2 02 00
|
||
00 jge $LN3@Encode
|
||
|
||
; 584 : {
|
||
; 585 : // Output the first byte
|
||
; 586 :
|
||
; 587 : byte_1 = input_buffer[ loop_index ];
|
||
|
||
000e0 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
000e5 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000ea 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000ee 88 44 24 2a mov BYTE PTR byte_1$[rsp], al
|
||
|
||
; 588 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000f2 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
000f7 c1 f8 02 sar eax, 2
|
||
000fa 48 98 cdqe
|
||
000fc 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00101 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 589 :
|
||
; 590 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00105 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0010a 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0010e 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00113 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 591 : number_of_bytes_encoded++;
|
||
|
||
00117 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0011b ff c0 inc eax
|
||
0011d 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 592 :
|
||
; 593 : loop_index++;
|
||
|
||
00121 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
00125 ff c0 inc eax
|
||
00127 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 594 :
|
||
; 595 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
0012b 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
0012f 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
00133 0f 8c a6 00 00
|
||
00 jl $LN4@Encode
|
||
|
||
; 596 : {
|
||
; 597 : // We're at the end of the data to encode
|
||
; 598 :
|
||
; 599 : byte_2 = 0;
|
||
|
||
00139 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 600 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
0013e 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
00143 83 e0 03 and eax, 3
|
||
00146 c1 e0 04 shl eax, 4
|
||
00149 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
0014e 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00154 c1 f9 04 sar ecx, 4
|
||
00157 0b c1 or eax, ecx
|
||
00159 48 98 cdqe
|
||
0015b 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00160 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 601 :
|
||
; 602 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00164 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
00169 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0016d 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00172 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 603 : number_of_bytes_encoded++;
|
||
|
||
00176 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0017a ff c0 inc eax
|
||
0017c 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 604 :
|
||
; 605 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00180 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00184 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
00189 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0018e 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 606 : number_of_bytes_encoded++;
|
||
|
||
00192 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00196 ff c0 inc eax
|
||
00198 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 607 :
|
||
; 608 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
0019c 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
001a0 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
001a5 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
001aa 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;
|
||
|
||
001ae 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
001b2 ff c0 inc eax
|
||
001b4 8b c0 mov eax, eax
|
||
001b6 33 c9 xor ecx, ecx
|
||
001b8 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
001bd 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 615 :
|
||
; 616 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
001c1 ba ff ff ff ff mov edx, -1
|
||
001c6 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
001ce e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 617 :
|
||
; 618 : return( TRUE );
|
||
|
||
001d3 b8 01 00 00 00 mov eax, 1
|
||
001d8 e9 11 02 00 00 jmp $LN1@Encode
|
||
|
||
; 619 : }
|
||
|
||
001dd eb 12 jmp SHORT $LN5@Encode
|
||
$LN4@Encode:
|
||
|
||
; 620 : else
|
||
; 621 : {
|
||
; 622 : byte_2 = input_buffer[ loop_index ];
|
||
|
||
001df 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
001e4 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
001e9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
001ed 88 44 24 28 mov BYTE PTR byte_2$[rsp], al
|
||
$LN5@Encode:
|
||
|
||
; 623 : }
|
||
; 624 :
|
||
; 625 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
001f1 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
001f6 83 e0 03 and eax, 3
|
||
001f9 c1 e0 04 shl eax, 4
|
||
001fc 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
00201 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00207 c1 f9 04 sar ecx, 4
|
||
0020a 0b c1 or eax, ecx
|
||
0020c 48 98 cdqe
|
||
0020e 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00213 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 626 :
|
||
; 627 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00217 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0021c 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00220 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00225 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 628 : number_of_bytes_encoded++;
|
||
|
||
00229 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0022d ff c0 inc eax
|
||
0022f 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 629 :
|
||
; 630 : loop_index++;
|
||
|
||
00233 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
00237 ff c0 inc eax
|
||
00239 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 631 :
|
||
; 632 : if ( loop_index >= number_of_bytes_to_encode )
|
||
|
||
0023d 8b 44 24 38 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00241 39 44 24 2c cmp DWORD PTR loop_index$[rsp], eax
|
||
00245 0f 8c 8a 00 00
|
||
00 jl $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;
|
||
|
||
0024b c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 636 :
|
||
; 637 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
00250 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
00255 83 e0 0f and eax, 15
|
||
00258 c1 e0 02 shl eax, 2
|
||
0025b 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
00260 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00266 c1 f9 06 sar ecx, 6
|
||
00269 0b c1 or eax, ecx
|
||
0026b 48 98 cdqe
|
||
0026d 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00272 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 638 :
|
||
; 639 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00276 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0027b 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0027f 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00284 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 640 : number_of_bytes_encoded++;
|
||
|
||
00288 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0028c ff c0 inc eax
|
||
0028e 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 641 :
|
||
; 642 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00292 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00296 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
0029b 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
002a0 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;
|
||
|
||
002a4 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
002a8 ff c0 inc eax
|
||
002aa 8b c0 mov eax, eax
|
||
002ac 33 c9 xor ecx, ecx
|
||
002ae 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
002b3 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 649 :
|
||
; 650 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
002b7 ba ff ff ff ff mov edx, -1
|
||
002bc 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
002c4 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 651 :
|
||
; 652 : return( TRUE );
|
||
|
||
002c9 b8 01 00 00 00 mov eax, 1
|
||
002ce e9 1b 01 00 00 jmp $LN1@Encode
|
||
|
||
; 653 : }
|
||
|
||
002d3 eb 12 jmp SHORT $LN7@Encode
|
||
$LN6@Encode:
|
||
|
||
; 654 : else
|
||
; 655 : {
|
||
; 656 : byte_3 = input_buffer[ loop_index ];
|
||
|
||
002d5 48 63 44 24 2c movsxd rax, DWORD PTR loop_index$[rsp]
|
||
002da 48 8b 4c 24 40 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
002df 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
002e3 88 44 24 29 mov BYTE PTR byte_3$[rsp], al
|
||
$LN7@Encode:
|
||
|
||
; 657 : }
|
||
; 658 :
|
||
; 659 : loop_index++;
|
||
|
||
002e7 8b 44 24 2c mov eax, DWORD PTR loop_index$[rsp]
|
||
002eb ff c0 inc eax
|
||
002ed 89 44 24 2c mov DWORD PTR loop_index$[rsp], eax
|
||
|
||
; 660 :
|
||
; 661 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
002f1 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
002f6 83 e0 0f and eax, 15
|
||
002f9 c1 e0 02 shl eax, 2
|
||
002fc 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
00301 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00307 c1 f9 06 sar ecx, 6
|
||
0030a 0b c1 or eax, ecx
|
||
0030c 48 98 cdqe
|
||
0030e 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00313 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 662 :
|
||
; 663 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00317 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0031c 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00320 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00325 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 664 : number_of_bytes_encoded++;
|
||
|
||
00329 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0032d ff c0 inc eax
|
||
0032f 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 665 :
|
||
; 666 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
00333 0f b6 44 24 29 movzx eax, BYTE PTR byte_3$[rsp]
|
||
00338 83 e0 3f and eax, 63 ; 0000003fH
|
||
0033b 48 98 cdqe
|
||
0033d 0f b6 44 04 50 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00342 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 667 :
|
||
; 668 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( byte_to_add );
|
||
|
||
00346 0f b6 44 24 20 movzx eax, BYTE PTR byte_to_add$[rsp]
|
||
0034b 8b 4c 24 24 mov ecx, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0034f 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00354 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
|
||
|
||
; 669 : number_of_bytes_encoded++;
|
||
|
||
00358 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0035c ff c0 inc eax
|
||
0035e 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 670 :
|
||
; 671 : if ( ( number_of_bytes_encoded % BASE64_NUMBER_OF_CHARACTERS_PER_LINE ) == 0 )
|
||
|
||
00362 33 d2 xor edx, edx
|
||
00364 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00368 b9 48 00 00 00 mov ecx, 72 ; 00000048H
|
||
0036d f7 f1 div ecx
|
||
0036f 8b c2 mov eax, edx
|
||
00371 85 c0 test eax, eax
|
||
00373 75 38 jne SHORT $LN8@Encode
|
||
|
||
; 672 : {
|
||
; 673 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( CARRIAGE_RETURN );
|
||
|
||
00375 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00379 b9 0d 00 00 00 mov ecx, 13
|
||
0037e 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
00383 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 674 : number_of_bytes_encoded++;
|
||
|
||
00387 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
0038b ff c0 inc eax
|
||
0038d 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
|
||
; 675 :
|
||
; 676 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( LINE_FEED );
|
||
|
||
00391 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
00395 b9 0a 00 00 00 mov ecx, 10
|
||
0039a 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
0039f 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 677 : number_of_bytes_encoded++;
|
||
|
||
003a3 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
003a7 ff c0 inc eax
|
||
003a9 89 44 24 24 mov DWORD PTR number_of_bytes_encoded$[rsp], eax
|
||
$LN8@Encode:
|
||
|
||
; 678 : }
|
||
; 679 : }
|
||
|
||
003ad e9 20 fd ff ff jmp $LN2@Encode
|
||
$LN3@Encode:
|
||
|
||
; 680 :
|
||
; 681 : destination[ number_of_bytes_encoded ] = static_cast< TCHAR >( END_OF_BASE64_ENCODED_DATA );
|
||
|
||
003b2 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
003b6 b9 3d 00 00 00 mov ecx, 61 ; 0000003dH
|
||
003bb 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
003c0 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;
|
||
|
||
003c4 8b 44 24 24 mov eax, DWORD PTR number_of_bytes_encoded$[rsp]
|
||
003c8 ff c0 inc eax
|
||
003ca 8b c0 mov eax, eax
|
||
003cc 33 c9 xor ecx, ecx
|
||
003ce 48 8b 54 24 30 mov rdx, QWORD PTR destination$[rsp]
|
||
003d3 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
|
||
|
||
; 688 :
|
||
; 689 : destination_string.ReleaseBuffer( -1 );
|
||
|
||
003d7 ba ff ff ff ff mov edx, -1
|
||
003dc 48 8b 8c 24 e0
|
||
00 00 00 mov rcx, QWORD PTR destination_string$[rsp]
|
||
003e4 e8 00 00 00 00 call ?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
|
||
; 690 :
|
||
; 691 : return( TRUE );
|
||
|
||
003e9 b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode:
|
||
|
||
; 692 : }
|
||
|
||
003ee 48 8b 8c 24 a0
|
||
00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp]
|
||
003f6 48 33 cc xor rcx, rsp
|
||
003f9 e8 00 00 00 00 call __security_check_cookie
|
||
003fe 48 81 c4 b8 00
|
||
00 00 add rsp, 184 ; 000000b8H
|
||
00405 5f pop rdi
|
||
00406 5e pop rsi
|
||
00407 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
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
_TEXT SEGMENT
|
||
byte_to_add$ = 32
|
||
add_index$ = 36
|
||
byte_2$ = 40
|
||
byte_3$ = 41
|
||
byte_1$ = 42
|
||
source_index$ = 44
|
||
number_of_bytes_to_encode$ = 48
|
||
input_buffer$ = 56
|
||
alphabet$ = 64
|
||
__$ArrayPad$ = 144
|
||
this$ = 192
|
||
source$ = 200
|
||
destination$ = 208
|
||
?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 56 push rsi
|
||
00010 57 push rdi
|
||
00011 48 81 ec a8 00
|
||
00 00 sub rsp, 168 ; 000000a8H
|
||
00018 48 8b 05 00 00
|
||
00 00 mov rax, QWORD PTR __security_cookie
|
||
0001f 48 33 c4 xor rax, rsp
|
||
00022 48 89 84 24 90
|
||
00 00 00 mov QWORD PTR __$ArrayPad$[rsp], 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+/";
|
||
|
||
0002a 48 8d 44 24 40 lea rax, QWORD PTR alphabet$[rsp]
|
||
0002f 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:$SG321467
|
||
00036 48 8b f8 mov rdi, rax
|
||
00039 48 8b f1 mov rsi, rcx
|
||
0003c b9 41 00 00 00 mov ecx, 65 ; 00000041H
|
||
00041 f3 a4 rep movsb
|
||
|
||
; 454 :
|
||
; 455 : int source_index = 0;
|
||
|
||
00043 c7 44 24 2c 00
|
||
00 00 00 mov DWORD PTR source_index$[rsp], 0
|
||
|
||
; 456 : int number_of_bytes_to_encode = (int)source.GetSize();
|
||
|
||
0004b 48 8b 8c 24 c8
|
||
00 00 00 mov rcx, QWORD PTR source$[rsp]
|
||
00053 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
00058 89 44 24 30 mov DWORD PTR number_of_bytes_to_encode$[rsp], eax
|
||
|
||
; 457 :
|
||
; 458 : BYTE byte_to_add = 0;
|
||
|
||
0005c c6 44 24 20 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 459 : BYTE byte_1 = 0;
|
||
|
||
00061 c6 44 24 2a 00 mov BYTE PTR byte_1$[rsp], 0
|
||
|
||
; 460 : BYTE byte_2 = 0;
|
||
|
||
00066 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 461 : BYTE byte_3 = 0;
|
||
|
||
0006b c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 462 :
|
||
; 463 : const BYTE * input_buffer = source.GetData();
|
||
|
||
00070 48 8b 8c 24 c8
|
||
00 00 00 mov rcx, QWORD PTR source$[rsp]
|
||
00078 e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
0007d 48 89 44 24 38 mov QWORD PTR input_buffer$[rsp], rax
|
||
|
||
; 464 :
|
||
; 465 : DWORD add_index = (DWORD) ( (double) number_of_bytes_to_encode / (double) 0.75 ) + 1;
|
||
|
||
00082 f2 0f 2a 44 24
|
||
30 cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00088 f2 0f 5e 05 00
|
||
00 00 00 divsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
00090 f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00095 ff c0 inc eax
|
||
00097 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 466 : add_index += ( ( number_of_bytes_to_encode % 3 ) + 1 );
|
||
|
||
0009b 8b 44 24 30 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
0009f 99 cdq
|
||
000a0 b9 03 00 00 00 mov ecx, 3
|
||
000a5 f7 f9 idiv ecx
|
||
000a7 8b c2 mov eax, edx
|
||
000a9 8b 4c 24 24 mov ecx, DWORD PTR add_index$[rsp]
|
||
000ad 8d 44 01 01 lea eax, DWORD PTR [rcx+rax+1]
|
||
000b1 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 467 :
|
||
; 468 : destination.SetSize( add_index );
|
||
|
||
000b5 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
000b9 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
000c0 8b d0 mov edx, eax
|
||
000c2 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
000ca e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 469 : add_index = 0;
|
||
|
||
000cf c7 44 24 24 00
|
||
00 00 00 mov DWORD PTR add_index$[rsp], 0
|
||
$LN2@Encode:
|
||
|
||
; 470 :
|
||
; 471 : while( source_index < number_of_bytes_to_encode )
|
||
|
||
000d7 8b 44 24 30 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
000db 39 44 24 2c cmp DWORD PTR source_index$[rsp], eax
|
||
000df 0f 8d bb 02 00
|
||
00 jge $LN3@Encode
|
||
|
||
; 472 : {
|
||
; 473 : // Output the first byte
|
||
; 474 :
|
||
; 475 : byte_1 = input_buffer[ source_index ];
|
||
|
||
000e5 48 63 44 24 2c movsxd rax, DWORD PTR source_index$[rsp]
|
||
000ea 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000ef 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
000f3 88 44 24 2a mov BYTE PTR byte_1$[rsp], al
|
||
|
||
; 476 : byte_to_add = alphabet[ ( byte_1 >> 2 ) ];
|
||
|
||
000f7 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
000fc c1 f8 02 sar eax, 2
|
||
000ff 48 98 cdqe
|
||
00101 0f b6 44 04 40 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00106 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 477 :
|
||
; 478 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0010a 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
0010e 44 0f b6 44 24
|
||
20 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
00114 8b d0 mov edx, eax
|
||
00116 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
0011e e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 479 : add_index++;
|
||
|
||
00123 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
00127 ff c0 inc eax
|
||
00129 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 480 :
|
||
; 481 : source_index++;
|
||
|
||
0012d 8b 44 24 2c mov eax, DWORD PTR source_index$[rsp]
|
||
00131 ff c0 inc eax
|
||
00133 89 44 24 2c mov DWORD PTR source_index$[rsp], eax
|
||
|
||
; 482 :
|
||
; 483 : if ( source_index >= number_of_bytes_to_encode )
|
||
|
||
00137 8b 44 24 30 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
0013b 39 44 24 2c cmp DWORD PTR source_index$[rsp], eax
|
||
0013f 0f 8c b4 00 00
|
||
00 jl $LN4@Encode
|
||
|
||
; 484 : {
|
||
; 485 : // We're at the end of the data to encode
|
||
; 486 :
|
||
; 487 : byte_2 = 0;
|
||
|
||
00145 c6 44 24 28 00 mov BYTE PTR byte_2$[rsp], 0
|
||
|
||
; 488 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
0014a 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
0014f 83 e0 03 and eax, 3
|
||
00152 c1 e0 04 shl eax, 4
|
||
00155 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
0015a 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00160 c1 f9 04 sar ecx, 4
|
||
00163 0b c1 or eax, ecx
|
||
00165 48 98 cdqe
|
||
00167 0f b6 44 04 40 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0016c 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 489 :
|
||
; 490 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00170 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
00174 44 0f b6 44 24
|
||
20 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
0017a 8b d0 mov edx, eax
|
||
0017c 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
00184 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 491 : add_index++;
|
||
|
||
00189 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
0018d ff c0 inc eax
|
||
0018f 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 492 :
|
||
; 493 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
00193 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
00197 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
0019a 8b d0 mov edx, eax
|
||
0019c 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
001a4 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 494 : add_index++;
|
||
|
||
001a9 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
001ad ff c0 inc eax
|
||
001af 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 495 :
|
||
; 496 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
001b3 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
001b7 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
001ba 8b d0 mov edx, eax
|
||
001bc 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
001c4 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 497 : add_index++;
|
||
|
||
001c9 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
001cd ff c0 inc eax
|
||
001cf 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 498 :
|
||
; 499 : destination.SetSize( add_index );
|
||
|
||
001d3 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
001d7 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
001de 8b d0 mov edx, eax
|
||
001e0 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
001e8 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 500 : return( TRUE );
|
||
|
||
001ed b8 01 00 00 00 mov eax, 1
|
||
001f2 e9 e8 01 00 00 jmp $LN1@Encode
|
||
|
||
; 501 : }
|
||
|
||
001f7 eb 12 jmp SHORT $LN5@Encode
|
||
$LN4@Encode:
|
||
|
||
; 502 : else
|
||
; 503 : {
|
||
; 504 : byte_2 = input_buffer[ source_index ];
|
||
|
||
001f9 48 63 44 24 2c movsxd rax, DWORD PTR source_index$[rsp]
|
||
001fe 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
00203 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
00207 88 44 24 28 mov BYTE PTR byte_2$[rsp], al
|
||
$LN5@Encode:
|
||
|
||
; 505 : }
|
||
; 506 :
|
||
; 507 : byte_to_add = alphabet[ ( ( ( byte_1 & 0x03 ) << 4 ) | ( ( byte_2 & 0xF0 ) >> 4 ) ) ];
|
||
|
||
0020b 0f b6 44 24 2a movzx eax, BYTE PTR byte_1$[rsp]
|
||
00210 83 e0 03 and eax, 3
|
||
00213 c1 e0 04 shl eax, 4
|
||
00216 0f b6 4c 24 28 movzx ecx, BYTE PTR byte_2$[rsp]
|
||
0021b 81 e1 f0 00 00
|
||
00 and ecx, 240 ; 000000f0H
|
||
00221 c1 f9 04 sar ecx, 4
|
||
00224 0b c1 or eax, ecx
|
||
00226 48 98 cdqe
|
||
00228 0f b6 44 04 40 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0022d 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 508 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00231 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
00235 44 0f b6 44 24
|
||
20 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
0023b 8b d0 mov edx, eax
|
||
0023d 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
00245 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 509 : add_index++;
|
||
|
||
0024a 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
0024e ff c0 inc eax
|
||
00250 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 510 :
|
||
; 511 : source_index++;
|
||
|
||
00254 8b 44 24 2c mov eax, DWORD PTR source_index$[rsp]
|
||
00258 ff c0 inc eax
|
||
0025a 89 44 24 2c mov DWORD PTR source_index$[rsp], eax
|
||
|
||
; 512 :
|
||
; 513 : if ( source_index >= number_of_bytes_to_encode )
|
||
|
||
0025e 8b 44 24 30 mov eax, DWORD PTR number_of_bytes_to_encode$[rsp]
|
||
00262 39 44 24 2c cmp DWORD PTR source_index$[rsp], eax
|
||
00266 0f 8c 94 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;
|
||
|
||
0026c c6 44 24 29 00 mov BYTE PTR byte_3$[rsp], 0
|
||
|
||
; 517 :
|
||
; 518 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
00271 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
00276 83 e0 0f and eax, 15
|
||
00279 c1 e0 02 shl eax, 2
|
||
0027c 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
00281 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00287 c1 f9 06 sar ecx, 6
|
||
0028a 0b c1 or eax, ecx
|
||
0028c 48 98 cdqe
|
||
0028e 0f b6 44 04 40 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00293 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 519 :
|
||
; 520 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00297 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
0029b 44 0f b6 44 24
|
||
20 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
002a1 8b d0 mov edx, eax
|
||
002a3 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
002ab e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 521 : add_index++;
|
||
|
||
002b0 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
002b4 ff c0 inc eax
|
||
002b6 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 522 :
|
||
; 523 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
002ba 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
002be 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
002c1 8b d0 mov edx, eax
|
||
002c3 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
002cb e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 524 : add_index++;
|
||
|
||
002d0 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
002d4 ff c0 inc eax
|
||
002d6 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 525 :
|
||
; 526 : destination.SetSize( add_index );
|
||
|
||
002da 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
002de 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
002e5 8b d0 mov edx, eax
|
||
002e7 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
002ef e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 527 : return( TRUE );
|
||
|
||
002f4 b8 01 00 00 00 mov eax, 1
|
||
002f9 e9 e1 00 00 00 jmp $LN1@Encode
|
||
|
||
; 528 : }
|
||
|
||
002fe eb 12 jmp SHORT $LN7@Encode
|
||
$LN6@Encode:
|
||
|
||
; 529 : else
|
||
; 530 : {
|
||
; 531 : byte_3 = input_buffer[ source_index ];
|
||
|
||
00300 48 63 44 24 2c movsxd rax, DWORD PTR source_index$[rsp]
|
||
00305 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
0030a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
||
0030e 88 44 24 29 mov BYTE PTR byte_3$[rsp], al
|
||
$LN7@Encode:
|
||
|
||
; 532 : }
|
||
; 533 :
|
||
; 534 : source_index++;
|
||
|
||
00312 8b 44 24 2c mov eax, DWORD PTR source_index$[rsp]
|
||
00316 ff c0 inc eax
|
||
00318 89 44 24 2c mov DWORD PTR source_index$[rsp], eax
|
||
|
||
; 535 :
|
||
; 536 : byte_to_add = alphabet[ ( ( ( byte_2 & 0x0F ) << 2 ) | ( ( byte_3 & 0xC0 ) >> 6 ) ) ];
|
||
|
||
0031c 0f b6 44 24 28 movzx eax, BYTE PTR byte_2$[rsp]
|
||
00321 83 e0 0f and eax, 15
|
||
00324 c1 e0 02 shl eax, 2
|
||
00327 0f b6 4c 24 29 movzx ecx, BYTE PTR byte_3$[rsp]
|
||
0032c 81 e1 c0 00 00
|
||
00 and ecx, 192 ; 000000c0H
|
||
00332 c1 f9 06 sar ecx, 6
|
||
00335 0b c1 or eax, ecx
|
||
00337 48 98 cdqe
|
||
00339 0f b6 44 04 40 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
0033e 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 537 :
|
||
; 538 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00342 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
00346 44 0f b6 44 24
|
||
20 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
0034c 8b d0 mov edx, eax
|
||
0034e 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
00356 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 539 : add_index++;
|
||
|
||
0035b 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
0035f ff c0 inc eax
|
||
00361 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 540 :
|
||
; 541 : byte_to_add = alphabet[ ( byte_3 & 0x3F ) ];
|
||
|
||
00365 0f b6 44 24 29 movzx eax, BYTE PTR byte_3$[rsp]
|
||
0036a 83 e0 3f and eax, 63 ; 0000003fH
|
||
0036d 48 98 cdqe
|
||
0036f 0f b6 44 04 40 movzx eax, BYTE PTR alphabet$[rsp+rax]
|
||
00374 88 44 24 20 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 542 :
|
||
; 543 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
00378 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
0037c 44 0f b6 44 24
|
||
20 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
00382 8b d0 mov edx, eax
|
||
00384 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
0038c e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 544 : add_index++;
|
||
|
||
00391 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
00395 ff c0 inc eax
|
||
00397 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 545 : }
|
||
|
||
0039b e9 37 fd ff ff jmp $LN2@Encode
|
||
$LN3@Encode:
|
||
|
||
; 546 :
|
||
; 547 : destination.SetAt( add_index, END_OF_BASE64_ENCODED_DATA );
|
||
|
||
003a0 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
003a4 41 b0 3d mov r8b, 61 ; 0000003dH
|
||
003a7 8b d0 mov edx, eax
|
||
003a9 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
003b1 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 548 : add_index++;
|
||
|
||
003b6 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
003ba ff c0 inc eax
|
||
003bc 89 44 24 24 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 549 :
|
||
; 550 : destination.SetSize( add_index );
|
||
|
||
003c0 8b 44 24 24 mov eax, DWORD PTR add_index$[rsp]
|
||
003c4 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
003cb 8b d0 mov edx, eax
|
||
003cd 48 8b 8c 24 d0
|
||
00 00 00 mov rcx, QWORD PTR destination$[rsp]
|
||
003d5 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 551 : return( TRUE );
|
||
|
||
003da b8 01 00 00 00 mov eax, 1
|
||
$LN1@Encode:
|
||
|
||
; 552 : }
|
||
|
||
003df 48 8b 8c 24 90
|
||
00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp]
|
||
003e7 48 33 cc xor rcx, rsp
|
||
003ea e8 00 00 00 00 call __security_check_cookie
|
||
003ef 48 81 c4 a8 00
|
||
00 00 add rsp, 168 ; 000000a8H
|
||
003f6 5f pop rdi
|
||
003f7 5e pop rsi
|
||
003f8 c3 ret 0
|
||
?Encode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z ENDP ; CBase64Coding::Encode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
character_3$ = 32
|
||
character_4$ = 33
|
||
character_2$ = 34
|
||
character_1$ = 35
|
||
byte_to_add$ = 36
|
||
add_index$ = 40
|
||
number_of_bytes_to_decode$ = 44
|
||
index$ = 48
|
||
input_buffer$ = 56
|
||
return_value$ = 64
|
||
this$ = 96
|
||
source$ = 104
|
||
destination$ = 112
|
||
?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 48 83 ec 58 sub rsp, 88 ; 00000058H
|
||
|
||
; 303 :
|
||
; 304 : if ( m_DecoderTable[ 0 ] == 0x00 )
|
||
|
||
00013 b8 01 00 00 00 mov eax, 1
|
||
00018 48 6b c0 00 imul rax, rax, 0
|
||
0001c 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00021 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00026 85 c0 test eax, eax
|
||
00028 75 0f jne SHORT $LN4@Decode
|
||
|
||
; 305 : {
|
||
; 306 : m_InitializeDecoderTable();
|
||
|
||
0002a 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
0002f 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00032 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00037 ff 10 call QWORD PTR [rax]
|
||
$LN4@Decode:
|
||
|
||
; 307 : }
|
||
; 308 :
|
||
; 309 : BOOL return_value = TRUE; //Ĭ<>Ϸ<EFBFBD><CFB7>سɹ<D8B3>
|
||
|
||
00039 c7 44 24 40 01
|
||
00 00 00 mov DWORD PTR return_value$[rsp], 1
|
||
|
||
; 310 :
|
||
; 311 : BYTE byte_to_add = 0;
|
||
|
||
00041 c6 44 24 24 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 312 : BYTE character_1 = 0;
|
||
|
||
00046 c6 44 24 23 00 mov BYTE PTR character_1$[rsp], 0
|
||
|
||
; 313 : BYTE character_2 = 0;
|
||
|
||
0004b c6 44 24 22 00 mov BYTE PTR character_2$[rsp], 0
|
||
|
||
; 314 : BYTE character_3 = 0;
|
||
|
||
00050 c6 44 24 20 00 mov BYTE PTR character_3$[rsp], 0
|
||
|
||
; 315 : BYTE character_4 = 0;
|
||
|
||
00055 c6 44 24 21 00 mov BYTE PTR character_4$[rsp], 0
|
||
|
||
; 316 :
|
||
; 317 : int index = 0;
|
||
|
||
0005a c7 44 24 30 00
|
||
00 00 00 mov DWORD PTR index$[rsp], 0
|
||
|
||
; 318 : int number_of_bytes_to_decode = source.GetLength();
|
||
|
||
00062 48 8b 4c 24 68 mov rcx, QWORD PTR source$[rsp]
|
||
00067 e8 00 00 00 00 call ?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ ; ATL::CSimpleStringT<char,0>::GetLength
|
||
0006c 89 44 24 2c mov DWORD PTR number_of_bytes_to_decode$[rsp], eax
|
||
|
||
; 319 :
|
||
; 320 : DWORD add_index = (DWORD) ( (double) number_of_bytes_to_decode * (double) 0.75 ) + 1;
|
||
|
||
00070 f2 0f 2a 44 24
|
||
2c cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
00076 f2 0f 59 05 00
|
||
00 00 00 mulsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0007e f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00083 ff c0 inc eax
|
||
00085 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 321 :
|
||
; 322 : destination.SetSize( add_index );
|
||
|
||
00089 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
0008d 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00094 8b d0 mov edx, eax
|
||
00096 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0009b e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 323 : add_index = 0;
|
||
|
||
000a0 c7 44 24 28 00
|
||
00 00 00 mov DWORD PTR add_index$[rsp], 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;
|
||
|
||
000a8 48 8b 4c 24 68 mov rcx, QWORD PTR source$[rsp]
|
||
000ad e8 00 00 00 00 call ??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ ; ATL::CSimpleStringT<char,0>::operator char const *
|
||
000b2 48 89 44 24 38 mov QWORD PTR input_buffer$[rsp], rax
|
||
$LN2@Decode:
|
||
|
||
; 330 :
|
||
; 331 : while( index < number_of_bytes_to_decode )
|
||
|
||
000b7 8b 44 24 2c mov eax, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
000bb 39 44 24 30 cmp DWORD PTR index$[rsp], eax
|
||
000bf 0f 8d 3d 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 );
|
||
|
||
000c5 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
000ca 48 83 c0 08 add rax, 8
|
||
000ce 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
000d3 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
000d8 48 8b d0 mov rdx, rax
|
||
000db 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000e0 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
000e5 88 44 24 23 mov BYTE PTR character_1$[rsp], al
|
||
|
||
; 334 :
|
||
; 335 : if ( character_1 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
000e9 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
000ee 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
000f1 0f 84 78 01 00
|
||
00 je $LN5@Decode
|
||
|
||
; 336 : {
|
||
; 337 : if ( m_DecoderTable[ character_1 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
000f7 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
000fc 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00101 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00106 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
0010b 75 11 jne SHORT $LN7@Decode
|
||
|
||
; 338 : {
|
||
; 339 : destination.RemoveAll();
|
||
|
||
0010d 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00112 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 340 : return( FALSE );
|
||
|
||
00117 33 c0 xor eax, eax
|
||
00119 e9 ff 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 );
|
||
|
||
0011e 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
00123 48 83 c0 08 add rax, 8
|
||
00127 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
0012c 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
00131 48 8b d0 mov rdx, rax
|
||
00134 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
00139 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
0013e 88 44 24 22 mov BYTE PTR character_2$[rsp], al
|
||
|
||
; 344 :
|
||
; 345 : if ( character_2 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00142 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
00147 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
0014a 0f 84 13 01 00
|
||
00 je $LN8@Decode
|
||
|
||
; 346 : {
|
||
; 347 : if ( m_DecoderTable[ character_2 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
00150 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
00155 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
0015a 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0015f 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
00164 75 11 jne SHORT $LN10@Decode
|
||
|
||
; 348 : {
|
||
; 349 : destination.RemoveAll();
|
||
|
||
00166 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0016b e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 350 : return( FALSE );
|
||
|
||
00170 33 c0 xor eax, eax
|
||
00172 e9 a6 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 );
|
||
|
||
00177 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
0017c 48 83 c0 08 add rax, 8
|
||
00180 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
00185 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
0018a 48 8b d0 mov rdx, rax
|
||
0018d 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
00192 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
00197 88 44 24 20 mov BYTE PTR character_3$[rsp], al
|
||
|
||
; 354 :
|
||
; 355 : if ( character_3 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
0019b 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
001a0 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
001a3 0f 84 b3 00 00
|
||
00 je $LN11@Decode
|
||
|
||
; 356 : {
|
||
; 357 : if ( m_DecoderTable[ character_3 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
001a9 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
001ae 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
001b3 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
001b8 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
001bd 75 11 jne SHORT $LN13@Decode
|
||
|
||
; 358 : {
|
||
; 359 : destination.RemoveAll();
|
||
|
||
001bf 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
001c4 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 360 : return( FALSE );
|
||
|
||
001c9 33 c0 xor eax, eax
|
||
001cb e9 4d 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 );
|
||
|
||
001d0 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
001d5 48 83 c0 08 add rax, 8
|
||
001d9 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
001de 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
001e3 48 8b d0 mov rdx, rax
|
||
001e6 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
001eb e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
001f0 88 44 24 21 mov BYTE PTR character_4$[rsp], al
|
||
|
||
; 364 :
|
||
; 365 : if ( character_4 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
001f4 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
001f9 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
001fc 74 27 je SHORT $LN14@Decode
|
||
|
||
; 366 : {
|
||
; 367 : if ( m_DecoderTable[ character_4 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
001fe 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
00203 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00208 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0020d 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
00212 75 11 jne SHORT $LN15@Decode
|
||
|
||
; 368 : {
|
||
; 369 : destination.RemoveAll();
|
||
|
||
00214 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00219 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 370 : return( FALSE );
|
||
|
||
0021e 33 c0 xor eax, eax
|
||
00220 e9 f8 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 ||
|
||
|
||
00225 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
0022a 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
0022f 74 18 je SHORT $LN17@Decode
|
||
00231 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
00236 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
0023b 74 0c je SHORT $LN17@Decode
|
||
0023d 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
00242 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
00247 75 11 jne SHORT $LN16@Decode
|
||
$LN17@Decode:
|
||
|
||
; 376 : character_4 == BASE64_END_OF_BUFFER )
|
||
; 377 : {
|
||
; 378 : destination.RemoveAll();
|
||
|
||
00249 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0024e e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 379 : return( FALSE );
|
||
|
||
00253 33 c0 xor eax, eax
|
||
00255 e9 c3 01 00 00 jmp $LN1@Decode
|
||
$LN16@Decode:
|
||
|
||
; 380 : }
|
||
; 381 : }
|
||
|
||
0025a eb 05 jmp SHORT $LN12@Decode
|
||
$LN11@Decode:
|
||
|
||
; 382 : else
|
||
; 383 : {
|
||
; 384 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0025c c6 44 24 21 3d mov BYTE PTR character_4$[rsp], 61 ; 0000003dH
|
||
$LN12@Decode:
|
||
|
||
; 385 : }
|
||
; 386 : }
|
||
|
||
00261 eb 0a jmp SHORT $LN9@Decode
|
||
$LN8@Decode:
|
||
|
||
; 387 : else
|
||
; 388 : {
|
||
; 389 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00263 c6 44 24 20 3d mov BYTE PTR character_3$[rsp], 61 ; 0000003dH
|
||
|
||
; 390 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00268 c6 44 24 21 3d mov BYTE PTR character_4$[rsp], 61 ; 0000003dH
|
||
$LN9@Decode:
|
||
|
||
; 391 : }
|
||
; 392 : }
|
||
|
||
0026d eb 0f jmp SHORT $LN6@Decode
|
||
$LN5@Decode:
|
||
|
||
; 393 : else
|
||
; 394 : {
|
||
; 395 : character_2 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0026f c6 44 24 22 3d mov BYTE PTR character_2$[rsp], 61 ; 0000003dH
|
||
|
||
; 396 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00274 c6 44 24 20 3d mov BYTE PTR character_3$[rsp], 61 ; 0000003dH
|
||
|
||
; 397 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00279 c6 44 24 21 3d mov BYTE PTR character_4$[rsp], 61 ; 0000003dH
|
||
$LN6@Decode:
|
||
|
||
; 398 : }
|
||
; 399 :
|
||
; 400 : if ( character_1 == END_OF_BASE64_ENCODED_DATA ||
|
||
|
||
0027e 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
00283 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00286 74 0a je SHORT $LN19@Decode
|
||
00288 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
0028d 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00290 75 21 jne SHORT $LN18@Decode
|
||
$LN19@Decode:
|
||
|
||
; 401 : character_2 == END_OF_BASE64_ENCODED_DATA )
|
||
; 402 : {
|
||
; 403 : destination.SetSize( add_index );
|
||
|
||
00292 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00296 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
0029d 8b d0 mov edx, eax
|
||
0029f 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
002a4 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 404 : return( TRUE );
|
||
|
||
002a9 b8 01 00 00 00 mov eax, 1
|
||
002ae e9 6a 01 00 00 jmp $LN1@Decode
|
||
$LN18@Decode:
|
||
|
||
; 405 : }
|
||
; 406 :
|
||
; 407 : character_1 = m_DecoderTable[ character_1 ];
|
||
|
||
002b3 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
002b8 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
002bd 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
002c2 88 44 24 23 mov BYTE PTR character_1$[rsp], al
|
||
|
||
; 408 : character_2 = m_DecoderTable[ character_2 ];
|
||
|
||
002c6 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
002cb 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
002d0 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
002d5 88 44 24 22 mov BYTE PTR character_2$[rsp], al
|
||
|
||
; 409 :
|
||
; 410 : byte_to_add = static_cast< BYTE>( ( ( character_1 << 2 ) | ( ( character_2 & 0x30 ) >> 4 ) ) );
|
||
|
||
002d9 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
002de c1 e0 02 shl eax, 2
|
||
002e1 0f b6 4c 24 22 movzx ecx, BYTE PTR character_2$[rsp]
|
||
002e6 83 e1 30 and ecx, 48 ; 00000030H
|
||
002e9 c1 f9 04 sar ecx, 4
|
||
002ec 0b c1 or eax, ecx
|
||
002ee 88 44 24 24 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 411 :
|
||
; 412 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
002f2 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
002f6 44 0f b6 44 24
|
||
24 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
002fc 8b d0 mov edx, eax
|
||
002fe 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00303 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 413 : add_index++;
|
||
|
||
00308 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
0030c ff c0 inc eax
|
||
0030e 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 414 :
|
||
; 415 : if ( character_3 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00312 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
00317 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
0031a 75 21 jne SHORT $LN20@Decode
|
||
|
||
; 416 : {
|
||
; 417 : destination.SetSize( add_index );
|
||
|
||
0031c 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00320 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00327 8b d0 mov edx, eax
|
||
00329 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0032e e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 418 : return( TRUE );
|
||
|
||
00333 b8 01 00 00 00 mov eax, 1
|
||
00338 e9 e0 00 00 00 jmp $LN1@Decode
|
||
$LN20@Decode:
|
||
|
||
; 419 : }
|
||
; 420 :
|
||
; 421 : character_3 = m_DecoderTable[ character_3 ];
|
||
|
||
0033d 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
00342 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00347 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0034c 88 44 24 20 mov BYTE PTR character_3$[rsp], al
|
||
|
||
; 422 :
|
||
; 423 : byte_to_add = static_cast< BYTE >( ( ( ( ( character_2 & 0x0F ) << 4 ) | ( ( character_3 & 0x3C ) >> 2 ) ) ) );
|
||
|
||
00350 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
00355 83 e0 0f and eax, 15
|
||
00358 c1 e0 04 shl eax, 4
|
||
0035b 0f b6 4c 24 20 movzx ecx, BYTE PTR character_3$[rsp]
|
||
00360 83 e1 3c and ecx, 60 ; 0000003cH
|
||
00363 c1 f9 02 sar ecx, 2
|
||
00366 0b c1 or eax, ecx
|
||
00368 88 44 24 24 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 424 :
|
||
; 425 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0036c 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00370 44 0f b6 44 24
|
||
24 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
00376 8b d0 mov edx, eax
|
||
00378 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0037d e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 426 : add_index++;
|
||
|
||
00382 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00386 ff c0 inc eax
|
||
00388 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 427 :
|
||
; 428 : if ( character_4 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
0038c 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
00391 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00394 75 1e jne SHORT $LN21@Decode
|
||
|
||
; 429 : {
|
||
; 430 : destination.SetSize( add_index );
|
||
|
||
00396 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
0039a 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
003a1 8b d0 mov edx, eax
|
||
003a3 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
003a8 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 431 : return( TRUE );
|
||
|
||
003ad b8 01 00 00 00 mov eax, 1
|
||
003b2 eb 69 jmp SHORT $LN1@Decode
|
||
$LN21@Decode:
|
||
|
||
; 432 : }
|
||
; 433 :
|
||
; 434 : character_4 = m_DecoderTable[ character_4 ];
|
||
|
||
003b4 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
003b9 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
003be 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
003c3 88 44 24 21 mov BYTE PTR character_4$[rsp], al
|
||
|
||
; 435 :
|
||
; 436 : byte_to_add = static_cast< BYTE >( ( ( ( character_3 & 0x03 ) << 6 ) | character_4 ) );
|
||
|
||
003c7 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
003cc 83 e0 03 and eax, 3
|
||
003cf c1 e0 06 shl eax, 6
|
||
003d2 0f b6 4c 24 21 movzx ecx, BYTE PTR character_4$[rsp]
|
||
003d7 0b c1 or eax, ecx
|
||
003d9 88 44 24 24 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 437 :
|
||
; 438 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
003dd 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
003e1 44 0f b6 44 24
|
||
24 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
003e7 8b d0 mov edx, eax
|
||
003e9 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
003ee e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 439 : add_index++;
|
||
|
||
003f3 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
003f7 ff c0 inc eax
|
||
003f9 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 440 : }
|
||
|
||
003fd e9 b5 fc ff ff jmp $LN2@Decode
|
||
$LN3@Decode:
|
||
|
||
; 441 :
|
||
; 442 : destination.SetSize( add_index );
|
||
|
||
00402 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00406 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
0040d 8b d0 mov edx, eax
|
||
0040f 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00414 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 443 :
|
||
; 444 : return( return_value );
|
||
|
||
00419 8b 44 24 40 mov eax, DWORD PTR return_value$[rsp]
|
||
$LN1@Decode:
|
||
|
||
; 445 : }
|
||
|
||
0041d 48 83 c4 58 add rsp, 88 ; 00000058H
|
||
00421 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
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z
|
||
_TEXT SEGMENT
|
||
character_3$ = 32
|
||
character_4$ = 33
|
||
character_2$ = 34
|
||
character_1$ = 35
|
||
byte_to_add$ = 36
|
||
add_index$ = 40
|
||
number_of_bytes_to_decode$ = 44
|
||
index$ = 48
|
||
input_buffer$ = 56
|
||
return_value$ = 64
|
||
this$ = 96
|
||
source$ = 104
|
||
destination$ = 112
|
||
?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 48 83 ec 58 sub rsp, 88 ; 00000058H
|
||
|
||
; 157 :
|
||
; 158 : if ( m_DecoderTable[ 0 ] == 0x00 )
|
||
|
||
00013 b8 01 00 00 00 mov eax, 1
|
||
00018 48 6b c0 00 imul rax, rax, 0
|
||
0001c 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00021 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00026 85 c0 test eax, eax
|
||
00028 75 0f jne SHORT $LN4@Decode
|
||
|
||
; 159 : {
|
||
; 160 : m_InitializeDecoderTable();
|
||
|
||
0002a 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
0002f 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00032 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00037 ff 10 call QWORD PTR [rax]
|
||
$LN4@Decode:
|
||
|
||
; 161 : }
|
||
; 162 :
|
||
; 163 : BOOL return_value = FALSE;
|
||
|
||
00039 c7 44 24 40 00
|
||
00 00 00 mov DWORD PTR return_value$[rsp], 0
|
||
|
||
; 164 :
|
||
; 165 : BYTE byte_to_add = 0;
|
||
|
||
00041 c6 44 24 24 00 mov BYTE PTR byte_to_add$[rsp], 0
|
||
|
||
; 166 : BYTE character_1 = 0;
|
||
|
||
00046 c6 44 24 23 00 mov BYTE PTR character_1$[rsp], 0
|
||
|
||
; 167 : BYTE character_2 = 0;
|
||
|
||
0004b c6 44 24 22 00 mov BYTE PTR character_2$[rsp], 0
|
||
|
||
; 168 : BYTE character_3 = 0;
|
||
|
||
00050 c6 44 24 20 00 mov BYTE PTR character_3$[rsp], 0
|
||
|
||
; 169 : BYTE character_4 = 0;
|
||
|
||
00055 c6 44 24 21 00 mov BYTE PTR character_4$[rsp], 0
|
||
|
||
; 170 :
|
||
; 171 : int index = 0;
|
||
|
||
0005a c7 44 24 30 00
|
||
00 00 00 mov DWORD PTR index$[rsp], 0
|
||
|
||
; 172 : int number_of_bytes_to_decode = (int)source.GetSize();
|
||
|
||
00062 48 8b 4c 24 68 mov rcx, QWORD PTR source$[rsp]
|
||
00067 e8 00 00 00 00 call ?GetSize@CByteArray@@QEBA_JXZ ; CByteArray::GetSize
|
||
0006c 89 44 24 2c mov DWORD PTR number_of_bytes_to_decode$[rsp], eax
|
||
|
||
; 173 :
|
||
; 174 : DWORD add_index = (DWORD) ( (double) number_of_bytes_to_decode * (double) 0.75 ) + 1;
|
||
|
||
00070 f2 0f 2a 44 24
|
||
2c cvtsi2sd xmm0, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
00076 f2 0f 59 05 00
|
||
00 00 00 mulsd xmm0, QWORD PTR __real@3fe8000000000000
|
||
0007e f2 48 0f 2c c0 cvttsd2si rax, xmm0
|
||
00083 ff c0 inc eax
|
||
00085 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 175 :
|
||
; 176 : destination.SetSize( add_index );
|
||
|
||
00089 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
0008d 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00094 8b d0 mov edx, eax
|
||
00096 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0009b e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 177 : add_index = 0;
|
||
|
||
000a0 c7 44 24 28 00
|
||
00 00 00 mov DWORD PTR add_index$[rsp], 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();
|
||
|
||
000a8 48 8b 4c 24 68 mov rcx, QWORD PTR source$[rsp]
|
||
000ad e8 00 00 00 00 call ?GetData@CByteArray@@QEBAPEBEXZ ; CByteArray::GetData
|
||
000b2 48 89 44 24 38 mov QWORD PTR input_buffer$[rsp], rax
|
||
$LN2@Decode:
|
||
|
||
; 184 :
|
||
; 185 : while( index < number_of_bytes_to_decode )
|
||
|
||
000b7 8b 44 24 2c mov eax, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
000bb 39 44 24 30 cmp DWORD PTR index$[rsp], eax
|
||
000bf 0f 8d 3d 03 00
|
||
00 jge $LN3@Decode
|
||
|
||
; 186 : {
|
||
; 187 : character_1 = __get_character( input_buffer, m_DecoderTable, index, number_of_bytes_to_decode );
|
||
|
||
000c5 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
000ca 48 83 c0 08 add rax, 8
|
||
000ce 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
000d3 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
000d8 48 8b d0 mov rdx, rax
|
||
000db 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
000e0 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
000e5 88 44 24 23 mov BYTE PTR character_1$[rsp], al
|
||
|
||
; 188 :
|
||
; 189 : if ( character_1 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
000e9 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
000ee 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
000f1 0f 84 78 01 00
|
||
00 je $LN5@Decode
|
||
|
||
; 190 : {
|
||
; 191 : if ( m_DecoderTable[ character_1 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
000f7 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
000fc 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00101 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
00106 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
0010b 75 11 jne SHORT $LN7@Decode
|
||
|
||
; 192 : {
|
||
; 193 : destination.RemoveAll();
|
||
|
||
0010d 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00112 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 194 : return( FALSE );
|
||
|
||
00117 33 c0 xor eax, eax
|
||
00119 e9 ff 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 );
|
||
|
||
0011e 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
00123 48 83 c0 08 add rax, 8
|
||
00127 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
0012c 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
00131 48 8b d0 mov rdx, rax
|
||
00134 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
00139 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
0013e 88 44 24 22 mov BYTE PTR character_2$[rsp], al
|
||
|
||
; 198 :
|
||
; 199 : if ( character_2 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00142 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
00147 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
0014a 0f 84 13 01 00
|
||
00 je $LN8@Decode
|
||
|
||
; 200 : {
|
||
; 201 : if ( m_DecoderTable[ character_2 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
00150 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
00155 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
0015a 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0015f 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
00164 75 11 jne SHORT $LN10@Decode
|
||
|
||
; 202 : {
|
||
; 203 : destination.RemoveAll();
|
||
|
||
00166 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0016b e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 204 : return( FALSE );
|
||
|
||
00170 33 c0 xor eax, eax
|
||
00172 e9 a6 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 );
|
||
|
||
00177 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
0017c 48 83 c0 08 add rax, 8
|
||
00180 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
00185 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
0018a 48 8b d0 mov rdx, rax
|
||
0018d 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
00192 e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
00197 88 44 24 20 mov BYTE PTR character_3$[rsp], al
|
||
|
||
; 208 :
|
||
; 209 : if ( character_3 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
0019b 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
001a0 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
001a3 0f 84 b3 00 00
|
||
00 je $LN11@Decode
|
||
|
||
; 210 : {
|
||
; 211 : if ( m_DecoderTable[ character_3 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
001a9 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
001ae 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
001b3 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
001b8 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
001bd 75 11 jne SHORT $LN13@Decode
|
||
|
||
; 212 : {
|
||
; 213 : destination.RemoveAll();
|
||
|
||
001bf 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
001c4 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 214 : return( FALSE );
|
||
|
||
001c9 33 c0 xor eax, eax
|
||
001cb e9 4d 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 );
|
||
|
||
001d0 48 8b 44 24 60 mov rax, QWORD PTR this$[rsp]
|
||
001d5 48 83 c0 08 add rax, 8
|
||
001d9 44 8b 4c 24 2c mov r9d, DWORD PTR number_of_bytes_to_decode$[rsp]
|
||
001de 4c 8d 44 24 30 lea r8, QWORD PTR index$[rsp]
|
||
001e3 48 8b d0 mov rdx, rax
|
||
001e6 48 8b 4c 24 38 mov rcx, QWORD PTR input_buffer$[rsp]
|
||
001eb e8 00 00 00 00 call ?__get_character@@YAEPEBE0AEAHH@Z ; __get_character
|
||
001f0 88 44 24 21 mov BYTE PTR character_4$[rsp], al
|
||
|
||
; 218 :
|
||
; 219 : if ( character_4 != END_OF_BASE64_ENCODED_DATA )
|
||
|
||
001f4 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
001f9 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
001fc 74 27 je SHORT $LN14@Decode
|
||
|
||
; 220 : {
|
||
; 221 : if ( m_DecoderTable[ character_4 ] == BASE64_UNKNOWN_VALUE )
|
||
|
||
001fe 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
00203 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00208 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0020d 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
|
||
00212 75 11 jne SHORT $LN15@Decode
|
||
|
||
; 222 : {
|
||
; 223 : destination.RemoveAll();
|
||
|
||
00214 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00219 e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 224 : return( FALSE );
|
||
|
||
0021e 33 c0 xor eax, eax
|
||
00220 e9 f8 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 ||
|
||
|
||
00225 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
0022a 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
0022f 74 18 je SHORT $LN17@Decode
|
||
00231 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
00236 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
0023b 74 0c je SHORT $LN17@Decode
|
||
0023d 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
00242 3d fd 00 00 00 cmp eax, 253 ; 000000fdH
|
||
00247 75 11 jne SHORT $LN16@Decode
|
||
$LN17@Decode:
|
||
|
||
; 230 : character_4 == BASE64_END_OF_BUFFER )
|
||
; 231 : {
|
||
; 232 : destination.RemoveAll();
|
||
|
||
00249 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0024e e8 00 00 00 00 call ?RemoveAll@CByteArray@@QEAAXXZ ; CByteArray::RemoveAll
|
||
|
||
; 233 : return( FALSE );
|
||
|
||
00253 33 c0 xor eax, eax
|
||
00255 e9 c3 01 00 00 jmp $LN1@Decode
|
||
$LN16@Decode:
|
||
|
||
; 234 : }
|
||
; 235 : }
|
||
|
||
0025a eb 05 jmp SHORT $LN12@Decode
|
||
$LN11@Decode:
|
||
|
||
; 236 : else
|
||
; 237 : {
|
||
; 238 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0025c c6 44 24 21 3d mov BYTE PTR character_4$[rsp], 61 ; 0000003dH
|
||
$LN12@Decode:
|
||
|
||
; 239 : }
|
||
; 240 : }
|
||
|
||
00261 eb 0a jmp SHORT $LN9@Decode
|
||
$LN8@Decode:
|
||
|
||
; 241 : else
|
||
; 242 : {
|
||
; 243 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00263 c6 44 24 20 3d mov BYTE PTR character_3$[rsp], 61 ; 0000003dH
|
||
|
||
; 244 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00268 c6 44 24 21 3d mov BYTE PTR character_4$[rsp], 61 ; 0000003dH
|
||
$LN9@Decode:
|
||
|
||
; 245 : }
|
||
; 246 : }
|
||
|
||
0026d eb 0f jmp SHORT $LN6@Decode
|
||
$LN5@Decode:
|
||
|
||
; 247 : else
|
||
; 248 : {
|
||
; 249 : character_2 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
0026f c6 44 24 22 3d mov BYTE PTR character_2$[rsp], 61 ; 0000003dH
|
||
|
||
; 250 : character_3 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00274 c6 44 24 20 3d mov BYTE PTR character_3$[rsp], 61 ; 0000003dH
|
||
|
||
; 251 : character_4 = END_OF_BASE64_ENCODED_DATA;
|
||
|
||
00279 c6 44 24 21 3d mov BYTE PTR character_4$[rsp], 61 ; 0000003dH
|
||
$LN6@Decode:
|
||
|
||
; 252 : }
|
||
; 253 :
|
||
; 254 : if ( character_1 == END_OF_BASE64_ENCODED_DATA ||
|
||
|
||
0027e 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
00283 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00286 74 0a je SHORT $LN19@Decode
|
||
00288 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
0028d 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00290 75 21 jne SHORT $LN18@Decode
|
||
$LN19@Decode:
|
||
|
||
; 255 : character_2 == END_OF_BASE64_ENCODED_DATA )
|
||
; 256 : {
|
||
; 257 : destination.SetSize( add_index );
|
||
|
||
00292 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00296 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
0029d 8b d0 mov edx, eax
|
||
0029f 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
002a4 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 258 : return( TRUE );
|
||
|
||
002a9 b8 01 00 00 00 mov eax, 1
|
||
002ae e9 6a 01 00 00 jmp $LN1@Decode
|
||
$LN18@Decode:
|
||
|
||
; 259 : }
|
||
; 260 :
|
||
; 261 : character_1 = m_DecoderTable[ character_1 ];
|
||
|
||
002b3 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
002b8 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
002bd 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
002c2 88 44 24 23 mov BYTE PTR character_1$[rsp], al
|
||
|
||
; 262 : character_2 = m_DecoderTable[ character_2 ];
|
||
|
||
002c6 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
002cb 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
002d0 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
002d5 88 44 24 22 mov BYTE PTR character_2$[rsp], al
|
||
|
||
; 263 :
|
||
; 264 : byte_to_add = static_cast< BYTE>( ( ( character_1 << 2 ) | ( ( character_2 & 0x30 ) >> 4 ) ) );
|
||
|
||
002d9 0f b6 44 24 23 movzx eax, BYTE PTR character_1$[rsp]
|
||
002de c1 e0 02 shl eax, 2
|
||
002e1 0f b6 4c 24 22 movzx ecx, BYTE PTR character_2$[rsp]
|
||
002e6 83 e1 30 and ecx, 48 ; 00000030H
|
||
002e9 c1 f9 04 sar ecx, 4
|
||
002ec 0b c1 or eax, ecx
|
||
002ee 88 44 24 24 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 265 :
|
||
; 266 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
002f2 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
002f6 44 0f b6 44 24
|
||
24 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
002fc 8b d0 mov edx, eax
|
||
002fe 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00303 e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 267 : add_index++;
|
||
|
||
00308 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
0030c ff c0 inc eax
|
||
0030e 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 268 :
|
||
; 269 : if ( character_3 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
00312 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
00317 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
0031a 75 21 jne SHORT $LN20@Decode
|
||
|
||
; 270 : {
|
||
; 271 : destination.SetSize( add_index );
|
||
|
||
0031c 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00320 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00327 8b d0 mov edx, eax
|
||
00329 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0032e e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 272 : return( TRUE );
|
||
|
||
00333 b8 01 00 00 00 mov eax, 1
|
||
00338 e9 e0 00 00 00 jmp $LN1@Decode
|
||
$LN20@Decode:
|
||
|
||
; 273 : }
|
||
; 274 :
|
||
; 275 : character_3 = m_DecoderTable[ character_3 ];
|
||
|
||
0033d 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
00342 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
00347 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
0034c 88 44 24 20 mov BYTE PTR character_3$[rsp], al
|
||
|
||
; 276 :
|
||
; 277 : byte_to_add = static_cast< BYTE >( ( ( ( ( character_2 & 0x0F ) << 4 ) | ( ( character_3 & 0x3C ) >> 2 ) ) ) );
|
||
|
||
00350 0f b6 44 24 22 movzx eax, BYTE PTR character_2$[rsp]
|
||
00355 83 e0 0f and eax, 15
|
||
00358 c1 e0 04 shl eax, 4
|
||
0035b 0f b6 4c 24 20 movzx ecx, BYTE PTR character_3$[rsp]
|
||
00360 83 e1 3c and ecx, 60 ; 0000003cH
|
||
00363 c1 f9 02 sar ecx, 2
|
||
00366 0b c1 or eax, ecx
|
||
00368 88 44 24 24 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 278 :
|
||
; 279 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
0036c 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00370 44 0f b6 44 24
|
||
24 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
00376 8b d0 mov edx, eax
|
||
00378 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
0037d e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 280 : add_index++;
|
||
|
||
00382 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00386 ff c0 inc eax
|
||
00388 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 281 :
|
||
; 282 : if ( character_4 == END_OF_BASE64_ENCODED_DATA )
|
||
|
||
0038c 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
00391 83 f8 3d cmp eax, 61 ; 0000003dH
|
||
00394 75 1e jne SHORT $LN21@Decode
|
||
|
||
; 283 : {
|
||
; 284 : destination.SetSize( add_index );
|
||
|
||
00396 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
0039a 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
003a1 8b d0 mov edx, eax
|
||
003a3 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
003a8 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 285 : return( TRUE );
|
||
|
||
003ad b8 01 00 00 00 mov eax, 1
|
||
003b2 eb 69 jmp SHORT $LN1@Decode
|
||
$LN21@Decode:
|
||
|
||
; 286 : }
|
||
; 287 :
|
||
; 288 : character_4 = m_DecoderTable[ character_4 ];
|
||
|
||
003b4 0f b6 44 24 21 movzx eax, BYTE PTR character_4$[rsp]
|
||
003b9 48 8b 4c 24 60 mov rcx, QWORD PTR this$[rsp]
|
||
003be 0f b6 44 01 08 movzx eax, BYTE PTR [rcx+rax+8]
|
||
003c3 88 44 24 21 mov BYTE PTR character_4$[rsp], al
|
||
|
||
; 289 :
|
||
; 290 : byte_to_add = static_cast< BYTE >( ( ( ( character_3 & 0x03 ) << 6 ) | character_4 ) );
|
||
|
||
003c7 0f b6 44 24 20 movzx eax, BYTE PTR character_3$[rsp]
|
||
003cc 83 e0 03 and eax, 3
|
||
003cf c1 e0 06 shl eax, 6
|
||
003d2 0f b6 4c 24 21 movzx ecx, BYTE PTR character_4$[rsp]
|
||
003d7 0b c1 or eax, ecx
|
||
003d9 88 44 24 24 mov BYTE PTR byte_to_add$[rsp], al
|
||
|
||
; 291 :
|
||
; 292 : destination.SetAt( add_index, byte_to_add );
|
||
|
||
003dd 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
003e1 44 0f b6 44 24
|
||
24 movzx r8d, BYTE PTR byte_to_add$[rsp]
|
||
003e7 8b d0 mov edx, eax
|
||
003e9 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
003ee e8 00 00 00 00 call ?SetAt@CByteArray@@QEAAX_JE@Z ; CByteArray::SetAt
|
||
|
||
; 293 : add_index++;
|
||
|
||
003f3 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
003f7 ff c0 inc eax
|
||
003f9 89 44 24 28 mov DWORD PTR add_index$[rsp], eax
|
||
|
||
; 294 : }
|
||
|
||
003fd e9 b5 fc ff ff jmp $LN2@Decode
|
||
$LN3@Decode:
|
||
|
||
; 295 :
|
||
; 296 : destination.SetSize( add_index );
|
||
|
||
00402 8b 44 24 28 mov eax, DWORD PTR add_index$[rsp]
|
||
00406 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
0040d 8b d0 mov edx, eax
|
||
0040f 48 8b 4c 24 70 mov rcx, QWORD PTR destination$[rsp]
|
||
00414 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
|
||
; 297 :
|
||
; 298 : return( return_value );
|
||
|
||
00419 8b 44 24 40 mov eax, DWORD PTR return_value$[rsp]
|
||
$LN1@Decode:
|
||
|
||
; 299 : }
|
||
|
||
0041d 48 83 c4 58 add rsp, 88 ; 00000058H
|
||
00421 c3 ret 0
|
||
?Decode@CBase64Coding@@UEAAHAEBVCByteArray@@AEAV2@@Z ENDP ; CBase64Coding::Decode
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ??1CBase64Coding@@UEAA@XZ
|
||
_TEXT SEGMENT
|
||
this$ = 8
|
||
??1CBase64Coding@@UEAA@XZ PROC ; CBase64Coding::~CBase64Coding, COMDAT
|
||
|
||
; 66 : {
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_7CBase64Coding@@6B@
|
||
00011 48 89 08 mov QWORD PTR [rax], rcx
|
||
|
||
; 67 : }
|
||
|
||
00014 c3 ret 0
|
||
??1CBase64Coding@@UEAA@XZ ENDP ; CBase64Coding::~CBase64Coding
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ??0CBase64Coding@@QEAA@XZ
|
||
_TEXT SEGMENT
|
||
this$ = 8
|
||
??0CBase64Coding@@QEAA@XZ PROC ; CBase64Coding::CBase64Coding, COMDAT
|
||
|
||
; 61 : {
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8d 0d 00 00
|
||
00 00 lea rcx, OFFSET FLAT:??_7CBase64Coding@@6B@
|
||
00011 48 89 08 mov QWORD PTR [rax], rcx
|
||
|
||
; 62 : m_DecoderTable[ 0 ] = 0x00;
|
||
|
||
00014 b8 01 00 00 00 mov eax, 1
|
||
00019 48 6b c0 00 imul rax, rax, 0
|
||
0001d 48 8b 4c 24 08 mov rcx, QWORD PTR this$[rsp]
|
||
00022 c6 44 01 08 00 mov BYTE PTR [rcx+rax+8], 0
|
||
|
||
; 63 : }
|
||
|
||
00027 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0002c c3 ret 0
|
||
??0CBase64Coding@@QEAA@XZ ENDP ; CBase64Coding::CBase64Coding
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ
|
||
_TEXT SEGMENT
|
||
this$ = 48
|
||
?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ PROC ; CBase64Coding::m_InitializeDecoderTable, COMDAT
|
||
|
||
; 70 : {
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 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 ) );
|
||
|
||
00009 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp]
|
||
0000e 48 83 c0 08 add rax, 8
|
||
00012 41 b8 00 01 00
|
||
00 mov r8d, 256 ; 00000100H
|
||
00018 ba ff 00 00 00 mov edx, 255 ; 000000ffH
|
||
0001d 48 8b c8 mov rcx, rax
|
||
00020 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;
|
||
|
||
00025 b8 01 00 00 00 mov eax, 1
|
||
0002a 48 6b c0 2b imul rax, rax, 43 ; 0000002bH
|
||
0002e 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00033 c6 44 01 08 3e mov BYTE PTR [rcx+rax+8], 62 ; 0000003eH
|
||
|
||
; 82 : m_DecoderTable[ 47 ] = 63;
|
||
|
||
00038 b8 01 00 00 00 mov eax, 1
|
||
0003d 48 6b c0 2f imul rax, rax, 47 ; 0000002fH
|
||
00041 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00046 c6 44 01 08 3f mov BYTE PTR [rcx+rax+8], 63 ; 0000003fH
|
||
|
||
; 83 : m_DecoderTable[ 48 ] = 52;
|
||
|
||
0004b b8 01 00 00 00 mov eax, 1
|
||
00050 48 6b c0 30 imul rax, rax, 48 ; 00000030H
|
||
00054 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00059 c6 44 01 08 34 mov BYTE PTR [rcx+rax+8], 52 ; 00000034H
|
||
|
||
; 84 : m_DecoderTable[ 49 ] = 53;
|
||
|
||
0005e b8 01 00 00 00 mov eax, 1
|
||
00063 48 6b c0 31 imul rax, rax, 49 ; 00000031H
|
||
00067 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0006c c6 44 01 08 35 mov BYTE PTR [rcx+rax+8], 53 ; 00000035H
|
||
|
||
; 85 : m_DecoderTable[ 50 ] = 54;
|
||
|
||
00071 b8 01 00 00 00 mov eax, 1
|
||
00076 48 6b c0 32 imul rax, rax, 50 ; 00000032H
|
||
0007a 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
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 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00092 c6 44 01 08 37 mov BYTE PTR [rcx+rax+8], 55 ; 00000037H
|
||
|
||
; 87 : m_DecoderTable[ 52 ] = 56;
|
||
|
||
00097 b8 01 00 00 00 mov eax, 1
|
||
0009c 48 6b c0 34 imul rax, rax, 52 ; 00000034H
|
||
000a0 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
000a5 c6 44 01 08 38 mov BYTE PTR [rcx+rax+8], 56 ; 00000038H
|
||
|
||
; 88 : m_DecoderTable[ 53 ] = 57;
|
||
|
||
000aa b8 01 00 00 00 mov eax, 1
|
||
000af 48 6b c0 35 imul rax, rax, 53 ; 00000035H
|
||
000b3 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
000b8 c6 44 01 08 39 mov BYTE PTR [rcx+rax+8], 57 ; 00000039H
|
||
|
||
; 89 : m_DecoderTable[ 54 ] = 58;
|
||
|
||
000bd b8 01 00 00 00 mov eax, 1
|
||
000c2 48 6b c0 36 imul rax, rax, 54 ; 00000036H
|
||
000c6 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
000cb c6 44 01 08 3a mov BYTE PTR [rcx+rax+8], 58 ; 0000003aH
|
||
|
||
; 90 : m_DecoderTable[ 55 ] = 59;
|
||
|
||
000d0 b8 01 00 00 00 mov eax, 1
|
||
000d5 48 6b c0 37 imul rax, rax, 55 ; 00000037H
|
||
000d9 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
000de c6 44 01 08 3b mov BYTE PTR [rcx+rax+8], 59 ; 0000003bH
|
||
|
||
; 91 : m_DecoderTable[ 56 ] = 60;
|
||
|
||
000e3 b8 01 00 00 00 mov eax, 1
|
||
000e8 48 6b c0 38 imul rax, rax, 56 ; 00000038H
|
||
000ec 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
000f1 c6 44 01 08 3c mov BYTE PTR [rcx+rax+8], 60 ; 0000003cH
|
||
|
||
; 92 : m_DecoderTable[ 57 ] = 61;
|
||
|
||
000f6 b8 01 00 00 00 mov eax, 1
|
||
000fb 48 6b c0 39 imul rax, rax, 57 ; 00000039H
|
||
000ff 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00104 c6 44 01 08 3d mov BYTE PTR [rcx+rax+8], 61 ; 0000003dH
|
||
|
||
; 93 : m_DecoderTable[ 65 ] = 0;
|
||
|
||
00109 b8 01 00 00 00 mov eax, 1
|
||
0010e 48 6b c0 41 imul rax, rax, 65 ; 00000041H
|
||
00112 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00117 c6 44 01 08 00 mov BYTE PTR [rcx+rax+8], 0
|
||
|
||
; 94 : m_DecoderTable[ 66 ] = 1;
|
||
|
||
0011c b8 01 00 00 00 mov eax, 1
|
||
00121 48 6b c0 42 imul rax, rax, 66 ; 00000042H
|
||
00125 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0012a c6 44 01 08 01 mov BYTE PTR [rcx+rax+8], 1
|
||
|
||
; 95 : m_DecoderTable[ 67 ] = 2;
|
||
|
||
0012f b8 01 00 00 00 mov eax, 1
|
||
00134 48 6b c0 43 imul rax, rax, 67 ; 00000043H
|
||
00138 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0013d c6 44 01 08 02 mov BYTE PTR [rcx+rax+8], 2
|
||
|
||
; 96 : m_DecoderTable[ 68 ] = 3;
|
||
|
||
00142 b8 01 00 00 00 mov eax, 1
|
||
00147 48 6b c0 44 imul rax, rax, 68 ; 00000044H
|
||
0014b 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00150 c6 44 01 08 03 mov BYTE PTR [rcx+rax+8], 3
|
||
|
||
; 97 : m_DecoderTable[ 69 ] = 4;
|
||
|
||
00155 b8 01 00 00 00 mov eax, 1
|
||
0015a 48 6b c0 45 imul rax, rax, 69 ; 00000045H
|
||
0015e 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00163 c6 44 01 08 04 mov BYTE PTR [rcx+rax+8], 4
|
||
|
||
; 98 : m_DecoderTable[ 70 ] = 5;
|
||
|
||
00168 b8 01 00 00 00 mov eax, 1
|
||
0016d 48 6b c0 46 imul rax, rax, 70 ; 00000046H
|
||
00171 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00176 c6 44 01 08 05 mov BYTE PTR [rcx+rax+8], 5
|
||
|
||
; 99 : m_DecoderTable[ 71 ] = 6;
|
||
|
||
0017b b8 01 00 00 00 mov eax, 1
|
||
00180 48 6b c0 47 imul rax, rax, 71 ; 00000047H
|
||
00184 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00189 c6 44 01 08 06 mov BYTE PTR [rcx+rax+8], 6
|
||
|
||
; 100 : m_DecoderTable[ 72 ] = 7;
|
||
|
||
0018e b8 01 00 00 00 mov eax, 1
|
||
00193 48 6b c0 48 imul rax, rax, 72 ; 00000048H
|
||
00197 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0019c c6 44 01 08 07 mov BYTE PTR [rcx+rax+8], 7
|
||
|
||
; 101 : m_DecoderTable[ 73 ] = 8;
|
||
|
||
001a1 b8 01 00 00 00 mov eax, 1
|
||
001a6 48 6b c0 49 imul rax, rax, 73 ; 00000049H
|
||
001aa 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
001af c6 44 01 08 08 mov BYTE PTR [rcx+rax+8], 8
|
||
|
||
; 102 : m_DecoderTable[ 74 ] = 9;
|
||
|
||
001b4 b8 01 00 00 00 mov eax, 1
|
||
001b9 48 6b c0 4a imul rax, rax, 74 ; 0000004aH
|
||
001bd 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
001c2 c6 44 01 08 09 mov BYTE PTR [rcx+rax+8], 9
|
||
|
||
; 103 : m_DecoderTable[ 75 ] = 10;
|
||
|
||
001c7 b8 01 00 00 00 mov eax, 1
|
||
001cc 48 6b c0 4b imul rax, rax, 75 ; 0000004bH
|
||
001d0 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
001d5 c6 44 01 08 0a mov BYTE PTR [rcx+rax+8], 10
|
||
|
||
; 104 : m_DecoderTable[ 76 ] = 11;
|
||
|
||
001da b8 01 00 00 00 mov eax, 1
|
||
001df 48 6b c0 4c imul rax, rax, 76 ; 0000004cH
|
||
001e3 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
001e8 c6 44 01 08 0b mov BYTE PTR [rcx+rax+8], 11
|
||
|
||
; 105 : m_DecoderTable[ 77 ] = 12;
|
||
|
||
001ed b8 01 00 00 00 mov eax, 1
|
||
001f2 48 6b c0 4d imul rax, rax, 77 ; 0000004dH
|
||
001f6 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
001fb c6 44 01 08 0c mov BYTE PTR [rcx+rax+8], 12
|
||
|
||
; 106 : m_DecoderTable[ 78 ] = 13;
|
||
|
||
00200 b8 01 00 00 00 mov eax, 1
|
||
00205 48 6b c0 4e imul rax, rax, 78 ; 0000004eH
|
||
00209 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0020e c6 44 01 08 0d mov BYTE PTR [rcx+rax+8], 13
|
||
|
||
; 107 : m_DecoderTable[ 79 ] = 14;
|
||
|
||
00213 b8 01 00 00 00 mov eax, 1
|
||
00218 48 6b c0 4f imul rax, rax, 79 ; 0000004fH
|
||
0021c 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00221 c6 44 01 08 0e mov BYTE PTR [rcx+rax+8], 14
|
||
|
||
; 108 : m_DecoderTable[ 80 ] = 15;
|
||
|
||
00226 b8 01 00 00 00 mov eax, 1
|
||
0022b 48 6b c0 50 imul rax, rax, 80 ; 00000050H
|
||
0022f 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00234 c6 44 01 08 0f mov BYTE PTR [rcx+rax+8], 15
|
||
|
||
; 109 : m_DecoderTable[ 81 ] = 16;
|
||
|
||
00239 b8 01 00 00 00 mov eax, 1
|
||
0023e 48 6b c0 51 imul rax, rax, 81 ; 00000051H
|
||
00242 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00247 c6 44 01 08 10 mov BYTE PTR [rcx+rax+8], 16
|
||
|
||
; 110 : m_DecoderTable[ 82 ] = 17;
|
||
|
||
0024c b8 01 00 00 00 mov eax, 1
|
||
00251 48 6b c0 52 imul rax, rax, 82 ; 00000052H
|
||
00255 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0025a c6 44 01 08 11 mov BYTE PTR [rcx+rax+8], 17
|
||
|
||
; 111 : m_DecoderTable[ 83 ] = 18;
|
||
|
||
0025f b8 01 00 00 00 mov eax, 1
|
||
00264 48 6b c0 53 imul rax, rax, 83 ; 00000053H
|
||
00268 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0026d c6 44 01 08 12 mov BYTE PTR [rcx+rax+8], 18
|
||
|
||
; 112 : m_DecoderTable[ 84 ] = 19;
|
||
|
||
00272 b8 01 00 00 00 mov eax, 1
|
||
00277 48 6b c0 54 imul rax, rax, 84 ; 00000054H
|
||
0027b 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00280 c6 44 01 08 13 mov BYTE PTR [rcx+rax+8], 19
|
||
|
||
; 113 : m_DecoderTable[ 85 ] = 20;
|
||
|
||
00285 b8 01 00 00 00 mov eax, 1
|
||
0028a 48 6b c0 55 imul rax, rax, 85 ; 00000055H
|
||
0028e 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00293 c6 44 01 08 14 mov BYTE PTR [rcx+rax+8], 20
|
||
|
||
; 114 : m_DecoderTable[ 86 ] = 21;
|
||
|
||
00298 b8 01 00 00 00 mov eax, 1
|
||
0029d 48 6b c0 56 imul rax, rax, 86 ; 00000056H
|
||
002a1 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
002a6 c6 44 01 08 15 mov BYTE PTR [rcx+rax+8], 21
|
||
|
||
; 115 : m_DecoderTable[ 87 ] = 22;
|
||
|
||
002ab b8 01 00 00 00 mov eax, 1
|
||
002b0 48 6b c0 57 imul rax, rax, 87 ; 00000057H
|
||
002b4 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
002b9 c6 44 01 08 16 mov BYTE PTR [rcx+rax+8], 22
|
||
|
||
; 116 : m_DecoderTable[ 88 ] = 23;
|
||
|
||
002be b8 01 00 00 00 mov eax, 1
|
||
002c3 48 6b c0 58 imul rax, rax, 88 ; 00000058H
|
||
002c7 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
002cc c6 44 01 08 17 mov BYTE PTR [rcx+rax+8], 23
|
||
|
||
; 117 : m_DecoderTable[ 89 ] = 24;
|
||
|
||
002d1 b8 01 00 00 00 mov eax, 1
|
||
002d6 48 6b c0 59 imul rax, rax, 89 ; 00000059H
|
||
002da 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
002df c6 44 01 08 18 mov BYTE PTR [rcx+rax+8], 24
|
||
|
||
; 118 : m_DecoderTable[ 90 ] = 25;
|
||
|
||
002e4 b8 01 00 00 00 mov eax, 1
|
||
002e9 48 6b c0 5a imul rax, rax, 90 ; 0000005aH
|
||
002ed 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
002f2 c6 44 01 08 19 mov BYTE PTR [rcx+rax+8], 25
|
||
|
||
; 119 : m_DecoderTable[ 97 ] = 26;
|
||
|
||
002f7 b8 01 00 00 00 mov eax, 1
|
||
002fc 48 6b c0 61 imul rax, rax, 97 ; 00000061H
|
||
00300 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00305 c6 44 01 08 1a mov BYTE PTR [rcx+rax+8], 26
|
||
|
||
; 120 : m_DecoderTable[ 98 ] = 27;
|
||
|
||
0030a b8 01 00 00 00 mov eax, 1
|
||
0030f 48 6b c0 62 imul rax, rax, 98 ; 00000062H
|
||
00313 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00318 c6 44 01 08 1b mov BYTE PTR [rcx+rax+8], 27
|
||
|
||
; 121 : m_DecoderTable[ 99 ] = 28;
|
||
|
||
0031d b8 01 00 00 00 mov eax, 1
|
||
00322 48 6b c0 63 imul rax, rax, 99 ; 00000063H
|
||
00326 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0032b c6 44 01 08 1c mov BYTE PTR [rcx+rax+8], 28
|
||
|
||
; 122 : m_DecoderTable[ 100 ] = 29;
|
||
|
||
00330 b8 01 00 00 00 mov eax, 1
|
||
00335 48 6b c0 64 imul rax, rax, 100 ; 00000064H
|
||
00339 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0033e c6 44 01 08 1d mov BYTE PTR [rcx+rax+8], 29
|
||
|
||
; 123 : m_DecoderTable[ 101 ] = 30;
|
||
|
||
00343 b8 01 00 00 00 mov eax, 1
|
||
00348 48 6b c0 65 imul rax, rax, 101 ; 00000065H
|
||
0034c 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00351 c6 44 01 08 1e mov BYTE PTR [rcx+rax+8], 30
|
||
|
||
; 124 : m_DecoderTable[ 102 ] = 31;
|
||
|
||
00356 b8 01 00 00 00 mov eax, 1
|
||
0035b 48 6b c0 66 imul rax, rax, 102 ; 00000066H
|
||
0035f 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00364 c6 44 01 08 1f mov BYTE PTR [rcx+rax+8], 31
|
||
|
||
; 125 : m_DecoderTable[ 103 ] = 32;
|
||
|
||
00369 b8 01 00 00 00 mov eax, 1
|
||
0036e 48 6b c0 67 imul rax, rax, 103 ; 00000067H
|
||
00372 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00377 c6 44 01 08 20 mov BYTE PTR [rcx+rax+8], 32 ; 00000020H
|
||
|
||
; 126 : m_DecoderTable[ 104 ] = 33;
|
||
|
||
0037c b8 01 00 00 00 mov eax, 1
|
||
00381 48 6b c0 68 imul rax, rax, 104 ; 00000068H
|
||
00385 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0038a c6 44 01 08 21 mov BYTE PTR [rcx+rax+8], 33 ; 00000021H
|
||
|
||
; 127 : m_DecoderTable[ 105 ] = 34;
|
||
|
||
0038f b8 01 00 00 00 mov eax, 1
|
||
00394 48 6b c0 69 imul rax, rax, 105 ; 00000069H
|
||
00398 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0039d c6 44 01 08 22 mov BYTE PTR [rcx+rax+8], 34 ; 00000022H
|
||
|
||
; 128 : m_DecoderTable[ 106 ] = 35;
|
||
|
||
003a2 b8 01 00 00 00 mov eax, 1
|
||
003a7 48 6b c0 6a imul rax, rax, 106 ; 0000006aH
|
||
003ab 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
003b0 c6 44 01 08 23 mov BYTE PTR [rcx+rax+8], 35 ; 00000023H
|
||
|
||
; 129 : m_DecoderTable[ 107 ] = 36;
|
||
|
||
003b5 b8 01 00 00 00 mov eax, 1
|
||
003ba 48 6b c0 6b imul rax, rax, 107 ; 0000006bH
|
||
003be 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
003c3 c6 44 01 08 24 mov BYTE PTR [rcx+rax+8], 36 ; 00000024H
|
||
|
||
; 130 : m_DecoderTable[ 108 ] = 37;
|
||
|
||
003c8 b8 01 00 00 00 mov eax, 1
|
||
003cd 48 6b c0 6c imul rax, rax, 108 ; 0000006cH
|
||
003d1 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
003d6 c6 44 01 08 25 mov BYTE PTR [rcx+rax+8], 37 ; 00000025H
|
||
|
||
; 131 : m_DecoderTable[ 109 ] = 38;
|
||
|
||
003db b8 01 00 00 00 mov eax, 1
|
||
003e0 48 6b c0 6d imul rax, rax, 109 ; 0000006dH
|
||
003e4 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
003e9 c6 44 01 08 26 mov BYTE PTR [rcx+rax+8], 38 ; 00000026H
|
||
|
||
; 132 : m_DecoderTable[ 110 ] = 39;
|
||
|
||
003ee b8 01 00 00 00 mov eax, 1
|
||
003f3 48 6b c0 6e imul rax, rax, 110 ; 0000006eH
|
||
003f7 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
003fc c6 44 01 08 27 mov BYTE PTR [rcx+rax+8], 39 ; 00000027H
|
||
|
||
; 133 : m_DecoderTable[ 111 ] = 40;
|
||
|
||
00401 b8 01 00 00 00 mov eax, 1
|
||
00406 48 6b c0 6f imul rax, rax, 111 ; 0000006fH
|
||
0040a 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0040f c6 44 01 08 28 mov BYTE PTR [rcx+rax+8], 40 ; 00000028H
|
||
|
||
; 134 : m_DecoderTable[ 112 ] = 41;
|
||
|
||
00414 b8 01 00 00 00 mov eax, 1
|
||
00419 48 6b c0 70 imul rax, rax, 112 ; 00000070H
|
||
0041d 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00422 c6 44 01 08 29 mov BYTE PTR [rcx+rax+8], 41 ; 00000029H
|
||
|
||
; 135 : m_DecoderTable[ 113 ] = 42;
|
||
|
||
00427 b8 01 00 00 00 mov eax, 1
|
||
0042c 48 6b c0 71 imul rax, rax, 113 ; 00000071H
|
||
00430 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00435 c6 44 01 08 2a mov BYTE PTR [rcx+rax+8], 42 ; 0000002aH
|
||
|
||
; 136 : m_DecoderTable[ 114 ] = 43;
|
||
|
||
0043a b8 01 00 00 00 mov eax, 1
|
||
0043f 48 6b c0 72 imul rax, rax, 114 ; 00000072H
|
||
00443 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00448 c6 44 01 08 2b mov BYTE PTR [rcx+rax+8], 43 ; 0000002bH
|
||
|
||
; 137 : m_DecoderTable[ 115 ] = 44;
|
||
|
||
0044d b8 01 00 00 00 mov eax, 1
|
||
00452 48 6b c0 73 imul rax, rax, 115 ; 00000073H
|
||
00456 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0045b c6 44 01 08 2c mov BYTE PTR [rcx+rax+8], 44 ; 0000002cH
|
||
|
||
; 138 : m_DecoderTable[ 116 ] = 45;
|
||
|
||
00460 b8 01 00 00 00 mov eax, 1
|
||
00465 48 6b c0 74 imul rax, rax, 116 ; 00000074H
|
||
00469 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0046e c6 44 01 08 2d mov BYTE PTR [rcx+rax+8], 45 ; 0000002dH
|
||
|
||
; 139 : m_DecoderTable[ 117 ] = 46;
|
||
|
||
00473 b8 01 00 00 00 mov eax, 1
|
||
00478 48 6b c0 75 imul rax, rax, 117 ; 00000075H
|
||
0047c 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00481 c6 44 01 08 2e mov BYTE PTR [rcx+rax+8], 46 ; 0000002eH
|
||
|
||
; 140 : m_DecoderTable[ 118 ] = 47;
|
||
|
||
00486 b8 01 00 00 00 mov eax, 1
|
||
0048b 48 6b c0 76 imul rax, rax, 118 ; 00000076H
|
||
0048f 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00494 c6 44 01 08 2f mov BYTE PTR [rcx+rax+8], 47 ; 0000002fH
|
||
|
||
; 141 : m_DecoderTable[ 119 ] = 48;
|
||
|
||
00499 b8 01 00 00 00 mov eax, 1
|
||
0049e 48 6b c0 77 imul rax, rax, 119 ; 00000077H
|
||
004a2 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
004a7 c6 44 01 08 30 mov BYTE PTR [rcx+rax+8], 48 ; 00000030H
|
||
|
||
; 142 : m_DecoderTable[ 120 ] = 49;
|
||
|
||
004ac b8 01 00 00 00 mov eax, 1
|
||
004b1 48 6b c0 78 imul rax, rax, 120 ; 00000078H
|
||
004b5 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
004ba c6 44 01 08 31 mov BYTE PTR [rcx+rax+8], 49 ; 00000031H
|
||
|
||
; 143 : m_DecoderTable[ 121 ] = 50;
|
||
|
||
004bf b8 01 00 00 00 mov eax, 1
|
||
004c4 48 6b c0 79 imul rax, rax, 121 ; 00000079H
|
||
004c8 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
004cd c6 44 01 08 32 mov BYTE PTR [rcx+rax+8], 50 ; 00000032H
|
||
|
||
; 144 : m_DecoderTable[ 122 ] = 51;
|
||
|
||
004d2 b8 01 00 00 00 mov eax, 1
|
||
004d7 48 6b c0 7a imul rax, rax, 122 ; 0000007aH
|
||
004db 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
004e0 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!)
|
||
|
||
004e5 b8 01 00 00 00 mov eax, 1
|
||
004ea 48 6b c0 09 imul rax, rax, 9
|
||
004ee 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
004f3 c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 150 : m_DecoderTable[ 32 ] = BASE64_IGNORABLE_CHARACTER; // Space character
|
||
|
||
004f8 b8 01 00 00 00 mov eax, 1
|
||
004fd 48 6b c0 20 imul rax, rax, 32 ; 00000020H
|
||
00501 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00506 c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 151 : m_DecoderTable[ CARRIAGE_RETURN ] = BASE64_IGNORABLE_CHARACTER;
|
||
|
||
0050b b8 01 00 00 00 mov eax, 1
|
||
00510 48 6b c0 0d imul rax, rax, 13
|
||
00514 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00519 c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 152 : m_DecoderTable[ LINE_FEED ] = BASE64_IGNORABLE_CHARACTER;
|
||
|
||
0051e b8 01 00 00 00 mov eax, 1
|
||
00523 48 6b c0 0a imul rax, rax, 10
|
||
00527 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0052c c6 44 01 08 fe mov BYTE PTR [rcx+rax+8], 254 ; 000000feH
|
||
|
||
; 153 : }
|
||
|
||
00531 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00535 c3 ret 0
|
||
?m_InitializeDecoderTable@CBase64Coding@@MEAAXXZ ENDP ; CBase64Coding::m_InitializeDecoderTable
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
nLength$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 868 : ATLASSERT( nLength >= 0 );
|
||
; 869 : ATLASSERT( nLength <= GetData()->nAllocLength );
|
||
; 870 :
|
||
; 871 : if( nLength < 0 || nLength > GetData()->nAllocLength)
|
||
|
||
0000d 83 7c 24 38 00 cmp DWORD PTR nLength$[rsp], 0
|
||
00012 7c 13 jl SHORT $LN3@SetLength
|
||
00014 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00019 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0001e 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00021 39 44 24 38 cmp DWORD PTR nLength$[rsp], eax
|
||
00025 7e 0a jle SHORT $LN2@SetLength
|
||
$LN3@SetLength:
|
||
|
||
; 872 : AtlThrow(E_INVALIDARG);
|
||
|
||
00027 b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
0002c e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@SetLength:
|
||
|
||
; 873 :
|
||
; 874 : GetData()->nDataLength = nLength;
|
||
|
||
00031 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00036 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0003b 8b 4c 24 38 mov ecx, DWORD PTR nLength$[rsp]
|
||
0003f 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 875 : m_pszData[nLength] = 0;
|
||
|
||
00042 48 63 44 24 38 movsxd rax, DWORD PTR nLength$[rsp]
|
||
00047 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0004c 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
0004f c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
||
$LN4@SetLength:
|
||
|
||
; 876 : }
|
||
|
||
00053 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00057 c3 ret 0
|
||
?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,0>::SetLength
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 32
|
||
pStringMgr$ = 40
|
||
pNewData$ = 48
|
||
tv78 = 56
|
||
this$ = 80
|
||
nLength$ = 88
|
||
?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 48 83 ec 48 sub rsp, 72 ; 00000048H
|
||
|
||
; 850 : CStringData* pOldData = GetData();
|
||
|
||
0000d 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00017 48 89 44 24 20 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 851 : ATLASSERT( pOldData->nAllocLength < nLength );
|
||
; 852 : IAtlStringMgr* pStringMgr = pOldData->pStringMgr;
|
||
|
||
0001c 48 8b 44 24 20 mov rax, QWORD PTR pOldData$[rsp]
|
||
00021 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00024 48 89 44 24 28 mov QWORD PTR pStringMgr$[rsp], rax
|
||
|
||
; 853 : if ( pOldData->nAllocLength >= nLength || nLength <= 0)
|
||
|
||
00029 48 8b 44 24 20 mov rax, QWORD PTR pOldData$[rsp]
|
||
0002e 8b 4c 24 58 mov ecx, DWORD PTR nLength$[rsp]
|
||
00032 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
00035 7d 07 jge SHORT $LN3@Reallocate
|
||
00037 83 7c 24 58 00 cmp DWORD PTR nLength$[rsp], 0
|
||
0003c 7f 07 jg SHORT $LN2@Reallocate
|
||
$LN3@Reallocate:
|
||
|
||
; 854 : {
|
||
; 855 : ThrowMemoryException();
|
||
|
||
0003e e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
|
||
; 856 : return;
|
||
|
||
00043 eb 4b jmp SHORT $LN1@Reallocate
|
||
$LN2@Reallocate:
|
||
|
||
; 857 : }
|
||
; 858 : CStringData* pNewData = pStringMgr->Reallocate( pOldData, nLength, sizeof( XCHAR ) );
|
||
|
||
00045 48 8b 44 24 28 mov rax, QWORD PTR pStringMgr$[rsp]
|
||
0004a 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004d 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00051 48 89 44 24 38 mov QWORD PTR tv78[rsp], rax
|
||
00056 41 b9 01 00 00
|
||
00 mov r9d, 1
|
||
0005c 44 8b 44 24 58 mov r8d, DWORD PTR nLength$[rsp]
|
||
00061 48 8b 54 24 20 mov rdx, QWORD PTR pOldData$[rsp]
|
||
00066 48 8b 4c 24 28 mov rcx, QWORD PTR pStringMgr$[rsp]
|
||
0006b ff 54 24 38 call QWORD PTR tv78[rsp]
|
||
0006f 48 89 44 24 30 mov QWORD PTR pNewData$[rsp], rax
|
||
|
||
; 859 : if( pNewData == NULL )
|
||
|
||
00074 48 83 7c 24 30
|
||
00 cmp QWORD PTR pNewData$[rsp], 0
|
||
0007a 75 05 jne SHORT $LN4@Reallocate
|
||
|
||
; 860 : {
|
||
; 861 : ThrowMemoryException();
|
||
|
||
0007c e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
$LN4@Reallocate:
|
||
|
||
; 862 : }
|
||
; 863 : Attach( pNewData );
|
||
|
||
00081 48 8b 54 24 30 mov rdx, QWORD PTR pNewData$[rsp]
|
||
00086 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp]
|
||
0008b e8 00 00 00 00 call ?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<char,0>::Attach
|
||
$LN1@Reallocate:
|
||
$LN5@Reallocate:
|
||
|
||
; 864 : }
|
||
|
||
00090 48 83 c4 48 add rsp, 72 ; 00000048H
|
||
00094 c3 ret 0
|
||
?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,0>::Reallocate
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
nNewLength$1 = 32
|
||
pOldData$ = 40
|
||
this$ = 64
|
||
nLength$ = 72
|
||
?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 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 819 : CStringData* pOldData = GetData();
|
||
|
||
0000d 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00017 48 89 44 24 28 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 820 : if( pOldData->nDataLength > nLength )
|
||
|
||
0001c 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
00021 8b 4c 24 48 mov ecx, DWORD PTR nLength$[rsp]
|
||
00025 39 48 08 cmp DWORD PTR [rax+8], ecx
|
||
00028 7e 0c jle SHORT $LN2@PrepareWri
|
||
|
||
; 821 : {
|
||
; 822 : nLength = pOldData->nDataLength;
|
||
|
||
0002a 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
0002f 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
00032 89 44 24 48 mov DWORD PTR nLength$[rsp], eax
|
||
$LN2@PrepareWri:
|
||
|
||
; 823 : }
|
||
; 824 : if( pOldData->IsShared() )
|
||
|
||
00036 48 8b 4c 24 28 mov rcx, QWORD PTR pOldData$[rsp]
|
||
0003b e8 00 00 00 00 call ?IsShared@CStringData@ATL@@QEBA_NXZ ; ATL::CStringData::IsShared
|
||
00040 0f b6 c0 movzx eax, al
|
||
00043 85 c0 test eax, eax
|
||
00045 74 10 je SHORT $LN3@PrepareWri
|
||
|
||
; 825 : {
|
||
; 826 : Fork( nLength );
|
||
|
||
00047 8b 54 24 48 mov edx, DWORD PTR nLength$[rsp]
|
||
0004b 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00050 e8 00 00 00 00 call ?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::Fork
|
||
|
||
; 827 : }
|
||
|
||
00055 eb 68 jmp SHORT $LN4@PrepareWri
|
||
$LN3@PrepareWri:
|
||
|
||
; 828 : else if( pOldData->nAllocLength < nLength )
|
||
|
||
00057 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
0005c 8b 4c 24 48 mov ecx, DWORD PTR nLength$[rsp]
|
||
00060 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
00063 7d 5a jge SHORT $LN5@PrepareWri
|
||
|
||
; 829 : {
|
||
; 830 : // Grow exponentially, until we hit 1G, then by 1M thereafter.
|
||
; 831 : int nNewLength = pOldData->nAllocLength;
|
||
|
||
00065 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
0006a 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
0006d 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
|
||
; 832 : if( nNewLength > 1024 * 1024 * 1024 )
|
||
|
||
00071 81 7c 24 20 00
|
||
00 00 40 cmp DWORD PTR nNewLength$1[rsp], 1073741824 ; 40000000H
|
||
00079 7e 0f jle SHORT $LN6@PrepareWri
|
||
|
||
; 833 : {
|
||
; 834 : nNewLength += 1024 * 1024;
|
||
|
||
0007b 8b 44 24 20 mov eax, DWORD PTR nNewLength$1[rsp]
|
||
0007f 05 00 00 10 00 add eax, 1048576 ; 00100000H
|
||
00084 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
|
||
; 835 : }
|
||
|
||
00088 eb 15 jmp SHORT $LN7@PrepareWri
|
||
$LN6@PrepareWri:
|
||
|
||
; 836 : else
|
||
; 837 : {
|
||
; 838 : // Exponential growth factor is 1.5.
|
||
; 839 : nNewLength = nNewLength + nNewLength / 2;
|
||
|
||
0008a 8b 44 24 20 mov eax, DWORD PTR nNewLength$1[rsp]
|
||
0008e 99 cdq
|
||
0008f 2b c2 sub eax, edx
|
||
00091 d1 f8 sar eax, 1
|
||
00093 8b 4c 24 20 mov ecx, DWORD PTR nNewLength$1[rsp]
|
||
00097 03 c8 add ecx, eax
|
||
00099 8b c1 mov eax, ecx
|
||
0009b 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
$LN7@PrepareWri:
|
||
|
||
; 840 : }
|
||
; 841 : if( nNewLength < nLength )
|
||
|
||
0009f 8b 44 24 48 mov eax, DWORD PTR nLength$[rsp]
|
||
000a3 39 44 24 20 cmp DWORD PTR nNewLength$1[rsp], eax
|
||
000a7 7d 08 jge SHORT $LN8@PrepareWri
|
||
|
||
; 842 : {
|
||
; 843 : nNewLength = nLength;
|
||
|
||
000a9 8b 44 24 48 mov eax, DWORD PTR nLength$[rsp]
|
||
000ad 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
$LN8@PrepareWri:
|
||
|
||
; 844 : }
|
||
; 845 : Reallocate( nNewLength );
|
||
|
||
000b1 8b 54 24 20 mov edx, DWORD PTR nNewLength$1[rsp]
|
||
000b5 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
000ba e8 00 00 00 00 call ?Reallocate@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::Reallocate
|
||
$LN5@PrepareWri:
|
||
$LN4@PrepareWri:
|
||
|
||
; 846 : }
|
||
; 847 : }
|
||
|
||
000bf 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
000c3 c3 ret 0
|
||
?PrepareWrite2@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,0>::PrepareWrite2
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
nTooShort$ = 32
|
||
nShared$ = 36
|
||
pOldData$ = 40
|
||
this$ = 64
|
||
nLength$ = 72
|
||
?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 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 804 : if (nLength < 0)
|
||
|
||
0000d 83 7c 24 48 00 cmp DWORD PTR nLength$[rsp], 0
|
||
00012 7d 0a jge SHORT $LN2@PrepareWri
|
||
|
||
; 805 : AtlThrow(E_INVALIDARG);
|
||
|
||
00014 b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
00019 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@PrepareWri:
|
||
|
||
; 806 :
|
||
; 807 : CStringData* pOldData = GetData();
|
||
|
||
0001e 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00023 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00028 48 89 44 24 28 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 808 : int nShared = 1-pOldData->nRefs; // nShared < 0 means true, >= 0 means false
|
||
|
||
0002d 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
00032 b9 01 00 00 00 mov ecx, 1
|
||
00037 2b 48 10 sub ecx, DWORD PTR [rax+16]
|
||
0003a 8b c1 mov eax, ecx
|
||
0003c 89 44 24 24 mov DWORD PTR nShared$[rsp], eax
|
||
|
||
; 809 : int nTooShort = pOldData->nAllocLength-nLength; // nTooShort < 0 means true, >= 0 means false
|
||
|
||
00040 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
00045 8b 4c 24 48 mov ecx, DWORD PTR nLength$[rsp]
|
||
00049 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
0004c 2b c1 sub eax, ecx
|
||
0004e 89 44 24 20 mov DWORD PTR nTooShort$[rsp], eax
|
||
|
||
; 810 : if( (nShared|nTooShort) < 0 ) // If either sign bit is set (i.e. either is less than zero), we need to copy data
|
||
|
||
00052 8b 44 24 20 mov eax, DWORD PTR nTooShort$[rsp]
|
||
00056 8b 4c 24 24 mov ecx, DWORD PTR nShared$[rsp]
|
||
0005a 0b c8 or ecx, eax
|
||
0005c 8b c1 mov eax, ecx
|
||
0005e 85 c0 test eax, eax
|
||
00060 7d 0e jge SHORT $LN3@PrepareWri
|
||
|
||
; 811 : {
|
||
; 812 : PrepareWrite2( nLength );
|
||
|
||
00062 8b 54 24 48 mov edx, DWORD PTR nLength$[rsp]
|
||
00066 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
0006b 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 );
|
||
|
||
00070 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
00075 48 8b 00 mov rax, QWORD PTR [rax]
|
||
$LN4@PrepareWri:
|
||
|
||
; 816 : }
|
||
|
||
00078 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
0007c c3 ret 0
|
||
?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z ENDP ; ATL::CSimpleStringT<char,0>::PrepareWrite
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 8
|
||
?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ PROC ; ATL::CSimpleStringT<char,0>::GetData, COMDAT
|
||
|
||
; 799 : {
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
|
||
; 800 : return( reinterpret_cast< CStringData* >( m_pszData )-1 );
|
||
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0000d 48 83 e8 18 sub rax, 24
|
||
|
||
; 801 : }
|
||
|
||
00011 c3 ret 0
|
||
?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ENDP ; ATL::CSimpleStringT<char,0>::GetData
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
nOldLength$ = 32
|
||
tv86 = 36
|
||
nCharsToCopy$ = 40
|
||
pOldData$ = 48
|
||
pNewData$ = 56
|
||
tv76 = 64
|
||
tv83 = 72
|
||
tv134 = 80
|
||
tv132 = 88
|
||
this$ = 112
|
||
nLength$ = 120
|
||
?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 48 83 ec 68 sub rsp, 104 ; 00000068H
|
||
|
||
; 784 : CStringData* pOldData = GetData();
|
||
|
||
0000d 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00017 48 89 44 24 30 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 785 : int nOldLength = pOldData->nDataLength;
|
||
|
||
0001c 48 8b 44 24 30 mov rax, QWORD PTR pOldData$[rsp]
|
||
00021 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
00024 89 44 24 20 mov DWORD PTR nOldLength$[rsp], eax
|
||
|
||
; 786 : CStringData* pNewData = pOldData->pStringMgr->Clone()->Allocate( nLength, sizeof( XCHAR ) );
|
||
|
||
00028 48 8b 44 24 30 mov rax, QWORD PTR pOldData$[rsp]
|
||
0002d 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00030 48 8b 4c 24 30 mov rcx, QWORD PTR pOldData$[rsp]
|
||
00035 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
00038 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0003b ff 50 20 call QWORD PTR [rax+32]
|
||
0003e 48 89 44 24 40 mov QWORD PTR tv76[rsp], rax
|
||
00043 48 8b 44 24 40 mov rax, QWORD PTR tv76[rsp]
|
||
00048 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004b 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004e 48 89 44 24 48 mov QWORD PTR tv83[rsp], rax
|
||
00053 41 b8 01 00 00
|
||
00 mov r8d, 1
|
||
00059 8b 54 24 78 mov edx, DWORD PTR nLength$[rsp]
|
||
0005d 48 8b 4c 24 40 mov rcx, QWORD PTR tv76[rsp]
|
||
00062 ff 54 24 48 call QWORD PTR tv83[rsp]
|
||
00066 48 89 44 24 38 mov QWORD PTR pNewData$[rsp], rax
|
||
|
||
; 787 : if( pNewData == NULL )
|
||
|
||
0006b 48 83 7c 24 38
|
||
00 cmp QWORD PTR pNewData$[rsp], 0
|
||
00071 75 05 jne SHORT $LN2@Fork
|
||
|
||
; 788 : {
|
||
; 789 : ThrowMemoryException();
|
||
|
||
00073 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'
|
||
|
||
00078 8b 44 24 78 mov eax, DWORD PTR nLength$[rsp]
|
||
0007c 39 44 24 20 cmp DWORD PTR nOldLength$[rsp], eax
|
||
00080 7d 0a jge SHORT $LN4@Fork
|
||
00082 8b 44 24 20 mov eax, DWORD PTR nOldLength$[rsp]
|
||
00086 89 44 24 24 mov DWORD PTR tv86[rsp], eax
|
||
0008a eb 08 jmp SHORT $LN5@Fork
|
||
$LN4@Fork:
|
||
0008c 8b 44 24 78 mov eax, DWORD PTR nLength$[rsp]
|
||
00090 89 44 24 24 mov DWORD PTR tv86[rsp], eax
|
||
$LN5@Fork:
|
||
00094 8b 44 24 24 mov eax, DWORD PTR tv86[rsp]
|
||
00098 ff c0 inc eax
|
||
0009a 89 44 24 28 mov DWORD PTR nCharsToCopy$[rsp], eax
|
||
|
||
; 792 : memcpy_s( PXSTR( pNewData->data() ), nCharsToCopy * sizeof( XCHAR ),
|
||
|
||
0009e 48 8b 4c 24 30 mov rcx, QWORD PTR pOldData$[rsp]
|
||
000a3 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000a8 48 89 44 24 50 mov QWORD PTR tv134[rsp], rax
|
||
000ad 48 8b 4c 24 38 mov rcx, QWORD PTR pNewData$[rsp]
|
||
000b2 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000b7 48 89 44 24 58 mov QWORD PTR tv132[rsp], rax
|
||
000bc 48 63 44 24 28 movsxd rax, DWORD PTR nCharsToCopy$[rsp]
|
||
000c1 48 63 4c 24 28 movsxd rcx, DWORD PTR nCharsToCopy$[rsp]
|
||
000c6 4c 8b c8 mov r9, rax
|
||
000c9 4c 8b 44 24 50 mov r8, QWORD PTR tv134[rsp]
|
||
000ce 48 8b d1 mov rdx, rcx
|
||
000d1 48 8b 4c 24 58 mov rcx, QWORD PTR tv132[rsp]
|
||
000d6 e8 00 00 00 00 call memcpy_s
|
||
|
||
; 793 : PCXSTR( pOldData->data() ), nCharsToCopy * sizeof( XCHAR ));
|
||
; 794 : pNewData->nDataLength = nOldLength;
|
||
|
||
000db 48 8b 44 24 38 mov rax, QWORD PTR pNewData$[rsp]
|
||
000e0 8b 4c 24 20 mov ecx, DWORD PTR nOldLength$[rsp]
|
||
000e4 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 795 : pOldData->Release();
|
||
|
||
000e7 48 8b 4c 24 30 mov rcx, QWORD PTR pOldData$[rsp]
|
||
000ec e8 00 00 00 00 call ?Release@CStringData@ATL@@QEAAXXZ ; ATL::CStringData::Release
|
||
|
||
; 796 : Attach( pNewData );
|
||
|
||
000f1 48 8b 54 24 38 mov rdx, QWORD PTR pNewData$[rsp]
|
||
000f6 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
|
||
000fb e8 00 00 00 00 call ?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<char,0>::Attach
|
||
$LN3@Fork:
|
||
|
||
; 797 : }
|
||
|
||
00100 48 83 c4 68 add rsp, 104 ; 00000068H
|
||
00104 c3 ret 0
|
||
?Fork@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<char,0>::Fork
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
pData$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 780 : m_pszData = static_cast< PXSTR >( pData->data() );
|
||
|
||
0000e 48 8b 4c 24 38 mov rcx, QWORD PTR pData$[rsp]
|
||
00013 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
00018 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0001d 48 89 01 mov QWORD PTR [rcx], rax
|
||
|
||
; 781 : }
|
||
|
||
00020 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00024 c3 ret 0
|
||
?Attach@?$CSimpleStringT@D$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ENDP ; ATL::CSimpleStringT<char,0>::Attach
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 773 : AtlThrow( E_OUTOFMEMORY );
|
||
|
||
00004 b9 0e 00 07 80 mov ecx, -2147024882 ; ffffffff8007000eH
|
||
00009 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@ThrowMemor:
|
||
|
||
; 774 : }
|
||
|
||
0000e 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00012 c3 ret 0
|
||
?ThrowMemoryException@?$CSimpleStringT@D$0A@@ATL@@KAXXZ ENDP ; ATL::CSimpleStringT<char,0>::ThrowMemoryException
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
sizeInXChar$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 740 : if( psz == NULL )
|
||
|
||
0000e 48 83 7c 24 30
|
||
00 cmp QWORD PTR psz$[rsp], 0
|
||
00014 75 04 jne SHORT $LN2@StringLeng
|
||
|
||
; 741 : {
|
||
; 742 : return( 0 );
|
||
|
||
00016 33 c0 xor eax, eax
|
||
00018 eb 10 jmp SHORT $LN1@StringLeng
|
||
$LN2@StringLeng:
|
||
|
||
; 743 : }
|
||
; 744 : return( int( strnlen( psz, sizeInXChar ) ) );
|
||
|
||
0001a 48 8b 54 24 38 mov rdx, QWORD PTR sizeInXChar$[rsp]
|
||
0001f 48 8b 4c 24 30 mov rcx, QWORD PTR psz$[rsp]
|
||
00024 e8 00 00 00 00 call strnlen
|
||
00029 90 npad 1
|
||
$LN1@StringLeng:
|
||
|
||
; 745 : }
|
||
|
||
0002a 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0002e c3 ret 0
|
||
?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z ENDP ; ATL::CSimpleStringT<char,0>::StringLengthN
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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 = 32
|
||
this$ = 64
|
||
nNewLength$ = 72
|
||
?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 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 558 : if( nNewLength == -1 )
|
||
|
||
0000d 83 7c 24 48 ff cmp DWORD PTR nNewLength$[rsp], -1
|
||
00012 75 2a jne SHORT $LN2@ReleaseBuf
|
||
|
||
; 559 : {
|
||
; 560 : int nAlloc = GetData()->nAllocLength;
|
||
|
||
00014 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00019 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
0001e 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00021 89 44 24 20 mov DWORD PTR nAlloc$1[rsp], eax
|
||
|
||
; 561 : nNewLength = StringLengthN( m_pszData, nAlloc);
|
||
|
||
00025 48 63 44 24 20 movsxd rax, DWORD PTR nAlloc$1[rsp]
|
||
0002a 48 8b d0 mov rdx, rax
|
||
0002d 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
00032 48 8b 08 mov rcx, QWORD PTR [rax]
|
||
00035 e8 00 00 00 00 call ?StringLengthN@?$CSimpleStringT@D$0A@@ATL@@SAHPEBD_K@Z ; ATL::CSimpleStringT<char,0>::StringLengthN
|
||
0003a 89 44 24 48 mov DWORD PTR nNewLength$[rsp], eax
|
||
$LN2@ReleaseBuf:
|
||
|
||
; 562 : }
|
||
; 563 : SetLength( nNewLength );
|
||
|
||
0003e 8b 54 24 48 mov edx, DWORD PTR nNewLength$[rsp]
|
||
00042 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00047 e8 00 00 00 00 call ?SetLength@?$CSimpleStringT@D$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<char,0>::SetLength
|
||
|
||
; 564 : }
|
||
|
||
0004c 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
00050 c3 ret 0
|
||
?ReleaseBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAXH@Z ENDP ; ATL::CSimpleStringT<char,0>::ReleaseBuffer
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 519 : return( GetData()->nDataLength );
|
||
|
||
00009 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0000e e8 00 00 00 00 call ?GetData@?$CSimpleStringT@D$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<char,0>::GetData
|
||
00013 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
|
||
; 520 : }
|
||
|
||
00016 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0001a c3 ret 0
|
||
?GetLength@?$CSimpleStringT@D$0A@@ATL@@QEBAHXZ ENDP ; ATL::CSimpleStringT<char,0>::GetLength
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
nMinBufferLength$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 508 : return( PrepareWrite( nMinBufferLength ) );
|
||
|
||
0000d 8b 54 24 38 mov edx, DWORD PTR nMinBufferLength$[rsp]
|
||
00011 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00016 e8 00 00 00 00 call ?PrepareWrite@?$CSimpleStringT@D$0A@@ATL@@AEAAPEADH@Z ; ATL::CSimpleStringT<char,0>::PrepareWrite
|
||
|
||
; 509 : }
|
||
|
||
0001b 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0001f c3 ret 0
|
||
?GetBuffer@?$CSimpleStringT@D$0A@@ATL@@QEAAPEADH@Z ENDP ; ATL::CSimpleStringT<char,0>::GetBuffer
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 8
|
||
??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ PROC ; ATL::CSimpleStringT<char,0>::operator char const *, COMDAT
|
||
|
||
; 376 : {
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
|
||
; 377 : return( m_pszData );
|
||
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8b 00 mov rax, QWORD PTR [rax]
|
||
|
||
; 378 : }
|
||
|
||
0000d c3 ret 0
|
||
??B?$CSimpleStringT@D$0A@@ATL@@QEBAPEBDXZ ENDP ; ATL::CSimpleStringT<char,0>::operator char const *
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 8
|
||
?GetData@CByteArray@@QEBAPEBEXZ PROC ; CByteArray::GetData, COMDAT
|
||
|
||
; 46 : { return (const BYTE*)m_pData; }
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8b 40 08 mov rax, QWORD PTR [rax+8]
|
||
0000e c3 ret 0
|
||
?GetData@CByteArray@@QEBAPEBEXZ ENDP ; CByteArray::GetData
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
nIndex$ = 56
|
||
newElement$ = 64
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 36 : if( nIndex < 0 || nIndex >= m_nSize )
|
||
|
||
00013 48 83 7c 24 38
|
||
00 cmp QWORD PTR nIndex$[rsp], 0
|
||
00019 7c 10 jl SHORT $LN3@SetAt
|
||
0001b 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp]
|
||
00020 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00024 48 39 44 24 38 cmp QWORD PTR nIndex$[rsp], rax
|
||
00029 7c 05 jl SHORT $LN2@SetAt
|
||
$LN3@SetAt:
|
||
|
||
; 37 : AfxThrowInvalidArgException();
|
||
|
||
0002b e8 00 00 00 00 call ?AfxThrowInvalidArgException@@YAXXZ ; AfxThrowInvalidArgException
|
||
$LN2@SetAt:
|
||
|
||
; 38 : m_pData[nIndex] = newElement; }
|
||
|
||
00030 48 8b 44 24 30 mov rax, QWORD PTR this$[rsp]
|
||
00035 48 8b 40 08 mov rax, QWORD PTR [rax+8]
|
||
00039 48 8b 4c 24 38 mov rcx, QWORD PTR nIndex$[rsp]
|
||
0003e 0f b6 54 24 40 movzx edx, BYTE PTR newElement$[rsp]
|
||
00043 88 14 08 mov BYTE PTR [rax+rcx], dl
|
||
$LN4@SetAt:
|
||
00046 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0004a c3 ret 0
|
||
?SetAt@CByteArray@@QEAAX_JE@Z ENDP ; CByteArray::SetAt
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
?RemoveAll@CByteArray@@QEAAXXZ PROC ; CByteArray::RemoveAll, COMDAT
|
||
|
||
; 28 : { SetSize(0); }
|
||
|
||
$LN3:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
00009 49 c7 c0 ff ff
|
||
ff ff mov r8, -1
|
||
00010 33 d2 xor edx, edx
|
||
00012 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00017 e8 00 00 00 00 call ?SetSize@CByteArray@@QEAAX_J0@Z ; CByteArray::SetSize
|
||
0001c 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00020 c3 ret 0
|
||
?RemoveAll@CByteArray@@QEAAXXZ ENDP ; CByteArray::RemoveAll
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 8
|
||
?GetSize@CByteArray@@QEBA_JXZ PROC ; CByteArray::GetSize, COMDAT
|
||
|
||
; 20 : { return m_nSize; }
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
0000e c3 ret 0
|
||
?GetSize@CByteArray@@QEBA_JXZ ENDP ; CByteArray::GetSize
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
nLength$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 868 : ATLASSERT( nLength >= 0 );
|
||
; 869 : ATLASSERT( nLength <= GetData()->nAllocLength );
|
||
; 870 :
|
||
; 871 : if( nLength < 0 || nLength > GetData()->nAllocLength)
|
||
|
||
0000d 83 7c 24 38 00 cmp DWORD PTR nLength$[rsp], 0
|
||
00012 7c 13 jl SHORT $LN3@SetLength
|
||
00014 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00019 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0001e 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00021 39 44 24 38 cmp DWORD PTR nLength$[rsp], eax
|
||
00025 7e 0a jle SHORT $LN2@SetLength
|
||
$LN3@SetLength:
|
||
|
||
; 872 : AtlThrow(E_INVALIDARG);
|
||
|
||
00027 b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
0002c e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@SetLength:
|
||
|
||
; 873 :
|
||
; 874 : GetData()->nDataLength = nLength;
|
||
|
||
00031 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00036 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0003b 8b 4c 24 38 mov ecx, DWORD PTR nLength$[rsp]
|
||
0003f 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 875 : m_pszData[nLength] = 0;
|
||
|
||
00042 48 63 44 24 38 movsxd rax, DWORD PTR nLength$[rsp]
|
||
00047 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0004c 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
0004f 33 d2 xor edx, edx
|
||
00051 66 89 14 41 mov WORD PTR [rcx+rax*2], dx
|
||
$LN4@SetLength:
|
||
|
||
; 876 : }
|
||
|
||
00055 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00059 c3 ret 0
|
||
?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::SetLength
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 32
|
||
pStringMgr$ = 40
|
||
pNewData$ = 48
|
||
tv78 = 56
|
||
this$ = 80
|
||
nLength$ = 88
|
||
?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 48 83 ec 48 sub rsp, 72 ; 00000048H
|
||
|
||
; 850 : CStringData* pOldData = GetData();
|
||
|
||
0000d 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00017 48 89 44 24 20 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 851 : ATLASSERT( pOldData->nAllocLength < nLength );
|
||
; 852 : IAtlStringMgr* pStringMgr = pOldData->pStringMgr;
|
||
|
||
0001c 48 8b 44 24 20 mov rax, QWORD PTR pOldData$[rsp]
|
||
00021 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00024 48 89 44 24 28 mov QWORD PTR pStringMgr$[rsp], rax
|
||
|
||
; 853 : if ( pOldData->nAllocLength >= nLength || nLength <= 0)
|
||
|
||
00029 48 8b 44 24 20 mov rax, QWORD PTR pOldData$[rsp]
|
||
0002e 8b 4c 24 58 mov ecx, DWORD PTR nLength$[rsp]
|
||
00032 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
00035 7d 07 jge SHORT $LN3@Reallocate
|
||
00037 83 7c 24 58 00 cmp DWORD PTR nLength$[rsp], 0
|
||
0003c 7f 07 jg SHORT $LN2@Reallocate
|
||
$LN3@Reallocate:
|
||
|
||
; 854 : {
|
||
; 855 : ThrowMemoryException();
|
||
|
||
0003e e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
|
||
|
||
; 856 : return;
|
||
|
||
00043 eb 4b jmp SHORT $LN1@Reallocate
|
||
$LN2@Reallocate:
|
||
|
||
; 857 : }
|
||
; 858 : CStringData* pNewData = pStringMgr->Reallocate( pOldData, nLength, sizeof( XCHAR ) );
|
||
|
||
00045 48 8b 44 24 28 mov rax, QWORD PTR pStringMgr$[rsp]
|
||
0004a 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004d 48 8b 40 10 mov rax, QWORD PTR [rax+16]
|
||
00051 48 89 44 24 38 mov QWORD PTR tv78[rsp], rax
|
||
00056 41 b9 02 00 00
|
||
00 mov r9d, 2
|
||
0005c 44 8b 44 24 58 mov r8d, DWORD PTR nLength$[rsp]
|
||
00061 48 8b 54 24 20 mov rdx, QWORD PTR pOldData$[rsp]
|
||
00066 48 8b 4c 24 28 mov rcx, QWORD PTR pStringMgr$[rsp]
|
||
0006b ff 54 24 38 call QWORD PTR tv78[rsp]
|
||
0006f 48 89 44 24 30 mov QWORD PTR pNewData$[rsp], rax
|
||
|
||
; 859 : if( pNewData == NULL )
|
||
|
||
00074 48 83 7c 24 30
|
||
00 cmp QWORD PTR pNewData$[rsp], 0
|
||
0007a 75 05 jne SHORT $LN4@Reallocate
|
||
|
||
; 860 : {
|
||
; 861 : ThrowMemoryException();
|
||
|
||
0007c e8 00 00 00 00 call ?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
|
||
$LN4@Reallocate:
|
||
|
||
; 862 : }
|
||
; 863 : Attach( pNewData );
|
||
|
||
00081 48 8b 54 24 30 mov rdx, QWORD PTR pNewData$[rsp]
|
||
00086 48 8b 4c 24 50 mov rcx, QWORD PTR this$[rsp]
|
||
0008b 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 : }
|
||
|
||
00090 48 83 c4 48 add rsp, 72 ; 00000048H
|
||
00094 c3 ret 0
|
||
?Reallocate@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::Reallocate
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
nNewLength$1 = 32
|
||
pOldData$ = 40
|
||
this$ = 64
|
||
nLength$ = 72
|
||
?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 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 819 : CStringData* pOldData = GetData();
|
||
|
||
0000d 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00017 48 89 44 24 28 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 820 : if( pOldData->nDataLength > nLength )
|
||
|
||
0001c 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
00021 8b 4c 24 48 mov ecx, DWORD PTR nLength$[rsp]
|
||
00025 39 48 08 cmp DWORD PTR [rax+8], ecx
|
||
00028 7e 0c jle SHORT $LN2@PrepareWri
|
||
|
||
; 821 : {
|
||
; 822 : nLength = pOldData->nDataLength;
|
||
|
||
0002a 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
0002f 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
00032 89 44 24 48 mov DWORD PTR nLength$[rsp], eax
|
||
$LN2@PrepareWri:
|
||
|
||
; 823 : }
|
||
; 824 : if( pOldData->IsShared() )
|
||
|
||
00036 48 8b 4c 24 28 mov rcx, QWORD PTR pOldData$[rsp]
|
||
0003b e8 00 00 00 00 call ?IsShared@CStringData@ATL@@QEBA_NXZ ; ATL::CStringData::IsShared
|
||
00040 0f b6 c0 movzx eax, al
|
||
00043 85 c0 test eax, eax
|
||
00045 74 10 je SHORT $LN3@PrepareWri
|
||
|
||
; 825 : {
|
||
; 826 : Fork( nLength );
|
||
|
||
00047 8b 54 24 48 mov edx, DWORD PTR nLength$[rsp]
|
||
0004b 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00050 e8 00 00 00 00 call ?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::Fork
|
||
|
||
; 827 : }
|
||
|
||
00055 eb 68 jmp SHORT $LN4@PrepareWri
|
||
$LN3@PrepareWri:
|
||
|
||
; 828 : else if( pOldData->nAllocLength < nLength )
|
||
|
||
00057 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
0005c 8b 4c 24 48 mov ecx, DWORD PTR nLength$[rsp]
|
||
00060 39 48 0c cmp DWORD PTR [rax+12], ecx
|
||
00063 7d 5a jge SHORT $LN5@PrepareWri
|
||
|
||
; 829 : {
|
||
; 830 : // Grow exponentially, until we hit 1G, then by 1M thereafter.
|
||
; 831 : int nNewLength = pOldData->nAllocLength;
|
||
|
||
00065 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
0006a 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
0006d 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
|
||
; 832 : if( nNewLength > 1024 * 1024 * 1024 )
|
||
|
||
00071 81 7c 24 20 00
|
||
00 00 40 cmp DWORD PTR nNewLength$1[rsp], 1073741824 ; 40000000H
|
||
00079 7e 0f jle SHORT $LN6@PrepareWri
|
||
|
||
; 833 : {
|
||
; 834 : nNewLength += 1024 * 1024;
|
||
|
||
0007b 8b 44 24 20 mov eax, DWORD PTR nNewLength$1[rsp]
|
||
0007f 05 00 00 10 00 add eax, 1048576 ; 00100000H
|
||
00084 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
|
||
; 835 : }
|
||
|
||
00088 eb 15 jmp SHORT $LN7@PrepareWri
|
||
$LN6@PrepareWri:
|
||
|
||
; 836 : else
|
||
; 837 : {
|
||
; 838 : // Exponential growth factor is 1.5.
|
||
; 839 : nNewLength = nNewLength + nNewLength / 2;
|
||
|
||
0008a 8b 44 24 20 mov eax, DWORD PTR nNewLength$1[rsp]
|
||
0008e 99 cdq
|
||
0008f 2b c2 sub eax, edx
|
||
00091 d1 f8 sar eax, 1
|
||
00093 8b 4c 24 20 mov ecx, DWORD PTR nNewLength$1[rsp]
|
||
00097 03 c8 add ecx, eax
|
||
00099 8b c1 mov eax, ecx
|
||
0009b 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
$LN7@PrepareWri:
|
||
|
||
; 840 : }
|
||
; 841 : if( nNewLength < nLength )
|
||
|
||
0009f 8b 44 24 48 mov eax, DWORD PTR nLength$[rsp]
|
||
000a3 39 44 24 20 cmp DWORD PTR nNewLength$1[rsp], eax
|
||
000a7 7d 08 jge SHORT $LN8@PrepareWri
|
||
|
||
; 842 : {
|
||
; 843 : nNewLength = nLength;
|
||
|
||
000a9 8b 44 24 48 mov eax, DWORD PTR nLength$[rsp]
|
||
000ad 89 44 24 20 mov DWORD PTR nNewLength$1[rsp], eax
|
||
$LN8@PrepareWri:
|
||
|
||
; 844 : }
|
||
; 845 : Reallocate( nNewLength );
|
||
|
||
000b1 8b 54 24 20 mov edx, DWORD PTR nNewLength$1[rsp]
|
||
000b5 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
000ba 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 : }
|
||
|
||
000bf 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
000c3 c3 ret 0
|
||
?PrepareWrite2@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite2
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
nTooShort$ = 32
|
||
nShared$ = 36
|
||
pOldData$ = 40
|
||
this$ = 64
|
||
nLength$ = 72
|
||
?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 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 804 : if (nLength < 0)
|
||
|
||
0000d 83 7c 24 48 00 cmp DWORD PTR nLength$[rsp], 0
|
||
00012 7d 0a jge SHORT $LN2@PrepareWri
|
||
|
||
; 805 : AtlThrow(E_INVALIDARG);
|
||
|
||
00014 b9 57 00 07 80 mov ecx, -2147024809 ; ffffffff80070057H
|
||
00019 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@PrepareWri:
|
||
|
||
; 806 :
|
||
; 807 : CStringData* pOldData = GetData();
|
||
|
||
0001e 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00023 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00028 48 89 44 24 28 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 808 : int nShared = 1-pOldData->nRefs; // nShared < 0 means true, >= 0 means false
|
||
|
||
0002d 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
00032 b9 01 00 00 00 mov ecx, 1
|
||
00037 2b 48 10 sub ecx, DWORD PTR [rax+16]
|
||
0003a 8b c1 mov eax, ecx
|
||
0003c 89 44 24 24 mov DWORD PTR nShared$[rsp], eax
|
||
|
||
; 809 : int nTooShort = pOldData->nAllocLength-nLength; // nTooShort < 0 means true, >= 0 means false
|
||
|
||
00040 48 8b 44 24 28 mov rax, QWORD PTR pOldData$[rsp]
|
||
00045 8b 4c 24 48 mov ecx, DWORD PTR nLength$[rsp]
|
||
00049 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
0004c 2b c1 sub eax, ecx
|
||
0004e 89 44 24 20 mov DWORD PTR nTooShort$[rsp], eax
|
||
|
||
; 810 : if( (nShared|nTooShort) < 0 ) // If either sign bit is set (i.e. either is less than zero), we need to copy data
|
||
|
||
00052 8b 44 24 20 mov eax, DWORD PTR nTooShort$[rsp]
|
||
00056 8b 4c 24 24 mov ecx, DWORD PTR nShared$[rsp]
|
||
0005a 0b c8 or ecx, eax
|
||
0005c 8b c1 mov eax, ecx
|
||
0005e 85 c0 test eax, eax
|
||
00060 7d 0e jge SHORT $LN3@PrepareWri
|
||
|
||
; 811 : {
|
||
; 812 : PrepareWrite2( nLength );
|
||
|
||
00062 8b 54 24 48 mov edx, DWORD PTR nLength$[rsp]
|
||
00066 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
0006b 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 );
|
||
|
||
00070 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
00075 48 8b 00 mov rax, QWORD PTR [rax]
|
||
$LN4@PrepareWri:
|
||
|
||
; 816 : }
|
||
|
||
00078 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
0007c c3 ret 0
|
||
?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 8
|
||
?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ PROC ; ATL::CSimpleStringT<wchar_t,0>::GetData, COMDAT
|
||
|
||
; 799 : {
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
|
||
; 800 : return( reinterpret_cast< CStringData* >( m_pszData )-1 );
|
||
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0000d 48 83 e8 18 sub rax, 24
|
||
|
||
; 801 : }
|
||
|
||
00011 c3 ret 0
|
||
?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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
|
||
nOldLength$ = 32
|
||
tv86 = 36
|
||
nCharsToCopy$ = 40
|
||
pOldData$ = 48
|
||
pNewData$ = 56
|
||
tv76 = 64
|
||
tv83 = 72
|
||
tv136 = 80
|
||
tv134 = 88
|
||
this$ = 112
|
||
nLength$ = 120
|
||
?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 48 83 ec 68 sub rsp, 104 ; 00000068H
|
||
|
||
; 784 : CStringData* pOldData = GetData();
|
||
|
||
0000d 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
|
||
00012 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
00017 48 89 44 24 30 mov QWORD PTR pOldData$[rsp], rax
|
||
|
||
; 785 : int nOldLength = pOldData->nDataLength;
|
||
|
||
0001c 48 8b 44 24 30 mov rax, QWORD PTR pOldData$[rsp]
|
||
00021 8b 40 08 mov eax, DWORD PTR [rax+8]
|
||
00024 89 44 24 20 mov DWORD PTR nOldLength$[rsp], eax
|
||
|
||
; 786 : CStringData* pNewData = pOldData->pStringMgr->Clone()->Allocate( nLength, sizeof( XCHAR ) );
|
||
|
||
00028 48 8b 44 24 30 mov rax, QWORD PTR pOldData$[rsp]
|
||
0002d 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00030 48 8b 4c 24 30 mov rcx, QWORD PTR pOldData$[rsp]
|
||
00035 48 8b 09 mov rcx, QWORD PTR [rcx]
|
||
00038 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0003b ff 50 20 call QWORD PTR [rax+32]
|
||
0003e 48 89 44 24 40 mov QWORD PTR tv76[rsp], rax
|
||
00043 48 8b 44 24 40 mov rax, QWORD PTR tv76[rsp]
|
||
00048 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004b 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0004e 48 89 44 24 48 mov QWORD PTR tv83[rsp], rax
|
||
00053 41 b8 02 00 00
|
||
00 mov r8d, 2
|
||
00059 8b 54 24 78 mov edx, DWORD PTR nLength$[rsp]
|
||
0005d 48 8b 4c 24 40 mov rcx, QWORD PTR tv76[rsp]
|
||
00062 ff 54 24 48 call QWORD PTR tv83[rsp]
|
||
00066 48 89 44 24 38 mov QWORD PTR pNewData$[rsp], rax
|
||
|
||
; 787 : if( pNewData == NULL )
|
||
|
||
0006b 48 83 7c 24 38
|
||
00 cmp QWORD PTR pNewData$[rsp], 0
|
||
00071 75 05 jne SHORT $LN2@Fork
|
||
|
||
; 788 : {
|
||
; 789 : ThrowMemoryException();
|
||
|
||
00073 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'
|
||
|
||
00078 8b 44 24 78 mov eax, DWORD PTR nLength$[rsp]
|
||
0007c 39 44 24 20 cmp DWORD PTR nOldLength$[rsp], eax
|
||
00080 7d 0a jge SHORT $LN4@Fork
|
||
00082 8b 44 24 20 mov eax, DWORD PTR nOldLength$[rsp]
|
||
00086 89 44 24 24 mov DWORD PTR tv86[rsp], eax
|
||
0008a eb 08 jmp SHORT $LN5@Fork
|
||
$LN4@Fork:
|
||
0008c 8b 44 24 78 mov eax, DWORD PTR nLength$[rsp]
|
||
00090 89 44 24 24 mov DWORD PTR tv86[rsp], eax
|
||
$LN5@Fork:
|
||
00094 8b 44 24 24 mov eax, DWORD PTR tv86[rsp]
|
||
00098 ff c0 inc eax
|
||
0009a 89 44 24 28 mov DWORD PTR nCharsToCopy$[rsp], eax
|
||
|
||
; 792 : memcpy_s( PXSTR( pNewData->data() ), nCharsToCopy * sizeof( XCHAR ),
|
||
|
||
0009e 48 8b 4c 24 30 mov rcx, QWORD PTR pOldData$[rsp]
|
||
000a3 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000a8 48 89 44 24 50 mov QWORD PTR tv136[rsp], rax
|
||
000ad 48 8b 4c 24 38 mov rcx, QWORD PTR pNewData$[rsp]
|
||
000b2 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
000b7 48 89 44 24 58 mov QWORD PTR tv134[rsp], rax
|
||
000bc 48 63 44 24 28 movsxd rax, DWORD PTR nCharsToCopy$[rsp]
|
||
000c1 48 d1 e0 shl rax, 1
|
||
000c4 48 63 4c 24 28 movsxd rcx, DWORD PTR nCharsToCopy$[rsp]
|
||
000c9 48 d1 e1 shl rcx, 1
|
||
000cc 4c 8b c8 mov r9, rax
|
||
000cf 4c 8b 44 24 50 mov r8, QWORD PTR tv136[rsp]
|
||
000d4 48 8b d1 mov rdx, rcx
|
||
000d7 48 8b 4c 24 58 mov rcx, QWORD PTR tv134[rsp]
|
||
000dc e8 00 00 00 00 call memcpy_s
|
||
|
||
; 793 : PCXSTR( pOldData->data() ), nCharsToCopy * sizeof( XCHAR ));
|
||
; 794 : pNewData->nDataLength = nOldLength;
|
||
|
||
000e1 48 8b 44 24 38 mov rax, QWORD PTR pNewData$[rsp]
|
||
000e6 8b 4c 24 20 mov ecx, DWORD PTR nOldLength$[rsp]
|
||
000ea 89 48 08 mov DWORD PTR [rax+8], ecx
|
||
|
||
; 795 : pOldData->Release();
|
||
|
||
000ed 48 8b 4c 24 30 mov rcx, QWORD PTR pOldData$[rsp]
|
||
000f2 e8 00 00 00 00 call ?Release@CStringData@ATL@@QEAAXXZ ; ATL::CStringData::Release
|
||
|
||
; 796 : Attach( pNewData );
|
||
|
||
000f7 48 8b 54 24 38 mov rdx, QWORD PTR pNewData$[rsp]
|
||
000fc 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
|
||
00101 e8 00 00 00 00 call ?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ; ATL::CSimpleStringT<wchar_t,0>::Attach
|
||
$LN3@Fork:
|
||
|
||
; 797 : }
|
||
|
||
00106 48 83 c4 68 add rsp, 104 ; 00000068H
|
||
0010a c3 ret 0
|
||
?Fork@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::Fork
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
pData$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 780 : m_pszData = static_cast< PXSTR >( pData->data() );
|
||
|
||
0000e 48 8b 4c 24 38 mov rcx, QWORD PTR pData$[rsp]
|
||
00013 e8 00 00 00 00 call ?data@CStringData@ATL@@QEAAPEAXXZ ; ATL::CStringData::data
|
||
00018 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
0001d 48 89 01 mov QWORD PTR [rcx], rax
|
||
|
||
; 781 : }
|
||
|
||
00020 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00024 c3 ret 0
|
||
?Attach@?$CSimpleStringT@_W$0A@@ATL@@AEAAXPEAUCStringData@2@@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::Attach
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 773 : AtlThrow( E_OUTOFMEMORY );
|
||
|
||
00004 b9 0e 00 07 80 mov ecx, -2147024882 ; ffffffff8007000eH
|
||
00009 e8 00 00 00 00 call ?AtlThrowImpl@ATL@@YAXJ@Z ; ATL::AtlThrowImpl
|
||
$LN2@ThrowMemor:
|
||
|
||
; 774 : }
|
||
|
||
0000e 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00012 c3 ret 0
|
||
?ThrowMemoryException@?$CSimpleStringT@_W$0A@@ATL@@KAXXZ ENDP ; ATL::CSimpleStringT<wchar_t,0>::ThrowMemoryException
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
sizeInXChar$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 750 : if( psz == NULL )
|
||
|
||
0000e 48 83 7c 24 30
|
||
00 cmp QWORD PTR psz$[rsp], 0
|
||
00014 75 04 jne SHORT $LN2@StringLeng
|
||
|
||
; 751 : {
|
||
; 752 : return( 0 );
|
||
|
||
00016 33 c0 xor eax, eax
|
||
00018 eb 10 jmp SHORT $LN1@StringLeng
|
||
$LN2@StringLeng:
|
||
|
||
; 753 : }
|
||
; 754 : return( int( wcsnlen( psz, sizeInXChar ) ) );
|
||
|
||
0001a 48 8b 54 24 38 mov rdx, QWORD PTR sizeInXChar$[rsp]
|
||
0001f 48 8b 4c 24 30 mov rcx, QWORD PTR psz$[rsp]
|
||
00024 e8 00 00 00 00 call wcsnlen
|
||
00029 90 npad 1
|
||
$LN1@StringLeng:
|
||
|
||
; 755 : }
|
||
|
||
0002a 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0002e 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
|
||
; 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 = 32
|
||
this$ = 64
|
||
nNewLength$ = 72
|
||
?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 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 558 : if( nNewLength == -1 )
|
||
|
||
0000d 83 7c 24 48 ff cmp DWORD PTR nNewLength$[rsp], -1
|
||
00012 75 2a jne SHORT $LN2@ReleaseBuf
|
||
|
||
; 559 : {
|
||
; 560 : int nAlloc = GetData()->nAllocLength;
|
||
|
||
00014 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00019 e8 00 00 00 00 call ?GetData@?$CSimpleStringT@_W$0A@@ATL@@AEBAPEAUCStringData@2@XZ ; ATL::CSimpleStringT<wchar_t,0>::GetData
|
||
0001e 8b 40 0c mov eax, DWORD PTR [rax+12]
|
||
00021 89 44 24 20 mov DWORD PTR nAlloc$1[rsp], eax
|
||
|
||
; 561 : nNewLength = StringLengthN( m_pszData, nAlloc);
|
||
|
||
00025 48 63 44 24 20 movsxd rax, DWORD PTR nAlloc$1[rsp]
|
||
0002a 48 8b d0 mov rdx, rax
|
||
0002d 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
00032 48 8b 08 mov rcx, QWORD PTR [rax]
|
||
00035 e8 00 00 00 00 call ?StringLengthN@?$CSimpleStringT@_W$0A@@ATL@@SAHPEB_W_K@Z ; ATL::CSimpleStringT<wchar_t,0>::StringLengthN
|
||
0003a 89 44 24 48 mov DWORD PTR nNewLength$[rsp], eax
|
||
$LN2@ReleaseBuf:
|
||
|
||
; 562 : }
|
||
; 563 : SetLength( nNewLength );
|
||
|
||
0003e 8b 54 24 48 mov edx, DWORD PTR nNewLength$[rsp]
|
||
00042 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp]
|
||
00047 e8 00 00 00 00 call ?SetLength@?$CSimpleStringT@_W$0A@@ATL@@AEAAXH@Z ; ATL::CSimpleStringT<wchar_t,0>::SetLength
|
||
|
||
; 564 : }
|
||
|
||
0004c 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
00050 c3 ret 0
|
||
?ReleaseBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAXH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::ReleaseBuffer
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
nMinBufferLength$ = 56
|
||
?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 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 508 : return( PrepareWrite( nMinBufferLength ) );
|
||
|
||
0000d 8b 54 24 38 mov edx, DWORD PTR nMinBufferLength$[rsp]
|
||
00011 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp]
|
||
00016 e8 00 00 00 00 call ?PrepareWrite@?$CSimpleStringT@_W$0A@@ATL@@AEAAPEA_WH@Z ; ATL::CSimpleStringT<wchar_t,0>::PrepareWrite
|
||
|
||
; 509 : }
|
||
|
||
0001b 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
0001f c3 ret 0
|
||
?GetBuffer@?$CSimpleStringT@_W$0A@@ATL@@QEAAPEA_WH@Z ENDP ; ATL::CSimpleStringT<wchar_t,0>::GetBuffer
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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 = 32
|
||
tv79 = 40
|
||
this$ = 64
|
||
?Release@CStringData@ATL@@QEAAXXZ PROC ; ATL::CStringData::Release, COMDAT
|
||
|
||
; 85 : {
|
||
|
||
$LN4:
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 48 83 ec 38 sub rsp, 56 ; 00000038H
|
||
|
||
; 86 : ATLASSERT( nRefs != 0 );
|
||
; 87 :
|
||
; 88 : if( _InterlockedDecrement( &nRefs ) <= 0 )
|
||
|
||
00009 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
0000e 48 83 c0 10 add rax, 16
|
||
00012 b9 ff ff ff ff mov ecx, -1
|
||
00017 f0 0f c1 08 lock xadd DWORD PTR [rax], ecx
|
||
0001b ff c9 dec ecx
|
||
0001d 8b c1 mov eax, ecx
|
||
0001f 85 c0 test eax, eax
|
||
00021 7f 2f jg SHORT $LN2@Release
|
||
|
||
; 89 : {
|
||
; 90 : pStringMgr->Free( this );
|
||
|
||
00023 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
00028 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0002b 48 89 44 24 20 mov QWORD PTR tv77[rsp], rax
|
||
00030 48 8b 44 24 40 mov rax, QWORD PTR this$[rsp]
|
||
00035 48 8b 00 mov rax, QWORD PTR [rax]
|
||
00038 48 8b 00 mov rax, QWORD PTR [rax]
|
||
0003b 48 8b 40 08 mov rax, QWORD PTR [rax+8]
|
||
0003f 48 89 44 24 28 mov QWORD PTR tv79[rsp], rax
|
||
00044 48 8b 54 24 40 mov rdx, QWORD PTR this$[rsp]
|
||
00049 48 8b 4c 24 20 mov rcx, QWORD PTR tv77[rsp]
|
||
0004e ff 54 24 28 call QWORD PTR tv79[rsp]
|
||
$LN2@Release:
|
||
|
||
; 91 : }
|
||
; 92 : }
|
||
|
||
00052 48 83 c4 38 add rsp, 56 ; 00000038H
|
||
00056 c3 ret 0
|
||
?Release@CStringData@ATL@@QEAAXXZ ENDP ; ATL::CStringData::Release
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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 = 0
|
||
this$ = 32
|
||
?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 48 83 ec 18 sub rsp, 24
|
||
|
||
; 73 : return( nRefs > 1 );
|
||
|
||
00009 48 8b 44 24 20 mov rax, QWORD PTR this$[rsp]
|
||
0000e 83 78 10 01 cmp DWORD PTR [rax+16], 1
|
||
00012 7e 09 jle SHORT $LN3@IsShared
|
||
00014 c7 04 24 01 00
|
||
00 00 mov DWORD PTR tv66[rsp], 1
|
||
0001b eb 07 jmp SHORT $LN4@IsShared
|
||
$LN3@IsShared:
|
||
0001d c7 04 24 00 00
|
||
00 00 mov DWORD PTR tv66[rsp], 0
|
||
$LN4@IsShared:
|
||
00024 0f b6 04 24 movzx eax, BYTE PTR tv66[rsp]
|
||
|
||
; 74 : }
|
||
|
||
00028 48 83 c4 18 add rsp, 24
|
||
0002c c3 ret 0
|
||
?IsShared@CStringData@ATL@@QEBA_NXZ ENDP ; ATL::CStringData::IsShared
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 8
|
||
?data@CStringData@ATL@@QEAAPEAXXZ PROC ; ATL::CStringData::data, COMDAT
|
||
|
||
; 58 : {
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
|
||
; 59 : return (this+1);
|
||
|
||
00005 48 8b 44 24 08 mov rax, QWORD PTR this$[rsp]
|
||
0000a 48 83 c0 18 add rax, 24
|
||
|
||
; 60 : }
|
||
|
||
0000e c3 ret 0
|
||
?data@CStringData@ATL@@QEAAPEAXXZ ENDP ; ATL::CStringData::data
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; 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$ = 48
|
||
?AtlThrowImpl@ATL@@YAXJ@Z PROC ; ATL::AtlThrowImpl, COMDAT
|
||
|
||
; 65 : {
|
||
|
||
$LN5:
|
||
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
|
||
00004 48 83 ec 28 sub rsp, 40 ; 00000028H
|
||
|
||
; 66 : ATLTRACE(atlTraceException, 0, _T("AtlThrow: hr = 0x%x\n"), hr );
|
||
; 67 : #ifdef _AFX
|
||
; 68 : if( hr == E_OUTOFMEMORY )
|
||
|
||
00008 81 7c 24 30 0e
|
||
00 07 80 cmp DWORD PTR hr$[rsp], -2147024882 ; ffffffff8007000eH
|
||
00010 75 07 jne SHORT $LN2@AtlThrowIm
|
||
|
||
; 69 : {
|
||
; 70 : AfxThrowMemoryException();
|
||
|
||
00012 e8 00 00 00 00 call ?AfxThrowMemoryException@@YAXXZ ; AfxThrowMemoryException
|
||
|
||
; 71 : }
|
||
|
||
00017 eb 09 jmp SHORT $LN3@AtlThrowIm
|
||
$LN2@AtlThrowIm:
|
||
|
||
; 72 : else
|
||
; 73 : {
|
||
; 74 : AfxThrowOleException( hr );
|
||
|
||
00019 8b 4c 24 30 mov ecx, DWORD PTR hr$[rsp]
|
||
0001d e8 00 00 00 00 call ?AfxThrowOleException@@YAXJ@Z ; AfxThrowOleException
|
||
$LN3@AtlThrowIm:
|
||
$LN4@AtlThrowIm:
|
||
|
||
; 75 : }
|
||
; 76 : #else
|
||
; 77 : throw CAtlException( hr );
|
||
; 78 : #endif
|
||
; 79 : };
|
||
|
||
00022 48 83 c4 28 add rsp, 40 ; 00000028H
|
||
00026 c3 ret 0
|
||
?AtlThrowImpl@ATL@@YAXJ@Z ENDP ; ATL::AtlThrowImpl
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\corecrt_memcpy_s.h
|
||
; COMDAT memcpy_s
|
||
_TEXT SEGMENT
|
||
tv66 = 32
|
||
tv75 = 36
|
||
tv79 = 40
|
||
_Expr_val$1 = 44
|
||
_Expr_val$2 = 48
|
||
_Expr_val$3 = 52
|
||
_Destination$ = 80
|
||
_DestinationSize$ = 88
|
||
_Source$ = 96
|
||
_SourceSize$ = 104
|
||
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 48 83 ec 48 sub rsp, 72 ; 00000048H
|
||
|
||
; 46 : if (_SourceSize == 0)
|
||
|
||
00018 48 83 7c 24 68
|
||
00 cmp QWORD PTR _SourceSize$[rsp], 0
|
||
0001e 75 07 jne SHORT $LN2@memcpy_s
|
||
|
||
; 47 : {
|
||
; 48 : return 0;
|
||
|
||
00020 33 c0 xor eax, eax
|
||
00022 e9 0d 01 00 00 jmp $LN1@memcpy_s
|
||
$LN2@memcpy_s:
|
||
|
||
; 49 : }
|
||
; 50 :
|
||
; 51 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Destination != NULL, EINVAL);
|
||
|
||
00027 48 83 7c 24 50
|
||
00 cmp QWORD PTR _Destination$[rsp], 0
|
||
0002d 74 0a je SHORT $LN9@memcpy_s
|
||
0002f c7 44 24 20 01
|
||
00 00 00 mov DWORD PTR tv66[rsp], 1
|
||
00037 eb 08 jmp SHORT $LN10@memcpy_s
|
||
$LN9@memcpy_s:
|
||
00039 c7 44 24 20 00
|
||
00 00 00 mov DWORD PTR tv66[rsp], 0
|
||
$LN10@memcpy_s:
|
||
00041 8b 44 24 20 mov eax, DWORD PTR tv66[rsp]
|
||
00045 89 44 24 2c mov DWORD PTR _Expr_val$1[rsp], eax
|
||
00049 83 7c 24 2c 00 cmp DWORD PTR _Expr_val$1[rsp], 0
|
||
0004e 75 1a jne SHORT $LN3@memcpy_s
|
||
00050 e8 00 00 00 00 call _errno
|
||
00055 c7 00 16 00 00
|
||
00 mov DWORD PTR [rax], 22
|
||
0005b e8 00 00 00 00 call _invalid_parameter_noinfo
|
||
00060 b8 16 00 00 00 mov eax, 22
|
||
00065 e9 ca 00 00 00 jmp $LN1@memcpy_s
|
||
$LN3@memcpy_s:
|
||
|
||
; 52 : if (_Source == NULL || _DestinationSize < _SourceSize)
|
||
|
||
0006a 48 83 7c 24 60
|
||
00 cmp QWORD PTR _Source$[rsp], 0
|
||
00070 74 10 je SHORT $LN5@memcpy_s
|
||
00072 48 8b 44 24 68 mov rax, QWORD PTR _SourceSize$[rsp]
|
||
00077 48 39 44 24 58 cmp QWORD PTR _DestinationSize$[rsp], rax
|
||
0007c 0f 83 9c 00 00
|
||
00 jae $LN4@memcpy_s
|
||
$LN5@memcpy_s:
|
||
|
||
; 53 : {
|
||
; 54 : memset(_Destination, 0, _DestinationSize);
|
||
|
||
00082 4c 8b 44 24 58 mov r8, QWORD PTR _DestinationSize$[rsp]
|
||
00087 33 d2 xor edx, edx
|
||
00089 48 8b 4c 24 50 mov rcx, QWORD PTR _Destination$[rsp]
|
||
0008e e8 00 00 00 00 call memset
|
||
|
||
; 55 :
|
||
; 56 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_Source != NULL, EINVAL);
|
||
|
||
00093 48 83 7c 24 60
|
||
00 cmp QWORD PTR _Source$[rsp], 0
|
||
00099 74 0a je SHORT $LN11@memcpy_s
|
||
0009b c7 44 24 24 01
|
||
00 00 00 mov DWORD PTR tv75[rsp], 1
|
||
000a3 eb 08 jmp SHORT $LN12@memcpy_s
|
||
$LN11@memcpy_s:
|
||
000a5 c7 44 24 24 00
|
||
00 00 00 mov DWORD PTR tv75[rsp], 0
|
||
$LN12@memcpy_s:
|
||
000ad 8b 44 24 24 mov eax, DWORD PTR tv75[rsp]
|
||
000b1 89 44 24 30 mov DWORD PTR _Expr_val$2[rsp], eax
|
||
000b5 83 7c 24 30 00 cmp DWORD PTR _Expr_val$2[rsp], 0
|
||
000ba 75 17 jne SHORT $LN6@memcpy_s
|
||
000bc e8 00 00 00 00 call _errno
|
||
000c1 c7 00 16 00 00
|
||
00 mov DWORD PTR [rax], 22
|
||
000c7 e8 00 00 00 00 call _invalid_parameter_noinfo
|
||
000cc b8 16 00 00 00 mov eax, 22
|
||
000d1 eb 61 jmp SHORT $LN1@memcpy_s
|
||
$LN6@memcpy_s:
|
||
|
||
; 57 : _CRT_MEMCPY_S_VALIDATE_RETURN_ERRCODE(_DestinationSize >= _SourceSize, ERANGE);
|
||
|
||
000d3 48 8b 44 24 68 mov rax, QWORD PTR _SourceSize$[rsp]
|
||
000d8 48 39 44 24 58 cmp QWORD PTR _DestinationSize$[rsp], rax
|
||
000dd 72 0a jb SHORT $LN13@memcpy_s
|
||
000df c7 44 24 28 01
|
||
00 00 00 mov DWORD PTR tv79[rsp], 1
|
||
000e7 eb 08 jmp SHORT $LN14@memcpy_s
|
||
$LN13@memcpy_s:
|
||
000e9 c7 44 24 28 00
|
||
00 00 00 mov DWORD PTR tv79[rsp], 0
|
||
$LN14@memcpy_s:
|
||
000f1 8b 44 24 28 mov eax, DWORD PTR tv79[rsp]
|
||
000f5 89 44 24 34 mov DWORD PTR _Expr_val$3[rsp], eax
|
||
000f9 83 7c 24 34 00 cmp DWORD PTR _Expr_val$3[rsp], 0
|
||
000fe 75 17 jne SHORT $LN7@memcpy_s
|
||
00100 e8 00 00 00 00 call _errno
|
||
00105 c7 00 22 00 00
|
||
00 mov DWORD PTR [rax], 34 ; 00000022H
|
||
0010b e8 00 00 00 00 call _invalid_parameter_noinfo
|
||
00110 b8 22 00 00 00 mov eax, 34 ; 00000022H
|
||
00115 eb 1d jmp SHORT $LN1@memcpy_s
|
||
$LN7@memcpy_s:
|
||
|
||
; 58 :
|
||
; 59 : // Unreachable, but required to suppress /analyze warnings:
|
||
; 60 : return EINVAL;
|
||
|
||
00117 b8 16 00 00 00 mov eax, 22
|
||
0011c eb 16 jmp SHORT $LN1@memcpy_s
|
||
$LN4@memcpy_s:
|
||
|
||
; 61 : }
|
||
; 62 : memcpy(_Destination, _Source, _SourceSize);
|
||
|
||
0011e 4c 8b 44 24 68 mov r8, QWORD PTR _SourceSize$[rsp]
|
||
00123 48 8b 54 24 60 mov rdx, QWORD PTR _Source$[rsp]
|
||
00128 48 8b 4c 24 50 mov rcx, QWORD PTR _Destination$[rsp]
|
||
0012d e8 00 00 00 00 call memcpy
|
||
|
||
; 63 : return 0;
|
||
|
||
00132 33 c0 xor eax, eax
|
||
$LN1@memcpy_s:
|
||
|
||
; 64 : }
|
||
|
||
00134 48 83 c4 48 add rsp, 72 ; 00000048H
|
||
00138 c3 ret 0
|
||
memcpy_s ENDP
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 8
|
||
__formal$ = 16
|
||
__formal$ = 24
|
||
?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
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 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 8
|
||
__formal$ = 16
|
||
?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
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 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAX_K@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 8
|
||
__formal$ = 16
|
||
?__empty_global_delete@@YAXPEAX_K@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
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 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAX_K@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
; Function compile flags: /Odtp
|
||
; File D:\Works\Corpsms_2010\public\ProxySocket\CBase64Coding.cpp
|
||
; COMDAT ?__empty_global_delete@@YAXPEAX@Z
|
||
_TEXT SEGMENT
|
||
__formal$ = 8
|
||
?__empty_global_delete@@YAXPEAX@Z PROC ; __empty_global_delete, COMDAT
|
||
|
||
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
||
00005 c3 ret 0
|
||
?__empty_global_delete@@YAXPEAX@Z ENDP ; __empty_global_delete
|
||
_TEXT ENDS
|
||
END
|