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

3279 lines
84 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

; Listing generated by Microsoft (R) Optimizing Compiler Version 19.34.31933.0
TITLE D:\Works\Corpsms_2010\SmsCenter\Release_Unicode\MailCoder.obj
.686P
.XMM
include listing.inc
.model flat
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
CONST ENDS
_DATA SEGMENT
?m_LineWidth@CMailCoder@@2IA DD 04cH ; CMailCoder::m_LineWidth
_DATA ENDS
PUBLIC ?__empty_global_delete@@YAXPAX@Z ; __empty_global_delete
PUBLIC ?__empty_global_delete@@YAXPAXI@Z ; __empty_global_delete
PUBLIC ?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z ; __empty_global_delete
PUBLIC ?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z ; __empty_global_delete
PUBLIC ?DecToHex@CMailCoder@@CAEE@Z ; CMailCoder::DecToHex
PUBLIC ?HexToDec@CMailCoder@@CAEE@Z ; CMailCoder::HexToDec
PUBLIC ?FoundChar@CMailCoder@@QAEHPAD0J@Z ; CMailCoder::FoundChar
PUBLIC ?email_decode@CMailCoder@@QAEHPADI0@Z ; CMailCoder::email_decode
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@@SAHPADI0@Z ; CMailCoder::base64_encode
PUBLIC ?base64_decode@CMailCoder@@SAHPADI0@Z ; CMailCoder::base64_decode
PUBLIC ?UU_encode@CMailCoder@@SAHPADI0@Z ; CMailCoder::UU_encode
PUBLIC ?UU_decode@CMailCoder@@SAHPADI0@Z ; CMailCoder::UU_decode
PUBLIC ?quoted_encode@CMailCoder@@SAHPADI0@Z ; CMailCoder::quoted_encode
PUBLIC ?quoted_decode@CMailCoder@@SAHPADI0@Z ; CMailCoder::quoted_decode
PUBLIC ??_C@_02HENDHKBC@?$DN?$DP@ ; `string'
PUBLIC ??_C@_03FNDDLLIG@?$DPB?$DP@ ; `string'
PUBLIC ??_C@_02EFGBMMPO@?$DP?$DN@ ; `string'
PUBLIC ??_C@_03EDFDKGKP@?$DPQ?$DP@ ; `string'
EXTRN ___report_rangecheckfailure:PROC
EXTRN _memcpy:PROC
EXTRN _memset:PROC
EXTRN _strcmp:PROC
EXTRN _strlen:PROC
EXTRN _strncpy:PROC
EXTRN @__security_check_cookie@4:PROC
EXTRN __chkstk:PROC
EXTRN ___security_cookie:DWORD
; COMDAT ??_C@_03EDFDKGKP@?$DPQ?$DP@
CONST SEGMENT
??_C@_03EDFDKGKP@?$DPQ?$DP@ DB '?Q?', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_02EFGBMMPO@?$DP?$DN@
CONST SEGMENT
??_C@_02EFGBMMPO@?$DP?$DN@ DB '?=', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_03FNDDLLIG@?$DPB?$DP@
CONST SEGMENT
??_C@_03FNDDLLIG@?$DPB?$DP@ DB '?B?', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_02HENDHKBC@?$DN?$DP@
CONST SEGMENT
??_C@_02HENDHKBC@?$DN?$DP@ DB '=?', 00H ; `string'
CONST ENDS
; COMDAT voltbl
voltbl SEGMENT
_volmd DB 014H
DB 0ebH
voltbl ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?quoted_decode@CMailCoder@@SAHPADI0@Z
_TEXT SEGMENT
tv87 = -81 ; size = 1
tv82 = -81 ; size = 1
tv73 = -81 ; size = 1
_pDestOrg$ = -16 ; size = 4
_InLimitPtr$ = -12 ; size = 4
_C$ = -8 ; size = 2
_nB$ = -2 ; size = 1
_nA$ = -1 ; size = 1
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?quoted_decode@CMailCoder@@SAHPADI0@Z PROC ; CMailCoder::quoted_decode, COMDAT
; 447 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 54 sub esp, 84 ; 00000054H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 448 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00009 83 7d 08 00 cmp DWORD PTR _pSrc$[ebp], 0
0000d 74 0c je SHORT $LN5@quoted_dec
0000f 83 7d 10 00 cmp DWORD PTR _pDest$[ebp], 0
00013 74 06 je SHORT $LN5@quoted_dec
00015 83 7d 0c 00 cmp DWORD PTR _nSize$[ebp], 0
00019 77 07 ja SHORT $LN4@quoted_dec
$LN5@quoted_dec:
0001b 33 c0 xor eax, eax
0001d e9 17 01 00 00 jmp $LN1@quoted_dec
$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;
00022 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00025 03 45 0c add eax, DWORD PTR _nSize$[ebp]
00028 89 45 f4 mov DWORD PTR _InLimitPtr$[ebp], eax
; 454 : char *pDestOrg = pDest;
0002b 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
0002e 89 45 f0 mov DWORD PTR _pDestOrg$[ebp], eax
$LN2@quoted_dec:
; 455 :
; 456 : while (pSrc < InLimitPtr)
00031 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00034 3b 45 f4 cmp eax, DWORD PTR _InLimitPtr$[ebp]
00037 0f 83 f6 00 00
00 jae $LN3@quoted_dec
; 457 : {
; 458 : C[0] = *pSrc++; //<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD>ַ<EFBFBD>
0003d 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00040 8a 08 mov cl, BYTE PTR [eax]
00042 88 4d af mov BYTE PTR tv73[ebp], cl
00045 8b 55 08 mov edx, DWORD PTR _pSrc$[ebp]
00048 83 c2 01 add edx, 1
0004b 89 55 08 mov DWORD PTR _pSrc$[ebp], edx
0004e b8 01 00 00 00 mov eax, 1
00053 6b c8 00 imul ecx, eax, 0
00056 8a 55 af mov dl, BYTE PTR tv73[ebp]
00059 88 54 0d f8 mov BYTE PTR _C$[ebp+ecx], dl
; 459 : if (C[0] == '=') //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0005d b8 01 00 00 00 mov eax, 1
00062 6b c8 00 imul ecx, eax, 0
00065 0f be 54 0d f8 movsx edx, BYTE PTR _C$[ebp+ecx]
0006a 83 fa 3d cmp edx, 61 ; 0000003dH
0006d 0f 85 a1 00 00
00 jne $LN6@quoted_dec
; 460 : {
; 461 : C[0] = *pSrc++; //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
00073 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00076 8a 08 mov cl, BYTE PTR [eax]
00078 88 4d af mov BYTE PTR tv82[ebp], cl
0007b 8b 55 08 mov edx, DWORD PTR _pSrc$[ebp]
0007e 83 c2 01 add edx, 1
00081 89 55 08 mov DWORD PTR _pSrc$[ebp], edx
00084 b8 01 00 00 00 mov eax, 1
00089 6b c8 00 imul ecx, eax, 0
0008c 8a 55 af mov dl, BYTE PTR tv82[ebp]
0008f 88 54 0d f8 mov BYTE PTR _C$[ebp+ecx], dl
; 462 : C[1] = *pSrc++;
00093 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00096 8a 08 mov cl, BYTE PTR [eax]
00098 88 4d af mov BYTE PTR tv87[ebp], cl
0009b 8b 55 08 mov edx, DWORD PTR _pSrc$[ebp]
0009e 83 c2 01 add edx, 1
000a1 89 55 08 mov DWORD PTR _pSrc$[ebp], edx
000a4 b8 01 00 00 00 mov eax, 1
000a9 c1 e0 00 shl eax, 0
000ac 8a 4d af mov cl, BYTE PTR tv87[ebp]
000af 88 4c 05 f8 mov BYTE PTR _C$[ebp+eax], cl
; 463 :
; 464 : if (C[0] != '\r')
000b3 b8 01 00 00 00 mov eax, 1
000b8 6b c8 00 imul ecx, eax, 0
000bb 0f be 54 0d f8 movsx edx, BYTE PTR _C$[ebp+ecx]
000c0 83 fa 0d cmp edx, 13 ; 0000000dH
000c3 74 4d je SHORT $LN8@quoted_dec
; 465 : {
; 466 : nA = HexToDec(C[0]); //<2F><><EFBFBD><EFBFBD><EFBFBD>
000c5 b8 01 00 00 00 mov eax, 1
000ca 6b c8 00 imul ecx, eax, 0
000cd 0f b6 54 0d f8 movzx edx, BYTE PTR _C$[ebp+ecx]
000d2 52 push edx
000d3 e8 00 00 00 00 call ?HexToDec@CMailCoder@@CAEE@Z ; CMailCoder::HexToDec
000d8 83 c4 04 add esp, 4
000db 88 45 ff mov BYTE PTR _nA$[ebp], al
; 467 : nB = HexToDec(C[1]);
000de b8 01 00 00 00 mov eax, 1
000e3 c1 e0 00 shl eax, 0
000e6 0f b6 4c 05 f8 movzx ecx, BYTE PTR _C$[ebp+eax]
000eb 51 push ecx
000ec e8 00 00 00 00 call ?HexToDec@CMailCoder@@CAEE@Z ; CMailCoder::HexToDec
000f1 83 c4 04 add esp, 4
000f4 88 45 fe mov BYTE PTR _nB$[ebp], al
; 468 : *pDest++ = (nA << 4) + nB;
000f7 0f b6 45 ff movzx eax, BYTE PTR _nA$[ebp]
000fb c1 e0 04 shl eax, 4
000fe 0f b6 4d fe movzx ecx, BYTE PTR _nB$[ebp]
00102 03 c1 add eax, ecx
00104 8b 55 10 mov edx, DWORD PTR _pDest$[ebp]
00107 88 02 mov BYTE PTR [edx], al
00109 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
0010c 83 c0 01 add eax, 1
0010f 89 45 10 mov DWORD PTR _pDest$[ebp], eax
$LN8@quoted_dec:
; 469 : }
; 470 : }
00112 eb 1a jmp SHORT $LN7@quoted_dec
$LN6@quoted_dec:
; 471 : else //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 472 : {
; 473 : *pDest++ = C[0];
00114 b8 01 00 00 00 mov eax, 1
00119 6b c8 00 imul ecx, eax, 0
0011c 8b 55 10 mov edx, DWORD PTR _pDest$[ebp]
0011f 8a 44 0d f8 mov al, BYTE PTR _C$[ebp+ecx]
00123 88 02 mov BYTE PTR [edx], al
00125 8b 4d 10 mov ecx, DWORD PTR _pDest$[ebp]
00128 83 c1 01 add ecx, 1
0012b 89 4d 10 mov DWORD PTR _pDest$[ebp], ecx
$LN7@quoted_dec:
; 474 : }
; 475 : }
0012e e9 fe fe ff ff jmp $LN2@quoted_dec
$LN3@quoted_dec:
; 476 : return (unsigned int)(pDest - pDestOrg);
00133 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
00136 2b 45 f0 sub eax, DWORD PTR _pDestOrg$[ebp]
$LN1@quoted_dec:
; 477 : }
00139 5f pop edi
0013a 5e pop esi
0013b 5b pop ebx
0013c 8b e5 mov esp, ebp
0013e 5d pop ebp
0013f c3 ret 0
?quoted_decode@CMailCoder@@SAHPADI0@Z ENDP ; CMailCoder::quoted_decode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?quoted_encode@CMailCoder@@SAHPADI0@Z
_TEXT SEGMENT
tv73 = -85 ; size = 1
_OutPtr$ = -20 ; size = 4
_InLimitPtr$ = -16 ; size = 4
_InPtr$ = -12 ; size = 4
_B$ = -5 ; size = 1
_Len$ = -4 ; size = 4
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?quoted_encode@CMailCoder@@SAHPADI0@Z PROC ; CMailCoder::quoted_encode, COMDAT
; 401 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 58 sub esp, 88 ; 00000058H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 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;
00009 83 7d 08 00 cmp DWORD PTR _pSrc$[ebp], 0
0000d 74 0c je SHORT $LN7@quoted_enc
0000f 83 7d 10 00 cmp DWORD PTR _pDest$[ebp], 0
00013 74 06 je SHORT $LN7@quoted_enc
00015 83 7d 0c 00 cmp DWORD PTR _nSize$[ebp], 0
00019 77 07 ja SHORT $LN6@quoted_enc
$LN7@quoted_enc:
0001b 33 c0 xor eax, eax
0001d e9 2b 01 00 00 jmp $LN1@quoted_enc
$LN6@quoted_enc:
; 408 :
; 409 : InPtr = pSrc;
00022 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00025 89 45 f4 mov DWORD PTR _InPtr$[ebp], eax
; 410 : InLimitPtr= InPtr + nSize;
00028 8b 45 f4 mov eax, DWORD PTR _InPtr$[ebp]
0002b 03 45 0c add eax, DWORD PTR _nSize$[ebp]
0002e 89 45 f0 mov DWORD PTR _InLimitPtr$[ebp], eax
; 411 : OutPtr = pDest;
00031 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
00034 89 45 ec mov DWORD PTR _OutPtr$[ebp], eax
$LN2@quoted_enc:
; 412 :
; 413 : while (InPtr < InLimitPtr)
00037 8b 45 f4 mov eax, DWORD PTR _InPtr$[ebp]
0003a 3b 45 f0 cmp eax, DWORD PTR _InLimitPtr$[ebp]
0003d 0f 83 fe 00 00
00 jae $LN3@quoted_enc
; 414 : {
; 415 : Len = 0;
00043 c7 45 fc 00 00
00 00 mov DWORD PTR _Len$[ebp], 0
$LN4@quoted_enc:
; 416 : while ((InPtr < InLimitPtr) && (Len < m_LineWidth))
0004a 8b 45 f4 mov eax, DWORD PTR _InPtr$[ebp]
0004d 3b 45 f0 cmp eax, DWORD PTR _InLimitPtr$[ebp]
00050 0f 83 ae 00 00
00 jae $LN5@quoted_enc
00056 8b 45 fc mov eax, DWORD PTR _Len$[ebp]
00059 3b 05 00 00 00
00 cmp eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
0005f 0f 83 9f 00 00
00 jae $LN5@quoted_enc
; 417 : {
; 418 : B = *InPtr++;
00065 8b 45 f4 mov eax, DWORD PTR _InPtr$[ebp]
00068 8a 08 mov cl, BYTE PTR [eax]
0006a 88 4d ab mov BYTE PTR tv73[ebp], cl
0006d 8b 55 f4 mov edx, DWORD PTR _InPtr$[ebp]
00070 83 c2 01 add edx, 1
00073 89 55 f4 mov DWORD PTR _InPtr$[ebp], edx
00076 8a 45 ab mov al, BYTE PTR tv73[ebp]
00079 88 45 fb mov BYTE PTR _B$[ebp], al
; 419 : if (QUOTED_ENCODE_TABLE[ B ] == 255)
0007c 0f b6 45 fb movzx eax, BYTE PTR _B$[ebp]
00080 0f b6 88 00 00
00 00 movzx ecx, BYTE PTR ?QUOTED_ENCODE_TABLE@CMailCoder@@2QBEB[eax]
00087 81 f9 ff 00 00
00 cmp ecx, 255 ; 000000ffH
0008d 75 56 jne SHORT $LN8@quoted_enc
; 420 : {
; 421 : *OutPtr++ = '=';
0008f 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
00092 c6 00 3d mov BYTE PTR [eax], 61 ; 0000003dH
00095 8b 4d ec mov ecx, DWORD PTR _OutPtr$[ebp]
00098 83 c1 01 add ecx, 1
0009b 89 4d ec mov DWORD PTR _OutPtr$[ebp], ecx
; 422 : *OutPtr++ = DecToHex(B >> 4);
0009e 0f b6 45 fb movzx eax, BYTE PTR _B$[ebp]
000a2 c1 f8 04 sar eax, 4
000a5 50 push eax
000a6 e8 00 00 00 00 call ?DecToHex@CMailCoder@@CAEE@Z ; CMailCoder::DecToHex
000ab 83 c4 04 add esp, 4
000ae 8b 4d ec mov ecx, DWORD PTR _OutPtr$[ebp]
000b1 88 01 mov BYTE PTR [ecx], al
000b3 8b 55 ec mov edx, DWORD PTR _OutPtr$[ebp]
000b6 83 c2 01 add edx, 1
000b9 89 55 ec mov DWORD PTR _OutPtr$[ebp], edx
; 423 : *OutPtr++ = DecToHex(B & 0x0f);
000bc 0f b6 45 fb movzx eax, BYTE PTR _B$[ebp]
000c0 83 e0 0f and eax, 15 ; 0000000fH
000c3 50 push eax
000c4 e8 00 00 00 00 call ?DecToHex@CMailCoder@@CAEE@Z ; CMailCoder::DecToHex
000c9 83 c4 04 add esp, 4
000cc 8b 4d ec mov ecx, DWORD PTR _OutPtr$[ebp]
000cf 88 01 mov BYTE PTR [ecx], al
000d1 8b 55 ec mov edx, DWORD PTR _OutPtr$[ebp]
000d4 83 c2 01 add edx, 1
000d7 89 55 ec mov DWORD PTR _OutPtr$[ebp], edx
; 424 : Len+=3;
000da 8b 45 fc mov eax, DWORD PTR _Len$[ebp]
000dd 83 c0 03 add eax, 3
000e0 89 45 fc mov DWORD PTR _Len$[ebp], eax
; 425 : }
000e3 eb 1a jmp SHORT $LN9@quoted_enc
$LN8@quoted_enc:
; 426 : else
; 427 : {
; 428 : *OutPtr++ = B;
000e5 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
000e8 8a 4d fb mov cl, BYTE PTR _B$[ebp]
000eb 88 08 mov BYTE PTR [eax], cl
000ed 8b 55 ec mov edx, DWORD PTR _OutPtr$[ebp]
000f0 83 c2 01 add edx, 1
000f3 89 55 ec mov DWORD PTR _OutPtr$[ebp], edx
; 429 : Len++;
000f6 8b 45 fc mov eax, DWORD PTR _Len$[ebp]
000f9 83 c0 01 add eax, 1
000fc 89 45 fc mov DWORD PTR _Len$[ebp], eax
$LN9@quoted_enc:
; 430 : }
; 431 : }
000ff e9 46 ff ff ff jmp $LN4@quoted_enc
$LN5@quoted_enc:
; 432 : if (Len >= m_LineWidth)
00104 8b 45 fc mov eax, DWORD PTR _Len$[ebp]
00107 3b 05 00 00 00
00 cmp eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
0010d 72 2d jb SHORT $LN10@quoted_enc
; 433 : {
; 434 : *OutPtr++ = '=';
0010f 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
00112 c6 00 3d mov BYTE PTR [eax], 61 ; 0000003dH
00115 8b 4d ec mov ecx, DWORD PTR _OutPtr$[ebp]
00118 83 c1 01 add ecx, 1
0011b 89 4d ec mov DWORD PTR _OutPtr$[ebp], ecx
; 435 : *OutPtr++ = '\r'; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
0011e 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
00121 c6 00 0d mov BYTE PTR [eax], 13 ; 0000000dH
00124 8b 4d ec mov ecx, DWORD PTR _OutPtr$[ebp]
00127 83 c1 01 add ecx, 1
0012a 89 4d ec mov DWORD PTR _OutPtr$[ebp], ecx
; 436 : *OutPtr++ = '\n';
0012d 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
00130 c6 00 0a mov BYTE PTR [eax], 10 ; 0000000aH
00133 8b 4d ec mov ecx, DWORD PTR _OutPtr$[ebp]
00136 83 c1 01 add ecx, 1
00139 89 4d ec mov DWORD PTR _OutPtr$[ebp], ecx
$LN10@quoted_enc:
; 437 : }
; 438 : }
0013c e9 f6 fe ff ff jmp $LN2@quoted_enc
$LN3@quoted_enc:
; 439 : *OutPtr = '\0';
00141 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
00144 c6 00 00 mov BYTE PTR [eax], 0
; 440 : return (unsigned int) (OutPtr - pDest);
00147 8b 45 ec mov eax, DWORD PTR _OutPtr$[ebp]
0014a 2b 45 10 sub eax, DWORD PTR _pDest$[ebp]
$LN1@quoted_enc:
; 441 : }
0014d 5f pop edi
0014e 5e pop esi
0014f 5b pop ebx
00150 8b e5 mov esp, ebp
00152 5d pop ebp
00153 c3 ret 0
?quoted_encode@CMailCoder@@SAHPADI0@Z ENDP ; CMailCoder::quoted_encode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UU_decode@CMailCoder@@SAHPADI0@Z
_TEXT SEGMENT
tv74 = -93 ; size = 1
_OutPtr$ = -28 ; size = 4
_InLimitPtr$ = -24 ; size = 4
_InPtr$ = -20 ; size = 4
_Index$ = -16 ; size = 4
_CurrIndex$ = -12 ; size = 4
_Tmp$ = -5 ; size = 1
_C$ = -4 ; size = 4
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?UU_decode@CMailCoder@@SAHPADI0@Z PROC ; CMailCoder::UU_decode, COMDAT
; 341 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 60 sub esp, 96 ; 00000060H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 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;
00009 83 7d 08 00 cmp DWORD PTR _pSrc$[ebp], 0
0000d 74 0c je SHORT $LN8@UU_decode
0000f 83 7d 10 00 cmp DWORD PTR _pDest$[ebp], 0
00013 74 06 je SHORT $LN8@UU_decode
00015 83 7d 0c 00 cmp DWORD PTR _nSize$[ebp], 0
00019 77 07 ja SHORT $LN7@UU_decode
$LN8@UU_decode:
0001b 33 c0 xor eax, eax
0001d e9 67 01 00 00 jmp $LN1@UU_decode
$LN7@UU_decode:
; 349 :
; 350 : CurrIndex = 0;
00022 c7 45 f4 00 00
00 00 mov DWORD PTR _CurrIndex$[ebp], 0
; 351 :
; 352 : InPtr = pSrc;
00029 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
0002c 89 45 ec mov DWORD PTR _InPtr$[ebp], eax
; 353 : InLimitPtr= InPtr + nSize;
0002f 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00032 03 45 0c add eax, DWORD PTR _nSize$[ebp]
00035 89 45 e8 mov DWORD PTR _InLimitPtr$[ebp], eax
; 354 : OutPtr = pDest;
00038 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
0003b 89 45 e4 mov DWORD PTR _OutPtr$[ebp], eax
$LN2@UU_decode:
; 355 :
; 356 : while (InPtr != InLimitPtr) //<2F><>ȡ4<C8A1><34><EFBFBD>ַ<EFBFBD>
0003e 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00041 3b 45 e8 cmp eax, DWORD PTR _InLimitPtr$[ebp]
00044 0f 84 39 01 00
00 je $LN3@UU_decode
; 357 : {
; 358 : memset(C, 0, sizeof(C));
0004a 6a 04 push 4
0004c 6a 00 push 0
0004e 8d 45 fc lea eax, DWORD PTR _C$[ebp]
00051 50 push eax
00052 e8 00 00 00 00 call _memset
00057 83 c4 0c add esp, 12 ; 0000000cH
; 359 : Index = 0;
0005a c7 45 f0 00 00
00 00 mov DWORD PTR _Index$[ebp], 0
$LN6@UU_decode:
; 360 : do
; 361 : {
; 362 : Tmp = *InPtr++;
00061 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00064 8a 08 mov cl, BYTE PTR [eax]
00066 88 4d a3 mov BYTE PTR tv74[ebp], cl
00069 8b 55 ec mov edx, DWORD PTR _InPtr$[ebp]
0006c 83 c2 01 add edx, 1
0006f 89 55 ec mov DWORD PTR _InPtr$[ebp], edx
00072 8a 45 a3 mov al, BYTE PTR tv74[ebp]
00075 88 45 fb mov BYTE PTR _Tmp$[ebp], al
; 363 : if (Tmp == 0x60)
00078 0f be 45 fb movsx eax, BYTE PTR _Tmp$[ebp]
0007c 83 f8 60 cmp eax, 96 ; 00000060H
0007f 75 06 jne SHORT $LN9@UU_decode
; 364 : {
; 365 : Tmp = 0x20; //Ϊ<>˼<EFBFBD><CBBC><EFBFBD>OutLook Express
00081 c6 45 fb 20 mov BYTE PTR _Tmp$[ebp], 32 ; 00000020H
; 366 : }
00085 eb 19 jmp SHORT $LN10@UU_decode
$LN9@UU_decode:
; 367 : else if (Tmp =='\r') //<2F>׸<EFBFBD><D7B8><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
00087 0f be 45 fb movsx eax, BYTE PTR _Tmp$[ebp]
0008b 83 f8 0d cmp eax, 13 ; 0000000dH
0008e 75 10 jne SHORT $LN10@UU_decode
; 368 : {
; 369 : InPtr++;
00090 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00093 83 c0 01 add eax, 1
00096 89 45 ec mov DWORD PTR _InPtr$[ebp], eax
; 370 : CurrIndex = 0;
00099 c7 45 f4 00 00
00 00 mov DWORD PTR _CurrIndex$[ebp], 0
$LN10@UU_decode:
; 371 : }
; 372 :
; 373 : if ((Tmp > 0x20) || ( CurrIndex > 0 ))
000a0 0f be 45 fb movsx eax, BYTE PTR _Tmp$[ebp]
000a4 83 f8 20 cmp eax, 32 ; 00000020H
000a7 7f 06 jg SHORT $LN13@UU_decode
000a9 83 7d f4 00 cmp DWORD PTR _CurrIndex$[ebp], 0
000ad 7e 2c jle SHORT $LN4@UU_decode
$LN13@UU_decode:
; 374 : {
; 375 : Tmp = Tmp - 0x20;
000af 0f be 45 fb movsx eax, BYTE PTR _Tmp$[ebp]
000b3 83 e8 20 sub eax, 32 ; 00000020H
000b6 88 45 fb mov BYTE PTR _Tmp$[ebp], al
; 376 : if (CurrIndex == 0)
000b9 83 7d f4 00 cmp DWORD PTR _CurrIndex$[ebp], 0
000bd 75 09 jne SHORT $LN14@UU_decode
; 377 : {
; 378 : CurrIndex = Tmp;
000bf 0f be 45 fb movsx eax, BYTE PTR _Tmp$[ebp]
000c3 89 45 f4 mov DWORD PTR _CurrIndex$[ebp], eax
; 379 : }
000c6 eb 13 jmp SHORT $LN4@UU_decode
$LN14@UU_decode:
; 380 : else
; 381 : {
; 382 : C[Index] = Tmp; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׷<EFBFBD><D7B7><EFBFBD>ַ<EFBFBD>
000c8 8b 45 f0 mov eax, DWORD PTR _Index$[ebp]
000cb 8a 4d fb mov cl, BYTE PTR _Tmp$[ebp]
000ce 88 4c 05 fc mov BYTE PTR _C$[ebp+eax], cl
; 383 : Index++;
000d2 8b 45 f0 mov eax, DWORD PTR _Index$[ebp]
000d5 83 c0 01 add eax, 1
000d8 89 45 f0 mov DWORD PTR _Index$[ebp], eax
$LN4@UU_decode:
; 384 : }
; 385 : }
; 386 : }
; 387 : while ((InPtr < InLimitPtr) && (Index < sizeof(C)));
000db 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
000de 3b 45 e8 cmp eax, DWORD PTR _InLimitPtr$[ebp]
000e1 73 0a jae SHORT $LN5@UU_decode
000e3 83 7d f0 04 cmp DWORD PTR _Index$[ebp], 4
000e7 0f 82 74 ff ff
ff jb $LN6@UU_decode
$LN5@UU_decode:
; 388 :
; 389 : OutPtr[0] = (char) ((C[0] << 2) + (C[1] >> 4));
000ed b8 01 00 00 00 mov eax, 1
000f2 6b c8 00 imul ecx, eax, 0
000f5 0f be 54 0d fc movsx edx, BYTE PTR _C$[ebp+ecx]
000fa b8 01 00 00 00 mov eax, 1
000ff c1 e0 00 shl eax, 0
00102 0f be 4c 05 fc movsx ecx, BYTE PTR _C$[ebp+eax]
00107 c1 f9 04 sar ecx, 4
0010a 8d 14 91 lea edx, DWORD PTR [ecx+edx*4]
0010d b8 01 00 00 00 mov eax, 1
00112 6b c8 00 imul ecx, eax, 0
00115 8b 45 e4 mov eax, DWORD PTR _OutPtr$[ebp]
00118 88 14 08 mov BYTE PTR [eax+ecx], dl
; 390 : OutPtr[1] = (char) ((C[1] << 4) + (C[2] >> 2));
0011b b8 01 00 00 00 mov eax, 1
00120 c1 e0 00 shl eax, 0
00123 0f be 4c 05 fc movsx ecx, BYTE PTR _C$[ebp+eax]
00128 c1 e1 04 shl ecx, 4
0012b ba 01 00 00 00 mov edx, 1
00130 d1 e2 shl edx, 1
00132 0f be 44 15 fc movsx eax, BYTE PTR _C$[ebp+edx]
00137 c1 f8 02 sar eax, 2
0013a 03 c8 add ecx, eax
0013c ba 01 00 00 00 mov edx, 1
00141 c1 e2 00 shl edx, 0
00144 8b 45 e4 mov eax, DWORD PTR _OutPtr$[ebp]
00147 88 0c 10 mov BYTE PTR [eax+edx], cl
; 391 : OutPtr[2] = (char) ((C[2] << 6) + C[3]);
0014a b8 01 00 00 00 mov eax, 1
0014f d1 e0 shl eax, 1
00151 0f be 4c 05 fc movsx ecx, BYTE PTR _C$[ebp+eax]
00156 c1 e1 06 shl ecx, 6
00159 ba 01 00 00 00 mov edx, 1
0015e 6b c2 03 imul eax, edx, 3
00161 0f be 54 05 fc movsx edx, BYTE PTR _C$[ebp+eax]
00166 03 ca add ecx, edx
00168 b8 01 00 00 00 mov eax, 1
0016d d1 e0 shl eax, 1
0016f 8b 55 e4 mov edx, DWORD PTR _OutPtr$[ebp]
00172 88 0c 02 mov BYTE PTR [edx+eax], cl
; 392 : OutPtr+=3; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
00175 8b 45 e4 mov eax, DWORD PTR _OutPtr$[ebp]
00178 83 c0 03 add eax, 3
0017b 89 45 e4 mov DWORD PTR _OutPtr$[ebp], eax
; 393 : }
0017e e9 bb fe ff ff jmp $LN2@UU_decode
$LN3@UU_decode:
; 394 : return (unsigned int)OutPtr - (unsigned int)pDest;
00183 8b 45 e4 mov eax, DWORD PTR _OutPtr$[ebp]
00186 2b 45 10 sub eax, DWORD PTR _pDest$[ebp]
$LN1@UU_decode:
; 395 : }
00189 5f pop edi
0018a 5e pop esi
0018b 5b pop ebx
0018c 8b e5 mov esp, ebp
0018e 5d pop ebp
0018f c3 ret 0
?UU_decode@CMailCoder@@SAHPADI0@Z ENDP ; CMailCoder::UU_decode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UU_encode@CMailCoder@@SAHPADI0@Z
_TEXT SEGMENT
tv79 = -93 ; size = 1
_i$1 = -28 ; size = 4
_OutPtr$ = -24 ; size = 4
_InLimitPtr$ = -20 ; size = 4
_InPtr$ = -16 ; size = 4
_B$ = -12 ; size = 3
_Len$ = -8 ; size = 4
_lByteBufferSpace$ = -4 ; size = 4
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?UU_encode@CMailCoder@@SAHPADI0@Z PROC ; CMailCoder::UU_encode, COMDAT
; 285 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 60 sub esp, 96 ; 00000060H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 286 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00009 83 7d 08 00 cmp DWORD PTR _pSrc$[ebp], 0
0000d 74 0c je SHORT $LN13@UU_encode
0000f 83 7d 10 00 cmp DWORD PTR _pDest$[ebp], 0
00013 74 06 je SHORT $LN13@UU_encode
00015 83 7d 0c 00 cmp DWORD PTR _nSize$[ebp], 0
00019 77 07 ja SHORT $LN12@UU_encode
$LN13@UU_encode:
0001b 33 c0 xor eax, eax
0001d e9 d9 01 00 00 jmp $LN1@UU_encode
$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;
00022 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00025 89 45 f0 mov DWORD PTR _InPtr$[ebp], eax
; 294 : InLimitPtr= InPtr + nSize;
00028 8b 45 f0 mov eax, DWORD PTR _InPtr$[ebp]
0002b 03 45 0c add eax, DWORD PTR _nSize$[ebp]
0002e 89 45 ec mov DWORD PTR _InLimitPtr$[ebp], eax
; 295 : OutPtr = pDest;
00031 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
00034 89 45 e8 mov DWORD PTR _OutPtr$[ebp], eax
$LN2@UU_encode:
; 296 :
; 297 : while (InPtr < InLimitPtr)
00037 8b 45 f0 mov eax, DWORD PTR _InPtr$[ebp]
0003a 3b 45 ec cmp eax, DWORD PTR _InLimitPtr$[ebp]
0003d 0f 83 b2 01 00
00 jae $LN3@UU_encode
; 298 : {
; 299 : Len = 0;
00043 c7 45 f8 00 00
00 00 mov DWORD PTR _Len$[ebp], 0
$LN4@UU_encode:
; 300 :
; 301 : while ((InPtr < InLimitPtr) && (Len < m_LineWidth))
0004a 8b 45 f0 mov eax, DWORD PTR _InPtr$[ebp]
0004d 3b 45 ec cmp eax, DWORD PTR _InLimitPtr$[ebp]
00050 0f 83 7c 01 00
00 jae $LN5@UU_encode
00056 8b 45 f8 mov eax, DWORD PTR _Len$[ebp]
00059 3b 05 00 00 00
00 cmp eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
0005f 0f 83 6d 01 00
00 jae $LN5@UU_encode
; 302 : {
; 303 : lByteBufferSpace = (unsigned int) InLimitPtr - (unsigned int) InPtr;
00065 8b 45 ec mov eax, DWORD PTR _InLimitPtr$[ebp]
00068 2b 45 f0 sub eax, DWORD PTR _InPtr$[ebp]
0006b 89 45 fc mov DWORD PTR _lByteBufferSpace$[ebp], eax
; 304 : if (lByteBufferSpace > 3) lByteBufferSpace = 3; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
0006e 83 7d fc 03 cmp DWORD PTR _lByteBufferSpace$[ebp], 3
00072 76 07 jbe SHORT $LN14@UU_encode
00074 c7 45 fc 03 00
00 00 mov DWORD PTR _lByteBufferSpace$[ebp], 3
$LN14@UU_encode:
; 305 : //ȡֵ
; 306 : for (unsigned int i = 0; i < lByteBufferSpace; i++ )
0007b c7 45 e4 00 00
00 00 mov DWORD PTR _i$1[ebp], 0
00082 eb 09 jmp SHORT $LN8@UU_encode
$LN6@UU_encode:
00084 8b 45 e4 mov eax, DWORD PTR _i$1[ebp]
00087 83 c0 01 add eax, 1
0008a 89 45 e4 mov DWORD PTR _i$1[ebp], eax
$LN8@UU_encode:
0008d 8b 45 e4 mov eax, DWORD PTR _i$1[ebp]
00090 3b 45 fc cmp eax, DWORD PTR _lByteBufferSpace$[ebp]
00093 73 1d jae SHORT $LN7@UU_encode
; 307 : {
; 308 : B[i] = *InPtr++;
00095 8b 45 f0 mov eax, DWORD PTR _InPtr$[ebp]
00098 8a 08 mov cl, BYTE PTR [eax]
0009a 88 4d a3 mov BYTE PTR tv79[ebp], cl
0009d 8b 55 f0 mov edx, DWORD PTR _InPtr$[ebp]
000a0 83 c2 01 add edx, 1
000a3 89 55 f0 mov DWORD PTR _InPtr$[ebp], edx
000a6 8b 45 e4 mov eax, DWORD PTR _i$1[ebp]
000a9 8a 4d a3 mov cl, BYTE PTR tv79[ebp]
000ac 88 4c 05 f4 mov BYTE PTR _B$[ebp+eax], cl
; 309 : }
000b0 eb d2 jmp SHORT $LN6@UU_encode
$LN7@UU_encode:
; 310 : if (Len == 0)
000b2 83 7d f8 00 cmp DWORD PTR _Len$[ebp], 0
000b6 75 18 jne SHORT $LN15@UU_encode
; 311 : {
; 312 : *OutPtr++ = 'M';
000b8 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
000bb c6 00 4d mov BYTE PTR [eax], 77 ; 0000004dH
000be 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
000c1 83 c1 01 add ecx, 1
000c4 89 4d e8 mov DWORD PTR _OutPtr$[ebp], ecx
; 313 : Len++;
000c7 8b 45 f8 mov eax, DWORD PTR _Len$[ebp]
000ca 83 c0 01 add eax, 1
000cd 89 45 f8 mov DWORD PTR _Len$[ebp], eax
$LN15@UU_encode:
; 314 : }
; 315 : //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 316 : OutPtr[0] = B[0] >> 2;
000d0 b8 01 00 00 00 mov eax, 1
000d5 6b c8 00 imul ecx, eax, 0
000d8 0f b6 54 0d f4 movzx edx, BYTE PTR _B$[ebp+ecx]
000dd c1 fa 02 sar edx, 2
000e0 b8 01 00 00 00 mov eax, 1
000e5 6b c8 00 imul ecx, eax, 0
000e8 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
000eb 88 14 08 mov BYTE PTR [eax+ecx], dl
; 317 : OutPtr[1] = (unsigned int) (B[0] << 4 & 0x30) + (unsigned int) (B[1] >> 4 & 0x0F);
000ee b8 01 00 00 00 mov eax, 1
000f3 6b c8 00 imul ecx, eax, 0
000f6 0f b6 54 0d f4 movzx edx, BYTE PTR _B$[ebp+ecx]
000fb c1 e2 04 shl edx, 4
000fe 83 e2 30 and edx, 48 ; 00000030H
00101 b8 01 00 00 00 mov eax, 1
00106 c1 e0 00 shl eax, 0
00109 0f b6 4c 05 f4 movzx ecx, BYTE PTR _B$[ebp+eax]
0010e c1 f9 04 sar ecx, 4
00111 83 e1 0f and ecx, 15 ; 0000000fH
00114 03 d1 add edx, ecx
00116 b8 01 00 00 00 mov eax, 1
0011b c1 e0 00 shl eax, 0
0011e 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
00121 88 14 01 mov BYTE PTR [ecx+eax], dl
; 318 : OutPtr[2] = (unsigned int) (B[1] << 2 & 0x3C) + (unsigned int) (B[2] >> 6 & 0x03);
00124 b8 01 00 00 00 mov eax, 1
00129 c1 e0 00 shl eax, 0
0012c 0f b6 4c 05 f4 movzx ecx, BYTE PTR _B$[ebp+eax]
00131 c1 e1 02 shl ecx, 2
00134 83 e1 3c and ecx, 60 ; 0000003cH
00137 ba 01 00 00 00 mov edx, 1
0013c d1 e2 shl edx, 1
0013e 0f b6 44 15 f4 movzx eax, BYTE PTR _B$[ebp+edx]
00143 c1 f8 06 sar eax, 6
00146 83 e0 03 and eax, 3
00149 03 c8 add ecx, eax
0014b ba 01 00 00 00 mov edx, 1
00150 d1 e2 shl edx, 1
00152 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
00155 88 0c 10 mov BYTE PTR [eax+edx], cl
; 319 : OutPtr[3] = B[2] & 0x3F;
00158 b8 01 00 00 00 mov eax, 1
0015d d1 e0 shl eax, 1
0015f 0f b6 4c 05 f4 movzx ecx, BYTE PTR _B$[ebp+eax]
00164 83 e1 3f and ecx, 63 ; 0000003fH
00167 ba 01 00 00 00 mov edx, 1
0016c 6b c2 03 imul eax, edx, 3
0016f 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
00172 88 0c 02 mov BYTE PTR [edx+eax], cl
; 320 : for (i = 0; i < 4; i++)
00175 c7 45 e4 00 00
00 00 mov DWORD PTR _i$1[ebp], 0
0017c eb 09 jmp SHORT $LN11@UU_encode
$LN9@UU_encode:
0017e 8b 45 e4 mov eax, DWORD PTR _i$1[ebp]
00181 83 c0 01 add eax, 1
00184 89 45 e4 mov DWORD PTR _i$1[ebp], eax
$LN11@UU_encode:
00187 83 7d e4 04 cmp DWORD PTR _i$1[ebp], 4
0018b 73 2e jae SHORT $LN10@UU_encode
; 321 : {
; 322 : if (OutPtr[i] == NULL)
0018d 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
00190 03 45 e4 add eax, DWORD PTR _i$1[ebp]
00193 0f be 08 movsx ecx, BYTE PTR [eax]
00196 85 c9 test ecx, ecx
00198 75 0b jne SHORT $LN16@UU_encode
; 323 : OutPtr[i] = '`';//(unsigned char) (OutPtr[i] + 0x60);
0019a 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
0019d 03 45 e4 add eax, DWORD PTR _i$1[ebp]
001a0 c6 00 60 mov BYTE PTR [eax], 96 ; 00000060H
001a3 eb 14 jmp SHORT $LN17@UU_encode
$LN16@UU_encode:
; 324 : else
; 325 : OutPtr[i] = ' ' + OutPtr[i];//(unsigned char) (OutPtr[i] + 0x20);
001a5 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
001a8 03 45 e4 add eax, DWORD PTR _i$1[ebp]
001ab 0f be 08 movsx ecx, BYTE PTR [eax]
001ae 83 c1 20 add ecx, 32 ; 00000020H
001b1 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
001b4 03 55 e4 add edx, DWORD PTR _i$1[ebp]
001b7 88 0a mov BYTE PTR [edx], cl
$LN17@UU_encode:
; 326 : }
001b9 eb c3 jmp SHORT $LN9@UU_encode
$LN10@UU_encode:
; 327 : OutPtr+=4;
001bb 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
001be 83 c0 04 add eax, 4
001c1 89 45 e8 mov DWORD PTR _OutPtr$[ebp], eax
; 328 : Len+=4;
001c4 8b 45 f8 mov eax, DWORD PTR _Len$[ebp]
001c7 83 c0 04 add eax, 4
001ca 89 45 f8 mov DWORD PTR _Len$[ebp], eax
; 329 : }
001cd e9 78 fe ff ff jmp $LN4@UU_encode
$LN5@UU_encode:
; 330 :
; 331 : *OutPtr++ = '\r'; //<2F><><EFBFBD>ûس<C3BB>
001d2 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
001d5 c6 00 0d mov BYTE PTR [eax], 13 ; 0000000dH
001d8 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
001db 83 c1 01 add ecx, 1
001de 89 4d e8 mov DWORD PTR _OutPtr$[ebp], ecx
; 332 : *OutPtr++ = '\n';
001e1 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
001e4 c6 00 0a mov BYTE PTR [eax], 10 ; 0000000aH
001e7 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
001ea 83 c1 01 add ecx, 1
001ed 89 4d e8 mov DWORD PTR _OutPtr$[ebp], ecx
; 333 : }
001f0 e9 42 fe ff ff jmp $LN2@UU_encode
$LN3@UU_encode:
; 334 : return (unsigned int) (OutPtr - pDest);
001f5 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
001f8 2b 45 10 sub eax, DWORD PTR _pDest$[ebp]
$LN1@UU_encode:
; 335 : }
001fb 5f pop edi
001fc 5e pop esi
001fd 5b pop ebx
001fe 8b e5 mov esp, ebp
00200 5d pop ebp
00201 c3 ret 0
?UU_encode@CMailCoder@@SAHPADI0@Z ENDP ; CMailCoder::UU_encode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?base64_decode@CMailCoder@@SAHPADI0@Z
_TEXT SEGMENT
tv88 = -96 ; size = 4
_OutPtr$ = -28 ; size = 4
_InLimitPtr$ = -24 ; size = 4
_InPtr$ = -20 ; size = 4
_reallen$ = -16 ; size = 4
_C$ = -12 ; size = 4
_lByteBufferSpace$ = -8 ; size = 4
_lByteBuffer$ = -4 ; size = 4
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?base64_decode@CMailCoder@@SAHPADI0@Z PROC ; CMailCoder::base64_decode, COMDAT
; 229 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 60 sub esp, 96 ; 00000060H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 230 : if ((pSrc == NULL) || (pDest == NULL) || (nSize <= 0)) return 0;
00009 83 7d 08 00 cmp DWORD PTR _pSrc$[ebp], 0
0000d 74 0c je SHORT $LN7@base64_dec
0000f 83 7d 10 00 cmp DWORD PTR _pDest$[ebp], 0
00013 74 06 je SHORT $LN7@base64_dec
00015 83 7d 0c 00 cmp DWORD PTR _nSize$[ebp], 0
00019 77 07 ja SHORT $LN6@base64_dec
$LN7@base64_dec:
0001b 33 c0 xor eax, eax
0001d e9 50 01 00 00 jmp $LN1@base64_dec
$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;
00022 c7 45 fc 00 00
00 00 mov DWORD PTR _lByteBuffer$[ebp], 0
00029 c7 45 f8 04 00
00 00 mov DWORD PTR _lByteBufferSpace$[ebp], 4
; 239 :
; 240 : InPtr = pSrc;
00030 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00033 89 45 ec mov DWORD PTR _InPtr$[ebp], eax
; 241 : InLimitPtr= InPtr + nSize;
00036 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00039 03 45 0c add eax, DWORD PTR _nSize$[ebp]
0003c 89 45 e8 mov DWORD PTR _InLimitPtr$[ebp], eax
; 242 : OutPtr = pDest;
0003f 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
00042 89 45 e4 mov DWORD PTR _OutPtr$[ebp], eax
$LN2@base64_dec:
; 243 :
; 244 : while (InPtr != InLimitPtr)
00045 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00048 3b 45 e8 cmp eax, DWORD PTR _InLimitPtr$[ebp]
0004b 0f 84 a3 00 00
00 je $LN3@base64_dec
; 245 : {
; 246 : C = BASE64_DECODE_TABLE[*InPtr]; // Read from InputBuffer.
00051 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00054 0f be 08 movsx ecx, BYTE PTR [eax]
00057 8b 14 8d 00 00
00 00 mov edx, DWORD PTR ?BASE64_DECODE_TABLE@CMailCoder@@2QBIB[ecx*4]
0005e 89 55 f4 mov DWORD PTR _C$[ebp], edx
; 247 : InPtr++;
00061 8b 45 ec mov eax, DWORD PTR _InPtr$[ebp]
00064 83 c0 01 add eax, 1
00067 89 45 ec mov DWORD PTR _InPtr$[ebp], eax
; 248 : if (C == 0xFF) continue; //<2F><><EFBFBD><EFBFBD>255<35>Ƿ<EFBFBD><C7B7>ַ<EFBFBD>
0006a 81 7d f4 ff 00
00 00 cmp DWORD PTR _C$[ebp], 255 ; 000000ffH
00071 75 02 jne SHORT $LN8@base64_dec
00073 eb d0 jmp SHORT $LN2@base64_dec
$LN8@base64_dec:
; 249 : lByteBuffer = lByteBuffer << 6 ;
00075 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
00078 c1 e0 06 shl eax, 6
0007b 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 250 : lByteBuffer = lByteBuffer | C ;
0007e 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
00081 0b 45 f4 or eax, DWORD PTR _C$[ebp]
00084 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 251 : lByteBufferSpace--;
00087 8b 45 f8 mov eax, DWORD PTR _lByteBufferSpace$[ebp]
0008a 83 e8 01 sub eax, 1
0008d 89 45 f8 mov DWORD PTR _lByteBufferSpace$[ebp], eax
; 252 : if (lByteBufferSpace != 0) continue; //һ<>ζ<EFBFBD><CEB6><EFBFBD>4<EFBFBD><34><EFBFBD>ֽ<EFBFBD>
00090 74 02 je SHORT $LN9@base64_dec
00092 eb b1 jmp SHORT $LN2@base64_dec
$LN9@base64_dec:
; 253 : //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4>3<EFBFBD><33><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
; 254 : OutPtr[2] = lByteBuffer;
00094 b8 01 00 00 00 mov eax, 1
00099 d1 e0 shl eax, 1
0009b 8b 4d e4 mov ecx, DWORD PTR _OutPtr$[ebp]
0009e 8a 55 fc mov dl, BYTE PTR _lByteBuffer$[ebp]
000a1 88 14 01 mov BYTE PTR [ecx+eax], dl
; 255 : lByteBuffer = lByteBuffer >> 8;
000a4 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
000a7 c1 e8 08 shr eax, 8
000aa 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 256 : OutPtr[1] = lByteBuffer;
000ad b8 01 00 00 00 mov eax, 1
000b2 c1 e0 00 shl eax, 0
000b5 8b 4d e4 mov ecx, DWORD PTR _OutPtr$[ebp]
000b8 8a 55 fc mov dl, BYTE PTR _lByteBuffer$[ebp]
000bb 88 14 01 mov BYTE PTR [ecx+eax], dl
; 257 : lByteBuffer = lByteBuffer >> 8;
000be 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
000c1 c1 e8 08 shr eax, 8
000c4 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 258 : OutPtr[0] = lByteBuffer;
000c7 b8 01 00 00 00 mov eax, 1
000cc 6b c8 00 imul ecx, eax, 0
000cf 8b 55 e4 mov edx, DWORD PTR _OutPtr$[ebp]
000d2 8a 45 fc mov al, BYTE PTR _lByteBuffer$[ebp]
000d5 88 04 0a mov BYTE PTR [edx+ecx], al
; 259 : //׼<><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
; 260 : OutPtr+= 3; lByteBuffer = 0; lByteBufferSpace = 4;
000d8 8b 45 e4 mov eax, DWORD PTR _OutPtr$[ebp]
000db 83 c0 03 add eax, 3
000de 89 45 e4 mov DWORD PTR _OutPtr$[ebp], eax
000e1 c7 45 fc 00 00
00 00 mov DWORD PTR _lByteBuffer$[ebp], 0
000e8 c7 45 f8 04 00
00 00 mov DWORD PTR _lByteBufferSpace$[ebp], 4
; 261 : }
000ef e9 51 ff ff ff jmp $LN2@base64_dec
$LN3@base64_dec:
; 262 : reallen = (unsigned int)OutPtr - (unsigned int)pDest;
000f4 8b 45 e4 mov eax, DWORD PTR _OutPtr$[ebp]
000f7 2b 45 10 sub eax, DWORD PTR _pDest$[ebp]
000fa 89 45 f0 mov DWORD PTR _reallen$[ebp], eax
; 263 : //<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2> <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
; 264 : switch (lByteBufferSpace)
000fd 8b 45 f8 mov eax, DWORD PTR _lByteBufferSpace$[ebp]
00100 89 45 a0 mov DWORD PTR tv88[ebp], eax
00103 83 7d a0 01 cmp DWORD PTR tv88[ebp], 1
00107 74 08 je SHORT $LN10@base64_dec
00109 83 7d a0 02 cmp DWORD PTR tv88[ebp], 2
0010d 74 3e je SHORT $LN11@base64_dec
0010f eb 5e jmp SHORT $LN12@base64_dec
$LN10@base64_dec:
; 265 : {
; 266 : case 1:
; 267 : lByteBuffer = lByteBuffer >> 2;
00111 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
00114 c1 e8 02 shr eax, 2
00117 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 268 : OutPtr[1] = lByteBuffer;
0011a b8 01 00 00 00 mov eax, 1
0011f c1 e0 00 shl eax, 0
00122 8b 4d e4 mov ecx, DWORD PTR _OutPtr$[ebp]
00125 8a 55 fc mov dl, BYTE PTR _lByteBuffer$[ebp]
00128 88 14 01 mov BYTE PTR [ecx+eax], dl
; 269 : lByteBuffer = lByteBuffer >> 8;
0012b 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
0012e c1 e8 08 shr eax, 8
00131 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 270 : OutPtr[0] = lByteBuffer;
00134 b8 01 00 00 00 mov eax, 1
00139 6b c8 00 imul ecx, eax, 0
0013c 8b 55 e4 mov edx, DWORD PTR _OutPtr$[ebp]
0013f 8a 45 fc mov al, BYTE PTR _lByteBuffer$[ebp]
00142 88 04 0a mov BYTE PTR [edx+ecx], al
; 271 : return reallen + 2;
00145 8b 45 f0 mov eax, DWORD PTR _reallen$[ebp]
00148 83 c0 02 add eax, 2
0014b eb 25 jmp SHORT $LN1@base64_dec
$LN11@base64_dec:
; 272 : case 2:
; 273 : lByteBuffer = lByteBuffer >> 4;
0014d 8b 45 fc mov eax, DWORD PTR _lByteBuffer$[ebp]
00150 c1 e8 04 shr eax, 4
00153 89 45 fc mov DWORD PTR _lByteBuffer$[ebp], eax
; 274 : OutPtr[0] = lByteBuffer;
00156 b8 01 00 00 00 mov eax, 1
0015b 6b c8 00 imul ecx, eax, 0
0015e 8b 55 e4 mov edx, DWORD PTR _OutPtr$[ebp]
00161 8a 45 fc mov al, BYTE PTR _lByteBuffer$[ebp]
00164 88 04 0a mov BYTE PTR [edx+ecx], al
; 275 : return reallen + 1;
00167 8b 45 f0 mov eax, DWORD PTR _reallen$[ebp]
0016a 83 c0 01 add eax, 1
0016d eb 03 jmp SHORT $LN1@base64_dec
$LN12@base64_dec:
; 276 : default:
; 277 : return reallen;
0016f 8b 45 f0 mov eax, DWORD PTR _reallen$[ebp]
$LN1@base64_dec:
; 278 : }
; 279 : }
00172 5f pop edi
00173 5e pop esi
00174 5b pop ebx
00175 8b e5 mov esp, ebp
00177 5d pop ebp
00178 c3 ret 0
?base64_decode@CMailCoder@@SAHPADI0@Z ENDP ; CMailCoder::base64_decode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?base64_encode@CMailCoder@@SAHPADI0@Z
_TEXT SEGMENT
tv169 = -92 ; size = 4
tv148 = -92 ; size = 4
tv87 = -92 ; size = 4
tv81 = -92 ; size = 4
tv75 = -92 ; size = 4
_OutPtr$ = -24 ; size = 4
_pInLimitPtr$ = -20 ; size = 4
_pInPtr$ = -16 ; size = 4
_Len$ = -12 ; size = 4
_iInMax3$ = -8 ; size = 4
_iB$ = -4 ; size = 4
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?base64_encode@CMailCoder@@SAHPADI0@Z PROC ; CMailCoder::base64_encode, COMDAT
; 153 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 5c sub esp, 92 ; 0000005cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 154 : if ((pSrc == NULL) || (nSize <= 0)) return 0;
00009 83 7d 08 00 cmp DWORD PTR _pSrc$[ebp], 0
0000d 74 06 je SHORT $LN9@base64_enc
0000f 83 7d 0c 00 cmp DWORD PTR _nSize$[ebp], 0
00013 77 07 ja SHORT $LN8@base64_enc
$LN9@base64_enc:
00015 33 c0 xor eax, eax
00017 e9 ba 02 00 00 jmp $LN1@base64_enc
$LN8@base64_enc:
; 155 :
; 156 : unsigned int iB, iInMax3, Len;
; 157 : char *pInPtr, *pInLimitPtr;
; 158 : char *OutPtr ;
; 159 :
; 160 : pInPtr = pSrc;
0001c 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
0001f 89 45 f0 mov DWORD PTR _pInPtr$[ebp], eax
; 161 : iInMax3 = nSize / 3 * 3;
00022 8b 45 0c mov eax, DWORD PTR _nSize$[ebp]
00025 33 d2 xor edx, edx
00027 b9 03 00 00 00 mov ecx, 3
0002c f7 f1 div ecx
0002e 6b d0 03 imul edx, eax, 3
00031 89 55 f8 mov DWORD PTR _iInMax3$[ebp], edx
; 162 : OutPtr = pDest;
00034 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
00037 89 45 e8 mov DWORD PTR _OutPtr$[ebp], eax
; 163 : pInLimitPtr = pInPtr + iInMax3;
0003a 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
0003d 03 45 f8 add eax, DWORD PTR _iInMax3$[ebp]
00040 89 45 ec mov DWORD PTR _pInLimitPtr$[ebp], eax
$LN2@base64_enc:
; 164 :
; 165 : while (pInPtr != pInLimitPtr)
00043 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
00046 3b 45 ec cmp eax, DWORD PTR _pInLimitPtr$[ebp]
00049 0f 84 46 01 00
00 je $LN3@base64_enc
; 166 : {
; 167 : Len = 0;
0004f c7 45 f4 00 00
00 00 mov DWORD PTR _Len$[ebp], 0
$LN4@base64_enc:
; 168 : while ((Len < m_LineWidth) && (pInPtr != pInLimitPtr))
00056 8b 45 f4 mov eax, DWORD PTR _Len$[ebp]
00059 3b 05 00 00 00
00 cmp eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
0005f 0f 83 02 01 00
00 jae $LN5@base64_enc
00065 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
00068 3b 45 ec cmp eax, DWORD PTR _pInLimitPtr$[ebp]
0006b 0f 84 f6 00 00
00 je $LN5@base64_enc
; 169 : {
; 170 : iB = (unsigned char) *pInPtr++;
00071 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
00074 0f b6 08 movzx ecx, BYTE PTR [eax]
00077 89 4d a4 mov DWORD PTR tv75[ebp], ecx
0007a 8b 55 f0 mov edx, DWORD PTR _pInPtr$[ebp]
0007d 83 c2 01 add edx, 1
00080 89 55 f0 mov DWORD PTR _pInPtr$[ebp], edx
00083 8b 45 a4 mov eax, DWORD PTR tv75[ebp]
00086 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 171 : iB = iB << 8;
00089 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
0008c c1 e0 08 shl eax, 8
0008f 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 172 :
; 173 : iB = iB | (unsigned char) *pInPtr++;
00092 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
00095 0f b6 08 movzx ecx, BYTE PTR [eax]
00098 0b 4d fc or ecx, DWORD PTR _iB$[ebp]
0009b 89 4d a4 mov DWORD PTR tv81[ebp], ecx
0009e 8b 55 f0 mov edx, DWORD PTR _pInPtr$[ebp]
000a1 83 c2 01 add edx, 1
000a4 89 55 f0 mov DWORD PTR _pInPtr$[ebp], edx
000a7 8b 45 a4 mov eax, DWORD PTR tv81[ebp]
000aa 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 174 : iB = iB << 8;
000ad 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
000b0 c1 e0 08 shl eax, 8
000b3 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 175 :
; 176 : iB = iB | (unsigned char) *pInPtr++;
000b6 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
000b9 0f b6 08 movzx ecx, BYTE PTR [eax]
000bc 0b 4d fc or ecx, DWORD PTR _iB$[ebp]
000bf 89 4d a4 mov DWORD PTR tv87[ebp], ecx
000c2 8b 55 f0 mov edx, DWORD PTR _pInPtr$[ebp]
000c5 83 c2 01 add edx, 1
000c8 89 55 f0 mov DWORD PTR _pInPtr$[ebp], edx
000cb 8b 45 a4 mov eax, DWORD PTR tv87[ebp]
000ce 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 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];
000d1 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
000d4 83 e0 3f and eax, 63 ; 0000003fH
000d7 b9 01 00 00 00 mov ecx, 1
000dc 6b d1 03 imul edx, ecx, 3
000df 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
000e2 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
000e8 88 04 11 mov BYTE PTR [ecx+edx], al
; 180 : iB = iB >> 6;
000eb 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
000ee c1 e8 06 shr eax, 6
000f1 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 181 : OutPtr[2] = BASE64_ENCODE_TABLE[iB & 0x3F];
000f4 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
000f7 83 e0 3f and eax, 63 ; 0000003fH
000fa b9 01 00 00 00 mov ecx, 1
000ff d1 e1 shl ecx, 1
00101 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
00104 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
0010a 88 04 0a mov BYTE PTR [edx+ecx], al
; 182 : iB = iB >> 6;
0010d 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00110 c1 e8 06 shr eax, 6
00113 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 183 : OutPtr[1] = BASE64_ENCODE_TABLE[iB & 0x3F];
00116 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00119 83 e0 3f and eax, 63 ; 0000003fH
0011c b9 01 00 00 00 mov ecx, 1
00121 c1 e1 00 shl ecx, 0
00124 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
00127 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
0012d 88 04 0a mov BYTE PTR [edx+ecx], al
; 184 : iB = iB >> 6;
00130 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00133 c1 e8 06 shr eax, 6
00136 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 185 : OutPtr[0] = BASE64_ENCODE_TABLE[iB];
00139 b8 01 00 00 00 mov eax, 1
0013e 6b c8 00 imul ecx, eax, 0
00141 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
00144 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00147 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
0014d 88 04 0a mov BYTE PTR [edx+ecx], al
; 186 : OutPtr+=4;
00150 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
00153 83 c0 04 add eax, 4
00156 89 45 e8 mov DWORD PTR _OutPtr$[ebp], eax
; 187 : Len+=4;
00159 8b 45 f4 mov eax, DWORD PTR _Len$[ebp]
0015c 83 c0 04 add eax, 4
0015f 89 45 f4 mov DWORD PTR _Len$[ebp], eax
; 188 : }
00162 e9 ef fe ff ff jmp $LN4@base64_enc
$LN5@base64_enc:
; 189 : if (Len >= m_LineWidth)
00167 8b 45 f4 mov eax, DWORD PTR _Len$[ebp]
0016a 3b 05 00 00 00
00 cmp eax, DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00170 72 1e jb SHORT $LN10@base64_enc
; 190 : {
; 191 : *OutPtr++ = '\r'; //<2F><><EFBFBD>ϻس<CFBB><D8B3><EFBFBD><EFBFBD>з<EFBFBD>
00172 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
00175 c6 00 0d mov BYTE PTR [eax], 13 ; 0000000dH
00178 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
0017b 83 c1 01 add ecx, 1
0017e 89 4d e8 mov DWORD PTR _OutPtr$[ebp], ecx
; 192 : *OutPtr++ = '\n';
00181 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
00184 c6 00 0a mov BYTE PTR [eax], 10 ; 0000000aH
00187 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
0018a 83 c1 01 add ecx, 1
0018d 89 4d e8 mov DWORD PTR _OutPtr$[ebp], ecx
$LN10@base64_enc:
; 193 : }
; 194 : }
00190 e9 ae fe ff ff jmp $LN2@base64_enc
$LN3@base64_enc:
; 195 : //<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
; 196 : switch (nSize - iInMax3)
00195 8b 45 0c mov eax, DWORD PTR _nSize$[ebp]
00198 2b 45 f8 sub eax, DWORD PTR _iInMax3$[ebp]
0019b 89 45 a4 mov DWORD PTR tv148[ebp], eax
0019e 83 7d a4 01 cmp DWORD PTR tv148[ebp], 1
001a2 74 0b je SHORT $LN11@base64_enc
001a4 83 7d a4 02 cmp DWORD PTR tv148[ebp], 2
001a8 74 7c je SHORT $LN12@base64_enc
001aa e9 21 01 00 00 jmp $LN6@base64_enc
$LN11@base64_enc:
; 197 : {
; 198 : case 1:
; 199 : iB = (unsigned char) *pInPtr;
001af 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
001b2 0f b6 08 movzx ecx, BYTE PTR [eax]
001b5 89 4d fc mov DWORD PTR _iB$[ebp], ecx
; 200 : iB = iB << 4;
001b8 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
001bb c1 e0 04 shl eax, 4
001be 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 201 : OutPtr[1] = BASE64_ENCODE_TABLE[iB & 0x3F];
001c1 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
001c4 83 e0 3f and eax, 63 ; 0000003fH
001c7 b9 01 00 00 00 mov ecx, 1
001cc c1 e1 00 shl ecx, 0
001cf 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
001d2 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
001d8 88 04 0a mov BYTE PTR [edx+ecx], al
; 202 : iB = iB >> 6;
001db 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
001de c1 e8 06 shr eax, 6
001e1 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 203 : OutPtr[0] = BASE64_ENCODE_TABLE[iB];
001e4 b8 01 00 00 00 mov eax, 1
001e9 6b c8 00 imul ecx, eax, 0
001ec 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
001ef 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
001f2 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
001f8 88 04 0a mov BYTE PTR [edx+ecx], al
; 204 : OutPtr[2] = '='; //<2F><>'='Ҳ<><D2B2><EFBFBD><EFBFBD>64<36><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ಿ<EFBFBD><E0B2BF>
001fb b8 01 00 00 00 mov eax, 1
00200 d1 e0 shl eax, 1
00202 8b 4d e8 mov ecx, DWORD PTR _OutPtr$[ebp]
00205 c6 04 01 3d mov BYTE PTR [ecx+eax], 61 ; 0000003dH
; 205 : OutPtr[3] = '=';
00209 b8 01 00 00 00 mov eax, 1
0020e 6b c8 03 imul ecx, eax, 3
00211 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
00214 c6 04 0a 3d mov BYTE PTR [edx+ecx], 61 ; 0000003dH
; 206 : OutPtr+=4;
00218 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
0021b 83 c0 04 add eax, 4
0021e 89 45 e8 mov DWORD PTR _OutPtr$[ebp], eax
; 207 : break;
00221 e9 aa 00 00 00 jmp $LN6@base64_enc
$LN12@base64_enc:
; 208 : case 2:
; 209 : iB = (unsigned char) *pInPtr++;
00226 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
00229 0f b6 08 movzx ecx, BYTE PTR [eax]
0022c 89 4d a4 mov DWORD PTR tv169[ebp], ecx
0022f 8b 55 f0 mov edx, DWORD PTR _pInPtr$[ebp]
00232 83 c2 01 add edx, 1
00235 89 55 f0 mov DWORD PTR _pInPtr$[ebp], edx
00238 8b 45 a4 mov eax, DWORD PTR tv169[ebp]
0023b 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 210 : iB = iB << 8;
0023e 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00241 c1 e0 08 shl eax, 8
00244 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 211 : iB = iB | (unsigned char) *pInPtr;
00247 8b 45 f0 mov eax, DWORD PTR _pInPtr$[ebp]
0024a 0f b6 08 movzx ecx, BYTE PTR [eax]
0024d 0b 4d fc or ecx, DWORD PTR _iB$[ebp]
00250 89 4d fc mov DWORD PTR _iB$[ebp], ecx
; 212 : iB = iB << 2;
00253 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00256 c1 e0 02 shl eax, 2
00259 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 213 : OutPtr[2] = BASE64_ENCODE_TABLE[iB & 0x3F];
0025c 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
0025f 83 e0 3f and eax, 63 ; 0000003fH
00262 b9 01 00 00 00 mov ecx, 1
00267 d1 e1 shl ecx, 1
00269 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
0026c 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
00272 88 04 0a mov BYTE PTR [edx+ecx], al
; 214 : iB = iB >> 6;
00275 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00278 c1 e8 06 shr eax, 6
0027b 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 215 : OutPtr[1] = BASE64_ENCODE_TABLE[iB & 0x3F];
0027e 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
00281 83 e0 3f and eax, 63 ; 0000003fH
00284 b9 01 00 00 00 mov ecx, 1
00289 c1 e1 00 shl ecx, 0
0028c 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
0028f 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
00295 88 04 0a mov BYTE PTR [edx+ecx], al
; 216 : iB = iB >> 6;
00298 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
0029b c1 e8 06 shr eax, 6
0029e 89 45 fc mov DWORD PTR _iB$[ebp], eax
; 217 : OutPtr[0] = BASE64_ENCODE_TABLE[iB];
002a1 b8 01 00 00 00 mov eax, 1
002a6 6b c8 00 imul ecx, eax, 0
002a9 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
002ac 8b 45 fc mov eax, DWORD PTR _iB$[ebp]
002af 8a 80 00 00 00
00 mov al, BYTE PTR ?BASE64_ENCODE_TABLE@CMailCoder@@2QBDB[eax]
002b5 88 04 0a mov BYTE PTR [edx+ecx], al
; 218 : OutPtr[3] = '='; // Fill remaining byte.
002b8 b8 01 00 00 00 mov eax, 1
002bd 6b c8 03 imul ecx, eax, 3
002c0 8b 55 e8 mov edx, DWORD PTR _OutPtr$[ebp]
002c3 c6 04 0a 3d mov BYTE PTR [edx+ecx], 61 ; 0000003dH
; 219 : OutPtr+=4;
002c7 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
002ca 83 c0 04 add eax, 4
002cd 89 45 e8 mov DWORD PTR _OutPtr$[ebp], eax
$LN6@base64_enc:
; 220 : break;
; 221 : }
; 222 : return (unsigned int) (OutPtr - pDest);
002d0 8b 45 e8 mov eax, DWORD PTR _OutPtr$[ebp]
002d3 2b 45 10 sub eax, DWORD PTR _pDest$[ebp]
$LN1@base64_enc:
; 223 : }
002d6 5f pop edi
002d7 5e pop esi
002d8 5b pop ebx
002d9 8b e5 mov esp, ebp
002db 5d pop ebp
002dc c3 ret 0
?base64_encode@CMailCoder@@SAHPADI0@Z ENDP ; CMailCoder::base64_encode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?QuotedEncodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
_nCR$ = -8 ; size = 4
_nSize$ = -4 ; size = 4
_iSize$ = 8 ; size = 4
?QuotedEncodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::QuotedEncodeSize, COMDAT
; 142 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 143 : int nSize = iSize * 3 + 1;
00009 6b 45 08 03 imul eax, DWORD PTR _iSize$[ebp], 3
0000d 83 c0 01 add eax, 1
00010 89 45 fc mov DWORD PTR _nSize$[ebp], eax
; 144 : int nCR = nSize / m_LineWidth;
00013 8b 45 fc mov eax, DWORD PTR _nSize$[ebp]
00016 33 d2 xor edx, edx
00018 f7 35 00 00 00
00 div DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
0001e 89 45 f8 mov DWORD PTR _nCR$[ebp], eax
; 145 : nSize+= nCR * 3;
00021 6b 45 f8 03 imul eax, DWORD PTR _nCR$[ebp], 3
00025 03 45 fc add eax, DWORD PTR _nSize$[ebp]
00028 89 45 fc mov DWORD PTR _nSize$[ebp], eax
; 146 : return nSize;
0002b 8b 45 fc mov eax, DWORD PTR _nSize$[ebp]
; 147 : }
0002e 5f pop edi
0002f 5e pop esi
00030 5b pop ebx
00031 8b e5 mov esp, ebp
00033 5d pop ebp
00034 c3 ret 0
?QuotedEncodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::QuotedEncodeSize
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UUDecodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
_iSize$ = 8 ; size = 4
?UUDecodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::UUDecodeSize, COMDAT
; 134 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 135 : return (iSize + 3) / 4 * 3;
00009 8b 45 08 mov eax, DWORD PTR _iSize$[ebp]
0000c 83 c0 03 add eax, 3
0000f 99 cdq
00010 83 e2 03 and edx, 3
00013 03 c2 add eax, edx
00015 c1 f8 02 sar eax, 2
00018 6b c0 03 imul eax, eax, 3
; 136 : }
0001b 5f pop edi
0001c 5e pop esi
0001d 5b pop ebx
0001e 8b e5 mov esp, ebp
00020 5d pop ebp
00021 c3 ret 0
?UUDecodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::UUDecodeSize
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?UUEncodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
_nCR$ = -8 ; size = 4
_nSize$ = -4 ; size = 4
_iSize$ = 8 ; size = 4
?UUEncodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::UUEncodeSize, COMDAT
; 122 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 123 : int nSize, nCR;
; 124 : nSize = (iSize + 2) / 3 * 4 ;
00009 8b 45 08 mov eax, DWORD PTR _iSize$[ebp]
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 45 fc mov DWORD PTR _nSize$[ebp], eax
; 125 : nCR = nSize / m_LineWidth + 2; //<2F><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD>
0001d 8b 45 fc mov eax, DWORD PTR _nSize$[ebp]
00020 33 d2 xor edx, edx
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 45 f8 mov DWORD PTR _nCR$[ebp], eax
; 126 : nSize+= nCR * 3 + 2;
0002e 6b 45 f8 03 imul eax, DWORD PTR _nCR$[ebp], 3
00032 8b 4d fc mov ecx, DWORD PTR _nSize$[ebp]
00035 8d 54 01 02 lea edx, DWORD PTR [ecx+eax+2]
00039 89 55 fc mov DWORD PTR _nSize$[ebp], edx
; 127 : return nSize;
0003c 8b 45 fc mov eax, DWORD PTR _nSize$[ebp]
; 128 : }
0003f 5f pop edi
00040 5e pop esi
00041 5b pop ebx
00042 8b e5 mov esp, ebp
00044 5d pop ebp
00045 c3 ret 0
?UUEncodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::UUEncodeSize
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?Base64DecodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
_iSize$ = 8 ; size = 4
?Base64DecodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::Base64DecodeSize, COMDAT
; 114 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 115 : return (iSize + 3) / 4 * 3;
00009 8b 45 08 mov eax, DWORD PTR _iSize$[ebp]
0000c 83 c0 03 add eax, 3
0000f 99 cdq
00010 83 e2 03 and edx, 3
00013 03 c2 add eax, edx
00015 c1 f8 02 sar eax, 2
00018 6b c0 03 imul eax, eax, 3
; 116 : }
0001b 5f pop edi
0001c 5e pop esi
0001d 5b pop ebx
0001e 8b e5 mov esp, ebp
00020 5d pop ebp
00021 c3 ret 0
?Base64DecodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::Base64DecodeSize
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?Base64EncodeSize@CMailCoder@@SAHH@Z
_TEXT SEGMENT
_nCR$ = -8 ; size = 4
_nSize$ = -4 ; size = 4
_iSize$ = 8 ; size = 4
?Base64EncodeSize@CMailCoder@@SAHH@Z PROC ; CMailCoder::Base64EncodeSize, COMDAT
; 102 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 48 sub esp, 72 ; 00000048H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 103 : int nSize, nCR;
; 104 : nSize = (iSize + 2) / 3 * 4 ;
00009 8b 45 08 mov eax, DWORD PTR _iSize$[ebp]
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 45 fc mov DWORD PTR _nSize$[ebp], eax
; 105 : nCR = nSize / m_LineWidth; //<2F><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD>
0001d 8b 45 fc mov eax, DWORD PTR _nSize$[ebp]
00020 33 d2 xor edx, edx
00022 f7 35 00 00 00
00 div DWORD PTR ?m_LineWidth@CMailCoder@@2IA ; CMailCoder::m_LineWidth
00028 89 45 f8 mov DWORD PTR _nCR$[ebp], eax
; 106 : nSize+= nCR * 2;
0002b 8b 45 f8 mov eax, DWORD PTR _nCR$[ebp]
0002e 8b 4d fc mov ecx, DWORD PTR _nSize$[ebp]
00031 8d 14 41 lea edx, DWORD PTR [ecx+eax*2]
00034 89 55 fc mov DWORD PTR _nSize$[ebp], edx
; 107 : return nSize;
00037 8b 45 fc mov eax, DWORD PTR _nSize$[ebp]
; 108 : }
0003a 5f pop edi
0003b 5e pop esi
0003c 5b pop ebx
0003d 8b e5 mov esp, ebp
0003f 5d pop ebp
00040 c3 ret 0
?Base64EncodeSize@CMailCoder@@SAHH@Z ENDP ; CMailCoder::Base64EncodeSize
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?email_decode@CMailCoder@@QAEHPADI0@Z
_TEXT SEGMENT
_iRet$1 = -44 ; size = 4
_iEnd$2 = -40 ; size = 4
_iRet$3 = -36 ; size = 4
_iEnd$4 = -32 ; size = 4
_iStart$5 = -28 ; size = 4
_iStart2$6 = -24 ; size = 4
_iDestLen$ = -20 ; size = 4
_iSrc2Len$ = -16 ; size = 4
_pSrc2$ = -12 ; size = 4
_iSize$ = -8 ; size = 4
_this$ = -4 ; size = 4
_pSrc$ = 8 ; size = 4
_nSize$ = 12 ; size = 4
_pDest$ = 16 ; size = 4
?email_decode@CMailCoder@@QAEHPADI0@Z PROC ; CMailCoder::email_decode, COMDAT
; _this$ = ecx
; 499 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 6c sub esp, 108 ; 0000006cH
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 89 4d fc mov DWORD PTR _this$[ebp], ecx
; 500 : int iSize=0;
0000c c7 45 f8 00 00
00 00 mov DWORD PTR _iSize$[ebp], 0
; 501 : char * pSrc2=pSrc;
00013 8b 45 08 mov eax, DWORD PTR _pSrc$[ebp]
00016 89 45 f4 mov DWORD PTR _pSrc2$[ebp], eax
; 502 : int iSrc2Len=0;
00019 c7 45 f0 00 00
00 00 mov DWORD PTR _iSrc2Len$[ebp], 0
; 503 : int iDestLen=0;
00020 c7 45 ec 00 00
00 00 mov DWORD PTR _iDestLen$[ebp], 0
$LN2@email_deco:
; 504 : while ( true )
00027 b8 01 00 00 00 mov eax, 1
0002c 85 c0 test eax, eax
0002e 0f 84 46 01 00
00 je $LN3@email_deco
; 505 : {
; 506 : int iStart2 = FoundChar(pSrc2,"=?");
00034 6a 00 push 0
00036 68 00 00 00 00 push OFFSET ??_C@_02HENDHKBC@?$DN?$DP@
0003b 8b 45 f4 mov eax, DWORD PTR _pSrc2$[ebp]
0003e 50 push eax
0003f 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00042 e8 00 00 00 00 call ?FoundChar@CMailCoder@@QAEHPAD0J@Z ; CMailCoder::FoundChar
00047 89 45 e8 mov DWORD PTR _iStart2$6[ebp], eax
; 507 : if ( iStart2 >= 0 )
0004a 83 7d e8 00 cmp DWORD PTR _iStart2$6[ebp], 0
0004e 0f 8c 1f 01 00
00 jl $LN4@email_deco
; 508 : {
; 509 : strncpy(pDest+iDestLen,pSrc2,iStart2);
00054 8b 45 e8 mov eax, DWORD PTR _iStart2$6[ebp]
00057 50 push eax
00058 8b 4d f4 mov ecx, DWORD PTR _pSrc2$[ebp]
0005b 51 push ecx
0005c 8b 55 10 mov edx, DWORD PTR _pDest$[ebp]
0005f 03 55 ec add edx, DWORD PTR _iDestLen$[ebp]
00062 52 push edx
00063 e8 00 00 00 00 call _strncpy
00068 83 c4 0c add esp, 12 ; 0000000cH
; 510 : iDestLen +=iStart2;
0006b 8b 45 ec mov eax, DWORD PTR _iDestLen$[ebp]
0006e 03 45 e8 add eax, DWORD PTR _iStart2$6[ebp]
00071 89 45 ec mov DWORD PTR _iDestLen$[ebp], eax
; 511 : pSrc2+=iStart2+2; //=?Ϊ2<CEAA><32><EFBFBD>ֽ<EFBFBD>
00074 8b 45 e8 mov eax, DWORD PTR _iStart2$6[ebp]
00077 8b 4d f4 mov ecx, DWORD PTR _pSrc2$[ebp]
0007a 8d 54 01 02 lea edx, DWORD PTR [ecx+eax+2]
0007e 89 55 f4 mov DWORD PTR _pSrc2$[ebp], edx
; 512 : int iStart = FoundChar(pSrc2,"?B?");
00081 6a 00 push 0
00083 68 00 00 00 00 push OFFSET ??_C@_03FNDDLLIG@?$DPB?$DP@
00088 8b 45 f4 mov eax, DWORD PTR _pSrc2$[ebp]
0008b 50 push eax
0008c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0008f e8 00 00 00 00 call ?FoundChar@CMailCoder@@QAEHPAD0J@Z ; CMailCoder::FoundChar
00094 89 45 e4 mov DWORD PTR _iStart$5[ebp], eax
; 513 : if ( iStart > 0 )
00097 83 7d e4 00 cmp DWORD PTR _iStart$5[ebp], 0
0009b 7e 5b jle SHORT $LN6@email_deco
; 514 : {
; 515 : //iStart += 3; //?B?Ϊ3<CEAA><33><EFBFBD>ֽ<EFBFBD>
; 516 : pSrc2=pSrc2+iStart+3; //?B?Ϊ3<CEAA><33><EFBFBD>ֽ<EFBFBD>
0009d 8b 45 e4 mov eax, DWORD PTR _iStart$5[ebp]
000a0 8b 4d f4 mov ecx, DWORD PTR _pSrc2$[ebp]
000a3 8d 54 01 03 lea edx, DWORD PTR [ecx+eax+3]
000a7 89 55 f4 mov DWORD PTR _pSrc2$[ebp], edx
; 517 : int iEnd = FoundChar(pSrc2,"?=");
000aa 6a 00 push 0
000ac 68 00 00 00 00 push OFFSET ??_C@_02EFGBMMPO@?$DP?$DN@
000b1 8b 45 f4 mov eax, DWORD PTR _pSrc2$[ebp]
000b4 50 push eax
000b5 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
000b8 e8 00 00 00 00 call ?FoundChar@CMailCoder@@QAEHPAD0J@Z ; CMailCoder::FoundChar
000bd 89 45 e0 mov DWORD PTR _iEnd$4[ebp], eax
; 518 : if ( iEnd > 1 )
000c0 83 7d e0 01 cmp DWORD PTR _iEnd$4[ebp], 1
000c4 7e 30 jle SHORT $LN8@email_deco
; 519 : {
; 520 : int iRet = base64_decode(pSrc2,iEnd,pDest+iDestLen);
000c6 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
000c9 03 45 ec add eax, DWORD PTR _iDestLen$[ebp]
000cc 50 push eax
000cd 8b 4d e0 mov ecx, DWORD PTR _iEnd$4[ebp]
000d0 51 push ecx
000d1 8b 55 f4 mov edx, DWORD PTR _pSrc2$[ebp]
000d4 52 push edx
000d5 e8 00 00 00 00 call ?base64_decode@CMailCoder@@SAHPADI0@Z ; CMailCoder::base64_decode
000da 83 c4 0c add esp, 12 ; 0000000cH
000dd 89 45 dc mov DWORD PTR _iRet$3[ebp], eax
; 521 : pSrc2 += iEnd+2; //"?="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
000e0 8b 45 e0 mov eax, DWORD PTR _iEnd$4[ebp]
000e3 8b 4d f4 mov ecx, DWORD PTR _pSrc2$[ebp]
000e6 8d 54 01 02 lea edx, DWORD PTR [ecx+eax+2]
000ea 89 55 f4 mov DWORD PTR _pSrc2$[ebp], edx
; 522 : iDestLen += iRet;
000ed 8b 45 ec mov eax, DWORD PTR _iDestLen$[ebp]
000f0 03 45 dc add eax, DWORD PTR _iRet$3[ebp]
000f3 89 45 ec mov DWORD PTR _iDestLen$[ebp], eax
$LN8@email_deco:
; 523 : }
; 524 : }
000f6 eb 79 jmp SHORT $LN7@email_deco
$LN6@email_deco:
; 525 : else
; 526 : {
; 527 : iStart = FoundChar(pSrc2,"?Q?");
000f8 6a 00 push 0
000fa 68 00 00 00 00 push OFFSET ??_C@_03EDFDKGKP@?$DPQ?$DP@
000ff 8b 45 f4 mov eax, DWORD PTR _pSrc2$[ebp]
00102 50 push eax
00103 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
00106 e8 00 00 00 00 call ?FoundChar@CMailCoder@@QAEHPAD0J@Z ; CMailCoder::FoundChar
0010b 89 45 e4 mov DWORD PTR _iStart$5[ebp], eax
; 528 : if ( iStart > 0 )
0010e 83 7d e4 00 cmp DWORD PTR _iStart$5[ebp], 0
00112 7e 5b jle SHORT $LN9@email_deco
; 529 : {
; 530 : pSrc2=pSrc2+iStart+3; //?B?Ϊ3<CEAA><33><EFBFBD>ֽ<EFBFBD>
00114 8b 45 e4 mov eax, DWORD PTR _iStart$5[ebp]
00117 8b 4d f4 mov ecx, DWORD PTR _pSrc2$[ebp]
0011a 8d 54 01 03 lea edx, DWORD PTR [ecx+eax+3]
0011e 89 55 f4 mov DWORD PTR _pSrc2$[ebp], edx
; 531 : int iEnd = FoundChar(pSrc2,"?=");
00121 6a 00 push 0
00123 68 00 00 00 00 push OFFSET ??_C@_02EFGBMMPO@?$DP?$DN@
00128 8b 45 f4 mov eax, DWORD PTR _pSrc2$[ebp]
0012b 50 push eax
0012c 8b 4d fc mov ecx, DWORD PTR _this$[ebp]
0012f e8 00 00 00 00 call ?FoundChar@CMailCoder@@QAEHPAD0J@Z ; CMailCoder::FoundChar
00134 89 45 d8 mov DWORD PTR _iEnd$2[ebp], eax
; 532 : if ( iEnd > 1 )
00137 83 7d d8 01 cmp DWORD PTR _iEnd$2[ebp], 1
0013b 7e 30 jle SHORT $LN11@email_deco
; 533 : {
; 534 : int iRet = quoted_decode(pSrc2,iEnd,pDest+iDestLen);
0013d 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
00140 03 45 ec add eax, DWORD PTR _iDestLen$[ebp]
00143 50 push eax
00144 8b 4d d8 mov ecx, DWORD PTR _iEnd$2[ebp]
00147 51 push ecx
00148 8b 55 f4 mov edx, DWORD PTR _pSrc2$[ebp]
0014b 52 push edx
0014c e8 00 00 00 00 call ?quoted_decode@CMailCoder@@SAHPADI0@Z ; CMailCoder::quoted_decode
00151 83 c4 0c add esp, 12 ; 0000000cH
00154 89 45 d4 mov DWORD PTR _iRet$1[ebp], eax
; 535 : pSrc2 += iEnd+2; //"?="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
00157 8b 45 d8 mov eax, DWORD PTR _iEnd$2[ebp]
0015a 8b 4d f4 mov ecx, DWORD PTR _pSrc2$[ebp]
0015d 8d 54 01 02 lea edx, DWORD PTR [ecx+eax+2]
00161 89 55 f4 mov DWORD PTR _pSrc2$[ebp], edx
; 536 : iDestLen += iRet;
00164 8b 45 ec mov eax, DWORD PTR _iDestLen$[ebp]
00167 03 45 d4 add eax, DWORD PTR _iRet$1[ebp]
0016a 89 45 ec mov DWORD PTR _iDestLen$[ebp], eax
$LN11@email_deco:
; 537 : }
; 538 : }
0016d eb 02 jmp SHORT $LN7@email_deco
$LN9@email_deco:
; 539 : else
; 540 : {
; 541 : break;
0016f eb 09 jmp SHORT $LN3@email_deco
$LN7@email_deco:
; 542 : }
; 543 : }
; 544 : }
00171 eb 02 jmp SHORT $LN5@email_deco
$LN4@email_deco:
; 545 : else
; 546 : {
; 547 : break;
00173 eb 05 jmp SHORT $LN3@email_deco
$LN5@email_deco:
; 548 : }
; 549 : }
00175 e9 ad fe ff ff jmp $LN2@email_deco
$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>
0017a 8b 45 f4 mov eax, DWORD PTR _pSrc2$[ebp]
0017d 2b 45 08 sub eax, DWORD PTR _pSrc$[ebp]
00180 8b 4d 0c mov ecx, DWORD PTR _nSize$[ebp]
00183 2b c8 sub ecx, eax
00185 51 push ecx
00186 8b 55 f4 mov edx, DWORD PTR _pSrc2$[ebp]
00189 52 push edx
0018a 8b 45 10 mov eax, DWORD PTR _pDest$[ebp]
0018d 03 45 ec add eax, DWORD PTR _iDestLen$[ebp]
00190 50 push eax
00191 e8 00 00 00 00 call _strncpy
00196 83 c4 0c add esp, 12 ; 0000000cH
; 551 :
; 552 : return nSize;
00199 8b 45 0c mov eax, DWORD PTR _nSize$[ebp]
; 553 : }
0019c 5f pop edi
0019d 5e pop esi
0019e 5b pop ebx
0019f 8b e5 mov esp, ebp
001a1 5d pop ebp
001a2 c2 0c 00 ret 12 ; 0000000cH
?email_decode@CMailCoder@@QAEHPADI0@Z ENDP ; CMailCoder::email_decode
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?FoundChar@CMailCoder@@QAEHPAD0J@Z
_TEXT SEGMENT
$T1 = -4632 ; size = 4
_i$2 = -4116 ; size = 4
_j$ = -4112 ; size = 4
_lLen2$ = -4108 ; size = 4
_pComp$ = -4104 ; size = 4096
_this$ = -8 ; size = 4
__$ArrayPad$ = -4 ; size = 4
_szSrc$ = 8 ; size = 4
_pEx$ = 12 ; size = 4
_lLen$ = 16 ; size = 4
?FoundChar@CMailCoder@@QAEHPAD0J@Z PROC ; CMailCoder::FoundChar, COMDAT
; _this$ = ecx
; 556 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 b8 18 12 00 00 mov eax, 4632 ; 00001218H
00008 e8 00 00 00 00 call __chkstk
0000d a1 00 00 00 00 mov eax, DWORD PTR ___security_cookie
00012 33 c5 xor eax, ebp
00014 89 45 fc mov DWORD PTR __$ArrayPad$[ebp], eax
00017 53 push ebx
00018 56 push esi
00019 57 push edi
0001a 89 4d f8 mov DWORD PTR _this$[ebp], ecx
; 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>
0001d 83 7d 10 00 cmp DWORD PTR _lLen$[ebp], 0
00021 75 0f jne SHORT $LN5@FoundChar
; 559 : lLen = strlen( szSrc );
00023 8b 45 08 mov eax, DWORD PTR _szSrc$[ebp]
00026 50 push eax
00027 e8 00 00 00 00 call _strlen
0002c 83 c4 04 add esp, 4
0002f 89 45 10 mov DWORD PTR _lLen$[ebp], eax
$LN5@FoundChar:
; 560 : long lLen2= strlen( pEx );
00032 8b 45 0c mov eax, DWORD PTR _pEx$[ebp]
00035 50 push eax
00036 e8 00 00 00 00 call _strlen
0003b 83 c4 04 add esp, 4
0003e 89 85 f4 ef ff
ff mov DWORD PTR _lLen2$[ebp], eax
; 561 : int j =0;
00044 c7 85 f0 ef ff
ff 00 00 00 00 mov DWORD PTR _j$[ebp], 0
; 562 : for ( int i =0 ; i< lLen ; i++ )
0004e c7 85 ec ef ff
ff 00 00 00 00 mov DWORD PTR _i$2[ebp], 0
00058 eb 0f jmp SHORT $LN4@FoundChar
$LN2@FoundChar:
0005a 8b 85 ec ef ff
ff mov eax, DWORD PTR _i$2[ebp]
00060 83 c0 01 add eax, 1
00063 89 85 ec ef ff
ff mov DWORD PTR _i$2[ebp], eax
$LN4@FoundChar:
00069 8b 85 ec ef ff
ff mov eax, DWORD PTR _i$2[ebp]
0006f 3b 45 10 cmp eax, DWORD PTR _lLen$[ebp]
00072 7d 71 jge SHORT $LN3@FoundChar
; 563 : {
; 564 : memcpy( pComp , szSrc+i , lLen2 );
00074 8b 85 f4 ef ff
ff mov eax, DWORD PTR _lLen2$[ebp]
0007a 50 push eax
0007b 8b 4d 08 mov ecx, DWORD PTR _szSrc$[ebp]
0007e 03 8d ec ef ff
ff add ecx, DWORD PTR _i$2[ebp]
00084 51 push ecx
00085 8d 95 f8 ef ff
ff lea edx, DWORD PTR _pComp$[ebp]
0008b 52 push edx
0008c e8 00 00 00 00 call _memcpy
00091 83 c4 0c add esp, 12 ; 0000000cH
; 565 : pComp[lLen2] = 0;
00094 8b 85 f4 ef ff
ff mov eax, DWORD PTR _lLen2$[ebp]
0009a 89 85 e8 ed ff
ff mov DWORD PTR $T1[ebp], eax
000a0 81 bd e8 ed ff
ff 00 10 00 00 cmp DWORD PTR $T1[ebp], 4096 ; 00001000H
000aa 73 02 jae SHORT $LN8@FoundChar
000ac eb 05 jmp SHORT $LN9@FoundChar
$LN8@FoundChar:
000ae e8 00 00 00 00 call ___report_rangecheckfailure
$LN9@FoundChar:
000b3 8b 8d e8 ed ff
ff mov ecx, DWORD PTR $T1[ebp]
000b9 c6 84 0d f8 ef
ff ff 00 mov BYTE PTR _pComp$[ebp+ecx], 0
; 566 : if (!strcmp( pComp , pEx ) )
000c1 8b 45 0c mov eax, DWORD PTR _pEx$[ebp]
000c4 50 push eax
000c5 8d 8d f8 ef ff
ff lea ecx, DWORD PTR _pComp$[ebp]
000cb 51 push ecx
000cc e8 00 00 00 00 call _strcmp
000d1 83 c4 08 add esp, 8
000d4 85 c0 test eax, eax
000d6 75 08 jne SHORT $LN6@FoundChar
; 567 : {
; 568 : return i;
000d8 8b 85 ec ef ff
ff mov eax, DWORD PTR _i$2[ebp]
000de eb 08 jmp SHORT $LN7@FoundChar
$LN6@FoundChar:
; 569 : }
; 570 : }
000e0 e9 75 ff ff ff jmp $LN2@FoundChar
$LN3@FoundChar:
; 571 : return -1;
000e5 83 c8 ff or eax, -1
$LN7@FoundChar:
; 572 : }
000e8 5f pop edi
000e9 5e pop esi
000ea 5b pop ebx
000eb 8b 4d fc mov ecx, DWORD PTR __$ArrayPad$[ebp]
000ee 33 cd xor ecx, ebp
000f0 e8 00 00 00 00 call @__security_check_cookie@4
000f5 8b e5 mov esp, ebp
000f7 5d pop ebp
000f8 c2 0c 00 ret 12 ; 0000000cH
?FoundChar@CMailCoder@@QAEHPAD0J@Z ENDP ; CMailCoder::FoundChar
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?HexToDec@CMailCoder@@CAEE@Z
_TEXT SEGMENT
tv71 = -68 ; size = 4
_C$ = 8 ; size = 1
?HexToDec@CMailCoder@@CAEE@Z PROC ; CMailCoder::HexToDec, COMDAT
; 491 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 492 : return C <= '9' ? C - '0' : C - 'A' + 10;
00009 0f b6 45 08 movzx eax, BYTE PTR _C$[ebp]
0000d 83 f8 39 cmp eax, 57 ; 00000039H
00010 7f 0c jg SHORT $LN3@HexToDec
00012 0f b6 4d 08 movzx ecx, BYTE PTR _C$[ebp]
00016 83 e9 30 sub ecx, 48 ; 00000030H
00019 89 4d bc mov DWORD PTR tv71[ebp], ecx
0001c eb 0a jmp SHORT $LN4@HexToDec
$LN3@HexToDec:
0001e 0f b6 55 08 movzx edx, BYTE PTR _C$[ebp]
00022 83 ea 37 sub edx, 55 ; 00000037H
00025 89 55 bc mov DWORD PTR tv71[ebp], edx
$LN4@HexToDec:
00028 8a 45 bc mov al, BYTE PTR tv71[ebp]
; 493 : }
0002b 5f pop edi
0002c 5e pop esi
0002d 5b pop ebx
0002e 8b e5 mov esp, ebp
00030 5d pop ebp
00031 c3 ret 0
?HexToDec@CMailCoder@@CAEE@Z ENDP ; CMailCoder::HexToDec
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?DecToHex@CMailCoder@@CAEE@Z
_TEXT SEGMENT
tv71 = -68 ; size = 4
_B$ = 8 ; size = 1
?DecToHex@CMailCoder@@CAEE@Z PROC ; CMailCoder::DecToHex, COMDAT
; 483 : {
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 44 sub esp, 68 ; 00000044H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
; 484 : return B < 10 ? '0' + B:'A' + B - 10;
00009 0f b6 45 08 movzx eax, BYTE PTR _B$[ebp]
0000d 83 f8 0a cmp eax, 10 ; 0000000aH
00010 7d 0c jge SHORT $LN3@DecToHex
00012 0f b6 4d 08 movzx ecx, BYTE PTR _B$[ebp]
00016 83 c1 30 add ecx, 48 ; 00000030H
00019 89 4d bc mov DWORD PTR tv71[ebp], ecx
0001c eb 0a jmp SHORT $LN4@DecToHex
$LN3@DecToHex:
0001e 0f b6 55 08 movzx edx, BYTE PTR _B$[ebp]
00022 83 c2 37 add edx, 55 ; 00000037H
00025 89 55 bc mov DWORD PTR tv71[ebp], edx
$LN4@DecToHex:
00028 8a 45 bc mov al, BYTE PTR tv71[ebp]
; 485 : }
0002b 5f pop edi
0002c 5e pop esi
0002d 5b pop ebx
0002e 8b e5 mov esp, ebp
00030 5d pop ebp
00031 c3 ret 0
?DecToHex@CMailCoder@@CAEE@Z ENDP ; CMailCoder::DecToHex
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
___formal$ = 12 ; size = 4
___formal$ = 16 ; size = 4
?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAXIW4align_val_t@std@@@Z ENDP ; __empty_global_delete
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
___formal$ = 12 ; size = 4
?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAXW4align_val_t@std@@@Z ENDP ; __empty_global_delete
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPAXI@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
___formal$ = 12 ; size = 4
?__empty_global_delete@@YAXPAXI@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAXI@Z ENDP ; __empty_global_delete
_TEXT ENDS
; Function compile flags: /Odtp /ZI
; File D:\Works\Corpsms_2010\public\Pop3\MailCoder.cpp
; COMDAT ?__empty_global_delete@@YAXPAX@Z
_TEXT SEGMENT
___formal$ = 8 ; size = 4
?__empty_global_delete@@YAXPAX@Z PROC ; __empty_global_delete, COMDAT
00000 55 push ebp
00001 8b ec mov ebp, esp
00003 83 ec 40 sub esp, 64 ; 00000040H
00006 53 push ebx
00007 56 push esi
00008 57 push edi
00009 5f pop edi
0000a 5e pop esi
0000b 5b pop ebx
0000c 8b e5 mov esp, ebp
0000e 5d pop ebp
0000f c3 ret 0
?__empty_global_delete@@YAXPAX@Z ENDP ; __empty_global_delete
_TEXT ENDS
END