SmsCenter/Release_Unicode/MailCoder.cod

3366 lines
88 KiB
Plaintext
Raw Normal View History

2025-01-03 16:47:25 +08:00
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.34.31933.0
include listing.inc
2025-01-03 16:47:25 +08:00
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
PUBLIC ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
PUBLIC ?BASE64_DECODE_TABLE@CMailCoder@@2QBIB ; CMailCoder::BASE64_DECODE_TABLE
PUBLIC ?QUOTED_ENCODE_TABLE@CMailCoder@@2QBEB ; CMailCoder::QUOTED_ENCODE_TABLE
CONST SEGMENT
?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB DB 041H ; CMailCoder::BASE64_ENCODE_TABLE
DB 042H
DB 043H
DB 044H
DB 045H
DB 046H
DB 047H
DB 048H
DB 049H
DB 04aH
DB 04bH
DB 04cH
DB 04dH
DB 04eH
DB 04fH
DB 050H
DB 051H
DB 052H
DB 053H
DB 054H
DB 055H
DB 056H
DB 057H
DB 058H
DB 059H
DB 05aH
DB 061H
DB 062H
DB 063H
DB 064H
DB 065H
DB 066H
DB 067H
DB 068H
DB 069H
DB 06aH
DB 06bH
DB 06cH
DB 06dH
DB 06eH
DB 06fH
DB 070H
DB 071H
DB 072H
DB 073H
DB 074H
DB 075H
DB 076H
DB 077H
DB 078H
DB 079H
DB 07aH
DB 030H
DB 031H
DB 032H
DB 033H
DB 034H
DB 035H
DB 036H
DB 037H
DB 038H
DB 039H
DB 02bH
DB 02fH
?BASE64_DECODE_TABLE@CMailCoder@@2QBIB DD 0ffH ; CMailCoder::BASE64_DECODE_TABLE
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 03eH
DD 0ffH
DD 0ffH
DD 0ffH
DD 03fH
DD 034H
DD 035H
DD 036H
DD 037H
DD 038H
DD 039H
DD 03aH
DD 03bH
DD 03cH
DD 03dH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 00H
DD 01H
DD 02H
DD 03H
DD 04H
DD 05H
DD 06H
DD 07H
DD 08H
DD 09H
DD 0aH
DD 0bH
DD 0cH
DD 0dH
DD 0eH
DD 0fH
DD 010H
DD 011H
DD 012H
DD 013H
DD 014H
DD 015H
DD 016H
DD 017H
DD 018H
DD 019H
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 01aH
DD 01bH
DD 01cH
DD 01dH
DD 01eH
DD 01fH
DD 020H
DD 021H
DD 022H
DD 023H
DD 024H
DD 025H
DD 026H
DD 027H
DD 028H
DD 029H
DD 02aH
DD 02bH
DD 02cH
DD 02dH
DD 02eH
DD 02fH
DD 030H
DD 031H
DD 032H
DD 033H
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
DD 0ffH
?QUOTED_ENCODE_TABLE@CMailCoder@@2QBEB DB 0ffH ; CMailCoder::QUOTED_ENCODE_TABLE
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0aH
DB 0ffH
DB 0ffH
DB 0dH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 021H
DB 022H
DB 023H
DB 024H
DB 025H
DB 026H
DB 027H
DB 028H
DB 029H
DB 02aH
DB 02bH
DB 02cH
DB 02dH
DB 02eH
DB 02fH
DB 030H
DB 031H
DB 032H
DB 033H
DB 034H
DB 035H
DB 036H
DB 037H
DB 038H
DB 039H
DB 03aH
DB 03bH
DB 03cH
DB 0ffH
DB 03eH
DB 03fH
DB 040H
DB 041H
DB 042H
DB 043H
DB 044H
DB 045H
DB 046H
DB 047H
DB 048H
DB 049H
DB 04aH
DB 04bH
DB 04cH
DB 04dH
DB 04eH
DB 04fH
DB 050H
DB 051H
DB 052H
DB 053H
DB 054H
DB 055H
DB 056H
DB 057H
DB 058H
DB 059H
DB 05aH
DB 05bH
DB 05cH
DB 05dH
DB 05eH
DB 05fH
DB 060H
DB 061H
DB 062H
DB 063H
DB 064H
DB 065H
DB 066H
DB 067H
DB 068H
DB 069H
DB 06aH
DB 06bH
DB 06cH
DB 06dH
DB 06eH
DB 06fH
DB 070H
DB 071H
DB 072H
DB 073H
DB 074H
DB 075H
DB 076H
DB 077H
DB 078H
DB 079H
DB 07aH
DB 07bH
DB 07cH
DB 07dH
DB 07eH
DB 07fH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
DB 0ffH
$SG321191 DB '=?', 00H
ORG $+1
$SG321194 DB '?B?', 00H
$SG321197 DB '?=', 00H
ORG $+1
$SG321199 DB '?Q?', 00H
$SG321202 DB '?=', 00H
2025-01-03 16:47:25 +08:00
CONST ENDS
_DATA SEGMENT
?m_LineWidth@CMailCoder@@2IA DD 04cH ; CMailCoder::m_LineWidth
_DATA 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
2025-01-03 16:47:25 +08:00
PUBLIC ?DecToHex@CMailCoder@@CAEE@Z ; CMailCoder::DecToHex
PUBLIC ?HexToDec@CMailCoder@@CAEE@Z ; CMailCoder::HexToDec
PUBLIC ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ; CMailCoder::FoundChar
PUBLIC ?email_decode@CMailCoder@@QEAAHPEADI0@Z ; CMailCoder::email_decode
2025-01-03 16:47:25 +08:00
PUBLIC ?Base64EncodeSize@CMailCoder@@SAHH@Z ; CMailCoder::Base64EncodeSize
PUBLIC ?Base64DecodeSize@CMailCoder@@SAHH@Z ; CMailCoder::Base64DecodeSize
PUBLIC ?UUEncodeSize@CMailCoder@@SAHH@Z ; CMailCoder::UUEncodeSize
PUBLIC ?UUDecodeSize@CMailCoder@@SAHH@Z ; CMailCoder::UUDecodeSize
PUBLIC ?QuotedEncodeSize@CMailCoder@@SAHH@Z ; CMailCoder::QuotedEncodeSize
PUBLIC ?base64_encode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::base64_encode
PUBLIC ?base64_decode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::base64_decode
PUBLIC ?UU_encode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::UU_encode
PUBLIC ?UU_decode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::UU_decode
PUBLIC ?quoted_encode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::quoted_encode
PUBLIC ?quoted_decode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::quoted_decode
EXTRN __report_rangecheckfailure:PROC
EXTRN memcpy:PROC
EXTRN memset:PROC
EXTRN strcmp:PROC
EXTRN strlen:PROC
EXTRN strncpy:PROC
EXTRN __GSHandlerCheck:PROC
2025-01-03 16:47:25 +08:00
EXTRN __chkstk:PROC
EXTRN __security_check_cookie:PROC
EXTRN __security_cookie:QWORD
; COMDAT pdata
pdata SEGMENT
$pdata$?DecToHex@CMailCoder@@CAEE@Z DD imagerel $LN5
DD imagerel $LN5+51
DD imagerel $unwind$?DecToHex@CMailCoder@@CAEE@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?HexToDec@CMailCoder@@CAEE@Z DD imagerel $LN5
DD imagerel $LN5+51
DD imagerel $unwind$?HexToDec@CMailCoder@@CAEE@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?FoundChar@CMailCoder@@QEAAHPEAD0J@Z DD imagerel $LN10
DD imagerel $LN10+279
DD imagerel $unwind$?FoundChar@CMailCoder@@QEAAHPEAD0J@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?email_decode@CMailCoder@@QEAAHPEADI0@Z DD imagerel $LN13
DD imagerel $LN13+667
DD imagerel $unwind$?email_decode@CMailCoder@@QEAAHPEADI0@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?Base64EncodeSize@CMailCoder@@SAHH@Z DD imagerel $LN3
DD imagerel $LN3+65
DD imagerel $unwind$?Base64EncodeSize@CMailCoder@@SAHH@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?UUEncodeSize@CMailCoder@@SAHH@Z DD imagerel $LN3
DD imagerel $LN3+70
DD imagerel $unwind$?UUEncodeSize@CMailCoder@@SAHH@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?QuotedEncodeSize@CMailCoder@@SAHH@Z DD imagerel $LN3
DD imagerel $LN3+56
DD imagerel $unwind$?QuotedEncodeSize@CMailCoder@@SAHH@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?base64_encode@CMailCoder@@SAHPEADI0@Z DD imagerel $LN14
DD imagerel $LN14+980
DD imagerel $unwind$?base64_encode@CMailCoder@@SAHPEADI0@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?base64_decode@CMailCoder@@SAHPEADI0@Z DD imagerel $LN16
DD imagerel $LN16+480
DD imagerel $unwind$?base64_decode@CMailCoder@@SAHPEADI0@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?UU_encode@CMailCoder@@SAHPEADI0@Z DD imagerel $LN19
DD imagerel $LN19+654
DD imagerel $unwind$?UU_encode@CMailCoder@@SAHPEADI0@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?UU_decode@CMailCoder@@SAHPEADI0@Z DD imagerel $LN18
DD imagerel $LN18+508
DD imagerel $unwind$?UU_decode@CMailCoder@@SAHPEADI0@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?quoted_encode@CMailCoder@@SAHPEADI0@Z DD imagerel $LN12
DD imagerel $LN12+456
DD imagerel $unwind$?quoted_encode@CMailCoder@@SAHPEADI0@Z
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$?quoted_decode@CMailCoder@@SAHPEADI0@Z DD imagerel $LN10
DD imagerel $LN10+408
DD imagerel $unwind$?quoted_decode@CMailCoder@@SAHPEADI0@Z
pdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?quoted_decode@CMailCoder@@SAHPEADI0@Z DD 011201H
DD 08212H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?quoted_encode@CMailCoder@@SAHPEADI0@Z DD 011201H
DD 08212H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?UU_decode@CMailCoder@@SAHPEADI0@Z DD 011201H
DD 0a212H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?UU_encode@CMailCoder@@SAHPEADI0@Z DD 011201H
DD 06212H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?base64_decode@CMailCoder@@SAHPEADI0@Z DD 011201H
DD 06212H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?base64_encode@CMailCoder@@SAHPEADI0@Z DD 011201H
DD 08212H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?QuotedEncodeSize@CMailCoder@@SAHH@Z DD 010801H
DD 02208H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?UUEncodeSize@CMailCoder@@SAHH@Z DD 010801H
DD 02208H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?Base64EncodeSize@CMailCoder@@SAHH@Z DD 010801H
DD 02208H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?email_decode@CMailCoder@@QEAAHPEADI0@Z DD 011801H
DD 0c218H
xdata ENDS
2025-01-03 16:47:25 +08:00
; COMDAT voltbl
voltbl SEGMENT
_volmd DW 02bH
DW 0ffH
2025-01-03 16:47:25 +08:00
voltbl ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?FoundChar@CMailCoder@@QEAAHPEAD0J@Z DD 023319H
DD 020b0121H
DD imagerel __GSHandlerCheck
DD 01040H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?HexToDec@CMailCoder@@CAEE@Z DD 010801H
DD 02208H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$?DecToHex@CMailCoder@@CAEE@Z DD 010801H
DD 02208H
xdata ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?quoted_decode@CMailCoder@@SAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
tv74 = 32
tv83 = 33
tv88 = 34
nA$ = 35
nB$ = 36
C$ = 40
InLimitPtr$ = 48
pDestOrg$ = 56
pSrc$ = 80
nSize$ = 88
pDest$ = 96
?quoted_decode@CMailCoder@@SAHPEADI0@Z PROC ; CMailCoder::quoted_decode, COMDAT
2025-01-03 16:47:25 +08:00
; 447 : {
$LN10:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 48 83 ec 48 sub rsp, 72 ; 00000048H
2025-01-03 16:47:25 +08:00
; 448 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00012 48 83 7c 24 50
00 cmp QWORD PTR pSrc$[rsp], 0
00018 74 0f je SHORT $LN5@quoted_dec
0001a 48 83 7c 24 60
00 cmp QWORD PTR pDest$[rsp], 0
00020 74 07 je SHORT $LN5@quoted_dec
00022 83 7c 24 58 00 cmp DWORD PTR nSize$[rsp], 0
00027 77 07 ja SHORT $LN4@quoted_dec
2025-01-03 16:47:25 +08:00
$LN5@quoted_dec:
00029 33 c0 xor eax, eax
0002b e9 63 01 00 00 jmp $LN1@quoted_dec
2025-01-03 16:47:25 +08:00
$LN4@quoted_dec:
; 449 :
; 450 : unsigned char nA, nB;
; 451 : char C[2]; //<2F><>ʱ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>
; 452 :
; 453 : char *InLimitPtr= pSrc + nSize;
00030 8b 44 24 58 mov eax, DWORD PTR nSize$[rsp]
00034 48 8b 4c 24 50 mov rcx, QWORD PTR pSrc$[rsp]
00039 48 03 c8 add rcx, rax
0003c 48 8b c1 mov rax, rcx
0003f 48 89 44 24 30 mov QWORD PTR InLimitPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 454 : char *pDestOrg = pDest;
00044 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
00049 48 89 44 24 38 mov QWORD PTR pDestOrg$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN2@quoted_dec:
; 455 :
; 456 : while (pSrc < InLimitPtr)
0004e 48 8b 44 24 30 mov rax, QWORD PTR InLimitPtr$[rsp]
00053 48 39 44 24 50 cmp QWORD PTR pSrc$[rsp], rax
00058 0f 83 25 01 00
2025-01-03 16:47:25 +08:00
00 jae $LN3@quoted_dec
; 457 : {
; 458 : C[0] = *pSrc++; //<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD>ַ<EFBFBD>
0005e 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
00063 0f b6 00 movzx eax, BYTE PTR [rax]
00066 88 44 24 20 mov BYTE PTR tv74[rsp], al
0006a 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
0006f 48 ff c0 inc rax
00072 48 89 44 24 50 mov QWORD PTR pSrc$[rsp], rax
00077 b8 01 00 00 00 mov eax, 1
0007c 48 6b c0 00 imul rax, rax, 0
00080 0f b6 4c 24 20 movzx ecx, BYTE PTR tv74[rsp]
00085 88 4c 04 28 mov BYTE PTR C$[rsp+rax], cl
2025-01-03 16:47:25 +08:00
; 459 : if (C[0] == '=') //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
00089 b8 01 00 00 00 mov eax, 1
0008e 48 6b c0 00 imul rax, rax, 0
00092 0f be 44 04 28 movsx eax, BYTE PTR C$[rsp+rax]
00097 83 f8 3d cmp eax, 61 ; 0000003dH
0009a 0f 85 bc 00 00
2025-01-03 16:47:25 +08:00
00 jne $LN6@quoted_dec
; 460 : {
; 461 : C[0] = *pSrc++; //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
000a0 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
000a5 0f b6 00 movzx eax, BYTE PTR [rax]
000a8 88 44 24 21 mov BYTE PTR tv83[rsp], al
000ac 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
000b1 48 ff c0 inc rax
000b4 48 89 44 24 50 mov QWORD PTR pSrc$[rsp], rax
000b9 b8 01 00 00 00 mov eax, 1
000be 48 6b c0 00 imul rax, rax, 0
000c2 0f b6 4c 24 21 movzx ecx, BYTE PTR tv83[rsp]
000c7 88 4c 04 28 mov BYTE PTR C$[rsp+rax], cl
2025-01-03 16:47:25 +08:00
; 462 : C[1] = *pSrc++;
000cb 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
000d0 0f b6 00 movzx eax, BYTE PTR [rax]
000d3 88 44 24 22 mov BYTE PTR tv88[rsp], al
000d7 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
000dc 48 ff c0 inc rax
000df 48 89 44 24 50 mov QWORD PTR pSrc$[rsp], rax
000e4 b8 01 00 00 00 mov eax, 1
000e9 48 6b c0 01 imul rax, rax, 1
000ed 0f b6 4c 24 22 movzx ecx, BYTE PTR tv88[rsp]
000f2 88 4c 04 28 mov BYTE PTR C$[rsp+rax], cl
2025-01-03 16:47:25 +08:00
; 463 :
; 464 : if (C[0] != '\r')
000f6 b8 01 00 00 00 mov eax, 1
000fb 48 6b c0 00 imul rax, rax, 0
000ff 0f be 44 04 28 movsx eax, BYTE PTR C$[rsp+rax]
00104 83 f8 0d cmp eax, 13
00107 74 51 je SHORT $LN8@quoted_dec
2025-01-03 16:47:25 +08:00
; 465 : {
; 466 : nA = HexToDec(C[0]); //<2F><><EFBFBD><EFBFBD><EFBFBD>
00109 b8 01 00 00 00 mov eax, 1
0010e 48 6b c0 00 imul rax, rax, 0
00112 0f b6 4c 04 28 movzx ecx, BYTE PTR C$[rsp+rax]
00117 e8 00 00 00 00 call ?HexToDec@CMailCoder@@CAEE@Z ; CMailCoder::HexToDec
0011c 88 44 24 23 mov BYTE PTR nA$[rsp], al
2025-01-03 16:47:25 +08:00
; 467 : nB = HexToDec(C[1]);
00120 b8 01 00 00 00 mov eax, 1
00125 48 6b c0 01 imul rax, rax, 1
00129 0f b6 4c 04 28 movzx ecx, BYTE PTR C$[rsp+rax]
0012e e8 00 00 00 00 call ?HexToDec@CMailCoder@@CAEE@Z ; CMailCoder::HexToDec
00133 88 44 24 24 mov BYTE PTR nB$[rsp], al
2025-01-03 16:47:25 +08:00
; 468 : *pDest++ = (nA << 4) + nB;
00137 0f b6 44 24 23 movzx eax, BYTE PTR nA$[rsp]
0013c c1 e0 04 shl eax, 4
0013f 0f b6 4c 24 24 movzx ecx, BYTE PTR nB$[rsp]
00144 03 c1 add eax, ecx
00146 48 8b 4c 24 60 mov rcx, QWORD PTR pDest$[rsp]
0014b 88 01 mov BYTE PTR [rcx], al
0014d 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
00152 48 ff c0 inc rax
00155 48 89 44 24 60 mov QWORD PTR pDest$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN8@quoted_dec:
; 469 : }
; 470 : }
0015a eb 22 jmp SHORT $LN7@quoted_dec
2025-01-03 16:47:25 +08:00
$LN6@quoted_dec:
; 471 : else //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 472 : {
; 473 : *pDest++ = C[0];
0015c b8 01 00 00 00 mov eax, 1
00161 48 6b c0 00 imul rax, rax, 0
00165 48 8b 4c 24 60 mov rcx, QWORD PTR pDest$[rsp]
0016a 0f b6 44 04 28 movzx eax, BYTE PTR C$[rsp+rax]
0016f 88 01 mov BYTE PTR [rcx], al
00171 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
00176 48 ff c0 inc rax
00179 48 89 44 24 60 mov QWORD PTR pDest$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN7@quoted_dec:
; 474 : }
; 475 : }
0017e e9 cb fe ff ff jmp $LN2@quoted_dec
2025-01-03 16:47:25 +08:00
$LN3@quoted_dec:
; 476 : return (unsigned int)(pDest - pDestOrg);
00183 48 8b 44 24 38 mov rax, QWORD PTR pDestOrg$[rsp]
00188 48 8b 4c 24 60 mov rcx, QWORD PTR pDest$[rsp]
0018d 48 2b c8 sub rcx, rax
00190 48 8b c1 mov rax, rcx
2025-01-03 16:47:25 +08:00
$LN1@quoted_dec:
; 477 : }
00193 48 83 c4 48 add rsp, 72 ; 00000048H
00197 c3 ret 0
?quoted_decode@CMailCoder@@SAHPEADI0@Z ENDP ; CMailCoder::quoted_decode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?quoted_encode@CMailCoder@@SAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
B$ = 32
tv74 = 33
Len$ = 36
OutPtr$ = 40
InPtr$ = 48
InLimitPtr$ = 56
pSrc$ = 80
nSize$ = 88
pDest$ = 96
?quoted_encode@CMailCoder@@SAHPEADI0@Z PROC ; CMailCoder::quoted_encode, COMDAT
2025-01-03 16:47:25 +08:00
; 401 : {
$LN12:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 48 83 ec 48 sub rsp, 72 ; 00000048H
2025-01-03 16:47:25 +08:00
; 402 : unsigned int Len;
; 403 : unsigned char B; //<2F><>ʱ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>
; 404 : char *InPtr, *InLimitPtr;
; 405 : char *OutPtr;
; 406 :
; 407 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00012 48 83 7c 24 50
00 cmp QWORD PTR pSrc$[rsp], 0
00018 74 0f je SHORT $LN7@quoted_enc
0001a 48 83 7c 24 60
00 cmp QWORD PTR pDest$[rsp], 0
00020 74 07 je SHORT $LN7@quoted_enc
00022 83 7c 24 58 00 cmp DWORD PTR nSize$[rsp], 0
00027 77 07 ja SHORT $LN6@quoted_enc
2025-01-03 16:47:25 +08:00
$LN7@quoted_enc:
00029 33 c0 xor eax, eax
0002b e9 93 01 00 00 jmp $LN1@quoted_enc
2025-01-03 16:47:25 +08:00
$LN6@quoted_enc:
; 408 :
; 409 : InPtr = pSrc;
00030 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
00035 48 89 44 24 30 mov QWORD PTR InPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 410 : InLimitPtr= InPtr + nSize;
0003a 8b 44 24 58 mov eax, DWORD PTR nSize$[rsp]
0003e 48 8b 4c 24 30 mov rcx, QWORD PTR InPtr$[rsp]
00043 48 03 c8 add rcx, rax
00046 48 8b c1 mov rax, rcx
00049 48 89 44 24 38 mov QWORD PTR InLimitPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 411 : OutPtr = pDest;
0004e 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
00053 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN2@quoted_enc:
; 412 :
; 413 : while (InPtr < InLimitPtr)
00058 48 8b 44 24 38 mov rax, QWORD PTR InLimitPtr$[rsp]
0005d 48 39 44 24 30 cmp QWORD PTR InPtr$[rsp], rax
00062 0f 83 43 01 00
2025-01-03 16:47:25 +08:00
00 jae $LN3@quoted_enc
; 414 : {
; 415 : Len = 0;
00068 c7 44 24 24 00
00 00 00 mov DWORD PTR Len$[rsp], 0
2025-01-03 16:47:25 +08:00
$LN4@quoted_enc:
; 416 : while ((InPtr < InLimitPtr) && (Len < m_LineWidth))
00070 48 8b 44 24 38 mov rax, QWORD PTR InLimitPtr$[rsp]
00075 48 39 44 24 30 cmp QWORD PTR InPtr$[rsp], rax
0007a 0f 83 db 00 00
2025-01-03 16:47:25 +08:00
00 jae $LN5@quoted_enc
00080 8b 05 00 00 00
00 mov eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00086 39 44 24 24 cmp DWORD PTR Len$[rsp], eax
0008a 0f 83 cb 00 00
2025-01-03 16:47:25 +08:00
00 jae $LN5@quoted_enc
; 417 : {
; 418 : B = *InPtr++;
00090 48 8b 44 24 30 mov rax, QWORD PTR InPtr$[rsp]
00095 0f b6 00 movzx eax, BYTE PTR [rax]
00098 88 44 24 21 mov BYTE PTR tv74[rsp], al
0009c 48 8b 44 24 30 mov rax, QWORD PTR InPtr$[rsp]
000a1 48 ff c0 inc rax
000a4 48 89 44 24 30 mov QWORD PTR InPtr$[rsp], rax
000a9 0f b6 44 24 21 movzx eax, BYTE PTR tv74[rsp]
000ae 88 44 24 20 mov BYTE PTR B$[rsp], al
2025-01-03 16:47:25 +08:00
; 419 : if (QUOTED_ENCODE_TABLE[ B ] == 255)
000b2 0f b6 44 24 20 movzx eax, BYTE PTR B$[rsp]
000b7 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?QUOTED_ENCODE_TABLE@CMailCoder@@2QBEB ; CMailCoder::QUOTED_ENCODE_TABLE
000be 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
000c2 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
000c7 75 6a jne SHORT $LN8@quoted_enc
2025-01-03 16:47:25 +08:00
; 420 : {
; 421 : *OutPtr++ = '=';
000c9 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
000ce c6 00 3d mov BYTE PTR [rax], 61 ; 0000003dH
000d1 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
000d6 48 ff c0 inc rax
000d9 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 422 : *OutPtr++ = DecToHex(B >> 4);
000de 0f b6 44 24 20 movzx eax, BYTE PTR B$[rsp]
000e3 c1 f8 04 sar eax, 4
000e6 0f b6 c8 movzx ecx, al
000e9 e8 00 00 00 00 call ?DecToHex@CMailCoder@@CAEE@Z ; CMailCoder::DecToHex
000ee 48 8b 4c 24 28 mov rcx, QWORD PTR OutPtr$[rsp]
000f3 88 01 mov BYTE PTR [rcx], al
000f5 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
000fa 48 ff c0 inc rax
000fd 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 423 : *OutPtr++ = DecToHex(B & 0x0f);
00102 0f b6 44 24 20 movzx eax, BYTE PTR B$[rsp]
00107 83 e0 0f and eax, 15
0010a 0f b6 c8 movzx ecx, al
0010d e8 00 00 00 00 call ?DecToHex@CMailCoder@@CAEE@Z ; CMailCoder::DecToHex
00112 48 8b 4c 24 28 mov rcx, QWORD PTR OutPtr$[rsp]
00117 88 01 mov BYTE PTR [rcx], al
00119 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
0011e 48 ff c0 inc rax
00121 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 424 : Len+=3;
00126 8b 44 24 24 mov eax, DWORD PTR Len$[rsp]
0012a 83 c0 03 add eax, 3
0012d 89 44 24 24 mov DWORD PTR Len$[rsp], eax
2025-01-03 16:47:25 +08:00
; 425 : }
00131 eb 23 jmp SHORT $LN9@quoted_enc
2025-01-03 16:47:25 +08:00
$LN8@quoted_enc:
; 426 : else
; 427 : {
; 428 : *OutPtr++ = B;
00133 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
00138 0f b6 4c 24 20 movzx ecx, BYTE PTR B$[rsp]
0013d 88 08 mov BYTE PTR [rax], cl
0013f 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
00144 48 ff c0 inc rax
00147 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 429 : Len++;
0014c 8b 44 24 24 mov eax, DWORD PTR Len$[rsp]
00150 ff c0 inc eax
00152 89 44 24 24 mov DWORD PTR Len$[rsp], eax
2025-01-03 16:47:25 +08:00
$LN9@quoted_enc:
; 430 : }
; 431 : }
00156 e9 15 ff ff ff jmp $LN4@quoted_enc
2025-01-03 16:47:25 +08:00
$LN5@quoted_enc:
; 432 : if (Len >= m_LineWidth)
0015b 8b 05 00 00 00
00 mov eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00161 39 44 24 24 cmp DWORD PTR Len$[rsp], eax
00165 72 3f jb SHORT $LN10@quoted_enc
2025-01-03 16:47:25 +08:00
; 433 : {
; 434 : *OutPtr++ = '=';
00167 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
0016c c6 00 3d mov BYTE PTR [rax], 61 ; 0000003dH
0016f 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
00174 48 ff c0 inc rax
00177 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 435 : *OutPtr++ = '\r'; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0017c 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
00181 c6 00 0d mov BYTE PTR [rax], 13
00184 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
00189 48 ff c0 inc rax
0018c 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 436 : *OutPtr++ = '\n';
00191 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
00196 c6 00 0a mov BYTE PTR [rax], 10
00199 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
0019e 48 ff c0 inc rax
001a1 48 89 44 24 28 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN10@quoted_enc:
; 437 : }
; 438 : }
001a6 e9 ad fe ff ff jmp $LN2@quoted_enc
2025-01-03 16:47:25 +08:00
$LN3@quoted_enc:
; 439 : *OutPtr = '\0';
001ab 48 8b 44 24 28 mov rax, QWORD PTR OutPtr$[rsp]
001b0 c6 00 00 mov BYTE PTR [rax], 0
2025-01-03 16:47:25 +08:00
; 440 : return (unsigned int) (OutPtr - pDest);
001b3 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
001b8 48 8b 4c 24 28 mov rcx, QWORD PTR OutPtr$[rsp]
001bd 48 2b c8 sub rcx, rax
001c0 48 8b c1 mov rax, rcx
2025-01-03 16:47:25 +08:00
$LN1@quoted_enc:
; 441 : }
001c3 48 83 c4 48 add rsp, 72 ; 00000048H
001c7 c3 ret 0
?quoted_encode@CMailCoder@@SAHPEADI0@Z ENDP ; CMailCoder::quoted_encode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UU_decode@CMailCoder@@SAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
Tmp$ = 32
tv75 = 33
C$ = 36
CurrIndex$ = 40
Index$ = 44
InPtr$ = 48
OutPtr$ = 56
InLimitPtr$ = 64
pSrc$ = 96
nSize$ = 104
pDest$ = 112
?UU_decode@CMailCoder@@SAHPEADI0@Z PROC ; CMailCoder::UU_decode, COMDAT
2025-01-03 16:47:25 +08:00
; 341 : {
$LN18:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 48 83 ec 58 sub rsp, 88 ; 00000058H
2025-01-03 16:47:25 +08:00
; 342 : char C[4]; //<2F><>ʱ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>
; 343 : char Tmp;
; 344 : int CurrIndex, Index;
; 345 : char *InPtr, *InLimitPtr;
; 346 : char *OutPtr;
; 347 :
; 348 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00012 48 83 7c 24 60
00 cmp QWORD PTR pSrc$[rsp], 0
00018 74 0f je SHORT $LN8@UU_decode
0001a 48 83 7c 24 70
00 cmp QWORD PTR pDest$[rsp], 0
00020 74 07 je SHORT $LN8@UU_decode
00022 83 7c 24 68 00 cmp DWORD PTR nSize$[rsp], 0
00027 77 07 ja SHORT $LN7@UU_decode
2025-01-03 16:47:25 +08:00
$LN8@UU_decode:
00029 33 c0 xor eax, eax
0002b e9 c7 01 00 00 jmp $LN1@UU_decode
2025-01-03 16:47:25 +08:00
$LN7@UU_decode:
; 349 :
; 350 : CurrIndex = 0;
00030 c7 44 24 28 00
00 00 00 mov DWORD PTR CurrIndex$[rsp], 0
2025-01-03 16:47:25 +08:00
; 351 :
; 352 : InPtr = pSrc;
00038 48 8b 44 24 60 mov rax, QWORD PTR pSrc$[rsp]
0003d 48 89 44 24 30 mov QWORD PTR InPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 353 : InLimitPtr= InPtr + nSize;
00042 8b 44 24 68 mov eax, DWORD PTR nSize$[rsp]
00046 48 8b 4c 24 30 mov rcx, QWORD PTR InPtr$[rsp]
0004b 48 03 c8 add rcx, rax
0004e 48 8b c1 mov rax, rcx
00051 48 89 44 24 40 mov QWORD PTR InLimitPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 354 : OutPtr = pDest;
00056 48 8b 44 24 70 mov rax, QWORD PTR pDest$[rsp]
0005b 48 89 44 24 38 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN2@UU_decode:
; 355 :
; 356 : while (InPtr != InLimitPtr) //<2F><>ȡ4<C8A1><34><EFBFBD>ַ<EFBFBD>
00060 48 8b 44 24 40 mov rax, QWORD PTR InLimitPtr$[rsp]
00065 48 39 44 24 30 cmp QWORD PTR InPtr$[rsp], rax
0006a 0f 84 7b 01 00
2025-01-03 16:47:25 +08:00
00 je $LN3@UU_decode
; 357 : {
; 358 : memset(C, 0, sizeof(C));
00070 41 b8 04 00 00
00 mov r8d, 4
00076 33 d2 xor edx, edx
00078 48 8d 4c 24 24 lea rcx, QWORD PTR C$[rsp]
0007d e8 00 00 00 00 call memset
2025-01-03 16:47:25 +08:00
; 359 : Index = 0;
00082 c7 44 24 2c 00
00 00 00 mov DWORD PTR Index$[rsp], 0
2025-01-03 16:47:25 +08:00
$LN6@UU_decode:
; 360 : do
; 361 : {
; 362 : Tmp = *InPtr++;
0008a 48 8b 44 24 30 mov rax, QWORD PTR InPtr$[rsp]
0008f 0f b6 00 movzx eax, BYTE PTR [rax]
00092 88 44 24 21 mov BYTE PTR tv75[rsp], al
00096 48 8b 44 24 30 mov rax, QWORD PTR InPtr$[rsp]
0009b 48 ff c0 inc rax
0009e 48 89 44 24 30 mov QWORD PTR InPtr$[rsp], rax
000a3 0f b6 44 24 21 movzx eax, BYTE PTR tv75[rsp]
000a8 88 44 24 20 mov BYTE PTR Tmp$[rsp], al
2025-01-03 16:47:25 +08:00
; 363 : if (Tmp == 0x60)
000ac 0f be 44 24 20 movsx eax, BYTE PTR Tmp$[rsp]
000b1 83 f8 60 cmp eax, 96 ; 00000060H
000b4 75 07 jne SHORT $LN9@UU_decode
2025-01-03 16:47:25 +08:00
; 364 : {
; 365 : Tmp = 0x20; //Ϊ<>˼<EFBFBD><CBBC><EFBFBD>OutLook Express
000b6 c6 44 24 20 20 mov BYTE PTR Tmp$[rsp], 32 ; 00000020H
2025-01-03 16:47:25 +08:00
; 366 : }
000bb eb 1f jmp SHORT $LN10@UU_decode
2025-01-03 16:47:25 +08:00
$LN9@UU_decode:
; 367 : else if (Tmp =='\r') //<2F>׸<EFBFBD><D7B8><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
000bd 0f be 44 24 20 movsx eax, BYTE PTR Tmp$[rsp]
000c2 83 f8 0d cmp eax, 13
000c5 75 15 jne SHORT $LN11@UU_decode
2025-01-03 16:47:25 +08:00
; 368 : {
; 369 : InPtr++;
000c7 48 8b 44 24 30 mov rax, QWORD PTR InPtr$[rsp]
000cc 48 ff c0 inc rax
000cf 48 89 44 24 30 mov QWORD PTR InPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 370 : CurrIndex = 0;
000d4 c7 44 24 28 00
00 00 00 mov DWORD PTR CurrIndex$[rsp], 0
$LN11@UU_decode:
2025-01-03 16:47:25 +08:00
$LN10@UU_decode:
; 371 : }
; 372 :
; 373 : if ((Tmp > 0x20) || ( CurrIndex > 0 ))
000dc 0f be 44 24 20 movsx eax, BYTE PTR Tmp$[rsp]
000e1 83 f8 20 cmp eax, 32 ; 00000020H
000e4 7f 07 jg SHORT $LN13@UU_decode
000e6 83 7c 24 28 00 cmp DWORD PTR CurrIndex$[rsp], 0
000eb 7e 36 jle SHORT $LN12@UU_decode
2025-01-03 16:47:25 +08:00
$LN13@UU_decode:
; 374 : {
; 375 : Tmp = Tmp - 0x20;
000ed 0f be 44 24 20 movsx eax, BYTE PTR Tmp$[rsp]
000f2 83 e8 20 sub eax, 32 ; 00000020H
000f5 88 44 24 20 mov BYTE PTR Tmp$[rsp], al
2025-01-03 16:47:25 +08:00
; 376 : if (CurrIndex == 0)
000f9 83 7c 24 28 00 cmp DWORD PTR CurrIndex$[rsp], 0
000fe 75 0b jne SHORT $LN14@UU_decode
2025-01-03 16:47:25 +08:00
; 377 : {
; 378 : CurrIndex = Tmp;
00100 0f be 44 24 20 movsx eax, BYTE PTR Tmp$[rsp]
00105 89 44 24 28 mov DWORD PTR CurrIndex$[rsp], eax
2025-01-03 16:47:25 +08:00
; 379 : }
00109 eb 18 jmp SHORT $LN15@UU_decode
2025-01-03 16:47:25 +08:00
$LN14@UU_decode:
; 380 : else
; 381 : {
; 382 : C[Index] = Tmp; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׷<EFBFBD><D7B7><EFBFBD>ַ<EFBFBD>
0010b 48 63 44 24 2c movsxd rax, DWORD PTR Index$[rsp]
00110 0f b6 4c 24 20 movzx ecx, BYTE PTR Tmp$[rsp]
00115 88 4c 04 24 mov BYTE PTR C$[rsp+rax], cl
2025-01-03 16:47:25 +08:00
; 383 : Index++;
00119 8b 44 24 2c mov eax, DWORD PTR Index$[rsp]
0011d ff c0 inc eax
0011f 89 44 24 2c mov DWORD PTR Index$[rsp], eax
$LN15@UU_decode:
$LN12@UU_decode:
2025-01-03 16:47:25 +08:00
; 384 : }
; 385 : }
; 386 : }
; 387 : while ((InPtr < InLimitPtr) && (Index < sizeof(C)));
00123 48 8b 44 24 40 mov rax, QWORD PTR InLimitPtr$[rsp]
00128 48 39 44 24 30 cmp QWORD PTR InPtr$[rsp], rax
0012d 73 0f jae SHORT $LN16@UU_decode
0012f 48 63 44 24 2c movsxd rax, DWORD PTR Index$[rsp]
00134 48 83 f8 04 cmp rax, 4
00138 0f 82 4c ff ff
2025-01-03 16:47:25 +08:00
ff jb $LN6@UU_decode
$LN16@UU_decode:
2025-01-03 16:47:25 +08:00
; 388 :
; 389 : OutPtr[0] = (char) ((C[0] << 2) + (C[1] >> 4));
0013e b8 01 00 00 00 mov eax, 1
00143 48 6b c0 00 imul rax, rax, 0
00147 0f be 44 04 24 movsx eax, BYTE PTR C$[rsp+rax]
0014c b9 01 00 00 00 mov ecx, 1
00151 48 6b c9 01 imul rcx, rcx, 1
00155 0f be 4c 0c 24 movsx ecx, BYTE PTR C$[rsp+rcx]
0015a c1 f9 04 sar ecx, 4
0015d 8d 04 81 lea eax, DWORD PTR [rcx+rax*4]
00160 b9 01 00 00 00 mov ecx, 1
00165 48 6b c9 00 imul rcx, rcx, 0
00169 48 8b 54 24 38 mov rdx, QWORD PTR OutPtr$[rsp]
0016e 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 390 : OutPtr[1] = (char) ((C[1] << 4) + (C[2] >> 2));
00171 b8 01 00 00 00 mov eax, 1
00176 48 6b c0 01 imul rax, rax, 1
0017a 0f be 44 04 24 movsx eax, BYTE PTR C$[rsp+rax]
0017f c1 e0 04 shl eax, 4
00182 b9 01 00 00 00 mov ecx, 1
00187 48 6b c9 02 imul rcx, rcx, 2
0018b 0f be 4c 0c 24 movsx ecx, BYTE PTR C$[rsp+rcx]
00190 c1 f9 02 sar ecx, 2
00193 03 c1 add eax, ecx
00195 b9 01 00 00 00 mov ecx, 1
0019a 48 6b c9 01 imul rcx, rcx, 1
0019e 48 8b 54 24 38 mov rdx, QWORD PTR OutPtr$[rsp]
001a3 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 391 : OutPtr[2] = (char) ((C[2] << 6) + C[3]);
001a6 b8 01 00 00 00 mov eax, 1
001ab 48 6b c0 02 imul rax, rax, 2
001af 0f be 44 04 24 movsx eax, BYTE PTR C$[rsp+rax]
001b4 c1 e0 06 shl eax, 6
001b7 b9 01 00 00 00 mov ecx, 1
001bc 48 6b c9 03 imul rcx, rcx, 3
001c0 0f be 4c 0c 24 movsx ecx, BYTE PTR C$[rsp+rcx]
001c5 03 c1 add eax, ecx
001c7 b9 01 00 00 00 mov ecx, 1
001cc 48 6b c9 02 imul rcx, rcx, 2
001d0 48 8b 54 24 38 mov rdx, QWORD PTR OutPtr$[rsp]
001d5 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 392 : OutPtr+=3; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
001d8 48 8b 44 24 38 mov rax, QWORD PTR OutPtr$[rsp]
001dd 48 83 c0 03 add rax, 3
001e1 48 89 44 24 38 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 393 : }
001e6 e9 75 fe ff ff jmp $LN2@UU_decode
2025-01-03 16:47:25 +08:00
$LN3@UU_decode:
; 394 : return (unsigned int)OutPtr - (unsigned int)pDest;
001eb 8b 44 24 70 mov eax, DWORD PTR pDest$[rsp]
001ef 8b 4c 24 38 mov ecx, DWORD PTR OutPtr$[rsp]
001f3 2b c8 sub ecx, eax
001f5 8b c1 mov eax, ecx
2025-01-03 16:47:25 +08:00
$LN1@UU_decode:
; 395 : }
001f7 48 83 c4 58 add rsp, 88 ; 00000058H
001fb c3 ret 0
?UU_decode@CMailCoder@@SAHPEADI0@Z ENDP ; CMailCoder::UU_decode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UU_encode@CMailCoder@@SAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
tv81 = 0
B$ = 4
i$1 = 8
Len$ = 12
lByteBufferSpace$ = 16
OutPtr$ = 24
InPtr$ = 32
InLimitPtr$ = 40
pSrc$ = 64
nSize$ = 72
pDest$ = 80
?UU_encode@CMailCoder@@SAHPEADI0@Z PROC ; CMailCoder::UU_encode, COMDAT
2025-01-03 16:47:25 +08:00
; 285 : {
$LN19:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 48 83 ec 38 sub rsp, 56 ; 00000038H
2025-01-03 16:47:25 +08:00
; 286 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00012 48 83 7c 24 40
00 cmp QWORD PTR pSrc$[rsp], 0
00018 74 0f je SHORT $LN13@UU_encode
0001a 48 83 7c 24 50
00 cmp QWORD PTR pDest$[rsp], 0
00020 74 07 je SHORT $LN13@UU_encode
00022 83 7c 24 48 00 cmp DWORD PTR nSize$[rsp], 0
00027 77 07 ja SHORT $LN12@UU_encode
2025-01-03 16:47:25 +08:00
$LN13@UU_encode:
00029 33 c0 xor eax, eax
0002b e9 59 02 00 00 jmp $LN1@UU_encode
2025-01-03 16:47:25 +08:00
$LN12@UU_encode:
; 287 :
; 288 : unsigned int lByteBufferSpace, Len;
; 289 : unsigned char B[3]; //<2F><>ʱ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>
; 290 : char *InPtr, *InLimitPtr;
; 291 : char *OutPtr;
; 292 :
; 293 : InPtr = pSrc;
00030 48 8b 44 24 40 mov rax, QWORD PTR pSrc$[rsp]
00035 48 89 44 24 20 mov QWORD PTR InPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 294 : InLimitPtr= InPtr + nSize;
0003a 8b 44 24 48 mov eax, DWORD PTR nSize$[rsp]
0003e 48 8b 4c 24 20 mov rcx, QWORD PTR InPtr$[rsp]
00043 48 03 c8 add rcx, rax
00046 48 8b c1 mov rax, rcx
00049 48 89 44 24 28 mov QWORD PTR InLimitPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 295 : OutPtr = pDest;
0004e 48 8b 44 24 50 mov rax, QWORD PTR pDest$[rsp]
00053 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN2@UU_encode:
; 296 :
; 297 : while (InPtr < InLimitPtr)
00058 48 8b 44 24 28 mov rax, QWORD PTR InLimitPtr$[rsp]
0005d 48 39 44 24 20 cmp QWORD PTR InPtr$[rsp], rax
00062 0f 83 11 02 00
2025-01-03 16:47:25 +08:00
00 jae $LN3@UU_encode
; 298 : {
; 299 : Len = 0;
00068 c7 44 24 0c 00
00 00 00 mov DWORD PTR Len$[rsp], 0
2025-01-03 16:47:25 +08:00
$LN4@UU_encode:
; 300 :
; 301 : while ((InPtr < InLimitPtr) && (Len < m_LineWidth))
00070 48 8b 44 24 28 mov rax, QWORD PTR InLimitPtr$[rsp]
00075 48 39 44 24 20 cmp QWORD PTR InPtr$[rsp], rax
0007a 0f 83 ca 01 00
2025-01-03 16:47:25 +08:00
00 jae $LN5@UU_encode
00080 8b 05 00 00 00
00 mov eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00086 39 44 24 0c cmp DWORD PTR Len$[rsp], eax
0008a 0f 83 ba 01 00
2025-01-03 16:47:25 +08:00
00 jae $LN5@UU_encode
; 302 : {
; 303 : lByteBufferSpace = (unsigned int) InLimitPtr - (unsigned int) InPtr;
00090 8b 44 24 20 mov eax, DWORD PTR InPtr$[rsp]
00094 8b 4c 24 28 mov ecx, DWORD PTR InLimitPtr$[rsp]
00098 2b c8 sub ecx, eax
0009a 8b c1 mov eax, ecx
0009c 89 44 24 10 mov DWORD PTR lByteBufferSpace$[rsp], eax
2025-01-03 16:47:25 +08:00
; 304 : if (lByteBufferSpace > 3) lByteBufferSpace = 3; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
000a0 83 7c 24 10 03 cmp DWORD PTR lByteBufferSpace$[rsp], 3
000a5 76 08 jbe SHORT $LN14@UU_encode
000a7 c7 44 24 10 03
00 00 00 mov DWORD PTR lByteBufferSpace$[rsp], 3
2025-01-03 16:47:25 +08:00
$LN14@UU_encode:
; 305 : //ȡֵ
; 306 : for (unsigned int i = 0; i < lByteBufferSpace; i++ )
000af c7 44 24 08 00
00 00 00 mov DWORD PTR i$1[rsp], 0
000b7 eb 0a jmp SHORT $LN8@UU_encode
2025-01-03 16:47:25 +08:00
$LN6@UU_encode:
000b9 8b 44 24 08 mov eax, DWORD PTR i$1[rsp]
000bd ff c0 inc eax
000bf 89 44 24 08 mov DWORD PTR i$1[rsp], eax
2025-01-03 16:47:25 +08:00
$LN8@UU_encode:
000c3 8b 44 24 10 mov eax, DWORD PTR lByteBufferSpace$[rsp]
000c7 39 44 24 08 cmp DWORD PTR i$1[rsp], eax
000cb 73 26 jae SHORT $LN7@UU_encode
2025-01-03 16:47:25 +08:00
; 307 : {
; 308 : B[i] = *InPtr++;
000cd 48 8b 44 24 20 mov rax, QWORD PTR InPtr$[rsp]
000d2 0f b6 00 movzx eax, BYTE PTR [rax]
000d5 88 04 24 mov BYTE PTR tv81[rsp], al
000d8 48 8b 44 24 20 mov rax, QWORD PTR InPtr$[rsp]
000dd 48 ff c0 inc rax
000e0 48 89 44 24 20 mov QWORD PTR InPtr$[rsp], rax
000e5 8b 44 24 08 mov eax, DWORD PTR i$1[rsp]
000e9 0f b6 0c 24 movzx ecx, BYTE PTR tv81[rsp]
000ed 88 4c 04 04 mov BYTE PTR B$[rsp+rax], cl
2025-01-03 16:47:25 +08:00
; 309 : }
000f1 eb c6 jmp SHORT $LN6@UU_encode
2025-01-03 16:47:25 +08:00
$LN7@UU_encode:
; 310 : if (Len == 0)
000f3 83 7c 24 0c 00 cmp DWORD PTR Len$[rsp], 0
000f8 75 1f jne SHORT $LN15@UU_encode
2025-01-03 16:47:25 +08:00
; 311 : {
; 312 : *OutPtr++ = 'M';
000fa 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
000ff c6 00 4d mov BYTE PTR [rax], 77 ; 0000004dH
00102 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
00107 48 ff c0 inc rax
0010a 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 313 : Len++;
0010f 8b 44 24 0c mov eax, DWORD PTR Len$[rsp]
00113 ff c0 inc eax
00115 89 44 24 0c mov DWORD PTR Len$[rsp], eax
2025-01-03 16:47:25 +08:00
$LN15@UU_encode:
; 314 : }
; 315 : //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 316 : OutPtr[0] = B[0] >> 2;
00119 b8 01 00 00 00 mov eax, 1
0011e 48 6b c0 00 imul rax, rax, 0
00122 0f b6 44 04 04 movzx eax, BYTE PTR B$[rsp+rax]
00127 c1 f8 02 sar eax, 2
0012a b9 01 00 00 00 mov ecx, 1
0012f 48 6b c9 00 imul rcx, rcx, 0
00133 48 8b 54 24 18 mov rdx, QWORD PTR OutPtr$[rsp]
00138 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 317 : OutPtr[1] = (unsigned int) (B[0] << 4 & 0x30) + (unsigned int) (B[1] >> 4 & 0x0F);
0013b b8 01 00 00 00 mov eax, 1
00140 48 6b c0 00 imul rax, rax, 0
00144 0f b6 44 04 04 movzx eax, BYTE PTR B$[rsp+rax]
00149 c1 e0 04 shl eax, 4
0014c 83 e0 30 and eax, 48 ; 00000030H
0014f b9 01 00 00 00 mov ecx, 1
00154 48 6b c9 01 imul rcx, rcx, 1
00158 0f b6 4c 0c 04 movzx ecx, BYTE PTR B$[rsp+rcx]
0015d c1 f9 04 sar ecx, 4
00160 83 e1 0f and ecx, 15
00163 03 c1 add eax, ecx
00165 b9 01 00 00 00 mov ecx, 1
0016a 48 6b c9 01 imul rcx, rcx, 1
0016e 48 8b 54 24 18 mov rdx, QWORD PTR OutPtr$[rsp]
00173 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 318 : OutPtr[2] = (unsigned int) (B[1] << 2 & 0x3C) + (unsigned int) (B[2] >> 6 & 0x03);
00176 b8 01 00 00 00 mov eax, 1
0017b 48 6b c0 01 imul rax, rax, 1
0017f 0f b6 44 04 04 movzx eax, BYTE PTR B$[rsp+rax]
00184 c1 e0 02 shl eax, 2
00187 83 e0 3c and eax, 60 ; 0000003cH
0018a b9 01 00 00 00 mov ecx, 1
0018f 48 6b c9 02 imul rcx, rcx, 2
00193 0f b6 4c 0c 04 movzx ecx, BYTE PTR B$[rsp+rcx]
00198 c1 f9 06 sar ecx, 6
0019b 83 e1 03 and ecx, 3
0019e 03 c1 add eax, ecx
001a0 b9 01 00 00 00 mov ecx, 1
001a5 48 6b c9 02 imul rcx, rcx, 2
001a9 48 8b 54 24 18 mov rdx, QWORD PTR OutPtr$[rsp]
001ae 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 319 : OutPtr[3] = B[2] & 0x3F;
001b1 b8 01 00 00 00 mov eax, 1
001b6 48 6b c0 02 imul rax, rax, 2
001ba 0f b6 44 04 04 movzx eax, BYTE PTR B$[rsp+rax]
001bf 83 e0 3f and eax, 63 ; 0000003fH
001c2 b9 01 00 00 00 mov ecx, 1
001c7 48 6b c9 03 imul rcx, rcx, 3
001cb 48 8b 54 24 18 mov rdx, QWORD PTR OutPtr$[rsp]
001d0 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
; 320 : for (i = 0; i < 4; i++)
001d3 c7 44 24 08 00
00 00 00 mov DWORD PTR i$1[rsp], 0
001db eb 0a jmp SHORT $LN11@UU_encode
2025-01-03 16:47:25 +08:00
$LN9@UU_encode:
001dd 8b 44 24 08 mov eax, DWORD PTR i$1[rsp]
001e1 ff c0 inc eax
001e3 89 44 24 08 mov DWORD PTR i$1[rsp], eax
2025-01-03 16:47:25 +08:00
$LN11@UU_encode:
001e7 83 7c 24 08 04 cmp DWORD PTR i$1[rsp], 4
001ec 73 3e jae SHORT $LN10@UU_encode
2025-01-03 16:47:25 +08:00
; 321 : {
; 322 : if (OutPtr[i] == NULL)
001ee 8b 44 24 08 mov eax, DWORD PTR i$1[rsp]
001f2 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
001f7 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
001fb 85 c0 test eax, eax
001fd 75 0f jne SHORT $LN16@UU_encode
2025-01-03 16:47:25 +08:00
; 323 : OutPtr[i] = '`';//(unsigned char) (OutPtr[i] + 0x60);
001ff 8b 44 24 08 mov eax, DWORD PTR i$1[rsp]
00203 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
00208 c6 04 01 60 mov BYTE PTR [rcx+rax], 96 ; 00000060H
0020c eb 1c jmp SHORT $LN17@UU_encode
2025-01-03 16:47:25 +08:00
$LN16@UU_encode:
; 324 : else
; 325 : OutPtr[i] = ' ' + OutPtr[i];//(unsigned char) (OutPtr[i] + 0x20);
0020e 8b 44 24 08 mov eax, DWORD PTR i$1[rsp]
00212 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
00217 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
0021b 83 c0 20 add eax, 32 ; 00000020H
0021e 8b 4c 24 08 mov ecx, DWORD PTR i$1[rsp]
00222 48 8b 54 24 18 mov rdx, QWORD PTR OutPtr$[rsp]
00227 88 04 0a mov BYTE PTR [rdx+rcx], al
2025-01-03 16:47:25 +08:00
$LN17@UU_encode:
; 326 : }
0022a eb b1 jmp SHORT $LN9@UU_encode
2025-01-03 16:47:25 +08:00
$LN10@UU_encode:
; 327 : OutPtr+=4;
0022c 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
00231 48 83 c0 04 add rax, 4
00235 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 328 : Len+=4;
0023a 8b 44 24 0c mov eax, DWORD PTR Len$[rsp]
0023e 83 c0 04 add eax, 4
00241 89 44 24 0c mov DWORD PTR Len$[rsp], eax
2025-01-03 16:47:25 +08:00
; 329 : }
00245 e9 26 fe ff ff jmp $LN4@UU_encode
2025-01-03 16:47:25 +08:00
$LN5@UU_encode:
; 330 :
; 331 : *OutPtr++ = '\r'; //<2F><><EFBFBD>ûس<C3BB>
0024a 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
0024f c6 00 0d mov BYTE PTR [rax], 13
00252 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
00257 48 ff c0 inc rax
0025a 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 332 : *OutPtr++ = '\n';
0025f 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
00264 c6 00 0a mov BYTE PTR [rax], 10
00267 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
0026c 48 ff c0 inc rax
0026f 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 333 : }
00274 e9 df fd ff ff jmp $LN2@UU_encode
2025-01-03 16:47:25 +08:00
$LN3@UU_encode:
; 334 : return (unsigned int) (OutPtr - pDest);
00279 48 8b 44 24 50 mov rax, QWORD PTR pDest$[rsp]
0027e 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
00283 48 2b c8 sub rcx, rax
00286 48 8b c1 mov rax, rcx
2025-01-03 16:47:25 +08:00
$LN1@UU_encode:
; 335 : }
00289 48 83 c4 38 add rsp, 56 ; 00000038H
0028d c3 ret 0
?UU_encode@CMailCoder@@SAHPEADI0@Z ENDP ; CMailCoder::UU_encode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?base64_decode@CMailCoder@@SAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
lByteBuffer$ = 0
lByteBufferSpace$ = 4
reallen$ = 8
C$ = 12
tv89 = 16
OutPtr$ = 24
InPtr$ = 32
InLimitPtr$ = 40
pSrc$ = 64
nSize$ = 72
pDest$ = 80
?base64_decode@CMailCoder@@SAHPEADI0@Z PROC ; CMailCoder::base64_decode, COMDAT
2025-01-03 16:47:25 +08:00
; 229 : {
$LN16:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 48 83 ec 38 sub rsp, 56 ; 00000038H
2025-01-03 16:47:25 +08:00
; 230 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00012 48 83 7c 24 40
00 cmp QWORD PTR pSrc$[rsp], 0
00018 74 0f je SHORT $LN7@base64_dec
0001a 48 83 7c 24 50
00 cmp QWORD PTR pDest$[rsp], 0
00020 74 07 je SHORT $LN7@base64_dec
00022 83 7c 24 48 00 cmp DWORD PTR nSize$[rsp], 0
00027 77 07 ja SHORT $LN6@base64_dec
2025-01-03 16:47:25 +08:00
$LN7@base64_dec:
00029 33 c0 xor eax, eax
0002b e9 ab 01 00 00 jmp $LN1@base64_dec
2025-01-03 16:47:25 +08:00
$LN6@base64_dec:
; 231 :
; 232 : unsigned int lByteBuffer, lByteBufferSpace;
; 233 : unsigned int C; //<2F><>ʱ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>
; 234 : int reallen;
; 235 : char *InPtr, *InLimitPtr;
; 236 : char *OutPtr;
; 237 :
; 238 : lByteBuffer = 0; lByteBufferSpace = 4;
00030 c7 04 24 00 00
00 00 mov DWORD PTR lByteBuffer$[rsp], 0
00037 c7 44 24 04 04
00 00 00 mov DWORD PTR lByteBufferSpace$[rsp], 4
2025-01-03 16:47:25 +08:00
; 239 :
; 240 : InPtr = pSrc;
0003f 48 8b 44 24 40 mov rax, QWORD PTR pSrc$[rsp]
00044 48 89 44 24 20 mov QWORD PTR InPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 241 : InLimitPtr= InPtr + nSize;
00049 8b 44 24 48 mov eax, DWORD PTR nSize$[rsp]
0004d 48 8b 4c 24 20 mov rcx, QWORD PTR InPtr$[rsp]
00052 48 03 c8 add rcx, rax
00055 48 8b c1 mov rax, rcx
00058 48 89 44 24 28 mov QWORD PTR InLimitPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 242 : OutPtr = pDest;
0005d 48 8b 44 24 50 mov rax, QWORD PTR pDest$[rsp]
00062 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
$LN15@base64_dec:
$LN14@base64_dec:
2025-01-03 16:47:25 +08:00
$LN2@base64_dec:
; 243 :
; 244 : while (InPtr != InLimitPtr)
00067 48 8b 44 24 28 mov rax, QWORD PTR InLimitPtr$[rsp]
0006c 48 39 44 24 20 cmp QWORD PTR InPtr$[rsp], rax
00071 0f 84 cd 00 00
2025-01-03 16:47:25 +08:00
00 je $LN3@base64_dec
; 245 : {
; 246 : C = BASE64_DECODE_TABLE[*InPtr]; // Read from InputBuffer.
00077 48 8b 44 24 20 mov rax, QWORD PTR InPtr$[rsp]
0007c 48 0f be 00 movsx rax, BYTE PTR [rax]
00080 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_DECODE_TABLE@CMailCoder@@2QBIB ; CMailCoder::BASE64_DECODE_TABLE
00087 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
0008a 89 44 24 0c mov DWORD PTR C$[rsp], eax
2025-01-03 16:47:25 +08:00
; 247 : InPtr++;
0008e 48 8b 44 24 20 mov rax, QWORD PTR InPtr$[rsp]
00093 48 ff c0 inc rax
00096 48 89 44 24 20 mov QWORD PTR InPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 248 : if (C == 0xFF) continue; //<2F><><EFBFBD><EFBFBD>255<35>Ƿ<EFBFBD><C7B7>ַ<EFBFBD>
0009b 81 7c 24 0c ff
00 00 00 cmp DWORD PTR C$[rsp], 255 ; 000000ffH
000a3 75 02 jne SHORT $LN8@base64_dec
000a5 eb c0 jmp SHORT $LN2@base64_dec
2025-01-03 16:47:25 +08:00
$LN8@base64_dec:
; 249 : lByteBuffer = lByteBuffer << 6 ;
000a7 8b 04 24 mov eax, DWORD PTR lByteBuffer$[rsp]
000aa c1 e0 06 shl eax, 6
000ad 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 250 : lByteBuffer = lByteBuffer | C ;
000b0 8b 44 24 0c mov eax, DWORD PTR C$[rsp]
000b4 8b 0c 24 mov ecx, DWORD PTR lByteBuffer$[rsp]
000b7 0b c8 or ecx, eax
000b9 8b c1 mov eax, ecx
000bb 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 251 : lByteBufferSpace--;
000be 8b 44 24 04 mov eax, DWORD PTR lByteBufferSpace$[rsp]
000c2 ff c8 dec eax
000c4 89 44 24 04 mov DWORD PTR lByteBufferSpace$[rsp], eax
2025-01-03 16:47:25 +08:00
; 252 : if (lByteBufferSpace != 0) continue; //һ<>ζ<EFBFBD><CEB6><EFBFBD>4<EFBFBD><34><EFBFBD>ֽ<EFBFBD>
000c8 83 7c 24 04 00 cmp DWORD PTR lByteBufferSpace$[rsp], 0
000cd 74 02 je SHORT $LN9@base64_dec
000cf eb 96 jmp SHORT $LN14@base64_dec
2025-01-03 16:47:25 +08:00
$LN9@base64_dec:
; 253 : //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4>3<EFBFBD><33><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
; 254 : OutPtr[2] = lByteBuffer;
000d1 b8 01 00 00 00 mov eax, 1
000d6 48 6b c0 02 imul rax, rax, 2
000da 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
000df 0f b6 14 24 movzx edx, BYTE PTR lByteBuffer$[rsp]
000e3 88 14 01 mov BYTE PTR [rcx+rax], dl
2025-01-03 16:47:25 +08:00
; 255 : lByteBuffer = lByteBuffer >> 8;
000e6 8b 04 24 mov eax, DWORD PTR lByteBuffer$[rsp]
000e9 c1 e8 08 shr eax, 8
000ec 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 256 : OutPtr[1] = lByteBuffer;
000ef b8 01 00 00 00 mov eax, 1
000f4 48 6b c0 01 imul rax, rax, 1
000f8 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
000fd 0f b6 14 24 movzx edx, BYTE PTR lByteBuffer$[rsp]
00101 88 14 01 mov BYTE PTR [rcx+rax], dl
2025-01-03 16:47:25 +08:00
; 257 : lByteBuffer = lByteBuffer >> 8;
00104 8b 04 24 mov eax, DWORD PTR lByteBuffer$[rsp]
00107 c1 e8 08 shr eax, 8
0010a 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 258 : OutPtr[0] = lByteBuffer;
0010d b8 01 00 00 00 mov eax, 1
00112 48 6b c0 00 imul rax, rax, 0
00116 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
0011b 0f b6 14 24 movzx edx, BYTE PTR lByteBuffer$[rsp]
0011f 88 14 01 mov BYTE PTR [rcx+rax], dl
2025-01-03 16:47:25 +08:00
; 259 : //׼<><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
; 260 : OutPtr+= 3; lByteBuffer = 0; lByteBufferSpace = 4;
00122 48 8b 44 24 18 mov rax, QWORD PTR OutPtr$[rsp]
00127 48 83 c0 03 add rax, 3
0012b 48 89 44 24 18 mov QWORD PTR OutPtr$[rsp], rax
00130 c7 04 24 00 00
00 00 mov DWORD PTR lByteBuffer$[rsp], 0
00137 c7 44 24 04 04
00 00 00 mov DWORD PTR lByteBufferSpace$[rsp], 4
2025-01-03 16:47:25 +08:00
; 261 : }
0013f e9 23 ff ff ff jmp $LN15@base64_dec
2025-01-03 16:47:25 +08:00
$LN3@base64_dec:
; 262 : reallen = (unsigned int)OutPtr - (unsigned int)pDest;
00144 8b 44 24 50 mov eax, DWORD PTR pDest$[rsp]
00148 8b 4c 24 18 mov ecx, DWORD PTR OutPtr$[rsp]
0014c 2b c8 sub ecx, eax
0014e 8b c1 mov eax, ecx
00150 89 44 24 08 mov DWORD PTR reallen$[rsp], eax
2025-01-03 16:47:25 +08:00
; 263 : //<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
; 264 : switch (lByteBufferSpace)
00154 8b 44 24 04 mov eax, DWORD PTR lByteBufferSpace$[rsp]
00158 89 44 24 10 mov DWORD PTR tv89[rsp], eax
0015c 83 7c 24 10 01 cmp DWORD PTR tv89[rsp], 1
00161 74 09 je SHORT $LN10@base64_dec
00163 83 7c 24 10 02 cmp DWORD PTR tv89[rsp], 2
00168 74 47 je SHORT $LN11@base64_dec
0016a eb 6b jmp SHORT $LN12@base64_dec
2025-01-03 16:47:25 +08:00
$LN10@base64_dec:
; 265 : {
; 266 : case 1:
; 267 : lByteBuffer = lByteBuffer >> 2;
0016c 8b 04 24 mov eax, DWORD PTR lByteBuffer$[rsp]
0016f c1 e8 02 shr eax, 2
00172 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 268 : OutPtr[1] = lByteBuffer;
00175 b8 01 00 00 00 mov eax, 1
0017a 48 6b c0 01 imul rax, rax, 1
0017e 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
00183 0f b6 14 24 movzx edx, BYTE PTR lByteBuffer$[rsp]
00187 88 14 01 mov BYTE PTR [rcx+rax], dl
2025-01-03 16:47:25 +08:00
; 269 : lByteBuffer = lByteBuffer >> 8;
0018a 8b 04 24 mov eax, DWORD PTR lByteBuffer$[rsp]
0018d c1 e8 08 shr eax, 8
00190 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 270 : OutPtr[0] = lByteBuffer;
00193 b8 01 00 00 00 mov eax, 1
00198 48 6b c0 00 imul rax, rax, 0
0019c 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
001a1 0f b6 14 24 movzx edx, BYTE PTR lByteBuffer$[rsp]
001a5 88 14 01 mov BYTE PTR [rcx+rax], dl
2025-01-03 16:47:25 +08:00
; 271 : return reallen + 2;
001a8 8b 44 24 08 mov eax, DWORD PTR reallen$[rsp]
001ac 83 c0 02 add eax, 2
001af eb 2a jmp SHORT $LN1@base64_dec
2025-01-03 16:47:25 +08:00
$LN11@base64_dec:
; 272 : case 2:
; 273 : lByteBuffer = lByteBuffer >> 4;
001b1 8b 04 24 mov eax, DWORD PTR lByteBuffer$[rsp]
001b4 c1 e8 04 shr eax, 4
001b7 89 04 24 mov DWORD PTR lByteBuffer$[rsp], eax
2025-01-03 16:47:25 +08:00
; 274 : OutPtr[0] = lByteBuffer;
001ba b8 01 00 00 00 mov eax, 1
001bf 48 6b c0 00 imul rax, rax, 0
001c3 48 8b 4c 24 18 mov rcx, QWORD PTR OutPtr$[rsp]
001c8 0f b6 14 24 movzx edx, BYTE PTR lByteBuffer$[rsp]
001cc 88 14 01 mov BYTE PTR [rcx+rax], dl
2025-01-03 16:47:25 +08:00
; 275 : return reallen + 1;
001cf 8b 44 24 08 mov eax, DWORD PTR reallen$[rsp]
001d3 ff c0 inc eax
001d5 eb 04 jmp SHORT $LN1@base64_dec
2025-01-03 16:47:25 +08:00
$LN12@base64_dec:
; 276 : default:
; 277 : return reallen;
001d7 8b 44 24 08 mov eax, DWORD PTR reallen$[rsp]
2025-01-03 16:47:25 +08:00
$LN1@base64_dec:
; 278 : }
; 279 : }
001db 48 83 c4 38 add rsp, 56 ; 00000038H
001df c3 ret 0
?base64_decode@CMailCoder@@SAHPEADI0@Z ENDP ; CMailCoder::base64_decode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?base64_encode@CMailCoder@@SAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
iB$ = 0
OutPtr$ = 8
pInPtr$ = 16
Len$ = 24
iInMax3$ = 28
tv153 = 32
tv76 = 36
tv82 = 40
tv88 = 44
tv176 = 48
pInLimitPtr$ = 56
pSrc$ = 80
nSize$ = 88
pDest$ = 96
?base64_encode@CMailCoder@@SAHPEADI0@Z PROC ; CMailCoder::base64_encode, COMDAT
2025-01-03 16:47:25 +08:00
; 153 : {
$LN14:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 48 83 ec 48 sub rsp, 72 ; 00000048H
2025-01-03 16:47:25 +08:00
; 154 : if ((pSrc == NULL) || (nSize <= 0)) return 0;
00012 48 83 7c 24 50
00 cmp QWORD PTR pSrc$[rsp], 0
00018 74 07 je SHORT $LN9@base64_enc
0001a 83 7c 24 58 00 cmp DWORD PTR nSize$[rsp], 0
0001f 77 07 ja SHORT $LN8@base64_enc
2025-01-03 16:47:25 +08:00
$LN9@base64_enc:
00021 33 c0 xor eax, eax
00023 e9 a7 03 00 00 jmp $LN1@base64_enc
2025-01-03 16:47:25 +08:00
$LN8@base64_enc:
; 155 :
; 156 : unsigned int iB, iInMax3, Len;
; 157 : char *pInPtr, *pInLimitPtr;
; 158 : char *OutPtr ;
; 159 :
; 160 : pInPtr = pSrc;
00028 48 8b 44 24 50 mov rax, QWORD PTR pSrc$[rsp]
0002d 48 89 44 24 10 mov QWORD PTR pInPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 161 : iInMax3 = nSize / 3 * 3;
00032 33 d2 xor edx, edx
00034 8b 44 24 58 mov eax, DWORD PTR nSize$[rsp]
00038 b9 03 00 00 00 mov ecx, 3
0003d f7 f1 div ecx
0003f 6b c0 03 imul eax, eax, 3
00042 89 44 24 1c mov DWORD PTR iInMax3$[rsp], eax
2025-01-03 16:47:25 +08:00
; 162 : OutPtr = pDest;
00046 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
0004b 48 89 44 24 08 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 163 : pInLimitPtr = pInPtr + iInMax3;
00050 8b 44 24 1c mov eax, DWORD PTR iInMax3$[rsp]
00054 48 8b 4c 24 10 mov rcx, QWORD PTR pInPtr$[rsp]
00059 48 03 c8 add rcx, rax
0005c 48 8b c1 mov rax, rcx
0005f 48 89 44 24 38 mov QWORD PTR pInLimitPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN2@base64_enc:
; 164 :
; 165 : while (pInPtr != pInLimitPtr)
00064 48 8b 44 24 38 mov rax, QWORD PTR pInLimitPtr$[rsp]
00069 48 39 44 24 10 cmp QWORD PTR pInPtr$[rsp], rax
0006e 0f 84 ab 01 00
2025-01-03 16:47:25 +08:00
00 je $LN3@base64_enc
; 166 : {
; 167 : Len = 0;
00074 c7 44 24 18 00
00 00 00 mov DWORD PTR Len$[rsp], 0
2025-01-03 16:47:25 +08:00
$LN4@base64_enc:
; 168 : while ((Len < m_LineWidth) && (pInPtr != pInLimitPtr))
0007c 8b 05 00 00 00
00 mov eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00082 39 44 24 18 cmp DWORD PTR Len$[rsp], eax
00086 0f 83 58 01 00
2025-01-03 16:47:25 +08:00
00 jae $LN5@base64_enc
0008c 48 8b 44 24 38 mov rax, QWORD PTR pInLimitPtr$[rsp]
00091 48 39 44 24 10 cmp QWORD PTR pInPtr$[rsp], rax
00096 0f 84 48 01 00
2025-01-03 16:47:25 +08:00
00 je $LN5@base64_enc
; 169 : {
; 170 : iB = (unsigned char) *pInPtr++;
0009c 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
000a1 0f b6 00 movzx eax, BYTE PTR [rax]
000a4 89 44 24 24 mov DWORD PTR tv76[rsp], eax
000a8 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
000ad 48 ff c0 inc rax
000b0 48 89 44 24 10 mov QWORD PTR pInPtr$[rsp], rax
000b5 8b 44 24 24 mov eax, DWORD PTR tv76[rsp]
000b9 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 171 : iB = iB << 8;
000bc 8b 04 24 mov eax, DWORD PTR iB$[rsp]
000bf c1 e0 08 shl eax, 8
000c2 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 172 :
; 173 : iB = iB | (unsigned char) *pInPtr++;
000c5 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
000ca 0f b6 00 movzx eax, BYTE PTR [rax]
000cd 8b 0c 24 mov ecx, DWORD PTR iB$[rsp]
000d0 0b c8 or ecx, eax
000d2 8b c1 mov eax, ecx
000d4 89 44 24 28 mov DWORD PTR tv82[rsp], eax
000d8 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
000dd 48 ff c0 inc rax
000e0 48 89 44 24 10 mov QWORD PTR pInPtr$[rsp], rax
000e5 8b 44 24 28 mov eax, DWORD PTR tv82[rsp]
000e9 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 174 : iB = iB << 8;
000ec 8b 04 24 mov eax, DWORD PTR iB$[rsp]
000ef c1 e0 08 shl eax, 8
000f2 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 175 :
; 176 : iB = iB | (unsigned char) *pInPtr++;
000f5 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
000fa 0f b6 00 movzx eax, BYTE PTR [rax]
000fd 8b 0c 24 mov ecx, DWORD PTR iB$[rsp]
00100 0b c8 or ecx, eax
00102 8b c1 mov eax, ecx
00104 89 44 24 2c mov DWORD PTR tv88[rsp], eax
00108 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
0010d 48 ff c0 inc rax
00110 48 89 44 24 10 mov QWORD PTR pInPtr$[rsp], rax
00115 8b 44 24 2c mov eax, DWORD PTR tv88[rsp]
00119 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 177 :
; 178 : //<2F><>4 byte<74><65><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 179 : OutPtr[3] = BASE64_ENCODE_TABLE[iB & 0x3F];
0011c 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0011f 83 e0 3f and eax, 63 ; 0000003fH
00122 8b c0 mov eax, eax
00124 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
0012b ba 01 00 00 00 mov edx, 1
00130 48 6b d2 03 imul rdx, rdx, 3
00134 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
00139 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0013d 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 180 : iB = iB >> 6;
00141 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00144 c1 e8 06 shr eax, 6
00147 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 181 : OutPtr[2] = BASE64_ENCODE_TABLE[iB & 0x3F];
0014a 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0014d 83 e0 3f and eax, 63 ; 0000003fH
00150 8b c0 mov eax, eax
00152 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00159 ba 01 00 00 00 mov edx, 1
0015e 48 6b d2 02 imul rdx, rdx, 2
00162 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
00167 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0016b 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 182 : iB = iB >> 6;
0016f 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00172 c1 e8 06 shr eax, 6
00175 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 183 : OutPtr[1] = BASE64_ENCODE_TABLE[iB & 0x3F];
00178 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0017b 83 e0 3f and eax, 63 ; 0000003fH
0017e 8b c0 mov eax, eax
00180 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00187 ba 01 00 00 00 mov edx, 1
0018c 48 6b d2 01 imul rdx, rdx, 1
00190 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
00195 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00199 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 184 : iB = iB >> 6;
0019d 8b 04 24 mov eax, DWORD PTR iB$[rsp]
001a0 c1 e8 06 shr eax, 6
001a3 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 185 : OutPtr[0] = BASE64_ENCODE_TABLE[iB];
001a6 8b 04 24 mov eax, DWORD PTR iB$[rsp]
001a9 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
001b0 ba 01 00 00 00 mov edx, 1
001b5 48 6b d2 00 imul rdx, rdx, 0
001b9 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
001be 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
001c2 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 186 : OutPtr+=4;
001c6 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
001cb 48 83 c0 04 add rax, 4
001cf 48 89 44 24 08 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 187 : Len+=4;
001d4 8b 44 24 18 mov eax, DWORD PTR Len$[rsp]
001d8 83 c0 04 add eax, 4
001db 89 44 24 18 mov DWORD PTR Len$[rsp], eax
2025-01-03 16:47:25 +08:00
; 188 : }
001df e9 98 fe ff ff jmp $LN4@base64_enc
2025-01-03 16:47:25 +08:00
$LN5@base64_enc:
; 189 : if (Len >= m_LineWidth)
001e4 8b 05 00 00 00
00 mov eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
001ea 39 44 24 18 cmp DWORD PTR Len$[rsp], eax
001ee 72 2a jb SHORT $LN10@base64_enc
2025-01-03 16:47:25 +08:00
; 190 : {
; 191 : *OutPtr++ = '\r'; //<2F><><EFBFBD>ϻس<CFBB><D8B3><EFBFBD><EFBFBD>з<EFBFBD>
001f0 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
001f5 c6 00 0d mov BYTE PTR [rax], 13
001f8 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
001fd 48 ff c0 inc rax
00200 48 89 44 24 08 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 192 : *OutPtr++ = '\n';
00205 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
0020a c6 00 0a mov BYTE PTR [rax], 10
0020d 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
00212 48 ff c0 inc rax
00215 48 89 44 24 08 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN10@base64_enc:
; 193 : }
; 194 : }
0021a e9 45 fe ff ff jmp $LN2@base64_enc
2025-01-03 16:47:25 +08:00
$LN3@base64_enc:
; 195 : //<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
; 196 : switch (nSize - iInMax3)
0021f 8b 44 24 1c mov eax, DWORD PTR iInMax3$[rsp]
00223 8b 4c 24 58 mov ecx, DWORD PTR nSize$[rsp]
00227 2b c8 sub ecx, eax
00229 8b c1 mov eax, ecx
0022b 89 44 24 20 mov DWORD PTR tv153[rsp], eax
0022f 83 7c 24 20 01 cmp DWORD PTR tv153[rsp], 1
00234 74 10 je SHORT $LN11@base64_enc
00236 83 7c 24 20 02 cmp DWORD PTR tv153[rsp], 2
0023b 0f 84 9e 00 00
00 je $LN12@base64_enc
00241 e9 79 01 00 00 jmp $LN6@base64_enc
2025-01-03 16:47:25 +08:00
$LN11@base64_enc:
; 197 : {
; 198 : case 1:
; 199 : iB = (unsigned char) *pInPtr;
00246 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
0024b 0f b6 00 movzx eax, BYTE PTR [rax]
0024e 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 200 : iB = iB << 4;
00251 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00254 c1 e0 04 shl eax, 4
00257 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 201 : OutPtr[1] = BASE64_ENCODE_TABLE[iB & 0x3F];
0025a 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0025d 83 e0 3f and eax, 63 ; 0000003fH
00260 8b c0 mov eax, eax
00262 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00269 ba 01 00 00 00 mov edx, 1
0026e 48 6b d2 01 imul rdx, rdx, 1
00272 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
00277 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0027b 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 202 : iB = iB >> 6;
0027f 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00282 c1 e8 06 shr eax, 6
00285 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 203 : OutPtr[0] = BASE64_ENCODE_TABLE[iB];
00288 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0028b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00292 ba 01 00 00 00 mov edx, 1
00297 48 6b d2 00 imul rdx, rdx, 0
0029b 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
002a0 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
002a4 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 204 : OutPtr[2] = '='; //<2F><>'='Ҳ<><D2B2><EFBFBD><EFBFBD>64<36><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ಿ<EFBFBD><E0B2BF>
002a8 b8 01 00 00 00 mov eax, 1
002ad 48 6b c0 02 imul rax, rax, 2
002b1 48 8b 4c 24 08 mov rcx, QWORD PTR OutPtr$[rsp]
002b6 c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
2025-01-03 16:47:25 +08:00
; 205 : OutPtr[3] = '=';
002ba b8 01 00 00 00 mov eax, 1
002bf 48 6b c0 03 imul rax, rax, 3
002c3 48 8b 4c 24 08 mov rcx, QWORD PTR OutPtr$[rsp]
002c8 c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
2025-01-03 16:47:25 +08:00
; 206 : OutPtr+=4;
002cc 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
002d1 48 83 c0 04 add rax, 4
002d5 48 89 44 24 08 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
; 207 : break;
002da e9 e0 00 00 00 jmp $LN6@base64_enc
2025-01-03 16:47:25 +08:00
$LN12@base64_enc:
; 208 : case 2:
; 209 : iB = (unsigned char) *pInPtr++;
002df 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
002e4 0f b6 00 movzx eax, BYTE PTR [rax]
002e7 89 44 24 30 mov DWORD PTR tv176[rsp], eax
002eb 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
002f0 48 ff c0 inc rax
002f3 48 89 44 24 10 mov QWORD PTR pInPtr$[rsp], rax
002f8 8b 44 24 30 mov eax, DWORD PTR tv176[rsp]
002fc 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 210 : iB = iB << 8;
002ff 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00302 c1 e0 08 shl eax, 8
00305 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 211 : iB = iB | (unsigned char) *pInPtr;
00308 48 8b 44 24 10 mov rax, QWORD PTR pInPtr$[rsp]
0030d 0f b6 00 movzx eax, BYTE PTR [rax]
00310 8b 0c 24 mov ecx, DWORD PTR iB$[rsp]
00313 0b c8 or ecx, eax
00315 8b c1 mov eax, ecx
00317 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 212 : iB = iB << 2;
0031a 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0031d c1 e0 02 shl eax, 2
00320 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 213 : OutPtr[2] = BASE64_ENCODE_TABLE[iB & 0x3F];
00323 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00326 83 e0 3f and eax, 63 ; 0000003fH
00329 8b c0 mov eax, eax
0032b 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00332 ba 01 00 00 00 mov edx, 1
00337 48 6b d2 02 imul rdx, rdx, 2
0033b 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
00340 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00344 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 214 : iB = iB >> 6;
00348 8b 04 24 mov eax, DWORD PTR iB$[rsp]
0034b c1 e8 06 shr eax, 6
0034e 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 215 : OutPtr[1] = BASE64_ENCODE_TABLE[iB & 0x3F];
00351 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00354 83 e0 3f and eax, 63 ; 0000003fH
00357 8b c0 mov eax, eax
00359 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00360 ba 01 00 00 00 mov edx, 1
00365 48 6b d2 01 imul rdx, rdx, 1
00369 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
0036e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
00372 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 216 : iB = iB >> 6;
00376 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00379 c1 e8 06 shr eax, 6
0037c 89 04 24 mov DWORD PTR iB$[rsp], eax
2025-01-03 16:47:25 +08:00
; 217 : OutPtr[0] = BASE64_ENCODE_TABLE[iB];
0037f 8b 04 24 mov eax, DWORD PTR iB$[rsp]
00382 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB ; CMailCoder::BASE64_ENCODE_TABLE
00389 ba 01 00 00 00 mov edx, 1
0038e 48 6b d2 00 imul rdx, rdx, 0
00392 4c 8b 44 24 08 mov r8, QWORD PTR OutPtr$[rsp]
00397 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
0039b 41 88 04 10 mov BYTE PTR [r8+rdx], al
2025-01-03 16:47:25 +08:00
; 218 : OutPtr[3] = '='; // Fill remaining byte.
0039f b8 01 00 00 00 mov eax, 1
003a4 48 6b c0 03 imul rax, rax, 3
003a8 48 8b 4c 24 08 mov rcx, QWORD PTR OutPtr$[rsp]
003ad c6 04 01 3d mov BYTE PTR [rcx+rax], 61 ; 0000003dH
2025-01-03 16:47:25 +08:00
; 219 : OutPtr+=4;
003b1 48 8b 44 24 08 mov rax, QWORD PTR OutPtr$[rsp]
003b6 48 83 c0 04 add rax, 4
003ba 48 89 44 24 08 mov QWORD PTR OutPtr$[rsp], rax
2025-01-03 16:47:25 +08:00
$LN6@base64_enc:
; 220 : break;
; 221 : }
; 222 : return (unsigned int) (OutPtr - pDest);
003bf 48 8b 44 24 60 mov rax, QWORD PTR pDest$[rsp]
003c4 48 8b 4c 24 08 mov rcx, QWORD PTR OutPtr$[rsp]
003c9 48 2b c8 sub rcx, rax
003cc 48 8b c1 mov rax, rcx
2025-01-03 16:47:25 +08:00
$LN1@base64_enc:
; 223 : }
003cf 48 83 c4 48 add rsp, 72 ; 00000048H
003d3 c3 ret 0
?base64_encode@CMailCoder@@SAHPEADI0@Z ENDP ; CMailCoder::base64_encode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?QuotedEncodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
nSize$ = 0
nCR$ = 4
iSize$ = 32
2025-01-03 16:47:25 +08:00
?QuotedEncodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::QuotedEncodeSize, COMDAT
; 142 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 48 83 ec 18 sub rsp, 24
2025-01-03 16:47:25 +08:00
; 143 : int nSize = iSize * 3 + 1;
00008 6b 44 24 20 03 imul eax, DWORD PTR iSize$[rsp], 3
0000d ff c0 inc eax
0000f 89 04 24 mov DWORD PTR nSize$[rsp], eax
2025-01-03 16:47:25 +08:00
; 144 : int nCR = nSize / m_LineWidth;
00012 33 d2 xor edx, edx
00014 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
00017 f7 35 00 00 00
2025-01-03 16:47:25 +08:00
00 div DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
0001d 89 44 24 04 mov DWORD PTR nCR$[rsp], eax
2025-01-03 16:47:25 +08:00
; 145 : nSize+= nCR * 3;
00021 6b 44 24 04 03 imul eax, DWORD PTR nCR$[rsp], 3
00026 8b 0c 24 mov ecx, DWORD PTR nSize$[rsp]
00029 03 c8 add ecx, eax
0002b 8b c1 mov eax, ecx
0002d 89 04 24 mov DWORD PTR nSize$[rsp], eax
2025-01-03 16:47:25 +08:00
; 146 : return nSize;
00030 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
2025-01-03 16:47:25 +08:00
; 147 : }
00033 48 83 c4 18 add rsp, 24
00037 c3 ret 0
2025-01-03 16:47:25 +08:00
?QuotedEncodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::QuotedEncodeSize
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UUDecodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
iSize$ = 8
2025-01-03 16:47:25 +08:00
?UUDecodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::UUDecodeSize, COMDAT
; 134 : {
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
2025-01-03 16:47:25 +08:00
; 135 : return (iSize + 3) / 4 * 3;
00004 8b 44 24 08 mov eax, DWORD PTR iSize$[rsp]
00008 83 c0 03 add eax, 3
0000b 99 cdq
0000c 83 e2 03 and edx, 3
0000f 03 c2 add eax, edx
00011 c1 f8 02 sar eax, 2
00014 6b c0 03 imul eax, eax, 3
2025-01-03 16:47:25 +08:00
; 136 : }
00017 c3 ret 0
2025-01-03 16:47:25 +08:00
?UUDecodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::UUDecodeSize
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UUEncodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
nSize$ = 0
nCR$ = 4
iSize$ = 32
2025-01-03 16:47:25 +08:00
?UUEncodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::UUEncodeSize, COMDAT
; 122 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 48 83 ec 18 sub rsp, 24
2025-01-03 16:47:25 +08:00
; 123 : int nSize, nCR;
; 124 : nSize = (iSize + 2) / 3 * 4 ;
00008 8b 44 24 20 mov eax, DWORD PTR iSize$[rsp]
2025-01-03 16:47:25 +08:00
0000c 83 c0 02 add eax, 2
0000f 99 cdq
00010 b9 03 00 00 00 mov ecx, 3
00015 f7 f9 idiv ecx
00017 c1 e0 02 shl eax, 2
0001a 89 04 24 mov DWORD PTR nSize$[rsp], eax
2025-01-03 16:47:25 +08:00
; 125 : nCR = nSize / m_LineWidth + 2; //<2F><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD>
0001d 33 d2 xor edx, edx
0001f 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
2025-01-03 16:47:25 +08:00
00022 f7 35 00 00 00
00 div DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00028 83 c0 02 add eax, 2
0002b 89 44 24 04 mov DWORD PTR nCR$[rsp], eax
2025-01-03 16:47:25 +08:00
; 126 : nSize+= nCR * 3 + 2;
0002f 6b 44 24 04 03 imul eax, DWORD PTR nCR$[rsp], 3
00034 8b 0c 24 mov ecx, DWORD PTR nSize$[rsp]
00037 8d 44 01 02 lea eax, DWORD PTR [rcx+rax+2]
0003b 89 04 24 mov DWORD PTR nSize$[rsp], eax
2025-01-03 16:47:25 +08:00
; 127 : return nSize;
0003e 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
2025-01-03 16:47:25 +08:00
; 128 : }
00041 48 83 c4 18 add rsp, 24
2025-01-03 16:47:25 +08:00
00045 c3 ret 0
?UUEncodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::UUEncodeSize
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?Base64DecodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
iSize$ = 8
2025-01-03 16:47:25 +08:00
?Base64DecodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::Base64DecodeSize, COMDAT
; 114 : {
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
2025-01-03 16:47:25 +08:00
; 115 : return (iSize + 3) / 4 * 3;
00004 8b 44 24 08 mov eax, DWORD PTR iSize$[rsp]
00008 83 c0 03 add eax, 3
0000b 99 cdq
0000c 83 e2 03 and edx, 3
0000f 03 c2 add eax, edx
00011 c1 f8 02 sar eax, 2
00014 6b c0 03 imul eax, eax, 3
2025-01-03 16:47:25 +08:00
; 116 : }
00017 c3 ret 0
2025-01-03 16:47:25 +08:00
?Base64DecodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::Base64DecodeSize
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?Base64EncodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
nSize$ = 0
nCR$ = 4
iSize$ = 32
2025-01-03 16:47:25 +08:00
?Base64EncodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::Base64EncodeSize, COMDAT
; 102 : {
$LN3:
00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
00004 48 83 ec 18 sub rsp, 24
2025-01-03 16:47:25 +08:00
; 103 : int nSize, nCR;
; 104 : nSize = (iSize + 2) / 3 * 4 ;
00008 8b 44 24 20 mov eax, DWORD PTR iSize$[rsp]
2025-01-03 16:47:25 +08:00
0000c 83 c0 02 add eax, 2
0000f 99 cdq
00010 b9 03 00 00 00 mov ecx, 3
00015 f7 f9 idiv ecx
00017 c1 e0 02 shl eax, 2
0001a 89 04 24 mov DWORD PTR nSize$[rsp], eax
2025-01-03 16:47:25 +08:00
; 105 : nCR = nSize / m_LineWidth; //<2F><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD>
0001d 33 d2 xor edx, edx
0001f 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
2025-01-03 16:47:25 +08:00
00022 f7 35 00 00 00
00 div DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00028 89 44 24 04 mov DWORD PTR nCR$[rsp], eax
2025-01-03 16:47:25 +08:00
; 106 : nSize+= nCR * 2;
0002c 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
0002f 8b 4c 24 04 mov ecx, DWORD PTR nCR$[rsp]
00033 8d 04 48 lea eax, DWORD PTR [rax+rcx*2]
00036 89 04 24 mov DWORD PTR nSize$[rsp], eax
2025-01-03 16:47:25 +08:00
; 107 : return nSize;
00039 8b 04 24 mov eax, DWORD PTR nSize$[rsp]
2025-01-03 16:47:25 +08:00
; 108 : }
0003c 48 83 c4 18 add rsp, 24
2025-01-03 16:47:25 +08:00
00040 c3 ret 0
?Base64EncodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::Base64EncodeSize
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?email_decode@CMailCoder@@QEAAHPEADI0@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
iDestLen$ = 32
pSrc2$ = 40
iStart$1 = 48
iStart2$2 = 52
iEnd$3 = 56
iEnd$4 = 60
iRet$5 = 64
iRet$6 = 68
iSize$ = 72
iSrc2Len$ = 76
tv172 = 80
this$ = 112
pSrc$ = 120
nSize$ = 128
pDest$ = 136
?email_decode@CMailCoder@@QEAAHPEADI0@Z PROC ; CMailCoder::email_decode, COMDAT
2025-01-03 16:47:25 +08:00
; 499 : {
$LN13:
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 48 83 ec 68 sub rsp, 104 ; 00000068H
2025-01-03 16:47:25 +08:00
; 500 : int iSize=0;
00018 c7 44 24 48 00
00 00 00 mov DWORD PTR iSize$[rsp], 0
2025-01-03 16:47:25 +08:00
; 501 : char * pSrc2=pSrc;
00020 48 8b 44 24 78 mov rax, QWORD PTR pSrc$[rsp]
00025 48 89 44 24 28 mov QWORD PTR pSrc2$[rsp], rax
2025-01-03 16:47:25 +08:00
; 502 : int iSrc2Len=0;
0002a c7 44 24 4c 00
00 00 00 mov DWORD PTR iSrc2Len$[rsp], 0
2025-01-03 16:47:25 +08:00
; 503 : int iDestLen=0;
00032 c7 44 24 20 00
00 00 00 mov DWORD PTR iDestLen$[rsp], 0
2025-01-03 16:47:25 +08:00
$LN2@email_deco:
; 504 : while ( true )
0003a 33 c0 xor eax, eax
0003c 83 f8 01 cmp eax, 1
0003f 0f 84 ea 01 00
2025-01-03 16:47:25 +08:00
00 je $LN3@email_deco
; 505 : {
; 506 : int iStart2 = FoundChar(pSrc2,"=?");
00045 45 33 c9 xor r9d, r9d
00048 4c 8d 05 00 00
00 00 lea r8, OFFSET FLAT:$SG321191
0004f 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
00054 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
00059 e8 00 00 00 00 call ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ; CMailCoder::FoundChar
0005e 89 44 24 34 mov DWORD PTR iStart2$2[rsp], eax
2025-01-03 16:47:25 +08:00
; 507 : if ( iStart2 >= 0 )
00062 83 7c 24 34 00 cmp DWORD PTR iStart2$2[rsp], 0
00067 0f 8c bb 01 00
2025-01-03 16:47:25 +08:00
00 jl $LN4@email_deco
; 508 : {
; 509 : strncpy(pDest+iDestLen,pSrc2,iStart2);
0006d 48 63 44 24 34 movsxd rax, DWORD PTR iStart2$2[rsp]
00072 48 63 4c 24 20 movsxd rcx, DWORD PTR iDestLen$[rsp]
00077 48 8b 94 24 88
00 00 00 mov rdx, QWORD PTR pDest$[rsp]
0007f 48 03 d1 add rdx, rcx
00082 48 8b ca mov rcx, rdx
00085 4c 8b c0 mov r8, rax
00088 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
0008d e8 00 00 00 00 call strncpy
2025-01-03 16:47:25 +08:00
; 510 : iDestLen +=iStart2;
00092 8b 44 24 34 mov eax, DWORD PTR iStart2$2[rsp]
00096 8b 4c 24 20 mov ecx, DWORD PTR iDestLen$[rsp]
0009a 03 c8 add ecx, eax
0009c 8b c1 mov eax, ecx
0009e 89 44 24 20 mov DWORD PTR iDestLen$[rsp], eax
2025-01-03 16:47:25 +08:00
; 511 : pSrc2+=iStart2+2; //=?Ϊ2<CEAA><32><EFBFBD>ֽ<EFBFBD>
000a2 8b 44 24 34 mov eax, DWORD PTR iStart2$2[rsp]
000a6 83 c0 02 add eax, 2
000a9 48 98 cdqe
000ab 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
000b0 48 03 c8 add rcx, rax
000b3 48 8b c1 mov rax, rcx
000b6 48 89 44 24 28 mov QWORD PTR pSrc2$[rsp], rax
2025-01-03 16:47:25 +08:00
; 512 : int iStart = FoundChar(pSrc2,"?B?");
000bb 45 33 c9 xor r9d, r9d
000be 4c 8d 05 00 00
00 00 lea r8, OFFSET FLAT:$SG321194
000c5 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
000ca 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
000cf e8 00 00 00 00 call ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ; CMailCoder::FoundChar
000d4 89 44 24 30 mov DWORD PTR iStart$1[rsp], eax
2025-01-03 16:47:25 +08:00
; 513 : if ( iStart > 0 )
000d8 83 7c 24 30 00 cmp DWORD PTR iStart$1[rsp], 0
000dd 0f 8e 8e 00 00
00 jle $LN6@email_deco
2025-01-03 16:47:25 +08:00
; 514 : {
; 515 : //iStart += 3; //?B?Ϊ3<CEAA><33><EFBFBD>ֽ<EFBFBD>
; 516 : pSrc2=pSrc2+iStart+3; //?B?Ϊ3<CEAA><33><EFBFBD>ֽ<EFBFBD>
000e3 48 63 44 24 30 movsxd rax, DWORD PTR iStart$1[rsp]
000e8 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
000ed 48 8d 44 01 03 lea rax, QWORD PTR [rcx+rax+3]
000f2 48 89 44 24 28 mov QWORD PTR pSrc2$[rsp], rax
2025-01-03 16:47:25 +08:00
; 517 : int iEnd = FoundChar(pSrc2,"?=");
000f7 45 33 c9 xor r9d, r9d
000fa 4c 8d 05 00 00
00 00 lea r8, OFFSET FLAT:$SG321197
00101 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
00106 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
0010b e8 00 00 00 00 call ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ; CMailCoder::FoundChar
00110 89 44 24 38 mov DWORD PTR iEnd$3[rsp], eax
2025-01-03 16:47:25 +08:00
; 518 : if ( iEnd > 1 )
00114 83 7c 24 38 01 cmp DWORD PTR iEnd$3[rsp], 1
00119 7e 51 jle SHORT $LN8@email_deco
2025-01-03 16:47:25 +08:00
; 519 : {
; 520 : int iRet = base64_decode(pSrc2,iEnd,pDest+iDestLen);
0011b 48 63 44 24 20 movsxd rax, DWORD PTR iDestLen$[rsp]
00120 48 8b 8c 24 88
00 00 00 mov rcx, QWORD PTR pDest$[rsp]
00128 48 03 c8 add rcx, rax
0012b 48 8b c1 mov rax, rcx
0012e 4c 8b c0 mov r8, rax
00131 8b 54 24 38 mov edx, DWORD PTR iEnd$3[rsp]
00135 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
0013a e8 00 00 00 00 call ?base64_decode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::base64_decode
0013f 89 44 24 40 mov DWORD PTR iRet$5[rsp], eax
2025-01-03 16:47:25 +08:00
; 521 : pSrc2 += iEnd+2; //"?="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
00143 8b 44 24 38 mov eax, DWORD PTR iEnd$3[rsp]
00147 83 c0 02 add eax, 2
0014a 48 98 cdqe
0014c 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
00151 48 03 c8 add rcx, rax
00154 48 8b c1 mov rax, rcx
00157 48 89 44 24 28 mov QWORD PTR pSrc2$[rsp], rax
2025-01-03 16:47:25 +08:00
; 522 : iDestLen += iRet;
0015c 8b 44 24 40 mov eax, DWORD PTR iRet$5[rsp]
00160 8b 4c 24 20 mov ecx, DWORD PTR iDestLen$[rsp]
00164 03 c8 add ecx, eax
00166 8b c1 mov eax, ecx
00168 89 44 24 20 mov DWORD PTR iDestLen$[rsp], eax
2025-01-03 16:47:25 +08:00
$LN8@email_deco:
; 523 : }
; 524 : }
0016c e9 b5 00 00 00 jmp $LN7@email_deco
2025-01-03 16:47:25 +08:00
$LN6@email_deco:
; 525 : else
; 526 : {
; 527 : iStart = FoundChar(pSrc2,"?Q?");
00171 45 33 c9 xor r9d, r9d
00174 4c 8d 05 00 00
00 00 lea r8, OFFSET FLAT:$SG321199
0017b 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
00180 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
00185 e8 00 00 00 00 call ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ; CMailCoder::FoundChar
0018a 89 44 24 30 mov DWORD PTR iStart$1[rsp], eax
2025-01-03 16:47:25 +08:00
; 528 : if ( iStart > 0 )
0018e 83 7c 24 30 00 cmp DWORD PTR iStart$1[rsp], 0
00193 0f 8e 8b 00 00
00 jle $LN9@email_deco
2025-01-03 16:47:25 +08:00
; 529 : {
; 530 : pSrc2=pSrc2+iStart+3; //?B?Ϊ3<CEAA><33><EFBFBD>ֽ<EFBFBD>
00199 48 63 44 24 30 movsxd rax, DWORD PTR iStart$1[rsp]
0019e 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
001a3 48 8d 44 01 03 lea rax, QWORD PTR [rcx+rax+3]
001a8 48 89 44 24 28 mov QWORD PTR pSrc2$[rsp], rax
2025-01-03 16:47:25 +08:00
; 531 : int iEnd = FoundChar(pSrc2,"?=");
001ad 45 33 c9 xor r9d, r9d
001b0 4c 8d 05 00 00
00 00 lea r8, OFFSET FLAT:$SG321202
001b7 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
001bc 48 8b 4c 24 70 mov rcx, QWORD PTR this$[rsp]
001c1 e8 00 00 00 00 call ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ; CMailCoder::FoundChar
001c6 89 44 24 3c mov DWORD PTR iEnd$4[rsp], eax
2025-01-03 16:47:25 +08:00
; 532 : if ( iEnd > 1 )
001ca 83 7c 24 3c 01 cmp DWORD PTR iEnd$4[rsp], 1
001cf 7e 51 jle SHORT $LN11@email_deco
2025-01-03 16:47:25 +08:00
; 533 : {
; 534 : int iRet = quoted_decode(pSrc2,iEnd,pDest+iDestLen);
001d1 48 63 44 24 20 movsxd rax, DWORD PTR iDestLen$[rsp]
001d6 48 8b 8c 24 88
00 00 00 mov rcx, QWORD PTR pDest$[rsp]
001de 48 03 c8 add rcx, rax
001e1 48 8b c1 mov rax, rcx
001e4 4c 8b c0 mov r8, rax
001e7 8b 54 24 3c mov edx, DWORD PTR iEnd$4[rsp]
001eb 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
001f0 e8 00 00 00 00 call ?quoted_decode@CMailCoder@@SAHPEADI0@Z ; CMailCoder::quoted_decode
001f5 89 44 24 44 mov DWORD PTR iRet$6[rsp], eax
2025-01-03 16:47:25 +08:00
; 535 : pSrc2 += iEnd+2; //"?="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
001f9 8b 44 24 3c mov eax, DWORD PTR iEnd$4[rsp]
001fd 83 c0 02 add eax, 2
00200 48 98 cdqe
00202 48 8b 4c 24 28 mov rcx, QWORD PTR pSrc2$[rsp]
00207 48 03 c8 add rcx, rax
0020a 48 8b c1 mov rax, rcx
0020d 48 89 44 24 28 mov QWORD PTR pSrc2$[rsp], rax
2025-01-03 16:47:25 +08:00
; 536 : iDestLen += iRet;
00212 8b 44 24 44 mov eax, DWORD PTR iRet$6[rsp]
00216 8b 4c 24 20 mov ecx, DWORD PTR iDestLen$[rsp]
0021a 03 c8 add ecx, eax
0021c 8b c1 mov eax, ecx
0021e 89 44 24 20 mov DWORD PTR iDestLen$[rsp], eax
2025-01-03 16:47:25 +08:00
$LN11@email_deco:
; 537 : }
; 538 : }
00222 eb 02 jmp SHORT $LN10@email_deco
2025-01-03 16:47:25 +08:00
$LN9@email_deco:
; 539 : else
; 540 : {
; 541 : break;
00224 eb 09 jmp SHORT $LN3@email_deco
$LN10@email_deco:
2025-01-03 16:47:25 +08:00
$LN7@email_deco:
; 542 : }
; 543 : }
; 544 : }
00226 eb 02 jmp SHORT $LN5@email_deco
2025-01-03 16:47:25 +08:00
$LN4@email_deco:
; 545 : else
; 546 : {
; 547 : break;
00228 eb 05 jmp SHORT $LN3@email_deco
2025-01-03 16:47:25 +08:00
$LN5@email_deco:
; 548 : }
; 549 : }
0022a e9 0b fe ff ff jmp $LN2@email_deco
2025-01-03 16:47:25 +08:00
$LN3@email_deco:
; 550 : strncpy( pDest+iDestLen,pSrc+(pSrc2-pSrc),nSize-(pSrc2-pSrc) ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0022f 8b 84 24 80 00
00 00 mov eax, DWORD PTR nSize$[rsp]
00236 48 8b 4c 24 78 mov rcx, QWORD PTR pSrc$[rsp]
0023b 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
00240 48 2b d1 sub rdx, rcx
00243 48 8b ca mov rcx, rdx
00246 48 2b c1 sub rax, rcx
00249 48 8b 4c 24 78 mov rcx, QWORD PTR pSrc$[rsp]
0024e 48 8b 54 24 28 mov rdx, QWORD PTR pSrc2$[rsp]
00253 48 2b d1 sub rdx, rcx
00256 48 8b ca mov rcx, rdx
00259 48 8b 54 24 78 mov rdx, QWORD PTR pSrc$[rsp]
0025e 48 03 d1 add rdx, rcx
00261 48 8b ca mov rcx, rdx
00264 48 63 54 24 20 movsxd rdx, DWORD PTR iDestLen$[rsp]
00269 4c 8b 84 24 88
00 00 00 mov r8, QWORD PTR pDest$[rsp]
00271 4c 03 c2 add r8, rdx
00274 49 8b d0 mov rdx, r8
00277 48 89 54 24 50 mov QWORD PTR tv172[rsp], rdx
0027c 4c 8b c0 mov r8, rax
0027f 48 8b d1 mov rdx, rcx
00282 48 8b 44 24 50 mov rax, QWORD PTR tv172[rsp]
00287 48 8b c8 mov rcx, rax
0028a e8 00 00 00 00 call strncpy
2025-01-03 16:47:25 +08:00
; 551 :
; 552 : return nSize;
0028f 8b 84 24 80 00
00 00 mov eax, DWORD PTR nSize$[rsp]
2025-01-03 16:47:25 +08:00
; 553 : }
00296 48 83 c4 68 add rsp, 104 ; 00000068H
0029a c3 ret 0
?email_decode@CMailCoder@@QEAAHPEADI0@Z ENDP ; CMailCoder::email_decode
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?FoundChar@CMailCoder@@QEAAHPEAD0J@Z
2025-01-03 16:47:25 +08:00
_TEXT SEGMENT
i$1 = 32
lLen2$ = 36
$T2 = 40
j$ = 48
pComp$ = 64
__$ArrayPad$ = 4160
this$ = 4192
szSrc$ = 4200
pEx$ = 4208
lLen$ = 4216
?FoundChar@CMailCoder@@QEAAHPEAD0J@Z PROC ; CMailCoder::FoundChar, COMDAT
2025-01-03 16:47:25 +08:00
; 556 : {
$LN10:
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 b8 58 10 00 00 mov eax, 4184 ; 00001058H
00019 e8 00 00 00 00 call __chkstk
0001e 48 2b e0 sub rsp, rax
00021 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00028 48 33 c4 xor rax, rsp
0002b 48 89 84 24 40
10 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax
2025-01-03 16:47:25 +08:00
; 557 : char pComp[4096];
; 558 : if ( lLen == 0 ) //<2F><><EFBFBD><EFBFBD>ûָ<C3BB><D6B8><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ȡԭ<C8A1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
00033 83 bc 24 78 10
00 00 00 cmp DWORD PTR lLen$[rsp], 0
0003b 75 14 jne SHORT $LN5@FoundChar
2025-01-03 16:47:25 +08:00
; 559 : lLen = strlen( szSrc );
0003d 48 8b 8c 24 68
10 00 00 mov rcx, QWORD PTR szSrc$[rsp]
00045 e8 00 00 00 00 call strlen
0004a 89 84 24 78 10
00 00 mov DWORD PTR lLen$[rsp], eax
2025-01-03 16:47:25 +08:00
$LN5@FoundChar:
; 560 : long lLen2= strlen( pEx );
00051 48 8b 8c 24 70
10 00 00 mov rcx, QWORD PTR pEx$[rsp]
00059 e8 00 00 00 00 call strlen
0005e 89 44 24 24 mov DWORD PTR lLen2$[rsp], eax
2025-01-03 16:47:25 +08:00
; 561 : int j =0;
00062 c7 44 24 30 00
00 00 00 mov DWORD PTR j$[rsp], 0
2025-01-03 16:47:25 +08:00
; 562 : for ( int i =0 ; i< lLen ; i++ )
0006a c7 44 24 20 00
00 00 00 mov DWORD PTR i$1[rsp], 0
00072 eb 0a jmp SHORT $LN4@FoundChar
2025-01-03 16:47:25 +08:00
$LN2@FoundChar:
00074 8b 44 24 20 mov eax, DWORD PTR i$1[rsp]
00078 ff c0 inc eax
0007a 89 44 24 20 mov DWORD PTR i$1[rsp], eax
2025-01-03 16:47:25 +08:00
$LN4@FoundChar:
0007e 8b 84 24 78 10
00 00 mov eax, DWORD PTR lLen$[rsp]
00085 39 44 24 20 cmp DWORD PTR i$1[rsp], eax
00089 7d 6f jge SHORT $LN3@FoundChar
2025-01-03 16:47:25 +08:00
; 563 : {
; 564 : memcpy( pComp , szSrc+i , lLen2 );
0008b 48 63 44 24 24 movsxd rax, DWORD PTR lLen2$[rsp]
00090 48 63 4c 24 20 movsxd rcx, DWORD PTR i$1[rsp]
00095 48 8b 94 24 68
10 00 00 mov rdx, QWORD PTR szSrc$[rsp]
0009d 48 03 d1 add rdx, rcx
000a0 48 8b ca mov rcx, rdx
000a3 4c 8b c0 mov r8, rax
000a6 48 8b d1 mov rdx, rcx
000a9 48 8d 4c 24 40 lea rcx, QWORD PTR pComp$[rsp]
000ae e8 00 00 00 00 call memcpy
2025-01-03 16:47:25 +08:00
; 565 : pComp[lLen2] = 0;
000b3 48 63 44 24 24 movsxd rax, DWORD PTR lLen2$[rsp]
000b8 48 89 44 24 28 mov QWORD PTR $T2[rsp], rax
000bd 48 81 7c 24 28
00 10 00 00 cmp QWORD PTR $T2[rsp], 4096 ; 00001000H
000c6 73 02 jae SHORT $LN8@FoundChar
000c8 eb 05 jmp SHORT $LN9@FoundChar
2025-01-03 16:47:25 +08:00
$LN8@FoundChar:
000ca e8 00 00 00 00 call __report_rangecheckfailure
2025-01-03 16:47:25 +08:00
$LN9@FoundChar:
000cf 48 8b 44 24 28 mov rax, QWORD PTR $T2[rsp]
000d4 c6 44 04 40 00 mov BYTE PTR pComp$[rsp+rax], 0
2025-01-03 16:47:25 +08:00
; 566 : if (!strcmp( pComp , pEx ) )
000d9 48 8b 94 24 70
10 00 00 mov rdx, QWORD PTR pEx$[rsp]
000e1 48 8d 4c 24 40 lea rcx, QWORD PTR pComp$[rsp]
000e6 e8 00 00 00 00 call strcmp
000eb 85 c0 test eax, eax
000ed 75 06 jne SHORT $LN6@FoundChar
2025-01-03 16:47:25 +08:00
; 567 : {
; 568 : return i;
000ef 8b 44 24 20 mov eax, DWORD PTR i$1[rsp]
000f3 eb 0a jmp SHORT $LN1@FoundChar
2025-01-03 16:47:25 +08:00
$LN6@FoundChar:
; 569 : }
; 570 : }
000f5 e9 7a ff ff ff jmp $LN2@FoundChar
2025-01-03 16:47:25 +08:00
$LN3@FoundChar:
; 571 : return -1;
000fa b8 ff ff ff ff mov eax, -1
$LN1@FoundChar:
2025-01-03 16:47:25 +08:00
$LN7@FoundChar:
; 572 : }
000ff 48 8b 8c 24 40
10 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp]
00107 48 33 cc xor rcx, rsp
0010a e8 00 00 00 00 call __security_check_cookie
0010f 48 81 c4 58 10
00 00 add rsp, 4184 ; 00001058H
00116 c3 ret 0
?FoundChar@CMailCoder@@QEAAHPEAD0J@Z ENDP ; CMailCoder::FoundChar
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?HexToDec@CMailCoder@@CAEE@Z
_TEXT SEGMENT
tv71 = 0
C$ = 32
2025-01-03 16:47:25 +08:00
?HexToDec@CMailCoder@@CAEE@Z PROC ; CMailCoder::HexToDec, COMDAT
; 491 : {
$LN5:
00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl
00004 48 83 ec 18 sub rsp, 24
2025-01-03 16:47:25 +08:00
; 492 : return C <= '9' ? C - '0' : C - 'A' + 10;
00008 0f b6 44 24 20 movzx eax, BYTE PTR C$[rsp]
2025-01-03 16:47:25 +08:00
0000d 83 f8 39 cmp eax, 57 ; 00000039H
00010 7f 0d jg SHORT $LN3@HexToDec
00012 0f b6 44 24 20 movzx eax, BYTE PTR C$[rsp]
00017 83 e8 30 sub eax, 48 ; 00000030H
0001a 89 04 24 mov DWORD PTR tv71[rsp], eax
0001d eb 0b jmp SHORT $LN4@HexToDec
2025-01-03 16:47:25 +08:00
$LN3@HexToDec:
0001f 0f b6 44 24 20 movzx eax, BYTE PTR C$[rsp]
00024 83 e8 37 sub eax, 55 ; 00000037H
00027 89 04 24 mov DWORD PTR tv71[rsp], eax
2025-01-03 16:47:25 +08:00
$LN4@HexToDec:
0002a 0f b6 04 24 movzx eax, BYTE PTR tv71[rsp]
2025-01-03 16:47:25 +08:00
; 493 : }
0002e 48 83 c4 18 add rsp, 24
00032 c3 ret 0
2025-01-03 16:47:25 +08:00
?HexToDec@CMailCoder@@CAEE@Z ENDP ; CMailCoder::HexToDec
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?DecToHex@CMailCoder@@CAEE@Z
_TEXT SEGMENT
tv71 = 0
B$ = 32
2025-01-03 16:47:25 +08:00
?DecToHex@CMailCoder@@CAEE@Z PROC ; CMailCoder::DecToHex, COMDAT
; 483 : {
$LN5:
00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl
00004 48 83 ec 18 sub rsp, 24
2025-01-03 16:47:25 +08:00
; 484 : return B < 10 ? '0' + B:'A' + B - 10;
00008 0f b6 44 24 20 movzx eax, BYTE PTR B$[rsp]
0000d 83 f8 0a cmp eax, 10
00010 7d 0d jge SHORT $LN3@DecToHex
00012 0f b6 44 24 20 movzx eax, BYTE PTR B$[rsp]
00017 83 c0 30 add eax, 48 ; 00000030H
0001a 89 04 24 mov DWORD PTR tv71[rsp], eax
0001d eb 0b jmp SHORT $LN4@DecToHex
2025-01-03 16:47:25 +08:00
$LN3@DecToHex:
0001f 0f b6 44 24 20 movzx eax, BYTE PTR B$[rsp]
00024 83 c0 37 add eax, 55 ; 00000037H
00027 89 04 24 mov DWORD PTR tv71[rsp], eax
2025-01-03 16:47:25 +08:00
$LN4@DecToHex:
0002a 0f b6 04 24 movzx eax, BYTE PTR tv71[rsp]
2025-01-03 16:47:25 +08:00
; 485 : }
0002e 48 83 c4 18 add rsp, 24
00032 c3 ret 0
2025-01-03 16:47:25 +08:00
?DecToHex@CMailCoder@@CAEE@Z ENDP ; CMailCoder::DecToHex
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z
2025-01-03 16:47:25 +08:00
_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
2025-01-03 16:47:25 +08:00
0000f c3 ret 0
?__empty_global_delete@@YAXPEAX_KW4align_val_t@std@@@Z ENDP ; __empty_global_delete
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPEAXW4align_val_t@std@@@Z
2025-01-03 16:47:25 +08:00
_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
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPEAX_K@Z
2025-01-03 16:47:25 +08:00
_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
2025-01-03 16:47:25 +08:00
_TEXT ENDS
; Function compile flags: /Odtp
2025-01-03 16:47:25 +08:00
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPEAX@Z
2025-01-03 16:47:25 +08:00
_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
2025-01-03 16:47:25 +08:00
_TEXT ENDS
END