All pastes #802659 Raw Edit

Decryption routine

public text v1 · immutable
#802659 ·published 2007-11-30 14:45 UTC
rendered paste body
text:0042F7C0 ; ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ S U B R O U T I N E ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
.text:0042F7C0
.text:0042F7C0
.text:0042F7C0 sub_42F7C0      proc near               ; CODE XREF: sub_426120+39p
.text:0042F7C0
.text:0042F7C0 var_70          = dword ptr -70h
.text:0042F7C0 var_6C          = dword ptr -6Ch
.text:0042F7C0 var_68          = dword ptr -68h
.text:0042F7C0 var_64          = dword ptr -64h
.text:0042F7C0 var_60          = dword ptr -60h
.text:0042F7C0 var_5C          = dword ptr -5Ch
.text:0042F7C0 var_58          = dword ptr -58h
.text:0042F7C0 var_54          = dword ptr -54h
.text:0042F7C0 var_50          = dword ptr -50h
.text:0042F7C0 var_4C          = dword ptr -4Ch
.text:0042F7C0 var_48          = dword ptr -48h
.text:0042F7C0 var_44          = dword ptr -44h
.text:0042F7C0 var_40          = dword ptr -40h
.text:0042F7C0 var_3C          = dword ptr -3Ch
.text:0042F7C0 var_38          = dword ptr -38h
.text:0042F7C0 var_34          = dword ptr -34h
.text:0042F7C0 var_30          = dword ptr -30h
.text:0042F7C0 var_2C          = dword ptr -2Ch
.text:0042F7C0 var_28          = dword ptr -28h
.text:0042F7C0 var_24          = dword ptr -24h
.text:0042F7C0 var_20          = dword ptr -20h
.text:0042F7C0 var_1C          = dword ptr -1Ch
.text:0042F7C0 var_18          = dword ptr -18h
.text:0042F7C0 var_14          = dword ptr -14h
.text:0042F7C0 var_10          = dword ptr -10h
.text:0042F7C0 var_C           = dword ptr -0Ch
.text:0042F7C0 var_8           = dword ptr -8
.text:0042F7C0 var_4           = dword ptr -4
.text:0042F7C0 arg_0           = dword ptr  4
.text:0042F7C0 arg_4           = dword ptr  8
.text:0042F7C0 arg_8           = dword ptr  0Ch
.text:0042F7C0
.text:0042F7C0                 sub     esp, 6Ch        ; esp -= 6Ch;
.text:0042F7C3                 mov     eax, 1Dh        ; eax = 1Dh;
.text:0042F7C8                 push    ebx
.text:0042F7C9                 mov     edx, 0Ch        ; edx = 0Ch;
.text:0042F7CE                 mov     [esp+70h+var_60], eax ; [esp+70h+var_60] = eax;
.text:0042F7D2                 mov     ecx, 9          ; ecx = 9;
.text:0042F7D7                 mov     [esp+70h+var_54], edx ; [esp+70h+var_54] = edx;
.text:0042F7DB                 mov     [esp+70h+var_50], edx ; [esp+70h+var_50] = edx;
.text:0042F7DF                 mov     [esp+70h+var_3C], eax ; [esp+70h+var_3C] = eax;
.text:0042F7E3                 mov     [esp+70h+var_30], eax ; [esp+70h+var_30] = eax;
.text:0042F7E7                 mov     [esp+70h+var_10], eax ; [esp+70h+var_10] = eax;
.text:0042F7EB                 push    esi
.text:0042F7EC                 mov     edx, 6          ; edx = 6;
.text:0042F7F1                 push    edi
.text:0042F7F2                 mov     edi, [esp+78h+arg_4] ; edi = [esp+78h+arg_4];
.text:0042F7F9                 mov     [esp+78h+var_58], ecx ; [esp+78h+var_58] = ecx;
.text:0042F7FD                 mov     [esp+78h+var_34], edx ; [esp+78h+var_34] = edx;
.text:0042F801                 mov     [esp+78h+var_2C], ecx ; [esp+78h+var_2C] = ecx;
.text:0042F805                 mov     [esp+78h+var_28], edx ; [esp+78h+var_28] = edx;
.text:0042F809                 mov     [esp+78h+var_4], ecx ; [esp+78h+var_4] = ecx;
.text:0042F80D                 mov     eax, 0FEDCBA98h ; eax = 0FEDCBA98h;
.text:0042F812                 sub     eax, edi        ; eax -= edi;
.text:0042F814                 mov     ecx, 1Bh        ; ecx = 1Bh;
.text:0042F819                 xor     edx, edx        ; edx = 0;
.text:0042F81B                 div     ecx
.text:0042F81D                 mov     [esp+78h+var_6C], 4Bh ; [esp+78h+var_6C] = 4Bh;
.text:0042F825                 mov     [esp+78h+var_68], 19h ; [esp+78h+var_68] = 19h;
.text:0042F82D                 mov     [esp+78h+var_64], 1Fh ; [esp+78h+var_64] = 1Fh;
.text:0042F835                 mov     [esp+78h+var_5C], 1Ah ; [esp+78h+var_5C] = 1Ah;
.text:0042F83D                 mov     [esp+78h+var_4C], 53h ; [esp+78h+var_4C] = 53h;
.text:0042F845                 mov     [esp+78h+var_48], 49h ; [esp+78h+var_48] = 49h;
.text:0042F84D                 mov     [esp+78h+var_44], 13h ; [esp+78h+var_44] = 13h;
.text:0042F855                 mov     [esp+78h+var_40], 11h ; [esp+78h+var_40] = 11h;
.text:0042F85D                 mov     [esp+78h+var_38], 17h ; [esp+78h+var_38] = 17h;
.text:0042F865                 mov     [esp+78h+var_24], 8 ; [esp+78h+var_24] = 8;
.text:0042F86D                 mov     [esp+78h+var_20], 1Bh ; [esp+78h+var_20] = 1Bh;
.text:0042F875                 mov     [esp+78h+var_1C], 1Ch ; [esp+78h+var_1C] = 1Ch;
.text:0042F87D                 mov     [esp+78h+var_18], 1 ; [esp+78h+var_18] = 1;
.text:0042F885                 mov     [esp+78h+var_14], 1Eh ; [esp+78h+var_14] = 1Eh;
.text:0042F88D                 mov     [esp+78h+var_C], 3 ; [esp+78h+var_C] = 3;
.text:0042F895                 mov     [esp+78h+var_8], 5 ; [esp+78h+var_8] = 5;
.text:0042F89D                 mov     eax, 1          ; eax = 1;
.text:0042F8A2                 mov     ecx, edx        ; ecx = edx;
.text:0042F8A4
.text:0042F8A4 loc_42F8A4:                             ; CODE XREF: sub_42F7C0+FAj
.text:0042F8A4                 mov     edx, [esp+eax*4+78h+var_70] ; edx = [esp+eax*4+78h+var_70];
.text:0042F8A8                 xor     [esp+eax*4+78h+var_6C], edx ; [esp+eax*4+78h+var_6C] ^= edx;
.text:0042F8AC                 mov     edx, [esp+eax*4+78h+var_6C] ; edx = [esp+eax*4+78h+var_6C];
.text:0042F8B0                 xor     [esp+eax*4+78h+var_68], edx ; [esp+eax*4+78h+var_68] ^= edx;
.text:0042F8B4                 add     eax, 2          ; eax += 2;
.text:0042F8B7                 cmp     eax, 1Bh
.text:0042F8BA                 jl      short loc_42F8A4
.text:0042F8BC                 mov     al, byte ptr [esp+ecx*4+78h+var_6C] ; al = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F8C0                 mov     esi, [esp+78h+arg_0] ; esi = [esp+78h+arg_0];
.text:0042F8C4                 xor     [esi], al       ; [esi] ^= al;
.text:0042F8C6                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F8C9                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F8CE                 mul     ecx
.text:0042F8D0                 mov     eax, ecx        ; eax = ecx;
.text:0042F8D2                 sub     eax, edx        ; eax -= edx;
.text:0042F8D4                 shr     eax, 1
.text:0042F8D6                 add     eax, edx        ; eax += edx;
.text:0042F8D8                 shr     eax, 4
.text:0042F8DB                 imul    eax, -1Bh
.text:0042F8DE                 add     ecx, eax        ; ecx += eax;
.text:0042F8E0                 movzx   edx, byte ptr [esp+ecx*4+78h+var_6C] ; edx = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F8E5                 xor     [esi+1], dl     ; [esi+1] ^= dl;
.text:0042F8E8                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F8EB                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F8F0                 mul     ecx
.text:0042F8F2                 mov     eax, ecx        ; eax = ecx;
.text:0042F8F4                 sub     eax, edx        ; eax -= edx;
.text:0042F8F6                 shr     eax, 1
.text:0042F8F8                 add     eax, edx        ; eax += edx;
.text:0042F8FA                 shr     eax, 4
.text:0042F8FD                 imul    eax, -1Bh
.text:0042F900                 add     ecx, eax        ; ecx += eax;
.text:0042F902                 movzx   edx, byte ptr [esp+ecx*4+78h+var_6C] ; edx = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F907                 xor     [esi+2], dl     ; [esi+2] ^= dl;
.text:0042F90A                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F90D                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F912                 mul     ecx
.text:0042F914                 mov     eax, ecx        ; eax = ecx;
.text:0042F916                 sub     eax, edx        ; eax -= edx;
.text:0042F918                 shr     eax, 1
.text:0042F91A                 add     eax, edx        ; eax += edx;
.text:0042F91C                 shr     eax, 4
.text:0042F91F                 imul    eax, -1Bh
.text:0042F922                 add     ecx, eax        ; ecx += eax;
.text:0042F924                 movzx   edx, byte ptr [esp+ecx*4+78h+var_6C] ; edx = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F929                 xor     [esi+3], dl     ; [esi+3] ^= dl;
.text:0042F92C                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F92F                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F934                 mul     ecx
.text:0042F936                 mov     eax, ecx        ; eax = ecx;
.text:0042F938                 sub     eax, edx        ; eax -= edx;
.text:0042F93A                 shr     eax, 1
.text:0042F93C                 add     eax, edx        ; eax += edx;
.text:0042F93E                 shr     eax, 4
.text:0042F941                 imul    eax, -1Bh
.text:0042F944                 add     ecx, eax        ; ecx += eax;
.text:0042F946                 movzx   edx, byte ptr [esp+ecx*4+78h+var_6C] ; edx = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F94B                 xor     [esi+4], dl     ; [esi+4] ^= dl;
.text:0042F94E                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F951                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F956                 mul     ecx
.text:0042F958                 mov     eax, ecx        ; eax = ecx;
.text:0042F95A                 sub     eax, edx        ; eax -= edx;
.text:0042F95C                 shr     eax, 1
.text:0042F95E                 add     eax, edx        ; eax += edx;
.text:0042F960                 shr     eax, 4
.text:0042F963                 imul    eax, -1Bh
.text:0042F966                 add     ecx, eax        ; ecx += eax;
.text:0042F968                 movzx   edx, byte ptr [esp+ecx*4+78h+var_6C] ; edx = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F96D                 xor     [esi+5], dl     ; [esi+5] ^= dl;
.text:0042F970                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F973                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F978                 mul     ecx
.text:0042F97A                 mov     eax, ecx        ; eax = ecx;
.text:0042F97C                 sub     eax, edx        ; eax -= edx;
.text:0042F97E                 shr     eax, 1
.text:0042F980                 add     eax, edx        ; eax += edx;
.text:0042F982                 shr     eax, 4
.text:0042F985                 imul    eax, -1Bh
.text:0042F988                 add     ecx, eax        ; ecx += eax;
.text:0042F98A                 movzx   edx, byte ptr [esp+ecx*4+78h+var_6C] ; edx = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F98F                 xor     [esi+6], dl     ; [esi+6] ^= dl;
.text:0042F992                 add     ecx, 1Ah        ; ecx += 1Ah;
.text:0042F995                 mov     eax, 2F684BDBh  ; eax = 2F684BDBh;
.text:0042F99A                 mul     ecx
.text:0042F99C                 mov     eax, ecx        ; eax = ecx;
.text:0042F99E                 sub     eax, edx        ; eax -= edx;
.text:0042F9A0                 shr     eax, 1
.text:0042F9A2                 add     eax, edx        ; eax += edx;
.text:0042F9A4                 shr     eax, 4
.text:0042F9A7                 imul    eax, 1Bh
.text:0042F9AA                 sub     ecx, eax        ; ecx -= eax;
.text:0042F9AC                 mov     cl, byte ptr [esp+ecx*4+78h+var_6C] ; cl = byte ptr [esp+ecx*4+78h+var_6C];
.text:0042F9B0                 xor     [esi+7], cl     ; [esi+7] ^= cl;
.text:0042F9B3                 movzx   eax, byte ptr [esi] ; eax = byte ptr [esi];
.text:0042F9B6                 movzx   edx, byte ptr [esi+1] ; edx = byte ptr [esi+1];
.text:0042F9BA                 movzx   ecx, byte ptr [esi+2] ; ecx = byte ptr [esi+2];
.text:0042F9BE                 movzx   ebx, byte ptr [esi+5] ; ebx = byte ptr [esi+5];
.text:0042F9C2                 shl     eax, 8
.text:0042F9C5                 add     eax, edx        ; eax += edx;
.text:0042F9C7                 movzx   edx, byte ptr [esi+3] ; edx = byte ptr [esi+3];
.text:0042F9CB                 shl     eax, 8
.text:0042F9CE                 add     eax, ecx        ; eax += ecx;
.text:0042F9D0                 movzx   ecx, byte ptr [esi+4] ; ecx = byte ptr [esi+4];
.text:0042F9D4                 shl     ecx, 8
.text:0042F9D7                 add     ecx, ebx        ; ecx += ebx;
.text:0042F9D9                 movzx   ebx, byte ptr [esi+6] ; ebx = byte ptr [esi+6];
.text:0042F9DD                 movzx   esi, byte ptr [esi+7] ; esi = byte ptr [esi+7];
.text:0042F9E1                 shl     ecx, 8
.text:0042F9E4                 add     ecx, ebx        ; ecx += ebx;
.text:0042F9E6                 shl     ecx, 8
.text:0042F9E9                 shl     eax, 8
.text:0042F9EC                 add     ecx, esi        ; ecx += esi;
.text:0042F9EE                 add     eax, edx        ; eax += edx;
.text:0042F9F0                 mov     esi, ecx        ; esi = ecx;
.text:0042F9F2                 mov     edx, eax        ; edx = eax;
.text:0042F9F4                 and     ecx, 0AAAAAAAAh
.text:0042F9FA                 and     edx, 55555555h
.text:0042FA00                 mov     ebx, ecx        ; ebx = ecx;
.text:0042FA02                 or      ebx, edx
.text:0042FA04                 and     eax, 0AAAAAAAAh
.text:0042FA09                 and     esi, 55555555h
.text:0042FA0F                 cmp     ebx, edi
.text:0042FA11                 jnz     short loc_42FA32 ; if (ebx != edi) goto loc_42FA32;
.text:0042FA13                 test    esi, eax
.text:0042FA15                 jnz     short loc_42FA32
.text:0042FA17                 test    ecx, edx
.text:0042FA19                 jnz     short loc_42FA32
.text:0042FA1B                 or      esi, eax
.text:0042FA1D                 mov     eax, [esp+78h+arg_8] ; eax = [esp+78h+arg_8];
.text:0042FA24                 pop     edi
.text:0042FA25                 mov     [eax], esi      ; [eax] = esi;
.text:0042FA27                 pop     esi
.text:0042FA28                 mov     eax, 1          ; eax = 1;
.text:0042FA2D                 pop     ebx
.text:0042FA2E                 add     esp, 6Ch        ; esp += 6Ch;
.text:0042FA31                 retn                    ; return;
.text:0042FA32 ; ---------------------------------------------------------------------------