seg000:00899BD0 ; int __cdecl EncryptString(LPCSTR lpString) seg000:00899BD0 EncryptString proc near ; CODE XREF: sub_892720+B16p seg000:00899BD0 ; sub_892720+13B7p seg000:00899BD0 seg000:00899BD0 lpString = dword ptr 8 seg000:00899BD0 seg000:00899BD0 push edi seg000:00899BD1 mov edi, [esp+lpString] ; edi = [esp+lpString]; seg000:00899BD5 push edi seg000:00899BD6 call ds:lstrlenA ; ds:lstrlenA(edi); seg000:00899BDC test eax, eax seg000:00899BDE jz loc_899C67 ; if (eax == 0) goto loc_899C67; seg000:00899BE4 mov ecx, edi ; ecx = edi; seg000:00899BE6 push ebx seg000:00899BE7 and ecx, 0FFh seg000:00899BED push esi seg000:00899BEE mov ds:byte_C67B19, cl ; ds:byte_C67B19 = cl; seg000:00899BF4 mov ds:byte_C67B18, 1 ; ds:byte_C67B18 = 1; seg000:00899BFB lea edx, [ecx+ecx*2+65h] ; edx = &[ecx+ecx*2+65h]; seg000:00899BFF lea ecx, [ecx+ecx*2+1] ; ecx = &[ecx+ecx*2+1]; seg000:00899C03 mov [esp+8+lpString], edx ; [esp+8+lpString] = edx; seg000:00899C07 mov esi, 4 ; esi = 4; seg000:00899C0C lea ecx, [ecx+ecx*2] ; ecx = &[ecx+ecx*2]; seg000:00899C0F lea edx, [ecx+65h] ; edx = &[ecx+65h]; seg000:00899C12 inc ecx ; ecx++; seg000:00899C13 test eax, eax seg000:00899C15 jle short loc_899C3C seg000:00899C17 push ebp seg000:00899C18 sub edi, offset unk_C67B1C ; edi -= offset unk_C67B1C; seg000:00899C1E mov ebp, eax ; ebp = eax; seg000:00899C20 seg000:00899C20 loc_899C20: ; CODE XREF: EncryptString+69j seg000:00899C20 mov bl, ds:byte_C67B18[edi+esi] ; bl = ds:byte_C67B18[edi+esi]; seg000:00899C27 lea ecx, [ecx+ecx*2] ; ecx = &[ecx+ecx*2]; seg000:00899C2A mov al, cl ; al = cl; seg000:00899C2C add al, 65h ; al += 65h; seg000:00899C2E xor bl, al ; bl ^= al; seg000:00899C30 mov ds:byte_C67B18[esi], bl ; ds:byte_C67B18[esi] = bl; seg000:00899C36 inc esi ; esi++; seg000:00899C37 inc ecx ; ecx++; seg000:00899C38 dec ebp ; ebp--; seg000:00899C39 jnz short loc_899C20 seg000:00899C3B pop ebp seg000:00899C3C seg000:00899C3C loc_899C3C: ; CODE XREF: EncryptString+45j seg000:00899C3C mov bl, byte ptr [esp+8+lpString] ; bl = byte ptr [esp+8+lpString]; seg000:00899C40 lea ecx, [esi-4] ; ecx = &[esi-4]; seg000:00899C43 mov eax, ecx ; eax = ecx; seg000:00899C45 mov ds:byte_C67B18[esi], 0 ; ds:byte_C67B18[esi] = 0; seg000:00899C4C sar eax, 8 seg000:00899C4F xor al, bl ; al ^= bl; seg000:00899C51 xor dl, cl ; dl ^= cl; seg000:00899C53 pop esi seg000:00899C54 mov ds:byte_C67B1A, al ; ds:byte_C67B1A = al; seg000:00899C59 pop ebx seg000:00899C5A mov ds:byte_C67B1B, dl ; ds:byte_C67B1B = dl; seg000:00899C60 mov eax, offset byte_C67B18 ; eax = offset byte_C67B18; seg000:00899C65 pop edi seg000:00899C66 retn ; return; seg000:00899C67 ; --------------------------------------------------------------------------- seg000:00899C67 seg000:00899C67 loc_899C67: ; CODE XREF: EncryptString+Ej seg000:00899C67 mov eax, offset byte_C67B18 ; eax = offset byte_C67B18; seg000:00899C6C pop edi seg000:00899C6D retn ; return; seg000:00899C6D EncryptString endp