; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 4580D3E452AD64D117E11DB86ED94E54 ; File Name : u:\work\4580d3e452ad64d117e11db86ed94e54_orig.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 10000 ; Section 1. (virtual address 00001000) ; Virtual size : 00004244 ( 16964.) ; Section size in file : 00004400 ( 17408.) ; Offset to raw data for section: 00000400 ; 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 11000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing ; [00000006 BYTES: COLLAPSED FUNCTION GetStdHandle. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION RaiseException. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION UnhandledExceptionFilter. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION CharNextA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetLocaleInfoA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetStartupInfoA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetThreadLocale. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyExA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION RegQueryValueExA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentThreadId. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetVersion. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_11098 proc near ; CODE XREF: sub_138CC+71p var_1C = byte ptr -1Ch var_18 = word ptr -18h push ebx add esp, 0FFFFFFBCh mov ebx, 0Ah push esp ; lpStartupInfo call GetStartupInfoA ; GetStartupInfoA test [esp+48h+var_1C], 1 jz short loc_110B3 movzx ebx, [esp+48h+var_18] loc_110B3: ; CODE XREF: sub_11098+14j mov eax, ebx add esp, 44h pop ebx retn sub_11098 endp ; --------------------------------------------------------------------------- align 4 ; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION LocalFree. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VirtualAlloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VirtualFree. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION InitializeCriticalSection. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION EnterCriticalSection. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION LeaveCriticalSection. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION DeleteCriticalSection. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_110FC proc near ; CODE XREF: sub_11188+9p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 push ebx add esp, 0FFFFFFF4h mov ebx, offset dword_175D0 cmp dword ptr [ebx], 0 jnz short loc_11163 push 644h ; uBytes push 0 ; uFlags call LocalAlloc ; LocalAlloc mov [esp+10h+var_8], eax cmp [esp+10h+var_8], 0 jnz short loc_11128 xor eax, eax mov [esp+10h+var_10], eax jmp short loc_11178 ; --------------------------------------------------------------------------- loc_11128: ; CODE XREF: sub_110FC+23j mov eax, [esp+10h+var_8] mov edx, ds:dword_175CC mov [eax], edx mov eax, [esp+10h+var_8] mov ds:dword_175CC, eax xor eax, eax loc_1113F: ; CODE XREF: sub_110FC+65j mov edx, eax add edx, edx mov ecx, [esp+10h+var_8] lea edx, [ecx+edx*8+4] mov [esp+10h+var_C], edx mov edx, [esp+10h+var_C] mov ecx, [ebx] mov [edx], ecx mov edx, [esp+10h+var_C] mov [ebx], edx inc eax cmp eax, 64h jnz short loc_1113F loc_11163: ; CODE XREF: sub_110FC+Cj mov eax, [ebx] mov [esp+10h+var_C], eax mov eax, [esp+10h+var_C] mov eax, [eax] mov [ebx], eax mov eax, [esp+10h+var_C] mov [esp+10h+var_10], eax loc_11178: ; CODE XREF: sub_110FC+2Aj mov eax, [esp+10h+var_10] add esp, 0Ch pop ebx retn sub_110FC endp ; =============== S U B R O U T I N E ======================================= sub_11180 proc near ; CODE XREF: sub_11904+34p ; sub_11904+3Ep ... mov [eax], eax mov [eax+4], eax retn sub_11180 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11188 proc near ; CODE XREF: sub_11218+71p ; sub_112A0+96p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h mov esi, edx mov ebx, eax call sub_110FC mov [esp+10h+var_C], eax cmp [esp+10h+var_C], 0 jnz short loc_111A5 xor eax, eax jmp short loc_111DF ; --------------------------------------------------------------------------- loc_111A5: ; CODE XREF: sub_11188+17j mov eax, [esi] mov edx, [esp+10h+var_C] mov [edx+8], eax mov eax, [esi+4] mov edx, [esp+10h+var_C] mov [edx+0Ch], eax mov eax, [ebx] mov [esp+10h+var_10], eax mov eax, [esp+10h+var_C] mov edx, [esp+10h+var_10] mov [eax], edx mov eax, [esp+10h+var_C] mov [eax+4], ebx mov eax, [esp+10h+var_10] mov edx, [esp+10h+var_C] mov [eax+4], edx mov eax, [esp+10h+var_C] mov [ebx], eax mov al, 1 loc_111DF: ; CODE XREF: sub_11188+1Bj pop ecx pop edx pop esi pop ebx retn sub_11188 endp ; =============== S U B R O U T I N E ======================================= sub_111E4 proc near ; CODE XREF: sub_11218+37p ; sub_11218+56p ... var_8 = dword ptr -8 var_4 = dword ptr -4 add esp, 0FFFFFFF8h mov edx, [eax+4] mov [esp+8+var_8], edx mov edx, [eax] mov [esp+8+var_4], edx mov edx, [esp+8+var_8] mov ecx, [esp+8+var_4] mov [edx], ecx mov edx, [esp+8+var_4] mov ecx, [esp+8+var_8] mov [edx+4], ecx mov edx, ds:dword_175D0 mov [eax], edx mov ds:dword_175D0, eax pop ecx pop edx retn sub_111E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11218 proc near ; CODE XREF: sub_11684+80p ; sub_1172C+78p ... var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov ebx, ecx mov esi, eax mov edi, esp mov eax, [esi] mov [edi], eax mov eax, [edx] mov [ebx], eax mov eax, [edx+4] mov [ebx+4], eax loc_11233: ; CODE XREF: sub_11218+6Bj mov eax, [edi] mov eax, [eax] mov [esp+18h+var_14], eax mov edx, [edi] mov edx, [edx+8] mov ecx, edx mov ebp, [edi] add ecx, [ebp+0Ch] mov eax, [ebx] cmp ecx, eax jnz short loc_11265 mov eax, [edi] call sub_111E4 mov eax, [edi] mov eax, [eax+8] mov [ebx], eax mov eax, [edi] mov eax, [eax+0Ch] add [ebx+4], eax jmp short loc_1127B ; --------------------------------------------------------------------------- loc_11265: ; CODE XREF: sub_11218+33j add eax, [ebx+4] cmp edx, eax jnz short loc_1127B mov eax, [edi] call sub_111E4 mov eax, [edi] mov eax, [eax+0Ch] add [ebx+4], eax loc_1127B: ; CODE XREF: sub_11218+4Bj ; sub_11218+52j mov eax, [esp+18h+var_14] mov [edi], eax cmp esi, [edi] jnz short loc_11233 mov edx, ebx mov eax, esi call sub_11188 test al, al jnz short loc_11296 xor eax, eax mov [ebx], eax loc_11296: ; CODE XREF: sub_11218+78j pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_11218 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_112A0 proc near ; CODE XREF: sub_11870+82p ; sub_11CF4+ABp 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, 0FFFFFFF0h mov [esp+20h+var_20], eax mov esi, esp mov eax, [esi] mov [esp+20h+var_14], eax loc_112B2: ; CODE XREF: sub_112A0+B3j mov ecx, [edx] mov eax, [esi] mov eax, [eax+8] cmp ecx, eax jb loc_11347 mov ebx, eax mov edi, [esi] add ebx, [edi+0Ch] mov edi, ecx add edi, [edx+4] cmp ebx, edi jb short loc_11347 cmp ecx, eax jnz short loc_112F6 mov eax, [edx+4] mov ecx, [esi] add [ecx+8], eax mov eax, [edx+4] mov edx, [esi] sub [edx+0Ch], eax mov eax, [esi] cmp dword ptr [eax+0Ch], 0 jnz short loc_11343 mov eax, [esi] call sub_111E4 jmp short loc_11343 ; --------------------------------------------------------------------------- loc_112F6: ; CODE XREF: sub_112A0+33j mov ebx, eax mov edi, [esi] add ebx, [edi+0Ch] mov edi, ecx add edi, [edx+4] cmp ebx, edi jnz short loc_11310 mov eax, [edx+4] mov edx, [esi] sub [edx+0Ch], eax jmp short loc_11343 ; --------------------------------------------------------------------------- loc_11310: ; CODE XREF: sub_112A0+64j mov ebx, [edx] add ebx, [edx+4] mov [esp+20h+var_1C], ebx mov edi, [esi] mov edi, [edi+8] mov ebp, [esi] add edi, [ebp+0Ch] sub edi, ebx mov [esp+20h+var_18], edi sub ecx, eax mov eax, [esi] mov [eax+0Ch], ecx lea edx, [esp+20h+var_1C] mov eax, [esi] call sub_11188 test al, al jnz short loc_11343 xor eax, eax jmp short loc_1135B ; --------------------------------------------------------------------------- loc_11343: ; CODE XREF: sub_112A0+4Bj ; sub_112A0+54j ... mov al, 1 jmp short loc_1135B ; --------------------------------------------------------------------------- loc_11347: ; CODE XREF: sub_112A0+1Bj ; sub_112A0+2Fj mov eax, [esi] mov eax, [eax] mov [esi], eax mov eax, [esi] cmp eax, [esp+20h+var_14] jnz loc_112B2 xor eax, eax loc_1135B: ; CODE XREF: sub_112A0+A1j ; sub_112A0+A5j add esp, 10h pop ebp pop edi pop esi pop ebx retn sub_112A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11364 proc near ; CODE XREF: sub_11684+6Ep push ebx push esi push edi mov ebx, edx mov esi, eax cmp esi, 100000h jge short loc_1137A mov esi, 100000h jmp short loc_11386 ; --------------------------------------------------------------------------- loc_1137A: ; CODE XREF: sub_11364+Dj add esi, 0FFFFh and esi, 0FFFF0000h loc_11386: ; CODE XREF: sub_11364+14j mov [ebx+4], esi push 1 ; flProtect push 2000h ; flAllocationType push esi ; dwSize push 0 ; lpAddress call VirtualAlloc ; VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jz short loc_113C3 mov edx, ebx mov eax, offset dword_175D4 call sub_11188 test al, al jnz short loc_113C3 push 8000h ; dwFreeType push 0 ; dwSize mov eax, [ebx] push eax ; lpAddress call VirtualFree ; VirtualFree xor eax, eax mov [ebx], eax loc_113C3: ; CODE XREF: sub_11364+3Aj ; sub_11364+4Aj pop edi pop esi pop ebx retn sub_11364 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_113C8 proc near ; CODE XREF: sub_1172C+62p ; sub_1172C+A9p 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 ; flProtect push 2000h ; flAllocationType push 100000h ; dwSize push ebp ; lpAddress call VirtualAlloc ; VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jnz short loc_11412 add esi, 0FFFFh and esi, 0FFFF0000h mov [ebx+4], esi push 4 ; flProtect push 2000h ; flAllocationType push esi ; dwSize push ebp ; lpAddress call VirtualAlloc ; VirtualAlloc mov [ebx], eax loc_11412: ; CODE XREF: sub_113C8+29j cmp dword ptr [ebx], 0 jz short loc_1143A mov edx, ebx mov eax, offset dword_175D4 call sub_11188 test al, al jnz short loc_1143A push 8000h ; dwFreeType push 0 ; dwSize mov eax, [ebx] push eax ; lpAddress call VirtualFree ; VirtualFree xor eax, eax mov [ebx], eax loc_1143A: ; CODE XREF: sub_113C8+4Dj ; sub_113C8+5Dj pop ebp pop edi pop esi pop ebx retn sub_113C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_11440 proc near ; CODE XREF: sub_11684+95p ; sub_1172C+90p ... 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, 0FFFFFFE8h mov edi, ecx mov esi, esp mov [esp+28h+var_20], 0FFFFFFFFh xor ecx, ecx mov [esp+28h+var_1C], ecx mov [esp+28h+var_18], eax add edx, [esp+28h+var_18] mov [esp+28h+var_14], edx mov eax, ds:dword_175D4 mov [esi], eax jmp short loc_114D9 ; --------------------------------------------------------------------------- loc_1146E: ; CODE XREF: sub_11440+A0j mov eax, [esi] mov eax, [eax] mov [esp+28h+var_24], eax mov eax, [esi] mov ebx, [eax+8] cmp ebx, [esp+28h+var_18] jb short loc_114D3 mov eax, ebx mov edx, [esi] add eax, [edx+0Ch] cmp eax, [esp+28h+var_14] ja short loc_114D3 cmp ebx, [esp+28h+var_20] jnb short loc_11498 mov [esp+28h+var_20], ebx loc_11498: ; CODE XREF: sub_11440+52j mov eax, [esi] mov ebp, [eax+8] mov eax, [esi] add ebp, [eax+0Ch] cmp ebp, [esp+28h+var_1C] jbe short loc_114AC mov [esp+28h+var_1C], ebp loc_114AC: ; CODE XREF: sub_11440+66j push 8000h ; dwFreeType push 0 ; dwSize mov eax, [esi] mov eax, [eax+8] push eax ; lpAddress call VirtualFree ; VirtualFree test eax, eax jnz short loc_114CC mov ds:dword_175B0, 1 loc_114CC: ; CODE XREF: sub_11440+80j mov eax, [esi] call sub_111E4 loc_114D3: ; CODE XREF: sub_11440+3Fj ; sub_11440+4Cj mov eax, [esp+28h+var_24] mov [esi], eax loc_114D9: ; CODE XREF: sub_11440+2Cj mov eax, offset dword_175D4 cmp eax, [esi] jnz short loc_1146E xor eax, eax mov [edi], eax cmp [esp+28h+var_1C], 0 jz short loc_114FE mov eax, [esp+28h+var_20] mov [edi], eax mov eax, [esp+28h+var_1C] sub eax, [esp+28h+var_20] mov [edi+4], eax loc_114FE: ; CODE XREF: sub_11440+ABj add esp, 18h pop ebp pop edi pop esi pop ebx retn sub_11440 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=18h sub_11508 proc near ; CODE XREF: sub_11684+35p ; sub_1172C+100p var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = byte ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_18 = dword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFE8h mov ebx, ecx mov [esp+24h+var_3C], edx lea esi, [esp+24h+var_34] lea edi, [esp+24h+var_38] lea ebp, [esp+0Ch] mov edx, eax mov ecx, edx and ecx, 0FFFFF000h mov [esp+24h+var_2C], ecx add edx, [esp+24h+var_3C] add edx, 0FFFh and edx, 0FFFFF000h mov [esp+24h+var_28], edx mov eax, [esp+24h+var_2C] mov [ebx], eax mov eax, [esp+24h+var_28] sub eax, [esp+24h+var_2C] mov [ebx+4], eax mov eax, ds:dword_175D4 mov [edi], eax jmp short loc_115B6 ; --------------------------------------------------------------------------- loc_1155B: ; CODE XREF: sub_11508+B5j mov eax, [edi] mov eax, [eax+8] mov [esi], eax mov eax, [edi] mov eax, [eax+0Ch] add eax, [esi] mov [ebp+18h+var_18], eax mov eax, [esi] cmp eax, [esp+24h+var_2C] jnb short loc_1157A mov eax, [esp+24h+var_2C] mov [esi], eax loc_1157A: ; CODE XREF: sub_11508+6Aj mov eax, [ebp+18h+var_18] cmp eax, [esp+24h+var_28] jbe short loc_1158A mov eax, [esp+24h+var_28] mov [ebp+18h+var_18], eax loc_1158A: ; CODE XREF: sub_11508+79j mov eax, [esi] cmp eax, [ebp+18h+var_18] jnb short loc_115B0 push 4 ; flProtect push 1000h ; flAllocationType mov eax, [ebp+18h+var_18] sub eax, [esi] push eax ; dwSize mov eax, [esi] push eax ; lpAddress call VirtualAlloc ; VirtualAlloc test eax, eax jnz short loc_115B0 xor eax, eax mov [ebx], eax jmp short loc_115BF ; --------------------------------------------------------------------------- loc_115B0: ; CODE XREF: sub_11508+87j ; sub_11508+A0j mov eax, [edi] mov eax, [eax] mov [edi], eax loc_115B6: ; CODE XREF: sub_11508+51j mov eax, offset dword_175D4 cmp eax, [edi] jnz short loc_1155B loc_115BF: ; CODE XREF: sub_11508+A6j add esp, 18h pop ebp pop edi pop esi pop ebx retn sub_11508 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_115C8 proc near ; CODE XREF: sub_11870+36p var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFE8h mov [esp+28h+var_28], edx lea esi, [esp+28h+var_20] lea edi, [esp+28h+var_24] lea ebx, [esp+28h+var_1C] mov edx, eax mov ebp, edx add ebp, 0FFFh and ebp, 0FFFFF000h mov [esp+28h+var_18], ebp add edx, [esp+28h+var_28] and edx, 0FFFFF000h mov [esp+28h+var_14], edx mov eax, [esp+28h+var_18] mov [ecx], eax mov eax, [esp+28h+var_14] sub eax, [esp+28h+var_18] mov [ecx+4], eax mov eax, ds:dword_175D4 mov [edi], eax jmp short loc_11671 ; --------------------------------------------------------------------------- loc_11619: ; CODE XREF: sub_115C8+B0j mov eax, [edi] mov eax, [eax+8] mov [esi], eax mov eax, [edi] mov eax, [eax+0Ch] add eax, [esi] mov [ebx], eax mov eax, [esi] cmp eax, [esp+28h+var_18] jnb short loc_11637 mov eax, [esp+28h+var_18] mov [esi], eax loc_11637: ; CODE XREF: sub_115C8+67j mov eax, [ebx] cmp eax, [esp+28h+var_14] jbe short loc_11645 mov eax, [esp+28h+var_14] mov [ebx], eax loc_11645: ; CODE XREF: sub_115C8+75j mov eax, [esi] cmp eax, [ebx] jnb short loc_1166B push 4000h ; dwFreeType mov eax, [ebx] sub eax, [esi] push eax ; dwSize mov eax, [esi] push eax ; lpAddress call VirtualFree ; VirtualFree test eax, eax jnz short loc_1166B mov ds:dword_175B0, 2 loc_1166B: ; CODE XREF: sub_115C8+81j ; sub_115C8+97j mov eax, [edi] mov eax, [eax] mov [edi], eax loc_11671: ; CODE XREF: sub_115C8+4Fj mov eax, offset dword_175D4 cmp eax, [edi] jnz short loc_11619 add esp, 18h pop ebp pop edi pop esi pop ebx retn sub_115C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11684 proc near ; CODE XREF: sub_11F80+Bp var_18 = dword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov ebx, edx mov esi, eax mov edi, esp mov ebp, offset dword_175E4 add esi, 3FFFh and esi, 0FFFFC000h loc_116A2: ; CODE XREF: sub_11684+8Aj mov eax, [ebp+0] mov [edi], eax jmp short loc_116EA ; --------------------------------------------------------------------------- loc_116A9: ; CODE XREF: sub_11684+68j mov eax, [edi] cmp esi, [eax+0Ch] jg short loc_116E4 mov ecx, ebx mov eax, [edi] mov eax, [eax+8] mov edx, esi call sub_11508 cmp dword ptr [ebx], 0 jz short loc_11722 mov eax, [ebx+4] mov edx, [edi] add [edx+8], eax mov eax, [ebx+4] mov edx, [edi] sub [edx+0Ch], eax mov eax, [edi] cmp dword ptr [eax+0Ch], 0 jnz short loc_11722 mov eax, [edi] call sub_111E4 jmp short loc_11722 ; --------------------------------------------------------------------------- loc_116E4: ; CODE XREF: sub_11684+2Aj mov eax, [edi] mov eax, [eax] mov [edi], eax loc_116EA: ; CODE XREF: sub_11684+23j cmp ebp, [edi] jnz short loc_116A9 mov edx, ebx mov eax, esi call sub_11364 cmp dword ptr [ebx], 0 jz short loc_11722 lea ecx, [esp+1Ch+var_18] mov edx, ebx mov eax, ebp call sub_11218 cmp [esp+1Ch+var_18], 0 jnz short loc_116A2 lea ecx, [esp+1Ch+var_18] mov edx, [ebx+4] mov eax, [ebx] call sub_11440 xor eax, eax mov [ebx], eax loc_11722: ; CODE XREF: sub_11684+3Dj ; sub_11684+55j ... add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_11684 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1172C proc near ; CODE XREF: sub_11FAC+10p var_28 = dword ptr -28h var_24 = byte 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, 0FFFFFFE8h mov [esp+28h+var_28], ecx mov edi, edx mov ebx, eax lea esi, [esp+28h+var_24] mov ebp, offset dword_175E4 add edi, 3FFFh and edi, 0FFFFC000h loc_1174F: ; CODE XREF: sub_1172C+82j ; sub_1172C+C9j mov eax, [ebp+0] mov [esi], eax jmp short loc_1175C ; --------------------------------------------------------------------------- loc_11756: ; CODE XREF: sub_1172C+39j mov eax, [esi] mov eax, [eax] mov [esi], eax loc_1175C: ; CODE XREF: sub_1172C+28j cmp ebp, [esi] jz short loc_11767 mov eax, [esi] cmp ebx, [eax+8] jnz short loc_11756 loc_11767: ; CODE XREF: sub_1172C+32j mov eax, [esi] cmp ebx, [eax+8] jnz short loc_117CD mov eax, [esi] cmp edi, [eax+0Ch] jle loc_11815 mov eax, [esi] mov edx, edi sub edx, [eax+0Ch] mov eax, [esi] mov eax, [eax+8] mov ecx, [esi] add eax, [ecx+0Ch] lea ecx, [esp+28h+var_20] call sub_113C8 cmp [esp+28h+var_20], 0 jz short loc_117CD lea ecx, [esp+28h+var_18] lea edx, [esp+28h+var_20] mov eax, ebp call sub_11218 cmp [esp+28h+var_18], 0 jnz short loc_1174F lea ecx, [esp+28h+var_18] mov edx, [esp+28h+var_1C] mov eax, [esp+28h+var_20] call sub_11440 mov eax, [esp+28h+var_28] xor edx, edx mov [eax], edx jmp loc_11867 ; --------------------------------------------------------------------------- loc_117CD: ; CODE XREF: sub_1172C+40j ; sub_1172C+6Cj lea ecx, [esp+28h+var_20] mov edx, edi mov eax, ebx call sub_113C8 cmp [esp+28h+var_20], 0 jz short loc_11815 lea ecx, [esp+28h+var_18] lea edx, [esp+28h+var_20] mov eax, ebp call sub_11218 cmp [esp+28h+var_18], 0 jnz loc_1174F lea ecx, [esp+28h+var_18] mov edx, [esp+28h+var_1C] mov eax, [esp+28h+var_20] call sub_11440 mov eax, [esp+28h+var_28] xor edx, edx mov [eax], edx jmp short loc_11867 ; --------------------------------------------------------------------------- loc_11815: ; CODE XREF: sub_1172C+47j ; sub_1172C+B3j mov eax, [esi] mov ebp, [eax+8] cmp ebx, ebp jnz short loc_11860 mov eax, [esi] cmp edi, [eax+0Ch] jg short loc_11860 mov ecx, [esp+28h+var_28] mov eax, ebp mov edx, edi call sub_11508 mov eax, [esp+28h+var_28] cmp dword ptr [eax], 0 jz short loc_11867 mov eax, [esp+28h+var_28] mov eax, [eax+4] mov edx, [esi] add [edx+8], eax mov eax, [esp+28h+var_28] mov eax, [eax+4] mov edx, [esi] sub [edx+0Ch], eax mov eax, [esi] cmp dword ptr [eax+0Ch], 0 jnz short loc_11867 mov eax, [esi] call sub_111E4 jmp short loc_11867 ; --------------------------------------------------------------------------- loc_11860: ; CODE XREF: sub_1172C+F0j ; sub_1172C+F7j mov eax, [esp+28h+var_28] xor edx, edx mov [eax], edx loc_11867: ; CODE XREF: sub_1172C+9Cj ; sub_1172C+E7j ... add esp, 18h pop ebp pop edi pop esi pop ebx retn sub_1172C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_11870 proc near ; CODE XREF: sub_11CF4+5Bp ; sub_11CF4+6Cp 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 push ebx add esp, 0FFFFFFE8h mov ebx, ecx lea ecx, [eax+3FFFh] and ecx, 0FFFFC000h mov [esp+1Ch+var_1C], ecx add edx, eax and edx, 0FFFFC000h mov [esp+1Ch+var_18], edx mov eax, [esp+1Ch+var_18] cmp eax, [esp+1Ch+var_1C] jbe short loc_118F9 mov ecx, ebx mov edx, [esp+1Ch+var_18] sub edx, [esp+1Ch+var_1C] mov eax, [esp+1Ch+var_1C] call sub_115C8 lea ecx, [esp+1Ch+var_14] mov edx, ebx mov eax, offset dword_175E4 call sub_11218 mov ebx, [esp+1Ch+var_14] test ebx, ebx jz short loc_118E2 lea ecx, [esp+1Ch+var_C] mov edx, [esp+1Ch+var_10] mov eax, ebx call sub_11440 mov eax, [esp+1Ch+var_C] mov [esp+1Ch+var_14], eax mov eax, [esp+1Ch+var_8] mov [esp+1Ch+var_10], eax loc_118E2: ; CODE XREF: sub_11870+51j cmp [esp+1Ch+var_14], 0 jz short loc_118FD lea edx, [esp+1Ch+var_14] mov eax, offset dword_175E4 call sub_112A0 jmp short loc_118FD ; --------------------------------------------------------------------------- loc_118F9: ; CODE XREF: sub_11870+28j xor eax, eax mov [ebx], eax loc_118FD: ; CODE XREF: sub_11870+77j ; sub_11870+87j add esp, 18h pop ebx retn sub_11870 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_11904 proc near ; CODE XREF: sub_12160+12p ; sub_1230C+19p ... var_4 = dword ptr -4 ; FUNCTION CHUNK AT 00012F4C SIZE 00000036 BYTES push ebp mov ebp, esp push ecx xor edx, edx push ebp push offset loc_119CC push dword ptr fs:[edx] mov fs:[edx], esp push offset CriticalSection ; lpCriticalSection call InitializeCriticalSection ; InitializeCriticalSection cmp ds:byte_17035, 0 jz short loc_11933 push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_11933: ; CODE XREF: sub_11904+23j mov eax, offset dword_175D4 call sub_11180 mov eax, offset dword_175E4 call sub_11180 mov eax, offset dword_17610 call sub_11180 push 0FF8h ; uBytes push 0 ; uFlags call LocalAlloc ; LocalAlloc mov ds:hMem, eax cmp ds:hMem, 0 jz short loc_119AB mov eax, 3 loc_11970: ; CODE XREF: sub_11904+7Ej mov edx, ds:hMem xor ecx, ecx mov [edx+eax*4-0Ch], ecx inc eax cmp eax, 401h jnz short loc_11970 mov [ebp+var_4], offset dword_175F4 mov eax, [ebp+var_4] mov edx, [ebp+var_4] mov [eax+4], edx mov eax, [ebp+var_4] mov edx, [ebp+var_4] mov [eax], edx mov eax, [ebp+var_4] mov ds:dword_17600, eax mov ds:byte_175AC, 1 loc_119AB: ; CODE XREF: sub_11904+65j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_119D3 loc_119B8: ; CODE XREF: sub_11904+CDj cmp ds:byte_17035, 0 jz short loc_119CB push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_119CB: ; CODE XREF: sub_11904+BBj retn ; --------------------------------------------------------------------------- loc_119CC: ; DATA XREF: sub_11904+7o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_119B8 ; --------------------------------------------------------------------------- loc_119D3: ; CODE XREF: sub_11904:loc_119CBj ; DATA XREF: sub_11904+AFo mov al, ds:byte_175AC pop ecx pop ebp retn sub_11904 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_119DC proc near ; CODE XREF: sub_13878+37p var_8 = dword ptr -8 hMem = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h cmp ds:byte_175AC, 0 jz loc_11AD7 xor eax, eax push ebp push offset loc_11AD0 push dword ptr fs:[eax] mov fs:[eax], esp cmp ds:byte_17035, 0 jz short loc_11A10 push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_11A10: ; CODE XREF: sub_119DC+28j mov ds:byte_175AC, 0 mov eax, ds:hMem push eax ; hMem call LocalFree ; LocalFree xor eax, eax mov ds:hMem, eax mov eax, ds:dword_175D4 mov [ebp+var_8], eax jmp short loc_11A4E ; --------------------------------------------------------------------------- loc_11A33: ; CODE XREF: sub_119DC+7Aj push 8000h ; dwFreeType push 0 ; dwSize mov eax, [ebp+var_8] mov eax, [eax+8] push eax ; lpAddress call VirtualFree ; VirtualFree mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_8], eax loc_11A4E: ; CODE XREF: sub_119DC+55j mov eax, offset dword_175D4 cmp eax, [ebp+var_8] jnz short loc_11A33 mov eax, offset dword_175D4 call sub_11180 mov eax, offset dword_175E4 call sub_11180 mov eax, offset dword_17610 call sub_11180 mov eax, ds:dword_175CC mov [ebp+hMem], eax cmp [ebp+hMem], 0 jz short loc_11AA5 loc_11A84: ; CODE XREF: sub_119DC+C7j mov eax, [ebp+hMem] mov eax, [eax] mov ds:dword_175CC, eax mov eax, [ebp+hMem] push eax ; hMem call LocalFree ; LocalFree mov eax, ds:dword_175CC mov [ebp+hMem], eax cmp [ebp+hMem], 0 jnz short loc_11A84 loc_11AA5: ; CODE XREF: sub_119DC+A6j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_11AD7 loc_11AB2: ; CODE XREF: sub_119DC+F9j cmp ds:byte_17035, 0 jz short loc_11AC5 push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_11AC5: ; CODE XREF: sub_119DC+DDj push offset CriticalSection ; lpCriticalSection call DeleteCriticalSection retn ; --------------------------------------------------------------------------- loc_11AD0: ; DATA XREF: sub_119DC+16o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_11AB2 ; --------------------------------------------------------------------------- loc_11AD7: ; CODE XREF: sub_119DC+Dj ; sub_119DC+F3j ; DATA XREF: ... pop ecx pop ecx pop ebp retn sub_119DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11ADC proc near ; CODE XREF: sub_11C3C+6Bp ; sub_11CB4+25p ... var_C = dword ptr -0Ch var_8 = dword ptr -8 push ebx add esp, 0FFFFFFF8h cmp eax, ds:dword_17600 jnz short loc_11AF1 mov edx, [eax+4] mov ds:dword_17600, edx loc_11AF1: ; CODE XREF: sub_11ADC+Aj mov edx, [eax+4] mov [esp+0Ch+var_C], edx mov edx, [eax+8] cmp edx, 1000h jg short loc_11B50 cmp eax, [esp+0Ch+var_C] jnz short loc_11B1E test edx, edx jns short loc_11B0E add edx, 3 loc_11B0E: ; CODE XREF: sub_11ADC+2Dj sar edx, 2 mov eax, ds:hMem xor ecx, ecx mov [eax+edx*4-0Ch], ecx jmp short loc_11B69 ; --------------------------------------------------------------------------- loc_11B1E: ; CODE XREF: sub_11ADC+29j test edx, edx jns short loc_11B25 add edx, 3 loc_11B25: ; CODE XREF: sub_11ADC+44j sar edx, 2 mov ecx, ds:hMem mov ebx, [esp+0Ch+var_C] mov [ecx+edx*4-0Ch], ebx mov eax, [eax] mov [esp+0Ch+var_8], eax mov eax, [esp+0Ch+var_C] mov edx, [esp+0Ch+var_8] mov [eax], edx mov eax, [esp+0Ch+var_8] mov edx, [esp+0Ch+var_C] mov [eax+4], edx jmp short loc_11B69 ; --------------------------------------------------------------------------- loc_11B50: ; CODE XREF: sub_11ADC+24j mov eax, [eax] mov [esp+0Ch+var_8], eax mov eax, [esp+0Ch+var_C] mov edx, [esp+0Ch+var_8] mov [eax], edx mov eax, [esp+0Ch+var_8] mov edx, [esp+0Ch+var_C] mov [eax+4], edx loc_11B69: ; CODE XREF: sub_11ADC+40j ; sub_11ADC+72j pop ecx pop edx pop ebx retn sub_11ADC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_11B70 proc near ; CODE XREF: sub_11CF4+Fp push ebx push ecx mov ecx, esp mov edx, ds:dword_17610 mov [ecx], edx jmp short loc_11B96 ; --------------------------------------------------------------------------- loc_11B7E: ; CODE XREF: sub_11B70+2Dj mov edx, [ecx] mov edx, [edx+8] cmp eax, edx jb short loc_11B90 mov ebx, [ecx] add edx, [ebx+0Ch] cmp eax, edx jb short loc_11BAD loc_11B90: ; CODE XREF: sub_11B70+15j mov edx, [ecx] mov edx, [edx] mov [ecx], edx loc_11B96: ; CODE XREF: sub_11B70+Cj mov edx, offset dword_17610 cmp edx, [ecx] jnz short loc_11B7E mov ds:dword_175B0, 3 xor eax, eax mov [ecx], eax loc_11BAD: ; CODE XREF: sub_11B70+1Ej mov eax, [ecx] pop edx pop ebx retn sub_11B70 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11BB4 proc near ; CODE XREF: sub_11CF4+7Ep ; sub_11EF4+68p var_8 = dword ptr -8 push ebx push ecx mov ecx, edx sub ecx, 4 lea ebx, [ecx+eax] mov [esp+8+var_8], ebx cmp edx, 10h jl short loc_11BD9 mov edx, [esp+8+var_8] mov dword ptr [edx], 80000007h mov edx, ecx call sub_11DB0 pop edx pop ebx retn ; --------------------------------------------------------------------------- loc_11BD9: ; CODE XREF: sub_11BB4+10j cmp edx, 4 jl short loc_11BED mov ecx, edx or ecx, 80000002h mov [eax], ecx mov eax, [esp+8+var_8] mov [eax], ecx loc_11BED: ; CODE XREF: sub_11BB4+28j pop edx pop ebx retn sub_11BB4 endp ; =============== S U B R O U T I N E ======================================= sub_11BF0 proc near ; CODE XREF: sub_11C14+Dp ; sub_11EA8+36p ... inc ds:dword_1759C mov edx, eax sub edx, 4 mov edx, [edx] and edx, 7FFFFFFCh sub edx, 4 add ds:dword_175A0, edx call sub_1230C retn sub_11BF0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11C14 proc near ; CODE XREF: sub_11CF4+A0p cmp edx, 0Ch jl short loc_11C27 or edx, 2 mov [eax], edx add eax, 4 call sub_11BF0 retn ; --------------------------------------------------------------------------- loc_11C27: ; CODE XREF: sub_11C14+3j cmp edx, 4 jl short loc_11C36 mov ecx, edx or ecx, 80000002h mov [eax], ecx loc_11C36: ; CODE XREF: sub_11C14+16j add eax, edx and dword ptr [eax], 0FFFFFFFEh retn sub_11C14 endp ; =============== S U B R O U T I N E ======================================= sub_11C3C proc near ; CODE XREF: sub_11EF4+36p var_C = dword ptr -0Ch push ebx push esi push ecx mov edx, eax sub edx, 4 mov edx, [edx] mov ecx, edx and ecx, 80000002h cmp ecx, 80000002h jz short loc_11C60 mov ds:dword_175B0, 4 loc_11C60: ; CODE XREF: sub_11C3C+18j mov ebx, edx and ebx, 7FFFFFFCh sub eax, ebx mov ecx, eax xor edx, [ecx] test edx, 0FFFFFFFEh jz short loc_11C80 mov ds:dword_175B0, 5 loc_11C80: ; CODE XREF: sub_11C3C+38j test byte ptr [ecx], 1 jz short loc_11CAE mov edx, eax sub edx, 0Ch mov esi, [edx+8] sub eax, esi mov [esp+0Ch+var_C], eax mov eax, [esp+0Ch+var_C] cmp esi, [eax+8] jz short loc_11CA4 mov ds:dword_175B0, 6 loc_11CA4: ; CODE XREF: sub_11C3C+5Cj mov eax, [esp+0Ch+var_C] call sub_11ADC add ebx, esi loc_11CAE: ; CODE XREF: sub_11C3C+47j mov eax, ebx pop edx pop esi pop ebx retn sub_11C3C endp ; =============== S U B R O U T I N E ======================================= sub_11CB4 proc near ; CODE XREF: sub_11EF4+4Fp var_C = dword ptr -0Ch push ebx push esi push ecx mov ebx, eax xor esi, esi mov eax, [ebx] test eax, 80000000h jz short loc_11CCF and eax, 7FFFFFFCh add esi, eax add ebx, eax mov eax, [ebx] loc_11CCF: ; CODE XREF: sub_11CB4+Ej test al, 2 jnz short loc_11CEB mov [esp+0Ch+var_C], ebx mov eax, [esp+0Ch+var_C] call sub_11ADC mov eax, [esp+0Ch+var_C] mov eax, [eax+8] add esi, eax add ebx, eax and dword ptr [ebx], 0FFFFFFFEh loc_11CEB: ; CODE XREF: sub_11CB4+1Dj mov eax, esi pop edx pop esi pop ebx retn sub_11CB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11CF4 proc near ; CODE XREF: sub_11DB0+A7p 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 esi, edx mov ebp, eax xor ebx, ebx mov eax, ebp call sub_11B70 mov [esp+1Ch+var_14], eax cmp [esp+1Ch+var_14], 0 jz loc_11DA6 mov eax, [esp+1Ch+var_14] mov edi, [eax+8] mov eax, edi mov edx, [esp+1Ch+var_14] add eax, [edx+0Ch] mov edx, eax lea ecx, [esi+ebp] sub edx, ecx cmp edx, 0Ch jg short loc_11D37 mov esi, eax sub esi, ebp loc_11D37: ; CODE XREF: sub_11CF4+3Dj mov eax, ebp sub eax, edi cmp eax, 0Ch jge short loc_11D56 mov eax, [esp+1Ch+var_14] mov edx, ebp sub edx, [eax+8] add edx, esi mov ecx, esp mov eax, edi call sub_11870 jmp short loc_11D65 ; --------------------------------------------------------------------------- loc_11D56: ; CODE XREF: sub_11CF4+4Aj mov ecx, esp mov edx, esi sub edx, 4 lea eax, [ebp+4] call sub_11870 loc_11D65: ; CODE XREF: sub_11CF4+60j mov edi, [esp+1Ch+var_1C] test edi, edi jz short loc_11DA6 mov edx, edi sub edx, ebp mov eax, ebp call sub_11BB4 mov edx, [esp+1Ch+var_14] mov edx, [edx+8] mov ecx, [esp+1Ch+var_14] add edx, [ecx+0Ch] mov eax, edi add eax, [esp+1Ch+var_18] cmp edx, eax jbe short loc_11D99 lea edx, [esi+ebp] sub edx, eax call sub_11C14 loc_11D99: ; CODE XREF: sub_11CF4+99j mov edx, esp mov eax, [esp+1Ch+var_14] call sub_112A0 mov bl, 1 loc_11DA6: ; CODE XREF: sub_11CF4+1Dj ; sub_11CF4+76j mov eax, ebx add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_11CF4 endp ; =============== S U B R O U T I N E ======================================= sub_11DB0 proc near ; CODE XREF: sub_11BB4+1Dp ; sub_12018+EEp ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch push ebx push esi add esp, 0FFFFFFF4h mov ebx, edx mov esi, eax mov [esp+14h+var_14], esi mov eax, [esp+14h+var_14] mov [eax+8], ebx mov eax, [esp+14h+var_14] add eax, ebx sub eax, 0Ch mov [eax+8], ebx cmp ebx, 1000h jg short loc_11E4B mov eax, ebx test eax, eax jns short loc_11DDE add eax, 3 loc_11DDE: ; CODE XREF: sub_11DB0+29j sar eax, 2 mov edx, ds:hMem mov edx, [edx+eax*4-0Ch] mov [esp+14h+var_10], edx cmp [esp+14h+var_10], 0 jnz short loc_11E19 mov edx, ds:hMem mov ecx, [esp+14h+var_14] mov [edx+eax*4-0Ch], ecx mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_14] mov [eax+4], edx mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_14] mov [eax], edx jmp loc_11EA1 ; --------------------------------------------------------------------------- loc_11E19: ; CODE XREF: sub_11DB0+44j mov eax, [esp+14h+var_10] mov eax, [eax] mov [esp+14h+var_C], eax mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_10] mov [eax+4], edx mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_C] mov [eax], edx mov eax, [esp+14h+var_10] mov edx, [esp+14h+var_14] mov [eax], edx mov eax, [esp+14h+var_C] mov edx, [esp+14h+var_14] mov [eax+4], edx jmp short loc_11EA1 ; --------------------------------------------------------------------------- loc_11E4B: ; CODE XREF: sub_11DB0+23j cmp ebx, 3C00h jl short loc_11E60 mov edx, ebx mov eax, esi call sub_11CF4 test al, al jnz short loc_11EA1 loc_11E60: ; CODE XREF: sub_11DB0+A1j mov eax, ds:dword_17600 mov [esp+14h+var_10], eax mov eax, [esp+14h+var_14] mov ds:dword_17600, eax mov eax, [esp+14h+var_10] mov eax, [eax] mov [esp+14h+var_C], eax mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_10] mov [eax+4], edx mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_C] mov [eax], edx mov eax, [esp+14h+var_10] mov edx, [esp+14h+var_14] mov [eax], edx mov eax, [esp+14h+var_C] mov edx, [esp+14h+var_14] mov [eax+4], edx loc_11EA1: ; CODE XREF: sub_11DB0+64j ; sub_11DB0+99j ... add esp, 0Ch pop esi pop ebx retn sub_11DB0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11EA8 proc near ; CODE XREF: sub_11EF4+Fp ; sub_1230C+11Dp ... cmp ds:dword_17604, 0 jle short locret_11EF1 cmp ds:dword_17604, 0Ch jge short loc_11EC6 mov ds:dword_175B0, 7 jmp short locret_11EF1 ; --------------------------------------------------------------------------- loc_11EC6: ; CODE XREF: sub_11EA8+10j mov eax, ds:dword_17604 or eax, 2 mov edx, ds:dword_17608 mov [edx], eax mov eax, ds:dword_17608 add eax, 4 call sub_11BF0 xor eax, eax mov ds:dword_17608, eax xor eax, eax mov ds:dword_17604, eax locret_11EF1: ; CODE XREF: sub_11EA8+7j ; sub_11EA8+1Cj retn sub_11EA8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11EF4 proc near ; CODE XREF: sub_11F80+18p ; sub_11FAC+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_11EA8 lea ecx, [esp+1Ch+var_14] mov edx, edi mov eax, offset dword_17610 call sub_11218 mov ebx, [esp+1Ch+var_14] test ebx, ebx jnz short loc_11F24 xor eax, eax jmp short loc_11F76 ; --------------------------------------------------------------------------- loc_11F24: ; CODE XREF: sub_11EF4+2Aj mov eax, [edi] cmp ebx, eax jnb short loc_11F34 call sub_11C3C sub [edi], eax add [edi+4], eax loc_11F34: ; CODE XREF: sub_11EF4+34j mov eax, [edi] add eax, [edi+4] mov esi, ebx add esi, [esp+1Ch+var_10] cmp eax, esi jnb short loc_11F4B call sub_11CB4 add [edi+4], eax loc_11F4B: ; CODE XREF: sub_11EF4+4Dj mov eax, [edi] add eax, [edi+4] cmp esi, eax jnz short loc_11F65 sub eax, 4 mov edx, 4 call sub_11BB4 sub dword ptr [edi+4], 4 loc_11F65: ; CODE XREF: sub_11EF4+5Ej mov eax, [edi] mov ds:dword_17608, eax mov eax, [edi+4] mov ds:dword_17604, eax mov al, 1 loc_11F76: ; CODE XREF: sub_11EF4+2Ej add esp, 10h pop edi pop esi pop ebx retn sub_11EF4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_11F80 proc near ; CODE XREF: sub_12018+76p var_C = dword ptr -0Ch push ebx add esp, 0FFFFFFF8h mov ebx, eax mov edx, esp lea eax, [ebx+4] call sub_11684 cmp [esp+0Ch+var_C], 0 jz short loc_11FA1 mov eax, esp call sub_11EF4 test al, al jnz short loc_11FA5 loc_11FA1: ; CODE XREF: sub_11F80+14j xor eax, eax jmp short loc_11FA7 ; --------------------------------------------------------------------------- loc_11FA5: ; CODE XREF: sub_11F80+1Fj mov al, 1 loc_11FA7: ; CODE XREF: sub_11F80+23j pop ecx pop edx pop ebx retn sub_11F80 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_11FAC proc near ; CODE XREF: sub_124E4+1C3p 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_1172C cmp [esp+10h+var_10], 0 jz short loc_11FD2 mov eax, esp call sub_11EF4 test al, al jnz short loc_11FD6 loc_11FD2: ; CODE XREF: sub_11FAC+19j xor eax, eax jmp short loc_11FD8 ; --------------------------------------------------------------------------- loc_11FD6: ; CODE XREF: sub_11FAC+24j mov al, 1 loc_11FD8: ; CODE XREF: sub_11FAC+28j pop ecx pop edx pop esi pop ebx retn sub_11FAC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_11FE0 proc near ; CODE XREF: sub_12018+68p push ecx mov edx, esp xor ecx, ecx mov [edx], ecx test eax, eax jns short loc_11FEE add eax, 3 loc_11FEE: ; CODE XREF: sub_11FE0+9j sar eax, 2 cmp eax, 400h jg short loc_12011 loc_11FF8: ; CODE XREF: sub_11FE0+2Fj mov ecx, ds:hMem mov ecx, [ecx+eax*4-0Ch] mov [edx], ecx cmp dword ptr [edx], 0 jnz short loc_12011 inc eax cmp eax, 401h jnz short loc_11FF8 loc_12011: ; CODE XREF: sub_11FE0+16j ; sub_11FE0+27j mov eax, [edx] pop edx retn sub_11FE0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12018 proc near ; CODE XREF: sub_12160+173p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov ebx, eax lea esi, [esp+1Ch+var_14] mov edi, offset dword_17600 mov ebp, offset dword_17604 loc_1202F: ; CODE XREF: sub_12018+8Cj mov eax, ds:dword_175F8 mov [esi], eax mov eax, [esi] cmp ebx, [eax+8] jle loc_120EC mov eax, [edi] mov [esi], eax mov eax, [esi] mov eax, [eax+8] cmp ebx, eax jle loc_120EC mov edx, [esi] mov [edx+8], ebx loc_12057: ; CODE XREF: sub_12018+4Bj mov edx, [esi] mov edx, [edx+4] mov [esi], edx mov edx, [esi] cmp ebx, [edx+8] jg short loc_12057 mov edx, [edi] mov [edx+8], eax mov eax, [esi] cmp eax, [edi] jz short loc_12076 mov eax, [esi] mov [edi], eax jmp short loc_120EC ; --------------------------------------------------------------------------- loc_12076: ; CODE XREF: sub_12018+56j cmp ebx, 1000h jg short loc_1208C mov eax, ebx call sub_11FE0 mov [esi], eax cmp dword ptr [esi], 0 jnz short loc_120EC loc_1208C: ; CODE XREF: sub_12018+64j mov eax, ebx call sub_11F80 test al, al jnz short loc_120A1 xor eax, eax mov [esp+1Ch+var_1C], eax jmp loc_12155 ; --------------------------------------------------------------------------- loc_120A1: ; CODE XREF: sub_12018+7Dj cmp ebx, [ebp+0] jg short loc_1202F sub [ebp+0], ebx cmp dword ptr [ebp+0], 0Ch jge short loc_120B7 add ebx, [ebp+0] xor eax, eax mov [ebp+0], eax loc_120B7: ; CODE XREF: sub_12018+95j mov eax, ds:dword_17608 mov [esp+1Ch+var_18], eax add ds:dword_17608, ebx mov eax, ebx or eax, 2 mov edx, [esp+1Ch+var_18] mov [edx], eax mov eax, [esp+1Ch+var_18] add eax, 4 mov [esp+1Ch+var_1C], eax inc ds:dword_1759C sub ebx, 4 add ds:dword_175A0, ebx jmp short loc_12155 ; --------------------------------------------------------------------------- loc_120EC: ; CODE XREF: sub_12018+23j ; sub_12018+34j ... mov eax, [esi] call sub_11ADC mov eax, [esi] mov edx, [eax+8] mov eax, edx sub eax, ebx cmp eax, 0Ch jl short loc_1210D mov edx, [esi] add edx, ebx xchg eax, edx call sub_11DB0 jmp short loc_1212B ; --------------------------------------------------------------------------- loc_1210D: ; CODE XREF: sub_12018+E7j mov ebx, edx mov eax, [esi] cmp eax, [edi] jnz short loc_1211C mov eax, [esi] mov eax, [eax+4] mov [edi], eax loc_1211C: ; CODE XREF: sub_12018+FBj mov eax, [esi] add eax, ebx mov [esp+1Ch+var_18], eax mov eax, [esp+1Ch+var_18] and dword ptr [eax], 0FFFFFFFEh loc_1212B: ; CODE XREF: sub_12018+F3j mov eax, [esi] mov [esp+1Ch+var_18], eax mov eax, ebx or eax, 2 mov edx, [esp+1Ch+var_18] mov [edx], eax mov eax, [esp+1Ch+var_18] add eax, 4 mov [esp+1Ch+var_1C], eax inc ds:dword_1759C sub ebx, 4 add ds:dword_175A0, ebx loc_12155: ; CODE XREF: sub_12018+84j ; sub_12018+D2j mov eax, [esp+1Ch+var_1C] add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_12018 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_12160 proc near ; CODE XREF: sub_126E8+5Dp ; sub_127B4+Ap ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFECh push ebx mov ebx, eax cmp ds:byte_175AC, 0 jnz short loc_1217B call sub_11904 test al, al jz short loc_12183 loc_1217B: ; CODE XREF: sub_12160+10j cmp ebx, 7FFFFFF8h jle short loc_1218D loc_12183: ; CODE XREF: sub_12160+19j xor eax, eax mov [ebp+var_4], eax jmp loc_12303 ; --------------------------------------------------------------------------- loc_1218D: ; CODE XREF: sub_12160+21j xor edx, edx push ebp push offset loc_122FC push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_17035, 0 jz short loc_121AE push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_121AE: ; CODE XREF: sub_12160+42j add ebx, 7 and ebx, 0FFFFFFFCh cmp ebx, 0Ch jge short loc_121BE mov ebx, 0Ch loc_121BE: ; CODE XREF: sub_12160+57j cmp ebx, 1000h jg loc_12276 mov eax, ebx test eax, eax jns short loc_121D3 add eax, 3 loc_121D3: ; CODE XREF: sub_12160+6Ej sar eax, 2 mov edx, ds:hMem mov edx, [edx+eax*4-0Ch] mov [ebp+var_8], edx cmp [ebp+var_8], 0 jz loc_12276 mov edx, [ebp+var_8] add edx, ebx mov [ebp+var_14], edx mov edx, [ebp+var_14] and dword ptr [edx], 0FFFFFFFEh mov edx, [ebp+var_8] mov edx, [edx+4] mov [ebp+var_10], edx mov edx, [ebp+var_10] cmp edx, [ebp+var_8] jnz short loc_1221A mov edx, ds:hMem xor ecx, ecx mov [edx+eax*4-0Ch], ecx jmp short loc_12240 ; --------------------------------------------------------------------------- loc_1221A: ; CODE XREF: sub_12160+AAj mov edx, ds:hMem mov ecx, [ebp+var_10] mov [edx+eax*4-0Ch], ecx mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_C], eax mov eax, [ebp+var_C] mov edx, [ebp+var_10] mov [eax+4], edx mov eax, [ebp+var_10] mov edx, [ebp+var_C] mov [eax], edx loc_12240: ; CODE XREF: sub_12160+B8j mov eax, [ebp+var_8] mov [ebp+var_14], eax mov eax, [ebp+var_8] mov eax, [eax+8] or eax, 2 mov edx, [ebp+var_14] mov [edx], eax mov eax, [ebp+var_14] add eax, 4 mov [ebp+var_4], eax inc ds:dword_1759C sub ebx, 4 add ds:dword_175A0, ebx call sub_13008 jmp loc_12303 ; --------------------------------------------------------------------------- loc_12276: ; CODE XREF: sub_12160+64j ; sub_12160+87j cmp ebx, ds:dword_17604 jg short loc_122D1 sub ds:dword_17604, ebx cmp ds:dword_17604, 0Ch jge short loc_1229A add ebx, ds:dword_17604 xor eax, eax mov ds:dword_17604, eax loc_1229A: ; CODE XREF: sub_12160+12Bj mov eax, ds:dword_17608 mov [ebp+var_14], eax add ds:dword_17608, ebx mov eax, ebx or eax, 2 mov edx, [ebp+var_14] mov [edx], eax mov eax, [ebp+var_14] add eax, 4 mov [ebp+var_4], eax inc ds:dword_1759C sub ebx, 4 add ds:dword_175A0, ebx call sub_13008 jmp short loc_12303 ; --------------------------------------------------------------------------- loc_122D1: ; CODE XREF: sub_12160+11Cj mov eax, ebx call sub_12018 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_12303 loc_122E8: ; CODE XREF: sub_12160+1A1j cmp ds:byte_17035, 0 jz short loc_122FB push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_122FB: ; CODE XREF: sub_12160+18Fj retn ; --------------------------------------------------------------------------- loc_122FC: ; DATA XREF: sub_12160+30o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_122E8 ; --------------------------------------------------------------------------- loc_12303: ; CODE XREF: sub_12160+28j ; sub_12160+111j ... mov eax, [ebp+var_4] pop ebx mov esp, ebp pop ebp retn sub_12160 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1230C proc near ; CODE XREF: sub_11BF0+1Cp ; sub_126E8+8Dp ... 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 push ebx mov ebx, eax xor eax, eax mov ds:dword_175B0, eax cmp ds:byte_175AC, 0 jnz short loc_12344 call sub_11904 test al, al jnz short loc_12344 mov ds:dword_175B0, 8 mov [ebp+var_4], 8 jmp loc_124DA ; --------------------------------------------------------------------------- loc_12344: ; CODE XREF: sub_1230C+17j ; sub_1230C+20j xor edx, edx push ebp push offset loc_124D3 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_17035, 0 jz short loc_12365 push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_12365: ; CODE XREF: sub_1230C+4Dj mov [ebp+var_8], ebx mov eax, [ebp+var_8] sub eax, 4 mov [ebp+var_8], eax mov eax, [ebp+var_8] mov ebx, [eax] test bl, 2 jnz short loc_1238A mov ds:dword_175B0, 9 jmp loc_124AA ; --------------------------------------------------------------------------- loc_1238A: ; CODE XREF: sub_1230C+6Dj dec ds:dword_1759C mov eax, ebx and eax, 7FFFFFFCh sub eax, 4 sub ds:dword_175A0, eax test bl, 1 jz short loc_123F8 mov eax, [ebp+var_8] sub eax, 0Ch mov eax, [eax+8] cmp eax, 0Ch jl short loc_123BA test eax, 80000003h jz short loc_123C9 loc_123BA: ; CODE XREF: sub_1230C+A5j mov ds:dword_175B0, 0Ah jmp loc_124AA ; --------------------------------------------------------------------------- loc_123C9: ; CODE XREF: sub_1230C+ACj mov edx, [ebp+var_8] sub edx, eax mov [ebp+var_10], edx mov edx, [ebp+var_10] cmp eax, [edx+8] jz short loc_123E8 mov ds:dword_175B0, 0Ah jmp loc_124AA ; --------------------------------------------------------------------------- loc_123E8: ; CODE XREF: sub_1230C+CBj add ebx, eax mov eax, [ebp+var_10] mov [ebp+var_8], eax mov eax, [ebp+var_10] call sub_11ADC loc_123F8: ; CODE XREF: sub_1230C+97j and ebx, 7FFFFFFCh mov eax, [ebp+var_8] add eax, ebx mov [ebp+var_C], eax mov eax, [ebp+var_C] cmp eax, ds:dword_17608 jnz short loc_1243D sub ds:dword_17608, ebx add ds:dword_17604, ebx cmp ds:dword_17604, 3C00h jle short loc_1242E call sub_11EA8 loc_1242E: ; CODE XREF: sub_1230C+11Bj xor eax, eax mov [ebp+var_4], eax call sub_13008 jmp loc_124DA ; --------------------------------------------------------------------------- loc_1243D: ; CODE XREF: sub_1230C+103j mov eax, [ebp+var_C] mov eax, [eax] test al, 2 jz short loc_12464 and eax, 7FFFFFFCh cmp eax, 4 jge short loc_1245C mov ds:dword_175B0, 0Bh jmp short loc_124AA ; --------------------------------------------------------------------------- loc_1245C: ; CODE XREF: sub_1230C+142j mov eax, [ebp+var_C] or dword ptr [eax], 1 jmp short loc_124A0 ; --------------------------------------------------------------------------- loc_12464: ; CODE XREF: sub_1230C+138j mov eax, [ebp+var_C] mov [ebp+var_10], eax mov eax, [ebp+var_10] cmp dword ptr [eax+4], 0 jz short loc_12484 mov eax, [ebp+var_10] cmp dword ptr [eax], 0 jz short loc_12484 mov eax, [ebp+var_10] cmp dword ptr [eax+8], 0Ch jge short loc_12490 loc_12484: ; CODE XREF: sub_1230C+165j ; sub_1230C+16Dj mov ds:dword_175B0, 0Bh jmp short loc_124AA ; --------------------------------------------------------------------------- loc_12490: ; CODE XREF: sub_1230C+176j mov eax, [ebp+var_10] mov eax, [eax+8] add ebx, eax mov eax, [ebp+var_10] call sub_11ADC loc_124A0: ; CODE XREF: sub_1230C+156j mov edx, ebx mov eax, [ebp+var_8] call sub_11DB0 loc_124AA: ; CODE XREF: sub_1230C+79j ; sub_1230C+B8j ... mov eax, ds:dword_175B0 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_124DA loc_124BF: ; CODE XREF: sub_1230C+1CCj cmp ds:byte_17035, 0 jz short loc_124D2 push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_124D2: ; CODE XREF: sub_1230C+1BAj retn ; --------------------------------------------------------------------------- loc_124D3: ; DATA XREF: sub_1230C+3Bo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_124BF ; --------------------------------------------------------------------------- loc_124DA: ; CODE XREF: sub_1230C+33j ; sub_1230C+12Cj ... mov eax, [ebp+var_4] pop ebx mov esp, ebp pop ebp retn sub_1230C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_124E4 proc near ; CODE XREF: sub_126E8+4Dp 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 ebx, edx add ebx, 7 and ebx, 0FFFFFFFCh cmp ebx, 0Ch jge short loc_124FD mov ebx, 0Ch loc_124FD: ; CODE XREF: sub_124E4+12j sub eax, 4 mov [esp+1Ch+var_1C], eax mov eax, [esp+1Ch+var_1C] mov esi, [eax] and esi, 7FFFFFFCh mov eax, [esp+1Ch+var_1C] add eax, esi mov [esp+1Ch+var_18], eax cmp esi, ebx jnz short loc_12522 mov al, 1 jmp loc_126DF ; --------------------------------------------------------------------------- loc_12522: ; CODE XREF: sub_124E4+35j cmp esi, ebx jle loc_125BA mov ebp, esi sub ebp, ebx mov edx, [esp+1Ch+var_18] cmp edx, ds:dword_17608 jnz short loc_12566 sub ds:dword_17608, ebp add ds:dword_17604, ebp cmp ds:dword_17604, 0Ch jge loc_126C2 add ds:dword_17608, ebp sub ds:dword_17604, ebp mov ebx, esi jmp loc_126C2 ; --------------------------------------------------------------------------- loc_12566: ; CODE XREF: sub_124E4+54j mov [esp+1Ch+var_18], eax mov eax, [esp+1Ch+var_18] test byte ptr [eax], 2 jnz short loc_1258B mov eax, [esp+1Ch+var_18] mov [esp+1Ch+var_14], eax mov eax, [esp+1Ch+var_14] add ebp, [eax+8] mov eax, [esp+1Ch+var_14] call sub_11ADC loc_1258B: ; CODE XREF: sub_124E4+8Dj cmp ebp, 0Ch jl short loc_125B3 mov eax, [esp+1Ch+var_1C] add eax, ebx mov [esp+1Ch+var_18], eax or ebp, 2 mov eax, [esp+1Ch+var_18] mov [eax], ebp mov eax, [esp+1Ch+var_18] add eax, 4 call sub_11BF0 jmp loc_126C2 ; --------------------------------------------------------------------------- loc_125B3: ; CODE XREF: sub_124E4+AAj mov ebx, esi jmp loc_126C2 ; --------------------------------------------------------------------------- loc_125BA: ; CODE XREF: sub_124E4+40j ; sub_124E4+1D5j mov edi, ebx sub edi, esi mov eax, [esp+1Ch+var_18] cmp eax, ds:dword_17608 jnz short loc_1262F cmp edi, ds:dword_17604 jg short loc_12621 sub ds:dword_17604, edi add ds:dword_17608, edi cmp ds:dword_17604, 0Ch jge short loc_125FF mov eax, ds:dword_17604 add ds:dword_17608, eax add ebx, ds:dword_17604 xor eax, eax mov ds:dword_17604, eax loc_125FF: ; CODE XREF: sub_124E4+101j mov eax, ebx sub eax, esi add ds:dword_175A0, eax mov eax, [esp+1Ch+var_1C] mov eax, [eax] and eax, 80000003h or ebx, eax mov eax, [esp+1Ch+var_1C] mov [eax], ebx mov al, 1 jmp loc_126DF ; --------------------------------------------------------------------------- loc_12621: ; CODE XREF: sub_124E4+ECj call sub_11EA8 mov eax, [esp+1Ch+var_1C] add eax, esi mov [esp+1Ch+var_18], eax loc_1262F: ; CODE XREF: sub_124E4+E4j mov eax, [esp+1Ch+var_18] test byte ptr [eax], 2 jnz short loc_12687 mov eax, [esp+1Ch+var_18] mov [esp+1Ch+var_14], eax mov edx, [esp+1Ch+var_14] mov ebp, [edx+8] cmp edi, ebp jle short loc_12655 add eax, ebp mov [esp+1Ch+var_18], eax sub edi, ebp jmp short loc_12687 ; --------------------------------------------------------------------------- loc_12655: ; CODE XREF: sub_124E4+165j mov eax, [esp+1Ch+var_14] call sub_11ADC sub ebp, edi cmp ebp, 0Ch jl short loc_12673 mov eax, [esp+1Ch+var_1C] add eax, ebx mov edx, ebp call sub_11DB0 jmp short loc_126C2 ; --------------------------------------------------------------------------- loc_12673: ; CODE XREF: sub_124E4+17Fj add ebx, ebp mov eax, [esp+1Ch+var_1C] add eax, ebx mov [esp+1Ch+var_18], eax mov eax, [esp+1Ch+var_18] and dword ptr [eax], 0FFFFFFFEh jmp short loc_126C2 ; --------------------------------------------------------------------------- loc_12687: ; CODE XREF: sub_124E4+152j ; sub_124E4+16Fj mov eax, [esp+1Ch+var_18] mov eax, [eax] test eax, 80000000h jz short loc_126BE and eax, 7FFFFFFCh add eax, [esp+1Ch+var_18] mov [esp+1Ch+var_18], eax mov edx, edi mov eax, [esp+1Ch+var_18] call sub_11FAC test al, al jz short loc_126BE mov eax, [esp+1Ch+var_1C] add eax, esi mov [esp+1Ch+var_18], eax jmp loc_125BA ; --------------------------------------------------------------------------- loc_126BE: ; CODE XREF: sub_124E4+1AEj ; sub_124E4+1CAj xor eax, eax jmp short loc_126DF ; --------------------------------------------------------------------------- loc_126C2: ; CODE XREF: sub_124E4+69j ; sub_124E4+7Dj ... mov eax, ebx sub eax, esi add ds:dword_175A0, eax mov eax, [esp+1Ch+var_1C] mov eax, [eax] and eax, 80000003h or ebx, eax mov eax, [esp+1Ch+var_1C] mov [eax], ebx mov al, 1 loc_126DF: ; CODE XREF: sub_124E4+39j ; sub_124E4+138j ... add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_124E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_126E8 proc near ; CODE XREF: sub_12804+Dp ; DATA XREF: DATA:off_1602Co var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi mov esi, edx mov ebx, eax cmp ds:byte_175AC, 0 jnz short loc_12710 call sub_11904 test al, al jnz short loc_12710 xor eax, eax mov [ebp+var_4], eax jmp loc_127A8 ; --------------------------------------------------------------------------- loc_12710: ; CODE XREF: sub_126E8+13j ; sub_126E8+1Cj xor edx, edx push ebp push offset loc_127A1 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_17035, 0 jz short loc_12731 push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_12731: ; CODE XREF: sub_126E8+3Dj mov edx, esi mov eax, ebx call sub_124E4 test al, al jz short loc_12743 mov [ebp+var_4], ebx jmp short loc_12780 ; --------------------------------------------------------------------------- loc_12743: ; CODE XREF: sub_126E8+54j mov eax, esi call sub_12160 mov [ebp+var_8], eax mov eax, ebx sub eax, 4 mov eax, [eax] and eax, 7FFFFFFCh sub eax, 4 cmp esi, eax jge short loc_12762 mov eax, esi loc_12762: ; CODE XREF: sub_126E8+76j cmp [ebp+var_8], 0 jz short loc_1277A mov edx, [ebp+var_8] mov ecx, ebx xchg eax, ecx call sub_128C8 mov eax, ebx call sub_1230C loc_1277A: ; CODE XREF: sub_126E8+7Ej mov eax, [ebp+var_8] mov [ebp+var_4], eax loc_12780: ; CODE XREF: sub_126E8+59j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_127A8 loc_1278D: ; CODE XREF: sub_126E8+BEj cmp ds:byte_17035, 0 jz short loc_127A0 push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_127A0: ; CODE XREF: sub_126E8+ACj retn ; --------------------------------------------------------------------------- loc_127A1: ; DATA XREF: sub_126E8+2Bo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_1278D ; --------------------------------------------------------------------------- loc_127A8: ; CODE XREF: sub_126E8+23j ; sub_126E8:loc_127A0j ; DATA XREF: ... mov eax, [ebp+var_4] pop esi pop ebx pop ecx pop ecx pop ebp retn sub_126E8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_127B4 proc near ; CODE XREF: sub_13570+Cp var_8 = dword ptr -8 push ebx push ecx mov ebx, eax test ebx, ebx jle short loc_127D6 mov eax, ebx call ds:off_16024 mov [esp+8+var_8], eax cmp [esp+8+var_8], 0 jnz short loc_127DB mov al, 1 call sub_128AC ; --------------------------------------------------------------------------- jmp short loc_127DB ; --------------------------------------------------------------------------- loc_127D6: ; CODE XREF: sub_127B4+6j xor eax, eax mov [esp+8+var_8], eax loc_127DB: ; CODE XREF: sub_127B4+17j ; sub_127B4+20j mov eax, [esp+8+var_8] pop edx pop ebx retn sub_127B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_127E4 proc near ; CODE XREF: sub_134D8+1Cp ; sub_134FC+21p ... push ebx test eax, eax jz short loc_127FE call ds:off_16028 mov ebx, eax test ebx, ebx jz short loc_12800 mov al, 2 call sub_128AC ; --------------------------------------------------------------------------- jmp short loc_12800 ; --------------------------------------------------------------------------- loc_127FE: ; CODE XREF: sub_127E4+3j xor ebx, ebx loc_12800: ; CODE XREF: sub_127E4+Fj ; sub_127E4+18j mov eax, ebx pop ebx retn sub_127E4 endp ; =============== S U B R O U T I N E ======================================= sub_12804 proc near ; CODE XREF: sub_136A8+22p mov ecx, [eax] test ecx, ecx jz short loc_1283C test edx, edx jz short loc_12826 push eax mov eax, ecx call ds:off_1602C pop ecx or eax, eax jz short loc_12835 mov [ecx], eax retn ; --------------------------------------------------------------------------- loc_1281F: ; CODE XREF: sub_12804+2Ej mov al, 2 jmp sub_128AC ; --------------------------------------------------------------------------- loc_12826: ; CODE XREF: sub_12804+8j mov [eax], edx mov eax, ecx call ds:off_16028 or eax, eax jnz short loc_1281F retn ; --------------------------------------------------------------------------- loc_12835: ; CODE XREF: sub_12804+16j ; sub_12804+48j mov al, 1 jmp sub_128AC ; --------------------------------------------------------------------------- loc_1283C: ; CODE XREF: sub_12804+4j test edx, edx jz short locret_12850 push eax mov eax, edx call ds:off_16024 pop ecx or eax, eax jz short loc_12835 mov [ecx], eax locret_12850: ; CODE XREF: sub_12804+3Aj retn sub_12804 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_12854 proc near ; CODE XREF: sub_12860+42p ; CODE:000130B7p mov ds:dword_16004, edx call sub_134C0 sub_12854 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_12860 proc near ; CODE XREF: sub_128AC+6j push ebx push esi mov esi, edx mov ebx, eax and bl, 7Fh cmp ds:dword_17008, 0 jz short loc_1287C mov edx, esi mov eax, ebx call ds:dword_17008 loc_1287C: ; CODE XREF: sub_12860+10j test bl, bl jnz short loc_1288D call sub_13A18 mov ebx, [eax+4] jmp short loc_1289C ; --------------------------------------------------------------------------- loc_1288D: ; CODE XREF: sub_12860+1Ej cmp bl, 18h ja short loc_1289C xor eax, eax mov al, bl mov bl, ds:byte_16030[eax] loc_1289C: ; CODE XREF: sub_12860+2Bj ; sub_12860+30j xor eax, eax mov al, bl mov edx, esi call sub_12854 sub_12860 endp ; --------------------------------------------------------------------------- pop esi pop ebx retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_128AC proc near ; CODE XREF: sub_127B4+1Bp ; sub_127E4+13p ... and eax, 7Fh mov edx, [esp+0] jmp sub_12860 sub_128AC endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_128B8 proc near ; CODE XREF: sub_12AD0+38p ; sub_12AD0+4Cp push ebx mov ebx, eax call sub_13A18 mov [eax+4], ebx pop ebx retn sub_128B8 endp ; =============== S U B R O U T I N E ======================================= sub_128C8 proc near ; CODE XREF: sub_126E8+86p ; sub_1352C+1Bp ... push esi push edi mov esi, eax mov edi, edx mov eax, ecx cmp edi, esi ja short loc_128E7 jz short loc_12905 sar ecx, 2 js short loc_12905 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi retn ; --------------------------------------------------------------------------- loc_128E7: ; CODE XREF: sub_128C8+Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] sar ecx, 2 js short loc_12905 std rep movsd mov ecx, eax and ecx, 3 add esi, 3 add edi, 3 rep movsb cld loc_12905: ; CODE XREF: sub_128C8+Cj ; sub_128C8+11j ... pop edi pop esi retn sub_128C8 endp ; =============== S U B R O U T I N E ======================================= sub_12908 proc near ; CODE XREF: sub_12A6C+44p 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 = byte ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFE8h mov [esp+28h+var_24], edx mov [esp+28h+var_28], eax mov esi, esp lea edi, [esp+28h+var_14] jmp short loc_12928 ; --------------------------------------------------------------------------- loc_1291E: ; CODE XREF: sub_12908+2Bj mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [esi], eax loc_12928: ; CODE XREF: sub_12908+14j ; sub_12908+3Fj mov eax, [esi] mov bl, [eax] test bl, bl jz short loc_12935 cmp bl, 20h jbe short loc_1291E loc_12935: ; CODE XREF: sub_12908+26j mov eax, [esi] cmp byte ptr [eax], 22h jnz short loc_12949 mov eax, [esi] cmp byte ptr [eax+1], 22h jnz short loc_12949 add dword ptr [esi], 2 jmp short loc_12928 ; --------------------------------------------------------------------------- loc_12949: ; CODE XREF: sub_12908+32j ; sub_12908+3Aj xor ebp, ebp mov eax, [esi] mov [esp+28h+var_1C], eax jmp short loc_129AE ; --------------------------------------------------------------------------- loc_12953: ; CODE XREF: sub_12908+ABj mov eax, [esi] cmp byte ptr [eax], 22h jnz short loc_1299A mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [esi], eax jmp short loc_1297A ; --------------------------------------------------------------------------- loc_12966: ; CODE XREF: sub_12908+7Dj mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [edi], eax mov eax, [edi] sub eax, [esi] add ebp, eax mov eax, [edi] mov [esi], eax loc_1297A: ; CODE XREF: sub_12908+5Cj mov eax, [esi] mov bl, [eax] test bl, bl jz short loc_12987 cmp bl, 22h jnz short loc_12966 loc_12987: ; CODE XREF: sub_12908+78j mov eax, [esi] cmp byte ptr [eax], 0 jz short loc_129AE mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [esi], eax jmp short loc_129AE ; --------------------------------------------------------------------------- loc_1299A: ; CODE XREF: sub_12908+50j mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [edi], eax mov eax, [edi] sub eax, [esi] add ebp, eax mov eax, [edi] mov [esi], eax loc_129AE: ; CODE XREF: sub_12908+49j ; sub_12908+84j ... mov eax, [esi] cmp byte ptr [eax], 20h ja short loc_12953 mov eax, [esp+28h+var_24] mov edx, ebp call sub_136A8 mov eax, [esp+28h+var_1C] mov [esi], eax mov eax, [esp+28h+var_24] mov eax, [eax] mov [esp+28h+var_18], eax xor ebp, ebp jmp short loc_12A4F ; --------------------------------------------------------------------------- loc_129D4: ; CODE XREF: sub_12908+14Cj mov eax, [esi] cmp byte ptr [eax], 22h jnz short loc_12A2B mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [esi], eax jmp short loc_12A0B ; --------------------------------------------------------------------------- loc_129E7: ; CODE XREF: sub_12908+10Ej mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [edi], eax mov eax, [esi] cmp eax, [edi] jnb short loc_12A0B loc_129F7: ; CODE XREF: sub_12908+101j mov eax, [esi] mov al, [eax] mov edx, [esp+28h+var_18] mov [edx+ebp], al inc dword ptr [esi] inc ebp mov eax, [esi] cmp eax, [edi] jb short loc_129F7 loc_12A0B: ; CODE XREF: sub_12908+DDj ; sub_12908+EDj mov eax, [esi] mov bl, [eax] test bl, bl jz short loc_12A18 cmp bl, 22h jnz short loc_129E7 loc_12A18: ; CODE XREF: sub_12908+109j mov eax, [esi] cmp byte ptr [eax], 0 jz short loc_12A4F mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [esi], eax jmp short loc_12A4F ; --------------------------------------------------------------------------- loc_12A2B: ; CODE XREF: sub_12908+D1j mov eax, [esi] push eax ; lpsz call CharNextA ; CharNextA mov [edi], eax mov eax, [esi] cmp eax, [edi] jnb short loc_12A4F loc_12A3B: ; CODE XREF: sub_12908+145j mov eax, [esi] mov al, [eax] mov edx, [esp+28h+var_18] mov [edx+ebp], al inc dword ptr [esi] inc ebp mov eax, [esi] cmp eax, [edi] jb short loc_12A3B loc_12A4F: ; CODE XREF: sub_12908+CAj ; sub_12908+115j ... mov eax, [esi] cmp byte ptr [eax], 20h ja loc_129D4 mov eax, [esi] mov [esp+28h+var_20], eax mov eax, [esp+28h+var_20] add esp, 18h pop ebp pop edi pop esi pop ebx retn sub_12908 endp ; =============== S U B R O U T I N E ======================================= sub_12A6C proc near ; CODE XREF: sub_14F44+C1p var_114 = dword ptr -114h Filename = byte ptr -110h push ebx push esi add esp, 0FFFFFEF4h mov ebx, edx mov esi, eax mov eax, ebx call sub_134D8 test esi, esi jnz short loc_12AA3 push 105h ; nSize lea eax, [esp+118h+Filename] push eax ; lpFilename push 0 ; hModule call GetModuleFileNameA ; GetModuleFileNameA mov ecx, eax lea edx, [esp+114h+Filename] mov eax, ebx call sub_1359C jmp short loc_12AC4 ; --------------------------------------------------------------------------- loc_12AA3: ; CODE XREF: sub_12A6C+15j call GetCommandLineA ; GetCommandLineA mov [esp+114h+var_114], eax loc_12AAB: ; CODE XREF: sub_12A6C+56j mov edx, ebx mov eax, [esp+114h+var_114] call sub_12908 mov [esp+114h+var_114], eax test esi, esi jz short loc_12AC4 cmp dword ptr [ebx], 0 jz short loc_12AC4 dec esi jmp short loc_12AAB ; --------------------------------------------------------------------------- loc_12AC4: ; CODE XREF: sub_12A6C+35j ; sub_12A6C+4Ej ... add esp, 10Ch pop esi pop ebx retn sub_12A6C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_12AD0 proc near ; CODE XREF: sub_13878+1Ep ; sub_13878+28p ... push ebx push esi mov ebx, eax xor esi, esi mov ax, [ebx+4] cmp ax, 0D7B1h jb short loc_12B0F cmp ax, 0D7B3h ja short loc_12B0F and ax, 0D7B2h cmp ax, 0D7B2h jnz short loc_12AF7 mov eax, ebx call dword ptr [ebx+1Ch] mov esi, eax loc_12AF7: ; CODE XREF: sub_12AD0+1Ej test esi, esi jnz short loc_12B02 mov eax, ebx call dword ptr [ebx+24h] mov esi, eax loc_12B02: ; CODE XREF: sub_12AD0+29j test esi, esi jz short loc_12B21 mov eax, esi call sub_128B8 jmp short loc_12B21 ; --------------------------------------------------------------------------- loc_12B0F: ; CODE XREF: sub_12AD0+Ej ; sub_12AD0+14j cmp ebx, offset dword_17038 jz short loc_12B21 mov eax, 67h call sub_128B8 loc_12B21: ; CODE XREF: sub_12AD0+34j ; sub_12AD0+3Dj ... mov eax, esi pop esi pop ebx retn sub_12AD0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12B28 proc near ; CODE XREF: sub_13C48+11p ; sub_14990+97p ... 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_12B45 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_12B45: ; CODE XREF: sub_12B28+12j pop edi retn sub_12B28 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12B48 proc near ; CODE XREF: sub_13804+41p push ebx push esi push edi mov esi, eax push eax test eax, eax jz short loc_12BBE xor eax, eax xor ebx, ebx mov edi, 0CCCCCCCh loc_12B5B: ; CODE XREF: sub_12B48+19j mov bl, [esi] inc esi cmp bl, 20h jz short loc_12B5B mov ch, 0 cmp bl, 2Dh jz short loc_12BCC cmp bl, 2Bh jz short loc_12BCE loc_12B6F: ; CODE XREF: sub_12B48+89j cmp bl, 24h jz short loc_12BD3 cmp bl, 78h jz short loc_12BD3 cmp bl, 58h jz short loc_12BD3 cmp bl, 30h jnz short loc_12B96 mov bl, [esi] inc esi cmp bl, 78h jz short loc_12BD3 cmp bl, 58h jz short loc_12BD3 test bl, bl jz short loc_12BB4 jmp short loc_12B9A ; --------------------------------------------------------------------------- loc_12B96: ; CODE XREF: sub_12B48+39j test bl, bl jz short loc_12BC7 loc_12B9A: ; CODE XREF: sub_12B48+4Cj ; sub_12B48+6Aj sub bl, 30h cmp bl, 9 ja short loc_12BC7 cmp eax, edi ja short loc_12BC7 lea eax, [eax+eax*4] add eax, eax add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_12B9A loc_12BB4: ; CODE XREF: sub_12B48+4Aj dec ch jz short loc_12BC1 test eax, eax jge short loc_12C10 jmp short loc_12BC7 ; --------------------------------------------------------------------------- loc_12BBE: ; CODE XREF: sub_12B48+8j ; sub_12B48+95j inc esi jmp short loc_12BC7 ; --------------------------------------------------------------------------- loc_12BC1: ; CODE XREF: sub_12B48+6Ej neg eax jle short loc_12C10 js short loc_12C10 loc_12BC7: ; CODE XREF: sub_12B48+50j ; sub_12B48+58j ... pop ebx sub esi, ebx jmp short loc_12C13 ; --------------------------------------------------------------------------- loc_12BCC: ; CODE XREF: sub_12B48+20j inc ch loc_12BCE: ; CODE XREF: sub_12B48+25j mov bl, [esi] inc esi jmp short loc_12B6F ; --------------------------------------------------------------------------- loc_12BD3: ; CODE XREF: sub_12B48+2Aj ; sub_12B48+2Fj ... mov edi, 0FFFFFFFh mov bl, [esi] inc esi test bl, bl jz short loc_12BBE loc_12BDF: ; CODE XREF: sub_12B48+C0j cmp bl, 61h jb short loc_12BE7 sub bl, 20h loc_12BE7: ; CODE XREF: sub_12B48+9Aj sub bl, 30h cmp bl, 9 jbe short loc_12BFA sub bl, 11h cmp bl, 5 ja short loc_12BC7 add bl, 0Ah loc_12BFA: ; CODE XREF: sub_12B48+A5j cmp eax, edi ja short loc_12BC7 shl eax, 4 add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_12BDF dec ch jnz short loc_12C10 neg eax loc_12C10: ; CODE XREF: sub_12B48+72j ; sub_12B48+7Bj ... pop ecx xor esi, esi loc_12C13: ; CODE XREF: sub_12B48+82j mov [edx], esi pop edi pop esi pop ebx retn sub_12B48 endp ; --------------------------------------------------------------------------- align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetKeyboardType. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_12C24 proc near ; CODE XREF: sub_138CC+39p push ebx xor ebx, ebx push 0 ; nTypeFlag call GetKeyboardType ; GetKeyboardType cmp eax, 7 jnz short loc_12C4F push 1 ; nTypeFlag call GetKeyboardType ; GetKeyboardType and eax, 0FF00h cmp eax, 0D00h jz short loc_12C4D cmp eax, 400h jnz short loc_12C4F loc_12C4D: ; CODE XREF: sub_12C24+20j mov bl, 1 loc_12C4F: ; CODE XREF: sub_12C24+Dj ; sub_12C24+27j mov eax, ebx pop ebx retn sub_12C24 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_12C54 proc near ; CODE XREF: sub_138CC+42p cbData = dword ptr -0Ch Data = byte ptr -8 hKey = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h movzx eax, ds:word_1600C mov dword ptr [ebp+Data], eax lea eax, [ebp+hKey] push eax ; phkResult push 1 ; samDesired push 0 ; ulOptions push offset SubKey ; "SOFTWARE\\Borland\\Delphi\\RTL" push 80000002h ; hKey call RegOpenKeyExA ; RegOpenKeyExA test eax, eax jnz short loc_12CCC xor eax, eax push ebp push offset loc_12CC5 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+cbData], 4 lea eax, [ebp+cbData] push eax ; lpcbData lea eax, [ebp+Data] push eax ; lpData push 0 ; lpType push 0 ; lpReserved push offset ValueName ; "FPUMaskValue" mov eax, [ebp+hKey] push eax ; hKey call RegQueryValueExA ; RegQueryValueExA xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_12CCC loc_12CBB: ; CODE XREF: sub_12C54+76j mov eax, [ebp+hKey] push eax ; hKey call RegCloseKey ; RegCloseKey retn ; --------------------------------------------------------------------------- loc_12CC5: ; DATA XREF: sub_12C54+2Eo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_12CBB ; --------------------------------------------------------------------------- loc_12CCC: ; CODE XREF: sub_12C54+29j ; sub_12C54+70j ; DATA XREF: ... mov ax, ds:word_1600C and ax, 0FFC0h mov dx, word ptr [ebp+Data] and dx, 3Fh or ax, dx mov ds:word_1600C, ax mov esp, ebp pop ebp retn sub_12C54 endp ; --------------------------------------------------------------------------- align 4 ; char SubKey[] SubKey db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_12C54+18o ; char ValueName[] ValueName db 'FPUMaskValue',0 ; DATA XREF: sub_12C54+4Co align 4 ; =============== S U B R O U T I N E ======================================= sub_12D18 proc near ; CODE XREF: sub_131A8-368p ; CODE:000130EEp ... fninit wait fldcw ds:word_1600C retn sub_12D18 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12D24 proc near ; CODE XREF: CODE:00012F3Fj ; sub_12F84+30p ... test eax, eax jz short locret_12D2F mov dl, 1 mov ecx, [eax] call dword ptr [ecx-4] locret_12D2F: ; CODE XREF: sub_12D24+2j retn sub_12D24 endp ; =============== S U B R O U T I N E ======================================= sub_12D30 proc near ; CODE XREF: sub_12F84+35p cmp ds:byte_16010, 1 jbe short locret_12D4A push 0 push 0 push 0 push 0EEDFADFh call ds:dword_17010 locret_12D4A: ; CODE XREF: sub_12D30+7j retn sub_12D30 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12D4C proc near ; CODE XREF: sub_131A8-33Bp cmp ds:byte_16010, 0 jz short locret_12D6C push eax push eax push edx push esp push 2 push 0 push 0EEDFAE4h call ds:dword_17010 add esp, 8 pop eax locret_12D6C: ; CODE XREF: sub_12D4C+7j retn sub_12D4C endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_12D88 loc_12D70: ; CODE XREF: sub_12D88+Bj push esp push 1 push 0 push 0EEDFAE0h call ds:dword_17010 add esp, 4 pop eax retn ; END OF FUNCTION CHUNK FOR sub_12D88 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12D88 proc near ; CODE XREF: sub_131A8-28Bp ; FUNCTION CHUNK AT 00012D70 SIZE 00000015 BYTES cmp ds:byte_16010, 1 jbe short locret_12D98 push eax push ebx jmp loc_12D70 ; --------------------------------------------------------------------------- locret_12D98: ; CODE XREF: sub_12D88+7j retn sub_12D88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12D9C proc near ; CODE XREF: sub_12DBC+Cp test ecx, ecx jz short locret_12DB9 mov eax, [ecx+1] cmp byte ptr [ecx], 0E9h jz short loc_12DB4 cmp byte ptr [ecx], 0EBh jnz short locret_12DB9 movsx eax, al inc ecx inc ecx jmp short loc_12DB7 ; --------------------------------------------------------------------------- loc_12DB4: ; CODE XREF: sub_12D9C+Aj add ecx, 5 loc_12DB7: ; CODE XREF: sub_12D9C+16j add ecx, eax locret_12DB9: ; CODE XREF: sub_12D9C+2j sub_12D9C+Fj retn sub_12D9C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12DBC proc near ; CODE XREF: sub_11904+166Dp cmp ds:byte_16010, 1 jbe short locret_12DE2 push eax push edx push ecx call sub_12D9C push ecx push esp push 1 push 0 push 0EEDFAE1h call ds:dword_17010 pop ecx pop ecx pop edx pop eax locret_12DE2: ; CODE XREF: sub_12DBC+7j retn sub_12DBC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12DE4 proc near ; CODE XREF: sub_12FD8+28p cmp ds:byte_16010, 1 jbe short locret_12DFF push edx push esp push 1 push 0 push 0EEDFAE2h call ds:dword_17010 pop edx locret_12DFF: ; CODE XREF: sub_12DE4+7j retn sub_12DE4 endp ; =============== S U B R O U T I N E ======================================= sub_12E00 proc near ; CODE XREF: CODE:loc_13135p push eax push edx cmp ds:byte_16010, 1 jbe short loc_12E1B push esp push 2 push 0 push 0EEDFAE3h call ds:dword_17010 loc_12E1B: ; CODE XREF: sub_12E00+9j pop edx pop eax retn sub_12E00 endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_131A8 loc_12E20: ; CODE XREF: sub_131A8:loc_131FDj ; sub_13218:loc_1326Dj ... mov eax, [esp-4+ExceptionInfo.ExceptionRecord] test dword ptr [eax+4], 6 jnz loc_12F44 cmp dword ptr [eax], 0EEDFADEh mov edx, [eax+18h] mov ecx, [eax+14h] jz short loc_12EAD cld call sub_12D18 mov edx, ds:dword_1700C test edx, edx jz loc_12F44 call edx ; dword_1700C test eax, eax jz loc_12F44 mov edx, [esp-4+arg_8] mov ecx, [esp-4+ExceptionInfo.ExceptionRecord] cmp dword ptr [ecx], 0EEFFACEh jz short loc_12EA4 call sub_12D4C cmp ds:byte_16014, 0 jbe short loc_12EA4 cmp ds:byte_16010, 0 ja short loc_12EA4 lea ecx, [esp-4+ExceptionInfo] push eax push ecx ; ExceptionInfo call UnhandledExceptionFilter ; UnhandledExceptionFilter cmp eax, 0 pop eax jz loc_12F44 mov edx, eax mov eax, [esp-4+ExceptionInfo.ExceptionRecord] mov ecx, [eax+0Ch] jmp short loc_12ED4 ; --------------------------------------------------------------------------- loc_12EA4: ; CODE XREF: sub_131A8-33Dj ; sub_131A8-32Fj ... mov edx, eax mov eax, [esp-4+ExceptionInfo.ExceptionRecord] mov ecx, [eax+0Ch] loc_12EAD: ; CODE XREF: sub_131A8-36Bj cmp ds:byte_16014, 1 jbe short loc_12ED4 cmp ds:byte_16010, 0 ja short loc_12ED4 push eax lea eax, [esp+ExceptionInfo] push edx push ecx push eax ; ExceptionInfo call UnhandledExceptionFilter ; UnhandledExceptionFilter cmp eax, 0 pop ecx pop edx pop eax jz short loc_12F44 loc_12ED4: ; CODE XREF: sub_131A8-306j ; sub_131A8-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+1Ch+ExceptionInfo.ContextRecord] push 0 push eax push offset loc_12EF8 push edx call ds:dword_17014 loc_12EF8: ; DATA XREF: sub_131A8-2BCo mov edi, [esp+2Ch+var_4] call sub_13A18 push dword ptr [eax+0] mov [eax+0], esp mov ebp, [edi+8] mov ebx, [edi+4] mov dword ptr [edi+4], offset sub_12F24 add ebx, 5 call sub_12D88 jmp ebx ; END OF FUNCTION CHUNK FOR sub_131A8 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_12F24 proc near ; DATA XREF: sub_131A8-295o jmp loc_12F4C sub_12F24 endp ; --------------------------------------------------------------------------- call sub_13A18 mov ecx, [eax+0] mov edx, [ecx] mov [eax+0], edx mov eax, [ecx+8] jmp sub_12D24 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_131A8 loc_12F44: ; CODE XREF: sub_131A8-37Dj ; sub_131A8-35Bj ... mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_131A8 ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_11904 loc_12F4C: ; CODE XREF: sub_11904:loc_119CCj ; sub_119DC:loc_11AD0j ... mov eax, [esp+4] mov edx, [esp+8] test dword ptr [eax+4], 6 jz short loc_12F7C mov ecx, [edx+4] mov dword ptr [edx+4], offset loc_12F7C push ebx push esi push edi push ebp mov ebp, [edx+8] add ecx, 5 call sub_12DBC call ecx pop ebp pop edi pop esi pop ebx loc_12F7C: ; CODE XREF: sub_11904+1657j ; DATA XREF: sub_11904+165Co mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_11904 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12F84 proc near ; CODE XREF: sub_131A8+5Fp ; sub_13218+5Fp arg_2C = dword ptr 30h mov eax, [esp+arg_2C] mov dword ptr [eax+4], offset loc_12FCF call sub_13A18 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_12FBE mov eax, [edx+8] call sub_12D24 call sub_12D30 loc_12FBE: ; CODE XREF: sub_12F84+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_12FCF: ; DATA XREF: sub_12F84+4o mov eax, 1 retn sub_12F84 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_12FD8 proc near ; CODE XREF: sub_131A8+64p ; sub_13218+64p ... arg_2C = dword ptr 30h call sub_13A18 mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+8] call sub_12D24 pop edx mov esp, [esp-4+arg_2C] xor eax, eax pop ecx mov fs:[eax], ecx pop eax pop ebp call sub_12DE4 jmp edx sub_12FD8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_13008 proc near ; CODE XREF: sub_12160+10Cp ; sub_12160+16Ap ... 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_13008 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h loc_13020: ; CODE XREF: CODE:00013120j ; CODE:0001312Cj push ebp mov ebp, esp mov edx, [ebp+8] mov eax, [edx] cmp eax, 0C0000092h jg short loc_1305B jz short loc_1308D cmp eax, 0C000008Eh jg short loc_1304D jz short loc_13091 sub eax, 0C0000005h jz short loc_1309D sub eax, 87h jz short loc_13085 dec eax jz short loc_13099 jmp short loc_130AD ; --------------------------------------------------------------------------- loc_1304D: ; CODE XREF: CODE:00013036j add eax, 3FFFFF71h sub eax, 2 jb short loc_1308D jz short loc_13089 jmp short loc_130AD ; --------------------------------------------------------------------------- loc_1305B: ; CODE XREF: CODE:0001302Dj cmp eax, 0C0000096h jg short loc_13073 jz short loc_130A1 sub eax, 0C0000093h jz short loc_13099 dec eax jz short loc_13081 dec eax jz short loc_13095 jmp short loc_130AD ; --------------------------------------------------------------------------- loc_13073: ; CODE XREF: CODE:00013060j sub eax, 0C00000FDh jz short loc_130A9 sub eax, 3Dh jz short loc_130A5 jmp short loc_130AD ; --------------------------------------------------------------------------- loc_13081: ; CODE XREF: CODE:0001306Cj mov al, 0C8h jmp short loc_130AF ; --------------------------------------------------------------------------- loc_13085: ; CODE XREF: CODE:00013046j mov al, 0C9h jmp short loc_130AF ; --------------------------------------------------------------------------- loc_13089: ; CODE XREF: CODE:00013057j mov al, 0CDh jmp short loc_130AF ; --------------------------------------------------------------------------- loc_1308D: ; CODE XREF: CODE:0001302Fj ; CODE:00013055j mov al, 0CFh jmp short loc_130AF ; --------------------------------------------------------------------------- loc_13091: ; CODE XREF: CODE:00013038j mov al, 0C8h jmp short loc_130AF ; --------------------------------------------------------------------------- loc_13095: ; CODE XREF: CODE:0001306Fj mov al, 0D7h jmp short loc_130AF ; --------------------------------------------------------------------------- loc_13099: ; CODE XREF: CODE:00013049j ; CODE:00013069j mov al, 0CEh jmp short loc_130AF ; --------------------------------------------------------------------------- loc_1309D: ; CODE XREF: CODE:0001303Fj mov al, 0D8h jmp short loc_130AF ; --------------------------------------------------------------------------- loc_130A1: ; CODE XREF: CODE:00013062j mov al, 0DAh jmp short loc_130AF ; --------------------------------------------------------------------------- loc_130A5: ; CODE XREF: CODE:0001307Dj mov al, 0D9h jmp short loc_130AF ; --------------------------------------------------------------------------- loc_130A9: ; CODE XREF: CODE:00013078j mov al, 0CAh jmp short loc_130AF ; --------------------------------------------------------------------------- loc_130AD: ; CODE XREF: CODE:0001304Bj ; CODE:00013059j ... mov al, 0FFh loc_130AF: ; CODE XREF: CODE:00013083j ; CODE:00013087j ... and eax, 0FFh mov edx, [edx+0Ch] call sub_12854 ; --------------------------------------------------------------------------- pop ebp retn 4 ; --------------------------------------------------------------------------- loc_130C0: ; DATA XREF: sub_13160+Do mov eax, [esp+4] test dword ptr [eax+4], 6 jnz loc_1315A cmp ds:byte_16010, 0 ja short loc_130E9 lea eax, [esp+4] push eax call UnhandledExceptionFilter ; UnhandledExceptionFilter cmp eax, 0 jz short loc_1315A loc_130E9: ; CODE XREF: CODE:000130D8j mov eax, [esp+4] cld call sub_12D18 mov edx, [esp+8] push 0 push eax push offset loc_13106 push edx call ds:dword_17014 loc_13106: ; DATA XREF: CODE:000130FAo mov ebx, [esp+4] cmp dword ptr [ebx], 0EEDFADEh mov edx, [ebx+14h] mov eax, [ebx+18h] jz short loc_13135 mov edx, ds:dword_1700C test edx, edx jz loc_13020 mov eax, ebx call edx ; dword_1700C test eax, eax jz loc_13020 mov edx, [ebx+0Ch] loc_13135: ; CODE XREF: CODE:00013116j call sub_12E00 mov ecx, ds:dword_17004 test ecx, ecx jz short loc_13146 call ecx ; dword_17004 loc_13146: ; CODE XREF: CODE:00013142j mov ecx, [esp+4] mov eax, 0D9h mov edx, [ecx+14h] mov [esp], edx jmp sub_134CC ; --------------------------------------------------------------------------- loc_1315A: ; CODE XREF: CODE:000130CBj ; CODE:000130E7j xor eax, eax retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13160 proc near ; CODE XREF: sub_13288+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_130C0 mov [eax+8], ebp mov ds:dword_17624, eax retn sub_13160 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13180 proc near ; CODE XREF: sub_133E0:loc_13470p xor edx, edx mov eax, ds:dword_17624 test eax, eax jz short locret_131A7 mov ecx, fs:[edx] cmp eax, ecx jnz short loc_1319A mov eax, [eax] mov fs:[edx], eax retn ; --------------------------------------------------------------------------- loc_13198: ; CODE XREF: sub_13180+21j mov ecx, [ecx] loc_1319A: ; CODE XREF: sub_13180+10j cmp ecx, 0FFFFFFFFh jz short locret_131A7 cmp [ecx], eax jnz short loc_13198 mov eax, [eax] mov [ecx], eax locret_131A7: ; CODE XREF: sub_13180+9j ; sub_13180+1Dj retn sub_13180 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_131A8(struct _EXCEPTION_POINTERS ExceptionInfo, int) sub_131A8 proc near ; CODE XREF: sub_131A8+5Ap ; sub_13218+5Ap ... var_8 = dword ptr -8 var_4 = dword ptr -4 ExceptionInfo = _EXCEPTION_POINTERS ptr 8 arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 00012E20 SIZE 00000104 BYTES ; FUNCTION CHUNK AT 00012F44 SIZE 00000006 BYTES push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov esi, offset dword_17620 mov eax, [esi+8] test eax, eax jz short loc_13211 mov ebx, [esi+0Ch] mov eax, [eax+4] mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_131FD push dword ptr fs:[eax] mov fs:[eax], esp test ebx, ebx jle short loc_131F3 loc_131D8: ; CODE XREF: sub_131A8+49j dec ebx mov [esi+0Ch], ebx mov eax, [ebp+var_4] mov eax, [eax+ebx*8+4] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_131EF call [ebp+var_8] loc_131EF: ; CODE XREF: sub_131A8+42j test ebx, ebx jg short loc_131D8 loc_131F3: ; CODE XREF: sub_131A8+2Ej xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_13211 ; --------------------------------------------------------------------------- loc_131FD: ; DATA XREF: sub_131A8+21o jmp loc_12E20 ; --------------------------------------------------------------------------- call sub_131A8 call sub_12F84 call sub_12FD8 loc_13211: ; CODE XREF: sub_131A8+13j ; sub_131A8+53j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_131A8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13218 proc near ; CODE XREF: sub_13288+3Ap 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 edi, offset dword_17620 mov eax, [edi+8] test eax, eax jz short loc_13281 mov esi, [eax] xor ebx, ebx mov eax, [eax+4] mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_1326D push dword ptr fs:[eax] mov fs:[eax], esp cmp esi, ebx jle short loc_13263 loc_13249: ; CODE XREF: sub_13218+49j mov eax, [ebp+var_4] mov eax, [eax+ebx*8] mov [ebp+var_8], eax inc ebx mov [edi+0Ch], ebx cmp [ebp+var_8], 0 jz short loc_1325F call [ebp+var_8] loc_1325F: ; CODE XREF: sub_13218+42j cmp esi, ebx jg short loc_13249 loc_13263: ; CODE XREF: sub_13218+2Fj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_13281 ; --------------------------------------------------------------------------- loc_1326D: ; DATA XREF: sub_13218+22o jmp loc_12E20 ; --------------------------------------------------------------------------- call sub_131A8 call sub_12F84 call sub_12FD8 loc_13281: ; CODE XREF: sub_13218+13j ; sub_13218+53j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_13218 endp ; =============== S U B R O U T I N E ======================================= sub_13288 proc near ; CODE XREF: sub_13A64+3Ap mov ds:dword_17010, offset RaiseException mov ds:dword_17014, offset RtlUnwind mov ds:dword_17628, eax xor eax, eax mov ds:dword_1762C, eax mov ds:dword_17630, edx mov eax, [edx+4] mov ds:dword_1701C, eax call sub_13160 mov ds:byte_17024, 0 call sub_13218 retn sub_13288 endp ; =============== S U B R O U T I N E ======================================= sub_132C8 proc near ; CODE XREF: sub_133E0+34p push ebx push esi push edi mov esi, offset Text ; "Runtime error at 00000000" mov cl, 10h mov ebx, ds:uExitCode loc_132D8: ; CODE XREF: sub_132C8+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_132D8 mov cl, 1Ch mov eax, ds:dword_16004 loc_13304: ; CODE XREF: sub_132C8+54j mov edx, eax and edx, 0Fh mov dl, ds:byte_16074[edx] xor ebx, ebx mov bl, cl mov [esi+ebx], dl shr eax, 4 dec ecx test eax, eax jnz short loc_13304 pop edi pop esi pop ebx retn sub_132C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_13324 proc near ; CODE XREF: sub_133E0+A4p xor eax, eax xchg eax, ds:uExitCode neg eax sbb eax, eax inc eax mov edi, offset dword_17620 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_13324 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_13354 proc near ; CODE XREF: sub_133E0+39p NumberOfBytesWritten= dword ptr -4 push ecx cmp ds:byte_17034, 0 jz short loc_133B5 cmp ds:word_17208, 0D7B2h jnz short loc_1337D cmp ds:dword_17210, 0 jbe short loc_1337D mov eax, offset dword_17204 call ds:dword_17220 loc_1337D: ; CODE XREF: sub_13354+13j ; sub_13354+1Cj push 0 ; lpOverlapped lea eax, [esp+8+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push 1Eh ; nNumberOfBytesToWrite push offset Text ; "Runtime error at 00000000" push 0FFFFFFF5h ; nStdHandle call GetStdHandle ; GetStdHandle push eax ; hFile call WriteFile ; WriteFile push 0 ; lpOverlapped lea eax, [esp+8+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push 2 ; nNumberOfBytesToWrite push offset dword_133DC ; lpBuffer push 0FFFFFFF5h ; nStdHandle call GetStdHandle ; GetStdHandle push eax ; hFile call WriteFile ; WriteFile pop edx retn ; --------------------------------------------------------------------------- loc_133B5: ; CODE XREF: sub_13354+8j cmp ds:byte_16018, 0 jnz short loc_133D1 push 0 ; uType push offset Caption ; "Error" push offset Text ; "Runtime error at 00000000" push 0 ; hWnd call MessageBoxA ; MessageBoxA loc_133D1: ; CODE XREF: sub_13354+68j pop edx retn sub_13354 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_133DC dd 0A0Dh ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn ; int __fastcall sub_133E0(struct _EXCEPTION_POINTERS ExceptionInfo) sub_133E0 proc near ; CODE XREF: sub_134C0+5p ; CODE:loc_15208p var_14 = dword ptr -14h ExceptionInfo = _EXCEPTION_POINTERS ptr 4 push ebx push esi push edi push ebp push ecx ; ExceptionInfo mov ebx, offset dword_17620 mov esi, offset dword_17030 cmp byte ptr [ebx+28h], 0 jnz short loc_1340B cmp dword ptr [esi], 0 jz short loc_1340B loc_133FA: ; CODE XREF: sub_133E0+29j mov eax, [esi] mov [esp+14h+var_14], eax xor eax, eax mov [esi], eax call [esp+14h+var_14] cmp dword ptr [esi], 0 jnz short loc_133FA loc_1340B: ; CODE XREF: sub_133E0+13j ; sub_133E0+18j cmp ds:dword_16004, 0 jz short loc_13425 call sub_132C8 call sub_13354 xor eax, eax mov ds:dword_16004, eax loc_13425: ; CODE XREF: sub_133E0+32j ; sub_133E0+D5j cmp byte ptr [ebx+28h], 2 jnz short loc_13439 cmp ds:uExitCode, 0 jnz short loc_13439 xor eax, eax mov [ebx+0Ch], eax loc_13439: ; CODE XREF: sub_133E0+49j ; sub_133E0+52j call sub_131A8 cmp byte ptr [ebx+28h], 1 jbe short loc_1344D cmp ds:uExitCode, 0 jz short loc_13470 loc_1344D: ; CODE XREF: sub_133E0+62j mov edi, [ebx+10h] test edi, edi jz short loc_13470 mov eax, edi call sub_13780 mov ebp, [ebx+10h] mov esi, [ebp+10h] cmp esi, [ebp+4] jz short loc_13470 test esi, esi jz short loc_13470 push esi ; hLibModule call FreeLibrary ; FreeLibrary loc_13470: ; CODE XREF: sub_133E0+6Bj ; sub_133E0+72j ... call sub_13180 cmp byte ptr [ebx+28h], 1 jnz short loc_1347E call dword ptr [ebx+24h] loc_1347E: ; CODE XREF: sub_133E0+99j cmp byte ptr [ebx+28h], 0 jz short loc_13489 call sub_13324 loc_13489: ; CODE XREF: sub_133E0+A2j cmp dword ptr [ebx], 0 jnz short loc_134A8 cmp ds:dword_17018, 0 jz short loc_1349D call ds:dword_17018 loc_1349D: ; CODE XREF: sub_133E0+B5j mov eax, ds:uExitCode push eax ; uExitCode call ExitProcess ; ExitProcess ; --------------------------------------------------------------------------- loc_134A8: ; CODE XREF: sub_133E0+ACj mov eax, [ebx] mov esi, eax mov edi, ebx mov ecx, 0Bh rep movsd jmp loc_13425 sub_133E0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- pop edx pop ebp pop edi pop esi pop ebx retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_134C0 proc near ; CODE XREF: sub_12854+6p sub_134CC+6j mov ds:uExitCode, eax call sub_133E0 sub_134C0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 0C3h ; ц align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_134CC proc near ; CODE XREF: CODE:00013155j ; sub_139D4+1Ap ... pop ds:dword_16004 jmp sub_134C0 sub_134CC endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_134D8 proc near ; CODE XREF: sub_12A6C+Ep ; sub_1359C+23p ... mov edx, [eax] test edx, edx jz short locret_134FA mov dword ptr [eax], 0 mov ecx, [edx-8] dec ecx jl short locret_134FA lock dec dword ptr [edx-8] jnz short locret_134FA push eax lea eax, [edx-8] call sub_127E4 pop eax locret_134FA: ; CODE XREF: sub_134D8+4j ; sub_134D8+10j ... retn sub_134D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_134FC proc near ; CODE XREF: sub_13F18+2CDp ; sub_1434C+307p ... push ebx push esi mov ebx, eax mov esi, edx loc_13502: ; CODE XREF: sub_134FC+2Aj mov edx, [ebx] test edx, edx jz short loc_13522 mov dword ptr [ebx], 0 mov ecx, [edx-8] dec ecx jl short loc_13522 lock dec dword ptr [edx-8] jnz short loc_13522 lea eax, [edx-8] call sub_127E4 loc_13522: ; CODE XREF: sub_134FC+Aj ; sub_134FC+16j ... add ebx, 4 dec esi jnz short loc_13502 pop esi pop ebx retn sub_134FC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1352C proc near ; CODE XREF: sub_135FC+8j ; sub_14F44+8Cp ... test edx, edx jz short loc_13554 mov ecx, [edx-8] inc ecx jg short loc_13550 push eax push edx mov eax, [edx-4] call sub_13570 mov edx, eax pop eax push edx mov ecx, [eax-4] call sub_128C8 pop edx pop eax jmp short loc_13554 ; --------------------------------------------------------------------------- loc_13550: ; CODE XREF: sub_1352C+8j lock inc dword ptr [edx-8] loc_13554: ; CODE XREF: sub_1352C+2j ; sub_1352C+22j xchg edx, [eax] test edx, edx jz short locret_1356E mov ecx, [edx-8] dec ecx jl short locret_1356E lock dec dword ptr [edx-8] jnz short locret_1356E lea eax, [edx-8] call sub_127E4 locret_1356E: ; CODE XREF: sub_1352C+2Cj ; sub_1352C+32j ... retn sub_1352C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13570 proc near ; CODE XREF: sub_1352C+Fp sub_1359C+Bp ... test eax, eax jle short loc_13598 push eax add eax, 0Ah and eax, 0FFFFFFFEh push eax call sub_127B4 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_13598: ; CODE XREF: sub_13570+2j xor eax, eax retn sub_13570 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1359C proc near ; CODE XREF: sub_12A6C+30p ; sub_135CC+8p ... push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx mov eax, edi call sub_13570 mov ecx, edi mov edi, eax test esi, esi jz short loc_135BD mov edx, eax mov eax, esi call sub_128C8 loc_135BD: ; CODE XREF: sub_1359C+16j mov eax, ebx call sub_134D8 mov [ebx], edi pop edi pop esi pop ebx retn sub_1359C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_135CC proc near ; CODE XREF: sub_13E48+51p ; sub_14990+AEp push edx mov edx, esp mov ecx, 1 call sub_1359C pop edx retn sub_135CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_135DC proc near ; CODE XREF: sub_13804+36p push edi push eax push ecx mov edi, edx xor eax, eax repne scasb jnz short loc_135E9 not ecx loc_135E9: ; CODE XREF: sub_135DC+9j pop eax add ecx, eax pop eax pop edi jmp sub_1359C sub_135DC endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_135F4 proc near ; CODE XREF: sub_13B78+Fp ; sub_13D28+12p ... test eax, eax jz short locret_135FB mov eax, [eax-4] locret_135FB: ; CODE XREF: sub_135F4+2j retn sub_135F4 endp ; =============== S U B R O U T I N E ======================================= sub_135FC proc near ; CODE XREF: sub_13E48+5Cp ; sub_14990+B9p test edx, edx jz short locret_1363F mov ecx, [eax] test ecx, ecx jz sub_1352C push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, [ecx-4] mov edx, [esi-4] add edx, edi cmp esi, ecx jz short loc_13634 call sub_136A8 mov eax, esi mov ecx, [esi-4] loc_13627: ; CODE XREF: sub_135FC+41j mov edx, [ebx] add edx, edi call sub_128C8 pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_13634: ; CODE XREF: sub_135FC+1Fj call sub_136A8 mov eax, [ebx] mov ecx, edi jmp short loc_13627 ; --------------------------------------------------------------------------- locret_1363F: ; CODE XREF: sub_135FC+2j retn sub_135FC endp ; =============== S U B R O U T I N E ======================================= sub_13640 proc near ; CODE XREF: sub_13E48+14p ; sub_14810+17p ... test eax, eax jz short locret_1364E mov edx, [eax-8] inc edx jle short locret_1364E lock inc dword ptr [eax-8] locret_1364E: ; CODE XREF: sub_13640+2j sub_13640+8j retn sub_13640 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13650 proc near ; CODE XREF: sub_13D28+35p ; sub_13F18+38p ... test eax, eax jz short loc_13656 retn ; --------------------------------------------------------------------------- byte_13655 db 0 ; DATA XREF: sub_13650:loc_13656o ; --------------------------------------------------------------------------- loc_13656: ; CODE XREF: sub_13650+2j mov eax, offset byte_13655 retn sub_13650 endp ; =============== S U B R O U T I N E ======================================= sub_1365C proc near ; CODE XREF: sub_136A0j mov edx, [eax] test edx, edx jz short loc_1369A mov ecx, [edx-8] dec ecx jz short loc_1369A push ebx mov ebx, eax mov eax, [edx-4] call sub_13570 mov edx, eax mov eax, [ebx] mov [ebx], edx push eax mov ecx, [eax-4] call sub_128C8 pop eax mov ecx, [eax-8] dec ecx jl short loc_13697 lock dec dword ptr [eax-8] jnz short loc_13697 lea eax, [eax-8] call sub_127E4 loc_13697: ; CODE XREF: sub_1365C+2Bj ; sub_1365C+31j mov edx, [ebx] pop ebx loc_1369A: ; CODE XREF: sub_1365C+4j sub_1365C+Aj mov eax, edx retn sub_1365C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_136A0 proc near ; CODE XREF: sub_13D28+2Cp ; sub_14810+42p ... jmp sub_1365C sub_136A0 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_136A8 proc near ; CODE XREF: sub_12908+B3p ; sub_135FC+21p ... push ebx push esi push edi mov ebx, eax mov esi, edx xor edi, edi test edx, edx jle short loc_136FD mov eax, [ebx] test eax, eax jz short loc_136DE cmp dword ptr [eax-8], 1 jnz short loc_136DE sub eax, 8 add edx, 9 push eax mov eax, esp call sub_12804 pop eax add eax, 8 mov [ebx], eax mov [eax-4], esi mov byte ptr [esi+eax], 0 jmp short loc_13706 ; --------------------------------------------------------------------------- loc_136DE: ; CODE XREF: sub_136A8+11j ; sub_136A8+17j mov eax, edx call sub_13570 mov edi, eax mov eax, [ebx] test eax, eax jz short loc_136FD mov edx, edi mov ecx, [eax-4] cmp ecx, esi jl short loc_136F8 mov ecx, esi loc_136F8: ; CODE XREF: sub_136A8+4Cj call sub_128C8 loc_136FD: ; CODE XREF: sub_136A8+Bj ; sub_136A8+43j mov eax, ebx call sub_134D8 mov [ebx], edi loc_13706: ; CODE XREF: sub_136A8+34j pop edi pop esi pop ebx retn sub_136A8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_1370C proc near ; DATA XREF: sub_138CC+2Fo mov al, 11h jmp sub_128AC sub_1370C endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13714 proc near ; CODE XREF: sub_13780+1Dp 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_16020 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_13767 loc_1372E: ; CODE XREF: sub_13714+51j xor eax, eax push ebp push offset loc_1374F 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_13759 ; --------------------------------------------------------------------------- loc_1374F: ; DATA XREF: sub_13714+1Do jmp loc_12E20 ; --------------------------------------------------------------------------- call sub_12FD8 loc_13759: ; CODE XREF: sub_13714+39j mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_1372E loc_13767: ; CODE XREF: sub_13714+18j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_13714 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13770 proc near ; CODE XREF: sub_13A58+5p mov edx, ds:dword_1601C mov [eax], edx mov ds:dword_1601C, eax retn sub_13770 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13780 proc near ; CODE XREF: sub_133E0+76p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_137F9 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov eax, [eax+4] call sub_13714 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13800 loc_137AF: ; CODE XREF: sub_13780+7Ej mov eax, [ebp+var_4] cmp eax, ds:dword_1601C jnz short loc_137C6 mov eax, [ebp+var_4] mov eax, [eax] mov ds:dword_1601C, eax jmp short loc_137F8 ; --------------------------------------------------------------------------- loc_137C6: ; CODE XREF: sub_13780+38j mov eax, ds:dword_1601C mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_137F8 loc_137D4: ; CODE XREF: sub_13780+76j mov eax, [ebp+var_8] mov eax, [eax] cmp eax, [ebp+var_4] jnz short loc_137EA mov eax, [ebp+var_4] mov eax, [eax] mov edx, [ebp+var_8] mov [edx], eax jmp short loc_137F8 ; --------------------------------------------------------------------------- loc_137EA: ; CODE XREF: sub_13780+5Cj mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_137D4 loc_137F8: ; CODE XREF: sub_13780+44j ; sub_13780+52j ... retn ; --------------------------------------------------------------------------- loc_137F9: ; DATA XREF: sub_13780+Co jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_137AF ; --------------------------------------------------------------------------- loc_13800: ; CODE XREF: sub_13780:loc_137F8j ; DATA XREF: sub_13780+2Ao pop ecx pop ecx pop ebp retn sub_13780 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13804 proc near ; CODE XREF: sub_138CC+ADp ; sub_138CC+BEp var_10 = dword ptr -10h LCData = 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_1386A push dword ptr fs:[edx] mov fs:[edx], esp push 7 ; cchData lea edx, [ebp+LCData] push edx ; lpLCData push 1004h ; LCType push eax ; Locale call GetLocaleInfoA ; GetLocaleInfoA lea eax, [ebp+var_10] lea edx, [ebp+LCData] mov ecx, 7 call sub_135DC mov eax, [ebp+var_10] lea edx, [ebp+var_4] call sub_12B48 mov ebx, eax cmp [ebp+var_4], 0 jz short loc_13854 xor ebx, ebx loc_13854: ; CODE XREF: sub_13804+4Cj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13871 loc_13861: ; CODE XREF: sub_13804+6Bj lea eax, [ebp+var_10] call sub_134D8 retn ; --------------------------------------------------------------------------- loc_1386A: ; DATA XREF: sub_13804+Fo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13861 ; --------------------------------------------------------------------------- loc_13871: ; CODE XREF: sub_13804+65j ; DATA XREF: sub_13804+58o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_13804 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13878 proc near ; DATA XREF: CODE:000150C0o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_138C2 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_175A4 jnz short loc_138B4 mov eax, offset dword_17038 call sub_12AD0 mov eax, offset dword_17204 call sub_12AD0 mov eax, offset dword_173D0 call sub_12AD0 call sub_119DC loc_138B4: ; CODE XREF: sub_13878+17j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_138C9 loc_138C1: ; CODE XREF: sub_13878+4Fj retn ; --------------------------------------------------------------------------- loc_138C2: ; DATA XREF: sub_13878+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_138C1 ; --------------------------------------------------------------------------- loc_138C9: ; CODE XREF: sub_13878:loc_138C1j ; DATA XREF: sub_13878+44o pop ebp retn sub_13878 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_138CC proc near ; DATA XREF: CODE:000150BCo sub ds:dword_175A4, 1 jnb locret_1399E mov ds:byte_16008, 2 mov ds:dword_17010, offset RaiseException mov ds:dword_17014, offset RtlUnwind mov ds:byte_17036, 2 mov ds:dword_17000, offset sub_1370C call sub_12C24 test al, al jz short loc_13913 call sub_12C54 loc_13913: ; CODE XREF: sub_138CC+40j call sub_12D18 mov ds:word_1703C, 0D7B0h mov ds:word_17208, 0D7B0h mov ds:word_173D4, 0D7B0h call GetCommandLineA ; GetCommandLineA mov ds:dword_1702C, eax call sub_11098 mov ds:dword_17028, eax call GetVersion ; GetVersion and eax, 80000000h cmp eax, 80000000h jz short loc_13985 call GetVersion ; GetVersion and eax, 0FFh cmp ax, 4 jbe short loc_13974 mov ds:dword_175A8, 3 jmp short loc_13994 ; --------------------------------------------------------------------------- loc_13974: ; CODE XREF: sub_138CC+9Aj call GetThreadLocale ; GetThreadLocale call sub_13804 mov ds:dword_175A8, eax jmp short loc_13994 ; --------------------------------------------------------------------------- loc_13985: ; CODE XREF: sub_138CC+8Aj call GetThreadLocale ; GetThreadLocale call sub_13804 mov ds:dword_175A8, eax loc_13994: ; CODE XREF: sub_138CC+A6j ; sub_138CC+B7j call GetCurrentThreadId ; GetCurrentThreadId mov ds:dword_17020, eax locret_1399E: ; CODE XREF: sub_138CC+7j retn sub_138CC endp ; --------------------------------------------------------------------------- align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION TlsGetValue. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION TlsSetValue. PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= sub_139C0 proc near ; CODE XREF: sub_139D4+21p push eax ; uBytes push 40h ; uFlags call LocalAlloc_0 retn sub_139C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_139CC proc near ; CODE XREF: sub_139D4+1p mov eax, 8 retn sub_139CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_139D4 proc near ; CODE XREF: sub_13A18:loc_13A32p push ebx call sub_139CC mov ebx, eax test ebx, ebx jz short loc_13A16 cmp ds:TlsIndex, 0FFFFFFFFh jnz short loc_139F3 mov eax, 0E2h call sub_134CC ; --------------------------------------------------------------------------- loc_139F3: ; CODE XREF: sub_139D4+13j mov eax, ebx call sub_139C0 test eax, eax jnz short loc_13A0A mov eax, 0E2h call sub_134CC ; --------------------------------------------------------------------------- jmp short loc_13A16 ; --------------------------------------------------------------------------- loc_13A0A: ; CODE XREF: sub_139D4+28j push eax ; lpTlsValue mov eax, ds:TlsIndex push eax ; dwTlsIndex call TlsSetValue ; TlsSetValue loc_13A16: ; CODE XREF: sub_139D4+Aj ; sub_139D4+34j pop ebx retn sub_139D4 endp ; =============== S U B R O U T I N E ======================================= sub_13A18 proc near ; CODE XREF: sub_12860+20p ; sub_128B8+3p ... mov cl, ds:byte_1764C mov eax, ds:TlsIndex test cl, cl jnz short loc_13A4D mov edx, large fs:2Ch mov eax, [edx+eax*4] retn ; --------------------------------------------------------------------------- loc_13A32: ; CODE XREF: sub_13A18+3Dj call sub_139D4 mov eax, ds:TlsIndex push eax ; dwTlsIndex call TlsGetValue ; TlsGetValue test eax, eax jz short loc_13A47 retn ; --------------------------------------------------------------------------- loc_13A47: ; CODE XREF: sub_13A18+2Cj mov eax, ds:dword_17658 retn ; --------------------------------------------------------------------------- loc_13A4D: ; CODE XREF: sub_13A18+Dj push eax ; dwTlsIndex call TlsGetValue ; TlsGetValue test eax, eax jz short loc_13A32 retn sub_13A18 endp ; =============== S U B R O U T I N E ======================================= sub_13A58 proc near ; CODE XREF: sub_13A64+2Ep mov eax, offset dword_16088 call sub_13770 retn sub_13A58 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_13A64 proc near ; CODE XREF: CODE:0001512Dp push ebx mov ebx, eax xor eax, eax mov ds:TlsIndex, eax push 0 ; lpModuleName call GetModuleHandleA ; GetModuleHandleA mov ds:dword_17650, eax mov eax, ds:dword_17650 mov ds:dword_1608C, eax xor eax, eax mov ds:dword_16090, eax xor eax, eax mov ds:dword_16094, eax call sub_13A58 mov edx, offset dword_16088 mov eax, ebx call sub_13288 pop ebx retn sub_13A64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13AA8 proc near ; DATA XREF: CODE:000150B8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_13ACD push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_17654 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13AD4 loc_13ACC: ; CODE XREF: sub_13AA8+2Aj retn ; --------------------------------------------------------------------------- loc_13ACD: ; DATA XREF: sub_13AA8+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13ACC ; --------------------------------------------------------------------------- loc_13AD4: ; CODE XREF: sub_13AA8:loc_13ACCj ; DATA XREF: sub_13AA8+1Fo pop ebp retn sub_13AA8 endp ; --------------------------------------------------------------------------- align 4 loc_13AD8: ; DATA XREF: CODE:off_150B4o sub ds:dword_17654, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13AE0 proc near ; DATA XREF: CODE:000150C8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_13B05 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1765C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13B0C loc_13B04: ; CODE XREF: sub_13AE0+2Aj retn ; --------------------------------------------------------------------------- loc_13B05: ; DATA XREF: sub_13AE0+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13B04 ; --------------------------------------------------------------------------- loc_13B0C: ; CODE XREF: sub_13AE0:loc_13B04j ; DATA XREF: sub_13AE0+1Fo pop ebp retn sub_13AE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13B10 proc near ; DATA XREF: CODE:000150C4o sub ds:dword_1765C, 1 retn sub_13B10 endp ; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION LoadLibraryA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SetHandleInformation. PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13B40 proc near ; DATA XREF: CODE:000150D0o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_13B65 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_17660 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13B6C loc_13B64: ; CODE XREF: sub_13B40+2Aj retn ; --------------------------------------------------------------------------- loc_13B65: ; DATA XREF: sub_13B40+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13B64 ; --------------------------------------------------------------------------- loc_13B6C: ; CODE XREF: sub_13B40:loc_13B64j ; DATA XREF: sub_13B40+1Fo pop ebp retn sub_13B40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13B70 proc near ; DATA XREF: CODE:000150CCo sub ds:dword_17660, 1 retn sub_13B70 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13B78 proc near ; CODE XREF: sub_13D74+1Bp var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = byte ptr -0Ah var_9 = byte ptr -9 var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFECh mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_8] call sub_135F4 mov [ebp+var_14], eax mov eax, [ebp+var_4] mov byte ptr [eax+100h], 0 mov eax, [ebp+var_4] mov byte ptr [eax+101h], 0 mov [ebp+var_A], 0 loc_13BA7: ; CODE XREF: sub_13B78+44j xor eax, eax mov al, [ebp+var_A] mov edx, [ebp+var_4] mov cl, [ebp+var_A] mov [edx+eax], cl inc [ebp+var_A] cmp [ebp+var_A], 0 jnz short loc_13BA7 mov [ebp+var_9], 0 xor eax, eax mov [ebp+var_10], eax mov [ebp+var_A], 0 loc_13BCB: ; CODE XREF: sub_13B78+C7j mov eax, [ebp+var_10] cmp eax, [ebp+var_14] jge short loc_13BE1 mov eax, [ebp+var_8] mov edx, [ebp+var_10] mov al, [eax+edx] mov [ebp+var_C], al jmp short loc_13BE5 ; --------------------------------------------------------------------------- loc_13BE1: ; CODE XREF: sub_13B78+59j mov [ebp+var_C], 0 loc_13BE5: ; CODE XREF: sub_13B78+67j inc [ebp+var_10] mov eax, [ebp+var_10] cmp eax, [ebp+var_14] jl short loc_13BF5 xor eax, eax mov [ebp+var_10], eax loc_13BF5: ; CODE XREF: sub_13B78+76j xor eax, eax mov al, [ebp+var_A] mov edx, [ebp+var_4] mov al, [edx+eax] add al, [ebp+var_C] add [ebp+var_9], al xor eax, eax mov al, [ebp+var_A] mov edx, [ebp+var_4] mov al, [edx+eax] mov [ebp+var_B], al xor eax, eax mov al, [ebp+var_9] mov edx, [ebp+var_4] mov al, [edx+eax] xor edx, edx mov dl, [ebp+var_A] mov ecx, [ebp+var_4] mov [ecx+edx], al xor eax, eax mov al, [ebp+var_9] mov edx, [ebp+var_4] mov cl, [ebp+var_B] mov [edx+eax], cl inc [ebp+var_A] cmp [ebp+var_A], 0 jnz short loc_13BCB mov esp, ebp pop ebp retn sub_13B78 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13C48 proc near ; CODE XREF: sub_13D74+52p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] xor ecx, ecx mov edx, 102h call sub_12B28 pop ecx pop ebp retn sub_13C48 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13C64 proc near ; CODE XREF: sub_13D28+40p var_18 = dword ptr -18h var_11 = byte ptr -11h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFE8h mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+arg_0] dec eax test eax, eax jl loc_13D21 inc eax mov [ebp+var_18], eax mov [ebp+var_10], 0 loc_13C8A: ; CODE XREF: sub_13C64+B7j mov eax, [ebp+var_4] inc byte ptr [eax+100h] mov eax, [ebp+var_4] movzx eax, byte ptr [eax+100h] mov edx, [ebp+var_4] mov al, [edx+eax] mov [ebp+var_11], al mov eax, [ebp+var_4] mov dl, [ebp+var_11] add [eax+101h], dl mov eax, [ebp+var_4] movzx eax, byte ptr [eax+101h] mov edx, [ebp+var_4] mov al, [edx+eax] mov edx, [ebp+var_4] movzx edx, byte ptr [edx+100h] mov ecx, [ebp+var_4] mov [ecx+edx], al mov eax, [ebp+var_4] movzx eax, byte ptr [eax+101h] mov edx, [ebp+var_4] mov cl, [ebp+var_11] mov [edx+eax], cl mov eax, [ebp+var_4] movzx eax, byte ptr [eax+100h] mov edx, [ebp+var_4] mov al, [edx+eax] add [ebp+var_11], al mov eax, [ebp+var_8] mov edx, [ebp+var_10] mov al, [eax+edx] xor edx, edx mov dl, [ebp+var_11] mov ecx, [ebp+var_4] xor al, [ecx+edx] mov edx, [ebp+var_C] mov ecx, [ebp+var_10] mov [edx+ecx], al inc [ebp+var_10] dec [ebp+var_18] jnz loc_13C8A loc_13D21: ; CODE XREF: sub_13C64+15j mov esp, ebp pop ebp retn 4 sub_13C64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13D28 proc near ; CODE XREF: sub_13D74+3Ap 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_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_8] call sub_135F4 mov [ebp+var_10], eax mov eax, [ebp+var_C] mov edx, [ebp+var_10] call sub_136A8 mov eax, [ebp+var_10] push eax mov eax, [ebp+var_C] call sub_136A0 push eax mov eax, [ebp+var_8] call sub_13650 mov edx, eax mov eax, [ebp+var_4] pop ecx call sub_13C64 mov esp, ebp pop ebp retn sub_13D28 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13D74 proc near ; CODE XREF: sub_13F18+30p ; sub_13F18+59p ... var_10E = byte ptr -10Eh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEF0h mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax lea eax, [ebp+var_10E] mov edx, [ebp+var_8] call sub_13B78 xor eax, eax push ebp push offset loc_13DCC push dword ptr fs:[eax] mov fs:[eax], esp mov ecx, [ebp+var_C] lea eax, [ebp+var_10E] mov edx, [ebp+var_4] call sub_13D28 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13DD3 loc_13DC0: ; CODE XREF: sub_13D74+5Dj lea eax, [ebp+var_10E] call sub_13C48 retn ; --------------------------------------------------------------------------- loc_13DCC: ; DATA XREF: sub_13D74+23o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13DC0 ; --------------------------------------------------------------------------- loc_13DD3: ; CODE XREF: sub_13D74+57j ; DATA XREF: sub_13D74+47o mov esp, ebp pop ebp retn sub_13D74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13DD8 proc near ; DATA XREF: CODE:000150D8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_13DFD push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_17664 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13E04 loc_13DFC: ; CODE XREF: sub_13DD8+2Aj retn ; --------------------------------------------------------------------------- loc_13DFD: ; DATA XREF: sub_13DD8+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13DFC ; --------------------------------------------------------------------------- loc_13E04: ; CODE XREF: sub_13DD8:loc_13DFCj ; DATA XREF: sub_13DD8+1Fo pop ebp retn sub_13DD8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_13E08 proc near ; DATA XREF: CODE:000150D4o sub ds:dword_17664, 1 retn sub_13E08 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13E10 proc near ; DATA XREF: CODE:000150E0o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_13E35 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_17668 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13E3C loc_13E34: ; CODE XREF: sub_13E10+2Aj retn ; --------------------------------------------------------------------------- loc_13E35: ; DATA XREF: sub_13E10+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13E34 ; --------------------------------------------------------------------------- loc_13E3C: ; CODE XREF: sub_13E10:loc_13E34j ; DATA XREF: sub_13E10+1Fo pop ebp retn sub_13E10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_13E40 proc near ; DATA XREF: CODE:000150DCo sub ds:dword_17668, 1 retn sub_13E40 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13E48 proc near ; CODE XREF: sub_13EE0+Fp var_18 = dword ptr -18h var_14 = dword ptr -14h var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE8h xor ecx, ecx mov [ebp+var_18], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_13640 xor eax, eax push ebp push offset loc_13ED2 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_135F4 test eax, eax jle short loc_13EB4 mov [ebp+var_14], eax mov [ebp+var_C], 1 loc_13E85: ; CODE XREF: sub_13E48+6Aj mov eax, [ebp+var_4] mov edx, [ebp+var_C] mov al, [eax+edx-1] mov [ebp+var_D], al lea eax, [ebp+var_18] mov dl, [ebp+var_D] dec edx call sub_135CC mov edx, [ebp+var_18] mov eax, [ebp+var_8] call sub_135FC mov eax, [ebp+var_8] inc [ebp+var_C] dec [ebp+var_14] jnz short loc_13E85 loc_13EB4: ; CODE XREF: sub_13E48+31j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_13ED9 loc_13EC1: ; CODE XREF: sub_13E48+8Fj lea eax, [ebp+var_18] call sub_134D8 lea eax, [ebp+var_4] call sub_134D8 retn ; --------------------------------------------------------------------------- loc_13ED2: ; DATA XREF: sub_13E48+1Co jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_13EC1 ; --------------------------------------------------------------------------- loc_13ED9: ; CODE XREF: sub_13E48+89j ; DATA XREF: sub_13E48+74o mov esp, ebp pop ebp retn sub_13E48 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13EE0 proc near ; CODE XREF: sub_13F18+20p ; sub_13F18+49p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], eax mov edx, [ebp+var_4] mov eax, offset dword_13F00 call sub_13E48 pop ecx pop ebp retn sub_13EE0 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 14h dword_13F00 dd 7F585D70h, 257A5D36h, 7B7A2E27h, 65705834h, 4A503D35h ; DATA XREF: sub_13EE0+Ao dd 0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_13F18 proc near ; CODE XREF: CODE:00015163p var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = 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 hModule = dword ptr -4 push ebp mov ebp, esp mov ecx, 0Fh loc_13F20: ; CODE XREF: sub_13F18+Dj push 0 push 0 dec ecx jnz short loc_13F20 xor eax, eax push ebp push offset loc_141EB push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_10] call sub_13EE0 mov edx, [ebp+var_10] lea ecx, [ebp+var_C] mov eax, offset dword_14200 call sub_13D74 mov eax, [ebp+var_C] call sub_13650 push eax ; lpLibFileName call LoadLibraryA ; LoadLibraryA mov [ebp+hModule], eax lea eax, [ebp+var_18] call sub_13EE0 mov edx, [ebp+var_18] lea ecx, [ebp+var_14] mov eax, offset dword_14218 call sub_13D74 mov eax, [ebp+var_14] call sub_13650 push eax ; lpLibFileName call LoadLibraryA ; LoadLibraryA mov [ebp+var_8], eax lea eax, [ebp+var_20] call sub_13EE0 mov edx, [ebp+var_20] lea ecx, [ebp+var_1C] mov eax, offset dword_14230 call sub_13D74 mov eax, [ebp+var_1C] call sub_13650 push eax ; lpProcName mov eax, [ebp+hModule] push eax ; hModule call GetProcAddress ; GetProcAddress mov ds:dword_17688, eax lea eax, [ebp+var_28] call sub_13EE0 mov edx, [ebp+var_28] lea ecx, [ebp+var_24] mov eax, offset dword_14248 call sub_13D74 mov eax, [ebp+var_24] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17694, eax lea eax, [ebp+var_30] call sub_13EE0 mov edx, [ebp+var_30] lea ecx, [ebp+var_2C] mov eax, offset dword_14260 call sub_13D74 mov eax, [ebp+var_2C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17698, eax lea eax, [ebp+var_38] call sub_13EE0 mov edx, [ebp+var_38] lea ecx, [ebp+var_34] mov eax, offset dword_14278 call sub_13D74 mov eax, [ebp+var_34] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_1769C, eax lea eax, [ebp+var_40] call sub_13EE0 mov edx, [ebp+var_40] lea ecx, [ebp+var_3C] mov eax, offset dword_14290 call sub_13D74 mov eax, [ebp+var_3C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176A0, eax lea eax, [ebp+var_48] call sub_13EE0 mov edx, [ebp+var_48] lea ecx, [ebp+var_44] mov eax, offset dword_142A8 call sub_13D74 mov eax, [ebp+var_44] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176B4, eax lea eax, [ebp+var_50] call sub_13EE0 mov edx, [ebp+var_50] lea ecx, [ebp+var_4C] mov eax, offset dword_142BC call sub_13D74 mov eax, [ebp+var_4C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176B0, eax lea eax, [ebp+var_58] call sub_13EE0 mov edx, [ebp+var_58] lea ecx, [ebp+var_54] mov eax, offset dword_142D4 call sub_13D74 mov eax, [ebp+var_54] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176A8, eax lea eax, [ebp+var_60] call sub_13EE0 mov edx, [ebp+var_60] lea ecx, [ebp+var_5C] mov eax, offset dword_142E8 call sub_13D74 mov eax, [ebp+var_5C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176B8, eax lea eax, [ebp+var_68] call sub_13EE0 mov edx, [ebp+var_68] lea ecx, [ebp+var_64] mov eax, offset dword_14304 call sub_13D74 mov eax, [ebp+var_64] call sub_13650 push eax mov eax, [ebp+var_8] push eax call ds:dword_17688 mov ds:dword_176BC, eax lea eax, [ebp+var_70] call sub_13EE0 mov edx, [ebp+var_70] lea ecx, [ebp+var_6C] mov eax, offset dword_1431C call sub_13D74 mov eax, [ebp+var_6C] call sub_13650 push eax mov eax, [ebp+var_8] push eax call ds:dword_17688 mov ds:dword_176C4, eax lea eax, [ebp+var_78] call sub_13EE0 mov edx, [ebp+var_78] lea ecx, [ebp+var_74] mov eax, offset dword_14338 call sub_13D74 mov eax, [ebp+var_74] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176C0, eax mov eax, [ebp+hModule] push eax call ds:dword_176A8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_141F2 loc_141DD: ; CODE XREF: sub_13F18+2D8j lea eax, [ebp+var_78] mov edx, 1Ch call sub_134FC retn ; --------------------------------------------------------------------------- loc_141EB: ; DATA XREF: sub_13F18+12o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_141DD ; --------------------------------------------------------------------------- loc_141F2: ; CODE XREF: sub_13F18+2D2j ; DATA XREF: sub_13F18+2C0o mov esp, ebp pop ebp retn sub_13F18 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 0Ch dword_14200 dd 800B2905h, 81D7DC07h, 0AE402AF0h, 0 dd 0FFFFFFFFh, 0Ch dword_14218 dd 8F0F280Fh, 81D7D912h, 0AE402AF0h, 0 dd 0FFFFFFFFh, 0Eh dword_14230 dd 0BE0D2929h, 0F287DF10h, 0A75E2ABAh, 478h, 0FFFFFFFFh ; DATA XREF: sub_13F18+7Do dd 0Dh dword_14248 dd 8A172528h, 0DC97D530h, 0A74F3CABh, 4Ah, 0FFFFFFFFh ; DATA XREF: sub_13F18+ACo dd 0Ch dword_14260 dd 851A2322h, 0DC97D530h, 0A74F3CABh, 0 dd 0FFFFFFFFh, 0Ch dword_14278 dd 8A182322h, 0DC97D530h, 0A74F3CABh, 0 dd 0FFFFFFFFh, 0Eh dword_14290 dd 8B03253Dh, 0D6B6D60Dh, 0B05921ADh, 1268h, 0FFFFFFFFh ; DATA XREF: sub_13F18+13Co dd 0Bh dword_142A8 dd 9A10342Bh, 0D08BC232h, 5F3DBBh, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_13F18+16Co dword_142BC dd 8B1C3E28h, 0DC97D530h, 0A74F3CABh, 0 dd 0FFFFFFFFh, 0Bh dword_142D4 dd 8B1C3E28h, 0C186D92Eh, 553CBFh, 0FFFFFFFFh, 12h ; DATA XREF: sub_13F18+1CCo dword_142E8 dd 0A80D2929h, 0F281DC0Bh, 0AB5E3AAAh, 16BE0269h, 0A0Ah ; DATA XREF: sub_13F18+1FCo dd 0FFFFFFFFh, 0Ch dword_14304 dd 0BB0D2929h, 0FD96D511h, 834923BFh, 0 dd 0FFFFFFFFh, 10h dword_1431C dd 0AD0D2929h, 0C694DD0Dh, 8C5E2BAAh, 32AF1A6Ah, 0 ; DATA XREF: sub_13F18+25Co dd 0FFFFFFFFh, 10h dword_14338 dd 0A30D2929h, 0DF91D40Dh, 0AC4D06BBh, 32AF1B6Fh, 0 ; DATA XREF: sub_13F18+28Co ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1434C proc near ; CODE XREF: sub_14B48+30p var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = 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 hModule = dword ptr -4 push ebp mov ebp, esp mov ecx, 10h loc_14354: ; CODE XREF: sub_1434C+Dj push 0 push 0 dec ecx jnz short loc_14354 xor eax, eax push ebp push offset loc_14659 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_10] call sub_13EE0 mov edx, [ebp+var_10] lea ecx, [ebp+var_C] mov eax, offset dword_1466C call sub_13D74 mov eax, [ebp+var_C] call sub_13650 push eax ; lpLibFileName call LoadLibraryA ; LoadLibraryA mov [ebp+hModule], eax lea eax, [ebp+var_18] call sub_13EE0 mov edx, [ebp+var_18] lea ecx, [ebp+var_14] mov eax, offset dword_14684 call sub_13D74 mov eax, [ebp+var_14] call sub_13650 push eax ; lpLibFileName call LoadLibraryA ; LoadLibraryA mov [ebp+var_8], eax lea eax, [ebp+var_20] call sub_13EE0 mov edx, [ebp+var_20] lea ecx, [ebp+var_1C] mov eax, offset dword_14698 call sub_13D74 mov eax, [ebp+var_1C] call sub_13650 push eax ; lpProcName mov eax, [ebp+hModule] push eax ; hModule call GetProcAddress ; GetProcAddress mov ds:dword_17688, eax lea eax, [ebp+var_28] call sub_13EE0 mov edx, [ebp+var_28] lea ecx, [ebp+var_24] mov eax, offset dword_146B0 call sub_13D74 mov eax, [ebp+var_24] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_1768C, eax lea eax, [ebp+var_30] call sub_13EE0 mov edx, [ebp+var_30] lea ecx, [ebp+var_2C] mov eax, offset dword_146CC call sub_13D74 mov eax, [ebp+var_2C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_1766C, eax lea eax, [ebp+var_38] call sub_13EE0 mov edx, [ebp+var_38] lea ecx, [ebp+var_34] mov eax, offset dword_146E4 call sub_13D74 mov eax, [ebp+var_34] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17670, eax lea eax, [ebp+var_40] call sub_13EE0 mov edx, [ebp+var_40] lea ecx, [ebp+var_3C] mov eax, offset dword_14700 call sub_13D74 mov eax, [ebp+var_3C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17678, eax lea eax, [ebp+var_48] call sub_13EE0 mov edx, [ebp+var_48] lea ecx, [ebp+var_44] mov eax, offset dword_1471C call sub_13D74 mov eax, [ebp+var_44] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_1767C, eax lea eax, [ebp+var_50] call sub_13EE0 mov edx, [ebp+var_50] lea ecx, [ebp+var_4C] mov eax, offset dword_14738 call sub_13D74 mov eax, [ebp+var_4C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17680, eax lea eax, [ebp+var_58] call sub_13EE0 mov edx, [ebp+var_58] lea ecx, [ebp+var_54] mov eax, offset dword_14750 call sub_13D74 mov eax, [ebp+var_54] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176A8, eax lea eax, [ebp+var_60] call sub_13EE0 mov edx, [ebp+var_60] lea ecx, [ebp+var_5C] mov eax, offset dword_14764 call sub_13D74 mov eax, [ebp+var_5C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17684, eax lea eax, [ebp+var_68] call sub_13EE0 mov edx, [ebp+var_68] lea ecx, [ebp+var_64] mov eax, offset dword_14780 call sub_13D74 mov eax, [ebp+var_64] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17674, eax lea eax, [ebp+var_70] call sub_13EE0 mov edx, [ebp+var_70] lea ecx, [ebp+var_6C] mov eax, offset dword_14798 call sub_13D74 mov eax, [ebp+var_6C] call sub_13650 push eax mov eax, [ebp+var_8] push eax call ds:dword_17688 mov ds:dword_17690, eax lea eax, [ebp+var_78] call sub_13EE0 mov edx, [ebp+var_78] lea ecx, [ebp+var_74] mov eax, offset dword_147B8 call sub_13D74 mov eax, [ebp+var_74] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_176AC, eax lea eax, [ebp+var_80] call sub_13EE0 mov edx, [ebp+var_80] mov eax, offset dword_146E4 lea ecx, [ebp+var_7C] call sub_13D74 mov eax, [ebp+var_7C] call sub_13650 push eax mov eax, [ebp+hModule] push eax call ds:dword_17688 mov ds:dword_17670, eax mov eax, [ebp+hModule] push eax call ds:dword_176A8 mov eax, [ebp+var_8] push eax call ds:dword_176A8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14660 loc_1464B: ; CODE XREF: sub_1434C+312j lea eax, [ebp+var_80] mov edx, 1Eh call sub_134FC retn ; --------------------------------------------------------------------------- loc_14659: ; DATA XREF: sub_1434C+12o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_1464B ; --------------------------------------------------------------------------- loc_14660: ; CODE XREF: sub_1434C+30Cj ; DATA XREF: sub_1434C+2FAo mov esp, ebp pop ebp retn sub_1434C endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 0Ch dword_1466C dd 800B2905h, 81D7DC07h, 0AE402AF0h, 0 dd 0FFFFFFFFh, 9 dword_14684 dd 821D3800h, 0DF809E0Eh, 0B2h, 0FFFFFFFFh, 0Ehdword_14698 dd 0BE0D2929h, 0F287DF10h, 0A75E2ABAh, 478h, 0FFFFFFFFh ; DATA XREF: sub_1434C+7Do dd 10h dword_146B0 dd 9A0B2538h, 0E388D117h, 0A75821ACh, 0B8F0368h, 0 ; DATA XREF: sub_1434C+ACo dd 0FFFFFFFFh, 0Ch dword_146CC dd 9B0A293Ch, 0DBB0D50Fh, 0A64D2BACh, 0 dd 0FFFFFFFFh, 10h dword_146E4 dd 0BA0D293Dh, 0D281C20Ah, 0AC430DBAh, 7B2127Fh, 0 ; DATA XREF: sub_1434C+10Co ; sub_1434C+2B9o dd 0FFFFFFFFh, 11h dword_14700 dd 8A18293Ch, 0D08BC232h, 8F5F3DBBh, 1A51A6Eh, 0 dd 0FFFFFFFFh, 10h dword_1471C dd 0BA0D2929h, 0D281C20Ah, 0AC430DBAh, 7B2127Fh, 0 ; DATA XREF: sub_1434C+16Co dd 0FFFFFFFFh, 0Eh dword_14738 dd 8F1C3E2Dh, 0C1B4D516h, 0B1492DB1h, 3678h, 0FFFFFFFFh ; DATA XREF: sub_1434C+19Co dd 0Bh dword_14750 dd 8B1C3E28h, 0C186D92Eh, 553CBFh, 0FFFFFFFFh, 12h ; DATA XREF: sub_1434C+1CCo dword_14764 dd 9A103E39h, 0DC96E007h, 0B15F2BBDh, 1CA71246h, 320Bh ; DATA XREF: sub_1434C+1FCo dd 0FFFFFFFFh, 0Eh dword_14780 dd 9A0B2538h, 0F288D117h, 0A14322B2h, 0F4Eh, 0FFFFFFFFh ; DATA XREF: sub_1434C+22Co dd 14h dword_14798 dd 802C3B34h, 0E594D10Fh, 8D5B2BB7h, 10AF246Dh, 6F38220Dh ; DATA XREF: sub_1434C+25Co dd 0 dd 0FFFFFFFFh, 10h dword_147B8 dd 830B293Ah, 0C785DE0Bh, 0AD5E1EBBh, 0B91268h, 0 ; DATA XREF: sub_1434C+28Co ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_147CC proc near ; DATA XREF: CODE:000150E8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_147F1 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_176C8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_147F8 loc_147F0: ; CODE XREF: sub_147CC+2Aj retn ; --------------------------------------------------------------------------- loc_147F1: ; DATA XREF: sub_147CC+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_147F0 ; --------------------------------------------------------------------------- loc_147F8: ; CODE XREF: sub_147CC:loc_147F0j ; DATA XREF: sub_147CC+1Fo pop ebp retn sub_147CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_147FC proc near ; DATA XREF: CODE:000150E4o sub ds:dword_176C8, 1 retn sub_147FC endp ; =============== S U B R O U T I N E ======================================= sub_14804 proc near ; CODE XREF: sub_14810+2Dp ; sub_14990+2Cp ... test eax, eax jz short locret_1480D sub eax, 4 mov eax, [eax] locret_1480D: ; CODE XREF: sub_14804+2j retn sub_14804 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14810 proc near ; CODE XREF: sub_14F44+9Bp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFE0h xor eax, eax mov [ebp+var_1C], eax mov [ebp+var_20], eax mov [ebp+var_14], eax mov [ebp+var_18], eax mov eax, [ebp+arg_4] call sub_13640 xor eax, eax push ebp push offset loc_14951 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+arg_4] call sub_14804 mov [ebp+var_4], eax cmp [ebp+var_4], 4 jbe loc_14926 lea eax, [ebp+arg_4] call sub_136A0 mov [ebp+var_C], eax mov eax, [ebp+var_C] mov edx, [eax] mov eax, [ebp+arg_0] call sub_136A8 mov eax, [ebp+var_C] cmp dword ptr [eax], 80000h jbe short loc_1487B mov [ebp+var_10], 2 jmp short loc_14882 ; --------------------------------------------------------------------------- loc_1487B: ; CODE XREF: sub_14810+60j mov [ebp+var_10], 102h loc_14882: ; CODE XREF: sub_14810+69j lea eax, [ebp+var_18] call sub_13EE0 mov edx, [ebp+var_18] lea ecx, [ebp+var_14] mov eax, offset dword_14968 call sub_13D74 mov eax, [ebp+var_14] call sub_13650 push eax ; lpLibFileName call LoadLibraryA ; LoadLibraryA mov ds:hModule, eax lea eax, [ebp+var_20] call sub_13EE0 mov edx, [ebp+var_20] lea ecx, [ebp+var_1C] mov eax, offset dword_1497C call sub_13D74 mov eax, [ebp+var_1C] call sub_13650 push eax ; lpProcName mov eax, ds:hModule push eax ; hModule call GetProcAddress ; GetProcAddress mov ds:dword_176D0, eax lea eax, [ebp+var_8] push eax mov eax, [ebp+var_4] sub eax, 4 push eax lea eax, [ebp+arg_4] call sub_136A0 add eax, 4 push eax mov eax, [ebp+var_C] mov eax, [eax] push eax mov eax, [ebp+arg_0] call sub_136A0 push eax mov eax, [ebp+var_10] push eax call ds:dword_176D0 mov eax, ds:hModule push eax ; hLibModule call FreeLibrary_0 mov eax, [ebp+arg_0] mov edx, [ebp+var_8] call sub_136A8 jmp short loc_1492E ; --------------------------------------------------------------------------- loc_14926: ; CODE XREF: sub_14810+39j mov eax, [ebp+arg_0] call sub_134D8 loc_1492E: ; CODE XREF: sub_14810+114j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14958 loc_1493B: ; CODE XREF: sub_14810+146j lea eax, [ebp+var_20] mov edx, 4 call sub_134FC lea eax, [ebp+arg_4] call sub_134D8 retn ; --------------------------------------------------------------------------- loc_14951: ; DATA XREF: sub_14810+1Fo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_1493B ; --------------------------------------------------------------------------- loc_14958: ; CODE XREF: sub_14810+140j ; DATA XREF: sub_14810+126o mov esp, ebp pop ebp retn 8 sub_14810 endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 9 dword_14968 dd 821D3800h, 0DF809E0Eh, 0B2h, 0FFFFFFFFh, 13hdword_1497C dd 0AA15383Ch, 0DE8BD307h, 0B1493CAEh, 15BF3578h, 252E1Fh ; DATA XREF: sub_14810+ABo ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14990 proc near ; CODE XREF: sub_14F44+A8p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFECh xor eax, eax mov [ebp+var_14], eax mov eax, [ebp+arg_4] call sub_13640 xor eax, eax push ebp push offset loc_14A7E push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+arg_0] call sub_134D8 mov eax, [ebp+arg_4] call sub_14804 mov [ebp+var_C], eax mov [ebp+var_4], 1 mov eax, [ebp+var_4] cmp eax, [ebp+var_C] ja loc_14A60 loc_149D7: ; CODE XREF: sub_14990+CAj mov eax, [ebp+arg_4] mov edx, [ebp+var_4] mov al, [eax+edx-1] mov [ebp+var_6], al cmp [ebp+var_6], 0 jnz short loc_14A31 mov eax, [ebp+arg_4] mov edx, [ebp+var_4] mov al, [eax+edx] mov [ebp+var_5], al mov eax, [ebp+arg_0] mov eax, [eax] call sub_14804 mov [ebp+var_10], eax xor edx, edx mov dl, [ebp+var_5] add edx, [ebp+var_10] mov eax, [ebp+arg_0] call sub_136A8 mov eax, [ebp+arg_0] call sub_136A0 mov edx, [ebp+var_10] add eax, edx xor edx, edx mov dl, [ebp+var_5] xor ecx, ecx call sub_12B28 inc [ebp+var_4] jmp short loc_14A51 ; --------------------------------------------------------------------------- loc_14A31: ; CODE XREF: sub_14990+58j lea eax, [ebp+var_14] mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] mov dl, [edx+ecx-1] call sub_135CC mov edx, [ebp+var_14] mov eax, [ebp+arg_0] call sub_135FC mov eax, [ebp+arg_0] loc_14A51: ; CODE XREF: sub_14990+9Fj inc [ebp+var_4] mov eax, [ebp+var_4] cmp eax, [ebp+var_C] jbe loc_149D7 loc_14A60: ; CODE XREF: sub_14990+41j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14A85 loc_14A6D: ; CODE XREF: sub_14990+F3j lea eax, [ebp+var_14] call sub_134D8 lea eax, [ebp+arg_4] call sub_134D8 retn ; --------------------------------------------------------------------------- loc_14A7E: ; DATA XREF: sub_14990+16o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14A6D ; --------------------------------------------------------------------------- loc_14A85: ; CODE XREF: sub_14990+EDj ; DATA XREF: sub_14990+D8o mov esp, ebp pop ebp retn 8 sub_14990 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14A8C proc near ; DATA XREF: CODE:000150F0o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_14AB1 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_176CC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14AB8 loc_14AB0: ; CODE XREF: sub_14A8C+2Aj retn ; --------------------------------------------------------------------------- loc_14AB1: ; DATA XREF: sub_14A8C+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14AB0 ; --------------------------------------------------------------------------- loc_14AB8: ; CODE XREF: sub_14A8C:loc_14AB0j ; DATA XREF: sub_14A8C+1Fo pop ebp retn sub_14A8C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_14ABC proc near ; DATA XREF: CODE:000150ECo sub ds:dword_176CC, 1 retn sub_14ABC endp ; [00000006 BYTES: COLLAPSED FUNCTION ExtractAssociatedIconA. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14ACC proc near ; DATA XREF: CODE:000150F8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_14AF1 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_176D8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14AF8 loc_14AF0: ; CODE XREF: sub_14ACC+2Aj retn ; --------------------------------------------------------------------------- loc_14AF1: ; DATA XREF: sub_14ACC+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14AF0 ; --------------------------------------------------------------------------- loc_14AF8: ; CODE XREF: sub_14ACC:loc_14AF0j ; DATA XREF: sub_14ACC+1Fo pop ebp retn sub_14ACC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_14AFC proc near ; DATA XREF: CODE:000150F4o sub ds:dword_176D8, 1 retn sub_14AFC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14B04 proc near ; CODE XREF: sub_14B48+19Dp 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] add eax, 18h mov edx, [ebp+var_4] movzx edx, word ptr [edx+14h] add eax, edx mov [ebp+var_8], eax mov eax, [ebp+var_8] pop ecx pop ecx pop ebp retn sub_14B04 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14B28 proc near ; CODE XREF: sub_14B48+216p 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] shr eax, 1Dh mov eax, ds:dword_160A0[eax*4] mov [ebp+var_8], eax mov eax, [ebp+var_8] pop ecx pop ecx pop ebp retn sub_14B28 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14B48 proc near ; CODE XREF: sub_14F44+D7p var_15C = dword ptr -15Ch var_B8 = dword ptr -0B8h var_AC = dword ptr -0ACh var_90 = dword ptr -90h var_60 = word ptr -60h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_2D = byte ptr -2Dh var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp add esp, 0FFFFFEA4h mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_8] call sub_13640 mov eax, [ebp+var_C] call sub_13640 xor eax, eax push ebp push offset loc_14E47 push dword ptr fs:[eax] mov fs:[eax], esp call sub_1434C mov [ebp+var_D], 0 lea eax, [ebp+var_4C] xor ecx, ecx mov edx, 10h call sub_12B28 lea eax, [ebp+var_90] xor ecx, ecx mov edx, 44h call sub_12B28 mov [ebp+var_90], 44h xor eax, eax mov al, [ebp+arg_0] mov [ebp+var_60], ax lea eax, [ebp+var_4C] push eax lea eax, [ebp+var_90] push eax push 0 push 0 push 4 push 0 push 0 push 0 mov eax, [ebp+var_C] call sub_13650 push eax mov eax, [ebp+var_8] call sub_13650 push eax mov eax, ds:off_160CC mov eax, [eax] call eax test eax, eax jz loc_14E2C mov [ebp+var_2D], 1 xor eax, eax push ebp push offset loc_14E25 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_15C], 10002h lea eax, [ebp+var_15C] push eax mov eax, [ebp+var_48] push eax mov eax, ds:off_160E4 mov eax, [eax] call eax test eax, eax jz loc_14DED lea eax, [ebp+var_18] push eax push 4 lea eax, [ebp+var_14] push eax mov eax, [ebp+var_B8] add eax, 8 push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160FC mov eax, [eax] call eax test eax, eax jz loc_14DED mov eax, [ebp+var_14] push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160E0 mov eax, [eax] call eax test eax, eax jb loc_14DED cmp [ebp+var_4], 0 jz loc_14DED mov eax, [ebp+var_4] mov eax, [eax+3Ch] add eax, [ebp+var_4] mov [ebp+var_28], eax mov eax, [ebp+var_28] mov eax, [eax+50h] mov [ebp+var_34], eax mov eax, [ebp+var_28] mov eax, [eax+34h] mov [ebp+var_38], eax push 4 push 3000h mov eax, [ebp+var_34] push eax mov eax, [ebp+var_38] push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160E8 mov eax, [eax] call eax mov [ebp+var_14], eax cmp [ebp+var_14], 0 jz loc_14DED lea eax, [ebp+var_1C] push eax mov eax, [ebp+var_28] mov eax, [eax+54h] push eax mov eax, [ebp+var_4] push eax mov eax, [ebp+var_14] push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160DC mov eax, [eax] call eax test eax, eax jz loc_14DED mov eax, [ebp+var_28] call sub_14B04 mov [ebp+var_2C], eax mov eax, [ebp+var_28] movzx eax, word ptr [eax+6] dec eax test eax, eax jb loc_14D9C inc eax mov [ebp+var_3C], eax mov [ebp+var_20], 0 loc_14D08: ; CODE XREF: sub_14B48+24Ej lea eax, [ebp+var_1C] push eax mov eax, [ebp+var_20] lea eax, [eax+eax*4] mov edx, [ebp+var_2C] mov eax, [edx+eax*8+10h] push eax mov eax, [ebp+var_20] lea eax, [eax+eax*4] mov edx, [ebp+var_2C] mov eax, [edx+eax*8+14h] add eax, [ebp+var_4] push eax mov eax, [ebp+var_20] lea eax, [eax+eax*4] mov edx, [ebp+var_2C] mov eax, [edx+eax*8+0Ch] add eax, [ebp+var_14] push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160DC mov eax, [eax] call eax test eax, eax jz short loc_14D90 lea eax, [ebp+var_24] push eax mov eax, [ebp+var_20] lea eax, [eax+eax*4] mov edx, [ebp+var_2C] mov eax, [edx+eax*8+24h] call sub_14B28 push eax mov eax, [ebp+var_20] lea eax, [eax+eax*4] mov edx, [ebp+var_2C] mov eax, [edx+eax*8+8] push eax mov eax, [ebp+var_20] lea eax, [eax+eax*4] mov edx, [ebp+var_2C] mov eax, [edx+eax*8+0Ch] add eax, [ebp+var_14] push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160F8 mov eax, [eax] call eax loc_14D90: ; CODE XREF: sub_14B48+203j inc [ebp+var_20] dec [ebp+var_3C] jnz loc_14D08 loc_14D9C: ; CODE XREF: sub_14B48+1AFj lea eax, [ebp+var_1C] push eax push 4 lea eax, [ebp+var_14] push eax mov eax, [ebp+var_B8] add eax, 8 push eax mov eax, [ebp+var_4C] push eax mov eax, ds:off_160DC mov eax, [eax] call eax test eax, eax jz short loc_14DED mov eax, [ebp+var_28] mov eax, [eax+28h] add eax, [ebp+var_14] mov [ebp+var_AC], eax lea eax, [ebp+var_15C] push eax mov eax, [ebp+var_48] push eax mov eax, ds:off_160C4 mov eax, [eax] call eax cmp eax, 1 sbb eax, eax inc eax mov [ebp+var_2D], al loc_14DED: ; CODE XREF: sub_14B48+D9j ; sub_14B48+102j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14E2C loc_14DFA: ; CODE XREF: sub_14B48+2E2j cmp [ebp+var_2D], 0 jnz short loc_14E11 push 0 mov eax, [ebp+var_4C] push eax mov eax, ds:off_160C0 mov eax, [eax] call eax jmp short loc_14E1E ; --------------------------------------------------------------------------- loc_14E11: ; CODE XREF: sub_14B48+2B6j mov eax, [ebp+var_48] push eax mov eax, ds:off_160D4 mov eax, [eax] call eax loc_14E1E: ; CODE XREF: sub_14B48+2C7j mov al, [ebp+var_2D] mov [ebp+var_D], al retn ; --------------------------------------------------------------------------- loc_14E25: ; DATA XREF: sub_14B48+AEo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14DFA ; --------------------------------------------------------------------------- loc_14E2C: ; CODE XREF: sub_14B48+A1j ; DATA XREF: sub_14B48+2ADo xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14E4E loc_14E39: ; CODE XREF: sub_14B48+304j lea eax, [ebp+var_C] mov edx, 2 call sub_134FC retn ; --------------------------------------------------------------------------- loc_14E47: ; DATA XREF: sub_14B48+25o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14E39 ; --------------------------------------------------------------------------- loc_14E4E: ; CODE XREF: sub_14B48+2FEj ; DATA XREF: sub_14B48+2ECo mov al, [ebp+var_D] mov esp, ebp pop ebp retn 4 sub_14B48 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14E58 proc near ; DATA XREF: CODE:00015100o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_14E7D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_176DC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14E84 loc_14E7C: ; CODE XREF: sub_14E58+2Aj retn ; --------------------------------------------------------------------------- loc_14E7D: ; DATA XREF: sub_14E58+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14E7C ; --------------------------------------------------------------------------- loc_14E84: ; CODE XREF: sub_14E58:loc_14E7Cj ; DATA XREF: sub_14E58+1Fo pop ebp retn sub_14E58 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_14E88 proc near ; DATA XREF: CODE:000150FCo sub ds:dword_176DC, 1 retn sub_14E88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14E90 proc near ; DATA XREF: CODE:00015108o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_14EB5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_176E0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_14EBC loc_14EB4: ; CODE XREF: sub_14E90+2Aj retn ; --------------------------------------------------------------------------- loc_14EB5: ; DATA XREF: sub_14E90+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_14EB4 ; --------------------------------------------------------------------------- loc_14EBC: ; CODE XREF: sub_14E90:loc_14EB4j ; DATA XREF: sub_14E90+1Fo pop ebp retn sub_14E90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_14EC0 proc near ; DATA XREF: CODE:00015104o sub ds:dword_176E0, 1 retn sub_14EC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14EC8 proc near ; CODE XREF: sub_14F44+29p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFECh mov [ebp+var_8], edx mov [ebp+var_4], eax push 0Ah mov eax, [ebp+var_8] push eax mov eax, ds:dword_17650 push eax mov eax, ds:off_160C8 mov eax, [eax] call eax mov [ebp+var_10], eax mov eax, [ebp+var_10] push eax mov eax, ds:dword_17650 push eax mov eax, ds:off_160F4 mov eax, [eax] call eax mov edx, [ebp+var_4] mov [edx], eax mov eax, [ebp+var_10] push eax mov eax, ds:dword_17650 push eax mov eax, ds:off_160EC mov eax, [eax] call eax mov [ebp+var_14], eax mov eax, [ebp+var_14] push eax mov eax, ds:off_160F0 mov eax, [eax] call eax mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_14F3D mov eax, [ebp+var_14] push eax mov eax, ds:off_16100 mov eax, [eax] call eax loc_14F3D: ; CODE XREF: sub_14EC8+66j mov eax, [ebp+var_C] mov esp, ebp pop ebp retn sub_14EC8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_14F44 proc near ; DATA XREF: CODE:000151C9o 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_4 = dword ptr -4 arg_8 = dword ptr 10h push ebp mov ebp, esp xor ecx, ecx push ecx push ecx push ecx push ecx push ecx push ecx push ecx xor eax, eax push ebp push offset loc_1504A push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_4], 0FFFFFFFFh mov eax, offset dword_176E8 mov edx, [ebp+arg_8] call sub_14EC8 mov ds:dword_176E4, eax cmp ds:dword_176E4, 0 jz loc_15024 mov eax, offset dword_176EC mov edx, ds:dword_176E8 call sub_136A8 mov eax, offset dword_176EC call sub_136A0 mov edx, eax mov eax, ds:dword_176E4 mov ecx, ds:dword_176E8 call sub_128C8 lea eax, [ebp+var_10] call sub_13EE0 mov edx, [ebp+var_10] lea ecx, [ebp+var_C] mov eax, ds:dword_176EC call sub_13D74 mov edx, [ebp+var_C] mov eax, offset dword_176EC call sub_1352C mov eax, ds:dword_176EC push eax lea eax, [ebp+var_18] push eax call sub_14810 mov eax, [ebp+var_18] push eax lea eax, [ebp+var_14] push eax call sub_14990 mov edx, [ebp+var_14] mov eax, offset dword_176EC call sub_1352C push 0 lea edx, [ebp+var_1C] xor eax, eax call sub_12A6C mov eax, [ebp+var_1C] push eax mov eax, offset dword_176EC call sub_136A0 xor ecx, ecx pop edx call sub_14B48 test al, al jmp short loc_1502F ; --------------------------------------------------------------------------- loc_15024: ; CODE XREF: sub_14F44+3Aj push 0 mov eax, ds:off_160D8 mov eax, [eax] call eax loc_1502F: ; CODE XREF: sub_14F44+DEj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_15051 loc_1503C: ; CODE XREF: sub_14F44+10Bj lea eax, [ebp+var_1C] mov edx, 5 call sub_134FC retn ; --------------------------------------------------------------------------- loc_1504A: ; DATA XREF: sub_14F44+Fo jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_1503C ; --------------------------------------------------------------------------- loc_15051: ; CODE XREF: sub_14F44+105j ; DATA XREF: sub_14F44+F3o mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 10h sub_14F44 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1505C proc near ; CODE XREF: CODE:0001515Ep var_4 = dword ptr -4 push ebp mov ebp, esp push ecx xor eax, eax mov [ebp+var_4], eax cmp [ebp+var_4], 0Ch jge short loc_15074 jmp short loc_15074 ; --------------------------------------------------------------------------- inc [ebp+var_4] cmp [ebp+var_4], 0Ch loc_15074: ; CODE XREF: sub_1505C+Dj sub_1505C+Fj pop ecx pop ebp retn sub_1505C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_15078 proc near ; DATA XREF: CODE:00015110o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_150A1 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, offset dword_176EC call sub_134D8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_150A8 loc_150A0: ; CODE XREF: sub_15078+2Ej retn ; --------------------------------------------------------------------------- loc_150A1: ; DATA XREF: sub_15078+6o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_150A0 ; --------------------------------------------------------------------------- loc_150A8: ; CODE XREF: sub_15078:loc_150A0j ; DATA XREF: sub_15078+23o pop ebp retn sub_15078 endp ; --------------------------------------------------------------------------- align 4 dword_150AC dd 0Ch dd offset off_150B4 off_150B4 dd offset loc_13AD8 ; DATA XREF: CODE:000150B0o dd offset sub_13AA8 dd offset sub_138CC dd offset sub_13878 dd offset sub_13B10 dd offset sub_13AE0 dd offset sub_13B70 dd offset sub_13B40 dd offset sub_13E08 dd offset sub_13DD8 dd offset sub_13E40 dd offset sub_13E10 dd offset sub_147FC dd offset sub_147CC dd offset sub_14ABC dd offset sub_14A8C dd offset sub_14AFC dd offset sub_14ACC dd offset sub_14E88 dd offset sub_14E58 dd offset sub_14EC0 dd offset sub_14E90 align 10h dd offset sub_15078 ; --------------------------------------------------------------------------- public start start: push ebp mov ebp, esp add esp, 0FFFFFFE0h xor eax, eax mov [ebp-1Ch], eax mov [ebp-20h], eax mov [ebp-14h], eax mov [ebp-18h], eax mov eax, offset dword_150AC call sub_13A64 xor eax, eax push ebp push offset loc_15201 push dword ptr fs:[eax] mov fs:[eax], esp push offset dword_176F4 push 0 push 0 call ExtractAssociatedIconA ; ExtractAssociatedIconA push 0 push 0 push 0 call SetHandleInformation ; SetHandleInformation call GetLastError call sub_1505C call sub_13F18 lea eax, [ebp-18h] call sub_13EE0 mov edx, [ebp-18h] lea ecx, [ebp-14h] mov eax, offset dword_15218 call sub_13D74 mov eax, [ebp-14h] call sub_13650 push eax call LoadLibraryA ; LoadLibraryA mov ds:dword_176F0, eax lea eax, [ebp-20h] call sub_13EE0 mov edx, [ebp-20h] lea ecx, [ebp-1Ch] mov eax, offset dword_15230 call sub_13D74 mov eax, [ebp-1Ch] call sub_13650 push eax mov eax, ds:dword_176F0 push eax call GetProcAddress ; GetProcAddress mov edx, ds:off_160D0 mov [edx], eax push 0 push offset sub_14F44 push 0Ah push 0 mov eax, ds:off_160D0 mov eax, [eax] call eax mov eax, ds:dword_176F0 push eax call FreeLibrary_0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_15208 loc_151F3: ; CODE XREF: CODE:00015206j lea eax, [ebp-20h] mov edx, 4 call sub_134FC retn ; --------------------------------------------------------------------------- loc_15201: ; DATA XREF: CODE:00015135o jmp loc_12F4C ; --------------------------------------------------------------------------- jmp short loc_151F3 ; --------------------------------------------------------------------------- loc_15208: ; CODE XREF: CODE:00015200j ; DATA XREF: CODE:000151EEo call sub_133E0 ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 0Ch dword_15218 dd 800B2905h, 81D7DC07h, 0AE402AF0h, 0 dd 0FFFFFFFFh, 12h dword_15230 dd 830C222Bh, 0DC97D530h, 0A74F3CABh, 16A71645h, 0A0Ah ; DATA XREF: CODE:000151A1o dd 6Fh dup(0) CODE ends ; Section 2. (virtual address 00006000) ; Virtual size : 00000104 ( 260.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00004800 ; 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 16000h ; UINT uExitCode uExitCode dd 0 ; DATA XREF: sub_132C8+Ar sub_13324+2w ... dword_16004 dd 0 byte_16008 db 2 ; DATA XREF: sub_138CC+Dw db 8Dh, 40h, 0 word_1600C dw 1332h ; DATA XREF: sub_12C54+6r ; sub_12C54:loc_12CCCr ... dw 0C08Bh byte_16010 db 0 ; DATA XREF: sub_12D30r sub_12D4Cr ... db 8Dh, 40h, 0 byte_16014 db 0 ; DATA XREF: sub_131A8-336r ; sub_131A8:loc_12EADr db 8Dh, 40h, 0 byte_16018 db 0 ; DATA XREF: sub_13354:loc_133B5r db 8Dh, 40h, 0 dword_1601C dd 0 dword_16020 dd 0 off_16024 dd offset sub_12160 ; DATA XREF: sub_127B4+Ar ; sub_12804+3Fr off_16028 dd offset sub_1230C ; DATA XREF: sub_127E4+5r ; sub_12804+26r off_1602C dd offset sub_126E8 ; DATA XREF: sub_12804+Dr byte_16030 db 0 ; DATA XREF: sub_12860+36r aRsu db 'клхивохмншьзыйэщчъЮАЦ',0 aFxn@ db 'ДЕ█@',0 ; char Caption[] Caption db 'Error',0 ; DATA XREF: sub_13354+6Co dw 0C08Bh ; char Text[] Text db 'Runtime error at 00000000',0 ; DATA XREF: sub_132C8+3o ; sub_13354+32o ... dw 0C08Bh byte_16074 db 30h ; DATA XREF: sub_132C8+41r db 31h, 32h, 33h dd 37363534h, 42413938h, 46454443h ; DWORD TlsIndex TlsIndex dd 0FFFFFFFFh ; DATA XREF: sub_139D4+Cr ; sub_139D4+37r ... dword_16088 dd 0 dword_1608C dd 0 dword_16090 dd 0 dword_16094 dd 0 align 10h dword_160A0 dd 1 dd 10h, 2, 20h, 4, 40h, 4, 40h off_160C0 dd offset dword_176AC ; DATA XREF: sub_14B48+2BEr off_160C4 dd offset dword_17670 ; DATA XREF: sub_14B48+293r off_160C8 dd offset dword_17694 ; DATA XREF: sub_14EC8+18r off_160CC dd offset dword_17680 ; DATA XREF: sub_14B48+96r off_160D0 dd offset dword_176A4 ; DATA XREF: CODE:000151BFr ; CODE:000151D2r off_160D4 dd offset dword_1766C ; DATA XREF: sub_14B48+2CDr off_160D8 dd offset dword_176B4 ; DATA XREF: sub_14F44+E2r off_160DC dd offset dword_17684 ; DATA XREF: sub_14B48+189r ; sub_14B48+1F8r ... off_160E0 dd offset dword_17690 ; DATA XREF: sub_14B48+110r off_160E4 dd offset dword_1767C ; DATA XREF: sub_14B48+CEr off_160E8 dd offset dword_17674 ; DATA XREF: sub_14B48+15Cr off_160EC dd offset dword_1769C ; DATA XREF: sub_14EC8+46r off_160F0 dd offset dword_17698 ; DATA XREF: sub_14EC8+56r off_160F4 dd offset dword_176A0 ; DATA XREF: sub_14EC8+2Er off_160F8 dd offset dword_1768C ; DATA XREF: sub_14B48+23Fr off_160FC dd offset dword_17678 ; DATA XREF: sub_14B48+F7r off_16100 dd offset dword_176B0 ; DATA XREF: sub_14EC8+6Cr align 100h DATA ends ; Section 3. (virtual address 00007000) ; Virtual size : 000006F9 ( 1785.) ; Section size in file : 00000000 ( 0.) ; Offset to raw data for section: 00004A00 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write BSS segment para public '' use32 assume cs:BSS ;org 17000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing dword_17000 dd ? dword_17004 dd ? dword_17008 dd ? ; sub_12860+16r dword_1700C dd ? ; CODE:00013118r dword_17010 dd ? ; sub_12D4C+16r ... dword_17014 dd ? ; CODE:00013100r ... dword_17018 dd ? ; sub_133E0+B7r dword_1701C dd ? dword_17020 dd ? byte_17024 db ? ; DATA XREF: sub_13288+33w align 4 dword_17028 dd ? dword_1702C dd ? dword_17030 dd ? byte_17034 db ? ; DATA XREF: sub_13354+1r byte_17035 db ? ; DATA XREF: sub_11904+1Cr ; sub_11904:loc_119B8r ... byte_17036 db ? ; DATA XREF: sub_138CC+28w align 4 dword_17038 dd ? ; sub_13878+19o word_1703C dw ? ; DATA XREF: sub_138CC+4Cw align 10h dd 71h dup(?) dword_17204 dd ? ; sub_13878+23o word_17208 dw ? ; DATA XREF: sub_13354+Ar ; sub_138CC+55w align 10h dword_17210 dd ? align 10h dword_17220 dd ? dd 6Bh dup(?) dword_173D0 dd ? word_173D4 dw ? ; DATA XREF: sub_138CC+5Ew align 4 dd 71h dup(?) dword_1759C dd ? dword_175A0 dd ? ; sub_12018+CCw ... dword_175A4 dd ? dword_175A8 dd ? ; sub_138CC+B2w ... byte_175AC db ? ; DATA XREF: sub_11904+A0w ; sub_11904:loc_119D3r ... align 10h dword_175B0 dd ? ; sub_115C8+99w ... ; struct _RTL_CRITICAL_SECTION CriticalSection CriticalSection _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_11904+12o ; sub_11904+25o ... dword_175CC dd ? ; sub_110FC+3Cw ... dword_175D0 dd ? ; sub_111E4+22r ... dword_175D4 dd ? ; sub_113C8+51o ... dd 3 dup(?) dword_175E4 dd 4 dup(?) ; sub_1172C+12o ... dword_175F4 dd ? dword_175F8 dd ? align 10h dword_17600 dd ? ; sub_11ADC+4r ... dword_17604 dd ? dword_17608 dd ? ; sub_11EA8+2Er ... ; HLOCAL hMem hMem dd ? ; DATA XREF: sub_11904+59w ; sub_11904+5Er ... dword_17610 dd ? ; sub_119DC+90o ... align 10h dword_17620 dd ? dword_17624 dd ? ; sub_13180+2r dword_17628 dd ? dword_1762C dd ? dword_17630 dd ? dd 6 dup(?) byte_1764C db ? ; DATA XREF: sub_13A18r align 10h dword_17650 dd ? ; sub_13A64+16r ... dword_17654 dd ? ; CODE:loc_13AD8w dword_17658 dd ? dword_1765C dd ? dword_17660 dd ? dword_17664 dd ? dword_17668 dd ? dword_1766C dd ? ; DATA:off_160D4o dword_17670 dd ? ; sub_1434C+2D9w ... dword_17674 dd ? ; DATA:off_160E8o dword_17678 dd ? ; DATA:off_160FCo dword_1767C dd ? ; DATA:off_160E4o dword_17680 dd ? ; DATA:off_160CCo dword_17684 dd ? ; DATA:off_160DCo dword_17688 dd ? ; sub_13F18+C3r ... dword_1768C dd ? ; DATA:off_160F8o dword_17690 dd ? ; DATA:off_160E0o dword_17694 dd ? ; DATA:off_160C8o dword_17698 dd ? ; DATA:off_160F0o dword_1769C dd ? ; DATA:off_160ECo dword_176A0 dd ? ; DATA:off_160F4o dword_176A4 dd ? dword_176A8 dd ? ; sub_13F18+2B2r ... dword_176AC dd ? ; DATA:off_160C0o dword_176B0 dd ? ; DATA:off_16100o dword_176B4 dd ? ; DATA:off_160D8o dword_176B8 dd ? dword_176BC dd ? dword_176C0 dd ? dword_176C4 dd ? dword_176C8 dd ? dword_176CC dd ? dword_176D0 dd ? ; sub_14810+F8r ; HMODULE hModule hModule dd ? ; DATA XREF: sub_14810+98w ; sub_14810+BEr ... dword_176D8 dd ? dword_176DC dd ? dword_176E0 dd ? dword_176E4 dd ? ; sub_14F44+33r ... dword_176E8 dd ? ; sub_14F44+45r ... dword_176EC dd ? ; sub_14F44+50o ... dword_176F0 dd ? ; CODE:000151B4r ... dword_176F4 dd 43h dup(?) BSS ends ; ; Imports from kernel32.dll ; ; Section 4. (virtual address 00008000) ; Virtual size : 0000042A ( 1066.) ; Section size in file : 00000600 ( 1536.) ; Offset to raw data for section: 00004A00 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Externs ; _idata ; void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_DeleteCriticalSection:dword ; DATA XREF: DeleteCriticalSectionr ; void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_LeaveCriticalSection:dword ; DATA XREF: LeaveCriticalSectionr ; void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_EnterCriticalSection:dword ; DATA XREF: EnterCriticalSectionr ; void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_InitializeCriticalSection:dword ; DATA XREF: InitializeCriticalSectionr ; BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType) extrn __imp_VirtualFree:dword ; DATA XREF: VirtualFreer ; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) extrn __imp_VirtualAlloc:dword ; DATA XREF: VirtualAllocr ; HLOCAL __stdcall LocalFree(HLOCAL hMem) extrn __imp_LocalFree:dword ; DATA XREF: LocalFreer ; HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes) extrn __imp_LocalAlloc:dword ; DATA XREF: LocalAllocr ; DWORD __stdcall GetVersion() extrn __imp_GetVersion:dword ; DATA XREF: GetVersionr ; DWORD __stdcall GetCurrentThreadId() extrn __imp_GetCurrentThreadId:dword ; DATA XREF: GetCurrentThreadIdr ; LCID __stdcall GetThreadLocale() extrn __imp_GetThreadLocale:dword ; DATA XREF: GetThreadLocaler ; void __stdcall GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) extrn __imp_GetStartupInfoA:dword ; DATA XREF: GetStartupInfoAr ; DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPCH lpFilename, DWORD nSize) extrn __imp_GetModuleFileNameA:dword ; DATA XREF: GetModuleFileNameAr ; int __stdcall GetLocaleInfoA(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData) extrn __imp_GetLocaleInfoA:dword ; DATA XREF: GetLocaleInfoAr ; LPSTR __stdcall GetCommandLineA() extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr ; BOOL __stdcall FreeLibrary(HMODULE hLibModule) extrn __imp_FreeLibrary:dword ; DATA XREF: FreeLibraryr ; void __stdcall ExitProcess(UINT uExitCode) extrn __imp_ExitProcess:dword ; DATA XREF: ExitProcessr ; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) extrn __imp_WriteFile:dword ; DATA XREF: WriteFiler ; LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo) extrn __imp_UnhandledExceptionFilter:dword ; DATA XREF: UnhandledExceptionFilterr extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr ; void __stdcall RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR *lpArguments) extrn __imp_RaiseException:dword ; DATA XREF: RaiseExceptionr ; HANDLE __stdcall GetStdHandle(DWORD nStdHandle) extrn __imp_GetStdHandle:dword ; DATA XREF: GetStdHandler ; ; Imports from user32.dll ; ; int __stdcall GetKeyboardType(int nTypeFlag) extrn __imp_GetKeyboardType:dword ; DATA XREF: GetKeyboardTyper ; int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) extrn __imp_MessageBoxA:dword ; DATA XREF: MessageBoxAr ; LPSTR __stdcall CharNextA(LPCSTR lpsz) extrn __imp_CharNextA:dword ; DATA XREF: CharNextAr ; ; Imports from advapi32.dll ; ; LSTATUS __stdcall RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData) extrn __imp_RegQueryValueExA:dword ; DATA XREF: RegQueryValueExAr ; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult) extrn __imp_RegOpenKeyExA:dword ; DATA XREF: RegOpenKeyExAr ; LSTATUS __stdcall RegCloseKey(HKEY hKey) extrn __imp_RegCloseKey:dword ; DATA XREF: RegCloseKeyr ; ; Imports from kernel32.dll ; ; BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue) extrn __imp_TlsSetValue:dword ; DATA XREF: TlsSetValuer ; LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex) extrn __imp_TlsGetValue:dword ; DATA XREF: TlsGetValuer ; HLOCAL __stdcall LocalAlloc_0(UINT uFlags, SIZE_T uBytes) extrn __imp_LocalAlloc_0:dword ; DATA XREF: LocalAlloc_0r ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) extrn __imp_GetModuleHandleA:dword ; DATA XREF: GetModuleHandleAr ; ; Imports from kernel32.dll ; ; BOOL __stdcall SetHandleInformation(HANDLE hObject, DWORD dwMask, DWORD dwFlags) extrn __imp_SetHandleInformation:dword ; DATA XREF: SetHandleInformationr ; HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName) extrn __imp_LoadLibraryA:dword ; DATA XREF: LoadLibraryAr ; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName) extrn __imp_GetProcAddress:dword ; DATA XREF: GetProcAddressr ; DWORD __stdcall GetLastError() extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr ; BOOL __stdcall FreeLibrary_0(HMODULE hLibModule) extrn __imp_FreeLibrary_0:dword ; DATA XREF: FreeLibrary_0r ; ; Imports from shell32.dll ; ; HICON __stdcall ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon) extrn __imp_ExtractAssociatedIconA:dword ; DATA XREF: ExtractAssociatedIconAr ; Section 5. (virtual address 00009000) ; Virtual size : 00000008 ( 8.) ; Section size in file : 00000000 ( 0.) ; Offset to raw data for section: 00005000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write _tls segment para public '' use32 assume cs:_tls ;org 19000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing TlsStart dd 2 dup(?) ; DATA XREF: .rdata:TlsDirectoryo TlsEnd dd 7Eh dup(?) ; DATA XREF: .rdata:TlsEnd_ptro _tls ends ; Section 6. (virtual address 0000A000) ; Virtual size : 00000018 ( 24.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00005000 ; Flags 50000040: Data Shareable Readable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 1A000h TlsDirectory dd offset TlsStart TlsEnd_ptr dd offset TlsEnd TlsIndex_ptr dd offset TlsIndex TlsCallbacks_ptr dd offset TlsSizeOfZeroFill TlsSizeOfZeroFill dd 0 ; DATA XREF: .rdata:TlsCallbacks_ptro TlsCharacteristics dd 0 align 200h _rdata ends end start