All pastes #77673 Raw Edit

Mine

public text v1 · immutable
·published 2006-07-03 08:34 UTC
rendered paste body
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